원클릭으로
spec-kit
Write a Gherkin story file to docs/stories/ for a feature. The story IS the spec. No intermediate PROBLEM/SPEC/PLAN/TASKS artifacts.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Write a Gherkin story file to docs/stories/ for a feature. The story IS the spec. No intermediate PROBLEM/SPEC/PLAN/TASKS artifacts.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Manage GitHub Projects v2 board: add issues, update field values, and query board state. Use when managing project boards.
Run WCAG 2.2 Level AA accessibility audits against generated UI. Use when a story has ui:true or when asked to audit accessibility.
Generate a complete component file tree wired to design tokens with tests and Gherkin spec. Use when scaffolding a new UI component.
Extract Gherkin scenarios from story markdown files into runnable .feature files and generate step definition stubs. Use when syncing stories to test suites.
Read and write design tokens in W3C DTCG format (tokens.json) and emit CSS, Tailwind, and Mantine outputs. Use when modifying or generating design tokens.
Apply Docker and Docker Compose best practices for containerising services. Use when writing or reviewing Dockerfiles and compose configs.
| name | spec-kit |
| description | Write a Gherkin story file to docs/stories/ for a feature. The story IS the spec. No intermediate PROBLEM/SPEC/PLAN/TASKS artifacts. |
Produce a complete Gherkin story file in docs/stories/ before any implementation begins. One invocation = one story file. The story file is the minimum spec — no additional artifacts required.
feature description → story draft → human approval → DISCOVER
No step may begin until the previous one completes. Approval = human sets status: approved in the story frontmatter, or confirms verbally.
docs/stories/{epic-slug}-{feature-slug}.md # with epic context
docs/stories/{feature-slug}.md # standalone feature
---
id: "{feature-slug}"
title: "{Feature Title}"
epic: "{epic-slug or null}"
priority: "high|medium|low"
ui: false
adr_required: false
phase: discover
labels:
- "type:feature"
- "priority:{priority}"
status: draft
---
## Story
**As a** {user role},
**I want** {what they want},
**so that** {business outcome}.
## Acceptance Criteria
```gherkin
@story:{feature-slug} @priority:{priority}
Feature: {Feature Title}
Scenario: {happy path title}
Given {precondition}
When {action}
Then {outcome}
Scenario: {failure or edge case title}
Given {precondition}
When {action}
Then {outcome}
## Validate a Story File
```bash
validate_story() {
local file="$1"
if [ ! -f "$file" ]; then
echo "[spec-kit] MISSING $file"
return 1
fi
if ! grep -qE "^\s*(Scenario|Scenario Outline):" "$file"; then
echo "[spec-kit] FAIL $file — no Gherkin scenarios found"
return 1
fi
STATUS=$(grep -m1 "^status:" "$file" | awk '{print $2}' | tr -d '"')
if [ "$STATUS" != "approved" ]; then
echo "[spec-kit] BLOCKED $file status=$STATUS required=approved"
return 1
fi
echo "[spec-kit] OK $file status=approved"
}
# Example
validate_story "docs/stories/user-auth-reset-password.md" || exit 1
FAIL=0
STORIES=$(find docs/stories -name "*.md" ! -name "_template.md" 2>/dev/null || true)
if [ -z "$STORIES" ]; then
echo "[spec-kit] SKIP no story files found"
exit 0
fi
for story in $STORIES; do
validate_story "$story" || FAIL=1
done
exit $FAIL
| Feature complexity | Minimum scenarios |
|---|---|
| Simple CRUD | 2 (happy path + not-found/validation failure) |
| Auth / permissions | 3 (success + unauthorized + invalid input) |
| Multi-step workflow | 1 per step + 1 end-to-end |
| UI component | 2 (renders correctly + interaction) |
Do not invent scenarios not implied by the feature description. Mark unknown cases as TODO and flag for human review.
BRANCH=$(git branch --show-current)
if echo "$BRANCH" | grep -qE '^(spike|chore)/'; then
echo "[spec-kit] SKIP branch=$BRANCH — spike/chore exempt"
exit 0
fi
| Condition | Action |
|---|---|
| No feature description given | Ask the human before writing anything |
Story has zero Scenario: blocks | Refuse to emit. Require at least one scenario. |
Story status: rejected | Surface rejection reason. Do not advance. |
| Duplicate story file exists | Confirm with human before overwriting. |
[spec-kit] WRITE docs/stories/user-auth-reset-password.md
[spec-kit] HALT awaiting human approval
[spec-kit] OK docs/stories/user-auth-reset-password.md status=approved
[spec-kit] SKIP spike/* branch — spec-kit not required