LogoSkills

seed:status

Seed Spec Status โ€” Read-only LLM-semantic alignment report against the latest LOCKED Seed spec

ํ•ญ๋ชฉ๋‚ด์šฉ
Invoke/spec:status
Categoryspec-clarity
Complexitymoderate

/spec:status โ€” ํ™•์ •๋œ ๋ช…์„ธ์™€ ์ง€๊ธˆ ์ž‘์—…์ด ์–ผ๋งˆ๋‚˜ ๋งž๋Š”์ง€ ์ ๊ฒ€#

ํ•œ๋งˆ๋””๋กœ#

์ด๋ฏธ ํ™•์ •(์ž ๊ธˆ)๋œ ํ•ต์‹ฌ ๋ช…์„ธ(Seed spec)๋ฅผ ๊ธฐ์ค€์œผ๋กœ, ์ง€๊ธˆ ๋งŒ๋“  ์ž‘์—…์ด ๊ทธ ๋ช…์„ธ์™€ ์–ผ๋งˆ๋‚˜ ์ž˜ ๋งž๋Š”์ง€ ์ฝ๊ธฐ ์ „์šฉ์œผ๋กœ ์ง„๋‹จํ•ด ์ฃผ๋Š” ๋ช…๋ น์ž…๋‹ˆ๋‹ค. ๋ช…์„ธ๋Š” ํ•œ ๊ธ€์ž๋„ ๊ฑด๋“œ๋ฆฌ์ง€ ์•Š๊ณ , "์ง€๊ธˆ ์–ด๋””๊นŒ์ง€ ์™€ ์žˆ๋‚˜"๋ฅผ ๋ณด์—ฌ ์ฃผ๋Š” ๊ฑด๊ฐ•๊ฒ€์ง„ํ‘œ๋ผ๊ณ  ๋ณด๋ฉด ๋ฉ๋‹ˆ๋‹ค.

๋ˆ„๊ฐ€ยท์–ธ์ œ ์“ฐ๋‚˜์š”#

  • ํ™•์ •(LOCKED)๋œ Seed ๋ช…์„ธ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํ˜„์žฌ ์ž‘์—…์ด ๊ถค๋„์—์„œ ๋ฒ—์–ด๋‚˜์ง€ ์•Š์•˜๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ์‹ถ์„ ๋•Œ
  • ํ•ฉ๊ฒฉ ๊ธฐ์ค€(Acceptance) ํ•ญ๋ชฉ ํ•˜๋‚˜ํ•˜๋‚˜๊ฐ€ ์ง€๊ธˆ ์–ด๋–ค ์ƒํƒœ์ธ์ง€ ํ•œ๋ˆˆ์— ๋ณด๊ณ  ์‹ถ์„ ๋•Œ
  • PR์„ ์˜ฌ๋ฆฌ๊ธฐ ์ „์ด๋‚˜ ๋ฆฌ๋ทฐ ์ค‘์—, ๋ช…์„ธ์˜ ๋ชฉํ‘œยท์ œ์•ฝ๊ณผ ์–ด๊ธ‹๋‚œ ๋ถ€๋ถ„์ด ์—†๋Š”์ง€ ๋น ๋ฅด๊ฒŒ ์ ๊ฒ€ํ•˜๊ณ  ์‹ถ์„ ๋•Œ

๐Ÿ‘‰ ์ด ๋ช…๋ น์€ ์•„๋ฌด๊ฒƒ๋„ ๋ฐ”๊พธ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ช…์„ธ ํŒŒ์ผ๋„, ์ž‘์—… ํŒŒ์ผ๋„ ๊ทธ๋Œ€๋กœ ๋‘” ์ฑ„ ์ง„๋‹จ ๊ฒฐ๊ณผ๋งŒ ํ™”๋ฉด์— ๋ณด์—ฌ ์ค๋‹ˆ๋‹ค.

๋ฌด์—‡์„ ํ•ด์ฃผ๋‚˜์š”#

