--- name: kiro description: "This skill should be used when managing structured spec-driven development workflows. Triggered by phrases like [kiro], [check kiro status], [load kiro], [update kiro], [kiro workflow], or when the user mentions kiro spec, create new kiro spec. Use this for managing requirements, design docs, and implementation tasks in kiro" --- # Kiro - Structured Spec-Driven Development Workflow ## Overview Kiro is a workflow management system for structured spec-driven development that uses spec files to track progress through requirements gathering, design, and implementation phases. This skill enables Claude to manage the complete lifecycle of a kiro spec, from initial requirements to final implementation. The kiro spec dir default to /llm/kiro// but can be customized per spec. ## Core Workflow Structure Every kiro spec contains four key spec files, which need to be updated and tracked throughout the workflow: 1. **`claude.md`** - Control board with session notes, decisions, and spec status tracking 2. **`requirements.md`** - User stories and acceptance criteria 3. **`design.md`** - Architecture, data models, and implementation details 4. **`tasks.md`** - Implementation tasks with status tracking ## Workflow Decision Tree When user mentions kiro, follow this decision tree: 1. **Does the user want to create a new kiro spec?** - Keywords: "new kiro", "create kiro spec", "start new kiro" - Action: Run `agpod kiro pr-new --desc "" --template default` 2. **Does the user want to select/load an existing spec?** - Keywords: "load kiro", "check kiro", "select kiro", "which kiro" - Action: List specs and help user select one 3. **Is the user already working on a spec?** - Action: Continue with the current workflow phase ## Phase 1: Loading a Kiro Spec ### Step 1: List Available Specs Run the following command to get all kiro specs: ```bash agpod kiro --json pr-list ``` **Expected JSON output format:** ```json [ { "name": "spec-name", "path": "", "created": "2024-01-15T10:30:00Z" } ] ``` Note, the `path` should be relatieve to the project root or is absolute path if it starts with `/`. ### Step 2: Parse User Selection If user mentions: - **Spec number/index**: Select the corresponding spec from the list - **Spec name/keyword**: Match against spec names using fuzzy matching - **No specific spec**: Ask user to choose from the list ### Step 3: Read the Control Board Once spec is selected, read `/claude.md` to understand: - Current spec file statuses (empty, draft, ready) - Previous decisions made - Outstanding questions and risks - Recent findings **Example:** ```bash Read /claude.md ``` ## Phase 2: Requirements Gathering **When to enter this phase:** - `claude.md` shows `requirements.md: empty` or `requirements.md: draft` ### Workflow 1. **Read current requirements** ```bash Read /requirements.md ``` 2. **Gather requirements from user** - Ask clarifying questions about user stories - Define acceptance criteria with WHEN/THEN format - Document each requirement using semantic IDs (e.g., REQ-AUTH-LOGIN, REQ-DATA-EXPORT) - Use pattern: REQ-{DOMAIN}-{ACTION} for stable, descriptive identifiers - Add all requirement IDs to the "Requirements Order" section at the top of requirements.md 3. **Update requirements.md** - Add user stories in format: "As a [role], I want to [action], so that [benefit]" - Define acceptance criteria for each requirement - Follow the existing structure already present in the generated `requirements.md` file 4. **Update claude.md status** - Change `requirements.md: draft` when in progress - Change to `requirements.md: ready` when complete and approved - Document key decisions in Session Notebook → Decisions **Critical Rule:** Never proceed to design phase without user approval of requirements. ## Phase 3: Design Documentation **When to enter this phase:** - `claude.md` shows `requirements.md: ready` AND `design.md: empty` or `design.md: draft` ### Workflow 1. **Read current design and requirements** ```bash Read /design.md Read /requirements.md ``` 2. **Create design for each requirement** For each requirement ID (e.g., REQ-AUTH-LOGIN), create a corresponding design section with: - **Overview**: Purpose, key objectives, non-goals - **Architecture**: System design diagrams, data flow - **Components and Interfaces**: Component responsibilities - **Data Models**: Configuration, data structures, API contracts - **Implementation Details**: Algorithms, PoC findings (if needed) - **Performance & Security Considerations** - **Error Handling**: Error scenarios and strategies - **Testing Strategy**: Unit and integration tests - **Migration and Rollout**: Deployment strategy (if needed) 3. **Present design options** - Offer multiple approaches when applicable - Explain trade-offs clearly - Let user choose the preferred approach - Ask oracle subagent with `Task` tool to review the design 4. **Update design.md** - Follow the existing structure already present in the generated `design.md` file - Include ASCII diagrams for system architecture - Keep it focused and scannable 5. **Update claude.md** - Change `design.md: draft` when in progress - Change to `design.md: ready` when complete and approved - Document design decisions in Session Notebook → Decisions - Note any identified risks in Session Notebook → Risks **Critical Rule:** Never proceed to implementation without user approval of design. ## Phase 4: Task Planning **When to enter this phase:** - `claude.md` shows `design.md: ready` AND `tasks.md: empty` or `tasks.md: draft` ### Workflow 1. **Read design and create tasks** ```bash Read /design.md Read /tasks.md ``` 2. **Break down each requirement into tasks** For each requirement ID (e.g., REQ-AUTH-LOGIN), create corresponding TASK-REQ-{ID} section (e.g., TASK-REQ-AUTH-LOGIN) with: - **Phases**: Group related tasks (e.g., Phase 1: Core Implementation, Phase 2: Integration) - **Task details** for each item: - Checkbox for completion tracking - **Status**: ⬜ Not Started / 🟡 In Progress / ✅ Completed / ⚠️ Blocked - **Prompt**: Detailed implementation instructions - **Requirements**: Reference to requirement ID (e.g., REQ-AUTH-LOGIN) - **Design ref**: Section reference in design.md - **Files**: List of files to modify 3. **Update tasks.md** - Follow the existing structure already present in the generated `tasks.md` file - Keep tasks atomic and independently executable - Order tasks by dependencies 4. **Update claude.md** - Change `tasks.md: draft` when in progress - Change to `tasks.md: ready` when complete and approved **Critical Rule:** Never start implementation without user approval of tasks. ## Phase 5: Implementation **When to enter this phase:** - `claude.md` shows `tasks.md: ready` - User explicitly requests code changes ### Workflow 1. **Read tasks and select next task** ```bash Read /tasks.md ``` 2. **Confirm task with user** - Show which task will be implemented - Verify user approval before coding 3. **Implement the task** - Follow the prompt in the task definition - Reference the design document - Verify requirements are met 4. **Update task status** - Mark task as 🟡 In Progress when starting - Update checkbox `[x]` when complete - Change status to ✅ Completed - Document any findings in `claude.md` → Session Notebook → Findings 5. **Update claude.md after each task** - Add any new decisions to Session Notebook → Decisions - Note any risks encountered - Keep spec file status current ## Critical Rules (Always Enforce) 1. **Status Tracking**: Keep the "Spec files status" section in `claude.md` current at all times 2. **Never Skip Approval**: Never proceed to next phase without explicit user approval 3. **Always Ask Questions**: When requirements are unclear, ask rather than assume 4. **Present Options**: Offer choices for user to decide rather than making assumptions 5. **Only Edit Code When Requested**: Research and planning phases should not modify code 6. **Document Decisions**: Update Session Notebook → Decisions whenever user makes a choice 7. **Task Checkboxes**: All tasks must have checkboxes for completion tracking 8. **Sync Updates**: Update `claude.md` immediately after changes to other spec files ## Status Values Spec files can have three statuses: - **empty**: File is template/placeholder, not yet filled - **draft**: Work in progress, not approved - **ready**: Complete and approved by user ## Useful Commands ### List all kiro specs ```bash agpod kiro --json pr-list ``` ### Create new kiro spec ```bash agpod kiro pr-new --desc "" --template default ``` Additional options: - `--git-branch`: Create and checkout git branch - `--open`: Open in editor after creation - `--force`: Force creation even if directory exists To list templates, run `agpod kiro --json list-templates` ## Session Management Best Practices 1. **Start every kiro session** by reading `claude.md` to understand context 2. **Review previous decisions** before proposing new solutions 3. **Update session notebook** in real-time as conversations progress 4. **Ask questions early** rather than making incorrect assumptions 5. **Keep user informed** of which phase and file you're currently working on 6. **Validate completion** of each phase before moving to next