Skill 詳細
spec-driven-development
General product and feature development workflow applicable to apps.
使用前に確認
自動レビューは関連性のみを確認し、安全性や推奨を保証しません。使用前に出典の説明を読んでください。
SKILL.md
これはレビュー時に保存された抜粋です。完全で最新の内容は外部ソースを確認してください。
--- name: spec-driven-development description: Creates specs before coding. Use when starting a new project, feature, or significant change and no specification exists yet. Use when requirements are unclear, ambiguous, or only exist as a vague idea. --- # Spec-Driven Development ## Overview Write a structured specification before writing any code. The spec is the shared source of truth between you and the human engineer — it defines what we're building, why, and how we'll know it's done. Code without a spec is guessing. ## When to Use - Starting a new project or feature - Requirements are ambiguous or incomplete - The change touches multiple files or modules - You're about to make an architectural decision - The task would take more than 30 minutes to implement **When NOT to use:** Single-line fixes, typo corrections, or changes where requirements are unambiguous and self-contained. ## The Gated Workflow Spec-driven development has four phases. Do not advance to the next phase until the current one is validated. ``` SPECIFY ──→ PLAN ──→ TASKS ──→ IMPLEMENT │ │ │ │ ▼ ▼ ▼ ▼ Human Human Human Human reviews reviews reviews reviews ``` ### Phase 1: Specify Start with a high-level vision. Ask the human clarifying questions until requirements are concrete. **Surface assumptions immediately.** Before writing any spec content, list what you're assuming: ``` ASSUMPTIONS I'M MAKING: 1. This is a web application (not native mobile) 2. Authentication uses session-based cookies (not JWT) 3. The database is PostgreSQL (based on existing Prisma schema) 4. We're targeting modern browsers only (no IE11) → Correct me now or I'll proceed with these. ``` Don't silently fill in ambiguous requirements. The spec's entire purpose is to surface misunderstandings *before* code gets written — assumptions are the most dangerous form of misunderstanding. **Write a spec document covering these six core areas:** 1. **Objective** — What are we building and why? Who is the user? What does success look like? 2. **Commands** — Full executable commands with flags, not just tool names. ``` Build: npm run build Test: npm test -- --coverage Lint: npm run lint --fix Dev: npm run dev ``` 3. **Project Structure** — Where source code lives, where tests go, where docs belong. ``` src/ → Application source code src/components → React components src/lib → Shared utilities tests/ → Unit and integration tests e2e/ → End-to-end tests docs/ → Documentation ``` 4. **Code Style** — One real code snippet showing your style beats three paragraphs describing it. Include naming conventions, formatting rules, and examples of good output. 5. **Testing Strategy** — What framework, where tests live, coverage expectations, which test levels for which concerns. 6. **Boundaries** — Three-tier system: - **Always do:** Run tests before commits, follow naming conventions, validate inputs - **Ask first:** Database schema changes, adding dependencies, changing CI config - **Never do:** Commit secrets, edit vendor directories, remove failing tests without approval **Spec template:** ```markdown # Spec: [Project/Feature Name] ## Objective [What we're building and why. User stories or acceptance criteria.] ## Tech Stack [Framework, language, key dependencies with versions] ## Commands [Build, test, lint, dev — full commands] ## Project Structure [Directory layout with descriptions] ## Code Style [Example snippet + key conventions] ## Testing Strategy [Framework, test locations, coverage requirements, test levels] ## Boundaries - Always: [...] - Ask first: [...] - Never: [...] ## Success Criteria [How we'll know this is done — specific, testable conditions] ## Open Questions [Anything unresolved that needs human input] ``` **Reframe instructions as success criteria.** When receiving vague requireGitHub で全文を読む (外部ページ)