Skip to content

Instantly share code, notes, and snippets.

@redism
Created April 16, 2026 09:26
Show Gist options
  • Select an option

  • Save redism/e386b2d0add31dc3b01987a66240ae51 to your computer and use it in GitHub Desktop.

Select an option

Save redism/e386b2d0add31dc3b01987a66240ae51 to your computer and use it in GitHub Desktop.
Step 003 플랜 v2 — TDD 추가

Step 003: SDD 기반 L0-L4 스펙 인프라 구축

가설

SDD의 L0-L4 스펙 계층을 스크립트 인프라와 함께 구축하고 claudie-workflow 자체에 dogfooding하면, "사용자 입력 → L4 구체화 → LLM 한 방 완료"라는 궁극 비전(decision 051)의 첫 번째 실동작 검증이 가능하다.

구현 계획

/c-epic start Step 2에서 기록. Step 4에서 EnterPlanMode로 이 내용이 공식 plan으로 적용됨. 첫 항목은 반드시 Ralph Loop 셋업이어야 함.

  1. 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개 이상 존재

  2. 스크립트 테스트 작성 (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 엔트리 자동 포함
  3. 스크립트 구현 (core/scripts/) a. spec-children.ts — docs/specs/ 전체 스캔, 각 스펙의 parent frontmatter를 읽어 parent 문서의 children 필드를 자동 계산하여 파일 수정. 실행: bun core/scripts/spec-children.ts b. 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

  4. 레벨별 템플릿 작성 (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 섹션 포함
  5. L0 작성 — claudie-workflow의 비전 문서

    • docs/specs/L0/L0-001_claudie-vision.md
    • 내용: "발전하는 LLM Harness의 Best practice를 한 곳에서 구축/정의하고 다양한 레포지토리에서 동기화하여 커스터마이즈 할 수 있다" + 핵심 원칙들
    • spec-scaffold.ts로 생성하여 스크립트 동작 검증
  6. /claudie update 시나리오로 L1→L4 체인 구축 (dogfooding)

    • L1: "consumer repo에서 중앙의 최신 워크플로우 자산을 안전하게 반영한다"
    • L2: 업스트림 변경 감지, 로컬 drift 감지, LLM-mediated 반영, manifest 관리, 사용자 확인 플로우
    • L3: 각 L2의 기술 설계 (Input/Process/Output)
    • L4: 각 L3의 검증 조건
    • 각 스펙 작성 시 spec-scaffold.ts 사용
  7. 스크립트로 체인 검증

    • bun test — 전체 테스트 통과 확인
    • bun core/scripts/spec-children.ts 실행 → children 자동 계산 확인
    • bun core/scripts/spec-check.ts 실행 → 전체 검증 통과 확인
    • orphan/gap/cascade 없음 확인
  8. 발견 문제점 기록

    • 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 발견 사항 기록

Ralph Loop 완료 조건

다음 조건 모두 충족:

  1. bun test 전체 통과 (spec-children, spec-check, spec-scaffold)
  2. ls docs/specs/L0/L0-001_*.md exit 0
  3. ls docs/specs/L4/ 에 파일 1개 이상
  4. bun core/scripts/spec-children.ts exit 0
  5. bun core/scripts/spec-check.ts exit 0 (warning은 허용, error는 불허)
  6. 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:
    1. docs/specs/ 에 L0→L1→L2→L3→L4 체인이 /claudie update 시나리오로 존재
    2. spec-children 실행 시 parent 기반 children 자동 계산 확인
    3. spec-check 실행 시 orphan/gap/cascade 감지 동작 확인
    4. 예상 결과: 전체 체인이 RTM 추적성을 유지하며 check 통과

결과

[실행 후 기록]

결정

[결과를 바탕으로 내린 결정. 다음 스텝에 영향을 주는 내용]

핸드오프 노트

apply 시 자동 작성됨. 새 세션에서 이 스텝의 맥락을 빠르게 파악하기 위한 상세 기록.

변경 요약

[이번 스텝에서 수정/추가/삭제한 내용. 파일 단위가 아닌 기능/동작 단위로 서술]

기술적 결정과 근거

[내린 결정 + 왜 그렇게 결정했는지. 대안이 있었다면 왜 선택하지 않았는지도 포함]

현재 코드 상태

[이번 스텝 완료 후 코드가 어떤 상태인지. 동작하는 부분, 아직 미완성인 부분, 임시 처리한 부분]

다음 작업을 위한 맥락

  • 영향 범위: [이번 변경이 다음 작업에 미치는 영향]
  • 주의사항: [다음 작업 시 반드시 알아야 할 점. 함정, 엣지케이스, 제약 등]
  • 참고 파일: [다음 스텝에서 주로 다룰 파일/코드 위치]
  • 미해결 의문: [답을 못 찾은 질문, 추가 조사 필요한 사항]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment