#!/usr/bin/env python3
"""脅威モデリングの途中経過を記録する小さなスクリプト。

使い方:
    python3 .claude/skills/_lib/checkpoint.py <段階> "<一言メモ>"

段階は bootstrap / interview / threats / report のいずれかです。
記録先は .work/threat_model_checkpoints.jsonl（1行1件の追記）です。
標準ライブラリだけで動き、外部への通信はしません。
"""

import json
import sys
from datetime import datetime
from pathlib import Path

STAGES = ("bootstrap", "interview", "threats", "report")

# .claude/skills/_lib/ から3つ上がプロジェクトルート（handson）
PROJECT_ROOT = Path(__file__).resolve().parents[3]
LOG_PATH = PROJECT_ROOT / ".work" / "threat_model_checkpoints.jsonl"


def main() -> int:
    if len(sys.argv) < 2:
        print(f"使い方: checkpoint.py <{'|'.join(STAGES)}> \"<一言メモ>\"")
        return 1

    stage = sys.argv[1]
    if stage not in STAGES:
        print(f"段階は次のいずれかで指定してください: {', '.join(STAGES)}")
        return 1

    note = sys.argv[2] if len(sys.argv) > 2 else ""

    record = {
        "時刻": datetime.now().isoformat(timespec="seconds"),
        "段階": stage,
        "メモ": note,
    }

    # .work/ は他のコマンドの中間データも置く場所なので、無ければ作る
    LOG_PATH.parent.mkdir(parents=True, exist_ok=True)
    with LOG_PATH.open("a", encoding="utf-8") as f:
        f.write(json.dumps(record, ensure_ascii=False) + "\n")

    print(f"記録しました: {stage} / {note}")
    return 0


if __name__ == "__main__":
    sys.exit(main())
