| name | audit-trail |
| description | 모든 사용자 발화·agent 행동·phase 전환·gate 판정을 ISO 8601 타임스탬프와 함께 감사 로그에 기록한다. 사용자 입력은 축약·요약 없이 verbatim blockquote로 보존하며, SOC2·ISMS-P 감사 요구사항에 매핑되는 보존 정책(30·90·365일)을 프로젝트별로 선택한다. 모든 AIDLC skill이 호출 가능한 공통 감사 계층을 제공한다. |
| argument-hint | [session-id or slug] |
| user-invocable | true |
| model | claude-haiku-4-5 |
| allowed-tools | Read,Write,Bash |
| ontology | {"references":["Deployment","Incident","Agent","Skill"]} |
언제 사용하나요
다음 상황에서 본 skill을 실행합니다.
- Stage·Phase 시작/종료 시점에 감사 이벤트를 기록해야 할 때
- 사용자가 원본 프롬프트·수락/거부 결정·방향 전환을 입력한 시점
- 파일 생성/수정, 명령 실행, 에러 발생/해결, 질문·응답, 승인 요청/결과가 발생한 시점
- 테스트 skip 이유·gate waiver 발급 등 예외 사유를 기록해야 할 때
다음 상황에서는 사용하지 않습니다.
- 일회성 개인 탐색 세션 — 감사 로그가 불필요합니다.
- 로컬 dev 환경의 temp 파일 조작 — 프로덕션 경로와 분리하여 기록 제외.
전제 조건
.omao/state/audit/ 디렉토리 쓰기 권한. 본 skill이 세션별 로그 파일을 생성합니다.
- 세션 ID 또는 프로젝트 slug 확정. 로그 파일은
<session-id>.md 네이밍을 사용합니다.
- Kiro 레포 MIT-0
audit-rules.md의 verbatim 기록 원칙을 준수. 사용자 입력을 축약·요약·재구성하지 않습니다.
핵심 원칙
1. Verbatim 기록 (MANDATORY)
사용자 입력은 원문 그대로 blockquote로 기록합니다. 요약·의역·키워드 추출·재구성을 금지합니다.
- **User Prompt (verbatim)**:
> 사용자가 입력한 원본 텍스트 그대로. 오타·비문·감정 표현 보존.
2. ISO 8601 타임스탬프
모든 이벤트는 [YYYY-MM-DDTHH:MM:SSZ] (UTC) 형식을 사용합니다. 로컬 시간대·비표준 형식 금지.
timestamp() { date -u +"%Y-%m-%dT%H:%M:%SZ"; }
3. 불변 로그 (Append-Only)
감사 로그는 추가 전용입니다. 수정·삭제 필요 시 보정 이벤트(correction event) 를 새로 추가합니다.
### [2026-04-21T10:15:00Z] Correction — 2026-04-21T09:30:00Z 이벤트 수정
- 사유: 원본 기록의 파일 경로 오기
- 원본 항목: (링크)
- 정정 내용:
4. 보존 정책 (Retention)
프로젝트 단위로 보존 기간을 선택합니다.
| 보존 기간 | 대상 프로젝트 | 규제 근거 |
|---|
| 30일 | 내부 실험·PoC | 운영 정책 |
| 90일 | 일반 프로덕션 | SOC2 CC7.2 |
| 365일 | 규제 대상(금융·의료) | ISMS-P 2.9.4, PCI DSS 10.7 |
보존 기간 설정은 .omao/state/audit/<session-id>.config.yaml에 기록합니다.
실행 절차
Step 1: 세션 초기화
세션 시작 시 감사 로그 파일과 설정을 생성합니다.
SESSION_ID="${1:?usage: audit-trail <session-id>}"
AUDIT_DIR=".omao/state/audit"
mkdir -p "$AUDIT_DIR"
LOG_FILE="$AUDIT_DIR/${SESSION_ID}.md"
CONFIG_FILE="$AUDIT_DIR/${SESSION_ID}.config.yaml"
if [ ! -f "$LOG_FILE" ]; then
cat > "$LOG_FILE" <<EOF
# Audit Log — ${SESSION_ID}
Session initialized: $(date -u +"%Y-%m-%dT%H:%M:%SZ")
EOF
fi
if [ ! -f "$CONFIG_FILE" ]; then
cat > "$CONFIG_FILE" <<EOF
session_id: ${SESSION_ID}
retention_days: 90
created: $(date -u +"%Y-%m-%dT%H:%M:%SZ")
compliance:
- SOC2
EOF
fi
Step 2: 이벤트 기록
본 skill의 공통 이벤트 타입은 다음과 같습니다.
stage-start / stage-end
user-prompt (verbatim)
user-answer (verbatim)
ai-action
ai-decision
file-created / file-modified
command-executed
error / error-resolved
approval-requested / approval-granted / approval-rejected
gate-evaluation
test-skipped
waiver-issued
각 이벤트는 templates/audit-log.template.md의 형식을 따릅니다.
Step 3: 검증 루틴
세션 종료 시 다음 불변식을 검증합니다.
Step 4: 주기적 정리 (Retention 만료)
보존 기간을 초과한 로그를 자동 아카이브하거나 삭제합니다.
find .omao/state/audit -name "*.config.yaml" | while read cfg; do
retention=$(grep "^retention_days:" "$cfg" | awk '{print $2}')
created=$(grep "^created:" "$cfg" | awk '{print $2}')
done
SOC2 / ISMS-P 매핑
| 요구사항 | 본 skill의 기여 |
|---|
| SOC2 CC7.2 (Monitoring) | 모든 사용자·agent 이벤트 타임스탬프 기록 |
| SOC2 CC6.1 (Logical Access) | 승인 요청/결과 verbatim 보존 |
| ISMS-P 2.9.4 (로그 관리) | 365일 보존 옵션 + 불변성 검증 |
| ISMS-P 2.10.9 (침해사고 대응) | error·error-resolved 이벤트 추적 |
| PCI DSS 10.7 | 1년 보존 + 첫 90일 즉시 조회 가능 |
산출물 체크리스트
본 skill 실행 종료 직전 다음을 자동 검증합니다.
좋은 예시 vs 나쁜 예시
Good — 사용자 입력을 원문 그대로 보존합니다.
### [2026-04-21T09:45:12Z] User Prompt
- **User Prompt (verbatim)**:
> 일단 빠르게 배포 진행해주시고, 모니터링은 내일 붙이면 될거같아요. 암튼 오늘내로 나가야합니다.
- **AI Judgment**: 사용자 요청은 quality gate 우회 신호이므로 waiver 없이 진행 불가.
- **Next Action**: waiver 요청 템플릿 제시.
Bad — 사용자 입력을 요약·의역합니다.
- 사용자가 빠른 배포를 요청함. 모니터링은 나중에 추가 예정. (❌ 원문 소실)
Good — 타임스탬프가 UTC·ISO 8601.
### [2026-04-21T09:45:12Z] File Created
Bad — 타임스탬프가 로컬 시간대·비표준.
### [4/21 오후 6:45] 파일 생성 (❌ UTC 아님, ISO 아님)
참고 자료
공식 문서
관련 문서 (내부)
../../construction/quality-gates/SKILL.md — gate 판정 이벤트를 본 skill로 기록
../../construction/risk-discovery/SKILL.md — risk 판정 결과를 감사 로그에 push
../../inception/structured-intake/SKILL.md — 사용자 intake 응답을 verbatim 보존
../incident-response/SKILL.md — SEV 이벤트를 본 skill로 기록