Hand-maintained skill guide drift report

Run the offline report from the repository root with Python 3.12:

python3 scripts/report_skill_doc_drift.py \
  --json-output reports/skill-doc-drift.json \
  --markdown-output reports/skill-doc-drift.md

The Hand-maintained skill docs drift workflow runs this command on pull requests and main, adds warning annotations and a job summary, and retains both reports as the skill-doc-drift artifact. Findings return exit code 0; unreadable inputs or failed output writes return 1. This report does not change the existing generated-page drift gate or EN/JA command-parity gate.

Only existing EN/JA skill pages without generated: true frontmatter are assessed. The summary counts pages with findings, individual findings, unknown-history pages, and unchecked imports. JSON contains each page’s source/page commit times, missing flags, findings and unchecked imports. Use the same revision and full git history when comparing counts; the assessed HEAD is included in both reports.

Missing flags are flagged when SKILL.md has a newer last commit than the page. With missing or shallow history, dates remain unknown and missing flags receive a separate visible finding. File modification times are never substituted. Current working-tree content is analyzed, but its uncommitted edits have no new commit timestamp. Missing flag mentions are a review signal: not every flag necessarily belongs in every guide.

Python fences are parsed with AST, never executed or imported. Static checks cover repository import paths and top-level exported names, plus local skill helpers with a preceding literal repository-root sys.path setup. External, dynamic, relative and conditional imports, and dynamic exports, are explicitly unchecked. This is not a complete Python interpreter or proof that every example runs. The Trader Memory Core guides additionally have targeted import/signature and fictional temporary-state lifecycle tests.

Annotations are capped at 20; the artifact retains every finding. Refresh pages against the actual CLI/API and validate examples before shrinking parity exceptions. Do not regenerate hand-maintained guides or add exemptions simply to lower the reported count.