Community코딩 & 개발github.com

Grill → 명세 주도 개발

아이디어를 병합까지 두 단계로 실행합니다. 먼저 사용자를 집중적으로 질문하여 모든 설계 결정을 확정한 후(Matt Pocock의 grill-me → to-spec), 그 공유된 이해를 바탕으로 명세 주도 개발(DeepLearning.AI/JetBrains SDD 과정)을 수행합니다. 헌법 검사, 브랜치 생성, 날짜가 포함된 명세 디렉토리(요구사항.md, 계획.md, 검증.md), 작업 그룹 구현, 검증, 변경 로그, 병합 및 재계획이 포함됩니다.

Grill → 명세 주도 개발란 무엇인가요?

이 스킬은 두 가지 검증된 워크플로우를 결합하여 복잡한 소프트웨어 기능을 아이디어에서 병합까지 체계적으로 이끕니다. 첫 번째 단계('Grill')는 Matt Pocock의 디자인 트리 인터뷰 접근법을 사용하여, 사용자와의 집중적인 라운드 기반 질문을 통해 모든 설계 결정이 명시적으로 드러나고 공유되도록 합니다. 두 번째 단계('Build')는 DeepLearning.AI와 JetBrains의 'Spec-Driven Development with Coding Agents' 과정 원칙을 적용하여, 합의된 명세를 코드 저장소에 날짜별 디렉토리('요구사항.md', '계획.md', '검증.md')로 문서화하고, 작업 그룹별로 구현하며, 사전 정의된 검증 목록에 대해 엄격하게 테스트합니다. 세 가지 하드 게이트(사용자 확인, 명세 승인, 검증 통과)를 적용하여 명세와 코드의 불일치를 방지하고 프로젝트 헌법 파일(misson.md, tech-stack.md, roadmap.md)과 통합되어 장기적인 로드맵 변경 사항을 자동으로 추적합니다. Claude Code, Cursor, Codex, Cline 등 다양한 AI 에이전트 플랫폼에서 사용 가능하며, 'grill me then spec it', 'spec-driven', 'SDD' 등의 트리거 구문으로 활성화됩니다.

지원 대상✓Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/BriarForge/skills/tree/HEAD/dev-grill-spec-driven

Installed? Explore more 코딩 & 개발 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

Grill, then 명세 주도 개발

두 워크플로우가 연속으로 실행되며, 한 번의 핸드오프가 있습니다:

  1. Grill (Matt Pocock, grill-me → to-spec): 사용자를 디자인 트리 형태로 인터뷰하여, 라운드별로 모든 것이 명시적으로 합의될 때까지 진행합니다. 그런 다음 합의된 이해를 바탕으로 새로운 질문 없이 명세를 종합합니다.
  2. Build (DeepLearning.AI + JetBrains, Spec-Driven Development with Coding Agents): 명세는 날짜가 포함된 디렉토리 아래 요구사항.md, 계획.md 및 검증.md로 저장소에 저장되고, 자체 브랜치에서 작업 그룹별로 구현되고, 검증.md에 대해 검증되며, 변경 로그에 기록되고, 병합된 후 로드맵이 재계획됩니다.

Grill은 SDD 과정의 고정된 세 가지 질문 인터뷰(범위/결정/컨텍스트)를 전체 디자인 트리 인터뷰로 대체합니다. SDD 과정은 to-spec의 "이슈 트래커에 게시" 방식을 코드와 함께 존재하고 변경되는 명세 파일로 대체합니다.

개요

사용 시점: 변경 사항이 충분히 커서 먼저 문서화하는 것이 재작업보다 저렴한 경우: 새 기능, 로드맵 단계, MVP 스프린트 또는 레거시 코드베이스에 SDD 추가. 한 줄 수정이나 순수 버그 추적에는 건너뛰세요 (근본 원인 분석은 pstack-engineering 사용).

트리거 구문: "grill me then spec it", "grill to spec", "spec-driven", "SDD", "feature spec", "work on the next phase", "start the next feature".

