From e4663d2f3f76648e9615bc6cc63678997f8ddb8f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EC=9A=A9=EC=84=B1?= Date: Sat, 13 Jun 2026 10:43:05 +0900 Subject: [PATCH 1/7] feat(atelier): add interview skill (quick/grill/brainstorm) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Pre-work intent-alignment meta-skill with three modes routed from a single entry point (mirrors the spec skill's intent->reference dispatch): - quick (default, inline): RG-CN-A frame (Restate/Goal/Constraints/Non-goals/Acceptance) -> 5-line mini-spec -> 'go' gate - grill (references/grill.md): interrogate an existing plan branch-by-branch down the decision tree, one question at a time with a recommended answer, exploring the codebase instead of asking when possible - brainstorm (references/brainstorm.md): context exploration -> clarifying questions -> 2-3 approaches with trade-offs -> section-by-section design validation (interface/module structure/dependency direction) with optional visualization -> design self-review -> approval hard gate -> handoff Shared hard gate: no implementation before explicit approval. Boundaries documented vs spec:design (state-based split), Plan Mode, autopilot. Design persistence stays on existing channels (Plan Mode plan file / spec:design document) to avoid duplicating spec's artifact responsibility. grill/brainstorm concepts adapted from obra/superpowers (MIT, (c) 2025 Jesse Vincent) brainstorming/grill-me skills, rewritten for atelier conventions with superpowers-ecosystem dependencies removed. Closes #713 (reinterpreted: standalone deep-interview plugin -> atelier skill, per marketplace consolidation) ๐Ÿค– Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- plugins/atelier/skills/interview/SKILL.md | 89 +++++++++++++++ .../skills/interview/references/brainstorm.md | 102 ++++++++++++++++++ .../skills/interview/references/grill.md | 70 ++++++++++++ 3 files changed, 261 insertions(+) create mode 100644 plugins/atelier/skills/interview/SKILL.md create mode 100644 plugins/atelier/skills/interview/references/brainstorm.md create mode 100644 plugins/atelier/skills/interview/references/grill.md diff --git a/plugins/atelier/skills/interview/SKILL.md b/plugins/atelier/skills/interview/SKILL.md new file mode 100644 index 00000000..98ddcd7a --- /dev/null +++ b/plugins/atelier/skills/interview/SKILL.md @@ -0,0 +1,89 @@ +--- +name: interview +description: ์ž‘์—… ์ฐฉ์ˆ˜ ์ „ ์˜๋„ยท์„ค๊ณ„๋ฅผ ์‚ฌ๋žŒ๊ณผ ํ•ฉ์˜ํ•˜๋Š” ์ธํ„ฐ๋ทฐ ๋ฉ”ํƒ€์Šคํ‚ฌ. "์˜๋„๋ถ€ํ„ฐ ํ™•์ •ํ•˜์ž", "grill me / ์ด ๊ณ„ํš ์‹ฌ๋ฌธํ•ด์ค˜ / ์ŠคํŠธ๋ ˆ์Šค ํ…Œ์ŠคํŠธ", "๊ฐ™์ด brainstorm ํ•˜์ž / ์„ค๊ณ„ ๊ฐ™์ด ์žก์ž" ๊ฐ™์€ ์š”์ฒญ์— ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์Šฌ๋ž˜์‹œ๋กœ ์ง์ ‘ ํ˜ธ์ถœํ•˜๊ฑฐ๋‚˜ ๋ชจ๋ธ์ด ๋ชจํ˜ธํ•œ ์š”์ฒญ์„ ๊ฐ์ง€ํ•˜๋ฉด ์‚ฌ์šฉ์„ ์ œ์•ˆํ•˜๋ฉฐ, quick(์˜๋„ ํ™•์ •)ยทgrill(๊ธฐ์กด ๊ณ„ํš ์‹ฌ๋ฌธ)ยทbrainstorm(๋ฌด์—์„œ ์„ค๊ณ„) ๋ชจ๋“œ๋กœ ๋ผ์šฐํŒ…ํ•ฉ๋‹ˆ๋‹ค. +version: 1.0.0 +--- + +# interview + +์ฝ”๋“œ๋ฅผ ๊ฑด๋“œ๋ฆฌ๊ธฐ **์ „์—** ์˜๋„ยท์ œ์•ฝยท์™„๋ฃŒ ๊ธฐ์ค€์„ ์‚ฌ๋žŒ๊ณผ ํ•ฉ์˜ํ•ด ์˜คํ•ด์™€ ์˜ค๋ฒ„์—”์ง€๋‹ˆ์–ด๋ง์„ ์ฐจ๋‹จํ•˜๋Š” ๋‹จ์ผ ์ง„์ž…์ ์ž…๋‹ˆ๋‹ค. atelier ์˜ **์„ค๊ณ„ ์ตœ์šฐ์„ (Design First)** ์›์น™์„ ๋Œ€ํ™” ๋‹จ๊ณ„์—์„œ ๊ฐ•์ œํ•ฉ๋‹ˆ๋‹ค. + +์‚ฌ์šฉ์ž๊ฐ€ interview ์Šฌ๋ž˜์‹œ๋กœ ์ง„์ž…ํ•˜๊ฑฐ๋‚˜ ๋ชจ๋ธ์ด ๋งฅ๋ฝ์—์„œ ์ž๋™ ํ˜ธ์ถœํ•˜๋ฉฐ, ์ž์—ฐ์–ด ์˜๋„๋ฅผ ๋ถ„๋ฅ˜ํ•ด ์•„๋ž˜ ๋ชจ๋“œ๋กœ ๋””์ŠคํŒจ์น˜ํ•ฉ๋‹ˆ๋‹ค. + +## ์ง„์ž… ๋ผ์šฐํŒ… (์˜๋„ โ†’ ๋ชจ๋“œ) + +| ์‚ฌ์šฉ์ž ์˜๋„ (์˜ˆ) | ๋ชจ๋“œ | ๋กœ๋“œํ•  reference | +|---|---|---| +| "์ด๊ฑฐ ์ •๋ฆฌ/๊ฐœ์„ ํ•ด์ค˜"(๋ชจํ˜ธ), "๋ญ๋ถ€ํ„ฐ ํ• ์ง€ ์˜๋„๋ถ€ํ„ฐ", ๋‹จ๋ฐœ ์ž‘์—… ์ฐฉ์ˆ˜ | `quick` (๊ธฐ๋ณธ) | (์ธ๋ผ์ธ) | +| "grill me", "์ด ๊ณ„ํš ์‹ฌ๋ฌธํ•ด์ค˜", "๋‚ด plan ์ŠคํŠธ๋ ˆ์Šค ํ…Œ์ŠคํŠธ", ๊ธฐ์กด ์„ค๊ณ„ ๊ฒ€์ฆ | `grill` | `references/grill.md` | +| "๊ฐ™์ด brainstorm", "์„ค๊ณ„ ๊ฐ™์ด ์žก์ž", "๋ง‰์—ฐํ•œ๋ฐ ๋ฐฉํ–ฅ ์žก์•„์ค˜", ๋ฌด์—์„œ ์„ค๊ณ„ | `brainstorm` | `references/brainstorm.md` | + +์ž…๋ ฅ ์ธ์ž(๋Œ€์ƒ ํŒŒ์ผยท๊ธฐ์กด plan ๊ฒฝ๋กœ ๋“ฑ)๊ฐ€ ํ•จ๊ป˜ ์˜ค๋ฉด ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•˜๊ณ , ์—†์œผ๋ฉด ์ง์ ‘ ๋ฌป์Šต๋‹ˆ๋‹ค. ๊ฒฐ์ •์  ๋™์ž‘์€ ์—†์œผ๋ฉฐ ์ „๋ถ€ **ํŒ๋‹จ/๋Œ€ํ™”**์ž…๋‹ˆ๋‹ค. + +## ๊ณตํ†ต ์›์น™ (3๋ชจ๋“œ ๊ณต์œ ) + +1. **์งˆ๋ฌธ์€ ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์”ฉ** โ€” ํ•œ๊บผ๋ฒˆ์— ์Ÿ์ง€ ์•Š๋Š”๋‹ค. ๋‹ต์„ ๋ฐ›์•„ ๋‹ค์Œ ๊ฐ€์ง€๋ฅผ ์ •ํ•œ๋‹ค. +2. **๊ฐ ์งˆ๋ฌธ๋งˆ๋‹ค ์ถ”์ฒœ ๋‹ต์„ ํ•จ๊ป˜ ์ œ์‹œ** โ€” ์‚ฌ์šฉ์ž๊ฐ€ 0๋ถ€ํ„ฐ ์ƒ๊ฐํ•˜์ง€ ์•Š๊ฒŒ, "๋‚ด ์ถ”์ฒœ์€ X (์ด์œ )" ํ˜•ํƒœ๋กœ default ๋ฅผ ์ œ์•ˆ. +3. **์ฝ”๋“œ๋ฒ ์ด์Šค๋กœ ๋‹ตํ•  ์ˆ˜ ์žˆ์œผ๋ฉด ์งˆ๋ฌธํ•˜์ง€ ๋ง๊ณ  ํƒ์ƒ‰ํ•œ๋‹ค** โ€” prior artยท๊ธฐ์กด ์ปจ๋ฒค์…˜ยท์˜ํ–ฅ ๋ฒ”์œ„๋Š” Grep/Read ๋กœ ์ง์ ‘ ํ™•์ธ ํ›„ ์‚ฌ์‹ค๋กœ ์ œ์‹œ. ์‚ฌ๋žŒ์˜ ์‹œ๊ฐ„์€ *ํŒ๋‹จ์ด ํ•„์š”ํ•œ ์ง€์ *์—๋งŒ ์“ด๋‹ค. +4. **์Šน์ธ ์ „ ๊ตฌํ˜„ ๊ธˆ์ง€ (Hard Gate)** โ€” ๋ฏธ๋‹ˆ ๋ช…์„ธ/์„ค๊ณ„๋ฅผ ์ œ์‹œํ•˜๊ณ  ์‚ฌ์šฉ์ž๊ฐ€ "go"(๋˜๋Š” ์Šน์ธ)ํ•˜๊ธฐ ์ „์—๋Š” ์ฝ”๋“œ ์ž‘์„ฑยท์Šค์บํด๋”ฉยทํŒŒ์ผ ๋ณ€๊ฒฝ์„ ์‹œ์ž‘ํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ž‘์—…์ด ๋‹จ์ˆœํ•ด ๋ณด์—ฌ๋„ ๋™์ผํ•˜๊ฒŒ ์ ์šฉํ•œ๋‹ค. + +## quick ๋ชจ๋“œ (๊ธฐ๋ณธ) โ€” RG-CN-A ์˜๋„ ํ™•์ • + +๋‹จ๋ฐœ ์ž‘์—…์˜ ์˜๋„๋ฅผ 3โ€“5๋ถ„ ์•ˆ์— ํ™•์ •ํ•œ๋‹ค. ์•„๋ž˜ 5๊ฐœ ์ถ•์„ **์ˆœ์„œ๋Œ€๋กœ, ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์”ฉ** ํ™•์ธํ•˜๋˜, ์ฝ”๋“œ๋ฒ ์ด์Šค๋กœ ๋‹ต ๊ฐ€๋Šฅํ•œ ํ•ญ๋ชฉ์€ ๋จผ์ € ํƒ์ƒ‰ํ•ด "๋‚ด๊ฐ€ ํ™•์ธํ•œ ์‚ฌ์‹ค"๋กœ ์ œ์‹œํ•˜๊ณ  ์‚ฌ์šฉ์ž์—๊ฒ ํŒ๋‹จ๋งŒ ์š”์ฒญํ•œ๋‹ค. + +``` +R(estate) โ€” ๋‚ด๊ฐ€ ์ดํ•ดํ•œ ์š”์ฒญ = ... (2~3 bullet ๋กœ ์žฌ์ง„์ˆ ) +G(oal) โ€” ์ง„์งœ ๋‹ฌ์„ฑํ•˜๋ ค๋Š” ๊ฑด? ์™œ ์ด๊ฑธ ํ•˜๋Š”๊ฐ€ +C(onstraints) โ€” ์ง€์ผœ์•ผ ํ•  ์ปจ๋ฒค์…˜/์ œ์•ฝ? (์žˆ์œผ๋ฉด ์ฝ”๋“œ๋ฒ ์ด์Šค์—์„œ ๋จผ์ € ํƒ์ƒ‰) +N(on-goals) โ€” ๋ช…์‹œ์ ์œผ๋กœ ์•ˆ ๊ฑด๋“œ๋ฆด ๊ฒƒ? +A(cceptance) โ€” "์™„๋ฃŒ" ํŒ์ • ๊ธฐ์ค€? +``` + +์˜ต์…˜ ํ•ญ๋ชฉ (5์ถ• ์‚ฌ์ด์˜ ๊ณ ์ • ์œ„์น˜์— ์‚ฝ์ž…): +- **Prior art**: C(onstraints) ํ™•์ธ **์ „์—** ์ฝ”๋“œ๋ฒ ์ด์Šค๋ฅผ ์ง์ ‘ ํƒ์ƒ‰ํ•ด ๋น„์Šทํ•œ ํŒจํ„ด์„ ์‚ฌ์‹ค๋กœ ์ œ์‹œ (์งˆ๋ฌธ ์•„๋‹˜) +- **Risk surface**: A(cceptance) ๊นŒ์ง€ ๋๋‚œ **๋’ค**, ๋‹ค์ค‘ ํ•ด์„ยท๋„“์€ ์˜ํ–ฅ ๊ฐ™์€ ์œ„ํ—˜ ์‹ ํ˜ธ๊ฐ€ ๋‚จ์•„ ์žˆ์œผ๋ฉด ๋งˆ์ง€๋ง‰ 1ํšŒ "๊ฐ€์žฅ ์œ„ํ—˜ํ•œ ์˜คํ•ด ํ›„๋ณด"๋ฅผ ํ™•์ธ + +### quick ์‚ฐ์ถœ๋ฌผ โ€” 5์ค„ ๋ฏธ๋‹ˆ ๋ช…์„ธ +ํ™•์ธ์ด ๋๋‚˜๋ฉด ์•„๋ž˜๋ฅผ ์ถœ๋ ฅํ•˜๊ณ  ์‚ฌ์šฉ์ž์˜ "go" ๋ฅผ ๊ธฐ๋‹ค๋ฆฐ๋‹ค. + +``` +์š”์ฒญ(R): ... +๋ชฉํ‘œ(G): ... +์ œ์•ฝ(C): ... +๋น„๋ชฉํ‘œ(N): ... +์™„๋ฃŒ(A): ... +โ†’ ์ด๋Œ€๋กœ ์ง„ํ–‰ํ• ๊นŒ์š”? ("go" ๋˜๋Š” ์ˆ˜์ •์‚ฌํ•ญ) +``` + +## ์ž๋™ ๋ฐœ๋™ ํŠธ๋ฆฌ๊ฑฐ (๋ชจ๋ธ์ด ํ˜ธ์ถœ ์ œ์•ˆ) + +๋‹ค์Œ ์‹ ํ˜ธ ์ค‘ ํ•˜๋‚˜ ์ด์ƒ์ด๋ฉด ์‚ฌ์šฉ์ž์—๊ฒŒ interview ์‚ฌ์šฉ์„ **์ œ์•ˆ**ํ•œ๋‹ค (๊ฐ•์ œํ•˜์ง€ ์•Š์Œ): +- ๋™์‚ฌ๊ฐ€ ์ถ”์ƒ์ : "์ •๋ฆฌ", "๊ฐœ์„ ", "์ตœ์ ํ™”", "๋ฆฌํŒฉํ„ฐ" +- ๊ฐ์ฒด๊ฐ€ ๋ชจํ˜ธํ•˜๊ฑฐ๋‚˜ ๋‹ค์ค‘ ํ•ด์„ ๊ฐ€๋Šฅ +- ์˜ํ–ฅ ๋ฒ”์œ„๊ฐ€ 5+ ํŒŒ์ผ๋กœ ์ถ”์ •๋จ +- ์ƒˆ ๊ธฐ๋Šฅ/๋ฆฌํŒฉํ„ฐ ํ‚ค์›Œ๋“œ + ์ปจ๋ฒค์…˜ยท์ œ์•ฝ ๋ฏธ์–ธ๊ธ‰ + +## Skip ์กฐ๊ฑด (๋ฐœ๋™ํ•˜์ง€ ์•Š์Œ) + +- ํ•œ ์ค„ ์ˆ˜์ •, ์˜คํƒ€, ๋‹จ์ˆœ ์กฐํšŒ +- ์‚ฌ์šฉ์ž๊ฐ€ "๊ทธ๋ƒฅ ํ•ด" ๋ฅ˜ ๋น ๋ฅธ ์ง„ํ–‰์„ ๋ช…์‹œ +- ์ด๋ฏธ Plan Mode / `spec` ์„ค๊ณ„์— ์ง„์ž…ํ•œ ์ƒํƒœ (์ค‘๋ณต ๊ฒŒ์ดํŠธ ๋ฐฉ์ง€) + +## ์ฑ…์ž„ ๊ฒฝ๊ณ„ (์ค‘๋ณต ๋ฐฉ์ง€) + +| ๋Œ€์ƒ | interview ์™€์˜ ์ฐจ์ด | ํ•ธ๋“œ์˜คํ”„ | +|---|---|---| +| `spec:design` | ๋ถ„๊ธฐ๋Š” **์ƒํƒœ ๊ธฐ์ค€**: ์˜๋„ยท์š”๊ตฌ์‚ฌํ•ญ์ด ์•„์ง ๋ชจํ˜ธํ•˜๋ฉด interview, ์˜๋„๋Š” ํ•ฉ์˜๋๊ณ  ์•„ํ‚คํ…์ฒ˜ ๊ตฌ์กฐ(๋‹ค์ค‘ ์ปดํฌ๋„ŒํŠธ)๋ฅผ ์ŠคํŽ™ ๋ฌธ์„œ๋กœ ์žก๋Š” ๋‹จ๊ณ„๋ฉด spec:design. interview ์˜ ์‚ฐ์ถœ์€ ๋Œ€ํ™” ๋‚ด ํ•ฉ์˜(๋ฏธ๋‹ˆ ๋ช…์„ธยท์„ค๊ณ„ ์š”์•ฝ), spec:design ์˜ ์‚ฐ์ถœ์€ ์ŠคํŽ™ ๋ฌธ์„œ | brainstorm ์ค‘ ์•„ํ‚คํ…์ฒ˜ ๊ทœ๋ชจ๋กœ ํŒ๋ช…๋˜๊ฑฐ๋‚˜ ์„ค๊ณ„์˜ ๋ฌธ์„œ ์˜์†ํ™”๊ฐ€ ํ•„์š”ํ•˜๋ฉด `spec:design` ์œผ๋กœ ์—์Šค์ปฌ๋ ˆ์ดํŠธ. ์—ญ๋ฐฉํ–ฅ: spec:design ์ง„์ž… ์‹œ ์˜๋„๊ฐ€ ์•„์ง ๋ชจํ˜ธํ•˜๋ฉด interview ๋ฅผ ๋จผ์ € ๊ถŒํ•œ๋‹ค | +| Plan Mode | interview ๋Š” *๋ฌด์—‡์„/์™œ*(์˜๋„). Plan Mode ๋Š” *์–ด๋–ป๊ฒŒ*(์ฝ”๋“œ ๋ณ€๊ฒฝ ๋‹จ๊ณ„ ์„ค๊ณ„) | quick/brainstorm ์œผ๋กœ ์˜๋„๊ฐ€ ํ™•์ •๋˜๊ณ  ์ฝ”๋“œ ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•˜๋ฉด Plan Mode ๋กœ ๋„˜๊ธด๋‹ค | +| `autopilot` | ์ž์œจ ๋ฃจํ”„์™€ ๋ฌด๊ด€. interview ๋Š” ์‚ฌ๋žŒโ†”์—์ด์ „ํŠธ ๋Œ€ํ™” ์ „์šฉ | ํ•ด๋‹น ์—†์Œ | + +## references ๋กœ๋“œ ๊ฐ€์ด๋“œ + +| reference | ์–ธ์ œ ๋กœ๋“œ | ๋‚ด์šฉ | +|---|---|---| +| `references/grill.md` | ๊ธฐ์กด plan/design ์„ ์‹ฌ๋ฌธ(`grill`)ํ•  ๋•Œ | ๊ฒฐ์ • ํŠธ๋ฆฌ ์ˆœํšŒ, ์˜์กด์„ฑ ํ•ด์†Œ ์ˆœ์„œ, ์ข…๋ฃŒ ์กฐ๊ฑด, ํ•ฉ์˜ ๊ฒฐ์ • ์ถœ๋ ฅ | +| `references/brainstorm.md` | ๋ฌด์—์„œ ์„ค๊ณ„(`brainstorm`)ํ•  ๋•Œ | ์ปจํ…์ŠคํŠธ ํƒ์ƒ‰ โ†’ ๋ช…ํ™•ํ™” ์งˆ๋ฌธ โ†’ 2โ€“3 ์ ‘๊ทผ๋ฒ• โ†’ ์„น์…˜๋ณ„ ์„ค๊ณ„ ๊ฒ€์ฆ(+์‹œ๊ฐํ™” ์ œ์•ˆ) โ†’ self-review โ†’ ์Šน์ธ ๊ฒŒ์ดํŠธ โ†’ ํ•ธ๋“œ์˜คํ”„ | + +## ์ถœ์ฒ˜ + +`grill`/`brainstorm` ๋ชจ๋“œ์˜ ์ธํ„ฐ๋ทฐยท์„ค๊ณ„ ๊ฒŒ์ดํŠธ ๊ฐœ๋…์€ [obra/superpowers](https://github.com/obra/superpowers) (MIT License, ยฉ 2025 Jesse Vincent) ์˜ `brainstorming`ยท`grill-me` ์Šคํ‚ฌ์—์„œ ์ฐจ์šฉํ•ด atelier ์ปจ๋ฒค์…˜ยท์ฑ…์ž„ ๊ฒฝ๊ณ„์— ๋งž๊ฒŒ ์žฌ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. diff --git a/plugins/atelier/skills/interview/references/brainstorm.md b/plugins/atelier/skills/interview/references/brainstorm.md new file mode 100644 index 00000000..1504a51b --- /dev/null +++ b/plugins/atelier/skills/interview/references/brainstorm.md @@ -0,0 +1,102 @@ +# interview โ€” brainstorm ๋ชจ๋“œ + +๋ง‰์—ฐํ•œ ์•„์ด๋””์–ด๋ฅผ **๊ฒ€์ฆ๋œ ์„ค๊ณ„**๋กœ ํ•จ๊ป˜ ๋ฐœ์ „์‹œํ‚จ๋‹ค. ์ปจํ…์ŠคํŠธ ํƒ์ƒ‰์—์„œ ์ถœ๋ฐœํ•ด ์ ‘๊ทผ๋ฒ•์„ ๋น„๊ตํ•˜๊ณ , ์„ค๊ณ„๋ฅผ ์„น์…˜ ๋‹จ์œ„๋กœ ๊ฒ€์ฆ๋ฐ›๊ณ , self-review ์™€ ์Šน์ธ ๊ฒŒ์ดํŠธ๋ฅผ ๊ฑฐ์ณ ๊ตฌํ˜„ ๋‹จ๊ณ„๋กœ ๋„˜๊ธด๋‹ค. `interview` SKILL.md ์˜ ๊ณตํ†ต ์›์น™(ํ•œ ๋ฒˆ์— ํ•˜๋‚˜, ์ถ”์ฒœ ๋‹ต ๋™๋ฐ˜, ์ฝ”๋“œ๋ฒ ์ด์Šค ์šฐ์„  ํƒ์ƒ‰, ์Šน์ธ ์ „ ๊ตฌํ˜„ ๊ธˆ์ง€)์„ ๊ทธ๋Œ€๋กœ ๋”ฐ๋ฅธ๋‹ค. + +## ์–ธ์ œ ์“ฐ๋‚˜ + +- "๊ฐ™์ด brainstorm ํ•˜์ž", "์„ค๊ณ„ ๊ฐ™์ด ์žก์ž", "๋ง‰์—ฐํ•œ๋ฐ ๋ฐฉํ–ฅ๋ถ€ํ„ฐ" ์ฒ˜๋Ÿผ **์•„์ง ๊ตฌ์ฒด์•ˆ์ด ์—†๋Š”** ์ž‘์—… +- ์ด๋ฏธ plan ์ด ์žˆ์œผ๋ฉด `grill` ๋ชจ๋“œ๋กœ. ์˜๋„๊ฐ€ ์ด๋ฏธ ํ•ฉ์˜๋๊ณ  ์•„ํ‚คํ…์ฒ˜ ์ŠคํŽ™ ๋ฌธ์„œ๋ฅผ ์žก๋Š” ๋‹จ๊ณ„๋ฉด `spec:design` ์œผ๋กœ. + +## ํ”„๋กœ์„ธ์Šค + +### 1. ์ปจํ…์ŠคํŠธ ํƒ์ƒ‰ (๋จผ์ €, ์ง์ ‘) +์งˆ๋ฌธํ•˜๊ธฐ ์ „์— ์ฝ”๋“œ๋ฒ ์ด์Šค์—์„œ prior artยท๊ด€๋ จ ๋ชจ๋“ˆยท๊ธฐ์กด ์ปจ๋ฒค์…˜ยท์˜ํ–ฅ ๋ฒ”์œ„๋ฅผ Grep/Read ๋กœ ํ™•์ธํ•œ๋‹ค. ๋ฐœ๊ฒฌํ•œ ์‚ฌ์‹ค์„ "์ด๋ฏธ X ํŒจํ„ด์ด ์žˆ์Šต๋‹ˆ๋‹ค" ํ˜•ํƒœ๋กœ ๋จผ์ € ์ œ์‹œํ•œ๋‹ค. + +### 2. ๋ช…ํ™•ํ™” ์งˆ๋ฌธ โ€” ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์”ฉ +์ดํ•ด ๊ฐญ์„ ๋ฉ”์šฐ๋Š” ์งˆ๋ฌธ์„ ํ•˜๋‚˜์”ฉ ํ•œ๋‹ค. ๊ฐ ์งˆ๋ฌธ์— **์ถ”์ฒœ ๋‹ต๊ณผ ๊ทผ๊ฑฐ**๋ฅผ ๋™๋ฐ˜ํ•œ๋‹ค. ๋ชฉ์ ยท์ œ์•ฝยท์„ฑ๊ณต ๊ธฐ์ค€์ด ๋“œ๋Ÿฌ๋‚  ๋•Œ๊นŒ์ง€ ๊ณ„์†ํ•˜๋˜, ์ฝ”๋“œ๋กœ ๋‹ต์ด ์ •ํ•ด์ง€๋Š” ๊ฑด ๋ฌป์ง€ ๋ง๊ณ  ํƒ์ƒ‰ ๊ฒฐ๊ณผ๋กœ ๋ฉ”์šด๋‹ค. + +### 3. ์ ‘๊ทผ๋ฒ• 2โ€“3๊ฐœ + trade-off +์„ค๊ณ„ ๊ณต๊ฐ„์ด ์ขํ˜€์ง€๋ฉด **์„œ๋กœ ๋‹ค๋ฅธ ์ ‘๊ทผ๋ฒ• 2โ€“3๊ฐœ**๋ฅผ ์ œ์‹œํ•œ๋‹ค. +- ๊ฐ ์ ‘๊ทผ์˜ ํ•ต์‹ฌ ์•„์ด๋””์–ด / ์žฅ์  / ๋น„์šฉยท๋ฆฌ์Šคํฌ / ์ ํ•ฉ ์กฐ๊ฑด +- ๊ทธ์ค‘ **์ถ”์ฒœ์•ˆ๊ณผ ์ด์œ **๋ฅผ ๋ช…์‹œํ•œ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ์„ ํƒํ•˜๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„๋กœ. + +### 4. ์„ค๊ณ„ ์ œ์‹œ โ€” ์„น์…˜ ๋‹จ์œ„ ๊ฒ€์ฆ +์„ ํƒ๋œ ๋ฐฉํ–ฅ์„ **ํ•œ ๋ฒˆ์— ์Ÿ์ง€ ์•Š๊ณ  ์„น์…˜ ๋‹จ์œ„๋กœ** ์ œ์‹œํ•˜๊ณ , ์„น์…˜๋งˆ๋‹ค ์‚ฌ์šฉ์ž ๊ฒ€์ฆ์„ ๋ฐ›์€ ๋’ค ๋‹ค์Œ์œผ๋กœ ๊ฐ„๋‹ค. ์„น์…˜ ๊ตฌ์„ฑ์€ ์„ค๊ณ„ ์‚ฐ์ถœ๋ฌผ 3์š”์†Œ(์ธํ„ฐํŽ˜์ด์Šค ์ •์˜ยท๋ชจ๋“ˆ ๊ตฌ์กฐยท์˜์กด์„ฑ ๋ฐฉํ–ฅ)๋ฅผ ๋ฐ˜๋“œ์‹œ ํฌํ•จํ•œ๋‹ค: + +1. ๋ชฉ์ ยท๋ฒ”์œ„ (๋น„๋ชฉํ‘œ ํฌํ•จ) +2. **์ธํ„ฐํŽ˜์ด์Šค ์ •์˜** โ€” ๊ณต๊ฐœ API / ์‹œ๊ทธ๋‹ˆ์ฒ˜ / ๊ณ„์•ฝ +3. **๋ชจ๋“ˆ ๊ตฌ์กฐ** โ€” ์ฑ…์ž„ ๋ถ„๋ฆฌ +4. **์˜์กด์„ฑ ๋ฐฉํ–ฅ** โ€” ๋ฌด์—‡์ด ๋ฌด์—‡์— ์˜์กดํ•˜๋Š”๊ฐ€ +5. ์—๋Ÿฌยท์—ฃ์ง€ ์ผ€์ด์Šค +6. ์˜ํ–ฅ ๋ฒ”์œ„ยท๋ฆฌ์Šคํฌ + +### 5. ์‹œ๊ฐํ™” (์กฐ๊ฑด๋ถ€ ์ œ์•ˆ) +ํ…์ŠคํŠธ๋ณด๋‹ค ์‹œ๊ฐ ํ‘œํ˜„์ด ์ดํ•ด๋ฅผ ๋ช…ํ™•ํžˆ ๋•๋Š” ์„น์…˜(๊ตฌ์กฐ ๋น„๊ตยทํ๋ฆ„ยท๋Œ€์•ˆ ๋Œ€์กฐ)์—์„œ๋Š” **๋จผ์ € ์ œ์•ˆํ•˜๊ณ  ๋™์˜๋ฅผ ๋ฐ›์€ ๋’ค** ์‚ฌ์šฉํ•œ๋‹ค: +- markdown ํ‘œ / ASCIIยทmermaid ๋‹ค์ด์–ด๊ทธ๋žจ โ€” ๋ชจ๋“ˆ ๊ตฌ์กฐ, ์˜์กด์„ฑ ๋ฐฉํ–ฅ, ํ๋ฆ„ +- AskUserQuestion ์˜ preview โ€” ๋Œ€์•ˆ 2โ€“3๊ฐœ๋ฅผ ๋‚˜๋ž€ํžˆ ๋น„๊ต์‹œํ‚ฌ ๋•Œ + +๋ชจ๋“  ์„น์…˜์— ๊ฐ•์ œํ•˜์ง€ ์•Š๋Š”๋‹ค. ์‹œ๊ฐํ™”๊ฐ€ ๋”ํ•ด์ฃผ๋Š” ๊ฒŒ ์—†์œผ๋ฉด ํ…์ŠคํŠธ๋กœ ๊ฐ„๋‹ค. + +### 6. ์„ค๊ณ„ self-review +์ตœ์ข… ์Šน์ธ์„ ์š”์ฒญํ•˜๊ธฐ ์ง์ „ ์Šค์Šค๋กœ ์ ๊ฒ€ํ•œ๋‹ค: +- ์„น์…˜ ๊ฐ„ ๋ชจ์ˆœ์€ ์—†๋Š”๊ฐ€ +- ๊ฒ€์ฆ ์•ˆ ๋œ ๊ฐ€์ •์ด ์‚ฌ์‹ค์ฒ˜๋Ÿผ ์ ํ˜€ ์žˆ์ง€ ์•Š์€๊ฐ€ +- ์š”์ฒญํ•˜์ง€ ์•Š์€ ์ถ”์ƒํ™”(YAGNI ์œ„๋ฐ˜)๊ฐ€ ๋ผ์–ด๋“ค์ง€ ์•Š์•˜๋Š”๊ฐ€ +- ๋น ๋œจ๋ฆฐ ์—ฃ์ง€ยท์‚ฌ์ด๋“œ์ดํŽ™ํŠธ๋Š” ์—†๋Š”๊ฐ€ + +๋ฐœ๊ฒฌํ•˜๋ฉด ํ•ด๋‹น ์„น์…˜์„ ์ˆ˜์ •ํ•ด ๋‹ค์‹œ ์ œ์‹œํ•œ๋‹ค. + +### 7. ์Šน์ธ ๊ฒŒ์ดํŠธ (Hard Gate) +์ „์ฒด ์„ค๊ณ„ ์š”์•ฝ์„ ์ œ์‹œํ•˜๊ณ  **๋ช…์‹œ์  ์Šน์ธ**์„ ๋ฐ›๋Š”๋‹ค. ์Šน์ธ ์ „์—๋Š” ์ฝ”๋“œ ์ž‘์„ฑยท์Šค์บํด๋”ฉยทํŒŒ์ผ ๋ณ€๊ฒฝ์„ ์‹œ์ž‘ํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ž‘์—…์ด ๋‹จ์ˆœํ•ด ๋ณด์—ฌ๋„ ๋™์ผ. + +``` +## ์„ค๊ณ„ ์š”์•ฝ +- ์ ‘๊ทผ: <์„ ํƒ์•ˆ> +- ์ธํ„ฐํŽ˜์ด์Šค: <ํ•ต์‹ฌ ์‹œ๊ทธ๋‹ˆ์ฒ˜/๊ณ„์•ฝ> +- ๋ชจ๋“ˆ ๊ตฌ์กฐ / ์˜์กด์„ฑ ๋ฐฉํ–ฅ: ... +- ๋น„๋ชฉํ‘œ: <์•ˆ ๊ฑด๋“œ๋ฆด ๊ฒƒ> +- ๋ฆฌ์Šคํฌ: <๋‚จ์€ ์œ„ํ—˜> +โ†’ ์ด ์„ค๊ณ„๋กœ ๊ฐˆ๊นŒ์š”? (์Šน์ธ / ์„น์…˜ ์ˆ˜์ •) +``` + +### 8. ํ•ธ๋“œ์˜คํ”„ โ€” ์„ค๊ณ„ ์˜์†ํ™”๋Š” ๊ธฐ์กด ์ฑ„๋„๋กœ +brainstorm ์ž์ฒด๋Š” ๋ณ„๋„ ์„ค๊ณ„ ํŒŒ์ผ์„ ๋งŒ๋“ค์ง€ ์•Š๋Š”๋‹ค (์ŠคํŽ™ ๋ฌธ์„œ๋Š” `spec` ์˜ ์ฑ…์ž„). ํ•ฉ์˜๋œ ์„ค๊ณ„ ์š”์•ฝ์„ ๋“ค๊ณ : +- ์ฝ”๋“œ ๋ณ€๊ฒฝ ์ž‘์—… โ†’ **Plan Mode** โ€” plan ํŒŒ์ผ์ด ์„ค๊ณ„์˜ ์บ๋ฆฌ์–ด๊ฐ€ ๋œ๋‹ค +- ์•„ํ‚คํ…์ฒ˜/๋‹ค์ค‘ ์ปดํฌ๋„ŒํŠธ ๊ทœ๋ชจ์ด๊ฑฐ๋‚˜ ์ŠคํŽ™ ๋ฌธ์„œ๋กœ ๋‚จ๊ฒจ์•ผ ํ•˜๋ฉด โ†’ **`spec:design`** ์œผ๋กœ ์—์Šค์ปฌ๋ ˆ์ดํŠธ + +## ์ข…๋ฃŒ ์กฐ๊ฑด + +- ์„ค๊ณ„ ์š”์•ฝ์ด ์Šน์ธ๋˜์–ด Plan Mode/`spec` ์œผ๋กœ ํ•ธ๋“œ์˜คํ”„๋จ +- ๋˜๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๋ฐฉํ–ฅ์„ ๋ณด๋ฅ˜/์ค‘๋‹จ + +## ์˜ˆ์‹œ (ํƒ์ƒ‰ โ†’ ์ ‘๊ทผ๋ฒ• โ†’ ์„น์…˜๋ณ„ ๊ฒ€์ฆ โ†’ ์Šน์ธ) + +์‚ฌ์šฉ์ž: "์‚ฌ์šฉ์ž ํ™œ๋™ ๋กœ๊ทธ ๊ฐ™์ด brainstorm ํ•˜์ž" + +``` +[ํƒ์ƒ‰] ๊ธฐ์กด ๋กœ๊น…/์ด๋ฒคํŠธ ์ธํ”„๋ผ ํ™•์ธ โ†’ src/events/ ์— EventBus ์กด์žฌ, DB ๋Š” sqlite. + โ†’ "์ด๋ฏธ EventBus ๊ฐ€ ์žˆ์–ด ์—ฌ๊ธฐ์— ์–น๋Š” ๊ฒŒ ์ž์—ฐ์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค." + +Q1 ๋ณด์กด ๊ธฐ๊ฐ„ ์ •์ฑ…์ด ์žˆ๋‚˜์š”? + ์ถ”์ฒœ: 90์ผ โ€” ์œ ์‚ฌ ํ…Œ์ด๋ธ”(audit_log)์ด 90์ผ ๋ณด์กด. prior art ์™€ ์ผ์น˜ ๊ถŒ์žฅ. + โ†’ (์‚ฌ์šฉ์ž: 90์ผ ํ™•์ •) + +์ ‘๊ทผ๋ฒ• ์ œ์‹œ: + A. EventBus ๊ตฌ๋…์ž ์ถ”๊ฐ€ + ๊ธฐ์กด audit_log ํ…Œ์ด๋ธ” ์žฌ์‚ฌ์šฉ + +์ ์€ ์‹ ๊ทœ ์ฝ”๋“œ / -์Šคํ‚ค๋งˆ๊ฐ€ audit ์šฉ์ด๋ผ ํ•„๋“œ ์•ˆ ๋งž์„ ์ˆ˜ ์žˆ์Œ + B. ์ „์šฉ activity_log ํ…Œ์ด๋ธ” ์‹ ๊ทœ + +๊น”๋”ํ•œ ๋ชจ๋ธ / -๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ยท์‹ ๊ทœ ๋ฐฐ์„  ๋น„์šฉ + ์ถ”์ฒœ: A โ€” ์š”๊ตฌ๊ฐ€ ๋‹จ์ˆœ ์กฐํšŒ ์ˆ˜์ค€์ด๊ณ  EventBus ์žฌ์‚ฌ์šฉ์œผ๋กœ ํ‘œ๋ฉด์  ์ตœ์†Œ. + โ†’ (์‚ฌ์šฉ์ž: A ์„ ํƒ) + +[์„น์…˜๋ณ„ ์ œ์‹œ] ยง์ธํ„ฐํŽ˜์ด์Šค: ActivityLogger.record(event) ๊ณ„์•ฝ โ†’ ๊ฒ€์ฆ โ†’ + ยง๋ชจ๋“ˆ ๊ตฌ์กฐ: events/subscribers/activity.rs ๋‹จ์ผ ์ฑ…์ž„ โ†’ ๊ฒ€์ฆ โ†’ + ยง์˜์กด์„ฑ ๋ฐฉํ–ฅ: subscriber โ†’ EventBus ์ถ”์ƒ์—๋งŒ ์˜์กด โ†’ ๊ฒ€์ฆ โ†’ ... + (์˜์กด์„ฑ ๋ฐฉํ–ฅ์€ ASCII ๋‹ค์ด์–ด๊ทธ๋žจ ์ œ์•ˆ โ†’ ๋™์˜ ์‹œ ๋„์‹ํ™”) + +[self-review] "retention 90์ผ ์‚ญ์ œ ์ฃผ์ฒด๊ฐ€ ๋ฏธ์ •" ๋ฐœ๊ฒฌ โ†’ ยง์—๋Ÿฌยท์—ฃ์ง€์— ์ถ”๊ฐ€ ํ›„ ์žฌ์ œ์‹œ + +[์„ค๊ณ„ ์š”์•ฝ ์ œ์‹œ] โ†’ "์ด ์„ค๊ณ„๋กœ ๊ฐˆ๊นŒ์š”?" โ†’ (์Šน์ธ) โ†’ Plan Mode ํ•ธ๋“œ์˜คํ”„ +``` + +์Šน์ธ ์ „์—๋Š” ์–ด๋–ค ํŒŒ์ผ๋„ ๋งŒ๋“ค์ง€ ์•Š๋Š”๋‹ค. diff --git a/plugins/atelier/skills/interview/references/grill.md b/plugins/atelier/skills/interview/references/grill.md new file mode 100644 index 00000000..aef40ba0 --- /dev/null +++ b/plugins/atelier/skills/interview/references/grill.md @@ -0,0 +1,70 @@ +# interview โ€” grill ๋ชจ๋“œ + +์ด๋ฏธ ์กด์žฌํ•˜๋Š” plan/design ์„ **์ง‘์š”ํ•˜๊ฒŒ ์‹ฌ๋ฌธ**ํ•ด ๊ณต์œ ๋œ ์ดํ•ด์— ๋„๋‹ฌํ•  ๋•Œ๊นŒ์ง€ ๊ฒฐ์ • ํŠธ๋ฆฌ์˜ ๋ชจ๋“  ๊ฐ€์ง€๋ฅผ ํ•ด์†Œํ•œ๋‹ค. `interview` SKILL.md ์˜ ๊ณตํ†ต ์›์น™(ํ•œ ๋ฒˆ์— ํ•˜๋‚˜, ์ถ”์ฒœ ๋‹ต ๋™๋ฐ˜, ์ฝ”๋“œ๋ฒ ์ด์Šค ์šฐ์„  ํƒ์ƒ‰, ์Šน์ธ ์ „ ๊ตฌํ˜„ ๊ธˆ์ง€)์„ ๊ทธ๋Œ€๋กœ ๋”ฐ๋ฅธ๋‹ค. + +## ์–ธ์ œ ์“ฐ๋‚˜ + +- ์‚ฌ์šฉ์ž๊ฐ€ "grill me", "์ด ๊ณ„ํš ์‹ฌ๋ฌธํ•ด์ค˜", "๋‚ด ์„ค๊ณ„ ์ŠคํŠธ๋ ˆ์Šค ํ…Œ์ŠคํŠธํ•ด์ค˜" ๋ผ๊ณ  ์š”์ฒญ +- ์ด๋ฏธ ์ž‘์„ฑ๋œ plan / ์„ค๊ณ„ ๋ฌธ์„œ / ์ ‘๊ทผ์•ˆ์ด ์žˆ๊ณ , ๋นˆํ‹ˆยท์•”๋ฌต์  ๊ฐ€์ •ยท๊ฒฐ์ • ๊ฐ„ ์ถฉ๋Œ์„ ๋“œ๋Ÿฌ๋‚ด๊ณ  ์‹ถ์„ ๋•Œ + +## ํ”„๋กœ์„ธ์Šค + +### 1. ๊ฒฐ์ • ํŠธ๋ฆฌ ์ถ”์ถœ +๋Œ€์ƒ plan/design ์„ ์ฝ๊ณ , ๋‚ด๋ ค์•ผ ํ•  **๊ฒฐ์ •(decision)** ๋“ค์„ ํŠธ๋ฆฌ๋กœ ๋ถ„ํ•ดํ•œ๋‹ค. +- ๊ฐ ๋…ธ๋“œ = ํ•˜๋‚˜์˜ ๊ฒฐ์ • (์˜ˆ: "์ €์žฅ์†Œ๋ฅผ Redis ๋กœ ํ• ๊นŒ in-memory ๋กœ ํ• ๊นŒ") +- ์—ฃ์ง€ = ๊ฒฐ์ • ๊ฐ„ ์˜์กด์„ฑ (์ƒ์œ„ ๊ฒฐ์ •์ด ํ•˜์œ„ ์„ ํƒ์ง€๋ฅผ ์ œ์•ฝ) +- ์ฝ”๋“œ๋ฒ ์ด์Šค๋กœ ๋‹ต์ด ์ •ํ•ด์ง€๋Š” ๋…ธ๋“œ(๊ธฐ์กด ์ปจ๋ฒค์…˜ยทprior artยท์ œ์•ฝ)๋Š” **์งˆ๋ฌธํ•˜์ง€ ๋ง๊ณ  ํƒ์ƒ‰ํ•ด ํ™•์ •**ํ•˜๊ณ  ๊ทธ ์‚ฌ์‹ค์„ ๋ช…์‹œํ•œ๋‹ค. + +### 2. ๊ฐ€์ง€๋ณ„ ์ˆœํšŒ โ€” ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์”ฉ +์˜์กด์„ฑ ์œ„์ƒ ์ˆœ์„œ๋กœ ๋ฃจํŠธโ†’๋ฆฌํ”„๋ฅผ ๋‚ด๋ ค๊ฐ€๋ฉฐ, ๋ฏธํ•ด์†Œ ๊ฒฐ์ •๋งˆ๋‹ค: +1. ๊ฒฐ์ • ์ง€์ ๊ณผ ์„ ํƒ์ง€๋ฅผ 1โ€“2์ค„๋กœ ์ œ์‹œ +2. **์ถ”์ฒœ ๋‹ต๊ณผ ๊ทผ๊ฑฐ**๋ฅผ ํ•จ๊ป˜ ์ œ์‹œ ("๋‚ด ์ถ”์ฒœ: X โ€” ์ด์œ ") +3. ์‚ฌ์šฉ์ž์˜ ๋‹ต/์ด๊ฒฌ์„ ๋ฐ›์•„ ํ™•์ • +4. ๊ทธ ๊ฒฐ์ •์ด ํ•˜์œ„ ๊ฐ€์ง€๋ฅผ ๊ฐ€์ง€์น˜๊ธฐํ•˜๋ฉด(์„ ํƒ์ง€ ์ œ๊ฑฐ) ๋ฐ˜์˜ํ•˜๊ณ  ๋‹ค์Œ์œผ๋กœ + +์งˆ๋ฌธ์€ **ํ•œ ๋ฒˆ์— ํ•˜๋‚˜๋งŒ**. ๋‹ต์ด ๋‹ค์Œ ๊ฐ€์ง€์˜ ์ „์ œ๊ฐ€ ๋˜๋ฏ€๋กœ ๋ฌถ์–ด์„œ ๋ฌป์ง€ ์•Š๋Š”๋‹ค. + +### 3. ๋ชจ์ˆœยท๋นˆํ‹ˆ ์ ๊ทน ๋…ธ์ถœ +- ๋‘ ๊ฒฐ์ •์ด ์ถฉ๋Œํ•˜๋ฉด(์˜ˆ: "๋™๊ธฐ ์ฒ˜๋ฆฌ" + "10์ดˆ ํƒ€์ž„์•„์›ƒ ๊ธˆ์ง€") ์ฆ‰์‹œ ํ‘œ๋ฉดํ™”ํ•˜๊ณ  ์–ด๋А ์ชฝ์„ ์–‘๋ณดํ• ์ง€ ๋ฌป๋Š”๋‹ค. +- plan ์ด ์•”๋ฌต์ ์œผ๋กœ ๊ฐ€์ •ํ•œ ๊ฒƒ(๋ฏธ์–ธ๊ธ‰ ์ „์ œ)์„ ์ฐพ์•„ ๋ช…์‹œ์  ํ™•์ธ์„ ์š”์ฒญํ•œ๋‹ค. +- "๊ฐ€์žฅ ์œ„ํ—˜ํ•œ ์˜คํ•ด ํ›„๋ณด"๋ฅผ 1๊ฐœ ์ง€๋ชฉํ•˜๊ณ  ๊ทธ ๋ถ€๋ถ„์„ ๋จผ์ € ์นœ๋‹ค. + +## ์ข…๋ฃŒ ์กฐ๊ฑด + +- ํŠธ๋ฆฌ์˜ ๋ชจ๋“  ๊ฐ€์ง€๊ฐ€ (ํƒ์ƒ‰ ๋˜๋Š” ํ•ฉ์˜๋กœ) ํ•ด์†Œ๋จ +- ๋˜๋Š” ์‚ฌ์šฉ์ž๊ฐ€ "์ถฉ๋ถ„ํ•˜๋‹ค / ๊ทธ๋งŒ" ์„ ์–ธ + +## ์‚ฐ์ถœ๋ฌผ โ€” ํ•ฉ์˜๋œ ๊ฒฐ์ • ๋ชฉ๋ก + +``` +## ์‹ฌ๋ฌธ ๊ฒฐ๊ณผ โ€” ํ•ฉ์˜๋œ ๊ฒฐ์ • +1. <๊ฒฐ์ • ์ง€์ >: <ํ™•์ • ์„ ํƒ> โ€” <๊ทผ๊ฑฐ> +2. ... + +๋ฏธํ•ด์†Œ(๋ณด๋ฅ˜): <์žˆ์œผ๋ฉด ๋ช…์‹œ, ์—†์œผ๋ฉด "์—†์Œ"> +๋‹ค์Œ: ์ง„ํ–‰ or Plan Mode(์ฝ”๋“œ ๋ณ€๊ฒฝ ์„ค๊ณ„)๋กœ ํ•ธ๋“œ์˜คํ”„ +``` + +ํ•ด์†Œ๊ฐ€ ๋๋‚˜๋ฉด ์ฝ”๋“œ ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ Plan Mode ๋กœ, ์•„ํ‚คํ…์ฒ˜ ๊ทœ๋ชจ๋ฉด `spec:design` ์œผ๋กœ ํ•ธ๋“œ์˜คํ”„ํ•œ๋‹ค. ํ•ฉ์˜ ์ „์—๋Š” ๊ตฌํ˜„์„ ์‹œ์ž‘ํ•˜์ง€ ์•Š๋Š”๋‹ค. + +## ์˜ˆ์‹œ (ํ•œ ๊ฐ€์ง€์”ฉ, ์ถ”์ฒœ ๋‹ต ๋™๋ฐ˜) + +์‚ฌ์šฉ์ž: "์ด ์บ์‹œ ์ถ”๊ฐ€ plan ์ข€ grill ํ•ด์ค˜" + +``` +[ํƒ์ƒ‰] ๊ธฐ์กด ์ฝ”๋“œ์— cache ์ถ”์ƒํ™”๊ฐ€ ์žˆ๋Š”์ง€ ๋จผ์ € ํ™•์ธ โ†’ src/cache/ ์—†์Œ, HTTP ๋ ˆ์ด์–ด์— ์ง์ ‘ fetch. + โ†’ "ํ˜„์žฌ ์บ์‹œ ๋ ˆ์ด์–ด๊ฐ€ ์—†์–ด ์‹ ๊ทœ ๋„์ž…์ž…๋‹ˆ๋‹ค. ์‚ฌ์‹ค๋กœ ๊น”๊ณ  ๊ฐ‘๋‹ˆ๋‹ค." + +Q1 (๋ฃจํŠธ ๊ฒฐ์ •) ์บ์‹œ ์ €์žฅ์†Œ: in-memory vs Redis? + ์ถ”์ฒœ: in-memory โ€” ๋‹จ์ผ ์ธ์Šคํ„ด์Šค์ด๊ณ  plan ์— ๋ถ„์‚ฐ ์š”๊ตฌ๊ฐ€ ์—†์Œ. ๋ถ„์‚ฐ ์ „์ด๋ฉด Redis. + โ†’ (์‚ฌ์šฉ์ž: in-memory) โ†’ ํ•˜์œ„ ๊ฐ€์ง€ "Redis ์—ฐ๊ฒฐ ์„ค์ •" ๊ฐ€์ง€์น˜๊ธฐ๋จ + +Q2 ๋ฌดํšจํ™” ์ „๋žต: TTL vs ๋ช…์‹œ์  invalidate? + ์ถ”์ฒœ: TTL โ€” ๋ฐ์ดํ„ฐ ์‹ ์„ ๋„ ์š”๊ตฌ๊ฐ€ "๋ถ„ ๋‹จ์œ„ ํ—ˆ์šฉ"์ด๋ผ ๋‹จ์ˆœ TTL ๋กœ ์ถฉ๋ถ„. + โ†’ (์‚ฌ์šฉ์ž: TTL 60s ํ™•์ •) + +[๋ชจ์ˆœ ๋…ธ์ถœ] plan ์˜ "ํ•ญ์ƒ ์ตœ์‹  ์‘๋‹ต ๋ณด์žฅ" ๋ฌธ๊ตฌ์™€ TTL 60s ๊ฐ€ ์ถฉ๋Œ. + โ†’ ์–ด๋А ์ชฝ์„ ์–‘๋ณดํ• ์ง€ ํ™•์ธ ์š”์ฒญ โ†’ (์‚ฌ์šฉ์ž: 60s stale ํ—ˆ์šฉ์œผ๋กœ ๋ฌธ๊ตฌ ์ˆ˜์ •) +``` + +๊ฒฐ๊ณผ ์ถœ๋ ฅ์€ ์œ„ "ํ•ฉ์˜๋œ ๊ฒฐ์ • ๋ชฉ๋ก" ํ˜•์‹์„ ๋”ฐ๋ฅธ๋‹ค. From 9582ec210ae99150c66fb5d58f8334c2c242f5b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EC=9A=A9=EC=84=B1?= Date: Sat, 13 Jun 2026 10:45:36 +0900 Subject: [PATCH 2/7] refactor(atelier): simplify grill reference to original instruction form MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The grill-me original derives its power from a single dense instruction, not a procedure. Drop the process steps, contradiction-exposure checklist, output template, and worked example; keep the core instruction (walk the design tree, resolve dependencies one-by-one, recommended answer per question, one at a time, explore codebase instead of asking) plus minimal atelier glue (termination + handoff). ๐Ÿค– Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- plugins/atelier/skills/interview/SKILL.md | 2 +- .../skills/interview/references/grill.md | 69 ++----------------- 2 files changed, 8 insertions(+), 63 deletions(-) diff --git a/plugins/atelier/skills/interview/SKILL.md b/plugins/atelier/skills/interview/SKILL.md index 98ddcd7a..58235d96 100644 --- a/plugins/atelier/skills/interview/SKILL.md +++ b/plugins/atelier/skills/interview/SKILL.md @@ -81,7 +81,7 @@ A(cceptance) โ€” "์™„๋ฃŒ" ํŒ์ • ๊ธฐ์ค€? | reference | ์–ธ์ œ ๋กœ๋“œ | ๋‚ด์šฉ | |---|---|---| -| `references/grill.md` | ๊ธฐ์กด plan/design ์„ ์‹ฌ๋ฌธ(`grill`)ํ•  ๋•Œ | ๊ฒฐ์ • ํŠธ๋ฆฌ ์ˆœํšŒ, ์˜์กด์„ฑ ํ•ด์†Œ ์ˆœ์„œ, ์ข…๋ฃŒ ์กฐ๊ฑด, ํ•ฉ์˜ ๊ฒฐ์ • ์ถœ๋ ฅ | +| `references/grill.md` | ๊ธฐ์กด plan/design ์„ ์‹ฌ๋ฌธ(`grill`)ํ•  ๋•Œ | ์‹ฌ๋ฌธ ์ง€์‹œ๋ฌธ(์„ค๊ณ„ ํŠธ๋ฆฌ ๊ฐ€์ง€๋ณ„ ํ•ด์†Œยท์ถ”์ฒœ ๋‹ตยทํ•œ ๋ฒˆ์— ํ•˜๋‚˜ยท์ฝ”๋“œ ํƒ์ƒ‰ ์šฐ์„ ) + ์ข…๋ฃŒ/ํ•ธ๋“œ์˜คํ”„ | | `references/brainstorm.md` | ๋ฌด์—์„œ ์„ค๊ณ„(`brainstorm`)ํ•  ๋•Œ | ์ปจํ…์ŠคํŠธ ํƒ์ƒ‰ โ†’ ๋ช…ํ™•ํ™” ์งˆ๋ฌธ โ†’ 2โ€“3 ์ ‘๊ทผ๋ฒ• โ†’ ์„น์…˜๋ณ„ ์„ค๊ณ„ ๊ฒ€์ฆ(+์‹œ๊ฐํ™” ์ œ์•ˆ) โ†’ self-review โ†’ ์Šน์ธ ๊ฒŒ์ดํŠธ โ†’ ํ•ธ๋“œ์˜คํ”„ | ## ์ถœ์ฒ˜ diff --git a/plugins/atelier/skills/interview/references/grill.md b/plugins/atelier/skills/interview/references/grill.md index aef40ba0..9ab722e3 100644 --- a/plugins/atelier/skills/interview/references/grill.md +++ b/plugins/atelier/skills/interview/references/grill.md @@ -1,70 +1,15 @@ # interview โ€” grill ๋ชจ๋“œ -์ด๋ฏธ ์กด์žฌํ•˜๋Š” plan/design ์„ **์ง‘์š”ํ•˜๊ฒŒ ์‹ฌ๋ฌธ**ํ•ด ๊ณต์œ ๋œ ์ดํ•ด์— ๋„๋‹ฌํ•  ๋•Œ๊นŒ์ง€ ๊ฒฐ์ • ํŠธ๋ฆฌ์˜ ๋ชจ๋“  ๊ฐ€์ง€๋ฅผ ํ•ด์†Œํ•œ๋‹ค. `interview` SKILL.md ์˜ ๊ณตํ†ต ์›์น™(ํ•œ ๋ฒˆ์— ํ•˜๋‚˜, ์ถ”์ฒœ ๋‹ต ๋™๋ฐ˜, ์ฝ”๋“œ๋ฒ ์ด์Šค ์šฐ์„  ํƒ์ƒ‰, ์Šน์ธ ์ „ ๊ตฌํ˜„ ๊ธˆ์ง€)์„ ๊ทธ๋Œ€๋กœ ๋”ฐ๋ฅธ๋‹ค. +๊ธฐ์กด plan/design ์„ ์ง‘์š”ํ•˜๊ฒŒ ์‹ฌ๋ฌธํ•ด ๊ณต์œ ๋œ ์ดํ•ด์— ๋„๋‹ฌํ•œ๋‹ค. -## ์–ธ์ œ ์“ฐ๋‚˜ +## ์ง€์‹œ -- ์‚ฌ์šฉ์ž๊ฐ€ "grill me", "์ด ๊ณ„ํš ์‹ฌ๋ฌธํ•ด์ค˜", "๋‚ด ์„ค๊ณ„ ์ŠคํŠธ๋ ˆ์Šค ํ…Œ์ŠคํŠธํ•ด์ค˜" ๋ผ๊ณ  ์š”์ฒญ -- ์ด๋ฏธ ์ž‘์„ฑ๋œ plan / ์„ค๊ณ„ ๋ฌธ์„œ / ์ ‘๊ทผ์•ˆ์ด ์žˆ๊ณ , ๋นˆํ‹ˆยท์•”๋ฌต์  ๊ฐ€์ •ยท๊ฒฐ์ • ๊ฐ„ ์ถฉ๋Œ์„ ๋“œ๋Ÿฌ๋‚ด๊ณ  ์‹ถ์„ ๋•Œ +์ด ๊ณ„ํš์˜ ๋ชจ๋“  ์ธก๋ฉด์— ๋Œ€ํ•ด **๊ณต์œ ๋œ ์ดํ•ด์— ๋„๋‹ฌํ•  ๋•Œ๊นŒ์ง€ ์ง‘์š”ํ•˜๊ฒŒ ์ธํ„ฐ๋ทฐํ•˜๋ผ**. ์„ค๊ณ„ ํŠธ๋ฆฌ์˜ ๊ฐ ๊ฐ€์ง€๋ฅผ ๋‚ด๋ ค๊ฐ€๋ฉฐ, ๊ฒฐ์ • ์‚ฌ์ด์˜ ์˜์กด์„ฑ์„ ํ•˜๋‚˜์”ฉ ํ•ด์†Œํ•˜๋ผ. ๊ฐ ์งˆ๋ฌธ๋งˆ๋‹ค ์ถ”์ฒœ ๋‹ต์„ ํ•จ๊ป˜ ์ œ์‹œํ•˜๋ผ. -## ํ”„๋กœ์„ธ์Šค +์งˆ๋ฌธ์€ ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์”ฉ๋งŒ ํ•˜๋ผ. -### 1. ๊ฒฐ์ • ํŠธ๋ฆฌ ์ถ”์ถœ -๋Œ€์ƒ plan/design ์„ ์ฝ๊ณ , ๋‚ด๋ ค์•ผ ํ•  **๊ฒฐ์ •(decision)** ๋“ค์„ ํŠธ๋ฆฌ๋กœ ๋ถ„ํ•ดํ•œ๋‹ค. -- ๊ฐ ๋…ธ๋“œ = ํ•˜๋‚˜์˜ ๊ฒฐ์ • (์˜ˆ: "์ €์žฅ์†Œ๋ฅผ Redis ๋กœ ํ• ๊นŒ in-memory ๋กœ ํ• ๊นŒ") -- ์—ฃ์ง€ = ๊ฒฐ์ • ๊ฐ„ ์˜์กด์„ฑ (์ƒ์œ„ ๊ฒฐ์ •์ด ํ•˜์œ„ ์„ ํƒ์ง€๋ฅผ ์ œ์•ฝ) -- ์ฝ”๋“œ๋ฒ ์ด์Šค๋กœ ๋‹ต์ด ์ •ํ•ด์ง€๋Š” ๋…ธ๋“œ(๊ธฐ์กด ์ปจ๋ฒค์…˜ยทprior artยท์ œ์•ฝ)๋Š” **์งˆ๋ฌธํ•˜์ง€ ๋ง๊ณ  ํƒ์ƒ‰ํ•ด ํ™•์ •**ํ•˜๊ณ  ๊ทธ ์‚ฌ์‹ค์„ ๋ช…์‹œํ•œ๋‹ค. +์งˆ๋ฌธ์ด ์ฝ”๋“œ๋ฒ ์ด์Šค ํƒ์ƒ‰์œผ๋กœ ๋‹ตํ•ด์งˆ ์ˆ˜ ์žˆ๋‹ค๋ฉด, ๋ฌป์ง€ ๋ง๊ณ  ์ฝ”๋“œ๋ฒ ์ด์Šค๋ฅผ ํƒ์ƒ‰ํ•˜๋ผ. -### 2. ๊ฐ€์ง€๋ณ„ ์ˆœํšŒ โ€” ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์”ฉ -์˜์กด์„ฑ ์œ„์ƒ ์ˆœ์„œ๋กœ ๋ฃจํŠธโ†’๋ฆฌํ”„๋ฅผ ๋‚ด๋ ค๊ฐ€๋ฉฐ, ๋ฏธํ•ด์†Œ ๊ฒฐ์ •๋งˆ๋‹ค: -1. ๊ฒฐ์ • ์ง€์ ๊ณผ ์„ ํƒ์ง€๋ฅผ 1โ€“2์ค„๋กœ ์ œ์‹œ -2. **์ถ”์ฒœ ๋‹ต๊ณผ ๊ทผ๊ฑฐ**๋ฅผ ํ•จ๊ป˜ ์ œ์‹œ ("๋‚ด ์ถ”์ฒœ: X โ€” ์ด์œ ") -3. ์‚ฌ์šฉ์ž์˜ ๋‹ต/์ด๊ฒฌ์„ ๋ฐ›์•„ ํ™•์ • -4. ๊ทธ ๊ฒฐ์ •์ด ํ•˜์œ„ ๊ฐ€์ง€๋ฅผ ๊ฐ€์ง€์น˜๊ธฐํ•˜๋ฉด(์„ ํƒ์ง€ ์ œ๊ฑฐ) ๋ฐ˜์˜ํ•˜๊ณ  ๋‹ค์Œ์œผ๋กœ +## ์ข…๋ฃŒ์™€ ํ•ธ๋“œ์˜คํ”„ -์งˆ๋ฌธ์€ **ํ•œ ๋ฒˆ์— ํ•˜๋‚˜๋งŒ**. ๋‹ต์ด ๋‹ค์Œ ๊ฐ€์ง€์˜ ์ „์ œ๊ฐ€ ๋˜๋ฏ€๋กœ ๋ฌถ์–ด์„œ ๋ฌป์ง€ ์•Š๋Š”๋‹ค. - -### 3. ๋ชจ์ˆœยท๋นˆํ‹ˆ ์ ๊ทน ๋…ธ์ถœ -- ๋‘ ๊ฒฐ์ •์ด ์ถฉ๋Œํ•˜๋ฉด(์˜ˆ: "๋™๊ธฐ ์ฒ˜๋ฆฌ" + "10์ดˆ ํƒ€์ž„์•„์›ƒ ๊ธˆ์ง€") ์ฆ‰์‹œ ํ‘œ๋ฉดํ™”ํ•˜๊ณ  ์–ด๋А ์ชฝ์„ ์–‘๋ณดํ• ์ง€ ๋ฌป๋Š”๋‹ค. -- plan ์ด ์•”๋ฌต์ ์œผ๋กœ ๊ฐ€์ •ํ•œ ๊ฒƒ(๋ฏธ์–ธ๊ธ‰ ์ „์ œ)์„ ์ฐพ์•„ ๋ช…์‹œ์  ํ™•์ธ์„ ์š”์ฒญํ•œ๋‹ค. -- "๊ฐ€์žฅ ์œ„ํ—˜ํ•œ ์˜คํ•ด ํ›„๋ณด"๋ฅผ 1๊ฐœ ์ง€๋ชฉํ•˜๊ณ  ๊ทธ ๋ถ€๋ถ„์„ ๋จผ์ € ์นœ๋‹ค. - -## ์ข…๋ฃŒ ์กฐ๊ฑด - -- ํŠธ๋ฆฌ์˜ ๋ชจ๋“  ๊ฐ€์ง€๊ฐ€ (ํƒ์ƒ‰ ๋˜๋Š” ํ•ฉ์˜๋กœ) ํ•ด์†Œ๋จ -- ๋˜๋Š” ์‚ฌ์šฉ์ž๊ฐ€ "์ถฉ๋ถ„ํ•˜๋‹ค / ๊ทธ๋งŒ" ์„ ์–ธ - -## ์‚ฐ์ถœ๋ฌผ โ€” ํ•ฉ์˜๋œ ๊ฒฐ์ • ๋ชฉ๋ก - -``` -## ์‹ฌ๋ฌธ ๊ฒฐ๊ณผ โ€” ํ•ฉ์˜๋œ ๊ฒฐ์ • -1. <๊ฒฐ์ • ์ง€์ >: <ํ™•์ • ์„ ํƒ> โ€” <๊ทผ๊ฑฐ> -2. ... - -๋ฏธํ•ด์†Œ(๋ณด๋ฅ˜): <์žˆ์œผ๋ฉด ๋ช…์‹œ, ์—†์œผ๋ฉด "์—†์Œ"> -๋‹ค์Œ: ์ง„ํ–‰ or Plan Mode(์ฝ”๋“œ ๋ณ€๊ฒฝ ์„ค๊ณ„)๋กœ ํ•ธ๋“œ์˜คํ”„ -``` - -ํ•ด์†Œ๊ฐ€ ๋๋‚˜๋ฉด ์ฝ”๋“œ ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ Plan Mode ๋กœ, ์•„ํ‚คํ…์ฒ˜ ๊ทœ๋ชจ๋ฉด `spec:design` ์œผ๋กœ ํ•ธ๋“œ์˜คํ”„ํ•œ๋‹ค. ํ•ฉ์˜ ์ „์—๋Š” ๊ตฌํ˜„์„ ์‹œ์ž‘ํ•˜์ง€ ์•Š๋Š”๋‹ค. - -## ์˜ˆ์‹œ (ํ•œ ๊ฐ€์ง€์”ฉ, ์ถ”์ฒœ ๋‹ต ๋™๋ฐ˜) - -์‚ฌ์šฉ์ž: "์ด ์บ์‹œ ์ถ”๊ฐ€ plan ์ข€ grill ํ•ด์ค˜" - -``` -[ํƒ์ƒ‰] ๊ธฐ์กด ์ฝ”๋“œ์— cache ์ถ”์ƒํ™”๊ฐ€ ์žˆ๋Š”์ง€ ๋จผ์ € ํ™•์ธ โ†’ src/cache/ ์—†์Œ, HTTP ๋ ˆ์ด์–ด์— ์ง์ ‘ fetch. - โ†’ "ํ˜„์žฌ ์บ์‹œ ๋ ˆ์ด์–ด๊ฐ€ ์—†์–ด ์‹ ๊ทœ ๋„์ž…์ž…๋‹ˆ๋‹ค. ์‚ฌ์‹ค๋กœ ๊น”๊ณ  ๊ฐ‘๋‹ˆ๋‹ค." - -Q1 (๋ฃจํŠธ ๊ฒฐ์ •) ์บ์‹œ ์ €์žฅ์†Œ: in-memory vs Redis? - ์ถ”์ฒœ: in-memory โ€” ๋‹จ์ผ ์ธ์Šคํ„ด์Šค์ด๊ณ  plan ์— ๋ถ„์‚ฐ ์š”๊ตฌ๊ฐ€ ์—†์Œ. ๋ถ„์‚ฐ ์ „์ด๋ฉด Redis. - โ†’ (์‚ฌ์šฉ์ž: in-memory) โ†’ ํ•˜์œ„ ๊ฐ€์ง€ "Redis ์—ฐ๊ฒฐ ์„ค์ •" ๊ฐ€์ง€์น˜๊ธฐ๋จ - -Q2 ๋ฌดํšจํ™” ์ „๋žต: TTL vs ๋ช…์‹œ์  invalidate? - ์ถ”์ฒœ: TTL โ€” ๋ฐ์ดํ„ฐ ์‹ ์„ ๋„ ์š”๊ตฌ๊ฐ€ "๋ถ„ ๋‹จ์œ„ ํ—ˆ์šฉ"์ด๋ผ ๋‹จ์ˆœ TTL ๋กœ ์ถฉ๋ถ„. - โ†’ (์‚ฌ์šฉ์ž: TTL 60s ํ™•์ •) - -[๋ชจ์ˆœ ๋…ธ์ถœ] plan ์˜ "ํ•ญ์ƒ ์ตœ์‹  ์‘๋‹ต ๋ณด์žฅ" ๋ฌธ๊ตฌ์™€ TTL 60s ๊ฐ€ ์ถฉ๋Œ. - โ†’ ์–ด๋А ์ชฝ์„ ์–‘๋ณดํ• ์ง€ ํ™•์ธ ์š”์ฒญ โ†’ (์‚ฌ์šฉ์ž: 60s stale ํ—ˆ์šฉ์œผ๋กœ ๋ฌธ๊ตฌ ์ˆ˜์ •) -``` - -๊ฒฐ๊ณผ ์ถœ๋ ฅ์€ ์œ„ "ํ•ฉ์˜๋œ ๊ฒฐ์ • ๋ชฉ๋ก" ํ˜•์‹์„ ๋”ฐ๋ฅธ๋‹ค. +๋ชจ๋“  ๊ฐ€์ง€๊ฐ€ ํ•ด์†Œ๋˜๋ฉด(๋˜๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ถฉ๋ถ„ํ•˜๋‹ค๊ณ  ํ•˜๋ฉด) ํ•ฉ์˜๋œ ๊ฒฐ์ • ๋ชฉ๋ก์„ ์š”์•ฝํ•œ๋‹ค. ์ฝ”๋“œ ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•˜๋ฉด Plan Mode ๋กœ, ์•„ํ‚คํ…์ฒ˜ ๊ทœ๋ชจ๋ฉด `spec:design` ์œผ๋กœ ํ•ธ๋“œ์˜คํ”„ํ•œ๋‹ค. ํ•ฉ์˜ ์ „์—๋Š” ๊ตฌํ˜„์„ ์‹œ์ž‘ํ•˜์ง€ ์•Š๋Š”๋‹ค. From ccc3040ddcfc49bb30c0b6d2062a20bcf023b29d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EC=9A=A9=EC=84=B1?= Date: Sat, 13 Jun 2026 10:56:24 +0900 Subject: [PATCH 3/7] refactor(atelier): port brainstorm reference faithfully from superpowers original MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The previous thematic rewrite lost substantial original content: scope assessment/decomposition for multi-subsystem requests, the 'too simple to need a design' anti-pattern rationale, task-driven checklist discipline, the process-flow digraph with revise loops, multiple-choice preference, design-for-isolation boundary tests, and existing-codebase rules (targeted improvement, no unrelated refactoring). Replace it with a faithful Korean port preserving the original's full structure. Only four ecosystem bindings are substituted: - writing-plans -> Plan Mode handoff - browser visual companion -> AskUserQuestion(+preview) / markdown / ASCII / mermaid - checklist -> TaskCreate - docs/superpowers/specs/ -> project spec convention, with related_paths frontmatter so the atelier spec skill can consume the design doc (gap analysis / review) Restores the design-doc -> self-review -> user review gate steps (3 of 9 checklist items) dropped earlier; the spec-SRP objection was overzealous since spec owns analysis workflows, not document authorship. MIT attribution header added (close port = substantial portion). SKILL.md boundary table, references guide, and attribution section updated to match. ๐Ÿค– Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- plugins/atelier/skills/interview/SKILL.md | 6 +- .../skills/interview/references/brainstorm.md | 200 +++++++++++------- 2 files changed, 129 insertions(+), 77 deletions(-) diff --git a/plugins/atelier/skills/interview/SKILL.md b/plugins/atelier/skills/interview/SKILL.md index 58235d96..e386e237 100644 --- a/plugins/atelier/skills/interview/SKILL.md +++ b/plugins/atelier/skills/interview/SKILL.md @@ -73,7 +73,7 @@ A(cceptance) โ€” "์™„๋ฃŒ" ํŒ์ • ๊ธฐ์ค€? | ๋Œ€์ƒ | interview ์™€์˜ ์ฐจ์ด | ํ•ธ๋“œ์˜คํ”„ | |---|---|---| -| `spec:design` | ๋ถ„๊ธฐ๋Š” **์ƒํƒœ ๊ธฐ์ค€**: ์˜๋„ยท์š”๊ตฌ์‚ฌํ•ญ์ด ์•„์ง ๋ชจํ˜ธํ•˜๋ฉด interview, ์˜๋„๋Š” ํ•ฉ์˜๋๊ณ  ์•„ํ‚คํ…์ฒ˜ ๊ตฌ์กฐ(๋‹ค์ค‘ ์ปดํฌ๋„ŒํŠธ)๋ฅผ ์ŠคํŽ™ ๋ฌธ์„œ๋กœ ์žก๋Š” ๋‹จ๊ณ„๋ฉด spec:design. interview ์˜ ์‚ฐ์ถœ์€ ๋Œ€ํ™” ๋‚ด ํ•ฉ์˜(๋ฏธ๋‹ˆ ๋ช…์„ธยท์„ค๊ณ„ ์š”์•ฝ), spec:design ์˜ ์‚ฐ์ถœ์€ ์ŠคํŽ™ ๋ฌธ์„œ | brainstorm ์ค‘ ์•„ํ‚คํ…์ฒ˜ ๊ทœ๋ชจ๋กœ ํŒ๋ช…๋˜๊ฑฐ๋‚˜ ์„ค๊ณ„์˜ ๋ฌธ์„œ ์˜์†ํ™”๊ฐ€ ํ•„์š”ํ•˜๋ฉด `spec:design` ์œผ๋กœ ์—์Šค์ปฌ๋ ˆ์ดํŠธ. ์—ญ๋ฐฉํ–ฅ: spec:design ์ง„์ž… ์‹œ ์˜๋„๊ฐ€ ์•„์ง ๋ชจํ˜ธํ•˜๋ฉด interview ๋ฅผ ๋จผ์ € ๊ถŒํ•œ๋‹ค | +| `spec:design` | ๋ถ„๊ธฐ๋Š” **์ƒํƒœ ๊ธฐ์ค€**: ์˜๋„ยท์š”๊ตฌ์‚ฌํ•ญ์ด ์•„์ง ๋ชจํ˜ธํ•˜๋ฉด interview, ์˜๋„๋Š” ํ•ฉ์˜๋๊ณ  ์•„ํ‚คํ…์ฒ˜ ๊ตฌ์กฐ(๋‹ค์ค‘ ์ปดํฌ๋„ŒํŠธ)๋ฅผ ์žก๋Š” ๋‹จ๊ณ„๋ฉด spec:design. brainstorm ๋„ ์„ค๊ณ„ ๋ฌธ์„œ๋ฅผ ์‚ฐ์ถœํ•˜์ง€๋งŒ **๋‹จ์ผ ์ž‘์—… ๋ฒ”์œ„**์ด๋ฉฐ `related_paths` frontmatter ๋กœ spec ์Šคํ‚ฌ์ด ์†Œ๋น„ ๊ฐ€๋Šฅํ•œ ํ˜•์‹์œผ๋กœ ์“ด๋‹ค | brainstorm ์ค‘ ์•„ํ‚คํ…์ฒ˜/๋‹ค์ค‘ ์ปดํฌ๋„ŒํŠธ ๊ทœ๋ชจ๋กœ ํŒ๋ช…๋˜๋ฉด `spec:design` ์œผ๋กœ ์—์Šค์ปฌ๋ ˆ์ดํŠธ. ์—ญ๋ฐฉํ–ฅ: spec:design ์ง„์ž… ์‹œ ์˜๋„๊ฐ€ ์•„์ง ๋ชจํ˜ธํ•˜๋ฉด interview ๋ฅผ ๋จผ์ € ๊ถŒํ•œ๋‹ค | | Plan Mode | interview ๋Š” *๋ฌด์—‡์„/์™œ*(์˜๋„). Plan Mode ๋Š” *์–ด๋–ป๊ฒŒ*(์ฝ”๋“œ ๋ณ€๊ฒฝ ๋‹จ๊ณ„ ์„ค๊ณ„) | quick/brainstorm ์œผ๋กœ ์˜๋„๊ฐ€ ํ™•์ •๋˜๊ณ  ์ฝ”๋“œ ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•˜๋ฉด Plan Mode ๋กœ ๋„˜๊ธด๋‹ค | | `autopilot` | ์ž์œจ ๋ฃจํ”„์™€ ๋ฌด๊ด€. interview ๋Š” ์‚ฌ๋žŒโ†”์—์ด์ „ํŠธ ๋Œ€ํ™” ์ „์šฉ | ํ•ด๋‹น ์—†์Œ | @@ -82,8 +82,8 @@ A(cceptance) โ€” "์™„๋ฃŒ" ํŒ์ • ๊ธฐ์ค€? | reference | ์–ธ์ œ ๋กœ๋“œ | ๋‚ด์šฉ | |---|---|---| | `references/grill.md` | ๊ธฐ์กด plan/design ์„ ์‹ฌ๋ฌธ(`grill`)ํ•  ๋•Œ | ์‹ฌ๋ฌธ ์ง€์‹œ๋ฌธ(์„ค๊ณ„ ํŠธ๋ฆฌ ๊ฐ€์ง€๋ณ„ ํ•ด์†Œยท์ถ”์ฒœ ๋‹ตยทํ•œ ๋ฒˆ์— ํ•˜๋‚˜ยท์ฝ”๋“œ ํƒ์ƒ‰ ์šฐ์„ ) + ์ข…๋ฃŒ/ํ•ธ๋“œ์˜คํ”„ | -| `references/brainstorm.md` | ๋ฌด์—์„œ ์„ค๊ณ„(`brainstorm`)ํ•  ๋•Œ | ์ปจํ…์ŠคํŠธ ํƒ์ƒ‰ โ†’ ๋ช…ํ™•ํ™” ์งˆ๋ฌธ โ†’ 2โ€“3 ์ ‘๊ทผ๋ฒ• โ†’ ์„น์…˜๋ณ„ ์„ค๊ณ„ ๊ฒ€์ฆ(+์‹œ๊ฐํ™” ์ œ์•ˆ) โ†’ self-review โ†’ ์Šน์ธ ๊ฒŒ์ดํŠธ โ†’ ํ•ธ๋“œ์˜คํ”„ | +| `references/brainstorm.md` | ๋ฌด์—์„œ ์„ค๊ณ„(`brainstorm`)ํ•  ๋•Œ | ์ถฉ์‹ค ํฌํŒ…๋œ ์ „์ฒด ํ”Œ๋กœ์šฐ: HARD-GATEยท"๋‹จ์ˆœํ•จ" ์•ˆํ‹ฐํŒจํ„ดยทtask ์ฒดํฌ๋ฆฌ์ŠคํŠธยท์Šค์ฝ”ํ”„ ๋ถ„ํ•ด ํŒ์ • โ†’ ๋ช…ํ™•ํ™”(๊ฐ๊ด€์‹ ์„ ํ˜ธ) โ†’ 2โ€“3 ์ ‘๊ทผ๋ฒ• โ†’ ์„น์…˜๋ณ„ ์„ค๊ณ„(๊ฒฉ๋ฆฌ ์„ค๊ณ„ยท๊ธฐ์กด ์ฝ”๋“œ ๊ทœ์œจ) โ†’ ์„ค๊ณ„ ๋ฌธ์„œ(related_paths)ยทself-reviewยท์‚ฌ์šฉ์ž ๋ฆฌ๋ทฐ ๊ฒŒ์ดํŠธ โ†’ Plan Mode ์ „ํ™˜ยท์‹œ๊ฐ ์ž๋ฃŒ | ## ์ถœ์ฒ˜ -`grill`/`brainstorm` ๋ชจ๋“œ์˜ ์ธํ„ฐ๋ทฐยท์„ค๊ณ„ ๊ฒŒ์ดํŠธ ๊ฐœ๋…์€ [obra/superpowers](https://github.com/obra/superpowers) (MIT License, ยฉ 2025 Jesse Vincent) ์˜ `brainstorming`ยท`grill-me` ์Šคํ‚ฌ์—์„œ ์ฐจ์šฉํ•ด atelier ์ปจ๋ฒค์…˜ยท์ฑ…์ž„ ๊ฒฝ๊ณ„์— ๋งž๊ฒŒ ์žฌ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. +`grill`/`brainstorm` ๋ชจ๋“œ๋Š” [obra/superpowers](https://github.com/obra/superpowers) (MIT License, ยฉ 2025 Jesse Vincent) ์˜ `grill-me`ยท`brainstorming` ์Šคํ‚ฌ์ด ์›๋ณธ์ž…๋‹ˆ๋‹ค. grill ์€ ์›๋ณธ ์ง€์‹œ๋ฌธ์„ ๋ณด์กดํ–ˆ๊ณ , brainstorm ์€ ์ƒํƒœ๊ณ„ ๋ฐ”์ธ๋”ฉ 4๊ณณ(writing-plansโ†’Plan Mode, browser visual companionโ†’AskUserQuestionยทmarkdown ๋‹ค์ด์–ด๊ทธ๋žจ, ์ฒดํฌ๋ฆฌ์ŠคํŠธโ†’TaskCreate, ๋ฌธ์„œ ์œ„์น˜โ†’ํ”„๋กœ์ ํŠธ spec ์ปจ๋ฒค์…˜)๋งŒ ์น˜ํ™˜ํ•œ ์ถฉ์‹ค ํฌํŒ…์ž…๋‹ˆ๋‹ค. MIT ๊ณ ์ง€๋Š” `references/brainstorm.md` ๋จธ๋ฆฌ์— ๋ช…์‹œ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. diff --git a/plugins/atelier/skills/interview/references/brainstorm.md b/plugins/atelier/skills/interview/references/brainstorm.md index 1504a51b..3f0c8879 100644 --- a/plugins/atelier/skills/interview/references/brainstorm.md +++ b/plugins/atelier/skills/interview/references/brainstorm.md @@ -1,102 +1,154 @@ # interview โ€” brainstorm ๋ชจ๋“œ -๋ง‰์—ฐํ•œ ์•„์ด๋””์–ด๋ฅผ **๊ฒ€์ฆ๋œ ์„ค๊ณ„**๋กœ ํ•จ๊ป˜ ๋ฐœ์ „์‹œํ‚จ๋‹ค. ์ปจํ…์ŠคํŠธ ํƒ์ƒ‰์—์„œ ์ถœ๋ฐœํ•ด ์ ‘๊ทผ๋ฒ•์„ ๋น„๊ตํ•˜๊ณ , ์„ค๊ณ„๋ฅผ ์„น์…˜ ๋‹จ์œ„๋กœ ๊ฒ€์ฆ๋ฐ›๊ณ , self-review ์™€ ์Šน์ธ ๊ฒŒ์ดํŠธ๋ฅผ ๊ฑฐ์ณ ๊ตฌํ˜„ ๋‹จ๊ณ„๋กœ ๋„˜๊ธด๋‹ค. `interview` SKILL.md ์˜ ๊ณตํ†ต ์›์น™(ํ•œ ๋ฒˆ์— ํ•˜๋‚˜, ์ถ”์ฒœ ๋‹ต ๋™๋ฐ˜, ์ฝ”๋“œ๋ฒ ์ด์Šค ์šฐ์„  ํƒ์ƒ‰, ์Šน์ธ ์ „ ๊ตฌํ˜„ ๊ธˆ์ง€)์„ ๊ทธ๋Œ€๋กœ ๋”ฐ๋ฅธ๋‹ค. - -## ์–ธ์ œ ์“ฐ๋‚˜ +> Adapted from [obra/superpowers](https://github.com/obra/superpowers) `brainstorming` skill โ€” MIT License, ยฉ 2025 Jesse Vincent. +> ์ƒํƒœ๊ณ„ ๋ฐ”์ธ๋”ฉ 4๊ณณ๋งŒ atelier ๋กœ ์น˜ํ™˜: writing-plans โ†’ Plan Mode / browser visual companion โ†’ AskUserQuestionยทmarkdown ๋‹ค์ด์–ด๊ทธ๋žจ / ์ฒดํฌ๋ฆฌ์ŠคํŠธ โ†’ TaskCreate / ๋ฌธ์„œ ์œ„์น˜ โ†’ ํ”„๋กœ์ ํŠธ spec ์ปจ๋ฒค์…˜. + +์•„์ด๋””์–ด๋ฅผ ์ž์—ฐ์Šค๋Ÿฌ์šด ํ˜‘์—… ๋Œ€ํ™”๋ฅผ ํ†ตํ•ด ์™„์ „ํ•œ ์„ค๊ณ„์™€ ์ŠคํŽ™์œผ๋กœ ๋ฐœ์ „์‹œํ‚จ๋‹ค. ํ˜„์žฌ ํ”„๋กœ์ ํŠธ ์ปจํ…์ŠคํŠธ๋ฅผ ์ดํ•ดํ•˜๋Š” ๋ฐ์„œ ์ถœ๋ฐœํ•ด, ์งˆ๋ฌธ์„ ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์”ฉ ๋˜์ ธ ์•„์ด๋””์–ด๋ฅผ ๋‹ค๋“ฌ๋Š”๋‹ค. ๋ฌด์—‡์„ ๋งŒ๋“œ๋Š”์ง€ ์ดํ•ด๋˜๋ฉด ์„ค๊ณ„๋ฅผ ์ œ์‹œํ•˜๊ณ  ์‚ฌ์šฉ์ž ์Šน์ธ์„ ๋ฐ›๋Š”๋‹ค. + + +์„ค๊ณ„๋ฅผ ์ œ์‹œํ•˜๊ณ  ์‚ฌ์šฉ์ž๊ฐ€ ์Šน์ธํ•˜๊ธฐ ์ „๊นŒ์ง€๋Š” ์–ด๋–ค ๊ตฌํ˜„ ์Šคํ‚ฌ๋„ ํ˜ธ์ถœํ•˜์ง€ ๋ง๊ณ , ์ฝ”๋“œ๋ฅผ ์“ฐ์ง€ ๋ง๊ณ , ํ”„๋กœ์ ํŠธ๋ฅผ ์Šค์บํด๋”ฉํ•˜์ง€ ๋ง๊ณ , ์–ด๋–ค ๊ตฌํ˜„ ํ–‰๋™๋„ ํ•˜์ง€ ๋งˆ๋ผ. ์ฒด๊ฐ ๋‚œ์ด๋„์™€ ๋ฌด๊ด€ํ•˜๊ฒŒ ๋ชจ๋“  ํ”„๋กœ์ ํŠธ์— ์ ์šฉ๋œ๋‹ค. + + +## ์•ˆํ‹ฐํŒจํ„ด: "์ด๊ฑด ๋„ˆ๋ฌด ๋‹จ์ˆœํ•ด์„œ ์„ค๊ณ„๊ฐ€ ํ•„์š” ์—†๋‹ค" + +๋ชจ๋“  ํ”„๋กœ์ ํŠธ๊ฐ€ ์ด ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฑฐ์นœ๋‹ค. todo ๋ฆฌ์ŠคํŠธ, ํ•จ์ˆ˜ ํ•˜๋‚˜์งœ๋ฆฌ ์œ ํ‹ธ, ์„ค์ • ๋ณ€๊ฒฝ โ€” ์ „๋ถ€ ๋‹ค. **"๋‹จ์ˆœํ•œ" ํ”„๋กœ์ ํŠธ์•ผ๋ง๋กœ ๋ฏธ๊ฒ€์ฆ ๊ฐ€์ •์ด ๊ฐ€์žฅ ํฐ ๋‚ญ๋น„๋ฅผ ๋งŒ๋“œ๋Š” ๊ณณ์ด๋‹ค.** ์„ค๊ณ„๋Š” ์งง์•„๋„ ๋œ๋‹ค(์ •๋ง ๋‹จ์ˆœํ•˜๋ฉด ๋ช‡ ๋ฌธ์žฅ์ด๋ฉด ์ถฉ๋ถ„ํ•˜๋‹ค). ํ•˜์ง€๋งŒ ๋ฐ˜๋“œ์‹œ ์ œ์‹œํ•˜๊ณ  ์Šน์ธ์„ ๋ฐ›์•„์•ผ ํ•œ๋‹ค. + +## ์ฒดํฌ๋ฆฌ์ŠคํŠธ + +์•„๋ž˜ ๊ฐ ํ•ญ๋ชฉ์„ **TaskCreate ๋กœ task ๋กœ ๋งŒ๋“ค๊ณ  ์ˆœ์„œ๋Œ€๋กœ ์™„๋ฃŒ**ํ•œ๋‹ค: + +1. **ํ”„๋กœ์ ํŠธ ์ปจํ…์ŠคํŠธ ํƒ์ƒ‰** โ€” ํŒŒ์ผ, ๋ฌธ์„œ, ์ตœ๊ทผ ์ปค๋ฐ‹ ํ™•์ธ +2. **์‹œ๊ฐ ์ž๋ฃŒ ์ œ์•ˆ** (์‹œ๊ฐ ์งˆ๋ฌธ์ด ์˜ˆ์ƒ๋  ๋•Œ) โ€” ๋‹ค๋ฅธ ๋‚ด์šฉ๊ณผ ๊ฒฐํ•ฉํ•˜์ง€ ์•Š์€ ๋ณ„๋„ ๋ฉ”์‹œ์ง€๋กœ. ์•„๋ž˜ "์‹œ๊ฐ ์ž๋ฃŒ" ์„น์…˜ ์ฐธ์กฐ +3. **๋ช…ํ™•ํ™” ์งˆ๋ฌธ** โ€” ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์”ฉ, ๋ชฉ์ /์ œ์•ฝ/์„ฑ๊ณต ๊ธฐ์ค€ ์ดํ•ด +4. **2โ€“3๊ฐœ ์ ‘๊ทผ๋ฒ• ์ œ์•ˆ** โ€” trade-off ์™€ ์ถ”์ฒœ์•ˆ ํฌํ•จ +5. **์„ค๊ณ„ ์ œ์‹œ** โ€” ๋ณต์žก๋„์— ๋น„๋ก€ํ•œ ์„น์…˜ ๋‹จ์œ„, ์„น์…˜๋งˆ๋‹ค ์‚ฌ์šฉ์ž ๊ฒ€์ฆ +6. **์„ค๊ณ„ ๋ฌธ์„œ ์ž‘์„ฑ** โ€” ํ”„๋กœ์ ํŠธ spec ์ปจ๋ฒค์…˜ ์œ„์น˜์— ์ €์žฅํ•˜๊ณ  ์ปค๋ฐ‹ +7. **์ŠคํŽ™ self-review** โ€” placeholderยท๋ชจ์ˆœยท๋ชจํ˜ธํ•จยท์Šค์ฝ”ํ”„ ์ธ๋ผ์ธ ์ ๊ฒ€ +8. **์‚ฌ์šฉ์ž์˜ ์ŠคํŽ™ ๋ฆฌ๋ทฐ** โ€” ์ž‘์„ฑ๋œ ๋ฌธ์„œ๋ฅผ ์‚ฌ์šฉ์ž๊ฐ€ ๊ฒ€ํ† ํ•œ ๋’ค ์ง„ํ–‰ +9. **๊ตฌํ˜„ ์ „ํ™˜** โ€” Plan Mode ๋กœ ์ง„์ž…ํ•ด ๊ตฌํ˜„ ๊ณ„ํš ์ˆ˜๋ฆฝ + +## Process Flow + +```dot +digraph brainstorming { + "ํ”„๋กœ์ ํŠธ ์ปจํ…์ŠคํŠธ ํƒ์ƒ‰" [shape=box]; + "์‹œ๊ฐ ์งˆ๋ฌธ ์˜ˆ์ƒ?" [shape=diamond]; + "์‹œ๊ฐ ์ž๋ฃŒ ์ œ์•ˆ\n(๋ณ„๋„ ๋ฉ”์‹œ์ง€, ๋‹ค๋ฅธ ๋‚ด์šฉ ๊ธˆ์ง€)" [shape=box]; + "๋ช…ํ™•ํ™” ์งˆ๋ฌธ (ํ•˜๋‚˜์”ฉ)" [shape=box]; + "2-3 ์ ‘๊ทผ๋ฒ• ์ œ์•ˆ" [shape=box]; + "์„ค๊ณ„ ์„น์…˜๋ณ„ ์ œ์‹œ" [shape=box]; + "์‚ฌ์šฉ์ž ์„ค๊ณ„ ์Šน์ธ?" [shape=diamond]; + "์„ค๊ณ„ ๋ฌธ์„œ ์ž‘์„ฑ" [shape=box]; + "์ŠคํŽ™ self-review\n(์ธ๋ผ์ธ ์ˆ˜์ •)" [shape=box]; + "์‚ฌ์šฉ์ž ์ŠคํŽ™ ๋ฆฌ๋ทฐ?" [shape=diamond]; + "Plan Mode ์ง„์ž…" [shape=doublecircle]; + + "ํ”„๋กœ์ ํŠธ ์ปจํ…์ŠคํŠธ ํƒ์ƒ‰" -> "์‹œ๊ฐ ์งˆ๋ฌธ ์˜ˆ์ƒ?"; + "์‹œ๊ฐ ์งˆ๋ฌธ ์˜ˆ์ƒ?" -> "์‹œ๊ฐ ์ž๋ฃŒ ์ œ์•ˆ\n(๋ณ„๋„ ๋ฉ”์‹œ์ง€, ๋‹ค๋ฅธ ๋‚ด์šฉ ๊ธˆ์ง€)" [label="yes"]; + "์‹œ๊ฐ ์งˆ๋ฌธ ์˜ˆ์ƒ?" -> "๋ช…ํ™•ํ™” ์งˆ๋ฌธ (ํ•˜๋‚˜์”ฉ)" [label="no"]; + "์‹œ๊ฐ ์ž๋ฃŒ ์ œ์•ˆ\n(๋ณ„๋„ ๋ฉ”์‹œ์ง€, ๋‹ค๋ฅธ ๋‚ด์šฉ ๊ธˆ์ง€)" -> "๋ช…ํ™•ํ™” ์งˆ๋ฌธ (ํ•˜๋‚˜์”ฉ)"; + "๋ช…ํ™•ํ™” ์งˆ๋ฌธ (ํ•˜๋‚˜์”ฉ)" -> "2-3 ์ ‘๊ทผ๋ฒ• ์ œ์•ˆ"; + "2-3 ์ ‘๊ทผ๋ฒ• ์ œ์•ˆ" -> "์„ค๊ณ„ ์„น์…˜๋ณ„ ์ œ์‹œ"; + "์„ค๊ณ„ ์„น์…˜๋ณ„ ์ œ์‹œ" -> "์‚ฌ์šฉ์ž ์„ค๊ณ„ ์Šน์ธ?"; + "์‚ฌ์šฉ์ž ์„ค๊ณ„ ์Šน์ธ?" -> "์„ค๊ณ„ ์„น์…˜๋ณ„ ์ œ์‹œ" [label="no, ์ˆ˜์ •"]; + "์‚ฌ์šฉ์ž ์„ค๊ณ„ ์Šน์ธ?" -> "์„ค๊ณ„ ๋ฌธ์„œ ์ž‘์„ฑ" [label="yes"]; + "์„ค๊ณ„ ๋ฌธ์„œ ์ž‘์„ฑ" -> "์ŠคํŽ™ self-review\n(์ธ๋ผ์ธ ์ˆ˜์ •)"; + "์ŠคํŽ™ self-review\n(์ธ๋ผ์ธ ์ˆ˜์ •)" -> "์‚ฌ์šฉ์ž ์ŠคํŽ™ ๋ฆฌ๋ทฐ?"; + "์‚ฌ์šฉ์ž ์ŠคํŽ™ ๋ฆฌ๋ทฐ?" -> "์„ค๊ณ„ ๋ฌธ์„œ ์ž‘์„ฑ" [label="์ˆ˜์ • ์š”์ฒญ"]; + "์‚ฌ์šฉ์ž ์ŠคํŽ™ ๋ฆฌ๋ทฐ?" -> "Plan Mode ์ง„์ž…" [label="์Šน์ธ"]; +} +``` -- "๊ฐ™์ด brainstorm ํ•˜์ž", "์„ค๊ณ„ ๊ฐ™์ด ์žก์ž", "๋ง‰์—ฐํ•œ๋ฐ ๋ฐฉํ–ฅ๋ถ€ํ„ฐ" ์ฒ˜๋Ÿผ **์•„์ง ๊ตฌ์ฒด์•ˆ์ด ์—†๋Š”** ์ž‘์—… -- ์ด๋ฏธ plan ์ด ์žˆ์œผ๋ฉด `grill` ๋ชจ๋“œ๋กœ. ์˜๋„๊ฐ€ ์ด๋ฏธ ํ•ฉ์˜๋๊ณ  ์•„ํ‚คํ…์ฒ˜ ์ŠคํŽ™ ๋ฌธ์„œ๋ฅผ ์žก๋Š” ๋‹จ๊ณ„๋ฉด `spec:design` ์œผ๋กœ. +**์ข…์ฐฉ ์ƒํƒœ๋Š” Plan Mode ์ง„์ž…์ด๋‹ค.** ๋‹ค๋ฅธ ์–ด๋–ค ๊ตฌํ˜„ ์Šคํ‚ฌ๋„ ํ˜ธ์ถœํ•˜์ง€ ์•Š๋Š”๋‹ค. brainstorm ์ดํ›„์˜ ์œ ์ผํ•œ ๋‹ค์Œ ๋‹จ๊ณ„๋Š” Plan Mode ๋‹ค. ## ํ”„๋กœ์„ธ์Šค -### 1. ์ปจํ…์ŠคํŠธ ํƒ์ƒ‰ (๋จผ์ €, ์ง์ ‘) -์งˆ๋ฌธํ•˜๊ธฐ ์ „์— ์ฝ”๋“œ๋ฒ ์ด์Šค์—์„œ prior artยท๊ด€๋ จ ๋ชจ๋“ˆยท๊ธฐ์กด ์ปจ๋ฒค์…˜ยท์˜ํ–ฅ ๋ฒ”์œ„๋ฅผ Grep/Read ๋กœ ํ™•์ธํ•œ๋‹ค. ๋ฐœ๊ฒฌํ•œ ์‚ฌ์‹ค์„ "์ด๋ฏธ X ํŒจํ„ด์ด ์žˆ์Šต๋‹ˆ๋‹ค" ํ˜•ํƒœ๋กœ ๋จผ์ € ์ œ์‹œํ•œ๋‹ค. +**์•„์ด๋””์–ด ์ดํ•ด:** -### 2. ๋ช…ํ™•ํ™” ์งˆ๋ฌธ โ€” ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์”ฉ -์ดํ•ด ๊ฐญ์„ ๋ฉ”์šฐ๋Š” ์งˆ๋ฌธ์„ ํ•˜๋‚˜์”ฉ ํ•œ๋‹ค. ๊ฐ ์งˆ๋ฌธ์— **์ถ”์ฒœ ๋‹ต๊ณผ ๊ทผ๊ฑฐ**๋ฅผ ๋™๋ฐ˜ํ•œ๋‹ค. ๋ชฉ์ ยท์ œ์•ฝยท์„ฑ๊ณต ๊ธฐ์ค€์ด ๋“œ๋Ÿฌ๋‚  ๋•Œ๊นŒ์ง€ ๊ณ„์†ํ•˜๋˜, ์ฝ”๋“œ๋กœ ๋‹ต์ด ์ •ํ•ด์ง€๋Š” ๊ฑด ๋ฌป์ง€ ๋ง๊ณ  ํƒ์ƒ‰ ๊ฒฐ๊ณผ๋กœ ๋ฉ”์šด๋‹ค. +- ํ˜„์žฌ ํ”„๋กœ์ ํŠธ ์ƒํƒœ(ํŒŒ์ผ, ๋ฌธ์„œ, ์ตœ๊ทผ ์ปค๋ฐ‹)๋ฅผ ๋จผ์ € ํ™•์ธํ•œ๋‹ค +- ์ƒ์„ธ ์งˆ๋ฌธ ์ „์— **์Šค์ฝ”ํ”„๋ฅผ ํŒ์ •**ํ•œ๋‹ค: ์š”์ฒญ์ด ์—ฌ๋Ÿฌ ๋…๋ฆฝ ์„œ๋ธŒ์‹œ์Šคํ…œ์„ ๋‹ด๊ณ  ์žˆ์œผ๋ฉด(์˜ˆ: "์ฑ„ํŒ… + ํŒŒ์ผ ์ €์žฅ + ๋นŒ๋ง + ๋ถ„์„์ด ์žˆ๋Š” ํ”Œ๋žซํผ") ์ฆ‰์‹œ ํ”Œ๋ž˜๊ทธํ•œ๋‹ค. **๋ถ„ํ•ด๊ฐ€ ๋จผ์ € ํ•„์š”ํ•œ ํ”„๋กœ์ ํŠธ์˜ ๋””ํ…Œ์ผ์„ ๋‹ค๋“ฌ๋Š” ๋ฐ ์งˆ๋ฌธ์„ ๋‚ญ๋น„ํ•˜์ง€ ๋งˆ๋ผ.** +- ๋‹จ์ผ ์ŠคํŽ™์— ๋‹ด๊ธฐ์—” ํฐ ํ”„๋กœ์ ํŠธ๋ฉด ์‚ฌ์šฉ์ž์™€ ํ•จ๊ป˜ ์„œ๋ธŒํ”„๋กœ์ ํŠธ๋กœ ๋ถ„ํ•ดํ•œ๋‹ค: ๋…๋ฆฝ์ ์ธ ์กฐ๊ฐ์€ ๋ฌด์—‡์ธ๊ฐ€, ์„œ๋กœ ์–ด๋–ป๊ฒŒ ์—ฐ๊ฒฐ๋˜๋‚˜, ์–ด๋–ค ์ˆœ์„œ๋กœ ๋งŒ๋“ค์–ด์•ผ ํ•˜๋‚˜. ๊ทธ ๋‹ค์Œ ์ฒซ ์„œ๋ธŒํ”„๋กœ์ ํŠธ๋ฅผ ์ •์ƒ ์„ค๊ณ„ ํ”Œ๋กœ์šฐ๋กœ brainstorm ํ•œ๋‹ค. ๊ฐ ์„œ๋ธŒํ”„๋กœ์ ํŠธ๋Š” ์ž๊ธฐ๋งŒ์˜ ์ŠคํŽ™ โ†’ ๊ณ„ํš โ†’ ๊ตฌํ˜„ ์‚ฌ์ดํด์„ ๊ฐ€์ง„๋‹ค +- ์ ์ ˆํ•œ ์Šค์ฝ”ํ”„์˜ ํ”„๋กœ์ ํŠธ๋Š” ์งˆ๋ฌธ์„ ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์”ฉ ๋˜์ ธ ์•„์ด๋””์–ด๋ฅผ ๋‹ค๋“ฌ๋Š”๋‹ค +- ๊ฐ€๋Šฅํ•˜๋ฉด ๊ฐ๊ด€์‹์„ ์„ ํ˜ธํ•œ๋‹ค (AskUserQuestion ํ™œ์šฉ) โ€” ์ฃผ๊ด€์‹๋„ ๊ดœ์ฐฎ๋‹ค +- ๋ฉ”์‹œ์ง€๋‹น ์งˆ๋ฌธ ํ•˜๋‚˜ โ€” ์ฃผ์ œ์— ๋” ๊นŠ์€ ํƒ์ƒ‰์ด ํ•„์š”ํ•˜๋ฉด ์—ฌ๋Ÿฌ ์งˆ๋ฌธ์œผ๋กœ ์ชผ๊ฐ ๋‹ค +- ์ดํ•ด์˜ ์ดˆ์ : ๋ชฉ์ , ์ œ์•ฝ, ์„ฑ๊ณต ๊ธฐ์ค€ -### 3. ์ ‘๊ทผ๋ฒ• 2โ€“3๊ฐœ + trade-off -์„ค๊ณ„ ๊ณต๊ฐ„์ด ์ขํ˜€์ง€๋ฉด **์„œ๋กœ ๋‹ค๋ฅธ ์ ‘๊ทผ๋ฒ• 2โ€“3๊ฐœ**๋ฅผ ์ œ์‹œํ•œ๋‹ค. -- ๊ฐ ์ ‘๊ทผ์˜ ํ•ต์‹ฌ ์•„์ด๋””์–ด / ์žฅ์  / ๋น„์šฉยท๋ฆฌ์Šคํฌ / ์ ํ•ฉ ์กฐ๊ฑด -- ๊ทธ์ค‘ **์ถ”์ฒœ์•ˆ๊ณผ ์ด์œ **๋ฅผ ๋ช…์‹œํ•œ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ์„ ํƒํ•˜๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„๋กœ. +**์ ‘๊ทผ๋ฒ• ํƒ์ƒ‰:** -### 4. ์„ค๊ณ„ ์ œ์‹œ โ€” ์„น์…˜ ๋‹จ์œ„ ๊ฒ€์ฆ -์„ ํƒ๋œ ๋ฐฉํ–ฅ์„ **ํ•œ ๋ฒˆ์— ์Ÿ์ง€ ์•Š๊ณ  ์„น์…˜ ๋‹จ์œ„๋กœ** ์ œ์‹œํ•˜๊ณ , ์„น์…˜๋งˆ๋‹ค ์‚ฌ์šฉ์ž ๊ฒ€์ฆ์„ ๋ฐ›์€ ๋’ค ๋‹ค์Œ์œผ๋กœ ๊ฐ„๋‹ค. ์„น์…˜ ๊ตฌ์„ฑ์€ ์„ค๊ณ„ ์‚ฐ์ถœ๋ฌผ 3์š”์†Œ(์ธํ„ฐํŽ˜์ด์Šค ์ •์˜ยท๋ชจ๋“ˆ ๊ตฌ์กฐยท์˜์กด์„ฑ ๋ฐฉํ–ฅ)๋ฅผ ๋ฐ˜๋“œ์‹œ ํฌํ•จํ•œ๋‹ค: +- ์„œ๋กœ ๋‹ค๋ฅธ ์ ‘๊ทผ๋ฒ• 2โ€“3๊ฐœ๋ฅผ trade-off ์™€ ํ•จ๊ป˜ ์ œ์•ˆํ•œ๋‹ค +- ๋Œ€ํ™”์ฒด๋กœ ์ œ์‹œํ•˜๋˜ ์ถ”์ฒœ์•ˆ๊ณผ ๊ทธ ์ด์œ ๋ฅผ ๋ช…์‹œํ•œ๋‹ค +- ์ถ”์ฒœ์•ˆ์„ ๋จผ์ € ์ œ์‹œํ•˜๊ณ  ์™œ์ธ์ง€ ์„ค๋ช…ํ•œ๋‹ค -1. ๋ชฉ์ ยท๋ฒ”์œ„ (๋น„๋ชฉํ‘œ ํฌํ•จ) -2. **์ธํ„ฐํŽ˜์ด์Šค ์ •์˜** โ€” ๊ณต๊ฐœ API / ์‹œ๊ทธ๋‹ˆ์ฒ˜ / ๊ณ„์•ฝ -3. **๋ชจ๋“ˆ ๊ตฌ์กฐ** โ€” ์ฑ…์ž„ ๋ถ„๋ฆฌ -4. **์˜์กด์„ฑ ๋ฐฉํ–ฅ** โ€” ๋ฌด์—‡์ด ๋ฌด์—‡์— ์˜์กดํ•˜๋Š”๊ฐ€ -5. ์—๋Ÿฌยท์—ฃ์ง€ ์ผ€์ด์Šค -6. ์˜ํ–ฅ ๋ฒ”์œ„ยท๋ฆฌ์Šคํฌ +**์„ค๊ณ„ ์ œ์‹œ:** -### 5. ์‹œ๊ฐํ™” (์กฐ๊ฑด๋ถ€ ์ œ์•ˆ) -ํ…์ŠคํŠธ๋ณด๋‹ค ์‹œ๊ฐ ํ‘œํ˜„์ด ์ดํ•ด๋ฅผ ๋ช…ํ™•ํžˆ ๋•๋Š” ์„น์…˜(๊ตฌ์กฐ ๋น„๊ตยทํ๋ฆ„ยท๋Œ€์•ˆ ๋Œ€์กฐ)์—์„œ๋Š” **๋จผ์ € ์ œ์•ˆํ•˜๊ณ  ๋™์˜๋ฅผ ๋ฐ›์€ ๋’ค** ์‚ฌ์šฉํ•œ๋‹ค: -- markdown ํ‘œ / ASCIIยทmermaid ๋‹ค์ด์–ด๊ทธ๋žจ โ€” ๋ชจ๋“ˆ ๊ตฌ์กฐ, ์˜์กด์„ฑ ๋ฐฉํ–ฅ, ํ๋ฆ„ -- AskUserQuestion ์˜ preview โ€” ๋Œ€์•ˆ 2โ€“3๊ฐœ๋ฅผ ๋‚˜๋ž€ํžˆ ๋น„๊ต์‹œํ‚ฌ ๋•Œ +- ๋ฌด์—‡์„ ๋งŒ๋“œ๋Š”์ง€ ์ดํ•ด๋๋‹ค๊ณ  ๋ฏฟ์œผ๋ฉด ์„ค๊ณ„๋ฅผ ์ œ์‹œํ•œ๋‹ค +- ๊ฐ ์„น์…˜์„ ๋ณต์žก๋„์— ๋น„๋ก€ํ•ด ์กฐ์ ˆํ•œ๋‹ค: ๋‹จ์ˆœํ•˜๋ฉด ๋ช‡ ๋ฌธ์žฅ, ๋ฏธ๋ฌ˜ํ•˜๋ฉด 200โ€“300๋‹จ์–ด๊นŒ์ง€ +- ๊ฐ ์„น์…˜ ํ›„ ์—ฌ๊ธฐ๊นŒ์ง€ ๋งž๋Š”์ง€ ํ™•์ธํ•œ๋‹ค +- ๋‹ค๋ฃฐ ๊ฒƒ: ์•„ํ‚คํ…์ฒ˜, ์ปดํฌ๋„ŒํŠธ, ๋ฐ์ดํ„ฐ ํ๋ฆ„, ์—๋Ÿฌ ์ฒ˜๋ฆฌ, ํ…Œ์ŠคํŠธ +- ๋ญ”๊ฐ€ ๋ง์ด ์•ˆ ๋˜๋ฉด ๋˜๋Œ์•„๊ฐ€ ๋ช…ํ™•ํžˆ ํ•  ์ค€๋น„๋ฅผ ํ•œ๋‹ค -๋ชจ๋“  ์„น์…˜์— ๊ฐ•์ œํ•˜์ง€ ์•Š๋Š”๋‹ค. ์‹œ๊ฐํ™”๊ฐ€ ๋”ํ•ด์ฃผ๋Š” ๊ฒŒ ์—†์œผ๋ฉด ํ…์ŠคํŠธ๋กœ ๊ฐ„๋‹ค. +**๊ฒฉ๋ฆฌ์™€ ๋ช…๋ฃŒํ•จ์„ ์œ„ํ•œ ์„ค๊ณ„:** -### 6. ์„ค๊ณ„ self-review -์ตœ์ข… ์Šน์ธ์„ ์š”์ฒญํ•˜๊ธฐ ์ง์ „ ์Šค์Šค๋กœ ์ ๊ฒ€ํ•œ๋‹ค: -- ์„น์…˜ ๊ฐ„ ๋ชจ์ˆœ์€ ์—†๋Š”๊ฐ€ -- ๊ฒ€์ฆ ์•ˆ ๋œ ๊ฐ€์ •์ด ์‚ฌ์‹ค์ฒ˜๋Ÿผ ์ ํ˜€ ์žˆ์ง€ ์•Š์€๊ฐ€ -- ์š”์ฒญํ•˜์ง€ ์•Š์€ ์ถ”์ƒํ™”(YAGNI ์œ„๋ฐ˜)๊ฐ€ ๋ผ์–ด๋“ค์ง€ ์•Š์•˜๋Š”๊ฐ€ -- ๋น ๋œจ๋ฆฐ ์—ฃ์ง€ยท์‚ฌ์ด๋“œ์ดํŽ™ํŠธ๋Š” ์—†๋Š”๊ฐ€ +- ์‹œ์Šคํ…œ์„ ์ž‘์€ ๋‹จ์œ„๋กœ ์ชผ๊ฐ ๋‹ค. ๊ฐ ๋‹จ์œ„๋Š” ํ•˜๋‚˜์˜ ๋ช…ํ™•ํ•œ ๋ชฉ์ ์„ ๊ฐ–๊ณ , ์ž˜ ์ •์˜๋œ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ํ†ต์‹ ํ•˜๋ฉฐ, ๋…๋ฆฝ์ ์œผ๋กœ ์ดํ•ดยทํ…Œ์ŠคํŠธ ๊ฐ€๋Šฅํ•ด์•ผ ํ•œ๋‹ค +- ๊ฐ ๋‹จ์œ„์— ๋Œ€ํ•ด ๋‹ตํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค: ๋ฌด์—‡์„ ํ•˜๋Š”๊ฐ€, ์–ด๋–ป๊ฒŒ ์“ฐ๋Š”๊ฐ€, ๋ฌด์—‡์— ์˜์กดํ•˜๋Š”๊ฐ€ +- ๋‚ด๋ถ€๋ฅผ ์ฝ์ง€ ์•Š๊ณ  ๋‹จ์œ„๊ฐ€ ๋ญ˜ ํ•˜๋Š”์ง€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€? ๋‚ด๋ถ€๋ฅผ ๋ฐ”๊ฟ”๋„ ์†Œ๋น„์ž๊ฐ€ ๊นจ์ง€์ง€ ์•Š๋Š”๊ฐ€? ์•„๋‹ˆ๋ผ๋ฉด ๊ฒฝ๊ณ„๋ฅผ ๋‹ค์‹œ ์žก์•„์•ผ ํ•œ๋‹ค +- ์ž‘๊ณ  ๊ฒฝ๊ณ„๊ฐ€ ๋ถ„๋ช…ํ•œ ๋‹จ์œ„๋Š” ์—์ด์ „ํŠธ ์ž์‹ ์—๊ฒŒ๋„ ์œ ๋ฆฌํ•˜๋‹ค โ€” ํ•œ ๋ฒˆ์— ์ปจํ…์ŠคํŠธ์— ๋‹ด์„ ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ๋ฅผ ๋” ์ž˜ ์ถ”๋ก ํ•˜๊ณ , ํŒŒ์ผ์ด ์ง‘์ค‘๋˜์–ด ์žˆ์„์ˆ˜๋ก ํŽธ์ง‘์ด ๋” ์‹ ๋ขฐํ•  ๋งŒํ•˜๋‹ค. ํŒŒ์ผ์ด ์ปค์ง€๊ณ  ์žˆ๋‹ค๋ฉด ๋„ˆ๋ฌด ๋งŽ์€ ์ผ์„ ํ•˜๊ณ  ์žˆ๋‹ค๋Š” ์‹ ํ˜ธ์ธ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค +- ์ด ์ง€ํ–ฅ์€ atelier ์˜ SOLID ์›์น™(`coding-style` skill)๊ณผ ๋™์ผํ•˜๋‹ค โ€” ์„ค๊ณ„ ๋‹จ๊ณ„์—์„œ SRP/ISP/DIP ๋ฅผ ๋ฏธ๋ฆฌ ์ ์šฉํ•˜๋Š” ๊ฒƒ -๋ฐœ๊ฒฌํ•˜๋ฉด ํ•ด๋‹น ์„น์…˜์„ ์ˆ˜์ •ํ•ด ๋‹ค์‹œ ์ œ์‹œํ•œ๋‹ค. +**๊ธฐ์กด ์ฝ”๋“œ๋ฒ ์ด์Šค์—์„œ ์ž‘์—…:** -### 7. ์Šน์ธ ๊ฒŒ์ดํŠธ (Hard Gate) -์ „์ฒด ์„ค๊ณ„ ์š”์•ฝ์„ ์ œ์‹œํ•˜๊ณ  **๋ช…์‹œ์  ์Šน์ธ**์„ ๋ฐ›๋Š”๋‹ค. ์Šน์ธ ์ „์—๋Š” ์ฝ”๋“œ ์ž‘์„ฑยท์Šค์บํด๋”ฉยทํŒŒ์ผ ๋ณ€๊ฒฝ์„ ์‹œ์ž‘ํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ž‘์—…์ด ๋‹จ์ˆœํ•ด ๋ณด์—ฌ๋„ ๋™์ผ. +- ๋ณ€๊ฒฝ์„ ์ œ์•ˆํ•˜๊ธฐ ์ „์— ํ˜„์žฌ ๊ตฌ์กฐ๋ฅผ ํƒ์ƒ‰ํ•œ๋‹ค. ๊ธฐ์กด ํŒจํ„ด์„ ๋”ฐ๋ฅธ๋‹ค +- ๊ธฐ์กด ์ฝ”๋“œ์˜ ๋ฌธ์ œ๊ฐ€ ์ด๋ฒˆ ์ž‘์—…์— ์˜ํ–ฅ์„ ์ฃผ๋Š” ๊ฒฝ์šฐ(๋„ˆ๋ฌด ์ปค์ง„ ํŒŒ์ผ, ๋ถˆ๋ถ„๋ช…ํ•œ ๊ฒฝ๊ณ„, ์–ฝํžŒ ์ฑ…์ž„)์—๋Š” targeted improvement ๋ฅผ ์„ค๊ณ„์— ํฌํ•จํ•œ๋‹ค โ€” ์ข‹์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ž๊ธฐ๊ฐ€ ์ž‘์—…ํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ๊ฐœ์„ ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ +- ๋ฌด๊ด€ํ•œ ๋ฆฌํŒฉํ„ฐ๋ง์€ ์ œ์•ˆํ•˜์ง€ ์•Š๋Š”๋‹ค. ํ˜„์žฌ ๋ชฉํ‘œ์— ๋ณต๋ฌดํ•˜๋Š” ๊ฒƒ์— ์ง‘์ค‘ํ•œ๋‹ค -``` -## ์„ค๊ณ„ ์š”์•ฝ -- ์ ‘๊ทผ: <์„ ํƒ์•ˆ> -- ์ธํ„ฐํŽ˜์ด์Šค: <ํ•ต์‹ฌ ์‹œ๊ทธ๋‹ˆ์ฒ˜/๊ณ„์•ฝ> -- ๋ชจ๋“ˆ ๊ตฌ์กฐ / ์˜์กด์„ฑ ๋ฐฉํ–ฅ: ... -- ๋น„๋ชฉํ‘œ: <์•ˆ ๊ฑด๋“œ๋ฆด ๊ฒƒ> -- ๋ฆฌ์Šคํฌ: <๋‚จ์€ ์œ„ํ—˜> -โ†’ ์ด ์„ค๊ณ„๋กœ ๊ฐˆ๊นŒ์š”? (์Šน์ธ / ์„น์…˜ ์ˆ˜์ •) -``` +## ์„ค๊ณ„ ์ดํ›„ -### 8. ํ•ธ๋“œ์˜คํ”„ โ€” ์„ค๊ณ„ ์˜์†ํ™”๋Š” ๊ธฐ์กด ์ฑ„๋„๋กœ -brainstorm ์ž์ฒด๋Š” ๋ณ„๋„ ์„ค๊ณ„ ํŒŒ์ผ์„ ๋งŒ๋“ค์ง€ ์•Š๋Š”๋‹ค (์ŠคํŽ™ ๋ฌธ์„œ๋Š” `spec` ์˜ ์ฑ…์ž„). ํ•ฉ์˜๋œ ์„ค๊ณ„ ์š”์•ฝ์„ ๋“ค๊ณ : -- ์ฝ”๋“œ ๋ณ€๊ฒฝ ์ž‘์—… โ†’ **Plan Mode** โ€” plan ํŒŒ์ผ์ด ์„ค๊ณ„์˜ ์บ๋ฆฌ์–ด๊ฐ€ ๋œ๋‹ค -- ์•„ํ‚คํ…์ฒ˜/๋‹ค์ค‘ ์ปดํฌ๋„ŒํŠธ ๊ทœ๋ชจ์ด๊ฑฐ๋‚˜ ์ŠคํŽ™ ๋ฌธ์„œ๋กœ ๋‚จ๊ฒจ์•ผ ํ•˜๋ฉด โ†’ **`spec:design`** ์œผ๋กœ ์—์Šค์ปฌ๋ ˆ์ดํŠธ +**๋ฌธ์„œํ™”:** -## ์ข…๋ฃŒ ์กฐ๊ฑด +- ๊ฒ€์ฆ๋œ ์„ค๊ณ„(์ŠคํŽ™)๋ฅผ ํ”„๋กœ์ ํŠธ์˜ spec ์ปจ๋ฒค์…˜ ์œ„์น˜์— ์ž‘์„ฑํ•œ๋‹ค (์ปจ๋ฒค์…˜์ด ์—†์œผ๋ฉด ์‚ฌ์šฉ์ž์—๊ฒŒ ์œ„์น˜๋ฅผ ํ™•์ธํ•œ๋‹ค โ€” ์‚ฌ์šฉ์ž ์„ ํ˜ธ๊ฐ€ ํ•ญ์ƒ ์šฐ์„ ) +- frontmatter ์— **`related_paths`** ๋ฅผ ํฌํ•จํ•œ๋‹ค โ€” atelier `spec` ์Šคํ‚ฌ(๊ฐญ ๋ถ„์„ยท๋ฆฌ๋ทฐ)์ด ์ด ๋ฌธ์„œ๋ฅผ ๊ทธ๋Œ€๋กœ ์†Œ๋น„ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค +- ์„ค๊ณ„ ๋ฌธ์„œ๋ฅผ git ์›Œํฌํ”Œ๋กœ์šฐ ์ปจ๋ฒค์…˜์— ๋”ฐ๋ผ ์ปค๋ฐ‹ํ•œ๋‹ค -- ์„ค๊ณ„ ์š”์•ฝ์ด ์Šน์ธ๋˜์–ด Plan Mode/`spec` ์œผ๋กœ ํ•ธ๋“œ์˜คํ”„๋จ -- ๋˜๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๋ฐฉํ–ฅ์„ ๋ณด๋ฅ˜/์ค‘๋‹จ +**์ŠคํŽ™ self-review:** +์ŠคํŽ™ ๋ฌธ์„œ๋ฅผ ์“ด ๋’ค ์ƒˆ๋กœ์šด ๋ˆˆ์œผ๋กœ ๋ณธ๋‹ค: -## ์˜ˆ์‹œ (ํƒ์ƒ‰ โ†’ ์ ‘๊ทผ๋ฒ• โ†’ ์„น์…˜๋ณ„ ๊ฒ€์ฆ โ†’ ์Šน์ธ) +1. **Placeholder ์Šค์บ”**: "TBD", "TODO", ๋ฏธ์™„์„ฑ ์„น์…˜, ๋ชจํ˜ธํ•œ ์š”๊ตฌ์‚ฌํ•ญ์ด ์žˆ๋Š”๊ฐ€? ๊ณ ์นœ๋‹ค +2. **๋‚ด๋ถ€ ์ผ๊ด€์„ฑ**: ์„น์…˜๋ผ๋ฆฌ ๋ชจ์ˆœ๋˜๋Š”๊ฐ€? ์•„ํ‚คํ…์ฒ˜๊ฐ€ ๊ธฐ๋Šฅ ์„ค๋ช…๊ณผ ์ผ์น˜ํ•˜๋Š”๊ฐ€? +3. **์Šค์ฝ”ํ”„ ์ ๊ฒ€**: ๋‹จ์ผ ๊ตฌํ˜„ ๊ณ„ํš์— ๋‹ด๊ธธ ๋งŒํผ ์ง‘์ค‘๋˜์–ด ์žˆ๋Š”๊ฐ€, ๋ถ„ํ•ด๊ฐ€ ํ•„์š”ํ•œ๊ฐ€? +4. **๋ชจํ˜ธํ•จ ์ ๊ฒ€**: ๋‘ ๊ฐ€์ง€๋กœ ํ•ด์„๋  ์ˆ˜ ์žˆ๋Š” ์š”๊ตฌ์‚ฌํ•ญ์ด ์žˆ๋Š”๊ฐ€? ์žˆ์œผ๋ฉด ํ•˜๋‚˜๋ฅผ ๊ณจ๋ผ ๋ช…์‹œํ•œ๋‹ค -์‚ฌ์šฉ์ž: "์‚ฌ์šฉ์ž ํ™œ๋™ ๋กœ๊ทธ ๊ฐ™์ด brainstorm ํ•˜์ž" +๋ฐœ๊ฒฌํ•œ ๋ฌธ์ œ๋Š” ์ธ๋ผ์ธ์œผ๋กœ ๊ณ ์นœ๋‹ค. ์žฌ๋ฆฌ๋ทฐ๋Š” ๋ถˆํ•„์š” โ€” ๊ณ ์น˜๊ณ  ๋„˜์–ด๊ฐ„๋‹ค. -``` -[ํƒ์ƒ‰] ๊ธฐ์กด ๋กœ๊น…/์ด๋ฒคํŠธ ์ธํ”„๋ผ ํ™•์ธ โ†’ src/events/ ์— EventBus ์กด์žฌ, DB ๋Š” sqlite. - โ†’ "์ด๋ฏธ EventBus ๊ฐ€ ์žˆ์–ด ์—ฌ๊ธฐ์— ์–น๋Š” ๊ฒŒ ์ž์—ฐ์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค." +**์‚ฌ์šฉ์ž ๋ฆฌ๋ทฐ ๊ฒŒ์ดํŠธ:** +self-review ๊ฐ€ ๋๋‚˜๋ฉด ์ง„ํ–‰ ์ „์— ์‚ฌ์šฉ์ž์—๊ฒŒ ์ž‘์„ฑ๋œ ์ŠคํŽ™ ๋ฆฌ๋ทฐ๋ฅผ ์š”์ฒญํ•œ๋‹ค: -Q1 ๋ณด์กด ๊ธฐ๊ฐ„ ์ •์ฑ…์ด ์žˆ๋‚˜์š”? - ์ถ”์ฒœ: 90์ผ โ€” ์œ ์‚ฌ ํ…Œ์ด๋ธ”(audit_log)์ด 90์ผ ๋ณด์กด. prior art ์™€ ์ผ์น˜ ๊ถŒ์žฅ. - โ†’ (์‚ฌ์šฉ์ž: 90์ผ ํ™•์ •) +> "์ŠคํŽ™์„ `<๊ฒฝ๋กœ>` ์— ์ž‘์„ฑํ•˜๊ณ  ์ปค๋ฐ‹ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ตฌํ˜„ ๊ณ„ํš์„ ์žก๊ธฐ ์ „์— ๊ฒ€ํ† ํ•˜์‹œ๊ณ  ์ˆ˜์ •ํ•  ๋ถ€๋ถ„์ด ์žˆ์œผ๋ฉด ์•Œ๋ ค์ฃผ์„ธ์š”." -์ ‘๊ทผ๋ฒ• ์ œ์‹œ: - A. EventBus ๊ตฌ๋…์ž ์ถ”๊ฐ€ + ๊ธฐ์กด audit_log ํ…Œ์ด๋ธ” ์žฌ์‚ฌ์šฉ - +์ ์€ ์‹ ๊ทœ ์ฝ”๋“œ / -์Šคํ‚ค๋งˆ๊ฐ€ audit ์šฉ์ด๋ผ ํ•„๋“œ ์•ˆ ๋งž์„ ์ˆ˜ ์žˆ์Œ - B. ์ „์šฉ activity_log ํ…Œ์ด๋ธ” ์‹ ๊ทœ - +๊น”๋”ํ•œ ๋ชจ๋ธ / -๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ยท์‹ ๊ทœ ๋ฐฐ์„  ๋น„์šฉ - ์ถ”์ฒœ: A โ€” ์š”๊ตฌ๊ฐ€ ๋‹จ์ˆœ ์กฐํšŒ ์ˆ˜์ค€์ด๊ณ  EventBus ์žฌ์‚ฌ์šฉ์œผ๋กœ ํ‘œ๋ฉด์  ์ตœ์†Œ. - โ†’ (์‚ฌ์šฉ์ž: A ์„ ํƒ) +์‚ฌ์šฉ์ž์˜ ์‘๋‹ต์„ ๊ธฐ๋‹ค๋ฆฐ๋‹ค. ์ˆ˜์ • ์š”์ฒญ์ด ์˜ค๋ฉด ๋ฐ˜์˜ํ•˜๊ณ  self-review ๋ฅผ ๋‹ค์‹œ ๋ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ์Šน์ธํ•œ ๋’ค์—๋งŒ ์ง„ํ–‰ํ•œ๋‹ค. -[์„น์…˜๋ณ„ ์ œ์‹œ] ยง์ธํ„ฐํŽ˜์ด์Šค: ActivityLogger.record(event) ๊ณ„์•ฝ โ†’ ๊ฒ€์ฆ โ†’ - ยง๋ชจ๋“ˆ ๊ตฌ์กฐ: events/subscribers/activity.rs ๋‹จ์ผ ์ฑ…์ž„ โ†’ ๊ฒ€์ฆ โ†’ - ยง์˜์กด์„ฑ ๋ฐฉํ–ฅ: subscriber โ†’ EventBus ์ถ”์ƒ์—๋งŒ ์˜์กด โ†’ ๊ฒ€์ฆ โ†’ ... - (์˜์กด์„ฑ ๋ฐฉํ–ฅ์€ ASCII ๋‹ค์ด์–ด๊ทธ๋žจ ์ œ์•ˆ โ†’ ๋™์˜ ์‹œ ๋„์‹ํ™”) +**๊ตฌํ˜„ ์ „ํ™˜:** -[self-review] "retention 90์ผ ์‚ญ์ œ ์ฃผ์ฒด๊ฐ€ ๋ฏธ์ •" ๋ฐœ๊ฒฌ โ†’ ยง์—๋Ÿฌยท์—ฃ์ง€์— ์ถ”๊ฐ€ ํ›„ ์žฌ์ œ์‹œ +- **Plan Mode ๋กœ ์ง„์ž…**ํ•ด ์ƒ์„ธ ๊ตฌํ˜„ ๊ณ„ํš์„ ์ˆ˜๋ฆฝํ•œ๋‹ค +- ๋‹ค๋ฅธ ์Šคํ‚ฌ์„ ํ˜ธ์ถœํ•˜์ง€ ์•Š๋Š”๋‹ค. Plan Mode ๊ฐ€ ๋‹ค์Œ ๋‹จ๊ณ„๋‹ค. ์•„ํ‚คํ…์ฒ˜/๋‹ค์ค‘ ์ปดํฌ๋„ŒํŠธ ์ŠคํŽ™ ์ž‘์—…์œผ๋กœ ์ปค์กŒ์œผ๋ฉด `spec:design` ์œผ๋กœ ์—์Šค์ปฌ๋ ˆ์ดํŠธํ•œ๋‹ค -[์„ค๊ณ„ ์š”์•ฝ ์ œ์‹œ] โ†’ "์ด ์„ค๊ณ„๋กœ ๊ฐˆ๊นŒ์š”?" โ†’ (์Šน์ธ) โ†’ Plan Mode ํ•ธ๋“œ์˜คํ”„ -``` +## ํ•ต์‹ฌ ์›์น™ + +- **์งˆ๋ฌธ์€ ํ•œ ๋ฒˆ์— ํ•˜๋‚˜** โ€” ์—ฌ๋Ÿฌ ์งˆ๋ฌธ์œผ๋กœ ์••๋„ํ•˜์ง€ ์•Š๋Š”๋‹ค +- **๊ฐ๊ด€์‹ ์„ ํ˜ธ** โ€” ๊ฐ€๋Šฅํ•˜๋ฉด ์ฃผ๊ด€์‹๋ณด๋‹ค ๋‹ตํ•˜๊ธฐ ์‰ฝ๋‹ค (AskUserQuestion) +- **๊ฐ€์ฐจ์—†๋Š” YAGNI** โ€” ๋ชจ๋“  ์„ค๊ณ„์—์„œ ๋ถˆํ•„์š”ํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ฑฐํ•œ๋‹ค +- **๋Œ€์•ˆ ํƒ์ƒ‰** โ€” ์ •ํ•˜๊ธฐ ์ „์— ํ•ญ์ƒ 2โ€“3๊ฐœ ์ ‘๊ทผ๋ฒ•์„ ์ œ์•ˆํ•œ๋‹ค +- **์ ์ง„์  ๊ฒ€์ฆ** โ€” ์„ค๊ณ„๋ฅผ ์ œ์‹œํ•˜๊ณ  ์Šน์ธ๋ฐ›์€ ๋’ค ๋‹ค์Œ์œผ๋กœ ๊ฐ„๋‹ค +- **์œ ์—ฐํ•˜๊ฒŒ** โ€” ๋ง์ด ์•ˆ ๋˜๋ฉด ๋˜๋Œ์•„๊ฐ€ ๋ช…ํ™•ํžˆ ํ•œ๋‹ค + +## ์‹œ๊ฐ ์ž๋ฃŒ + +brainstorm ์ค‘ ๋ชฉ์—…ยท๋‹ค์ด์–ด๊ทธ๋žจยท์‹œ๊ฐ์  ๋Œ€์•ˆ์„ ๋ณด์—ฌ์ฃผ๋Š” ๋„๊ตฌ๋‹ค. **๋„๊ตฌ์ด์ง€ ๋ชจ๋“œ๊ฐ€ ์•„๋‹ˆ๋‹ค** โ€” ์‚ฌ์šฉ์ž๊ฐ€ ๋™์˜ํ•ด๋„ ๋ชจ๋“  ์งˆ๋ฌธ์ด ์‹œ๊ฐ ์ž๋ฃŒ๋ฅผ ๊ฑฐ์น˜๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ, ์‹œ๊ฐ์  ์ฒ˜๋ฆฌ๊ฐ€ ๋„์›€์ด ๋˜๋Š” ์งˆ๋ฌธ์—๋งŒ ์“ธ ์ˆ˜ ์žˆ๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด๋‹ค. + +**์ œ์•ˆํ•˜๊ธฐ:** ์•ž์œผ๋กœ์˜ ์งˆ๋ฌธ์— ์‹œ๊ฐ ์ฝ˜ํ…์ธ (๋ชฉ์—…, ๋ ˆ์ด์•„์›ƒ, ๋‹ค์ด์–ด๊ทธ๋žจ)๊ฐ€ ํ•„์š”ํ•  ๊ฒƒ ๊ฐ™์œผ๋ฉด ๋™์˜๋ฅผ ํ•œ ๋ฒˆ ๊ตฌํ•œ๋‹ค. **์ด ์ œ์•ˆ์€ ๋ฐ˜๋“œ์‹œ ๋ณ„๋„ ๋ฉ”์‹œ์ง€์—ฌ์•ผ ํ•œ๋‹ค** โ€” ๋ช…ํ™•ํ™” ์งˆ๋ฌธ, ์ปจํ…์ŠคํŠธ ์š”์•ฝ, ๋‹ค๋ฅธ ์–ด๋–ค ๋‚ด์šฉ๊ณผ๋„ ๊ฒฐํ•ฉํ•˜์ง€ ์•Š๋Š”๋‹ค. ๊ฑฐ์ ˆํ•˜๋ฉด ํ…์ŠคํŠธ๋กœ๋งŒ ์ง„ํ–‰ํ•œ๋‹ค. + +**์งˆ๋ฌธ๋ณ„ ํŒ๋‹จ:** ๋™์˜๋ฅผ ๋ฐ›์•˜์–ด๋„ **์งˆ๋ฌธ๋งˆ๋‹ค** ์‹œ๊ฐ์ด๋ƒ ํ…์ŠคํŠธ๋ƒ๋ฅผ ๋”ฐ๋กœ ๊ฒฐ์ •ํ•œ๋‹ค. ๊ธฐ์ค€: **์ฝ๋Š” ๊ฒƒ๋ณด๋‹ค ๋ณด๋Š” ๊ฒƒ์ด ์ดํ•ด์— ๋” ๋‚˜์€๊ฐ€?** + +- **์‹œ๊ฐ์œผ๋กœ**: ๋‚ด์šฉ ์ž์ฒด๊ฐ€ ์‹œ๊ฐ์ ์ธ ๊ฒƒ โ€” ๋ชฉ์—…, ๋ ˆ์ด์•„์›ƒ ๋น„๊ต, ๋ชจ๋“ˆ ๊ตฌ์กฐยท์˜์กด์„ฑยทํ๋ฆ„ ๋‹ค์ด์–ด๊ทธ๋žจ โ†’ markdown ํ‘œ / ASCII / mermaid. ๋Œ€์•ˆ 2โ€“3๊ฐœ๋ฅผ ๋‚˜๋ž€ํžˆ ๋น„๊ต์‹œํ‚ฌ ๋• AskUserQuestion ์˜ preview +- **ํ…์ŠคํŠธ๋กœ**: ๋‚ด์šฉ์ด ํ…์ŠคํŠธ์ธ ๊ฒƒ โ€” ์š”๊ตฌ์‚ฌํ•ญ ์งˆ๋ฌธ, ๊ฐœ๋… ์„ ํƒ, trade-off ๋ชฉ๋ก, ์Šค์ฝ”ํ”„ ๊ฒฐ์ • -์Šน์ธ ์ „์—๋Š” ์–ด๋–ค ํŒŒ์ผ๋„ ๋งŒ๋“ค์ง€ ์•Š๋Š”๋‹ค. +UI ์ฃผ์ œ์— ๋Œ€ํ•œ ์งˆ๋ฌธ์ด๋ผ๊ณ  ์ž๋™์œผ๋กœ ์‹œ๊ฐ ์งˆ๋ฌธ์ธ ๊ฑด ์•„๋‹ˆ๋‹ค. "์ด ๋งฅ๋ฝ์—์„œ personality ๊ฐ€ ๋ฌด์Šจ ๋œป์ธ๊ฐ€์š”?"๋Š” ๊ฐœ๋… ์งˆ๋ฌธ์ด๋ผ ํ…์ŠคํŠธ๋กœ, "์–ด๋А wizard ๋ ˆ์ด์•„์›ƒ์ด ๋‚˜์€๊ฐ€์š”?"๋Š” ์‹œ๊ฐ ์งˆ๋ฌธ์ด๋ผ ๋‹ค์ด์–ด๊ทธ๋žจ์œผ๋กœ ๊ฐ„๋‹ค. From 1b87a666af1e3d210e23f83f1b39943daa0d91cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EC=9A=A9=EC=84=B1?= Date: Sat, 13 Jun 2026 11:10:02 +0900 Subject: [PATCH 4/7] refactor(atelier): make grill the default inline mode, drop quick scaffolding MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Restructure the interview skill so the skill body serves the post-invocation reader, not the should-I-invoke decision (that is the frontmatter description's job). - grill becomes the default inline behavior (absorbs references/grill.md, which is removed) - brainstorm stays as the only reference, loaded for from-scratch design - drop the quick/RG-CN-A mode: it was a #713 addition absent from the source skills and overlaps with grill's interrogate-to-shared-understanding - drop the design-first rationale (CLAUDE.md owns it) and the body auto-trigger / skip tables (the description drives invocation; repeating them in the body once loaded is redundant) - keep the responsibility-boundary table and source attribution SKILL.md is now ~40 lines; the validator's 50-line minimum is a non-blocking warning (main.go exits non-zero only on failures), so CI stays green. ๐Ÿค– Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- plugins/atelier/skills/interview/SKILL.md | 85 ++++--------------- .../skills/interview/references/grill.md | 15 ---- 2 files changed, 18 insertions(+), 82 deletions(-) delete mode 100644 plugins/atelier/skills/interview/references/grill.md diff --git a/plugins/atelier/skills/interview/SKILL.md b/plugins/atelier/skills/interview/SKILL.md index e386e237..eff1021d 100644 --- a/plugins/atelier/skills/interview/SKILL.md +++ b/plugins/atelier/skills/interview/SKILL.md @@ -1,89 +1,40 @@ --- name: interview -description: ์ž‘์—… ์ฐฉ์ˆ˜ ์ „ ์˜๋„ยท์„ค๊ณ„๋ฅผ ์‚ฌ๋žŒ๊ณผ ํ•ฉ์˜ํ•˜๋Š” ์ธํ„ฐ๋ทฐ ๋ฉ”ํƒ€์Šคํ‚ฌ. "์˜๋„๋ถ€ํ„ฐ ํ™•์ •ํ•˜์ž", "grill me / ์ด ๊ณ„ํš ์‹ฌ๋ฌธํ•ด์ค˜ / ์ŠคํŠธ๋ ˆ์Šค ํ…Œ์ŠคํŠธ", "๊ฐ™์ด brainstorm ํ•˜์ž / ์„ค๊ณ„ ๊ฐ™์ด ์žก์ž" ๊ฐ™์€ ์š”์ฒญ์— ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์Šฌ๋ž˜์‹œ๋กœ ์ง์ ‘ ํ˜ธ์ถœํ•˜๊ฑฐ๋‚˜ ๋ชจ๋ธ์ด ๋ชจํ˜ธํ•œ ์š”์ฒญ์„ ๊ฐ์ง€ํ•˜๋ฉด ์‚ฌ์šฉ์„ ์ œ์•ˆํ•˜๋ฉฐ, quick(์˜๋„ ํ™•์ •)ยทgrill(๊ธฐ์กด ๊ณ„ํš ์‹ฌ๋ฌธ)ยทbrainstorm(๋ฌด์—์„œ ์„ค๊ณ„) ๋ชจ๋“œ๋กœ ๋ผ์šฐํŒ…ํ•ฉ๋‹ˆ๋‹ค. +description: ์ž‘์—… ์ฐฉ์ˆ˜ ์ „ ๊ณ„ํšยท์„ค๊ณ„๋ฅผ ์‚ฌ๋žŒ๊ณผ ๋Œ€ํ™”๋กœ ๋‹ค์ง€๋Š” ์ธํ„ฐ๋ทฐ ๋ฉ”ํƒ€์Šคํ‚ฌ. "grill me / ์ด ๊ณ„ํš ์‹ฌ๋ฌธํ•ด์ค˜ / ์ŠคํŠธ๋ ˆ์Šค ํ…Œ์ŠคํŠธํ•ด์ค˜", "๊ฐ™์ด brainstorm ํ•˜์ž / ์„ค๊ณ„ ๊ฐ™์ด ์žก์ž / ๋ง‰์—ฐํ•œ๋ฐ ๋ฐฉํ–ฅ ์žก์•„์ค˜" ๊ฐ™์€ ์š”์ฒญ์— ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์Šฌ๋ž˜์‹œ๋กœ ์ง์ ‘ ํ˜ธ์ถœํ•˜๊ฑฐ๋‚˜ ๋ชจ๋ธ์ด ๋ชจํ˜ธํ•œ ์š”์ฒญ์„ ๊ฐ์ง€ํ•˜๋ฉด ์‚ฌ์šฉ์„ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์€ ๊ธฐ์กด ๊ณ„ํš์„ ์‹ฌ๋ฌธ(grill)ํ•˜๊ณ , ๋ฌด์—์„œ ์„ค๊ณ„๋ฅผ ์‹œ์ž‘ํ•  ๋• brainstorm ์œผ๋กœ ์ „ํ™˜ํ•ฉ๋‹ˆ๋‹ค. version: 1.0.0 --- # interview -์ฝ”๋“œ๋ฅผ ๊ฑด๋“œ๋ฆฌ๊ธฐ **์ „์—** ์˜๋„ยท์ œ์•ฝยท์™„๋ฃŒ ๊ธฐ์ค€์„ ์‚ฌ๋žŒ๊ณผ ํ•ฉ์˜ํ•ด ์˜คํ•ด์™€ ์˜ค๋ฒ„์—”์ง€๋‹ˆ์–ด๋ง์„ ์ฐจ๋‹จํ•˜๋Š” ๋‹จ์ผ ์ง„์ž…์ ์ž…๋‹ˆ๋‹ค. atelier ์˜ **์„ค๊ณ„ ์ตœ์šฐ์„ (Design First)** ์›์น™์„ ๋Œ€ํ™” ๋‹จ๊ณ„์—์„œ ๊ฐ•์ œํ•ฉ๋‹ˆ๋‹ค. +์ฝ”๋“œ๋ฅผ ๊ฑด๋“œ๋ฆฌ๊ธฐ ์ „์— ๊ณ„ํšยท์„ค๊ณ„๋ฅผ ์‚ฌ๋žŒ๊ณผ ๋Œ€ํ™”๋กœ ๋‹ค์ง„๋‹ค. ๋‘ ๋ชจ๋“œ๊ฐ€ ์žˆ๋‹ค. -์‚ฌ์šฉ์ž๊ฐ€ interview ์Šฌ๋ž˜์‹œ๋กœ ์ง„์ž…ํ•˜๊ฑฐ๋‚˜ ๋ชจ๋ธ์ด ๋งฅ๋ฝ์—์„œ ์ž๋™ ํ˜ธ์ถœํ•˜๋ฉฐ, ์ž์—ฐ์–ด ์˜๋„๋ฅผ ๋ถ„๋ฅ˜ํ•ด ์•„๋ž˜ ๋ชจ๋“œ๋กœ ๋””์ŠคํŒจ์น˜ํ•ฉ๋‹ˆ๋‹ค. - -## ์ง„์ž… ๋ผ์šฐํŒ… (์˜๋„ โ†’ ๋ชจ๋“œ) - -| ์‚ฌ์šฉ์ž ์˜๋„ (์˜ˆ) | ๋ชจ๋“œ | ๋กœ๋“œํ•  reference | +| ์˜๋„ | ๋ชจ๋“œ | ๋™์ž‘ | |---|---|---| -| "์ด๊ฑฐ ์ •๋ฆฌ/๊ฐœ์„ ํ•ด์ค˜"(๋ชจํ˜ธ), "๋ญ๋ถ€ํ„ฐ ํ• ์ง€ ์˜๋„๋ถ€ํ„ฐ", ๋‹จ๋ฐœ ์ž‘์—… ์ฐฉ์ˆ˜ | `quick` (๊ธฐ๋ณธ) | (์ธ๋ผ์ธ) | -| "grill me", "์ด ๊ณ„ํš ์‹ฌ๋ฌธํ•ด์ค˜", "๋‚ด plan ์ŠคํŠธ๋ ˆ์Šค ํ…Œ์ŠคํŠธ", ๊ธฐ์กด ์„ค๊ณ„ ๊ฒ€์ฆ | `grill` | `references/grill.md` | -| "๊ฐ™์ด brainstorm", "์„ค๊ณ„ ๊ฐ™์ด ์žก์ž", "๋ง‰์—ฐํ•œ๋ฐ ๋ฐฉํ–ฅ ์žก์•„์ค˜", ๋ฌด์—์„œ ์„ค๊ณ„ | `brainstorm` | `references/brainstorm.md` | - -์ž…๋ ฅ ์ธ์ž(๋Œ€์ƒ ํŒŒ์ผยท๊ธฐ์กด plan ๊ฒฝ๋กœ ๋“ฑ)๊ฐ€ ํ•จ๊ป˜ ์˜ค๋ฉด ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•˜๊ณ , ์—†์œผ๋ฉด ์ง์ ‘ ๋ฌป์Šต๋‹ˆ๋‹ค. ๊ฒฐ์ •์  ๋™์ž‘์€ ์—†์œผ๋ฉฐ ์ „๋ถ€ **ํŒ๋‹จ/๋Œ€ํ™”**์ž…๋‹ˆ๋‹ค. - -## ๊ณตํ†ต ์›์น™ (3๋ชจ๋“œ ๊ณต์œ ) - -1. **์งˆ๋ฌธ์€ ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์”ฉ** โ€” ํ•œ๊บผ๋ฒˆ์— ์Ÿ์ง€ ์•Š๋Š”๋‹ค. ๋‹ต์„ ๋ฐ›์•„ ๋‹ค์Œ ๊ฐ€์ง€๋ฅผ ์ •ํ•œ๋‹ค. -2. **๊ฐ ์งˆ๋ฌธ๋งˆ๋‹ค ์ถ”์ฒœ ๋‹ต์„ ํ•จ๊ป˜ ์ œ์‹œ** โ€” ์‚ฌ์šฉ์ž๊ฐ€ 0๋ถ€ํ„ฐ ์ƒ๊ฐํ•˜์ง€ ์•Š๊ฒŒ, "๋‚ด ์ถ”์ฒœ์€ X (์ด์œ )" ํ˜•ํƒœ๋กœ default ๋ฅผ ์ œ์•ˆ. -3. **์ฝ”๋“œ๋ฒ ์ด์Šค๋กœ ๋‹ตํ•  ์ˆ˜ ์žˆ์œผ๋ฉด ์งˆ๋ฌธํ•˜์ง€ ๋ง๊ณ  ํƒ์ƒ‰ํ•œ๋‹ค** โ€” prior artยท๊ธฐ์กด ์ปจ๋ฒค์…˜ยท์˜ํ–ฅ ๋ฒ”์œ„๋Š” Grep/Read ๋กœ ์ง์ ‘ ํ™•์ธ ํ›„ ์‚ฌ์‹ค๋กœ ์ œ์‹œ. ์‚ฌ๋žŒ์˜ ์‹œ๊ฐ„์€ *ํŒ๋‹จ์ด ํ•„์š”ํ•œ ์ง€์ *์—๋งŒ ์“ด๋‹ค. -4. **์Šน์ธ ์ „ ๊ตฌํ˜„ ๊ธˆ์ง€ (Hard Gate)** โ€” ๋ฏธ๋‹ˆ ๋ช…์„ธ/์„ค๊ณ„๋ฅผ ์ œ์‹œํ•˜๊ณ  ์‚ฌ์šฉ์ž๊ฐ€ "go"(๋˜๋Š” ์Šน์ธ)ํ•˜๊ธฐ ์ „์—๋Š” ์ฝ”๋“œ ์ž‘์„ฑยท์Šค์บํด๋”ฉยทํŒŒ์ผ ๋ณ€๊ฒฝ์„ ์‹œ์ž‘ํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ž‘์—…์ด ๋‹จ์ˆœํ•ด ๋ณด์—ฌ๋„ ๋™์ผํ•˜๊ฒŒ ์ ์šฉํ•œ๋‹ค. - -## quick ๋ชจ๋“œ (๊ธฐ๋ณธ) โ€” RG-CN-A ์˜๋„ ํ™•์ • +| ์ด๋ฏธ ๊ณ„ํš/์„ค๊ณ„/์ ‘๊ทผ์•ˆ์ด ์žˆ๊ณ  ๋นˆํ‹ˆ์„ ์ฐพ๊ณ  ์‹ถ๋‹ค (๊ธฐ๋ณธ) | grill | ์•„๋ž˜ ์ธ๋ผ์ธ ์ง€์‹œ | +| ์•„์ง ๊ตฌ์ฒด์•ˆ์ด ์—†์–ด ๋ฌด์—์„œ ์„ค๊ณ„๋ฅผ ์‹œ์ž‘ํ•œ๋‹ค | brainstorm | `references/brainstorm.md` ๋กœ๋“œ | -๋‹จ๋ฐœ ์ž‘์—…์˜ ์˜๋„๋ฅผ 3โ€“5๋ถ„ ์•ˆ์— ํ™•์ •ํ•œ๋‹ค. ์•„๋ž˜ 5๊ฐœ ์ถ•์„ **์ˆœ์„œ๋Œ€๋กœ, ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์”ฉ** ํ™•์ธํ•˜๋˜, ์ฝ”๋“œ๋ฒ ์ด์Šค๋กœ ๋‹ต ๊ฐ€๋Šฅํ•œ ํ•ญ๋ชฉ์€ ๋จผ์ € ํƒ์ƒ‰ํ•ด "๋‚ด๊ฐ€ ํ™•์ธํ•œ ์‚ฌ์‹ค"๋กœ ์ œ์‹œํ•˜๊ณ  ์‚ฌ์šฉ์ž์—๊ฒ ํŒ๋‹จ๋งŒ ์š”์ฒญํ•œ๋‹ค. +์š”์ฒญ์ด "๋ง‰์—ฐํ•œ ์•„์ด๋””์–ด โ†’ ์„ค๊ณ„"๋ฉด brainstorm, "์ด ๊ณ„ํš ๊ฒ€์ฆ/์‹ฌ๋ฌธ"์ด๋ฉด grill ์ด๋‹ค. ํ—ท๊ฐˆ๋ฆฌ๋ฉด ์‚ฌ์šฉ์ž์—๊ฒŒ ํ•œ ๋ฒˆ ํ™•์ธํ•œ๋‹ค. -``` -R(estate) โ€” ๋‚ด๊ฐ€ ์ดํ•ดํ•œ ์š”์ฒญ = ... (2~3 bullet ๋กœ ์žฌ์ง„์ˆ ) -G(oal) โ€” ์ง„์งœ ๋‹ฌ์„ฑํ•˜๋ ค๋Š” ๊ฑด? ์™œ ์ด๊ฑธ ํ•˜๋Š”๊ฐ€ -C(onstraints) โ€” ์ง€์ผœ์•ผ ํ•  ์ปจ๋ฒค์…˜/์ œ์•ฝ? (์žˆ์œผ๋ฉด ์ฝ”๋“œ๋ฒ ์ด์Šค์—์„œ ๋จผ์ € ํƒ์ƒ‰) -N(on-goals) โ€” ๋ช…์‹œ์ ์œผ๋กœ ์•ˆ ๊ฑด๋“œ๋ฆด ๊ฒƒ? -A(cceptance) โ€” "์™„๋ฃŒ" ํŒ์ • ๊ธฐ์ค€? -``` +## grill (๊ธฐ๋ณธ) -์˜ต์…˜ ํ•ญ๋ชฉ (5์ถ• ์‚ฌ์ด์˜ ๊ณ ์ • ์œ„์น˜์— ์‚ฝ์ž…): -- **Prior art**: C(onstraints) ํ™•์ธ **์ „์—** ์ฝ”๋“œ๋ฒ ์ด์Šค๋ฅผ ์ง์ ‘ ํƒ์ƒ‰ํ•ด ๋น„์Šทํ•œ ํŒจํ„ด์„ ์‚ฌ์‹ค๋กœ ์ œ์‹œ (์งˆ๋ฌธ ์•„๋‹˜) -- **Risk surface**: A(cceptance) ๊นŒ์ง€ ๋๋‚œ **๋’ค**, ๋‹ค์ค‘ ํ•ด์„ยท๋„“์€ ์˜ํ–ฅ ๊ฐ™์€ ์œ„ํ—˜ ์‹ ํ˜ธ๊ฐ€ ๋‚จ์•„ ์žˆ์œผ๋ฉด ๋งˆ์ง€๋ง‰ 1ํšŒ "๊ฐ€์žฅ ์œ„ํ—˜ํ•œ ์˜คํ•ด ํ›„๋ณด"๋ฅผ ํ™•์ธ +์ด ๊ณ„ํš์˜ ๋ชจ๋“  ์ธก๋ฉด์— ๋Œ€ํ•ด **๊ณต์œ ๋œ ์ดํ•ด์— ๋„๋‹ฌํ•  ๋•Œ๊นŒ์ง€ ์ง‘์š”ํ•˜๊ฒŒ ์ธํ„ฐ๋ทฐํ•˜๋ผ**. ์„ค๊ณ„ ํŠธ๋ฆฌ์˜ ๊ฐ ๊ฐ€์ง€๋ฅผ ๋‚ด๋ ค๊ฐ€๋ฉฐ, ๊ฒฐ์ • ์‚ฌ์ด์˜ ์˜์กด์„ฑ์„ ํ•˜๋‚˜์”ฉ ํ•ด์†Œํ•˜๋ผ. ๊ฐ ์งˆ๋ฌธ๋งˆ๋‹ค ์ถ”์ฒœ ๋‹ต์„ ํ•จ๊ป˜ ์ œ์‹œํ•˜๋ผ. -### quick ์‚ฐ์ถœ๋ฌผ โ€” 5์ค„ ๋ฏธ๋‹ˆ ๋ช…์„ธ -ํ™•์ธ์ด ๋๋‚˜๋ฉด ์•„๋ž˜๋ฅผ ์ถœ๋ ฅํ•˜๊ณ  ์‚ฌ์šฉ์ž์˜ "go" ๋ฅผ ๊ธฐ๋‹ค๋ฆฐ๋‹ค. +์งˆ๋ฌธ์€ ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์”ฉ๋งŒ ํ•˜๋ผ. -``` -์š”์ฒญ(R): ... -๋ชฉํ‘œ(G): ... -์ œ์•ฝ(C): ... -๋น„๋ชฉํ‘œ(N): ... -์™„๋ฃŒ(A): ... -โ†’ ์ด๋Œ€๋กœ ์ง„ํ–‰ํ• ๊นŒ์š”? ("go" ๋˜๋Š” ์ˆ˜์ •์‚ฌํ•ญ) -``` +์งˆ๋ฌธ์ด ์ฝ”๋“œ๋ฒ ์ด์Šค ํƒ์ƒ‰์œผ๋กœ ๋‹ตํ•ด์งˆ ์ˆ˜ ์žˆ๋‹ค๋ฉด, ๋ฌป์ง€ ๋ง๊ณ  ์ฝ”๋“œ๋ฒ ์ด์Šค๋ฅผ ํƒ์ƒ‰ํ•˜๋ผ. -## ์ž๋™ ๋ฐœ๋™ ํŠธ๋ฆฌ๊ฑฐ (๋ชจ๋ธ์ด ํ˜ธ์ถœ ์ œ์•ˆ) +### ์ข…๋ฃŒ์™€ ํ•ธ๋“œ์˜คํ”„ -๋‹ค์Œ ์‹ ํ˜ธ ์ค‘ ํ•˜๋‚˜ ์ด์ƒ์ด๋ฉด ์‚ฌ์šฉ์ž์—๊ฒŒ interview ์‚ฌ์šฉ์„ **์ œ์•ˆ**ํ•œ๋‹ค (๊ฐ•์ œํ•˜์ง€ ์•Š์Œ): -- ๋™์‚ฌ๊ฐ€ ์ถ”์ƒ์ : "์ •๋ฆฌ", "๊ฐœ์„ ", "์ตœ์ ํ™”", "๋ฆฌํŒฉํ„ฐ" -- ๊ฐ์ฒด๊ฐ€ ๋ชจํ˜ธํ•˜๊ฑฐ๋‚˜ ๋‹ค์ค‘ ํ•ด์„ ๊ฐ€๋Šฅ -- ์˜ํ–ฅ ๋ฒ”์œ„๊ฐ€ 5+ ํŒŒ์ผ๋กœ ์ถ”์ •๋จ -- ์ƒˆ ๊ธฐ๋Šฅ/๋ฆฌํŒฉํ„ฐ ํ‚ค์›Œ๋“œ + ์ปจ๋ฒค์…˜ยท์ œ์•ฝ ๋ฏธ์–ธ๊ธ‰ - -## Skip ์กฐ๊ฑด (๋ฐœ๋™ํ•˜์ง€ ์•Š์Œ) - -- ํ•œ ์ค„ ์ˆ˜์ •, ์˜คํƒ€, ๋‹จ์ˆœ ์กฐํšŒ -- ์‚ฌ์šฉ์ž๊ฐ€ "๊ทธ๋ƒฅ ํ•ด" ๋ฅ˜ ๋น ๋ฅธ ์ง„ํ–‰์„ ๋ช…์‹œ -- ์ด๋ฏธ Plan Mode / `spec` ์„ค๊ณ„์— ์ง„์ž…ํ•œ ์ƒํƒœ (์ค‘๋ณต ๊ฒŒ์ดํŠธ ๋ฐฉ์ง€) - -## ์ฑ…์ž„ ๊ฒฝ๊ณ„ (์ค‘๋ณต ๋ฐฉ์ง€) - -| ๋Œ€์ƒ | interview ์™€์˜ ์ฐจ์ด | ํ•ธ๋“œ์˜คํ”„ | -|---|---|---| -| `spec:design` | ๋ถ„๊ธฐ๋Š” **์ƒํƒœ ๊ธฐ์ค€**: ์˜๋„ยท์š”๊ตฌ์‚ฌํ•ญ์ด ์•„์ง ๋ชจํ˜ธํ•˜๋ฉด interview, ์˜๋„๋Š” ํ•ฉ์˜๋๊ณ  ์•„ํ‚คํ…์ฒ˜ ๊ตฌ์กฐ(๋‹ค์ค‘ ์ปดํฌ๋„ŒํŠธ)๋ฅผ ์žก๋Š” ๋‹จ๊ณ„๋ฉด spec:design. brainstorm ๋„ ์„ค๊ณ„ ๋ฌธ์„œ๋ฅผ ์‚ฐ์ถœํ•˜์ง€๋งŒ **๋‹จ์ผ ์ž‘์—… ๋ฒ”์œ„**์ด๋ฉฐ `related_paths` frontmatter ๋กœ spec ์Šคํ‚ฌ์ด ์†Œ๋น„ ๊ฐ€๋Šฅํ•œ ํ˜•์‹์œผ๋กœ ์“ด๋‹ค | brainstorm ์ค‘ ์•„ํ‚คํ…์ฒ˜/๋‹ค์ค‘ ์ปดํฌ๋„ŒํŠธ ๊ทœ๋ชจ๋กœ ํŒ๋ช…๋˜๋ฉด `spec:design` ์œผ๋กœ ์—์Šค์ปฌ๋ ˆ์ดํŠธ. ์—ญ๋ฐฉํ–ฅ: spec:design ์ง„์ž… ์‹œ ์˜๋„๊ฐ€ ์•„์ง ๋ชจํ˜ธํ•˜๋ฉด interview ๋ฅผ ๋จผ์ € ๊ถŒํ•œ๋‹ค | -| Plan Mode | interview ๋Š” *๋ฌด์—‡์„/์™œ*(์˜๋„). Plan Mode ๋Š” *์–ด๋–ป๊ฒŒ*(์ฝ”๋“œ ๋ณ€๊ฒฝ ๋‹จ๊ณ„ ์„ค๊ณ„) | quick/brainstorm ์œผ๋กœ ์˜๋„๊ฐ€ ํ™•์ •๋˜๊ณ  ์ฝ”๋“œ ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•˜๋ฉด Plan Mode ๋กœ ๋„˜๊ธด๋‹ค | -| `autopilot` | ์ž์œจ ๋ฃจํ”„์™€ ๋ฌด๊ด€. interview ๋Š” ์‚ฌ๋žŒโ†”์—์ด์ „ํŠธ ๋Œ€ํ™” ์ „์šฉ | ํ•ด๋‹น ์—†์Œ | +๋ชจ๋“  ๊ฐ€์ง€๊ฐ€ ํ•ด์†Œ๋˜๋ฉด(๋˜๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ถฉ๋ถ„ํ•˜๋‹ค๊ณ  ํ•˜๋ฉด) ํ•ฉ์˜๋œ ๊ฒฐ์ • ๋ชฉ๋ก์„ ์š”์•ฝํ•œ๋‹ค. ์ฝ”๋“œ ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•˜๋ฉด Plan Mode ๋กœ, ์•„ํ‚คํ…์ฒ˜ ๊ทœ๋ชจ๋ฉด `spec:design` ์œผ๋กœ ํ•ธ๋“œ์˜คํ”„ํ•œ๋‹ค. ํ•ฉ์˜ ์ „์—๋Š” ๊ตฌํ˜„์„ ์‹œ์ž‘ํ•˜์ง€ ์•Š๋Š”๋‹ค. -## references ๋กœ๋“œ ๊ฐ€์ด๋“œ +## ์ฑ…์ž„ ๊ฒฝ๊ณ„ -| reference | ์–ธ์ œ ๋กœ๋“œ | ๋‚ด์šฉ | +| ๋Œ€์ƒ | ์ฐจ์ด | ํ•ธ๋“œ์˜คํ”„ | |---|---|---| -| `references/grill.md` | ๊ธฐ์กด plan/design ์„ ์‹ฌ๋ฌธ(`grill`)ํ•  ๋•Œ | ์‹ฌ๋ฌธ ์ง€์‹œ๋ฌธ(์„ค๊ณ„ ํŠธ๋ฆฌ ๊ฐ€์ง€๋ณ„ ํ•ด์†Œยท์ถ”์ฒœ ๋‹ตยทํ•œ ๋ฒˆ์— ํ•˜๋‚˜ยท์ฝ”๋“œ ํƒ์ƒ‰ ์šฐ์„ ) + ์ข…๋ฃŒ/ํ•ธ๋“œ์˜คํ”„ | -| `references/brainstorm.md` | ๋ฌด์—์„œ ์„ค๊ณ„(`brainstorm`)ํ•  ๋•Œ | ์ถฉ์‹ค ํฌํŒ…๋œ ์ „์ฒด ํ”Œ๋กœ์šฐ: HARD-GATEยท"๋‹จ์ˆœํ•จ" ์•ˆํ‹ฐํŒจํ„ดยทtask ์ฒดํฌ๋ฆฌ์ŠคํŠธยท์Šค์ฝ”ํ”„ ๋ถ„ํ•ด ํŒ์ • โ†’ ๋ช…ํ™•ํ™”(๊ฐ๊ด€์‹ ์„ ํ˜ธ) โ†’ 2โ€“3 ์ ‘๊ทผ๋ฒ• โ†’ ์„น์…˜๋ณ„ ์„ค๊ณ„(๊ฒฉ๋ฆฌ ์„ค๊ณ„ยท๊ธฐ์กด ์ฝ”๋“œ ๊ทœ์œจ) โ†’ ์„ค๊ณ„ ๋ฌธ์„œ(related_paths)ยทself-reviewยท์‚ฌ์šฉ์ž ๋ฆฌ๋ทฐ ๊ฒŒ์ดํŠธ โ†’ Plan Mode ์ „ํ™˜ยท์‹œ๊ฐ ์ž๋ฃŒ | +| `spec:design` | ์˜๋„ยท์š”๊ตฌ์‚ฌํ•ญ์ด ์•„์ง ๋ชจํ˜ธํ•˜๋ฉด interview, ์˜๋„๋Š” ํ•ฉ์˜๋๊ณ  ์•„ํ‚คํ…์ฒ˜ ๊ตฌ์กฐ(๋‹ค์ค‘ ์ปดํฌ๋„ŒํŠธ)๋ฅผ ์žก๋Š” ๋‹จ๊ณ„๋ฉด spec:design. brainstorm ๋„ ์„ค๊ณ„ ๋ฌธ์„œ๋ฅผ ์‚ฐ์ถœํ•˜์ง€๋งŒ **๋‹จ์ผ ์ž‘์—… ๋ฒ”์œ„**์ด๋ฉฐ `related_paths` frontmatter ๋กœ spec ์Šคํ‚ฌ์ด ์†Œ๋น„ ๊ฐ€๋Šฅํ•œ ํ˜•์‹์œผ๋กœ ์“ด๋‹ค | brainstorm ์ค‘ ์•„ํ‚คํ…์ฒ˜/๋‹ค์ค‘ ์ปดํฌ๋„ŒํŠธ ๊ทœ๋ชจ๋กœ ํŒ๋ช…๋˜๋ฉด `spec:design` ์œผ๋กœ ์—์Šค์ปฌ๋ ˆ์ดํŠธ | +| Plan Mode | interview ๋Š” *๋ฌด์—‡์„/์™œ*(์˜๋„ยท์„ค๊ณ„ ํ•ฉ์˜), Plan Mode ๋Š” *์–ด๋–ป๊ฒŒ*(์ฝ”๋“œ ๋ณ€๊ฒฝ ๋‹จ๊ณ„) | ์˜๋„๊ฐ€ ํ™•์ •๋˜๊ณ  ์ฝ”๋“œ ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•˜๋ฉด Plan Mode ๋กœ ๋„˜๊ธด๋‹ค | +| `autopilot` | ์ž์œจ ๋ฃจํ”„์™€ ๋ฌด๊ด€, ์‚ฌ๋žŒโ†”์—์ด์ „ํŠธ ๋Œ€ํ™” ์ „์šฉ | ํ•ด๋‹น ์—†์Œ | ## ์ถœ์ฒ˜ -`grill`/`brainstorm` ๋ชจ๋“œ๋Š” [obra/superpowers](https://github.com/obra/superpowers) (MIT License, ยฉ 2025 Jesse Vincent) ์˜ `grill-me`ยท`brainstorming` ์Šคํ‚ฌ์ด ์›๋ณธ์ž…๋‹ˆ๋‹ค. grill ์€ ์›๋ณธ ์ง€์‹œ๋ฌธ์„ ๋ณด์กดํ–ˆ๊ณ , brainstorm ์€ ์ƒํƒœ๊ณ„ ๋ฐ”์ธ๋”ฉ 4๊ณณ(writing-plansโ†’Plan Mode, browser visual companionโ†’AskUserQuestionยทmarkdown ๋‹ค์ด์–ด๊ทธ๋žจ, ์ฒดํฌ๋ฆฌ์ŠคํŠธโ†’TaskCreate, ๋ฌธ์„œ ์œ„์น˜โ†’ํ”„๋กœ์ ํŠธ spec ์ปจ๋ฒค์…˜)๋งŒ ์น˜ํ™˜ํ•œ ์ถฉ์‹ค ํฌํŒ…์ž…๋‹ˆ๋‹ค. MIT ๊ณ ์ง€๋Š” `references/brainstorm.md` ๋จธ๋ฆฌ์— ๋ช…์‹œ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. +`grill`ยท`brainstorm` ์€ [obra/superpowers](https://github.com/obra/superpowers) (MIT License, ยฉ 2025 Jesse Vincent) ์˜ `grill-me`ยท`brainstorming` ์Šคํ‚ฌ์ด ์›๋ณธ์ž…๋‹ˆ๋‹ค. grill ์€ ์›๋ณธ ์ง€์‹œ๋ฌธ์„ ๋ณด์กดํ–ˆ๊ณ , brainstorm ์€ ์ƒํƒœ๊ณ„ ๋ฐ”์ธ๋”ฉ 4๊ณณ(writing-plansโ†’Plan Mode, browser visual companionโ†’AskUserQuestionยทmarkdown ๋‹ค์ด์–ด๊ทธ๋žจ, ์ฒดํฌ๋ฆฌ์ŠคํŠธโ†’TaskCreate, ๋ฌธ์„œ ์œ„์น˜โ†’ํ”„๋กœ์ ํŠธ spec ์ปจ๋ฒค์…˜)๋งŒ ์น˜ํ™˜ํ•œ ์ถฉ์‹ค ํฌํŒ…์ž…๋‹ˆ๋‹ค. MIT ๊ณ ์ง€๋Š” `references/brainstorm.md` ๋จธ๋ฆฌ์— ๋ช…์‹œ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. diff --git a/plugins/atelier/skills/interview/references/grill.md b/plugins/atelier/skills/interview/references/grill.md deleted file mode 100644 index 9ab722e3..00000000 --- a/plugins/atelier/skills/interview/references/grill.md +++ /dev/null @@ -1,15 +0,0 @@ -# interview โ€” grill ๋ชจ๋“œ - -๊ธฐ์กด plan/design ์„ ์ง‘์š”ํ•˜๊ฒŒ ์‹ฌ๋ฌธํ•ด ๊ณต์œ ๋œ ์ดํ•ด์— ๋„๋‹ฌํ•œ๋‹ค. - -## ์ง€์‹œ - -์ด ๊ณ„ํš์˜ ๋ชจ๋“  ์ธก๋ฉด์— ๋Œ€ํ•ด **๊ณต์œ ๋œ ์ดํ•ด์— ๋„๋‹ฌํ•  ๋•Œ๊นŒ์ง€ ์ง‘์š”ํ•˜๊ฒŒ ์ธํ„ฐ๋ทฐํ•˜๋ผ**. ์„ค๊ณ„ ํŠธ๋ฆฌ์˜ ๊ฐ ๊ฐ€์ง€๋ฅผ ๋‚ด๋ ค๊ฐ€๋ฉฐ, ๊ฒฐ์ • ์‚ฌ์ด์˜ ์˜์กด์„ฑ์„ ํ•˜๋‚˜์”ฉ ํ•ด์†Œํ•˜๋ผ. ๊ฐ ์งˆ๋ฌธ๋งˆ๋‹ค ์ถ”์ฒœ ๋‹ต์„ ํ•จ๊ป˜ ์ œ์‹œํ•˜๋ผ. - -์งˆ๋ฌธ์€ ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์”ฉ๋งŒ ํ•˜๋ผ. - -์งˆ๋ฌธ์ด ์ฝ”๋“œ๋ฒ ์ด์Šค ํƒ์ƒ‰์œผ๋กœ ๋‹ตํ•ด์งˆ ์ˆ˜ ์žˆ๋‹ค๋ฉด, ๋ฌป์ง€ ๋ง๊ณ  ์ฝ”๋“œ๋ฒ ์ด์Šค๋ฅผ ํƒ์ƒ‰ํ•˜๋ผ. - -## ์ข…๋ฃŒ์™€ ํ•ธ๋“œ์˜คํ”„ - -๋ชจ๋“  ๊ฐ€์ง€๊ฐ€ ํ•ด์†Œ๋˜๋ฉด(๋˜๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ถฉ๋ถ„ํ•˜๋‹ค๊ณ  ํ•˜๋ฉด) ํ•ฉ์˜๋œ ๊ฒฐ์ • ๋ชฉ๋ก์„ ์š”์•ฝํ•œ๋‹ค. ์ฝ”๋“œ ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•˜๋ฉด Plan Mode ๋กœ, ์•„ํ‚คํ…์ฒ˜ ๊ทœ๋ชจ๋ฉด `spec:design` ์œผ๋กœ ํ•ธ๋“œ์˜คํ”„ํ•œ๋‹ค. ํ•ฉ์˜ ์ „์—๋Š” ๊ตฌํ˜„์„ ์‹œ์ž‘ํ•˜์ง€ ์•Š๋Š”๋‹ค. From 1b0ce6d4b0ab1aac2d61433368f707f8d24b9c78 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EC=9A=A9=EC=84=B1?= Date: Sat, 13 Jun 2026 11:26:01 +0900 Subject: [PATCH 5/7] refactor(atelier): split design dialogue (interview) from spec authoring (spec write) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit spec:design bundled two concerns: the design *dialogue* (ping-pong + 6 perspectives + convergence) and the spec *document authoring* convention (DESIGN/concerns/flows templates). The dialogue overlapped with the new interview skill, leaving an ambiguous boundary. Resolve by concern: - interview owns the design dialogue (brainstorm: from-scratch, grill: challenge an existing plan) - spec owns document authoring: rename design/design-detail -> write/write-detail, reframe design-protocol.md -> authoring.md (depth criteria, output templates, related_paths, save rules) Remove the 6-perspective model (S/O/F/B/C/M) entirely: S/O/B duplicate CLAUDE.md SOLID and brainstorm's isolation/YAGNI lenses, F is covered by Fail Fast; concurrency/operability vary by goal and are added per-objective rather than as a fixed lens. The ping-pong loop and perspective-threshold convergence are dropped with it. brainstorm no longer defines its own doc format โ€” it defers to spec's write convention and only persists a doc when a long-lived spec is needed (otherwise the Plan Mode plan file carries the design). Cross-references updated: interview boundary table, spec routing/description/references guide, handoff lines. design-protocol.md removed; no residual referrers (verified). ๐Ÿค– Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- plugins/atelier/skills/interview/SKILL.md | 4 +- .../skills/interview/references/brainstorm.md | 11 +- plugins/atelier/skills/spec/SKILL.md | 10 +- .../skills/spec/references/authoring.md | 134 ++++++++++ .../skills/spec/references/design-protocol.md | 236 ------------------ 5 files changed, 147 insertions(+), 248 deletions(-) create mode 100644 plugins/atelier/skills/spec/references/authoring.md delete mode 100644 plugins/atelier/skills/spec/references/design-protocol.md diff --git a/plugins/atelier/skills/interview/SKILL.md b/plugins/atelier/skills/interview/SKILL.md index eff1021d..80365034 100644 --- a/plugins/atelier/skills/interview/SKILL.md +++ b/plugins/atelier/skills/interview/SKILL.md @@ -25,13 +25,13 @@ version: 1.0.0 ### ์ข…๋ฃŒ์™€ ํ•ธ๋“œ์˜คํ”„ -๋ชจ๋“  ๊ฐ€์ง€๊ฐ€ ํ•ด์†Œ๋˜๋ฉด(๋˜๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ถฉ๋ถ„ํ•˜๋‹ค๊ณ  ํ•˜๋ฉด) ํ•ฉ์˜๋œ ๊ฒฐ์ • ๋ชฉ๋ก์„ ์š”์•ฝํ•œ๋‹ค. ์ฝ”๋“œ ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•˜๋ฉด Plan Mode ๋กœ, ์•„ํ‚คํ…์ฒ˜ ๊ทœ๋ชจ๋ฉด `spec:design` ์œผ๋กœ ํ•ธ๋“œ์˜คํ”„ํ•œ๋‹ค. ํ•ฉ์˜ ์ „์—๋Š” ๊ตฌํ˜„์„ ์‹œ์ž‘ํ•˜์ง€ ์•Š๋Š”๋‹ค. +๋ชจ๋“  ๊ฐ€์ง€๊ฐ€ ํ•ด์†Œ๋˜๋ฉด(๋˜๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ถฉ๋ถ„ํ•˜๋‹ค๊ณ  ํ•˜๋ฉด) ํ•ฉ์˜๋œ ๊ฒฐ์ • ๋ชฉ๋ก์„ ์š”์•ฝํ•œ๋‹ค. ์ฝ”๋“œ ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•˜๋ฉด Plan Mode ๋กœ, ํ•ฉ์˜๋œ ์„ค๊ณ„๋ฅผ ์ŠคํŽ™ ๋ฌธ์„œ๋กœ ๋‚จ๊ฒจ์•ผ ํ•˜๋ฉด `spec` ์˜ `write` ๋กœ ํ•ธ๋“œ์˜คํ”„ํ•œ๋‹ค. ํ•ฉ์˜ ์ „์—๋Š” ๊ตฌํ˜„์„ ์‹œ์ž‘ํ•˜์ง€ ์•Š๋Š”๋‹ค. ## ์ฑ…์ž„ ๊ฒฝ๊ณ„ | ๋Œ€์ƒ | ์ฐจ์ด | ํ•ธ๋“œ์˜คํ”„ | |---|---|---| -| `spec:design` | ์˜๋„ยท์š”๊ตฌ์‚ฌํ•ญ์ด ์•„์ง ๋ชจํ˜ธํ•˜๋ฉด interview, ์˜๋„๋Š” ํ•ฉ์˜๋๊ณ  ์•„ํ‚คํ…์ฒ˜ ๊ตฌ์กฐ(๋‹ค์ค‘ ์ปดํฌ๋„ŒํŠธ)๋ฅผ ์žก๋Š” ๋‹จ๊ณ„๋ฉด spec:design. brainstorm ๋„ ์„ค๊ณ„ ๋ฌธ์„œ๋ฅผ ์‚ฐ์ถœํ•˜์ง€๋งŒ **๋‹จ์ผ ์ž‘์—… ๋ฒ”์œ„**์ด๋ฉฐ `related_paths` frontmatter ๋กœ spec ์Šคํ‚ฌ์ด ์†Œ๋น„ ๊ฐ€๋Šฅํ•œ ํ˜•์‹์œผ๋กœ ์“ด๋‹ค | brainstorm ์ค‘ ์•„ํ‚คํ…์ฒ˜/๋‹ค์ค‘ ์ปดํฌ๋„ŒํŠธ ๊ทœ๋ชจ๋กœ ํŒ๋ช…๋˜๋ฉด `spec:design` ์œผ๋กœ ์—์Šค์ปฌ๋ ˆ์ดํŠธ | +| `spec` | **๋Œ€ํ™” โ‰  ๋ฌธ์„œ**. interview ๋Š” ์„ค๊ณ„๋ฅผ *๋Œ€ํ™”๋กœ ํ•ฉ์˜*(brainstorm: ๋ฌด์—์„œ / grill: ๊ธฐ์กด ๊ณ„ํš ๋„์ „)ํ•˜๊ณ , spec(`write`)์€ *ํ•ฉ์˜๋œ ์„ค๊ณ„๋ฅผ ์ŠคํŽ™ ๋ฌธ์„œ๋กœ ํ˜•์‹ํ™”*(DESIGN/concerns/flows)ํ•˜๊ณ  ๋ฆฌ๋ทฐยท๊ฐญ ๋ถ„์„ํ•œ๋‹ค | ํ•ฉ์˜๋œ ์„ค๊ณ„๋ฅผ ์žฅ๊ธฐ ์ŠคํŽ™ ๋ฌธ์„œ๋กœ ๋‚จ๊ธธ ๋• spec `write` ๋กœ, ๋‹จ์ผ ์ž‘์—… ๊ตฌํ˜„์€ Plan Mode ๋กœ | | Plan Mode | interview ๋Š” *๋ฌด์—‡์„/์™œ*(์˜๋„ยท์„ค๊ณ„ ํ•ฉ์˜), Plan Mode ๋Š” *์–ด๋–ป๊ฒŒ*(์ฝ”๋“œ ๋ณ€๊ฒฝ ๋‹จ๊ณ„) | ์˜๋„๊ฐ€ ํ™•์ •๋˜๊ณ  ์ฝ”๋“œ ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•˜๋ฉด Plan Mode ๋กœ ๋„˜๊ธด๋‹ค | | `autopilot` | ์ž์œจ ๋ฃจํ”„์™€ ๋ฌด๊ด€, ์‚ฌ๋žŒโ†”์—์ด์ „ํŠธ ๋Œ€ํ™” ์ „์šฉ | ํ•ด๋‹น ์—†์Œ | diff --git a/plugins/atelier/skills/interview/references/brainstorm.md b/plugins/atelier/skills/interview/references/brainstorm.md index 3f0c8879..eea73a43 100644 --- a/plugins/atelier/skills/interview/references/brainstorm.md +++ b/plugins/atelier/skills/interview/references/brainstorm.md @@ -22,7 +22,7 @@ 3. **๋ช…ํ™•ํ™” ์งˆ๋ฌธ** โ€” ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์”ฉ, ๋ชฉ์ /์ œ์•ฝ/์„ฑ๊ณต ๊ธฐ์ค€ ์ดํ•ด 4. **2โ€“3๊ฐœ ์ ‘๊ทผ๋ฒ• ์ œ์•ˆ** โ€” trade-off ์™€ ์ถ”์ฒœ์•ˆ ํฌํ•จ 5. **์„ค๊ณ„ ์ œ์‹œ** โ€” ๋ณต์žก๋„์— ๋น„๋ก€ํ•œ ์„น์…˜ ๋‹จ์œ„, ์„น์…˜๋งˆ๋‹ค ์‚ฌ์šฉ์ž ๊ฒ€์ฆ -6. **์„ค๊ณ„ ๋ฌธ์„œ ์ž‘์„ฑ** โ€” ํ”„๋กœ์ ํŠธ spec ์ปจ๋ฒค์…˜ ์œ„์น˜์— ์ €์žฅํ•˜๊ณ  ์ปค๋ฐ‹ +6. **์„ค๊ณ„ ๋ฌธ์„œ ์ž‘์„ฑ** (์žฅ๊ธฐ ์ŠคํŽ™์ด ํ•„์š”ํ•  ๋•Œ๋งŒ) โ€” `spec` ์˜ `write` ์ปจ๋ฒค์…˜์„ ๋”ฐ๋ผ ์ž‘์„ฑยท์ปค๋ฐ‹ 7. **์ŠคํŽ™ self-review** โ€” placeholderยท๋ชจ์ˆœยท๋ชจํ˜ธํ•จยท์Šค์ฝ”ํ”„ ์ธ๋ผ์ธ ์ ๊ฒ€ 8. **์‚ฌ์šฉ์ž์˜ ์ŠคํŽ™ ๋ฆฌ๋ทฐ** โ€” ์ž‘์„ฑ๋œ ๋ฌธ์„œ๋ฅผ ์‚ฌ์šฉ์ž๊ฐ€ ๊ฒ€ํ† ํ•œ ๋’ค ์ง„ํ–‰ 9. **๊ตฌํ˜„ ์ „ํ™˜** โ€” Plan Mode ๋กœ ์ง„์ž…ํ•ด ๊ตฌํ˜„ ๊ณ„ํš ์ˆ˜๋ฆฝ @@ -103,11 +103,10 @@ digraph brainstorming { ## ์„ค๊ณ„ ์ดํ›„ -**๋ฌธ์„œํ™”:** +**๋ฌธ์„œํ™”:** (์žฅ๊ธฐ ์ŠคํŽ™ ๋ฌธ์„œ๊ฐ€ ํ•„์š”ํ•  ๋•Œ๋งŒ) -- ๊ฒ€์ฆ๋œ ์„ค๊ณ„(์ŠคํŽ™)๋ฅผ ํ”„๋กœ์ ํŠธ์˜ spec ์ปจ๋ฒค์…˜ ์œ„์น˜์— ์ž‘์„ฑํ•œ๋‹ค (์ปจ๋ฒค์…˜์ด ์—†์œผ๋ฉด ์‚ฌ์šฉ์ž์—๊ฒŒ ์œ„์น˜๋ฅผ ํ™•์ธํ•œ๋‹ค โ€” ์‚ฌ์šฉ์ž ์„ ํ˜ธ๊ฐ€ ํ•ญ์ƒ ์šฐ์„ ) -- frontmatter ์— **`related_paths`** ๋ฅผ ํฌํ•จํ•œ๋‹ค โ€” atelier `spec` ์Šคํ‚ฌ(๊ฐญ ๋ถ„์„ยท๋ฆฌ๋ทฐ)์ด ์ด ๋ฌธ์„œ๋ฅผ ๊ทธ๋Œ€๋กœ ์†Œ๋น„ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค -- ์„ค๊ณ„ ๋ฌธ์„œ๋ฅผ git ์›Œํฌํ”Œ๋กœ์šฐ ์ปจ๋ฒค์…˜์— ๋”ฐ๋ผ ์ปค๋ฐ‹ํ•œ๋‹ค +- ๋ฌธ์„œ ์ž‘์„ฑ์€ **`spec` ์Šคํ‚ฌ์˜ `write` ์ปจ๋ฒค์…˜**(`spec/references/authoring.md`)์„ ๋”ฐ๋ฅธ๋‹ค โ€” ๊นŠ์ด ๊ธฐ์ค€ยท์ถœ๋ ฅ ๊ตฌ์กฐ(DESIGN/concerns/flows)ยท`related_paths`ยท์ €์žฅ ๊ฒฝ๋กœ ๊ทœ์•ฝ์ด ๊ฑฐ๊ธฐ์— ์žˆ๋‹ค. brainstorm ์€ ํ•ฉ์˜๋œ ์„ค๊ณ„๋ฅผ ๊ทธ ์ปจ๋ฒค์…˜์œผ๋กœ ํ˜•์‹ํ™”ํ•œ๋‹ค (๋ฌธ์„œ ํ˜•์‹์„ ์ž์ฒด ์ •์˜ํ•˜์ง€ ์•Š๋Š”๋‹ค) +- ๋‹จ์ˆœ ์ž‘์—…์ด๋ผ ์žฅ๊ธฐ ์ŠคํŽ™์ด ๋ถˆํ•„์š”ํ•˜๋ฉด ์ด ๋‹จ๊ณ„๋ฅผ ๊ฑด๋„ˆ๋›ฐ๊ณ  ๋ฐ”๋กœ ๊ตฌํ˜„ ์ „ํ™˜์œผ๋กœ ๊ฐ„๋‹ค โ€” ์„ค๊ณ„๋Š” Plan Mode ์˜ plan ํŒŒ์ผ์ด ๋‹ด๋Š”๋‹ค **์ŠคํŽ™ self-review:** ์ŠคํŽ™ ๋ฌธ์„œ๋ฅผ ์“ด ๋’ค ์ƒˆ๋กœ์šด ๋ˆˆ์œผ๋กœ ๋ณธ๋‹ค: @@ -129,7 +128,7 @@ self-review ๊ฐ€ ๋๋‚˜๋ฉด ์ง„ํ–‰ ์ „์— ์‚ฌ์šฉ์ž์—๊ฒŒ ์ž‘์„ฑ๋œ ์ŠคํŽ™ ๋ฆฌ๋ทฐ **๊ตฌํ˜„ ์ „ํ™˜:** - **Plan Mode ๋กœ ์ง„์ž…**ํ•ด ์ƒ์„ธ ๊ตฌํ˜„ ๊ณ„ํš์„ ์ˆ˜๋ฆฝํ•œ๋‹ค -- ๋‹ค๋ฅธ ์Šคํ‚ฌ์„ ํ˜ธ์ถœํ•˜์ง€ ์•Š๋Š”๋‹ค. Plan Mode ๊ฐ€ ๋‹ค์Œ ๋‹จ๊ณ„๋‹ค. ์•„ํ‚คํ…์ฒ˜/๋‹ค์ค‘ ์ปดํฌ๋„ŒํŠธ ์ŠคํŽ™ ์ž‘์—…์œผ๋กœ ์ปค์กŒ์œผ๋ฉด `spec:design` ์œผ๋กœ ์—์Šค์ปฌ๋ ˆ์ดํŠธํ•œ๋‹ค +- ๋‹ค๋ฅธ ์Šคํ‚ฌ์„ ํ˜ธ์ถœํ•˜์ง€ ์•Š๋Š”๋‹ค. Plan Mode ๊ฐ€ ๋‹ค์Œ ๋‹จ๊ณ„๋‹ค. ํ•ฉ์˜๋œ ์„ค๊ณ„๋ฅผ ์žฅ๊ธฐ ์ŠคํŽ™ ๋ฌธ์„œ๋กœ ๋‚จ๊ฒจ์•ผ ํ•˜๋ฉด `spec` ์˜ `write` ๋กœ ํ˜•์‹ํ™”ํ•œ๋‹ค ## ํ•ต์‹ฌ ์›์น™ diff --git a/plugins/atelier/skills/spec/SKILL.md b/plugins/atelier/skills/spec/SKILL.md index 68bbb82f..a7f66813 100644 --- a/plugins/atelier/skills/spec/SKILL.md +++ b/plugins/atelier/skills/spec/SKILL.md @@ -1,6 +1,6 @@ --- name: spec -description: ์ŠคํŽ™ ์„ค๊ณ„ยท๋ฆฌ๋ทฐยท๊ฐญ ๋ถ„์„์˜ ๋‹จ์ผ ์ง„์ž…์ . "์ŠคํŽ™ ๋ฆฌ๋ทฐํ•ด์ค˜", "specโ†”code ๊ฐญ ๋ด์ค˜", "์„ค๊ณ„ํ•˜์ž/ํฐ๊ทธ๋ฆผ ์žก์ž", "์ปดํฌ๋„ŒํŠธ ์ƒ์„ธ ์„ค๊ณ„", "์™ธ๋ถ€ spec ์— related_paths ์ฃผ์„" ๊ฐ™์€ ์š”์ฒญ์— ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์Šฌ๋ž˜์‹œ๋กœ ์ง์ ‘ ํ˜ธ์ถœํ•˜๊ฑฐ๋‚˜ ๋งฅ๋ฝ์—์„œ ๋ชจ๋ธ์ด ์ž๋™ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค. L1(๊ด€์ฐฐ)โ†’L2(์ข…ํ•ฉ)โ†’audit(๊ฐ์‚ฌ) ๋ ˆ์ด์–ด๋กœ file:line ์ธ์šฉ ๊ธฐ๋ฐ˜ ๋ถ„์„. +description: ์ŠคํŽ™ ๋ฌธ์„œ ์ž‘์„ฑยท๋ฆฌ๋ทฐยท๊ฐญ ๋ถ„์„์˜ ๋‹จ์ผ ์ง„์ž…์ . "์ŠคํŽ™ ๋ฆฌ๋ทฐํ•ด์ค˜", "specโ†”code ๊ฐญ ๋ด์ค˜", "์ด ์„ค๊ณ„๋ฅผ ์ŠคํŽ™ ๋ฌธ์„œ๋กœ ์ ์–ด์ค˜/DESIGN.md ์ž‘์„ฑ", "์ปดํฌ๋„ŒํŠธ ์ŠคํŽ™ ์ž‘์„ฑ", "์™ธ๋ถ€ spec ์— related_paths ์ฃผ์„" ๊ฐ™์€ ์š”์ฒญ์— ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์Šฌ๋ž˜์‹œ๋กœ ์ง์ ‘ ํ˜ธ์ถœํ•˜๊ฑฐ๋‚˜ ๋งฅ๋ฝ์—์„œ ๋ชจ๋ธ์ด ์ž๋™ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค. ์„ค๊ณ„๋ฅผ ๋Œ€ํ™”๋กœ ํ•ฉ์˜ํ•˜๋Š” ๋‹จ๊ณ„๋Š” `interview` ์Šคํ‚ฌ์ด ๋‹ด๋‹นํ•˜๊ณ , spec ์€ ํ•ฉ์˜๋œ ์„ค๊ณ„๋ฅผ ๋ฌธ์„œ๋กœ ํ˜•์‹ํ™”ํ•ฉ๋‹ˆ๋‹ค. L1(๊ด€์ฐฐ)โ†’L2(์ข…ํ•ฉ)โ†’audit(๊ฐ์‚ฌ) ๋ ˆ์ด์–ด๋กœ file:line ์ธ์šฉ ๊ธฐ๋ฐ˜ ๋ถ„์„. --- # spec @@ -15,10 +15,12 @@ spec ์Šฌ๋ž˜์‹œ ๋˜๋Š” ๋ชจ๋ธ ์ž๋™ ํ˜ธ์ถœ๋กœ ์ง„์ž…ํ•˜๋ฉด, ์‚ฌ์šฉ์ž์˜ ์ž์—ฐ |---|---|---| | "์ŠคํŽ™ ๋ฆฌ๋ทฐ", "์ด spec ๋“ค ๊ฒ€์ฆ", ๋‹ค์ค‘ spec ๋Œ€์กฐ | spec-review (๋‹ค์ค‘ spec, L1 ๋ณ‘๋ ฌ) | file-observation โ†’ gap-audit-loop โ†’ report-format(spec-review) | | "๊ฐญ ๋ด์ค˜", "spec ๊ณผ code ์ฐจ์ด", ๋‹จ์ผ spec | gap-detect (๋‹จ์ผ spec, codeโ†”spec ์šฐ์„ ) | file-observation โ†’ gap-audit-loop โ†’ report-format(gap-detect) | -| "์„ค๊ณ„ํ•˜์ž", "ํฐ๊ทธ๋ฆผ", "์•„ํ‚คํ…์ฒ˜ ์žก์ž" | design (Big Picture ํ•‘ํ) | design-protocol | -| "์ปดํฌ๋„ŒํŠธ ์ƒ์„ธ", "์ด ํ๋ฆ„ ์„ค๊ณ„", concerns/flows | design-detail | design-protocol | +| "์ด ์„ค๊ณ„ ์ŠคํŽ™ ๋ฌธ์„œ๋กœ", "DESIGN.md ์ž‘์„ฑ", "ํฐ๊ทธ๋ฆผ ์ŠคํŽ™ ์ ์–ด์ค˜" | write (Big Picture DESIGN.md ์ž‘์„ฑ) | authoring | +| "์ปดํฌ๋„ŒํŠธ ์ŠคํŽ™ ์ž‘์„ฑ", "์ด ํ๋ฆ„ ๋ฌธ์„œํ™”", concerns/flows | write-detail (์ƒ์„ธ ์ŠคํŽ™ ์ž‘์„ฑ) | authoring | | "related_paths ์ฑ„์›Œ์ค˜", ์™ธ๋ถ€ spec ์ฃผ์„ | annotate | annotation | +> **์„ค๊ณ„๋ฅผ ์•„์ง ํ•ฉ์˜ํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด** (๋ง‰์—ฐํ•œ ์•„์ด๋””์–ด, ํฐ๊ทธ๋ฆผ ์žก๊ธฐ, ๊ธฐ์กด ๊ณ„ํš ๋„์ „) `interview` ์Šคํ‚ฌ์„ ๋จผ์ € ์“ด๋‹ค. spec ์˜ `write`/`write-detail` ์€ **ํ•ฉ์˜๋œ ์„ค๊ณ„๋ฅผ ๋ฌธ์„œ๋กœ ํ˜•์‹ํ™”**ํ•˜๋Š” ๋‹จ๊ณ„๋‹ค. + ์ž…๋ ฅ ์ธ์ž(spec ํŒŒ์ผ ๊ฒฝ๋กœ ๋“ฑ)๊ฐ€ ํ•จ๊ป˜ ์˜ค๋ฉด ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•˜๊ณ , ์—†์œผ๋ฉด AskUserQuestion ์œผ๋กœ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๊ฒฐ์ •์  ๋™์ž‘์€ ์—†์œผ๋ฉฐ(์ „๋ถ€ ํŒ๋‹จ/๋ถ„์„), ๋ชจ๋“  ๋ถ„์„์€ sub-agent ์— ์œ„์ž„ํ•ฉ๋‹ˆ๋‹ค. ์ŠคํŽ™ ๋ฌธ์„œ๋ฅผ ๋‹ค๋ฃจ๋Š” ์›Œํฌํ”Œ๋กœ์šฐ์˜ ํ”„๋กœํ† ์ฝœยท์ข…๋ฃŒ ์กฐ๊ฑดยท์ถœ๋ ฅ ํฌ๋งท์€ ์ด skill ์˜ `references/` ์—์„œ progressive disclosure ๋กœ ๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค. @@ -50,7 +52,7 @@ spec ์Šฌ๋ž˜์‹œ ๋˜๋Š” ๋ชจ๋ธ ์ž๋™ ํ˜ธ์ถœ๋กœ ์ง„์ž…ํ•˜๋ฉด, ์‚ฌ์šฉ์ž์˜ ์ž์—ฐ | `references/file-observation.md` | L1 spawn + ์ธ์šฉ ๊ฒ€์ฆ + ํ”ผ๋“œ๋ฐฑ ๋ฃจํ”„ ์ˆ˜ํ–‰ ์‹œ | file-pair-observer ์ž…๋ ฅ ํ”„๋กฌํ”„ํŠธ, ์ธ์šฉ ๊ฒ€์ฆ ์ ˆ์ฐจ, ํ”ผ๋“œ๋ฐฑ ๋ฃจํ”„ ์•Œ๊ณ ๋ฆฌ์ฆ˜/์ข…๋ฃŒ ์กฐ๊ฑด, drop ๋กœ๊ทธ | | `references/gap-audit-loop.md` | L2 ์ข…ํ•ฉ + audit ๊ฐ์‚ฌ ์ˆ˜ํ–‰ ์‹œ | gap-aggregator ์ž…๋ ฅ, gap-auditor ๋‹จ์ผ ๊ฒŒ์ดํŠธ, audit ๋ฃจํ”„ ์ •์ฑ…, fix request ํ˜•์‹, ์‹คํŒจ ๋ชจ๋“œ | | `references/report-format.md` | ์ตœ์ข… ๋ฆฌํฌํŠธ ์ถœ๋ ฅ ์‹œ | spec-review / gap-detect ์ถœ๋ ฅ ๊ตฌ์กฐ, ๊ฒ€์ฆ ํ†ต๊ณ„ footer, Output Examples | -| `references/design-protocol.md` | ๋Œ€ํ™”ํ˜• ์„ค๊ณ„(`design`/`design-detail`) ์‹œ | ํ•‘ํ ๋ฃจํ”„, 6๊ฐœ ๊ด€์ , ์ˆ˜๋ ด ํŒ๋‹จ, ์ถœ๋ ฅ ๊ตฌ์กฐ | +| `references/authoring.md` | ์ŠคํŽ™ ๋ฌธ์„œ ์ž‘์„ฑ(`write`/`write-detail`) ์‹œ | ์ง„์ž… ์ „ ๋งฅ๋ฝ, ๊นŠ์ด ๊ธฐ์ค€, ์ž‘์„ฑ ์›์น™, ์ถœ๋ ฅ ๊ตฌ์กฐ(DESIGN/concerns/flows), related_paths | | `references/annotation.md` | ์™ธ๋ถ€ spec frontmatter ์ฃผ์„(`annotate-spec`) ์‹œ | spec-annotator ํ˜ธ์ถœ, ์‹ ๋ขฐ๋„๋ณ„ confirm, frontmatter ๊ฐฑ์‹  ๋ชจ๋“œ | | `references/quality-criteria.md` | ์ŠคํŽ™ ํ’ˆ์งˆ ํ‰๊ฐ€ยท๋“ฑ๊ธ‰ ์‚ฐ์ • ์‹œ (autopilot Spec Quality Gate ํฌํ•จ) | Big Picture/Detail/Verification/Consistency 4๊ด€์  ์ฒดํฌ๋ฆฌ์ŠคํŠธ, ์ ์ˆ˜ยท๋“ฑ๊ธ‰ ๊ธฐ์ค€ | | `references/issue-report.md` | ๋ถ„์„ ๊ฒฐ๊ณผ๋ฅผ ์‹ฌ๊ฐ๋„ ๊ธฐ๋ฐ˜ ์ด์Šˆ ๋ฆฌํฌํŠธ๋กœ ๋ณด๊ณ ํ•  ๋•Œ | severity ๊ธฐ์ค€, ์ด์Šˆ ํ•ญ๋ชฉ ๊ตฌ์กฐ, ๋งˆํฌ๋‹ค์šด ์ถœ๋ ฅ ํ˜•์‹ | diff --git a/plugins/atelier/skills/spec/references/authoring.md b/plugins/atelier/skills/spec/references/authoring.md new file mode 100644 index 00000000..1aa10411 --- /dev/null +++ b/plugins/atelier/skills/spec/references/authoring.md @@ -0,0 +1,134 @@ +# ์ŠคํŽ™ ๋ฌธ์„œ ์ž‘์„ฑ ์ปจ๋ฒค์…˜ + +ํ•ฉ์˜๋œ ์„ค๊ณ„๋ฅผ ์ŠคํŽ™ ๋ฌธ์„œ๋กœ ์ ๋Š” ์ ˆ์ฐจ์™€ ํ˜•์‹. **์„ค๊ณ„๋ฅผ ์ƒ๊ฐํ•˜๊ณ  ๋„์ „ํ•˜๋ฉฐ ํ•ฉ์˜์— ์ด๋ฅด๋Š” ๋Œ€ํ™”๋Š” `interview`(brainstorm: ๋ฌด์—์„œ ์„ค๊ณ„ / grill: ๊ธฐ์กด ๊ณ„ํš ์‹ฌ๋ฌธ)์—์„œ ๋๋‚ธ๋‹ค.** ์—ฌ๊ธฐ์„œ๋Š” ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์ •ํ•ด์ง„ ๊ตฌ์กฐ๋กœ ํ˜•์‹ํ™”ํ•œ๋‹ค โ€” `write`(Big Picture DESIGN.md)์™€ `write-detail`(์ปดํฌ๋„ŒํŠธ/ํ”Œ๋กœ์šฐ ์ƒ์„ธ)์ด ์ด ์ปจ๋ฒค์…˜์„ ๊ณต์œ ํ•œ๋‹ค. + +## ์ง„์ž… ์ „ ๋งฅ๋ฝ ํŒŒ์•… + +- **write (Big Picture)**: ํ•ฉ์˜๋œ ์„ค๊ณ„ ๋‚ด์šฉ(๋˜๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ œ์‹œํ•œ ๋ฐฉํ–ฅ)์„ ์ž…๋ ฅ์œผ๋กœ ๋ฐ›๋Š”๋‹ค. ์—†์œผ๋ฉด ๋จผ์ € `interview` ๋กœ ์„ค๊ณ„๋ฅผ ํ•ฉ์˜ํ•˜๋„๋ก ์•ˆ๋‚ดํ•œ๋‹ค. +- **write-detail (์ปดํฌ๋„ŒํŠธ/ํ”Œ๋กœ์šฐ)**: `spec/DESIGN.md` ๋˜๋Š” `**/DESIGN*.md` ๋ฅผ Glob ์œผ๋กœ ์ฐพ์•„ Read ํ•œ๋‹ค. ์—†์œผ๋ฉด AskUserQuestion: "Big Picture ์ŠคํŽ™(DESIGN.md)์„ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. `write` ๋กœ ๋จผ์ € ๋งŒ๋“ค๊ฑฐ๋‚˜ ๊ธฐ์กด ๊ฒฝ๋กœ๋ฅผ ์•Œ๋ ค์ฃผ์„ธ์š”." ๊ธฐ์กด `spec/concerns/`ยท`spec/flows/` ๋ฐ ๊ด€๋ จ ์ฝ”๋“œ๋„ ํŒŒ์•…ํ•œ๋‹ค. + +## ๊นŠ์ด ๊ธฐ์ค€ + +- **write (Big Picture) โ†’ DESIGN.md** โ€” ํฌํ•จ: ๋ชฉํ‘œ, ์„ค๊ณ„ ์ฒ ํ•™(์˜๊ฒฌ), ์ปดํฌ๋„ŒํŠธ ๋ชฉ๋ก๊ณผ ์ฑ…์ž„, ์ปดํฌ๋„ŒํŠธ ๊ฐ„ ๋ฐ์ดํ„ฐ ํ๋ฆ„, ํ™•์žฅ ๊ฐ€๋Šฅ ์ง€์ . ์ œ์™ธ: trait/์ธํ„ฐํŽ˜์ด์Šค ์‹œ๊ทธ๋‹ˆ์ฒ˜, ์˜์‚ฌ์ฝ”๋“œ, ์ƒํƒœ ์ „์ด ๋‹ค์ด์–ด๊ทธ๋žจ, DB ์Šคํ‚ค๋งˆ, API ์ƒ์„ธ (โ†’ write-detail ์˜์—ญ). +- **write-detail** โ€” "๊ตฌํ˜„์ž๊ฐ€ ์ฝ”๋“œ ๊ตฌ์กฐ๋ฅผ ์žก์„ ์ˆ˜ ์žˆ์ง€๋งŒ, ๊ตฌํ˜„ ๋ฐฉ๋ฒ•์€ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋Š” ์ˆ˜์ค€". DESIGN.md ์˜ ์ฒ ํ•™ยท์›์น™์„ ์กด์ค‘ํ•˜๋ฉฐ ์„ธ๋ถ€ ๊ตฌ์ฒดํ™”. โŒ DESIGN.md ํฐ๊ทธ๋ฆผ ์ค‘๋ณต ๊ธฐ์ˆ , โŒ ๊ตฌํ˜„ ์ฝ”๋“œ ์ž‘์„ฑ(์˜์‚ฌ์ฝ”๋“œ๊นŒ์ง€๋งŒ). + +## ์ž‘์„ฑ ์›์น™ + +- ์ €์žฅ ๊ฒฝ๋กœ๋Š” AskUserQuestion ์œผ๋กœ ํ™•์ธํ•œ๋‹ค (๊ธฐ๋ณธ๊ฐ’์€ ์•„๋ž˜ ๊ฐ ์ถœ๋ ฅ ๊ตฌ์กฐ ์ฐธ์กฐ). +- **์ตœ์ข… ์Šน์ธ ์ „๊นŒ์ง€ ํŒŒ์ผ์„ ์ €์žฅํ•˜์ง€ ์•Š๋Š”๋‹ค.** ๋‚ด์šฉ์„ ์ œ์‹œํ•˜๊ณ  ๋™์˜๋ฐ›์€ ๋’ค Write. +- ๊ธฐ์กด ์ฝ”๋“œ๋ฅผ ์ฐธ์กฐํ•˜๋˜, ์ŠคํŽ™์ด ๊ธฐ์กด ๊ตฌ์กฐ์— ์ข…์†๋˜์ง€ ์•Š๋„๋ก ํ•œ๋‹ค. +- frontmatter `related_paths` ๋ฅผ ์ฑ„์šด๋‹ค โ€” ํ›„์† `spec-review`ยท`gap-detect` ๊ฐ€ ์ด ํ•„๋“œ๋ฅผ ์ฝ”๋“œ ์˜์—ญ ๋งคํ•‘ Hint ๋กœ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ๋ถ„์„ ์ •ํ™•๋„๊ฐ€ ํฌ๊ฒŒ ์˜ค๋ฅธ๋‹ค. ๋ณธ๋ฌธ์—์„œ ์–ธ๊ธ‰๋œ ๋ชจ๋“ˆ/๋””๋ ‰ํ„ฐ๋ฆฌ/์‹๋ณ„์ž๋ฅผ ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ์™€ ๋งค์นญํ•˜๋˜, **ํ™•์‹คํ•œ ๊ฒฝ๋กœ๋งŒ** ์ ๋Š”๋‹ค(์ถ”์ •์— ์ž์‹  ์—†์œผ๋ฉด ๋น„์›€). ์‹ ๊ทœ ์„ค๊ณ„๋ผ ์ฝ”๋“œ๊ฐ€ ์•„์ง ์—†์œผ๋ฉด ๋น„์›Œ๋‘”๋‹ค. + +## ์ถœ๋ ฅ ๊ตฌ์กฐ + +### write โ†’ DESIGN.md + +์ €์žฅ ๊ฒฝ๋กœ ๊ธฐ๋ณธ: `spec/DESIGN.md` (AskUserQuestion ํ™•์ธ ํ›„ Write). + +```markdown +--- +related_paths: + - {์ถ”์ • ์ฝ”๋“œ ๊ฒฝ๋กœ} +--- + +# DESIGN + +> **Date**: {์˜ค๋Š˜ ๋‚ ์งœ} +> **Status**: Draft + +## ๋ชฉํ‘œ +{1-3๋ฌธ์žฅ: ์ด ์‹œ์Šคํ…œ์ด ํ•ด๊ฒฐํ•˜๋Š” ๋ฌธ์ œ, ์„ค๊ณ„ ๋ชฉํ‘œ๋กœ ์„œ์ˆ } + +## ์„ค๊ณ„ ์ฒ ํ•™ +{๋ฒˆํ˜ธ ๋งค๊ธด ์›์น™๋“ค. ๊ฐ 1-2๋ฌธ์žฅ. ์„œ์ˆ ์ด ์•„๋‹Œ ์˜๊ฒฌ/๊ฒฐ์ •.} + +### 1. {์›์น™ ์ด๋ฆ„} +{์„ค๋ช…} + +## ์ „์ฒด ๊ตฌ์กฐ +{ASCII ๋‹ค์ด์–ด๊ทธ๋žจ: ์ปดํฌ๋„ŒํŠธ ๋ฐฐ์น˜์™€ ๋ฐ์ดํ„ฐ ํ๋ฆ„} + +## ๊ด€์‹ฌ์‚ฌ ๋ถ„๋ฆฌ +| ๋ ˆ์ด์–ด | ์ฑ…์ž„ | ๋น„๊ณ  | +|--------|------|------| + +## OCP ํ™•์žฅ์  +{์ƒˆ ํƒ€์ž…/์‹œ์Šคํ…œ ์ถ”๊ฐ€ ์‹œ ์ฝ”์–ด ๋ณ€๊ฒฝ ์—†์ด ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ์ง€์ } + +## ๋ฏธ๊ฒฐ์ • ์‚ฌํ•ญ +{ํ™•์ •๋˜์ง€ ์•Š์€ ํ•ญ๋ชฉ. write-detail ์—์„œ ๊ตฌ์ฒดํ™”ํ•  ํ›„๋ณด} + +## ์ƒ์„ธ ๋ฌธ์„œ +| ๋ฌธ์„œ | ์„ค๋ช… | +|------|------| +| [concerns/...](...) | ... | +| [flows/...](...) | ... | +``` + +### write-detail โ†’ concerns/{name}.md (์ปดํฌ๋„ŒํŠธ) + +์ €์žฅ ๊ฒฝ๋กœ ๊ธฐ๋ณธ: `spec/concerns/{component-name}.md` (AskUserQuestion ํ™•์ธ ํ›„ Write). ์ €์žฅ ํ›„ DESIGN.md ์— ์ƒ์„ธ ๋ฌธ์„œ ๋งํฌ ์ถ”๊ฐ€๋ฅผ ์ œ์•ˆํ•œ๋‹ค. + +```markdown +--- +related_paths: + - {์ถ”์ • ์ฝ”๋“œ ๊ฒฝ๋กœ} +--- + +# {์ปดํฌ๋„ŒํŠธ ์ด๋ฆ„} + +> {ํ•œ ๋ฌธ์žฅ: ์ด ์ปดํฌ๋„ŒํŠธ๊ฐ€ ํ•˜๋Š” ๊ฒƒ๊ณผ ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ} + +## ์—ญํ•  +{ํ•ต์‹ฌ ์ฑ…์ž„} + +## ์ธํ„ฐํŽ˜์ด์Šค/Trait +{ํ•ฉ์˜๋œ ์‹œ๊ทธ๋‹ˆ์ฒ˜} + +## ํ•ต์‹ฌ ๋กœ์ง +{์˜์‚ฌ์ฝ”๋“œ โ€” ํ•ฉ์˜๋œ ์ˆ˜์ค€} + +## ์—๋Ÿฌ ์ฒ˜๋ฆฌ +{์‹คํŒจ ์‹œ๋‚˜๋ฆฌ์˜ค์™€ ๋Œ€์‘ ์ •์ฑ…} + +## ์ œ์•ฝ ์กฐ๊ฑด +{๋ถˆ๋ณ€ ์กฐ๊ฑด, ํ•œ๊ณ„, ์„ฑ๋Šฅ ์ œ์•ฝ} + +## ๊ด€๋ จ ๋ฌธ์„œ +| ๋ฌธ์„œ | ๊ด€๊ณ„ | +|------|------| +| [DESIGN.md](../DESIGN.md) | ์ „์ฒด ๊ตฌ์กฐ์—์„œ์˜ ์œ„์น˜ | +``` + +### write-detail โ†’ flows/{nn-scenario}.md (ํ”Œ๋กœ์šฐ) + +์ €์žฅ ๊ฒฝ๋กœ ๊ธฐ๋ณธ: `spec/flows/{nn-scenario-name}.md`. + +```markdown +--- +related_paths: + - {์ถ”์ • ์ฝ”๋“œ ๊ฒฝ๋กœ} +--- + +# Flow {๋ฒˆํ˜ธ}: {์‹œ๋‚˜๋ฆฌ์˜ค ์ด๋ฆ„} + +> {ํ•œ ๋ฌธ์žฅ ์š”์•ฝ} + +## ํ๋ฆ„ ๋‹ค์ด์–ด๊ทธ๋žจ +{ASCII ๋‹ค์ด์–ด๊ทธ๋žจ} + +## ๋‹จ๊ณ„๋ณ„ ์„ค๋ช… +{๊ฐ ๋‹จ๊ณ„: ํŠธ๋ฆฌ๊ฑฐ โ†’ ์ปดํฌ๋„ŒํŠธ โ†’ ๋ฐ์ดํ„ฐ โ†’ ๊ฒฐ๊ณผ} + +## ์‹คํŒจ ๊ฒฝ๋กœ +{๊ฐ ๋‹จ๊ณ„์—์„œ ์‹คํŒจ ์‹œ} + +## ์—ฃ์ง€ ์ผ€์ด์Šค +{๋น„์ •์ƒ์ ์ด์ง€๋งŒ ์œ ํšจํ•œ ์‹œ๋‚˜๋ฆฌ์˜ค} + +## ๊ด€๋ จ ๋ฌธ์„œ +| ๋ฌธ์„œ | ๊ด€๊ณ„ | +|------|------| +| [DESIGN.md](../DESIGN.md) | ์ „์ฒด ๊ตฌ์กฐ | +| [๊ด€๋ จ concern](./concerns/xxx.md) | ๊ด€๋ จ ์ปดํฌ๋„ŒํŠธ ์ƒ์„ธ | +``` diff --git a/plugins/atelier/skills/spec/references/design-protocol.md b/plugins/atelier/skills/spec/references/design-protocol.md deleted file mode 100644 index a8815d52..00000000 --- a/plugins/atelier/skills/spec/references/design-protocol.md +++ /dev/null @@ -1,236 +0,0 @@ -# ๋Œ€ํ™”ํ˜• ์„ค๊ณ„ ํ•‘ํ ํ”„๋กœํ† ์ฝœ - -`design` (Big Picture) ์™€ `design-detail` (์ปดํฌ๋„ŒํŠธ/ํ”Œ๋กœ์šฐ ์ƒ์„ธ) ์ด ๊ณต์œ ํ•˜๋Š” ๋Œ€ํ™”ํ˜• ์„ค๊ณ„ ์ ˆ์ฐจ. AI๊ฐ€ ๋จผ์ € ์ฑ„์›Œ์ง„ ์ดˆ์•ˆ์„ ์ œ์•ˆํ•˜๊ณ , ์‚ฌ์šฉ์ž๊ฐ€ ํ”ผ๋“œ๋ฐฑ/์˜์‚ฌ์ฝ”๋“œ๋กœ ๋ฐฉํ–ฅ์„ ์žก๊ณ , AI๊ฐ€ ๋ฐ˜์˜ ํ›„ ๋‹ค๋ฅธ ๊ด€์ ์—์„œ ๋„์ „ํ•˜๋Š” **ํ•‘ํ ์„ธ์…˜**. - -## ํ•‘ํ ๋ฃจํ”„ ํ”„๋กœํ† ์ฝœ - -์„ธ์…˜ ์‹œ์ž‘ ์ดํ›„ ์ˆ˜๋ ดํ•  ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณต: - -``` -1. AI๊ฐ€ ์„ค๊ณ„์˜ ํ•œ ์ธก๋ฉด์„ ๊ตฌ์ฒด์ ์œผ๋กœ ์ œ์•ˆํ•œ๋‹ค (๋นˆ ์นธ์ด ์•„๋‹Œ ์ฑ„์›Œ์ง„ ์ดˆ์•ˆ) -2. ์‚ฌ์šฉ์ž๊ฐ€ ์‘๋‹ตํ•œ๋‹ค: - - ๋™์˜ โ†’ ์ด ์ธก๋ฉด์€ ํ•ฉ์˜๋จ, ๋‹ค์Œ ์ธก๋ฉด์œผ๋กœ - - ๋ฐฉํ–ฅ ์ˆ˜์ • โ†’ AI๊ฐ€ ์ˆ˜์ • ๋ฐ˜์˜ - - ์˜์‚ฌ์ฝ”๋“œ/๊ตฌ์กฐ ์ œ์‹œ โ†’ AI๊ฐ€ ์„ค๊ณ„ ์–ธ์–ด๋กœ ํก์ˆ˜ (๋‹จ์ˆœ ์—์ฝ” ์•„๋‹˜) - - ์ƒˆ ๊ด€์‹ฌ์‚ฌ ์ œ๊ธฐ โ†’ AI๊ฐ€ ํ•ด๋‹น ๊ด€์‹ฌ์‚ฌ๋ฅผ ํƒ์ƒ‰ -3. AI๊ฐ€ ๋ฐ˜์˜ํ•œ ๋’ค, ๋‹ค๋ฅธ ๊ด€์ ์—์„œ ํ•˜๋‚˜์˜ ๊ตฌ์ฒด์  ๋„์ „์„ ์ œ์‹œํ•œ๋‹ค -4. AskUserQuestion์œผ๋กœ ํ”ผ๋“œ๋ฐฑ์„ ์š”์ฒญํ•œ๋‹ค -``` - -## 6๊ฐœ ๊ด€์  - -๋Œ€ํ™” ์ค‘ ์•„๋ž˜ ๊ด€์ ๋“ค์„ ๋‚ด๋ถ€์ ์œผ๋กœ ์ถ”์ ํ•œ๋‹ค. **์‚ฌ์šฉ์ž์—๊ฒŒ ๊ด€์  ์ด๋ฆ„์ด๋‚˜ ์ „ํ™˜์„ ๋…ธ์ถœํ•˜์ง€ ์•Š๋Š”๋‹ค.** - -| ์ฝ”๋“œ | ๊ด€์  | ํ•ต์‹ฌ ์งˆ๋ฌธ | -|------|------|----------| -| S | ๋‹จ์ˆœ์„ฑ | ๋” ์ค„์ผ ์ˆ˜ ์žˆ๋‚˜? ๋ถˆํ•„์š”ํ•œ ์ถ”์ƒํ™”๋Š” ์—†๋‚˜? | -| O | OCP | ์ƒˆ ํƒ€์ž…/์‹œ์Šคํ…œ ์ถ”๊ฐ€ ์‹œ ๊ธฐ์กด ์ฝ”๋“œ ๋ณ€๊ฒฝ ์—†์ด ๊ฐ€๋Šฅํ•œ๊ฐ€? | -| F | ์‹คํŒจ/๋ณต๊ตฌ | ์—ฌ๊ธฐ์„œ ํ„ฐ์ง€๋ฉด? ์žฌ์‹œ๋„? ์‚ฌ๋žŒ ๊ฐœ์ž…? | -| B | ๊ฒฝ๊ณ„ | ์ด ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์•Œ์•„์•ผ ํ•  ๊ฒƒ vs ๋ชฐ๋ผ์•ผ ํ•  ๊ฒƒ | -| C | ๋™์‹œ์„ฑ | ๋™์‹œ ์ ‘๊ทผ ์‹œ ์–ด๋–ป๊ฒŒ ๋˜๋‚˜? | -| M | ์šด์˜ | ์ƒํƒœ ํ™•์ธ, ๋””๋ฒ„๊น…์ด ๊ฐ€๋Šฅํ•œ๊ฐ€? | - -### ๊ด€์  ์ „ํ™˜ ๊ทœ์น™ - -- ์‚ฌ์šฉ์ž์˜ ์‘๋‹ต์ด ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ํŠน์ • ๊ด€์ ์„ ์—ด๋ฉด โ†’ ๊ทธ ํ๋ฆ„์„ ๋”ฐ๋ผ๊ฐ„๋‹ค -- 3ํšŒ ์ด์ƒ ๊ตํ™˜ ๋™์•ˆ ๋ฏธํƒ์ƒ‰ ๊ด€์ ์ด ์žˆ์œผ๋ฉด โ†’ ๊ตฌ์ฒด์  ์‹œ๋‚˜๋ฆฌ์˜ค๋กœ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋„์ž…ํ•œ๋‹ค -- ๊ด€์  ์ „ํ™˜์„ ์„ ์–ธํ•˜์ง€ ์•Š๊ณ , ํ•ญ์ƒ ๊ตฌ์ฒด์  ์‹œ๋‚˜๋ฆฌ์˜ค๋กœ ์งˆ๋ฌธํ•œ๋‹ค - -``` -์ข‹์€ ์˜ˆ: - "๋‘ ์‚ฌ์šฉ์ž๊ฐ€ ๋™์‹œ์— ์•„์ดํ…œ์„ ์ œ์ถœํ•˜๋ฉด ์–ด๋–ป๊ฒŒ ๋˜๋‚˜์š”? ์ง€๊ธˆ ๊ตฌ์กฐ๋Š” ์ˆœ์ฐจ ์ฒ˜๋ฆฌ๋ผ - ๋‘ ๋ฒˆ์งธ ์‚ฌ์šฉ์ž๊ฐ€ ๋Œ€๊ธฐํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด๊ฒŒ ๊ดœ์ฐฎ์€ ๊ฑด๊ฐ€์š”, ์•„๋‹ˆ๋ฉด ํ๊ฐ€ ํ•„์š”ํ• ๊นŒ์š”?" - - "์—ฌ๊ธฐ์— trait๋ฅผ ์„ธ ์ข…๋ฅ˜๊ฐ€ ๊ตฌํ˜„ํ•˜๋Š”๋ฐ, ์‹ค์ œ๋กœ 1-2๊ฐœ๋งŒ ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค๋ฉด - ์ถ”์ƒํ™”๊ฐ€ ์˜คํžˆ๋ ค ๊ฐ„์ ‘ ์ฐธ์กฐ๋งŒ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ๋” ๊ตฌํ˜„์ฒด๊ฐ€ ์ƒ๊ธธ ์˜ˆ์ •์ธ๊ฐ€์š”?" - -๋‚˜์œ ์˜ˆ: - "๋™์‹œ์„ฑ์— ๋Œ€ํ•ด ์ƒ๊ฐํ•ด๋ณด์…จ๋‚˜์š”?" - "์ด ์ถ”์ƒํ™”๊ฐ€ ์ •๋ง ํ•„์š”ํ•œ๊ฐ€์š”?" -``` - -## ์‚ฌ์šฉ์ž ์˜์‚ฌ์ฝ”๋“œ ์ฒ˜๋ฆฌ - -์‚ฌ์šฉ์ž๊ฐ€ ์˜์‚ฌ์ฝ”๋“œ๋‚˜ ๊ตฌ์กฐ์  ํ”ผ๋“œ๋ฐฑ์„ ์ œ์‹œํ•˜๋ฉด: - -1. **์„ค๊ณ„ ์–ธ์–ด๋กœ ๋ฐ˜์˜ํ•œ๋‹ค** โ€” ์˜์‚ฌ์ฝ”๋“œ๋ฅผ ์—์ฝ”ํ•˜์ง€ ์•Š๊ณ  ์„ค๊ณ„ ๋ฌธ์„œ์˜ ์ผ๋ถ€๋กœ ํก์ˆ˜ํ•œ๋‹ค -2. **์˜์‚ฌ์ฝ”๋“œ์˜ ํ•œ ์ธก๋ฉด์„ ๋„์ „ํ•œ๋‹ค** โ€” ๊ด€๋ จ ๊ด€์ ์—์„œ ๊ตฌ์ฒด์  ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์ œ์‹œํ•œ๋‹ค - -``` -์‚ฌ์šฉ์ž: "loop { collect(); process(); done(); }" - -AI ๋ฐ˜์˜: "์ˆ˜์ง‘ โ†’ ์ฒ˜๋ฆฌ โ†’ ์™„๋ฃŒ ๋ฐ˜์˜์˜ ๋‹จ์ˆœ ๋ฃจํ”„๋กœ ์ •๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค. - Daemon์€ ์ด ๋ฃจํ”„๋งŒ ๋Œ๋ฆฌ๊ณ , ๋ฌด์—‡์„ ์ˆ˜์ง‘ํ•˜๊ณ  ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ• ์ง€๋Š” - ์™ธ๋ถ€์—์„œ ์ •์˜ํ•˜๋Š” ๊ตฌ์กฐ๋„ค์š”." - -AI ๋„์ „: "ํ•œ ๊ฐ€์ง€ โ€” process()๊ฐ€ LLM ํ˜ธ์ถœ์ด๋ผ 30์ดˆ~์ˆ˜๋ถ„์ด ๊ฑธ๋ฆด ํ…๋ฐ, - ์ด ๋ฃจํ”„๊ฐ€ ํ•œ ๋ฒˆ์— ํ•˜๋‚˜๋งŒ ์ฒ˜๋ฆฌํ•˜๋ฉด ์ฒ˜๋ฆฌ๋Ÿ‰์ด ์ œํ•œ๋ฉ๋‹ˆ๋‹ค. - ๋™์‹œ์— ์—ฌ๋Ÿฌ ์•„์ดํ…œ์„ process()ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•˜๋‚˜์š”?" -``` - -## ์ˆ˜๋ ด ํŒ๋‹จ (๋ชจ๋“œ๋ณ„ ์ž„๊ณ„๊ฐ’) - -์ˆ˜๋ ด ์กฐ๊ฑด์€ design(Big Picture)๊ณผ design-detail(์ปดํฌ๋„ŒํŠธ/ํ”Œ๋กœ์šฐ)์ด ๋‹ค๋ฅด๋‹ค. - -**design (Big Picture)** โ€” ๋‹ค์Œ ์ถฉ์กฑ ์‹œ ์ˆ˜๋ ด: -- 6๊ฐœ ๊ด€์  ์ค‘ **4๊ฐœ ์ด์ƒ**์ด ์˜๋ฏธ ์žˆ๊ฒŒ ๋‹ค๋ค„์กŒ๋‹ค -- ํ•ต์‹ฌ ์•„ํ‚คํ…์ฒ˜ (์ปดํฌ๋„ŒํŠธ ๋ชฉ๋ก + ๊ฐ๊ฐ์˜ ์ฑ…์ž„)์— ์‚ฌ์šฉ์ž๊ฐ€ ๋™์˜ํ–ˆ๋‹ค -- ์‚ฌ์šฉ์ž๊ฐ€ **2-3ํšŒ ์—ฐ์†** ์ƒˆ ๊ด€์‹ฌ์‚ฌ ์—†์ด ํ™•์ธ/๋™์˜๋งŒ ํ–ˆ๋‹ค - -**design-detail (์ปดํฌ๋„ŒํŠธ/ํ”Œ๋กœ์šฐ)** โ€” ๋‹จ์œ„๊ฐ€ ์ข์œผ๋ฏ€๋กœ ๊ธฐ์ค€์ด ๋‚ฎ๋‹ค: -- 6๊ฐœ ๊ด€์  ์ค‘ **3๊ฐœ ์ด์ƒ** ๋‹ค๋ฃธ (design ์˜ 4๊ฐœ๋ณด๋‹ค ๋‚ฎ์Œ) -- ์ปดํฌ๋„ŒํŠธ: ์ธํ„ฐํŽ˜์ด์Šค/์—ญํ•  ํ•ฉ์˜ + ํ•ต์‹ฌ ๋กœ์ง ๋ฐฉํ–ฅ ๊ฒฐ์ • + ์ฃผ์š” ์—๋Ÿฌ ์ผ€์ด์Šค / ํ”Œ๋กœ์šฐ: ์ฃผ์š” ํ๋ฆ„(happy path) ํ•ฉ์˜ + ํ•ต์‹ฌ ๋ถ„๊ธฐ์  -- ์‚ฌ์šฉ์ž๊ฐ€ **2-3ํšŒ ์—ฐ์†** ํ™•์ธ๋งŒ ํ–ˆ๋‹ค - -์ˆ˜๋ ด ์‹œ AskUserQuestion ์œผ๋กœ ์ •๋ฆฌ(ํŒŒ์ผ ์ €์žฅ) ์˜์‚ฌ๋ฅผ ๋ฌป๋Š”๋‹ค. - -## ์•ˆํ‹ฐํŒจํ„ด - -- โŒ ํ•œ ๋ฒˆ์— ์—ฌ๋Ÿฌ ์งˆ๋ฌธ ๋‚˜์—ด / ๋ฒˆํ˜ธ ๋งค๊ธด ์„ค๋ฌธ์ง€ -- โŒ ๋‹จ๊ณ„ ์„ ์–ธ ("Phase 2๋กœ ๋„˜์–ด๊ฐ€๊ฒ ์Šต๋‹ˆ๋‹ค") / ๊ด€์  ์ „ํ™˜ ์„ ์–ธ -- โŒ ๋นˆ ์นธ ์ฑ„์šฐ๊ธฐ ("๋ชฉํ‘œ๊ฐ€ ๋ญ์˜ˆ์š”?", "์•กํ„ฐ๊ฐ€ ๋ˆ„๊ตฌ์˜ˆ์š”?") -- โŒ ์‚ฌ์šฉ์ž ์˜์‚ฌ์ฝ”๋“œ๋ฅผ ๊ทธ๋Œ€๋กœ ์—์ฝ” -- โœ… ํ•œ ๋ฒˆ์— **ํ•˜๋‚˜์˜ ๊ตฌ์ฒด์  ์ œ์•ˆ** + **ํ•˜๋‚˜์˜ ๊ตฌ์ฒด์  ๋„์ „** + AskUserQuestion - -## frontmatter `related_paths` ๊ถŒ๊ณ  (์„ค๊ณ„ ์ถœ๋ ฅ ๊ณตํ†ต) - -์„ค๊ณ„ ์‚ฐ์ถœ๋ฌผ(spec) ์ƒ๋‹จ์— YAML frontmatter ๋กœ `related_paths` ๋ฅผ ์ฑ„์šฐ๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•œ๋‹ค. ํ›„์† `spec-review`ยท`gap-detect` ๊ฐ€ ์ด ํ•„๋“œ๋ฅผ ์ฝ”๋“œ ์˜์—ญ ๋งคํ•‘ Hint ๋กœ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ, ์ฑ„์›Œ๋‘๋ฉด ๋ถ„์„ ์ •ํ™•๋„๊ฐ€ ํฌ๊ฒŒ ์˜ค๋ฅธ๋‹ค. - -- ๋ณธ๋ฌธ์—์„œ ๋ช…์‹œ์ ์œผ๋กœ ์–ธ๊ธ‰๋œ ๋ชจ๋“ˆ/๋””๋ ‰ํ„ฐ๋ฆฌ/์‹๋ณ„์ž๋ฅผ ํ”„๋กœ์ ํŠธ ๋””๋ ‰ํ„ฐ๋ฆฌ ๊ตฌ์กฐ์™€ ๋งค์นญํ•œ๋‹ค. -- **ํ™•์‹คํ•œ ๊ฒฝ๋กœ๋งŒ** ์ ๋Š”๋‹ค. ์ถ”์ •์— ์ž์‹  ์—†์œผ๋ฉด ๋น„์›Œ๋ผ โ€” ์ž˜๋ชป๋œ Hint ๋Š” ์ž์œจ ๋ณด๊ฐ• fallback ๋ณด๋‹ค ํ•ด๋กญ๋‹ค. -- ์‹ ๊ทœ ์„ค๊ณ„๋ผ ์ฝ”๋“œ๊ฐ€ ์•„์ง ์—†์œผ๋ฉด ๋น„์›Œ๋‘”๋‹ค. - -## ๊ณตํ†ต ์ฃผ์˜์‚ฌํ•ญ - -- ์‚ฌ์šฉ์ž๊ฐ€ ์ด์ „ ๋…ผ์˜๋ฅผ ๋ฒˆ๋ณตํ•ด๋„ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์ˆ˜์šฉํ•œ๋‹ค -- ๊ธฐ์กด ์ฝ”๋“œ๋ฅผ ์ฐธ์กฐํ•˜๋˜ ์„ค๊ณ„๊ฐ€ ๊ธฐ์กด ๊ตฌ์กฐ์— ์ข…์†๋˜์ง€ ์•Š๋„๋ก ํ•œ๋‹ค -- ์ตœ์ข… ์Šน์ธ ์ „๊นŒ์ง€ ํŒŒ์ผ ์ €์žฅ ์•ˆ ํ•จ - ---- - -## design-detail ์„ธ์…˜ ์ค€๋น„ - -design-detail(์ปดํฌ๋„ŒํŠธ/ํ”Œ๋กœ์šฐ ์ƒ์„ธ)๋Š” design ์ดํ›„ ๋‹จ๊ณ„์ด๋ฏ€๋กœ ์ง„์ž… ์ „ ๋งฅ๋ฝ ํŒŒ์•…์ด ํ•„์š”ํ•˜๋‹ค. - -1. **๋งฅ๋ฝ ํŒŒ์•…**: `spec/DESIGN.md` ๋˜๋Š” `**/DESIGN*.md` ๋ฅผ Glob ์œผ๋กœ ์ฐพ์•„ Read. ์—†์œผ๋ฉด AskUserQuestion: "Big Picture ์ŠคํŽ™(DESIGN.md)์„ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. design ์œผ๋กœ ๋จผ์ € ๋งŒ๋“ค๊ฑฐ๋‚˜, ๊ธฐ์กด ์ŠคํŽ™ ๊ฒฝ๋กœ๋ฅผ ์•Œ๋ ค์ฃผ์„ธ์š”." ๊ธฐ์กด `spec/concerns/`ยท`spec/flows/` ๋ฐ ๊ด€๋ จ ์ฝ”๋“œ๋„ ํŒŒ์•…. -2. **์„ธ์…˜ ํƒ€์ž… ๊ฒฐ์ •**: `flow` ํ‚ค์›Œ๋“œ โ†’ ํ”Œ๋กœ์šฐ ์„ธ์…˜, ๊ทธ ์™ธ โ†’ ์ปดํฌ๋„ŒํŠธ ์„ธ์…˜. ์ธ์ž ์—†์œผ๋ฉด DESIGN.md ์˜ ์ปดํฌ๋„ŒํŠธ/์‹œ๋‚˜๋ฆฌ์˜ค ๋ชฉ๋ก ์ œ์‹œ ํ›„ ์„ ํƒ. -3. **์ดˆ์•ˆ ์ œ์•ˆ**: ํ•ด๋‹น ์ปดํฌ๋„ŒํŠธ/์‹œ๋‚˜๋ฆฌ์˜ค ์ •๋ณด + ๊ธฐ์กด ์ฝ”๋“œ ๊ตฌ์กฐ ๋ฐ˜์˜ํ•ด ๊ตฌ์ฒด์  ์ดˆ์•ˆ ๋จผ์ € ์ œ์•ˆ โ†’ ํ•‘ํ ๋ฃจํ”„. - -## ๊นŠ์ด ๊ธฐ์ค€ - -- **design (Big Picture)** โ€” ํฌํ•จ: ๋ชฉํ‘œ, ์„ค๊ณ„ ์ฒ ํ•™(์˜๊ฒฌ), ์ปดํฌ๋„ŒํŠธ ๋ชฉ๋ก๊ณผ ์ฑ…์ž„, ์ปดํฌ๋„ŒํŠธ ๊ฐ„ ๋ฐ์ดํ„ฐ ํ๋ฆ„, ํ™•์žฅ ๊ฐ€๋Šฅ ์ง€์ . ์ œ์™ธ: trait/์ธํ„ฐํŽ˜์ด์Šค ์‹œ๊ทธ๋‹ˆ์ฒ˜, ์˜์‚ฌ์ฝ”๋“œ, ์ƒํƒœ ์ „์ด ๋‹ค์ด์–ด๊ทธ๋žจ, DB ์Šคํ‚ค๋งˆ, API ์ƒ์„ธ (โ†’ design-detail ์˜์—ญ). -- **design-detail** โ€” "๊ตฌํ˜„์ž๊ฐ€ ์ฝ”๋“œ ๊ตฌ์กฐ๋ฅผ ์žก์„ ์ˆ˜ ์žˆ์ง€๋งŒ, ๊ตฌํ˜„ ๋ฐฉ๋ฒ•์€ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋Š” ์ˆ˜์ค€". DESIGN.md ์˜ ์ฒ ํ•™ยท์›์น™์„ ์กด์ค‘ํ•˜๋ฉฐ ์„ธ๋ถ€ ๊ตฌ์ฒดํ™”. โŒ DESIGN.md ํฐ๊ทธ๋ฆผ ์ค‘๋ณต ๊ธฐ์ˆ , โŒ ๊ตฌํ˜„ ์ฝ”๋“œ ์ž‘์„ฑ(์˜์‚ฌ์ฝ”๋“œ๊นŒ์ง€๋งŒ). - -## ์ถœ๋ ฅ ๊ตฌ์กฐ - -### design โ†’ DESIGN.md - -์ €์žฅ ๊ฒฝ๋กœ๋Š” AskUserQuestion ์œผ๋กœ ํ™•์ธ (๊ธฐ๋ณธ: `spec/DESIGN.md`) ํ›„ Write. - -```markdown ---- -related_paths: - - {์ถ”์ • ์ฝ”๋“œ ๊ฒฝ๋กœ} ---- - -# DESIGN - -> **Date**: {์˜ค๋Š˜ ๋‚ ์งœ} -> **Status**: Draft - -## ๋ชฉํ‘œ -{1-3๋ฌธ์žฅ: ์ด ์‹œ์Šคํ…œ์ด ํ•ด๊ฒฐํ•˜๋Š” ๋ฌธ์ œ, ์„ค๊ณ„ ๋ชฉํ‘œ๋กœ ์„œ์ˆ } - -## ์„ค๊ณ„ ์ฒ ํ•™ -{๋ฒˆํ˜ธ ๋งค๊ธด ์›์น™๋“ค. ๊ฐ 1-2๋ฌธ์žฅ. ์„œ์ˆ ์ด ์•„๋‹Œ ์˜๊ฒฌ/๊ฒฐ์ •.} - -### 1. {์›์น™ ์ด๋ฆ„} -{์„ค๋ช…} - -## ์ „์ฒด ๊ตฌ์กฐ -{ASCII ๋‹ค์ด์–ด๊ทธ๋žจ: ์ปดํฌ๋„ŒํŠธ ๋ฐฐ์น˜์™€ ๋ฐ์ดํ„ฐ ํ๋ฆ„} - -## ๊ด€์‹ฌ์‚ฌ ๋ถ„๋ฆฌ -| ๋ ˆ์ด์–ด | ์ฑ…์ž„ | ๋น„๊ณ  | -|--------|------|------| - -## OCP ํ™•์žฅ์  -{์ƒˆ ํƒ€์ž…/์‹œ์Šคํ…œ ์ถ”๊ฐ€ ์‹œ ์ฝ”์–ด ๋ณ€๊ฒฝ ์—†์ด ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ์ง€์ } - -## ๋ฏธ๊ฒฐ์ • ์‚ฌํ•ญ -{ํ™•์ •๋˜์ง€ ์•Š์€ ํ•ญ๋ชฉ. design-detail ์—์„œ ๊ตฌ์ฒดํ™”ํ•  ํ›„๋ณด} - -## ์ƒ์„ธ ๋ฌธ์„œ -| ๋ฌธ์„œ | ์„ค๋ช… | -|------|------| -| [concerns/...](...) | ... | -| [flows/...](...) | ... | -``` - -### design-detail โ†’ concerns/{name}.md (์ปดํฌ๋„ŒํŠธ) - -์ €์žฅ ๊ฒฝ๋กœ ๊ธฐ๋ณธ: `spec/concerns/{component-name}.md` (AskUserQuestion ํ™•์ธ ํ›„ Write). ์ €์žฅ ํ›„ DESIGN.md ์— ์ƒ์„ธ ๋ฌธ์„œ ๋งํฌ ์ถ”๊ฐ€ ์ œ์•ˆ. - -```markdown ---- -related_paths: - - {์ถ”์ • ์ฝ”๋“œ ๊ฒฝ๋กœ} ---- - -# {์ปดํฌ๋„ŒํŠธ ์ด๋ฆ„} - -> {ํ•œ ๋ฌธ์žฅ: ์ด ์ปดํฌ๋„ŒํŠธ๊ฐ€ ํ•˜๋Š” ๊ฒƒ๊ณผ ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ} - -## ์—ญํ•  -{ํ•ต์‹ฌ ์ฑ…์ž„} - -## ์ธํ„ฐํŽ˜์ด์Šค/Trait -{ํ•ฉ์˜๋œ ์‹œ๊ทธ๋‹ˆ์ฒ˜} - -## ํ•ต์‹ฌ ๋กœ์ง -{์˜์‚ฌ์ฝ”๋“œ โ€” ํ•ฉ์˜๋œ ์ˆ˜์ค€} - -## ์—๋Ÿฌ ์ฒ˜๋ฆฌ -{์‹คํŒจ ์‹œ๋‚˜๋ฆฌ์˜ค์™€ ๋Œ€์‘ ์ •์ฑ…} - -## ์ œ์•ฝ ์กฐ๊ฑด -{๋ถˆ๋ณ€ ์กฐ๊ฑด, ํ•œ๊ณ„, ์„ฑ๋Šฅ ์ œ์•ฝ} - -## ๊ด€๋ จ ๋ฌธ์„œ -| ๋ฌธ์„œ | ๊ด€๊ณ„ | -|------|------| -| [DESIGN.md](../DESIGN.md) | ์ „์ฒด ๊ตฌ์กฐ์—์„œ์˜ ์œ„์น˜ | -``` - -### design-detail โ†’ flows/{nn-scenario}.md (ํ”Œ๋กœ์šฐ) - -์ €์žฅ ๊ฒฝ๋กœ ๊ธฐ๋ณธ: `spec/flows/{nn-scenario-name}.md`. - -```markdown ---- -related_paths: - - {์ถ”์ • ์ฝ”๋“œ ๊ฒฝ๋กœ} ---- - -# Flow {๋ฒˆํ˜ธ}: {์‹œ๋‚˜๋ฆฌ์˜ค ์ด๋ฆ„} - -> {ํ•œ ๋ฌธ์žฅ ์š”์•ฝ} - -## ํ๋ฆ„ ๋‹ค์ด์–ด๊ทธ๋žจ -{ASCII ๋‹ค์ด์–ด๊ทธ๋žจ} - -## ๋‹จ๊ณ„๋ณ„ ์„ค๋ช… -{๊ฐ ๋‹จ๊ณ„: ํŠธ๋ฆฌ๊ฑฐ โ†’ ์ปดํฌ๋„ŒํŠธ โ†’ ๋ฐ์ดํ„ฐ โ†’ ๊ฒฐ๊ณผ} - -## ์‹คํŒจ ๊ฒฝ๋กœ -{๊ฐ ๋‹จ๊ณ„์—์„œ ์‹คํŒจ ์‹œ} - -## ์—ฃ์ง€ ์ผ€์ด์Šค -{๋น„์ •์ƒ์ ์ด์ง€๋งŒ ์œ ํšจํ•œ ์‹œ๋‚˜๋ฆฌ์˜ค} - -## ๊ด€๋ จ ๋ฌธ์„œ -| ๋ฌธ์„œ | ๊ด€๊ณ„ | -|------|------| -| [DESIGN.md](../DESIGN.md) | ์ „์ฒด ๊ตฌ์กฐ | -| [๊ด€๋ จ concern](./concerns/xxx.md) | ๊ด€๋ จ ์ปดํฌ๋„ŒํŠธ ์ƒ์„ธ | -``` From 340ce6506d764843c028010ced6d6c8289b25081 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EC=9A=A9=EC=84=B1?= <66245186+kys0213@users.noreply.github.com> Date: Sat, 13 Jun 2026 13:49:46 +0900 Subject: [PATCH 6/7] refactor(atelier): split spec into spec-write and spec-review (#795) --- plugins/atelier/README.md | 4 +-- .../atelier/agents/spec/file-pair-observer.md | 2 +- plugins/atelier/agents/spec/gap-aggregator.md | 2 +- plugins/atelier/agents/spec/gap-auditor.md | 4 +-- plugins/atelier/agents/spec/spec-annotator.md | 2 +- .../skills/autopilot/references/startup.md | 2 +- plugins/atelier/skills/interview/SKILL.md | 5 +-- .../skills/interview/references/brainstorm.md | 6 ++-- .../skills/{spec => spec-review}/SKILL.md | 18 +++++----- .../references/annotation.md | 0 .../references/file-observation.md | 0 .../references/gap-audit-loop.md | 0 .../references/issue-report.md | 0 .../references/quality-criteria.md | 0 .../references/report-format.md | 0 plugins/atelier/skills/spec-write/SKILL.md | 35 +++++++++++++++++++ .../references/authoring.md | 5 ++- 17 files changed, 59 insertions(+), 26 deletions(-) rename plugins/atelier/skills/{spec => spec-review}/SKILL.md (68%) rename plugins/atelier/skills/{spec => spec-review}/references/annotation.md (100%) rename plugins/atelier/skills/{spec => spec-review}/references/file-observation.md (100%) rename plugins/atelier/skills/{spec => spec-review}/references/gap-audit-loop.md (100%) rename plugins/atelier/skills/{spec => spec-review}/references/issue-report.md (100%) rename plugins/atelier/skills/{spec => spec-review}/references/quality-criteria.md (100%) rename plugins/atelier/skills/{spec => spec-review}/references/report-format.md (100%) create mode 100644 plugins/atelier/skills/spec-write/SKILL.md rename plugins/atelier/skills/{spec => spec-write}/references/authoring.md (87%) diff --git a/plugins/atelier/README.md b/plugins/atelier/README.md index 38e789aa..3a4f196a 100644 --- a/plugins/atelier/README.md +++ b/plugins/atelier/README.md @@ -14,7 +14,7 @@ spec ์„ค๊ณ„ โ†’ ๋ฆฌ๋ทฐ โ†’ ๊ตฌํ˜„ โ†’ PR ๋จธ์ง€๊นŒ์ง€์˜ ์ „์ฒด ํ๋ฆ„์„ ํ•˜๋‚˜ |---|---|---| | `git-utils` | 2.4.2 | `skills/git/`(+references), `cli/` (Rust ํฌํŒ…) | | `github-autopilot` | 0.30.1 | `commands/autopilot/*`, `agents/autopilot/*`, `skills/issue-label/`, `skills/autopilot/`(+resilienceยทbranch-syncยทdraft-branchโ†’references), `cli/` | -| `spec-kit` | 0.7.1 | `agents/spec/*`, `skills/spec/`(+issue-reportยทspec-criteriaโ†’references), `templates/spec/` | +| `spec-kit` | 0.7.1 | `agents/spec/*`, `skills/spec-write/`ยท`skills/spec-review/`(+issue-reportยทspec-criteriaโ†’references), `templates/spec/` | | `workflow-guide` | 0.6.0 | `agents/workflow/*`, `skills/{workflow,agent-design-principles}/`, `rules/` | | `coding-style` | 0.3.0 | `skills/coding-style/`, `templates/claude-md/` | | `orchestrator` | 0.2.0 | `skills/orchestrator/` | @@ -73,7 +73,7 @@ atelier setup > **ํ˜„์žฌ ์ƒํƒœ**: Epic 1 (consolidation) + Epic 2 (skill extraction) ์™„๋ฃŒ. > ๋‹จ์ผ `atelier` ๋ฐ”์ด๋„ˆ๋ฆฌ๊ฐ€ `atelier autopilot <...>` / `atelier git <...>` ๋ฅผ ์ œ๊ณตํ•˜๊ณ (582 tests green), -> Fat Controller 14๊ฐœ๊ฐ€ ๊ด€์‹ฌ์‚ฌ skill(`spec`/`autopilot`/`git`) + `references/` ๋กœ ํ•ด์ฒด๋˜์—ˆ์Šต๋‹ˆ๋‹ค. +> Fat Controller 14๊ฐœ๊ฐ€ ๊ด€์‹ฌ์‚ฌ skill(`spec-write`/`spec-review`/`autopilot`/`git`) + `references/` ๋กœ ํ•ด์ฒด๋˜์—ˆ์Šต๋‹ˆ๋‹ค. > ์Šฌ๋ž˜์‹œ ํ‘œ๋ฉด์€ capability 35๊ฐœ โ†’ ๊ด€์‹ฌ์‚ฌ ๋‹จ์œ„๋กœ ์ˆ˜๋ ด, ํก์ˆ˜ 6๊ฐœ plugin ์€ snapshot freeze ๋ณด์กด. > > โš ๏ธ `gh` CLI ์˜์กด git ๋ช…๋ น(pr create, reviews, guard pr)์€ mock ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋งŒ ์™„๋ฃŒ โ€” diff --git a/plugins/atelier/agents/spec/file-pair-observer.md b/plugins/atelier/agents/spec/file-pair-observer.md index 4ee5aecc..50c6c43d 100644 --- a/plugins/atelier/agents/spec/file-pair-observer.md +++ b/plugins/atelier/agents/spec/file-pair-observer.md @@ -1,5 +1,5 @@ --- -description: (๋‚ด๋ถ€์šฉ) spec skill ์ด ํ˜ธ์ถœํ•˜๋Š” per-file ๊ด€์ฐฐ ์—์ด์ „ํŠธ. spec ํŒŒ์ผ 1๊ฐœ์™€ ๊ด€๋ จ code ์˜์—ญ์„ ์ง์ ‘ ์ฝ๊ณ  ์‚ฌ์‹ค๋งŒ ๋‚˜์—ดํ•œ๋‹ค. +description: (๋‚ด๋ถ€์šฉ) spec-review skill ์ด ํ˜ธ์ถœํ•˜๋Š” per-file ๊ด€์ฐฐ ์—์ด์ „ํŠธ. spec ํŒŒ์ผ 1๊ฐœ์™€ ๊ด€๋ จ code ์˜์—ญ์„ ์ง์ ‘ ์ฝ๊ณ  ์‚ฌ์‹ค๋งŒ ๋‚˜์—ดํ•œ๋‹ค. model: haiku tools: ["Read", "Glob", "Grep"] --- diff --git a/plugins/atelier/agents/spec/gap-aggregator.md b/plugins/atelier/agents/spec/gap-aggregator.md index 33e5a7fe..04fb9c01 100644 --- a/plugins/atelier/agents/spec/gap-aggregator.md +++ b/plugins/atelier/agents/spec/gap-aggregator.md @@ -1,5 +1,5 @@ --- -description: (๋‚ด๋ถ€์šฉ) spec skill ์ด ํ˜ธ์ถœํ•˜๋Š” ์ข…ํ•ฉ ๋ถ„์„ ์—์ด์ „ํŠธ. file-pair-observer (L1) ๋ฆฌํฌํŠธ๋“ค์„ ์ž…๋ ฅ๋ฐ›์•„ codeโ†”spec ๊ฐญ๊ณผ specโ†”spec ๊ฐญ์„ ์‹๋ณ„ํ•œ๋‹ค. +description: (๋‚ด๋ถ€์šฉ) spec-review skill ์ด ํ˜ธ์ถœํ•˜๋Š” ์ข…ํ•ฉ ๋ถ„์„ ์—์ด์ „ํŠธ. file-pair-observer (L1) ๋ฆฌํฌํŠธ๋“ค์„ ์ž…๋ ฅ๋ฐ›์•„ codeโ†”spec ๊ฐญ๊ณผ specโ†”spec ๊ฐญ์„ ์‹๋ณ„ํ•œ๋‹ค. model: sonnet tools: [] --- diff --git a/plugins/atelier/agents/spec/gap-auditor.md b/plugins/atelier/agents/spec/gap-auditor.md index d8c90ccb..5df39592 100644 --- a/plugins/atelier/agents/spec/gap-auditor.md +++ b/plugins/atelier/agents/spec/gap-auditor.md @@ -1,5 +1,5 @@ --- -description: (๋‚ด๋ถ€์šฉ) spec skill ์ด ํ˜ธ์ถœํ•˜๋Š” ํ†ตํ•ฉ ๊ฐ์‚ฌ ์—์ด์ „ํŠธ. L2 finding ์˜ ์ธ์šฉ ์ •ํ™•์„ฑ + ์˜๋ฏธ ์ ํ•ฉ์„ฑ์„ ๋‹จ์ผ ๊ฒŒ์ดํŠธ๋กœ ๊ฒ€์ฆํ•œ๋‹ค. +description: (๋‚ด๋ถ€์šฉ) spec-review skill ์ด ํ˜ธ์ถœํ•˜๋Š” ํ†ตํ•ฉ ๊ฐ์‚ฌ ์—์ด์ „ํŠธ. L2 finding ์˜ ์ธ์šฉ ์ •ํ™•์„ฑ + ์˜๋ฏธ ์ ํ•ฉ์„ฑ์„ ๋‹จ์ผ ๊ฒŒ์ดํŠธ๋กœ ๊ฒ€์ฆํ•œ๋‹ค. model: sonnet tools: [] --- @@ -251,7 +251,7 @@ autopilot ์˜ Spec Quality Gate (autopilot skill `references/startup.md` ยง"Spec # Spec Quality Grading Request ## ํ‰๊ฐ€ ๊ธฐ์ค€ -{spec skill references/quality-criteria.md ๋ณธ๋ฌธ โ€” 4๊ด€์  ์ฒดํฌ๋ฆฌ์ŠคํŠธ + ์ ์ˆ˜ยท๋“ฑ๊ธ‰ ๊ธฐ์ค€} +{spec-review skill references/quality-criteria.md ๋ณธ๋ฌธ โ€” 4๊ด€์  ์ฒดํฌ๋ฆฌ์ŠคํŠธ + ์ ์ˆ˜ยท๋“ฑ๊ธ‰ ๊ธฐ์ค€} ## Spec Files diff --git a/plugins/atelier/agents/spec/spec-annotator.md b/plugins/atelier/agents/spec/spec-annotator.md index 42a2f5a7..4bc04746 100644 --- a/plugins/atelier/agents/spec/spec-annotator.md +++ b/plugins/atelier/agents/spec/spec-annotator.md @@ -1,5 +1,5 @@ --- -description: (๋‚ด๋ถ€์šฉ) spec skill ์˜ annotation reference ๊ฐ€ ํ˜ธ์ถœํ•˜๋Š” 1์ฐจ ๋ถ„์„ ์—์ด์ „ํŠธ. spec ๋ณธ๋ฌธ์—์„œ ์‹๋ณ„์ž/๊ฒฝ๋กœ ํŒจํ„ด์„ ์ถ”์ถœํ•˜๊ณ  ํ”„๋กœ์ ํŠธ ๋””๋ ‰ํ„ฐ๋ฆฌ์™€ ๋งค์นญํ•˜์—ฌ related_paths ํ›„๋ณด๋ฅผ ์ถ”์ •ํ•œ๋‹ค. +description: (๋‚ด๋ถ€์šฉ) spec-review skill ์˜ annotation reference ๊ฐ€ ํ˜ธ์ถœํ•˜๋Š” 1์ฐจ ๋ถ„์„ ์—์ด์ „ํŠธ. spec ๋ณธ๋ฌธ์—์„œ ์‹๋ณ„์ž/๊ฒฝ๋กœ ํŒจํ„ด์„ ์ถ”์ถœํ•˜๊ณ  ํ”„๋กœ์ ํŠธ ๋””๋ ‰ํ„ฐ๋ฆฌ์™€ ๋งค์นญํ•˜์—ฌ related_paths ํ›„๋ณด๋ฅผ ์ถ”์ •ํ•œ๋‹ค. model: haiku tools: ["Read", "Glob", "Grep"] --- diff --git a/plugins/atelier/skills/autopilot/references/startup.md b/plugins/atelier/skills/autopilot/references/startup.md index 3ec548b9..60f9a292 100644 --- a/plugins/atelier/skills/autopilot/references/startup.md +++ b/plugins/atelier/skills/autopilot/references/startup.md @@ -45,7 +45,7 @@ autopilot preflight --autopilot-md github-autopilot.local.md --repo-root . `spec_paths`์— ์ŠคํŽ™ ํŒŒ์ผ์ด ์žˆ์œผ๋ฉด, `gap-auditor` ์—์ด์ „ํŠธ๋ฅผ **Spec Quality Grading ๋ชจ๋“œ**๋กœ ํ˜ธ์ถœํ•˜์—ฌ ์ŠคํŽ™ ํ’ˆ์งˆ์„ ํ‰๊ฐ€ํ•œ๋‹ค (gap-auditor ๋Š” `tools: []` ์ด๋ฏ€๋กœ ๊ธฐ์ค€๊ณผ ํŒŒ์ผ ๋‚ด์šฉ์„ ํ”„๋กฌํ”„ํŠธ๋กœ ์ „๋‹ฌ): ์ „๋‹ฌ ์ •๋ณด: -- ํ‰๊ฐ€ ๊ธฐ์ค€: `spec` skill ์˜ `references/quality-criteria.md` ๋ณธ๋ฌธ (4๊ด€์  ์ฒดํฌ๋ฆฌ์ŠคํŠธ + ๋“ฑ๊ธ‰ ๊ธฐ์ค€) +- ํ‰๊ฐ€ ๊ธฐ์ค€: `spec-review` skill ์˜ `references/quality-criteria.md` ๋ณธ๋ฌธ (4๊ด€์  ์ฒดํฌ๋ฆฌ์ŠคํŠธ + ๋“ฑ๊ธ‰ ๊ธฐ์ค€) - spec_files: `spec_paths`์—์„œ `**/*.md`๋กœ ์ˆ˜์ง‘ํ•œ ํŒŒ์ผ๋“ค์˜ ๊ฒฝ๋กœ + ๋ณธ๋ฌธ - spec_quality_threshold: ์„ค์ •๊ฐ’ (๊ธฐ๋ณธ: `"C"`) diff --git a/plugins/atelier/skills/interview/SKILL.md b/plugins/atelier/skills/interview/SKILL.md index 80365034..702fbce1 100644 --- a/plugins/atelier/skills/interview/SKILL.md +++ b/plugins/atelier/skills/interview/SKILL.md @@ -25,13 +25,14 @@ version: 1.0.0 ### ์ข…๋ฃŒ์™€ ํ•ธ๋“œ์˜คํ”„ -๋ชจ๋“  ๊ฐ€์ง€๊ฐ€ ํ•ด์†Œ๋˜๋ฉด(๋˜๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ถฉ๋ถ„ํ•˜๋‹ค๊ณ  ํ•˜๋ฉด) ํ•ฉ์˜๋œ ๊ฒฐ์ • ๋ชฉ๋ก์„ ์š”์•ฝํ•œ๋‹ค. ์ฝ”๋“œ ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•˜๋ฉด Plan Mode ๋กœ, ํ•ฉ์˜๋œ ์„ค๊ณ„๋ฅผ ์ŠคํŽ™ ๋ฌธ์„œ๋กœ ๋‚จ๊ฒจ์•ผ ํ•˜๋ฉด `spec` ์˜ `write` ๋กœ ํ•ธ๋“œ์˜คํ”„ํ•œ๋‹ค. ํ•ฉ์˜ ์ „์—๋Š” ๊ตฌํ˜„์„ ์‹œ์ž‘ํ•˜์ง€ ์•Š๋Š”๋‹ค. +๋ชจ๋“  ๊ฐ€์ง€๊ฐ€ ํ•ด์†Œ๋˜๋ฉด(๋˜๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ถฉ๋ถ„ํ•˜๋‹ค๊ณ  ํ•˜๋ฉด) ํ•ฉ์˜๋œ ๊ฒฐ์ • ๋ชฉ๋ก์„ ์š”์•ฝํ•œ๋‹ค. ์ฝ”๋“œ ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•˜๋ฉด Plan Mode ๋กœ, ํ•ฉ์˜๋œ ์„ค๊ณ„๋ฅผ ์ŠคํŽ™ ๋ฌธ์„œ๋กœ ๋‚จ๊ฒจ์•ผ ํ•˜๋ฉด `spec-write` ๋กœ ํ•ธ๋“œ์˜คํ”„ํ•œ๋‹ค. ํ•ฉ์˜ ์ „์—๋Š” ๊ตฌํ˜„์„ ์‹œ์ž‘ํ•˜์ง€ ์•Š๋Š”๋‹ค. ## ์ฑ…์ž„ ๊ฒฝ๊ณ„ | ๋Œ€์ƒ | ์ฐจ์ด | ํ•ธ๋“œ์˜คํ”„ | |---|---|---| -| `spec` | **๋Œ€ํ™” โ‰  ๋ฌธ์„œ**. interview ๋Š” ์„ค๊ณ„๋ฅผ *๋Œ€ํ™”๋กœ ํ•ฉ์˜*(brainstorm: ๋ฌด์—์„œ / grill: ๊ธฐ์กด ๊ณ„ํš ๋„์ „)ํ•˜๊ณ , spec(`write`)์€ *ํ•ฉ์˜๋œ ์„ค๊ณ„๋ฅผ ์ŠคํŽ™ ๋ฌธ์„œ๋กœ ํ˜•์‹ํ™”*(DESIGN/concerns/flows)ํ•˜๊ณ  ๋ฆฌ๋ทฐยท๊ฐญ ๋ถ„์„ํ•œ๋‹ค | ํ•ฉ์˜๋œ ์„ค๊ณ„๋ฅผ ์žฅ๊ธฐ ์ŠคํŽ™ ๋ฌธ์„œ๋กœ ๋‚จ๊ธธ ๋• spec `write` ๋กœ, ๋‹จ์ผ ์ž‘์—… ๊ตฌํ˜„์€ Plan Mode ๋กœ | +| `spec-write` | **๋Œ€ํ™” โ‰  ๋ฌธ์„œ**. interview ๋Š” ์„ค๊ณ„๋ฅผ *๋Œ€ํ™”๋กœ ํ•ฉ์˜*(brainstorm: ๋ฌด์—์„œ / grill: ๊ธฐ์กด ๊ณ„ํš ๋„์ „)ํ•˜๊ณ , `spec-write` ๋Š” *ํ•ฉ์˜๋œ ์„ค๊ณ„๋ฅผ ์ŠคํŽ™ ๋ฌธ์„œ๋กœ ํ˜•์‹ํ™”*(DESIGN/concerns/flows)ํ•œ๋‹ค | ํ•ฉ์˜๋œ ์„ค๊ณ„๋ฅผ ์žฅ๊ธฐ ์ŠคํŽ™ ๋ฌธ์„œ๋กœ ๋‚จ๊ธธ ๋• `spec-write`, ๋‹จ์ผ ์ž‘์—… ๊ตฌํ˜„์€ Plan Mode ๋กœ | +| `spec-review` | ์ž‘์„ฑ๋œ ์ŠคํŽ™์„ *์ฝ”๋“œ์™€ ๋Œ€์กฐ ๋ถ„์„*(L1/L2/audit)ยทํ’ˆ์งˆ ํ‰๊ฐ€ํ•˜๋Š” ๋‹จ๊ณ„. interview ์˜ ์„ค๊ณ„ ๋„์ „(grill)๊ณผ ๋‹ค๋ฅธ ํ™œ๋™ | ์ŠคํŽ™ ์ž‘์„ฑ ํ›„ ์ฝ”๋“œ ์ •ํ•ฉ ํ™•์ธ์ด ํ•„์š”ํ•˜๋ฉด `spec-review` ๋กœ | | Plan Mode | interview ๋Š” *๋ฌด์—‡์„/์™œ*(์˜๋„ยท์„ค๊ณ„ ํ•ฉ์˜), Plan Mode ๋Š” *์–ด๋–ป๊ฒŒ*(์ฝ”๋“œ ๋ณ€๊ฒฝ ๋‹จ๊ณ„) | ์˜๋„๊ฐ€ ํ™•์ •๋˜๊ณ  ์ฝ”๋“œ ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•˜๋ฉด Plan Mode ๋กœ ๋„˜๊ธด๋‹ค | | `autopilot` | ์ž์œจ ๋ฃจํ”„์™€ ๋ฌด๊ด€, ์‚ฌ๋žŒโ†”์—์ด์ „ํŠธ ๋Œ€ํ™” ์ „์šฉ | ํ•ด๋‹น ์—†์Œ | diff --git a/plugins/atelier/skills/interview/references/brainstorm.md b/plugins/atelier/skills/interview/references/brainstorm.md index eea73a43..675fd48c 100644 --- a/plugins/atelier/skills/interview/references/brainstorm.md +++ b/plugins/atelier/skills/interview/references/brainstorm.md @@ -22,7 +22,7 @@ 3. **๋ช…ํ™•ํ™” ์งˆ๋ฌธ** โ€” ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์”ฉ, ๋ชฉ์ /์ œ์•ฝ/์„ฑ๊ณต ๊ธฐ์ค€ ์ดํ•ด 4. **2โ€“3๊ฐœ ์ ‘๊ทผ๋ฒ• ์ œ์•ˆ** โ€” trade-off ์™€ ์ถ”์ฒœ์•ˆ ํฌํ•จ 5. **์„ค๊ณ„ ์ œ์‹œ** โ€” ๋ณต์žก๋„์— ๋น„๋ก€ํ•œ ์„น์…˜ ๋‹จ์œ„, ์„น์…˜๋งˆ๋‹ค ์‚ฌ์šฉ์ž ๊ฒ€์ฆ -6. **์„ค๊ณ„ ๋ฌธ์„œ ์ž‘์„ฑ** (์žฅ๊ธฐ ์ŠคํŽ™์ด ํ•„์š”ํ•  ๋•Œ๋งŒ) โ€” `spec` ์˜ `write` ์ปจ๋ฒค์…˜์„ ๋”ฐ๋ผ ์ž‘์„ฑยท์ปค๋ฐ‹ +6. **์„ค๊ณ„ ๋ฌธ์„œ ์ž‘์„ฑ** (์žฅ๊ธฐ ์ŠคํŽ™์ด ํ•„์š”ํ•  ๋•Œ๋งŒ) โ€” `spec-write` ์ปจ๋ฒค์…˜์„ ๋”ฐ๋ผ ์ž‘์„ฑยท์ปค๋ฐ‹ 7. **์ŠคํŽ™ self-review** โ€” placeholderยท๋ชจ์ˆœยท๋ชจํ˜ธํ•จยท์Šค์ฝ”ํ”„ ์ธ๋ผ์ธ ์ ๊ฒ€ 8. **์‚ฌ์šฉ์ž์˜ ์ŠคํŽ™ ๋ฆฌ๋ทฐ** โ€” ์ž‘์„ฑ๋œ ๋ฌธ์„œ๋ฅผ ์‚ฌ์šฉ์ž๊ฐ€ ๊ฒ€ํ† ํ•œ ๋’ค ์ง„ํ–‰ 9. **๊ตฌํ˜„ ์ „ํ™˜** โ€” Plan Mode ๋กœ ์ง„์ž…ํ•ด ๊ตฌํ˜„ ๊ณ„ํš ์ˆ˜๋ฆฝ @@ -105,7 +105,7 @@ digraph brainstorming { **๋ฌธ์„œํ™”:** (์žฅ๊ธฐ ์ŠคํŽ™ ๋ฌธ์„œ๊ฐ€ ํ•„์š”ํ•  ๋•Œ๋งŒ) -- ๋ฌธ์„œ ์ž‘์„ฑ์€ **`spec` ์Šคํ‚ฌ์˜ `write` ์ปจ๋ฒค์…˜**(`spec/references/authoring.md`)์„ ๋”ฐ๋ฅธ๋‹ค โ€” ๊นŠ์ด ๊ธฐ์ค€ยท์ถœ๋ ฅ ๊ตฌ์กฐ(DESIGN/concerns/flows)ยท`related_paths`ยท์ €์žฅ ๊ฒฝ๋กœ ๊ทœ์•ฝ์ด ๊ฑฐ๊ธฐ์— ์žˆ๋‹ค. brainstorm ์€ ํ•ฉ์˜๋œ ์„ค๊ณ„๋ฅผ ๊ทธ ์ปจ๋ฒค์…˜์œผ๋กœ ํ˜•์‹ํ™”ํ•œ๋‹ค (๋ฌธ์„œ ํ˜•์‹์„ ์ž์ฒด ์ •์˜ํ•˜์ง€ ์•Š๋Š”๋‹ค) +- ๋ฌธ์„œ ์ž‘์„ฑ์€ **`spec-write` ์Šคํ‚ฌ์˜ ์ปจ๋ฒค์…˜**(`spec-write/references/authoring.md`)์„ ๋”ฐ๋ฅธ๋‹ค โ€” ๊นŠ์ด ๊ธฐ์ค€ยท์ถœ๋ ฅ ๊ตฌ์กฐ(DESIGN/concerns/flows)ยท`related_paths`ยท์ €์žฅ ๊ฒฝ๋กœ ๊ทœ์•ฝ์ด ๊ฑฐ๊ธฐ์— ์žˆ๋‹ค. brainstorm ์€ ํ•ฉ์˜๋œ ์„ค๊ณ„๋ฅผ ๊ทธ ์ปจ๋ฒค์…˜์œผ๋กœ ํ˜•์‹ํ™”ํ•œ๋‹ค (๋ฌธ์„œ ํ˜•์‹์„ ์ž์ฒด ์ •์˜ํ•˜์ง€ ์•Š๋Š”๋‹ค) - ๋‹จ์ˆœ ์ž‘์—…์ด๋ผ ์žฅ๊ธฐ ์ŠคํŽ™์ด ๋ถˆํ•„์š”ํ•˜๋ฉด ์ด ๋‹จ๊ณ„๋ฅผ ๊ฑด๋„ˆ๋›ฐ๊ณ  ๋ฐ”๋กœ ๊ตฌํ˜„ ์ „ํ™˜์œผ๋กœ ๊ฐ„๋‹ค โ€” ์„ค๊ณ„๋Š” Plan Mode ์˜ plan ํŒŒ์ผ์ด ๋‹ด๋Š”๋‹ค **์ŠคํŽ™ self-review:** @@ -128,7 +128,7 @@ self-review ๊ฐ€ ๋๋‚˜๋ฉด ์ง„ํ–‰ ์ „์— ์‚ฌ์šฉ์ž์—๊ฒŒ ์ž‘์„ฑ๋œ ์ŠคํŽ™ ๋ฆฌ๋ทฐ **๊ตฌํ˜„ ์ „ํ™˜:** - **Plan Mode ๋กœ ์ง„์ž…**ํ•ด ์ƒ์„ธ ๊ตฌํ˜„ ๊ณ„ํš์„ ์ˆ˜๋ฆฝํ•œ๋‹ค -- ๋‹ค๋ฅธ ์Šคํ‚ฌ์„ ํ˜ธ์ถœํ•˜์ง€ ์•Š๋Š”๋‹ค. Plan Mode ๊ฐ€ ๋‹ค์Œ ๋‹จ๊ณ„๋‹ค. ํ•ฉ์˜๋œ ์„ค๊ณ„๋ฅผ ์žฅ๊ธฐ ์ŠคํŽ™ ๋ฌธ์„œ๋กœ ๋‚จ๊ฒจ์•ผ ํ•˜๋ฉด `spec` ์˜ `write` ๋กœ ํ˜•์‹ํ™”ํ•œ๋‹ค +- ๋‹ค๋ฅธ ์Šคํ‚ฌ์„ ํ˜ธ์ถœํ•˜์ง€ ์•Š๋Š”๋‹ค. Plan Mode ๊ฐ€ ๋‹ค์Œ ๋‹จ๊ณ„๋‹ค. ํ•ฉ์˜๋œ ์„ค๊ณ„๋ฅผ ์žฅ๊ธฐ ์ŠคํŽ™ ๋ฌธ์„œ๋กœ ๋‚จ๊ฒจ์•ผ ํ•˜๋ฉด `spec-write` ๋กœ ํ˜•์‹ํ™”ํ•œ๋‹ค ## ํ•ต์‹ฌ ์›์น™ diff --git a/plugins/atelier/skills/spec/SKILL.md b/plugins/atelier/skills/spec-review/SKILL.md similarity index 68% rename from plugins/atelier/skills/spec/SKILL.md rename to plugins/atelier/skills/spec-review/SKILL.md index a7f66813..ef463991 100644 --- a/plugins/atelier/skills/spec/SKILL.md +++ b/plugins/atelier/skills/spec-review/SKILL.md @@ -1,26 +1,25 @@ --- -name: spec -description: ์ŠคํŽ™ ๋ฌธ์„œ ์ž‘์„ฑยท๋ฆฌ๋ทฐยท๊ฐญ ๋ถ„์„์˜ ๋‹จ์ผ ์ง„์ž…์ . "์ŠคํŽ™ ๋ฆฌ๋ทฐํ•ด์ค˜", "specโ†”code ๊ฐญ ๋ด์ค˜", "์ด ์„ค๊ณ„๋ฅผ ์ŠคํŽ™ ๋ฌธ์„œ๋กœ ์ ์–ด์ค˜/DESIGN.md ์ž‘์„ฑ", "์ปดํฌ๋„ŒํŠธ ์ŠคํŽ™ ์ž‘์„ฑ", "์™ธ๋ถ€ spec ์— related_paths ์ฃผ์„" ๊ฐ™์€ ์š”์ฒญ์— ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์Šฌ๋ž˜์‹œ๋กœ ์ง์ ‘ ํ˜ธ์ถœํ•˜๊ฑฐ๋‚˜ ๋งฅ๋ฝ์—์„œ ๋ชจ๋ธ์ด ์ž๋™ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค. ์„ค๊ณ„๋ฅผ ๋Œ€ํ™”๋กœ ํ•ฉ์˜ํ•˜๋Š” ๋‹จ๊ณ„๋Š” `interview` ์Šคํ‚ฌ์ด ๋‹ด๋‹นํ•˜๊ณ , spec ์€ ํ•ฉ์˜๋œ ์„ค๊ณ„๋ฅผ ๋ฌธ์„œ๋กœ ํ˜•์‹ํ™”ํ•ฉ๋‹ˆ๋‹ค. L1(๊ด€์ฐฐ)โ†’L2(์ข…ํ•ฉ)โ†’audit(๊ฐ์‚ฌ) ๋ ˆ์ด์–ด๋กœ file:line ์ธ์šฉ ๊ธฐ๋ฐ˜ ๋ถ„์„. +name: spec-review +description: ์ž‘์„ฑ๋œ ์ŠคํŽ™ ๋ฌธ์„œ๋ฅผ ์ฝ”๋“œ์™€ ๋Œ€์กฐ ๋ถ„์„ํ•˜๊ณ  ํ’ˆ์งˆ์„ ํ‰๊ฐ€ํ•˜๋Š” ์Šคํ‚ฌ. "์ŠคํŽ™ ๋ฆฌ๋ทฐํ•ด์ค˜", "specโ†”code ๊ฐญ ๋ด์ค˜", "์ด spec ๋“ค ๊ฒ€์ฆ", "์ŠคํŽ™ ํ’ˆ์งˆ ํ‰๊ฐ€", "์™ธ๋ถ€ spec ์— related_paths ์ฃผ์„" ๊ฐ™์€ ์š”์ฒญ์— ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์Šฌ๋ž˜์‹œ๋กœ ์ง์ ‘ ํ˜ธ์ถœํ•˜๊ฑฐ๋‚˜ ๋งฅ๋ฝ์—์„œ ๋ชจ๋ธ์ด ์ž๋™ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค. ์ŠคํŽ™ ๋ฌธ์„œ ์ž‘์„ฑ์€ `spec-write`, ์„ค๊ณ„ ๋Œ€ํ™”๋Š” `interview` ์Šคํ‚ฌ์ด ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค. L1(๊ด€์ฐฐ)โ†’L2(์ข…ํ•ฉ)โ†’audit(๊ฐ์‚ฌ) ๋ ˆ์ด์–ด๋กœ file:line ์ธ์šฉ ๊ธฐ๋ฐ˜ ๋ถ„์„. --- -# spec +# spec-review -์ŠคํŽ™ ๋ฌธ์„œ๋ฅผ ๋‹ค๋ฃจ๋Š” ๋ชจ๋“  ์›Œํฌํ”Œ๋กœ์šฐ(๋ฆฌ๋ทฐยท๊ฐญ ๋ถ„์„ยท์„ค๊ณ„ยท์ฃผ์„)์˜ **๊ด€์‹ฌ์‚ฌ ๋‹จ์œ„ ์ง„์ž…์ ์ด์ž ๊ณตํ†ต ๋„๋ฉ”์ธ ์ง€์‹**์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ spec ์Šฌ๋ž˜์‹œ๋กœ ์ง„์ž…ํ•˜๊ฑฐ๋‚˜ ๋ชจ๋ธ์ด ๋งฅ๋ฝ์—์„œ ์ž๋™ ํ˜ธ์ถœํ•˜๋ฉฐ, ์˜๋„์— ๋”ฐ๋ผ ์•„๋ž˜ `references/` ๋กœ ๋””์ŠคํŒจ์น˜ํ•ฉ๋‹ˆ๋‹ค. +์ž‘์„ฑ๋œ ์ŠคํŽ™ ๋ฌธ์„œ๋ฅผ **์ฝ”๋“œ์™€ ๋Œ€์กฐ ๋ถ„์„ยทํ‰๊ฐ€ยท์ฃผ์„**ํ•˜๋Š” ์Šคํ‚ฌ์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ spec-review ์Šฌ๋ž˜์‹œ๋กœ ์ง„์ž…ํ•˜๊ฑฐ๋‚˜ ๋ชจ๋ธ์ด ๋งฅ๋ฝ์—์„œ ์ž๋™ ํ˜ธ์ถœํ•˜๋ฉฐ, ์˜๋„์— ๋”ฐ๋ผ ์•„๋ž˜ `references/` ๋กœ ๋””์ŠคํŒจ์น˜ํ•ฉ๋‹ˆ๋‹ค. + +> ์ŠคํŽ™ ๋ฌธ์„œ๋ฅผ **์ž‘์„ฑ**ํ•˜๋ ค๋ฉด `spec-write`, ์„ค๊ณ„๋ฅผ **๋Œ€ํ™”๋กœ ํ•ฉ์˜**ํ•˜๋ ค๋ฉด `interview` ๋ฅผ ์”๋‹ˆ๋‹ค. spec-review ๋Š” ์ด๋ฏธ ์กด์žฌํ•˜๋Š” ์ŠคํŽ™์„ ๋ถ„์„ํ•˜๋Š” ๋‹จ๊ณ„์ž…๋‹ˆ๋‹ค. ## ์ง„์ž… ๋ผ์šฐํŒ… (์˜๋„ โ†’ reference) -spec ์Šฌ๋ž˜์‹œ ๋˜๋Š” ๋ชจ๋ธ ์ž๋™ ํ˜ธ์ถœ๋กœ ์ง„์ž…ํ•˜๋ฉด, ์‚ฌ์šฉ์ž์˜ ์ž์—ฐ์–ด ์˜๋„๋ฅผ ๋ถ„๋ฅ˜ํ•ด ํ•ด๋‹น ํ๋ฆ„์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. +spec-review ์Šฌ๋ž˜์‹œ ๋˜๋Š” ๋ชจ๋ธ ์ž๋™ ํ˜ธ์ถœ๋กœ ์ง„์ž…ํ•˜๋ฉด, ์‚ฌ์šฉ์ž์˜ ์ž์—ฐ์–ด ์˜๋„๋ฅผ ๋ถ„๋ฅ˜ํ•ด ํ•ด๋‹น ํ๋ฆ„์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. | ์‚ฌ์šฉ์ž ์˜๋„ (์˜ˆ) | ํ๋ฆ„ | ๋กœ๋“œํ•  references | |---|---|---| | "์ŠคํŽ™ ๋ฆฌ๋ทฐ", "์ด spec ๋“ค ๊ฒ€์ฆ", ๋‹ค์ค‘ spec ๋Œ€์กฐ | spec-review (๋‹ค์ค‘ spec, L1 ๋ณ‘๋ ฌ) | file-observation โ†’ gap-audit-loop โ†’ report-format(spec-review) | | "๊ฐญ ๋ด์ค˜", "spec ๊ณผ code ์ฐจ์ด", ๋‹จ์ผ spec | gap-detect (๋‹จ์ผ spec, codeโ†”spec ์šฐ์„ ) | file-observation โ†’ gap-audit-loop โ†’ report-format(gap-detect) | -| "์ด ์„ค๊ณ„ ์ŠคํŽ™ ๋ฌธ์„œ๋กœ", "DESIGN.md ์ž‘์„ฑ", "ํฐ๊ทธ๋ฆผ ์ŠคํŽ™ ์ ์–ด์ค˜" | write (Big Picture DESIGN.md ์ž‘์„ฑ) | authoring | -| "์ปดํฌ๋„ŒํŠธ ์ŠคํŽ™ ์ž‘์„ฑ", "์ด ํ๋ฆ„ ๋ฌธ์„œํ™”", concerns/flows | write-detail (์ƒ์„ธ ์ŠคํŽ™ ์ž‘์„ฑ) | authoring | +| "์ŠคํŽ™ ํ’ˆ์งˆ ํ‰๊ฐ€", "์ด ์ŠคํŽ™ ๋“ฑ๊ธ‰" | quality (4๊ด€์  ๋“ฑ๊ธ‰ ์‚ฐ์ •) | quality-criteria | | "related_paths ์ฑ„์›Œ์ค˜", ์™ธ๋ถ€ spec ์ฃผ์„ | annotate | annotation | -> **์„ค๊ณ„๋ฅผ ์•„์ง ํ•ฉ์˜ํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด** (๋ง‰์—ฐํ•œ ์•„์ด๋””์–ด, ํฐ๊ทธ๋ฆผ ์žก๊ธฐ, ๊ธฐ์กด ๊ณ„ํš ๋„์ „) `interview` ์Šคํ‚ฌ์„ ๋จผ์ € ์“ด๋‹ค. spec ์˜ `write`/`write-detail` ์€ **ํ•ฉ์˜๋œ ์„ค๊ณ„๋ฅผ ๋ฌธ์„œ๋กœ ํ˜•์‹ํ™”**ํ•˜๋Š” ๋‹จ๊ณ„๋‹ค. - ์ž…๋ ฅ ์ธ์ž(spec ํŒŒ์ผ ๊ฒฝ๋กœ ๋“ฑ)๊ฐ€ ํ•จ๊ป˜ ์˜ค๋ฉด ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•˜๊ณ , ์—†์œผ๋ฉด AskUserQuestion ์œผ๋กœ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๊ฒฐ์ •์  ๋™์ž‘์€ ์—†์œผ๋ฉฐ(์ „๋ถ€ ํŒ๋‹จ/๋ถ„์„), ๋ชจ๋“  ๋ถ„์„์€ sub-agent ์— ์œ„์ž„ํ•ฉ๋‹ˆ๋‹ค. ์ŠคํŽ™ ๋ฌธ์„œ๋ฅผ ๋‹ค๋ฃจ๋Š” ์›Œํฌํ”Œ๋กœ์šฐ์˜ ํ”„๋กœํ† ์ฝœยท์ข…๋ฃŒ ์กฐ๊ฑดยท์ถœ๋ ฅ ํฌ๋งท์€ ์ด skill ์˜ `references/` ์—์„œ progressive disclosure ๋กœ ๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค. @@ -52,7 +51,6 @@ spec ์Šฌ๋ž˜์‹œ ๋˜๋Š” ๋ชจ๋ธ ์ž๋™ ํ˜ธ์ถœ๋กœ ์ง„์ž…ํ•˜๋ฉด, ์‚ฌ์šฉ์ž์˜ ์ž์—ฐ | `references/file-observation.md` | L1 spawn + ์ธ์šฉ ๊ฒ€์ฆ + ํ”ผ๋“œ๋ฐฑ ๋ฃจํ”„ ์ˆ˜ํ–‰ ์‹œ | file-pair-observer ์ž…๋ ฅ ํ”„๋กฌํ”„ํŠธ, ์ธ์šฉ ๊ฒ€์ฆ ์ ˆ์ฐจ, ํ”ผ๋“œ๋ฐฑ ๋ฃจํ”„ ์•Œ๊ณ ๋ฆฌ์ฆ˜/์ข…๋ฃŒ ์กฐ๊ฑด, drop ๋กœ๊ทธ | | `references/gap-audit-loop.md` | L2 ์ข…ํ•ฉ + audit ๊ฐ์‚ฌ ์ˆ˜ํ–‰ ์‹œ | gap-aggregator ์ž…๋ ฅ, gap-auditor ๋‹จ์ผ ๊ฒŒ์ดํŠธ, audit ๋ฃจํ”„ ์ •์ฑ…, fix request ํ˜•์‹, ์‹คํŒจ ๋ชจ๋“œ | | `references/report-format.md` | ์ตœ์ข… ๋ฆฌํฌํŠธ ์ถœ๋ ฅ ์‹œ | spec-review / gap-detect ์ถœ๋ ฅ ๊ตฌ์กฐ, ๊ฒ€์ฆ ํ†ต๊ณ„ footer, Output Examples | -| `references/authoring.md` | ์ŠคํŽ™ ๋ฌธ์„œ ์ž‘์„ฑ(`write`/`write-detail`) ์‹œ | ์ง„์ž… ์ „ ๋งฅ๋ฝ, ๊นŠ์ด ๊ธฐ์ค€, ์ž‘์„ฑ ์›์น™, ์ถœ๋ ฅ ๊ตฌ์กฐ(DESIGN/concerns/flows), related_paths | | `references/annotation.md` | ์™ธ๋ถ€ spec frontmatter ์ฃผ์„(`annotate-spec`) ์‹œ | spec-annotator ํ˜ธ์ถœ, ์‹ ๋ขฐ๋„๋ณ„ confirm, frontmatter ๊ฐฑ์‹  ๋ชจ๋“œ | | `references/quality-criteria.md` | ์ŠคํŽ™ ํ’ˆ์งˆ ํ‰๊ฐ€ยท๋“ฑ๊ธ‰ ์‚ฐ์ • ์‹œ (autopilot Spec Quality Gate ํฌํ•จ) | Big Picture/Detail/Verification/Consistency 4๊ด€์  ์ฒดํฌ๋ฆฌ์ŠคํŠธ, ์ ์ˆ˜ยท๋“ฑ๊ธ‰ ๊ธฐ์ค€ | | `references/issue-report.md` | ๋ถ„์„ ๊ฒฐ๊ณผ๋ฅผ ์‹ฌ๊ฐ๋„ ๊ธฐ๋ฐ˜ ์ด์Šˆ ๋ฆฌํฌํŠธ๋กœ ๋ณด๊ณ ํ•  ๋•Œ | severity ๊ธฐ์ค€, ์ด์Šˆ ํ•ญ๋ชฉ ๊ตฌ์กฐ, ๋งˆํฌ๋‹ค์šด ์ถœ๋ ฅ ํ˜•์‹ | diff --git a/plugins/atelier/skills/spec/references/annotation.md b/plugins/atelier/skills/spec-review/references/annotation.md similarity index 100% rename from plugins/atelier/skills/spec/references/annotation.md rename to plugins/atelier/skills/spec-review/references/annotation.md diff --git a/plugins/atelier/skills/spec/references/file-observation.md b/plugins/atelier/skills/spec-review/references/file-observation.md similarity index 100% rename from plugins/atelier/skills/spec/references/file-observation.md rename to plugins/atelier/skills/spec-review/references/file-observation.md diff --git a/plugins/atelier/skills/spec/references/gap-audit-loop.md b/plugins/atelier/skills/spec-review/references/gap-audit-loop.md similarity index 100% rename from plugins/atelier/skills/spec/references/gap-audit-loop.md rename to plugins/atelier/skills/spec-review/references/gap-audit-loop.md diff --git a/plugins/atelier/skills/spec/references/issue-report.md b/plugins/atelier/skills/spec-review/references/issue-report.md similarity index 100% rename from plugins/atelier/skills/spec/references/issue-report.md rename to plugins/atelier/skills/spec-review/references/issue-report.md diff --git a/plugins/atelier/skills/spec/references/quality-criteria.md b/plugins/atelier/skills/spec-review/references/quality-criteria.md similarity index 100% rename from plugins/atelier/skills/spec/references/quality-criteria.md rename to plugins/atelier/skills/spec-review/references/quality-criteria.md diff --git a/plugins/atelier/skills/spec/references/report-format.md b/plugins/atelier/skills/spec-review/references/report-format.md similarity index 100% rename from plugins/atelier/skills/spec/references/report-format.md rename to plugins/atelier/skills/spec-review/references/report-format.md diff --git a/plugins/atelier/skills/spec-write/SKILL.md b/plugins/atelier/skills/spec-write/SKILL.md new file mode 100644 index 00000000..d7ec9c3d --- /dev/null +++ b/plugins/atelier/skills/spec-write/SKILL.md @@ -0,0 +1,35 @@ +--- +name: spec-write +description: ํ•ฉ์˜๋œ ์„ค๊ณ„๋ฅผ ์ŠคํŽ™ ๋ฌธ์„œ ๊ณ„์ธต์œผ๋กœ ์ž‘์„ฑํ•˜๋Š” ์Šคํ‚ฌ. "์ด ์„ค๊ณ„๋ฅผ ์ŠคํŽ™ ๋ฌธ์„œ๋กœ ์ ์–ด์ค˜", "DESIGN.md ์ž‘์„ฑ", "ํฐ๊ทธ๋ฆผ ์ŠคํŽ™ ์ ์–ด์ค˜", "์ปดํฌ๋„ŒํŠธ ์ŠคํŽ™ ์ž‘์„ฑ", "์ด ํ๋ฆ„ ๋ฌธ์„œํ™”" ๊ฐ™์€ ์š”์ฒญ์— ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์„ค๊ณ„๋ฅผ ๋Œ€ํ™”๋กœ ํ•ฉ์˜ํ•˜๋Š” ๋‹จ๊ณ„๋Š” `interview` ์Šคํ‚ฌ, ์ž‘์„ฑ๋œ ์ŠคํŽ™์„ ์ฝ”๋“œ์™€ ๋Œ€์กฐ ๋ถ„์„ํ•˜๋Š” ๋‹จ๊ณ„๋Š” `spec-review` ์Šคํ‚ฌ์ด ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ๋Š” ํ•ฉ์˜๋œ ์„ค๊ณ„๋ฅผ ์ •ํ•ด์ง„ ๊ตฌ์กฐ(DESIGNโ†’concernsโ†’flows)๋กœ ํ˜•์‹ํ™”ํ•ฉ๋‹ˆ๋‹ค. +version: 1.0.0 +--- + +# spec-write + +ํ•ฉ์˜๋œ ์„ค๊ณ„๋ฅผ **์ŠคํŽ™ ๋ฌธ์„œ ๊ณ„์ธต์œผ๋กœ ์ ๋Š”** ์Šคํ‚ฌ์ž…๋‹ˆ๋‹ค. ์„ค๊ณ„๋ฅผ *์ƒ๊ฐํ•˜๊ณ  ๋„์ „ํ•˜๋Š” ๋Œ€ํ™”*๋Š” `interview`(brainstorm/grill)์—์„œ ๋๋‚ด๊ณ , ์—ฌ๊ธฐ์„œ๋Š” ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์ •ํ•ด์ง„ ๊ตฌ์กฐ์™€ ๊นŠ์ด๋กœ ํ˜•์‹ํ™”ํ•ฉ๋‹ˆ๋‹ค. ๋ฉ”์ธ ์—์ด์ „ํŠธ๊ฐ€ ์ง์ ‘ ๋ฌธ์„œ๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค(sub-agent ๋ถ„์„ ์•„๋‹˜). + +## ์ง„์ž… ๋ผ์šฐํŒ… (์˜๋„ โ†’ ํ๋ฆ„) + +| ์‚ฌ์šฉ์ž ์˜๋„ (์˜ˆ) | ํ๋ฆ„ | ์‚ฐ์ถœ๋ฌผ | +|---|---|---| +| "์ด ์„ค๊ณ„ ์ŠคํŽ™ ๋ฌธ์„œ๋กœ", "DESIGN.md ์ž‘์„ฑ", "ํฐ๊ทธ๋ฆผ ์ŠคํŽ™ ์ ์–ด์ค˜" | write (Big Picture) | `spec/DESIGN.md` | +| "์ปดํฌ๋„ŒํŠธ ์ŠคํŽ™ ์ž‘์„ฑ", "์ด ํ๋ฆ„ ๋ฌธ์„œํ™”", concerns/flows | write-detail (์ƒ์„ธ) | `spec/concerns/*.md`, `spec/flows/*.md` | + +> **์„ค๊ณ„๋ฅผ ์•„์ง ํ•ฉ์˜ํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด** (๋ง‰์—ฐํ•œ ์•„์ด๋””์–ด, ํฐ๊ทธ๋ฆผ ์žก๊ธฐ, ๊ธฐ์กด ๊ณ„ํš ๋„์ „) `interview` ์Šคํ‚ฌ์„ ๋จผ์ € ์”๋‹ˆ๋‹ค. spec-write ๋Š” **ํ•ฉ์˜๋œ ์„ค๊ณ„๋ฅผ ๋ฌธ์„œ๋กœ ํ˜•์‹ํ™”**ํ•˜๋Š” ๋‹จ๊ณ„์ž…๋‹ˆ๋‹ค. +> +> **์ž‘์„ฑํ•œ ์ŠคํŽ™์ด ์‹ค์ œ ์ฝ”๋“œ์™€ ๋งž๋Š”์ง€ ํ™•์ธ**ํ•˜๋ ค๋ฉด `spec-review` ์Šคํ‚ฌ(specโ†”code ๊ฐญ ๋ถ„์„)์„ ์”๋‹ˆ๋‹ค. + +์ž…๋ ฅ ์ธ์ž(์„ค๊ณ„ ๋‚ด์šฉ, ์ €์žฅ ๊ฒฝ๋กœ ๋“ฑ)๊ฐ€ ํ•จ๊ป˜ ์˜ค๋ฉด ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•˜๊ณ , ์—†์œผ๋ฉด AskUserQuestion ์œผ๋กœ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. + +## ์ž‘์„ฑ ์ ˆ์ฐจยทํ˜•์‹ + +์ŠคํŽ™ ๋ฌธ์„œ์˜ ์ง„์ž… ์ „ ๋งฅ๋ฝ, ๊นŠ์ด ๊ธฐ์ค€, ์ž‘์„ฑ ์›์น™, ์ถœ๋ ฅ ๊ตฌ์กฐ(DESIGN/concerns/flows ํ…œํ”Œ๋ฆฟ), `related_paths` ๊ทœ์•ฝ์€ `references/authoring.md` ์—์„œ progressive disclosure ๋กœ ๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค. + +| reference | ์–ธ์ œ ๋กœ๋“œ | ๋‚ด์šฉ | +|---|---|---| +| `references/authoring.md` | `write`/`write-detail` ์ˆ˜ํ–‰ ์‹œ | ์ง„์ž… ์ „ ๋งฅ๋ฝ, ๊นŠ์ด ๊ธฐ์ค€, ์ž‘์„ฑ ์›์น™, ์ถœ๋ ฅ ๊ตฌ์กฐ(DESIGN/concerns/flows), related_paths | + +## ๊ณตํ†ต ์›์น™ + +- **ํ•ฉ์˜ ํ›„ ํ˜•์‹ํ™”** โ€” ์„ค๊ณ„ ๊ฒฐ์ •์€ interview ์—์„œ ํ•ฉ์˜ํ•œ๋‹ค. spec-write ๋Š” ํ•ฉ์˜๋œ ๋‚ด์šฉ์„ ๊ตฌ์กฐํ™”ํ•  ๋ฟ, ์ƒˆ ์„ค๊ณ„ ๊ฒฐ์ •์„ ์ž„์˜๋กœ ๋‚ด๋ฆฌ์ง€ ์•Š๋Š”๋‹ค. +- ์ž‘์„ฑ ์›์น™(์Šน์ธ ์ „ ์ €์žฅ ๊ธˆ์ง€ยท`related_paths`ยท๊นŠ์ด ๋ถ„๋ฆฌ)๊ณผ ์ถœ๋ ฅ ๊ตฌ์กฐ๋Š” `references/authoring.md` ๊ฐ€ canonical ์ด๋‹ค. diff --git a/plugins/atelier/skills/spec/references/authoring.md b/plugins/atelier/skills/spec-write/references/authoring.md similarity index 87% rename from plugins/atelier/skills/spec/references/authoring.md rename to plugins/atelier/skills/spec-write/references/authoring.md index 1aa10411..aea22f1e 100644 --- a/plugins/atelier/skills/spec/references/authoring.md +++ b/plugins/atelier/skills/spec-write/references/authoring.md @@ -2,10 +2,9 @@ ํ•ฉ์˜๋œ ์„ค๊ณ„๋ฅผ ์ŠคํŽ™ ๋ฌธ์„œ๋กœ ์ ๋Š” ์ ˆ์ฐจ์™€ ํ˜•์‹. **์„ค๊ณ„๋ฅผ ์ƒ๊ฐํ•˜๊ณ  ๋„์ „ํ•˜๋ฉฐ ํ•ฉ์˜์— ์ด๋ฅด๋Š” ๋Œ€ํ™”๋Š” `interview`(brainstorm: ๋ฌด์—์„œ ์„ค๊ณ„ / grill: ๊ธฐ์กด ๊ณ„ํš ์‹ฌ๋ฌธ)์—์„œ ๋๋‚ธ๋‹ค.** ์—ฌ๊ธฐ์„œ๋Š” ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์ •ํ•ด์ง„ ๊ตฌ์กฐ๋กœ ํ˜•์‹ํ™”ํ•œ๋‹ค โ€” `write`(Big Picture DESIGN.md)์™€ `write-detail`(์ปดํฌ๋„ŒํŠธ/ํ”Œ๋กœ์šฐ ์ƒ์„ธ)์ด ์ด ์ปจ๋ฒค์…˜์„ ๊ณต์œ ํ•œ๋‹ค. -## ์ง„์ž… ์ „ ๋งฅ๋ฝ ํŒŒ์•… +## ์ง„์ž… ์ „ ๋งฅ๋ฝ ํŒŒ์•… (write-detail) -- **write (Big Picture)**: ํ•ฉ์˜๋œ ์„ค๊ณ„ ๋‚ด์šฉ(๋˜๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ œ์‹œํ•œ ๋ฐฉํ–ฅ)์„ ์ž…๋ ฅ์œผ๋กœ ๋ฐ›๋Š”๋‹ค. ์—†์œผ๋ฉด ๋จผ์ € `interview` ๋กœ ์„ค๊ณ„๋ฅผ ํ•ฉ์˜ํ•˜๋„๋ก ์•ˆ๋‚ดํ•œ๋‹ค. -- **write-detail (์ปดํฌ๋„ŒํŠธ/ํ”Œ๋กœ์šฐ)**: `spec/DESIGN.md` ๋˜๋Š” `**/DESIGN*.md` ๋ฅผ Glob ์œผ๋กœ ์ฐพ์•„ Read ํ•œ๋‹ค. ์—†์œผ๋ฉด AskUserQuestion: "Big Picture ์ŠคํŽ™(DESIGN.md)์„ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. `write` ๋กœ ๋จผ์ € ๋งŒ๋“ค๊ฑฐ๋‚˜ ๊ธฐ์กด ๊ฒฝ๋กœ๋ฅผ ์•Œ๋ ค์ฃผ์„ธ์š”." ๊ธฐ์กด `spec/concerns/`ยท`spec/flows/` ๋ฐ ๊ด€๋ จ ์ฝ”๋“œ๋„ ํŒŒ์•…ํ•œ๋‹ค. +`write-detail` ์€ Big Picture ๋ฅผ ์ „์ œํ•˜๋ฏ€๋กœ `spec/DESIGN.md`(๋˜๋Š” `**/DESIGN*.md`)๋ฅผ Glob ์œผ๋กœ ์ฐพ์•„ Read ํ•œ๋‹ค. ์—†์œผ๋ฉด AskUserQuestion ์œผ๋กœ `write` ๋ฅผ ๋จผ์ € ๋งŒ๋“ค๊ฑฐ๋‚˜ ๊ธฐ์กด ๊ฒฝ๋กœ๋ฅผ ํ™•์ธํ•˜๊ณ , ๊ธฐ์กด `spec/concerns/`ยท`spec/flows/` ๋ฐ ๊ด€๋ จ ์ฝ”๋“œ๋„ ํŒŒ์•…ํ•œ๋‹ค. ## ๊นŠ์ด ๊ธฐ์ค€ From 86114dea3f3737b60189099918e362ce08593b6e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EC=9A=A9=EC=84=B1?= Date: Sat, 13 Jun 2026 13:54:13 +0900 Subject: [PATCH 7/7] =?UTF-8?q?chore(validate):=20drop=20obsolete=20spec?= =?UTF-8?q?=20convergence=20invariant,=20relabel=20design=E2=86=92write?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The spec designโ†’write refactor (#794) intentionally removed the 6-perspective ping-pong convergence model, dropping the '3๊ฐœ ์ด์ƒ' token (design-detail convergence threshold). The extraction-invariants guard flagged it as lost load-bearing content, but the removal was deliberate per the design-dialogue/spec-authoring split โ€” so retire that invariant. Also relabel the surviving spec output-structure invariants from spec/designยทspec/design-detail to spec-write/writeยทspec-write/write-detail to match the renamed routes. All their tokens (## OCP ํ™•์žฅ์ , ## ํ•ต์‹ฌ ๋กœ์ง, spec/concerns/, etc.) still resolve in spec-write/references/authoring.md. Fixes validate-ci failure on #794. ๐Ÿค– Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- tools/validate/extraction-invariants.json | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/tools/validate/extraction-invariants.json b/tools/validate/extraction-invariants.json index ea7e77a8..e8dc0a45 100644 --- a/tools/validate/extraction-invariants.json +++ b/tools/validate/extraction-invariants.json @@ -5,14 +5,13 @@ "plugins/atelier/commands" ], "invariants": [ - {"domain": "spec/design", "token": "## OCP ํ™•์žฅ์ ", "reason": "design DESIGN.md ์ถœ๋ ฅ ๊ตฌ์กฐ ์„น์…˜"}, - {"domain": "spec/design", "token": "## ๋ฏธ๊ฒฐ์ • ์‚ฌํ•ญ", "reason": "design DESIGN.md ์ถœ๋ ฅ ๊ตฌ์กฐ ์„น์…˜"}, - {"domain": "spec/design", "token": "## ๊ด€์‹ฌ์‚ฌ ๋ถ„๋ฆฌ", "reason": "design DESIGN.md ์ถœ๋ ฅ ๊ตฌ์กฐ ์„น์…˜"}, - {"domain": "spec/design-detail", "token": "## ํ•ต์‹ฌ ๋กœ์ง", "reason": "design-detail concerns ์ถœ๋ ฅ ๊ตฌ์กฐ"}, - {"domain": "spec/design-detail", "token": "## ํ๋ฆ„ ๋‹ค์ด์–ด๊ทธ๋žจ", "reason": "design-detail flows ์ถœ๋ ฅ ๊ตฌ์กฐ"}, - {"domain": "spec/design-detail", "token": "3๊ฐœ ์ด์ƒ", "reason": "design-detail ์ˆ˜๋ ด ์ž„๊ณ„๊ฐ’ (design 4๊ฐœ์™€ ๊ตฌ๋ถ„)"}, - {"domain": "spec/design-detail", "token": "spec/concerns/", "reason": "design-detail ์ปดํฌ๋„ŒํŠธ ์ €์žฅ ๊ฒฝ๋กœ"}, - {"domain": "spec/design-detail", "token": "spec/flows/", "reason": "design-detail ํ”Œ๋กœ์šฐ ์ €์žฅ ๊ฒฝ๋กœ"}, + {"domain": "spec-write/write", "token": "## OCP ํ™•์žฅ์ ", "reason": "write DESIGN.md ์ถœ๋ ฅ ๊ตฌ์กฐ ์„น์…˜"}, + {"domain": "spec-write/write", "token": "## ๋ฏธ๊ฒฐ์ • ์‚ฌํ•ญ", "reason": "write DESIGN.md ์ถœ๋ ฅ ๊ตฌ์กฐ ์„น์…˜"}, + {"domain": "spec-write/write", "token": "## ๊ด€์‹ฌ์‚ฌ ๋ถ„๋ฆฌ", "reason": "write DESIGN.md ์ถœ๋ ฅ ๊ตฌ์กฐ ์„น์…˜"}, + {"domain": "spec-write/write-detail", "token": "## ํ•ต์‹ฌ ๋กœ์ง", "reason": "write-detail concerns ์ถœ๋ ฅ ๊ตฌ์กฐ"}, + {"domain": "spec-write/write-detail", "token": "## ํ๋ฆ„ ๋‹ค์ด์–ด๊ทธ๋žจ", "reason": "write-detail flows ์ถœ๋ ฅ ๊ตฌ์กฐ"}, + {"domain": "spec-write/write-detail", "token": "spec/concerns/", "reason": "write-detail ์ปดํฌ๋„ŒํŠธ ์ €์žฅ ๊ฒฝ๋กœ"}, + {"domain": "spec-write/write-detail", "token": "spec/flows/", "reason": "write-detail ํ”Œ๋กœ์šฐ ์ €์žฅ ๊ฒฝ๋กœ"}, {"domain": "spec/review", "token": "excerpt mismatch", "reason": "L1 ์ธ์šฉ ๊ฒ€์ฆ ์‹คํŒจ ์‚ฌ์œ "}, {"domain": "spec/review", "token": "gap-auditor", "reason": "audit ๋‹จ์ผ ๊ฒŒ์ดํŠธ ์—์ด์ „ํŠธ"}, {"domain": "spec/annotate", "token": "## ์—๋Ÿฌ ์ฒ˜๋ฆฌ", "reason": "annotate ์—๋Ÿฌ ์ฒ˜๋ฆฌ (๋งค์นญ 0๊ฑด/retry)"},