๊ฐ€์žฅ ์ตœ๊ทผ์— ์ž ๊ธด Seed ๋ช…์„ธ(docs/seed-spec-*.md)๋ฅผ ๋ถˆ๋Ÿฌ์™€, ์„ธ ๊ฐ€์ง€ ์ง„๋‹จ ๋ฆฌํฌํŠธ๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

  • ํ•ฉ๊ฒฉ ๊ธฐ์ค€๋ณ„ ์ƒํƒœ ํ‘œ์‹œ โ€” ๋ช…์„ธ์˜ ํ•ฉ๊ฒฉ ๊ธฐ์ค€(S4)์— ์ ํžŒ AC-01, AC-02 โ€ฆ ๊ฐ ํ•ญ๋ชฉ์ด ์ง€๊ธˆ ์–ด๋–ค ์ƒํƒœ์ธ์ง€ ๊ทธ๋Œ€๋กœ ๋ณด์—ฌ ์ค๋‹ˆ๋‹ค. ์ƒํƒœ๋Š” PENDING(๋Œ€๊ธฐ) / IN-PROGRESS(์ง„ํ–‰ ์ค‘) / MET(์ถฉ์กฑ) / FAILED(๋ฏธ์ถฉ์กฑ) / WAIVED(๋ฉด์ œ) ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.
  • ๋ชฉํ‘œ ์ •๋ ฌ ํŒ์ • โ€” ์ง€๊ธˆ ์ž‘์—…์ด ๋ช…์„ธ์˜ ํ•ต์‹ฌ ๋ฌธ์ œ(S1)๊ฐ€ ํ’€๋ ค๋Š” ๋ชฉํ‘œ์™€ ์ž˜ ๋งž๋Š”์ง€๋ฅผ ALIGNED(์ •๋ ฌ๋จ) / MINOR-DRIFT(์•ฝ๊ฐ„ ๋ฒ—์–ด๋‚จ) / MAJOR-DRIFT(ํฌ๊ฒŒ ๋ฒ—์–ด๋‚จ) ์ค‘ ํ•˜๋‚˜๋กœ ํŒ์ •ํ•ฉ๋‹ˆ๋‹ค.
  • ๋ถˆ๋ณ€ ์ œ์•ฝ ์œ„๋ฐ˜ ์ ๊ฒ€ โ€” ์ž‘์—…์ด ๋ช…์„ธ์˜ ์ ˆ๋Œ€ ์ œ์•ฝ(S2) ์ค‘ ์–ด๋–ค ๊ฒƒ์„ ์–ด๊ธด ๊ฒƒ์œผ๋กœ ๋ณด์ด๋Š”์ง€ ์งš์–ด ์ค๋‹ˆ๋‹ค. ์œ„๋ฐ˜์ด ์—†์œผ๋ฉด "์œ„๋ฐ˜ ์—†์Œ"์œผ๋กœ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ‘‰ ์ค‘์š”(ํ•œ๊ตญ์–ด ์‚ฌ์šฉ์ž ์•ˆ๋‚ด): ์ด ํŒ์ •์€ ๋‹จ์–ด๊ฐ€ ๋˜‘๊ฐ™์€์ง€ ๋น„๊ตํ•˜๋Š” ๋ฐฉ์‹์ด ์•„๋‹™๋‹ˆ๋‹ค. AI๊ฐ€ ๋œป์„ ์ฝ์–ด์„œ(์˜๋ฏธ ๊ธฐ์ค€) ํŒ๋‹จํ•ฉ๋‹ˆ๋‹ค. ํ•œ๊ตญ์–ด๋Š” ์กฐ์‚ฌยท์–ด๋ฏธ๊ฐ€ ๋ถ™๊ณ  ๋„์–ด์“ฐ๊ธฐ ๊ฒฝ๊ณ„๊ฐ€ ๋ถ„๋ช…ํ•˜์ง€ ์•Š์•„์„œ, ๊ธ€์ž/ํ† ํฐ์ด ๊ฒน์น˜๋Š”์ง€๋กœ ๋น„๊ตํ•˜๋ฉด ์—‰๋šฑํ•œ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ "ํ‘œํ˜„์ด ๋‹ฌ๋ผ๋„ ์˜๋ฏธ๊ฐ€ ๊ฐ™์œผ๋ฉด ๊ฐ™๋‹ค"๊ณ  ๋ด…๋‹ˆ๋‹ค.

์–ด๋–ป๊ฒŒ ์“ฐ๋‚˜์š”#

