원클릭으로
speckit-specify
Create or update the feature specification from a natural language feature description.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Create or update the feature specification from a natural language feature description.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
早晨的整体审视与规划。从已有 portfolio 出发,按"角色 × 项目 × 来龙去脉"逐件深度思考,再整合成今日整体安排。
主动中段。在主线待办被推进的过程中,决定"接着推/转向/补刀"——而不是"想点事随便做做"。
待办执行的思考方法论。面对一个该做的待办时,怎么判断下一步、怎么推进、何时算收束、卡了怎么办。
晚间集中复盘。把一天散落的灵感、警告、卡点收集起来,对工作方式本身做一次诚实重构,然后写明日 jump-in。
每日记忆整理。梦境式的内部清理 + 合并 + 收敛,保持记忆系统「能用」而非「堆着」。
项目立项与骨架搭建——创建新项目(含默认分工 + 3 条骨架 todo)。不再做任务拆解细节,拆解交由 task_breakdown skill 由项目经理单独负责。当用户说"开个新项目"或收到 project_created 事件时调用。
| name | speckit-specify |
| description | Create or update the feature specification from a natural language feature description. |
| compatibility | Requires spec-kit project structure with .specify/ directory |
| metadata | {"author":"github-spec-kit","source":"templates/commands/specify.md"} |
$ARGUMENTS
You MUST consider the user input before proceeding (if not empty).
Check for extension hooks (before specification):
.specify/extensions.yml exists in the project root.hooks.before_specify keyenabled is explicitly false. Treat hooks without an enabled field as enabled by default.condition expressions:
condition field, or it is null/empty, treat the hook as executablecondition, skip the hook and leave condition evaluation to the HookExecutor implementationoptional flag:
optional: true):
## Extension Hooks
**Optional Pre-Hook**: {extension}
Command: `/{command}`
Description: {description}
Prompt: {prompt}
To execute: `/{command}`
optional: false):
## Extension Hooks
**Automatic Pre-Hook**: {extension}
Executing: `/{command}`
EXECUTE_COMMAND: {command}
Wait for the result of the hook command before proceeding to the Outline.
.specify/extensions.yml does not exist, skip silentlyThe text the user typed after /speckit-specify in the triggering message is the feature description. Assume you always have it available in this conversation even if $ARGUMENTS appears literally below. Do not ask the user to repeat it unless they provided an empty command.
Given that feature description, do this:
Generate a concise short name (2-4 words) for the feature:
Branch creation (optional, via hook):
If a before_specify hook ran successfully in the Pre-Execution Checks above, it will have created/switched to a git branch and output JSON containing BRANCH_NAME and FEATURE_NUM. Note these values for reference, but the branch name does not dictate the spec directory name.
If the user explicitly provided GIT_BRANCH_NAME, pass it through to the hook so the branch script uses the exact value as the branch name (bypassing all prefix/suffix generation).
Create the spec feature directory:
Specs live under the default specs/ directory unless the user explicitly provides SPECIFY_FEATURE_DIRECTORY.
Resolution order for SPECIFY_FEATURE_DIRECTORY:
SPECIFY_FEATURE_DIRECTORY (e.g., via environment variable, argument, or configuration), use it as-isspecs/:
.specify/init-options.json for branch_numbering"timestamp": prefix is YYYYMMDD-HHMMSS (current timestamp)"sequential" or absent: prefix is NNN (next available 3-digit number after scanning existing directories in specs/)<prefix>-<short-name> (e.g., 003-user-auth or 20260319-143022-user-auth)SPECIFY_FEATURE_DIRECTORY to specs/<directory-name>Create the directory and spec file:
mkdir -p SPECIFY_FEATURE_DIRECTORY.specify/templates/spec-template.md to SPECIFY_FEATURE_DIRECTORY/spec.md as the starting pointSPEC_FILE to SPECIFY_FEATURE_DIRECTORY/spec.md.specify/feature.json:
{
"feature_directory": "<resolved feature dir>"
}
Write the actual resolved directory path value (for example, specs/003-user-auth), not the literal string SPECIFY_FEATURE_DIRECTORY.
This allows downstream commands (/speckit-plan, /speckit-tasks, etc.) to locate the feature directory without relying on git branch name conventions.IMPORTANT:
/speckit-specify invocationLoad .specify/templates/spec-template.md to understand required sections.
Follow this execution flow:
Write the specification to SPEC_FILE using the template structure, replacing placeholders with concrete details derived from the feature description (arguments) while preserving section order and headings.
Specification Quality Validation: After writing the initial spec, validate it against quality criteria:
a. Create Spec Quality Checklist: Generate a checklist file at SPECIFY_FEATURE_DIRECTORY/checklists/requirements.md using the checklist template structure with these validation items:
# Specification Quality Checklist: [FEATURE NAME]
**Purpose**: Validate specification completeness and quality before proceeding to planning
**Created**: [DATE]
**Feature**: [Link to spec.md]
## Content Quality
- [ ] No implementation details (languages, frameworks, APIs)
- [ ] Focused on user value and business needs
- [ ] Written for non-technical stakeholders
- [ ] All mandatory sections completed
## Requirement Completeness
- [ ] No [NEEDS CLARIFICATION] markers remain
- [ ] Requirements are testable and unambiguous
- [ ] Success criteria are measurable
- [ ] Success criteria are technology-agnostic (no implementation details)
- [ ] All acceptance scenarios are defined
- [ ] Edge cases are identified
- [ ] Scope is clearly bounded
- [ ] Dependencies and assumptions identified
## Feature Readiness
- [ ] All functional requirements have clear acceptance criteria
- [ ] User scenarios cover primary flows
- [ ] Feature meets measurable outcomes defined in Success Criteria
- [ ] No implementation details leak into specification
## Notes
- Items marked incomplete require spec updates before `/speckit-clarify` or `/speckit-plan`
b. Run Validation Check: Review the spec against each checklist item:
c. Handle Validation Results:
If all items pass: Mark checklist complete and proceed to step 8
If items fail (excluding [NEEDS CLARIFICATION]):
If [NEEDS CLARIFICATION] markers remain:
Extract all [NEEDS CLARIFICATION: ...] markers from the spec
LIMIT CHECK: If more than 3 markers exist, keep only the 3 most critical (by scope/security/UX impact) and make informed guesses for the rest
For each clarification needed (max 3), present options to user in this format:
## Question [N]: [Topic]
**Context**: [Quote relevant spec section]
**What we need to know**: [Specific question from NEEDS CLARIFICATION marker]
**Suggested Answers**:
| Option | Answer | Implications |
|--------|--------|--------------|
| A | [First suggested answer] | [What this means for the feature] |
| B | [Second suggested answer] | [What this means for the feature] |
| C | [Third suggested answer] | [What this means for the feature] |
| Custom | Provide your own answer | [Explain how to provide custom input] |
**Your choice**: _[Wait for user response]_
CRITICAL - Table Formatting: Ensure markdown tables are properly formatted:
| Content | not |Content||--------|Number questions sequentially (Q1, Q2, Q3 - max 3 total)
Present all questions together before waiting for responses
Wait for user to respond with their choices for all questions (e.g., "Q1: A, Q2: Custom - [details], Q3: B")
Update the spec by replacing each [NEEDS CLARIFICATION] marker with the user's selected or provided answer
Re-run validation after all clarifications are resolved
d. Update Checklist: After each validation iteration, update the checklist file with current pass/fail status
Report completion to the user with:
SPECIFY_FEATURE_DIRECTORY — the feature directory pathSPEC_FILE — the spec file path/speckit-clarify or /speckit-plan)Check for extension hooks: After reporting completion, check if .specify/extensions.yml exists in the project root.
hooks.after_specify keyenabled is explicitly false. Treat hooks without an enabled field as enabled by default.condition expressions:
condition field, or it is null/empty, treat the hook as executablecondition, skip the hook and leave condition evaluation to the HookExecutor implementationoptional flag:
optional: true):
## Extension Hooks
**Optional Hook**: {extension}
Command: `/{command}`
Description: {description}
Prompt: {prompt}
To execute: `/{command}`
optional: false):
## Extension Hooks
**Automatic Hook**: {extension}
Executing: `/{command}`
EXECUTE_COMMAND: {command}
.specify/extensions.yml does not exist, skip silentlyNOTE: Branch creation is handled by the before_specify hook (git extension). Spec directory and file creation are always handled by this core command.
When creating this spec from a user prompt:
Examples of reasonable defaults (don't ask about these):
Success criteria must be:
Good examples:
Bad examples (implementation-focused):