하드 게이트 (절대 건너뛰지 않음):

  • 사용자가 Grill이 공유된 이해에 도달했음을 확인할 때까지 명세 파일을 작성하지 않습니다 (게이트 A).
  • 사용자가 명세 파일을 승인할 때까지 코드를 작성하지 않습니다 (게이트 B).
  • 검증.md의 모든 항목이 통과할 때까지 병합하지 않습니다 (게이트 C).

실행 지침

시작 시 SPECS=${SDD_SPECS_DIR:-specs} 및 BASE=${SDD_BASE_BRANCH:-<저장소 기본 브랜치>}를 해석합니다. 아래 경로는 프로젝트 루트 기준입니다.

0단계 — 사전 파악 (사실 확인이 당신의 임무입니다)

  1. 프로젝트의 AGENTS.md / CLAUDE.md, README.md 및 용어집이나 ADR을 읽습니다. 저장소 자체의 git 규칙(래퍼, 브랜치 명명, 강제 푸시 금지)을 따릅니다.
  2. 헌법 확인: $SPECS/mission.md, $SPECS/tech-stack.md, $SPECS/roadmap.md.
    • 모두 존재 → 다음 기능에 대해 1단계로 이동합니다.
    • 누락, 새 프로젝트 → 첫 번째 Grill은 헌법 자체에 관한 것입니다 (미션, 대상 사용자, 기술 스택 차이점). 그 결과물은 세 파일이며, roadmap.md는 매우 작은 단계로 나뉘고, 각각 독립적으로 출시 가능해야 합니다.
    • 누락, 기존 코드베이스(레거시) → 먼저 코드를 탐색하고 실제로 있는 내용(스택, 규칙, 출시된 기능은 완료된 단계로)을 기반으로 헌법 초안을 작성한 다음, 차이점과 향후 로드맵에 대해서만 Grill을 진행합니다.
  3. 사용자가 기능 이름을 지정하지 않은 경우, 대상은 다음 단계입니다: 로드맵에서 항목이 모두 체크되지 않은([ ]) 첫 번째 섹션.
  4. 기능이 다룰 코드를 탐색합니다. 저장소, 도구 또는 문서가 답할 수 있는 질문을 사용자에게 절대 묻지 않습니다. 광범위한 탐색이 필요한 경우, 환경에 새 하위 에이전트가 있다면 위임하고 관련 없는 질문을 차단하지 않습니다.

1단계 — Grill (디자인 트리 인터뷰)

공유된 이해가 확립될 때까지 집중적으로 사용자를 인터뷰합니다. 계획을 디자인 트리로 취급합니다: 모든 결정은 그에 의존하는 결정들로 분기됩니다.

  • 라운드로 작업합니다. 프런티어는 모든 전제 조건이 이미 해결된 열린 결정입니다. 한 라운드에서 전체 프런티어를 질문한 다음 기다립니다.
  • 각 질문에 번호를 매기고 권장 답변을 제시합니다. "예"가 권장 사항을 수락하도록 단어를 선택합니다.
  • 같은 라운드에서 여전히 열려 있는 다른 질문에 의존하는 질문은 이후 라운드에 속합니다.
  • 라운드 전체에서 최소한 SDD 축을 다룹니다: 범위(수집, 노출, 수행하는 것; 데이터 형태), 결정(저장소, 가시성, 검증, UX 패턴, 아키텍처), 컨텍스트(톤, 제약 조건, 스택 한계, 열린 질문) 및 테스트 지점: 기능이 테스트될 위치. 기존 지점과 가능한 가장 높은 지점을 선호합니다. 이상적인 것은 하나입니다.
  • 새 종속성, 스키마 변경 및 공개 API 변경은 항상 명시적 질문이며 가정하지 않습니다 (tech-stack.md가 권위자입니다).

라운드 형식:

❓ **Q1** - **<제목>**: <질문, 옵션(있는 경우)>

➡️ <권장 답변>

---

❓ **Q2** - ...

환경에 구조화된 질문 도구(Claude Code AskUserQuestion)가 있는 경우 최대 4개의 객관식 질문으로 이루어진 라운드에 사용할 수 있습니다. 그렇지 않으면 위의 텍스트 형식을 사용합니다.

Grill은 프런티어가 비어 있을 때 종료됩니다. 합의된 결정을 짧은 목록으로 요약하고 사용자에게 확인을 요청합니다.

게이트 A: 사용자가 요약을 확인할 때까지 계속하지 마십시오.

2단계 — 명세 작성 (종합, 새로운 질문 없음)

대화를 명세로 전환합니다. 다시 인터뷰하지 않습니다. 실제 공백이 나타나면 Grill이 분기를 놓쳤음을 의미합니다. 해당 질문 하나만 묻고 계속합니다.

  1. $BASE에서 브랜치를 생성합니다: 로드맵 단계의 경우 phase-<N>-<케밥-이름>, 그 외에는 feature/<케밥-이름> (또는 저장소의 자체 규칙 사용).
  2. $SPECS/mission.md 및 $SPECS/tech-stack.md, 그리고 기존 기능 명세의 스타일을 다시 읽습니다.
  3. 오늘 날짜로 $SPECS/YYYY-MM-DD-<기능-이름>/을 생성하고 references/spec-templates.md의 세 파일을 작성합니다:
    • 요구사항.md — to-spec 내용(문제, 솔루션, 광범위한 번호가 매겨진 사용자 스토리 목록, 구현 결정, 테스트 결정, 범위 외) 및 SDD 범위/결정/컨텍스트 섹션. 파일 경로나 코드 스니펫은 없습니다. 단, 결정을 산문보다 더 정확하게 고정하는 축약된 프로토타입 스니펫은 예외입니다.
    • 계획.md — 번호가 매겨진 작업 그룹, 각각 독립적으로 구현 및 테스트 가능하며, 번호가 매겨진 하위 작업이 있습니다.
    • 검증.md — 자동화된 검사(정확한 명령어), 수동 워크스루, 엣지 케이스, 사용자 대면 복사본에 대한 톤 확인, 그리고 완료 정의.
  4. 선택 사항, 사용자가 요청하거나 저장소가 이슈에서 작업을 추적하는 경우: 요구 사항을 이슈로 게시하고(gh issue create) 요구사항.md에서 링크합니다.
  5. 사용자에게 세 파일(경로 및 짧은 요약)을 보여줍니다.

게이트 B: 승인을 기다립니다. 피드백("X에 대한 작업 그룹 추가", "컴포넌트는 자체 파일에")은 명세에 먼저 적용되며 모든 파일은 동기화 상태를 유지합니다.

3단계 — 구현

  1. 작업 그룹을 순서대로 구현합니다. 각 그룹 후: 프로젝트 테스트 및 타입 검사를 실행하고, 그룹 이름을 메시지로 커밋하고, 계획.md에서 해당 상자를 체크합니다.
  2. 구현 결과 명세가 잘못되었거나 불완전한 것으로 드러나면, 명세를 코드와 동일한 커밋에서 업데이트합니다. 명세와 코드는 절대 분리되지 않습니다.
  3. 서로에 대한 종속성이 없는 그룹은 병렬 하위 에이전트(각각 자체 작업 트리에서, 호스트의 작업 트리 규칙을 따름)로 넘어갈 수 있으며, 사용자가 병합합니다.
  4. 사용자의 승인 없이 새 종속성을 추가하지 않습니다. 그룹이 "필요"하더라도 마찬가지입니다.

4단계 — 검증

  1. 검증.md의 모든 자동화된 검사를 실행하고 실제 출력을 붙여넣습니다.
  2. 수동 검사를 수행합니다(UI의 경우 실제로 구동: 브라우저 자동화 또는 스크린샷, "작동해야 함"이 아닌).
  3. 선택적 심층 검토: 브랜치 차이에 대해 세 가지 관점(정확성, 명세 적합성, 유지보수성)에서 리뷰어를 생성하고, 문제가 되는 부분을 수정합니다.
  4. 사용자에게 구축된 내용에 비추어 명세를 명확히 할 필요가 있는지 질문합니다.

게이트 C: 모든 완료 정의 항목이 통과하거나 사용자가 명시적으로 하나를 면제합니다 (면제는 검증.md에 기록).