/spec:status                         # ์ตœ์‹  LOCKED Seed ๋ช…์„ธ ์ƒํƒœ๋งŒ ์ถœ๋ ฅ
/spec:status --against {ํŒŒ์ผ}        # ํŠน์ • ํŒŒ์ผ๊ณผ ๋น„๊ต ์ง„๋‹จ
/spec:status --against {ํด๋”}        # ํด๋” ์•ˆ ๋ณ€๊ฒฝ๋ถ„๊ณผ ๋น„๊ต ์ง„๋‹จ
/spec:status --against {PR}          # ํŠน์ • PR์˜ ๋ณ€๊ฒฝ๋ถ„๊ณผ ๋น„๊ต ์ง„๋‹จ
  • ์˜ต์…˜ ์—†์ด ์‹คํ–‰ํ•˜๋ฉด ๊ฐ€์žฅ ์ตœ๊ทผ docs/seed-spec-*.md(LOCKED)๋ฅผ ๋ถˆ๋Ÿฌ์™€, ๋ช…์„ธ์— ๊ธฐ๋ก๋œ ํ•ฉ๊ฒฉ ๊ธฐ์ค€ ์ƒํƒœ๋ฅผ ๊ทธ๋Œ€๋กœ ๋ณด์—ฌ ์ค๋‹ˆ๋‹ค.
  • --against ์—๋Š” ํŒŒ์ผ / ํด๋” / PR ์ค‘ ํ•˜๋‚˜๋ฅผ ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฃผ์–ด์ง„ ๋Œ€์ƒ์˜ ๋‚ด์šฉ์„ ๋ช…์„ธ์™€ ์˜๋ฏธ ๊ธฐ์ค€์œผ๋กœ ๋น„๊ตํ•ด ์ •๋ ฌ ํŒ์ •๊ณผ ์ œ์•ฝ ์œ„๋ฐ˜์„ ํ•จ๊ป˜ ์ง„๋‹จํ•ฉ๋‹ˆ๋‹ค.

์•ˆ์—์„œ ๋ฌด์Šจ ์ผ์ด ๋ฒŒ์–ด์ง€๋‚˜์š”#

ํฌ๊ฒŒ ๋„ค ๋‹จ๊ณ„๋กœ, ๋ชจ๋‘ ์ฝ๊ธฐ ์ „์šฉ์œผ๋กœ ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค.

  1. ๋ช…์„ธ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ โ€” ๊ฐ€์žฅ ์ตœ๊ทผ์˜ LOCKED Seed ๋ช…์„ธ๋ฅผ ์ฐพ์•„ ์ฝ์Šต๋‹ˆ๋‹ค. ์ž ๊ธด ๋ช…์„ธ๊ฐ€ ์—†์œผ๋ฉด /spec:verify --lock ์œผ๋กœ ๋จผ์ € ํ™•์ •ํ•˜๋ผ๊ณ  ์•ˆ๋‚ดํ•˜๊ณ  ๋ฉˆ์ถฅ๋‹ˆ๋‹ค(์•„๋ฌด๊ฒƒ๋„ ์“ฐ์ง€ ์•Š์Œ).
  2. ํ•ฉ๊ฒฉ ๊ธฐ์ค€ ์ƒํƒœ ์ •๋ฆฌ โ€” ๋ช…์„ธ์˜ ํ•ฉ๊ฒฉ ๊ธฐ์ค€(S4)์—์„œ AC-01~ ๊ฐ ํ•ญ๋ชฉ๊ณผ ํ˜„์žฌ ์ƒํƒœ๋ฅผ ๊ทธ๋Œ€๋กœ ์ฝ์–ด ํ‘œ๋กœ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  3. ์˜๋ฏธ ๊ธฐ์ค€ ๋น„๊ต โ€” --against ๋Œ€์ƒ์ด ์žˆ์œผ๋ฉด, ๊ทธ ๋‚ด์šฉ์„ ๋ช…์„ธ์˜ ํ•ต์‹ฌ ๋ฌธ์ œ(S1)ยท๋ถˆ๋ณ€ ์ œ์•ฝ(S2)๊ณผ ๋œป์œผ๋กœ ๊ฒฌ์ฃผ์–ด ์ •๋ ฌ ํŒ์ •๊ณผ ์ œ์•ฝ ์œ„๋ฐ˜์„ ๋„์ถœํ•ฉ๋‹ˆ๋‹ค(๋‹จ์–ด ์ผ์น˜๊ฐ€ ์•„๋‹Œ ์˜๋ฏธ ํŒ๋‹จ).
  4. ๋ฆฌํฌํŠธ ์ถœ๋ ฅ โ€” ํ•ฉ๊ฒฉ ๊ธฐ์ค€๋ณ„ ์ƒํƒœ + ๋ชฉํ‘œ ์ •๋ ฌ ํŒ์ • + ์ œ์•ฝ ์œ„๋ฐ˜ ๋ชฉ๋ก์„ ํ™”๋ฉด์— ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค. ํŒŒ์ผ์€ ์–ด๋А ๊ฒƒ๋„ ์ˆ˜์ •๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋๋‚˜๋ฉด ๋‹ค์Œ์€?#

  • MAJOR-DRIFT ๊ฑฐ๋‚˜ ์ œ์•ฝ ์œ„๋ฐ˜์ด ๋ณด์ด๋ฉด โ†’ ์ž‘์—… ๋ฐฉํ–ฅ์„ ๋ฐ”๋กœ์žก๊ฑฐ๋‚˜, ์ •๋‹นํ•œ ๋ณ€๊ฒฝ์ด๋ผ๋ฉด /spec:evolve ๋กœ ๋ช…์„ธ๋ฅผ ๊ณต์‹ ์ ˆ์ฐจ์— ๋”ฐ๋ผ ๊ฐฑ์‹ ํ•˜์„ธ์š”.
  • ํ•ฉ๊ฒฉ ๊ธฐ์ค€์ด ์•„์ง PENDING/IN-PROGRESS ์ธ ํ•ญ๋ชฉ์ด ๋งŽ์œผ๋ฉด โ†’ ๋‚จ์€ ์ž‘์—…์„ ๋งˆ์ € ์ง„ํ–‰ํ•œ ๋’ค ๋‹ค์‹œ /spec:status ๋กœ ํ™•์ธํ•˜์„ธ์š”.
  • ๋ช…์„ธ ์ž์ฒด๊ฐ€ ํ”๋“ค๋ฆฐ๋‹ค๊ณ  ๋А๊ปด์ง€๋ฉด โ†’ /spec:ambiguity ๋กœ ๋ชจํ˜ธ์„ฑ ์ ์ˆ˜๋ฅผ ๋‹ค์‹œ ํ‰๊ฐ€ํ•ด ๋ณด์„ธ์š”.

