diff --git a/registry/index.json b/registry/index.json
index b80d90d..901d90b 100644
--- a/registry/index.json
+++ b/registry/index.json
@@ -16,7 +16,7 @@
"vscode"
],
"package_metadata": "registry/packages/yao-meta-skill.json",
- "package_sha256": "1ce8a87e2393ee03818d16053afb68b2332cacbc2e3b400058b5bbf8c31266fa"
+ "package_sha256": "18e4ec6cd34d80c2fff0ce51a7a107f15c9dbaa5c6d4e54065aee15dbd0fb00e"
}
]
}
diff --git a/registry/packages/yao-meta-skill.json b/registry/packages/yao-meta-skill.json
index 2a46fda..7730749 100644
--- a/registry/packages/yao-meta-skill.json
+++ b/registry/packages/yao-meta-skill.json
@@ -16,8 +16,8 @@
"trust_level": "local",
"license": "MIT",
"checksums": {
- "package_sha256": "1ce8a87e2393ee03818d16053afb68b2332cacbc2e3b400058b5bbf8c31266fa",
- "archive_sha256": "b258a36c15b68045a4b420c49585ac446de6b013cb43fae25f3ba562ba06fab7"
+ "package_sha256": "18e4ec6cd34d80c2fff0ce51a7a107f15c9dbaa5c6d4e54065aee15dbd0fb00e",
+ "archive_sha256": "26e0362e174968f9eaeabb4f47304f641610791bc215f4e55d675d3367448b25"
},
"compatibility": {
"openai": "pass",
@@ -48,7 +48,7 @@
},
"distribution": {
"archive_verified": true,
- "archive_sha256": "b258a36c15b68045a4b420c49585ac446de6b013cb43fae25f3ba562ba06fab7",
+ "archive_sha256": "26e0362e174968f9eaeabb4f47304f641610791bc215f4e55d675d3367448b25",
"package_verification": "reports/package_verification.json",
"install_simulated": true,
"install_simulation": "reports/install_simulation.json"
diff --git a/reports/adoption_drift_report.json b/reports/adoption_drift_report.json
index d0e6429..3f7b48b 100644
--- a/reports/adoption_drift_report.json
+++ b/reports/adoption_drift_report.json
@@ -1,7 +1,7 @@
{
"ok": true,
"schema_version": "2.0",
- "generated_at": "2026-06-13T17:49:00Z",
+ "generated_at": "2026-06-13T18:04:28Z",
"skill_dir": ".",
"privacy_contract": {
"storage": "local-first",
diff --git a/reports/architecture_maintainability.json b/reports/architecture_maintainability.json
index 97c137a..43beae5 100644
--- a/reports/architecture_maintainability.json
+++ b/reports/architecture_maintainability.json
@@ -4,27 +4,20 @@
"generated_at": "2026-06-14",
"skill_dir": ".",
"summary": {
- "python_file_count": 139,
- "script_file_count": 83,
+ "python_file_count": 141,
+ "script_file_count": 85,
"test_file_count": 56,
- "internal_module_count": 12,
+ "internal_module_count": 14,
"cli_script_count": 72,
- "command_handler_count": 55,
+ "command_handler_count": 35,
"warn_line_threshold": 900,
"block_line_threshold": 1500,
- "largest_file_lines": 1438,
+ "largest_file_lines": 1196,
"hotspot_count": 3,
"blocker_count": 0,
"decision": "watch-maintainability-hotspots"
},
"largest_files": [
- {
- "path": "scripts/yao.py",
- "lines": 1438,
- "kind": "cli-script",
- "severity": "warn",
- "recommendation": "Split command handlers by domain while keeping scripts/yao.py as the thin CLI orchestrator."
- },
{
"path": "scripts/render_review_studio.py",
"lines": 1196,
@@ -32,6 +25,13 @@
"severity": "warn",
"recommendation": "Move data loading and large section renderers into focused review_studio_* modules."
},
+ {
+ "path": "scripts/yao.py",
+ "lines": 1159,
+ "kind": "cli-script",
+ "severity": "warn",
+ "recommendation": "Split command handlers by domain while keeping scripts/yao.py as the thin CLI orchestrator."
+ },
{
"path": "scripts/render_review_viewer.py",
"lines": 983,
@@ -41,7 +41,7 @@
},
{
"path": "tests/verify_yao_cli.py",
- "lines": 833,
+ "lines": 838,
"kind": "test",
"severity": "pass",
"recommendation": "Break broad integration assertions into focused verifier helpers when the next behavior change lands."
@@ -104,13 +104,6 @@
}
],
"hotspots": [
- {
- "path": "scripts/yao.py",
- "lines": 1438,
- "kind": "cli-script",
- "severity": "warn",
- "recommendation": "Split command handlers by domain while keeping scripts/yao.py as the thin CLI orchestrator."
- },
{
"path": "scripts/render_review_studio.py",
"lines": 1196,
@@ -118,6 +111,13 @@
"severity": "warn",
"recommendation": "Move data loading and large section renderers into focused review_studio_* modules."
},
+ {
+ "path": "scripts/yao.py",
+ "lines": 1159,
+ "kind": "cli-script",
+ "severity": "warn",
+ "recommendation": "Split command handlers by domain while keeping scripts/yao.py as the thin CLI orchestrator."
+ },
{
"path": "scripts/render_review_viewer.py",
"lines": 983,
@@ -127,16 +127,16 @@
}
],
"actions": [
- {
- "path": "scripts/yao.py",
- "severity": "warn",
- "action": "Split command handlers by domain while keeping scripts/yao.py as the thin CLI orchestrator."
- },
{
"path": "scripts/render_review_studio.py",
"severity": "warn",
"action": "Move data loading and large section renderers into focused review_studio_* modules."
},
+ {
+ "path": "scripts/yao.py",
+ "severity": "warn",
+ "action": "Split command handlers by domain while keeping scripts/yao.py as the thin CLI orchestrator."
+ },
{
"path": "scripts/render_review_viewer.py",
"severity": "warn",
diff --git a/reports/architecture_maintainability.md b/reports/architecture_maintainability.md
index 7484f19..32511bd 100644
--- a/reports/architecture_maintainability.md
+++ b/reports/architecture_maintainability.md
@@ -5,13 +5,13 @@ Generated at: `2026-06-14`
## Summary
- decision: `watch-maintainability-hotspots`
-- python files: `139`
-- scripts: `83`
+- python files: `141`
+- scripts: `85`
- tests: `56`
-- internal modules: `12`
+- internal modules: `14`
- CLI scripts: `72`
-- Yao CLI command handlers: `55`
-- largest file lines: `1438`
+- Yao CLI command handlers: `35`
+- largest file lines: `1196`
- hotspots: `3`
- blockers: `0`
@@ -21,18 +21,18 @@ This report keeps maintainability risk visible before the Meta Skill grows more
| File | Lines | Kind | Severity | Recommended action |
| --- | ---: | --- | --- | --- |
-| `scripts/yao.py` | `1438` | `cli-script` | `warn` | Split command handlers by domain while keeping scripts/yao.py as the thin CLI orchestrator. |
| `scripts/render_review_studio.py` | `1196` | `cli-script` | `warn` | Move data loading and large section renderers into focused review_studio_* modules. |
+| `scripts/yao.py` | `1159` | `cli-script` | `warn` | Split command handlers by domain while keeping scripts/yao.py as the thin CLI orchestrator. |
| `scripts/render_review_viewer.py` | `983` | `cli-script` | `warn` | Split viewer data assembly from HTML section rendering. |
## Largest Files
| File | Lines | Kind | Severity |
| --- | ---: | --- | --- |
-| `scripts/yao.py` | `1438` | `cli-script` | `warn` |
| `scripts/render_review_studio.py` | `1196` | `cli-script` | `warn` |
+| `scripts/yao.py` | `1159` | `cli-script` | `warn` |
| `scripts/render_review_viewer.py` | `983` | `cli-script` | `warn` |
-| `tests/verify_yao_cli.py` | `833` | `test` | `pass` |
+| `tests/verify_yao_cli.py` | `838` | `test` | `pass` |
| `scripts/skill_report_model.py` | `782` | `internal-module` | `pass` |
| `scripts/compile_skill.py` | `734` | `cli-script` | `pass` |
| `scripts/optimize_description.py` | `723` | `cli-script` | `pass` |
diff --git a/reports/benchmark_reproducibility.json b/reports/benchmark_reproducibility.json
index fce6063..ee81d39 100644
--- a/reports/benchmark_reproducibility.json
+++ b/reports/benchmark_reproducibility.json
@@ -3,24 +3,24 @@
"ok": true,
"generated_at": "2026-06-14",
"skill_dir": ".",
- "commit": "ae0f72cccb542d653d6884c38e6f5d1b9a4a2b2d",
+ "commit": "7afde5ebafd5b8cb0b00aaaac4943c037fc9dce4",
"git_status": {
"available": true,
"dirty": true,
- "changed_file_count": 44,
+ "changed_file_count": 36,
"sample": [
- " M Makefile",
" M registry/index.json",
" M registry/packages/yao-meta-skill.json",
" M reports/adoption_drift_report.json",
+ " M reports/architecture_maintainability.json",
+ " M reports/architecture_maintainability.md",
" M reports/benchmark_reproducibility.json",
" M reports/benchmark_reproducibility.md",
" M reports/compiled_targets.json",
" M reports/context_budget.json",
" M reports/install_simulation.json",
" M reports/output_execution_runs.json",
- " M reports/output_execution_runs.md",
- " M reports/package_verification.json"
+ " M reports/output_execution_runs.md"
]
},
"summary": {
@@ -42,7 +42,7 @@
"world_class_task_count": 4,
"world_class_ledger_pending_count": 4,
"working_tree_dirty": true,
- "changed_file_count": 44
+ "changed_file_count": 36
},
"methodology": {
"path": "reports/benchmark_methodology.md",
@@ -115,8 +115,8 @@
"label": "output_execution",
"path": "reports/output_execution_runs.json",
"exists": true,
- "bytes": 7967,
- "sha256": "1c204ff667b83e4635c792e2ea387865af24dd3191147f24f22f69ceaff968b5"
+ "bytes": 7966,
+ "sha256": "ef773cdb0b4b3e6263b58aa52c8473ee5b5613297bae721ea34da2418f4f6c9b"
},
{
"label": "blind_review",
@@ -150,43 +150,43 @@
"label": "trust_report",
"path": "reports/security_trust_report.json",
"exists": true,
- "bytes": 88376,
- "sha256": "c846881bdb45e47b6f7c576e9c0e58cc157d7fd2f358ba710fbf92e9564d89fd"
+ "bytes": 89598,
+ "sha256": "043f8314a8c2c8ef992d486384cd22dba5a0284af491fd830ddc91fec54f666a"
},
{
"label": "python_compatibility",
"path": "reports/python_compatibility.json",
"exists": true,
- "bytes": 18557,
- "sha256": "29fd6618afda3e74452262ed5c0ebd03d585495bb08aeac08d6341c4aa3be54c"
+ "bytes": 18801,
+ "sha256": "3f071172d13c70acd0b16fe84ae011fee39030da61dd5801009fadead64f2a60"
},
{
"label": "registry_audit",
"path": "reports/registry_audit.json",
"exists": true,
"bytes": 3183,
- "sha256": "729094faff9d20fec82ea1a481332389b3104a6e37bfe87b20cd4dfc833c7d80"
+ "sha256": "a55d0fb1c7d6730d1b8009904b59a18eb61a776368a211385b4a5d21b915edf1"
},
{
"label": "package_verification",
"path": "reports/package_verification.json",
"exists": true,
"bytes": 19325,
- "sha256": "5f45e45cc28c43693f702228587a82a9246a35df09f95046e3d111dd5f48897c"
+ "sha256": "ff899ad76a6ad8e39a5f15e483135b4a93602ff59984a61f0c807ad627749dad"
},
{
"label": "install_simulation",
"path": "reports/install_simulation.json",
"exists": true,
"bytes": 8557,
- "sha256": "c0ffaaded1898df656415208722157213bb364200d8834d9d21812d574e7b269"
+ "sha256": "20d6fa71cc492c837a98d383686677c7c2e9cc5885514ab56d5b23819060b746"
},
{
"label": "skill_os2_audit",
"path": "reports/skill_os2_audit.json",
"exists": true,
"bytes": 13946,
- "sha256": "80ef52f1775e85d6b96643cbebe99f21a0f04d86af6e38a4f1901e3b5511a235"
+ "sha256": "48f2206d4eb7598009740e9d4ab9e1f08b9d039cf661bb39ffbc24b2beb2c099"
},
{
"label": "world_class_evidence_plan",
diff --git a/reports/benchmark_reproducibility.md b/reports/benchmark_reproducibility.md
index 5436a56..fd22261 100644
--- a/reports/benchmark_reproducibility.md
+++ b/reports/benchmark_reproducibility.md
@@ -1,7 +1,7 @@
# Benchmark Reproducibility
Generated at: `2026-06-14`
-Commit: `ae0f72cccb542d653d6884c38e6f5d1b9a4a2b2d`
+Commit: `7afde5ebafd5b8cb0b00aaaac4943c037fc9dce4`
Working tree dirty at generation: `true`
## Summary
@@ -16,7 +16,7 @@ Working tree dirty at generation: `true`
- provider evidence complete: `false`
- human review complete: `false`
- world-class ready: `false`
-- changed files at generation: `44`
+- changed files at generation: `36`
This report proves local benchmark reproducibility only. It keeps external provider and human-review gaps visible instead of counting them as complete.
@@ -40,17 +40,17 @@ This report proves local benchmark reproducibility only. It keeps external provi
| output_cases | `evals/output/cases.jsonl` | present | `a6ae96857116` |
| output_schema | `evals/output/schema.json` | present | `8ee340c95064` |
| output_scorecard | `reports/output_quality_scorecard.json` | present | `0806258a8e08` |
-| output_execution | `reports/output_execution_runs.json` | present | `1c204ff667b8` |
+| output_execution | `reports/output_execution_runs.json` | present | `ef773cdb0b4b` |
| blind_review | `reports/output_blind_review_pack.json` | present | `bbe2db8ec277` |
| review_adjudication | `reports/output_review_adjudication.json` | present | `ddd9af90d42e` |
| trigger_scorecard | `reports/route_scorecard.json` | present | `c164e83e36d0` |
| runtime_conformance | `reports/conformance_matrix.json` | present | `8251329e663d` |
-| trust_report | `reports/security_trust_report.json` | present | `c846881bdb45` |
-| python_compatibility | `reports/python_compatibility.json` | present | `29fd6618afda` |
-| registry_audit | `reports/registry_audit.json` | present | `729094faff9d` |
-| package_verification | `reports/package_verification.json` | present | `5f45e45cc28c` |
-| install_simulation | `reports/install_simulation.json` | present | `c0ffaaded189` |
-| skill_os2_audit | `reports/skill_os2_audit.json` | present | `80ef52f1775e` |
+| trust_report | `reports/security_trust_report.json` | present | `043f8314a8c2` |
+| python_compatibility | `reports/python_compatibility.json` | present | `3f071172d13c` |
+| registry_audit | `reports/registry_audit.json` | present | `a55d0fb1c7d6` |
+| package_verification | `reports/package_verification.json` | present | `ff899ad76a6a` |
+| install_simulation | `reports/install_simulation.json` | present | `20d6fa71cc49` |
+| skill_os2_audit | `reports/skill_os2_audit.json` | present | `48f2206d4eb7` |
| world_class_evidence_plan | `reports/world_class_evidence_plan.json` | present | `ed1274b7c18c` |
| world_class_evidence_ledger | `reports/world_class_evidence_ledger.json` | present | `5ed043491c3d` |
| world_class_evidence_intake | `reports/world_class_evidence_intake.json` | present | `124b9239d7f3` |
diff --git a/reports/compiled_targets.json b/reports/compiled_targets.json
index c0786f7..5364a2f 100644
--- a/reports/compiled_targets.json
+++ b/reports/compiled_targets.json
@@ -450,7 +450,7 @@
},
"subprocess": {
"required": true,
- "script_count": 8,
+ "script_count": 9,
"scripts": [
"scripts/ci_test.py",
"scripts/render_benchmark_reproducibility.py",
@@ -459,7 +459,8 @@
"scripts/run_output_execution.py",
"scripts/sync_local_install.py",
"scripts/trust_check.py",
- "scripts/yao.py"
+ "scripts/yao.py",
+ "scripts/yao_cli_runtime.py"
],
"review_reason": "Scripts spawn local commands and need operator review."
},
@@ -490,7 +491,7 @@
"secret_findings": 0,
"network_script_count": 3,
"file_write_script_count": 60,
- "subprocess_script_count": 8,
+ "subprocess_script_count": 9,
"interactive_script_count": 0,
"help_smoke_failed_count": 0
}
@@ -512,7 +513,7 @@
"capability_counts": {
"network": 3,
"file_write": 60,
- "subprocess": 8,
+ "subprocess": 9,
"interactive": 0
},
"evidence": "reports/security_trust_report.json",
@@ -691,7 +692,7 @@
},
"subprocess": {
"required": true,
- "script_count": 8,
+ "script_count": 9,
"scripts": [
"scripts/ci_test.py",
"scripts/render_benchmark_reproducibility.py",
@@ -700,7 +701,8 @@
"scripts/run_output_execution.py",
"scripts/sync_local_install.py",
"scripts/trust_check.py",
- "scripts/yao.py"
+ "scripts/yao.py",
+ "scripts/yao_cli_runtime.py"
],
"review_reason": "Scripts spawn local commands and need operator review."
},
@@ -731,7 +733,7 @@
"secret_findings": 0,
"network_script_count": 3,
"file_write_script_count": 60,
- "subprocess_script_count": 8,
+ "subprocess_script_count": 9,
"interactive_script_count": 0,
"help_smoke_failed_count": 0
}
@@ -751,7 +753,7 @@
"capability_counts": {
"network": 3,
"file_write": 60,
- "subprocess": 8,
+ "subprocess": 9,
"interactive": 0
},
"evidence": "reports/security_trust_report.json",
@@ -1289,7 +1291,7 @@
},
"subprocess": {
"required": true,
- "script_count": 8,
+ "script_count": 9,
"scripts": [
"scripts/ci_test.py",
"scripts/render_benchmark_reproducibility.py",
@@ -1298,7 +1300,8 @@
"scripts/run_output_execution.py",
"scripts/sync_local_install.py",
"scripts/trust_check.py",
- "scripts/yao.py"
+ "scripts/yao.py",
+ "scripts/yao_cli_runtime.py"
],
"review_reason": "Scripts spawn local commands and need operator review."
},
@@ -1329,7 +1332,7 @@
"secret_findings": 0,
"network_script_count": 3,
"file_write_script_count": 60,
- "subprocess_script_count": 8,
+ "subprocess_script_count": 9,
"interactive_script_count": 0,
"help_smoke_failed_count": 0
}
@@ -1351,7 +1354,7 @@
"capability_counts": {
"network": 3,
"file_write": 60,
- "subprocess": 8,
+ "subprocess": 9,
"interactive": 0
},
"evidence": "reports/security_trust_report.json",
@@ -1530,7 +1533,7 @@
},
"subprocess": {
"required": true,
- "script_count": 8,
+ "script_count": 9,
"scripts": [
"scripts/ci_test.py",
"scripts/render_benchmark_reproducibility.py",
@@ -1539,7 +1542,8 @@
"scripts/run_output_execution.py",
"scripts/sync_local_install.py",
"scripts/trust_check.py",
- "scripts/yao.py"
+ "scripts/yao.py",
+ "scripts/yao_cli_runtime.py"
],
"review_reason": "Scripts spawn local commands and need operator review."
},
@@ -1570,7 +1574,7 @@
"secret_findings": 0,
"network_script_count": 3,
"file_write_script_count": 60,
- "subprocess_script_count": 8,
+ "subprocess_script_count": 9,
"interactive_script_count": 0,
"help_smoke_failed_count": 0
}
@@ -1590,7 +1594,7 @@
"capability_counts": {
"network": 3,
"file_write": 60,
- "subprocess": 8,
+ "subprocess": 9,
"interactive": 0
},
"evidence": "reports/security_trust_report.json",
@@ -2128,7 +2132,7 @@
},
"subprocess": {
"required": true,
- "script_count": 8,
+ "script_count": 9,
"scripts": [
"scripts/ci_test.py",
"scripts/render_benchmark_reproducibility.py",
@@ -2137,7 +2141,8 @@
"scripts/run_output_execution.py",
"scripts/sync_local_install.py",
"scripts/trust_check.py",
- "scripts/yao.py"
+ "scripts/yao.py",
+ "scripts/yao_cli_runtime.py"
],
"review_reason": "Scripts spawn local commands and need operator review."
},
@@ -2168,7 +2173,7 @@
"secret_findings": 0,
"network_script_count": 3,
"file_write_script_count": 60,
- "subprocess_script_count": 8,
+ "subprocess_script_count": 9,
"interactive_script_count": 0,
"help_smoke_failed_count": 0
}
@@ -2190,7 +2195,7 @@
"capability_counts": {
"network": 3,
"file_write": 60,
- "subprocess": 8,
+ "subprocess": 9,
"interactive": 0
},
"evidence": "reports/security_trust_report.json",
@@ -2362,7 +2367,7 @@
},
"subprocess": {
"required": true,
- "script_count": 8,
+ "script_count": 9,
"scripts": [
"scripts/ci_test.py",
"scripts/render_benchmark_reproducibility.py",
@@ -2371,7 +2376,8 @@
"scripts/run_output_execution.py",
"scripts/sync_local_install.py",
"scripts/trust_check.py",
- "scripts/yao.py"
+ "scripts/yao.py",
+ "scripts/yao_cli_runtime.py"
],
"review_reason": "Scripts spawn local commands and need operator review."
},
@@ -2402,7 +2408,7 @@
"secret_findings": 0,
"network_script_count": 3,
"file_write_script_count": 60,
- "subprocess_script_count": 8,
+ "subprocess_script_count": 9,
"interactive_script_count": 0,
"help_smoke_failed_count": 0
}
@@ -2422,7 +2428,7 @@
"capability_counts": {
"network": 3,
"file_write": 60,
- "subprocess": 8,
+ "subprocess": 9,
"interactive": 0
},
"evidence": "reports/security_trust_report.json",
@@ -2951,7 +2957,7 @@
},
"subprocess": {
"required": true,
- "script_count": 8,
+ "script_count": 9,
"scripts": [
"scripts/ci_test.py",
"scripts/render_benchmark_reproducibility.py",
@@ -2960,7 +2966,8 @@
"scripts/run_output_execution.py",
"scripts/sync_local_install.py",
"scripts/trust_check.py",
- "scripts/yao.py"
+ "scripts/yao.py",
+ "scripts/yao_cli_runtime.py"
],
"review_reason": "Scripts spawn local commands and need operator review."
},
@@ -2991,7 +2998,7 @@
"secret_findings": 0,
"network_script_count": 3,
"file_write_script_count": 60,
- "subprocess_script_count": 8,
+ "subprocess_script_count": 9,
"interactive_script_count": 0,
"help_smoke_failed_count": 0
}
@@ -3013,7 +3020,7 @@
"capability_counts": {
"network": 3,
"file_write": 60,
- "subprocess": 8,
+ "subprocess": 9,
"interactive": 0
},
"evidence": "reports/security_trust_report.json",
@@ -3185,7 +3192,7 @@
},
"subprocess": {
"required": true,
- "script_count": 8,
+ "script_count": 9,
"scripts": [
"scripts/ci_test.py",
"scripts/render_benchmark_reproducibility.py",
@@ -3194,7 +3201,8 @@
"scripts/run_output_execution.py",
"scripts/sync_local_install.py",
"scripts/trust_check.py",
- "scripts/yao.py"
+ "scripts/yao.py",
+ "scripts/yao_cli_runtime.py"
],
"review_reason": "Scripts spawn local commands and need operator review."
},
@@ -3225,7 +3233,7 @@
"secret_findings": 0,
"network_script_count": 3,
"file_write_script_count": 60,
- "subprocess_script_count": 8,
+ "subprocess_script_count": 9,
"interactive_script_count": 0,
"help_smoke_failed_count": 0
}
@@ -3245,7 +3253,7 @@
"capability_counts": {
"network": 3,
"file_write": 60,
- "subprocess": 8,
+ "subprocess": 9,
"interactive": 0
},
"evidence": "reports/security_trust_report.json",
@@ -3774,7 +3782,7 @@
},
"subprocess": {
"required": true,
- "script_count": 8,
+ "script_count": 9,
"scripts": [
"scripts/ci_test.py",
"scripts/render_benchmark_reproducibility.py",
@@ -3783,7 +3791,8 @@
"scripts/run_output_execution.py",
"scripts/sync_local_install.py",
"scripts/trust_check.py",
- "scripts/yao.py"
+ "scripts/yao.py",
+ "scripts/yao_cli_runtime.py"
],
"review_reason": "Scripts spawn local commands and need operator review."
},
@@ -3814,7 +3823,7 @@
"secret_findings": 0,
"network_script_count": 3,
"file_write_script_count": 60,
- "subprocess_script_count": 8,
+ "subprocess_script_count": 9,
"interactive_script_count": 0,
"help_smoke_failed_count": 0
}
@@ -3836,7 +3845,7 @@
"capability_counts": {
"network": 3,
"file_write": 60,
- "subprocess": 8,
+ "subprocess": 9,
"interactive": 0
},
"evidence": "reports/security_trust_report.json",
@@ -4012,7 +4021,7 @@
},
"subprocess": {
"required": true,
- "script_count": 8,
+ "script_count": 9,
"scripts": [
"scripts/ci_test.py",
"scripts/render_benchmark_reproducibility.py",
@@ -4021,7 +4030,8 @@
"scripts/run_output_execution.py",
"scripts/sync_local_install.py",
"scripts/trust_check.py",
- "scripts/yao.py"
+ "scripts/yao.py",
+ "scripts/yao_cli_runtime.py"
],
"review_reason": "Scripts spawn local commands and need operator review."
},
@@ -4052,7 +4062,7 @@
"secret_findings": 0,
"network_script_count": 3,
"file_write_script_count": 60,
- "subprocess_script_count": 8,
+ "subprocess_script_count": 9,
"interactive_script_count": 0,
"help_smoke_failed_count": 0
}
@@ -4072,7 +4082,7 @@
"capability_counts": {
"network": 3,
"file_write": 60,
- "subprocess": 8,
+ "subprocess": 9,
"interactive": 0
},
"evidence": "reports/security_trust_report.json",
diff --git a/reports/context_budget.json b/reports/context_budget.json
index 083f328..69f5eec 100644
--- a/reports/context_budget.json
+++ b/reports/context_budget.json
@@ -6,10 +6,10 @@
"context_budget_tier": "production",
"context_budget_limit": 1000,
"skill_body_tokens": 751,
- "other_text_tokens": 1081013,
+ "other_text_tokens": 1083497,
"estimated_initial_load_tokens": 944,
- "estimated_total_text_tokens": 1081764,
- "relevant_file_count": 465,
+ "estimated_total_text_tokens": 1084248,
+ "relevant_file_count": 469,
"unused_resource_dirs": [],
"quality_signal_points": 130,
"quality_density": 137.7
diff --git a/reports/install_simulation.json b/reports/install_simulation.json
index ac8329c..f62330d 100644
--- a/reports/install_simulation.json
+++ b/reports/install_simulation.json
@@ -8,7 +8,7 @@
"installed_skill_dir": "[temporary-install-root]/yao-meta-skill",
"summary": {
"archive_present": true,
- "archive_entry_count": 551,
+ "archive_entry_count": 553,
"archive_extracted": true,
"entrypoint_loaded": true,
"manifest_loaded": true,
diff --git a/reports/output_execution_runs.json b/reports/output_execution_runs.json
index 79813db..dce7348 100644
--- a/reports/output_execution_runs.json
+++ b/reports/output_execution_runs.json
@@ -34,7 +34,7 @@
"execution_mode": "command",
"model_executed": false,
"command_executed": true,
- "duration_ms": 25.92,
+ "duration_ms": 25.82,
"provider": "local-output-eval-runner",
"model": "",
"usage": {
@@ -62,7 +62,7 @@
"execution_mode": "command",
"model_executed": false,
"command_executed": true,
- "duration_ms": 25.63,
+ "duration_ms": 25.73,
"provider": "local-output-eval-runner",
"model": "",
"usage": {
@@ -113,7 +113,7 @@
"execution_mode": "command",
"model_executed": false,
"command_executed": true,
- "duration_ms": 27.26,
+ "duration_ms": 25.68,
"provider": "local-output-eval-runner",
"model": "",
"usage": {
@@ -136,7 +136,7 @@
"execution_mode": "command",
"model_executed": false,
"command_executed": true,
- "duration_ms": 29.55,
+ "duration_ms": 25.92,
"provider": "local-output-eval-runner",
"model": "",
"usage": {
@@ -164,7 +164,7 @@
"execution_mode": "command",
"model_executed": false,
"command_executed": true,
- "duration_ms": 29.51,
+ "duration_ms": 25.58,
"provider": "local-output-eval-runner",
"model": "",
"usage": {
@@ -187,7 +187,7 @@
"execution_mode": "command",
"model_executed": false,
"command_executed": true,
- "duration_ms": 29.52,
+ "duration_ms": 25.69,
"provider": "local-output-eval-runner",
"model": "",
"usage": {
@@ -214,7 +214,7 @@
"execution_mode": "command",
"model_executed": false,
"command_executed": true,
- "duration_ms": 29.37,
+ "duration_ms": 25.4,
"provider": "local-output-eval-runner",
"model": "",
"usage": {
@@ -237,7 +237,7 @@
"execution_mode": "command",
"model_executed": false,
"command_executed": true,
- "duration_ms": 29.31,
+ "duration_ms": 25.48,
"provider": "local-output-eval-runner",
"model": "",
"usage": {
@@ -266,7 +266,7 @@
"execution_mode": "command",
"model_executed": false,
"command_executed": true,
- "duration_ms": 29.01,
+ "duration_ms": 25.68,
"provider": "local-output-eval-runner",
"model": "",
"usage": {
diff --git a/reports/output_execution_runs.md b/reports/output_execution_runs.md
index f75e84f..9fa1095 100644
--- a/reports/output_execution_runs.md
+++ b/reports/output_execution_runs.md
@@ -23,16 +23,16 @@ Command runner evidence is present. This proves the eval harness executed an ext
| Case | Variant | Mode | Model | Duration ms | Tokens | Score | Status |
| --- | --- | --- | --- | ---: | ---: | ---: | --- |
-| skill-package-contract | baseline | command | local-output-eval-runner | 25.92 | 33 | 0.0 | pass |
-| skill-package-contract | with_skill | command | local-output-eval-runner | 25.63 | 73 | 100.0 | pass |
+| skill-package-contract | baseline | command | local-output-eval-runner | 25.82 | 33 | 0.0 | pass |
+| skill-package-contract | with_skill | command | local-output-eval-runner | 25.73 | 73 | 100.0 | pass |
| output-eval-expectation | baseline | command | local-output-eval-runner | 25.52 | 36 | 0.0 | pass |
-| output-eval-expectation | with_skill | command | local-output-eval-runner | 27.26 | 80 | 100.0 | pass |
-| ir-before-packaging | baseline | command | local-output-eval-runner | 29.55 | 33 | 0.0 | pass |
-| ir-before-packaging | with_skill | command | local-output-eval-runner | 29.51 | 80 | 100.0 | pass |
-| near-neighbor-boundary | baseline | command | local-output-eval-runner | 29.52 | 36 | 0.0 | pass |
-| near-neighbor-boundary | with_skill | command | local-output-eval-runner | 29.37 | 65 | 100.0 | pass |
-| file-backed-governed-package | baseline | command | local-output-eval-runner | 29.31 | 37 | 0.0 | pass |
-| file-backed-governed-package | with_skill | command | local-output-eval-runner | 29.01 | 98 | 100.0 | pass |
+| output-eval-expectation | with_skill | command | local-output-eval-runner | 25.68 | 80 | 100.0 | pass |
+| ir-before-packaging | baseline | command | local-output-eval-runner | 25.92 | 33 | 0.0 | pass |
+| ir-before-packaging | with_skill | command | local-output-eval-runner | 25.58 | 80 | 100.0 | pass |
+| near-neighbor-boundary | baseline | command | local-output-eval-runner | 25.69 | 36 | 0.0 | pass |
+| near-neighbor-boundary | with_skill | command | local-output-eval-runner | 25.4 | 65 | 100.0 | pass |
+| file-backed-governed-package | baseline | command | local-output-eval-runner | 25.48 | 37 | 0.0 | pass |
+| file-backed-governed-package | with_skill | command | local-output-eval-runner | 25.68 | 98 | 100.0 | pass |
## Next Fixes
diff --git a/reports/package_verification.json b/reports/package_verification.json
index a594079..5a077c9 100644
--- a/reports/package_verification.json
+++ b/reports/package_verification.json
@@ -8,8 +8,8 @@
"target_count": 4,
"adapter_count": 4,
"archive_present": true,
- "archive_sha256": "b258a36c15b68045a4b420c49585ac446de6b013cb43fae25f3ba562ba06fab7",
- "archive_entry_count": 551,
+ "archive_sha256": "26e0362e174968f9eaeabb4f47304f641610791bc215f4e55d675d3367448b25",
+ "archive_entry_count": 553,
"failure_count": 0,
"warning_count": 0
},
diff --git a/reports/package_verification.md b/reports/package_verification.md
index 60dfcf9..1d28f49 100644
--- a/reports/package_verification.md
+++ b/reports/package_verification.md
@@ -4,7 +4,7 @@
- Package directory: `dist`
- Targets: `4 / 4` adapters present
- Archive present: `True`
-- Archive SHA256: `b258a36c15b68045a4b420c49585ac446de6b013cb43fae25f3ba562ba06fab7`
+- Archive SHA256: `26e0362e174968f9eaeabb4f47304f641610791bc215f4e55d675d3367448b25`
- Failures: `0`
- Warnings: `0`
diff --git a/reports/python_compatibility.json b/reports/python_compatibility.json
index 89b897e..e37bc20 100644
--- a/reports/python_compatibility.json
+++ b/reports/python_compatibility.json
@@ -5,7 +5,7 @@
"root": ".",
"summary": {
"target_python": "3.11",
- "file_count": 142,
+ "file_count": 144,
"issue_count": 0,
"syntax_error_count": 0,
"fstring_311_violation_count": 0,
@@ -532,6 +532,18 @@
"issue_count": 0,
"issues": []
},
+ {
+ "path": "scripts/yao_cli_report_commands.py",
+ "ok": true,
+ "issue_count": 0,
+ "issues": []
+ },
+ {
+ "path": "scripts/yao_cli_runtime.py",
+ "ok": true,
+ "issue_count": 0,
+ "issues": []
+ },
{
"path": "scripts/yao_cli_telemetry.py",
"ok": true,
diff --git a/reports/python_compatibility.md b/reports/python_compatibility.md
index 79745b5..182cae6 100644
--- a/reports/python_compatibility.md
+++ b/reports/python_compatibility.md
@@ -6,7 +6,7 @@ Generated at: `2026-06-14`
- decision: `pass`
- target python: `3.11`
-- files scanned: `142`
+- files scanned: `144`
- issues: `0`
- syntax errors: `0`
- f-string 3.11 violations: `0`
diff --git a/reports/registry_audit.json b/reports/registry_audit.json
index f5b8c75..f21daa9 100644
--- a/reports/registry_audit.json
+++ b/reports/registry_audit.json
@@ -21,8 +21,8 @@
"trust_level": "local",
"license": "MIT",
"checksums": {
- "package_sha256": "1ce8a87e2393ee03818d16053afb68b2332cacbc2e3b400058b5bbf8c31266fa",
- "archive_sha256": "b258a36c15b68045a4b420c49585ac446de6b013cb43fae25f3ba562ba06fab7"
+ "package_sha256": "18e4ec6cd34d80c2fff0ce51a7a107f15c9dbaa5c6d4e54065aee15dbd0fb00e",
+ "archive_sha256": "26e0362e174968f9eaeabb4f47304f641610791bc215f4e55d675d3367448b25"
},
"compatibility": {
"openai": "pass",
@@ -53,7 +53,7 @@
},
"distribution": {
"archive_verified": true,
- "archive_sha256": "b258a36c15b68045a4b420c49585ac446de6b013cb43fae25f3ba562ba06fab7",
+ "archive_sha256": "26e0362e174968f9eaeabb4f47304f641610791bc215f4e55d675d3367448b25",
"package_verification": "reports/package_verification.json",
"install_simulated": true,
"install_simulation": "reports/install_simulation.json"
@@ -78,7 +78,7 @@
"vscode"
],
"package_metadata": "registry/packages/yao-meta-skill.json",
- "package_sha256": "1ce8a87e2393ee03818d16053afb68b2332cacbc2e3b400058b5bbf8c31266fa"
+ "package_sha256": "18e4ec6cd34d80c2fff0ce51a7a107f15c9dbaa5c6d4e54065aee15dbd0fb00e"
}
]
},
diff --git a/reports/registry_audit.md b/reports/registry_audit.md
index 2d0bf1a..2aabf71 100644
--- a/reports/registry_audit.md
+++ b/reports/registry_audit.md
@@ -6,8 +6,8 @@
- Maturity: `governed`
- Owner: `Yao Team`
- License: `MIT`
-- Package SHA256: `1ce8a87e2393ee03818d16053afb68b2332cacbc2e3b400058b5bbf8c31266fa`
-- Archive SHA256: `b258a36c15b68045a4b420c49585ac446de6b013cb43fae25f3ba562ba06fab7`
+- Package SHA256: `18e4ec6cd34d80c2fff0ce51a7a107f15c9dbaa5c6d4e54065aee15dbd0fb00e`
+- Archive SHA256: `26e0362e174968f9eaeabb4f47304f641610791bc215f4e55d675d3367448b25`
- Install simulated: `True`
## Compatibility
diff --git a/reports/review-studio.html b/reports/review-studio.html
index 1f1177d..c75660e 100644
--- a/reports/review-studio.html
+++ b/reports/review-studio.html
@@ -292,22 +292,22 @@
核心指标
- Skill IR2.0.05 targets in platform-neutral contract
Compiler5/5target contracts compiled from Skill IR
Output Delta100.05 cases; 1 file-backed
Exec Runs10command 10; model 0; recorded 0
Blind A/B5review pairs hide baseline vs with-skill labels
Review A/B0/5adjudication decisions; pending 5
Blueprint20/202.0 coverage; evidence pending 4
Runtime5/5target conformance pass rate
Perm Probe4/40 native enforcement targets
Trust083 scripts scanned; secrets found
Py Compat0142 files scanned for Python 3.11
Arch Debt31438 largest lines; 55 CLI handlers
Atlas512 scanned skills; route collisions
Driftlow1 metadata events; 0 missed triggers
Waivers00 gates covered; human risk decisions
Intake4/40 valid submissions; 0 invalid
Claim Guard068 public surfaces scanned
Notes0/00 open blocker annotations
Registry1.1.05 targets; MIT license
Archivepass551 zip entries; package verification
Installpass4 adapters; 12 permissions enforced; 0 permission failures
Upgrademinordeclared minor; 0 breaking changes
+ Skill IR2.0.05 targets in platform-neutral contract
Compiler5/5target contracts compiled from Skill IR
Output Delta100.05 cases; 1 file-backed
Exec Runs10command 10; model 0; recorded 0
Blind A/B5review pairs hide baseline vs with-skill labels
Review A/B0/5adjudication decisions; pending 5
Blueprint20/202.0 coverage; evidence pending 4
Runtime5/5target conformance pass rate
Perm Probe4/40 native enforcement targets
Trust085 scripts scanned; secrets found
Py Compat0144 files scanned for Python 3.11
Arch Debt31196 largest lines; 35 CLI handlers
Atlas512 scanned skills; route collisions
Driftlow1 metadata events; 0 missed triggers
Waivers00 gates covered; human risk decisions
Intake4/40 valid submissions; 0 invalid
Claim Guard068 public surfaces scanned
Notes0/00 open blocker annotations
Registry1.1.05 targets; MIT license
Archivepass553 zip entries; package verification
Installpass4 adapters; 12 permissions enforced; 0 permission failures
Upgrademinordeclared minor; 0 breaking changes
审查闸门
- 通过
意图画布
intent confidence 100/100; Intent is clear enough to package the first routeable version.
通过
触发实验
13 trigger cases; 0 misroutes; 0 ambiguous
关注
输出实验
5/5 cases; with-skill 100.0; baseline 0.0; file-backed 1; near-neighbor 1; blind A/B 5; exec 10; command 10; model 0; recorded 0; reviewed 0/5; review pending 5
通过
上下文
initial load 944/1000; quality density 137.7
通过
运行矩阵
5 / 5 targets pass
通过
信任报告
0 secrets; 83 scripts; 3 network-capable scripts; 0 help smoke failures
通过
Python 兼容
Python 3.11; 142 files; 0 compatibility issues; 0 syntax; 0 f-string 3.11 hazards
关注
架构维护
139 Python files; 3 hotspots; 0 blockers; largest 1438 lines; 55 CLI handlers
通过
权限批准
3/3 permissions approved; gaps 0; required file_write, network, subprocess
通过
权限探针
4/4 targets probed; native 0; metadata fallback 4; residual risks 4
通过
组合治理
12 skills, 1 actionable; 0 actionable route collisions; 0 actionable owner gaps; 0 actionable stale; 0 actionable drift; 24 scoped non-actionable issues
通过
运营回路
1 metadata events; adoption 0; missed 0; bad-output 0; risk low
关注
人工批准
0 active waivers; 2 warning gates still need reviewer decision
关注
世界证据
4 pending world-class evidence entries; 1 human pending; 3 external pending; overclaim guard true
通过
注册审计
yao-meta-skill 1.1.0; 6/6 compatibility entries pass; install pass with 4 adapters; installer permissions 12 enforced / 0 failures
通过
发布路线
0 promote; 3 keep current; 0 blocked; upgrade minor declared / minor recommended
+ 通过
意图画布
intent confidence 100/100; Intent is clear enough to package the first routeable version.
通过
触发实验
13 trigger cases; 0 misroutes; 0 ambiguous
关注
输出实验
5/5 cases; with-skill 100.0; baseline 0.0; file-backed 1; near-neighbor 1; blind A/B 5; exec 10; command 10; model 0; recorded 0; reviewed 0/5; review pending 5
通过
上下文
initial load 944/1000; quality density 137.7
通过
运行矩阵
5 / 5 targets pass
通过
信任报告
0 secrets; 85 scripts; 3 network-capable scripts; 0 help smoke failures
通过
Python 兼容
Python 3.11; 144 files; 0 compatibility issues; 0 syntax; 0 f-string 3.11 hazards
关注
架构维护
141 Python files; 3 hotspots; 0 blockers; largest 1196 lines; 35 CLI handlers
通过
权限批准
3/3 permissions approved; gaps 0; required file_write, network, subprocess
通过
权限探针
4/4 targets probed; native 0; metadata fallback 4; residual risks 4
通过
组合治理
12 skills, 1 actionable; 0 actionable route collisions; 0 actionable owner gaps; 0 actionable stale; 0 actionable drift; 24 scoped non-actionable issues
通过
运营回路
1 metadata events; adoption 0; missed 0; bad-output 0; risk low
关注
人工批准
0 active waivers; 2 warning gates still need reviewer decision
关注
世界证据
4 pending world-class evidence entries; 1 human pending; 3 external pending; overclaim guard true
通过
注册审计
yao-meta-skill 1.1.0; 6/6 compatibility entries pass; install pass with 4 adapters; installer permissions 12 enforced / 0 failures
通过
发布路线
0 promote; 3 keep current; 0 blocked; upgrade minor declared / minor recommended
-
关注事项
- 输出实验5/5 cases; with-skill 100.0; baseline 0.0; file-backed 1; near-neighbor 1; blind A/B 5; exec 10; command 10; model 0; recorded 0; reviewed 0/5; review pending 5
- 架构维护139 Python files; 3 hotspots; 0 blockers; largest 1438 lines; 55 CLI handlers
- 人工批准0 active waivers; 2 warning gates still need reviewer decision
- 世界证据4 pending world-class evidence entries; 1 human pending; 3 external pending; overclaim guard true
+
关注事项
- 输出实验5/5 cases; with-skill 100.0; baseline 0.0; file-backed 1; near-neighbor 1; blind A/B 5; exec 10; command 10; model 0; recorded 0; reviewed 0/5; review pending 5
- 架构维护141 Python files; 3 hotspots; 0 blockers; largest 1196 lines; 35 CLI handlers
- 人工批准0 active waivers; 2 warning gates still need reviewer decision
- 世界证据4 pending world-class evidence entries; 1 human pending; 3 external pending; overclaim guard true
修复动作
- 关注
输出实验
补足 output eval 覆盖、execution evidence、blind A/B 和 reviewer adjudication。
没有输出质量和人工盲评证据时,Skill 只能证明会触发,不能证明输出真的更好且经得起审查。- 修复位置
- evals/output/cases.jsonl + reports/output_quality_scorecard.md + reports/output_review_decisions.json + reports/output_review_adjudication.md
- 验证命令
python3 scripts/adjudicate_output_review.py --write-template && python3 scripts/yao.py output-review
关注
架构维护
处理大文件和 CLI command surface 的维护性热点,优先拆分稳定职责边界。
Meta Skill 的门禁、报告和 CLI 会持续增长;如果不把架构债纳入审查,后续能力会越来越难验证和迁移。- 修复位置
- reports/architecture_maintainability.md + scripts/yao.py + scripts/render_review_studio.py
- 验证命令
python3 scripts/yao.py architecture-audit .
关注
人工批准
对保留的 warning 写入 reviewer、理由、范围和到期时间,或修掉 warning。
warning 可以被接受,但必须可审计、会过期,并且不能掩盖 blocker。- 修复位置
- reports/review_waivers.md
- 验证命令
python3 scripts/render_review_waivers.py .
关注
世界证据
补齐 provider、真人盲评、原生权限执行和真实客户端遥测证据,或明确本次发布不声明 world-class 完成。
世界级结论必须来自已接受的外部/人工证据;计划、metadata fallback、待评审和本地命令都不能替代完成证据。- 修复位置
- reports/world_class_evidence_ledger.md + reports/world_class_evidence_plan.md + reports/world_class_evidence_intake.md
- 验证命令
python3 scripts/yao.py world-class-ledger . && python3 scripts/yao.py review-studio .
+ 关注
输出实验
补足 output eval 覆盖、execution evidence、blind A/B 和 reviewer adjudication。
没有输出质量和人工盲评证据时,Skill 只能证明会触发,不能证明输出真的更好且经得起审查。- 修复位置
- evals/output/cases.jsonl + reports/output_quality_scorecard.md + reports/output_review_decisions.json + reports/output_review_adjudication.md
- 验证命令
python3 scripts/adjudicate_output_review.py --write-template && python3 scripts/yao.py output-review
关注
架构维护
处理大文件和 CLI command surface 的维护性热点,优先拆分稳定职责边界。
Meta Skill 的门禁、报告和 CLI 会持续增长;如果不把架构债纳入审查,后续能力会越来越难验证和迁移。- 修复位置
- reports/architecture_maintainability.md + scripts/yao.py + scripts/render_review_studio.py
- 验证命令
python3 scripts/yao.py architecture-audit .
关注
人工批准
对保留的 warning 写入 reviewer、理由、范围和到期时间,或修掉 warning。
warning 可以被接受,但必须可审计、会过期,并且不能掩盖 blocker。- 修复位置
- reports/review_waivers.md
- 验证命令
python3 scripts/render_review_waivers.py .
关注
世界证据
补齐 provider、真人盲评、原生权限执行和真实客户端遥测证据,或明确本次发布不声明 world-class 完成。
世界级结论必须来自已接受的外部/人工证据;计划、metadata fallback、待评审和本地命令都不能替代完成证据。- 修复位置
- reports/world_class_evidence_ledger.md + reports/world_class_evidence_plan.md + reports/world_class_evidence_intake.md
- 验证命令
python3 scripts/yao.py world-class-ledger . && python3 scripts/yao.py review-studio .
- 信任报告
- Secret
- 0
- 脚本数
- 83
- 网络脚本
- 3
- Help 失败
- 0
- 包体哈希
1ce8a87e2393ee03818d16053afb68b2332cacbc2e3b400058b5bbf8c31266fa
+ 信任报告
- Secret
- 0
- 脚本数
- 85
- 网络脚本
- 3
- Help 失败
- 0
- 包体哈希
18e4ec6cd34d80c2fff0ce51a7a107f15c9dbaa5c6d4e54065aee15dbd0fb00e
安全边界
高风险 secret、远程 inline execution、缺失依赖策略或无法解释的脚本接口应阻断 governed release。
- Python 兼容
- 目标 Python
- 3.11
- 文件数
- 142
- 问题数
- 0
- 语法错误
- 0
- F-string 3.11
- 0
+ Python 兼容
- 目标 Python
- 3.11
- 文件数
- 144
- 问题数
- 0
- 语法错误
- 0
- F-string 3.11
- 0
解释器边界
CI 和发布审查以 Python 3.11 兼容为底线;本地更高版本允许的新语法不能绕过兼容门禁。
@@ -425,12 +425,12 @@
注册审计
yao-meta-skill 1.1.0; 6/6 compatibility entries pass; install pass with 4 adapters; installer permissions 12 enforced / 0 failures
- 包体元数据
- 名称
- yao-meta-skill
- 版本
- 1.1.0
- Maturity
- governed
- Owner
- Yao Team
- License
- MIT
- 信任级别
- local
- 目标平台
- openai, claude, generic, agent-skills-compatible, vscode
- 兼容通过
- 6/6
- 归档哈希
b258a36c15b68045a4b420c49585ac446de6b013cb43fae25f3ba562ba06fab7
+ 包体元数据
- 名称
- yao-meta-skill
- 版本
- 1.1.0
- Maturity
- governed
- Owner
- Yao Team
- License
- MIT
- 信任级别
- local
- 目标平台
- openai, claude, generic, agent-skills-compatible, vscode
- 兼容通过
- 6/6
- 归档哈希
26e0362e174968f9eaeabb4f47304f641610791bc215f4e55d675d3367448b25
发布路线
0 promote; 3 keep current; 0 blocked; upgrade minor declared / minor recommended
- 包体验证
- 目标数
- 4
- Adapter
- 4
- 归档存在
- 是
- Zip 条目
- 551
- 失败数
- 0
- 警告数
- 0
- 归档哈希
b258a36c15b68045a4b420c49585ac446de6b013cb43fae25f3ba562ba06fab7
+ 包体验证
- 目标数
- 4
- Adapter
- 4
- 归档存在
- 是
- Zip 条目
- 553
- 失败数
- 0
- 警告数
- 0
- 归档哈希
26e0362e174968f9eaeabb4f47304f641610791bc215f4e55d675d3367448b25
diff --git a/reports/review-studio.json b/reports/review-studio.json
index 9829460..37c222d 100644
--- a/reports/review-studio.json
+++ b/reports/review-studio.json
@@ -59,7 +59,7 @@
"key": "trust-report",
"label": "信任报告",
"status": "pass",
- "detail": "0 secrets; 83 scripts; 3 network-capable scripts; 0 help smoke failures",
+ "detail": "0 secrets; 85 scripts; 3 network-capable scripts; 0 help smoke failures",
"evidence": "reports/security_trust_report.json",
"link": "security_trust_report.md"
},
@@ -67,7 +67,7 @@
"key": "python-compat",
"label": "Python 兼容",
"status": "pass",
- "detail": "Python 3.11; 142 files; 0 compatibility issues; 0 syntax; 0 f-string 3.11 hazards",
+ "detail": "Python 3.11; 144 files; 0 compatibility issues; 0 syntax; 0 f-string 3.11 hazards",
"evidence": "reports/python_compatibility.json",
"link": "python_compatibility.md"
},
@@ -75,7 +75,7 @@
"key": "architecture-maintainability",
"label": "架构维护",
"status": "warn",
- "detail": "139 Python files; 3 hotspots; 0 blockers; largest 1438 lines; 55 CLI handlers",
+ "detail": "141 Python files; 3 hotspots; 0 blockers; largest 1196 lines; 35 CLI handlers",
"evidence": "reports/architecture_maintainability.json",
"link": "architecture_maintainability.md"
},
@@ -158,7 +158,7 @@
"key": "architecture-maintainability",
"label": "架构维护",
"status": "warn",
- "detail": "139 Python files; 3 hotspots; 0 blockers; largest 1438 lines; 55 CLI handlers",
+ "detail": "141 Python files; 3 hotspots; 0 blockers; largest 1196 lines; 35 CLI handlers",
"evidence": "reports/architecture_maintainability.json",
"link": "architecture_maintainability.md"
},
@@ -263,7 +263,7 @@
"path": "scripts/yao.py",
"label": "Yao CLI orchestrator",
"kind": "source",
- "line": 124,
+ "line": 111,
"exists": true,
"link": "../scripts/yao.py"
},
@@ -891,7 +891,7 @@
"path": "scripts",
"label": "Deterministic helpers or local tooling",
"kind": "folder",
- "file_count": 82
+ "file_count": 85
},
{
"path": "evals",
@@ -903,10 +903,10 @@
"path": "reports",
"label": "Generated evidence and overview artifacts",
"kind": "folder",
- "file_count": 193
+ "file_count": 195
}
],
- "file_count": 339,
+ "file_count": 344,
"folder_count": 4,
"distribution": [
{
@@ -931,7 +931,7 @@
},
{
"label": "scripts",
- "value": 82
+ "value": 85
},
{
"label": "evals",
@@ -939,7 +939,7 @@
},
{
"label": "reports",
- "value": 193
+ "value": 195
}
]
},
@@ -1060,7 +1060,7 @@
"path": "scripts",
"label": "Deterministic helpers or local tooling",
"kind": "folder",
- "file_count": 82
+ "file_count": 85
},
{
"path": "evals",
@@ -1072,7 +1072,7 @@
"path": "reports",
"label": "Generated evidence and overview artifacts",
"kind": "folder",
- "file_count": 193
+ "file_count": 195
}
],
"strengths": [
@@ -1360,9 +1360,9 @@
"world_class_task_count": 4,
"world_class_ledger_pending_count": 4,
"working_tree_dirty": true,
- "changed_file_count": 35
+ "changed_file_count": 36
},
- "commit": "4737358f3c7acb6650d5463793e5f0e8f913aada",
+ "commit": "7afde5ebafd5b8cb0b00aaaac4943c037fc9dce4",
"missing_artifacts": [],
"limitations": [
"Local command-runner evidence is reproducible but does not replace provider-backed model holdout evidence.",
@@ -1437,9 +1437,9 @@
"failures": []
},
"trust_security": {
- "scanned_files": 166,
- "script_count": 82,
- "internal_module_count": 10,
+ "scanned_files": 169,
+ "script_count": 85,
+ "internal_module_count": 12,
"secret_findings": 0,
"dependency_files": [
"requirements-ci.txt"
@@ -1447,18 +1447,18 @@
"network_script_count": 3,
"network_policy_covered_count": 3,
"network_policy_missing_count": 0,
- "file_write_script_count": 59,
+ "file_write_script_count": 60,
"permission_required_count": 3,
"permission_approved_count": 3,
"permission_missing_count": 0,
"permission_invalid_count": 0,
"permission_expired_count": 0,
- "help_smoke_checked_count": 72,
+ "help_smoke_checked_count": 73,
"help_smoke_failed_count": 0,
"interactive_script_count": 0,
"package_hash_scope": "source-contract-without-generated-reports",
- "package_hash_file_count": 166,
- "package_sha256": "e377e8c99c14f87933224d1abebbe9d5d971fd852e1f3fe9b2a4a80861e90723"
+ "package_hash_file_count": 169,
+ "package_sha256": "18e4ec6cd34d80c2fff0ce51a7a107f15c9dbaa5c6d4e54065aee15dbd0fb00e"
},
"skill_atlas": {
"skill_count": 12,
@@ -1496,8 +1496,8 @@
"trust_level": "local",
"license": "MIT",
"checksums": {
- "package_sha256": "e377e8c99c14f87933224d1abebbe9d5d971fd852e1f3fe9b2a4a80861e90723",
- "archive_sha256": "d879a6c6c16f91854dae70c114fa6cea05aeb423d8d11918e2a3f87930ed1bf2"
+ "package_sha256": "18e4ec6cd34d80c2fff0ce51a7a107f15c9dbaa5c6d4e54065aee15dbd0fb00e",
+ "archive_sha256": "26e0362e174968f9eaeabb4f47304f641610791bc215f4e55d675d3367448b25"
},
"compatibility": {
"openai": "pass",
@@ -1528,7 +1528,7 @@
},
"distribution": {
"archive_verified": true,
- "archive_sha256": "d879a6c6c16f91854dae70c114fa6cea05aeb423d8d11918e2a3f87930ed1bf2",
+ "archive_sha256": "26e0362e174968f9eaeabb4f47304f641610791bc215f4e55d675d3367448b25",
"package_verification": "reports/package_verification.json",
"install_simulated": true,
"install_simulation": "reports/install_simulation.json"
@@ -1544,8 +1544,8 @@
"target_count": 4,
"adapter_count": 4,
"archive_present": true,
- "archive_sha256": "d879a6c6c16f91854dae70c114fa6cea05aeb423d8d11918e2a3f87930ed1bf2",
- "archive_entry_count": 547,
+ "archive_sha256": "26e0362e174968f9eaeabb4f47304f641610791bc215f4e55d675d3367448b25",
+ "archive_entry_count": 553,
"failure_count": 0,
"warning_count": 0
},
@@ -1556,7 +1556,7 @@
"ok": true,
"summary": {
"archive_present": true,
- "archive_entry_count": 547,
+ "archive_entry_count": 553,
"archive_extracted": true,
"entrypoint_loaded": true,
"manifest_loaded": true,
@@ -1623,12 +1623,12 @@
{
"field": "archive_sha256",
"from": "",
- "to": "d879a6c6c16f91854dae70c114fa6cea05aeb423d8d11918e2a3f87930ed1bf2"
+ "to": "26e0362e174968f9eaeabb4f47304f641610791bc215f4e55d675d3367448b25"
},
{
"field": "package_sha256",
"from": "0000000000000000000000000000000000000000000000000000000000000000",
- "to": "e377e8c99c14f87933224d1abebbe9d5d971fd852e1f3fe9b2a4a80861e90723"
+ "to": "18e4ec6cd34d80c2fff0ce51a7a107f15c9dbaa5c6d4e54065aee15dbd0fb00e"
}
]
},
@@ -3745,7 +3745,7 @@
"execution_mode": "command",
"model_executed": false,
"command_executed": true,
- "duration_ms": 25.92,
+ "duration_ms": 25.82,
"provider": "local-output-eval-runner",
"model": "",
"usage": {
@@ -3773,7 +3773,7 @@
"execution_mode": "command",
"model_executed": false,
"command_executed": true,
- "duration_ms": 25.63,
+ "duration_ms": 25.73,
"provider": "local-output-eval-runner",
"model": "",
"usage": {
@@ -3824,7 +3824,7 @@
"execution_mode": "command",
"model_executed": false,
"command_executed": true,
- "duration_ms": 27.26,
+ "duration_ms": 25.68,
"provider": "local-output-eval-runner",
"model": "",
"usage": {
@@ -3847,7 +3847,7 @@
"execution_mode": "command",
"model_executed": false,
"command_executed": true,
- "duration_ms": 29.55,
+ "duration_ms": 25.92,
"provider": "local-output-eval-runner",
"model": "",
"usage": {
@@ -3875,7 +3875,7 @@
"execution_mode": "command",
"model_executed": false,
"command_executed": true,
- "duration_ms": 29.51,
+ "duration_ms": 25.58,
"provider": "local-output-eval-runner",
"model": "",
"usage": {
@@ -3898,7 +3898,7 @@
"execution_mode": "command",
"model_executed": false,
"command_executed": true,
- "duration_ms": 29.52,
+ "duration_ms": 25.69,
"provider": "local-output-eval-runner",
"model": "",
"usage": {
@@ -3925,7 +3925,7 @@
"execution_mode": "command",
"model_executed": false,
"command_executed": true,
- "duration_ms": 29.37,
+ "duration_ms": 25.4,
"provider": "local-output-eval-runner",
"model": "",
"usage": {
@@ -3948,7 +3948,7 @@
"execution_mode": "command",
"model_executed": false,
"command_executed": true,
- "duration_ms": 29.31,
+ "duration_ms": 25.48,
"provider": "local-output-eval-runner",
"model": "",
"usage": {
@@ -3977,7 +3977,7 @@
"execution_mode": "command",
"model_executed": false,
"command_executed": true,
- "duration_ms": 29.01,
+ "duration_ms": 25.68,
"provider": "local-output-eval-runner",
"model": "",
"usage": {
@@ -4408,7 +4408,7 @@
"label": "Trust Security",
"status": "pass",
"objective": "Scripts, dependencies, permissions, secrets, and package hash are reviewable for team distribution.",
- "current": "83 scripts; secrets 0; help failures 0",
+ "current": "85 scripts; secrets 0; help failures 0",
"command": "python3 scripts/yao.py trust .",
"test": "python3 tests/verify_trust_check.py",
"evidence": [
@@ -4482,7 +4482,7 @@
"label": "Registry Distribution",
"status": "pass",
"objective": "Skill packages are installable, versioned, checksumed, and upgrade-reviewable.",
- "current": "archive entries 551; install failures 0",
+ "current": "archive entries 553; install failures 0",
"command": "python3 scripts/yao.py package . --platform openai --platform claude --platform generic --platform vscode --output-dir dist --zip && python3 scripts/yao.py registry-audit .",
"test": "python3 tests/verify_registry_audit.py",
"evidence": [
@@ -5352,7 +5352,7 @@
},
"subprocess": {
"required": true,
- "script_count": 8,
+ "script_count": 9,
"scripts": [
"scripts/ci_test.py",
"scripts/render_benchmark_reproducibility.py",
@@ -5361,7 +5361,8 @@
"scripts/run_output_execution.py",
"scripts/sync_local_install.py",
"scripts/trust_check.py",
- "scripts/yao.py"
+ "scripts/yao.py",
+ "scripts/yao_cli_runtime.py"
],
"review_reason": "Scripts spawn local commands and need operator review."
},
@@ -5392,7 +5393,7 @@
"secret_findings": 0,
"network_script_count": 3,
"file_write_script_count": 60,
- "subprocess_script_count": 8,
+ "subprocess_script_count": 9,
"interactive_script_count": 0,
"help_smoke_failed_count": 0
}
@@ -5414,7 +5415,7 @@
"capability_counts": {
"network": 3,
"file_write": 60,
- "subprocess": 8,
+ "subprocess": 9,
"interactive": 0
},
"evidence": "reports/security_trust_report.json",
@@ -5593,7 +5594,7 @@
},
"subprocess": {
"required": true,
- "script_count": 8,
+ "script_count": 9,
"scripts": [
"scripts/ci_test.py",
"scripts/render_benchmark_reproducibility.py",
@@ -5602,7 +5603,8 @@
"scripts/run_output_execution.py",
"scripts/sync_local_install.py",
"scripts/trust_check.py",
- "scripts/yao.py"
+ "scripts/yao.py",
+ "scripts/yao_cli_runtime.py"
],
"review_reason": "Scripts spawn local commands and need operator review."
},
@@ -5633,7 +5635,7 @@
"secret_findings": 0,
"network_script_count": 3,
"file_write_script_count": 60,
- "subprocess_script_count": 8,
+ "subprocess_script_count": 9,
"interactive_script_count": 0,
"help_smoke_failed_count": 0
}
@@ -5653,7 +5655,7 @@
"capability_counts": {
"network": 3,
"file_write": 60,
- "subprocess": 8,
+ "subprocess": 9,
"interactive": 0
},
"evidence": "reports/security_trust_report.json",
@@ -6191,7 +6193,7 @@
},
"subprocess": {
"required": true,
- "script_count": 8,
+ "script_count": 9,
"scripts": [
"scripts/ci_test.py",
"scripts/render_benchmark_reproducibility.py",
@@ -6200,7 +6202,8 @@
"scripts/run_output_execution.py",
"scripts/sync_local_install.py",
"scripts/trust_check.py",
- "scripts/yao.py"
+ "scripts/yao.py",
+ "scripts/yao_cli_runtime.py"
],
"review_reason": "Scripts spawn local commands and need operator review."
},
@@ -6231,7 +6234,7 @@
"secret_findings": 0,
"network_script_count": 3,
"file_write_script_count": 60,
- "subprocess_script_count": 8,
+ "subprocess_script_count": 9,
"interactive_script_count": 0,
"help_smoke_failed_count": 0
}
@@ -6253,7 +6256,7 @@
"capability_counts": {
"network": 3,
"file_write": 60,
- "subprocess": 8,
+ "subprocess": 9,
"interactive": 0
},
"evidence": "reports/security_trust_report.json",
@@ -6432,7 +6435,7 @@
},
"subprocess": {
"required": true,
- "script_count": 8,
+ "script_count": 9,
"scripts": [
"scripts/ci_test.py",
"scripts/render_benchmark_reproducibility.py",
@@ -6441,7 +6444,8 @@
"scripts/run_output_execution.py",
"scripts/sync_local_install.py",
"scripts/trust_check.py",
- "scripts/yao.py"
+ "scripts/yao.py",
+ "scripts/yao_cli_runtime.py"
],
"review_reason": "Scripts spawn local commands and need operator review."
},
@@ -6472,7 +6476,7 @@
"secret_findings": 0,
"network_script_count": 3,
"file_write_script_count": 60,
- "subprocess_script_count": 8,
+ "subprocess_script_count": 9,
"interactive_script_count": 0,
"help_smoke_failed_count": 0
}
@@ -6492,7 +6496,7 @@
"capability_counts": {
"network": 3,
"file_write": 60,
- "subprocess": 8,
+ "subprocess": 9,
"interactive": 0
},
"evidence": "reports/security_trust_report.json",
@@ -7030,7 +7034,7 @@
},
"subprocess": {
"required": true,
- "script_count": 8,
+ "script_count": 9,
"scripts": [
"scripts/ci_test.py",
"scripts/render_benchmark_reproducibility.py",
@@ -7039,7 +7043,8 @@
"scripts/run_output_execution.py",
"scripts/sync_local_install.py",
"scripts/trust_check.py",
- "scripts/yao.py"
+ "scripts/yao.py",
+ "scripts/yao_cli_runtime.py"
],
"review_reason": "Scripts spawn local commands and need operator review."
},
@@ -7070,7 +7075,7 @@
"secret_findings": 0,
"network_script_count": 3,
"file_write_script_count": 60,
- "subprocess_script_count": 8,
+ "subprocess_script_count": 9,
"interactive_script_count": 0,
"help_smoke_failed_count": 0
}
@@ -7092,7 +7097,7 @@
"capability_counts": {
"network": 3,
"file_write": 60,
- "subprocess": 8,
+ "subprocess": 9,
"interactive": 0
},
"evidence": "reports/security_trust_report.json",
@@ -7264,7 +7269,7 @@
},
"subprocess": {
"required": true,
- "script_count": 8,
+ "script_count": 9,
"scripts": [
"scripts/ci_test.py",
"scripts/render_benchmark_reproducibility.py",
@@ -7273,7 +7278,8 @@
"scripts/run_output_execution.py",
"scripts/sync_local_install.py",
"scripts/trust_check.py",
- "scripts/yao.py"
+ "scripts/yao.py",
+ "scripts/yao_cli_runtime.py"
],
"review_reason": "Scripts spawn local commands and need operator review."
},
@@ -7304,7 +7310,7 @@
"secret_findings": 0,
"network_script_count": 3,
"file_write_script_count": 60,
- "subprocess_script_count": 8,
+ "subprocess_script_count": 9,
"interactive_script_count": 0,
"help_smoke_failed_count": 0
}
@@ -7324,7 +7330,7 @@
"capability_counts": {
"network": 3,
"file_write": 60,
- "subprocess": 8,
+ "subprocess": 9,
"interactive": 0
},
"evidence": "reports/security_trust_report.json",
@@ -7853,7 +7859,7 @@
},
"subprocess": {
"required": true,
- "script_count": 8,
+ "script_count": 9,
"scripts": [
"scripts/ci_test.py",
"scripts/render_benchmark_reproducibility.py",
@@ -7862,7 +7868,8 @@
"scripts/run_output_execution.py",
"scripts/sync_local_install.py",
"scripts/trust_check.py",
- "scripts/yao.py"
+ "scripts/yao.py",
+ "scripts/yao_cli_runtime.py"
],
"review_reason": "Scripts spawn local commands and need operator review."
},
@@ -7893,7 +7900,7 @@
"secret_findings": 0,
"network_script_count": 3,
"file_write_script_count": 60,
- "subprocess_script_count": 8,
+ "subprocess_script_count": 9,
"interactive_script_count": 0,
"help_smoke_failed_count": 0
}
@@ -7915,7 +7922,7 @@
"capability_counts": {
"network": 3,
"file_write": 60,
- "subprocess": 8,
+ "subprocess": 9,
"interactive": 0
},
"evidence": "reports/security_trust_report.json",
@@ -8087,7 +8094,7 @@
},
"subprocess": {
"required": true,
- "script_count": 8,
+ "script_count": 9,
"scripts": [
"scripts/ci_test.py",
"scripts/render_benchmark_reproducibility.py",
@@ -8096,7 +8103,8 @@
"scripts/run_output_execution.py",
"scripts/sync_local_install.py",
"scripts/trust_check.py",
- "scripts/yao.py"
+ "scripts/yao.py",
+ "scripts/yao_cli_runtime.py"
],
"review_reason": "Scripts spawn local commands and need operator review."
},
@@ -8127,7 +8135,7 @@
"secret_findings": 0,
"network_script_count": 3,
"file_write_script_count": 60,
- "subprocess_script_count": 8,
+ "subprocess_script_count": 9,
"interactive_script_count": 0,
"help_smoke_failed_count": 0
}
@@ -8147,7 +8155,7 @@
"capability_counts": {
"network": 3,
"file_write": 60,
- "subprocess": 8,
+ "subprocess": 9,
"interactive": 0
},
"evidence": "reports/security_trust_report.json",
@@ -8676,7 +8684,7 @@
},
"subprocess": {
"required": true,
- "script_count": 8,
+ "script_count": 9,
"scripts": [
"scripts/ci_test.py",
"scripts/render_benchmark_reproducibility.py",
@@ -8685,7 +8693,8 @@
"scripts/run_output_execution.py",
"scripts/sync_local_install.py",
"scripts/trust_check.py",
- "scripts/yao.py"
+ "scripts/yao.py",
+ "scripts/yao_cli_runtime.py"
],
"review_reason": "Scripts spawn local commands and need operator review."
},
@@ -8716,7 +8725,7 @@
"secret_findings": 0,
"network_script_count": 3,
"file_write_script_count": 60,
- "subprocess_script_count": 8,
+ "subprocess_script_count": 9,
"interactive_script_count": 0,
"help_smoke_failed_count": 0
}
@@ -8738,7 +8747,7 @@
"capability_counts": {
"network": 3,
"file_write": 60,
- "subprocess": 8,
+ "subprocess": 9,
"interactive": 0
},
"evidence": "reports/security_trust_report.json",
@@ -8914,7 +8923,7 @@
},
"subprocess": {
"required": true,
- "script_count": 8,
+ "script_count": 9,
"scripts": [
"scripts/ci_test.py",
"scripts/render_benchmark_reproducibility.py",
@@ -8923,7 +8932,8 @@
"scripts/run_output_execution.py",
"scripts/sync_local_install.py",
"scripts/trust_check.py",
- "scripts/yao.py"
+ "scripts/yao.py",
+ "scripts/yao_cli_runtime.py"
],
"review_reason": "Scripts spawn local commands and need operator review."
},
@@ -8954,7 +8964,7 @@
"secret_findings": 0,
"network_script_count": 3,
"file_write_script_count": 60,
- "subprocess_script_count": 8,
+ "subprocess_script_count": 9,
"interactive_script_count": 0,
"help_smoke_failed_count": 0
}
@@ -8974,7 +8984,7 @@
"capability_counts": {
"network": 3,
"file_write": 60,
- "subprocess": 8,
+ "subprocess": 9,
"interactive": 0
},
"evidence": "reports/security_trust_report.json",
@@ -9645,9 +9655,9 @@
"ok": true,
"skill_dir": ".",
"summary": {
- "scanned_files": 167,
- "script_count": 83,
- "internal_module_count": 10,
+ "scanned_files": 169,
+ "script_count": 85,
+ "internal_module_count": 12,
"secret_findings": 0,
"dependency_files": [
"requirements-ci.txt"
@@ -9665,8 +9675,8 @@
"help_smoke_failed_count": 0,
"interactive_script_count": 0,
"package_hash_scope": "source-contract-without-generated-reports",
- "package_hash_file_count": 167,
- "package_sha256": "1ce8a87e2393ee03818d16053afb68b2332cacbc2e3b400058b5bbf8c31266fa"
+ "package_hash_file_count": 169,
+ "package_sha256": "18e4ec6cd34d80c2fff0ce51a7a107f15c9dbaa5c6d4e54065aee15dbd0fb00e"
},
"failures": [],
"warnings": [],
@@ -10837,6 +10847,34 @@
"network_urls": [],
"network_hosts": []
},
+ {
+ "path": "scripts/yao_cli_report_commands.py",
+ "interface": "internal-module",
+ "interface_declared": true,
+ "interface_reason": "Imported by yao.py to keep report and evidence command handlers out of the CLI orchestrator.",
+ "has_argparse": true,
+ "has_main_guard": false,
+ "uses_input": false,
+ "uses_network": false,
+ "uses_file_write": false,
+ "uses_subprocess": false,
+ "network_urls": [],
+ "network_hosts": []
+ },
+ {
+ "path": "scripts/yao_cli_runtime.py",
+ "interface": "internal-module",
+ "interface_declared": true,
+ "interface_reason": "Imported by yao.py and command modules for shared subprocess execution and JSON payload parsing.",
+ "has_argparse": false,
+ "has_main_guard": false,
+ "uses_input": false,
+ "uses_network": false,
+ "uses_file_write": false,
+ "uses_subprocess": true,
+ "network_urls": [],
+ "network_hosts": []
+ },
{
"path": "scripts/yao_cli_telemetry.py",
"interface": "internal-module",
@@ -10886,7 +10924,7 @@
"checked_count": 73,
"passed_count": 73,
"failed_count": 0,
- "skipped_count": 10,
+ "skipped_count": 12,
"failed_scripts": [],
"results": [
{
@@ -11657,6 +11695,14 @@
"path": "scripts/yao_cli_parser.py",
"reason": "internal module"
},
+ {
+ "path": "scripts/yao_cli_report_commands.py",
+ "reason": "internal module"
+ },
+ {
+ "path": "scripts/yao_cli_runtime.py",
+ "reason": "internal module"
+ },
{
"path": "scripts/yao_cli_telemetry.py",
"reason": "internal module"
@@ -11804,7 +11850,8 @@
"scripts/run_output_execution.py",
"scripts/sync_local_install.py",
"scripts/trust_check.py",
- "scripts/yao.py"
+ "scripts/yao.py",
+ "scripts/yao_cli_runtime.py"
],
"reviewer": "Yao Team",
"scope": "Local deterministic validation, packaging, install simulation, and CI orchestration commands.",
@@ -11841,7 +11888,7 @@
"root": ".",
"summary": {
"target_python": "3.11",
- "file_count": 142,
+ "file_count": 144,
"issue_count": 0,
"syntax_error_count": 0,
"fstring_311_violation_count": 0,
@@ -12368,6 +12415,18 @@
"issue_count": 0,
"issues": []
},
+ {
+ "path": "scripts/yao_cli_report_commands.py",
+ "ok": true,
+ "issue_count": 0,
+ "issues": []
+ },
+ {
+ "path": "scripts/yao_cli_runtime.py",
+ "ok": true,
+ "issue_count": 0,
+ "issues": []
+ },
{
"path": "scripts/yao_cli_telemetry.py",
"ok": true,
@@ -12723,27 +12782,20 @@
"generated_at": "2026-06-14",
"skill_dir": ".",
"summary": {
- "python_file_count": 139,
- "script_file_count": 83,
+ "python_file_count": 141,
+ "script_file_count": 85,
"test_file_count": 56,
- "internal_module_count": 12,
+ "internal_module_count": 14,
"cli_script_count": 72,
- "command_handler_count": 55,
+ "command_handler_count": 35,
"warn_line_threshold": 900,
"block_line_threshold": 1500,
- "largest_file_lines": 1438,
+ "largest_file_lines": 1196,
"hotspot_count": 3,
"blocker_count": 0,
"decision": "watch-maintainability-hotspots"
},
"largest_files": [
- {
- "path": "scripts/yao.py",
- "lines": 1438,
- "kind": "cli-script",
- "severity": "warn",
- "recommendation": "Split command handlers by domain while keeping scripts/yao.py as the thin CLI orchestrator."
- },
{
"path": "scripts/render_review_studio.py",
"lines": 1196,
@@ -12751,6 +12803,13 @@
"severity": "warn",
"recommendation": "Move data loading and large section renderers into focused review_studio_* modules."
},
+ {
+ "path": "scripts/yao.py",
+ "lines": 1159,
+ "kind": "cli-script",
+ "severity": "warn",
+ "recommendation": "Split command handlers by domain while keeping scripts/yao.py as the thin CLI orchestrator."
+ },
{
"path": "scripts/render_review_viewer.py",
"lines": 983,
@@ -12760,7 +12819,7 @@
},
{
"path": "tests/verify_yao_cli.py",
- "lines": 833,
+ "lines": 838,
"kind": "test",
"severity": "pass",
"recommendation": "Break broad integration assertions into focused verifier helpers when the next behavior change lands."
@@ -12823,13 +12882,6 @@
}
],
"hotspots": [
- {
- "path": "scripts/yao.py",
- "lines": 1438,
- "kind": "cli-script",
- "severity": "warn",
- "recommendation": "Split command handlers by domain while keeping scripts/yao.py as the thin CLI orchestrator."
- },
{
"path": "scripts/render_review_studio.py",
"lines": 1196,
@@ -12837,6 +12889,13 @@
"severity": "warn",
"recommendation": "Move data loading and large section renderers into focused review_studio_* modules."
},
+ {
+ "path": "scripts/yao.py",
+ "lines": 1159,
+ "kind": "cli-script",
+ "severity": "warn",
+ "recommendation": "Split command handlers by domain while keeping scripts/yao.py as the thin CLI orchestrator."
+ },
{
"path": "scripts/render_review_viewer.py",
"lines": 983,
@@ -12846,16 +12905,16 @@
}
],
"actions": [
- {
- "path": "scripts/yao.py",
- "severity": "warn",
- "action": "Split command handlers by domain while keeping scripts/yao.py as the thin CLI orchestrator."
- },
{
"path": "scripts/render_review_studio.py",
"severity": "warn",
"action": "Move data loading and large section renderers into focused review_studio_* modules."
},
+ {
+ "path": "scripts/yao.py",
+ "severity": "warn",
+ "action": "Split command handlers by domain while keeping scripts/yao.py as the thin CLI orchestrator."
+ },
{
"path": "scripts/render_review_viewer.py",
"severity": "warn",
@@ -12875,10 +12934,10 @@
"context_budget_tier": "production",
"context_budget_limit": 1000,
"skill_body_tokens": 751,
- "other_text_tokens": 1081013,
+ "other_text_tokens": 1083497,
"estimated_initial_load_tokens": 944,
- "estimated_total_text_tokens": 1081764,
- "relevant_file_count": 465,
+ "estimated_total_text_tokens": 1084248,
+ "relevant_file_count": 469,
"unused_resource_dirs": [],
"quality_signal_points": 130,
"quality_density": 137.7
@@ -13824,6 +13883,8 @@
"scripts/yao.py",
"scripts/yao_cli_config.py",
"scripts/yao_cli_parser.py",
+ "scripts/yao_cli_report_commands.py",
+ "scripts/yao_cli_runtime.py",
"scripts/yao_cli_telemetry.py",
"references/artifact-design-doctrine.md",
"references/authoring-discipline.md",
@@ -14720,7 +14781,7 @@
"adoption_drift": {
"ok": true,
"schema_version": "2.0",
- "generated_at": "2026-06-13T17:49:00Z",
+ "generated_at": "2026-06-13T18:04:28Z",
"skill_dir": ".",
"privacy_contract": {
"storage": "local-first",
@@ -15494,8 +15555,8 @@
"trust_level": "local",
"license": "MIT",
"checksums": {
- "package_sha256": "1ce8a87e2393ee03818d16053afb68b2332cacbc2e3b400058b5bbf8c31266fa",
- "archive_sha256": "b258a36c15b68045a4b420c49585ac446de6b013cb43fae25f3ba562ba06fab7"
+ "package_sha256": "18e4ec6cd34d80c2fff0ce51a7a107f15c9dbaa5c6d4e54065aee15dbd0fb00e",
+ "archive_sha256": "26e0362e174968f9eaeabb4f47304f641610791bc215f4e55d675d3367448b25"
},
"compatibility": {
"openai": "pass",
@@ -15526,7 +15587,7 @@
},
"distribution": {
"archive_verified": true,
- "archive_sha256": "b258a36c15b68045a4b420c49585ac446de6b013cb43fae25f3ba562ba06fab7",
+ "archive_sha256": "26e0362e174968f9eaeabb4f47304f641610791bc215f4e55d675d3367448b25",
"package_verification": "reports/package_verification.json",
"install_simulated": true,
"install_simulation": "reports/install_simulation.json"
@@ -15551,7 +15612,7 @@
"vscode"
],
"package_metadata": "registry/packages/yao-meta-skill.json",
- "package_sha256": "1ce8a87e2393ee03818d16053afb68b2332cacbc2e3b400058b5bbf8c31266fa"
+ "package_sha256": "18e4ec6cd34d80c2fff0ce51a7a107f15c9dbaa5c6d4e54065aee15dbd0fb00e"
}
]
},
@@ -15574,8 +15635,8 @@
"target_count": 4,
"adapter_count": 4,
"archive_present": true,
- "archive_sha256": "b258a36c15b68045a4b420c49585ac446de6b013cb43fae25f3ba562ba06fab7",
- "archive_entry_count": 551,
+ "archive_sha256": "26e0362e174968f9eaeabb4f47304f641610791bc215f4e55d675d3367448b25",
+ "archive_entry_count": 553,
"failure_count": 0,
"warning_count": 0
},
@@ -16240,7 +16301,7 @@
"installed_skill_dir": "[temporary-install-root]/yao-meta-skill",
"summary": {
"archive_present": true,
- "archive_entry_count": 551,
+ "archive_entry_count": 553,
"archive_extracted": true,
"entrypoint_loaded": true,
"manifest_loaded": true,
@@ -16582,12 +16643,12 @@
{
"field": "archive_sha256",
"from": "",
- "to": "b258a36c15b68045a4b420c49585ac446de6b013cb43fae25f3ba562ba06fab7"
+ "to": "26e0362e174968f9eaeabb4f47304f641610791bc215f4e55d675d3367448b25"
},
{
"field": "package_sha256",
"from": "0000000000000000000000000000000000000000000000000000000000000000",
- "to": "1ce8a87e2393ee03818d16053afb68b2332cacbc2e3b400058b5bbf8c31266fa"
+ "to": "18e4ec6cd34d80c2fff0ce51a7a107f15c9dbaa5c6d4e54065aee15dbd0fb00e"
}
]
},
diff --git a/reports/review-viewer.json b/reports/review-viewer.json
index d87109e..61ca90f 100644
--- a/reports/review-viewer.json
+++ b/reports/review-viewer.json
@@ -437,7 +437,7 @@
"path": "scripts",
"label": "Deterministic helpers or local tooling",
"kind": "folder",
- "file_count": 83
+ "file_count": 85
},
{
"path": "evals",
@@ -452,7 +452,7 @@
"file_count": 195
}
],
- "file_count": 342,
+ "file_count": 344,
"folder_count": 4,
"distribution": [
{
@@ -477,7 +477,7 @@
},
{
"label": "scripts",
- "value": 83
+ "value": 85
},
{
"label": "evals",
@@ -606,7 +606,7 @@
"path": "scripts",
"label": "Deterministic helpers or local tooling",
"kind": "folder",
- "file_count": 83
+ "file_count": 85
},
{
"path": "evals",
@@ -906,9 +906,9 @@
"world_class_task_count": 4,
"world_class_ledger_pending_count": 4,
"working_tree_dirty": true,
- "changed_file_count": 44
+ "changed_file_count": 36
},
- "commit": "ae0f72cccb542d653d6884c38e6f5d1b9a4a2b2d",
+ "commit": "7afde5ebafd5b8cb0b00aaaac4943c037fc9dce4",
"missing_artifacts": [],
"limitations": [
"Local command-runner evidence is reproducible but does not replace provider-backed model holdout evidence.",
@@ -983,9 +983,9 @@
"failures": []
},
"trust_security": {
- "scanned_files": 167,
- "script_count": 83,
- "internal_module_count": 10,
+ "scanned_files": 169,
+ "script_count": 85,
+ "internal_module_count": 12,
"secret_findings": 0,
"dependency_files": [
"requirements-ci.txt"
@@ -1003,8 +1003,8 @@
"help_smoke_failed_count": 0,
"interactive_script_count": 0,
"package_hash_scope": "source-contract-without-generated-reports",
- "package_hash_file_count": 167,
- "package_sha256": "1ce8a87e2393ee03818d16053afb68b2332cacbc2e3b400058b5bbf8c31266fa"
+ "package_hash_file_count": 169,
+ "package_sha256": "18e4ec6cd34d80c2fff0ce51a7a107f15c9dbaa5c6d4e54065aee15dbd0fb00e"
},
"skill_atlas": {
"skill_count": 12,
@@ -1042,8 +1042,8 @@
"trust_level": "local",
"license": "MIT",
"checksums": {
- "package_sha256": "1ce8a87e2393ee03818d16053afb68b2332cacbc2e3b400058b5bbf8c31266fa",
- "archive_sha256": "b258a36c15b68045a4b420c49585ac446de6b013cb43fae25f3ba562ba06fab7"
+ "package_sha256": "18e4ec6cd34d80c2fff0ce51a7a107f15c9dbaa5c6d4e54065aee15dbd0fb00e",
+ "archive_sha256": "26e0362e174968f9eaeabb4f47304f641610791bc215f4e55d675d3367448b25"
},
"compatibility": {
"openai": "pass",
@@ -1074,7 +1074,7 @@
},
"distribution": {
"archive_verified": true,
- "archive_sha256": "b258a36c15b68045a4b420c49585ac446de6b013cb43fae25f3ba562ba06fab7",
+ "archive_sha256": "26e0362e174968f9eaeabb4f47304f641610791bc215f4e55d675d3367448b25",
"package_verification": "reports/package_verification.json",
"install_simulated": true,
"install_simulation": "reports/install_simulation.json"
@@ -1090,8 +1090,8 @@
"target_count": 4,
"adapter_count": 4,
"archive_present": true,
- "archive_sha256": "b258a36c15b68045a4b420c49585ac446de6b013cb43fae25f3ba562ba06fab7",
- "archive_entry_count": 551,
+ "archive_sha256": "26e0362e174968f9eaeabb4f47304f641610791bc215f4e55d675d3367448b25",
+ "archive_entry_count": 553,
"failure_count": 0,
"warning_count": 0
},
@@ -1102,7 +1102,7 @@
"ok": true,
"summary": {
"archive_present": true,
- "archive_entry_count": 551,
+ "archive_entry_count": 553,
"archive_extracted": true,
"entrypoint_loaded": true,
"manifest_loaded": true,
@@ -1169,12 +1169,12 @@
{
"field": "archive_sha256",
"from": "",
- "to": "b258a36c15b68045a4b420c49585ac446de6b013cb43fae25f3ba562ba06fab7"
+ "to": "26e0362e174968f9eaeabb4f47304f641610791bc215f4e55d675d3367448b25"
},
{
"field": "package_sha256",
"from": "0000000000000000000000000000000000000000000000000000000000000000",
- "to": "1ce8a87e2393ee03818d16053afb68b2332cacbc2e3b400058b5bbf8c31266fa"
+ "to": "18e4ec6cd34d80c2fff0ce51a7a107f15c9dbaa5c6d4e54065aee15dbd0fb00e"
}
]
},
diff --git a/reports/security_trust_report.json b/reports/security_trust_report.json
index b4352db..74fa3b7 100644
--- a/reports/security_trust_report.json
+++ b/reports/security_trust_report.json
@@ -2,9 +2,9 @@
"ok": true,
"skill_dir": ".",
"summary": {
- "scanned_files": 167,
- "script_count": 83,
- "internal_module_count": 10,
+ "scanned_files": 169,
+ "script_count": 85,
+ "internal_module_count": 12,
"secret_findings": 0,
"dependency_files": [
"requirements-ci.txt"
@@ -22,8 +22,8 @@
"help_smoke_failed_count": 0,
"interactive_script_count": 0,
"package_hash_scope": "source-contract-without-generated-reports",
- "package_hash_file_count": 167,
- "package_sha256": "1ce8a87e2393ee03818d16053afb68b2332cacbc2e3b400058b5bbf8c31266fa"
+ "package_hash_file_count": 169,
+ "package_sha256": "18e4ec6cd34d80c2fff0ce51a7a107f15c9dbaa5c6d4e54065aee15dbd0fb00e"
},
"failures": [],
"warnings": [],
@@ -1194,6 +1194,34 @@
"network_urls": [],
"network_hosts": []
},
+ {
+ "path": "scripts/yao_cli_report_commands.py",
+ "interface": "internal-module",
+ "interface_declared": true,
+ "interface_reason": "Imported by yao.py to keep report and evidence command handlers out of the CLI orchestrator.",
+ "has_argparse": true,
+ "has_main_guard": false,
+ "uses_input": false,
+ "uses_network": false,
+ "uses_file_write": false,
+ "uses_subprocess": false,
+ "network_urls": [],
+ "network_hosts": []
+ },
+ {
+ "path": "scripts/yao_cli_runtime.py",
+ "interface": "internal-module",
+ "interface_declared": true,
+ "interface_reason": "Imported by yao.py and command modules for shared subprocess execution and JSON payload parsing.",
+ "has_argparse": false,
+ "has_main_guard": false,
+ "uses_input": false,
+ "uses_network": false,
+ "uses_file_write": false,
+ "uses_subprocess": true,
+ "network_urls": [],
+ "network_hosts": []
+ },
{
"path": "scripts/yao_cli_telemetry.py",
"interface": "internal-module",
@@ -1243,7 +1271,7 @@
"checked_count": 73,
"passed_count": 73,
"failed_count": 0,
- "skipped_count": 10,
+ "skipped_count": 12,
"failed_scripts": [],
"results": [
{
@@ -2014,6 +2042,14 @@
"path": "scripts/yao_cli_parser.py",
"reason": "internal module"
},
+ {
+ "path": "scripts/yao_cli_report_commands.py",
+ "reason": "internal module"
+ },
+ {
+ "path": "scripts/yao_cli_runtime.py",
+ "reason": "internal module"
+ },
{
"path": "scripts/yao_cli_telemetry.py",
"reason": "internal module"
@@ -2161,7 +2197,8 @@
"scripts/run_output_execution.py",
"scripts/sync_local_install.py",
"scripts/trust_check.py",
- "scripts/yao.py"
+ "scripts/yao.py",
+ "scripts/yao_cli_runtime.py"
],
"reviewer": "Yao Team",
"scope": "Local deterministic validation, packaging, install simulation, and CI orchestration commands.",
diff --git a/reports/security_trust_report.md b/reports/security_trust_report.md
index 09389fd..41e9dda 100644
--- a/reports/security_trust_report.md
+++ b/reports/security_trust_report.md
@@ -1,9 +1,9 @@
# Security Trust Report
- OK: `True`
-- Scanned files: `167`
-- Scripts: `83`
-- Internal script modules: `10`
+- Scanned files: `169`
+- Scripts: `85`
+- Internal script modules: `12`
- Secret findings: `0`
- Network-capable scripts: `3`
- Network policy covered scripts: `3`
@@ -15,8 +15,8 @@
- CLI help smoke failures: `0`
- Interactive scripts: `0`
- Package hash scope: `source-contract-without-generated-reports`
-- Package hash files: `167`
-- Package SHA256: `1ce8a87e2393ee03818d16053afb68b2332cacbc2e3b400058b5bbf8c31266fa`
+- Package hash files: `169`
+- Package SHA256: `18e4ec6cd34d80c2fff0ce51a7a107f15c9dbaa5c6d4e54065aee15dbd0fb00e`
## Failures
@@ -144,4 +144,6 @@
| scripts/yao.py | cli | False | True | True | False | False | False | True | Default CLI classification; add SCRIPT_INTERFACE for internal modules. |
| scripts/yao_cli_config.py | internal-module | True | False | False | False | False | False | False | Imported by yao.py for CLI target maps and side-effect-free shaping helpers. |
| scripts/yao_cli_parser.py | internal-module | True | True | False | False | False | False | False | Imported by yao.py to keep CLI parser declarations separate from command orchestration. |
+| scripts/yao_cli_report_commands.py | internal-module | True | True | False | False | False | False | False | Imported by yao.py to keep report and evidence command handlers out of the CLI orchestrator. |
+| scripts/yao_cli_runtime.py | internal-module | True | False | False | False | False | False | True | Imported by yao.py and command modules for shared subprocess execution and JSON payload parsing. |
| scripts/yao_cli_telemetry.py | internal-module | True | True | False | False | False | False | False | Imported by yao.py to record opt-in metadata-only CLI run telemetry. |
diff --git a/reports/skill-overview.html b/reports/skill-overview.html
index a044258..2487b7b 100644
--- a/reports/skill-overview.html
+++ b/reports/skill-overview.html
@@ -771,7 +771,7 @@
让 reviewer 快速确认关键文件、目录和资产分布。Lets reviewers confirm key files, directories, and asset distribution quickly.
-
资产分布图展示当前包体的文件和目录重心。
+
资产分布图展示当前包体的文件和目录重心。
| 路径Path | 作用Role | 类型Type |
| SKILL.md | Skill 入口文件Skill entrypoint | 文件file |
| README.md | 人类可读使用说明Human-readable usage guide | 文件file |
| agents/interface.yaml | 跨平台接口元数据Neutral interface metadata | 文件file |
| manifest.json | 生命周期与打包元数据Lifecycle and portability metadata | 文件file |
| references | 扩展指导与复用资料Extended guidance and reusable notes | 目录folder |
| scripts | 确定性脚本或本地工具Deterministic helpers or local tooling | 目录folder |
| evals | 触发与质量检查Trigger and quality checks | 目录folder |
| reports | 生成的证据与总结报告Generated evidence and overview artifacts | 目录folder |
diff --git a/reports/skill-overview.json b/reports/skill-overview.json
index 446abf7..7e51eb5 100644
--- a/reports/skill-overview.json
+++ b/reports/skill-overview.json
@@ -436,7 +436,7 @@
"path": "scripts",
"label": "Deterministic helpers or local tooling",
"kind": "folder",
- "file_count": 83
+ "file_count": 85
},
{
"path": "evals",
@@ -451,7 +451,7 @@
"file_count": 195
}
],
- "file_count": 342,
+ "file_count": 344,
"folder_count": 4,
"distribution": [
{
@@ -476,7 +476,7 @@
},
{
"label": "scripts",
- "value": 83
+ "value": 85
},
{
"label": "evals",
@@ -605,7 +605,7 @@
"path": "scripts",
"label": "Deterministic helpers or local tooling",
"kind": "folder",
- "file_count": 83
+ "file_count": 85
},
{
"path": "evals",
@@ -905,9 +905,9 @@
"world_class_task_count": 4,
"world_class_ledger_pending_count": 4,
"working_tree_dirty": true,
- "changed_file_count": 44
+ "changed_file_count": 36
},
- "commit": "ae0f72cccb542d653d6884c38e6f5d1b9a4a2b2d",
+ "commit": "7afde5ebafd5b8cb0b00aaaac4943c037fc9dce4",
"missing_artifacts": [],
"limitations": [
"Local command-runner evidence is reproducible but does not replace provider-backed model holdout evidence.",
@@ -982,9 +982,9 @@
"failures": []
},
"trust_security": {
- "scanned_files": 167,
- "script_count": 83,
- "internal_module_count": 10,
+ "scanned_files": 169,
+ "script_count": 85,
+ "internal_module_count": 12,
"secret_findings": 0,
"dependency_files": [
"requirements-ci.txt"
@@ -1002,8 +1002,8 @@
"help_smoke_failed_count": 0,
"interactive_script_count": 0,
"package_hash_scope": "source-contract-without-generated-reports",
- "package_hash_file_count": 167,
- "package_sha256": "1ce8a87e2393ee03818d16053afb68b2332cacbc2e3b400058b5bbf8c31266fa"
+ "package_hash_file_count": 169,
+ "package_sha256": "18e4ec6cd34d80c2fff0ce51a7a107f15c9dbaa5c6d4e54065aee15dbd0fb00e"
},
"skill_atlas": {
"skill_count": 12,
@@ -1041,8 +1041,8 @@
"trust_level": "local",
"license": "MIT",
"checksums": {
- "package_sha256": "1ce8a87e2393ee03818d16053afb68b2332cacbc2e3b400058b5bbf8c31266fa",
- "archive_sha256": "b258a36c15b68045a4b420c49585ac446de6b013cb43fae25f3ba562ba06fab7"
+ "package_sha256": "18e4ec6cd34d80c2fff0ce51a7a107f15c9dbaa5c6d4e54065aee15dbd0fb00e",
+ "archive_sha256": "26e0362e174968f9eaeabb4f47304f641610791bc215f4e55d675d3367448b25"
},
"compatibility": {
"openai": "pass",
@@ -1073,7 +1073,7 @@
},
"distribution": {
"archive_verified": true,
- "archive_sha256": "b258a36c15b68045a4b420c49585ac446de6b013cb43fae25f3ba562ba06fab7",
+ "archive_sha256": "26e0362e174968f9eaeabb4f47304f641610791bc215f4e55d675d3367448b25",
"package_verification": "reports/package_verification.json",
"install_simulated": true,
"install_simulation": "reports/install_simulation.json"
@@ -1089,8 +1089,8 @@
"target_count": 4,
"adapter_count": 4,
"archive_present": true,
- "archive_sha256": "b258a36c15b68045a4b420c49585ac446de6b013cb43fae25f3ba562ba06fab7",
- "archive_entry_count": 551,
+ "archive_sha256": "26e0362e174968f9eaeabb4f47304f641610791bc215f4e55d675d3367448b25",
+ "archive_entry_count": 553,
"failure_count": 0,
"warning_count": 0
},
@@ -1101,7 +1101,7 @@
"ok": true,
"summary": {
"archive_present": true,
- "archive_entry_count": 551,
+ "archive_entry_count": 553,
"archive_extracted": true,
"entrypoint_loaded": true,
"manifest_loaded": true,
@@ -1168,12 +1168,12 @@
{
"field": "archive_sha256",
"from": "",
- "to": "b258a36c15b68045a4b420c49585ac446de6b013cb43fae25f3ba562ba06fab7"
+ "to": "26e0362e174968f9eaeabb4f47304f641610791bc215f4e55d675d3367448b25"
},
{
"field": "package_sha256",
"from": "0000000000000000000000000000000000000000000000000000000000000000",
- "to": "1ce8a87e2393ee03818d16053afb68b2332cacbc2e3b400058b5bbf8c31266fa"
+ "to": "18e4ec6cd34d80c2fff0ce51a7a107f15c9dbaa5c6d4e54065aee15dbd0fb00e"
}
]
},
diff --git a/reports/skill_atlas.json b/reports/skill_atlas.json
index a450c55..de98d65 100644
--- a/reports/skill_atlas.json
+++ b/reports/skill_atlas.json
@@ -146,6 +146,8 @@
"scripts/yao.py",
"scripts/yao_cli_config.py",
"scripts/yao_cli_parser.py",
+ "scripts/yao_cli_report_commands.py",
+ "scripts/yao_cli_runtime.py",
"scripts/yao_cli_telemetry.py",
"references/artifact-design-doctrine.md",
"references/authoring-discipline.md",
diff --git a/reports/skill_os2_audit.json b/reports/skill_os2_audit.json
index 2927c4a..a57b4f5 100644
--- a/reports/skill_os2_audit.json
+++ b/reports/skill_os2_audit.json
@@ -197,7 +197,7 @@
"key": "trust-security",
"label": "Trust Security",
"status": "pass",
- "current": "secrets 0; scripts 83; help failures 0",
+ "current": "secrets 0; scripts 85; help failures 0",
"target": "Secrets, scripts, dependencies, permissions, and package hash are reviewable",
"evidence": [
{
@@ -281,7 +281,7 @@
"key": "registry-distribution",
"label": "Registry Distribution",
"status": "pass",
- "current": "zip entries 551; install failures 0; permission failures 0",
+ "current": "zip entries 553; install failures 0; permission failures 0",
"target": "Package metadata, archive checksum, package verification, and install simulation pass",
"evidence": [
{
diff --git a/reports/skill_os2_audit.md b/reports/skill_os2_audit.md
index 7ba2fbf..565b4d8 100644
--- a/reports/skill_os2_audit.md
+++ b/reports/skill_os2_audit.md
@@ -23,11 +23,11 @@ Generated at: `2026-06-14`
| Human Adjudication | human-required | 0/5 decisions; pending 5 | Real reviewer decisions recorded before claiming output review completion | Record real A/B choices in the decision template, then regenerate adjudication. |
| Benchmark Reproducibility | pass | artifacts 20; missing 0; failures 3 | Public methodology, reproducible commands, required artifacts, and failure disclosure are machine-checkable | Keep the manifest current with every benchmark, package, and release evidence change. |
| Runtime Conformance | pass | 5/5 targets pass | Target package structure, metadata, relative paths, and degradation notes pass | Keep target conformance fixtures updated as platform contracts change. |
-| Trust Security | pass | secrets 0; scripts 83; help failures 0 | Secrets, scripts, dependencies, permissions, and package hash are reviewable | Keep high-permission approvals scoped, expiring, and target-mapped. |
+| Trust Security | pass | secrets 0; scripts 85; help failures 0 | Secrets, scripts, dependencies, permissions, and package hash are reviewable | Keep high-permission approvals scoped, expiring, and target-mapped. |
| Permission Metadata | pass | 4/4 target probes pass; metadata fallback 4 | Packaged adapters expose explicit permission metadata and residual risks | Preserve residual-risk notes until real native enforcement exists. |
| Native Permission Enforcement | external-required | native-enforced targets 0 | At least one target/client enforces approved permissions at runtime | Integrate a real client or installer runtime guard before claiming native permission enforcement. |
| Skill Atlas | pass | 12 skills; actionable collisions 0 | Workspace catalog, route overlap, stale/owner gaps, drift, and no-route opportunities | Feed real drift data into Atlas once client telemetry is installed. |
-| Registry Distribution | pass | zip entries 551; install failures 0; permission failures 0 | Package metadata, archive checksum, package verification, and install simulation pass | Regenerate registry after package verification so checksums stay aligned. |
+| Registry Distribution | pass | zip entries 553; install failures 0; permission failures 0 | Package metadata, archive checksum, package verification, and install simulation pass | Regenerate registry after package verification so checksums stay aligned. |
| Review Studio | pass | decision review; warnings 4; score 89 | One page shows gates, evidence paths, blockers, warnings, actions, waivers, and annotations | Resolve human/external warning gates before claiming full release readiness. |
| Telemetry Drift | pass | events 1; risk low; recipes 5 | Local-first metadata-only event contract, aggregate drift report, hook recipes, and import path | Keep raw JSONL out of distributed packages and use aggregate reports for Atlas. |
| Native Client Telemetry | external-required | external source events 0; adoption samples 0 | A real Browser/Chrome/provider client sends production metadata events | Install a real client against the native host and import production metadata-only events. |
diff --git a/reports/skill_os2_coverage.json b/reports/skill_os2_coverage.json
index a5e747b..415e7f2 100644
--- a/reports/skill_os2_coverage.json
+++ b/reports/skill_os2_coverage.json
@@ -122,7 +122,7 @@
"label": "Trust Security",
"status": "pass",
"objective": "Scripts, dependencies, permissions, secrets, and package hash are reviewable for team distribution.",
- "current": "83 scripts; secrets 0; help failures 0",
+ "current": "85 scripts; secrets 0; help failures 0",
"command": "python3 scripts/yao.py trust .",
"test": "python3 tests/verify_trust_check.py",
"evidence": [
@@ -196,7 +196,7 @@
"label": "Registry Distribution",
"status": "pass",
"objective": "Skill packages are installable, versioned, checksumed, and upgrade-reviewable.",
- "current": "archive entries 551; install failures 0",
+ "current": "archive entries 553; install failures 0",
"command": "python3 scripts/yao.py package . --platform openai --platform claude --platform generic --platform vscode --output-dir dist --zip && python3 scripts/yao.py registry-audit .",
"test": "python3 tests/verify_registry_audit.py",
"evidence": [
diff --git a/reports/skill_os2_coverage.md b/reports/skill_os2_coverage.md
index a0e9b17..ec6b4d7 100644
--- a/reports/skill_os2_coverage.md
+++ b/reports/skill_os2_coverage.md
@@ -21,9 +21,9 @@ This report maps the Skill OS 2.0 upgrade blueprint to concrete local artifacts,
| Skill IR | `pass` | schema 2.0.0; targets 5 | `python3 scripts/yao.py skill-ir .` | `python3 tests/verify_skill_ir.py` |
| Output Eval Lab | `pass` | 5 cases; delta 100.0; execution 10 | `python3 scripts/yao.py output-exec . && python3 scripts/yao.py output-review .` | `python3 tests/verify_output_eval_lab.py` |
| Runtime Conformance | `pass` | 5/5 targets pass | `python3 scripts/yao.py conformance .` | `python3 tests/verify_conformance_suite.py` |
-| Trust Security | `pass` | 83 scripts; secrets 0; help failures 0 | `python3 scripts/yao.py trust .` | `python3 tests/verify_trust_check.py` |
+| Trust Security | `pass` | 85 scripts; secrets 0; help failures 0 | `python3 scripts/yao.py trust .` | `python3 tests/verify_trust_check.py` |
| Skill Atlas | `pass` | 12 scanned skills; actionable collisions 0 | `python3 scripts/yao.py skill-atlas --workspace-root .` | `python3 tests/verify_skill_atlas.py` |
-| Registry Distribution | `pass` | archive entries 551; install failures 0 | `python3 scripts/yao.py package . --platform openai --platform claude --platform generic --platform vscode --output-dir dist --zip && python3 scripts/yao.py registry-audit .` | `python3 tests/verify_registry_audit.py` |
+| Registry Distribution | `pass` | archive entries 553; install failures 0 | `python3 scripts/yao.py package . --platform openai --platform claude --platform generic --platform vscode --output-dir dist --zip && python3 scripts/yao.py registry-audit .` | `python3 tests/verify_registry_audit.py` |
| Review Studio | `pass` | 16 gates; decision review; warnings 4 | `python3 scripts/yao.py review-studio .` | `python3 tests/verify_review_studio.py` |
| Telemetry Drift | `pass` | events 1; recipes 5; risk low | `python3 scripts/yao.py telemetry-hooks . && python3 scripts/yao.py adoption-drift .` | `python3 tests/verify_telemetry_hooks.py` |
diff --git a/reports/upgrade_check.json b/reports/upgrade_check.json
index 62e314e..48f2e40 100644
--- a/reports/upgrade_check.json
+++ b/reports/upgrade_check.json
@@ -70,12 +70,12 @@
{
"field": "archive_sha256",
"from": "",
- "to": "b258a36c15b68045a4b420c49585ac446de6b013cb43fae25f3ba562ba06fab7"
+ "to": "26e0362e174968f9eaeabb4f47304f641610791bc215f4e55d675d3367448b25"
},
{
"field": "package_sha256",
"from": "0000000000000000000000000000000000000000000000000000000000000000",
- "to": "1ce8a87e2393ee03818d16053afb68b2332cacbc2e3b400058b5bbf8c31266fa"
+ "to": "18e4ec6cd34d80c2fff0ce51a7a107f15c9dbaa5c6d4e54065aee15dbd0fb00e"
}
]
},
diff --git a/scripts/yao.py b/scripts/yao.py
index 1fc2e56..0066d60 100644
--- a/scripts/yao.py
+++ b/scripts/yao.py
@@ -23,45 +23,32 @@ from yao_cli_config import (
resolve_target,
)
from yao_cli_parser import build_parser as build_cli_parser
+from yao_cli_report_commands import (
+ command_artifact_design_profile,
+ command_benchmark_reproducibility,
+ command_github_benchmark_scan,
+ command_intent_confidence,
+ command_intent_dialogue,
+ command_iteration_directions,
+ command_output_risk_profile,
+ command_prompt_quality_profile,
+ command_reference_scan,
+ command_reference_synthesis,
+ command_review_studio,
+ command_review_viewer,
+ command_skill_os2_audit,
+ command_skill_os2_coverage,
+ command_skill_report,
+ command_system_model,
+ command_world_class_claim_guard,
+ command_world_class_evidence,
+ command_world_class_intake,
+ command_world_class_ledger,
+)
+from yao_cli_runtime import ROOT, run_script
from yao_cli_telemetry import add_telemetry_args, maybe_record_cli_event
-ROOT = Path(__file__).resolve().parent.parent
-SCRIPTS = ROOT / "scripts"
-
-
-def script_path(name: str) -> str:
- return str(SCRIPTS / name)
-
-
-def load_json_maybe(text: str) -> dict | None:
- text = text.strip()
- if not text:
- return None
- try:
- return json.loads(text)
- except json.JSONDecodeError:
- return None
-
-
-def run_script(name: str, args: list[str], cwd: Path | None = None) -> dict:
- proc = subprocess.run(
- [sys.executable, script_path(name), *args],
- cwd=cwd or ROOT,
- capture_output=True,
- text=True,
- )
- payload = load_json_maybe(proc.stdout)
- return {
- "command": f"{name} {' '.join(args)}".strip(),
- "returncode": proc.returncode,
- "ok": proc.returncode == 0,
- "stdout": proc.stdout,
- "stderr": proc.stderr,
- "payload": payload,
- }
-
-
def prompt_with_default(label: str, default: str) -> str:
sys.stderr.write(f"{label} [{default}]: ")
sys.stderr.flush()
@@ -549,272 +536,6 @@ def command_report(args: argparse.Namespace) -> int:
return 0 if report["ok"] else 2
-def command_skill_report(args: argparse.Namespace) -> int:
- skill_dir = str(Path(args.skill_dir).resolve())
- cmd = [skill_dir]
- if args.output_html:
- cmd.extend(["--output-html", args.output_html])
- if args.output_json:
- cmd.extend(["--output-json", args.output_json])
- result = run_script("render_skill_overview.py", cmd)
- print(json.dumps(result["payload"] if result["payload"] is not None else result, ensure_ascii=False, indent=2))
- return 0 if result["ok"] else 2
-
-
-def command_review_viewer(args: argparse.Namespace) -> int:
- skill_dir = str(Path(args.skill_dir).resolve())
- cmd = [skill_dir]
- if args.output_html:
- cmd.extend(["--output-html", args.output_html])
- if args.output_json:
- cmd.extend(["--output-json", args.output_json])
- result = run_script("render_review_viewer.py", cmd)
- print(json.dumps(result["payload"] if result["payload"] is not None else result, ensure_ascii=False, indent=2))
- return 0 if result["ok"] else 2
-
-
-def command_review_studio(args: argparse.Namespace) -> int:
- skill_dir = str(Path(args.skill_dir).resolve())
- cmd = [skill_dir]
- if args.output_html:
- cmd.extend(["--output-html", args.output_html])
- if args.output_json:
- cmd.extend(["--output-json", args.output_json])
- result = run_script("render_review_studio.py", cmd)
- print(json.dumps(result["payload"] if result["payload"] is not None else result, ensure_ascii=False, indent=2))
- return 0 if result["ok"] else 2
-
-
-def command_skill_os2_audit(args: argparse.Namespace) -> int:
- skill_dir = str(Path(args.skill_dir).resolve())
- cmd = [skill_dir]
- if args.output_json:
- cmd.extend(["--output-json", args.output_json])
- if args.output_md:
- cmd.extend(["--output-md", args.output_md])
- if args.generated_at:
- cmd.extend(["--generated-at", args.generated_at])
- result = run_script("render_skill_os2_audit.py", cmd)
- print(json.dumps(result["payload"] if result["payload"] is not None else result, ensure_ascii=False, indent=2))
- return 0 if result["ok"] else 2
-
-
-def command_skill_os2_coverage(args: argparse.Namespace) -> int:
- skill_dir = str(Path(args.skill_dir).resolve())
- cmd = [skill_dir]
- if args.output_json:
- cmd.extend(["--output-json", args.output_json])
- if args.output_md:
- cmd.extend(["--output-md", args.output_md])
- if args.generated_at:
- cmd.extend(["--generated-at", args.generated_at])
- result = run_script("render_skill_os2_coverage.py", cmd)
- print(json.dumps(result["payload"] if result["payload"] is not None else result, ensure_ascii=False, indent=2))
- return 0 if result["ok"] else 2
-
-
-def command_world_class_evidence(args: argparse.Namespace) -> int:
- skill_dir = str(Path(args.skill_dir).resolve())
- cmd = [skill_dir]
- if args.output_json:
- cmd.extend(["--output-json", args.output_json])
- if args.output_md:
- cmd.extend(["--output-md", args.output_md])
- if args.generated_at:
- cmd.extend(["--generated-at", args.generated_at])
- result = run_script("render_world_class_evidence_plan.py", cmd)
- print(json.dumps(result["payload"] if result["payload"] is not None else result, ensure_ascii=False, indent=2))
- return 0 if result["ok"] else 2
-
-
-def command_world_class_ledger(args: argparse.Namespace) -> int:
- skill_dir = str(Path(args.skill_dir).resolve())
- cmd = [skill_dir]
- if args.output_json:
- cmd.extend(["--output-json", args.output_json])
- if args.output_md:
- cmd.extend(["--output-md", args.output_md])
- if args.generated_at:
- cmd.extend(["--generated-at", args.generated_at])
- result = run_script("render_world_class_evidence_ledger.py", cmd)
- print(json.dumps(result["payload"] if result["payload"] is not None else result, ensure_ascii=False, indent=2))
- return 0 if result["ok"] else 2
-
-
-def command_world_class_intake(args: argparse.Namespace) -> int:
- skill_dir = str(Path(args.skill_dir).resolve())
- cmd = [skill_dir]
- if args.submissions_dir:
- cmd.extend(["--submissions-dir", args.submissions_dir])
- if args.output_json:
- cmd.extend(["--output-json", args.output_json])
- if args.output_md:
- cmd.extend(["--output-md", args.output_md])
- if args.generated_at:
- cmd.extend(["--generated-at", args.generated_at])
- result = run_script("render_world_class_evidence_intake.py", cmd)
- print(json.dumps(result["payload"] if result["payload"] is not None else result, ensure_ascii=False, indent=2))
- return 0 if result["ok"] else 2
-
-
-def command_world_class_claim_guard(args: argparse.Namespace) -> int:
- skill_dir = str(Path(args.skill_dir).resolve())
- cmd = [skill_dir]
- for surface in args.claim_surface:
- cmd.extend(["--claim-surface", surface])
- if args.output_json:
- cmd.extend(["--output-json", args.output_json])
- if args.output_md:
- cmd.extend(["--output-md", args.output_md])
- if args.generated_at:
- cmd.extend(["--generated-at", args.generated_at])
- result = run_script("render_world_class_claim_guard.py", cmd)
- print(json.dumps(result["payload"] if result["payload"] is not None else result, ensure_ascii=False, indent=2))
- return 0 if result["ok"] else 2
-
-
-def command_benchmark_reproducibility(args: argparse.Namespace) -> int:
- skill_dir = str(Path(args.skill_dir).resolve())
- cmd = [skill_dir]
- if args.output_json:
- cmd.extend(["--output-json", args.output_json])
- if args.output_md:
- cmd.extend(["--output-md", args.output_md])
- if args.generated_at:
- cmd.extend(["--generated-at", args.generated_at])
- result = run_script("render_benchmark_reproducibility.py", cmd)
- print(json.dumps(result["payload"] if result["payload"] is not None else result, ensure_ascii=False, indent=2))
- return 0 if result["ok"] else 2
-
-
-def command_reference_scan(args: argparse.Namespace) -> int:
- skill_dir = str(Path(args.skill_dir).resolve())
- cmd = [skill_dir]
- for reference in args.external_reference:
- cmd.extend(["--external-reference", reference])
- for reference in args.user_reference:
- cmd.extend(["--user-reference", reference])
- for constraint in args.local_constraint:
- cmd.extend(["--local-constraint", constraint])
- for reference in args.reference:
- cmd.extend(["--reference", reference])
- if args.output_md:
- cmd.extend(["--output-md", args.output_md])
- if args.output_json:
- cmd.extend(["--output-json", args.output_json])
- result = run_script("render_reference_scan.py", cmd)
- print(json.dumps(result["payload"] if result["payload"] is not None else result, ensure_ascii=False, indent=2))
- return 0 if result["ok"] else 2
-
-
-def command_github_benchmark_scan(args: argparse.Namespace) -> int:
- skill_dir = str(Path(args.skill_dir).resolve())
- cmd = [skill_dir, "--query", args.query, "--top-n", str(args.top_n)]
- if args.fixture_dir:
- cmd.extend(["--fixture-dir", args.fixture_dir])
- if args.output_md:
- cmd.extend(["--output-md", args.output_md])
- if args.output_json:
- cmd.extend(["--output-json", args.output_json])
- result = run_script("github_benchmark_scan.py", cmd)
- print(json.dumps(result["payload"] if result["payload"] is not None else result, ensure_ascii=False, indent=2))
- return 0 if result["ok"] else 2
-
-
-def command_intent_confidence(args: argparse.Namespace) -> int:
- skill_dir = str(Path(args.skill_dir).resolve())
- cmd = [skill_dir]
- if args.context_json:
- cmd.extend(["--context-json", args.context_json])
- if args.output_md:
- cmd.extend(["--output-md", args.output_md])
- if args.output_json:
- cmd.extend(["--output-json", args.output_json])
- result = run_script("render_intent_confidence.py", cmd)
- print(json.dumps(result["payload"] if result["payload"] is not None else result, ensure_ascii=False, indent=2))
- return 0 if result["ok"] else 2
-
-
-def command_intent_dialogue(args: argparse.Namespace) -> int:
- skill_dir = str(Path(args.skill_dir).resolve())
- cmd = [skill_dir]
- if args.output_md:
- cmd.extend(["--output-md", args.output_md])
- if args.output_json:
- cmd.extend(["--output-json", args.output_json])
- result = run_script("render_intent_dialogue.py", cmd)
- print(json.dumps(result["payload"] if result["payload"] is not None else result, ensure_ascii=False, indent=2))
- return 0 if result["ok"] else 2
-
-
-def command_reference_synthesis(args: argparse.Namespace) -> int:
- skill_dir = str(Path(args.skill_dir).resolve())
- cmd = [skill_dir]
- if args.output_md:
- cmd.extend(["--output-md", args.output_md])
- if args.output_json:
- cmd.extend(["--output-json", args.output_json])
- result = run_script("render_reference_synthesis.py", cmd)
- print(json.dumps(result["payload"] if result["payload"] is not None else result, ensure_ascii=False, indent=2))
- return 0 if result["ok"] else 2
-
-
-def command_output_risk_profile(args: argparse.Namespace) -> int:
- cmd = [str(Path(args.skill_dir).resolve())]
- if args.output_md:
- cmd.extend(["--output-md", args.output_md])
- if args.output_json:
- cmd.extend(["--output-json", args.output_json])
- result = run_script("render_output_risk_profile.py", cmd)
- print(json.dumps(result["payload"] if result["payload"] is not None else result, ensure_ascii=False, indent=2))
- return 0 if result["ok"] else 2
-
-
-def command_artifact_design_profile(args: argparse.Namespace) -> int:
- cmd = [str(Path(args.skill_dir).resolve())]
- if args.output_md:
- cmd.extend(["--output-md", args.output_md])
- if args.output_json:
- cmd.extend(["--output-json", args.output_json])
- result = run_script("render_artifact_design_profile.py", cmd)
- print(json.dumps(result["payload"] if result["payload"] is not None else result, ensure_ascii=False, indent=2))
- return 0 if result["ok"] else 2
-
-
-def command_prompt_quality_profile(args: argparse.Namespace) -> int:
- cmd = [str(Path(args.skill_dir).resolve())]
- if args.output_md:
- cmd.extend(["--output-md", args.output_md])
- if args.output_json:
- cmd.extend(["--output-json", args.output_json])
- result = run_script("render_prompt_quality_profile.py", cmd)
- print(json.dumps(result["payload"] if result["payload"] is not None else result, ensure_ascii=False, indent=2))
- return 0 if result["ok"] else 2
-
-
-def command_system_model(args: argparse.Namespace) -> int:
- cmd = [str(Path(args.skill_dir).resolve())]
- if args.output_md:
- cmd.extend(["--output-md", args.output_md])
- if args.output_json:
- cmd.extend(["--output-json", args.output_json])
- result = run_script("render_system_model.py", cmd)
- print(json.dumps(result["payload"] if result["payload"] is not None else result, ensure_ascii=False, indent=2))
- return 0 if result["ok"] else 2
-
-
-def command_iteration_directions(args: argparse.Namespace) -> int:
- skill_dir = str(Path(args.skill_dir).resolve())
- cmd = [skill_dir]
- if args.output_md:
- cmd.extend(["--output-md", args.output_md])
- if args.output_json:
- cmd.extend(["--output-json", args.output_json])
- result = run_script("render_iteration_directions.py", cmd)
- print(json.dumps(result["payload"] if result["payload"] is not None else result, ensure_ascii=False, indent=2))
- return 0 if result["ok"] else 2
-
-
def command_feedback(args: argparse.Namespace) -> int:
skill_dir = str(Path(args.skill_dir).resolve())
cmd = [skill_dir]
diff --git a/scripts/yao_cli_report_commands.py b/scripts/yao_cli_report_commands.py
new file mode 100644
index 0000000..686b32c
--- /dev/null
+++ b/scripts/yao_cli_report_commands.py
@@ -0,0 +1,143 @@
+"""Report and evidence command handlers for the Yao CLI."""
+
+import argparse
+import json
+from pathlib import Path
+
+from yao_cli_runtime import run_script
+
+
+SCRIPT_INTERFACE = "internal-module"
+SCRIPT_INTERFACE_REASON = "Imported by yao.py to keep report and evidence command handlers out of the CLI orchestrator."
+
+
+def emit_result(result: dict) -> int:
+ print(json.dumps(result["payload"] if result["payload"] is not None else result, ensure_ascii=False, indent=2))
+ return 0 if result["ok"] else 2
+
+
+def resolved_skill_dir(args: argparse.Namespace) -> str:
+ return str(Path(args.skill_dir).resolve())
+
+
+def append_outputs(cmd: list[str], args: argparse.Namespace, *, markdown: bool = True, generated_at: bool = False) -> None:
+ if getattr(args, "output_html", None):
+ cmd.extend(["--output-html", args.output_html])
+ if getattr(args, "output_json", None):
+ cmd.extend(["--output-json", args.output_json])
+ if markdown and getattr(args, "output_md", None):
+ cmd.extend(["--output-md", args.output_md])
+ if generated_at and getattr(args, "generated_at", None):
+ cmd.extend(["--generated-at", args.generated_at])
+
+
+def render_skill_report_command(args: argparse.Namespace, script_name: str, *, markdown: bool = True, generated_at: bool = False) -> int:
+ cmd = [resolved_skill_dir(args)]
+ append_outputs(cmd, args, markdown=markdown, generated_at=generated_at)
+ return emit_result(run_script(script_name, cmd))
+
+
+def command_skill_report(args: argparse.Namespace) -> int:
+ return render_skill_report_command(args, "render_skill_overview.py", markdown=False)
+
+
+def command_review_viewer(args: argparse.Namespace) -> int:
+ return render_skill_report_command(args, "render_review_viewer.py", markdown=False)
+
+
+def command_review_studio(args: argparse.Namespace) -> int:
+ return render_skill_report_command(args, "render_review_studio.py", markdown=False)
+
+
+def command_skill_os2_audit(args: argparse.Namespace) -> int:
+ return render_skill_report_command(args, "render_skill_os2_audit.py", generated_at=True)
+
+
+def command_skill_os2_coverage(args: argparse.Namespace) -> int:
+ return render_skill_report_command(args, "render_skill_os2_coverage.py", generated_at=True)
+
+
+def command_world_class_evidence(args: argparse.Namespace) -> int:
+ return render_skill_report_command(args, "render_world_class_evidence_plan.py", generated_at=True)
+
+
+def command_world_class_ledger(args: argparse.Namespace) -> int:
+ return render_skill_report_command(args, "render_world_class_evidence_ledger.py", generated_at=True)
+
+
+def command_world_class_intake(args: argparse.Namespace) -> int:
+ cmd = [resolved_skill_dir(args)]
+ if args.submissions_dir:
+ cmd.extend(["--submissions-dir", args.submissions_dir])
+ append_outputs(cmd, args, generated_at=True)
+ return emit_result(run_script("render_world_class_evidence_intake.py", cmd))
+
+
+def command_world_class_claim_guard(args: argparse.Namespace) -> int:
+ cmd = [resolved_skill_dir(args)]
+ for surface in args.claim_surface:
+ cmd.extend(["--claim-surface", surface])
+ append_outputs(cmd, args, generated_at=True)
+ return emit_result(run_script("render_world_class_claim_guard.py", cmd))
+
+
+def command_benchmark_reproducibility(args: argparse.Namespace) -> int:
+ return render_skill_report_command(args, "render_benchmark_reproducibility.py", generated_at=True)
+
+
+def command_reference_scan(args: argparse.Namespace) -> int:
+ cmd = [resolved_skill_dir(args)]
+ for reference in args.external_reference:
+ cmd.extend(["--external-reference", reference])
+ for reference in args.user_reference:
+ cmd.extend(["--user-reference", reference])
+ for constraint in args.local_constraint:
+ cmd.extend(["--local-constraint", constraint])
+ for reference in args.reference:
+ cmd.extend(["--reference", reference])
+ append_outputs(cmd, args)
+ return emit_result(run_script("render_reference_scan.py", cmd))
+
+
+def command_github_benchmark_scan(args: argparse.Namespace) -> int:
+ cmd = [resolved_skill_dir(args), "--query", args.query, "--top-n", str(args.top_n)]
+ if args.fixture_dir:
+ cmd.extend(["--fixture-dir", args.fixture_dir])
+ append_outputs(cmd, args)
+ return emit_result(run_script("github_benchmark_scan.py", cmd))
+
+
+def command_intent_confidence(args: argparse.Namespace) -> int:
+ cmd = [resolved_skill_dir(args)]
+ if args.context_json:
+ cmd.extend(["--context-json", args.context_json])
+ append_outputs(cmd, args)
+ return emit_result(run_script("render_intent_confidence.py", cmd))
+
+
+def command_intent_dialogue(args: argparse.Namespace) -> int:
+ return render_skill_report_command(args, "render_intent_dialogue.py")
+
+
+def command_reference_synthesis(args: argparse.Namespace) -> int:
+ return render_skill_report_command(args, "render_reference_synthesis.py")
+
+
+def command_output_risk_profile(args: argparse.Namespace) -> int:
+ return render_skill_report_command(args, "render_output_risk_profile.py")
+
+
+def command_artifact_design_profile(args: argparse.Namespace) -> int:
+ return render_skill_report_command(args, "render_artifact_design_profile.py")
+
+
+def command_prompt_quality_profile(args: argparse.Namespace) -> int:
+ return render_skill_report_command(args, "render_prompt_quality_profile.py")
+
+
+def command_system_model(args: argparse.Namespace) -> int:
+ return render_skill_report_command(args, "render_system_model.py")
+
+
+def command_iteration_directions(args: argparse.Namespace) -> int:
+ return render_skill_report_command(args, "render_iteration_directions.py")
diff --git a/scripts/yao_cli_runtime.py b/scripts/yao_cli_runtime.py
new file mode 100644
index 0000000..6dfc6bc
--- /dev/null
+++ b/scripts/yao_cli_runtime.py
@@ -0,0 +1,45 @@
+"""Shared runtime helpers for the Yao CLI."""
+
+import json
+import subprocess
+import sys
+from pathlib import Path
+
+
+SCRIPT_INTERFACE = "internal-module"
+SCRIPT_INTERFACE_REASON = "Imported by yao.py and command modules for shared subprocess execution and JSON payload parsing."
+
+ROOT = Path(__file__).resolve().parent.parent
+SCRIPTS = ROOT / "scripts"
+
+
+def script_path(name: str) -> str:
+ return str(SCRIPTS / name)
+
+
+def load_json_maybe(text: str) -> dict | None:
+ text = text.strip()
+ if not text:
+ return None
+ try:
+ return json.loads(text)
+ except json.JSONDecodeError:
+ return None
+
+
+def run_script(name: str, args: list[str], cwd: Path | None = None) -> dict:
+ proc = subprocess.run(
+ [sys.executable, script_path(name), *args],
+ cwd=cwd or ROOT,
+ capture_output=True,
+ text=True,
+ )
+ payload = load_json_maybe(proc.stdout)
+ return {
+ "command": f"{name} {' '.join(args)}".strip(),
+ "returncode": proc.returncode,
+ "ok": proc.returncode == 0,
+ "stdout": proc.stdout,
+ "stderr": proc.stderr,
+ "payload": payload,
+ }
diff --git a/skill_atlas/catalog.json b/skill_atlas/catalog.json
index 2bcae1d..81336f1 100644
--- a/skill_atlas/catalog.json
+++ b/skill_atlas/catalog.json
@@ -102,6 +102,8 @@
"scripts/yao.py",
"scripts/yao_cli_config.py",
"scripts/yao_cli_parser.py",
+ "scripts/yao_cli_report_commands.py",
+ "scripts/yao_cli_runtime.py",
"scripts/yao_cli_telemetry.py",
"references/artifact-design-doctrine.md",
"references/authoring-discipline.md",
diff --git a/tests/verify_architecture_maintainability.py b/tests/verify_architecture_maintainability.py
index 297ed64..36723c2 100644
--- a/tests/verify_architecture_maintainability.py
+++ b/tests/verify_architecture_maintainability.py
@@ -40,12 +40,12 @@ def main() -> None:
assert payload["summary"]["decision"] == "watch-maintainability-hotspots", payload["summary"]
assert payload["summary"]["hotspot_count"] >= 3, payload["summary"]
assert payload["summary"]["blocker_count"] == 0, payload["summary"]
- assert payload["summary"]["command_handler_count"] >= 50, payload["summary"]
+ assert 30 <= payload["summary"]["command_handler_count"] < 50, payload["summary"]
assert payload["summary"]["largest_file_lines"] >= 900, payload["summary"]
- assert payload["largest_files"][0]["path"] == "scripts/yao.py", payload["largest_files"][0]
+ assert payload["largest_files"][0]["path"] == "scripts/render_review_studio.py", payload["largest_files"][0]
assert payload["largest_files"][0]["severity"] == "warn", payload["largest_files"][0]
hotspot_paths = {item["path"] for item in payload["hotspots"]}
- assert {"scripts/yao.py", "scripts/render_review_studio.py"} <= hotspot_paths, hotspot_paths
+ assert {"scripts/yao.py", "scripts/render_review_studio.py", "scripts/render_review_viewer.py"} <= hotspot_paths, hotspot_paths
assert output_json.exists(), output_json
markdown = output_md.read_text(encoding="utf-8")
assert "# Architecture Maintainability" in markdown, markdown
diff --git a/tests/verify_yao_cli.py b/tests/verify_yao_cli.py
index 8b2aee1..b8eb38a 100644
--- a/tests/verify_yao_cli.py
+++ b/tests/verify_yao_cli.py
@@ -13,6 +13,8 @@ sys.path.insert(0, str(ROOT / "scripts"))
import yao as yao_cli_module # noqa: E402
import yao_cli_config # noqa: E402
import yao_cli_parser # noqa: E402
+import yao_cli_report_commands # noqa: E402
+import yao_cli_runtime # noqa: E402
def run(*args: str, input_text: str | None = None) -> dict:
@@ -70,6 +72,9 @@ def main() -> None:
assert "scripts/provider_output_eval_runner.py" in yao_cli_config.provider_output_runner_command("openai")
assert "--allow-custom-base-url" in yao_cli_config.provider_output_runner_command("openai", allow_custom_base_url=True)
assert yao_cli_parser.SCRIPT_INTERFACE == "internal-module"
+ assert yao_cli_runtime.SCRIPT_INTERFACE == "internal-module"
+ assert yao_cli_report_commands.SCRIPT_INTERFACE == "internal-module"
+ assert callable(yao_cli_module.command_review_studio)
parser_help = yao_cli_module.build_parser().format_help()
assert "quickstart" in parser_help, parser_help
assert "review-studio" in parser_help, parser_help
@@ -214,7 +219,7 @@ def main() -> None:
assert architecture_result["ok"], architecture_result
assert architecture_result["payload"]["summary"]["hotspot_count"] >= 3, architecture_result
assert architecture_result["payload"]["summary"]["blocker_count"] == 0, architecture_result
- assert architecture_result["payload"]["summary"]["command_handler_count"] >= 50, architecture_result
+ assert 30 <= architecture_result["payload"]["summary"]["command_handler_count"] < 50, architecture_result
world_class_evidence_result = run(
"world-class-evidence",