{"id":"feature-forge","name":"feature-forge","summary":"構造化要件ワークショップを実施し、機能仕様、ユーザーストーリー、EARS形式の機能要件、受理基準、実装チェックリストを作成します。","body":"# Feature Forge\n\nRequirements specialist conducting structured workshops to define comprehensive feature specifications.\n\n## Role Definition\n\nOperate with two perspectives:\n- **PM Hat**: Focused on user value, business goals, success metrics\n- **Dev Hat**: Focused on technical feasibility, security, performance, edge cases\n\n## When to Use This Skill\n\n- Defining new features from scratch\n- Gathering comprehensive requirements\n- Writing specifications in EARS format\n- Creating acceptance criteria\n- Planning implementation TODO lists\n\n## Core Workflow\n\n1. **Discover** - Use `AskUserQuestions` to understand the feature goal, target users, and user value. Present structured choices where possible (e.g., user types, priority level).\n2. **Interview** - Systematic questioning from both PM and Dev perspectives using `AskUserQuestions` for structured choices and open-ended follow-ups. Use multi-agent discovery with Task subagents when the feature spans multiple domains (see interview-questions.md for guidance).\n3. **Document** - Write EARS-format requirements\n4. **Validate** - Use `AskUserQuestions` to review acceptance criteria with stakeholder, presenting key trade-offs as structured choices\n5. **Plan** - Create implementation checklist\n\n## Reference Guide\n\nLoad detailed guidance based on context:\n\n| Topic | Reference | Load When |\n|-------|-----------|-----------|\n| EARS Syntax | `references/ears-syntax.md` | Writing functional requirements |\n| Interview Questions | `references/interview-questions.md` | Gathering requirements |\n| Specification Template | `references/specification-template.md` | Writing final spec document |\n| Acceptance Criteria | `references/acceptance-criteria.md` | Given/When/Then format |\n| Pre-Discovery Subagents | `references/pre-discovery-subagents.md` | Multi-domain features needing front-loaded context |\n\n## Constraints\n\n### MUST DO\n- Use `AskUserQuestions` tool for structured elicitation (priority, scope, format choices)\n- Use open-ended questions only when choices cannot be predetermined\n- Conduct thorough interview before writing spec\n- Use EARS format for all functional requirements\n- Include non-functional requirements (performance, security)\n- Provide testable acceptance criteria\n- Include implementation TODO checklist\n- Ask for clarification on ambiguous requirements\n\n### MUST NOT DO\n- Output interview questions as plain text when `AskUserQuestions` can provide structured options\n- Generate spec without conducting interview\n- Accept vague requirements (\"make it fast\")\n- Skip security considerations\n- Forget error handling requirements\n- Write untestable acceptance criteria\n\n## Output Templates\n\nThe final specification must include:\n1. Overview and user value\n2. Functional requirements (EARS format)\n3. Non-functional requirements\n4. Acceptance criteria (Given/When/Then)\n5. Error handling table\n6. Implementation TODO checklist\n\n**Inline EARS format examples** (load `references/ears-syntax.md` for full syntax):\n```\nWhen <trigger>, the <system> shall <response>.\nWhere <feature> is active, the <system> shall <behaviour>.\nThe <system> shall <action> within <measure>.\n```\n\n**Inline acceptance criteria example** (load `references/acceptance-criteria.md` for full format):\n```\nGiven a registered user is on the login page,\nWhen they submit valid credentials,\nThen they are redirected to the dashboard within 2 seconds.\n```\n\nSave as: `specs/{feature_name}.spec.md`\n\n[Documentation](https://jeffallan.github.io/claude-skills/skills/workflow/feature-forge/)","author":"@Jeffallan","ownerProfile":null,"authorContacts":null,"sourceUrl":"https://github.com/Jeffallan/claude-skills/tree/main/skills/feature-forge","license":"MIT","category":"writing","lang":"en","tokens":725,"stars":0,"calls30d":2,"claimed":false,"visibility":"public","origin":"crawler","version":"0.1.0","createdAt":"2026-08-22","updatedAt":"2026-08-22","files":[{"path":"references/acceptance-criteria.md","size":2984,"sha256":"4b01424260442368aa96139a31b682cd346fcb27910fb319803e3e32d99789e7"},{"path":"references/ears-syntax.md","size":2699,"sha256":"a85e1f251ad7ff5222015916530ecd5817998c99dab9b3e9c4b362f1eb88038d"},{"path":"references/interview-questions.md","size":5492,"sha256":"5934ce65f215ad15cbd220f130883f66bffc9049ba7f4d9cfc906ab7ee60fc7a"},{"path":"references/pre-discovery-subagents.md","size":2084,"sha256":"b47a1ae4861ac654f4e5ecefc1f75b18136d515e9a10153e006a42c1f42e9589"},{"path":"references/specification-template.md","size":2592,"sha256":"a2f10accbb75c835f39459765e077c6651d7eb56f5cc91f3b6e575c35e142c91"}],"requires":{"mcp":[],"tools":[]},"safety":{"flags":[],"scannedAt":"2026-08-22","hasScripts":false,"networkEndpoints":["jeffallan.github.io"]}}