โš™๏ธ ์ƒ์„ธ ์˜ต์…˜ยท์‹คํ–‰ ๋ช…์„ธ (๊ฐœ๋ฐœ์ž / AI ์—์ด์ „ํŠธ์šฉ)

Usage#

/spec:status                         # Status of the latest LOCKED Seed spec
/spec:status --against {file}        # Compare against a specific file
/spec:status --against {dir}         # Compare against a directory ' s changes
/spec:status --against {PR}          # Compare against a PR ' s changes

Behavior: READ-ONLY#

This command writes nothing. It does not modify the Seed spec, the compared files, or any other artifact. It loads state and emits a report to the console only.

Parameters#

ParameterDescriptionDefault
--againstCompare target: a {file}, a {dir}, or a {PR}none (spec-only echo)

Inputs#

  • Loads the latest LOCKED docs/seed-spec-*.md.
  • If no LOCKED Seed spec exists, stop and advise running /spec:verify --lock first. Write nothing.

Execution Flow#

1. Load Locked Seed (read-only)#

  • Resolve the most recent docs/seed-spec-*.md with Status: LOCKED.
  • If none is found, emit guidance to lock one first and exit without writing.

2. AC-ID Status Echo (from S4)#

  • Read each Acceptance Boundary entry from S4 with its AC-ID (AC-01, AC-02, โ€ฆ).
  • Echo each AC-ID's recorded status verbatim. Status vocabulary: PENDING / IN-PROGRESS / MET / FAILED / WAIVED.
  • This step is a faithful echo of recorded state, not a re-judgment.

3. Semantic Comparison (only if --against provided)#

All matching here is LLM-semantic, never lexical. Do NOT compare by whitespace, token overlap, or substring match โ€” the audience is Korean-first, and lexical matching breaks on Korean (josa attachment, no reliable word boundaries). Judge by meaning: different wording with the same intent counts as a match.

  • Goal alignment vs S1 (Core Problem): read the --against content and judge, semantically, whether the work advances the Seed's core problem. Emit one verdict:
    • ALIGNED โ€” the work clearly serves S1's goal.
    • MINOR-DRIFT โ€” mostly aligned, with small tangents or scope creep.
    • MAJOR-DRIFT โ€” the work diverges materially from S1's goal.
  • S2 (Immutable Constraints) violations: for each S2 constraint, semantically assess whether the --against content appears to violate it. List each apparent violation with a one-line rationale. If none, report "no violations."

4. Emit Report (no writes)#

Print, in order:

  1. Per-AC-ID status table (AC-ID โ†’ status from S4).
  2. Goal-alignment verdict: ALIGNED / MINOR-DRIFT / MAJOR-DRIFT (only with --against).
  3. S2 constraint violations (only with --against).

Output#

A read-only alignment report printed to the console. No files are modified.

  • /spec:seed โ€” Create Seed spec
  • /spec:verify โ€” Verification + lock
  • /spec:evolve โ€” Evolve locked Seed spec
  • /spec:ambiguity โ€” Re-evaluate ambiguity score