This commit is contained in:
@@ -0,0 +1,98 @@
|
||||
#!/usr/bin/env python3
|
||||
import argparse
|
||||
import json
|
||||
from pathlib import Path
|
||||
|
||||
from resource_boundary_check import analyze_skill
|
||||
|
||||
|
||||
ROOT = Path(__file__).resolve().parent.parent
|
||||
TARGETS = [
|
||||
{
|
||||
"label": "root",
|
||||
"path": ROOT,
|
||||
"json_output": ROOT / "reports" / "context_budget.json",
|
||||
},
|
||||
{
|
||||
"label": "complex-release-orchestrator",
|
||||
"path": ROOT / "examples" / "complex-release-orchestrator" / "generated-skill",
|
||||
"json_output": ROOT / "examples" / "complex-release-orchestrator" / "generated-skill" / "reports" / "context_budget.json",
|
||||
},
|
||||
{
|
||||
"label": "governed-incident-command",
|
||||
"path": ROOT / "examples" / "governed-incident-command" / "generated-skill",
|
||||
"json_output": ROOT / "examples" / "governed-incident-command" / "generated-skill" / "reports" / "context_budget.json",
|
||||
},
|
||||
]
|
||||
|
||||
|
||||
def parse_args() -> argparse.Namespace:
|
||||
parser = argparse.ArgumentParser(description="Render context budget reports for root and example skills.")
|
||||
parser.add_argument(
|
||||
"--generated-at",
|
||||
default="2026-03-31",
|
||||
help="Report date written to context_budget_summary.json.",
|
||||
)
|
||||
return parser.parse_args()
|
||||
|
||||
|
||||
def main() -> None:
|
||||
args = parse_args()
|
||||
rows = []
|
||||
for target in TARGETS:
|
||||
report = analyze_skill(target["path"])
|
||||
target["json_output"].parent.mkdir(parents=True, exist_ok=True)
|
||||
target["json_output"].write_text(json.dumps(report, ensure_ascii=False, indent=2) + "\n", encoding="utf-8")
|
||||
stats = report.get("stats", {})
|
||||
rows.append(
|
||||
{
|
||||
"label": target["label"],
|
||||
"path": str(target["path"].relative_to(ROOT)) if target["path"] != ROOT else ".",
|
||||
"budget_tier": stats.get("context_budget_tier"),
|
||||
"budget_limit": stats.get("context_budget_limit"),
|
||||
"initial_tokens": stats.get("estimated_initial_load_tokens"),
|
||||
"skill_body_tokens": stats.get("skill_body_tokens"),
|
||||
"deferred_resource_tokens": stats.get("deferred_resource_tokens"),
|
||||
"large_deferred_resource_dirs": stats.get("large_deferred_resource_dirs", []),
|
||||
"deferred_resource_governance": stats.get("deferred_resource_governance", {}),
|
||||
"quality_density": stats.get("quality_density"),
|
||||
"unused_resource_dirs": stats.get("unused_resource_dirs", []),
|
||||
"ok": report.get("ok"),
|
||||
"warnings": report.get("warnings", []),
|
||||
}
|
||||
)
|
||||
|
||||
summary = {
|
||||
"generated_at": args.generated_at,
|
||||
"targets": rows,
|
||||
}
|
||||
(ROOT / "reports").mkdir(parents=True, exist_ok=True)
|
||||
(ROOT / "reports" / "context_budget_summary.json").write_text(
|
||||
json.dumps(summary, ensure_ascii=False, indent=2) + "\n",
|
||||
encoding="utf-8",
|
||||
)
|
||||
|
||||
lines = [
|
||||
"# Context Budget Summary",
|
||||
"",
|
||||
"| Target | Path | Tier | Limit | Initial | SKILL | Deferred | Resource Governance | Large Deferred Dirs | Quality Density | Unused Dirs | Status |",
|
||||
"| --- | --- | --- | ---: | ---: | ---: | ---: | --- | --- | ---: | --- | --- |",
|
||||
]
|
||||
for row in rows:
|
||||
unused = ", ".join(row["unused_resource_dirs"]) if row["unused_resource_dirs"] else "-"
|
||||
governance = row.get("deferred_resource_governance", {}) or {}
|
||||
governance_status = governance.get("status", "unknown")
|
||||
large_dirs = ", ".join(
|
||||
f"{item['path']}:{item['estimated_tokens']}"
|
||||
for item in row.get("large_deferred_resource_dirs", [])
|
||||
) or "-"
|
||||
status = "ok" if row["ok"] else "fail"
|
||||
lines.append(
|
||||
f"| {row['label']} | `{row['path']}` | `{row['budget_tier']}` | {row['budget_limit']} | {row['initial_tokens']} | {row['skill_body_tokens']} | {row['deferred_resource_tokens']} | `{governance_status}` | {large_dirs} | {row['quality_density']} | {unused} | {status} |"
|
||||
)
|
||||
lines.extend(["", "Per-target JSON reports are written beside each target and under `reports/`."])
|
||||
(ROOT / "reports" / "context_budget.md").write_text("\n".join(lines) + "\n", encoding="utf-8")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user