본문으로 건너뛰기

체크리스트 시스템

코드 수정 시 자동으로 품질/보안/문서 검증을 수행하고, 프로젝트별 리포트를 관리하며, /-msk-checklist-review로 미해결 항목을 검토하는 시스템입니다.

전체 흐름

코드/문서 수정
↓ PostToolUse Hook
↓ checklist-validator.sh 실행
↓ validators/*.sh (자동 검사)
↓ projects/{project}/latest.json 저장

다음 턴
↓ <checklist-review> 태그로 AI에게 주입
↓ tmux 4줄: [code]15/35 +20r [doc]3/5 +2r 13:21

사용자: /-msk-checklist-review
↓ 항목별 AI 설명 → 승인/수정/보류
↓ 리포트 갱신

41항목 7분류

보안 (Security) — 9항목

ID항목자동설명
S1하드코딩 시크릿API키, 비밀번호, 토큰 패턴 탐지
S2SQL InjectionRaw SQL, 바인딩 미사용
S3XSS{!! !!}, dangerouslySetInnerHTML
S4AuthorizationAICRUD+READ 전체 권한 검사. 타 테넌트 자원은 404 반환
S5테넌트 격리✅+AIGlobal Scope 적용, cross-tenant 차단
S6입력 검증FormRequest 존재, $request->all() 금지
S7CSRF/CORSCSRF 토큰, CORS 과다 허용 방지
S8에러 정보 노출 방지production stack trace, internal path 차단
S9의존성 취약점composer audit + npm audit
테넌트 격리 (S5)

Multi-tenant SaaS에서 가장 치명적인 사고는 cross-tenant 데이터 유출입니다. 모든 Eloquent 모델에 tenant scope가 적용되어 있는지 확인합니다.

안정성/운영 (Reliability) — 5항목

ID항목자동설명
R1에러 핸들링 패턴AItry-catch 일관성, 사용자 친화적 에러 메시지
R2구조화 로깅✅+AILog:: 호출에 context array 포함, 계층적 로그 채널
R3PII 마스킹로그에 비밀번호, 토큰, 이메일 노출 금지
R4Rate Limiting인증 엔드포인트에 throttle 미들웨어
R5트랜잭션/멱등성AIDB::transaction, 중복 요청 방지

데이터/성능 (Data & Performance) — 5항목

ID항목자동설명
D1N+1 쿼리 방지AIEager loading 사용
D2DB 마이그레이션 안전성drop/rename 탐지, down() 존재, large table lock 경고
D3인덱스 검토AI쿼리 패턴 대비 인덱스 존재
D4캐싱 전략AITTL, invalidation, Redis fallback
D5환경 설정 정합성.env.example 키 vs config/ env() 교차 검증

품질 (Quality) — 7항목

ID항목자동설명
Q1SOLID 원칙AI단일 책임, 인터페이스 분리, 의존성 역전
Q2DRY 원칙AI중복 코드 탐지
Q3아키텍처 적절성AICore/Plugin/프로젝트 계층 준수
Q4하드코딩 방지config(), env() 사용, magic number 금지
Q5타입 힌트함수 파라미터/리턴 타입
Q6디버그 코드 제거dd(), dump(), console.log
Q7외부 패키지 검토AI직접 구현 전 기존 솔루션 확인. 필요시 웹 검색 후 건의

국제화 (i18n) — 4항목

ID항목자동설명
I1하드코딩 문자열 금지__(), trans() 사용 확인
I2타임존 처리✅+AIDB=UTC 저장, 표시=DISPLAY_TIMEZONE
I3언어팩 구조AI번역 키 일관성, 누락 키, namespace 분리
I4날짜/숫자 포맷AICarbon locale, Number::format locale 기반
글로벌 제품 지향

모든 프로젝트는 글로벌 출시를 전제합니다. UI 문자열은 반드시 번역 함수를 통해 표시하고, 날짜/시간은 UTC 저장 + 사용자 타임존 표시 원칙을 따릅니다.

테스트 (Testing) — 5항목

ID항목자동설명
T1테스트 파일 존재새 코드에 대응 테스트
T2테스트 커버리지최소 기준 충족
T3엣지 케이스AI경계값, null, 빈 배열, 권한 없는 사용자
T4코드와 함께 테스트파일 생성 시 테스트도 함께
T5TDD (보안/Core)AICore/Permission, Core/Tenant는 테스트 먼저

문서 (Documentation) — 6항목

ID항목자동설명
DC1README 업데이트AI기능 추가/변경 시 반영
DC2API 문서화AI엔드포인트 추가 시 문서
DC3문서 형식Markdown 구조, frontmatter
DC4문서 정합성AI코드↔CLAUDE.md/AGENTS.md 동기화
DC5설계 문서 유지AI_docs/design/ 과 코드 일치
DC6Git 커밋 메시지type(scope): subject 형식

검증 레벨

새 작업 시작

├─ 파일 3개 이하 & 10줄 미만?
│ YES → 🟢 minimal (~10항목)

├─ 기존 기능 수정/확장?
│ YES → 🟡 standard (~25항목)

└─ 새 기능/아키텍처/DB 변경?
YES → 🔴 full (41항목)

레벨은 변경된 파일 수와 종류에 따라 자동 감지됩니다.

tmux 표시

상태바 4줄 우측에 프로젝트별 체크리스트 상태:

[code]15/35 ok [doc]3/5 +2r 13:21
  • [code] = 보안 + 안정성 + 데이터 + 품질 + 국제화 + 테스트
  • [doc] = 문서
  • 색상: 초록(ok), 노랑(+Nr), 빨강(!Nf)
  • 프로젝트별 독립 표시 (tmux 세션 기준)

수동 리뷰 (/-msk-checklist-review)

tmux에서 +Nr이 표시될 때 실행:

사용자: /-msk-checklist-review

AI: [1/N] SOLID 원칙 — 설명 + 관련 파일 + 분석
→ 선택: 1)통과 2)수정 3)보류 4)중단

사용자: 1 (통과)
→ 리포트 갱신, 다음 항목으로

... 반복 ...

AI: 완료 보고 — CK 15/35 +20r → 25/35 +10r

자동 검사 스크립트

스크립트검사 항목
coding.sh하드코딩, 타입힌트, 디버그코드
security.sh시크릿, SQLi, XSS
validation.shFormRequest 존재, $request->all() 금지
dependency.shcomposer audit + npm audit
migration.shdrop/rename 탐지, down() 존재
documentation.sh문서 형식
git.sh커밋 메시지
testing.sh테스트 존재, 커버리지

위치: .ai-core/scripts/validators/

설정

.ai-core/config/global.json:

{
"checklist": {
"enabled": true,
"level": "standard",
"code_extensions": "php|js|jsx|ts|tsx|py|go|java|rb|sh|rs|...",
"doc_extensions": "md|mdx|txt|rst|adoc"
}
}

근거 문서 매핑

각 체크리스트 항목에는 "왜 이걸 검증하는가"를 설명하는 근거 문서가 연결되어 있습니다.

체크리스트근거 문서 (_docs/ai-rules/global-rules/details/)
보안 (S1~S9)security_concepts.md + tenant_isolation.md
품질 (Q1~Q7)coding_standards.md + laravel_rules.md
테스트 (T1~T5)testing_guide.md + specs/testing/*.md
문서 (DC1~DC6)documentation_guide.md
성능 (D1~D5)performance_optimization.md
에러 처리 (R1)error_handling.md
로깅 (R2~R3)logging_strategy.md
Git (DC6)git_workflow.md
국제화 (I1~I4)design/i18n-timezone-architecture.md
양방향 연결
  • 체크리스트 → 근거 문서: 각 domain/*.md 상단에 참조 링크
  • 근거 문서 → 체크리스트: global_rules.md에 매핑 테이블

정기 점검 (Periodic Audit)

실시간 검증(코드 수정 시)과 별도로, 프로젝트 전체를 주기적으로 스캔하는 정기 점검 시스템입니다.

실시간 vs 정기 점검

구분실시간 (기존)정기 점검
트리거PostToolUse / Stop Hookcron / schedule / 수동
범위변경 파일만프로젝트 전체
검토 방식Hook 자동 + AI review항목별 심층 검토 (formal)
결과latest.json (덮어쓰기){날짜}_{agent}_{model}_report.md (누적)
Multi-LLM없음primary + cross_check agents

구조

.ai-core/validation/checklists/audit/
├── schedule.json ← 공통 기본값 + 레지스트리
├── schedules/ ← 1파일 = 1스케줄
│ ├── weekly-workspace-projects.json
│ ├── biweekly-core.json
│ ├── monthly-infra.json
│ └── weekly-security-focus.json
├── targets/ ← 1파일 = 1타겟 (20개)
│ ├── exam.how.json
│ ├── platform-core.json
│ └── ...
└── templates/ ← 보고서 템플릿
├── audit-tasks.md
├── project-report.md
└── summary-report.md

등록된 스케줄

스케줄주기Primary AgentCross-check타겟
주간 Workspace매주 월 09:00claude/sonnetworkspace 7개
격주 Core매월 1,15일 10:00claude/opusgemini, kiloplatform-core
월간 인프라매월 1일 11:00claude/sonnet.ai-core, ops
주간 보안매주 수 08:00claude/sonnetgemini전체 workspace

실행 방식 (formal)

각 항목을 -msk-checklist-review와 동일한 패턴으로 1개씩 심층 검토합니다:

스케줄 실행
↓ Phase 1: 자동 검사 (validators 스크립트)
↓ Phase 2: AI 심층 검토 (1개씩 순차)
│ ├── 코드 Read → 분석
│ ├── cross_check 있으면 chorus 교차 검증
│ └── AskUserQuestion (통과/수정/보류/중단)
↓ Phase 3: 종합 보고서 + 추이 비교

파일명 규칙

{YYMMDD-HHmm}_{agent}_{model}_{suffix}
예시의미
260413-0900_claude_sonnet_tasks.md진행 추적
260413-0900_claude_sonnet_report.md보고서
260415-1000_claude_opus_report.json기계용 (추이 비교)

Multi-LLM 교차 검증

"primary_agent": { "agent": "claude", "model": "opus" },
"cross_check": [
{ "agent": "gemini", "model": "gemini-3.1-pro" },
{ "agent": "kilo", "model": "claude-opus-4-6" }
]
  • cross_check: [] → primary만 단독 실행
  • cross_check: [gemini] → primary + 1개 교차 검증
  • cross_check: [gemini, kilo] → primary + 2개 교차 검증

타겟 정의

각 타겟은 targets/{id}.json에 독립 정의:

{
"id": "exam.how",
"path": { "root": "workspace/exam.how", "web": "workspace/exam.how/web" },
"type": "laravel",
"scan": { "dirs": ["web/app/", "web/config/", ...], "exclude": ["web/vendor/", ...] },
"check_override": {
"skip_items": [],
"extra_focus": ["S4", "S5", "T3"]
},
"tags": ["workspace", "laravel"]
}

스케줄에서는 ID로 참조: "targets": ["exam.how", "apis.how", ...]

구현 상태

정기 점검의 스케줄/타겟/템플릿 정의가 완성되었습니다. 실행 스킬(-msk-checklist-audit)과 chorus-cli 연동은 추후 구현 예정입니다.

체크리스트 자가 개선

AI가 작업 중 체크리스트에 추가할 만한 검증 항목을 발견하면, AskUserQuestion으로 제안합니다.

발견 상황AI 행동
반복 실수가 체크리스트에 없음해당 도메인에 항목 추가 제안
보안/성능 이슈를 수동으로 발견자동화 가능 여부와 함께 추가 제안
기존 항목이 아키텍처와 불일치항목 업데이트 또는 삭제 제안
프로파일 레벨 배정이 부적절레벨 재배정 제안
승인 필수

사용자 승인 없이 체크리스트 파일을 생성/수정하지 않습니다. 항목 추가 시 프로파일(profiles/*.md) 레벨 매핑도 함께 업데이트해야 합니다.

관련 문서