- CLAUDE.md 를 .claude/rules/ 4파일로 분할 (project/stack/principles/workflow) - Plans.md 루트 인덱스 (스프린트 목차 + 참조만) - hooks/ pre/post-tool.sh 스켈레톤 (no-op, Sprint 002에서 구현) - .plans/OVERVIEW.md — 목표/범위/성공기준 8개 - .plans/failure-audit.md — F1~F6 실패 감사 (증거 기반) - .plans/design/ 6개 문서: * state-machine.md (XState v5 FSM 설계) * sprint-contract.md (Zod schema + validator) * skill-enforcement.md (4계층 방어) * handoff.md (상태 전이 기반 자매 통신) * retry-policy.md (backoff + escalation) * qa-template.md (체크리스트 runtime) - .plans/sprints/ 8개 스프린트 명세 (SPRINT-000~007) - .plans/migration/from-hanarang-harness.md (자산 매트릭스 + 단계별 가이드) 총 17개 문서, 약 2146 lines. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1.0 KiB
1.0 KiB
기술 스택
| 레이어 | 선택 |
|---|---|
| 런타임 | Node 22 + TypeScript (strict) |
| 패키지 | pnpm (npm/yarn 금지) |
| 상태 머신 | XState v5 |
| 스키마 | Zod |
| 영속화 | SQLite (better-sqlite3) 단일 파일 |
| 프로세스 | execa + AbortController |
| CLI | citty |
| 로그 | pino (구조화 JSON) |
| 디스코드 | discord.js v14 |
| 테스트 | Vitest |
코딩 룰
- TypeScript strict 모드 고정 (
strict: true+noUncheckedIndexedAccess: true) - Zod 검증 경계 — 모든 외부 입력(파일, 네트워크, subprocess stdout)은 Zod 로 파싱 후 사용
- async/await 만 사용 —
.then()체이닝 금지 - Result<T, E> 패턴 — throw 대신
neverthrow또는 자체 Result 로 에러 표면화 - 로그는 pino —
console.*금지 - 파일 경로는
node:path+import.meta.url—__dirname금지 - 환경변수는 Zod schema 로 검증된 env 객체 통해서만 —
process.env.X직접 참조 금지