SDD의 L0-L4 스펙 계층을 스크립트 인프라와 함께 구축하고 claudie-workflow 자체에 dogfooding하면, "사용자 입력 → L4 구체화 → LLM 한 방 완료"라는 궁극 비전(decision 051)의 첫 번째 실동작 검증이 가능하다.
/c-epic startStep 2에서 기록. Step 4에서 EnterPlanMode로 이 내용이 공식 plan으로 적용됨. 첫 항목은 반드시 Ralph Loop 셋업이어야 함.
-
Ralph Loop 셋업:
/c-ralph-loop docs/specs/L0/ 디렉토리 존재 + bun core/scripts/spec-check.ts exit 0 + bun core/scripts/spec-children.ts exit 0 + L0-001 파일 존재 + L4 파일 1개 이상 존재 -
스크립트 테스트 작성 (TDD — 테스트 먼저, 구현 후) a.
spec-children.test.ts- 테스트 픽스처: parent 필드가 있는 스펙 파일 세트 (임시 디렉토리)
- case: parent가 L1-001인 L2 파일 2개 → L1-001의 children에 두 id 포함
- case: parent 변경 시 이전 parent의 children에서 제거
- case: parent가 없는 L0 문서 → children만 계산, 에러 없음
b.
spec-check.test.ts - case: 필수 필드 누락 → error
- case: 존재하지 않는 parent 참조(orphan) → warning
- case: done 상위에 하위 0개(gap) → warning
- case: discarded 상위에 planned 하위(cascade) → warning
- case: 정상 체인 → 통과
c.
spec-scaffold.test.ts - case: L2 scaffold → 다음 번호 자동 부여 + 템플릿 기반 파일 생성
- case: 기존 L2-001 존재 시 → L2-002 생성
- case: frontmatter 필수 필드 + History created 엔트리 자동 포함
-
스크립트 구현 (core/scripts/) a.
spec-children.ts— docs/specs/ 전체 스캔, 각 스펙의 parent frontmatter를 읽어 parent 문서의 children 필드를 자동 계산하여 파일 수정. 실행:bun core/scripts/spec-children.tsb.spec-check.ts— frontmatter 필수 필드 검증(id, title, type, level, status, parent, created) + orphan 감지(parent가 존재하지 않는 스펙 → warning) + gap 감지(done 상위에 하위 0개) + cascade 감지(discarded 상위에 planned 하위). 결과를 구조화된 출력으로. c.spec-scaffold.ts— 레벨과 제목을 입력받아 다음 번호 자동 부여 + 템플릿 기반 새 스펙 파일 생성. 실행:bun core/scripts/spec-scaffold.ts L2 "로컬 drift 감지"d. 각 스크립트 구현 후 테스트 통과 확인:bun test -
레벨별 템플릿 작성 (core/templates/spec/)
L0.md— 북극성 + 원칙 (decision 046)L1.md— 사용자 여정/시나리오L2.md— 기능 단위 스펙L3.md— 기술 설계: Input → Process → Output/Side-effect (decision 040)L4.md— Task/Test: acceptance criteria + constitution check 케이스- 모든 템플릿에 frontmatter 스키마(decision 044) + History 섹션 포함
-
L0 작성 — claudie-workflow의 비전 문서
docs/specs/L0/L0-001_claudie-vision.md- 내용: "발전하는 LLM Harness의 Best practice를 한 곳에서 구축/정의하고 다양한 레포지토리에서 동기화하여 커스터마이즈 할 수 있다" + 핵심 원칙들
- spec-scaffold.ts로 생성하여 스크립트 동작 검증
-
/claudie update시나리오로 L1→L4 체인 구축 (dogfooding)- L1: "consumer repo에서 중앙의 최신 워크플로우 자산을 안전하게 반영한다"
- L2: 업스트림 변경 감지, 로컬 drift 감지, LLM-mediated 반영, manifest 관리, 사용자 확인 플로우
- L3: 각 L2의 기술 설계 (Input/Process/Output)
- L4: 각 L3의 검증 조건
- 각 스펙 작성 시 spec-scaffold.ts 사용
-
스크립트로 체인 검증
bun test— 전체 테스트 통과 확인bun core/scripts/spec-children.ts실행 → children 자동 계산 확인bun core/scripts/spec-check.ts실행 → 전체 검증 통과 확인- orphan/gap/cascade 없음 확인
-
발견 문제점 기록
- dogfooding 과정에서 발견된 설계 문제, 불편한 점, 개선 아이디어를 이 step 문서의 결과 섹션에 기록
- 필요 시 새 decision 추가
- TDD 테스트 작성 및 전체 통과 (spec-children, spec-check, spec-scaffold)
- core/scripts/spec-children.ts 동작
- core/scripts/spec-check.ts 동작
- core/scripts/spec-scaffold.ts 동작
- core/templates/spec/ 에 L0~L4 템플릿 존재
- docs/specs/L0/L0-001 존재
- docs/specs/ 에 L1→L4 체인 1개 이상 존재 (/claudie update 시나리오)
- spec-check 전체 통과
- dogfooding 발견 사항 기록
다음 조건 모두 충족:
bun test전체 통과 (spec-children, spec-check, spec-scaffold)ls docs/specs/L0/L0-001_*.mdexit 0ls docs/specs/L4/에 파일 1개 이상bun core/scripts/spec-children.tsexit 0bun core/scripts/spec-check.tsexit 0 (warning은 허용, error는 불허)- TypeScript 컴파일 에러 없음
- Given: core/scripts/ 에 spec-children, spec-check, spec-scaffold 스크립트 존재 + core/templates/spec/ 에 L0~L4 템플릿 존재
- When:
bun core/scripts/spec-scaffold.ts L2 "테스트 기능"실행 후bun core/scripts/spec-check.ts실행 - Then: 새 L2 스펙 파일 생성 + check 통과
- 수동 QA:
- docs/specs/ 에 L0→L1→L2→L3→L4 체인이 /claudie update 시나리오로 존재
- spec-children 실행 시 parent 기반 children 자동 계산 확인
- spec-check 실행 시 orphan/gap/cascade 감지 동작 확인
- 예상 결과: 전체 체인이 RTM 추적성을 유지하며 check 통과
[실행 후 기록]
[결과를 바탕으로 내린 결정. 다음 스텝에 영향을 주는 내용]
apply 시 자동 작성됨. 새 세션에서 이 스텝의 맥락을 빠르게 파악하기 위한 상세 기록.
[이번 스텝에서 수정/추가/삭제한 내용. 파일 단위가 아닌 기능/동작 단위로 서술]
[내린 결정 + 왜 그렇게 결정했는지. 대안이 있었다면 왜 선택하지 않았는지도 포함]
[이번 스텝 완료 후 코드가 어떤 상태인지. 동작하는 부분, 아직 미완성인 부분, 임시 처리한 부분]
- 영향 범위: [이번 변경이 다음 작업에 미치는 영향]
- 주의사항: [다음 작업 시 반드시 알아야 할 점. 함정, 엣지케이스, 제약 등]
- 참고 파일: [다음 스텝에서 주로 다룰 파일/코드 위치]
- 미해결 의문: [답을 못 찾은 질문, 추가 조사 필요한 사항]