#!/usr/bin/env python3 from pathlib import Path import sys ROOT = Path(__file__).resolve().parents[1] required = [ "docs/30-codex-optimization/CODEX_OPTIMIZATION_OVERVIEW.md", "docs/30-codex-optimization/CODEX_RUN_CHECKLIST.md", "docs/30-codex-optimization/PROMPT_DISCIPLINE.md", "docs/30-codex-optimization/TOKEN_BUDGET_POLICY.md", "docs/30-codex-optimization/SECRETS_AND_ENV_POLICY.md", "docs/30-codex-optimization/PARALLEL_AGENT_STRATEGY.md", "docs/30-codex-optimization/CODEX_SKILLS_INDEX.md", "prompts/codex/m13/DAY_1_OPTIMIZED_MASTER_PROMPT.md", "prompts/codex/m13/PASS_COMPLETION_REPORT_PROMPT.md", "prompts/codex/m13/PARALLEL_AGENT_COORDINATION_PROMPT.md", ] skills = [ "geoai-backend-build", "postgis-migration", "raster-pipeline", "vector-processing", "frontend-maplibre-workbench", "qaqc-review", "codex-pass-review", ] missing = [] for item in required: p = ROOT / item if not p.exists() or p.stat().st_size == 0: missing.append(item) for skill in skills: p = ROOT / "skills" / skill / "SKILL.md" if not p.exists() or p.stat().st_size == 0: missing.append(str(p.relative_to(ROOT))) if missing: print("M13 validation failed. Missing/empty assets:") for item in missing: print(f"- {item}") sys.exit(1) print("M13 Codex optimization assets OK")