5단계 — 종료

  1. $SPECS/roadmap.md에서 단계를 완료로 표시합니다([x]).
  2. CHANGELOG.md를 업데이트합니다(# Changelog, ## YYYY-MM-DD 헤딩은 최신순, 마지막 기록 날짜 이후의 의미 있는 변경 사항당 한 개의 글머리 기호). 프로젝트 changelog 스킬이 있으면 사용합니다.
  3. 커밋하고, $BASE로 전환하고, 브랜치를 병합하고, 삭제하고, 저장소 규칙에 따라 푸시합니다.
  4. 재계획: 배운 내용이 mission.md, tech-stack.md 또는 로드맵을 변경하는지 질문합니다 (단계 병합, 분할 또는 재정렬). 교차 결정(예: "Vitest 사용", "반응형 UI")은 tech-stack.md / mission.md에 들어가고 기존 명세에 역포팅됩니다.
  5. 다음 단계를 제안합니다: 1단계부터 다시 시작합니다.

환경 변수

변수기본값설명
SDD_SPECS_DIRspecs헌법 및 기능 명세 디렉토리, 프로젝트 루트 기준
SDD_BASE_BRANCH저장소 기본 브랜치기능이 생성되고 병합되는 브랜치

확인 체크리스트

  • 기능 명세 전에 헌법(mission.md, tech-stack.md, roadmap.md)이 존재합니다
  • 모든 Grill 질문이 권장 답변과 함께 제시되었습니다. 저장소가 답할 수 있는 사실은 묻지 않았습니다
  • 명세 파일 작성 전 사용자가 결정 요약을 확인했습니다 (게이트 A)
  • 특징 브랜치의 $SPECS/YYYY-MM-DD-<이름>/ 아래 요구사항.md, 계획.md, 검증.md가 존재합니다
  • 코드 작성 전 사용자가 명세를 승인했습니다 (게이트 B)
  • 모든 작업 그룹이 테스트 통과와 함께 커밋되었습니다. 계획 상자가 체크되었습니다
  • 구현이 명세에서 벗어난 곳마다 명세가 업데이트되었습니다
  • 모든 검증.md 검사가 실제 출력과 함께 실행되었습니다 (게이트 C)
  • 로드맵 단계가 체크되고, 변경 로그가 업데이트되고, 브랜치가 병합 및 삭제되었습니다
  • 재계획 질문이 제기되었습니다

알려진 함정

  • 영원히 Grill하기. 프런티어가 비어 있으면 Grill이 종료됩니다. 호기심이 다할 때가 아닙니다. 이미 결정된 사항을 다시 묻지 마세요. 코드 리뷰에 속하는 세부 사항을 묻지 마세요.
  • 명세 작성 단계에서 인터뷰하기. 2단계는 종합합니다. 새로운 질문이 있다면 Grill이 불완전했다는 의미입니다. 누락된 질문 하나를 묻고 두 번째 인터뷰는 하지 마세요.
  • 게이트 A/B 전에 작성하기. SDD 과정은 명확합니다: 인터뷰가 응답될 때까지 아무것도 디스크에 기록하지 않습니다. 명세 승인 전 코드는 방법을 무효화합니다.
  • 너무 큰 단계. 한 번에 검토할 수 없는 단계는 명세 작성 전에 로드맵에서 분할해야 합니다.
  • 명세 표류. 구현 중간에 요청된 변경 사항은 명세에 먼저 적용된 다음 코드에 적용됩니다. 코드와 더 이상 일치하지 않는 명세는 없는 것보다 나쁩니다.
  • 요구사항의 파일 경로. 빨리 썩습니다. 대신 모듈과 인터페이스를 설명하세요 (경로는 최대 계획.md 하위 작업에만 속합니다).
  • 저장소 규칙이 우선합니다. 저장소의 AGENTS.md에 있는 브랜치 이름, 푸시 래퍼, 작업 트리 위치 및 기여 규칙은 여기의 기본값을 재정의합니다.

파일 템플릿은 references/spec-templates.md를, 각 부분의 출처는 references/sources.md를 참조하세요.

관련 스킬