| ํญ๋ชฉ | ๋ด์ฉ |
|---|---|
| Invoke | /team-create-stories |
/team-create-stories โ ์คํ ๋ฆฌ ๋ฌธ์ ์ฌ๋ฌ ๊ฐ ๋์ ์์ฑ#
ํ๋ง๋๋ก#
์ฌ๋ฌ ๋ช ์ ์๊ฐ์๊ฒ ์ฑํฐ๋ฅผ ๋๋ ์ฃผ๊ณ ๋์์ ๊ธ์ ์ฐ๊ฒ ํ๋ ๊ฒ๊ณผ ๊ฐ์ต๋๋ค. ์คํ ๋ฆฌ ๋ฌธ์๋ฅผ ํ๋์ฉ ์ฐจ๋ก๋ก ์ฐ๋ ๋์ , AI ํ์ ์ฌ๋ฌ ๋ช ์ด ์ํฝ๋ณ๋ก ๋๋ ๋งก์ ํ๊บผ๋ฒ์ ๋ง๋ค์ด ์ค๋๋ค.
๋๊ฐยท์ธ์ ์ฐ๋์#
- ํ ๋ฆฌ๋ ์ญํ ๋ก ์คํ๋ฆฐํธ๋ฅผ ์ค๋นํ๋ ์ฌ๋
- ์์ฑํด์ผ ํ ์คํ ๋ฆฌ๊ฐ 3๊ฐ ์ด์ ์ฌ๋ฌ ์ํฝ์ ๊ฑธ์ณ ์์ ๋ (ํ ๊ฐ์ฉ ์ฐ๋ฉด ๋๋ฌด ์ค๋ ๊ฑธ๋ฆฌ๋ ์ํฉ)
- ์ด๋ฏธ ์คํ๋ฆฐํธ ๊ณํ(epic/story ๋ชฉ๋ก)๊ณผ ์ํคํ ์ฒ ๋ฌธ์๊ฐ ์ค๋น๋์ด ์์ ๋
๐ ์ ์ ์กฐ๊ฑด: ์คํ ๊ธฐ๋ฅ์ธ Agent Teams๊ฐ ์ผ์ ธ ์์ด์ผ ํฉ๋๋ค(CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1). ๊บผ์ ธ ์์ผ๋ฉด ๋ช
๋ น์ด ๋ฉ์ถ๊ณ , ๋์ ํ ๊ฐ์ฉ ๋ง๋๋
/create-story๋ฅผ ์๋ดํฉ๋๋ค.
๋ฌด์์ ํด์ฃผ๋์#
- ์คํ ๋ฆฌ ๋ฌธ์ ์ฌ๋ฌ ๊ฐ๋ฅผ ๋์์ ๋ง๋ค์ด
.bmad/stories/STORY-{ID}.mdํ์ผ๋ค๋ก ์ ์ฅํฉ๋๋ค. - ์คํ๋ฆฐํธ ์ํ๋ฅผ ํ๊บผ๋ฒ์ ๊ฐฑ์ ํฉ๋๋ค(๊ฐ ์คํ ๋ฆฌ๋ฅผ "defined" ์ํ๋ก, ๋ฌธ์ ๊ฒฝ๋ก ๊ธฐ๋ก).
- ZenHub๊ฐ ์ฐ๊ฒฐ๋์ด ์์ผ๋ฉด, ๋ง๋ค์ด์ง ์คํ ๋ฆฌ๋ฅผ ZenHub์ Sprint Backlog๋ก ์๋ ๋ฑ๋ก(sync)ํฉ๋๋ค.
- ํฌ์ธํธ๊ฐ ํฐ ์คํ ๋ฆฌ(๊ธฐ์ค ์ถฉ์กฑ ์)๋ ์์ ํ์ ์์ (Sub-tasks)์ผ๋ก ์ชผ๊ฐ์ ZenHub์ ํจ๊ป ๋ฑ๋กํฉ๋๋ค.
์์ ์๊ฐ์ ๋ณดํต 5~15๋ถ์ ๋๋ค. (ํ๋์ฉ ์์๋๋ก ์ฐ๋ฉด ์คํ ๋ฆฌ๋น 10~20๋ถ์ด ๊ฑธ๋ฆฝ๋๋ค.)
์ด๋ป๊ฒ ์ฐ๋์#
# ์คํ ๋ฆฌ ๋ฌธ์ ์ฌ๋ฌ ๊ฐ๋ฅผ ํ์ผ๋ก ๋์ ์์ฑ
/team-create-stories
์คํํ๋ฉด ๋จผ์ "์ด๋ ๊ฒ ๋๋ ๋ง๋ค๊ฒ ์ต๋๋ค"๋ผ๋ ๊ณํ์ ๋ณด์ฌ ์ฃผ๊ณ ํ์ธ(y/n) ์ ๋ฐ์ต๋๋ค.
(์ค์ ์์ agent_teams.auto_approve_plans๊ฐ ์ผ์ ธ ์์ผ๋ฉด ์ด ํ์ธ ๋จ๊ณ๋ฅผ ๊ฑด๋๋๋๋ค.)
์คํ ๋ฆฌ๊ฐ 1~2๊ฐ๋ฟ์ด๋ผ๋ฉด, ๋์ ์์ฑ ๋์ ํ ๊ฐ์ฉ ๋ง๋๋ /create-story STORY-{ID} ๋๋ ์์ฐจ ์งํ /dev-story STORY-{ID}๋ฅผ ์ฐ๋ ํธ์ด ๋ซ์ต๋๋ค.
์์์ ๋ฌด์จ ์ผ์ด ๋ฒ์ด์ง๋์#
- ์ฌ์ ์ ๊ฒ โ ์ค์ ยท์คํ๋ฆฐํธ ์ํยทAgent Teams ์ฌ์ฉ ๊ฐ๋ฅ ์ฌ๋ถ๋ฅผ ํ์ธํ๊ณ , ์์ง ๋ฌธ์๊ฐ ์๋ ์คํ ๋ฆฌ๋ค์ ์ฐพ์๋ ๋๋ค.
- ์ํฝ๋ณ๋ก ๋ฌถ๊ธฐ โ ์คํ ๋ฆฌ๋ฅผ ์ํฝ ๋จ์๋ก ๋๋ ํ์์๊ฒ ํ ๋ช ๋น ํ ์ํฝ์ฉ ๋ฐฐ์ ํฉ๋๋ค. ํ์๋ง๋ค ์๋ก ๋ค๋ฅธ ํ์ผ์ ์ฐ๋ฏ๋ก ์ถฉ๋์ด ์์ต๋๋ค.
- ๊ณํ ํ์ธ โ ๋๊ฐ ์ด๋ค ์คํ ๋ฆฌ๋ฅผ ๋งก๋์ง ๋ณด์ฌ ์ฃผ๊ณ ์งํ ์ฌ๋ถ๋ฅผ ๋ฌป์ต๋๋ค.
- ํ์ ํฌ์ โ ๊ฐ ํ์(์คํ ๋ฆฌ ์์ฑ์)์๊ฒ ์ํฝ ์ ๋ณดยท์คํ ๋ฆฌ ๋ชฉ๋กยท์ํคํ ์ฒ ์์ฝ์ ๋๊ฒจ ๋์์ ์์ฑ์ ์์์ํต๋๋ค.
- ์งํ ์ํฉ ์ถ์ โ ์๋ฃ๋ ํ์์ ๋ฌธ์๊ฐ ์ ๋๋ก ๋ง๋ค์ด์ก๋์ง(ํ์ ํญ๋ชฉ ํฌํจ ์ฌ๋ถ) ํ์ธํ๋ฉฐ ์ง์ฒ๋๋ฅผ ํ์ํฉ๋๋ค.
- ์ํ ๊ฐฑ์ ยท๋๊ธฐํ โ ๋ชจ๋ ํ์์ด ๋๋๋ฉด ํ ๋ฆฌ๋๊ฐ ์คํ๋ฆฐํธ ์ํ๋ฅผ ํ๊บผ๋ฒ์ ๊ฐฑ์ ํ๊ณ , ZenHub์ ์คํ ๋ฆฌยทํ์ ์์ ์ ๋ฑ๋กํ ๋ค ์ต์ข ์์ฝ์ ๋ณด์ฌ ์ค๋๋ค.
โ๏ธ ์์ธ ์ต์ ยท์คํ ๋ช ์ธ (๊ฐ๋ฐ์ / AI ์์ด์ ํธ์ฉ)
Workflow Overview#
Goal: Create multiple story documents in parallel using Agent Teams
Phase: 4 - Implementation (Parallel Story Definition)
Agent: Team Lead
Inputs: Sprint plan with epic/story list, architecture document
Output: Multiple .bmad/stories/STORY-{ID}.md files, updated sprint status
Duration: 5-15 minutes (parallel vs 10-20 min per story sequential)
When to use: When you have 3+ stories to document across multiple epics
Prerequisite: Agent Teams must be enabled (CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1)
Pre-Flight#
- Load context per
helpers.md#Combined-Config-Load - Check sprint status per
helpers.md#Load-Sprint-Status - Check Agent Teams per
helpers.md#Check-Agent-Teams-Available - If teams_available = false:
- Output:
โ Agent Teams not available. Agent Teams is an experimental feature that requires: CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1 Sequential alternative: Use /create-story STORY-{ID} to create stories one at a time. - Stop workflow (do not proceed)
- Output:
- Load sprint plan: Read
.bmad/sprint-plan-*.md - Load architecture (if Level 2+): Read
.bmad/architecture-*.md - Load ZenHub context per
helpers.md#Load-ZenHub-Context - Identify stories to create:
- Find all stories without story documents (no
.bmad/stories/STORY-{ID}.md) - Or accept user-specified story IDs as input
- Find all stories without story documents (no
- Load max_teammates from config
agent_teams.max_teammates(default: 3) - Check sub-task support:
- If zh_sub_tasks_enabled: Stories with 5+ points will include auto-generated sub-tasks
Part 1: Group Stories by Epic#
Organize stories for parallel creation:
Group by epic:
Epic 1 " {name} " : STORY-001, STORY-002, STORY-003 Epic 2 " {name} " : STORY-004, STORY-005 Epic 3 " {name} " : STORY-006, STORY-007, STORY-008Assign epics to teammates:
- Each teammate handles one epic's stories
- If more epics than max_teammates: combine smallest epics
- No file conflicts: each teammate writes different STORY-{ID}.md files
Display plan:
Story Creation Plan: Teammate 1 (Story Creator): Epic: " {epic_1_name} " Stories: STORY-001, STORY-002, STORY-003 Output: .bmad/stories/STORY-001.md, STORY-002.md, STORY-003.md Teammate 2 (Story Creator): Epic: " {epic_2_name} " Stories: STORY-004, STORY-005 Output: .bmad/stories/STORY-004.md, STORY-005.md Total: {count} stories across {count} teammates Proceed? (y/n)
Wait for user confirmation.
If config.agent_teams.auto_approve_plans = true, skip confirmation.
Part 2: Spawn Story Creators#
Step 1: Create shared task list per helpers.md#Create-Team-Task-List:
For each teammate:
TaskCreate:
subject: " Story Creator: Create stories for Epic {epic_name} "
description: Story IDs, epic context, architecture summary
activeForm: " Creating stories for {epic_name} "Step 2: Spawn teammates per helpers.md#Spawn-BMAD-Teammate:
For each teammate:
- role: "story-creator"
- context:
- Epic details (name, description, goals)
- Story IDs and titles from sprint plan
- Architecture key sections (relevant to this epic)
- Story template (standard BMAD format)
Each teammate creates stories independently โ no file conflicts since each writes to unique .bmad/stories/STORY-{ID}.md paths.
Sub-task generation context (if zh_sub_tasks_enabled): Include in each teammate's context:
- "For stories with {min_story_points}+ points, include a Sub-tasks section"
- "Sub-tasks should be discrete implementation units (1-4 hours each)"
- "Categories: Implementation, Validation, Testing"
- Teammates generate sub-task lists in story documents; Lead syncs to ZenHub in Part 4
Part 3: Monitor & Collect#
Monitor teammate progress:
Poll task status:
Call TaskList Display progress: {completed}/{total} teammates doneOn teammate completion:
- Verify story documents exist at expected paths
- Quick validation: check each story has required sections (User Story, Acceptance Criteria, Technical Notes, Story Points)
Display progress:
Story Creation Progress: Teammate 1: โ Complete โ STORY-001.md (5 acceptance criteria, 3 points) โ STORY-002.md (4 acceptance criteria, 5 points) โ STORY-003.md (6 acceptance criteria, 8 points) Teammate 2: ๐ In Progress โ STORY-004.md (3 acceptance criteria, 2 points) โณ STORY-005.md ...
Part 4: Update Status & Sync#
After all teammates complete:
Step 1: Update sprint status (Lead-only batch update):
Per helpers.md#Update-Sprint-Status:
For each created story:
- Update status: " defined "
- Add story_document path
- Verify story_points match sprint planStep 2: Sync to ZenHub (if available):
If zh_available:
For each created story:
1. Build story body from document content
2. Call helpers.md#Sync-Story-to-ZenHub:
- story_title, story_body, story_points
- zh_epic_id (parent epic)
- pipeline_id: Sprint Backlog
3. Call helpers.md#Store-ZenHub-Cross-Reference:
- Update story document with ZenHub link
- Update sprint-status.yaml with zh_issue_id
4. Log: " โ Synced STORY-{ID} โ ZenHub #{issue_number} "
If zh_sub_tasks_enabled:
For each story with sub-tasks in its document:
5. For each sub-task:
a. Generate sub-task body per helpers.md#Generate-Sub-task-Body
b. Call helpers.md#Sync-Sub-task-to-ZenHub:
- sub_task_title, sub_task_body
- zh_story_id (parent, from step 2 above)
c. Store zh_sub_task_id in sprint-status sub_tasks array
d. Log: " โ Sub-task: #{sub_issue_number} (parent: #{story_number}) "Step 3: Display summary:
โ Team Story Creation Complete!
Stories Created: {count}/{total}
Epic " {name} " :
STORY-001: {title} ({points} pts, {criteria_count} Acceptance Criteria)
STORY-002: {title} ({points} pts, {criteria_count} Acceptance Criteria)
STORY-003: {title} ({points} pts, {criteria_count} Acceptance Criteria)
Epic " {name} " :
STORY-004: {title} ({points} pts, {criteria_count} Acceptance Criteria)
STORY-005: {title} ({points} pts, {criteria_count} Acceptance Criteria)
Total Story Points: {sum}
Documents: .bmad/stories/
ZenHub: {count} stories synced to Sprint Backlog (if zh_available)
ZenHub: {count} sub-tasks synced (if sub-tasks created)
Next Steps:
1. Review stories: Read .bmad/stories/STORY-{ID}.md
2. Start development: /team-dev (parallel) or /dev-story STORY-{ID} (sequential)Helper References#
- Load config:
helpers.md#Combined-Config-Load - Load sprint status:
helpers.md#Load-Sprint-Status - Update sprint status:
helpers.md#Update-Sprint-Status - Check Agent Teams:
helpers.md#Check-Agent-Teams-Available - Spawn teammate:
helpers.md#Spawn-BMAD-Teammate - Create team tasks:
helpers.md#Create-Team-Task-List - Collect results:
helpers.md#Collect-Team-Results - ZenHub context:
helpers.md#Load-ZenHub-Context - Sync story:
helpers.md#Sync-Story-to-ZenHub - Sync sub-task:
helpers.md#Sync-Sub-task-to-ZenHub - Generate sub-task body:
helpers.md#Generate-Sub-task-Body - Store xref:
helpers.md#Store-ZenHub-Cross-Reference
Notes for LLMs#
- ALWAYS check Agent Teams availability first (Pre-Flight step 3-4)
- If teams not available, suggest
/create-storyand STOP - No file conflicts possible: each teammate writes unique STORY-{ID}.md files
- Sprint-status.yaml updates are Lead-only: batch update after ALL teammates complete
- ZenHub sync is also batched after teammates complete (Lead handles all syncing)
- Story documents must follow standard BMAD template format
- Validate each story has required sections before accepting
- If a teammate fails, its stories can be created manually with
/create-story - Sub-task generation is included in teammate context when zh_sub_tasks_enabled
- Sub-task ZenHub sync is batched by Lead after all teammates complete (not by teammates)
- Sub-tasks are only generated for stories meeting min_story_points threshold
Remember: Story creation is inherently parallelizable since each story is an independent document. The main value is time savings when creating 3+ stories.