| name | user-stories |
| description | Conditionally generate user stories in As-a/I-want/So-that format only when changes are user-facing. Skips story generation for pure infrastructure or internal refactor work. Produces stories with acceptance criteria linked back to REQ-IDs. |
| argument-hint | [feature slug โ same slug used in requirements-analysis] |
| user-invocable | true |
| model | claude-sonnet-4-6 |
| allowed-tools | Read,Write,Edit,Grep,Glob |
์ธ์ ์ฌ์ฉํ๋์
requirements-analysis ์ฐ์ถ๋ฌผ์ด ์ฌ์ฉ์ ๋๋ฉด ๊ธฐ๋ฅ์ ํฌํจํ ๋
- ์ฌ๋ฌ ํ๋ฅด์๋(๊ด๋ฆฌ์ / ์ด์์ / ์ต์ข
์ฌ์ฉ์) ๊ด์ ์ ๊ฐ์น ์์ ์ด ํ์ํ ๋
- Acceptance Criteria ๋ฅผ ๊ธฐ๋ฅ ๋จ์์์ ์คํ ๋ฆฌ ๋จ์๋ก ํ์ฅํ ๋
์ธ์ ์ฌ์ฉํ์ง ์๋์
- ๋ด๋ถ ๋ฆฌํฉํฐ๋ง, ๋น๋ ํ์ดํ๋ผ์ธ ๋ณ๊ฒฝ, ์ธํ๋ผ ์ค์ ๋ง ๋ฐ๋๋ ๊ฒฝ์ฐ
- ๋จ์ผ ์ธ๋ถ API ์ถ๊ฐ์ฒ๋ผ ์ต์ข
์ฌ์ฉ์ ์๋๋ฆฌ์ค ๋ณํ๊ฐ ์๋ ์์
- ์ด๋ฏธ ์น์ธ๋ ์คํ ๋ฆฌ๋ฅผ ๋จ์ ๋ณต์ฌํ๋ ๊ฒฝ์ฐ โ ๊ธฐ์กด ํ์ผ ์ฐธ์กฐ
์ ์ ์กฐ๊ฑด
.omao/plans/<slug>/requirements.md ์กด์ฌ
- ํ๋ฅด์๋ ๋ชฉ๋ก ํ์ (์ต์ 1๊ฐ, ์ต๋ 5๊ฐ ๊ถ์ฅ)
- Acceptance Criteria ์์ฑ ๊ฐ๋ฅํ ์์ค์ผ๋ก ๊ธฐ๋ฅ์ด ๋ถํด๋จ
์ ์ฐจ
Step 1. ์กฐ๊ฑด๋ถ ์คํ ํ๋จ
๋ค์ ์ง๋ฌธ์ ๋ชจ๋ "์" ์ธ ๊ฒฝ์ฐ์๋ง ์คํ ๋ฆฌ๋ฅผ ์์ฑํฉ๋๋ค.
- ํด๋น ๋ณ๊ฒฝ์ด ์ธ๋ถ ์ฌ์ฉ์ ๋๋ ๋ด๋ถ ์ฌ์ฉ์์ ํ๋ฉด/CLI/API ๊ฒฝํ์ ๋ฐ๊พธ๋๊ฐ?
- ๋ณ๊ฒฝ๋ ๊ฒฝํ์ ๋ํ ๊ฐ์น ์์ (์ ํ์ํ๊ฐ) ์ด ์๊ตฌ์ฌํญ๋ง์ผ๋ก ์ถฉ๋ถํ ๋๋ฌ๋์ง ์๋๊ฐ?
- Acceptance Criteria ๊ฐ ์๊ตฌ์ฌํญ ๋ ๋ฒจ๋ณด๋ค ์ธ๋ฐํ๊ฒ ๊ธฐ์ ๋์ด์ผ ํ๋๊ฐ?
๋ชจ๋ "์๋์ค" ์ธ ๊ฒฝ์ฐ ์คํ ๋ฆฌ ์์ฑ์ ์คํตํ๊ณ , decision-log.md ์ ์คํต ์ฌ์ ๋ฅผ ๊ธฐ๋กํฉ๋๋ค.
Step 2. ํ๋ฅด์๋ ์ ์
| ํ๋ | ์์ |
|---|
| ์ด๋ฆ | ํ๋ซํผ ์ด์์ / AI ์๋น์ค ๊ฐ๋ฐ์ / ์ต์ข
์ฌ์ฉ์ |
| ์ฃผ์ ๋ชฉํ | ์ง์ฐ ๊ฐ์, ๋น์ฉ ๊ฐ์์ฑ, ๊ฐ์ธ์ ๋ณด ๋ณดํธ |
| ๊ถํ ์์ค | ์ฝ๊ธฐ / ์ฐ๊ธฐ / ์น์ธ |
| ์ฃผ์ ์ฑ๋ | Web UI, CLI, API, Slack |
Step 3. As-a / I-want / So-that ํฌ๋งท
### US-01 โ Semantic Router ํด๋ฐฑ ์๋ฆผ
- **As a** ํ๋ซํผ ์ด์์
- **I want** ๋ผ์ฐํฐ๊ฐ ํด๋ฐฑ ๊ฒฝ๋ก๋ก ์ ํ๋๋ ์๊ฐ ์๋ฆผ์ ๋ฐ๊ธฐ๋ฅผ
- **So that** ์ฌ์ฉ์ ์ํฅ์ด ๋ฐ์ํ๊ธฐ ์ ์ ์กฐ์นํ ์ ์์ต๋๋ค.
**Acceptance Criteria**
- [ ] ํด๋ฐฑ ์ ํ ์ด๋ฒคํธ๊ฐ Slack `#ai-platform-ops` ์ฑ๋์ 30์ด ๋ด ๊ฒ์๋ฉ๋๋ค.
- [ ] ์๋ฆผ์ ํธ๋ฆฌ๊ฑฐ REQ-ID(REQ-002) ์ ํธ๋ ์ด์ค ID ๋งํฌ๋ฅผ ํฌํจํฉ๋๋ค.
- [ ] ์๋ฆผ์ ๋์ผ ์์ธ ๊ธฐ์ค 15๋ถ๊ฐ ์ค๋ณต ์ง๊ณ(deduplicate) ๋ฉ๋๋ค.
**Traceability**: REQ-001, REQ-002
Step 4. ์คํ ๋ฆฌ ์ฐ์ ์์
- P0 (ํ์): ์ฐจ๋จ ์์, ๊ท์ ์ด์, ๋ฐ์ดํฐ ์ ํฉ์ฑ
- P1 (์ค์): ์ฃผ์ ์ฌ์ฉ ํ๋ฆ, ๋๊ท๋ชจ ์ฌ์ฉ์ ์ํฅ
- P2 (์ ํธ): ํธ์์ฑ ๊ฐ์ , ๋ณด์กฐ ํ๋ฅด์๋ ์๊ตฌ
- ์ฐ์ ์์๋
requirements.md ์ REQ-ID ์ค์๋์ ์ผ๊ด์ฑ ์ ์ง
Step 5. ์คํ ๋ฆฌ ๋จ์ ํฌ๊ธฐ ์ ์ด
- ๊ฐ ์คํ ๋ฆฌ๋ 2~5์ผ ๊ตฌํ ๋ถ๋(MoSCoW ๊ธฐ์ค "Should" ์ด์) ์ผ๋ก ์ ํํฉ๋๋ค.
- 5์ผ์ ์ด๊ณผํ๋ฉด ํ์ ์คํ ๋ฆฌ๋ก ๋ถํดํ๊ณ
US-01 โ US-01a / US-01b ํํ๋ก ๋ฒํธ๋ฅผ ๋ถ์ฌํฉ๋๋ค.
Step 6. ์ฐ์ถ๋ฌผ ์ ์ฅ
.omao/plans/<slug>/user-stories.md ์ ์ฅ
- frontmatter:
created, last_update.date, tags: [aidlc, inception, user-stories]
- ๊ฐ ์คํ ๋ฆฌ์ Traceability ๋ธ๋ก(REQ-ID ๋งคํ) ํ์
Step 7. ๋ค์ ์คํฌ ์ฐ๊ฒฐ
workflow-planning ์ ๊ฐ ์คํ ๋ฆฌ๊ฐ ์ํ Unit ์ ์ ๋ฌํฉ๋๋ค.
- ์ฌ์ฉ์ ๋๋ฉด ์๊ตฌ๊ฐ ์์ด ์คํ ๋ฆฌ๋ฅผ ์๋ตํ ๊ฒฝ์ฐ,
decision-log.md ๋ง ๋จ๊ธฐ๊ณ ๊ฑด๋๋๋๋ค.
์ข์ ์์
- 3๊ฐ ํ๋ฅด์๋, ๊ฐ 3~5 ์คํ ๋ฆฌ, ๋ชจ๋ ์คํ ๋ฆฌ์ REQ-ID ๋งํฌ + ์ฒดํฌ๋ฆฌ์คํธ ํ์ Acceptance Criteria
- 1๊ฐ P0 ์คํ ๋ฆฌ(์ฐจ๋จ ์์) + 2๊ฐ P1 ์คํ ๋ฆฌ(์ฃผ์ ํ๋ฆ) + 1๊ฐ P2 ์คํ ๋ฆฌ(ํธ์์ฑ)
๋์ ์์ (๊ธ์ง)
- "์ฌ์ฉ์๋ ๋น ๋ฅธ ์๋ต์ ์ํ๋ค" โ ํ๋ฅด์๋ ์์, ๊ฐ์น ๋ชจํธ, ์์น ๋ถ์ฌ
- REQ-ID ๋ฅผ ์ ํ ์ฐธ์กฐํ์ง ์์ Traceability ๊นจ์ง
- ํ๋์ ์คํ ๋ฆฌ์ 5๊ฐ ์ด์ AC ๋ณํฉ โ ๋
๋ฆฝ ์คํ ๋ฆฌ๋ก ๋ถํด ํ์
- ๋ด๋ถ ์ ์ฉ ๋ณ๊ฒฝ์ ์คํ ๋ฆฌ๋ฅผ ์ต์ง๋ก ์์ฑ โ ์คํต ์ฌ์ ๊ธฐ๋ก์ด ์ฌ๋ฐ๋ฅธ ์ ํ
์ฐธ๊ณ ์๋ฃ
๊ณต์ ๋ฌธ์
๊ด๋ จ ๋ฌธ์ (๋ด๋ถ)
../requirements-analysis/SKILL.md โ ์ ํ ์คํฌ(REQ-ID ์์ค)
../workflow-planning/SKILL.md โ ํํ ์คํฌ(Unit ๋งคํ)
../../CLAUDE.md โ aidlc ํ๋ฌ๊ทธ์ธ ๊ฐ์
/home/ubuntu/workspace/oh-my-aidlcops/CLAUDE.md โ OMA ์ ์ฒด ์ฒ ํ