#!/usr/bin/env python3 """SessionStart hook: inject PLAN.md P0/P1 and PROGRESS.md snapshot as additionalContext.""" import json import os import re import sys def read_file(path: str) -> str: try: with open(path, encoding="utf-8") as f: return f.read() except Exception: return "" def main() -> None: proj = os.environ.get("CLAUDE_PROJECT_DIR", ".") plan = read_file(os.path.join(proj, "PLAN.md")) progress = read_file(os.path.join(proj, "PROGRESS.md")) parts: list[str] = [] # PLAN: "### P0" through (not including) "## 백로그" m = re.search(r"^### P0.*?(?=^## 백로그)", plan, re.M | re.S) if m: parts.append("## PLAN.md — 현재 스프린트\n\n" + m.group(0).strip()) # PROGRESS: "## 현재 스냅샷" to EOF m = re.search(r"^## 현재 스냅샷.*$", progress, re.M | re.S) if m: parts.append(m.group(0).strip()) if not parts: sys.exit(0) ctx = "\n\n".join(parts) + ( "\n\n**에이전트 작업 시작 시 PLAN.md · PROGRESS.md를 읽는 것이 필수입니다.**" ) print( json.dumps( { "hookSpecificOutput": { "hookEventName": "SessionStart", "additionalContext": ctx, } }, ensure_ascii=False, ) ) sys.exit(0) if __name__ == "__main__": try: main() except Exception as exc: sys.stderr.write(f"session-start-context: {exc}\n") sys.exit(0)