k-skill/tools/k-skill-qa-bot/Makefile
Jeffrey (Dongkyu) Kim 7f73e55011 feat(qa-bot): add k-skill-qa-bot under tools/
External macOS daemon that clones NomaDamas/k-skill main every 3 days, runs
each skill through codex exec, has an LLM judge grade pass/fail/skip via
codex exec --output-schema, and files dedup'd GitHub issues for true failures.

Layout:
- install.sh copies tools/k-skill-qa-bot/ to ~/.local/share/k-skill-qa-bot/
  and registers a LaunchAgent at ~/Library/LaunchAgents/.
- update-clone.sh has a hard guard: refuses any K_SKILL_CLONE outside
  K_QA_HOME/k-skill-clone unless ALLOW_EXTERNAL_CLONE_TARGET=1.
- Force-skip 10 destructive/login-required skills (ktx-booking, srt-booking,
  catchtable-sniper, kakaotalk-mac, hipass-receipt, toss-securities, etc.)
  so the bot never triggers reservation abuse.
- Deprecated skills (strike-through + 지원 중단 in README) auto-detected
  and skipped, never failed.
- First-run safety: CREATE_ISSUES=false by default.
- mkdir-based concurrency lock with atomic stale reclaim.
- Issue dedup: sha1(skill_name + symptom_class)[:12] body marker.
- Deterministic gates override LLM judge to FAIL on exit_code != 0, missing
  VERDICT line, or near-timeout duration.
2026-05-17 18:24:11 +09:00

21 lines
896 B
Makefile

.PHONY: help lint test test-bats test-pytest clean
help:
@echo "Targets: lint test test-bats test-pytest clean"
lint:
@shellcheck -e SC1091,SC2016,SC2012 bin/*.sh bin/lib/*.sh install.sh uninstall.sh 2>&1 || echo "(shellcheck warnings above)"
@python3 -m py_compile bin/*.py bin/lib/*.py 2>&1
test-bats:
@command -v bats >/dev/null || { echo "bats-core required (brew install bats-core)"; exit 1; }
@if ls test/bats/*.bats >/dev/null 2>&1; then bats test/bats/; else echo "(no bats tests yet)"; fi
test-pytest:
@command -v pytest >/dev/null || { echo "pytest required (pip install pytest)"; exit 1; }
@if ls test/pytest/test_*.py >/dev/null 2>&1; then pytest test/pytest/ -v; ec=$$?; [ $$ec -eq 5 ] && echo "(no pytest tests collected)" || exit $$ec; else echo "(no pytest tests yet)"; fi
test: test-bats test-pytest
clean:
@rm -rf test/pytest/__pycache__ test/pytest/.pytest_cache