Add first-class skill interpretation report
This commit is contained in:
@@ -2,7 +2,7 @@ PYTHON ?= python3
|
||||
LOCAL_SKILL_INSTALL_DIR ?= $(HOME)/.agents/skills.disabled/yao-meta-skill
|
||||
ACTIVE_SKILL_INSTALL_DIR ?= $(HOME)/.agents/skills/yao-meta-skill
|
||||
|
||||
.PHONY: eval eval-suite route-scorecard route-confusion-check description-optimization judge-blind-eval description-optimization-check promotion-check python-compat-check architecture-maintainability-check yao-cli-check skill-overview-check skill-report-metrics-check skill-report-charts-check html-rendering-check skill-ir-check compiler-check output-eval-check output-execution-check output-review-kit-check output-review-adjudication-check runtime-conformance-check runtime-permission-check trust-check skill-atlas-check registry-audit-check package-verify-check install-simulation-check upgrade-check review-viewer-check review-studio-check skill-os2-audit-check skill-os2-coverage-check world-class-evidence-check world-class-ledger-check world-class-intake-check world-class-submission-review-check world-class-runbook-check world-class-claim-guard-check benchmark-reproducibility-check feedback-check adaptation-safety-check adoption-drift-check telemetry-import-check telemetry-emit-check telemetry-hooks-check telemetry-native-host-check review-waivers-check review-annotations-check baseline-compare-check reference-scan-check github-benchmark-scan-check intent-confidence-check reference-synthesis-check output-risk-profile-check artifact-design-profile-check prompt-quality-profile-check system-model-check iteration-directions-check description-drift-history iteration-ledger results-panel regression-history context-reports portability-report portability-check failure-regression-check package-check package-failure-check security-boundary-check local-install-sync-check snapshot-check validate lint governance-check resource-boundary-check quality-check sync-local-install sync-active-install test ci-test clean
|
||||
.PHONY: eval eval-suite route-scorecard route-confusion-check description-optimization judge-blind-eval description-optimization-check promotion-check python-compat-check architecture-maintainability-check yao-cli-check skill-overview-check skill-interpretation-check skill-report-metrics-check skill-report-charts-check html-rendering-check skill-ir-check compiler-check output-eval-check output-execution-check output-review-kit-check output-review-adjudication-check runtime-conformance-check runtime-permission-check trust-check skill-atlas-check registry-audit-check package-verify-check install-simulation-check upgrade-check review-viewer-check review-studio-check skill-os2-audit-check skill-os2-coverage-check world-class-evidence-check world-class-ledger-check world-class-intake-check world-class-submission-review-check world-class-runbook-check world-class-claim-guard-check benchmark-reproducibility-check feedback-check adaptation-safety-check adoption-drift-check telemetry-import-check telemetry-emit-check telemetry-hooks-check telemetry-native-host-check review-waivers-check review-annotations-check baseline-compare-check reference-scan-check github-benchmark-scan-check intent-confidence-check reference-synthesis-check output-risk-profile-check artifact-design-profile-check prompt-quality-profile-check system-model-check iteration-directions-check description-drift-history iteration-ledger results-panel regression-history context-reports portability-report portability-check failure-regression-check package-check package-failure-check security-boundary-check local-install-sync-check snapshot-check validate lint governance-check resource-boundary-check quality-check sync-local-install sync-active-install test ci-test clean
|
||||
|
||||
eval:
|
||||
$(PYTHON) scripts/trigger_eval.py --description-file evals/improved_description.txt --cases evals/trigger_cases.json --baseline-description-file evals/baseline_description.txt
|
||||
@@ -40,6 +40,9 @@ yao-cli-check:
|
||||
skill-overview-check:
|
||||
$(PYTHON) tests/verify_skill_overview.py
|
||||
|
||||
skill-interpretation-check:
|
||||
$(PYTHON) tests/verify_skill_interpretation.py
|
||||
|
||||
skill-report-metrics-check:
|
||||
$(PYTHON) tests/verify_skill_report_metrics.py
|
||||
|
||||
@@ -241,11 +244,11 @@ sync-local-install: package-check
|
||||
sync-active-install: package-check
|
||||
$(PYTHON) scripts/sync_local_install.py --install-dir "$(ACTIVE_SKILL_INSTALL_DIR)"
|
||||
|
||||
test: eval eval-suite route-scorecard route-confusion-check description-optimization description-optimization-check promotion-check python-compat-check architecture-maintainability-check yao-cli-check skill-overview-check skill-report-metrics-check skill-report-charts-check html-rendering-check skill-ir-check compiler-check output-eval-check output-execution-check output-review-adjudication-check runtime-conformance-check runtime-permission-check trust-check skill-atlas-check registry-audit-check package-verify-check install-simulation-check upgrade-check review-viewer-check review-studio-check skill-os2-audit-check skill-os2-coverage-check world-class-evidence-check world-class-ledger-check world-class-intake-check world-class-submission-review-check world-class-runbook-check world-class-claim-guard-check benchmark-reproducibility-check feedback-check adaptation-safety-check adoption-drift-check telemetry-import-check telemetry-emit-check telemetry-hooks-check telemetry-native-host-check review-waivers-check review-annotations-check baseline-compare-check reference-scan-check github-benchmark-scan-check intent-confidence-check reference-synthesis-check output-risk-profile-check artifact-design-profile-check prompt-quality-profile-check system-model-check iteration-directions-check description-drift-history iteration-ledger regression-history context-reports portability-report portability-check failure-regression-check package-check package-failure-check security-boundary-check local-install-sync-check snapshot-check validate lint governance-check resource-boundary-check quality-check
|
||||
test: eval eval-suite route-scorecard route-confusion-check description-optimization description-optimization-check promotion-check python-compat-check architecture-maintainability-check yao-cli-check skill-overview-check skill-interpretation-check skill-report-metrics-check skill-report-charts-check html-rendering-check skill-ir-check compiler-check output-eval-check output-execution-check output-review-adjudication-check runtime-conformance-check runtime-permission-check trust-check skill-atlas-check registry-audit-check package-verify-check install-simulation-check upgrade-check review-viewer-check review-studio-check skill-os2-audit-check skill-os2-coverage-check world-class-evidence-check world-class-ledger-check world-class-intake-check world-class-submission-review-check world-class-runbook-check world-class-claim-guard-check benchmark-reproducibility-check feedback-check adaptation-safety-check adoption-drift-check telemetry-import-check telemetry-emit-check telemetry-hooks-check telemetry-native-host-check review-waivers-check review-annotations-check baseline-compare-check reference-scan-check github-benchmark-scan-check intent-confidence-check reference-synthesis-check output-risk-profile-check artifact-design-profile-check prompt-quality-profile-check system-model-check iteration-directions-check description-drift-history iteration-ledger regression-history context-reports portability-report portability-check failure-regression-check package-check package-failure-check security-boundary-check local-install-sync-check snapshot-check validate lint governance-check resource-boundary-check quality-check
|
||||
|
||||
ci-test:
|
||||
$(PYTHON) scripts/ci_test.py
|
||||
|
||||
clean:
|
||||
rm -rf dist tests/tmp tests/tmp_snapshot tests/tmp_cli tests/tmp_python_compat tests/tmp_architecture_maintainability tests/tmp_skill_overview tests/tmp_skill_report_metrics tests/tmp_skill_report_charts tests/tmp_skill_ir tests/tmp_compile_skill tests/tmp_output_eval tests/tmp_output_execution tests/tmp_output_review_adjudication tests/tmp_conformance tests/tmp_runtime_permission tests/tmp_trust tests/tmp_skill_atlas tests/tmp_registry tests/tmp_package_verification tests/tmp_install_simulation tests/tmp_upgrade_check tests/tmp_reference_scan tests/tmp_iteration_directions tests/tmp_review_viewer tests/tmp_review_studio tests/tmp_skill_os2_audit tests/tmp_skill_os2_coverage tests/tmp_world_class_evidence tests/tmp_world_class_evidence_ledger tests/tmp_world_class_evidence_intake tests/tmp_world_class_submission_review tests/tmp_world_class_operator_runbook tests/tmp_world_class_claim_guard tests/tmp_benchmark_reproducibility tests/tmp_feedback tests/tmp_adoption_drift tests/tmp_telemetry_import tests/tmp_telemetry_emit tests/tmp_telemetry_hooks tests/tmp_telemetry_native_host tests/tmp_review_waivers tests/tmp_review_annotations tests/tmp_github_benchmark_scan tests/tmp_intent_confidence tests/tmp_reference_synthesis tests/tmp_output_risk_profile tests/tmp_artifact_design_profile tests/tmp_prompt_quality_profile tests/tmp_system_model tests/tmp_security tests/tmp_baseline_compare.json tests/tmp_baseline_compare.md
|
||||
rm -rf dist tests/tmp tests/tmp_snapshot tests/tmp_cli tests/tmp_python_compat tests/tmp_architecture_maintainability tests/tmp_skill_overview tests/tmp_skill_interpretation tests/tmp_skill_report_metrics tests/tmp_skill_report_charts tests/tmp_skill_ir tests/tmp_compile_skill tests/tmp_output_eval tests/tmp_output_execution tests/tmp_output_review_adjudication tests/tmp_conformance tests/tmp_runtime_permission tests/tmp_trust tests/tmp_skill_atlas tests/tmp_registry tests/tmp_package_verification tests/tmp_install_simulation tests/tmp_upgrade_check tests/tmp_reference_scan tests/tmp_iteration_directions tests/tmp_review_viewer tests/tmp_review_studio tests/tmp_skill_os2_audit tests/tmp_skill_os2_coverage tests/tmp_world_class_evidence tests/tmp_world_class_evidence_ledger tests/tmp_world_class_evidence_intake tests/tmp_world_class_submission_review tests/tmp_world_class_operator_runbook tests/tmp_world_class_claim_guard tests/tmp_benchmark_reproducibility tests/tmp_feedback tests/tmp_adoption_drift tests/tmp_telemetry_import tests/tmp_telemetry_emit tests/tmp_telemetry_hooks tests/tmp_telemetry_native_host tests/tmp_review_waivers tests/tmp_review_annotations tests/tmp_github_benchmark_scan tests/tmp_intent_confidence tests/tmp_reference_synthesis tests/tmp_output_risk_profile tests/tmp_artifact_design_profile tests/tmp_prompt_quality_profile tests/tmp_system_model tests/tmp_security tests/tmp_baseline_compare.json tests/tmp_baseline_compare.md
|
||||
find . -type d -name __pycache__ -prune -exec rm -rf {} +
|
||||
|
||||
@@ -102,7 +102,7 @@ Weighted score formula: `sum(score / 10 * weight)`.
|
||||
2. Start with a short, human intent dialogue so the real job, outputs, exclusions, constraints, and standards are explicit.
|
||||
3. Let `quickstart` clarify intent first, then run silent benchmark scan and reference synthesis; it only surfaces explicit questions when intent is still unclear or when there is a real design conflict.
|
||||
4. Use the archetype-aware `quickstart` or the full authoring flow to generate or improve the package in scaffold, production, library, or governed mode.
|
||||
5. Review the generated `reports/skill-overview.html` first for the bilingual HTML skill report. It defaults to Simplified Chinese and provides an English switch in the top right. Then open `reports/review-studio.html` to inspect release blockers, permission approvals, and evidence paths in one page before adding more structure.
|
||||
5. Review the generated `reports/skill-interpretation.html` first for the bilingual interpretation report. It defaults to Simplified Chinese and provides an English switch in the top right. Then open `reports/skill-overview.html` for the audit scorecard and `reports/review-studio.html` to inspect release blockers, permission approvals, and evidence paths in one page before adding more structure.
|
||||
|
||||
Or use the unified authoring CLI:
|
||||
|
||||
@@ -113,6 +113,7 @@ python3 scripts/yao.py reference-scan my-skill \
|
||||
--external-reference "World Class Method::method::Borrow a tight evaluation loop.::Do not copy heavy process." \
|
||||
--user-reference "A product or repo I admire::taste::Learn the clarity and operating standard.::Do not copy wording." \
|
||||
--local-constraint "Current Library Naming::structure::Keep naming aligned with the local skill library.::Do not inherit private references."
|
||||
python3 scripts/yao.py skill-interpretation my-skill
|
||||
python3 scripts/yao.py review-viewer my-skill
|
||||
python3 scripts/yao.py review-studio my-skill
|
||||
python3 scripts/yao.py artifact-design-profile my-skill
|
||||
@@ -424,7 +425,7 @@ Utility scripts that make the meta-skill operational:
|
||||
- `run_description_optimization_suite.py`: runs description optimization across the root skill and governed examples, then writes reusable reports and optional drift snapshots with calibration and family summaries
|
||||
- `promotion_checker.py`: applies promotion policy to current description candidates, writes promotion decisions, builds candidate registries, and emits iteration bundles with review stubs
|
||||
- `create_iteration_snapshot.py`: freezes the current promotion decision into a versioned release snapshot with review, route, and context evidence
|
||||
- `yao.py`: unified authoring CLI that exposes init, validate, optimize-description, promote-check, python-compat, review, release-snapshot, workspace-flow, report, skill-ir, compile-skill, output-exec, output-review, skill-os2-audit, skill-os2-coverage, world-class-evidence, world-class-ledger, world-class-intake, world-class-submission-kit, world-class-submission-review, world-class-runbook, world-class-claim-guard, benchmark-reproducibility, telemetry-emit, telemetry-hooks, telemetry-import, package, registry-audit, package-verify, install-simulate, upgrade-check, review-waivers, and test as one entrypoint
|
||||
- `yao.py`: unified authoring CLI that exposes init, validate, optimize-description, promote-check, python-compat, review, release-snapshot, workspace-flow, report, skill-report, skill-interpretation, skill-ir, compile-skill, output-exec, output-review, skill-os2-audit, skill-os2-coverage, world-class-evidence, world-class-ledger, world-class-intake, world-class-submission-kit, world-class-submission-review, world-class-runbook, world-class-claim-guard, benchmark-reproducibility, telemetry-emit, telemetry-hooks, telemetry-import, package, registry-audit, package-verify, install-simulate, upgrade-check, review-waivers, and test as one entrypoint
|
||||
- `render_description_drift_history.py`: turns description-optimization snapshots into a readable drift-history report
|
||||
- `build_confusion_matrix.py`: scores route confusion across tracked sibling skills and `no_route` cases, then writes a route scorecard and optional milestone snapshot
|
||||
- `render_iteration_ledger.py`: compresses regression milestones, description optimization drift, and route scorecards into one iteration-facing ledger
|
||||
@@ -446,6 +447,7 @@ Utility scripts that make the meta-skill operational:
|
||||
- `cross_packager.py`: builds client-specific export artifacts from Skill IR plus neutral metadata, with explicit platform contracts and validation
|
||||
- `render_portability_report.py`: scores cross-environment portability from neutral metadata, degradation rules, and consumer validation coverage
|
||||
- `render_skill_overview.py`: generates the white-background bilingual HTML skill audit report with sticky four-character Chinese navigation, top-right language switch, v2 scorecard, inline SVG charts, contract boundary, quality review, risk governance, assets, and iteration roadmap
|
||||
- `render_skill_interpretation.py`: renders `reports/skill-interpretation.html/json` as the first-class post-creation interpretation report while reusing the Skill Overview v2 model and Kami white layout
|
||||
- `export_skill_ir.py`: exports the 2.0 platform-neutral Skill IR contract from `SKILL.md`, manifest, interface metadata, evals, resources, and reports
|
||||
- `compile_skill.py`: compiles Skill IR into target-specific semantic contracts, generated-file maps, adapter modes, target-native behavior contracts, preserved semantics, warnings, and unsupported-feature notes
|
||||
- `run_output_eval.py`: runs the Output Eval Lab v0 with static with-skill vs baseline assertion grading, blind A/B review pack generation, and separate answer key artifacts
|
||||
|
||||
+1
-1
@@ -16,7 +16,7 @@
|
||||
"vscode"
|
||||
],
|
||||
"package_metadata": "registry/packages/yao-meta-skill.json",
|
||||
"package_sha256": "37a1ec0f35323886bdae64523b4113f5dc4ba3153117ee4980b8e5cd54b49aba"
|
||||
"package_sha256": "652c3a4a1f091d875bfacdd44da9a91bc02fec90af3fe76cf3a71a6dc80aba58"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
"trust_level": "local",
|
||||
"license": "MIT",
|
||||
"checksums": {
|
||||
"package_sha256": "37a1ec0f35323886bdae64523b4113f5dc4ba3153117ee4980b8e5cd54b49aba",
|
||||
"package_sha256": "652c3a4a1f091d875bfacdd44da9a91bc02fec90af3fe76cf3a71a6dc80aba58",
|
||||
"archive_sha256": "6852cf91a74d232c32d732b7c159c971827abf23af50153987193b084ad3b5cc"
|
||||
},
|
||||
"compatibility": {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"ok": true,
|
||||
"schema_version": "2.0",
|
||||
"generated_at": "2026-06-15T13:08:50Z",
|
||||
"generated_at": "2026-06-15T13:34:11Z",
|
||||
"skill_dir": ".",
|
||||
"privacy_contract": {
|
||||
"storage": "local-first",
|
||||
|
||||
@@ -4,58 +4,58 @@
|
||||
"generated_at": "2026-06-13",
|
||||
"skill_dir": ".",
|
||||
"summary": {
|
||||
"python_file_count": 166,
|
||||
"script_file_count": 105,
|
||||
"test_file_count": 61,
|
||||
"python_file_count": 168,
|
||||
"script_file_count": 106,
|
||||
"test_file_count": 62,
|
||||
"internal_module_count": 29,
|
||||
"cli_script_count": 78,
|
||||
"cli_script_count": 79,
|
||||
"command_handler_count": 34,
|
||||
"warn_line_threshold": 900,
|
||||
"block_line_threshold": 1500,
|
||||
"largest_file_lines": 894,
|
||||
"largest_file_lines": 886,
|
||||
"hotspot_count": 0,
|
||||
"blocker_count": 0,
|
||||
"decision": "pass"
|
||||
},
|
||||
"largest_files": [
|
||||
{
|
||||
"path": "tests/verify_yao_cli.py",
|
||||
"lines": 894,
|
||||
"kind": "test",
|
||||
"severity": "pass",
|
||||
"recommendation": "Break broad integration assertions into focused verifier helpers when the next behavior change lands."
|
||||
},
|
||||
{
|
||||
"path": "scripts/yao.py",
|
||||
"lines": 882,
|
||||
"lines": 886,
|
||||
"kind": "cli-script",
|
||||
"severity": "pass",
|
||||
"recommendation": "Split command handlers by domain while keeping scripts/yao.py as the thin CLI orchestrator."
|
||||
},
|
||||
{
|
||||
"path": "tests/verify_yao_cli.py",
|
||||
"lines": 886,
|
||||
"kind": "test",
|
||||
"severity": "pass",
|
||||
"recommendation": "Break broad integration assertions into focused verifier helpers when the next behavior change lands."
|
||||
},
|
||||
{
|
||||
"path": "scripts/skill_report_layout.py",
|
||||
"lines": 805,
|
||||
"lines": 808,
|
||||
"kind": "internal-module",
|
||||
"severity": "pass",
|
||||
"recommendation": "Watch this file before adding new responsibilities; extract a helper module when one concern dominates."
|
||||
},
|
||||
{
|
||||
"path": "scripts/skill_report_model.py",
|
||||
"lines": 800,
|
||||
"lines": 801,
|
||||
"kind": "internal-module",
|
||||
"severity": "pass",
|
||||
"recommendation": "Watch this file before adding new responsibilities; extract a helper module when one concern dominates."
|
||||
},
|
||||
{
|
||||
"path": "scripts/yao_cli_parser.py",
|
||||
"lines": 765,
|
||||
"lines": 774,
|
||||
"kind": "internal-module",
|
||||
"severity": "pass",
|
||||
"recommendation": "Watch this file before adding new responsibilities; extract a helper module when one concern dominates."
|
||||
},
|
||||
{
|
||||
"path": "tests/verify_review_studio.py",
|
||||
"lines": 749,
|
||||
"lines": 751,
|
||||
"kind": "test",
|
||||
"severity": "pass",
|
||||
"recommendation": "Break broad integration assertions into focused verifier helpers when the next behavior change lands."
|
||||
|
||||
@@ -5,13 +5,13 @@ Generated at: `2026-06-13`
|
||||
## Summary
|
||||
|
||||
- decision: `pass`
|
||||
- python files: `166`
|
||||
- scripts: `105`
|
||||
- tests: `61`
|
||||
- python files: `168`
|
||||
- scripts: `106`
|
||||
- tests: `62`
|
||||
- internal modules: `29`
|
||||
- CLI scripts: `78`
|
||||
- CLI scripts: `79`
|
||||
- Yao CLI command handlers: `34`
|
||||
- largest file lines: `894`
|
||||
- largest file lines: `886`
|
||||
- hotspots: `0`
|
||||
- blockers: `0`
|
||||
|
||||
@@ -25,12 +25,12 @@ No file-size hotspots found.
|
||||
|
||||
| File | Lines | Kind | Severity |
|
||||
| --- | ---: | --- | --- |
|
||||
| `tests/verify_yao_cli.py` | `894` | `test` | `pass` |
|
||||
| `scripts/yao.py` | `882` | `cli-script` | `pass` |
|
||||
| `scripts/skill_report_layout.py` | `805` | `internal-module` | `pass` |
|
||||
| `scripts/skill_report_model.py` | `800` | `internal-module` | `pass` |
|
||||
| `scripts/yao_cli_parser.py` | `765` | `internal-module` | `pass` |
|
||||
| `tests/verify_review_studio.py` | `749` | `test` | `pass` |
|
||||
| `scripts/yao.py` | `886` | `cli-script` | `pass` |
|
||||
| `tests/verify_yao_cli.py` | `886` | `test` | `pass` |
|
||||
| `scripts/skill_report_layout.py` | `808` | `internal-module` | `pass` |
|
||||
| `scripts/skill_report_model.py` | `801` | `internal-module` | `pass` |
|
||||
| `scripts/yao_cli_parser.py` | `774` | `internal-module` | `pass` |
|
||||
| `tests/verify_review_studio.py` | `751` | `test` | `pass` |
|
||||
| `scripts/compile_skill.py` | `734` | `cli-script` | `pass` |
|
||||
| `scripts/build_skill_atlas.py` | `730` | `cli-script` | `pass` |
|
||||
| `scripts/optimize_description.py` | `723` | `cli-script` | `pass` |
|
||||
|
||||
@@ -3,22 +3,35 @@
|
||||
"ok": true,
|
||||
"generated_at": "2026-06-15",
|
||||
"skill_dir": ".",
|
||||
"commit": "aacf3282f562414faf8cc6c68538d2d53c6b48e3",
|
||||
"commit": "5495734e7e33b19b84a932626112d783a3edf271",
|
||||
"git_status": {
|
||||
"available": true,
|
||||
"dirty": false,
|
||||
"changed_file_count": 0,
|
||||
"sample": [],
|
||||
"dirty": true,
|
||||
"changed_file_count": 73,
|
||||
"sample": [
|
||||
" M Makefile",
|
||||
" M README.md",
|
||||
" M registry/index.json",
|
||||
" M registry/packages/yao-meta-skill.json",
|
||||
" M reports/adoption_drift_report.json",
|
||||
" M reports/adoption_drift_report.md",
|
||||
" 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"
|
||||
],
|
||||
"scope": "generation-time status before this report is written"
|
||||
},
|
||||
"summary": {
|
||||
"reproducibility_ready": true,
|
||||
"release_lock_ready": true,
|
||||
"release_lock_ready": false,
|
||||
"methodology_complete": true,
|
||||
"required_artifact_count": 24,
|
||||
"missing_artifact_count": 0,
|
||||
"evidence_bundle_sha256": "890927c5a98eb60b569171a7473c213a5094d3a8e9b84705d687c4f3335220fd",
|
||||
"source_contract_sha256": "37a1ec0f35323886bdae64523b4113f5dc4ba3153117ee4980b8e5cd54b49aba",
|
||||
"evidence_bundle_sha256": "60df1cebf40b1627f6d313c233f377d0d36228a9525b70099623563c7efb7804",
|
||||
"source_contract_sha256": "c0fe8976bca1ceac0b325c882003335c66487b8f152868af471f3bdd79b9f0af",
|
||||
"archive_sha256": "6852cf91a74d232c32d732b7c159c971827abf23af50153987193b084ad3b5cc",
|
||||
"output_case_count": 5,
|
||||
"failure_disclosure_count": 3,
|
||||
@@ -34,29 +47,30 @@
|
||||
"world_class_task_count": 4,
|
||||
"world_class_ledger_pending_count": 4,
|
||||
"world_class_source_check_count": 13,
|
||||
"world_class_source_pass_count": 7,
|
||||
"world_class_source_blocked_count": 6,
|
||||
"world_class_source_pass_count": 6,
|
||||
"world_class_source_blocked_count": 7,
|
||||
"public_claim_ready": false,
|
||||
"public_claim_blocker_count": 4,
|
||||
"working_tree_dirty": false,
|
||||
"changed_file_count": 0
|
||||
"public_claim_blocker_count": 5,
|
||||
"working_tree_dirty": true,
|
||||
"changed_file_count": 73
|
||||
},
|
||||
"public_claim": {
|
||||
"ready": false,
|
||||
"scope": "public benchmark or world-class readiness claim",
|
||||
"blockers": [
|
||||
"release lock is not clean or commit is unavailable",
|
||||
"provider-backed model holdout evidence is incomplete",
|
||||
"human blind-review adjudication is incomplete",
|
||||
"world-class evidence is not accepted yet (4 open gaps, 4 ledger pending)",
|
||||
"world-class source checks are not all accepted (7/13 pass, 6 blocked)"
|
||||
"world-class source checks are not all accepted (6/13 pass, 7 blocked)"
|
||||
],
|
||||
"policy": "Local reproducibility can pass before public claims; public claims require provider evidence, human adjudication, clean release lock, accepted world-class evidence, and complete source checks."
|
||||
},
|
||||
"release_lock": {
|
||||
"ready": true,
|
||||
"commit": "aacf3282f562414faf8cc6c68538d2d53c6b48e3",
|
||||
"ready": false,
|
||||
"commit": "5495734e7e33b19b84a932626112d783a3edf271",
|
||||
"status_scope": "generation-time status before this report is written",
|
||||
"reason": "clean generation-time HEAD"
|
||||
"reason": "working tree was dirty at generation time"
|
||||
},
|
||||
"evidence_bundle": {
|
||||
"algorithm": "sha256(path,label,exists,artifact_sha256)",
|
||||
@@ -64,7 +78,7 @@
|
||||
"existing_count": 24,
|
||||
"missing_count": 0,
|
||||
"missing_paths": [],
|
||||
"sha256": "890927c5a98eb60b569171a7473c213a5094d3a8e9b84705d687c4f3335220fd"
|
||||
"sha256": "60df1cebf40b1627f6d313c233f377d0d36228a9525b70099623563c7efb7804"
|
||||
},
|
||||
"methodology": {
|
||||
"path": "reports/benchmark_methodology.md",
|
||||
@@ -137,8 +151,8 @@
|
||||
"label": "output_execution",
|
||||
"path": "reports/output_execution_runs.json",
|
||||
"exists": true,
|
||||
"bytes": 7965,
|
||||
"sha256": "f2e8168cc313a28f49e462be3db8dab0c084dbcc5c39175f488e6ec8538bddeb"
|
||||
"bytes": 7966,
|
||||
"sha256": "406fa9dd65ac5a870ff4678e05b9e145fff9eb8a37bdc5f7a2e556e1dcc0c369"
|
||||
},
|
||||
{
|
||||
"label": "blind_review",
|
||||
@@ -172,22 +186,22 @@
|
||||
"label": "trust_report",
|
||||
"path": "reports/security_trust_report.json",
|
||||
"exists": true,
|
||||
"bytes": 104587,
|
||||
"sha256": "00a557726381efed028a11fa563ce692956cd265391928ffbf68382218fe8e99"
|
||||
"bytes": 105694,
|
||||
"sha256": "cfabb1008f1ce3cd638c1f3251e860557102cd01963e58aa8cce2c4c92dfee33"
|
||||
},
|
||||
{
|
||||
"label": "python_compatibility",
|
||||
"path": "reports/python_compatibility.json",
|
||||
"exists": true,
|
||||
"bytes": 21994,
|
||||
"sha256": "533cd8824a27329e5577598cdc4cf3327fcb153288f19bea45de9ea21a9e3c15"
|
||||
"bytes": 22252,
|
||||
"sha256": "fcf288346cb5159e070b2df75a8e371cca2501945c971aead521e7ac3557a4bc"
|
||||
},
|
||||
{
|
||||
"label": "registry_audit",
|
||||
"path": "reports/registry_audit.json",
|
||||
"exists": true,
|
||||
"bytes": 3183,
|
||||
"sha256": "9b54f3fd07680c2a9dd18ec9845e1faa1e19e8fbc854cd13a2d5bc1b84360f0e"
|
||||
"sha256": "5765778984e60fd98c2459e5402bc7780391753c7353253701b279dd2b310eef"
|
||||
},
|
||||
{
|
||||
"label": "package_verification",
|
||||
@@ -201,70 +215,70 @@
|
||||
"path": "reports/install_simulation.json",
|
||||
"exists": true,
|
||||
"bytes": 8758,
|
||||
"sha256": "9c2e297394f92a6b9a8826165ccb32e7eb970ce90b7312f5e125a7f95fe6724f"
|
||||
"sha256": "46d0524a6968a1dadfd63988cd00b218323b42f4e7697fe427d8f160da72c252"
|
||||
},
|
||||
{
|
||||
"label": "skill_os2_audit",
|
||||
"path": "reports/skill_os2_audit.json",
|
||||
"exists": true,
|
||||
"bytes": 14310,
|
||||
"sha256": "47c5859d2a9c22c1a7c49381e363648e7ff09330ba62b2f2b27b0ab8aa4f4071"
|
||||
"sha256": "8481f4d78f2ad4ff0e74936b58b643a91052a30b6d12bcbbf24e0b4291b8fb1f"
|
||||
},
|
||||
{
|
||||
"label": "world_class_evidence_plan",
|
||||
"path": "reports/world_class_evidence_plan.json",
|
||||
"exists": true,
|
||||
"bytes": 19940,
|
||||
"sha256": "b408af112c784fdc3e96ea9ecf374990b9f58a0ebfa4df18394ccd9e93dc5545"
|
||||
"sha256": "933cdb0021818c0a8c5fc199af7dfa7879777ebf7959ed3a36bba52a0aed9c6c"
|
||||
},
|
||||
{
|
||||
"label": "world_class_evidence_ledger",
|
||||
"path": "reports/world_class_evidence_ledger.json",
|
||||
"exists": true,
|
||||
"bytes": 20003,
|
||||
"sha256": "cc886713ba5b99bdb2f740217f0979a30312aef7539d2a22af0e96ec5c3e90bf"
|
||||
"bytes": 20006,
|
||||
"sha256": "5407409841eb8e1174a07ea0af17ddf709155f0c548c897b82c2f75b869b333a"
|
||||
},
|
||||
{
|
||||
"label": "world_class_evidence_intake",
|
||||
"path": "reports/world_class_evidence_intake.json",
|
||||
"exists": true,
|
||||
"bytes": 18865,
|
||||
"sha256": "2fbecc603d8dc6382fde6c61869aaf4b56fc9d1be5afcd07b345c419dce6d55a"
|
||||
"sha256": "b10e1ce0a5a17df72462ce8f0c468356f58ff88bd7ceab349c82a1fb3b6697ef"
|
||||
},
|
||||
{
|
||||
"label": "world_class_submission_review",
|
||||
"path": "reports/world_class_submission_review.json",
|
||||
"exists": true,
|
||||
"bytes": 12410,
|
||||
"sha256": "bc690472684dcdb8c77803b730857f98e6b6eb11f1e741d5fcc1aa9303b77e47"
|
||||
"bytes": 12413,
|
||||
"sha256": "3bce5f072d037a6c383cfd597f8530c2bc87ba31781fa90c843a9186dd2f8fea"
|
||||
},
|
||||
{
|
||||
"label": "world_class_operator_runbook",
|
||||
"path": "reports/world_class_operator_runbook.json",
|
||||
"exists": true,
|
||||
"bytes": 23957,
|
||||
"sha256": "b4640688026ef9199e96f80bd2d9971aaca3ec6d092d8ecd052a5debc0aa94c7"
|
||||
"bytes": 24021,
|
||||
"sha256": "d377b8d99831ce297011e4e270fc7287a53727500f5d503dd3dc4b984d26f0ad"
|
||||
},
|
||||
{
|
||||
"label": "world_class_operator_runbook_markdown",
|
||||
"path": "reports/world_class_operator_runbook.md",
|
||||
"exists": true,
|
||||
"bytes": 15025,
|
||||
"sha256": "3a916ac568377d8df7d612426f7358283eddfa2ab5fedb7ed12db0097a8b3c48"
|
||||
"bytes": 15080,
|
||||
"sha256": "9f141f09bf485a4299b37eb8c21ebab9f212ea130a0daea8b0d7d5bd7ab020aa"
|
||||
},
|
||||
{
|
||||
"label": "world_class_operator_runbook_html",
|
||||
"path": "reports/world_class_operator_runbook.html",
|
||||
"exists": true,
|
||||
"bytes": 20969,
|
||||
"sha256": "886b915da0f27fb46f4d8cebb6211ab5066a9fd44e1ec2e3206487d9a8abfff2"
|
||||
"bytes": 21030,
|
||||
"sha256": "04cc091b113f018072d07a1d71ad142773c415a49e633493689903e7b399b5e6"
|
||||
},
|
||||
{
|
||||
"label": "world_class_claim_guard",
|
||||
"path": "reports/world_class_claim_guard.json",
|
||||
"exists": true,
|
||||
"bytes": 8634,
|
||||
"sha256": "8817531d97d4f24ccc297956e71dbb4a8dbba24bf705f8a77b77e6b88097a03c"
|
||||
"bytes": 8725,
|
||||
"sha256": "7257fedb0a0407332265ef9ae7b1a6d789f4d2a075c6b62fc1a6f679b3a5a42d"
|
||||
}
|
||||
],
|
||||
"missing_artifacts": [],
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
# Benchmark Reproducibility
|
||||
|
||||
Generated at: `2026-06-15`
|
||||
Commit: `aacf3282f562414faf8cc6c68538d2d53c6b48e3`
|
||||
Working tree dirty at generation: `false`
|
||||
Evidence bundle SHA256: `890927c5a98eb60b569171a7473c213a5094d3a8e9b84705d687c4f3335220fd`
|
||||
Commit: `5495734e7e33b19b84a932626112d783a3edf271`
|
||||
Working tree dirty at generation: `true`
|
||||
Evidence bundle SHA256: `60df1cebf40b1627f6d313c233f377d0d36228a9525b70099623563c7efb7804`
|
||||
|
||||
## Summary
|
||||
|
||||
- reproducibility ready: `true`
|
||||
- release lock ready: `true`
|
||||
- release lock ready: `false`
|
||||
- methodology complete: `true`
|
||||
- required artifacts: `24`
|
||||
- missing artifacts: `0`
|
||||
- source contract sha256: `37a1ec0f3532`
|
||||
- source contract sha256: `c0fe8976bca1`
|
||||
- archive sha256: `6852cf91a74d`
|
||||
- output cases: `5`
|
||||
- disclosed failure cases: `3`
|
||||
@@ -20,10 +20,10 @@ Evidence bundle SHA256: `890927c5a98eb60b569171a7473c213a5094d3a8e9b84705d687c4f
|
||||
- provider evidence complete: `false`
|
||||
- human review complete: `false`
|
||||
- world-class ready: `false`
|
||||
- world-class source checks: `7` pass / `13` total; `6` blocked
|
||||
- world-class source checks: `6` pass / `13` total; `7` blocked
|
||||
- public claim ready: `false`
|
||||
- public claim blockers: `4`
|
||||
- changed files at generation: `0`
|
||||
- public claim blockers: `5`
|
||||
- changed files at generation: `73`
|
||||
|
||||
This report proves local benchmark reproducibility only. It keeps external provider and human-review gaps visible instead of counting them as complete. The git commit is generation-time context; the evidence bundle SHA is the durable anchor for the artifacts listed below.
|
||||
|
||||
@@ -35,22 +35,23 @@ This report proves local benchmark reproducibility only. It keeps external provi
|
||||
|
||||
| Blocker |
|
||||
| --- |
|
||||
| release lock is not clean or commit is unavailable |
|
||||
| provider-backed model holdout evidence is incomplete |
|
||||
| human blind-review adjudication is incomplete |
|
||||
| world-class evidence is not accepted yet (4 open gaps, 4 ledger pending) |
|
||||
| world-class source checks are not all accepted (7/13 pass, 6 blocked) |
|
||||
| world-class source checks are not all accepted (6/13 pass, 7 blocked) |
|
||||
|
||||
## Release Lock
|
||||
|
||||
- ready: `true`
|
||||
- reason: clean generation-time HEAD
|
||||
- ready: `false`
|
||||
- reason: working tree was dirty at generation time
|
||||
- status scope: generation-time status before this report is written
|
||||
|
||||
## Evidence Bundle
|
||||
|
||||
- algorithm: `sha256(path,label,exists,artifact_sha256)`
|
||||
- artifacts: `24` / `24`
|
||||
- sha256: `890927c5a98eb60b569171a7473c213a5094d3a8e9b84705d687c4f3335220fd`
|
||||
- sha256: `60df1cebf40b1627f6d313c233f377d0d36228a9525b70099623563c7efb7804`
|
||||
|
||||
## Methodology Sections
|
||||
|
||||
@@ -72,25 +73,25 @@ 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 | `f2e8168cc313` |
|
||||
| output_execution | `reports/output_execution_runs.json` | present | `406fa9dd65ac` |
|
||||
| blind_review | `reports/output_blind_review_pack.json` | present | `bbe2db8ec277` |
|
||||
| review_adjudication | `reports/output_review_adjudication.json` | present | `240485a721af` |
|
||||
| trigger_scorecard | `reports/route_scorecard.json` | present | `c164e83e36d0` |
|
||||
| runtime_conformance | `reports/conformance_matrix.json` | present | `8251329e663d` |
|
||||
| trust_report | `reports/security_trust_report.json` | present | `00a557726381` |
|
||||
| python_compatibility | `reports/python_compatibility.json` | present | `533cd8824a27` |
|
||||
| registry_audit | `reports/registry_audit.json` | present | `9b54f3fd0768` |
|
||||
| trust_report | `reports/security_trust_report.json` | present | `cfabb1008f1c` |
|
||||
| python_compatibility | `reports/python_compatibility.json` | present | `fcf288346cb5` |
|
||||
| registry_audit | `reports/registry_audit.json` | present | `5765778984e6` |
|
||||
| package_verification | `reports/package_verification.json` | present | `2476ae8ec9c4` |
|
||||
| install_simulation | `reports/install_simulation.json` | present | `9c2e297394f9` |
|
||||
| skill_os2_audit | `reports/skill_os2_audit.json` | present | `47c5859d2a9c` |
|
||||
| world_class_evidence_plan | `reports/world_class_evidence_plan.json` | present | `b408af112c78` |
|
||||
| world_class_evidence_ledger | `reports/world_class_evidence_ledger.json` | present | `cc886713ba5b` |
|
||||
| world_class_evidence_intake | `reports/world_class_evidence_intake.json` | present | `2fbecc603d8d` |
|
||||
| world_class_submission_review | `reports/world_class_submission_review.json` | present | `bc690472684d` |
|
||||
| world_class_operator_runbook | `reports/world_class_operator_runbook.json` | present | `b4640688026e` |
|
||||
| world_class_operator_runbook_markdown | `reports/world_class_operator_runbook.md` | present | `3a916ac56837` |
|
||||
| world_class_operator_runbook_html | `reports/world_class_operator_runbook.html` | present | `886b915da0f2` |
|
||||
| world_class_claim_guard | `reports/world_class_claim_guard.json` | present | `8817531d97d4` |
|
||||
| install_simulation | `reports/install_simulation.json` | present | `46d0524a6968` |
|
||||
| skill_os2_audit | `reports/skill_os2_audit.json` | present | `8481f4d78f2a` |
|
||||
| world_class_evidence_plan | `reports/world_class_evidence_plan.json` | present | `933cdb002181` |
|
||||
| world_class_evidence_ledger | `reports/world_class_evidence_ledger.json` | present | `5407409841eb` |
|
||||
| world_class_evidence_intake | `reports/world_class_evidence_intake.json` | present | `b10e1ce0a5a1` |
|
||||
| world_class_submission_review | `reports/world_class_submission_review.json` | present | `3bce5f072d03` |
|
||||
| world_class_operator_runbook | `reports/world_class_operator_runbook.json` | present | `d377b8d99831` |
|
||||
| world_class_operator_runbook_markdown | `reports/world_class_operator_runbook.md` | present | `9f141f09bf48` |
|
||||
| world_class_operator_runbook_html | `reports/world_class_operator_runbook.html` | present | `04cc091b113f` |
|
||||
| world_class_claim_guard | `reports/world_class_claim_guard.json` | present | `7257fedb0a04` |
|
||||
|
||||
## Reproduction Commands
|
||||
|
||||
|
||||
@@ -200,6 +200,7 @@
|
||||
"scripts/render_review_studio.py",
|
||||
"scripts/render_review_viewer.py",
|
||||
"scripts/render_review_waivers.py",
|
||||
"scripts/render_skill_interpretation.py",
|
||||
"scripts/render_skill_os2_audit.py",
|
||||
"scripts/render_skill_os2_coverage.py",
|
||||
"scripts/render_skill_overview.py",
|
||||
@@ -226,8 +227,7 @@
|
||||
"scripts/run_conformance_suite.py",
|
||||
"scripts/run_description_optimization_suite.py",
|
||||
"scripts/run_eval_suite.py",
|
||||
"scripts/run_output_eval.py",
|
||||
"scripts/run_output_execution.py"
|
||||
"scripts/run_output_eval.py"
|
||||
],
|
||||
"assets": [
|
||||
"templates/basic_skill.md.j2",
|
||||
@@ -387,7 +387,7 @@
|
||||
},
|
||||
"file_write": {
|
||||
"required": true,
|
||||
"script_count": 66,
|
||||
"script_count": 67,
|
||||
"scripts": [
|
||||
"scripts/adjudicate_output_review.py",
|
||||
"scripts/build_confusion_matrix.py",
|
||||
@@ -432,6 +432,7 @@
|
||||
"scripts/render_review_studio.py",
|
||||
"scripts/render_review_viewer.py",
|
||||
"scripts/render_review_waivers.py",
|
||||
"scripts/render_skill_interpretation.py",
|
||||
"scripts/render_skill_os2_audit.py",
|
||||
"scripts/render_skill_os2_coverage.py",
|
||||
"scripts/render_skill_overview.py",
|
||||
@@ -493,14 +494,14 @@
|
||||
},
|
||||
"help_smoke": {
|
||||
"enabled": true,
|
||||
"checked_count": 79,
|
||||
"checked_count": 80,
|
||||
"failed_count": 0,
|
||||
"failed_scripts": []
|
||||
},
|
||||
"trust_summary": {
|
||||
"secret_findings": 0,
|
||||
"network_script_count": 3,
|
||||
"file_write_script_count": 66,
|
||||
"file_write_script_count": 67,
|
||||
"subprocess_script_count": 9,
|
||||
"interactive_script_count": 0,
|
||||
"help_smoke_failed_count": 0
|
||||
@@ -522,7 +523,7 @@
|
||||
],
|
||||
"capability_counts": {
|
||||
"network": 3,
|
||||
"file_write": 66,
|
||||
"file_write": 67,
|
||||
"subprocess": 9,
|
||||
"interactive": 0
|
||||
},
|
||||
@@ -635,7 +636,7 @@
|
||||
},
|
||||
"file_write": {
|
||||
"required": true,
|
||||
"script_count": 66,
|
||||
"script_count": 67,
|
||||
"scripts": [
|
||||
"scripts/adjudicate_output_review.py",
|
||||
"scripts/build_confusion_matrix.py",
|
||||
@@ -680,6 +681,7 @@
|
||||
"scripts/render_review_studio.py",
|
||||
"scripts/render_review_viewer.py",
|
||||
"scripts/render_review_waivers.py",
|
||||
"scripts/render_skill_interpretation.py",
|
||||
"scripts/render_skill_os2_audit.py",
|
||||
"scripts/render_skill_os2_coverage.py",
|
||||
"scripts/render_skill_overview.py",
|
||||
@@ -741,14 +743,14 @@
|
||||
},
|
||||
"help_smoke": {
|
||||
"enabled": true,
|
||||
"checked_count": 79,
|
||||
"checked_count": 80,
|
||||
"failed_count": 0,
|
||||
"failed_scripts": []
|
||||
},
|
||||
"trust_summary": {
|
||||
"secret_findings": 0,
|
||||
"network_script_count": 3,
|
||||
"file_write_script_count": 66,
|
||||
"file_write_script_count": 67,
|
||||
"subprocess_script_count": 9,
|
||||
"interactive_script_count": 0,
|
||||
"help_smoke_failed_count": 0
|
||||
@@ -768,7 +770,7 @@
|
||||
],
|
||||
"capability_counts": {
|
||||
"network": 3,
|
||||
"file_write": 66,
|
||||
"file_write": 67,
|
||||
"subprocess": 9,
|
||||
"interactive": 0
|
||||
},
|
||||
@@ -1057,6 +1059,7 @@
|
||||
"scripts/render_review_studio.py",
|
||||
"scripts/render_review_viewer.py",
|
||||
"scripts/render_review_waivers.py",
|
||||
"scripts/render_skill_interpretation.py",
|
||||
"scripts/render_skill_os2_audit.py",
|
||||
"scripts/render_skill_os2_coverage.py",
|
||||
"scripts/render_skill_overview.py",
|
||||
@@ -1083,8 +1086,7 @@
|
||||
"scripts/run_conformance_suite.py",
|
||||
"scripts/run_description_optimization_suite.py",
|
||||
"scripts/run_eval_suite.py",
|
||||
"scripts/run_output_eval.py",
|
||||
"scripts/run_output_execution.py"
|
||||
"scripts/run_output_eval.py"
|
||||
],
|
||||
"assets": [
|
||||
"templates/basic_skill.md.j2",
|
||||
@@ -1244,7 +1246,7 @@
|
||||
},
|
||||
"file_write": {
|
||||
"required": true,
|
||||
"script_count": 66,
|
||||
"script_count": 67,
|
||||
"scripts": [
|
||||
"scripts/adjudicate_output_review.py",
|
||||
"scripts/build_confusion_matrix.py",
|
||||
@@ -1289,6 +1291,7 @@
|
||||
"scripts/render_review_studio.py",
|
||||
"scripts/render_review_viewer.py",
|
||||
"scripts/render_review_waivers.py",
|
||||
"scripts/render_skill_interpretation.py",
|
||||
"scripts/render_skill_os2_audit.py",
|
||||
"scripts/render_skill_os2_coverage.py",
|
||||
"scripts/render_skill_overview.py",
|
||||
@@ -1350,14 +1353,14 @@
|
||||
},
|
||||
"help_smoke": {
|
||||
"enabled": true,
|
||||
"checked_count": 79,
|
||||
"checked_count": 80,
|
||||
"failed_count": 0,
|
||||
"failed_scripts": []
|
||||
},
|
||||
"trust_summary": {
|
||||
"secret_findings": 0,
|
||||
"network_script_count": 3,
|
||||
"file_write_script_count": 66,
|
||||
"file_write_script_count": 67,
|
||||
"subprocess_script_count": 9,
|
||||
"interactive_script_count": 0,
|
||||
"help_smoke_failed_count": 0
|
||||
@@ -1379,7 +1382,7 @@
|
||||
],
|
||||
"capability_counts": {
|
||||
"network": 3,
|
||||
"file_write": 66,
|
||||
"file_write": 67,
|
||||
"subprocess": 9,
|
||||
"interactive": 0
|
||||
},
|
||||
@@ -1492,7 +1495,7 @@
|
||||
},
|
||||
"file_write": {
|
||||
"required": true,
|
||||
"script_count": 66,
|
||||
"script_count": 67,
|
||||
"scripts": [
|
||||
"scripts/adjudicate_output_review.py",
|
||||
"scripts/build_confusion_matrix.py",
|
||||
@@ -1537,6 +1540,7 @@
|
||||
"scripts/render_review_studio.py",
|
||||
"scripts/render_review_viewer.py",
|
||||
"scripts/render_review_waivers.py",
|
||||
"scripts/render_skill_interpretation.py",
|
||||
"scripts/render_skill_os2_audit.py",
|
||||
"scripts/render_skill_os2_coverage.py",
|
||||
"scripts/render_skill_overview.py",
|
||||
@@ -1598,14 +1602,14 @@
|
||||
},
|
||||
"help_smoke": {
|
||||
"enabled": true,
|
||||
"checked_count": 79,
|
||||
"checked_count": 80,
|
||||
"failed_count": 0,
|
||||
"failed_scripts": []
|
||||
},
|
||||
"trust_summary": {
|
||||
"secret_findings": 0,
|
||||
"network_script_count": 3,
|
||||
"file_write_script_count": 66,
|
||||
"file_write_script_count": 67,
|
||||
"subprocess_script_count": 9,
|
||||
"interactive_script_count": 0,
|
||||
"help_smoke_failed_count": 0
|
||||
@@ -1625,7 +1629,7 @@
|
||||
],
|
||||
"capability_counts": {
|
||||
"network": 3,
|
||||
"file_write": 66,
|
||||
"file_write": 67,
|
||||
"subprocess": 9,
|
||||
"interactive": 0
|
||||
},
|
||||
@@ -1914,6 +1918,7 @@
|
||||
"scripts/render_review_studio.py",
|
||||
"scripts/render_review_viewer.py",
|
||||
"scripts/render_review_waivers.py",
|
||||
"scripts/render_skill_interpretation.py",
|
||||
"scripts/render_skill_os2_audit.py",
|
||||
"scripts/render_skill_os2_coverage.py",
|
||||
"scripts/render_skill_overview.py",
|
||||
@@ -1940,8 +1945,7 @@
|
||||
"scripts/run_conformance_suite.py",
|
||||
"scripts/run_description_optimization_suite.py",
|
||||
"scripts/run_eval_suite.py",
|
||||
"scripts/run_output_eval.py",
|
||||
"scripts/run_output_execution.py"
|
||||
"scripts/run_output_eval.py"
|
||||
],
|
||||
"assets": [
|
||||
"templates/basic_skill.md.j2",
|
||||
@@ -2101,7 +2105,7 @@
|
||||
},
|
||||
"file_write": {
|
||||
"required": true,
|
||||
"script_count": 66,
|
||||
"script_count": 67,
|
||||
"scripts": [
|
||||
"scripts/adjudicate_output_review.py",
|
||||
"scripts/build_confusion_matrix.py",
|
||||
@@ -2146,6 +2150,7 @@
|
||||
"scripts/render_review_studio.py",
|
||||
"scripts/render_review_viewer.py",
|
||||
"scripts/render_review_waivers.py",
|
||||
"scripts/render_skill_interpretation.py",
|
||||
"scripts/render_skill_os2_audit.py",
|
||||
"scripts/render_skill_os2_coverage.py",
|
||||
"scripts/render_skill_overview.py",
|
||||
@@ -2207,14 +2212,14 @@
|
||||
},
|
||||
"help_smoke": {
|
||||
"enabled": true,
|
||||
"checked_count": 79,
|
||||
"checked_count": 80,
|
||||
"failed_count": 0,
|
||||
"failed_scripts": []
|
||||
},
|
||||
"trust_summary": {
|
||||
"secret_findings": 0,
|
||||
"network_script_count": 3,
|
||||
"file_write_script_count": 66,
|
||||
"file_write_script_count": 67,
|
||||
"subprocess_script_count": 9,
|
||||
"interactive_script_count": 0,
|
||||
"help_smoke_failed_count": 0
|
||||
@@ -2236,7 +2241,7 @@
|
||||
],
|
||||
"capability_counts": {
|
||||
"network": 3,
|
||||
"file_write": 66,
|
||||
"file_write": 67,
|
||||
"subprocess": 9,
|
||||
"interactive": 0
|
||||
},
|
||||
@@ -2342,7 +2347,7 @@
|
||||
},
|
||||
"file_write": {
|
||||
"required": true,
|
||||
"script_count": 66,
|
||||
"script_count": 67,
|
||||
"scripts": [
|
||||
"scripts/adjudicate_output_review.py",
|
||||
"scripts/build_confusion_matrix.py",
|
||||
@@ -2387,6 +2392,7 @@
|
||||
"scripts/render_review_studio.py",
|
||||
"scripts/render_review_viewer.py",
|
||||
"scripts/render_review_waivers.py",
|
||||
"scripts/render_skill_interpretation.py",
|
||||
"scripts/render_skill_os2_audit.py",
|
||||
"scripts/render_skill_os2_coverage.py",
|
||||
"scripts/render_skill_overview.py",
|
||||
@@ -2448,14 +2454,14 @@
|
||||
},
|
||||
"help_smoke": {
|
||||
"enabled": true,
|
||||
"checked_count": 79,
|
||||
"checked_count": 80,
|
||||
"failed_count": 0,
|
||||
"failed_scripts": []
|
||||
},
|
||||
"trust_summary": {
|
||||
"secret_findings": 0,
|
||||
"network_script_count": 3,
|
||||
"file_write_script_count": 66,
|
||||
"file_write_script_count": 67,
|
||||
"subprocess_script_count": 9,
|
||||
"interactive_script_count": 0,
|
||||
"help_smoke_failed_count": 0
|
||||
@@ -2475,7 +2481,7 @@
|
||||
],
|
||||
"capability_counts": {
|
||||
"network": 3,
|
||||
"file_write": 66,
|
||||
"file_write": 67,
|
||||
"subprocess": 9,
|
||||
"interactive": 0
|
||||
},
|
||||
@@ -2755,6 +2761,7 @@
|
||||
"scripts/render_review_studio.py",
|
||||
"scripts/render_review_viewer.py",
|
||||
"scripts/render_review_waivers.py",
|
||||
"scripts/render_skill_interpretation.py",
|
||||
"scripts/render_skill_os2_audit.py",
|
||||
"scripts/render_skill_os2_coverage.py",
|
||||
"scripts/render_skill_overview.py",
|
||||
@@ -2781,8 +2788,7 @@
|
||||
"scripts/run_conformance_suite.py",
|
||||
"scripts/run_description_optimization_suite.py",
|
||||
"scripts/run_eval_suite.py",
|
||||
"scripts/run_output_eval.py",
|
||||
"scripts/run_output_execution.py"
|
||||
"scripts/run_output_eval.py"
|
||||
],
|
||||
"assets": [
|
||||
"templates/basic_skill.md.j2",
|
||||
@@ -2942,7 +2948,7 @@
|
||||
},
|
||||
"file_write": {
|
||||
"required": true,
|
||||
"script_count": 66,
|
||||
"script_count": 67,
|
||||
"scripts": [
|
||||
"scripts/adjudicate_output_review.py",
|
||||
"scripts/build_confusion_matrix.py",
|
||||
@@ -2987,6 +2993,7 @@
|
||||
"scripts/render_review_studio.py",
|
||||
"scripts/render_review_viewer.py",
|
||||
"scripts/render_review_waivers.py",
|
||||
"scripts/render_skill_interpretation.py",
|
||||
"scripts/render_skill_os2_audit.py",
|
||||
"scripts/render_skill_os2_coverage.py",
|
||||
"scripts/render_skill_overview.py",
|
||||
@@ -3048,14 +3055,14 @@
|
||||
},
|
||||
"help_smoke": {
|
||||
"enabled": true,
|
||||
"checked_count": 79,
|
||||
"checked_count": 80,
|
||||
"failed_count": 0,
|
||||
"failed_scripts": []
|
||||
},
|
||||
"trust_summary": {
|
||||
"secret_findings": 0,
|
||||
"network_script_count": 3,
|
||||
"file_write_script_count": 66,
|
||||
"file_write_script_count": 67,
|
||||
"subprocess_script_count": 9,
|
||||
"interactive_script_count": 0,
|
||||
"help_smoke_failed_count": 0
|
||||
@@ -3077,7 +3084,7 @@
|
||||
],
|
||||
"capability_counts": {
|
||||
"network": 3,
|
||||
"file_write": 66,
|
||||
"file_write": 67,
|
||||
"subprocess": 9,
|
||||
"interactive": 0
|
||||
},
|
||||
@@ -3183,7 +3190,7 @@
|
||||
},
|
||||
"file_write": {
|
||||
"required": true,
|
||||
"script_count": 66,
|
||||
"script_count": 67,
|
||||
"scripts": [
|
||||
"scripts/adjudicate_output_review.py",
|
||||
"scripts/build_confusion_matrix.py",
|
||||
@@ -3228,6 +3235,7 @@
|
||||
"scripts/render_review_studio.py",
|
||||
"scripts/render_review_viewer.py",
|
||||
"scripts/render_review_waivers.py",
|
||||
"scripts/render_skill_interpretation.py",
|
||||
"scripts/render_skill_os2_audit.py",
|
||||
"scripts/render_skill_os2_coverage.py",
|
||||
"scripts/render_skill_overview.py",
|
||||
@@ -3289,14 +3297,14 @@
|
||||
},
|
||||
"help_smoke": {
|
||||
"enabled": true,
|
||||
"checked_count": 79,
|
||||
"checked_count": 80,
|
||||
"failed_count": 0,
|
||||
"failed_scripts": []
|
||||
},
|
||||
"trust_summary": {
|
||||
"secret_findings": 0,
|
||||
"network_script_count": 3,
|
||||
"file_write_script_count": 66,
|
||||
"file_write_script_count": 67,
|
||||
"subprocess_script_count": 9,
|
||||
"interactive_script_count": 0,
|
||||
"help_smoke_failed_count": 0
|
||||
@@ -3316,7 +3324,7 @@
|
||||
],
|
||||
"capability_counts": {
|
||||
"network": 3,
|
||||
"file_write": 66,
|
||||
"file_write": 67,
|
||||
"subprocess": 9,
|
||||
"interactive": 0
|
||||
},
|
||||
@@ -3596,6 +3604,7 @@
|
||||
"scripts/render_review_studio.py",
|
||||
"scripts/render_review_viewer.py",
|
||||
"scripts/render_review_waivers.py",
|
||||
"scripts/render_skill_interpretation.py",
|
||||
"scripts/render_skill_os2_audit.py",
|
||||
"scripts/render_skill_os2_coverage.py",
|
||||
"scripts/render_skill_overview.py",
|
||||
@@ -3622,8 +3631,7 @@
|
||||
"scripts/run_conformance_suite.py",
|
||||
"scripts/run_description_optimization_suite.py",
|
||||
"scripts/run_eval_suite.py",
|
||||
"scripts/run_output_eval.py",
|
||||
"scripts/run_output_execution.py"
|
||||
"scripts/run_output_eval.py"
|
||||
],
|
||||
"assets": [
|
||||
"templates/basic_skill.md.j2",
|
||||
@@ -3783,7 +3791,7 @@
|
||||
},
|
||||
"file_write": {
|
||||
"required": true,
|
||||
"script_count": 66,
|
||||
"script_count": 67,
|
||||
"scripts": [
|
||||
"scripts/adjudicate_output_review.py",
|
||||
"scripts/build_confusion_matrix.py",
|
||||
@@ -3828,6 +3836,7 @@
|
||||
"scripts/render_review_studio.py",
|
||||
"scripts/render_review_viewer.py",
|
||||
"scripts/render_review_waivers.py",
|
||||
"scripts/render_skill_interpretation.py",
|
||||
"scripts/render_skill_os2_audit.py",
|
||||
"scripts/render_skill_os2_coverage.py",
|
||||
"scripts/render_skill_overview.py",
|
||||
@@ -3889,14 +3898,14 @@
|
||||
},
|
||||
"help_smoke": {
|
||||
"enabled": true,
|
||||
"checked_count": 79,
|
||||
"checked_count": 80,
|
||||
"failed_count": 0,
|
||||
"failed_scripts": []
|
||||
},
|
||||
"trust_summary": {
|
||||
"secret_findings": 0,
|
||||
"network_script_count": 3,
|
||||
"file_write_script_count": 66,
|
||||
"file_write_script_count": 67,
|
||||
"subprocess_script_count": 9,
|
||||
"interactive_script_count": 0,
|
||||
"help_smoke_failed_count": 0
|
||||
@@ -3918,7 +3927,7 @@
|
||||
],
|
||||
"capability_counts": {
|
||||
"network": 3,
|
||||
"file_write": 66,
|
||||
"file_write": 67,
|
||||
"subprocess": 9,
|
||||
"interactive": 0
|
||||
},
|
||||
@@ -4028,7 +4037,7 @@
|
||||
},
|
||||
"file_write": {
|
||||
"required": true,
|
||||
"script_count": 66,
|
||||
"script_count": 67,
|
||||
"scripts": [
|
||||
"scripts/adjudicate_output_review.py",
|
||||
"scripts/build_confusion_matrix.py",
|
||||
@@ -4073,6 +4082,7 @@
|
||||
"scripts/render_review_studio.py",
|
||||
"scripts/render_review_viewer.py",
|
||||
"scripts/render_review_waivers.py",
|
||||
"scripts/render_skill_interpretation.py",
|
||||
"scripts/render_skill_os2_audit.py",
|
||||
"scripts/render_skill_os2_coverage.py",
|
||||
"scripts/render_skill_overview.py",
|
||||
@@ -4134,14 +4144,14 @@
|
||||
},
|
||||
"help_smoke": {
|
||||
"enabled": true,
|
||||
"checked_count": 79,
|
||||
"checked_count": 80,
|
||||
"failed_count": 0,
|
||||
"failed_scripts": []
|
||||
},
|
||||
"trust_summary": {
|
||||
"secret_findings": 0,
|
||||
"network_script_count": 3,
|
||||
"file_write_script_count": 66,
|
||||
"file_write_script_count": 67,
|
||||
"subprocess_script_count": 9,
|
||||
"interactive_script_count": 0,
|
||||
"help_smoke_failed_count": 0
|
||||
@@ -4161,7 +4171,7 @@
|
||||
],
|
||||
"capability_counts": {
|
||||
"network": 3,
|
||||
"file_write": 66,
|
||||
"file_write": 67,
|
||||
"subprocess": 9,
|
||||
"interactive": 0
|
||||
},
|
||||
|
||||
+10
-10
@@ -6,16 +6,16 @@
|
||||
"context_budget_tier": "production",
|
||||
"context_budget_limit": 1000,
|
||||
"skill_body_tokens": 767,
|
||||
"other_text_tokens": 1283170,
|
||||
"other_text_tokens": 1308653,
|
||||
"estimated_initial_load_tokens": 960,
|
||||
"estimated_total_text_tokens": 1283937,
|
||||
"deferred_resource_tokens": 414478,
|
||||
"estimated_total_text_tokens": 1309420,
|
||||
"deferred_resource_tokens": 416426,
|
||||
"deferred_resource_warn_threshold": 120000,
|
||||
"deferred_resource_dirs": [
|
||||
{
|
||||
"path": "scripts",
|
||||
"estimated_tokens": 365888,
|
||||
"file_count": 105
|
||||
"estimated_tokens": 367836,
|
||||
"file_count": 106
|
||||
},
|
||||
{
|
||||
"path": "references",
|
||||
@@ -31,8 +31,8 @@
|
||||
"large_deferred_resource_dirs": [
|
||||
{
|
||||
"path": "scripts",
|
||||
"estimated_tokens": 365888,
|
||||
"file_count": 105
|
||||
"estimated_tokens": 367836,
|
||||
"file_count": 106
|
||||
}
|
||||
],
|
||||
"deferred_resource_governance": {
|
||||
@@ -54,14 +54,14 @@
|
||||
],
|
||||
"missing": [],
|
||||
"path": "scripts",
|
||||
"estimated_tokens": 365888,
|
||||
"file_count": 105,
|
||||
"estimated_tokens": 367836,
|
||||
"file_count": 106,
|
||||
"rationale": "Script resources are deterministic deferred tools, not initial-load prompt context."
|
||||
}
|
||||
],
|
||||
"summary": "Large deferred resources are indexed and backed by evidence."
|
||||
},
|
||||
"relevant_file_count": 537,
|
||||
"relevant_file_count": 544,
|
||||
"unused_resource_dirs": [],
|
||||
"quality_signal_points": 130,
|
||||
"quality_density": 135.4
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
| Target | Path | Tier | Limit | Initial | SKILL | Deferred | Resource Governance | Large Deferred Dirs | Quality Density | Unused Dirs | Status |
|
||||
| --- | --- | --- | ---: | ---: | ---: | ---: | --- | --- | ---: | --- | --- |
|
||||
| root | `.` | `production` | 1000 | 960 | 767 | 414478 | `governed` | scripts:365888 | 135.4 | - | ok |
|
||||
| root | `.` | `production` | 1000 | 960 | 767 | 416426 | `governed` | scripts:367836 | 135.4 | - | ok |
|
||||
| complex-release-orchestrator | `examples/complex-release-orchestrator/generated-skill` | `production` | 1000 | 790 | 718 | 1657 | `not-required` | - | 164.6 | - | ok |
|
||||
| governed-incident-command | `examples/governed-incident-command/generated-skill` | `production` | 1000 | 760 | 658 | 1030 | `not-required` | - | 171.1 | - | ok |
|
||||
|
||||
|
||||
@@ -8,12 +8,12 @@
|
||||
"budget_limit": 1000,
|
||||
"initial_tokens": 960,
|
||||
"skill_body_tokens": 767,
|
||||
"deferred_resource_tokens": 414478,
|
||||
"deferred_resource_tokens": 416426,
|
||||
"large_deferred_resource_dirs": [
|
||||
{
|
||||
"path": "scripts",
|
||||
"estimated_tokens": 365888,
|
||||
"file_count": 105
|
||||
"estimated_tokens": 367836,
|
||||
"file_count": 106
|
||||
}
|
||||
],
|
||||
"deferred_resource_governance": {
|
||||
@@ -35,8 +35,8 @@
|
||||
],
|
||||
"missing": [],
|
||||
"path": "scripts",
|
||||
"estimated_tokens": 365888,
|
||||
"file_count": 105,
|
||||
"estimated_tokens": 367836,
|
||||
"file_count": 106,
|
||||
"rationale": "Script resources are deterministic deferred tools, not initial-load prompt context."
|
||||
}
|
||||
],
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
"installed_skill_dir": "tests/tmp_review_studio/install-root/simulate-yao-meta-skill/yao-meta-skill",
|
||||
"summary": {
|
||||
"archive_present": true,
|
||||
"archive_entry_count": 598,
|
||||
"archive_entry_count": 603,
|
||||
"archive_extracted": true,
|
||||
"entrypoint_loaded": true,
|
||||
"manifest_loaded": true,
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
"execution_mode": "command",
|
||||
"model_executed": false,
|
||||
"command_executed": true,
|
||||
"duration_ms": 58.58,
|
||||
"duration_ms": 33.86,
|
||||
"provider": "local-output-eval-runner",
|
||||
"model": "",
|
||||
"usage": {
|
||||
@@ -62,7 +62,7 @@
|
||||
"execution_mode": "command",
|
||||
"model_executed": false,
|
||||
"command_executed": true,
|
||||
"duration_ms": 40.49,
|
||||
"duration_ms": 34.88,
|
||||
"provider": "local-output-eval-runner",
|
||||
"model": "",
|
||||
"usage": {
|
||||
@@ -85,7 +85,7 @@
|
||||
"execution_mode": "command",
|
||||
"model_executed": false,
|
||||
"command_executed": true,
|
||||
"duration_ms": 39.32,
|
||||
"duration_ms": 42.96,
|
||||
"provider": "local-output-eval-runner",
|
||||
"model": "",
|
||||
"usage": {
|
||||
@@ -113,7 +113,7 @@
|
||||
"execution_mode": "command",
|
||||
"model_executed": false,
|
||||
"command_executed": true,
|
||||
"duration_ms": 38.11,
|
||||
"duration_ms": 40.67,
|
||||
"provider": "local-output-eval-runner",
|
||||
"model": "",
|
||||
"usage": {
|
||||
@@ -136,7 +136,7 @@
|
||||
"execution_mode": "command",
|
||||
"model_executed": false,
|
||||
"command_executed": true,
|
||||
"duration_ms": 50.33,
|
||||
"duration_ms": 41.06,
|
||||
"provider": "local-output-eval-runner",
|
||||
"model": "",
|
||||
"usage": {
|
||||
@@ -164,7 +164,7 @@
|
||||
"execution_mode": "command",
|
||||
"model_executed": false,
|
||||
"command_executed": true,
|
||||
"duration_ms": 50.85,
|
||||
"duration_ms": 39.95,
|
||||
"provider": "local-output-eval-runner",
|
||||
"model": "",
|
||||
"usage": {
|
||||
@@ -187,7 +187,7 @@
|
||||
"execution_mode": "command",
|
||||
"model_executed": false,
|
||||
"command_executed": true,
|
||||
"duration_ms": 40.77,
|
||||
"duration_ms": 42.05,
|
||||
"provider": "local-output-eval-runner",
|
||||
"model": "",
|
||||
"usage": {
|
||||
@@ -214,7 +214,7 @@
|
||||
"execution_mode": "command",
|
||||
"model_executed": false,
|
||||
"command_executed": true,
|
||||
"duration_ms": 37.9,
|
||||
"duration_ms": 41.65,
|
||||
"provider": "local-output-eval-runner",
|
||||
"model": "",
|
||||
"usage": {
|
||||
@@ -237,7 +237,7 @@
|
||||
"execution_mode": "command",
|
||||
"model_executed": false,
|
||||
"command_executed": true,
|
||||
"duration_ms": 36.65,
|
||||
"duration_ms": 43.42,
|
||||
"provider": "local-output-eval-runner",
|
||||
"model": "",
|
||||
"usage": {
|
||||
@@ -266,7 +266,7 @@
|
||||
"execution_mode": "command",
|
||||
"model_executed": false,
|
||||
"command_executed": true,
|
||||
"duration_ms": 35.4,
|
||||
"duration_ms": 44.08,
|
||||
"provider": "local-output-eval-runner",
|
||||
"model": "",
|
||||
"usage": {
|
||||
|
||||
@@ -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 | 58.58 | 33 | 0.0 | pass |
|
||||
| skill-package-contract | with_skill | command | local-output-eval-runner | 40.49 | 73 | 100.0 | pass |
|
||||
| output-eval-expectation | baseline | command | local-output-eval-runner | 39.32 | 36 | 0.0 | pass |
|
||||
| output-eval-expectation | with_skill | command | local-output-eval-runner | 38.11 | 80 | 100.0 | pass |
|
||||
| ir-before-packaging | baseline | command | local-output-eval-runner | 50.33 | 33 | 0.0 | pass |
|
||||
| ir-before-packaging | with_skill | command | local-output-eval-runner | 50.85 | 80 | 100.0 | pass |
|
||||
| near-neighbor-boundary | baseline | command | local-output-eval-runner | 40.77 | 36 | 0.0 | pass |
|
||||
| near-neighbor-boundary | with_skill | command | local-output-eval-runner | 37.9 | 65 | 100.0 | pass |
|
||||
| file-backed-governed-package | baseline | command | local-output-eval-runner | 36.65 | 37 | 0.0 | pass |
|
||||
| file-backed-governed-package | with_skill | command | local-output-eval-runner | 35.4 | 98 | 100.0 | pass |
|
||||
| skill-package-contract | baseline | command | local-output-eval-runner | 33.86 | 33 | 0.0 | pass |
|
||||
| skill-package-contract | with_skill | command | local-output-eval-runner | 34.88 | 73 | 100.0 | pass |
|
||||
| output-eval-expectation | baseline | command | local-output-eval-runner | 42.96 | 36 | 0.0 | pass |
|
||||
| output-eval-expectation | with_skill | command | local-output-eval-runner | 40.67 | 80 | 100.0 | pass |
|
||||
| ir-before-packaging | baseline | command | local-output-eval-runner | 41.06 | 33 | 0.0 | pass |
|
||||
| ir-before-packaging | with_skill | command | local-output-eval-runner | 39.95 | 80 | 100.0 | pass |
|
||||
| near-neighbor-boundary | baseline | command | local-output-eval-runner | 42.05 | 36 | 0.0 | pass |
|
||||
| near-neighbor-boundary | with_skill | command | local-output-eval-runner | 41.65 | 65 | 100.0 | pass |
|
||||
| file-backed-governed-package | baseline | command | local-output-eval-runner | 43.42 | 37 | 0.0 | pass |
|
||||
| file-backed-governed-package | with_skill | command | local-output-eval-runner | 44.08 | 98 | 100.0 | pass |
|
||||
|
||||
## Next Fixes
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
"root": ".",
|
||||
"summary": {
|
||||
"target_python": "3.11",
|
||||
"file_count": 169,
|
||||
"file_count": 171,
|
||||
"issue_count": 0,
|
||||
"syntax_error_count": 0,
|
||||
"fstring_311_violation_count": 0,
|
||||
@@ -352,6 +352,12 @@
|
||||
"issue_count": 0,
|
||||
"issues": []
|
||||
},
|
||||
{
|
||||
"path": "scripts/render_skill_interpretation.py",
|
||||
"ok": true,
|
||||
"issue_count": 0,
|
||||
"issues": []
|
||||
},
|
||||
{
|
||||
"path": "scripts/render_skill_os2_audit.py",
|
||||
"ok": true,
|
||||
@@ -916,6 +922,12 @@
|
||||
"issue_count": 0,
|
||||
"issues": []
|
||||
},
|
||||
{
|
||||
"path": "tests/verify_skill_interpretation.py",
|
||||
"ok": true,
|
||||
"issue_count": 0,
|
||||
"issues": []
|
||||
},
|
||||
{
|
||||
"path": "tests/verify_skill_ir.py",
|
||||
"ok": true,
|
||||
|
||||
@@ -6,7 +6,7 @@ Generated at: `2026-06-13`
|
||||
|
||||
- decision: `pass`
|
||||
- target python: `3.11`
|
||||
- files scanned: `169`
|
||||
- files scanned: `171`
|
||||
- issues: `0`
|
||||
- syntax errors: `0`
|
||||
- f-string 3.11 violations: `0`
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
"trust_level": "local",
|
||||
"license": "MIT",
|
||||
"checksums": {
|
||||
"package_sha256": "37a1ec0f35323886bdae64523b4113f5dc4ba3153117ee4980b8e5cd54b49aba",
|
||||
"package_sha256": "652c3a4a1f091d875bfacdd44da9a91bc02fec90af3fe76cf3a71a6dc80aba58",
|
||||
"archive_sha256": "6852cf91a74d232c32d732b7c159c971827abf23af50153987193b084ad3b5cc"
|
||||
},
|
||||
"compatibility": {
|
||||
@@ -78,7 +78,7 @@
|
||||
"vscode"
|
||||
],
|
||||
"package_metadata": "registry/packages/yao-meta-skill.json",
|
||||
"package_sha256": "37a1ec0f35323886bdae64523b4113f5dc4ba3153117ee4980b8e5cd54b49aba"
|
||||
"package_sha256": "652c3a4a1f091d875bfacdd44da9a91bc02fec90af3fe76cf3a71a6dc80aba58"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
- Maturity: `governed`
|
||||
- Owner: `Yao Team`
|
||||
- License: `MIT`
|
||||
- Package SHA256: `37a1ec0f35323886bdae64523b4113f5dc4ba3153117ee4980b8e5cd54b49aba`
|
||||
- Package SHA256: `652c3a4a1f091d875bfacdd44da9a91bc02fec90af3fe76cf3a71a6dc80aba58`
|
||||
- Archive SHA256: `6852cf91a74d232c32d732b7c159c971827abf23af50153987193b084ad3b5cc`
|
||||
- Install simulated: `True`
|
||||
|
||||
|
||||
@@ -676,12 +676,12 @@
|
||||
|
||||
<section>
|
||||
<h2>核心指标</h2>
|
||||
<div class="metrics"><article class='metric'><span>Skill IR</span><strong>2.0.0</strong><p>5 targets in platform-neutral contract</p></article><article class='metric'><span>Compiler</span><strong>5/5</strong><p>target contracts compiled from Skill IR</p></article><article class='metric'><span>Output Delta</span><strong>100.0</strong><p>5 cases; 1 file-backed</p></article><article class='metric'><span>Exec Runs</span><strong>10</strong><p>command 10; model 0; recorded 0</p></article><article class='metric'><span>Blind A/B</span><strong>5</strong><p>review pairs hide baseline vs with-skill labels</p></article><article class='metric'><span>Review Kit</span><strong>0/5</strong><p>pending 5; answer key hidden</p></article><article class='metric'><span>Review A/B</span><strong>0/5</strong><p>adjudication decisions; pending 5</p></article><article class='metric'><span>Public Claim</span><strong>blocked</strong><p>4 blockers; local reproducible true</p></article><article class='metric'><span>Blueprint</span><strong>20/20</strong><p>2.0 coverage; extensions partial 2, planned 0; evidence pending 4</p></article><article class='metric'><span>Runtime</span><strong>5/5</strong><p>target conformance pass rate</p></article><article class='metric'><span>Perm Probe</span><strong>4/4</strong><p>0 native; 4 installer-enforced</p></article><article class='metric'><span>Trust</span><strong>0</strong><p>105 scripts scanned; secrets found</p></article><article class='metric'><span>Py Compat</span><strong>0</strong><p>169 files scanned for Python 3.11</p></article><article class='metric'><span>Arch Debt</span><strong>0</strong><p>894 largest lines; 34 CLI handlers</p></article><article class='metric'><span>Atlas</span><strong>5</strong><p>12 scanned skills; route collisions</p></article><article class='metric'><span>Drift</span><strong>low</strong><p>1 metadata events; 0 missed triggers</p></article><article class='metric'><span>Waivers</span><strong>0</strong><p>0 gates covered; human risk decisions</p></article><article class='metric'><span>Intake</span><strong>4/4</strong><p>0 valid submissions; 0 invalid</p></article><article class='metric'><span>Claim Guard</span><strong>0</strong><p>75 public surfaces scanned</p></article><article class='metric'><span>Notes</span><strong>0/0</strong><p>0 open blocker annotations</p></article><article class='metric'><span>Registry</span><strong>1.1.0</strong><p>5 targets; MIT license</p></article><article class='metric'><span>Archive</span><strong>pass</strong><p>586 zip entries; package verification</p></article><article class='metric'><span>Install</span><strong>pass</strong><p>4 adapters; 12 permissions enforced; 0 permission failures</p></article><article class='metric'><span>Upgrade</span><strong>minor</strong><p>declared minor; 0 breaking changes</p></article></div>
|
||||
<div class="metrics"><article class='metric'><span>Skill IR</span><strong>2.0.0</strong><p>5 targets in platform-neutral contract</p></article><article class='metric'><span>Compiler</span><strong>5/5</strong><p>target contracts compiled from Skill IR</p></article><article class='metric'><span>Output Delta</span><strong>100.0</strong><p>5 cases; 1 file-backed</p></article><article class='metric'><span>Exec Runs</span><strong>10</strong><p>command 10; model 0; recorded 0</p></article><article class='metric'><span>Blind A/B</span><strong>5</strong><p>review pairs hide baseline vs with-skill labels</p></article><article class='metric'><span>Review Kit</span><strong>0/5</strong><p>pending 5; answer key hidden</p></article><article class='metric'><span>Review A/B</span><strong>0/5</strong><p>adjudication decisions; pending 5</p></article><article class='metric'><span>Public Claim</span><strong>blocked</strong><p>5 blockers; local reproducible true</p></article><article class='metric'><span>Blueprint</span><strong>20/20</strong><p>2.0 coverage; extensions partial 1, planned 0; evidence pending 4</p></article><article class='metric'><span>Runtime</span><strong>5/5</strong><p>target conformance pass rate</p></article><article class='metric'><span>Perm Probe</span><strong>4/4</strong><p>0 native; 4 installer-enforced</p></article><article class='metric'><span>Trust</span><strong>0</strong><p>106 scripts scanned; secrets found</p></article><article class='metric'><span>Py Compat</span><strong>0</strong><p>171 files scanned for Python 3.11</p></article><article class='metric'><span>Arch Debt</span><strong>0</strong><p>886 largest lines; 34 CLI handlers</p></article><article class='metric'><span>Atlas</span><strong>5</strong><p>12 scanned skills; route collisions</p></article><article class='metric'><span>Drift</span><strong>low</strong><p>1 metadata events; 0 missed triggers</p></article><article class='metric'><span>Waivers</span><strong>0</strong><p>0 gates covered; human risk decisions</p></article><article class='metric'><span>Intake</span><strong>4/4</strong><p>0 valid submissions; 0 invalid</p></article><article class='metric'><span>Claim Guard</span><strong>0</strong><p>76 public surfaces scanned</p></article><article class='metric'><span>Notes</span><strong>0/0</strong><p>0 open blocker annotations</p></article><article class='metric'><span>Registry</span><strong>1.1.0</strong><p>5 targets; MIT license</p></article><article class='metric'><span>Archive</span><strong>pass</strong><p>586 zip entries; package verification</p></article><article class='metric'><span>Install</span><strong>pass</strong><p>4 adapters; 12 permissions enforced; 0 permission failures</p></article><article class='metric'><span>Upgrade</span><strong>minor</strong><p>declared minor; 0 breaking changes</p></article></div>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2>审查闸门</h2>
|
||||
<div class="gates"><article class='gate pass'><div><span>通过</span><h3>意图画布</h3></div><p>intent confidence 100/100; Intent is clear enough to package the first routeable version.</p><footer>reports/intent-confidence.json <a href='intent-confidence.md'>证据</a></footer></article><article class='gate pass'><div><span>通过</span><h3>触发实验</h3></div><p>13 trigger cases; 0 misroutes; 0 ambiguous</p><footer>reports/route_scorecard.json <a href='route_scorecard.md'>证据</a></footer></article><article class='gate warn'><div><span>关注</span><h3>输出实验</h3></div><p>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</p><footer>reports/output_quality_scorecard.json <a href='output_quality_scorecard.md'>证据</a></footer></article><article class='gate pass'><div><span>通过</span><h3>上下文</h3></div><p>initial load 960/1000; deferred 414478/120000; top deferred scripts 365888; resource governance governed; quality density 135.4</p><footer>reports/context_budget.json <a href='context_budget.md'>证据</a></footer></article><article class='gate pass'><div><span>通过</span><h3>运行矩阵</h3></div><p>5 / 5 targets pass</p><footer>reports/conformance_matrix.json <a href='conformance_matrix.md'>证据</a></footer></article><article class='gate pass'><div><span>通过</span><h3>信任报告</h3></div><p>0 secrets; 105 scripts; 3 network-capable scripts; 0 help smoke failures</p><footer>reports/security_trust_report.json <a href='security_trust_report.md'>证据</a></footer></article><article class='gate pass'><div><span>通过</span><h3>Python 兼容</h3></div><p>Python 3.11; 169 files; 0 compatibility issues; 0 syntax; 0 f-string 3.11 hazards</p><footer>reports/python_compatibility.json <a href='python_compatibility.md'>证据</a></footer></article><article class='gate pass'><div><span>通过</span><h3>架构维护</h3></div><p>166 Python files; 0 hotspots; 0 blockers; largest 894 lines; 34 CLI handlers</p><footer>reports/architecture_maintainability.json <a href='architecture_maintainability.md'>证据</a></footer></article><article class='gate pass'><div><span>通过</span><h3>权限批准</h3></div><p>3/3 permissions approved; gaps 0; required file_write, network, subprocess</p><footer>reports/security_trust_report.json + security/permission_policy.json <a href='../security/permission_policy.md'>证据</a></footer></article><article class='gate pass'><div><span>通过</span><h3>权限探针</h3></div><p>4/4 targets probed; native 0; metadata fallback 4; installer 4; residual risks 4</p><footer>reports/runtime_permission_probes.json <a href='runtime_permission_probes.md'>证据</a></footer></article><article class='gate pass'><div><span>通过</span><h3>组合治理</h3></div><p>12 skills, 1 actionable; 0 actionable route collisions; 0 actionable owner gaps; 0 actionable stale; 0 actionable drift; 24 scoped non-actionable issues</p><footer>reports/skill_atlas.json <a href='skill_atlas.html'>证据</a></footer></article><article class='gate pass'><div><span>通过</span><h3>运营回路</h3></div><p>1 metadata events; adoption 100.0; missed 0; bad-output 0; risk low</p><footer>reports/adoption_drift_report.json <a href='adoption_drift_report.md'>证据</a></footer></article><article class='gate warn'><div><span>关注</span><h3>人工批准</h3></div><p>0 active waivers; 1 warning gates still need reviewer decision</p><footer>reports/review_waivers.json <a href='review_waivers.md'>证据</a></footer></article><article class='gate warn'><div><span>关注</span><h3>世界证据</h3></div><p>4 pending world-class evidence entries; 1 human pending; 3 external pending; source checks 7/13 pass; 6 blocked; overclaim guard true</p><footer>reports/world_class_evidence_ledger.json <a href='world_class_evidence_ledger.md'>证据</a></footer></article><article class='gate pass'><div><span>通过</span><h3>注册审计</h3></div><p>yao-meta-skill 1.1.0; 6/6 compatibility entries pass; install pass with 4 adapters; installer permissions 12 enforced / 0 failures</p><footer>reports/registry_audit.json + reports/install_simulation.json <a href='registry_audit.md'>证据</a></footer></article><article class='gate pass'><div><span>通过</span><h3>发布路线</h3></div><p>0 promote; 3 keep current; 0 blocked; upgrade minor declared / minor recommended</p><footer>reports/promotion_decisions.json + reports/upgrade_check.json + docs/migration-v2.md <a href='promotion_decisions.md'>证据</a></footer></article></div>
|
||||
<div class="gates"><article class='gate pass'><div><span>通过</span><h3>意图画布</h3></div><p>intent confidence 100/100; Intent is clear enough to package the first routeable version.</p><footer>reports/intent-confidence.json <a href='intent-confidence.md'>证据</a></footer></article><article class='gate pass'><div><span>通过</span><h3>触发实验</h3></div><p>13 trigger cases; 0 misroutes; 0 ambiguous</p><footer>reports/route_scorecard.json <a href='route_scorecard.md'>证据</a></footer></article><article class='gate warn'><div><span>关注</span><h3>输出实验</h3></div><p>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</p><footer>reports/output_quality_scorecard.json <a href='output_quality_scorecard.md'>证据</a></footer></article><article class='gate pass'><div><span>通过</span><h3>上下文</h3></div><p>initial load 960/1000; deferred 416415/120000; top deferred scripts 367825; resource governance governed; quality density 135.4</p><footer>reports/context_budget.json <a href='context_budget.md'>证据</a></footer></article><article class='gate pass'><div><span>通过</span><h3>运行矩阵</h3></div><p>5 / 5 targets pass</p><footer>reports/conformance_matrix.json <a href='conformance_matrix.md'>证据</a></footer></article><article class='gate pass'><div><span>通过</span><h3>信任报告</h3></div><p>0 secrets; 106 scripts; 3 network-capable scripts; 0 help smoke failures</p><footer>reports/security_trust_report.json <a href='security_trust_report.md'>证据</a></footer></article><article class='gate pass'><div><span>通过</span><h3>Python 兼容</h3></div><p>Python 3.11; 171 files; 0 compatibility issues; 0 syntax; 0 f-string 3.11 hazards</p><footer>reports/python_compatibility.json <a href='python_compatibility.md'>证据</a></footer></article><article class='gate pass'><div><span>通过</span><h3>架构维护</h3></div><p>168 Python files; 0 hotspots; 0 blockers; largest 886 lines; 34 CLI handlers</p><footer>reports/architecture_maintainability.json <a href='architecture_maintainability.md'>证据</a></footer></article><article class='gate pass'><div><span>通过</span><h3>权限批准</h3></div><p>3/3 permissions approved; gaps 0; required file_write, network, subprocess</p><footer>reports/security_trust_report.json + security/permission_policy.json <a href='../security/permission_policy.md'>证据</a></footer></article><article class='gate pass'><div><span>通过</span><h3>权限探针</h3></div><p>4/4 targets probed; native 0; metadata fallback 4; installer 4; residual risks 4</p><footer>reports/runtime_permission_probes.json <a href='runtime_permission_probes.md'>证据</a></footer></article><article class='gate pass'><div><span>通过</span><h3>组合治理</h3></div><p>12 skills, 1 actionable; 0 actionable route collisions; 0 actionable owner gaps; 0 actionable stale; 0 actionable drift; 24 scoped non-actionable issues</p><footer>reports/skill_atlas.json <a href='skill_atlas.html'>证据</a></footer></article><article class='gate pass'><div><span>通过</span><h3>运营回路</h3></div><p>1 metadata events; adoption 100.0; missed 0; bad-output 0; risk low</p><footer>reports/adoption_drift_report.json <a href='adoption_drift_report.md'>证据</a></footer></article><article class='gate warn'><div><span>关注</span><h3>人工批准</h3></div><p>0 active waivers; 1 warning gates still need reviewer decision</p><footer>reports/review_waivers.json <a href='review_waivers.md'>证据</a></footer></article><article class='gate warn'><div><span>关注</span><h3>世界证据</h3></div><p>4 pending world-class evidence entries; 1 human pending; 3 external pending; source checks 7/13 pass; 6 blocked; overclaim guard true</p><footer>reports/world_class_evidence_ledger.json <a href='world_class_evidence_ledger.md'>证据</a></footer></article><article class='gate pass'><div><span>通过</span><h3>注册审计</h3></div><p>yao-meta-skill 1.1.0; 6/6 compatibility entries pass; install pass with 4 adapters; installer permissions 12 enforced / 0 failures</p><footer>reports/registry_audit.json + reports/install_simulation.json <a href='registry_audit.md'>证据</a></footer></article><article class='gate pass'><div><span>通过</span><h3>发布路线</h3></div><p>0 promote; 3 keep current; 0 blocked; upgrade minor declared / minor recommended</p><footer>reports/promotion_decisions.json + reports/upgrade_check.json + docs/migration-v2.md <a href='promotion_decisions.md'>证据</a></footer></article></div>
|
||||
</section>
|
||||
|
||||
<div class="twocol">
|
||||
@@ -743,17 +743,17 @@
|
||||
</section>
|
||||
|
||||
<section class="twocol">
|
||||
<div class="panel"><h2>上下文</h2><p>initial load 960/1000; deferred 414478/120000; top deferred scripts 365888; resource governance governed; quality density 135.4</p></div>
|
||||
<div class="panel"><h2>上下文</h2><p>initial load 960/1000; deferred 416415/120000; top deferred scripts 367825; resource governance governed; quality density 135.4</p></div>
|
||||
<div class="panel"><h2>编译证据</h2><p>Review reports/compiled_targets.md before packaging to inspect target adapter modes, generated files, preserved semantics, warnings, and unsupported features.</p></div>
|
||||
</section>
|
||||
|
||||
<section id="trust" class="twocol">
|
||||
<div class="panel"><h2>信任报告</h2><dl class='kv-grid'><div><dt>Secret</dt><dd>0</dd></div><div><dt>脚本数</dt><dd>105</dd></div><div><dt>网络脚本</dt><dd>3</dd></div><div><dt>Help 失败</dt><dd>0</dd></div><div><dt>包体哈希</dt><dd><code>37a1ec0f35323886bdae64523b4113f5dc4ba3153117ee4980b8e5cd54b49aba</code></dd></div></dl></div>
|
||||
<div class="panel"><h2>信任报告</h2><dl class='kv-grid'><div><dt>Secret</dt><dd>0</dd></div><div><dt>脚本数</dt><dd>106</dd></div><div><dt>网络脚本</dt><dd>3</dd></div><div><dt>Help 失败</dt><dd>0</dd></div><div><dt>包体哈希</dt><dd><code>28625ce8b3fcb3e214ef3b8ffc748d9cff551e4c5a1b78786c1a2b7d7005f679</code></dd></div></dl></div>
|
||||
<div class="panel"><h2>安全边界</h2><p>高风险 secret、远程 inline execution、缺失依赖策略或无法解释的脚本接口应阻断 governed release。</p></div>
|
||||
</section>
|
||||
|
||||
<section class="twocol">
|
||||
<div class="panel"><h2>Python 兼容</h2><dl class='kv-grid'><div><dt>目标 Python</dt><dd>3.11</dd></div><div><dt>文件数</dt><dd>169</dd></div><div><dt>问题数</dt><dd>0</dd></div><div><dt>语法错误</dt><dd>0</dd></div><div><dt>F-string 3.11</dt><dd>0</dd></div></dl></div>
|
||||
<div class="panel"><h2>Python 兼容</h2><dl class='kv-grid'><div><dt>目标 Python</dt><dd>3.11</dd></div><div><dt>文件数</dt><dd>171</dd></div><div><dt>问题数</dt><dd>0</dd></div><div><dt>语法错误</dt><dd>0</dd></div><div><dt>F-string 3.11</dt><dd>0</dd></div></dl></div>
|
||||
<div class="panel"><h2>解释器边界</h2><p>CI 和发布审查以 Python 3.11 兼容为底线;本地更高版本允许的新语法不能绕过兼容门禁。</p></div>
|
||||
</section>
|
||||
|
||||
@@ -801,13 +801,13 @@
|
||||
</section>
|
||||
|
||||
<section class="twocol">
|
||||
<div class="panel"><h2>蓝图覆盖</h2><dl class='kv-grid'><div><dt>项目数</dt><dd>20</dd></div><div><dt>模块数</dt><dd>8</dd></div><div><dt>建议 PR</dt><dd>12</dd></div><div><dt>通过数</dt><dd>20</dd></div><div><dt>Warn Count</dt><dd>0</dd></div><div><dt>缺失数</dt><dd>0</dd></div><div><dt>Extension Track Count</dt><dd>2</dd></div><div><dt>Extension Partial Count</dt><dd>2</dd></div><div><dt>Extension Planned Count</dt><dd>0</dd></div><div><dt>Adaptive Extension Ready</dt><dd>否</dd></div><div><dt>本地蓝图</dt><dd>是</dd></div><div><dt>世界级</dt><dd>否</dd></div><div><dt>待补证据</dt><dd>4</dd></div></dl></div>
|
||||
<div class="panel"><h2>蓝图覆盖</h2><dl class='kv-grid'><div><dt>项目数</dt><dd>20</dd></div><div><dt>模块数</dt><dd>8</dd></div><div><dt>建议 PR</dt><dd>12</dd></div><div><dt>通过数</dt><dd>20</dd></div><div><dt>Warn Count</dt><dd>0</dd></div><div><dt>缺失数</dt><dd>0</dd></div><div><dt>Extension Track Count</dt><dd>2</dd></div><div><dt>Extension Covered Count</dt><dd>1</dd></div><div><dt>Extension Partial Count</dt><dd>1</dd></div><div><dt>Extension Planned Count</dt><dd>0</dd></div><div><dt>Adaptive Extension Ready</dt><dd>否</dd></div><div><dt>本地蓝图</dt><dd>是</dd></div><div><dt>世界级</dt><dd>否</dd></div><div><dt>待补证据</dt><dd>4</dd></div></dl></div>
|
||||
<div class="panel"><h2>覆盖边界</h2><p>蓝图覆盖只证明 2.0 模块、建议 PR、脚本、报告和测试在本地闭环;public world-class 仍以 world-class evidence ledger 的真人和外部证据为准。</p></div>
|
||||
</section>
|
||||
|
||||
<section class="twocol">
|
||||
<div class="panel"><h2>公开声明</h2><dl class='kv-grid'><div><dt>本地复现</dt><dd>是</dd></div><div><dt>发布锁</dt><dd>是</dd></div><div><dt>可公开声明</dt><dd>否</dd></div><div><dt>声明阻断</dt><dd>4</dd></div><div><dt>Provider 证据</dt><dd>否</dd></div><div><dt>人审完成</dt><dd>否</dd></div><div><dt>世界级就绪</dt><dd>否</dd></div></dl></div>
|
||||
<div class="panel"><h2>声明阻断</h2><ul class='issues'><li><strong>阻断</strong><span>provider-backed model holdout evidence is incomplete</span></li><li><strong>阻断</strong><span>human blind-review adjudication is incomplete</span></li><li><strong>阻断</strong><span>world-class evidence is not accepted yet (4 open gaps, 4 ledger pending)</span></li><li><strong>阻断</strong><span>world-class source checks are not all accepted (7/13 pass, 6 blocked)</span></li></ul></div>
|
||||
<div class="panel"><h2>公开声明</h2><dl class='kv-grid'><div><dt>本地复现</dt><dd>是</dd></div><div><dt>发布锁</dt><dd>否</dd></div><div><dt>可公开声明</dt><dd>否</dd></div><div><dt>声明阻断</dt><dd>5</dd></div><div><dt>Provider 证据</dt><dd>否</dd></div><div><dt>人审完成</dt><dd>否</dd></div><div><dt>世界级就绪</dt><dd>否</dd></div></dl></div>
|
||||
<div class="panel"><h2>声明阻断</h2><ul class='issues'><li><strong>阻断</strong><span>release lock is not clean or commit is unavailable</span></li><li><strong>阻断</strong><span>provider-backed model holdout evidence is incomplete</span></li><li><strong>阻断</strong><span>human blind-review adjudication is incomplete</span></li><li><strong>阻断</strong><span>world-class evidence is not accepted yet (4 open gaps, 4 ledger pending)</span></li><li><strong>阻断</strong><span>world-class source checks are not all accepted (6/13 pass, 7 blocked)</span></li></ul></div>
|
||||
</section>
|
||||
|
||||
<section class="twocol">
|
||||
@@ -821,7 +821,7 @@
|
||||
</section>
|
||||
|
||||
<section class="twocol">
|
||||
<div class="panel"><h2>声明守卫</h2><dl class='kv-grid'><div><dt>台账可声明</dt><dd>否</dd></div><div><dt>台账待补</dt><dd>4</dd></div><div><dt>声明面</dt><dd>75</dd></div><div><dt>违规数</dt><dd>0</dd></div><div><dt>Overclaim Guard Active</dt><dd>是</dd></div></dl></div>
|
||||
<div class="panel"><h2>声明守卫</h2><dl class='kv-grid'><div><dt>台账可声明</dt><dd>否</dd></div><div><dt>台账待补</dt><dd>4</dd></div><div><dt>声明面</dt><dd>76</dd></div><div><dt>违规数</dt><dd>0</dd></div><div><dt>Overclaim Guard Active</dt><dd>是</dd></div></dl></div>
|
||||
<div class="panel"><h2>声明边界</h2><p>claim guard 扫描 README、docs 和 reports 中的完成态表述;ledger 未 ready 时,任何英文完成断言、true 状态声明或中文完成态都会阻断发布审查。</p></div>
|
||||
</section>
|
||||
|
||||
|
||||
+249
-181
File diff suppressed because it is too large
Load Diff
+43
-41
@@ -35,6 +35,7 @@
|
||||
"reports/world_class_evidence_ledger.md",
|
||||
"reports/review_annotations.md",
|
||||
"reports/review-studio.html",
|
||||
"reports/skill-interpretation.html",
|
||||
"reports/skill-overview.html"
|
||||
],
|
||||
"flow": [
|
||||
@@ -411,7 +412,7 @@
|
||||
"external_pending_count": 3,
|
||||
"human_pending_count": 1,
|
||||
"source_check_count": 13,
|
||||
"source_pass_count": 7,
|
||||
"source_pass_count": 6,
|
||||
"conclusion_zh": "世界级证据尚未完成:4 项待补,0 项已接受。",
|
||||
"conclusion_en": "World-class evidence is not complete: 4 pending, 0 accepted.",
|
||||
"entries": [
|
||||
@@ -470,7 +471,8 @@
|
||||
"summary_zh": "真实外部客户端 metadata-only 事件仍未导入。",
|
||||
"summary_en": "Real external-client metadata-only events have not been imported yet.",
|
||||
"blocked_checks": [
|
||||
"External events"
|
||||
"External events",
|
||||
"Adoption sample"
|
||||
]
|
||||
}
|
||||
]
|
||||
@@ -511,7 +513,7 @@
|
||||
"path": "scripts",
|
||||
"label": "Deterministic helpers or local tooling",
|
||||
"kind": "folder",
|
||||
"file_count": 105
|
||||
"file_count": 106
|
||||
},
|
||||
{
|
||||
"path": "evals",
|
||||
@@ -523,10 +525,10 @@
|
||||
"path": "reports",
|
||||
"label": "Generated evidence and overview artifacts",
|
||||
"kind": "folder",
|
||||
"file_count": 211
|
||||
"file_count": 213
|
||||
}
|
||||
],
|
||||
"file_count": 383,
|
||||
"file_count": 386,
|
||||
"folder_count": 4,
|
||||
"distribution": [
|
||||
{
|
||||
@@ -551,7 +553,7 @@
|
||||
},
|
||||
{
|
||||
"label": "scripts",
|
||||
"value": 105
|
||||
"value": 106
|
||||
},
|
||||
{
|
||||
"label": "evals",
|
||||
@@ -559,7 +561,7 @@
|
||||
},
|
||||
{
|
||||
"label": "reports",
|
||||
"value": 211
|
||||
"value": 213
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -681,7 +683,7 @@
|
||||
"path": "scripts",
|
||||
"label": "Deterministic helpers or local tooling",
|
||||
"kind": "folder",
|
||||
"file_count": 105
|
||||
"file_count": 106
|
||||
},
|
||||
{
|
||||
"path": "evals",
|
||||
@@ -693,7 +695,7 @@
|
||||
"path": "reports",
|
||||
"label": "Generated evidence and overview artifacts",
|
||||
"kind": "folder",
|
||||
"file_count": 211
|
||||
"file_count": 213
|
||||
}
|
||||
],
|
||||
"strengths": [
|
||||
@@ -994,12 +996,12 @@
|
||||
"ok": true,
|
||||
"summary": {
|
||||
"reproducibility_ready": true,
|
||||
"release_lock_ready": true,
|
||||
"release_lock_ready": false,
|
||||
"methodology_complete": true,
|
||||
"required_artifact_count": 24,
|
||||
"missing_artifact_count": 0,
|
||||
"evidence_bundle_sha256": "890927c5a98eb60b569171a7473c213a5094d3a8e9b84705d687c4f3335220fd",
|
||||
"source_contract_sha256": "37a1ec0f35323886bdae64523b4113f5dc4ba3153117ee4980b8e5cd54b49aba",
|
||||
"evidence_bundle_sha256": "60df1cebf40b1627f6d313c233f377d0d36228a9525b70099623563c7efb7804",
|
||||
"source_contract_sha256": "c0fe8976bca1ceac0b325c882003335c66487b8f152868af471f3bdd79b9f0af",
|
||||
"archive_sha256": "6852cf91a74d232c32d732b7c159c971827abf23af50153987193b084ad3b5cc",
|
||||
"output_case_count": 5,
|
||||
"failure_disclosure_count": 3,
|
||||
@@ -1015,14 +1017,14 @@
|
||||
"world_class_task_count": 4,
|
||||
"world_class_ledger_pending_count": 4,
|
||||
"world_class_source_check_count": 13,
|
||||
"world_class_source_pass_count": 7,
|
||||
"world_class_source_blocked_count": 6,
|
||||
"world_class_source_pass_count": 6,
|
||||
"world_class_source_blocked_count": 7,
|
||||
"public_claim_ready": false,
|
||||
"public_claim_blocker_count": 4,
|
||||
"working_tree_dirty": false,
|
||||
"changed_file_count": 0
|
||||
"public_claim_blocker_count": 5,
|
||||
"working_tree_dirty": true,
|
||||
"changed_file_count": 73
|
||||
},
|
||||
"commit": "aacf3282f562414faf8cc6c68538d2d53c6b48e3",
|
||||
"commit": "5495734e7e33b19b84a932626112d783a3edf271",
|
||||
"missing_artifacts": [],
|
||||
"limitations": [
|
||||
"The git commit and dirty flag are generation-time context; the evidence bundle hash is the durable artifact anchor inside a committed report.",
|
||||
@@ -1106,8 +1108,8 @@
|
||||
"failures": []
|
||||
},
|
||||
"trust_security": {
|
||||
"scanned_files": 192,
|
||||
"script_count": 105,
|
||||
"scanned_files": 193,
|
||||
"script_count": 106,
|
||||
"internal_module_count": 26,
|
||||
"secret_findings": 0,
|
||||
"dependency_files": [
|
||||
@@ -1116,18 +1118,18 @@
|
||||
"network_script_count": 3,
|
||||
"network_policy_covered_count": 3,
|
||||
"network_policy_missing_count": 0,
|
||||
"file_write_script_count": 66,
|
||||
"file_write_script_count": 67,
|
||||
"permission_required_count": 3,
|
||||
"permission_approved_count": 3,
|
||||
"permission_missing_count": 0,
|
||||
"permission_invalid_count": 0,
|
||||
"permission_expired_count": 0,
|
||||
"help_smoke_checked_count": 79,
|
||||
"help_smoke_checked_count": 80,
|
||||
"help_smoke_failed_count": 0,
|
||||
"interactive_script_count": 0,
|
||||
"package_hash_scope": "source-contract-without-generated-reports",
|
||||
"package_hash_file_count": 192,
|
||||
"package_sha256": "37a1ec0f35323886bdae64523b4113f5dc4ba3153117ee4980b8e5cd54b49aba"
|
||||
"package_hash_file_count": 193,
|
||||
"package_sha256": "c0fe8976bca1ceac0b325c882003335c66487b8f152868af471f3bdd79b9f0af"
|
||||
},
|
||||
"skill_atlas": {
|
||||
"skill_count": 12,
|
||||
@@ -1165,7 +1167,7 @@
|
||||
"trust_level": "local",
|
||||
"license": "MIT",
|
||||
"checksums": {
|
||||
"package_sha256": "37a1ec0f35323886bdae64523b4113f5dc4ba3153117ee4980b8e5cd54b49aba",
|
||||
"package_sha256": "c0fe8976bca1ceac0b325c882003335c66487b8f152868af471f3bdd79b9f0af",
|
||||
"archive_sha256": "6852cf91a74d232c32d732b7c159c971827abf23af50153987193b084ad3b5cc"
|
||||
},
|
||||
"compatibility": {
|
||||
@@ -1225,7 +1227,7 @@
|
||||
"ok": true,
|
||||
"summary": {
|
||||
"archive_present": true,
|
||||
"archive_entry_count": 598,
|
||||
"archive_entry_count": 603,
|
||||
"archive_extracted": true,
|
||||
"entrypoint_loaded": true,
|
||||
"manifest_loaded": true,
|
||||
@@ -1297,7 +1299,7 @@
|
||||
{
|
||||
"field": "package_sha256",
|
||||
"from": "0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"to": "37a1ec0f35323886bdae64523b4113f5dc4ba3153117ee4980b8e5cd54b49aba"
|
||||
"to": "c0fe8976bca1ceac0b325c882003335c66487b8f152868af471f3bdd79b9f0af"
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -1314,14 +1316,14 @@
|
||||
"ok": true,
|
||||
"summary": {
|
||||
"event_count": 1,
|
||||
"adoption_sample_count": 1,
|
||||
"activation_count": 1,
|
||||
"accepted_count": 1,
|
||||
"adoption_sample_count": 0,
|
||||
"activation_count": 0,
|
||||
"accepted_count": 0,
|
||||
"edited_count": 0,
|
||||
"rejected_count": 0,
|
||||
"missed_count": 0,
|
||||
"failed_count": 0,
|
||||
"adoption_rate": 100.0,
|
||||
"adoption_rate": 0,
|
||||
"missed_trigger_count": 0,
|
||||
"wrong_trigger_count": 0,
|
||||
"bad_output_count": 0,
|
||||
@@ -1330,7 +1332,7 @@
|
||||
"review_overdue_count": 0,
|
||||
"risk_band": "low",
|
||||
"event_types": {
|
||||
"skill_activation": 1
|
||||
"review_event": 1
|
||||
},
|
||||
"failure_types": {},
|
||||
"source_types": {
|
||||
@@ -1552,7 +1554,7 @@
|
||||
"status": "external_required",
|
||||
"category": "external",
|
||||
"owner": "Browser/Chrome/IDE/provider client integrator",
|
||||
"current": "external source events 0; adoption samples 1",
|
||||
"current": "external source events 0; adoption samples 0",
|
||||
"objective": "Import production metadata-only events from a real external client into the local drift loop.",
|
||||
"runbook": [
|
||||
"python3 scripts/telemetry_native_host.py . --write-launcher /tmp/yao-telemetry-host.sh --write-manifest /tmp/yao-telemetry-host.json --allowed-origin chrome-extension://<extension-id>/",
|
||||
@@ -1604,8 +1606,8 @@
|
||||
"missing_submission_count": 4,
|
||||
"invalid_submission_count": 0,
|
||||
"source_check_count": 13,
|
||||
"source_pass_count": 7,
|
||||
"source_blocked_count": 6,
|
||||
"source_pass_count": 6,
|
||||
"source_blocked_count": 7,
|
||||
"submitted_but_pending_count": 0,
|
||||
"source_accepted_without_valid_submission_count": 0,
|
||||
"overclaim_guard_active": true,
|
||||
@@ -1941,7 +1943,7 @@
|
||||
"status": "pending",
|
||||
"source_status": "external_required",
|
||||
"source_accepted": false,
|
||||
"current": "external source events 0; adoption samples 1",
|
||||
"current": "external source events 0; adoption samples 0",
|
||||
"objective": "Import production metadata-only events from a real external client into the local drift loop.",
|
||||
"runbook": [
|
||||
"python3 scripts/telemetry_native_host.py . --write-launcher /tmp/yao-telemetry-host.sh --write-manifest /tmp/yao-telemetry-host.json --allowed-origin chrome-extension://<extension-id>/",
|
||||
@@ -1978,7 +1980,7 @@
|
||||
],
|
||||
"observed_state": {
|
||||
"external_source_events": 0,
|
||||
"adoption_sample_count": 1,
|
||||
"adoption_sample_count": 0,
|
||||
"raw_content_allowed": false,
|
||||
"risk_band": "low",
|
||||
"accepted": false
|
||||
@@ -1999,8 +2001,8 @@
|
||||
"label": "Adoption sample",
|
||||
"field": "adoption_sample_count",
|
||||
"expected": ">0",
|
||||
"actual": 1,
|
||||
"status": "pass",
|
||||
"actual": 0,
|
||||
"status": "blocked",
|
||||
"source_accepted": false,
|
||||
"next_action": "Telemetry must include adoption outcome evidence."
|
||||
},
|
||||
@@ -2016,8 +2018,8 @@
|
||||
}
|
||||
],
|
||||
"source_check_count": 3,
|
||||
"source_pass_count": 2,
|
||||
"source_blocked_count": 1,
|
||||
"source_pass_count": 1,
|
||||
"source_blocked_count": 2,
|
||||
"submission_state": {
|
||||
"status": "missing",
|
||||
"path": "evidence/world_class/submissions/native-client-telemetry.json",
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
"ok": true,
|
||||
"skill_dir": ".",
|
||||
"summary": {
|
||||
"scanned_files": 192,
|
||||
"script_count": 105,
|
||||
"scanned_files": 193,
|
||||
"script_count": 106,
|
||||
"internal_module_count": 26,
|
||||
"secret_findings": 0,
|
||||
"dependency_files": [
|
||||
@@ -12,18 +12,18 @@
|
||||
"network_script_count": 3,
|
||||
"network_policy_covered_count": 3,
|
||||
"network_policy_missing_count": 0,
|
||||
"file_write_script_count": 66,
|
||||
"file_write_script_count": 67,
|
||||
"permission_required_count": 3,
|
||||
"permission_approved_count": 3,
|
||||
"permission_missing_count": 0,
|
||||
"permission_invalid_count": 0,
|
||||
"permission_expired_count": 0,
|
||||
"help_smoke_checked_count": 79,
|
||||
"help_smoke_checked_count": 80,
|
||||
"help_smoke_failed_count": 0,
|
||||
"interactive_script_count": 0,
|
||||
"package_hash_scope": "source-contract-without-generated-reports",
|
||||
"package_hash_file_count": 192,
|
||||
"package_sha256": "37a1ec0f35323886bdae64523b4113f5dc4ba3153117ee4980b8e5cd54b49aba"
|
||||
"package_hash_file_count": 193,
|
||||
"package_sha256": "652c3a4a1f091d875bfacdd44da9a91bc02fec90af3fe76cf3a71a6dc80aba58"
|
||||
},
|
||||
"failures": [],
|
||||
"warnings": [],
|
||||
@@ -770,6 +770,20 @@
|
||||
"network_urls": [],
|
||||
"network_hosts": []
|
||||
},
|
||||
{
|
||||
"path": "scripts/render_skill_interpretation.py",
|
||||
"interface": "cli",
|
||||
"interface_declared": true,
|
||||
"interface_reason": "Renders the first-class skill interpretation report while reusing the Skill Overview v2 model and layout.",
|
||||
"has_argparse": true,
|
||||
"has_main_guard": true,
|
||||
"uses_input": false,
|
||||
"uses_network": false,
|
||||
"uses_file_write": true,
|
||||
"uses_subprocess": false,
|
||||
"network_urls": [],
|
||||
"network_hosts": []
|
||||
},
|
||||
{
|
||||
"path": "scripts/render_skill_os2_audit.py",
|
||||
"interface": "cli",
|
||||
@@ -1547,9 +1561,9 @@
|
||||
"help_smoke": {
|
||||
"enabled": true,
|
||||
"timeout_seconds": 5.0,
|
||||
"candidate_count": 79,
|
||||
"checked_count": 79,
|
||||
"passed_count": 79,
|
||||
"candidate_count": 80,
|
||||
"checked_count": 80,
|
||||
"passed_count": 80,
|
||||
"failed_count": 0,
|
||||
"skipped_count": 26,
|
||||
"failed_scripts": [],
|
||||
@@ -2064,6 +2078,16 @@
|
||||
"stdout_excerpt": "usage: render_review_waivers.py [-h] [--waivers-json WAIVERS_JSON]\n [--output-json OUTPUT_JSON]\n [--output-md OUTPUT_MD]\n [--generated-at GENERATED",
|
||||
"stderr_excerpt": ""
|
||||
},
|
||||
{
|
||||
"path": "scripts/render_skill_interpretation.py",
|
||||
"command": "python3 scripts/render_skill_interpretation.py --help",
|
||||
"returncode": 0,
|
||||
"timed_out": false,
|
||||
"passed": true,
|
||||
"has_help_text": true,
|
||||
"stdout_excerpt": "usage: render_skill_interpretation.py [-h] [--output-html OUTPUT_HTML]\n [--output-json OUTPUT_JSON]\n [skill_dir]\n\nRender the first-class HTML skill interpretation rep",
|
||||
"stderr_excerpt": ""
|
||||
},
|
||||
{
|
||||
"path": "scripts/render_skill_os2_audit.py",
|
||||
"command": "python3 scripts/render_skill_os2_audit.py --help",
|
||||
@@ -2547,6 +2571,7 @@
|
||||
"scripts/render_review_studio.py",
|
||||
"scripts/render_review_viewer.py",
|
||||
"scripts/render_review_waivers.py",
|
||||
"scripts/render_skill_interpretation.py",
|
||||
"scripts/render_skill_os2_audit.py",
|
||||
"scripts/render_skill_os2_coverage.py",
|
||||
"scripts/render_skill_overview.py",
|
||||
|
||||
@@ -1,22 +1,22 @@
|
||||
# Security Trust Report
|
||||
|
||||
- OK: `True`
|
||||
- Scanned files: `192`
|
||||
- Scripts: `105`
|
||||
- Scanned files: `193`
|
||||
- Scripts: `106`
|
||||
- Internal script modules: `26`
|
||||
- Secret findings: `0`
|
||||
- Network-capable scripts: `3`
|
||||
- Network policy covered scripts: `3`
|
||||
- Network policy missing scripts: `0`
|
||||
- File-write scripts: `66`
|
||||
- File-write scripts: `67`
|
||||
- Permission approvals: `3 / 3`
|
||||
- Permission approval gaps: `0`
|
||||
- CLI help smoke checked: `79`
|
||||
- CLI help smoke checked: `80`
|
||||
- CLI help smoke failures: `0`
|
||||
- Interactive scripts: `0`
|
||||
- Package hash scope: `source-contract-without-generated-reports`
|
||||
- Package hash files: `192`
|
||||
- Package SHA256: `37a1ec0f35323886bdae64523b4113f5dc4ba3153117ee4980b8e5cd54b49aba`
|
||||
- Package hash files: `193`
|
||||
- Package SHA256: `652c3a4a1f091d875bfacdd44da9a91bc02fec90af3fe76cf3a71a6dc80aba58`
|
||||
|
||||
## Failures
|
||||
|
||||
@@ -54,8 +54,8 @@
|
||||
|
||||
- Enabled: `True`
|
||||
- Timeout seconds: `5.0`
|
||||
- Checked scripts: `79`
|
||||
- Passed scripts: `79`
|
||||
- Checked scripts: `80`
|
||||
- Passed scripts: `80`
|
||||
- Failed scripts: `none`
|
||||
|
||||
## Script Surface
|
||||
@@ -114,6 +114,7 @@
|
||||
| scripts/render_review_studio.py | cli | False | True | True | False | False | True | False | Default CLI classification; add SCRIPT_INTERFACE for internal modules. |
|
||||
| scripts/render_review_viewer.py | cli | False | True | True | False | False | True | False | Default CLI classification; add SCRIPT_INTERFACE for internal modules. |
|
||||
| scripts/render_review_waivers.py | cli | False | True | True | False | False | True | False | Default CLI classification; add SCRIPT_INTERFACE for internal modules. |
|
||||
| scripts/render_skill_interpretation.py | cli | True | True | True | False | False | True | False | Renders the first-class skill interpretation report while reusing the Skill Overview v2 model and layout. |
|
||||
| scripts/render_skill_os2_audit.py | cli | False | True | True | False | False | True | False | Default CLI classification; add SCRIPT_INTERFACE for internal modules. |
|
||||
| scripts/render_skill_os2_coverage.py | cli | True | True | True | False | False | True | False | Renders a Skill OS 2.0 blueprint-to-evidence coverage audit. |
|
||||
| scripts/render_skill_overview.py | cli | False | True | True | False | False | True | False | Default CLI classification; add SCRIPT_INTERFACE for internal modules. |
|
||||
|
||||
@@ -0,0 +1,995 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>yao-meta-skill Skill 生成审计报告</title>
|
||||
<style>
|
||||
:root {
|
||||
--paper: #ffffff;
|
||||
--wash: #f8fafc;
|
||||
--wash-strong: #f2f5f8;
|
||||
--line: #e6e0d4;
|
||||
--line-soft: #eee9df;
|
||||
--brand: #1B365D;
|
||||
--brand-soft: #EEF3F8;
|
||||
--brand-mid: #315982;
|
||||
--ink: #151515;
|
||||
--text: #2f2d29;
|
||||
--muted: #68625a;
|
||||
--faint: #8b857b;
|
||||
--success: #2f6f5e;
|
||||
--warn: #8a5a19;
|
||||
--serif: "TsangerJinKai02", "Source Han Serif SC", "Noto Serif CJK SC", "Songti SC", "STSong", Charter, Georgia, serif;
|
||||
--mono: "JetBrains Mono", "SF Mono", ui-monospace, Menlo, Consolas, monospace;
|
||||
--shadow-soft: 0 1px 2px rgba(27, 54, 93, 0.06), 0 16px 44px rgba(27, 54, 93, 0.08);
|
||||
}
|
||||
* { box-sizing: border-box; }
|
||||
html { scroll-behavior: smooth; }
|
||||
body {
|
||||
margin: 0;
|
||||
background: #ffffff;
|
||||
color: var(--ink);
|
||||
font-family: var(--serif);
|
||||
line-height: 1.62;
|
||||
letter-spacing: 0;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
text-rendering: optimizeLegibility;
|
||||
}
|
||||
body[data-report-lang="zh-CN"] [data-lang="en"],
|
||||
body[data-report-lang="en"] [data-lang="zh-CN"] { display: none !important; }
|
||||
.skip-link {
|
||||
position: fixed;
|
||||
left: 18px;
|
||||
top: 10px;
|
||||
z-index: 40;
|
||||
transform: translateY(-140%);
|
||||
padding: 8px 12px;
|
||||
border-radius: 8px;
|
||||
background: var(--brand);
|
||||
color: #fff;
|
||||
text-decoration: none;
|
||||
transition: transform 160ms cubic-bezier(0.16, 1, 0.3, 1);
|
||||
}
|
||||
.skip-link:focus-visible { transform: translateY(0); outline: 2px solid var(--brand-mid); outline-offset: 2px; }
|
||||
.topbar {
|
||||
position: sticky;
|
||||
top: 0;
|
||||
z-index: 20;
|
||||
background: rgba(255, 255, 255, 0.96);
|
||||
border-bottom: 1px solid var(--line);
|
||||
}
|
||||
.progress-track {
|
||||
height: 2px;
|
||||
background: transparent;
|
||||
}
|
||||
.progress-bar {
|
||||
display: block;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background: var(--brand);
|
||||
transition: transform 160ms cubic-bezier(0.16, 1, 0.3, 1);
|
||||
transform-origin: left center;
|
||||
transform: scaleX(0);
|
||||
}
|
||||
.topbar-inner {
|
||||
max-width: 1240px;
|
||||
margin: 0 auto;
|
||||
padding: 9px 28px;
|
||||
display: grid;
|
||||
grid-template-columns: minmax(0, 1fr) auto;
|
||||
gap: 18px;
|
||||
align-items: center;
|
||||
}
|
||||
.nav-shell {
|
||||
display: grid;
|
||||
grid-template-columns: auto minmax(0, 1fr);
|
||||
gap: 18px;
|
||||
align-items: center;
|
||||
min-width: 0;
|
||||
}
|
||||
.report-mark {
|
||||
color: var(--brand);
|
||||
font-family: var(--mono);
|
||||
font-size: 11px;
|
||||
line-height: 1;
|
||||
text-transform: uppercase;
|
||||
white-space: nowrap;
|
||||
}
|
||||
.report-nav {
|
||||
display: flex;
|
||||
gap: 4px;
|
||||
overflow-x: auto;
|
||||
scrollbar-width: none;
|
||||
min-width: 0;
|
||||
}
|
||||
.report-nav::-webkit-scrollbar { display: none; }
|
||||
.report-nav a {
|
||||
flex: 0 0 auto;
|
||||
min-width: 76px;
|
||||
min-height: 40px;
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
padding: 0 10px;
|
||||
color: var(--brand);
|
||||
text-decoration: none;
|
||||
text-align: center;
|
||||
font-size: 13px;
|
||||
border-radius: 8px;
|
||||
white-space: nowrap;
|
||||
transition-property: background-color, color, transform;
|
||||
transition-duration: 160ms;
|
||||
transition-timing-function: cubic-bezier(0.16, 1, 0.3, 1);
|
||||
}
|
||||
@media (hover: hover) {
|
||||
.report-nav a:hover { background: var(--brand-soft); }
|
||||
}
|
||||
.report-nav a:focus-visible {
|
||||
outline: 2px solid var(--brand-mid);
|
||||
outline-offset: 2px;
|
||||
background: var(--brand-soft);
|
||||
}
|
||||
.report-nav a[aria-current="true"] {
|
||||
background: var(--brand);
|
||||
color: #ffffff;
|
||||
}
|
||||
.report-nav a[aria-current="true"] span { color: #ffffff; }
|
||||
.language-switch {
|
||||
display: inline-flex;
|
||||
gap: 3px;
|
||||
padding: 3px;
|
||||
border: 1px solid var(--line);
|
||||
border-radius: 8px;
|
||||
background: var(--paper);
|
||||
box-shadow: 0 1px 2px rgba(27, 54, 93, 0.05);
|
||||
}
|
||||
.language-switch button {
|
||||
appearance: none;
|
||||
min-width: 42px;
|
||||
min-height: 34px;
|
||||
border: 0;
|
||||
border-radius: 6px;
|
||||
padding: 0 10px;
|
||||
background: transparent;
|
||||
color: var(--muted);
|
||||
font: inherit;
|
||||
font-size: 13px;
|
||||
cursor: pointer;
|
||||
transition-property: background-color, color, transform;
|
||||
transition-duration: 160ms;
|
||||
transition-timing-function: cubic-bezier(0.16, 1, 0.3, 1);
|
||||
}
|
||||
.language-switch button:active { transform: scale(0.96); }
|
||||
.language-switch button:focus-visible { outline: 2px solid var(--brand-mid); outline-offset: 2px; }
|
||||
.language-switch button[aria-pressed="true"] {
|
||||
background: var(--brand-soft);
|
||||
color: var(--brand);
|
||||
}
|
||||
.wrap {
|
||||
max-width: 1240px;
|
||||
margin: 0 auto;
|
||||
padding: 58px 28px 92px;
|
||||
}
|
||||
.hero {
|
||||
padding: 16px 0 34px;
|
||||
}
|
||||
.hero-grid {
|
||||
display: grid;
|
||||
grid-template-columns: minmax(0, 1fr) 360px;
|
||||
gap: 44px;
|
||||
align-items: end;
|
||||
}
|
||||
.eyebrow, .report-mark {
|
||||
letter-spacing: 0;
|
||||
}
|
||||
.eyebrow {
|
||||
margin: 0 0 12px;
|
||||
color: var(--brand);
|
||||
font-family: var(--mono);
|
||||
font-size: 12px;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
.slug {
|
||||
margin: 0 0 18px;
|
||||
color: var(--faint);
|
||||
font-family: var(--mono);
|
||||
font-size: 13px;
|
||||
overflow-wrap: anywhere;
|
||||
}
|
||||
h1, h2, h3 {
|
||||
margin: 0;
|
||||
font-weight: 500;
|
||||
letter-spacing: 0;
|
||||
text-wrap: balance;
|
||||
}
|
||||
h1 {
|
||||
max-width: 8em;
|
||||
color: var(--ink);
|
||||
font-size: 4rem;
|
||||
line-height: 1.02;
|
||||
}
|
||||
.lead {
|
||||
max-width: 760px;
|
||||
margin: 20px 0 0;
|
||||
color: var(--text);
|
||||
font-size: 1.08rem;
|
||||
text-wrap: pretty;
|
||||
}
|
||||
.hero-meta, .badges {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 8px;
|
||||
margin-top: 20px;
|
||||
}
|
||||
.hero-meta span, .badges span, .tag {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
min-height: 30px;
|
||||
padding: 5px 10px;
|
||||
border-radius: 6px;
|
||||
background: var(--brand-soft);
|
||||
color: var(--brand);
|
||||
font-size: 13px;
|
||||
font-variant-numeric: tabular-nums;
|
||||
}
|
||||
.hero-card {
|
||||
position: relative;
|
||||
padding: 22px 22px 24px;
|
||||
border-radius: 8px;
|
||||
background: linear-gradient(180deg, #ffffff 0%, #fbfaf7 100%);
|
||||
box-shadow: var(--shadow-soft);
|
||||
border: 1px solid var(--line-soft);
|
||||
}
|
||||
.hero-card::before {
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: 18px;
|
||||
right: 18px;
|
||||
width: 38px;
|
||||
height: 2px;
|
||||
background: var(--brand);
|
||||
}
|
||||
.score-strip {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(4, minmax(0, 1fr));
|
||||
gap: 10px;
|
||||
margin-top: 32px;
|
||||
padding-top: 20px;
|
||||
border-top: 1px solid var(--line);
|
||||
}
|
||||
.score-chip {
|
||||
padding: 14px 14px 12px;
|
||||
border-radius: 8px;
|
||||
background: var(--wash);
|
||||
border: 1px solid var(--line-soft);
|
||||
}
|
||||
.score-chip span {
|
||||
display: block;
|
||||
color: var(--muted);
|
||||
font-size: 12px;
|
||||
}
|
||||
.score-chip strong {
|
||||
display: block;
|
||||
margin: 5px 0 8px;
|
||||
color: var(--brand);
|
||||
font-family: var(--mono);
|
||||
font-size: 1.65rem;
|
||||
font-weight: 500;
|
||||
line-height: 1;
|
||||
font-variant-numeric: tabular-nums;
|
||||
}
|
||||
.score-chip i {
|
||||
display: block;
|
||||
height: 3px;
|
||||
border-radius: 999px;
|
||||
background: linear-gradient(90deg, var(--brand) var(--score), #dfe6ee var(--score));
|
||||
}
|
||||
.score-chip small {
|
||||
display: block;
|
||||
margin-top: 8px;
|
||||
color: var(--muted);
|
||||
font-size: 12px;
|
||||
line-height: 1.45;
|
||||
}
|
||||
section {
|
||||
scroll-margin-top: 78px;
|
||||
padding-top: 44px;
|
||||
margin-top: 44px;
|
||||
border-top: 1px solid var(--line);
|
||||
}
|
||||
section.hero {
|
||||
scroll-margin-top: 0;
|
||||
padding-top: 16px;
|
||||
margin-top: 0;
|
||||
border-top: 0;
|
||||
}
|
||||
.section-head {
|
||||
display: grid;
|
||||
grid-template-columns: minmax(0, 246px) minmax(0, 1fr);
|
||||
gap: 36px;
|
||||
align-items: start;
|
||||
}
|
||||
h2 {
|
||||
color: var(--ink);
|
||||
font-size: 1.5rem;
|
||||
line-height: 1.18;
|
||||
}
|
||||
h2::before {
|
||||
content: "";
|
||||
display: block;
|
||||
width: 32px;
|
||||
height: 2px;
|
||||
margin-bottom: 12px;
|
||||
background: var(--brand);
|
||||
}
|
||||
h3 {
|
||||
color: var(--ink);
|
||||
font-size: 1.02rem;
|
||||
line-height: 1.3;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.section-head p {
|
||||
margin: 12px 0 0;
|
||||
color: var(--muted);
|
||||
max-width: 43ch;
|
||||
text-wrap: pretty;
|
||||
}
|
||||
.section-body {
|
||||
margin-top: 24px;
|
||||
}
|
||||
.two-col, .metric-grid, .chart-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||
gap: 16px;
|
||||
align-items: stretch;
|
||||
}
|
||||
.quality-panels {
|
||||
margin-top: 16px;
|
||||
}
|
||||
.metrics-report {
|
||||
display: grid;
|
||||
gap: 22px;
|
||||
}
|
||||
.metrics-flow {
|
||||
display: grid;
|
||||
gap: 22px;
|
||||
}
|
||||
.metrics-primary {
|
||||
display: grid;
|
||||
grid-template-columns: minmax(0, 1.2fr) minmax(320px, 0.8fr);
|
||||
gap: 22px;
|
||||
align-items: start;
|
||||
}
|
||||
.metrics-primary .chart-figure {
|
||||
min-height: 0;
|
||||
display: grid;
|
||||
align-content: center;
|
||||
}
|
||||
.metrics-primary .chart-figure svg {
|
||||
max-height: 520px;
|
||||
}
|
||||
.metrics-note {
|
||||
display: grid;
|
||||
align-content: start;
|
||||
gap: 16px;
|
||||
}
|
||||
.metrics-note p {
|
||||
margin: 0;
|
||||
max-width: none;
|
||||
color: var(--text);
|
||||
}
|
||||
.metric-summary-list {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
list-style: none;
|
||||
display: grid;
|
||||
gap: 10px;
|
||||
}
|
||||
.metric-summary-list li {
|
||||
display: grid;
|
||||
grid-template-columns: auto minmax(0, 1fr) auto;
|
||||
gap: 8px 10px;
|
||||
align-items: baseline;
|
||||
padding: 10px 0;
|
||||
border-bottom: 1px solid var(--line-soft);
|
||||
}
|
||||
.metric-summary-list li:last-child { border-bottom: 0; }
|
||||
.metric-summary-list b {
|
||||
color: var(--ink);
|
||||
font-weight: 500;
|
||||
}
|
||||
.metric-summary-list em {
|
||||
color: var(--brand);
|
||||
font-family: var(--mono);
|
||||
font-style: normal;
|
||||
font-variant-numeric: tabular-nums;
|
||||
}
|
||||
.metric-summary-list small {
|
||||
grid-column: 2 / 4;
|
||||
color: var(--muted);
|
||||
line-height: 1.5;
|
||||
overflow-wrap: break-word;
|
||||
}
|
||||
.metric-status {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
min-height: 24px;
|
||||
padding: 2px 7px;
|
||||
border-radius: 6px;
|
||||
background: var(--brand-soft);
|
||||
color: var(--brand);
|
||||
font-size: 12px;
|
||||
}
|
||||
.metric-grid {
|
||||
margin-top: 2px;
|
||||
}
|
||||
.metric-detail-grid {
|
||||
grid-template-columns: repeat(auto-fit, minmax(min(100%, 340px), 1fr));
|
||||
align-items: stretch;
|
||||
}
|
||||
.list, .compact-list, .step-list {
|
||||
margin: 0;
|
||||
padding-left: 1.15em;
|
||||
display: grid;
|
||||
gap: 8px;
|
||||
}
|
||||
.list li::marker, .compact-list li::marker, .step-list li::marker { color: var(--brand); }
|
||||
.compact-list {
|
||||
gap: 6px;
|
||||
font-size: 13.5px;
|
||||
color: var(--muted);
|
||||
line-height: 1.55;
|
||||
}
|
||||
.compact-list li, .list li, .step-list li {
|
||||
min-width: 0;
|
||||
overflow-wrap: break-word;
|
||||
}
|
||||
.panel, .metric-card, .roadmap-item {
|
||||
background: #ffffff;
|
||||
border: 1px solid var(--line-soft);
|
||||
border-radius: 8px;
|
||||
padding: 22px;
|
||||
box-shadow: 0 1px 2px rgba(27, 54, 93, 0.04);
|
||||
min-width: 0;
|
||||
}
|
||||
.metric-card {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr;
|
||||
gap: 14px;
|
||||
align-content: start;
|
||||
min-height: 0;
|
||||
}
|
||||
.metric-card-head {
|
||||
display: flex;
|
||||
gap: 14px;
|
||||
align-items: flex-start;
|
||||
justify-content: space-between;
|
||||
}
|
||||
.metric-card strong {
|
||||
display: block;
|
||||
margin: 0;
|
||||
color: var(--brand);
|
||||
font-family: var(--mono);
|
||||
font-size: 2rem;
|
||||
font-weight: 500;
|
||||
line-height: 1;
|
||||
font-variant-numeric: tabular-nums;
|
||||
}
|
||||
.metric-label {
|
||||
color: var(--muted);
|
||||
font-size: 13px;
|
||||
line-height: 1.45;
|
||||
}
|
||||
.metric-card-body {
|
||||
min-width: 0;
|
||||
}
|
||||
.metric-card-body .compact-list {
|
||||
gap: 7px;
|
||||
max-width: 62ch;
|
||||
}
|
||||
.metric-card-body .compact-list li {
|
||||
overflow-wrap: break-word;
|
||||
word-break: normal;
|
||||
}
|
||||
.chart-figure {
|
||||
margin: 0;
|
||||
padding: 18px;
|
||||
border: 1px solid var(--line-soft);
|
||||
border-radius: 8px;
|
||||
background: #ffffff;
|
||||
box-shadow: 0 1px 2px rgba(27, 54, 93, 0.04);
|
||||
}
|
||||
.chart-figure svg {
|
||||
width: 100%;
|
||||
height: auto;
|
||||
display: block;
|
||||
overflow: visible;
|
||||
}
|
||||
.chart-figure text {
|
||||
fill: var(--ink);
|
||||
font-family: var(--serif);
|
||||
font-size: 13px;
|
||||
}
|
||||
.chart-title {
|
||||
fill: var(--brand);
|
||||
font-size: 16px;
|
||||
font-weight: 500;
|
||||
}
|
||||
.chart-line {
|
||||
fill: none;
|
||||
stroke: var(--brand);
|
||||
stroke-width: 2;
|
||||
}
|
||||
figcaption {
|
||||
margin-top: 12px;
|
||||
padding-top: 10px;
|
||||
border-top: 1px solid var(--line-soft);
|
||||
color: var(--muted);
|
||||
font-size: 13px;
|
||||
line-height: 1.5;
|
||||
text-wrap: pretty;
|
||||
}
|
||||
table {
|
||||
width: 100%;
|
||||
border-collapse: collapse;
|
||||
font-size: 14px;
|
||||
}
|
||||
th, td {
|
||||
padding: 12px 10px;
|
||||
text-align: left;
|
||||
border-bottom: 1px solid var(--line-soft);
|
||||
vertical-align: top;
|
||||
}
|
||||
th {
|
||||
color: var(--brand);
|
||||
font-weight: 500;
|
||||
font-size: 12px;
|
||||
}
|
||||
td:first-child, th:first-child { width: 96px; }
|
||||
.world-readiness {
|
||||
margin-top: 16px;
|
||||
display: grid;
|
||||
gap: 16px;
|
||||
}
|
||||
.section-head > .world-readiness {
|
||||
grid-column: 2;
|
||||
}
|
||||
.world-readiness-head {
|
||||
display: grid;
|
||||
grid-template-columns: minmax(0, 1fr) auto;
|
||||
gap: 16px;
|
||||
align-items: start;
|
||||
}
|
||||
.world-readiness-head p {
|
||||
margin-top: 8px;
|
||||
max-width: 72ch;
|
||||
}
|
||||
.world-status {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
min-height: 30px;
|
||||
padding: 4px 10px;
|
||||
border-radius: 6px;
|
||||
background: var(--brand-soft);
|
||||
color: var(--brand);
|
||||
font-size: 13px;
|
||||
white-space: nowrap;
|
||||
}
|
||||
.evidence-kpis {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(3, minmax(0, 1fr));
|
||||
gap: 10px;
|
||||
}
|
||||
.evidence-kpi {
|
||||
padding: 14px;
|
||||
border: 1px solid var(--line-soft);
|
||||
border-radius: 8px;
|
||||
background: var(--wash);
|
||||
min-width: 0;
|
||||
}
|
||||
.evidence-kpi span {
|
||||
display: block;
|
||||
color: var(--muted);
|
||||
font-size: 12px;
|
||||
}
|
||||
.evidence-kpi strong {
|
||||
display: block;
|
||||
margin-top: 4px;
|
||||
color: var(--brand);
|
||||
font-family: var(--mono);
|
||||
font-size: 1.5rem;
|
||||
font-weight: 500;
|
||||
line-height: 1;
|
||||
font-variant-numeric: tabular-nums;
|
||||
}
|
||||
.evidence-kpi small {
|
||||
display: block;
|
||||
margin-top: 8px;
|
||||
color: var(--muted);
|
||||
line-height: 1.45;
|
||||
overflow-wrap: break-word;
|
||||
}
|
||||
.evidence-list {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||
gap: 10px;
|
||||
}
|
||||
.evidence-item {
|
||||
padding: 14px;
|
||||
border: 1px solid var(--line-soft);
|
||||
border-radius: 8px;
|
||||
background: #ffffff;
|
||||
min-width: 0;
|
||||
}
|
||||
.evidence-item span {
|
||||
color: var(--brand);
|
||||
font-family: var(--mono);
|
||||
font-size: 11px;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
.evidence-item h4 {
|
||||
margin: 4px 0 8px;
|
||||
color: var(--ink);
|
||||
font-size: 1rem;
|
||||
font-weight: 500;
|
||||
line-height: 1.3;
|
||||
}
|
||||
.evidence-item h5 {
|
||||
margin: 12px 0 6px;
|
||||
color: var(--brand);
|
||||
font-size: 12px;
|
||||
font-weight: 500;
|
||||
}
|
||||
.evidence-item p {
|
||||
margin: 0;
|
||||
max-width: none;
|
||||
color: var(--muted);
|
||||
overflow-wrap: break-word;
|
||||
}
|
||||
.blocked-checks {
|
||||
margin: 0;
|
||||
padding-left: 1.05em;
|
||||
color: var(--muted);
|
||||
font-size: 13px;
|
||||
line-height: 1.45;
|
||||
}
|
||||
.blocked-checks li {
|
||||
overflow-wrap: break-word;
|
||||
}
|
||||
.blocked-checks li::marker {
|
||||
color: var(--brand);
|
||||
}
|
||||
.blocked-checks-empty {
|
||||
font-size: 13px;
|
||||
}
|
||||
.roadmap {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(3, minmax(0, 1fr));
|
||||
gap: 16px;
|
||||
}
|
||||
.step {
|
||||
display: inline-flex;
|
||||
margin-bottom: 12px;
|
||||
min-height: 28px;
|
||||
align-items: center;
|
||||
padding: 3px 8px;
|
||||
border-radius: 6px;
|
||||
background: var(--brand-soft);
|
||||
color: var(--brand);
|
||||
font-size: 12px;
|
||||
}
|
||||
.unlock {
|
||||
margin-top: 14px;
|
||||
color: var(--muted);
|
||||
font-size: 13px;
|
||||
}
|
||||
@media (max-width: 980px) {
|
||||
.topbar-inner {
|
||||
grid-template-columns: minmax(0, 1fr) auto;
|
||||
padding: 8px 16px;
|
||||
}
|
||||
.nav-shell { grid-template-columns: 1fr; gap: 6px; }
|
||||
.report-mark { display: none; }
|
||||
.report-nav a { min-width: 72px; }
|
||||
.hero-grid, .section-head { grid-template-columns: 1fr; }
|
||||
.section-head > .world-readiness { grid-column: auto; }
|
||||
.hero-grid { gap: 24px; }
|
||||
.score-strip { grid-template-columns: repeat(2, minmax(0, 1fr)); }
|
||||
.metrics-primary, .two-col, .metric-grid, .chart-grid, .roadmap { grid-template-columns: 1fr; }
|
||||
.evidence-list { grid-template-columns: 1fr; }
|
||||
.metric-card { grid-template-columns: 86px minmax(0, 1fr); }
|
||||
h1 { font-size: 2.75rem; }
|
||||
}
|
||||
@media (max-width: 540px) {
|
||||
.wrap { padding: 34px 16px 72px; }
|
||||
.topbar-inner { gap: 10px; }
|
||||
.report-nav {
|
||||
display: flex;
|
||||
gap: 2px;
|
||||
}
|
||||
.report-nav a {
|
||||
min-width: 66px;
|
||||
min-height: 38px;
|
||||
padding: 0 8px;
|
||||
font-size: 12px;
|
||||
}
|
||||
.language-switch button { min-width: 38px; min-height: 32px; padding: 0 8px; }
|
||||
.hero { padding-top: 8px; }
|
||||
h1 { max-width: 8em; font-size: 2.35rem; }
|
||||
.lead { font-size: 1rem; }
|
||||
.hero-meta span, .badges span { font-size: 12px; }
|
||||
.score-strip { grid-template-columns: 1fr; }
|
||||
section { margin-top: 34px; padding-top: 34px; }
|
||||
.panel, .metric-card, .roadmap-item, .chart-figure, .hero-card { padding: 18px; }
|
||||
.world-readiness-head, .evidence-kpis { grid-template-columns: 1fr; }
|
||||
.metric-card { grid-template-columns: 1fr; gap: 10px; }
|
||||
.metric-card strong { margin-bottom: 2px; }
|
||||
.metric-summary-list li { grid-template-columns: auto minmax(0, 1fr) auto; }
|
||||
table { font-size: 13px; }
|
||||
th, td { padding: 10px 7px; }
|
||||
}
|
||||
@media (prefers-reduced-motion: reduce) {
|
||||
html { scroll-behavior: auto; }
|
||||
*, *::before, *::after { transition-duration: 0.01ms !important; }
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body data-report-lang="zh-CN">
|
||||
<a class="skip-link" href="#overview"><span data-lang="zh-CN">跳到正文</span><span data-lang="en">Skip to content</span></a>
|
||||
<header class="topbar">
|
||||
<div class="progress-track" aria-hidden="true"><span class="progress-bar"></span></div>
|
||||
<div class="topbar-inner">
|
||||
<div class="nav-shell">
|
||||
<span class="report-mark">Skill audit</span>
|
||||
<nav class="report-nav" aria-label="报告导航"><a href="#overview"><span data-lang="zh-CN">技能概述</span><span data-lang="en">Overview</span></a><a href="#metrics"><span data-lang="zh-CN">总览指标</span><span data-lang="en">Metrics</span></a><a href="#capability"><span data-lang="zh-CN">能力画像</span><span data-lang="en">Profile</span></a><a href="#principle"><span data-lang="zh-CN">原理结构</span><span data-lang="en">Principle</span></a><a href="#contract"><span data-lang="zh-CN">契约边界</span><span data-lang="en">Contract</span></a><a href="#quality"><span data-lang="zh-CN">质量评估</span><span data-lang="en">Quality</span></a><a href="#risk"><span data-lang="zh-CN">风险治理</span><span data-lang="en">Risk</span></a><a href="#assets"><span data-lang="zh-CN">包体资产</span><span data-lang="en">Assets</span></a><a href="#roadmap"><span data-lang="zh-CN">迭代路线</span><span data-lang="en">Roadmap</span></a></nav>
|
||||
</div>
|
||||
<div class="language-switch" aria-label="语言切换"><button type="button" data-set-lang="zh-CN" aria-pressed="true">简体</button><button type="button" data-set-lang="en" aria-pressed="false">EN</button></div>
|
||||
</div>
|
||||
</header>
|
||||
<main id="main-content" class="wrap">
|
||||
<section class="hero" aria-labelledby="report-title">
|
||||
<div class="hero-grid">
|
||||
<div>
|
||||
<p class="eyebrow"><span data-lang="zh-CN">YAO Skill 生成审计报告</span><span data-lang="en">YAO Skill Generation Audit</span></p>
|
||||
<p class="slug">yao-meta-skill</p>
|
||||
<h1 id="report-title"><span data-lang="zh-CN">技能审计报告</span><span data-lang="en">Yao Meta Skill Audit Report</span></h1>
|
||||
<p class="lead"><span data-lang="zh-CN">这份报告默认使用中文简体,把新 Skill 的定位、指标、原理、契约、质量、风险、资产和迭代路线整理为一份可审计的 HTML 报告。</span><span data-lang="en">Create, refactor, evaluate, and package agent skills from workflows, prompts, transcripts, docs, or notes. Use when asked to create a skill, turn a repeated process into a reusable skill, improve an existing skill, add evals, or package a skill for team reuse.</span></p>
|
||||
<div class="hero-meta"><span><span data-lang="zh-CN">技能名称:yao-meta-skill</span><span data-lang="en">Skill name: yao-meta-skill</span></span><span><span data-lang="zh-CN">成熟度:治理</span><span data-lang="en">Maturity: governed</span></span><span><span data-lang="zh-CN">格式:Agent Skills</span><span data-lang="en">Format: agent-skills</span></span><span><span data-lang="zh-CN">更新时间:2026-03-31</span><span data-lang="en">Updated: 2026-03-31</span></span></div>
|
||||
<div class="badges"><span><span data-lang="zh-CN">openai</span><span data-lang="en">openai</span></span><span><span data-lang="zh-CN">claude</span><span data-lang="en">claude</span></span><span><span data-lang="zh-CN">generic</span><span data-lang="en">generic</span></span><span><span data-lang="zh-CN">vscode</span><span data-lang="en">vscode</span></span></div>
|
||||
</div>
|
||||
<aside class="hero-card">
|
||||
<h3><span data-lang="zh-CN">核心判断</span><span data-lang="en">Core reading</span></h3>
|
||||
<ul class="list"><li><span data-lang="zh-CN">把一次性经验沉淀为可复用、可评估、可迁移的 Skill 包体。</span><span data-lang="en">Turn one-off experience into a reusable, evaluable, and portable skill package.</span></li><li><span data-lang="zh-CN">Skill 作者、复用团队和后续 reviewer。</span><span data-lang="en">Skill authors, reuse teams, and later reviewers.</span></li><li><span data-lang="zh-CN">创建完成后建议先打开 reports/skill-interpretation.html,再继续扩展包体。</span><span data-lang="en">After creation, open reports/skill-interpretation.html before expanding the package further.</span></li></ul>
|
||||
</aside>
|
||||
</div>
|
||||
<div class="score-strip" aria-label="报告关键指标"><article class='score-chip'><span><span data-lang="zh-CN">完整度</span><span data-lang="en">Completeness</span></span><strong>100</strong><i style='--score:100%'></i><small><span data-lang="zh-CN">SKILL.md 已存在,是 Skill 的入口。</span><span data-lang="en">SKILL.md exists and acts as the skill entrypoint.</span></small></article><article class='score-chip'><span><span data-lang="zh-CN">触发清晰</span><span data-lang="en">Trigger clarity</span></span><strong>100</strong><i style='--score:100%'></i><small><span data-lang="zh-CN">frontmatter description 已存在,具备基础路由面。</span><span data-lang="en">The frontmatter description exists, giving the skill a basic routing surface.</span></small></article><article class='score-chip'><span><span data-lang="zh-CN">证据充分</span><span data-lang="en">Evidence depth</span></span><strong>100</strong><i style='--score:100%'></i><small><span data-lang="zh-CN">已生成 20 / 20 类报告证据。</span><span data-lang="en">Generated 20 / 20 evidence report types.</span></small></article><article class='score-chip'><span><span data-lang="zh-CN">上下文成本</span><span data-lang="en">Context cost</span></span><strong>42</strong><i style='--score:42%'></i><small><span data-lang="zh-CN">入口约 356 个词/字,references 约 16045 个词/字。</span><span data-lang="en">Entrypoint is about 356 words/characters; references are about 16045.</span></small></article></div>
|
||||
</section>
|
||||
|
||||
<section id="overview">
|
||||
<div class="section-head">
|
||||
<div>
|
||||
<h2><span data-lang="zh-CN">技能概述</span><span data-lang="en">Overview</span></h2>
|
||||
<p><span data-lang="zh-CN">先用一屏说明这个 Skill 是什么、给谁用、交付什么。</span><span data-lang="en">A first-screen explanation of what this skill is, who it serves, and what it delivers.</span></p>
|
||||
</div>
|
||||
<div class="two-col">
|
||||
<article class="panel">
|
||||
<h3><span data-lang="zh-CN">作用定位</span><span data-lang="en">Role</span></h3>
|
||||
<ul class="list"><li><span data-lang="zh-CN">从工作流、提示词、对话记录、文档或笔记中创建、重构、评估和打包 agent skill;适用于新建 Skill、沉淀重复流程、改进现有 Skill、补充 eval 或团队复用打包。</span><span data-lang="en">Create, refactor, evaluate, and package agent skills from workflows, prompts, transcripts, docs, or notes. Use when asked to create a skill, turn a repeated process into a reusable skill, improve an existing skill, add evals, or package a skill for team reuse.</span></li><li><span data-lang="zh-CN">把一次性经验沉淀为可复用、可评估、可迁移的 Skill 包体。</span><span data-lang="en">Turn one-off experience into a reusable, evaluable, and portable skill package.</span></li><li><span data-lang="zh-CN">交付结果:SKILL.md, agents/interface.yaml, reports/skill-ir.json, reports/compiled_targets.md, reports/output_quality_scorecard.md, reports/output_execution_runs.md, reports/output_blind_review_pack.md, reports/output_review_kit.md, reports/output_review_adjudication.md, reports/benchmark_reproducibility.md, reports/output_blind_answer_key.json, reports/conformance_matrix.md, reports/security_trust_report.md, reports/runtime_permission_probes.md, reports/skill_atlas.html, reports/registry_audit.md, reports/package_verification.md, reports/install_simulation.md, reports/upgrade_check.md, reports/adoption_drift_report.md, reports/review_waivers.md, reports/world_class_evidence_plan.md, reports/world_class_evidence_ledger.md, reports/review_annotations.md, reports/review-studio.html, reports/skill-interpretation.html, reports/skill-overview.html, reports/skill-interpretation.json</span><span data-lang="en">Deliverables: SKILL.md, agents/interface.yaml, reports/skill-ir.json, reports/compiled_targets.md, reports/output_quality_scorecard.md, reports/output_execution_runs.md, reports/output_blind_review_pack.md, reports/output_review_kit.md, reports/output_review_adjudication.md, reports/benchmark_reproducibility.md, reports/output_blind_answer_key.json, reports/conformance_matrix.md, reports/security_trust_report.md, reports/runtime_permission_probes.md, reports/skill_atlas.html, reports/registry_audit.md, reports/package_verification.md, reports/install_simulation.md, reports/upgrade_check.md, reports/adoption_drift_report.md, reports/review_waivers.md, reports/world_class_evidence_plan.md, reports/world_class_evidence_ledger.md, reports/review_annotations.md, reports/review-studio.html, reports/skill-interpretation.html, reports/skill-overview.html, reports/skill-interpretation.json</span></li></ul>
|
||||
</article>
|
||||
<figure class="chart-figure" data-chart="flow"><svg viewBox="0 0 620 170" role="img" aria-label="交付流程"><text data-lang="zh-CN" x="20" y="28" class="chart-title">交付流程</text><text data-lang="en" x="20" y="28" class="chart-title">Delivery Flow</text><path d="M188 93 H248 M398 93 H458" class="chart-line"/><g><rect x="38" y="56" width="150" height="74" rx="8" fill="#F6F8FB" stroke="#e8e6dc"/><text data-lang="zh-CN" x="113" y="99" text-anchor="middle">输入材料</text><text data-lang="en" x="113" y="99" text-anchor="middle">Input material</text></g><g><rect x="248" y="56" width="150" height="74" rx="8" fill="#F6F8FB" stroke="#e8e6dc"/><text data-lang="zh-CN" x="323" y="99" text-anchor="middle">Skill 包体</text><text data-lang="en" x="323" y="99" text-anchor="middle">Skill package</text></g><g><rect x="458" y="56" width="150" height="74" rx="8" fill="#F6F8FB" stroke="#e8e6dc"/><text data-lang="zh-CN" x="533" y="99" text-anchor="middle">可复用能力</text><text data-lang="en" x="533" y="99" text-anchor="middle">Reusable capability</text></g></svg><figcaption><span data-lang="zh-CN">交付流程把用户输入、生成的包体和可复用能力放在一条线上。</span><span data-lang="en">The delivery flow places user input, generated package, and reusable capability on one path.</span></figcaption></figure>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section id="metrics">
|
||||
<div class="section-head">
|
||||
<div>
|
||||
<h2><span data-lang="zh-CN">总览指标</span><span data-lang="en">Metrics</span></h2>
|
||||
<p><span data-lang="zh-CN">分数来自本地文件和 reports 证据,缺失时明确标为证据不足。</span><span data-lang="en">Scores are derived from package files and reports; missing inputs are shown as evidence gaps.</span></p>
|
||||
</div>
|
||||
<article class="panel metrics-note">
|
||||
<h3><span data-lang="zh-CN">指标判读</span><span data-lang="en">Reading</span></h3>
|
||||
<p><span data-lang="zh-CN">先看雷达图判断能力短板,再看每项分数的证据原因。分数不是装饰数字,必须和本地文件、reports 证据或证据不足提示对应。</span><span data-lang="en">Read the radar first for weak spots, then inspect each score with its evidence. Scores must map to local files, reports, or explicit evidence gaps.</span></p>
|
||||
</article>
|
||||
</div>
|
||||
<div class="section-body metrics-report">
|
||||
<div class="metrics-flow">
|
||||
<div class="metrics-primary">
|
||||
<figure class="chart-figure" data-chart="radar"><svg viewBox="0 0 300 300" role="img" aria-label="评分雷达"><text data-lang="zh-CN" x="20" y="28" class="chart-title">评分雷达</text><text data-lang="en" x="20" y="28" class="chart-title">Rating Radar</text><polygon points="150.0,127.0 171.9,142.9 163.5,168.6 136.5,168.6 128.1,142.9" fill="none" stroke="#e8e6dc" stroke-width="1"/><polygon points="150.0,104.0 193.7,135.8 177.0,187.2 123.0,187.2 106.3,135.8" fill="none" stroke="#e8e6dc" stroke-width="1"/><polygon points="150.0,81.0 215.6,128.7 190.6,205.8 109.4,205.8 84.4,128.7" fill="none" stroke="#e8e6dc" stroke-width="1"/><polygon points="150.0,58.0 237.5,121.6 204.1,224.4 95.9,224.4 62.5,121.6" fill="none" stroke="#e8e6dc" stroke-width="1"/><polygon points="150.0,58.0 237.5,121.6 204.1,224.4 95.9,224.4 62.5,121.6" fill="#E4ECF5" stroke="#1B365D" stroke-width="2"/><text data-lang="zh-CN" x="150.0" y="26.0" text-anchor="middle" dominant-baseline="middle">完整度</text><text data-lang="en" x="150.0" y="26.0" text-anchor="middle" dominant-baseline="middle">Completeness</text><text data-lang="zh-CN" x="267.9" y="111.7" text-anchor="middle" dominant-baseline="middle">触发清晰</text><text data-lang="en" x="267.9" y="111.7" text-anchor="middle" dominant-baseline="middle">Trigger clarity</text><text data-lang="zh-CN" x="222.9" y="250.3" text-anchor="middle" dominant-baseline="middle">证据充分</text><text data-lang="en" x="222.9" y="250.3" text-anchor="middle" dominant-baseline="middle">Evidence depth</text><text data-lang="zh-CN" x="77.1" y="250.3" text-anchor="middle" dominant-baseline="middle">可维护性</text><text data-lang="en" x="77.1" y="250.3" text-anchor="middle" dominant-baseline="middle">Maintainability</text><text data-lang="zh-CN" x="32.1" y="111.7" text-anchor="middle" dominant-baseline="middle">可迁移性</text><text data-lang="en" x="32.1" y="111.7" text-anchor="middle" dominant-baseline="middle">Portability</text></svg><figcaption><span data-lang="zh-CN">评分雷达展示结构完整度、触发边界、证据、维护和迁移的相对强弱。</span><span data-lang="en">The radar chart compares completeness, trigger clarity, evidence, maintainability, and portability.</span></figcaption></figure>
|
||||
<article class="panel metrics-note metrics-summary-panel">
|
||||
<h3><span data-lang="zh-CN">成熟度条</span><span data-lang="en">Maturity Bar</span></h3>
|
||||
<ol class='metric-summary-list'><li><span class='metric-status'><span data-lang="zh-CN">稳定</span><span data-lang="en">Stable</span></span><b><span data-lang="zh-CN">完整度</span><span data-lang="en">Completeness</span></b><em>100</em><small><span data-lang="zh-CN">SKILL.md 已存在,是 Skill 的入口。</span><span data-lang="en">SKILL.md exists and acts as the skill entrypoint.</span></small></li><li><span class='metric-status'><span data-lang="zh-CN">稳定</span><span data-lang="en">Stable</span></span><b><span data-lang="zh-CN">触发清晰</span><span data-lang="en">Trigger clarity</span></b><em>100</em><small><span data-lang="zh-CN">frontmatter description 已存在,具备基础路由面。</span><span data-lang="en">The frontmatter description exists, giving the skill a basic routing surface.</span></small></li><li><span class='metric-status'><span data-lang="zh-CN">稳定</span><span data-lang="en">Stable</span></span><b><span data-lang="zh-CN">证据充分</span><span data-lang="en">Evidence depth</span></b><em>100</em><small><span data-lang="zh-CN">已生成 20 / 20 类报告证据。</span><span data-lang="en">Generated 20 / 20 evidence report types.</span></small></li><li><span class='metric-status'><span data-lang="zh-CN">稳定</span><span data-lang="en">Stable</span></span><b><span data-lang="zh-CN">可维护性</span><span data-lang="en">Maintainability</span></b><em>100</em><small><span data-lang="zh-CN">SKILL.md 约 356 个词/字。</span><span data-lang="en">SKILL.md is about 356 words/characters.</span></small></li><li><span class='metric-status'><span data-lang="zh-CN">稳定</span><span data-lang="en">Stable</span></span><b><span data-lang="zh-CN">可迁移性</span><span data-lang="en">Portability</span></b><em>100</em><small><span data-lang="zh-CN">agents/interface.yaml 已存在。</span><span data-lang="en">agents/interface.yaml exists.</span></small></li><li><span class='metric-status'><span data-lang="zh-CN">关注</span><span data-lang="en">Watch</span></span><b><span data-lang="zh-CN">上下文成本</span><span data-lang="en">Context cost</span></b><em>42</em><small><span data-lang="zh-CN">入口约 356 个词/字,references 约 16045 个词/字。</span><span data-lang="en">Entrypoint is about 356 words/characters; references are about 16045.</span></small></li></ol>
|
||||
</article>
|
||||
</div>
|
||||
<div class="metric-grid metric-detail-grid"><article class='metric-card'><div class='metric-card-head'><span class='metric-label'><span data-lang="zh-CN">完整度</span><span data-lang="en">Completeness</span></span><strong>100</strong></div><div class='metric-card-body'><ul class="compact-list"><li><span data-lang="zh-CN">SKILL.md 已存在,是 Skill 的入口。</span><span data-lang="en">SKILL.md exists and acts as the skill entrypoint.</span></li><li><span data-lang="zh-CN">README.md 已存在,便于人工阅读。</span><span data-lang="en">README.md exists for human-readable usage.</span></li><li><span data-lang="zh-CN">agents/interface.yaml 已存在,便于跨平台适配。</span><span data-lang="en">agents/interface.yaml exists for cross-platform adaptation.</span></li></ul></div></article><article class='metric-card'><div class='metric-card-head'><span class='metric-label'><span data-lang="zh-CN">触发清晰</span><span data-lang="en">Trigger clarity</span></span><strong>100</strong></div><div class='metric-card-body'><ul class="compact-list"><li><span data-lang="zh-CN">frontmatter description 已存在,具备基础路由面。</span><span data-lang="en">The frontmatter description exists, giving the skill a basic routing surface.</span></li><li><span data-lang="zh-CN">description 有足够长度说明任务边界。</span><span data-lang="en">The description is long enough to explain the task boundary.</span></li><li><span data-lang="zh-CN">description 已包含使用场景或排除边界信号。</span><span data-lang="en">The description includes usage-scenario or exclusion-boundary signals.</span></li></ul></div></article><article class='metric-card'><div class='metric-card-head'><span class='metric-label'><span data-lang="zh-CN">证据充分</span><span data-lang="en">Evidence depth</span></span><strong>100</strong></div><div class='metric-card-body'><ul class="compact-list"><li><span data-lang="zh-CN">已生成 20 / 20 类报告证据。</span><span data-lang="en">Generated 20 / 20 evidence report types.</span></li><li><span data-lang="zh-CN">skill-ir.json 已存在。</span><span data-lang="en">Skill-specific source text is authored in Chinese; switch to Simplified Chinese for the exact wording.</span></li><li><span data-lang="zh-CN">compiled_targets.json 已存在。</span><span data-lang="en">Skill-specific source text is authored in Chinese; switch to Simplified Chinese for the exact wording.</span></li></ul></div></article><article class='metric-card'><div class='metric-card-head'><span class='metric-label'><span data-lang="zh-CN">可维护性</span><span data-lang="en">Maintainability</span></span><strong>100</strong></div><div class='metric-card-body'><ul class="compact-list"><li><span data-lang="zh-CN">SKILL.md 约 356 个词/字。</span><span data-lang="en">SKILL.md is about 356 words/characters.</span></li><li><span data-lang="zh-CN">入口文件保持克制,可维护性较好。</span><span data-lang="en">The entrypoint stays restrained, which supports maintainability.</span></li><li><span data-lang="zh-CN">references/ 已承载扩展指导。</span><span data-lang="en">references/ carries extended guidance.</span></li></ul></div></article><article class='metric-card'><div class='metric-card-head'><span class='metric-label'><span data-lang="zh-CN">可迁移性</span><span data-lang="en">Portability</span></span><strong>100</strong></div><div class='metric-card-body'><ul class="compact-list"><li><span data-lang="zh-CN">agents/interface.yaml 已存在。</span><span data-lang="en">agents/interface.yaml exists.</span></li><li><span data-lang="zh-CN">manifest.json 已存在。</span><span data-lang="en">manifest.json exists.</span></li><li><span data-lang="zh-CN">目标平台或 adapter target 已声明。</span><span data-lang="en">Target platforms or adapter targets are declared.</span></li></ul></div></article><article class='metric-card'><div class='metric-card-head'><span class='metric-label'><span data-lang="zh-CN">上下文成本</span><span data-lang="en">Context cost</span></span><strong>42</strong></div><div class='metric-card-body'><ul class="compact-list"><li><span data-lang="zh-CN">入口约 356 个词/字,references 约 16045 个词/字。</span><span data-lang="en">Entrypoint is about 356 words/characters; references are about 16045.</span></li><li><span data-lang="zh-CN">分数越高代表上下文成本越低。</span><span data-lang="en">A higher score means lower context cost.</span></li><li><span data-lang="zh-CN">上下文成本偏高,建议压缩入口或拆分 references。</span><span data-lang="en">Context cost is high; compress the entrypoint or split references further.</span></li></ul></div></article></div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section id="capability">
|
||||
<div class="section-head">
|
||||
<div>
|
||||
<h2><span data-lang="zh-CN">能力画像</span><span data-lang="en">Capability</span></h2>
|
||||
<p><span data-lang="zh-CN">判断这个 Skill 在能力地图中的位置和复用范围。</span><span data-lang="en">Places this skill on a capability map and clarifies reuse scope.</span></p>
|
||||
</div>
|
||||
<div class="two-col">
|
||||
<figure class="chart-figure" data-chart="matrix"><svg viewBox="0 0 520 460" role="img" aria-label="能力矩阵"><text data-lang="zh-CN" x="20" y="30" class="chart-title">能力矩阵</text><text data-lang="en" x="20" y="30" class="chart-title">Capability Matrix</text><rect x="70" y="70" width="380" height="320" fill="#faf9f5" stroke="#e8e6dc"/><line x1="260" y1="70" x2="260" y2="390" stroke="#e8e6dc"/><line x1="70" y1="230" x2="450" y2="230" stroke="#e8e6dc"/><text data-lang="zh-CN" x="260" y="424" text-anchor="middle">执行确定性</text><text data-lang="en" x="260" y="424" text-anchor="middle">Execution certainty</text><text data-lang="zh-CN" x="22" y="230" transform="rotate(-90 22 230)" text-anchor="middle">知识密度</text><text data-lang="en" x="22" y="230" transform="rotate(-90 22 230)" text-anchor="middle">Knowledge density</text><circle cx="343.6" cy="174.0" r="12" fill="#1B365D"/><text data-lang="zh-CN" x="361.6" y="179.0">Execution operation</text><text data-lang="en" x="361.6" y="179.0">Execution operation</text></svg><figcaption><span data-lang="zh-CN">能力矩阵说明这个 Skill 更偏知识密集还是执行确定。</span><span data-lang="en">The capability matrix shows whether the skill leans toward knowledge density or execution certainty.</span></figcaption></figure>
|
||||
<article class="panel">
|
||||
<h3><span data-lang="zh-CN">画像摘要</span><span data-lang="en">Profile</span></h3>
|
||||
<ul class="list"><li><span data-lang="zh-CN">能力类型:Execution operation</span><span data-lang="en">Capability type: Execution operation</span></li><li><span data-lang="zh-CN">成熟度:governed</span><span data-lang="en">Maturity: governed</span></li><li><span data-lang="zh-CN">触发强度:手动触发 + description 路由</span><span data-lang="en">Trigger strength: Manual activation plus description-based routing</span></li><li><span data-lang="zh-CN">复用范围:跨平台</span><span data-lang="en">Reuse scope: Cross-platform</span></li></ul>
|
||||
</article>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section id="principle">
|
||||
<div class="section-head">
|
||||
<div>
|
||||
<h2><span data-lang="zh-CN">原理结构</span><span data-lang="en">Principle</span></h2>
|
||||
<p><span data-lang="zh-CN">说明入口、参考、脚本、评估和报告如何组成一个稳定闭环。</span><span data-lang="en">Explains how entrypoint, references, scripts, evals, and reports form a stable loop.</span></p>
|
||||
</div>
|
||||
<div>
|
||||
<div class="chart-grid"><figure class="chart-figure" data-chart="layers"><svg viewBox="0 0 520 320" role="img" aria-label="Skill principle flow"><text data-lang="zh-CN" x="20" y="30" class="chart-title">分层结构</text><text data-lang="en" x="20" y="30" class="chart-title">Layered Structure</text><rect x="70" y="55" width="380" height="34" rx="7" fill="#F6F8FB" stroke="#e8e6dc"/><text data-lang="zh-CN" x="260" y="77" text-anchor="middle">入口层</text><text data-lang="en" x="260" y="77" text-anchor="middle">Entrypoint layer</text><rect x="88" y="103" width="344" height="34" rx="7" fill="#F6F8FB" stroke="#e8e6dc"/><text data-lang="zh-CN" x="260" y="125" text-anchor="middle">参考层</text><text data-lang="en" x="260" y="125" text-anchor="middle">Reference layer</text><rect x="106" y="151" width="308" height="34" rx="7" fill="#F6F8FB" stroke="#e8e6dc"/><text data-lang="zh-CN" x="260" y="173" text-anchor="middle">脚本层</text><text data-lang="en" x="260" y="173" text-anchor="middle">Script layer</text><rect x="124" y="199" width="272" height="34" rx="7" fill="#F6F8FB" stroke="#e8e6dc"/><text data-lang="zh-CN" x="260" y="221" text-anchor="middle">评估层</text><text data-lang="en" x="260" y="221" text-anchor="middle">Evaluation layer</text><rect x="142" y="247" width="236" height="34" rx="7" fill="#F6F8FB" stroke="#e8e6dc"/><text data-lang="zh-CN" x="260" y="269" text-anchor="middle">报告层</text><text data-lang="en" x="260" y="269" text-anchor="middle">Report layer</text></svg><figcaption><span data-lang="zh-CN">分层结构展示入口、参考、脚本、评估和报告如何各司其职。</span><span data-lang="en">The layered structure shows how entrypoint, references, scripts, evals, and reports each carry a distinct role.</span></figcaption></figure></div>
|
||||
<div class="two-col">
|
||||
<article class="panel">
|
||||
<h3><span data-lang="zh-CN">执行流程</span><span data-lang="en">Execution Flow</span></h3>
|
||||
<ol class="step-list"><li><span data-lang="zh-CN">判断请求是否应该沉淀为 Skill,并选择最轻量可靠的模式。</span><span data-lang="en">Decide whether the request should become a skill and choose the lightest fit.</span></li><li><span data-lang="zh-CN">捕捉任务、输出、排除项、约束和质量标准。</span><span data-lang="en">Capture job, output, exclusions, constraints, and standards.</span></li><li><span data-lang="zh-CN">运行参考扫描:先看外部 benchmark,再看用户材料,最后校验本地适配;只暴露不确定性或冲突。</span><span data-lang="en">Run reference scan: external benchmarks first, user references second, local fit third; surface only uncertainty or conflict.</span></li><li><span data-lang="zh-CN">尽早写出 `description`,先测试路由质量,再扩展包体。</span><span data-lang="en">Write the `description` early and test route quality before expanding the package.</span></li><li><span data-lang="zh-CN">只在确有价值时添加 output-risk、artifact-design、prompt-quality 和 system-model 报告。</span><span data-lang="en">Add output-risk, artifact-design, prompt-quality, and system-model reports only when they matter.</span></li></ol>
|
||||
</article>
|
||||
<article class="panel">
|
||||
<h3><span data-lang="zh-CN">调用方式</span><span data-lang="en">How To Use</span></h3>
|
||||
<ol class="step-list"><li><span data-lang="zh-CN">当你需要把工作流或笔记沉淀成结构精简、触发清晰且带必要 eval 的可复用 Skill 时使用 $yao-meta-skill。</span><span data-lang="en">Use $yao-meta-skill to turn my workflow or notes into a reusable skill with lean structure, clear triggering, and the right evals.</span></li><li><span data-lang="zh-CN">当用户请求与该 Skill 的触发描述匹配时使用。</span><span data-lang="en">Use this skill when the request matches the frontmatter description.</span></li></ol>
|
||||
</article>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section id="contract">
|
||||
<div class="section-head">
|
||||
<div>
|
||||
<h2><span data-lang="zh-CN">契约边界</span><span data-lang="en">Contract</span></h2>
|
||||
<p><span data-lang="zh-CN">把触发、输入、输出和排除场景放在同一屏。</span><span data-lang="en">Keeps trigger, inputs, outputs, and exclusions on the same screen.</span></p>
|
||||
</div>
|
||||
<div class="two-col">
|
||||
<article class="panel">
|
||||
<h3><span data-lang="zh-CN">触发描述</span><span data-lang="en">Trigger</span></h3>
|
||||
<p><span data-lang="zh-CN">该 Skill 的触发描述来自 SKILL.md frontmatter;默认中文报告先呈现能力边界,原始英文描述可切换到英文查看。</span><span data-lang="en">Create, refactor, evaluate, and package agent skills from workflows, prompts, transcripts, docs, or notes. Use when asked to create a skill, turn a repeated process into a reusable skill, improve an existing skill, add evals, or package a skill for team reuse.</span></p>
|
||||
<h3><span data-lang="zh-CN">输入材料</span><span data-lang="en">Inputs</span></h3>
|
||||
<ul class="list"><li><span data-lang="zh-CN">原始说明可切换到英文查看;默认中文报告保留结论与结构说明。</span><span data-lang="en">rough workflow notes, SOPs, runbooks, prompts, transcripts, documents, or repeated task descriptions</span></li><li><span data-lang="zh-CN">原始说明可切换到英文查看;默认中文报告保留结论与结构说明。</span><span data-lang="en">an existing skill directory that needs refactor, evaluation, packaging, or governance hardening</span></li><li><span data-lang="zh-CN">原始说明可切换到英文查看;默认中文报告保留结论与结构说明。</span><span data-lang="en">target platform requirements such as OpenAI, Claude, generic Agent Skills, or team distribution</span></li><li><span data-lang="zh-CN">原始说明可切换到英文查看;默认中文报告保留结论与结构说明。</span><span data-lang="en">benchmark references, local constraints, desired maturity tier, and review standards</span></li></ul>
|
||||
</article>
|
||||
<article class="panel">
|
||||
<h3><span data-lang="zh-CN">输出结果</span><span data-lang="en">Outputs</span></h3>
|
||||
<ul class="list"><li><span data-lang="zh-CN">原始说明可切换到英文查看;默认中文报告保留结论与结构说明。</span><span data-lang="en">A working skill package with lean SKILL.md, aligned agents/interface.yaml, justified references, scripts only when useful, eval evidence, reports, packaging metadata, and clear next iteration recommendations.</span></li><li><span data-lang="zh-CN">结构化 Skill 目录,共 8 类关键资产。</span><span data-lang="en">Structured skill directory with 8 key asset groups.</span></li></ul>
|
||||
<h3><span data-lang="zh-CN">不应触发</span><span data-lang="en">Should Not Trigger</span></h3>
|
||||
<ul class="list"><li><span data-lang="zh-CN">只需要一次性回答、没有复用价值的临时请求。</span><span data-lang="en">One-off requests that do not need reusable skill behavior.</span></li><li><span data-lang="zh-CN">要求直接执行相邻任务,而不是沉淀或使用这个 Skill。</span><span data-lang="en">Requests to perform an adjacent task directly rather than create or use this skill.</span></li><li><span data-lang="zh-CN">缺少必要事实且用户不允许澄清的场景。</span><span data-lang="en">Cases that lack required facts and do not allow clarification.</span></li></ul>
|
||||
</article>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section id="quality">
|
||||
<div class="section-head">
|
||||
<div>
|
||||
<h2><span data-lang="zh-CN">质量评估</span><span data-lang="en">Quality</span></h2>
|
||||
<p><span data-lang="zh-CN">展示强项、缺口和建议,避免只给分不解释。</span><span data-lang="en">Shows strengths, gaps, and recommendations instead of scores without explanation.</span></p>
|
||||
</div>
|
||||
<div>
|
||||
<table>
|
||||
<thead><tr><th><span data-lang="zh-CN">类型</span><span data-lang="en">Type</span></th><th><span data-lang="zh-CN">证据</span><span data-lang="en">Evidence</span></th><th><span data-lang="zh-CN">建议</span><span data-lang="en">Action</span></th></tr></thead>
|
||||
<tbody><tr><td><span data-lang="zh-CN">强项</span><span data-lang="en">Strength</span></td><td><span data-lang="zh-CN">触发面保持精简,并锚定在 frontmatter description。</span><span data-lang="en">The trigger surface stays lean and anchored in the frontmatter description.</span></td><td><span data-lang="zh-CN">保留并复用</span><span data-lang="en">Keep</span></td></tr><tr><td><span data-lang="zh-CN">强项</span><span data-lang="en">Strength</span></td><td><span data-lang="zh-CN">已生成 Skill IR,核心语义可先于平台打包被审查和迁移。</span><span data-lang="en">Skill IR is generated so core semantics can be reviewed and migrated before platform packaging.</span></td><td><span data-lang="zh-CN">保留并复用</span><span data-lang="en">Keep</span></td></tr><tr><td><span data-lang="zh-CN">强项</span><span data-lang="en">Strength</span></td><td><span data-lang="zh-CN">已生成目标编译报告,可审查 IR 到 OpenAI、Claude、generic 等目标契约的映射。</span><span data-lang="en">Target compilation evidence is generated to review how IR maps to OpenAI, Claude, generic, and other target contracts.</span></td><td><span data-lang="zh-CN">保留并复用</span><span data-lang="en">Keep</span></td></tr><tr><td><span data-lang="zh-CN">缺口</span><span data-lang="en">Gap</span></td><td><span data-lang="zh-CN">上下文成本需要补强:入口约 356 个词/字,references 约 16045 个词/字。</span><span data-lang="en">Context cost needs improvement: Entrypoint is about 356 words/characters; references are about 16045.</span></td><td><span data-lang="zh-CN">纳入下一轮修复</span><span data-lang="en">Fix next</span></td></tr></tbody>
|
||||
</table>
|
||||
<div class="two-col quality-panels">
|
||||
<article class="panel">
|
||||
<h3><span data-lang="zh-CN">执行证据</span><span data-lang="en">Execution Evidence</span></h3>
|
||||
<ul class="list"><li><span data-lang="zh-CN">变体运行:10</span><span data-lang="en">Variant runs: 10</span></li><li><span data-lang="zh-CN">模型执行:0</span><span data-lang="en">Model executions: 0</span></li><li><span data-lang="zh-CN">记录样本:0</span><span data-lang="en">Recorded fixtures: 0</span></li><li><span data-lang="zh-CN">Token 估算:10</span><span data-lang="en">Token estimates: 10</span></li></ul>
|
||||
</article>
|
||||
<article class="panel">
|
||||
<h3><span data-lang="zh-CN">盲评审定</span><span data-lang="en">Blind Adjudication</span></h3>
|
||||
<ul class="list"><li><span data-lang="zh-CN">评审进度:0 / 5</span><span data-lang="en">Review progress: 0 / 5</span></li><li><span data-lang="zh-CN">待评审:5</span><span data-lang="en">Pending review: 5</span></li><li><span data-lang="zh-CN">一致率:暂无</span><span data-lang="en">Agreement rate: not available yet</span></li><li><span data-lang="zh-CN">非法决策:0</span><span data-lang="en">Invalid decisions: 0</span></li></ul>
|
||||
</article>
|
||||
</div>
|
||||
<div class="two-col quality-panels">
|
||||
<article class="panel">
|
||||
<h3><span data-lang="zh-CN">评审原则</span><span data-lang="en">Review Rule</span></h3>
|
||||
<ul class="list"><li><span data-lang="zh-CN">先记录 reviewer 对 A/B 的选择,再打开答案 key 计算一致率。</span><span data-lang="en">Record the reviewer's A/B choice before opening the answer key and calculating agreement.</span></li><li><span data-lang="zh-CN">缺少真实 reviewer 决策时只显示待评审,不伪造人工结论。</span><span data-lang="en">When real reviewer decisions are missing, show pending status instead of fabricating human conclusions.</span></li></ul>
|
||||
</article>
|
||||
<article class="panel">
|
||||
<h3><span data-lang="zh-CN">运行原则</span><span data-lang="en">Run Rule</span></h3>
|
||||
<ul class="list"><li><span data-lang="zh-CN">recorded fixture 只能证明可复现样本,不等同于模型执行。</span><span data-lang="en">A recorded fixture proves reproducible samples only; it is not model execution.</span></li><li><span data-lang="zh-CN">只有 provider runner 返回 model metadata 时才计入 model-executed。</span><span data-lang="en">Only provider runners that return model metadata count as model-executed.</span></li></ul>
|
||||
</article>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section id="risk">
|
||||
<div class="section-head">
|
||||
<div>
|
||||
<h2><span data-lang="zh-CN">风险治理</span><span data-lang="en">Risk</span></h2>
|
||||
<p><span data-lang="zh-CN">提前暴露误触发、漂移、证据不足和迁移风险。</span><span data-lang="en">Surfaces trigger, drift, evidence, and portability risks before the package grows.</span></p>
|
||||
</div>
|
||||
<div class="two-col">
|
||||
<figure class="chart-figure" data-chart="risk_heatmap"><svg viewBox="0 0 380 300" role="img" aria-label="风险热力"><text data-lang="zh-CN" x="20" y="30" class="chart-title">风险热力</text><text data-lang="en" x="20" y="30" class="chart-title">Risk Heatmap</text><rect x="80" y="190" width="78" height="58" rx="6" fill="#faf9f5" stroke="#e8e6dc"/><text x="119" y="224" text-anchor="middle">0</text><rect x="166" y="190" width="78" height="58" rx="6" fill="#faf9f5" stroke="#e8e6dc"/><text x="205" y="224" text-anchor="middle">0</text><rect x="252" y="190" width="78" height="58" rx="6" fill="#faf9f5" stroke="#e8e6dc"/><text x="291" y="224" text-anchor="middle">0</text><rect x="80" y="124" width="78" height="58" rx="6" fill="#D0DCE9" stroke="#e8e6dc"/><text x="119" y="158" text-anchor="middle">2</text><rect x="166" y="124" width="78" height="58" rx="6" fill="#faf9f5" stroke="#e8e6dc"/><text x="205" y="158" text-anchor="middle">0</text><rect x="252" y="124" width="78" height="58" rx="6" fill="#faf9f5" stroke="#e8e6dc"/><text x="291" y="158" text-anchor="middle">0</text><rect x="80" y="58" width="78" height="58" rx="6" fill="#1B365D" stroke="#e8e6dc"/><text x="119" y="92" text-anchor="middle">3</text><rect x="166" y="58" width="78" height="58" rx="6" fill="#faf9f5" stroke="#e8e6dc"/><text x="205" y="92" text-anchor="middle">0</text><rect x="252" y="58" width="78" height="58" rx="6" fill="#faf9f5" stroke="#e8e6dc"/><text x="291" y="92" text-anchor="middle">0</text><text data-lang="zh-CN" x="210" y="278" text-anchor="middle">发生概率</text><text data-lang="en" x="210" y="278" text-anchor="middle">Probability</text><text data-lang="zh-CN" x="24" y="160" transform="rotate(-90 24 160)" text-anchor="middle">影响程度</text><text data-lang="en" x="24" y="160" transform="rotate(-90 24 160)" text-anchor="middle">Impact</text></svg><figcaption><span data-lang="zh-CN">风险热力图用影响程度和发生概率标出当前治理重点。</span><span data-lang="en">The risk heatmap marks governance priorities by impact and probability.</span></figcaption></figure>
|
||||
<div>
|
||||
<table>
|
||||
<thead><tr><th><span data-lang="zh-CN">风险</span><span data-lang="en">Risk</span></th><th><span data-lang="zh-CN">信号</span><span data-lang="en">Signal</span></th><th><span data-lang="zh-CN">应对</span><span data-lang="en">Response</span></th></tr></thead>
|
||||
<tbody><tr><td><span data-lang="zh-CN">误触发风险</span><span data-lang="en">Trigger risk</span></td><td><span data-lang="zh-CN">frontmatter description 已存在,具备基础路由面。</span><span data-lang="en">The frontmatter description exists, giving the skill a basic routing surface.</span></td><td><span data-lang="zh-CN">先补证据和边界,再增加包体复杂度。</span><span data-lang="en">Improve evidence and boundaries before adding package complexity.</span></td></tr><tr><td><span data-lang="zh-CN">输出漂移风险</span><span data-lang="en">Output drift risk</span></td><td><span data-lang="zh-CN">已生成 20 / 20 类报告证据。</span><span data-lang="en">Generated 20 / 20 evidence report types.</span></td><td><span data-lang="zh-CN">先补证据和边界,再增加包体复杂度。</span><span data-lang="en">Improve evidence and boundaries before adding package complexity.</span></td></tr><tr><td><span data-lang="zh-CN">证据不足风险</span><span data-lang="en">Evidence gap risk</span></td><td><span data-lang="zh-CN">已生成 20 / 20 类报告证据。</span><span data-lang="en">Generated 20 / 20 evidence report types.</span></td><td><span data-lang="zh-CN">先补证据和边界,再增加包体复杂度。</span><span data-lang="en">Improve evidence and boundaries before adding package complexity.</span></td></tr><tr><td><span data-lang="zh-CN">包体膨胀风险</span><span data-lang="en">Package bloat risk</span></td><td><span data-lang="zh-CN">SKILL.md 约 356 个词/字。</span><span data-lang="en">SKILL.md is about 356 words/characters.</span></td><td><span data-lang="zh-CN">先补证据和边界,再增加包体复杂度。</span><span data-lang="en">Improve evidence and boundaries before adding package complexity.</span></td></tr><tr><td><span data-lang="zh-CN">跨平台迁移风险</span><span data-lang="en">Portability risk</span></td><td><span data-lang="zh-CN">agents/interface.yaml 已存在。</span><span data-lang="en">agents/interface.yaml exists.</span></td><td><span data-lang="zh-CN">先补证据和边界,再增加包体复杂度。</span><span data-lang="en">Improve evidence and boundaries before adding package complexity.</span></td></tr></tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<article class='panel world-readiness'><div class='world-readiness-head'><div><h3><span data-lang="zh-CN">世界证据</span><span data-lang="en">World Evidence</span></h3><p><span data-lang="zh-CN">世界级证据尚未完成:4 项待补,0 项已接受。</span><span data-lang="en">World-class evidence is not complete: 4 pending, 0 accepted.</span></p></div><span class='world-status'><span data-lang="zh-CN">证据待补</span><span data-lang="en">Evidence pending</span></span></div><div class='evidence-kpis'><article class='evidence-kpi'><span><span data-lang="zh-CN">待补证据</span><span data-lang="en">Pending</span></span><strong>4</strong><small><span data-lang="zh-CN">仍需外部或人工证据接受。</span><span data-lang="en">External or human evidence still needs acceptance.</span></small></article><article class='evidence-kpi'><span><span data-lang="zh-CN">已接受</span><span data-lang="en">Accepted</span></span><strong>0</strong><small><span data-lang="zh-CN">已通过 source check 与提交契约。</span><span data-lang="en">Passed source checks and submission contract.</span></small></article><article class='evidence-kpi'><span><span data-lang="zh-CN">源检查</span><span data-lang="en">Source Checks</span></span><strong>6 / 13</strong><small><span data-lang="zh-CN">通过数 / 总检查数。</span><span data-lang="en">Passed checks / total checks.</span></small></article></div><div class='evidence-list'><article class='evidence-item'><div><span><span data-lang="zh-CN">外部证据</span><span data-lang="en">External evidence</span></span><h4><span data-lang="zh-CN">提供商留出</span><span data-lang="en">Provider Holdout</span></h4></div><p><span data-lang="zh-CN">缺少真实 provider 模型运行和 token metadata。</span><span data-lang="en">Missing a real provider model run and token metadata.</span></p><h5><span data-lang="zh-CN">阻塞检查</span><span data-lang="en">Blocked Checks</span></h5><ul class='blocked-checks'><li><span data-lang="zh-CN">提供商实跑</span><span data-lang="en">Provider model run</span></li><li><span data-lang="zh-CN">Token 用量</span><span data-lang="en">Token usage observed</span></li></ul></article><article class='evidence-item'><div><span><span data-lang="zh-CN">人工证据</span><span data-lang="en">Human evidence</span></span><h4><span data-lang="zh-CN">人工盲评</span><span data-lang="en">Human Adjudication</span></h4></div><p><span data-lang="zh-CN">盲评 pair 仍待真实 reviewer 决策。</span><span data-lang="en">Blind-review pairs still need real reviewer decisions.</span></p><h5><span data-lang="zh-CN">阻塞检查</span><span data-lang="en">Blocked Checks</span></h5><ul class='blocked-checks'><li><span data-lang="zh-CN">无待判定</span><span data-lang="en">No pending decisions</span></li><li><span data-lang="zh-CN">盲评完成</span><span data-lang="en">Judgments complete</span></li></ul></article><article class='evidence-item'><div><span><span data-lang="zh-CN">外部证据</span><span data-lang="en">External evidence</span></span><h4><span data-lang="zh-CN">原生权限</span><span data-lang="en">Native Permission</span></h4></div><p><span data-lang="zh-CN">原生 runtime enforcement 仍待目标客户端或外部安装器证明。</span><span data-lang="en">Native runtime enforcement still needs target-client or external-installer proof.</span></p><h5><span data-lang="zh-CN">阻塞检查</span><span data-lang="en">Blocked Checks</span></h5><ul class='blocked-checks'><li><span data-lang="zh-CN">原生执行</span><span data-lang="en">Native enforcement</span></li></ul></article><article class='evidence-item'><div><span><span data-lang="zh-CN">外部证据</span><span data-lang="en">External evidence</span></span><h4><span data-lang="zh-CN">原生遥测</span><span data-lang="en">Native Telemetry</span></h4></div><p><span data-lang="zh-CN">真实外部客户端 metadata-only 事件仍未导入。</span><span data-lang="en">Real external-client metadata-only events have not been imported yet.</span></p><h5><span data-lang="zh-CN">阻塞检查</span><span data-lang="en">Blocked Checks</span></h5><ul class='blocked-checks'><li><span data-lang="zh-CN">外部事件</span><span data-lang="en">External events</span></li><li><span data-lang="zh-CN">采用样本</span><span data-lang="en">Adoption sample</span></li></ul></article></div></article>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section id="assets">
|
||||
<div class="section-head">
|
||||
<div>
|
||||
<h2><span data-lang="zh-CN">包体资产</span><span data-lang="en">Assets</span></h2>
|
||||
<p><span data-lang="zh-CN">让 reviewer 快速确认关键文件、目录和资产分布。</span><span data-lang="en">Lets reviewers confirm key files, directories, and asset distribution quickly.</span></p>
|
||||
</div>
|
||||
<div class="two-col">
|
||||
<figure class="chart-figure" data-chart="asset_donut"><svg viewBox="0 0 430 270" role="img" aria-label="资产分布"><text data-lang="zh-CN" x="20" y="30" class="chart-title">资产分布</text><text data-lang="en" x="20" y="30" class="chart-title">Asset Distribution</text><circle cx="130" cy="130" r="70" fill="none" stroke="#1B365D" stroke-width="24" stroke-dasharray="0.7 99.3" stroke-dashoffset="0.0" pathLength="100" transform="rotate(-90 130 130)"/><circle cx="130" cy="130" r="70" fill="none" stroke="#2D5A8A" stroke-width="24" stroke-dasharray="0.7 99.3" stroke-dashoffset="-0.7" pathLength="100" transform="rotate(-90 130 130)"/><circle cx="130" cy="130" r="70" fill="none" stroke="#D0DCE9" stroke-width="24" stroke-dasharray="0.7 99.3" stroke-dashoffset="-1.4" pathLength="100" transform="rotate(-90 130 130)"/><circle cx="130" cy="130" r="70" fill="none" stroke="#E4ECF5" stroke-width="24" stroke-dasharray="0.7 99.3" stroke-dashoffset="-2.1" pathLength="100" transform="rotate(-90 130 130)"/><circle cx="130" cy="130" r="70" fill="none" stroke="#e8e6dc" stroke-width="24" stroke-dasharray="23.6 76.4" stroke-dashoffset="-2.8" pathLength="100" transform="rotate(-90 130 130)"/><circle cx="130" cy="130" r="70" fill="none" stroke="#504e49" stroke-width="24" stroke-dasharray="73.6 26.4" stroke-dashoffset="-26.4" pathLength="100" transform="rotate(-90 130 130)"/><text data-lang="zh-CN" x="130" y="136" text-anchor="middle">386项</text><text data-lang="en" x="130" y="136" text-anchor="middle">386 items</text><text data-lang="zh-CN" x="235" y="78">SKILL.md</text><text data-lang="en" x="235" y="78">SKILL.md</text><text data-lang="zh-CN" x="235" y="100">README.md</text><text data-lang="en" x="235" y="100">README.md</text><text data-lang="zh-CN" x="235" y="122">agents/interface.yaml</text><text data-lang="en" x="235" y="122">agents/interface.yaml</text><text data-lang="zh-CN" x="235" y="144">manifest.json</text><text data-lang="en" x="235" y="144">manifest.json</text><text data-lang="zh-CN" x="235" y="166">references</text><text data-lang="en" x="235" y="166">references</text><text data-lang="zh-CN" x="235" y="188">scripts</text><text data-lang="en" x="235" y="188">scripts</text></svg><figcaption><span data-lang="zh-CN">资产分布图展示当前包体的文件和目录重心。</span><span data-lang="en">The asset distribution chart shows where files and directories are concentrated.</span></figcaption></figure>
|
||||
<table>
|
||||
<thead><tr><th><span data-lang="zh-CN">路径</span><span data-lang="en">Path</span></th><th><span data-lang="zh-CN">作用</span><span data-lang="en">Role</span></th><th><span data-lang="zh-CN">类型</span><span data-lang="en">Type</span></th></tr></thead>
|
||||
<tbody><tr><td>SKILL.md</td><td><span data-lang="zh-CN">Skill 入口文件</span><span data-lang="en">Skill entrypoint</span></td><td><span data-lang="zh-CN">文件</span><span data-lang="en">file</span></td></tr><tr><td>README.md</td><td><span data-lang="zh-CN">人类可读使用说明</span><span data-lang="en">Human-readable usage guide</span></td><td><span data-lang="zh-CN">文件</span><span data-lang="en">file</span></td></tr><tr><td>agents/interface.yaml</td><td><span data-lang="zh-CN">跨平台接口元数据</span><span data-lang="en">Neutral interface metadata</span></td><td><span data-lang="zh-CN">文件</span><span data-lang="en">file</span></td></tr><tr><td>manifest.json</td><td><span data-lang="zh-CN">生命周期与打包元数据</span><span data-lang="en">Lifecycle and portability metadata</span></td><td><span data-lang="zh-CN">文件</span><span data-lang="en">file</span></td></tr><tr><td>references</td><td><span data-lang="zh-CN">扩展指导与复用资料</span><span data-lang="en">Extended guidance and reusable notes</span></td><td><span data-lang="zh-CN">目录</span><span data-lang="en">folder</span></td></tr><tr><td>scripts</td><td><span data-lang="zh-CN">确定性脚本或本地工具</span><span data-lang="en">Deterministic helpers or local tooling</span></td><td><span data-lang="zh-CN">目录</span><span data-lang="en">folder</span></td></tr><tr><td>evals</td><td><span data-lang="zh-CN">触发与质量检查</span><span data-lang="en">Trigger and quality checks</span></td><td><span data-lang="zh-CN">目录</span><span data-lang="en">folder</span></td></tr><tr><td>reports</td><td><span data-lang="zh-CN">生成的证据与总结报告</span><span data-lang="en">Generated evidence and overview artifacts</span></td><td><span data-lang="zh-CN">目录</span><span data-lang="en">folder</span></td></tr></tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section id="roadmap">
|
||||
<div class="section-head">
|
||||
<div>
|
||||
<h2><span data-lang="zh-CN">迭代路线</span><span data-lang="en">Roadmap</span></h2>
|
||||
<p><span data-lang="zh-CN">把下一步升级收束为少数高价值动作。</span><span data-lang="en">Keeps next iteration moves focused and actionable.</span></p>
|
||||
</div>
|
||||
<div>
|
||||
<div class="chart-grid"><figure class="chart-figure" data-chart="timeline"><svg viewBox="0 0 520 210" role="img" aria-label="迭代时间"><text data-lang="zh-CN" x="20" y="30" class="chart-title">迭代时间</text><text data-lang="en" x="20" y="30" class="chart-title">Iteration Timeline</text><line x1="60" y1="92" x2="440" y2="92" class="chart-line"/><circle cx="60" cy="92" r="10" fill="#1B365D"/><text data-lang="zh-CN" x="60" y="126" text-anchor="middle">下一步 1</text><text data-lang="en" x="60" y="126" text-anchor="middle">Next 1</text><text data-lang="zh-CN" x="60" y="150" text-anchor="middle">补齐世界证据</text><text data-lang="en" x="60" y="150" text-anchor="middle">Close world-class evide...</text><circle cx="250" cy="92" r="10" fill="#1B365D"/><text data-lang="zh-CN" x="250" y="126" text-anchor="middle">下一步 2</text><text data-lang="en" x="250" y="126" text-anchor="middle">Next 2</text><text data-lang="zh-CN" x="250" y="150" text-anchor="middle">Borrow one proven…</text><text data-lang="en" x="250" y="150" text-anchor="middle">Borrow one proven…</text><circle cx="440" cy="92" r="10" fill="#1B365D"/><text data-lang="zh-CN" x="440" y="126" text-anchor="middle">下一步 3</text><text data-lang="en" x="440" y="126" text-anchor="middle">Next 3</text><text data-lang="zh-CN" x="440" y="150" text-anchor="middle">Harden portabilit…</text><text data-lang="en" x="440" y="150" text-anchor="middle">Harden portabilit…</text></svg><figcaption><span data-lang="zh-CN">迭代时间线把下一步升级收束成少数可执行动作。</span><span data-lang="en">The iteration timeline narrows the next upgrade into a few executable moves.</span></figcaption></figure></div>
|
||||
<div class="roadmap"><article class='roadmap-item'><span class='step'><span data-lang="zh-CN">下一步 1</span><span data-lang="en">Next 1</span></span><h3><span data-lang="zh-CN">补齐世界证据</span><span data-lang="en">Close world-class evidence</span></h3><p><span data-lang="zh-CN">世界级证据仍有 4 项待补;公开完成态 claim 必须继续保持阻塞。</span><span data-lang="en">World-class evidence still has 4 pending item(s); public completion claims must stay blocked.</span></p><ul class="compact-list"><li><span data-lang="zh-CN">补齐提供商留出证据:缺少真实 provider 模型运行和 token metadata。</span><span data-lang="en">Close provider holdout evidence: Missing a real provider model run and token metadata.</span></li><li><span data-lang="zh-CN">补齐人工盲评证据:盲评 pair 仍待真实 reviewer 决策。</span><span data-lang="en">Close human adjudication evidence: Blind-review pairs still need real reviewer decisions.</span></li><li><span data-lang="zh-CN">继续补齐剩余 2 项外部/人工证据,并保持 claim guard 为 pending 状态。</span><span data-lang="en">Close the remaining 2 external or human evidence item(s) and keep the claim guard pending.</span></li></ul><p class='unlock'><span data-lang="zh-CN">全部外部/人工证据被 ledger 接受后,才能进入公开 world-class claim 复核。</span><span data-lang="en">Only after the ledger accepts all external and human evidence should the public world-class claim move to review.</span></p></article><article class='roadmap-item'><span class='step'><span data-lang="zh-CN">下一步 2</span><span data-lang="en">Next 2</span></span><h3><span data-lang="zh-CN">有选择地借鉴一个成熟模式</span><span data-lang="en">Borrow one proven pattern on purpose</span></h3><p><span data-lang="zh-CN">已经有公开 benchmark 对象,下一步应主动选择一个模式借鉴,而不是松散吸收所有做法。</span><span data-lang="en">You already have public benchmark objects. The next gain is to choose one pattern intentionally instead of absorbing everything loosely.</span></p><ul class="compact-list"><li><span data-lang="zh-CN">阅读 `obra/superpowers` 中最值得借鉴的模式。</span><span data-lang="en">Read the strongest pattern from obra/superpowers.</span></li><li><span data-lang="zh-CN">先判断要借鉴的是方法、结构、执行方式还是可迁移性,并且第一轮只借鉴其中一个。</span><span data-lang="en">Decide whether to borrow method, structure, execution, or portability, but only one of them first.</span></li><li><span data-lang="zh-CN">记录本轮不借鉴的内容,避免包体过重。</span><span data-lang="en">Record what you will not borrow so the package stays light.</span></li></ul><p class='unlock'><span data-lang="zh-CN">包体形态更清晰,也减少偶然过度设计。</span><span data-lang="en">A cleaner package shape with less accidental over-design.</span></p></article><article class='roadmap-item'><span class='step'><span data-lang="zh-CN">下一步 3</span><span data-lang="en">Next 3</span></span><h3><span data-lang="zh-CN">加固跨环境语义</span><span data-lang="en">Harden portability semantics</span></h3><p><span data-lang="zh-CN">这个 Skill 已经面向跨环境复用,因此早期就需要把契约语义说清楚。</span><span data-lang="en">The skill already signals reuse across environments, so contract clarity matters early.</span></p><ul class="compact-list"><li><span data-lang="zh-CN">确认激活模式、执行上下文和信任假设。</span><span data-lang="en">Confirm activation mode, execution context, and trust assumptions.</span></li><li><span data-lang="zh-CN">补充或复核非原生目标端的降级策略。</span><span data-lang="en">Add or review degradation strategy for non-native targets.</span></li><li><span data-lang="zh-CN">至少打包一次 Skill,用来验证 adapter 预期。</span><span data-lang="en">Package the skill once to verify adapter expectations.</span></li></ul><p class='unlock'><span data-lang="zh-CN">跨环境复用更安全,目标漂移更少。</span><span data-lang="en">Safer cross-environment reuse with less target drift.</span></p></article></div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</main>
|
||||
<script>
|
||||
(function () {
|
||||
var buttons = Array.prototype.slice.call(document.querySelectorAll("[data-set-lang]"));
|
||||
var navLinks = Array.prototype.slice.call(document.querySelectorAll(".report-nav a"));
|
||||
var sections = navLinks
|
||||
.map(function (link) { return document.querySelector(link.getAttribute("href")); })
|
||||
.filter(Boolean);
|
||||
var progressBar = document.querySelector(".progress-bar");
|
||||
function setLanguage(lang) {
|
||||
document.body.setAttribute("data-report-lang", lang);
|
||||
document.documentElement.setAttribute("lang", lang);
|
||||
buttons.forEach(function (button) {
|
||||
button.setAttribute("aria-pressed", button.getAttribute("data-set-lang") === lang ? "true" : "false");
|
||||
});
|
||||
}
|
||||
function updateProgress() {
|
||||
var scrollTop = window.scrollY || document.documentElement.scrollTop;
|
||||
var height = Math.max(1, document.documentElement.scrollHeight - window.innerHeight);
|
||||
var pct = Math.min(100, Math.max(0, (scrollTop / height) * 100));
|
||||
if (progressBar) progressBar.style.transform = "scaleX(" + pct / 100 + ")";
|
||||
var active = sections[0];
|
||||
sections.forEach(function (section) {
|
||||
if (section.getBoundingClientRect().top <= 110) active = section;
|
||||
});
|
||||
navLinks.forEach(function (link) {
|
||||
link.setAttribute("aria-current", link.getAttribute("href") === "#" + active.id ? "true" : "false");
|
||||
});
|
||||
}
|
||||
buttons.forEach(function (button) {
|
||||
button.addEventListener("click", function () {
|
||||
setLanguage(button.getAttribute("data-set-lang"));
|
||||
});
|
||||
});
|
||||
window.addEventListener("scroll", updateProgress, { passive: true });
|
||||
window.addEventListener("resize", updateProgress);
|
||||
setLanguage("zh-CN");
|
||||
updateProgress();
|
||||
})();
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
File diff suppressed because it is too large
Load Diff
+13
-10
@@ -358,7 +358,7 @@
|
||||
}
|
||||
.metrics-primary {
|
||||
display: grid;
|
||||
grid-template-columns: minmax(420px, 1fr) minmax(360px, 0.88fr);
|
||||
grid-template-columns: minmax(0, 1.2fr) minmax(320px, 0.8fr);
|
||||
gap: 22px;
|
||||
align-items: start;
|
||||
}
|
||||
@@ -426,7 +426,7 @@
|
||||
margin-top: 2px;
|
||||
}
|
||||
.metric-detail-grid {
|
||||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||
grid-template-columns: repeat(auto-fit, minmax(min(100%, 340px), 1fr));
|
||||
align-items: stretch;
|
||||
}
|
||||
.list, .compact-list, .step-list {
|
||||
@@ -456,18 +456,20 @@
|
||||
}
|
||||
.metric-card {
|
||||
display: grid;
|
||||
grid-template-columns: minmax(96px, 118px) minmax(0, 1fr);
|
||||
gap: 18px;
|
||||
grid-template-columns: 1fr;
|
||||
gap: 14px;
|
||||
align-content: start;
|
||||
min-height: 0;
|
||||
}
|
||||
.metric-card-head {
|
||||
display: grid;
|
||||
align-content: start;
|
||||
display: flex;
|
||||
gap: 14px;
|
||||
align-items: flex-start;
|
||||
justify-content: space-between;
|
||||
}
|
||||
.metric-card strong {
|
||||
display: block;
|
||||
margin: 8px 0 10px;
|
||||
margin: 0;
|
||||
color: var(--brand);
|
||||
font-family: var(--mono);
|
||||
font-size: 2rem;
|
||||
@@ -478,6 +480,7 @@
|
||||
.metric-label {
|
||||
color: var(--muted);
|
||||
font-size: 13px;
|
||||
line-height: 1.45;
|
||||
}
|
||||
.metric-card-body {
|
||||
min-width: 0;
|
||||
@@ -773,7 +776,7 @@
|
||||
<div class="two-col">
|
||||
<article class="panel">
|
||||
<h3><span data-lang="zh-CN">作用定位</span><span data-lang="en">Role</span></h3>
|
||||
<ul class="list"><li><span data-lang="zh-CN">从工作流、提示词、对话记录、文档或笔记中创建、重构、评估和打包 agent skill;适用于新建 Skill、沉淀重复流程、改进现有 Skill、补充 eval 或团队复用打包。</span><span data-lang="en">Create, refactor, evaluate, and package agent skills from workflows, prompts, transcripts, docs, or notes. Use when asked to create a skill, turn a repeated process into a reusable skill, improve an existing skill, add evals, or package a skill for team reuse.</span></li><li><span data-lang="zh-CN">把一次性经验沉淀为可复用、可评估、可迁移的 Skill 包体。</span><span data-lang="en">Turn one-off experience into a reusable, evaluable, and portable skill package.</span></li><li><span data-lang="zh-CN">交付结果:SKILL.md, agents/interface.yaml, reports/skill-ir.json, reports/compiled_targets.md, reports/output_quality_scorecard.md, reports/output_execution_runs.md, reports/output_blind_review_pack.md, reports/output_review_kit.md, reports/output_review_adjudication.md, reports/benchmark_reproducibility.md, reports/output_blind_answer_key.json, reports/conformance_matrix.md, reports/security_trust_report.md, reports/runtime_permission_probes.md, reports/skill_atlas.html, reports/registry_audit.md, reports/package_verification.md, reports/install_simulation.md, reports/upgrade_check.md, reports/adoption_drift_report.md, reports/review_waivers.md, reports/world_class_evidence_plan.md, reports/world_class_evidence_ledger.md, reports/review_annotations.md, reports/review-studio.html, reports/skill-overview.html</span><span data-lang="en">Deliverables: SKILL.md, agents/interface.yaml, reports/skill-ir.json, reports/compiled_targets.md, reports/output_quality_scorecard.md, reports/output_execution_runs.md, reports/output_blind_review_pack.md, reports/output_review_kit.md, reports/output_review_adjudication.md, reports/benchmark_reproducibility.md, reports/output_blind_answer_key.json, reports/conformance_matrix.md, reports/security_trust_report.md, reports/runtime_permission_probes.md, reports/skill_atlas.html, reports/registry_audit.md, reports/package_verification.md, reports/install_simulation.md, reports/upgrade_check.md, reports/adoption_drift_report.md, reports/review_waivers.md, reports/world_class_evidence_plan.md, reports/world_class_evidence_ledger.md, reports/review_annotations.md, reports/review-studio.html, reports/skill-overview.html</span></li></ul>
|
||||
<ul class="list"><li><span data-lang="zh-CN">从工作流、提示词、对话记录、文档或笔记中创建、重构、评估和打包 agent skill;适用于新建 Skill、沉淀重复流程、改进现有 Skill、补充 eval 或团队复用打包。</span><span data-lang="en">Create, refactor, evaluate, and package agent skills from workflows, prompts, transcripts, docs, or notes. Use when asked to create a skill, turn a repeated process into a reusable skill, improve an existing skill, add evals, or package a skill for team reuse.</span></li><li><span data-lang="zh-CN">把一次性经验沉淀为可复用、可评估、可迁移的 Skill 包体。</span><span data-lang="en">Turn one-off experience into a reusable, evaluable, and portable skill package.</span></li><li><span data-lang="zh-CN">交付结果:SKILL.md, agents/interface.yaml, reports/skill-ir.json, reports/compiled_targets.md, reports/output_quality_scorecard.md, reports/output_execution_runs.md, reports/output_blind_review_pack.md, reports/output_review_kit.md, reports/output_review_adjudication.md, reports/benchmark_reproducibility.md, reports/output_blind_answer_key.json, reports/conformance_matrix.md, reports/security_trust_report.md, reports/runtime_permission_probes.md, reports/skill_atlas.html, reports/registry_audit.md, reports/package_verification.md, reports/install_simulation.md, reports/upgrade_check.md, reports/adoption_drift_report.md, reports/review_waivers.md, reports/world_class_evidence_plan.md, reports/world_class_evidence_ledger.md, reports/review_annotations.md, reports/review-studio.html, reports/skill-interpretation.html, reports/skill-overview.html</span><span data-lang="en">Deliverables: SKILL.md, agents/interface.yaml, reports/skill-ir.json, reports/compiled_targets.md, reports/output_quality_scorecard.md, reports/output_execution_runs.md, reports/output_blind_review_pack.md, reports/output_review_kit.md, reports/output_review_adjudication.md, reports/benchmark_reproducibility.md, reports/output_blind_answer_key.json, reports/conformance_matrix.md, reports/security_trust_report.md, reports/runtime_permission_probes.md, reports/skill_atlas.html, reports/registry_audit.md, reports/package_verification.md, reports/install_simulation.md, reports/upgrade_check.md, reports/adoption_drift_report.md, reports/review_waivers.md, reports/world_class_evidence_plan.md, reports/world_class_evidence_ledger.md, reports/review_annotations.md, reports/review-studio.html, reports/skill-interpretation.html, reports/skill-overview.html</span></li></ul>
|
||||
</article>
|
||||
<figure class="chart-figure" data-chart="flow"><svg viewBox="0 0 620 170" role="img" aria-label="交付流程"><text data-lang="zh-CN" x="20" y="28" class="chart-title">交付流程</text><text data-lang="en" x="20" y="28" class="chart-title">Delivery Flow</text><path d="M188 93 H248 M398 93 H458" class="chart-line"/><g><rect x="38" y="56" width="150" height="74" rx="8" fill="#F6F8FB" stroke="#e8e6dc"/><text data-lang="zh-CN" x="113" y="99" text-anchor="middle">输入材料</text><text data-lang="en" x="113" y="99" text-anchor="middle">Input material</text></g><g><rect x="248" y="56" width="150" height="74" rx="8" fill="#F6F8FB" stroke="#e8e6dc"/><text data-lang="zh-CN" x="323" y="99" text-anchor="middle">Skill 包体</text><text data-lang="en" x="323" y="99" text-anchor="middle">Skill package</text></g><g><rect x="458" y="56" width="150" height="74" rx="8" fill="#F6F8FB" stroke="#e8e6dc"/><text data-lang="zh-CN" x="533" y="99" text-anchor="middle">可复用能力</text><text data-lang="en" x="533" y="99" text-anchor="middle">Reusable capability</text></g></svg><figcaption><span data-lang="zh-CN">交付流程把用户输入、生成的包体和可复用能力放在一条线上。</span><span data-lang="en">The delivery flow places user input, generated package, and reusable capability on one path.</span></figcaption></figure>
|
||||
</div>
|
||||
@@ -916,7 +919,7 @@
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<article class='panel world-readiness'><div class='world-readiness-head'><div><h3><span data-lang="zh-CN">世界证据</span><span data-lang="en">World Evidence</span></h3><p><span data-lang="zh-CN">世界级证据尚未完成:4 项待补,0 项已接受。</span><span data-lang="en">World-class evidence is not complete: 4 pending, 0 accepted.</span></p></div><span class='world-status'><span data-lang="zh-CN">证据待补</span><span data-lang="en">Evidence pending</span></span></div><div class='evidence-kpis'><article class='evidence-kpi'><span><span data-lang="zh-CN">待补证据</span><span data-lang="en">Pending</span></span><strong>4</strong><small><span data-lang="zh-CN">仍需外部或人工证据接受。</span><span data-lang="en">External or human evidence still needs acceptance.</span></small></article><article class='evidence-kpi'><span><span data-lang="zh-CN">已接受</span><span data-lang="en">Accepted</span></span><strong>0</strong><small><span data-lang="zh-CN">已通过 source check 与提交契约。</span><span data-lang="en">Passed source checks and submission contract.</span></small></article><article class='evidence-kpi'><span><span data-lang="zh-CN">源检查</span><span data-lang="en">Source Checks</span></span><strong>7 / 13</strong><small><span data-lang="zh-CN">通过数 / 总检查数。</span><span data-lang="en">Passed checks / total checks.</span></small></article></div><div class='evidence-list'><article class='evidence-item'><div><span><span data-lang="zh-CN">外部证据</span><span data-lang="en">External evidence</span></span><h4><span data-lang="zh-CN">提供商留出</span><span data-lang="en">Provider Holdout</span></h4></div><p><span data-lang="zh-CN">缺少真实 provider 模型运行和 token metadata。</span><span data-lang="en">Missing a real provider model run and token metadata.</span></p><h5><span data-lang="zh-CN">阻塞检查</span><span data-lang="en">Blocked Checks</span></h5><ul class='blocked-checks'><li><span data-lang="zh-CN">提供商实跑</span><span data-lang="en">Provider model run</span></li><li><span data-lang="zh-CN">Token 用量</span><span data-lang="en">Token usage observed</span></li></ul></article><article class='evidence-item'><div><span><span data-lang="zh-CN">人工证据</span><span data-lang="en">Human evidence</span></span><h4><span data-lang="zh-CN">人工盲评</span><span data-lang="en">Human Adjudication</span></h4></div><p><span data-lang="zh-CN">盲评 pair 仍待真实 reviewer 决策。</span><span data-lang="en">Blind-review pairs still need real reviewer decisions.</span></p><h5><span data-lang="zh-CN">阻塞检查</span><span data-lang="en">Blocked Checks</span></h5><ul class='blocked-checks'><li><span data-lang="zh-CN">无待判定</span><span data-lang="en">No pending decisions</span></li><li><span data-lang="zh-CN">盲评完成</span><span data-lang="en">Judgments complete</span></li></ul></article><article class='evidence-item'><div><span><span data-lang="zh-CN">外部证据</span><span data-lang="en">External evidence</span></span><h4><span data-lang="zh-CN">原生权限</span><span data-lang="en">Native Permission</span></h4></div><p><span data-lang="zh-CN">原生 runtime enforcement 仍待目标客户端或外部安装器证明。</span><span data-lang="en">Native runtime enforcement still needs target-client or external-installer proof.</span></p><h5><span data-lang="zh-CN">阻塞检查</span><span data-lang="en">Blocked Checks</span></h5><ul class='blocked-checks'><li><span data-lang="zh-CN">原生执行</span><span data-lang="en">Native enforcement</span></li></ul></article><article class='evidence-item'><div><span><span data-lang="zh-CN">外部证据</span><span data-lang="en">External evidence</span></span><h4><span data-lang="zh-CN">原生遥测</span><span data-lang="en">Native Telemetry</span></h4></div><p><span data-lang="zh-CN">真实外部客户端 metadata-only 事件仍未导入。</span><span data-lang="en">Real external-client metadata-only events have not been imported yet.</span></p><h5><span data-lang="zh-CN">阻塞检查</span><span data-lang="en">Blocked Checks</span></h5><ul class='blocked-checks'><li><span data-lang="zh-CN">外部事件</span><span data-lang="en">External events</span></li></ul></article></div></article>
|
||||
<article class='panel world-readiness'><div class='world-readiness-head'><div><h3><span data-lang="zh-CN">世界证据</span><span data-lang="en">World Evidence</span></h3><p><span data-lang="zh-CN">世界级证据尚未完成:4 项待补,0 项已接受。</span><span data-lang="en">World-class evidence is not complete: 4 pending, 0 accepted.</span></p></div><span class='world-status'><span data-lang="zh-CN">证据待补</span><span data-lang="en">Evidence pending</span></span></div><div class='evidence-kpis'><article class='evidence-kpi'><span><span data-lang="zh-CN">待补证据</span><span data-lang="en">Pending</span></span><strong>4</strong><small><span data-lang="zh-CN">仍需外部或人工证据接受。</span><span data-lang="en">External or human evidence still needs acceptance.</span></small></article><article class='evidence-kpi'><span><span data-lang="zh-CN">已接受</span><span data-lang="en">Accepted</span></span><strong>0</strong><small><span data-lang="zh-CN">已通过 source check 与提交契约。</span><span data-lang="en">Passed source checks and submission contract.</span></small></article><article class='evidence-kpi'><span><span data-lang="zh-CN">源检查</span><span data-lang="en">Source Checks</span></span><strong>6 / 13</strong><small><span data-lang="zh-CN">通过数 / 总检查数。</span><span data-lang="en">Passed checks / total checks.</span></small></article></div><div class='evidence-list'><article class='evidence-item'><div><span><span data-lang="zh-CN">外部证据</span><span data-lang="en">External evidence</span></span><h4><span data-lang="zh-CN">提供商留出</span><span data-lang="en">Provider Holdout</span></h4></div><p><span data-lang="zh-CN">缺少真实 provider 模型运行和 token metadata。</span><span data-lang="en">Missing a real provider model run and token metadata.</span></p><h5><span data-lang="zh-CN">阻塞检查</span><span data-lang="en">Blocked Checks</span></h5><ul class='blocked-checks'><li><span data-lang="zh-CN">提供商实跑</span><span data-lang="en">Provider model run</span></li><li><span data-lang="zh-CN">Token 用量</span><span data-lang="en">Token usage observed</span></li></ul></article><article class='evidence-item'><div><span><span data-lang="zh-CN">人工证据</span><span data-lang="en">Human evidence</span></span><h4><span data-lang="zh-CN">人工盲评</span><span data-lang="en">Human Adjudication</span></h4></div><p><span data-lang="zh-CN">盲评 pair 仍待真实 reviewer 决策。</span><span data-lang="en">Blind-review pairs still need real reviewer decisions.</span></p><h5><span data-lang="zh-CN">阻塞检查</span><span data-lang="en">Blocked Checks</span></h5><ul class='blocked-checks'><li><span data-lang="zh-CN">无待判定</span><span data-lang="en">No pending decisions</span></li><li><span data-lang="zh-CN">盲评完成</span><span data-lang="en">Judgments complete</span></li></ul></article><article class='evidence-item'><div><span><span data-lang="zh-CN">外部证据</span><span data-lang="en">External evidence</span></span><h4><span data-lang="zh-CN">原生权限</span><span data-lang="en">Native Permission</span></h4></div><p><span data-lang="zh-CN">原生 runtime enforcement 仍待目标客户端或外部安装器证明。</span><span data-lang="en">Native runtime enforcement still needs target-client or external-installer proof.</span></p><h5><span data-lang="zh-CN">阻塞检查</span><span data-lang="en">Blocked Checks</span></h5><ul class='blocked-checks'><li><span data-lang="zh-CN">原生执行</span><span data-lang="en">Native enforcement</span></li></ul></article><article class='evidence-item'><div><span><span data-lang="zh-CN">外部证据</span><span data-lang="en">External evidence</span></span><h4><span data-lang="zh-CN">原生遥测</span><span data-lang="en">Native Telemetry</span></h4></div><p><span data-lang="zh-CN">真实外部客户端 metadata-only 事件仍未导入。</span><span data-lang="en">Real external-client metadata-only events have not been imported yet.</span></p><h5><span data-lang="zh-CN">阻塞检查</span><span data-lang="en">Blocked Checks</span></h5><ul class='blocked-checks'><li><span data-lang="zh-CN">外部事件</span><span data-lang="en">External events</span></li><li><span data-lang="zh-CN">采用样本</span><span data-lang="en">Adoption sample</span></li></ul></article></div></article>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
@@ -927,7 +930,7 @@
|
||||
<p><span data-lang="zh-CN">让 reviewer 快速确认关键文件、目录和资产分布。</span><span data-lang="en">Lets reviewers confirm key files, directories, and asset distribution quickly.</span></p>
|
||||
</div>
|
||||
<div class="two-col">
|
||||
<figure class="chart-figure" data-chart="asset_donut"><svg viewBox="0 0 430 270" role="img" aria-label="资产分布"><text data-lang="zh-CN" x="20" y="30" class="chart-title">资产分布</text><text data-lang="en" x="20" y="30" class="chart-title">Asset Distribution</text><circle cx="130" cy="130" r="70" fill="none" stroke="#1B365D" stroke-width="24" stroke-dasharray="0.7 99.3" stroke-dashoffset="0.0" pathLength="100" transform="rotate(-90 130 130)"/><circle cx="130" cy="130" r="70" fill="none" stroke="#2D5A8A" stroke-width="24" stroke-dasharray="0.7 99.3" stroke-dashoffset="-0.7" pathLength="100" transform="rotate(-90 130 130)"/><circle cx="130" cy="130" r="70" fill="none" stroke="#D0DCE9" stroke-width="24" stroke-dasharray="0.7 99.3" stroke-dashoffset="-1.4" pathLength="100" transform="rotate(-90 130 130)"/><circle cx="130" cy="130" r="70" fill="none" stroke="#E4ECF5" stroke-width="24" stroke-dasharray="0.7 99.3" stroke-dashoffset="-2.1" pathLength="100" transform="rotate(-90 130 130)"/><circle cx="130" cy="130" r="70" fill="none" stroke="#e8e6dc" stroke-width="24" stroke-dasharray="23.8 76.2" stroke-dashoffset="-2.8" pathLength="100" transform="rotate(-90 130 130)"/><circle cx="130" cy="130" r="70" fill="none" stroke="#504e49" stroke-width="24" stroke-dasharray="73.4 26.6" stroke-dashoffset="-26.6" pathLength="100" transform="rotate(-90 130 130)"/><text data-lang="zh-CN" x="130" y="136" text-anchor="middle">383项</text><text data-lang="en" x="130" y="136" text-anchor="middle">383 items</text><text data-lang="zh-CN" x="235" y="78">SKILL.md</text><text data-lang="en" x="235" y="78">SKILL.md</text><text data-lang="zh-CN" x="235" y="100">README.md</text><text data-lang="en" x="235" y="100">README.md</text><text data-lang="zh-CN" x="235" y="122">agents/interface.yaml</text><text data-lang="en" x="235" y="122">agents/interface.yaml</text><text data-lang="zh-CN" x="235" y="144">manifest.json</text><text data-lang="en" x="235" y="144">manifest.json</text><text data-lang="zh-CN" x="235" y="166">references</text><text data-lang="en" x="235" y="166">references</text><text data-lang="zh-CN" x="235" y="188">scripts</text><text data-lang="en" x="235" y="188">scripts</text></svg><figcaption><span data-lang="zh-CN">资产分布图展示当前包体的文件和目录重心。</span><span data-lang="en">The asset distribution chart shows where files and directories are concentrated.</span></figcaption></figure>
|
||||
<figure class="chart-figure" data-chart="asset_donut"><svg viewBox="0 0 430 270" role="img" aria-label="资产分布"><text data-lang="zh-CN" x="20" y="30" class="chart-title">资产分布</text><text data-lang="en" x="20" y="30" class="chart-title">Asset Distribution</text><circle cx="130" cy="130" r="70" fill="none" stroke="#1B365D" stroke-width="24" stroke-dasharray="0.7 99.3" stroke-dashoffset="0.0" pathLength="100" transform="rotate(-90 130 130)"/><circle cx="130" cy="130" r="70" fill="none" stroke="#2D5A8A" stroke-width="24" stroke-dasharray="0.7 99.3" stroke-dashoffset="-0.7" pathLength="100" transform="rotate(-90 130 130)"/><circle cx="130" cy="130" r="70" fill="none" stroke="#D0DCE9" stroke-width="24" stroke-dasharray="0.7 99.3" stroke-dashoffset="-1.4" pathLength="100" transform="rotate(-90 130 130)"/><circle cx="130" cy="130" r="70" fill="none" stroke="#E4ECF5" stroke-width="24" stroke-dasharray="0.7 99.3" stroke-dashoffset="-2.1" pathLength="100" transform="rotate(-90 130 130)"/><circle cx="130" cy="130" r="70" fill="none" stroke="#e8e6dc" stroke-width="24" stroke-dasharray="23.6 76.4" stroke-dashoffset="-2.8" pathLength="100" transform="rotate(-90 130 130)"/><circle cx="130" cy="130" r="70" fill="none" stroke="#504e49" stroke-width="24" stroke-dasharray="73.6 26.4" stroke-dashoffset="-26.4" pathLength="100" transform="rotate(-90 130 130)"/><text data-lang="zh-CN" x="130" y="136" text-anchor="middle">386项</text><text data-lang="en" x="130" y="136" text-anchor="middle">386 items</text><text data-lang="zh-CN" x="235" y="78">SKILL.md</text><text data-lang="en" x="235" y="78">SKILL.md</text><text data-lang="zh-CN" x="235" y="100">README.md</text><text data-lang="en" x="235" y="100">README.md</text><text data-lang="zh-CN" x="235" y="122">agents/interface.yaml</text><text data-lang="en" x="235" y="122">agents/interface.yaml</text><text data-lang="zh-CN" x="235" y="144">manifest.json</text><text data-lang="en" x="235" y="144">manifest.json</text><text data-lang="zh-CN" x="235" y="166">references</text><text data-lang="en" x="235" y="166">references</text><text data-lang="zh-CN" x="235" y="188">scripts</text><text data-lang="en" x="235" y="188">scripts</text></svg><figcaption><span data-lang="zh-CN">资产分布图展示当前包体的文件和目录重心。</span><span data-lang="en">The asset distribution chart shows where files and directories are concentrated.</span></figcaption></figure>
|
||||
<table>
|
||||
<thead><tr><th><span data-lang="zh-CN">路径</span><span data-lang="en">Path</span></th><th><span data-lang="zh-CN">作用</span><span data-lang="en">Role</span></th><th><span data-lang="zh-CN">类型</span><span data-lang="en">Type</span></th></tr></thead>
|
||||
<tbody><tr><td>SKILL.md</td><td><span data-lang="zh-CN">Skill 入口文件</span><span data-lang="en">Skill entrypoint</span></td><td><span data-lang="zh-CN">文件</span><span data-lang="en">file</span></td></tr><tr><td>README.md</td><td><span data-lang="zh-CN">人类可读使用说明</span><span data-lang="en">Human-readable usage guide</span></td><td><span data-lang="zh-CN">文件</span><span data-lang="en">file</span></td></tr><tr><td>agents/interface.yaml</td><td><span data-lang="zh-CN">跨平台接口元数据</span><span data-lang="en">Neutral interface metadata</span></td><td><span data-lang="zh-CN">文件</span><span data-lang="en">file</span></td></tr><tr><td>manifest.json</td><td><span data-lang="zh-CN">生命周期与打包元数据</span><span data-lang="en">Lifecycle and portability metadata</span></td><td><span data-lang="zh-CN">文件</span><span data-lang="en">file</span></td></tr><tr><td>references</td><td><span data-lang="zh-CN">扩展指导与复用资料</span><span data-lang="en">Extended guidance and reusable notes</span></td><td><span data-lang="zh-CN">目录</span><span data-lang="en">folder</span></td></tr><tr><td>scripts</td><td><span data-lang="zh-CN">确定性脚本或本地工具</span><span data-lang="en">Deterministic helpers or local tooling</span></td><td><span data-lang="zh-CN">目录</span><span data-lang="en">folder</span></td></tr><tr><td>evals</td><td><span data-lang="zh-CN">触发与质量检查</span><span data-lang="en">Trigger and quality checks</span></td><td><span data-lang="zh-CN">目录</span><span data-lang="en">folder</span></td></tr><tr><td>reports</td><td><span data-lang="zh-CN">生成的证据与总结报告</span><span data-lang="en">Generated evidence and overview artifacts</span></td><td><span data-lang="zh-CN">目录</span><span data-lang="en">folder</span></td></tr></tbody>
|
||||
|
||||
+43
-41
@@ -34,6 +34,7 @@
|
||||
"reports/world_class_evidence_ledger.md",
|
||||
"reports/review_annotations.md",
|
||||
"reports/review-studio.html",
|
||||
"reports/skill-interpretation.html",
|
||||
"reports/skill-overview.html"
|
||||
],
|
||||
"flow": [
|
||||
@@ -410,7 +411,7 @@
|
||||
"external_pending_count": 3,
|
||||
"human_pending_count": 1,
|
||||
"source_check_count": 13,
|
||||
"source_pass_count": 7,
|
||||
"source_pass_count": 6,
|
||||
"conclusion_zh": "世界级证据尚未完成:4 项待补,0 项已接受。",
|
||||
"conclusion_en": "World-class evidence is not complete: 4 pending, 0 accepted.",
|
||||
"entries": [
|
||||
@@ -469,7 +470,8 @@
|
||||
"summary_zh": "真实外部客户端 metadata-only 事件仍未导入。",
|
||||
"summary_en": "Real external-client metadata-only events have not been imported yet.",
|
||||
"blocked_checks": [
|
||||
"External events"
|
||||
"External events",
|
||||
"Adoption sample"
|
||||
]
|
||||
}
|
||||
]
|
||||
@@ -510,7 +512,7 @@
|
||||
"path": "scripts",
|
||||
"label": "Deterministic helpers or local tooling",
|
||||
"kind": "folder",
|
||||
"file_count": 105
|
||||
"file_count": 106
|
||||
},
|
||||
{
|
||||
"path": "evals",
|
||||
@@ -522,10 +524,10 @@
|
||||
"path": "reports",
|
||||
"label": "Generated evidence and overview artifacts",
|
||||
"kind": "folder",
|
||||
"file_count": 211
|
||||
"file_count": 213
|
||||
}
|
||||
],
|
||||
"file_count": 383,
|
||||
"file_count": 386,
|
||||
"folder_count": 4,
|
||||
"distribution": [
|
||||
{
|
||||
@@ -550,7 +552,7 @@
|
||||
},
|
||||
{
|
||||
"label": "scripts",
|
||||
"value": 105
|
||||
"value": 106
|
||||
},
|
||||
{
|
||||
"label": "evals",
|
||||
@@ -558,7 +560,7 @@
|
||||
},
|
||||
{
|
||||
"label": "reports",
|
||||
"value": 211
|
||||
"value": 213
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -680,7 +682,7 @@
|
||||
"path": "scripts",
|
||||
"label": "Deterministic helpers or local tooling",
|
||||
"kind": "folder",
|
||||
"file_count": 105
|
||||
"file_count": 106
|
||||
},
|
||||
{
|
||||
"path": "evals",
|
||||
@@ -692,7 +694,7 @@
|
||||
"path": "reports",
|
||||
"label": "Generated evidence and overview artifacts",
|
||||
"kind": "folder",
|
||||
"file_count": 211
|
||||
"file_count": 213
|
||||
}
|
||||
],
|
||||
"strengths": [
|
||||
@@ -993,12 +995,12 @@
|
||||
"ok": true,
|
||||
"summary": {
|
||||
"reproducibility_ready": true,
|
||||
"release_lock_ready": true,
|
||||
"release_lock_ready": false,
|
||||
"methodology_complete": true,
|
||||
"required_artifact_count": 24,
|
||||
"missing_artifact_count": 0,
|
||||
"evidence_bundle_sha256": "890927c5a98eb60b569171a7473c213a5094d3a8e9b84705d687c4f3335220fd",
|
||||
"source_contract_sha256": "37a1ec0f35323886bdae64523b4113f5dc4ba3153117ee4980b8e5cd54b49aba",
|
||||
"evidence_bundle_sha256": "60df1cebf40b1627f6d313c233f377d0d36228a9525b70099623563c7efb7804",
|
||||
"source_contract_sha256": "c0fe8976bca1ceac0b325c882003335c66487b8f152868af471f3bdd79b9f0af",
|
||||
"archive_sha256": "6852cf91a74d232c32d732b7c159c971827abf23af50153987193b084ad3b5cc",
|
||||
"output_case_count": 5,
|
||||
"failure_disclosure_count": 3,
|
||||
@@ -1014,14 +1016,14 @@
|
||||
"world_class_task_count": 4,
|
||||
"world_class_ledger_pending_count": 4,
|
||||
"world_class_source_check_count": 13,
|
||||
"world_class_source_pass_count": 7,
|
||||
"world_class_source_blocked_count": 6,
|
||||
"world_class_source_pass_count": 6,
|
||||
"world_class_source_blocked_count": 7,
|
||||
"public_claim_ready": false,
|
||||
"public_claim_blocker_count": 4,
|
||||
"working_tree_dirty": false,
|
||||
"changed_file_count": 0
|
||||
"public_claim_blocker_count": 5,
|
||||
"working_tree_dirty": true,
|
||||
"changed_file_count": 73
|
||||
},
|
||||
"commit": "aacf3282f562414faf8cc6c68538d2d53c6b48e3",
|
||||
"commit": "5495734e7e33b19b84a932626112d783a3edf271",
|
||||
"missing_artifacts": [],
|
||||
"limitations": [
|
||||
"The git commit and dirty flag are generation-time context; the evidence bundle hash is the durable artifact anchor inside a committed report.",
|
||||
@@ -1105,8 +1107,8 @@
|
||||
"failures": []
|
||||
},
|
||||
"trust_security": {
|
||||
"scanned_files": 192,
|
||||
"script_count": 105,
|
||||
"scanned_files": 193,
|
||||
"script_count": 106,
|
||||
"internal_module_count": 26,
|
||||
"secret_findings": 0,
|
||||
"dependency_files": [
|
||||
@@ -1115,18 +1117,18 @@
|
||||
"network_script_count": 3,
|
||||
"network_policy_covered_count": 3,
|
||||
"network_policy_missing_count": 0,
|
||||
"file_write_script_count": 66,
|
||||
"file_write_script_count": 67,
|
||||
"permission_required_count": 3,
|
||||
"permission_approved_count": 3,
|
||||
"permission_missing_count": 0,
|
||||
"permission_invalid_count": 0,
|
||||
"permission_expired_count": 0,
|
||||
"help_smoke_checked_count": 79,
|
||||
"help_smoke_checked_count": 80,
|
||||
"help_smoke_failed_count": 0,
|
||||
"interactive_script_count": 0,
|
||||
"package_hash_scope": "source-contract-without-generated-reports",
|
||||
"package_hash_file_count": 192,
|
||||
"package_sha256": "37a1ec0f35323886bdae64523b4113f5dc4ba3153117ee4980b8e5cd54b49aba"
|
||||
"package_hash_file_count": 193,
|
||||
"package_sha256": "c0fe8976bca1ceac0b325c882003335c66487b8f152868af471f3bdd79b9f0af"
|
||||
},
|
||||
"skill_atlas": {
|
||||
"skill_count": 12,
|
||||
@@ -1164,7 +1166,7 @@
|
||||
"trust_level": "local",
|
||||
"license": "MIT",
|
||||
"checksums": {
|
||||
"package_sha256": "37a1ec0f35323886bdae64523b4113f5dc4ba3153117ee4980b8e5cd54b49aba",
|
||||
"package_sha256": "c0fe8976bca1ceac0b325c882003335c66487b8f152868af471f3bdd79b9f0af",
|
||||
"archive_sha256": "6852cf91a74d232c32d732b7c159c971827abf23af50153987193b084ad3b5cc"
|
||||
},
|
||||
"compatibility": {
|
||||
@@ -1224,7 +1226,7 @@
|
||||
"ok": true,
|
||||
"summary": {
|
||||
"archive_present": true,
|
||||
"archive_entry_count": 598,
|
||||
"archive_entry_count": 603,
|
||||
"archive_extracted": true,
|
||||
"entrypoint_loaded": true,
|
||||
"manifest_loaded": true,
|
||||
@@ -1296,7 +1298,7 @@
|
||||
{
|
||||
"field": "package_sha256",
|
||||
"from": "0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"to": "37a1ec0f35323886bdae64523b4113f5dc4ba3153117ee4980b8e5cd54b49aba"
|
||||
"to": "c0fe8976bca1ceac0b325c882003335c66487b8f152868af471f3bdd79b9f0af"
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -1313,14 +1315,14 @@
|
||||
"ok": true,
|
||||
"summary": {
|
||||
"event_count": 1,
|
||||
"adoption_sample_count": 1,
|
||||
"activation_count": 1,
|
||||
"accepted_count": 1,
|
||||
"adoption_sample_count": 0,
|
||||
"activation_count": 0,
|
||||
"accepted_count": 0,
|
||||
"edited_count": 0,
|
||||
"rejected_count": 0,
|
||||
"missed_count": 0,
|
||||
"failed_count": 0,
|
||||
"adoption_rate": 100.0,
|
||||
"adoption_rate": 0,
|
||||
"missed_trigger_count": 0,
|
||||
"wrong_trigger_count": 0,
|
||||
"bad_output_count": 0,
|
||||
@@ -1329,7 +1331,7 @@
|
||||
"review_overdue_count": 0,
|
||||
"risk_band": "low",
|
||||
"event_types": {
|
||||
"skill_activation": 1
|
||||
"review_event": 1
|
||||
},
|
||||
"failure_types": {},
|
||||
"source_types": {
|
||||
@@ -1551,7 +1553,7 @@
|
||||
"status": "external_required",
|
||||
"category": "external",
|
||||
"owner": "Browser/Chrome/IDE/provider client integrator",
|
||||
"current": "external source events 0; adoption samples 1",
|
||||
"current": "external source events 0; adoption samples 0",
|
||||
"objective": "Import production metadata-only events from a real external client into the local drift loop.",
|
||||
"runbook": [
|
||||
"python3 scripts/telemetry_native_host.py . --write-launcher /tmp/yao-telemetry-host.sh --write-manifest /tmp/yao-telemetry-host.json --allowed-origin chrome-extension://<extension-id>/",
|
||||
@@ -1603,8 +1605,8 @@
|
||||
"missing_submission_count": 4,
|
||||
"invalid_submission_count": 0,
|
||||
"source_check_count": 13,
|
||||
"source_pass_count": 7,
|
||||
"source_blocked_count": 6,
|
||||
"source_pass_count": 6,
|
||||
"source_blocked_count": 7,
|
||||
"submitted_but_pending_count": 0,
|
||||
"source_accepted_without_valid_submission_count": 0,
|
||||
"overclaim_guard_active": true,
|
||||
@@ -1940,7 +1942,7 @@
|
||||
"status": "pending",
|
||||
"source_status": "external_required",
|
||||
"source_accepted": false,
|
||||
"current": "external source events 0; adoption samples 1",
|
||||
"current": "external source events 0; adoption samples 0",
|
||||
"objective": "Import production metadata-only events from a real external client into the local drift loop.",
|
||||
"runbook": [
|
||||
"python3 scripts/telemetry_native_host.py . --write-launcher /tmp/yao-telemetry-host.sh --write-manifest /tmp/yao-telemetry-host.json --allowed-origin chrome-extension://<extension-id>/",
|
||||
@@ -1977,7 +1979,7 @@
|
||||
],
|
||||
"observed_state": {
|
||||
"external_source_events": 0,
|
||||
"adoption_sample_count": 1,
|
||||
"adoption_sample_count": 0,
|
||||
"raw_content_allowed": false,
|
||||
"risk_band": "low",
|
||||
"accepted": false
|
||||
@@ -1998,8 +2000,8 @@
|
||||
"label": "Adoption sample",
|
||||
"field": "adoption_sample_count",
|
||||
"expected": ">0",
|
||||
"actual": 1,
|
||||
"status": "pass",
|
||||
"actual": 0,
|
||||
"status": "blocked",
|
||||
"source_accepted": false,
|
||||
"next_action": "Telemetry must include adoption outcome evidence."
|
||||
},
|
||||
@@ -2015,8 +2017,8 @@
|
||||
}
|
||||
],
|
||||
"source_check_count": 3,
|
||||
"source_pass_count": 2,
|
||||
"source_blocked_count": 1,
|
||||
"source_pass_count": 1,
|
||||
"source_blocked_count": 2,
|
||||
"submission_state": {
|
||||
"status": "missing",
|
||||
"path": "evidence/world_class/submissions/native-client-telemetry.json",
|
||||
|
||||
@@ -116,6 +116,7 @@
|
||||
"scripts/render_review_studio.py",
|
||||
"scripts/render_review_viewer.py",
|
||||
"scripts/render_review_waivers.py",
|
||||
"scripts/render_skill_interpretation.py",
|
||||
"scripts/render_skill_os2_audit.py",
|
||||
"scripts/render_skill_os2_coverage.py",
|
||||
"scripts/render_skill_overview.py",
|
||||
|
||||
@@ -197,7 +197,7 @@
|
||||
"key": "trust-security",
|
||||
"label": "Trust Security",
|
||||
"status": "pass",
|
||||
"current": "secrets 0; scripts 105; help failures 0",
|
||||
"current": "secrets 0; scripts 106; help failures 0",
|
||||
"target": "Secrets, scripts, dependencies, permissions, and package hash are reviewable",
|
||||
"evidence": [
|
||||
{
|
||||
|
||||
@@ -23,7 +23,7 @@ Generated at: `2026-06-13`
|
||||
| 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 24; 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 105; 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 106; 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; installer enforcement 4 | Packaged adapters expose explicit permission metadata, residual risks, and installer enforcement evidence when available | Preserve residual-risk notes until real native enforcement exists. |
|
||||
| Native Permission Enforcement | external-required | native-enforced targets 0; installer-enforced targets 4 | At least one target/client enforces approved permissions at runtime | Integrate a real target-client or external 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. |
|
||||
|
||||
@@ -11,9 +11,9 @@
|
||||
"warn_count": 0,
|
||||
"missing_count": 0,
|
||||
"extension_track_count": 2,
|
||||
"extension_partial_count": 2,
|
||||
"extension_partial_count": 1,
|
||||
"extension_planned_count": 0,
|
||||
"extension_covered_count": 0,
|
||||
"extension_covered_count": 1,
|
||||
"adaptive_extension_ready": false,
|
||||
"local_blueprint_ready": true,
|
||||
"public_world_class_ready": false,
|
||||
@@ -26,7 +26,8 @@
|
||||
"missing": 0
|
||||
},
|
||||
"extension_status_counts": {
|
||||
"partial": 2
|
||||
"covered": 1,
|
||||
"partial": 1
|
||||
},
|
||||
"modules": [
|
||||
{
|
||||
@@ -130,7 +131,7 @@
|
||||
"label": "Trust Security",
|
||||
"status": "pass",
|
||||
"objective": "Scripts, dependencies, permissions, secrets, and package hash are reviewable for team distribution.",
|
||||
"current": "105 scripts; secrets 0; help failures 0",
|
||||
"current": "106 scripts; secrets 0; help failures 0",
|
||||
"command": "python3 scripts/yao.py trust .",
|
||||
"test": "python3 tests/verify_trust_check.py",
|
||||
"evidence": [
|
||||
@@ -612,9 +613,9 @@
|
||||
{
|
||||
"key": "skill-interpretation-report",
|
||||
"label": "Skill Interpretation Report",
|
||||
"status": "partial",
|
||||
"status": "covered",
|
||||
"objective": "User-facing deep interpretation report explains use cases, triggers, inputs, outputs, workflow, principles, boundaries, quality gates, examples, and next iterations.",
|
||||
"current": "Skill Overview v2 already covers much of the explainer experience, but dedicated skill-interpretation JSON/MD/HTML artifacts are not first-class yet.",
|
||||
"current": "Skill Overview v2 is canonical and mirrored as first-class skill-interpretation HTML/JSON with schema and tests.",
|
||||
"target": "Either keep skill-overview as the canonical interpretation report with an explicit contract, or split a dedicated reports/skill-interpretation.* renderer and tests.",
|
||||
"evidence": [
|
||||
{
|
||||
@@ -631,18 +632,18 @@
|
||||
},
|
||||
{
|
||||
"path": "scripts/render_skill_interpretation.py",
|
||||
"exists": false
|
||||
"exists": true
|
||||
},
|
||||
{
|
||||
"path": "schemas/skill-interpretation.schema.json",
|
||||
"exists": false
|
||||
"exists": true
|
||||
},
|
||||
{
|
||||
"path": "tests/verify_skill_interpretation.py",
|
||||
"exists": false
|
||||
"exists": true
|
||||
}
|
||||
],
|
||||
"next_action": "Decide whether overview v2 is the canonical interpretation surface; if not, add a dedicated schema, renderer, and CJK/path-safety tests."
|
||||
"next_action": "Keep overview and interpretation contracts in lockstep when report sections, metrics, or layout semantics change."
|
||||
},
|
||||
{
|
||||
"key": "adaptive-self-iteration",
|
||||
@@ -710,7 +711,7 @@
|
||||
],
|
||||
"next_highest_leverage": [
|
||||
"Close the four world-class evidence ledger entries with accepted human or external evidence.",
|
||||
"Clarify whether Skill Overview v2 is the canonical interpretation report or split a dedicated skill-interpretation renderer.",
|
||||
"Keep the first-class skill interpretation report and Skill Overview v2 contract synchronized as the report model evolves.",
|
||||
"Start adaptive self-iteration as explicit-source, proposal-only, approval-gated work; do not scan private logs by default.",
|
||||
"Keep the blueprint coverage report in CI so 2.0 plan drift is visible."
|
||||
],
|
||||
|
||||
@@ -11,7 +11,8 @@ Generated at: `2026-06-13`
|
||||
- missing: `0`
|
||||
- warn: `0`
|
||||
- reference extensions: `2`
|
||||
- extension partial: `2`
|
||||
- extension covered: `1`
|
||||
- extension partial: `1`
|
||||
- extension planned: `0`
|
||||
- adaptive extension ready: `false`
|
||||
- world-class evidence pending: `4`
|
||||
@@ -25,7 +26,7 @@ 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` | 105 scripts; secrets 0; help failures 0 | `python3 scripts/yao.py trust .` | `python3 tests/verify_trust_check.py` |
|
||||
| Trust Security | `pass` | 106 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 586; 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 3 | `python3 scripts/yao.py review-studio .` | `python3 tests/verify_review_studio.py` |
|
||||
@@ -52,7 +53,7 @@ This report maps the Skill OS 2.0 upgrade blueprint to concrete local artifacts,
|
||||
|
||||
| Track | Status | Current | Target | Next action |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| Skill Interpretation Report | `partial` | Skill Overview v2 already covers much of the explainer experience, but dedicated skill-interpretation JSON/MD/HTML artifacts are not first-class yet. | Either keep skill-overview as the canonical interpretation report with an explicit contract, or split a dedicated reports/skill-interpretation.* renderer and tests. | Decide whether overview v2 is the canonical interpretation surface; if not, add a dedicated schema, renderer, and CJK/path-safety tests. |
|
||||
| Skill Interpretation Report | `covered` | Skill Overview v2 is canonical and mirrored as first-class skill-interpretation HTML/JSON with schema and tests. | Either keep skill-overview as the canonical interpretation report with an explicit contract, or split a dedicated reports/skill-interpretation.* renderer and tests. | Keep overview and interpretation contracts in lockstep when report sections, metrics, or layout semantics change. |
|
||||
| Adaptive Self-Iteration | `partial` | Proposal-only adapt-scan/adapt-propose foundation exists with policy, schema, and safety tests; approval-gated patch application is not implemented yet. | Proposal-only adaptation with explicit input source, redaction, allowlisted write targets, approval ledger, regression report, and rollback plan. | Add adapt-apply only after approval ledger, allowlisted targets, dry-run diffs, regression reports, and rollback artifacts are designed. |
|
||||
|
||||
These extension tracks come from the user-supplied 2.0 reference plan. They are tracked separately from the formal Skill OS blueprint so the report can distinguish landed local architecture from planned explainer/adaptor evolution.
|
||||
@@ -60,7 +61,7 @@ These extension tracks come from the user-supplied 2.0 reference plan. They are
|
||||
## Next Highest-Leverage Moves
|
||||
|
||||
- Close the four world-class evidence ledger entries with accepted human or external evidence.
|
||||
- Clarify whether Skill Overview v2 is the canonical interpretation report or split a dedicated skill-interpretation renderer.
|
||||
- Keep the first-class skill interpretation report and Skill Overview v2 contract synchronized as the report model evolves.
|
||||
- Start adaptive self-iteration as explicit-source, proposal-only, approval-gated work; do not scan private logs by default.
|
||||
- Keep the blueprint coverage report in CI so 2.0 plan drift is visible.
|
||||
|
||||
@@ -209,10 +210,9 @@ These extension tracks come from the user-supplied 2.0 reference plan. They are
|
||||
### Skill Interpretation Report
|
||||
|
||||
- objective: User-facing deep interpretation report explains use cases, triggers, inputs, outputs, workflow, principles, boundaries, quality gates, examples, and next iterations.
|
||||
- status: `partial`
|
||||
- existing evidence: `reports/skill-overview.html`, `reports/skill-overview.json`, `scripts/render_skill_overview.py`
|
||||
- missing evidence: `scripts/render_skill_interpretation.py`, `schemas/skill-interpretation.schema.json`, `tests/verify_skill_interpretation.py`
|
||||
- next action: Decide whether overview v2 is the canonical interpretation surface; if not, add a dedicated schema, renderer, and CJK/path-safety tests.
|
||||
- status: `covered`
|
||||
- existing evidence: `reports/skill-overview.html`, `reports/skill-overview.json`, `scripts/render_skill_overview.py`, `scripts/render_skill_interpretation.py`, `schemas/skill-interpretation.schema.json`, `tests/verify_skill_interpretation.py`
|
||||
- next action: Keep overview and interpretation contracts in lockstep when report sections, metrics, or layout semantics change.
|
||||
|
||||
### Adaptive Self-Iteration
|
||||
|
||||
|
||||
@@ -75,7 +75,7 @@
|
||||
{
|
||||
"field": "package_sha256",
|
||||
"from": "0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"to": "37a1ec0f35323886bdae64523b4113f5dc4ba3153117ee4980b8e5cd54b49aba"
|
||||
"to": "652c3a4a1f091d875bfacdd44da9a91bc02fec90af3fe76cf3a71a6dc80aba58"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
"summary": {
|
||||
"ledger_ready_to_claim_world_class": false,
|
||||
"ledger_pending_count": 4,
|
||||
"claim_surface_count": 75,
|
||||
"claim_surface_count": 76,
|
||||
"violation_count": 0,
|
||||
"overclaim_guard_active": true,
|
||||
"decision": "claim-guard-pass-evidence-pending"
|
||||
@@ -271,6 +271,10 @@
|
||||
"path": "reports/security_trust_report.md",
|
||||
"violation_count": 0
|
||||
},
|
||||
{
|
||||
"path": "reports/skill-interpretation.html",
|
||||
"violation_count": 0
|
||||
},
|
||||
{
|
||||
"path": "reports/skill-os-2-review.md",
|
||||
"violation_count": 0
|
||||
|
||||
@@ -7,7 +7,7 @@ Generated at: `2026-06-13`
|
||||
- decision: `claim-guard-pass-evidence-pending`
|
||||
- ledger ready to claim world-class: `false`
|
||||
- ledger pending evidence: `4`
|
||||
- claim surfaces scanned: `75`
|
||||
- claim surfaces scanned: `76`
|
||||
- violations: `0`
|
||||
- overclaim guard active: `true`
|
||||
|
||||
|
||||
@@ -0,0 +1,115 @@
|
||||
{
|
||||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||
"$id": "https://yao.local/schemas/skill-interpretation.schema.json",
|
||||
"title": "Yao Skill Interpretation Report",
|
||||
"type": "object",
|
||||
"required": [
|
||||
"skill_summary",
|
||||
"scorecard",
|
||||
"capability_profile",
|
||||
"principle_model",
|
||||
"contract_boundary",
|
||||
"quality_review",
|
||||
"risk_governance",
|
||||
"package_assets",
|
||||
"iteration_roadmap",
|
||||
"report_contract",
|
||||
"interpretation_contract"
|
||||
],
|
||||
"properties": {
|
||||
"report_contract": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"schema_version",
|
||||
"report_kind",
|
||||
"html_report",
|
||||
"json_report",
|
||||
"default_language",
|
||||
"languages",
|
||||
"layout",
|
||||
"nav_labels"
|
||||
],
|
||||
"properties": {
|
||||
"schema_version": {
|
||||
"const": "2.0"
|
||||
},
|
||||
"report_kind": {
|
||||
"const": "skill-interpretation"
|
||||
},
|
||||
"html_report": {
|
||||
"const": "reports/skill-interpretation.html"
|
||||
},
|
||||
"json_report": {
|
||||
"const": "reports/skill-interpretation.json"
|
||||
},
|
||||
"default_language": {
|
||||
"const": "zh-CN"
|
||||
},
|
||||
"languages": {
|
||||
"type": "array",
|
||||
"prefixItems": [
|
||||
{
|
||||
"const": "zh-CN"
|
||||
},
|
||||
{
|
||||
"const": "en"
|
||||
}
|
||||
],
|
||||
"minItems": 2
|
||||
},
|
||||
"layout": {
|
||||
"const": "kami-white-audit-v2"
|
||||
},
|
||||
"nav_labels": {
|
||||
"type": "array",
|
||||
"minItems": 9,
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"additionalProperties": true
|
||||
},
|
||||
"interpretation_contract": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"schema_version",
|
||||
"source_model",
|
||||
"source_model_reused",
|
||||
"overview_report",
|
||||
"html_report",
|
||||
"json_report",
|
||||
"includes"
|
||||
],
|
||||
"properties": {
|
||||
"schema_version": {
|
||||
"const": "2.0"
|
||||
},
|
||||
"source_model": {
|
||||
"const": "skill-overview-v2"
|
||||
},
|
||||
"source_model_reused": {
|
||||
"const": true
|
||||
},
|
||||
"overview_report": {
|
||||
"const": "reports/skill-overview.html"
|
||||
},
|
||||
"html_report": {
|
||||
"const": "reports/skill-interpretation.html"
|
||||
},
|
||||
"json_report": {
|
||||
"const": "reports/skill-interpretation.json"
|
||||
},
|
||||
"includes": {
|
||||
"type": "array",
|
||||
"minItems": 10,
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"additionalProperties": true
|
||||
}
|
||||
},
|
||||
"additionalProperties": true
|
||||
}
|
||||
@@ -34,6 +34,7 @@ DEFAULT_TARGETS = [
|
||||
"architecture-maintainability-check",
|
||||
"yao-cli-check",
|
||||
"skill-overview-check",
|
||||
"skill-interpretation-check",
|
||||
"skill-report-metrics-check",
|
||||
"skill-report-charts-check",
|
||||
"html-rendering-check",
|
||||
|
||||
+25
-16
@@ -21,6 +21,7 @@ from render_reference_scan import parse_reference, render_reference_scan
|
||||
from render_reference_synthesis import render_reference_synthesis
|
||||
from render_review_studio import render_review_studio
|
||||
from render_review_viewer import render_review_viewer
|
||||
from render_skill_interpretation import render_skill_interpretation
|
||||
from render_skill_overview import render_skill_overview
|
||||
from render_system_model import render_system_model
|
||||
|
||||
@@ -73,19 +74,20 @@ README_TEMPLATE = """# {title}
|
||||
4. Review `reports/intent-confidence.md` to see whether the real job, inputs, outputs, and exclusions are clear enough yet.
|
||||
5. Open `reports/reference-synthesis.md` to see the GitHub benchmarks plus curated official, research, and principle tracks in one place.
|
||||
6. Follow the workflow steps in `SKILL.md`.
|
||||
7. Check `reports/skill-overview.html` for the generated bilingual HTML skill audit report: overview, metrics, capability profile, principle, contract, quality, risk, assets, and iteration roadmap. It defaults to Simplified Chinese and includes an English switch in the top right.
|
||||
8. Open `reports/review-studio.html` for the one-page Review Studio 2.0 gate view.
|
||||
9. Record source-line reviewer comments in `reports/review_annotations.md` when review needs follow-up.
|
||||
10. Open `reports/review-viewer.html` for a compact visual review of the package.
|
||||
11. Check `reports/output-risk-profile.md` to see likely output mistakes and self-repair checks.
|
||||
12. Check `reports/artifact-design-profile.md` to see the intended artifact direction, layout patterns, visual quality gates, and anti-patterns.
|
||||
13. Check `reports/prompt-quality-profile.md` to see the need model, RTF-to-skill mapping, complexity, and prompt-facing quality matrix.
|
||||
14. Review `reports/skill-ir.json` for the platform-neutral Skill IR contract before platform-specific packaging.
|
||||
15. Review `reports/compiled_targets.md` to see how Skill IR compiles into OpenAI, Claude, generic, and Agent Skills compatible target contracts.
|
||||
16. Review `reports/iteration-directions.md` for the three most valuable next moves.
|
||||
17. Review `reports/system-model.md` to understand the boundary, feedback loops, drift watch, failure map, and highest-leverage next changes.
|
||||
18. Review `reports/adoption_drift_report.md` to see local-first metadata-only adoption and drift signals.
|
||||
19. Review `reports/review_waivers.md` to see human reviewer risk approvals and expiry dates.
|
||||
7. Open `reports/skill-interpretation.html` first for the first-class bilingual interpretation report: role, principle, scenarios, trigger, inputs, outputs, highlights, risks, assets, and upgrade directions. It defaults to Simplified Chinese and includes an English switch in the top right.
|
||||
8. Check `reports/skill-overview.html` for the generated bilingual HTML skill audit report: overview, metrics, capability profile, principle, contract, quality, risk, assets, and iteration roadmap.
|
||||
9. Open `reports/review-studio.html` for the one-page Review Studio 2.0 gate view.
|
||||
10. Record source-line reviewer comments in `reports/review_annotations.md` when review needs follow-up.
|
||||
11. Open `reports/review-viewer.html` for a compact visual review of the package.
|
||||
12. Check `reports/output-risk-profile.md` to see likely output mistakes and self-repair checks.
|
||||
13. Check `reports/artifact-design-profile.md` to see the intended artifact direction, layout patterns, visual quality gates, and anti-patterns.
|
||||
14. Check `reports/prompt-quality-profile.md` to see the need model, RTF-to-skill mapping, complexity, and prompt-facing quality matrix.
|
||||
15. Review `reports/skill-ir.json` for the platform-neutral Skill IR contract before platform-specific packaging.
|
||||
16. Review `reports/compiled_targets.md` to see how Skill IR compiles into OpenAI, Claude, generic, and Agent Skills compatible target contracts.
|
||||
17. Review `reports/iteration-directions.md` for the three most valuable next moves.
|
||||
18. Review `reports/system-model.md` to understand the boundary, feedback loops, drift watch, failure map, and highest-leverage next changes.
|
||||
19. Review `reports/adoption_drift_report.md` to see local-first metadata-only adoption and drift signals.
|
||||
20. Review `reports/review_waivers.md` to see human reviewer risk approvals and expiry dates.
|
||||
|
||||
## Honest Boundaries
|
||||
|
||||
@@ -109,6 +111,7 @@ README_TEMPLATE = """# {title}
|
||||
- `reports/system-model.md`: systems-thinking model for boundary, feedback loops, drift, failure patterns, and leverage points
|
||||
- `reports/skill-ir.json`: platform-neutral 2.0 Skill IR contract for trigger, workflow, resources, evals, risk, and governance
|
||||
- `reports/compiled_targets.md`: target compiler report showing generated contracts, adapter modes, preserved semantics, warnings, and unsupported features
|
||||
- `reports/skill-interpretation.html`: first-class bilingual interpretation report for role, principle, scenarios, trigger, inputs, outputs, quality evidence, risks, assets, highlights, and upgrade directions
|
||||
- `reports/skill-overview.html`: white-background bilingual HTML skill audit report with sticky four-character Chinese navigation, a top-right language switch, metrics, SVG charts, contract boundary, quality review, risk governance, assets, and iteration roadmap
|
||||
- `reports/review-studio.html`: Review Studio 2.0 gate page for intent, trigger, output eval, context, runtime conformance, trust, atlas, and release readiness
|
||||
- `reports/review-viewer.html`: compact review page for architecture, usage, feedback, and next steps
|
||||
@@ -228,23 +231,26 @@ def build_manifest(name: str, mode: str, archetype: str) -> dict:
|
||||
def build_report_view(artifacts: dict) -> dict:
|
||||
html_report = artifacts.get("skill_overview_html", "")
|
||||
json_report = artifacts.get("skill_overview_json", "")
|
||||
interpretation_report = artifacts.get("skill_interpretation_html", "")
|
||||
system_model = artifacts.get("system_model_md", "")
|
||||
review_studio = artifacts.get("review_studio_html", "")
|
||||
return {
|
||||
"title": "Skill 总结报告",
|
||||
"html_report": html_report,
|
||||
"json_report": json_report,
|
||||
"interpretation_report": interpretation_report,
|
||||
"system_model": system_model,
|
||||
"review_studio": review_studio,
|
||||
"message": (
|
||||
f"Skill 已创建完成。建议先打开总结报告:{html_report}。"
|
||||
"它会展示这个 Skill 的概述、指标、原理、触发边界、输入输出、目标编译、质量评估、风险治理、包体资产和升级路线;"
|
||||
f"Skill 已创建完成。建议先打开解读报告:{interpretation_report};再查看总结报告:{html_report}。"
|
||||
"解读报告会用中文简体默认展示这个 Skill 的作用、原理、使用场景、触发方式、输入输出、亮点和后续升级方向;"
|
||||
"总结报告会展示概述、指标、原理、触发边界、输入输出、目标编译、质量评估、风险治理、包体资产和升级路线;"
|
||||
f"然后打开 Review Studio 2.0:{review_studio},检查意图、触发、输出评测、运行一致性、信任和发布闸门。"
|
||||
"后续 reviewer 的文件级或行级意见可以记录到 reports/review_annotations.md。"
|
||||
"如需审查平台适配细节,请打开 reports/compiled_targets.md。"
|
||||
"报告默认使用中文简体,右上角可以切换英文版。"
|
||||
),
|
||||
"next_action": "Open reports/skill-overview.html before editing more files.",
|
||||
"next_action": "Open reports/skill-interpretation.html before editing more files.",
|
||||
}
|
||||
|
||||
|
||||
@@ -359,6 +365,7 @@ def initialize_skill(
|
||||
review_waivers = render_review_waivers(root)
|
||||
review_annotations = render_review_annotations(root)
|
||||
overview = render_skill_overview(root)
|
||||
interpretation = render_skill_interpretation(root)
|
||||
review_viewer = render_review_viewer(root)
|
||||
review_studio = render_review_studio(root)
|
||||
artifacts = {
|
||||
@@ -369,6 +376,8 @@ def initialize_skill(
|
||||
"intent_context_json": intent_confidence["artifacts"]["context_json"],
|
||||
"skill_overview_html": overview["artifacts"]["html"],
|
||||
"skill_overview_json": overview["artifacts"]["json"],
|
||||
"skill_interpretation_html": interpretation["artifacts"]["html"],
|
||||
"skill_interpretation_json": interpretation["artifacts"]["json"],
|
||||
"intent_dialogue_md": intent_dialogue["artifacts"]["markdown"],
|
||||
"intent_dialogue_json": intent_dialogue["artifacts"]["json"],
|
||||
"reference_scan_md": reference_scan["artifacts"]["markdown"],
|
||||
|
||||
@@ -248,6 +248,7 @@ def render_html(report: dict[str, Any]) -> str:
|
||||
"warn_count",
|
||||
"missing_count",
|
||||
"extension_track_count",
|
||||
"extension_covered_count",
|
||||
"extension_partial_count",
|
||||
"extension_planned_count",
|
||||
"adaptive_extension_ready",
|
||||
|
||||
@@ -0,0 +1,108 @@
|
||||
#!/usr/bin/env python3
|
||||
import argparse
|
||||
import json
|
||||
from pathlib import Path
|
||||
|
||||
from render_skill_overview import render_html
|
||||
from skill_report_model import build_report_model
|
||||
|
||||
|
||||
SCRIPT_INTERFACE = "cli"
|
||||
SCRIPT_INTERFACE_REASON = "Renders the first-class skill interpretation report while reusing the Skill Overview v2 model and layout."
|
||||
|
||||
|
||||
def build_interpretation_model(skill_dir: Path) -> dict:
|
||||
summary = build_report_model(skill_dir)
|
||||
contract = dict(summary.get("report_contract", {}))
|
||||
contract.update(
|
||||
{
|
||||
"schema_version": "2.0",
|
||||
"report_kind": "skill-interpretation",
|
||||
"canonical_overview_report": "reports/skill-overview.html",
|
||||
"html_report": "reports/skill-interpretation.html",
|
||||
"json_report": "reports/skill-interpretation.json",
|
||||
"layout": "kami-white-audit-v2",
|
||||
"default_language": "zh-CN",
|
||||
"languages": ["zh-CN", "en"],
|
||||
"purpose": "Explain the generated skill's role, principles, usage scenarios, trigger contract, inputs, outputs, quality evidence, risks, assets, highlights, and next upgrade directions.",
|
||||
}
|
||||
)
|
||||
summary["report_contract"] = contract
|
||||
summary["interpretation_contract"] = {
|
||||
"schema_version": "2.0",
|
||||
"source_model": "skill-overview-v2",
|
||||
"source_model_reused": True,
|
||||
"overview_report": "reports/skill-overview.html",
|
||||
"html_report": "reports/skill-interpretation.html",
|
||||
"json_report": "reports/skill-interpretation.json",
|
||||
"default_language": "zh-CN",
|
||||
"languages": ["zh-CN", "en"],
|
||||
"includes": [
|
||||
"skill role",
|
||||
"principles",
|
||||
"usage scenarios",
|
||||
"trigger contract",
|
||||
"inputs and outputs",
|
||||
"quality evidence",
|
||||
"risk governance",
|
||||
"package assets",
|
||||
"highlights",
|
||||
"upgrade roadmap",
|
||||
],
|
||||
}
|
||||
deliverables = summary.get("skill_summary", {}).get("deliverables", [])
|
||||
for artifact in ["reports/skill-interpretation.html", "reports/skill-interpretation.json"]:
|
||||
if artifact not in deliverables:
|
||||
deliverables.append(artifact)
|
||||
if "skill_summary" in summary:
|
||||
summary["skill_summary"]["deliverables"] = deliverables
|
||||
return summary
|
||||
|
||||
|
||||
def render_skill_interpretation(skill_dir: Path, output_html: Path | None = None, output_json: Path | None = None) -> dict:
|
||||
skill_dir = skill_dir.resolve()
|
||||
reports_dir = skill_dir / "reports"
|
||||
reports_dir.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
output_html = output_html or reports_dir / "skill-interpretation.html"
|
||||
output_json = output_json or reports_dir / "skill-interpretation.json"
|
||||
|
||||
summary = build_interpretation_model(skill_dir)
|
||||
output_html.write_text(render_html(summary), encoding="utf-8")
|
||||
output_json.write_text(json.dumps(summary, ensure_ascii=False, indent=2), encoding="utf-8")
|
||||
|
||||
return {
|
||||
"ok": True,
|
||||
"skill_dir": str(skill_dir),
|
||||
"artifacts": {
|
||||
"html": str(output_html),
|
||||
"json": str(output_json),
|
||||
"overview_html": str(skill_dir / "reports" / "skill-overview.html"),
|
||||
},
|
||||
"summary": {
|
||||
"name": summary.get("name"),
|
||||
"report_kind": summary.get("report_contract", {}).get("report_kind"),
|
||||
"default_language": summary.get("report_contract", {}).get("default_language"),
|
||||
"section_count": len(summary.get("report_contract", {}).get("nav_labels", [])),
|
||||
"source_model_reused": summary.get("interpretation_contract", {}).get("source_model_reused"),
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
def main() -> None:
|
||||
parser = argparse.ArgumentParser(description="Render the first-class HTML skill interpretation report for a skill package.")
|
||||
parser.add_argument("skill_dir", nargs="?", default=".")
|
||||
parser.add_argument("--output-html")
|
||||
parser.add_argument("--output-json")
|
||||
args = parser.parse_args()
|
||||
|
||||
result = render_skill_interpretation(
|
||||
Path(args.skill_dir),
|
||||
Path(args.output_html).resolve() if args.output_html else None,
|
||||
Path(args.output_json).resolve() if args.output_json else None,
|
||||
)
|
||||
print(json.dumps(result, ensure_ascii=False, indent=2))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
@@ -301,23 +301,36 @@ def build_coverage(skill_dir: Path, generated_at: str) -> dict[str, Any]:
|
||||
for key, path_a, path_b, path_c, condition, current in recommended_prs
|
||||
]
|
||||
|
||||
interpretation_paths = [
|
||||
"reports/skill-overview.html",
|
||||
"reports/skill-overview.json",
|
||||
"scripts/render_skill_overview.py",
|
||||
"scripts/render_skill_interpretation.py",
|
||||
"schemas/skill-interpretation.schema.json",
|
||||
"tests/verify_skill_interpretation.py",
|
||||
]
|
||||
interpretation_ready = paths_exist(skill_dir, interpretation_paths)
|
||||
interpretation_status = "covered" if interpretation_ready else "partial"
|
||||
interpretation_current = (
|
||||
"Skill Overview v2 is canonical and mirrored as first-class skill-interpretation HTML/JSON with schema and tests."
|
||||
if interpretation_ready
|
||||
else "Skill Overview v2 already covers much of the explainer experience, but dedicated skill-interpretation JSON/HTML artifacts are not first-class yet."
|
||||
)
|
||||
interpretation_next_action = (
|
||||
"Keep overview and interpretation contracts in lockstep when report sections, metrics, or layout semantics change."
|
||||
if interpretation_ready
|
||||
else "Decide whether overview v2 is the canonical interpretation surface; if not, add a dedicated schema, renderer, and CJK/path-safety tests."
|
||||
)
|
||||
extension_tracks = [
|
||||
build_extension_track(
|
||||
key="skill-interpretation-report",
|
||||
label="Skill Interpretation Report",
|
||||
status="partial",
|
||||
status=interpretation_status,
|
||||
objective="User-facing deep interpretation report explains use cases, triggers, inputs, outputs, workflow, principles, boundaries, quality gates, examples, and next iterations.",
|
||||
current="Skill Overview v2 already covers much of the explainer experience, but dedicated skill-interpretation JSON/MD/HTML artifacts are not first-class yet.",
|
||||
current=interpretation_current,
|
||||
target="Either keep skill-overview as the canonical interpretation report with an explicit contract, or split a dedicated reports/skill-interpretation.* renderer and tests.",
|
||||
artifact_paths=[
|
||||
"reports/skill-overview.html",
|
||||
"reports/skill-overview.json",
|
||||
"scripts/render_skill_overview.py",
|
||||
"scripts/render_skill_interpretation.py",
|
||||
"schemas/skill-interpretation.schema.json",
|
||||
"tests/verify_skill_interpretation.py",
|
||||
],
|
||||
next_action="Decide whether overview v2 is the canonical interpretation surface; if not, add a dedicated schema, renderer, and CJK/path-safety tests.",
|
||||
artifact_paths=interpretation_paths,
|
||||
next_action=interpretation_next_action,
|
||||
skill_dir=skill_dir,
|
||||
),
|
||||
]
|
||||
@@ -412,7 +425,7 @@ def build_coverage(skill_dir: Path, generated_at: str) -> dict[str, Any]:
|
||||
"reference_extension_tracks": extension_tracks,
|
||||
"next_highest_leverage": [
|
||||
"Close the four world-class evidence ledger entries with accepted human or external evidence.",
|
||||
"Clarify whether Skill Overview v2 is the canonical interpretation report or split a dedicated skill-interpretation renderer.",
|
||||
"Keep the first-class skill interpretation report and Skill Overview v2 contract synchronized as the report model evolves.",
|
||||
"Start adaptive self-iteration as explicit-source, proposal-only, approval-gated work; do not scan private logs by default.",
|
||||
"Keep the blueprint coverage report in CI so 2.0 plan drift is visible.",
|
||||
],
|
||||
@@ -468,6 +481,7 @@ def render_markdown(report: dict[str, Any]) -> str:
|
||||
f"- missing: `{summary['missing_count']}`",
|
||||
f"- warn: `{summary['warn_count']}`",
|
||||
f"- reference extensions: `{summary['extension_track_count']}`",
|
||||
f"- extension covered: `{summary['extension_covered_count']}`",
|
||||
f"- extension partial: `{summary['extension_partial_count']}`",
|
||||
f"- extension planned: `{summary['extension_planned_count']}`",
|
||||
f"- adaptive extension ready: `{str(summary['adaptive_extension_ready']).lower()}`",
|
||||
|
||||
@@ -254,6 +254,9 @@ def render_html(summary: dict) -> str:
|
||||
output_execution_summary = output_execution.get("summary", {})
|
||||
output_review = summary.get("output_review_adjudication", {})
|
||||
output_review_summary = output_review.get("summary", {})
|
||||
report_contract = summary.get("report_contract", {})
|
||||
html_report_path = str(report_contract.get("html_report") or "reports/skill-overview.html")
|
||||
open_report_message = f"创建完成后建议先打开 {html_report_path},再继续扩展包体。"
|
||||
hero_meta = [
|
||||
(f"技能名称:{summary['name']}", f"Skill name: {summary['name']}"),
|
||||
(f"成熟度:{mode_zh(metadata.get('maturity_tier', 'scaffold'))}", f"Maturity: {metadata.get('maturity_tier', 'scaffold')}"),
|
||||
@@ -340,7 +343,7 @@ def render_html(summary: dict) -> str:
|
||||
</div>
|
||||
<aside class="hero-card">
|
||||
<h3>{bi_span("核心判断", "Core reading")}</h3>
|
||||
{render_list([skill.get("core_value", ""), skill.get("audience", ""), "创建完成后建议先打开 reports/skill-overview.html,再继续扩展包体。"])}
|
||||
{render_list([skill.get("core_value", ""), skill.get("audience", ""), open_report_message])}
|
||||
</aside>
|
||||
</div>
|
||||
<div class="score-strip" aria-label="报告关键指标">{score_strip}</div>
|
||||
|
||||
@@ -261,6 +261,9 @@ def en_for(text: str) -> str:
|
||||
return TEXT_EN[value]
|
||||
if value in METRIC_LABEL_EN:
|
||||
return METRIC_LABEL_EN[value]
|
||||
if value.startswith("创建完成后建议先打开 ") and value.endswith(",再继续扩展包体。"):
|
||||
path = value.removeprefix("创建完成后建议先打开 ").removesuffix(",再继续扩展包体。")
|
||||
return f"After creation, open {path} before expanding the package further."
|
||||
if value.startswith("交付结果:"):
|
||||
return "Deliverables: " + value.removeprefix("交付结果:")
|
||||
if value.startswith("能力类型:"):
|
||||
|
||||
@@ -387,7 +387,7 @@ def skill_overview_css() -> str:
|
||||
}
|
||||
.metrics-primary {
|
||||
display: grid;
|
||||
grid-template-columns: minmax(420px, 1fr) minmax(360px, 0.88fr);
|
||||
grid-template-columns: minmax(0, 1.2fr) minmax(320px, 0.8fr);
|
||||
gap: 22px;
|
||||
align-items: start;
|
||||
}
|
||||
@@ -455,7 +455,7 @@ def skill_overview_css() -> str:
|
||||
margin-top: 2px;
|
||||
}
|
||||
.metric-detail-grid {
|
||||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||
grid-template-columns: repeat(auto-fit, minmax(min(100%, 340px), 1fr));
|
||||
align-items: stretch;
|
||||
}
|
||||
.list, .compact-list, .step-list {
|
||||
@@ -485,18 +485,20 @@ def skill_overview_css() -> str:
|
||||
}
|
||||
.metric-card {
|
||||
display: grid;
|
||||
grid-template-columns: minmax(96px, 118px) minmax(0, 1fr);
|
||||
gap: 18px;
|
||||
grid-template-columns: 1fr;
|
||||
gap: 14px;
|
||||
align-content: start;
|
||||
min-height: 0;
|
||||
}
|
||||
.metric-card-head {
|
||||
display: grid;
|
||||
align-content: start;
|
||||
display: flex;
|
||||
gap: 14px;
|
||||
align-items: flex-start;
|
||||
justify-content: space-between;
|
||||
}
|
||||
.metric-card strong {
|
||||
display: block;
|
||||
margin: 8px 0 10px;
|
||||
margin: 0;
|
||||
color: var(--brand);
|
||||
font-family: var(--mono);
|
||||
font-size: 2rem;
|
||||
@@ -507,6 +509,7 @@ def skill_overview_css() -> str:
|
||||
.metric-label {
|
||||
color: var(--muted);
|
||||
font-size: 13px;
|
||||
line-height: 1.45;
|
||||
}
|
||||
.metric-card-body {
|
||||
min-width: 0;
|
||||
|
||||
@@ -544,6 +544,7 @@ def build_report_model(skill_dir: Path) -> dict:
|
||||
"reports/review_waivers.md",
|
||||
"reports/review_annotations.md",
|
||||
"reports/review-studio.html",
|
||||
"reports/skill-interpretation.html",
|
||||
"reports/skill-overview.html",
|
||||
]
|
||||
if (skill_dir / "reports" / "runtime_permission_probes.md").exists():
|
||||
|
||||
@@ -29,6 +29,7 @@ from yao_cli_report_commands import (
|
||||
command_review_viewer,
|
||||
command_skill_os2_audit,
|
||||
command_skill_os2_coverage,
|
||||
command_skill_interpretation,
|
||||
command_skill_report,
|
||||
command_system_model,
|
||||
command_world_class_claim_guard,
|
||||
@@ -184,6 +185,7 @@ def command_report(args: argparse.Namespace) -> int:
|
||||
run_script("render_skill_os2_coverage.py", [str(ROOT)]),
|
||||
run_script("render_benchmark_reproducibility.py", [str(ROOT)]),
|
||||
run_script("render_skill_overview.py", [str(ROOT)]),
|
||||
run_script("render_skill_interpretation.py", [str(ROOT)]),
|
||||
run_script("render_review_viewer.py", [str(ROOT)]),
|
||||
]
|
||||
)
|
||||
@@ -224,6 +226,8 @@ def command_report(args: argparse.Namespace) -> int:
|
||||
"skill_os2_coverage": "reports/skill_os2_coverage.json",
|
||||
"benchmark_reproducibility": "reports/benchmark_reproducibility.json",
|
||||
"skill_overview": "reports/skill-overview.json",
|
||||
"skill_interpretation": "reports/skill-interpretation.json",
|
||||
"skill_interpretation_html": "reports/skill-interpretation.html",
|
||||
"review_viewer": "reports/review-viewer.json",
|
||||
"review_viewer_html": "reports/review-viewer.html",
|
||||
},
|
||||
|
||||
@@ -264,8 +264,11 @@ def command_quickstart(args: argparse.Namespace) -> int:
|
||||
sys.stderr.write("I will keep the underlying benchmark evidence in the reviewer reports and move ahead with this recommendation.\n")
|
||||
if payload.get("report_view", {}).get("html_report"):
|
||||
sys.stderr.write(f"Skill report: {payload['report_view']['html_report']}\n")
|
||||
if payload.get("report_view", {}).get("interpretation_report"):
|
||||
sys.stderr.write(f"Skill interpretation: {payload['report_view']['interpretation_report']}\n")
|
||||
|
||||
next_steps = [
|
||||
"Open reports/skill-interpretation.html to review the generated Skill interpretation report.",
|
||||
"Open reports/skill-overview.html to review the generated Skill audit report.",
|
||||
"Open reports/intent-dialogue.md and tighten the real job, outputs, and exclusions.",
|
||||
"Open reports/review-studio.html to inspect the Review Studio 2.0 gate view before release.",
|
||||
@@ -303,6 +306,7 @@ def command_quickstart(args: argparse.Namespace) -> int:
|
||||
"artifact_design_profile": payload.get("artifacts", {}).get("artifact_design_profile_md"),
|
||||
"prompt_quality_profile": payload.get("artifacts", {}).get("prompt_quality_profile_md"),
|
||||
"system_model": payload.get("artifacts", {}).get("system_model_md"),
|
||||
"skill_interpretation": payload.get("artifacts", {}).get("skill_interpretation_html"),
|
||||
"review_studio": payload.get("artifacts", {}).get("review_studio_html"),
|
||||
"review_viewer": payload.get("artifacts", {}).get("review_viewer_html"),
|
||||
},
|
||||
|
||||
@@ -144,6 +144,15 @@ def build_parser(command_handlers: dict[str, Callable[[argparse.Namespace], int]
|
||||
skill_report_cmd.add_argument("--output-json")
|
||||
skill_report_cmd.set_defaults(func=_handler(command_handlers, "command_skill_report"))
|
||||
|
||||
skill_interpretation_cmd = subparsers.add_parser(
|
||||
"skill-interpretation",
|
||||
help="Render the first-class skill interpretation report for a skill package.",
|
||||
)
|
||||
skill_interpretation_cmd.add_argument("skill_dir", nargs="?", default=".")
|
||||
skill_interpretation_cmd.add_argument("--output-html")
|
||||
skill_interpretation_cmd.add_argument("--output-json")
|
||||
skill_interpretation_cmd.set_defaults(func=_handler(command_handlers, "command_skill_interpretation"))
|
||||
|
||||
review_viewer_cmd = subparsers.add_parser("review-viewer", help="Render a compact HTML review page for a skill package.")
|
||||
review_viewer_cmd.add_argument("skill_dir", nargs="?", default=".")
|
||||
review_viewer_cmd.add_argument("--output-html")
|
||||
|
||||
@@ -41,6 +41,10 @@ def command_skill_report(args: argparse.Namespace) -> int:
|
||||
return render_skill_report_command(args, "render_skill_overview.py", markdown=False)
|
||||
|
||||
|
||||
def command_skill_interpretation(args: argparse.Namespace) -> int:
|
||||
return render_skill_report_command(args, "render_skill_interpretation.py", markdown=False)
|
||||
|
||||
|
||||
def command_review_viewer(args: argparse.Namespace) -> int:
|
||||
return render_skill_report_command(args, "render_review_viewer.py", markdown=False)
|
||||
|
||||
|
||||
@@ -163,6 +163,7 @@
|
||||
"scripts/render_review_studio.py",
|
||||
"scripts/render_review_viewer.py",
|
||||
"scripts/render_review_waivers.py",
|
||||
"scripts/render_skill_interpretation.py",
|
||||
"scripts/render_skill_os2_audit.py",
|
||||
"scripts/render_skill_os2_coverage.py",
|
||||
"scripts/render_skill_overview.py",
|
||||
@@ -189,8 +190,7 @@
|
||||
"scripts/run_conformance_suite.py",
|
||||
"scripts/run_description_optimization_suite.py",
|
||||
"scripts/run_eval_suite.py",
|
||||
"scripts/run_output_eval.py",
|
||||
"scripts/run_output_execution.py"
|
||||
"scripts/run_output_eval.py"
|
||||
],
|
||||
"assets": [
|
||||
"templates/basic_skill.md.j2",
|
||||
|
||||
@@ -72,6 +72,7 @@
|
||||
"scripts/render_review_studio.py",
|
||||
"scripts/render_review_viewer.py",
|
||||
"scripts/render_review_waivers.py",
|
||||
"scripts/render_skill_interpretation.py",
|
||||
"scripts/render_skill_os2_audit.py",
|
||||
"scripts/render_skill_os2_coverage.py",
|
||||
"scripts/render_skill_overview.py",
|
||||
|
||||
@@ -538,14 +538,15 @@ def main() -> None:
|
||||
assert full_payload["data"]["skill_os2_coverage"]["summary"]["local_blueprint_ready"] is True, full_payload["data"]["skill_os2_coverage"]
|
||||
assert full_payload["data"]["skill_os2_coverage"]["summary"]["public_world_class_ready"] is False, full_payload["data"]["skill_os2_coverage"]
|
||||
assert full_payload["data"]["skill_os2_coverage"]["summary"]["extension_track_count"] == 2, full_payload["data"]["skill_os2_coverage"]
|
||||
assert full_payload["data"]["skill_os2_coverage"]["summary"]["extension_partial_count"] == 2, full_payload["data"]["skill_os2_coverage"]
|
||||
assert full_payload["data"]["skill_os2_coverage"]["summary"]["extension_partial_count"] == 1, full_payload["data"]["skill_os2_coverage"]
|
||||
assert full_payload["data"]["skill_os2_coverage"]["summary"]["extension_planned_count"] == 0, full_payload["data"]["skill_os2_coverage"]
|
||||
assert full_payload["data"]["skill_os2_coverage"]["summary"]["extension_covered_count"] == 1, full_payload["data"]["skill_os2_coverage"]
|
||||
assert full_payload["data"]["skill_os2_coverage"]["summary"]["adaptive_extension_ready"] is False, full_payload["data"]["skill_os2_coverage"]
|
||||
extension_tracks = {
|
||||
item["key"]: item
|
||||
for item in full_payload["data"]["skill_os2_coverage"]["reference_extension_tracks"]
|
||||
}
|
||||
assert extension_tracks["skill-interpretation-report"]["status"] == "partial", extension_tracks
|
||||
assert extension_tracks["skill-interpretation-report"]["status"] == "covered", extension_tracks
|
||||
assert extension_tracks["adaptive-self-iteration"]["status"] == "partial", extension_tracks
|
||||
world_class_entries = full_payload["data"]["world_class_evidence_ledger"]["entries"]
|
||||
assert len(world_class_entries) == 4, world_class_entries
|
||||
@@ -656,7 +657,8 @@ def main() -> None:
|
||||
assert "蓝图覆盖" in html, html
|
||||
assert "Extension Track Count" in html, html
|
||||
assert "Adaptive Extension Ready" in html, html
|
||||
assert "<dt>Extension Partial Count</dt><dd>2</dd>" in html, html
|
||||
assert "<dt>Extension Partial Count</dt><dd>1</dd>" in html, html
|
||||
assert "<dt>Extension Covered Count</dt><dd>1</dd>" in html, html
|
||||
assert "<dt>Extension Planned Count</dt><dd>0</dd>" in html, html
|
||||
assert "Adaptive Extension Ready" in html, html
|
||||
assert "本地蓝图" in html, html
|
||||
|
||||
@@ -0,0 +1,86 @@
|
||||
#!/usr/bin/env python3
|
||||
import json
|
||||
import shutil
|
||||
import subprocess
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
ROOT = Path(__file__).resolve().parent.parent
|
||||
CLI = ROOT / "scripts" / "yao.py"
|
||||
TMP = ROOT / "tests" / "tmp_skill_interpretation"
|
||||
|
||||
|
||||
def run(*args: str) -> dict:
|
||||
proc = subprocess.run(
|
||||
[sys.executable, str(CLI), *args],
|
||||
cwd=ROOT,
|
||||
capture_output=True,
|
||||
text=True,
|
||||
)
|
||||
payload = json.loads(proc.stdout)
|
||||
return {"ok": proc.returncode == 0, "payload": payload, "stderr": proc.stderr}
|
||||
|
||||
|
||||
def main() -> None:
|
||||
shutil.rmtree(TMP, ignore_errors=True)
|
||||
init_result = run(
|
||||
"init",
|
||||
"interpretation-demo-skill",
|
||||
"--description",
|
||||
"Turn messy launch notes into a reusable launch checklist skill with review gates.",
|
||||
"--output-dir",
|
||||
str(TMP),
|
||||
"--mode",
|
||||
"production",
|
||||
"--archetype",
|
||||
"production",
|
||||
)
|
||||
assert init_result["ok"], init_result
|
||||
skill_dir = Path(init_result["payload"]["root"])
|
||||
assert (skill_dir / "reports" / "skill-overview.html").exists(), skill_dir
|
||||
assert (skill_dir / "reports" / "skill-interpretation.html").exists(), skill_dir
|
||||
assert (skill_dir / "reports" / "skill-interpretation.json").exists(), skill_dir
|
||||
report_view = init_result["payload"]["report_view"]
|
||||
assert report_view["interpretation_report"].endswith("reports/skill-interpretation.html"), report_view
|
||||
assert "reports/skill-interpretation.html" in report_view["message"], report_view
|
||||
|
||||
rerender_result = run("skill-interpretation", str(skill_dir))
|
||||
assert rerender_result["ok"], rerender_result
|
||||
assert rerender_result["payload"]["artifacts"]["html"].endswith("reports/skill-interpretation.html"), rerender_result
|
||||
assert rerender_result["payload"]["summary"]["report_kind"] == "skill-interpretation", rerender_result
|
||||
assert rerender_result["payload"]["summary"]["default_language"] == "zh-CN", rerender_result
|
||||
assert rerender_result["payload"]["summary"]["section_count"] == 9, rerender_result
|
||||
assert rerender_result["payload"]["summary"]["source_model_reused"] is True, rerender_result
|
||||
|
||||
payload = json.loads((skill_dir / "reports" / "skill-interpretation.json").read_text(encoding="utf-8"))
|
||||
assert payload["report_contract"]["schema_version"] == "2.0", payload["report_contract"]
|
||||
assert payload["report_contract"]["report_kind"] == "skill-interpretation", payload["report_contract"]
|
||||
assert payload["report_contract"]["html_report"] == "reports/skill-interpretation.html", payload["report_contract"]
|
||||
assert payload["report_contract"]["default_language"] == "zh-CN", payload["report_contract"]
|
||||
assert payload["report_contract"]["languages"] == ["zh-CN", "en"], payload["report_contract"]
|
||||
assert payload["report_contract"]["layout"] == "kami-white-audit-v2", payload["report_contract"]
|
||||
assert payload["interpretation_contract"]["source_model"] == "skill-overview-v2", payload["interpretation_contract"]
|
||||
assert payload["interpretation_contract"]["source_model_reused"] is True, payload["interpretation_contract"]
|
||||
assert len(payload["interpretation_contract"]["includes"]) >= 10, payload["interpretation_contract"]
|
||||
assert all(len(label) == 4 for label in payload["report_contract"]["nav_labels"]), payload["report_contract"]
|
||||
assert "reports/skill-interpretation.html" in payload["skill_summary"]["deliverables"], payload["skill_summary"]
|
||||
|
||||
html = (skill_dir / "reports" / "skill-interpretation.html").read_text(encoding="utf-8")
|
||||
assert 'data-report-lang="zh-CN"' in html, html[:500]
|
||||
assert 'class="language-switch"' in html, html[:2600]
|
||||
assert "reports/skill-interpretation.html" in html, html[:10000]
|
||||
assert "After creation, open reports/skill-interpretation.html before expanding the package further." in html, html[:12000]
|
||||
for label in ("技能概述", "总览指标", "能力画像", "原理结构", "契约边界", "质量评估", "风险治理", "包体资产", "迭代路线"):
|
||||
assert f">{label}</span>" in html, label
|
||||
for chart_label in ("评分雷达", "交付流程", "能力矩阵", "风险热力", "资产分布", "迭代时间"):
|
||||
assert chart_label in html, chart_label
|
||||
|
||||
schema = json.loads((ROOT / "schemas" / "skill-interpretation.schema.json").read_text(encoding="utf-8"))
|
||||
assert schema["properties"]["report_contract"]["properties"]["report_kind"]["const"] == "skill-interpretation", schema
|
||||
assert schema["properties"]["interpretation_contract"]["properties"]["source_model_reused"]["const"] is True, schema
|
||||
print(json.dumps({"ok": True}, ensure_ascii=False, indent=2))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
@@ -45,8 +45,9 @@ def main() -> None:
|
||||
assert summary["warn_count"] == 0, summary
|
||||
assert summary["missing_count"] == 0, summary
|
||||
assert summary["extension_track_count"] == 2, summary
|
||||
assert summary["extension_partial_count"] == 2, summary
|
||||
assert summary["extension_partial_count"] == 1, summary
|
||||
assert summary["extension_planned_count"] == 0, summary
|
||||
assert summary["extension_covered_count"] == 1, summary
|
||||
assert summary["adaptive_extension_ready"] is False, summary
|
||||
assert summary["local_blueprint_ready"] is True, summary
|
||||
assert summary["public_world_class_ready"] is False, summary
|
||||
@@ -87,12 +88,20 @@ def main() -> None:
|
||||
assert payload["source_blueprint"]["recommended_pr_count"] == 12, payload
|
||||
assert payload["source_blueprint"]["reference_extension_count"] == 2, payload
|
||||
extension_tracks = {item["key"]: item for item in payload["reference_extension_tracks"]}
|
||||
assert extension_tracks["skill-interpretation-report"]["status"] == "partial", extension_tracks
|
||||
assert extension_tracks["skill-interpretation-report"]["status"] == "covered", extension_tracks
|
||||
assert extension_tracks["adaptive-self-iteration"]["status"] == "partial", extension_tracks
|
||||
assert any(
|
||||
entry["path"] == "reports/skill-overview.html" and entry["exists"]
|
||||
for entry in extension_tracks["skill-interpretation-report"]["evidence"]
|
||||
), extension_tracks["skill-interpretation-report"]
|
||||
assert any(
|
||||
entry["path"] == "scripts/render_skill_interpretation.py" and entry["exists"]
|
||||
for entry in extension_tracks["skill-interpretation-report"]["evidence"]
|
||||
), extension_tracks["skill-interpretation-report"]
|
||||
assert any(
|
||||
entry["path"] == "schemas/skill-interpretation.schema.json" and entry["exists"]
|
||||
for entry in extension_tracks["skill-interpretation-report"]["evidence"]
|
||||
), extension_tracks["skill-interpretation-report"]
|
||||
assert any(
|
||||
entry["path"] == "scripts/summarize_user_signals.py" and entry["exists"]
|
||||
for entry in extension_tracks["adaptive-self-iteration"]["evidence"]
|
||||
@@ -102,11 +111,14 @@ def main() -> None:
|
||||
for entry in extension_tracks["adaptive-self-iteration"]["evidence"]
|
||||
), extension_tracks["adaptive-self-iteration"]
|
||||
assert "Close the four world-class evidence ledger entries" in payload["next_highest_leverage"][0], payload
|
||||
assert "skill interpretation report" in " ".join(payload["next_highest_leverage"]), payload
|
||||
assert "adaptive self-iteration" in " ".join(payload["next_highest_leverage"]), payload
|
||||
markdown = output_md.read_text(encoding="utf-8")
|
||||
assert "Skill OS 2.0 Blueprint Coverage" in markdown, markdown
|
||||
assert "local blueprint ready: `true`" in markdown, markdown
|
||||
assert "public world-class ready: `false`" in markdown, markdown
|
||||
assert "extension covered: `1`" in markdown, markdown
|
||||
assert "extension partial: `1`" in markdown, markdown
|
||||
assert "## Core Modules" in markdown, markdown
|
||||
assert "## Recommended PR Coverage" in markdown, markdown
|
||||
assert "## Reference Extension Tracks" in markdown, markdown
|
||||
|
||||
@@ -51,8 +51,8 @@ def main() -> None:
|
||||
assert ".metrics-primary" in css_contract, css_contract[:7000]
|
||||
assert ".metrics-flow" in css_contract, css_contract[:9000]
|
||||
assert ".metric-detail-grid" in css_contract, css_contract[:9000]
|
||||
assert "repeat(2, minmax(0, 1fr))" in css_contract, css_contract[:9000]
|
||||
assert "repeat(auto-fit, minmax(320px, 1fr))" not in css_contract, css_contract[:9000]
|
||||
assert "repeat(auto-fit, minmax(min(100%, 340px), 1fr))" in css_contract, css_contract[:9000]
|
||||
assert "grid-template-columns: minmax(420px, 1fr)" not in css_contract, css_contract[:9000]
|
||||
assert "overflow-wrap: break-word" in css_contract, css_contract[:9000]
|
||||
assert "@media (max-width: 980px)" in css_contract, css_contract[-2200:]
|
||||
|
||||
@@ -107,6 +107,8 @@ def main() -> None:
|
||||
assert (created / "reports" / "intent-confidence.json").exists(), created
|
||||
assert (created / "reports" / "skill-overview.html").exists(), created
|
||||
assert (created / "reports" / "skill-overview.json").exists(), created
|
||||
assert (created / "reports" / "skill-interpretation.html").exists(), created
|
||||
assert (created / "reports" / "skill-interpretation.json").exists(), created
|
||||
assert (created / "reports" / "compiled_targets.md").exists(), created
|
||||
assert (created / "reports" / "compiled_targets.json").exists(), created
|
||||
assert (created / "reports" / "reference-synthesis.md").exists(), created
|
||||
@@ -158,6 +160,7 @@ def main() -> None:
|
||||
assert "reports/adoption_drift_report.md" in overview_json["skill_summary"]["deliverables"], overview_json["skill_summary"]
|
||||
assert "reports/review_waivers.md" in overview_json["skill_summary"]["deliverables"], overview_json["skill_summary"]
|
||||
assert "reports/review-studio.html" in overview_json["skill_summary"]["deliverables"], overview_json["skill_summary"]
|
||||
assert "reports/skill-interpretation.html" in overview_json["skill_summary"]["deliverables"], overview_json["skill_summary"]
|
||||
assert overview_json["skill_ir"]["schema_version"] in {"", "2.0.0"}, overview_json.get("skill_ir")
|
||||
assert overview_json["compiled_targets"]["summary"]["target_count"] >= 3, overview_json.get("compiled_targets")
|
||||
assert overview_json["compiled_targets"]["summary"]["block_count"] == 0, overview_json.get("compiled_targets")
|
||||
|
||||
+43
-51
@@ -79,7 +79,7 @@ def main() -> None:
|
||||
assert callable(yao_cli_module.command_review_studio)
|
||||
parser_help = yao_cli_module.build_parser().format_help()
|
||||
expected_help = (
|
||||
"quickstart review-studio python-compat architecture-audit skill-os2-audit skill-os2-coverage "
|
||||
"quickstart skill-interpretation review-studio python-compat architecture-audit skill-os2-audit skill-os2-coverage "
|
||||
"world-class-evidence world-class-ledger world-class-intake world-class-submission-kit "
|
||||
"world-class-submission-review world-class-runbook world-class-claim-guard "
|
||||
"benchmark-reproducibility output-review-kit adapt-scan adapt-propose "
|
||||
@@ -92,35 +92,26 @@ def main() -> None:
|
||||
created = Path(init_result["payload"]["root"])
|
||||
assert (created / "SKILL.md").exists(), created
|
||||
assert (created / "README.md").exists(), created
|
||||
assert (created / "reports" / "intent-dialogue.md").exists(), created
|
||||
assert (created / "reports" / "intent-confidence.md").exists(), created
|
||||
assert (created / "reports" / "skill-overview.html").exists(), created
|
||||
assert (created / "reports" / "review-studio.html").exists(), created
|
||||
assert (created / "reports" / "review-studio.json").exists(), created
|
||||
assert (created / "reports" / "review-viewer.html").exists(), created
|
||||
assert (created / "reports" / "reference-scan.md").exists(), created
|
||||
assert (created / "reports" / "reference-synthesis.md").exists(), created
|
||||
assert (created / "reports" / "output-risk-profile.md").exists(), created
|
||||
assert (created / "reports" / "artifact-design-profile.md").exists(), created
|
||||
assert (created / "reports" / "prompt-quality-profile.md").exists(), created
|
||||
assert (created / "reports" / "system-model.md").exists(), created
|
||||
assert (created / "reports" / "skill-ir.json").exists(), created
|
||||
assert (created / "reports" / "compiled_targets.md").exists(), created
|
||||
assert (created / "reports" / "compiled_targets.json").exists(), created
|
||||
assert (created / "reports" / "iteration-directions.md").exists(), created
|
||||
assert (created / "reports" / "adoption_drift_report.md").exists(), created
|
||||
assert (created / "reports" / "adoption_drift_report.json").exists(), created
|
||||
assert (created / "reports" / "review_waivers.md").exists(), created
|
||||
assert (created / "reports" / "review_waivers.json").exists(), created
|
||||
assert (created / "reports" / "review_annotations.md").exists(), created
|
||||
assert (created / "reports" / "review_annotations.json").exists(), created
|
||||
expected_reports = [
|
||||
"intent-dialogue.md", "intent-confidence.md", "skill-overview.html", "skill-interpretation.html",
|
||||
"skill-interpretation.json", "review-studio.html", "review-studio.json", "review-viewer.html",
|
||||
"reference-scan.md", "reference-synthesis.md", "output-risk-profile.md", "artifact-design-profile.md",
|
||||
"prompt-quality-profile.md", "system-model.md", "skill-ir.json", "compiled_targets.md",
|
||||
"compiled_targets.json", "iteration-directions.md", "adoption_drift_report.md",
|
||||
"adoption_drift_report.json", "review_waivers.md", "review_waivers.json", "review_annotations.md",
|
||||
"review_annotations.json",
|
||||
]
|
||||
assert all((created / "reports" / path).exists() for path in expected_reports), created
|
||||
assert "Honest Boundaries" in (created / "SKILL.md").read_text(encoding="utf-8"), created
|
||||
init_report_view = init_result["payload"]["report_view"]
|
||||
assert init_report_view["html_report"].endswith("reports/skill-overview.html"), init_report_view
|
||||
assert init_report_view["interpretation_report"].endswith("reports/skill-interpretation.html"), init_report_view
|
||||
assert Path(init_report_view["html_report"]).exists(), init_report_view
|
||||
assert Path(init_report_view["interpretation_report"]).exists(), init_report_view
|
||||
assert init_report_view["review_studio"].endswith("reports/review-studio.html"), init_report_view
|
||||
assert Path(init_report_view["review_studio"]).exists(), init_report_view
|
||||
assert "Skill 已创建完成" in init_report_view["message"], init_report_view
|
||||
assert "reports/skill-interpretation.html" in init_report_view["message"], init_report_view
|
||||
assert "Review Studio 2.0" in init_report_view["message"], init_report_view
|
||||
assert "目标编译" in init_report_view["message"], init_report_view
|
||||
assert "reports/compiled_targets.md" in init_report_view["message"], init_report_view
|
||||
@@ -360,19 +351,13 @@ def main() -> None:
|
||||
)
|
||||
assert quickstart_result["ok"], quickstart_result
|
||||
quickstart_root = Path(quickstart_result["payload"]["root"])
|
||||
assert (quickstart_root / "reports" / "review-viewer.html").exists(), quickstart_root
|
||||
assert (quickstart_root / "reports" / "review-studio.html").exists(), quickstart_root
|
||||
assert (quickstart_root / "reports" / "github-benchmark-scan.md").exists(), quickstart_root
|
||||
assert (quickstart_root / "reports" / "intent-confidence.md").exists(), quickstart_root
|
||||
assert (quickstart_root / "reports" / "reference-synthesis.md").exists(), quickstart_root
|
||||
assert (quickstart_root / "reports" / "artifact-design-profile.md").exists(), quickstart_root
|
||||
assert (quickstart_root / "reports" / "prompt-quality-profile.md").exists(), quickstart_root
|
||||
assert (quickstart_root / "reports" / "system-model.md").exists(), quickstart_root
|
||||
assert (quickstart_root / "reports" / "compiled_targets.md").exists(), quickstart_root
|
||||
assert (quickstart_root / "reports" / "compiled_targets.json").exists(), quickstart_root
|
||||
assert (quickstart_root / "reports" / "adoption_drift_report.md").exists(), quickstart_root
|
||||
assert (quickstart_root / "reports" / "review_waivers.md").exists(), quickstart_root
|
||||
assert (quickstart_root / "reports" / "review_annotations.md").exists(), quickstart_root
|
||||
quickstart_reports = [
|
||||
"review-viewer.html", "skill-interpretation.html", "skill-interpretation.json", "review-studio.html",
|
||||
"github-benchmark-scan.md", "intent-confidence.md", "reference-synthesis.md",
|
||||
"artifact-design-profile.md", "prompt-quality-profile.md", "system-model.md", "compiled_targets.md",
|
||||
"compiled_targets.json", "adoption_drift_report.md", "review_waivers.md", "review_annotations.md",
|
||||
]
|
||||
assert all((quickstart_root / "reports" / path).exists() for path in quickstart_reports), quickstart_root
|
||||
assert quickstart_result["payload"]["archetype"] == "production", quickstart_result
|
||||
assert quickstart_result["payload"]["guidance"]["experience_note"], quickstart_result
|
||||
assert quickstart_result["payload"]["guidance"]["problem_diagnosis"]["candidates"], quickstart_result
|
||||
@@ -381,25 +366,22 @@ def main() -> None:
|
||||
assert quickstart_result["payload"]["reference_mode"]["mode"] == "silent", quickstart_result
|
||||
quickstart_report_view = quickstart_result["payload"]["report_view"]
|
||||
assert quickstart_report_view["html_report"].endswith("reports/skill-overview.html"), quickstart_report_view
|
||||
assert quickstart_report_view["interpretation_report"].endswith("reports/skill-interpretation.html"), quickstart_report_view
|
||||
assert Path(quickstart_report_view["html_report"]).exists(), quickstart_report_view
|
||||
assert Path(quickstart_report_view["interpretation_report"]).exists(), quickstart_report_view
|
||||
assert Path(quickstart_report_view["review_studio"]).exists(), quickstart_report_view
|
||||
assert "Skill 已创建完成" in quickstart_report_view["message"], quickstart_report_view
|
||||
assert "默认使用中文简体" in quickstart_report_view["message"], quickstart_report_view
|
||||
assert quickstart_result["payload"]["guidance"]["next_steps"][0].startswith("Open reports/skill-overview.html"), quickstart_result
|
||||
assert "reports/review-studio.html" in quickstart_result["payload"]["guidance"]["next_steps"][2], quickstart_result
|
||||
assert "audit report" in quickstart_result["payload"]["guidance"]["next_steps"][0], quickstart_result
|
||||
assert quickstart_result["payload"]["reviewer_evidence"]["artifacts"]["reference_synthesis"].endswith(
|
||||
"reports/reference-synthesis.md"
|
||||
), quickstart_result
|
||||
assert quickstart_result["payload"]["reviewer_evidence"]["artifacts"]["prompt_quality_profile"].endswith(
|
||||
"reports/prompt-quality-profile.md"
|
||||
), quickstart_result
|
||||
assert quickstart_result["payload"]["reviewer_evidence"]["artifacts"]["system_model"].endswith(
|
||||
"reports/system-model.md"
|
||||
), quickstart_result
|
||||
assert quickstart_result["payload"]["reviewer_evidence"]["artifacts"]["review_studio"].endswith(
|
||||
"reports/review-studio.html"
|
||||
), quickstart_result
|
||||
assert quickstart_result["payload"]["guidance"]["next_steps"][0].startswith("Open reports/skill-interpretation.html"), quickstart_result
|
||||
assert quickstart_result["payload"]["guidance"]["next_steps"][1].startswith("Open reports/skill-overview.html"), quickstart_result
|
||||
assert "reports/review-studio.html" in quickstart_result["payload"]["guidance"]["next_steps"][3], quickstart_result
|
||||
assert "interpretation report" in quickstart_result["payload"]["guidance"]["next_steps"][0], quickstart_result
|
||||
evidence_artifacts = quickstart_result["payload"]["reviewer_evidence"]["artifacts"]
|
||||
assert evidence_artifacts["reference_synthesis"].endswith("reports/reference-synthesis.md"), quickstart_result
|
||||
assert evidence_artifacts["prompt_quality_profile"].endswith("reports/prompt-quality-profile.md"), quickstart_result
|
||||
assert evidence_artifacts["system_model"].endswith("reports/system-model.md"), quickstart_result
|
||||
assert evidence_artifacts["skill_interpretation"].endswith("reports/skill-interpretation.html"), quickstart_result
|
||||
assert evidence_artifacts["review_studio"].endswith("reports/review-studio.html"), quickstart_result
|
||||
assert "uncertainty_or_conflict" not in quickstart_result["payload"], quickstart_result
|
||||
quickstart_manifest = json.loads((quickstart_root / "manifest.json").read_text(encoding="utf-8"))
|
||||
assert quickstart_manifest["status"] == "active", quickstart_manifest
|
||||
@@ -440,6 +422,14 @@ def main() -> None:
|
||||
assert skill_report_result["ok"], skill_report_result
|
||||
assert skill_report_result["payload"]["artifacts"]["html"].endswith("reports/skill-overview.html"), skill_report_result
|
||||
|
||||
skill_interpretation_result = run("skill-interpretation", str(created))
|
||||
assert skill_interpretation_result["ok"], skill_interpretation_result
|
||||
assert skill_interpretation_result["payload"]["artifacts"]["html"].endswith(
|
||||
"reports/skill-interpretation.html"
|
||||
), skill_interpretation_result
|
||||
assert skill_interpretation_result["payload"]["summary"]["report_kind"] == "skill-interpretation", skill_interpretation_result
|
||||
assert skill_interpretation_result["payload"]["summary"]["default_language"] == "zh-CN", skill_interpretation_result
|
||||
|
||||
review_viewer_result = run("review-viewer", str(created))
|
||||
assert review_viewer_result["ok"], review_viewer_result
|
||||
assert review_viewer_result["payload"]["artifacts"]["html"].endswith("reports/review-viewer.html"), review_viewer_result
|
||||
@@ -762,6 +752,8 @@ def main() -> None:
|
||||
assert "benchmark_reproducibility" in report_result["payload"]["artifacts"], report_result
|
||||
assert "skill_os2_coverage" in report_result["payload"]["artifacts"], report_result
|
||||
assert report_result["payload"]["artifacts"]["skill_overview"] == "reports/skill-overview.json", report_result
|
||||
assert report_result["payload"]["artifacts"]["skill_interpretation"] == "reports/skill-interpretation.json", report_result
|
||||
assert report_result["payload"]["artifacts"]["skill_interpretation_html"] == "reports/skill-interpretation.html", report_result
|
||||
assert report_result["payload"]["artifacts"]["review_viewer"] == "reports/review-viewer.json", report_result
|
||||
assert report_result["payload"]["artifacts"]["review_viewer_html"] == "reports/review-viewer.html", report_result
|
||||
report_output_execution = json.loads((ROOT / "reports" / "output_execution_runs.json").read_text(encoding="utf-8"))
|
||||
|
||||
Reference in New Issue
Block a user