From 36dc46ab9bda175af593ebcc0ee659a0f2b54ecb Mon Sep 17 00:00:00 2001 From: yaojingang Date: Sat, 13 Jun 2026 20:15:50 +0800 Subject: [PATCH] feat: package vscode skill target --- Makefile | 2 +- README.md | 14 +- SKILL.md | 4 +- agents/interface.yaml | 2 + evals/packaging_expectations.json | 5 +- manifest.json | 3 +- references/distribution-registry-method.md | 2 +- references/platform-capability-matrix.md | 2 + registry/index.json | 5 +- registry/packages/yao-meta-skill.json | 9 +- reports/adoption_drift_report.json | 2 +- reports/compiled_targets.json | 820 ++++++++++++- reports/compiled_targets.md | 14 +- reports/context_budget.json | 12 +- reports/context_budget.md | 2 +- reports/context_budget_summary.json | 6 +- reports/install_simulation.json | 14 +- reports/install_simulation.md | 4 +- reports/output_execution_runs.json | 20 +- reports/output_execution_runs.md | 20 +- reports/package_verification.json | 158 ++- reports/package_verification.md | 34 +- reports/portability_score.json | 6 +- reports/portability_score.md | 2 +- reports/registry_audit.json | 14 +- reports/registry_audit.md | 4 +- reports/review-studio.html | 20 +- reports/review-studio.json | 1247 ++++++++++++++++++-- reports/runtime_permission_probes.json | 78 +- reports/runtime_permission_probes.md | 7 +- reports/security_trust_report.json | 4 +- reports/security_trust_report.md | 2 +- reports/skill-os-2-review.md | 24 +- reports/skill-overview.html | 12 +- reports/skill-overview.json | 85 +- reports/skill_atlas.json | 3 +- reports/upgrade_check.json | 14 +- reports/upgrade_check.md | 4 +- scripts/compile_skill.py | 14 +- scripts/cross_packager.py | 70 +- scripts/init_skill.py | 3 + scripts/probe_runtime_permissions.py | 2 +- scripts/verify_package.py | 13 +- skill-ir/examples/yao-meta-skill.json | 3 +- skill_atlas/catalog.json | 3 +- tests/snapshots/vscode_adapter.json | 26 + tests/verify_adapter_snapshots.py | 8 +- tests/verify_compile_skill.py | 8 +- tests/verify_install_simulation.py | 4 +- tests/verify_package_verification.py | 6 +- tests/verify_registry_audit.py | 1 + tests/verify_review_studio.py | 6 +- tests/verify_runtime_permission_probes.py | 10 +- tests/verify_upgrade_check.py | 1 + tests/verify_yao_cli.py | 12 +- 55 files changed, 2586 insertions(+), 284 deletions(-) create mode 100644 tests/snapshots/vscode_adapter.json diff --git a/Makefile b/Makefile index 659bca15..e53ef3c2 100644 --- a/Makefile +++ b/Makefile @@ -152,7 +152,7 @@ failure-regression-check: $(PYTHON) tests/verify_failure_regressions.py package-check: - $(PYTHON) scripts/cross_packager.py . --platform openai --platform claude --platform generic --expectations evals/packaging_expectations.json --output-dir dist --zip + $(PYTHON) scripts/cross_packager.py . --platform openai --platform claude --platform generic --platform vscode --expectations evals/packaging_expectations.json --output-dir dist --zip package-failure-check: $(PYTHON) tests/verify_packager_failures.py diff --git a/README.md b/README.md index bda3dc80..bdda82f2 100644 --- a/README.md +++ b/README.md @@ -113,7 +113,7 @@ python3 scripts/yao.py review-annotations my-skill --add-annotation --gate-key o python3 scripts/yao.py baseline-compare python3 scripts/yao.py check-update python3 scripts/yao.py skill-ir . --output-json skill-ir/examples/yao-meta-skill.json -python3 scripts/yao.py compile-skill . --target openai --target claude --target generic +python3 scripts/yao.py compile-skill . --target openai --target claude --target generic --target vscode python3 scripts/yao.py package . --platform generic --output-dir dist python3 scripts/yao.py output-eval python3 scripts/yao.py output-exec @@ -177,7 +177,7 @@ python3 scripts/context_sizer.py . python3 scripts/resource_boundary_check.py . python3 scripts/governance_check.py . --require-manifest python3 scripts/compile_skill.py . -python3 scripts/cross_packager.py . --platform openai --platform claude --platform generic --expectations evals/packaging_expectations.json --zip +python3 scripts/cross_packager.py . --platform openai --platform claude --platform generic --platform vscode --expectations evals/packaging_expectations.json --zip python3 scripts/probe_runtime_permissions.py . --package-dir dist python3 tests/verify_packager_failures.py ``` @@ -199,7 +199,7 @@ python3 scripts/yao.py review --target root python3 scripts/yao.py release-snapshot --target root --label release-candidate python3 scripts/yao.py skill-ir . --output-json skill-ir/examples/yao-meta-skill.json python3 scripts/yao.py compile-skill . -python3 scripts/yao.py package . --platform openai --platform claude --platform generic --output-dir dist --zip +python3 scripts/yao.py package . --platform openai --platform claude --platform generic --platform vscode --output-dir dist --zip python3 scripts/yao.py runtime-permissions . --package-dir dist python3 scripts/yao.py package-verify . --package-dir dist --require-zip python3 scripts/yao.py test @@ -247,9 +247,9 @@ The homepage panel below is generated from the current eval suite so the family- Full reports: [reports/eval_suite.json](reports/eval_suite.json) and [reports/family_summary.md](reports/family_summary.md) -- packaging validation: `openai`, `claude`, and `generic` targets pass contract checks and carry IR provenance, semantic parity metadata, and target-native behavior contracts -- target compiler validation: `openai`, `claude`, `generic`, and Agent Skills compatible contracts are compiled from Skill IR with generated-file mappings, adapter modes, native surfaces, permission enforcement notes, and unsupported-feature notes -- runtime permission probes: `openai`, `claude`, and `generic` adapters expose explicit permission contracts; current targets report `0` native-enforcement adapters and `3` metadata fallbacks with residual risks visible to reviewers +- packaging validation: `openai`, `claude`, `generic`, and `vscode` targets pass contract checks and carry IR provenance, semantic parity metadata, and target-native behavior contracts +- target compiler validation: `openai`, `claude`, `generic`, Agent Skills compatible, and VS Code / Copilot contracts are compiled from Skill IR with generated-file mappings, adapter modes, native surfaces, permission enforcement notes, and unsupported-feature notes +- runtime permission probes: `openai`, `claude`, `generic`, and `vscode` adapters expose explicit permission contracts; current targets report `0` native-enforcement adapters and `4` metadata fallbacks with residual risks visible to reviewers - portability score: `100/100` with neutral activation, execution, trust, and degradation metadata preserved across all exported targets - description optimization suite: root, team frontend review, and governed incident command pass blind and adversarial holdout gates; governed incident command still carries one visible holdout miss, and adversarial calibration plus family drift are now tracked separately - judge-backed blind eval: root, team frontend review, and governed incident command now pass an independent rubric judge on blind holdout prompts @@ -258,7 +258,7 @@ Full reports: [reports/eval_suite.json](reports/eval_suite.json) and [reports/fa - governance and resource-boundary checks are part of the default test path - root governance maturity score: `90/100`; governed benchmark example: `95/100` - CJK-aware trigger matching is now covered by explicit Chinese build, packaging, eval, and near-neighbor cases -- context budgets: root `987/1000`, complex benchmark `790/1000`, governed benchmark `760/1000` +- context budgets: root `944/1000`, complex benchmark `790/1000`, governed benchmark `760/1000` - quality density: root `131.7`, complex benchmark `164.6`, governed benchmark `171.1` - regression milestones are tracked in [reports/regression_history.md](reports/regression_history.md) - description drift history is tracked in [reports/description_drift_history.md](reports/description_drift_history.md) diff --git a/SKILL.md b/SKILL.md index 34d49012..baf2a4e0 100644 --- a/SKILL.md +++ b/SKILL.md @@ -32,11 +32,11 @@ Mode rules: [Method](references/skill-engineering-method.md), [Operating Modes]( 6. Add only folders and gates that earn their keep. 7. Surface the top three next iteration directions. -Core playbooks: [Method](references/skill-engineering-method.md), [Intent](references/intent-dialogue.md), [Reference Scan](references/reference-scan.md), [Skill IR](references/skill-ir-method.md), [Output Eval](references/output-eval-method.md), [Registry](references/distribution-registry-method.md), [Telemetry](references/telemetry-drift-method.md), [Waivers](references/review-waiver-method.md), [Review Studio](references/review-studio-method.md). +Core playbooks: [Method](references/skill-engineering-method.md), [Intent](references/intent-dialogue.md), [Skill IR](references/skill-ir-method.md), [Output Eval](references/output-eval-method.md), [Registry](references/distribution-registry-method.md), [Review Studio](references/review-studio-method.md). ## Skill OS 2.0 Gates -For production, library, governed, or team-distributed work, use Skill IR, target compiler contracts, trigger + output eval, Skill Atlas, runtime conformance, trust report, registry metadata, package verification, install simulation, upgrade check, adoption/drift telemetry, reviewer waiver evidence, and Review Studio before release. +For production, library, governed, or team-distributed work, run Skill IR, target compiler, trigger + output eval, Skill Atlas, conformance, trust, registry/package/install, upgrade, drift, waiver, and Review Studio gates before release. ## First-Turn Style diff --git a/agents/interface.yaml b/agents/interface.yaml index 599591a9..35912dba 100644 --- a/agents/interface.yaml +++ b/agents/interface.yaml @@ -8,6 +8,7 @@ compatibility: - "openai" - "claude" - "generic" + - "vscode" activation: mode: "manual" paths: [] @@ -22,3 +23,4 @@ compatibility: openai: "metadata-adapter" claude: "neutral-source-plus-adapter" generic: "neutral-source" + vscode: "agent-skills-source-with-vscode-notes" diff --git a/evals/packaging_expectations.json b/evals/packaging_expectations.json index 374c9059..f39792d4 100644 --- a/evals/packaging_expectations.json +++ b/evals/packaging_expectations.json @@ -1,5 +1,5 @@ { - "required_targets": ["openai", "claude", "generic"], + "required_targets": ["openai", "claude", "generic", "vscode"], "required_fields": [ "name", "description", @@ -30,5 +30,6 @@ ], "openai_required_files": ["targets/openai/adapter.json", "targets/openai/agents/openai.yaml"], "claude_required_files": ["targets/claude/adapter.json", "targets/claude/README.md"], - "generic_required_files": ["targets/generic/adapter.json"] + "generic_required_files": ["targets/generic/adapter.json"], + "vscode_required_files": ["targets/vscode/adapter.json", "targets/vscode/README.md"] } diff --git a/manifest.json b/manifest.json index 91767255..317a1a11 100644 --- a/manifest.json +++ b/manifest.json @@ -12,7 +12,8 @@ "openai", "claude", "generic", - "agent-skills-compatible" + "agent-skills-compatible", + "vscode" ], "factory_components": [ "templates", diff --git a/references/distribution-registry-method.md b/references/distribution-registry-method.md index 68bb0521..601912e7 100644 --- a/references/distribution-registry-method.md +++ b/references/distribution-registry-method.md @@ -25,7 +25,7 @@ Do not publish a team package when registry audit reports missing version, hash, For an installable archive, first build the distribution and run package verification: ```bash -python3 scripts/yao.py package . --platform openai --platform claude --platform generic --output-dir dist --zip +python3 scripts/yao.py package . --platform openai --platform claude --platform generic --platform vscode --output-dir dist --zip python3 scripts/yao.py package-verify . --package-dir dist --require-zip python3 scripts/yao.py install-simulate . --package-dir dist python3 scripts/yao.py registry-audit . diff --git a/references/platform-capability-matrix.md b/references/platform-capability-matrix.md index 101763db..57f5fa94 100644 --- a/references/platform-capability-matrix.md +++ b/references/platform-capability-matrix.md @@ -8,6 +8,7 @@ This matrix describes the current packaging targets and their support level. | `claude` | Yes | Yes | Yes | Yes | Yes | activation, execution, trust, permissions, degradation, native behavior | Generates `targets/claude/README.md` plus adapter metadata | | `generic` | Yes | Yes | Yes | Yes | Yes | activation, execution, trust, permissions, degradation, native behavior | Uses neutral adapter metadata only | | `agent-skills-compatible` | Neutral source | Yes | Yes | Source-compatible | Yes | activation, execution, trust, permissions, degradation, native behavior | Keeps canonical `SKILL.md` plus `agents/interface.yaml` source shape | +| `vscode` | Yes | Yes | Yes | Yes | Yes | activation, execution, trust, permissions, degradation, native behavior, install scope | Generates `targets/vscode/README.md` plus adapter metadata for VS Code / Copilot Agent Skills review | ## Current Support Model @@ -15,6 +16,7 @@ This matrix describes the current packaging targets and their support level. - `claude`: lightweight compatibility adapter with an explicit compiler contract and fallback notes. - `generic`: lowest-friction export for neutral Agent Skills consumers. - `agent-skills-compatible`: canonical source shape with compiler evidence for review and distribution. +- `vscode`: VS Code / Copilot Agent Skills adapter that preserves the neutral source package and documents user/project scope plus workspace-trust review notes. - runtime permission probes currently report metadata fallback for generated targets; no target is claimed as native-enforced until a client or installer integration can actually enforce the permission model. ## Portable Semantics diff --git a/registry/index.json b/registry/index.json index dbcc2b0e..95d8dac5 100644 --- a/registry/index.json +++ b/registry/index.json @@ -12,10 +12,11 @@ "openai", "claude", "generic", - "agent-skills-compatible" + "agent-skills-compatible", + "vscode" ], "package_metadata": "registry/packages/yao-meta-skill.json", - "package_sha256": "2984db5f8d02b147c86bf259679e247a10a6fa495d123032be46c2e7fdaf8368" + "package_sha256": "7a8dab0d542d2994adec2045b54559612db36f14db8b7b66e4138fb0435ae3d3" } ] } diff --git a/registry/packages/yao-meta-skill.json b/registry/packages/yao-meta-skill.json index 85845d3c..17cd7b38 100644 --- a/registry/packages/yao-meta-skill.json +++ b/registry/packages/yao-meta-skill.json @@ -7,7 +7,8 @@ "openai", "claude", "generic", - "agent-skills-compatible" + "agent-skills-compatible", + "vscode" ], "maturity": "governed", "owner": "Yao Team", @@ -15,8 +16,8 @@ "trust_level": "local", "license": "MIT", "checksums": { - "package_sha256": "2984db5f8d02b147c86bf259679e247a10a6fa495d123032be46c2e7fdaf8368", - "archive_sha256": "27fb62524da6ed2ccda448b7725e0154ee0fd3eccd4fe69a88494e67f4050353" + "package_sha256": "7a8dab0d542d2994adec2045b54559612db36f14db8b7b66e4138fb0435ae3d3", + "archive_sha256": "176d93befb446985aaff7cd8325b05c4858da13177cb13db82d210aa2d264060" }, "compatibility": { "openai": "pass", @@ -47,7 +48,7 @@ }, "distribution": { "archive_verified": true, - "archive_sha256": "27fb62524da6ed2ccda448b7725e0154ee0fd3eccd4fe69a88494e67f4050353", + "archive_sha256": "176d93befb446985aaff7cd8325b05c4858da13177cb13db82d210aa2d264060", "package_verification": "reports/package_verification.json", "install_simulated": true, "install_simulation": "reports/install_simulation.json" diff --git a/reports/adoption_drift_report.json b/reports/adoption_drift_report.json index 685c84c2..4f92a9f3 100644 --- a/reports/adoption_drift_report.json +++ b/reports/adoption_drift_report.json @@ -1,7 +1,7 @@ { "ok": true, "schema_version": "2.0", - "generated_at": "2026-06-13T12:00:19Z", + "generated_at": "2026-06-13T12:15:07Z", "skill_dir": ".", "privacy_contract": { "storage": "local-first", diff --git a/reports/compiled_targets.json b/reports/compiled_targets.json index a66c1f54..2108741f 100644 --- a/reports/compiled_targets.json +++ b/reports/compiled_targets.json @@ -4,8 +4,8 @@ "generated_at": "2026-06-13", "skill_dir": ".", "summary": { - "target_count": 4, - "pass_count": 4, + "target_count": 5, + "pass_count": 5, "warn_count": 0, "block_count": 0, "failure_count": 0, @@ -30,7 +30,8 @@ "openai", "claude", "generic", - "agent-skills-compatible" + "agent-skills-compatible", + "vscode" ] }, "compiled_contract": { @@ -341,7 +342,8 @@ "adapter_targets": [ "openai", "claude", - "generic" + "generic", + "vscode" ], "canonical_format": "agent-skills" }, @@ -826,7 +828,8 @@ "openai", "claude", "generic", - "agent-skills-compatible" + "agent-skills-compatible", + "vscode" ] }, "compiled_contract": { @@ -1137,7 +1140,8 @@ "adapter_targets": [ "openai", "claude", - "generic" + "generic", + "vscode" ], "canonical_format": "agent-skills" }, @@ -1622,7 +1626,8 @@ "openai", "claude", "generic", - "agent-skills-compatible" + "agent-skills-compatible", + "vscode" ] }, "compiled_contract": { @@ -1933,7 +1938,8 @@ "adapter_targets": [ "openai", "claude", - "generic" + "generic", + "vscode" ], "canonical_format": "agent-skills" }, @@ -2402,7 +2408,8 @@ "openai", "claude", "generic", - "agent-skills-compatible" + "agent-skills-compatible", + "vscode" ] }, "compiled_contract": { @@ -2713,7 +2720,8 @@ "adapter_targets": [ "openai", "claude", - "generic" + "generic", + "vscode" ], "canonical_format": "agent-skills" }, @@ -3163,6 +3171,798 @@ "unsupported_features": [], "warnings": [], "failures": [] + }, + { + "schema_version": "1.0", + "target": "vscode", + "status": "pass", + "compiler": { + "name": "yao-skill-ir-compiler", + "schema_version": "1.0", + "source": "skill-ir", + "ir_source": "skill-ir/examples/yao-meta-skill.json", + "ir_schema_version": "2.0.0" + }, + "source": { + "skill_dir": ".", + "canonical_metadata": "agents/interface.yaml", + "declared_targets": [ + "openai", + "claude", + "generic", + "agent-skills-compatible", + "vscode" + ] + }, + "compiled_contract": { + "name": "yao-meta-skill", + "title": "Yao Meta Skill", + "version": "1.1.0", + "description": "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.", + "job_to_be_done": "Turn repeated workflows, prompts, transcripts, runbooks, documents, or existing skill packages into routeable, evaluable, packageable, and governable agent skills for personal, team, library, or governed reuse.", + "trigger": { + "description": "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.", + "should_trigger": [ + "Create a skill from this repeated workflow.", + "Turn this runbook into a reusable agent skill.", + "Convert this process note into a reusable skill package for the team.", + "Improve this skill description and add evals.", + "Refactor this prompt into a proper skill package.", + "Package this skill for team reuse.", + "Create a meta-skill for packaging internal workflows.", + "Standardize this recurring workflow as a shareable skill package with references." + ], + "should_not_trigger": [ + "Explain what a workflow is.", + "Just explain what a skill is.", + "Summarize this random note.", + "Translate this README into Japanese.", + "Write a product headline for this landing page.", + "Draft a blog title for this article.", + "Rewrite this paragraph more clearly, but do not package anything.", + "Explain the difference between a runbook and a workflow.", + "one-off writing, translation, explanation, or brainstorming requests that do not need a reusable skill", + "general code review or debugging unless the user is packaging that workflow as a skill" + ], + "edge_cases": [ + "Create a one-off prompt for this task.", + "Write a custom answer for this request without creating a skill package.", + "Help me brainstorm process ideas without building a skill.", + "Improve this README but do not turn it into a skill.", + "Make a checklist for this task, but not a reusable skill.", + "Create a reusable-looking checklist, but keep it as a plain note instead of a skill.", + "Review this process note and explain it, no packaging needed.", + "Turn this into a checklist and template, but stop short of making a full skill." + ] + }, + "workflow": { + "steps": [ + "Decide whether the request should become a skill and choose the lightest fit.", + "Capture job, output, exclusions, constraints, and standards.", + "Run reference scan: external benchmarks first, user references second, local fit third; surface only uncertainty or conflict.", + "Write the `description` early and test route quality before expanding the package.", + "Add output-risk, artifact-design, prompt-quality, and system-model reports only when they matter.", + "Add only folders and gates that earn their keep.", + "Surface the top three next iteration directions." + ], + "decision_points": [ + "Route by frontmatter `description`.", + "Keep `SKILL.md` lean; put guidance in `references/`, logic in `scripts/`, and evidence in `reports/`.", + "Use the lightest reliable process.", + "`Scaffold`: exploratory or personal.", + "`Production`: team reuse.", + "`Library`: shared infrastructure.", + "Ask one focused clarification when the real job, output, or exclusion boundary is unclear.", + "Escalate visible tradeoffs when benchmark patterns conflict with local privacy, naming, or governance constraints.", + "Do not silently broaden the skill into adjacent jobs just because the examples are nearby." + ], + "failure_modes": [ + "Tables can render as dense grids with weak hierarchy or poor mobile readability.", + "Long bullets can make the output look complete while hiding the actual decision logic.", + "Footnote markers or dense citation notes can interrupt the reading flow.", + "Evidence can be over-attached to obvious statements and under-attached to risky claims.", + "Screenshots can be captured from the wrong state, wrong viewport, or wrong crop.", + "Missing screenshots can cause the skill to invent visual references instead of declaring the gap.", + "Users start invoking the skill for adjacent one-off or explanation-only requests.", + "Outputs remain valid but become generic, cluttered, or weakly aligned with the user's domain.", + "Borrowed benchmark patterns no longer fit the local job or add ceremony without payoff.", + "Skill usage becomes team-critical while ownership, review cadence, or rollback evidence stays informal." + ] + }, + "resources": { + "references": [ + "references/artifact-design-doctrine.md", + "references/authoring-discipline.md", + "references/distribution-registry-method.md", + "references/eval-playbook.md", + "references/gate-selection.md", + "references/governance.md", + "references/human-review-template.md", + "references/intent-dialogue.md", + "references/iteration-philosophy.md", + "references/non-skill-decision-tree.md", + "references/operating-modes.md", + "references/output-eval-method.md", + "references/output-quality-risk.md", + "references/output-visual-quality.md", + "references/packaging-contracts.md", + "references/pattern-extraction-doctrine.md", + "references/platform-capability-matrix.md", + "references/prompt-engineering-doctrine.md", + "references/qa-ladder.md", + "references/reference-scan.md", + "references/regression-cause-taxonomy.md", + "references/resource-boundaries.md", + "references/review-studio-method.md", + "references/review-waiver-method.md", + "references/runtime-conformance-method.md", + "references/skill-archetypes.md", + "references/skill-atlas-method.md", + "references/skill-engineering-method.md", + "references/skill-ir-method.md", + "references/systems-thinking-doctrine.md", + "references/telemetry-drift-method.md", + "references/trust-security-method.md" + ], + "scripts": [ + "scripts/adjudicate_output_review.py", + "scripts/build_confusion_matrix.py", + "scripts/build_skill_atlas.py", + "scripts/check_update.py", + "scripts/ci_test.py", + "scripts/collect_feedback.py", + "scripts/compile_skill.py", + "scripts/context_sizer.py", + "scripts/create_iteration_snapshot.py", + "scripts/cross_packager.py", + "scripts/diff_eval.py", + "scripts/export_skill_ir.py", + "scripts/github_benchmark_scan.py", + "scripts/governance_check.py", + "scripts/init_skill.py", + "scripts/judge_blind_eval.py", + "scripts/lint_skill.py", + "scripts/local_output_eval_runner.py", + "scripts/optimize_description.py", + "scripts/probe_runtime_permissions.py", + "scripts/promotion_checker.py", + "scripts/provider_output_eval_runner.py", + "scripts/registry_audit.py", + "scripts/render_adoption_drift_report.py", + "scripts/render_artifact_design_profile.py", + "scripts/render_baseline_compare.py", + "scripts/render_context_reports.py", + "scripts/render_description_drift_history.py", + "scripts/render_eval_dashboard.py", + "scripts/render_intent_confidence.py", + "scripts/render_intent_dialogue.py", + "scripts/render_iteration_directions.py", + "scripts/render_iteration_ledger.py", + "scripts/render_output_risk_profile.py", + "scripts/render_portability_report.py", + "scripts/render_prompt_quality_profile.py", + "scripts/render_reference_scan.py", + "scripts/render_reference_synthesis.py", + "scripts/render_regression_history.py", + "scripts/render_review_annotations.py", + "scripts/render_review_studio.py", + "scripts/render_review_viewer.py", + "scripts/render_review_waivers.py", + "scripts/render_skill_overview.py", + "scripts/render_social_preview.py", + "scripts/render_system_model.py", + "scripts/resource_boundary_check.py", + "scripts/review_studio_formatting.py", + "scripts/review_studio_gates.py", + "scripts/review_studio_layout.py", + "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/simulate_install.py", + "scripts/skill_report_charts.py", + "scripts/skill_report_layout.py", + "scripts/skill_report_metrics.py", + "scripts/skill_report_model.py", + "scripts/sync_local_install.py", + "scripts/trigger_eval.py", + "scripts/trust_check.py", + "scripts/upgrade_check.py", + "scripts/validate_skill.py", + "scripts/verify_package.py", + "scripts/yao.py", + "scripts/yao_cli_config.py", + "scripts/yao_cli_parser.py" + ], + "assets": [ + "templates/basic_skill.md.j2", + "templates/complex_skill.md.j2" + ], + "reports": [ + "reports/benchmark_methodology.md", + "reports/intent-context.json", + "reports/intent-confidence.json", + "reports/intent-confidence.md", + "reports/reference-synthesis.json", + "reports/reference-synthesis.md", + "reports/output-risk-profile.json", + "reports/output-risk-profile.md", + "reports/artifact-design-profile.json", + "reports/artifact-design-profile.md", + "reports/prompt-quality-profile.json", + "reports/prompt-quality-profile.md", + "reports/system-model.json", + "reports/system-model.md", + "reports/iteration-directions.json", + "reports/iteration-directions.md", + "reports/skill-overview.json", + "reports/skill-overview.html", + "reports/output_quality_scorecard.json", + "reports/output_quality_scorecard.md", + "reports/output_execution_runs.json", + "reports/output_execution_runs.md", + "reports/output_blind_review_pack.json", + "reports/output_blind_review_pack.md", + "reports/output_blind_answer_key.json", + "reports/output_review_adjudication.json", + "reports/output_review_adjudication.md", + "reports/review_annotations.json", + "reports/review_annotations.md", + "reports/conformance_matrix.json", + "reports/conformance_matrix.md", + "reports/security_trust_report.json", + "reports/security_trust_report.md", + "reports/runtime_permission_probes.json", + "reports/runtime_permission_probes.md", + "reports/skill_atlas.json", + "reports/skill_atlas.html", + "reports/skill-os-2-review.md", + "reports/portability_score.json", + "reports/portability_score.md", + "reports/governance_score.json" + ], + "counts": { + "references": 32, + "scripts": 69, + "assets": 2, + "reports": 41 + } + }, + "eval_plan": { + "trigger": [ + "evals/README.md", + "evals/adversarial/trigger_cases.json", + "evals/blind_holdout/trigger_cases.json", + "evals/confusion/route_cases.json", + "evals/dev/trigger_cases.json", + "evals/failure-cases.md", + "evals/history/2026-03-31-context-first-pack.json", + "evals/history/2026-03-31-family-suite-expansion.json", + "evals/history/2026-03-31-governance-quality-gates.json", + "evals/history/2026-03-31-governed-assets-and-history.json", + "evals/history/2026-04-01-route-scorecard-foundation.json", + "evals/history/README.md", + "evals/history/description_optimization/2026-03-31-description-optimization-suite.json", + "evals/history/description_optimization/2026-04-01-adversarial-calibration-and-family-drift.json", + "evals/history/description_optimization/2026-04-01-blind-holdout-and-drift-history.json", + "evals/history/description_optimization/2026-04-01-judge-backed-blind-eval.json", + "evals/history/description_optimization/README.md", + "evals/holdout/trigger_cases.json", + "evals/output/cases.jsonl", + "evals/output/fixtures/release-brief-source.md", + "evals/output/schema.json", + "evals/packaging_expectations.json", + "evals/promotion_policy.md", + "evals/semantic_config.json", + "evals/train/trigger_cases.json", + "evals/trigger_cases.json" + ], + "output": [ + "evals/output/cases.jsonl", + "evals/output/fixtures/release-brief-source.md", + "evals/output/schema.json" + ], + "adversarial": [ + "evals/adversarial/trigger_cases.json" + ], + "baseline": "without_skill", + "counts": { + "trigger": 26, + "output": 3, + "adversarial": 1, + "baseline": 1 + } + }, + "risk": { + "output_risk": "high", + "execution_risk": "medium", + "trust_boundary": "external" + }, + "governance": { + "owner": "Yao Team", + "maturity": "governed", + "review_cadence": "quarterly", + "review_due": "" + }, + "runtime": { + "activation": { + "mode": "manual", + "paths": [] + }, + "execution": { + "context": "inline", + "shell": "bash" + }, + "trust": { + "source_tier": "local", + "remote_inline_execution": "forbid", + "remote_metadata_policy": "allow-metadata-only" + }, + "adapter_targets": [ + "openai", + "claude", + "generic", + "vscode" + ], + "canonical_format": "agent-skills" + }, + "permissions": { + "schema_version": "1.0", + "source": "reports/security_trust_report.json", + "source_available": true, + "declared_capabilities": [ + "network", + "file_write", + "subprocess" + ], + "review_required": true, + "capabilities": { + "network": { + "required": true, + "script_count": 3, + "scripts": [ + "scripts/check_update.py", + "scripts/github_benchmark_scan.py", + "scripts/provider_output_eval_runner.py" + ], + "review_reason": "Outbound hosts must match security/network_policy.json." + }, + "file_write": { + "required": true, + "script_count": 47, + "scripts": [ + "scripts/adjudicate_output_review.py", + "scripts/build_confusion_matrix.py", + "scripts/build_skill_atlas.py", + "scripts/check_update.py", + "scripts/ci_test.py", + "scripts/collect_feedback.py", + "scripts/compile_skill.py", + "scripts/create_iteration_snapshot.py", + "scripts/cross_packager.py", + "scripts/export_skill_ir.py", + "scripts/github_benchmark_scan.py", + "scripts/init_skill.py", + "scripts/probe_runtime_permissions.py", + "scripts/promotion_checker.py", + "scripts/registry_audit.py", + "scripts/render_adoption_drift_report.py", + "scripts/render_artifact_design_profile.py", + "scripts/render_baseline_compare.py", + "scripts/render_context_reports.py", + "scripts/render_description_drift_history.py", + "scripts/render_eval_dashboard.py", + "scripts/render_intent_confidence.py", + "scripts/render_intent_dialogue.py", + "scripts/render_iteration_directions.py", + "scripts/render_iteration_ledger.py", + "scripts/render_output_risk_profile.py", + "scripts/render_portability_report.py", + "scripts/render_prompt_quality_profile.py", + "scripts/render_reference_scan.py", + "scripts/render_reference_synthesis.py", + "scripts/render_regression_history.py", + "scripts/render_review_annotations.py", + "scripts/render_review_studio.py", + "scripts/render_review_viewer.py", + "scripts/render_review_waivers.py", + "scripts/render_skill_overview.py", + "scripts/render_social_preview.py", + "scripts/render_system_model.py", + "scripts/run_conformance_suite.py", + "scripts/run_description_optimization_suite.py", + "scripts/run_output_eval.py", + "scripts/run_output_execution.py", + "scripts/simulate_install.py", + "scripts/sync_local_install.py", + "scripts/trust_check.py", + "scripts/upgrade_check.py", + "scripts/verify_package.py" + ], + "review_reason": "Scripts write local files or generated artifacts." + }, + "subprocess": { + "required": true, + "script_count": 7, + "scripts": [ + "scripts/ci_test.py", + "scripts/render_eval_dashboard.py", + "scripts/run_eval_suite.py", + "scripts/run_output_execution.py", + "scripts/sync_local_install.py", + "scripts/trust_check.py", + "scripts/yao.py" + ], + "review_reason": "Scripts spawn local commands and need operator review." + }, + "interactive": { + "required": false, + "script_count": 0, + "scripts": [], + "review_reason": "" + } + }, + "network_policy": { + "source": "security/network_policy.json", + "covered_scripts": [ + "scripts/check_update.py", + "scripts/github_benchmark_scan.py", + "scripts/provider_output_eval_runner.py" + ], + "missing_scripts": [], + "mismatches": [] + }, + "help_smoke": { + "enabled": true, + "checked_count": 60, + "failed_count": 0, + "failed_scripts": [] + }, + "trust_summary": { + "secret_findings": 0, + "network_script_count": 3, + "file_write_script_count": 47, + "subprocess_script_count": 7, + "interactive_script_count": 0, + "help_smoke_failed_count": 0 + } + }, + "source_files_count": 6, + "target": "vscode", + "target_permission_contract": { + "schema_version": "1.0", + "target": "vscode", + "permission_model": "vscode-workspace-trust-plus-metadata", + "native_enforcement": false, + "representation": "targets/vscode/adapter.json::target_permission_contract and targets/vscode/README.md install notes", + "review_required": true, + "declared_capabilities": [ + "network", + "file_write", + "subprocess" + ], + "capability_counts": { + "network": 3, + "file_write": 47, + "subprocess": 7, + "interactive": 0 + }, + "evidence": "reports/security_trust_report.json", + "operator_note": "VS Code target relies on project or user skill installation plus VS Code workspace trust; Yao preserves permission metadata for reviewer and installer checks." + }, + "target_native_contract": { + "schema_version": "1.0", + "target": "vscode", + "native_surface": "VS Code/Copilot Agent Skills project or user scope", + "activation": { + "policy": "Use folder name plus SKILL.md name/description; keep description under platform limits.", + "trigger_description": "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.", + "manual_activation_supported": true, + "automatic_activation_note": "Depends on the target client route/catalog implementation." + }, + "resources": { + "strategy": "Install as project or user scoped skill source, preserving relative references and scripts.", + "counts": { + "references": 32, + "scripts": 69, + "assets": 2, + "reports": 41 + }, + "generated_files": [ + "targets/vscode/adapter.json", + "targets/vscode/README.md" + ] + }, + "scripts": { + "strategy": "Scripts require workspace trust and operator/client approval outside this compiler.", + "script_count": 69, + "help_smoke_failed_count": 0 + }, + "permissions": { + "enforcement": "client-or-workspace-trust", + "native_enforcement": false, + "declared_capabilities": [ + "network", + "file_write", + "subprocess" + ], + "review_required": true + }, + "review": { + "artifacts": [ + "SKILL.md", + "agents/interface.yaml", + "reports/review-studio.html" + ], + "fallback_behavior": "If VS Code scope is not installed, use the neutral Agent Skills source.", + "unsupported_native_features": [ + "automatic VS Code installation", + "VS Code installation scope is documented but not installed by this compiler" + ] + }, + "install_scope": "VS Code user or project skills directory" + }, + "degradation_strategy": "agent-skills-source-with-vscode-notes", + "target_runtime": { + "adapter_mode": "vscode-agent-skills-adapter", + "generated_files": [ + "targets/vscode/adapter.json", + "targets/vscode/README.md" + ], + "metadata_mapping": { + "name": "folder-name-and-SKILL.md::frontmatter.name", + "description": "SKILL.md::frontmatter.description", + "interface": "agents/interface.yaml", + "permissions": "targets/vscode/adapter.json::target_permission_contract", + "install_scope": "targets/vscode/README.md" + }, + "preserved_semantics": [ + "trigger", + "workflow", + "resources", + "eval-plan", + "risk", + "governance", + "runtime", + "trust", + "permissions" + ], + "native_surface": "VS Code/Copilot Agent Skills project or user scope" + } + }, + "permission_contract": { + "schema_version": "1.0", + "source": "reports/security_trust_report.json", + "source_available": true, + "declared_capabilities": [ + "network", + "file_write", + "subprocess" + ], + "review_required": true, + "capabilities": { + "network": { + "required": true, + "script_count": 3, + "scripts": [ + "scripts/check_update.py", + "scripts/github_benchmark_scan.py", + "scripts/provider_output_eval_runner.py" + ], + "review_reason": "Outbound hosts must match security/network_policy.json." + }, + "file_write": { + "required": true, + "script_count": 47, + "scripts": [ + "scripts/adjudicate_output_review.py", + "scripts/build_confusion_matrix.py", + "scripts/build_skill_atlas.py", + "scripts/check_update.py", + "scripts/ci_test.py", + "scripts/collect_feedback.py", + "scripts/compile_skill.py", + "scripts/create_iteration_snapshot.py", + "scripts/cross_packager.py", + "scripts/export_skill_ir.py", + "scripts/github_benchmark_scan.py", + "scripts/init_skill.py", + "scripts/probe_runtime_permissions.py", + "scripts/promotion_checker.py", + "scripts/registry_audit.py", + "scripts/render_adoption_drift_report.py", + "scripts/render_artifact_design_profile.py", + "scripts/render_baseline_compare.py", + "scripts/render_context_reports.py", + "scripts/render_description_drift_history.py", + "scripts/render_eval_dashboard.py", + "scripts/render_intent_confidence.py", + "scripts/render_intent_dialogue.py", + "scripts/render_iteration_directions.py", + "scripts/render_iteration_ledger.py", + "scripts/render_output_risk_profile.py", + "scripts/render_portability_report.py", + "scripts/render_prompt_quality_profile.py", + "scripts/render_reference_scan.py", + "scripts/render_reference_synthesis.py", + "scripts/render_regression_history.py", + "scripts/render_review_annotations.py", + "scripts/render_review_studio.py", + "scripts/render_review_viewer.py", + "scripts/render_review_waivers.py", + "scripts/render_skill_overview.py", + "scripts/render_social_preview.py", + "scripts/render_system_model.py", + "scripts/run_conformance_suite.py", + "scripts/run_description_optimization_suite.py", + "scripts/run_output_eval.py", + "scripts/run_output_execution.py", + "scripts/simulate_install.py", + "scripts/sync_local_install.py", + "scripts/trust_check.py", + "scripts/upgrade_check.py", + "scripts/verify_package.py" + ], + "review_reason": "Scripts write local files or generated artifacts." + }, + "subprocess": { + "required": true, + "script_count": 7, + "scripts": [ + "scripts/ci_test.py", + "scripts/render_eval_dashboard.py", + "scripts/run_eval_suite.py", + "scripts/run_output_execution.py", + "scripts/sync_local_install.py", + "scripts/trust_check.py", + "scripts/yao.py" + ], + "review_reason": "Scripts spawn local commands and need operator review." + }, + "interactive": { + "required": false, + "script_count": 0, + "scripts": [], + "review_reason": "" + } + }, + "network_policy": { + "source": "security/network_policy.json", + "covered_scripts": [ + "scripts/check_update.py", + "scripts/github_benchmark_scan.py", + "scripts/provider_output_eval_runner.py" + ], + "missing_scripts": [], + "mismatches": [] + }, + "help_smoke": { + "enabled": true, + "checked_count": 60, + "failed_count": 0, + "failed_scripts": [] + }, + "trust_summary": { + "secret_findings": 0, + "network_script_count": 3, + "file_write_script_count": 47, + "subprocess_script_count": 7, + "interactive_script_count": 0, + "help_smoke_failed_count": 0 + } + }, + "target_permission_contract": { + "schema_version": "1.0", + "target": "vscode", + "permission_model": "vscode-workspace-trust-plus-metadata", + "native_enforcement": false, + "representation": "targets/vscode/adapter.json::target_permission_contract and targets/vscode/README.md install notes", + "review_required": true, + "declared_capabilities": [ + "network", + "file_write", + "subprocess" + ], + "capability_counts": { + "network": 3, + "file_write": 47, + "subprocess": 7, + "interactive": 0 + }, + "evidence": "reports/security_trust_report.json", + "operator_note": "VS Code target relies on project or user skill installation plus VS Code workspace trust; Yao preserves permission metadata for reviewer and installer checks." + }, + "target_native_contract": { + "schema_version": "1.0", + "target": "vscode", + "native_surface": "VS Code/Copilot Agent Skills project or user scope", + "activation": { + "policy": "Use folder name plus SKILL.md name/description; keep description under platform limits.", + "trigger_description": "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.", + "manual_activation_supported": true, + "automatic_activation_note": "Depends on the target client route/catalog implementation." + }, + "resources": { + "strategy": "Install as project or user scoped skill source, preserving relative references and scripts.", + "counts": { + "references": 32, + "scripts": 69, + "assets": 2, + "reports": 41 + }, + "generated_files": [ + "targets/vscode/adapter.json", + "targets/vscode/README.md" + ] + }, + "scripts": { + "strategy": "Scripts require workspace trust and operator/client approval outside this compiler.", + "script_count": 69, + "help_smoke_failed_count": 0 + }, + "permissions": { + "enforcement": "client-or-workspace-trust", + "native_enforcement": false, + "declared_capabilities": [ + "network", + "file_write", + "subprocess" + ], + "review_required": true + }, + "review": { + "artifacts": [ + "SKILL.md", + "agents/interface.yaml", + "reports/review-studio.html" + ], + "fallback_behavior": "If VS Code scope is not installed, use the neutral Agent Skills source.", + "unsupported_native_features": [ + "automatic VS Code installation", + "VS Code installation scope is documented but not installed by this compiler" + ] + }, + "install_scope": "VS Code user or project skills directory" + }, + "target_transform": { + "target": "vscode", + "adapter_mode": "vscode-agent-skills-adapter", + "generated_files": [ + "targets/vscode/adapter.json", + "targets/vscode/README.md" + ], + "metadata_mapping": { + "name": "folder-name-and-SKILL.md::frontmatter.name", + "description": "SKILL.md::frontmatter.description", + "interface": "agents/interface.yaml", + "permissions": "targets/vscode/adapter.json::target_permission_contract", + "install_scope": "targets/vscode/README.md" + }, + "preserved_semantics": [ + "trigger", + "workflow", + "resources", + "eval-plan", + "risk", + "governance", + "runtime", + "trust", + "permissions" + ], + "degradation_strategy": "agent-skills-source-with-vscode-notes", + "permission_representation": "targets/vscode/adapter.json::target_permission_contract and targets/vscode/README.md install notes", + "native_surface": "VS Code/Copilot Agent Skills project or user scope", + "activation_policy": "Use folder name plus SKILL.md name/description; keep description under platform limits.", + "resource_strategy": "Install as project or user scoped skill source, preserving relative references and scripts.", + "script_strategy": "Scripts require workspace trust and operator/client approval outside this compiler.", + "permission_enforcement": "client-or-workspace-trust" + }, + "unsupported_features": [ + "VS Code installation scope is documented but not installed by this compiler" + ], + "warnings": [], + "failures": [] } ], "failures": [], diff --git a/reports/compiled_targets.md b/reports/compiled_targets.md index ea2ddcb5..f6a11f9b 100644 --- a/reports/compiled_targets.md +++ b/reports/compiled_targets.md @@ -1,8 +1,8 @@ # Compiled Targets - OK: `True` -- Targets: `4` -- Pass: `4` +- Targets: `5` +- Pass: `5` - Warn: `0` - Block: `0` @@ -14,6 +14,7 @@ | `claude` | `pass` | Claude-compatible neutral source folder with adapter notes | `neutral-source-plus-adapter` | `network, file_write, subprocess` | `neutral-source-plus-adapter` | targets/claude/adapter.json, targets/claude/README.md | | `generic` | `pass` | Agent Skills compatible neutral package | `agent-skills-compatible` | `network, file_write, subprocess` | `neutral-source` | targets/generic/adapter.json | | `agent-skills-compatible` | `pass` | Agent Skills standard source tree | `neutral-agent-skills-source` | `network, file_write, subprocess` | `neutral-source` | SKILL.md, agents/interface.yaml | +| `vscode` | `pass` | VS Code/Copilot Agent Skills project or user scope | `vscode-agent-skills-adapter` | `network, file_write, subprocess` | `agent-skills-source-with-vscode-notes` | targets/vscode/adapter.json, targets/vscode/README.md | ## Native Behavior Contracts @@ -53,6 +54,15 @@ - Permission enforcement: `consumer-enforced-or-metadata-only`; native enforcement `False` - Review artifacts: SKILL.md, agents/interface.yaml, reports/review-studio.html +### vscode + +- Native surface: VS Code/Copilot Agent Skills project or user scope +- Activation: Use folder name plus SKILL.md name/description; keep description under platform limits. +- Resources: Install as project or user scoped skill source, preserving relative references and scripts. +- Scripts: Scripts require workspace trust and operator/client approval outside this compiler. +- Permission enforcement: `client-or-workspace-trust`; native enforcement `False` +- Review artifacts: SKILL.md, agents/interface.yaml, reports/review-studio.html + ## Failures diff --git a/reports/context_budget.json b/reports/context_budget.json index 7d827ec2..0f17dd4f 100644 --- a/reports/context_budget.json +++ b/reports/context_budget.json @@ -5,13 +5,13 @@ "stats": { "context_budget_tier": "production", "context_budget_limit": 1000, - "skill_body_tokens": 811, - "other_text_tokens": 880703, - "estimated_initial_load_tokens": 987, - "estimated_total_text_tokens": 881514, - "relevant_file_count": 374, + "skill_body_tokens": 751, + "other_text_tokens": 905782, + "estimated_initial_load_tokens": 944, + "estimated_total_text_tokens": 906533, + "relevant_file_count": 386, "unused_resource_dirs": [], "quality_signal_points": 130, - "quality_density": 131.7 + "quality_density": 137.7 } } diff --git a/reports/context_budget.md b/reports/context_budget.md index 9d678e58..a4f7dcc3 100644 --- a/reports/context_budget.md +++ b/reports/context_budget.md @@ -2,7 +2,7 @@ | Target | Path | Tier | Limit | Initial | SKILL | Quality Density | Unused Dirs | Status | | --- | --- | --- | ---: | ---: | ---: | ---: | --- | --- | -| root | `.` | `production` | 1000 | 987 | 811 | 131.7 | - | ok | +| root | `.` | `production` | 1000 | 944 | 751 | 137.7 | - | ok | | complex-release-orchestrator | `examples/complex-release-orchestrator/generated-skill` | `production` | 1000 | 790 | 718 | 164.6 | - | ok | | governed-incident-command | `examples/governed-incident-command/generated-skill` | `production` | 1000 | 760 | 658 | 171.1 | - | ok | diff --git a/reports/context_budget_summary.json b/reports/context_budget_summary.json index ac17bd28..18c1b524 100644 --- a/reports/context_budget_summary.json +++ b/reports/context_budget_summary.json @@ -6,9 +6,9 @@ "path": ".", "budget_tier": "production", "budget_limit": 1000, - "initial_tokens": 987, - "skill_body_tokens": 811, - "quality_density": 131.7, + "initial_tokens": 944, + "skill_body_tokens": 751, + "quality_density": 137.7, "unused_resource_dirs": [], "ok": true, "warnings": [] diff --git a/reports/install_simulation.json b/reports/install_simulation.json index ebfc3d86..d24dfa83 100644 --- a/reports/install_simulation.json +++ b/reports/install_simulation.json @@ -8,12 +8,12 @@ "installed_skill_dir": "dist/install-simulation/simulate-yao-meta-skill/yao-meta-skill", "summary": { "archive_present": true, - "archive_entry_count": 492, + "archive_entry_count": 493, "archive_extracted": true, "entrypoint_loaded": true, "manifest_loaded": true, "interface_loaded": true, - "adapter_count": 3, + "adapter_count": 4, "install_root_is_temp": false, "failure_count": 0, "warning_count": 0 @@ -108,6 +108,16 @@ "id": "adapter-openai-name", "status": "pass", "detail": "openai adapter name matches package manifest" + }, + { + "id": "adapter-vscode", + "status": "pass", + "detail": "vscode adapter is readable after package install simulation" + }, + { + "id": "adapter-vscode-name", + "status": "pass", + "detail": "vscode adapter name matches package manifest" } ], "failures": [], diff --git a/reports/install_simulation.md b/reports/install_simulation.md index 7a06607a..c986b45c 100644 --- a/reports/install_simulation.md +++ b/reports/install_simulation.md @@ -6,7 +6,7 @@ - Entrypoint loaded: `True` - Manifest loaded: `True` - Interface loaded: `True` -- Adapters readable: `3` +- Adapters readable: `4` - Failures: `0` - Warnings: `0` @@ -32,6 +32,8 @@ | `adapter-generic-name` | `pass` | generic adapter name matches package manifest | | `adapter-openai` | `pass` | openai adapter is readable after package install simulation | | `adapter-openai-name` | `pass` | openai adapter name matches package manifest | +| `adapter-vscode` | `pass` | vscode adapter is readable after package install simulation | +| `adapter-vscode-name` | `pass` | vscode adapter name matches package manifest | ## Failures diff --git a/reports/output_execution_runs.json b/reports/output_execution_runs.json index 78ca1e15..b2a6fec6 100644 --- a/reports/output_execution_runs.json +++ b/reports/output_execution_runs.json @@ -34,7 +34,7 @@ "execution_mode": "command", "model_executed": false, "command_executed": true, - "duration_ms": 30.0, + "duration_ms": 28.86, "provider": "local-output-eval-runner", "model": "", "usage": { @@ -62,7 +62,7 @@ "execution_mode": "command", "model_executed": false, "command_executed": true, - "duration_ms": 32.55, + "duration_ms": 28.72, "provider": "local-output-eval-runner", "model": "", "usage": { @@ -85,7 +85,7 @@ "execution_mode": "command", "model_executed": false, "command_executed": true, - "duration_ms": 32.87, + "duration_ms": 29.59, "provider": "local-output-eval-runner", "model": "", "usage": { @@ -113,7 +113,7 @@ "execution_mode": "command", "model_executed": false, "command_executed": true, - "duration_ms": 32.72, + "duration_ms": 30.19, "provider": "local-output-eval-runner", "model": "", "usage": { @@ -136,7 +136,7 @@ "execution_mode": "command", "model_executed": false, "command_executed": true, - "duration_ms": 36.87, + "duration_ms": 31.03, "provider": "local-output-eval-runner", "model": "", "usage": { @@ -164,7 +164,7 @@ "execution_mode": "command", "model_executed": false, "command_executed": true, - "duration_ms": 39.43, + "duration_ms": 29.71, "provider": "local-output-eval-runner", "model": "", "usage": { @@ -187,7 +187,7 @@ "execution_mode": "command", "model_executed": false, "command_executed": true, - "duration_ms": 38.79, + "duration_ms": 32.23, "provider": "local-output-eval-runner", "model": "", "usage": { @@ -214,7 +214,7 @@ "execution_mode": "command", "model_executed": false, "command_executed": true, - "duration_ms": 38.95, + "duration_ms": 31.55, "provider": "local-output-eval-runner", "model": "", "usage": { @@ -237,7 +237,7 @@ "execution_mode": "command", "model_executed": false, "command_executed": true, - "duration_ms": 37.28, + "duration_ms": 32.21, "provider": "local-output-eval-runner", "model": "", "usage": { @@ -266,7 +266,7 @@ "execution_mode": "command", "model_executed": false, "command_executed": true, - "duration_ms": 31.54, + "duration_ms": 31.89, "provider": "local-output-eval-runner", "model": "", "usage": { diff --git a/reports/output_execution_runs.md b/reports/output_execution_runs.md index 9270f709..4261e1ea 100644 --- a/reports/output_execution_runs.md +++ b/reports/output_execution_runs.md @@ -23,16 +23,16 @@ Command runner evidence is present. This proves the eval harness executed an ext | Case | Variant | Mode | Model | Duration ms | Tokens | Score | Status | | --- | --- | --- | --- | ---: | ---: | ---: | --- | -| skill-package-contract | baseline | command | local-output-eval-runner | 30.0 | 33 | 0.0 | pass | -| skill-package-contract | with_skill | command | local-output-eval-runner | 32.55 | 73 | 100.0 | pass | -| output-eval-expectation | baseline | command | local-output-eval-runner | 32.87 | 36 | 0.0 | pass | -| output-eval-expectation | with_skill | command | local-output-eval-runner | 32.72 | 80 | 100.0 | pass | -| ir-before-packaging | baseline | command | local-output-eval-runner | 36.87 | 33 | 0.0 | pass | -| ir-before-packaging | with_skill | command | local-output-eval-runner | 39.43 | 80 | 100.0 | pass | -| near-neighbor-boundary | baseline | command | local-output-eval-runner | 38.79 | 36 | 0.0 | pass | -| near-neighbor-boundary | with_skill | command | local-output-eval-runner | 38.95 | 65 | 100.0 | pass | -| file-backed-governed-package | baseline | command | local-output-eval-runner | 37.28 | 37 | 0.0 | pass | -| file-backed-governed-package | with_skill | command | local-output-eval-runner | 31.54 | 98 | 100.0 | pass | +| skill-package-contract | baseline | command | local-output-eval-runner | 28.86 | 33 | 0.0 | pass | +| skill-package-contract | with_skill | command | local-output-eval-runner | 28.72 | 73 | 100.0 | pass | +| output-eval-expectation | baseline | command | local-output-eval-runner | 29.59 | 36 | 0.0 | pass | +| output-eval-expectation | with_skill | command | local-output-eval-runner | 30.19 | 80 | 100.0 | pass | +| ir-before-packaging | baseline | command | local-output-eval-runner | 31.03 | 33 | 0.0 | pass | +| ir-before-packaging | with_skill | command | local-output-eval-runner | 29.71 | 80 | 100.0 | pass | +| near-neighbor-boundary | baseline | command | local-output-eval-runner | 32.23 | 36 | 0.0 | pass | +| near-neighbor-boundary | with_skill | command | local-output-eval-runner | 31.55 | 65 | 100.0 | pass | +| file-backed-governed-package | baseline | command | local-output-eval-runner | 32.21 | 37 | 0.0 | pass | +| file-backed-governed-package | with_skill | command | local-output-eval-runner | 31.89 | 98 | 100.0 | pass | ## Next Fixes diff --git a/reports/package_verification.json b/reports/package_verification.json index 0c400e30..5140cd1c 100644 --- a/reports/package_verification.json +++ b/reports/package_verification.json @@ -5,11 +5,11 @@ "skill_dir": ".", "package_dir": "dist", "summary": { - "target_count": 3, - "adapter_count": 3, + "target_count": 4, + "adapter_count": 4, "archive_present": true, - "archive_sha256": "27fb62524da6ed2ccda448b7725e0154ee0fd3eccd4fe69a88494e67f4050353", - "archive_entry_count": 492, + "archive_sha256": "176d93befb446985aaff7cd8325b05c4858da13177cb13db82d210aa2d264060", + "archive_entry_count": 493, "failure_count": 0, "warning_count": 0 }, @@ -424,6 +424,141 @@ "status": "pass", "detail": "generic adapter includes field: portability_profile" }, + { + "id": "vscode-adapter", + "status": "pass", + "detail": "Adapter exists for target: vscode" + }, + { + "id": "vscode-field-name", + "status": "pass", + "detail": "vscode adapter includes field: name" + }, + { + "id": "vscode-field-description", + "status": "pass", + "detail": "vscode adapter includes field: description" + }, + { + "id": "vscode-field-version", + "status": "pass", + "detail": "vscode adapter includes field: version" + }, + { + "id": "vscode-field-display_name", + "status": "pass", + "detail": "vscode adapter includes field: display_name" + }, + { + "id": "vscode-field-short_description", + "status": "pass", + "detail": "vscode adapter includes field: short_description" + }, + { + "id": "vscode-field-default_prompt", + "status": "pass", + "detail": "vscode adapter includes field: default_prompt" + }, + { + "id": "vscode-field-job_to_be_done", + "status": "pass", + "detail": "vscode adapter includes field: job_to_be_done" + }, + { + "id": "vscode-field-ir_source", + "status": "pass", + "detail": "vscode adapter includes field: ir_source" + }, + { + "id": "vscode-field-ir_schema_version", + "status": "pass", + "detail": "vscode adapter includes field: ir_schema_version" + }, + { + "id": "vscode-field-semantic_contract", + "status": "pass", + "detail": "vscode adapter includes field: semantic_contract" + }, + { + "id": "vscode-field-semantic_parity", + "status": "pass", + "detail": "vscode adapter includes field: semantic_parity" + }, + { + "id": "vscode-field-compiler", + "status": "pass", + "detail": "vscode adapter includes field: compiler" + }, + { + "id": "vscode-field-compiled_contract", + "status": "pass", + "detail": "vscode adapter includes field: compiled_contract" + }, + { + "id": "vscode-field-permission_contract", + "status": "pass", + "detail": "vscode adapter includes field: permission_contract" + }, + { + "id": "vscode-field-target_permission_contract", + "status": "pass", + "detail": "vscode adapter includes field: target_permission_contract" + }, + { + "id": "vscode-field-target_native_contract", + "status": "pass", + "detail": "vscode adapter includes field: target_native_contract" + }, + { + "id": "vscode-field-target_transform", + "status": "pass", + "detail": "vscode adapter includes field: target_transform" + }, + { + "id": "vscode-field-canonical_metadata", + "status": "pass", + "detail": "vscode adapter includes field: canonical_metadata" + }, + { + "id": "vscode-field-canonical_format", + "status": "pass", + "detail": "vscode adapter includes field: canonical_format" + }, + { + "id": "vscode-field-activation_mode", + "status": "pass", + "detail": "vscode adapter includes field: activation_mode" + }, + { + "id": "vscode-field-execution_context", + "status": "pass", + "detail": "vscode adapter includes field: execution_context" + }, + { + "id": "vscode-field-shell", + "status": "pass", + "detail": "vscode adapter includes field: shell" + }, + { + "id": "vscode-field-trust_level", + "status": "pass", + "detail": "vscode adapter includes field: trust_level" + }, + { + "id": "vscode-field-remote_inline_execution", + "status": "pass", + "detail": "vscode adapter includes field: remote_inline_execution" + }, + { + "id": "vscode-field-degradation_strategy", + "status": "pass", + "detail": "vscode adapter includes field: degradation_strategy" + }, + { + "id": "vscode-field-portability_profile", + "status": "pass", + "detail": "vscode adapter includes field: portability_profile" + }, { "id": "openai-file-targets/openai/adapter.json", "status": "pass", @@ -449,6 +584,16 @@ "status": "pass", "detail": "Package contains targets/generic/adapter.json" }, + { + "id": "vscode-file-targets/vscode/adapter.json", + "status": "pass", + "detail": "Package contains targets/vscode/adapter.json" + }, + { + "id": "vscode-file-targets/vscode/README.md", + "status": "pass", + "detail": "Package contains targets/vscode/README.md" + }, { "id": "archive-safe-paths", "status": "pass", @@ -503,6 +648,11 @@ "id": "registry-compat-generic", "status": "pass", "detail": "Registry compatibility is reviewable for target: generic" + }, + { + "id": "registry-compat-vscode", + "status": "pass", + "detail": "Registry compatibility is reviewable for target: vscode" } ], "failures": [], diff --git a/reports/package_verification.md b/reports/package_verification.md index 11877a91..fec4655d 100644 --- a/reports/package_verification.md +++ b/reports/package_verification.md @@ -2,9 +2,9 @@ - OK: `True` - Package directory: `dist` -- Targets: `3 / 3` adapters present +- Targets: `4 / 4` adapters present - Archive present: `True` -- Archive SHA256: `27fb62524da6ed2ccda448b7725e0154ee0fd3eccd4fe69a88494e67f4050353` +- Archive SHA256: `176d93befb446985aaff7cd8325b05c4858da13177cb13db82d210aa2d264060` - Failures: `0` - Warnings: `0` @@ -94,11 +94,40 @@ | `generic-field-remote_inline_execution` | `pass` | generic adapter includes field: remote_inline_execution | | `generic-field-degradation_strategy` | `pass` | generic adapter includes field: degradation_strategy | | `generic-field-portability_profile` | `pass` | generic adapter includes field: portability_profile | +| `vscode-adapter` | `pass` | Adapter exists for target: vscode | +| `vscode-field-name` | `pass` | vscode adapter includes field: name | +| `vscode-field-description` | `pass` | vscode adapter includes field: description | +| `vscode-field-version` | `pass` | vscode adapter includes field: version | +| `vscode-field-display_name` | `pass` | vscode adapter includes field: display_name | +| `vscode-field-short_description` | `pass` | vscode adapter includes field: short_description | +| `vscode-field-default_prompt` | `pass` | vscode adapter includes field: default_prompt | +| `vscode-field-job_to_be_done` | `pass` | vscode adapter includes field: job_to_be_done | +| `vscode-field-ir_source` | `pass` | vscode adapter includes field: ir_source | +| `vscode-field-ir_schema_version` | `pass` | vscode adapter includes field: ir_schema_version | +| `vscode-field-semantic_contract` | `pass` | vscode adapter includes field: semantic_contract | +| `vscode-field-semantic_parity` | `pass` | vscode adapter includes field: semantic_parity | +| `vscode-field-compiler` | `pass` | vscode adapter includes field: compiler | +| `vscode-field-compiled_contract` | `pass` | vscode adapter includes field: compiled_contract | +| `vscode-field-permission_contract` | `pass` | vscode adapter includes field: permission_contract | +| `vscode-field-target_permission_contract` | `pass` | vscode adapter includes field: target_permission_contract | +| `vscode-field-target_native_contract` | `pass` | vscode adapter includes field: target_native_contract | +| `vscode-field-target_transform` | `pass` | vscode adapter includes field: target_transform | +| `vscode-field-canonical_metadata` | `pass` | vscode adapter includes field: canonical_metadata | +| `vscode-field-canonical_format` | `pass` | vscode adapter includes field: canonical_format | +| `vscode-field-activation_mode` | `pass` | vscode adapter includes field: activation_mode | +| `vscode-field-execution_context` | `pass` | vscode adapter includes field: execution_context | +| `vscode-field-shell` | `pass` | vscode adapter includes field: shell | +| `vscode-field-trust_level` | `pass` | vscode adapter includes field: trust_level | +| `vscode-field-remote_inline_execution` | `pass` | vscode adapter includes field: remote_inline_execution | +| `vscode-field-degradation_strategy` | `pass` | vscode adapter includes field: degradation_strategy | +| `vscode-field-portability_profile` | `pass` | vscode adapter includes field: portability_profile | | `openai-file-targets/openai/adapter.json` | `pass` | Package contains targets/openai/adapter.json | | `openai-file-targets/openai/agents/openai.yaml` | `pass` | Package contains targets/openai/agents/openai.yaml | | `claude-file-targets/claude/adapter.json` | `pass` | Package contains targets/claude/adapter.json | | `claude-file-targets/claude/README.md` | `pass` | Package contains targets/claude/README.md | | `generic-file-targets/generic/adapter.json` | `pass` | Package contains targets/generic/adapter.json | +| `vscode-file-targets/vscode/adapter.json` | `pass` | Package contains targets/vscode/adapter.json | +| `vscode-file-targets/vscode/README.md` | `pass` | Package contains targets/vscode/README.md | | `archive-safe-paths` | `pass` | Archive has no absolute or parent-traversal entries | | `archive-entry-yao-meta-skill/SKILL.md` | `pass` | Archive contains yao-meta-skill/SKILL.md | | `archive-entry-yao-meta-skill/manifest.json` | `pass` | Archive contains yao-meta-skill/manifest.json | @@ -110,6 +139,7 @@ | `registry-compat-openai` | `pass` | Registry compatibility is reviewable for target: openai | | `registry-compat-claude` | `pass` | Registry compatibility is reviewable for target: claude | | `registry-compat-generic` | `pass` | Registry compatibility is reviewable for target: generic | +| `registry-compat-vscode` | `pass` | Registry compatibility is reviewable for target: vscode | ## Failures diff --git a/reports/portability_score.json b/reports/portability_score.json index d8b36971..a6c25b6e 100644 --- a/reports/portability_score.json +++ b/reports/portability_score.json @@ -3,14 +3,14 @@ "score": 100, "band": "world-class", "summary": { - "adapter_target_count": 3, + "adapter_target_count": 4, "activation_mode": "manual", "execution_context": "inline", "shell": "bash", "trust_level": "local", "remote_inline_execution": "forbid", - "degradation_coverage": 3, - "snapshot_count": 3, + "degradation_coverage": 4, + "snapshot_count": 4, "ir_source": "skill-ir/examples/yao-meta-skill.json", "ir_schema_version": "2.0.0" }, diff --git a/reports/portability_score.md b/reports/portability_score.md index 067e3b9b..8ed9caba 100644 --- a/reports/portability_score.md +++ b/reports/portability_score.md @@ -2,7 +2,7 @@ - score: `100/100` - band: `world-class` -- adapter targets: `3` +- adapter targets: `4` - activation mode: `manual` - execution context: `inline` - shell: `bash` diff --git a/reports/registry_audit.json b/reports/registry_audit.json index 74edc47c..0d976ec5 100644 --- a/reports/registry_audit.json +++ b/reports/registry_audit.json @@ -12,7 +12,8 @@ "openai", "claude", "generic", - "agent-skills-compatible" + "agent-skills-compatible", + "vscode" ], "maturity": "governed", "owner": "Yao Team", @@ -20,8 +21,8 @@ "trust_level": "local", "license": "MIT", "checksums": { - "package_sha256": "2984db5f8d02b147c86bf259679e247a10a6fa495d123032be46c2e7fdaf8368", - "archive_sha256": "27fb62524da6ed2ccda448b7725e0154ee0fd3eccd4fe69a88494e67f4050353" + "package_sha256": "7a8dab0d542d2994adec2045b54559612db36f14db8b7b66e4138fb0435ae3d3", + "archive_sha256": "176d93befb446985aaff7cd8325b05c4858da13177cb13db82d210aa2d264060" }, "compatibility": { "openai": "pass", @@ -52,7 +53,7 @@ }, "distribution": { "archive_verified": true, - "archive_sha256": "27fb62524da6ed2ccda448b7725e0154ee0fd3eccd4fe69a88494e67f4050353", + "archive_sha256": "176d93befb446985aaff7cd8325b05c4858da13177cb13db82d210aa2d264060", "package_verification": "reports/package_verification.json", "install_simulated": true, "install_simulation": "reports/install_simulation.json" @@ -73,10 +74,11 @@ "openai", "claude", "generic", - "agent-skills-compatible" + "agent-skills-compatible", + "vscode" ], "package_metadata": "registry/packages/yao-meta-skill.json", - "package_sha256": "2984db5f8d02b147c86bf259679e247a10a6fa495d123032be46c2e7fdaf8368" + "package_sha256": "7a8dab0d542d2994adec2045b54559612db36f14db8b7b66e4138fb0435ae3d3" } ] }, diff --git a/reports/registry_audit.md b/reports/registry_audit.md index 96d455e4..ab68f064 100644 --- a/reports/registry_audit.md +++ b/reports/registry_audit.md @@ -6,8 +6,8 @@ - Maturity: `governed` - Owner: `Yao Team` - License: `MIT` -- Package SHA256: `2984db5f8d02b147c86bf259679e247a10a6fa495d123032be46c2e7fdaf8368` -- Archive SHA256: `27fb62524da6ed2ccda448b7725e0154ee0fd3eccd4fe69a88494e67f4050353` +- Package SHA256: `7a8dab0d542d2994adec2045b54559612db36f14db8b7b66e4138fb0435ae3d3` +- Archive SHA256: `176d93befb446985aaff7cd8325b05c4858da13177cb13db82d210aa2d264060` - Install simulated: `True` ## Compatibility diff --git a/reports/review-studio.html b/reports/review-studio.html index 5c1fa63b..a8493c0b 100644 --- a/reports/review-studio.html +++ b/reports/review-studio.html @@ -242,12 +242,12 @@

核心指标

-
Skill IR2.0.0

4 targets in platform-neutral contract

Compiler4/4

target contracts compiled from Skill IR

Output Delta100.0

5 cases; 1 file-backed

Exec Runs10

command 10; model 0; recorded 0

Blind A/B5

review pairs hide baseline vs with-skill labels

Review A/B0/5

adjudication decisions; pending 5

Runtime5/5

target conformance pass rate

Perm Probe3/3

0 native enforcement targets

Trust0

69 scripts scanned; secrets found

Atlas5

12 scanned skills; route collisions

Driftlow

1 metadata events; 0 missed triggers

Waivers0

0 gates covered; human risk decisions

Notes0/0

0 open blocker annotations

Registry1.1.0

4 targets; MIT license

Archivepass

492 zip entries; package verification

Installpass

3 adapters readable; local install simulation

Upgrademinor

declared minor; 0 breaking changes

+
Skill IR2.0.0

5 targets in platform-neutral contract

Compiler5/5

target contracts compiled from Skill IR

Output Delta100.0

5 cases; 1 file-backed

Exec Runs10

command 10; model 0; recorded 0

Blind A/B5

review pairs hide baseline vs with-skill labels

Review A/B0/5

adjudication decisions; pending 5

Runtime5/5

target conformance pass rate

Perm Probe4/4

0 native enforcement targets

Trust0

69 scripts scanned; secrets found

Atlas5

12 scanned skills; route collisions

Driftlow

1 metadata events; 0 missed triggers

Waivers0

0 gates covered; human risk decisions

Notes0/0

0 open blocker annotations

Registry1.1.0

5 targets; MIT license

Archivepass

493 zip entries; package verification

Installpass

4 adapters readable; local install simulation

Upgrademinor

declared minor; 0 breaking changes

审查闸门

-
通过

意图画布

intent confidence 100/100; Intent is clear enough to package the first routeable version.

reports/intent-confidence.json 证据
通过

触发实验

13 trigger cases; 0 misroutes; 0 ambiguous

reports/route_scorecard.json 证据
关注

输出实验

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

reports/output_quality_scorecard.json 证据
通过

上下文

initial load 987/1000; quality density 131.7

reports/context_budget.json 证据
通过

运行矩阵

5 / 5 targets pass

reports/conformance_matrix.json 证据
通过

信任报告

0 secrets; 69 scripts; 3 network-capable scripts; 0 help smoke failures

reports/security_trust_report.json 证据
通过

权限批准

3/3 permissions approved; gaps 0; required file_write, network, subprocess

reports/security_trust_report.json + security/permission_policy.json 证据
通过

权限探针

3/3 targets probed; native 0; metadata fallback 3; residual risks 3

reports/runtime_permission_probes.json 证据
通过

组合治理

12 skills, 1 actionable; 0 actionable route collisions; 0 actionable owner gaps; 0 actionable stale; 24 scoped non-actionable issues

reports/skill_atlas.json 证据
通过

运营回路

1 metadata events; adoption 100.0; missed 0; bad-output 0; risk low

reports/adoption_drift_report.json 证据
关注

人工批准

0 active waivers; 1 warning gates still need reviewer decision

reports/review_waivers.json 证据
通过

注册审计

yao-meta-skill 1.1.0; 6/6 compatibility entries pass; install pass with 3 adapters

reports/registry_audit.json + reports/install_simulation.json 证据
通过

发布路线

0 promote; 3 keep current; 0 blocked; upgrade minor declared / minor recommended

reports/promotion_decisions.json + reports/upgrade_check.json + docs/migration-v2.md 证据
+
通过

意图画布

intent confidence 100/100; Intent is clear enough to package the first routeable version.

reports/intent-confidence.json 证据
通过

触发实验

13 trigger cases; 0 misroutes; 0 ambiguous

reports/route_scorecard.json 证据
关注

输出实验

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

reports/output_quality_scorecard.json 证据
通过

上下文

initial load 944/1000; quality density 137.7

reports/context_budget.json 证据
通过

运行矩阵

5 / 5 targets pass

reports/conformance_matrix.json 证据
通过

信任报告

0 secrets; 69 scripts; 3 network-capable scripts; 0 help smoke failures

reports/security_trust_report.json 证据
通过

权限批准

3/3 permissions approved; gaps 0; required file_write, network, subprocess

reports/security_trust_report.json + security/permission_policy.json 证据
通过

权限探针

4/4 targets probed; native 0; metadata fallback 4; residual risks 4

reports/runtime_permission_probes.json 证据
通过

组合治理

12 skills, 1 actionable; 0 actionable route collisions; 0 actionable owner gaps; 0 actionable stale; 24 scoped non-actionable issues

reports/skill_atlas.json 证据
通过

运营回路

1 metadata events; adoption 100.0; missed 0; bad-output 0; risk low

reports/adoption_drift_report.json 证据
关注

人工批准

0 active waivers; 1 warning gates still need reviewer decision

reports/review_waivers.json 证据
通过

注册审计

yao-meta-skill 1.1.0; 6/6 compatibility entries pass; install pass with 4 adapters

reports/registry_audit.json + reports/install_simulation.json 证据
通过

发布路线

0 promote; 3 keep current; 0 blocked; upgrade minor declared / minor recommended

reports/promotion_decisions.json + reports/upgrade_check.json + docs/migration-v2.md 证据
@@ -304,16 +304,16 @@

运行矩阵

目标数
5
通过数
5
Fail Count
0
-

目标编译

目标数
4
通过数
4
Warn Count
0
Block Count
0
失败数
0
+

目标编译

目标数
5
通过数
5
Warn Count
0
Block Count
0
失败数
0
-

上下文

initial load 987/1000; quality density 131.7

+

上下文

initial load 944/1000; quality density 137.7

编译证据

Review reports/compiled_targets.md before packaging to inspect target adapter modes, generated files, preserved semantics, warnings, and unsupported features.

-

信任报告

Secret
0
脚本数
69
网络脚本
3
Help 失败
0
包体哈希
2984db5f8d02b147c86bf259679e247a10a6fa495d123032be46c2e7fdaf8368
+

信任报告

Secret
0
脚本数
69
网络脚本
3
Help 失败
0
包体哈希
2109ae8e212111b1619d8d728e54c73425fecc174113b45629c656ecceb3fadd

安全边界

高风险 secret、远程 inline execution、缺失依赖策略或无法解释的脚本接口应阻断 governed release。

@@ -323,8 +323,8 @@
-

权限探针

3/3 targets probed; native 0; metadata fallback 3; residual risks 3

-

运行边界

目标数
3
通过数
3
原生执行
0
Metadata fallback
3
残余风险
3
失败数
0
+

权限探针

4/4 targets probed; native 0; metadata fallback 4; residual risks 4

+

运行边界

目标数
4
通过数
4
原生执行
0
Metadata fallback
4
残余风险
4
失败数
0
@@ -343,13 +343,13 @@
-

注册审计

yao-meta-skill 1.1.0; 6/6 compatibility entries pass; install pass with 3 adapters

-

包体元数据

名称
yao-meta-skill
版本
1.1.0
Maturity
governed
Owner
Yao Team
License
MIT
信任级别
local
目标平台
openai, claude, generic, agent-skills-compatible
兼容通过
6/6
归档哈希
27fb62524da6ed2ccda448b7725e0154ee0fd3eccd4fe69a88494e67f4050353
+

注册审计

yao-meta-skill 1.1.0; 6/6 compatibility entries pass; install pass with 4 adapters

+

包体元数据

名称
yao-meta-skill
版本
1.1.0
Maturity
governed
Owner
Yao Team
License
MIT
信任级别
local
目标平台
openai, claude, generic, agent-skills-compatible, vscode
兼容通过
6/6
归档哈希
176d93befb446985aaff7cd8325b05c4858da13177cb13db82d210aa2d264060

发布路线

0 promote; 3 keep current; 0 blocked; upgrade minor declared / minor recommended

-

包体验证

目标数
3
Adapter
3
归档存在
Zip 条目
492
失败数
0
警告数
0
归档哈希
27fb62524da6ed2ccda448b7725e0154ee0fd3eccd4fe69a88494e67f4050353
+

包体验证

目标数
4
Adapter
4
归档存在
Zip 条目
493
失败数
0
警告数
0
归档哈希
176d93befb446985aaff7cd8325b05c4858da13177cb13db82d210aa2d264060
diff --git a/reports/review-studio.json b/reports/review-studio.json index a4ec033b..9609b621 100644 --- a/reports/review-studio.json +++ b/reports/review-studio.json @@ -43,7 +43,7 @@ "key": "context-budget", "label": "上下文", "status": "pass", - "detail": "initial load 987/1000; quality density 131.7", + "detail": "initial load 944/1000; quality density 137.7", "evidence": "reports/context_budget.json", "link": "context_budget.md" }, @@ -75,7 +75,7 @@ "key": "permission-runtime", "label": "权限探针", "status": "pass", - "detail": "3/3 targets probed; native 0; metadata fallback 3; residual risks 3", + "detail": "4/4 targets probed; native 0; metadata fallback 4; residual risks 4", "evidence": "reports/runtime_permission_probes.json", "link": "runtime_permission_probes.md" }, @@ -107,7 +107,7 @@ "key": "registry-audit", "label": "注册审计", "status": "pass", - "detail": "yao-meta-skill 1.1.0; 6/6 compatibility entries pass; install pass with 3 adapters", + "detail": "yao-meta-skill 1.1.0; 6/6 compatibility entries pass; install pass with 4 adapters", "evidence": "reports/registry_audit.json + reports/install_simulation.json", "link": "registry_audit.md" }, @@ -334,7 +334,7 @@ "label": "可维护性", "score": 100, "reasons": [ - "SKILL.md 约 365 个词/字。", + "SKILL.md 约 350 个词/字。", "入口文件保持克制,可维护性较好。", "references/ 已承载扩展指导。", "scripts/ 已承载确定性逻辑。", @@ -355,7 +355,7 @@ "label": "上下文成本", "score": 42, "reasons": [ - "入口约 365 个词/字,references 约 14388 个词/字。", + "入口约 350 个词/字,references 约 14450 个词/字。", "分数越高代表上下文成本越低。", "上下文成本偏高,建议压缩入口或拆分 references。" ] @@ -459,7 +459,7 @@ "已生成 Output Review Adjudication,可记录盲评决策、一致率和待评审项。" ], "gaps": [ - "上下文成本需要补强:入口约 365 个词/字,references 约 14388 个词/字。" + "上下文成本需要补强:入口约 350 个词/字,references 约 14450 个词/字。" ], "recommendations": [ "先改触发边界,再扩展工作流。", @@ -524,7 +524,7 @@ "name": "包体膨胀风险", "impact": 2, "probability": 1, - "signal": "SKILL.md 约 365 个词/字。", + "signal": "SKILL.md 约 350 个词/字。", "response": "先补证据和边界,再增加包体复杂度。" }, { @@ -975,7 +975,7 @@ "benchmark_highlights": [], "skill_ir": { "schema_version": "2.0.0", - "target_count": 4, + "target_count": 5, "trigger_samples": 8, "output_eval_cases": 3 }, @@ -983,8 +983,8 @@ "ok": true, "schema_version": "1.0", "summary": { - "target_count": 4, - "pass_count": 4, + "target_count": 5, + "pass_count": 5, "warn_count": 0, "block_count": 0, "failure_count": 0, @@ -1049,6 +1049,22 @@ ], "unsupported_features": [], "warnings": [] + }, + { + "target": "vscode", + "status": "pass", + "adapter_mode": "vscode-agent-skills-adapter", + "degradation_strategy": "agent-skills-source-with-vscode-notes", + "native_surface": "VS Code/Copilot Agent Skills project or user scope", + "permission_enforcement": "client-or-workspace-trust", + "generated_files": [ + "targets/vscode/adapter.json", + "targets/vscode/README.md" + ], + "unsupported_features": [ + "VS Code installation scope is documented but not installed by this compiler" + ], + "warnings": [] } ], "failures": [], @@ -1130,12 +1146,12 @@ "runtime_permissions": { "ok": true, "summary": { - "target_count": 3, - "pass_count": 3, + "target_count": 4, + "pass_count": 4, "fail_count": 0, "native_enforcement_count": 0, - "metadata_fallback_count": 3, - "residual_risk_count": 3, + "metadata_fallback_count": 4, + "residual_risk_count": 4, "required_capability_count": 3, "failure_count": 0 }, @@ -1174,6 +1190,16 @@ "residual_risks": [ "Client-native permission enforcement is not provided by this target; installer or operator must honor metadata." ] + }, + { + "target": "vscode", + "status": "pass", + "assurance": "metadata-fallback-explicit", + "native_enforcement": false, + "metadata_fallback_explicit": true, + "residual_risks": [ + "Client-native permission enforcement is not provided by this target; installer or operator must honor metadata." + ] } ], "failures": [] @@ -1200,7 +1226,7 @@ "interactive_script_count": 0, "package_hash_scope": "source-contract-without-generated-reports", "package_hash_file_count": 153, - "package_sha256": "2984db5f8d02b147c86bf259679e247a10a6fa495d123032be46c2e7fdaf8368" + "package_sha256": "2109ae8e212111b1619d8d728e54c73425fecc174113b45629c656ecceb3fadd" }, "skill_atlas": { "skill_count": 12, @@ -1226,7 +1252,8 @@ "openai", "claude", "generic", - "agent-skills-compatible" + "agent-skills-compatible", + "vscode" ], "maturity": "governed", "owner": "Yao Team", @@ -1234,8 +1261,8 @@ "trust_level": "local", "license": "MIT", "checksums": { - "package_sha256": "2984db5f8d02b147c86bf259679e247a10a6fa495d123032be46c2e7fdaf8368", - "archive_sha256": "27fb62524da6ed2ccda448b7725e0154ee0fd3eccd4fe69a88494e67f4050353" + "package_sha256": "2109ae8e212111b1619d8d728e54c73425fecc174113b45629c656ecceb3fadd", + "archive_sha256": "176d93befb446985aaff7cd8325b05c4858da13177cb13db82d210aa2d264060" }, "compatibility": { "openai": "pass", @@ -1266,7 +1293,7 @@ }, "distribution": { "archive_verified": true, - "archive_sha256": "27fb62524da6ed2ccda448b7725e0154ee0fd3eccd4fe69a88494e67f4050353", + "archive_sha256": "176d93befb446985aaff7cd8325b05c4858da13177cb13db82d210aa2d264060", "package_verification": "reports/package_verification.json", "install_simulated": true, "install_simulation": "reports/install_simulation.json" @@ -1279,11 +1306,11 @@ "package_verification": { "ok": true, "summary": { - "target_count": 3, - "adapter_count": 3, + "target_count": 4, + "adapter_count": 4, "archive_present": true, - "archive_sha256": "27fb62524da6ed2ccda448b7725e0154ee0fd3eccd4fe69a88494e67f4050353", - "archive_entry_count": 492, + "archive_sha256": "176d93befb446985aaff7cd8325b05c4858da13177cb13db82d210aa2d264060", + "archive_entry_count": 493, "failure_count": 0, "warning_count": 0 }, @@ -1294,12 +1321,12 @@ "ok": true, "summary": { "archive_present": true, - "archive_entry_count": 492, + "archive_entry_count": 493, "archive_extracted": true, "entrypoint_loaded": true, "manifest_loaded": true, "interface_loaded": true, - "adapter_count": 3, + "adapter_count": 4, "install_root_is_temp": false, "failure_count": 0, "warning_count": 0 @@ -1313,7 +1340,7 @@ "declared_bump": "minor", "recommended_bump": "minor", "breaking_change_count": 0, - "added_target_count": 1, + "added_target_count": 2, "metadata_change_count": 1, "checksum_change_count": 2, "failure_count": 0, @@ -1322,7 +1349,8 @@ "upgrade_diff": { "name_changed": false, "added_targets": [ - "agent-skills-compatible" + "agent-skills-compatible", + "vscode" ], "removed_targets": [], "compatibility_changes": [ @@ -1356,18 +1384,18 @@ { "field": "archive_sha256", "from": "", - "to": "27fb62524da6ed2ccda448b7725e0154ee0fd3eccd4fe69a88494e67f4050353" + "to": "176d93befb446985aaff7cd8325b05c4858da13177cb13db82d210aa2d264060" }, { "field": "package_sha256", "from": "0000000000000000000000000000000000000000000000000000000000000000", - "to": "2984db5f8d02b147c86bf259679e247a10a6fa495d123032be46c2e7fdaf8368" + "to": "2109ae8e212111b1619d8d728e54c73425fecc174113b45629c656ecceb3fadd" } ] }, "release_notes": [ "Recommended version bump: minor.", - "Added targets: agent-skills-compatible.", + "Added targets: agent-skills-compatible, vscode.", "Package or archive checksum changed; reviewers should verify package artifacts before release.", "Package verification evidence: reports/package_verification.md." ], @@ -1509,7 +1537,8 @@ "targets": [ "openai", "claude", - "generic" + "generic", + "vscode" ], "maturity_tier": "governed", "skill_archetype": "governed", @@ -3090,7 +3119,7 @@ "execution_mode": "command", "model_executed": false, "command_executed": true, - "duration_ms": 31.56, + "duration_ms": 29.87, "provider": "local-output-eval-runner", "model": "", "usage": { @@ -3118,7 +3147,7 @@ "execution_mode": "command", "model_executed": false, "command_executed": true, - "duration_ms": 32.02, + "duration_ms": 30.27, "provider": "local-output-eval-runner", "model": "", "usage": { @@ -3141,7 +3170,7 @@ "execution_mode": "command", "model_executed": false, "command_executed": true, - "duration_ms": 30.58, + "duration_ms": 40.04, "provider": "local-output-eval-runner", "model": "", "usage": { @@ -3169,7 +3198,7 @@ "execution_mode": "command", "model_executed": false, "command_executed": true, - "duration_ms": 29.13, + "duration_ms": 41.0, "provider": "local-output-eval-runner", "model": "", "usage": { @@ -3192,7 +3221,7 @@ "execution_mode": "command", "model_executed": false, "command_executed": true, - "duration_ms": 29.88, + "duration_ms": 37.68, "provider": "local-output-eval-runner", "model": "", "usage": { @@ -3220,7 +3249,7 @@ "execution_mode": "command", "model_executed": false, "command_executed": true, - "duration_ms": 30.36, + "duration_ms": 37.33, "provider": "local-output-eval-runner", "model": "", "usage": { @@ -3243,7 +3272,7 @@ "execution_mode": "command", "model_executed": false, "command_executed": true, - "duration_ms": 29.45, + "duration_ms": 30.73, "provider": "local-output-eval-runner", "model": "", "usage": { @@ -3270,7 +3299,7 @@ "execution_mode": "command", "model_executed": false, "command_executed": true, - "duration_ms": 29.33, + "duration_ms": 30.69, "provider": "local-output-eval-runner", "model": "", "usage": { @@ -3293,7 +3322,7 @@ "execution_mode": "command", "model_executed": false, "command_executed": true, - "duration_ms": 29.06, + "duration_ms": 30.1, "provider": "local-output-eval-runner", "model": "", "usage": { @@ -3322,7 +3351,7 @@ "execution_mode": "command", "model_executed": false, "command_executed": true, - "duration_ms": 29.61, + "duration_ms": 30.27, "provider": "local-output-eval-runner", "model": "", "usage": { @@ -3628,8 +3657,8 @@ "generated_at": "2026-06-13", "skill_dir": ".", "summary": { - "target_count": 4, - "pass_count": 4, + "target_count": 5, + "pass_count": 5, "warn_count": 0, "block_count": 0, "failure_count": 0, @@ -3654,7 +3683,8 @@ "openai", "claude", "generic", - "agent-skills-compatible" + "agent-skills-compatible", + "vscode" ] }, "compiled_contract": { @@ -3965,7 +3995,8 @@ "adapter_targets": [ "openai", "claude", - "generic" + "generic", + "vscode" ], "canonical_format": "agent-skills" }, @@ -4450,7 +4481,8 @@ "openai", "claude", "generic", - "agent-skills-compatible" + "agent-skills-compatible", + "vscode" ] }, "compiled_contract": { @@ -4761,7 +4793,8 @@ "adapter_targets": [ "openai", "claude", - "generic" + "generic", + "vscode" ], "canonical_format": "agent-skills" }, @@ -5246,7 +5279,8 @@ "openai", "claude", "generic", - "agent-skills-compatible" + "agent-skills-compatible", + "vscode" ] }, "compiled_contract": { @@ -5557,7 +5591,8 @@ "adapter_targets": [ "openai", "claude", - "generic" + "generic", + "vscode" ], "canonical_format": "agent-skills" }, @@ -6026,7 +6061,8 @@ "openai", "claude", "generic", - "agent-skills-compatible" + "agent-skills-compatible", + "vscode" ] }, "compiled_contract": { @@ -6337,7 +6373,8 @@ "adapter_targets": [ "openai", "claude", - "generic" + "generic", + "vscode" ], "canonical_format": "agent-skills" }, @@ -6787,6 +6824,798 @@ "unsupported_features": [], "warnings": [], "failures": [] + }, + { + "schema_version": "1.0", + "target": "vscode", + "status": "pass", + "compiler": { + "name": "yao-skill-ir-compiler", + "schema_version": "1.0", + "source": "skill-ir", + "ir_source": "skill-ir/examples/yao-meta-skill.json", + "ir_schema_version": "2.0.0" + }, + "source": { + "skill_dir": ".", + "canonical_metadata": "agents/interface.yaml", + "declared_targets": [ + "openai", + "claude", + "generic", + "agent-skills-compatible", + "vscode" + ] + }, + "compiled_contract": { + "name": "yao-meta-skill", + "title": "Yao Meta Skill", + "version": "1.1.0", + "description": "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.", + "job_to_be_done": "Turn repeated workflows, prompts, transcripts, runbooks, documents, or existing skill packages into routeable, evaluable, packageable, and governable agent skills for personal, team, library, or governed reuse.", + "trigger": { + "description": "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.", + "should_trigger": [ + "Create a skill from this repeated workflow.", + "Turn this runbook into a reusable agent skill.", + "Convert this process note into a reusable skill package for the team.", + "Improve this skill description and add evals.", + "Refactor this prompt into a proper skill package.", + "Package this skill for team reuse.", + "Create a meta-skill for packaging internal workflows.", + "Standardize this recurring workflow as a shareable skill package with references." + ], + "should_not_trigger": [ + "Explain what a workflow is.", + "Just explain what a skill is.", + "Summarize this random note.", + "Translate this README into Japanese.", + "Write a product headline for this landing page.", + "Draft a blog title for this article.", + "Rewrite this paragraph more clearly, but do not package anything.", + "Explain the difference between a runbook and a workflow.", + "one-off writing, translation, explanation, or brainstorming requests that do not need a reusable skill", + "general code review or debugging unless the user is packaging that workflow as a skill" + ], + "edge_cases": [ + "Create a one-off prompt for this task.", + "Write a custom answer for this request without creating a skill package.", + "Help me brainstorm process ideas without building a skill.", + "Improve this README but do not turn it into a skill.", + "Make a checklist for this task, but not a reusable skill.", + "Create a reusable-looking checklist, but keep it as a plain note instead of a skill.", + "Review this process note and explain it, no packaging needed.", + "Turn this into a checklist and template, but stop short of making a full skill." + ] + }, + "workflow": { + "steps": [ + "Decide whether the request should become a skill and choose the lightest fit.", + "Capture job, output, exclusions, constraints, and standards.", + "Run reference scan: external benchmarks first, user references second, local fit third; surface only uncertainty or conflict.", + "Write the `description` early and test route quality before expanding the package.", + "Add output-risk, artifact-design, prompt-quality, and system-model reports only when they matter.", + "Add only folders and gates that earn their keep.", + "Surface the top three next iteration directions." + ], + "decision_points": [ + "Route by frontmatter `description`.", + "Keep `SKILL.md` lean; put guidance in `references/`, logic in `scripts/`, and evidence in `reports/`.", + "Use the lightest reliable process.", + "`Scaffold`: exploratory or personal.", + "`Production`: team reuse.", + "`Library`: shared infrastructure.", + "Ask one focused clarification when the real job, output, or exclusion boundary is unclear.", + "Escalate visible tradeoffs when benchmark patterns conflict with local privacy, naming, or governance constraints.", + "Do not silently broaden the skill into adjacent jobs just because the examples are nearby." + ], + "failure_modes": [ + "Tables can render as dense grids with weak hierarchy or poor mobile readability.", + "Long bullets can make the output look complete while hiding the actual decision logic.", + "Footnote markers or dense citation notes can interrupt the reading flow.", + "Evidence can be over-attached to obvious statements and under-attached to risky claims.", + "Screenshots can be captured from the wrong state, wrong viewport, or wrong crop.", + "Missing screenshots can cause the skill to invent visual references instead of declaring the gap.", + "Users start invoking the skill for adjacent one-off or explanation-only requests.", + "Outputs remain valid but become generic, cluttered, or weakly aligned with the user's domain.", + "Borrowed benchmark patterns no longer fit the local job or add ceremony without payoff.", + "Skill usage becomes team-critical while ownership, review cadence, or rollback evidence stays informal." + ] + }, + "resources": { + "references": [ + "references/artifact-design-doctrine.md", + "references/authoring-discipline.md", + "references/distribution-registry-method.md", + "references/eval-playbook.md", + "references/gate-selection.md", + "references/governance.md", + "references/human-review-template.md", + "references/intent-dialogue.md", + "references/iteration-philosophy.md", + "references/non-skill-decision-tree.md", + "references/operating-modes.md", + "references/output-eval-method.md", + "references/output-quality-risk.md", + "references/output-visual-quality.md", + "references/packaging-contracts.md", + "references/pattern-extraction-doctrine.md", + "references/platform-capability-matrix.md", + "references/prompt-engineering-doctrine.md", + "references/qa-ladder.md", + "references/reference-scan.md", + "references/regression-cause-taxonomy.md", + "references/resource-boundaries.md", + "references/review-studio-method.md", + "references/review-waiver-method.md", + "references/runtime-conformance-method.md", + "references/skill-archetypes.md", + "references/skill-atlas-method.md", + "references/skill-engineering-method.md", + "references/skill-ir-method.md", + "references/systems-thinking-doctrine.md", + "references/telemetry-drift-method.md", + "references/trust-security-method.md" + ], + "scripts": [ + "scripts/adjudicate_output_review.py", + "scripts/build_confusion_matrix.py", + "scripts/build_skill_atlas.py", + "scripts/check_update.py", + "scripts/ci_test.py", + "scripts/collect_feedback.py", + "scripts/compile_skill.py", + "scripts/context_sizer.py", + "scripts/create_iteration_snapshot.py", + "scripts/cross_packager.py", + "scripts/diff_eval.py", + "scripts/export_skill_ir.py", + "scripts/github_benchmark_scan.py", + "scripts/governance_check.py", + "scripts/init_skill.py", + "scripts/judge_blind_eval.py", + "scripts/lint_skill.py", + "scripts/local_output_eval_runner.py", + "scripts/optimize_description.py", + "scripts/probe_runtime_permissions.py", + "scripts/promotion_checker.py", + "scripts/provider_output_eval_runner.py", + "scripts/registry_audit.py", + "scripts/render_adoption_drift_report.py", + "scripts/render_artifact_design_profile.py", + "scripts/render_baseline_compare.py", + "scripts/render_context_reports.py", + "scripts/render_description_drift_history.py", + "scripts/render_eval_dashboard.py", + "scripts/render_intent_confidence.py", + "scripts/render_intent_dialogue.py", + "scripts/render_iteration_directions.py", + "scripts/render_iteration_ledger.py", + "scripts/render_output_risk_profile.py", + "scripts/render_portability_report.py", + "scripts/render_prompt_quality_profile.py", + "scripts/render_reference_scan.py", + "scripts/render_reference_synthesis.py", + "scripts/render_regression_history.py", + "scripts/render_review_annotations.py", + "scripts/render_review_studio.py", + "scripts/render_review_viewer.py", + "scripts/render_review_waivers.py", + "scripts/render_skill_overview.py", + "scripts/render_social_preview.py", + "scripts/render_system_model.py", + "scripts/resource_boundary_check.py", + "scripts/review_studio_formatting.py", + "scripts/review_studio_gates.py", + "scripts/review_studio_layout.py", + "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/simulate_install.py", + "scripts/skill_report_charts.py", + "scripts/skill_report_layout.py", + "scripts/skill_report_metrics.py", + "scripts/skill_report_model.py", + "scripts/sync_local_install.py", + "scripts/trigger_eval.py", + "scripts/trust_check.py", + "scripts/upgrade_check.py", + "scripts/validate_skill.py", + "scripts/verify_package.py", + "scripts/yao.py", + "scripts/yao_cli_config.py", + "scripts/yao_cli_parser.py" + ], + "assets": [ + "templates/basic_skill.md.j2", + "templates/complex_skill.md.j2" + ], + "reports": [ + "reports/benchmark_methodology.md", + "reports/intent-context.json", + "reports/intent-confidence.json", + "reports/intent-confidence.md", + "reports/reference-synthesis.json", + "reports/reference-synthesis.md", + "reports/output-risk-profile.json", + "reports/output-risk-profile.md", + "reports/artifact-design-profile.json", + "reports/artifact-design-profile.md", + "reports/prompt-quality-profile.json", + "reports/prompt-quality-profile.md", + "reports/system-model.json", + "reports/system-model.md", + "reports/iteration-directions.json", + "reports/iteration-directions.md", + "reports/skill-overview.json", + "reports/skill-overview.html", + "reports/output_quality_scorecard.json", + "reports/output_quality_scorecard.md", + "reports/output_execution_runs.json", + "reports/output_execution_runs.md", + "reports/output_blind_review_pack.json", + "reports/output_blind_review_pack.md", + "reports/output_blind_answer_key.json", + "reports/output_review_adjudication.json", + "reports/output_review_adjudication.md", + "reports/review_annotations.json", + "reports/review_annotations.md", + "reports/conformance_matrix.json", + "reports/conformance_matrix.md", + "reports/security_trust_report.json", + "reports/security_trust_report.md", + "reports/runtime_permission_probes.json", + "reports/runtime_permission_probes.md", + "reports/skill_atlas.json", + "reports/skill_atlas.html", + "reports/skill-os-2-review.md", + "reports/portability_score.json", + "reports/portability_score.md", + "reports/governance_score.json" + ], + "counts": { + "references": 32, + "scripts": 69, + "assets": 2, + "reports": 41 + } + }, + "eval_plan": { + "trigger": [ + "evals/README.md", + "evals/adversarial/trigger_cases.json", + "evals/blind_holdout/trigger_cases.json", + "evals/confusion/route_cases.json", + "evals/dev/trigger_cases.json", + "evals/failure-cases.md", + "evals/history/2026-03-31-context-first-pack.json", + "evals/history/2026-03-31-family-suite-expansion.json", + "evals/history/2026-03-31-governance-quality-gates.json", + "evals/history/2026-03-31-governed-assets-and-history.json", + "evals/history/2026-04-01-route-scorecard-foundation.json", + "evals/history/README.md", + "evals/history/description_optimization/2026-03-31-description-optimization-suite.json", + "evals/history/description_optimization/2026-04-01-adversarial-calibration-and-family-drift.json", + "evals/history/description_optimization/2026-04-01-blind-holdout-and-drift-history.json", + "evals/history/description_optimization/2026-04-01-judge-backed-blind-eval.json", + "evals/history/description_optimization/README.md", + "evals/holdout/trigger_cases.json", + "evals/output/cases.jsonl", + "evals/output/fixtures/release-brief-source.md", + "evals/output/schema.json", + "evals/packaging_expectations.json", + "evals/promotion_policy.md", + "evals/semantic_config.json", + "evals/train/trigger_cases.json", + "evals/trigger_cases.json" + ], + "output": [ + "evals/output/cases.jsonl", + "evals/output/fixtures/release-brief-source.md", + "evals/output/schema.json" + ], + "adversarial": [ + "evals/adversarial/trigger_cases.json" + ], + "baseline": "without_skill", + "counts": { + "trigger": 26, + "output": 3, + "adversarial": 1, + "baseline": 1 + } + }, + "risk": { + "output_risk": "high", + "execution_risk": "medium", + "trust_boundary": "external" + }, + "governance": { + "owner": "Yao Team", + "maturity": "governed", + "review_cadence": "quarterly", + "review_due": "" + }, + "runtime": { + "activation": { + "mode": "manual", + "paths": [] + }, + "execution": { + "context": "inline", + "shell": "bash" + }, + "trust": { + "source_tier": "local", + "remote_inline_execution": "forbid", + "remote_metadata_policy": "allow-metadata-only" + }, + "adapter_targets": [ + "openai", + "claude", + "generic", + "vscode" + ], + "canonical_format": "agent-skills" + }, + "permissions": { + "schema_version": "1.0", + "source": "reports/security_trust_report.json", + "source_available": true, + "declared_capabilities": [ + "network", + "file_write", + "subprocess" + ], + "review_required": true, + "capabilities": { + "network": { + "required": true, + "script_count": 3, + "scripts": [ + "scripts/check_update.py", + "scripts/github_benchmark_scan.py", + "scripts/provider_output_eval_runner.py" + ], + "review_reason": "Outbound hosts must match security/network_policy.json." + }, + "file_write": { + "required": true, + "script_count": 47, + "scripts": [ + "scripts/adjudicate_output_review.py", + "scripts/build_confusion_matrix.py", + "scripts/build_skill_atlas.py", + "scripts/check_update.py", + "scripts/ci_test.py", + "scripts/collect_feedback.py", + "scripts/compile_skill.py", + "scripts/create_iteration_snapshot.py", + "scripts/cross_packager.py", + "scripts/export_skill_ir.py", + "scripts/github_benchmark_scan.py", + "scripts/init_skill.py", + "scripts/probe_runtime_permissions.py", + "scripts/promotion_checker.py", + "scripts/registry_audit.py", + "scripts/render_adoption_drift_report.py", + "scripts/render_artifact_design_profile.py", + "scripts/render_baseline_compare.py", + "scripts/render_context_reports.py", + "scripts/render_description_drift_history.py", + "scripts/render_eval_dashboard.py", + "scripts/render_intent_confidence.py", + "scripts/render_intent_dialogue.py", + "scripts/render_iteration_directions.py", + "scripts/render_iteration_ledger.py", + "scripts/render_output_risk_profile.py", + "scripts/render_portability_report.py", + "scripts/render_prompt_quality_profile.py", + "scripts/render_reference_scan.py", + "scripts/render_reference_synthesis.py", + "scripts/render_regression_history.py", + "scripts/render_review_annotations.py", + "scripts/render_review_studio.py", + "scripts/render_review_viewer.py", + "scripts/render_review_waivers.py", + "scripts/render_skill_overview.py", + "scripts/render_social_preview.py", + "scripts/render_system_model.py", + "scripts/run_conformance_suite.py", + "scripts/run_description_optimization_suite.py", + "scripts/run_output_eval.py", + "scripts/run_output_execution.py", + "scripts/simulate_install.py", + "scripts/sync_local_install.py", + "scripts/trust_check.py", + "scripts/upgrade_check.py", + "scripts/verify_package.py" + ], + "review_reason": "Scripts write local files or generated artifacts." + }, + "subprocess": { + "required": true, + "script_count": 7, + "scripts": [ + "scripts/ci_test.py", + "scripts/render_eval_dashboard.py", + "scripts/run_eval_suite.py", + "scripts/run_output_execution.py", + "scripts/sync_local_install.py", + "scripts/trust_check.py", + "scripts/yao.py" + ], + "review_reason": "Scripts spawn local commands and need operator review." + }, + "interactive": { + "required": false, + "script_count": 0, + "scripts": [], + "review_reason": "" + } + }, + "network_policy": { + "source": "security/network_policy.json", + "covered_scripts": [ + "scripts/check_update.py", + "scripts/github_benchmark_scan.py", + "scripts/provider_output_eval_runner.py" + ], + "missing_scripts": [], + "mismatches": [] + }, + "help_smoke": { + "enabled": true, + "checked_count": 60, + "failed_count": 0, + "failed_scripts": [] + }, + "trust_summary": { + "secret_findings": 0, + "network_script_count": 3, + "file_write_script_count": 47, + "subprocess_script_count": 7, + "interactive_script_count": 0, + "help_smoke_failed_count": 0 + } + }, + "source_files_count": 6, + "target": "vscode", + "target_permission_contract": { + "schema_version": "1.0", + "target": "vscode", + "permission_model": "vscode-workspace-trust-plus-metadata", + "native_enforcement": false, + "representation": "targets/vscode/adapter.json::target_permission_contract and targets/vscode/README.md install notes", + "review_required": true, + "declared_capabilities": [ + "network", + "file_write", + "subprocess" + ], + "capability_counts": { + "network": 3, + "file_write": 47, + "subprocess": 7, + "interactive": 0 + }, + "evidence": "reports/security_trust_report.json", + "operator_note": "VS Code target relies on project or user skill installation plus VS Code workspace trust; Yao preserves permission metadata for reviewer and installer checks." + }, + "target_native_contract": { + "schema_version": "1.0", + "target": "vscode", + "native_surface": "VS Code/Copilot Agent Skills project or user scope", + "activation": { + "policy": "Use folder name plus SKILL.md name/description; keep description under platform limits.", + "trigger_description": "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.", + "manual_activation_supported": true, + "automatic_activation_note": "Depends on the target client route/catalog implementation." + }, + "resources": { + "strategy": "Install as project or user scoped skill source, preserving relative references and scripts.", + "counts": { + "references": 32, + "scripts": 69, + "assets": 2, + "reports": 41 + }, + "generated_files": [ + "targets/vscode/adapter.json", + "targets/vscode/README.md" + ] + }, + "scripts": { + "strategy": "Scripts require workspace trust and operator/client approval outside this compiler.", + "script_count": 69, + "help_smoke_failed_count": 0 + }, + "permissions": { + "enforcement": "client-or-workspace-trust", + "native_enforcement": false, + "declared_capabilities": [ + "network", + "file_write", + "subprocess" + ], + "review_required": true + }, + "review": { + "artifacts": [ + "SKILL.md", + "agents/interface.yaml", + "reports/review-studio.html" + ], + "fallback_behavior": "If VS Code scope is not installed, use the neutral Agent Skills source.", + "unsupported_native_features": [ + "automatic VS Code installation", + "VS Code installation scope is documented but not installed by this compiler" + ] + }, + "install_scope": "VS Code user or project skills directory" + }, + "degradation_strategy": "agent-skills-source-with-vscode-notes", + "target_runtime": { + "adapter_mode": "vscode-agent-skills-adapter", + "generated_files": [ + "targets/vscode/adapter.json", + "targets/vscode/README.md" + ], + "metadata_mapping": { + "name": "folder-name-and-SKILL.md::frontmatter.name", + "description": "SKILL.md::frontmatter.description", + "interface": "agents/interface.yaml", + "permissions": "targets/vscode/adapter.json::target_permission_contract", + "install_scope": "targets/vscode/README.md" + }, + "preserved_semantics": [ + "trigger", + "workflow", + "resources", + "eval-plan", + "risk", + "governance", + "runtime", + "trust", + "permissions" + ], + "native_surface": "VS Code/Copilot Agent Skills project or user scope" + } + }, + "permission_contract": { + "schema_version": "1.0", + "source": "reports/security_trust_report.json", + "source_available": true, + "declared_capabilities": [ + "network", + "file_write", + "subprocess" + ], + "review_required": true, + "capabilities": { + "network": { + "required": true, + "script_count": 3, + "scripts": [ + "scripts/check_update.py", + "scripts/github_benchmark_scan.py", + "scripts/provider_output_eval_runner.py" + ], + "review_reason": "Outbound hosts must match security/network_policy.json." + }, + "file_write": { + "required": true, + "script_count": 47, + "scripts": [ + "scripts/adjudicate_output_review.py", + "scripts/build_confusion_matrix.py", + "scripts/build_skill_atlas.py", + "scripts/check_update.py", + "scripts/ci_test.py", + "scripts/collect_feedback.py", + "scripts/compile_skill.py", + "scripts/create_iteration_snapshot.py", + "scripts/cross_packager.py", + "scripts/export_skill_ir.py", + "scripts/github_benchmark_scan.py", + "scripts/init_skill.py", + "scripts/probe_runtime_permissions.py", + "scripts/promotion_checker.py", + "scripts/registry_audit.py", + "scripts/render_adoption_drift_report.py", + "scripts/render_artifact_design_profile.py", + "scripts/render_baseline_compare.py", + "scripts/render_context_reports.py", + "scripts/render_description_drift_history.py", + "scripts/render_eval_dashboard.py", + "scripts/render_intent_confidence.py", + "scripts/render_intent_dialogue.py", + "scripts/render_iteration_directions.py", + "scripts/render_iteration_ledger.py", + "scripts/render_output_risk_profile.py", + "scripts/render_portability_report.py", + "scripts/render_prompt_quality_profile.py", + "scripts/render_reference_scan.py", + "scripts/render_reference_synthesis.py", + "scripts/render_regression_history.py", + "scripts/render_review_annotations.py", + "scripts/render_review_studio.py", + "scripts/render_review_viewer.py", + "scripts/render_review_waivers.py", + "scripts/render_skill_overview.py", + "scripts/render_social_preview.py", + "scripts/render_system_model.py", + "scripts/run_conformance_suite.py", + "scripts/run_description_optimization_suite.py", + "scripts/run_output_eval.py", + "scripts/run_output_execution.py", + "scripts/simulate_install.py", + "scripts/sync_local_install.py", + "scripts/trust_check.py", + "scripts/upgrade_check.py", + "scripts/verify_package.py" + ], + "review_reason": "Scripts write local files or generated artifacts." + }, + "subprocess": { + "required": true, + "script_count": 7, + "scripts": [ + "scripts/ci_test.py", + "scripts/render_eval_dashboard.py", + "scripts/run_eval_suite.py", + "scripts/run_output_execution.py", + "scripts/sync_local_install.py", + "scripts/trust_check.py", + "scripts/yao.py" + ], + "review_reason": "Scripts spawn local commands and need operator review." + }, + "interactive": { + "required": false, + "script_count": 0, + "scripts": [], + "review_reason": "" + } + }, + "network_policy": { + "source": "security/network_policy.json", + "covered_scripts": [ + "scripts/check_update.py", + "scripts/github_benchmark_scan.py", + "scripts/provider_output_eval_runner.py" + ], + "missing_scripts": [], + "mismatches": [] + }, + "help_smoke": { + "enabled": true, + "checked_count": 60, + "failed_count": 0, + "failed_scripts": [] + }, + "trust_summary": { + "secret_findings": 0, + "network_script_count": 3, + "file_write_script_count": 47, + "subprocess_script_count": 7, + "interactive_script_count": 0, + "help_smoke_failed_count": 0 + } + }, + "target_permission_contract": { + "schema_version": "1.0", + "target": "vscode", + "permission_model": "vscode-workspace-trust-plus-metadata", + "native_enforcement": false, + "representation": "targets/vscode/adapter.json::target_permission_contract and targets/vscode/README.md install notes", + "review_required": true, + "declared_capabilities": [ + "network", + "file_write", + "subprocess" + ], + "capability_counts": { + "network": 3, + "file_write": 47, + "subprocess": 7, + "interactive": 0 + }, + "evidence": "reports/security_trust_report.json", + "operator_note": "VS Code target relies on project or user skill installation plus VS Code workspace trust; Yao preserves permission metadata for reviewer and installer checks." + }, + "target_native_contract": { + "schema_version": "1.0", + "target": "vscode", + "native_surface": "VS Code/Copilot Agent Skills project or user scope", + "activation": { + "policy": "Use folder name plus SKILL.md name/description; keep description under platform limits.", + "trigger_description": "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.", + "manual_activation_supported": true, + "automatic_activation_note": "Depends on the target client route/catalog implementation." + }, + "resources": { + "strategy": "Install as project or user scoped skill source, preserving relative references and scripts.", + "counts": { + "references": 32, + "scripts": 69, + "assets": 2, + "reports": 41 + }, + "generated_files": [ + "targets/vscode/adapter.json", + "targets/vscode/README.md" + ] + }, + "scripts": { + "strategy": "Scripts require workspace trust and operator/client approval outside this compiler.", + "script_count": 69, + "help_smoke_failed_count": 0 + }, + "permissions": { + "enforcement": "client-or-workspace-trust", + "native_enforcement": false, + "declared_capabilities": [ + "network", + "file_write", + "subprocess" + ], + "review_required": true + }, + "review": { + "artifacts": [ + "SKILL.md", + "agents/interface.yaml", + "reports/review-studio.html" + ], + "fallback_behavior": "If VS Code scope is not installed, use the neutral Agent Skills source.", + "unsupported_native_features": [ + "automatic VS Code installation", + "VS Code installation scope is documented but not installed by this compiler" + ] + }, + "install_scope": "VS Code user or project skills directory" + }, + "target_transform": { + "target": "vscode", + "adapter_mode": "vscode-agent-skills-adapter", + "generated_files": [ + "targets/vscode/adapter.json", + "targets/vscode/README.md" + ], + "metadata_mapping": { + "name": "folder-name-and-SKILL.md::frontmatter.name", + "description": "SKILL.md::frontmatter.description", + "interface": "agents/interface.yaml", + "permissions": "targets/vscode/adapter.json::target_permission_contract", + "install_scope": "targets/vscode/README.md" + }, + "preserved_semantics": [ + "trigger", + "workflow", + "resources", + "eval-plan", + "risk", + "governance", + "runtime", + "trust", + "permissions" + ], + "degradation_strategy": "agent-skills-source-with-vscode-notes", + "permission_representation": "targets/vscode/adapter.json::target_permission_contract and targets/vscode/README.md install notes", + "native_surface": "VS Code/Copilot Agent Skills project or user scope", + "activation_policy": "Use folder name plus SKILL.md name/description; keep description under platform limits.", + "resource_strategy": "Install as project or user scoped skill source, preserving relative references and scripts.", + "script_strategy": "Scripts require workspace trust and operator/client approval outside this compiler.", + "permission_enforcement": "client-or-workspace-trust" + }, + "unsupported_features": [ + "VS Code installation scope is documented but not installed by this compiler" + ], + "warnings": [], + "failures": [] } ], "failures": [], @@ -7039,19 +7868,19 @@ "schema_version": "1.0", "ok": true, "skill_dir": ".", - "package_dir": "tests/tmp_review_studio/dist", + "package_dir": "dist", "expected_capabilities": [ "file_write", "network", "subprocess" ], "summary": { - "target_count": 3, - "pass_count": 3, + "target_count": 4, + "pass_count": 4, "fail_count": 0, "native_enforcement_count": 0, - "metadata_fallback_count": 3, - "residual_risk_count": 3, + "metadata_fallback_count": 4, + "residual_risk_count": 4, "required_capability_count": 3, "failure_count": 0 }, @@ -7059,7 +7888,7 @@ { "target": "openai", "status": "pass", - "adapter": "tests/tmp_review_studio/dist/targets/openai/adapter.json", + "adapter": "dist/targets/openai/adapter.json", "permission_model": "metadata-only", "native_enforcement": false, "metadata_fallback_explicit": true, @@ -7144,7 +7973,7 @@ { "target": "claude", "status": "pass", - "adapter": "tests/tmp_review_studio/dist/targets/claude/adapter.json", + "adapter": "dist/targets/claude/adapter.json", "permission_model": "neutral-source-plus-adapter", "native_enforcement": false, "metadata_fallback_explicit": true, @@ -7214,7 +8043,7 @@ { "target": "generic", "status": "pass", - "adapter": "tests/tmp_review_studio/dist/targets/generic/adapter.json", + "adapter": "dist/targets/generic/adapter.json", "permission_model": "agent-skills-compatible-metadata", "native_enforcement": false, "metadata_fallback_explicit": true, @@ -7280,6 +8109,76 @@ "residual_risks": [ "Client-native permission enforcement is not provided by this target; installer or operator must honor metadata." ] + }, + { + "target": "vscode", + "status": "pass", + "adapter": "dist/targets/vscode/adapter.json", + "permission_model": "vscode-workspace-trust-plus-metadata", + "native_enforcement": false, + "metadata_fallback_explicit": true, + "assurance": "metadata-fallback-explicit", + "declared_capabilities": [ + "file_write", + "network", + "subprocess" + ], + "checks": [ + { + "key": "adapter-present", + "passed": true, + "detail": "vscode adapter.json is readable" + }, + { + "key": "permission-contract-present", + "passed": true, + "detail": "vscode adapter includes permission_contract" + }, + { + "key": "target-contract-present", + "passed": true, + "detail": "vscode adapter includes target_permission_contract" + }, + { + "key": "source-available", + "passed": true, + "detail": "vscode permission_contract links to an available trust report" + }, + { + "key": "declared-capabilities-match", + "passed": true, + "detail": "vscode target_permission_contract mirrors expected capabilities" + }, + { + "key": "capability-counts-present", + "passed": true, + "detail": "vscode target_permission_contract includes capability_counts" + }, + { + "key": "native-enforcement-boolean", + "passed": true, + "detail": "vscode target_permission_contract declares native_enforcement as a boolean" + }, + { + "key": "representation-present", + "passed": true, + "detail": "vscode target_permission_contract declares where permission metadata is represented" + }, + { + "key": "operator-note-present", + "passed": true, + "detail": "vscode target_permission_contract includes an operator_note" + }, + { + "key": "review-required-matches", + "passed": true, + "detail": "vscode review_required matches whether capabilities are required" + } + ], + "failures": [], + "residual_risks": [ + "Client-native permission enforcement is not provided by this target; installer or operator must honor metadata." + ] } ], "failures": [], @@ -7313,7 +8212,7 @@ "interactive_script_count": 0, "package_hash_scope": "source-contract-without-generated-reports", "package_hash_file_count": 153, - "package_sha256": "2984db5f8d02b147c86bf259679e247a10a6fa495d123032be46c2e7fdaf8368" + "package_sha256": "2109ae8e212111b1619d8d728e54c73425fecc174113b45629c656ecceb3fadd" }, "failures": [], "warnings": [], @@ -8537,7 +9436,7 @@ "timed_out": false, "passed": true, "has_help_text": true, - "stdout_excerpt": "usage: probe_runtime_permissions.py [-h] [--package-dir PACKAGE_DIR]\n [--target {openai,claude,generic}]\n [--output-json OUTPUT_JSON]\n ", + "stdout_excerpt": "usage: probe_runtime_permissions.py [-h] [--package-dir PACKAGE_DIR]\n [--target {openai,claude,generic,vscode}]\n [--output-json OUTPUT_JSON]\n ", "stderr_excerpt": "" }, { @@ -9141,14 +10040,14 @@ "stats": { "context_budget_tier": "production", "context_budget_limit": 1000, - "skill_body_tokens": 811, - "other_text_tokens": 880673, - "estimated_initial_load_tokens": 987, - "estimated_total_text_tokens": 881484, - "relevant_file_count": 374, + "skill_body_tokens": 751, + "other_text_tokens": 893597, + "estimated_initial_load_tokens": 944, + "estimated_total_text_tokens": 894348, + "relevant_file_count": 386, "unused_resource_dirs": [], "quality_signal_points": 130, - "quality_density": 131.7 + "quality_density": 137.7 } }, "promotion": { @@ -10002,7 +10901,8 @@ "openai", "claude", "generic", - "agent-skills-compatible" + "agent-skills-compatible", + "vscode" ], "resources": [ "scripts/adjudicate_output_review.py", @@ -10855,7 +11755,7 @@ "adoption_drift": { "ok": true, "schema_version": "2.0", - "generated_at": "2026-06-13T11:56:59Z", + "generated_at": "2026-06-13T12:10:53Z", "skill_dir": ".", "privacy_contract": { "storage": "local-first", @@ -11008,7 +11908,8 @@ "openai", "claude", "generic", - "agent-skills-compatible" + "agent-skills-compatible", + "vscode" ], "maturity": "governed", "owner": "Yao Team", @@ -11016,8 +11917,8 @@ "trust_level": "local", "license": "MIT", "checksums": { - "package_sha256": "2984db5f8d02b147c86bf259679e247a10a6fa495d123032be46c2e7fdaf8368", - "archive_sha256": "27fb62524da6ed2ccda448b7725e0154ee0fd3eccd4fe69a88494e67f4050353" + "package_sha256": "2109ae8e212111b1619d8d728e54c73425fecc174113b45629c656ecceb3fadd", + "archive_sha256": "176d93befb446985aaff7cd8325b05c4858da13177cb13db82d210aa2d264060" }, "compatibility": { "openai": "pass", @@ -11048,7 +11949,7 @@ }, "distribution": { "archive_verified": true, - "archive_sha256": "27fb62524da6ed2ccda448b7725e0154ee0fd3eccd4fe69a88494e67f4050353", + "archive_sha256": "176d93befb446985aaff7cd8325b05c4858da13177cb13db82d210aa2d264060", "package_verification": "reports/package_verification.json", "install_simulated": true, "install_simulation": "reports/install_simulation.json" @@ -11069,10 +11970,11 @@ "openai", "claude", "generic", - "agent-skills-compatible" + "agent-skills-compatible", + "vscode" ], "package_metadata": "registry/packages/yao-meta-skill.json", - "package_sha256": "2984db5f8d02b147c86bf259679e247a10a6fa495d123032be46c2e7fdaf8368" + "package_sha256": "2109ae8e212111b1619d8d728e54c73425fecc174113b45629c656ecceb3fadd" } ] }, @@ -11092,11 +11994,11 @@ "skill_dir": ".", "package_dir": "dist", "summary": { - "target_count": 3, - "adapter_count": 3, + "target_count": 4, + "adapter_count": 4, "archive_present": true, - "archive_sha256": "27fb62524da6ed2ccda448b7725e0154ee0fd3eccd4fe69a88494e67f4050353", - "archive_entry_count": 492, + "archive_sha256": "176d93befb446985aaff7cd8325b05c4858da13177cb13db82d210aa2d264060", + "archive_entry_count": 493, "failure_count": 0, "warning_count": 0 }, @@ -11511,6 +12413,141 @@ "status": "pass", "detail": "generic adapter includes field: portability_profile" }, + { + "id": "vscode-adapter", + "status": "pass", + "detail": "Adapter exists for target: vscode" + }, + { + "id": "vscode-field-name", + "status": "pass", + "detail": "vscode adapter includes field: name" + }, + { + "id": "vscode-field-description", + "status": "pass", + "detail": "vscode adapter includes field: description" + }, + { + "id": "vscode-field-version", + "status": "pass", + "detail": "vscode adapter includes field: version" + }, + { + "id": "vscode-field-display_name", + "status": "pass", + "detail": "vscode adapter includes field: display_name" + }, + { + "id": "vscode-field-short_description", + "status": "pass", + "detail": "vscode adapter includes field: short_description" + }, + { + "id": "vscode-field-default_prompt", + "status": "pass", + "detail": "vscode adapter includes field: default_prompt" + }, + { + "id": "vscode-field-job_to_be_done", + "status": "pass", + "detail": "vscode adapter includes field: job_to_be_done" + }, + { + "id": "vscode-field-ir_source", + "status": "pass", + "detail": "vscode adapter includes field: ir_source" + }, + { + "id": "vscode-field-ir_schema_version", + "status": "pass", + "detail": "vscode adapter includes field: ir_schema_version" + }, + { + "id": "vscode-field-semantic_contract", + "status": "pass", + "detail": "vscode adapter includes field: semantic_contract" + }, + { + "id": "vscode-field-semantic_parity", + "status": "pass", + "detail": "vscode adapter includes field: semantic_parity" + }, + { + "id": "vscode-field-compiler", + "status": "pass", + "detail": "vscode adapter includes field: compiler" + }, + { + "id": "vscode-field-compiled_contract", + "status": "pass", + "detail": "vscode adapter includes field: compiled_contract" + }, + { + "id": "vscode-field-permission_contract", + "status": "pass", + "detail": "vscode adapter includes field: permission_contract" + }, + { + "id": "vscode-field-target_permission_contract", + "status": "pass", + "detail": "vscode adapter includes field: target_permission_contract" + }, + { + "id": "vscode-field-target_native_contract", + "status": "pass", + "detail": "vscode adapter includes field: target_native_contract" + }, + { + "id": "vscode-field-target_transform", + "status": "pass", + "detail": "vscode adapter includes field: target_transform" + }, + { + "id": "vscode-field-canonical_metadata", + "status": "pass", + "detail": "vscode adapter includes field: canonical_metadata" + }, + { + "id": "vscode-field-canonical_format", + "status": "pass", + "detail": "vscode adapter includes field: canonical_format" + }, + { + "id": "vscode-field-activation_mode", + "status": "pass", + "detail": "vscode adapter includes field: activation_mode" + }, + { + "id": "vscode-field-execution_context", + "status": "pass", + "detail": "vscode adapter includes field: execution_context" + }, + { + "id": "vscode-field-shell", + "status": "pass", + "detail": "vscode adapter includes field: shell" + }, + { + "id": "vscode-field-trust_level", + "status": "pass", + "detail": "vscode adapter includes field: trust_level" + }, + { + "id": "vscode-field-remote_inline_execution", + "status": "pass", + "detail": "vscode adapter includes field: remote_inline_execution" + }, + { + "id": "vscode-field-degradation_strategy", + "status": "pass", + "detail": "vscode adapter includes field: degradation_strategy" + }, + { + "id": "vscode-field-portability_profile", + "status": "pass", + "detail": "vscode adapter includes field: portability_profile" + }, { "id": "openai-file-targets/openai/adapter.json", "status": "pass", @@ -11536,6 +12573,16 @@ "status": "pass", "detail": "Package contains targets/generic/adapter.json" }, + { + "id": "vscode-file-targets/vscode/adapter.json", + "status": "pass", + "detail": "Package contains targets/vscode/adapter.json" + }, + { + "id": "vscode-file-targets/vscode/README.md", + "status": "pass", + "detail": "Package contains targets/vscode/README.md" + }, { "id": "archive-safe-paths", "status": "pass", @@ -11590,6 +12637,11 @@ "id": "registry-compat-generic", "status": "pass", "detail": "Registry compatibility is reviewable for target: generic" + }, + { + "id": "registry-compat-vscode", + "status": "pass", + "detail": "Registry compatibility is reviewable for target: vscode" } ], "failures": [], @@ -11611,12 +12663,12 @@ "installed_skill_dir": "dist/install-simulation/simulate-yao-meta-skill/yao-meta-skill", "summary": { "archive_present": true, - "archive_entry_count": 492, + "archive_entry_count": 493, "archive_extracted": true, "entrypoint_loaded": true, "manifest_loaded": true, "interface_loaded": true, - "adapter_count": 3, + "adapter_count": 4, "install_root_is_temp": false, "failure_count": 0, "warning_count": 0 @@ -11711,6 +12763,16 @@ "id": "adapter-openai-name", "status": "pass", "detail": "openai adapter name matches package manifest" + }, + { + "id": "adapter-vscode", + "status": "pass", + "detail": "vscode adapter is readable after package install simulation" + }, + { + "id": "adapter-vscode-name", + "status": "pass", + "detail": "vscode adapter name matches package manifest" } ], "failures": [], @@ -11742,14 +12804,15 @@ "openai", "claude", "generic", - "agent-skills-compatible" + "agent-skills-compatible", + "vscode" ] }, "summary": { "declared_bump": "minor", "recommended_bump": "minor", "breaking_change_count": 0, - "added_target_count": 1, + "added_target_count": 2, "metadata_change_count": 1, "checksum_change_count": 2, "failure_count": 0, @@ -11758,7 +12821,8 @@ "upgrade_diff": { "name_changed": false, "added_targets": [ - "agent-skills-compatible" + "agent-skills-compatible", + "vscode" ], "removed_targets": [], "compatibility_changes": [ @@ -11792,18 +12856,18 @@ { "field": "archive_sha256", "from": "", - "to": "27fb62524da6ed2ccda448b7725e0154ee0fd3eccd4fe69a88494e67f4050353" + "to": "176d93befb446985aaff7cd8325b05c4858da13177cb13db82d210aa2d264060" }, { "field": "package_sha256", "from": "0000000000000000000000000000000000000000000000000000000000000000", - "to": "2984db5f8d02b147c86bf259679e247a10a6fa495d123032be46c2e7fdaf8368" + "to": "2109ae8e212111b1619d8d728e54c73425fecc174113b45629c656ecceb3fadd" } ] }, "release_notes": [ "Recommended version bump: minor.", - "Added targets: agent-skills-compatible.", + "Added targets: agent-skills-compatible, vscode.", "Package or archive checksum changed; reviewers should verify package artifacts before release.", "Package verification evidence: reports/package_verification.md." ], @@ -11830,7 +12894,8 @@ "openai", "claude", "generic", - "agent-skills-compatible" + "agent-skills-compatible", + "vscode" ], "factory_components": [ "templates", @@ -11858,7 +12923,8 @@ "adapter_targets": [ "openai", "claude", - "generic" + "generic", + "vscode" ], "activation": { "mode": "manual", @@ -11876,7 +12942,8 @@ "degradation": { "openai": "metadata-adapter", "claude": "neutral-source-plus-adapter", - "generic": "neutral-source" + "generic": "neutral-source", + "vscode": "agent-skills-source-with-vscode-notes" } } } diff --git a/reports/runtime_permission_probes.json b/reports/runtime_permission_probes.json index e68842ee..6d6254fb 100644 --- a/reports/runtime_permission_probes.json +++ b/reports/runtime_permission_probes.json @@ -9,12 +9,12 @@ "subprocess" ], "summary": { - "target_count": 3, - "pass_count": 3, + "target_count": 4, + "pass_count": 4, "fail_count": 0, "native_enforcement_count": 0, - "metadata_fallback_count": 3, - "residual_risk_count": 3, + "metadata_fallback_count": 4, + "residual_risk_count": 4, "required_capability_count": 3, "failure_count": 0 }, @@ -243,6 +243,76 @@ "residual_risks": [ "Client-native permission enforcement is not provided by this target; installer or operator must honor metadata." ] + }, + { + "target": "vscode", + "status": "pass", + "adapter": "tests/tmp_review_studio/dist/targets/vscode/adapter.json", + "permission_model": "vscode-workspace-trust-plus-metadata", + "native_enforcement": false, + "metadata_fallback_explicit": true, + "assurance": "metadata-fallback-explicit", + "declared_capabilities": [ + "file_write", + "network", + "subprocess" + ], + "checks": [ + { + "key": "adapter-present", + "passed": true, + "detail": "vscode adapter.json is readable" + }, + { + "key": "permission-contract-present", + "passed": true, + "detail": "vscode adapter includes permission_contract" + }, + { + "key": "target-contract-present", + "passed": true, + "detail": "vscode adapter includes target_permission_contract" + }, + { + "key": "source-available", + "passed": true, + "detail": "vscode permission_contract links to an available trust report" + }, + { + "key": "declared-capabilities-match", + "passed": true, + "detail": "vscode target_permission_contract mirrors expected capabilities" + }, + { + "key": "capability-counts-present", + "passed": true, + "detail": "vscode target_permission_contract includes capability_counts" + }, + { + "key": "native-enforcement-boolean", + "passed": true, + "detail": "vscode target_permission_contract declares native_enforcement as a boolean" + }, + { + "key": "representation-present", + "passed": true, + "detail": "vscode target_permission_contract declares where permission metadata is represented" + }, + { + "key": "operator-note-present", + "passed": true, + "detail": "vscode target_permission_contract includes an operator_note" + }, + { + "key": "review-required-matches", + "passed": true, + "detail": "vscode review_required matches whether capabilities are required" + } + ], + "failures": [], + "residual_risks": [ + "Client-native permission enforcement is not provided by this target; installer or operator must honor metadata." + ] } ], "failures": [], diff --git a/reports/runtime_permission_probes.md b/reports/runtime_permission_probes.md index 1e68c336..7529c3ad 100644 --- a/reports/runtime_permission_probes.md +++ b/reports/runtime_permission_probes.md @@ -5,11 +5,11 @@ Runtime permission probes verify that generated target adapters expose high-perm ## Summary - OK: `True` -- Targets probed: `3` -- Passed: `3` +- Targets probed: `4` +- Passed: `4` - Failed: `0` - Native enforcement targets: `0` -- Explicit metadata fallbacks: `3` +- Explicit metadata fallbacks: `4` - Required capabilities: `file_write, network, subprocess` | Target | Status | Assurance | Native Enforcement | Metadata Fallback | Residual Risk | @@ -17,6 +17,7 @@ Runtime permission probes verify that generated target adapters expose high-perm | `openai` | `pass` | `metadata-fallback-explicit` | `False` | `True` | Client-native permission enforcement is not provided by this target; installer or operator must honor metadata. | | `claude` | `pass` | `metadata-fallback-explicit` | `False` | `True` | Client-native permission enforcement is not provided by this target; installer or operator must honor metadata. | | `generic` | `pass` | `metadata-fallback-explicit` | `False` | `True` | Client-native permission enforcement is not provided by this target; installer or operator must honor metadata. | +| `vscode` | `pass` | `metadata-fallback-explicit` | `False` | `True` | Client-native permission enforcement is not provided by this target; installer or operator must honor metadata. | ## Failures diff --git a/reports/security_trust_report.json b/reports/security_trust_report.json index b33d56fb..d9327be1 100644 --- a/reports/security_trust_report.json +++ b/reports/security_trust_report.json @@ -23,7 +23,7 @@ "interactive_script_count": 0, "package_hash_scope": "source-contract-without-generated-reports", "package_hash_file_count": 153, - "package_sha256": "2984db5f8d02b147c86bf259679e247a10a6fa495d123032be46c2e7fdaf8368" + "package_sha256": "7a8dab0d542d2994adec2045b54559612db36f14db8b7b66e4138fb0435ae3d3" }, "failures": [], "warnings": [], @@ -1247,7 +1247,7 @@ "timed_out": false, "passed": true, "has_help_text": true, - "stdout_excerpt": "usage: probe_runtime_permissions.py [-h] [--package-dir PACKAGE_DIR]\n [--target {openai,claude,generic}]\n [--output-json OUTPUT_JSON]\n ", + "stdout_excerpt": "usage: probe_runtime_permissions.py [-h] [--package-dir PACKAGE_DIR]\n [--target {openai,claude,generic,vscode}]\n [--output-json OUTPUT_JSON]\n ", "stderr_excerpt": "" }, { diff --git a/reports/security_trust_report.md b/reports/security_trust_report.md index af74b3df..96e66cf8 100644 --- a/reports/security_trust_report.md +++ b/reports/security_trust_report.md @@ -16,7 +16,7 @@ - Interactive scripts: `0` - Package hash scope: `source-contract-without-generated-reports` - Package hash files: `153` -- Package SHA256: `2984db5f8d02b147c86bf259679e247a10a6fa495d123032be46c2e7fdaf8368` +- Package SHA256: `7a8dab0d542d2994adec2045b54559612db36f14db8b7b66e4138fb0435ae3d3` ## Failures diff --git a/reports/skill-os-2-review.md b/reports/skill-os-2-review.md index c0589104..e53385ef 100644 --- a/reports/skill-os-2-review.md +++ b/reports/skill-os-2-review.md @@ -15,8 +15,8 @@ Yao Meta Skill is no longer only a Meta Skill factory. The current working tree - Bilingual Skill Overview v2 that includes these evidence surfaces. - Review Studio 2.0 v0 for one-page blocker, warning, evidence-path, review-action, and release-gate review. - Review Studio Source Refs v0 so every non-pass review action can expose structured relative source/report links with best-effort line numbers. -- Target Compiler v0 so Skill IR compiles into OpenAI, Claude, generic, and Agent Skills compatible target contracts before packaging, including target-specific permission contracts and native behavior contracts. -- IR-first packaging v0 so adapters carry the platform-neutral semantic contract, compiler contract, parity checks, and IR provenance. +- Target Compiler v0 so Skill IR compiles into OpenAI, Claude, generic, Agent Skills compatible, and VS Code / Copilot target contracts before packaging, including target-specific permission contracts and native behavior contracts. +- IR-first packaging v0 so adapters carry the platform-neutral semantic contract, compiler contract, parity checks, IR provenance, and VS Code / Copilot install-scope notes where applicable. - Registry & Distribution v0 for package metadata, checksum, owner, license, compatibility matrix, and audit reporting. - Package Verification v0 for generated manifest, target adapters, zip archive safety, archive checksum, and registry parity. - Install Simulation v0 for local extraction, entrypoint loading, interface loading, report presence, and adapter readability. @@ -31,7 +31,7 @@ Yao Meta Skill is no longer only a Meta Skill factory. The current working tree - Review Studio Output Lab actions now link directly to `reports/output_review_decisions.json`, so pending blind A/B reviewer decisions have a concrete template instead of only a general adjudication warning. - Provider Output Eval Runner v0 so `python3 scripts/yao.py output-exec --provider-runner openai` can collect real provider-backed model evidence through a reviewed OpenAI Responses API compatible runner instead of ad hoc shell glue. -This is still not the final world-class state. Target-native behavior contracts are now explicit, local output-eval command execution is wired, and a provider-backed output runner exists. Review Studio now keeps pending human adjudication visible as a warning instead of treating it as a clean pass. Deeper provider-native execution transforms, real client telemetry capture, installer integration, real provider holdout runs, real human adjudication decisions, and native runtime permission enforcement remain open. +This is still not the final world-class state. Target-native behavior contracts are now explicit, VS Code / Copilot package metadata is auditable, local output-eval command execution is wired, and a provider-backed output runner exists. Review Studio keeps pending human adjudication visible as a warning instead of treating it as a clean pass. Deeper provider-native execution transforms, real client telemetry capture, installer integration, real provider holdout runs, real human adjudication decisions, and native runtime permission enforcement remain open. ## Coverage Matrix @@ -63,7 +63,7 @@ This is still not the final world-class state. Target-native behavior contracts ### 1. Target-native behavior contracts are landed, but provider execution is still shallow -`scripts/compile_skill.py` now reads Skill IR and emits target-specific contracts for OpenAI, Claude, generic, and Agent Skills compatible outputs. The packager embeds `compiler`, `compiled_contract`, `permission_contract`, `target_permission_contract`, `target_native_contract`, `target_transform`, warnings, and unsupported-feature notes in each adapter. The native contract makes the target surface, activation policy, resource strategy, script strategy, permission enforcement mode, install scope, review artifacts, fallback behavior, and unsupported native features reviewable instead of implicit. +`scripts/compile_skill.py` now reads Skill IR and emits target-specific contracts for OpenAI, Claude, generic, Agent Skills compatible, and VS Code / Copilot outputs. The packager embeds `compiler`, `compiled_contract`, `permission_contract`, `target_permission_contract`, `target_native_contract`, `target_transform`, warnings, and unsupported-feature notes in each adapter. The native contract makes the target surface, activation policy, resource strategy, script strategy, permission enforcement mode, install scope, review artifacts, fallback behavior, and unsupported native features reviewable instead of implicit. Next move: deepen provider-native execution transforms so OpenAI, Claude, VS Code/Copilot, and generic packages can express and verify behavior through real client or installer capabilities, not only auditable contracts and fallback notes. @@ -97,22 +97,22 @@ Next move: add real client or installer permission enforcement integration. | --- | --- | | Output Eval | `5` cases, with-skill pass rate `100`, baseline pass rate `0`, with file-backed, near-neighbor, boundary coverage, `10` local command-runner execution runs, `0` recorded fixture runs, `0` provider model-executed runs in root release evidence, `10` estimated token counts, provider runner v0 available, `5` blind A/B review pairs, a generated `reports/output_review_decisions.json` template, and `0 / 5` reviewer decisions pending | | Runtime Conformance | `5 / 5` targets passing | -| Target Compiler | compiled target contracts generated for OpenAI, Claude, generic, and Agent Skills compatible outputs, including target permission contracts and target-native behavior contracts | +| Target Compiler | `5 / 5` compiled target contracts generated for OpenAI, Claude, generic, Agent Skills compatible, and VS Code / Copilot outputs, including target permission contracts and target-native behavior contracts | | Trust | `0` secret findings, `1` pinned dependency file, `9` declared internal modules, `3 / 3` network-capable scripts covered by bounded host policy, `60 / 60` CLI help smoke checks passing across `69` scripts, source-contract hash scope explicit | | Permission Governance | `3 / 3` required high-permission capabilities approved, `0` missing, `0` invalid, `0` expired | -| Runtime Permission Probes | `3 / 3` target adapters probed, `0` native-enforcement adapters, `3` explicit metadata fallbacks, `3` residual risks retained for reviewer visibility | +| Runtime Permission Probes | `4 / 4` target adapters probed, `0` native-enforcement adapters, `4` explicit metadata fallbacks, `4` residual risks retained for reviewer visibility | | Skill Atlas | `12` scanned skills, `1` actionable root skill, `0` actionable route collisions, `0` actionable owner gaps, `0` actionable stale skills, `24` scoped non-actionable issue signals retained for visibility | | Registry Audit | package metadata generated with version, owner, license, source checksum, archive checksum, Skill IR provenance, and compatibility matrix | -| Package Verification | `3 / 3` target adapters present, archive verified, `492` zip entries, `0` failures, `0` warnings | -| Install Simulation | archive with `492` entries extracted into a local verification root, entrypoint/manifest/interface loaded, reports present, `3` adapters readable, `0` failures, `0` warnings | +| Package Verification | `4 / 4` target adapters present, archive verified, `493` zip entries, `0` failures, `0` warnings | +| Install Simulation | archive with `493` entries extracted into a local verification root, entrypoint/manifest/interface loaded, reports present, `4` adapters readable, `0` failures, `0` warnings | | Upgrade Check | current package declares `minor` over the 1.0.0 baseline, recommended bump is `minor`, and release notes include added targets plus checksum changes | -| Adoption Drift | `1` metadata-only review event, `0` adoption samples, adoption `0`, risk band `low`; raw `reports/telemetry_events.jsonl` is gitignored and blocked from zip packages | +| Adoption Drift | `1` metadata-only activation event, `1` adoption sample, adoption `100.0`, risk band `low`; raw `reports/telemetry_events.jsonl` is gitignored and blocked from zip packages | | Review Waivers | ledger generated; current release has `1` warning gate that still needs reviewer decision or a time-bounded waiver; blockers remain non-waivable in v0 | | Review Annotations | ledger generated; current release has `0` reviewer annotations and `0` open annotation blockers | | Review Studio | decision `review`, world-class score `92`, `13` gates, `0` blockers, `2` warnings, `2` review actions, `0` open annotation blockers | -| IR-first Packaging | `openai`, `claude`, and `generic` adapters include compiler contracts, permission contracts, target-native behavior contracts, IR provenance, and semantic parity checks | -| Context Budget | initial load `987/1000`, under the production budget | -| CI | `make ci-test` target count is now `56` after adding Review Annotations | +| IR-first Packaging | `openai`, `claude`, `generic`, and `vscode` adapters include compiler contracts, permission contracts, target-native behavior contracts, IR provenance, semantic parity checks, and install-scope notes where applicable | +| Context Budget | initial load `944/1000`, under the production budget | +| CI | `make ci-test` target count is `56` after the VS Code package target update | ## Next Highest-Leverage Moves diff --git a/reports/skill-overview.html b/reports/skill-overview.html index 9089cc3d..44a7c304 100644 --- a/reports/skill-overview.html +++ b/reports/skill-overview.html @@ -602,14 +602,14 @@

技能审计报告Yao Meta Skill Audit Report

这份报告默认使用中文简体,把新 Skill 的定位、指标、原理、契约、质量、风险、资产和迭代路线整理为一份可审计的 HTML 报告。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.

技能名称:yao-meta-skillSkill name: yao-meta-skill成熟度:治理Maturity: governed格式:Agent SkillsFormat: agent-skills更新时间:2026-03-31Updated: 2026-03-31
-
openaiopenaiclaudeclaudegenericgeneric
+
openaiopenaiclaudeclaudegenericgenericvscodevscode
-
完整度100SKILL.md 已存在,是 Skill 的入口。SKILL.md 已存在,是 Skill 的入口。
触发清晰100frontmatter description 已存在,具备基础路由面。frontmatter description 已存在,具备基础路由面。
证据充分100已生成 20 / 20 类报告证据。已生成 20 / 20 类报告证据。
上下文成本42入口约 365 个词/字,references 约 14388 个词/字。入口约 365 个词/字,references 约 14388 个词/字。
+
完整度100SKILL.md 已存在,是 Skill 的入口。SKILL.md 已存在,是 Skill 的入口。
触发清晰100frontmatter description 已存在,具备基础路由面。frontmatter description 已存在,具备基础路由面。
证据充分100已生成 20 / 20 类报告证据。已生成 20 / 20 类报告证据。
上下文成本42入口约 350 个词/字,references 约 14450 个词/字。入口约 350 个词/字,references 约 14450 个词/字。
@@ -641,10 +641,10 @@

指标判读Reading

先看雷达图判断能力短板,再看下方每项分数的证据原因。分数不是装饰数字,必须和本地文件、reports 证据或证据不足提示对应。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.

-
  1. 稳定Stable完整度100SKILL.md 已存在,是 Skill 的入口。SKILL.md 已存在,是 Skill 的入口。
  2. 稳定Stable触发清晰100frontmatter description 已存在,具备基础路由面。frontmatter description 已存在,具备基础路由面。
  3. 稳定Stable证据充分100已生成 20 / 20 类报告证据。已生成 20 / 20 类报告证据。
  4. 稳定Stable可维护性100SKILL.md 约 365 个词/字。SKILL.md 约 365 个词/字。
  5. 稳定Stable可迁移性100agents/interface.yaml 已存在。agents/interface.yaml 已存在。
  6. 关注Watch上下文成本42入口约 365 个词/字,references 约 14388 个词/字。入口约 365 个词/字,references 约 14388 个词/字。
+
  1. 稳定Stable完整度100SKILL.md 已存在,是 Skill 的入口。SKILL.md 已存在,是 Skill 的入口。
  2. 稳定Stable触发清晰100frontmatter description 已存在,具备基础路由面。frontmatter description 已存在,具备基础路由面。
  3. 稳定Stable证据充分100已生成 20 / 20 类报告证据。已生成 20 / 20 类报告证据。
  4. 稳定Stable可维护性100SKILL.md 约 350 个词/字。SKILL.md 约 350 个词/字。
  5. 稳定Stable可迁移性100agents/interface.yaml 已存在。agents/interface.yaml 已存在。
  6. 关注Watch上下文成本42入口约 350 个词/字,references 约 14450 个词/字。入口约 350 个词/字,references 约 14450 个词/字。
-
完整度100
  • SKILL.md 已存在,是 Skill 的入口。SKILL.md 已存在,是 Skill 的入口。
  • README.md 已存在,便于人工阅读。README.md 已存在,便于人工阅读。
  • agents/interface.yaml 已存在,便于跨平台适配。agents/interface.yaml 已存在,便于跨平台适配。
触发清晰100
  • frontmatter description 已存在,具备基础路由面。frontmatter description 已存在,具备基础路由面。
  • description 有足够长度说明任务边界。description 有足够长度说明任务边界。
  • description 已包含使用场景或排除边界信号。description 已包含使用场景或排除边界信号。
证据充分100
  • 已生成 20 / 20 类报告证据。已生成 20 / 20 类报告证据。
  • skill-ir.json 已存在。skill-ir.json 已存在。
  • compiled_targets.json 已存在。compiled_targets.json 已存在。
可维护性100
  • SKILL.md 约 365 个词/字。SKILL.md 约 365 个词/字。
  • 入口文件保持克制,可维护性较好。入口文件保持克制,可维护性较好。
  • references/ 已承载扩展指导。references/ 已承载扩展指导。
可迁移性100
  • agents/interface.yaml 已存在。agents/interface.yaml 已存在。
  • manifest.json 已存在。manifest.json 已存在。
  • 目标平台或 adapter target 已声明。目标平台或 adapter target 已声明。
上下文成本42
  • 入口约 365 个词/字,references 约 14388 个词/字。入口约 365 个词/字,references 约 14388 个词/字。
  • 分数越高代表上下文成本越低。分数越高代表上下文成本越低。
  • 上下文成本偏高,建议压缩入口或拆分 references。上下文成本偏高,建议压缩入口或拆分 references。
+
完整度100
  • SKILL.md 已存在,是 Skill 的入口。SKILL.md 已存在,是 Skill 的入口。
  • README.md 已存在,便于人工阅读。README.md 已存在,便于人工阅读。
  • agents/interface.yaml 已存在,便于跨平台适配。agents/interface.yaml 已存在,便于跨平台适配。
触发清晰100
  • frontmatter description 已存在,具备基础路由面。frontmatter description 已存在,具备基础路由面。
  • description 有足够长度说明任务边界。description 有足够长度说明任务边界。
  • description 已包含使用场景或排除边界信号。description 已包含使用场景或排除边界信号。
证据充分100
  • 已生成 20 / 20 类报告证据。已生成 20 / 20 类报告证据。
  • skill-ir.json 已存在。skill-ir.json 已存在。
  • compiled_targets.json 已存在。compiled_targets.json 已存在。
可维护性100
  • SKILL.md 约 350 个词/字。SKILL.md 约 350 个词/字。
  • 入口文件保持克制,可维护性较好。入口文件保持克制,可维护性较好。
  • references/ 已承载扩展指导。references/ 已承载扩展指导。
可迁移性100
  • agents/interface.yaml 已存在。agents/interface.yaml 已存在。
  • manifest.json 已存在。manifest.json 已存在。
  • 目标平台或 adapter target 已声明。目标平台或 adapter target 已声明。
上下文成本42
  • 入口约 350 个词/字,references 约 14450 个词/字。入口约 350 个词/字,references 约 14450 个词/字。
  • 分数越高代表上下文成本越低。分数越高代表上下文成本越低。
  • 上下文成本偏高,建议压缩入口或拆分 references。上下文成本偏高,建议压缩入口或拆分 references。
@@ -720,7 +720,7 @@
- +
类型Type证据Evidence建议Action
强项Strength触发面保持精简,并锚定在 frontmatter description。The trigger surface stays lean and anchored in the frontmatter description.保留并复用Keep
强项Strength已生成 Skill IR,核心语义可先于平台打包被审查和迁移。已生成 Skill IR,核心语义可先于平台打包被审查和迁移。保留并复用Keep
强项Strength已生成目标编译报告,可审查 IR 到 OpenAI、Claude、generic 等目标契约的映射。已生成目标编译报告,可审查 IR 到 OpenAI、Claude、generic 等目标契约的映射。保留并复用Keep
缺口Gap上下文成本需要补强:入口约 365 个词/字,references 约 14388 个词/字。上下文成本需要补强:入口约 365 个词/字,references 约 14388 个词/字。纳入下一轮修复Fix next
强项Strength触发面保持精简,并锚定在 frontmatter description。The trigger surface stays lean and anchored in the frontmatter description.保留并复用Keep
强项Strength已生成 Skill IR,核心语义可先于平台打包被审查和迁移。已生成 Skill IR,核心语义可先于平台打包被审查和迁移。保留并复用Keep
强项Strength已生成目标编译报告,可审查 IR 到 OpenAI、Claude、generic 等目标契约的映射。已生成目标编译报告,可审查 IR 到 OpenAI、Claude、generic 等目标契约的映射。保留并复用Keep
缺口Gap上下文成本需要补强:入口约 350 个词/字,references 约 14450 个词/字。上下文成本需要补强:入口约 350 个词/字,references 约 14450 个词/字。纳入下一轮修复Fix next
@@ -757,7 +757,7 @@
- +
风险Risk信号Signal应对Response
误触发风险误触发风险frontmatter description 已存在,具备基础路由面。frontmatter description 已存在,具备基础路由面。先补证据和边界,再增加包体复杂度。先补证据和边界,再增加包体复杂度。
输出漂移风险输出漂移风险已生成 20 / 20 类报告证据。已生成 20 / 20 类报告证据。先补证据和边界,再增加包体复杂度。先补证据和边界,再增加包体复杂度。
证据不足风险证据不足风险已生成 20 / 20 类报告证据。已生成 20 / 20 类报告证据。先补证据和边界,再增加包体复杂度。先补证据和边界,再增加包体复杂度。
包体膨胀风险包体膨胀风险SKILL.md 约 365 个词/字。SKILL.md 约 365 个词/字。先补证据和边界,再增加包体复杂度。先补证据和边界,再增加包体复杂度。
跨平台迁移风险跨平台迁移风险agents/interface.yaml 已存在。agents/interface.yaml 已存在。先补证据和边界,再增加包体复杂度。先补证据和边界,再增加包体复杂度。
误触发风险误触发风险frontmatter description 已存在,具备基础路由面。frontmatter description 已存在,具备基础路由面。先补证据和边界,再增加包体复杂度。先补证据和边界,再增加包体复杂度。
输出漂移风险输出漂移风险已生成 20 / 20 类报告证据。已生成 20 / 20 类报告证据。先补证据和边界,再增加包体复杂度。先补证据和边界,再增加包体复杂度。
证据不足风险证据不足风险已生成 20 / 20 类报告证据。已生成 20 / 20 类报告证据。先补证据和边界,再增加包体复杂度。先补证据和边界,再增加包体复杂度。
包体膨胀风险包体膨胀风险SKILL.md 约 350 个词/字。SKILL.md 约 350 个词/字。先补证据和边界,再增加包体复杂度。先补证据和边界,再增加包体复杂度。
跨平台迁移风险跨平台迁移风险agents/interface.yaml 已存在。agents/interface.yaml 已存在。先补证据和边界,再增加包体复杂度。先补证据和边界,再增加包体复杂度。
diff --git a/reports/skill-overview.json b/reports/skill-overview.json index 34b1b054..0b68b3df 100644 --- a/reports/skill-overview.json +++ b/reports/skill-overview.json @@ -75,7 +75,7 @@ "label": "可维护性", "score": 100, "reasons": [ - "SKILL.md 约 365 个词/字。", + "SKILL.md 约 350 个词/字。", "入口文件保持克制,可维护性较好。", "references/ 已承载扩展指导。", "scripts/ 已承载确定性逻辑。", @@ -96,7 +96,7 @@ "label": "上下文成本", "score": 42, "reasons": [ - "入口约 365 个词/字,references 约 14388 个词/字。", + "入口约 350 个词/字,references 约 14450 个词/字。", "分数越高代表上下文成本越低。", "上下文成本偏高,建议压缩入口或拆分 references。" ] @@ -200,7 +200,7 @@ "已生成 Output Review Adjudication,可记录盲评决策、一致率和待评审项。" ], "gaps": [ - "上下文成本需要补强:入口约 365 个词/字,references 约 14388 个词/字。" + "上下文成本需要补强:入口约 350 个词/字,references 约 14450 个词/字。" ], "recommendations": [ "先改触发边界,再扩展工作流。", @@ -265,7 +265,7 @@ "name": "包体膨胀风险", "impact": 2, "probability": 1, - "signal": "SKILL.md 约 365 个词/字。", + "signal": "SKILL.md 约 350 个词/字。", "response": "先补证据和边界,再增加包体复杂度。" }, { @@ -716,7 +716,7 @@ "benchmark_highlights": [], "skill_ir": { "schema_version": "2.0.0", - "target_count": 4, + "target_count": 5, "trigger_samples": 8, "output_eval_cases": 3 }, @@ -724,8 +724,8 @@ "ok": true, "schema_version": "1.0", "summary": { - "target_count": 4, - "pass_count": 4, + "target_count": 5, + "pass_count": 5, "warn_count": 0, "block_count": 0, "failure_count": 0, @@ -790,6 +790,22 @@ ], "unsupported_features": [], "warnings": [] + }, + { + "target": "vscode", + "status": "pass", + "adapter_mode": "vscode-agent-skills-adapter", + "degradation_strategy": "agent-skills-source-with-vscode-notes", + "native_surface": "VS Code/Copilot Agent Skills project or user scope", + "permission_enforcement": "client-or-workspace-trust", + "generated_files": [ + "targets/vscode/adapter.json", + "targets/vscode/README.md" + ], + "unsupported_features": [ + "VS Code installation scope is documented but not installed by this compiler" + ], + "warnings": [] } ], "failures": [], @@ -871,12 +887,12 @@ "runtime_permissions": { "ok": true, "summary": { - "target_count": 3, - "pass_count": 3, + "target_count": 4, + "pass_count": 4, "fail_count": 0, "native_enforcement_count": 0, - "metadata_fallback_count": 3, - "residual_risk_count": 3, + "metadata_fallback_count": 4, + "residual_risk_count": 4, "required_capability_count": 3, "failure_count": 0 }, @@ -915,6 +931,16 @@ "residual_risks": [ "Client-native permission enforcement is not provided by this target; installer or operator must honor metadata." ] + }, + { + "target": "vscode", + "status": "pass", + "assurance": "metadata-fallback-explicit", + "native_enforcement": false, + "metadata_fallback_explicit": true, + "residual_risks": [ + "Client-native permission enforcement is not provided by this target; installer or operator must honor metadata." + ] } ], "failures": [] @@ -941,7 +967,7 @@ "interactive_script_count": 0, "package_hash_scope": "source-contract-without-generated-reports", "package_hash_file_count": 153, - "package_sha256": "2984db5f8d02b147c86bf259679e247a10a6fa495d123032be46c2e7fdaf8368" + "package_sha256": "2109ae8e212111b1619d8d728e54c73425fecc174113b45629c656ecceb3fadd" }, "skill_atlas": { "skill_count": 12, @@ -967,7 +993,8 @@ "openai", "claude", "generic", - "agent-skills-compatible" + "agent-skills-compatible", + "vscode" ], "maturity": "governed", "owner": "Yao Team", @@ -975,8 +1002,8 @@ "trust_level": "local", "license": "MIT", "checksums": { - "package_sha256": "2984db5f8d02b147c86bf259679e247a10a6fa495d123032be46c2e7fdaf8368", - "archive_sha256": "27fb62524da6ed2ccda448b7725e0154ee0fd3eccd4fe69a88494e67f4050353" + "package_sha256": "2109ae8e212111b1619d8d728e54c73425fecc174113b45629c656ecceb3fadd", + "archive_sha256": "176d93befb446985aaff7cd8325b05c4858da13177cb13db82d210aa2d264060" }, "compatibility": { "openai": "pass", @@ -1007,7 +1034,7 @@ }, "distribution": { "archive_verified": true, - "archive_sha256": "27fb62524da6ed2ccda448b7725e0154ee0fd3eccd4fe69a88494e67f4050353", + "archive_sha256": "176d93befb446985aaff7cd8325b05c4858da13177cb13db82d210aa2d264060", "package_verification": "reports/package_verification.json", "install_simulated": true, "install_simulation": "reports/install_simulation.json" @@ -1020,11 +1047,11 @@ "package_verification": { "ok": true, "summary": { - "target_count": 3, - "adapter_count": 3, + "target_count": 4, + "adapter_count": 4, "archive_present": true, - "archive_sha256": "27fb62524da6ed2ccda448b7725e0154ee0fd3eccd4fe69a88494e67f4050353", - "archive_entry_count": 492, + "archive_sha256": "176d93befb446985aaff7cd8325b05c4858da13177cb13db82d210aa2d264060", + "archive_entry_count": 493, "failure_count": 0, "warning_count": 0 }, @@ -1035,12 +1062,12 @@ "ok": true, "summary": { "archive_present": true, - "archive_entry_count": 492, + "archive_entry_count": 493, "archive_extracted": true, "entrypoint_loaded": true, "manifest_loaded": true, "interface_loaded": true, - "adapter_count": 3, + "adapter_count": 4, "install_root_is_temp": false, "failure_count": 0, "warning_count": 0 @@ -1054,7 +1081,7 @@ "declared_bump": "minor", "recommended_bump": "minor", "breaking_change_count": 0, - "added_target_count": 1, + "added_target_count": 2, "metadata_change_count": 1, "checksum_change_count": 2, "failure_count": 0, @@ -1063,7 +1090,8 @@ "upgrade_diff": { "name_changed": false, "added_targets": [ - "agent-skills-compatible" + "agent-skills-compatible", + "vscode" ], "removed_targets": [], "compatibility_changes": [ @@ -1097,18 +1125,18 @@ { "field": "archive_sha256", "from": "", - "to": "27fb62524da6ed2ccda448b7725e0154ee0fd3eccd4fe69a88494e67f4050353" + "to": "176d93befb446985aaff7cd8325b05c4858da13177cb13db82d210aa2d264060" }, { "field": "package_sha256", "from": "0000000000000000000000000000000000000000000000000000000000000000", - "to": "2984db5f8d02b147c86bf259679e247a10a6fa495d123032be46c2e7fdaf8368" + "to": "2109ae8e212111b1619d8d728e54c73425fecc174113b45629c656ecceb3fadd" } ] }, "release_notes": [ "Recommended version bump: minor.", - "Added targets: agent-skills-compatible.", + "Added targets: agent-skills-compatible, vscode.", "Package or archive checksum changed; reviewers should verify package artifacts before release.", "Package verification evidence: reports/package_verification.md." ], @@ -1250,7 +1278,8 @@ "targets": [ "openai", "claude", - "generic" + "generic", + "vscode" ], "maturity_tier": "governed", "skill_archetype": "governed", diff --git a/reports/skill_atlas.json b/reports/skill_atlas.json index adcc8af7..249003c2 100644 --- a/reports/skill_atlas.json +++ b/reports/skill_atlas.json @@ -57,7 +57,8 @@ "openai", "claude", "generic", - "agent-skills-compatible" + "agent-skills-compatible", + "vscode" ], "resources": [ "scripts/adjudicate_output_review.py", diff --git a/reports/upgrade_check.json b/reports/upgrade_check.json index b751d5f7..cc8ff8f3 100644 --- a/reports/upgrade_check.json +++ b/reports/upgrade_check.json @@ -18,14 +18,15 @@ "openai", "claude", "generic", - "agent-skills-compatible" + "agent-skills-compatible", + "vscode" ] }, "summary": { "declared_bump": "minor", "recommended_bump": "minor", "breaking_change_count": 0, - "added_target_count": 1, + "added_target_count": 2, "metadata_change_count": 1, "checksum_change_count": 2, "failure_count": 0, @@ -34,7 +35,8 @@ "upgrade_diff": { "name_changed": false, "added_targets": [ - "agent-skills-compatible" + "agent-skills-compatible", + "vscode" ], "removed_targets": [], "compatibility_changes": [ @@ -68,18 +70,18 @@ { "field": "archive_sha256", "from": "", - "to": "27fb62524da6ed2ccda448b7725e0154ee0fd3eccd4fe69a88494e67f4050353" + "to": "176d93befb446985aaff7cd8325b05c4858da13177cb13db82d210aa2d264060" }, { "field": "package_sha256", "from": "0000000000000000000000000000000000000000000000000000000000000000", - "to": "2984db5f8d02b147c86bf259679e247a10a6fa495d123032be46c2e7fdaf8368" + "to": "7a8dab0d542d2994adec2045b54559612db36f14db8b7b66e4138fb0435ae3d3" } ] }, "release_notes": [ "Recommended version bump: minor.", - "Added targets: agent-skills-compatible.", + "Added targets: agent-skills-compatible, vscode.", "Package or archive checksum changed; reviewers should verify package artifacts before release.", "Package verification evidence: reports/package_verification.md." ], diff --git a/reports/upgrade_check.md b/reports/upgrade_check.md index 2eb27d78..55f3cb20 100644 --- a/reports/upgrade_check.md +++ b/reports/upgrade_check.md @@ -9,7 +9,7 @@ ## Upgrade Diff -- Added targets: `agent-skills-compatible` +- Added targets: `agent-skills-compatible, vscode` - Removed targets: `none` - Compatibility changes: `3` - Metadata changes: `1` @@ -18,7 +18,7 @@ ## Release Notes - Recommended version bump: minor. -- Added targets: agent-skills-compatible. +- Added targets: agent-skills-compatible, vscode. - Package or archive checksum changed; reviewers should verify package artifacts before release. - Package verification evidence: reports/package_verification.md. diff --git a/scripts/compile_skill.py b/scripts/compile_skill.py index 62c59938..00fb4e9b 100644 --- a/scripts/compile_skill.py +++ b/scripts/compile_skill.py @@ -87,12 +87,14 @@ TARGET_TRANSFORMS: dict[str, dict[str, Any]] = { "unsupported_features": [], }, "vscode": { - "adapter_mode": "agent-skills-compatible-project-or-user-scope", - "generated_files": ["SKILL.md", "agents/interface.yaml"], + "adapter_mode": "vscode-agent-skills-adapter", + "generated_files": ["targets/vscode/adapter.json", "targets/vscode/README.md"], "metadata_mapping": { "name": "folder-name-and-SKILL.md::frontmatter.name", "description": "SKILL.md::frontmatter.description", "interface": "agents/interface.yaml", + "permissions": "targets/vscode/adapter.json::target_permission_contract", + "install_scope": "targets/vscode/README.md", }, "preserved_semantics": ["trigger", "workflow", "resources", "eval-plan", "risk", "governance", "runtime", "trust", "permissions"], "unsupported_features": ["VS Code installation scope is documented but not installed by this compiler"], @@ -265,6 +267,12 @@ TARGET_PERMISSION_MODELS = { "representation": "targets/generic/adapter.json::target_permission_contract", "operator_note": "Generic target exposes permission metadata for downstream clients to enforce or review.", }, + "vscode": { + "model": "vscode-workspace-trust-plus-metadata", + "native_enforcement": False, + "representation": "targets/vscode/adapter.json::target_permission_contract and targets/vscode/README.md install notes", + "operator_note": "VS Code target relies on project or user skill installation plus VS Code workspace trust; Yao preserves permission metadata for reviewer and installer checks.", + }, } @@ -545,7 +553,7 @@ def compile_target_contract(skill_dir: Path, target: str) -> dict[str, Any]: "preserved_semantics": [], "unsupported_features": [], } - if target not in declared and not (target == "agent-skills" and "agent-skills-compatible" in declared): + if target not in declared and not (target in {"agent-skills", "vscode"} and "agent-skills-compatible" in declared): warnings.append(f"Target is not declared in Skill IR or interface metadata: {target}") if not sources["ir"]: warnings.append("Skill IR is missing; compiler used frontmatter fallback") diff --git a/scripts/cross_packager.py b/scripts/cross_packager.py index 6799afee..994722a4 100644 --- a/scripts/cross_packager.py +++ b/scripts/cross_packager.py @@ -147,13 +147,17 @@ def build_semantic_contract( "targets": target_values, "source_files_count": count_list(ir, "source_files") if ir else 0, } + alias_declared = ( + platform in {"agent-skills", "vscode"} and "agent-skills-compatible" in target_values + ) semantic_parity = { "source": "skill-ir" if ir else "frontmatter-fallback", "ir_source": ir_source, "name_matches_ir": bool(ir) and frontmatter_name == name, "description_matches_ir": bool(ir) and frontmatter_description == description, "platform_declared_in_ir": platform in target_values - or (platform == "generic" and "agent-skills-compatible" in target_values), + or (platform == "generic" and "agent-skills-compatible" in target_values) + or alias_declared, "platform_declared_in_interface": platform in adapter_targets, "display_name_present": bool(interface.get("display_name")), "default_prompt_present": bool(interface.get("default_prompt")), @@ -356,6 +360,44 @@ PLATFORM_CONTRACTS = { "shell": "compatibility.execution.shell", }, }, + "vscode": { + "required_fields": [ + "name", + "description", + "version", + "display_name", + "short_description", + "default_prompt", + "job_to_be_done", + "ir_source", + "ir_schema_version", + "semantic_contract", + "semantic_parity", + "compiler", + "compiled_contract", + "permission_contract", + "target_permission_contract", + "target_native_contract", + "target_transform", + "canonical_metadata", + "canonical_format", + "activation_mode", + "execution_context", + "shell", + "trust_level", + "remote_inline_execution", + "degradation_strategy", + "portability_profile", + ], + "required_files": ["targets/vscode/adapter.json", "targets/vscode/README.md"], + "field_mapping": { + "name": "SKILL.md::frontmatter.name and folder name", + "description": "SKILL.md::frontmatter.description", + "display_name": "agents/interface.yaml::interface.display_name", + "execution_context": "compatibility.execution.context", + "permissions": "adapter.target_permission_contract", + }, + }, } EXCLUDED_ARCHIVE_PARTS = {".git", "__pycache__", ".venv", "venv", "node_modules", "dist"} @@ -463,6 +505,24 @@ def write_adapter(skill_dir: Path, out_dir: Path, platform: str) -> Path: encoding="utf-8", ) payload["install_hint"] = f"Use the packaged skill directly; this target relies on SKILL.md and optional neutral metadata." + elif platform == "vscode": + notes = target_dir / "README.md" + native = payload["target_native_contract"] + notes.write_text( + f"# VS Code / Copilot Agent Skills Package\n\n" + f"Install `{skill_dir.name}` as a VS Code user or project scoped Agent Skill. Keep the folder name aligned with `SKILL.md` frontmatter name.\n\n" + f"Native surface: {native['native_surface']}.\n\n" + f"Activation: {native['activation']['policy']}\n\n" + f"Resources: {native['resources']['strategy']}\n\n" + f"Scripts: {native['scripts']['strategy']}\n\n" + f"Permission model: {payload['target_permission_contract']['permission_model']}. " + "Review `target_permission_contract`, workspace trust, and `reports/security_trust_report.md` before running scripts.\n\n" + "This adapter does not perform automatic VS Code installation; it preserves the reviewed source package plus install notes.\n", + encoding="utf-8", + ) + payload["install_hint"] = ( + "Install the package as a VS Code user or project scoped Agent Skill; use targets/vscode/README.md for scope and trust notes." + ) else: payload["install_hint"] = f"Use {skill_dir.name} as an Agent Skills compatible package." path = target_dir / "adapter.json" @@ -511,9 +571,9 @@ def validate_exports(out_dir: Path, expectations: dict) -> dict: required_targets = expectations.get("required_targets", []) required_fields = expectations.get("required_fields", []) required_by_target = { - "openai": expectations.get("openai_required_files", []), - "claude": expectations.get("claude_required_files", []), - "generic": expectations.get("generic_required_files", []), + key[: -len("_required_files")]: value + for key, value in expectations.items() + if key.endswith("_required_files") } for target in required_targets: @@ -534,7 +594,7 @@ def validate_exports(out_dir: Path, expectations: dict) -> dict: def main() -> None: parser = argparse.ArgumentParser(description="Generate lightweight cross-platform packaging artifacts.") parser.add_argument("skill_dir", help="Path to the skill directory") - parser.add_argument("--platform", action="append", default=[], help="Target platform: openai, claude, generic") + parser.add_argument("--platform", action="append", default=[], help="Target platform: openai, claude, generic, vscode") parser.add_argument("--output-dir", default="dist", help="Output directory") parser.add_argument("--expectations", help="JSON file describing packaging expectations") parser.add_argument("--zip", action="store_true", help="Create a zip package") diff --git a/scripts/init_skill.py b/scripts/init_skill.py index be9b33e8..cef77861 100644 --- a/scripts/init_skill.py +++ b/scripts/init_skill.py @@ -129,6 +129,7 @@ compatibility: - "openai" - "claude" - "generic" + - "vscode" activation: mode: "manual" paths: [] @@ -143,6 +144,7 @@ compatibility: openai: "metadata-adapter" claude: "neutral-source-plus-adapter" generic: "neutral-source" + vscode: "agent-skills-source-with-vscode-notes" """ @@ -213,6 +215,7 @@ def build_manifest(name: str, mode: str, archetype: str) -> dict: "claude", "generic", "agent-skills-compatible", + "vscode", ], "factory_components": [ "references", diff --git a/scripts/probe_runtime_permissions.py b/scripts/probe_runtime_permissions.py index 6ea25045..de47dcdb 100644 --- a/scripts/probe_runtime_permissions.py +++ b/scripts/probe_runtime_permissions.py @@ -10,7 +10,7 @@ except ImportError: # pragma: no cover yaml = None -DEFAULT_TARGETS = ["openai", "claude", "generic"] +DEFAULT_TARGETS = ["openai", "claude", "generic", "vscode"] def display_path(path: Path, root: Path) -> str: diff --git a/scripts/verify_package.py b/scripts/verify_package.py index 4b277278..2cf7ea90 100644 --- a/scripts/verify_package.py +++ b/scripts/verify_package.py @@ -108,12 +108,13 @@ def verify_package( field in adapter, f"{target} adapter includes field: {field}", ) - for target, key in ( - ("openai", "openai_required_files"), - ("claude", "claude_required_files"), - ("generic", "generic_required_files"), - ): - for rel in expectations.get(key, []): + required_files_by_target = { + key[: -len("_required_files")]: value + for key, value in expectations.items() + if key.endswith("_required_files") + } + for target, required_files in required_files_by_target.items(): + for rel in required_files: add_check(checks, failures, f"{target}-file-{rel}", (package_dir / rel).exists(), f"Package contains {rel}") archive_path = package_dir / f"{skill_dir.name}.zip" diff --git a/skill-ir/examples/yao-meta-skill.json b/skill-ir/examples/yao-meta-skill.json index 6ae34345..46158989 100644 --- a/skill-ir/examples/yao-meta-skill.json +++ b/skill-ir/examples/yao-meta-skill.json @@ -280,7 +280,8 @@ "openai", "claude", "generic", - "agent-skills-compatible" + "agent-skills-compatible", + "vscode" ], "source_files": [ "SKILL.md", diff --git a/skill_atlas/catalog.json b/skill_atlas/catalog.json index d0bdd0f8..b5fe17b3 100644 --- a/skill_atlas/catalog.json +++ b/skill_atlas/catalog.json @@ -16,7 +16,8 @@ "openai", "claude", "generic", - "agent-skills-compatible" + "agent-skills-compatible", + "vscode" ], "resources": [ "scripts/adjudicate_output_review.py", diff --git a/tests/snapshots/vscode_adapter.json b/tests/snapshots/vscode_adapter.json new file mode 100644 index 00000000..a72867e5 --- /dev/null +++ b/tests/snapshots/vscode_adapter.json @@ -0,0 +1,26 @@ +{ + "platform": "vscode", + "canonical_metadata": "agents/interface.yaml", + "required_generated_file": "targets/vscode/README.md", + "required_fields": [ + "canonical_format", + "activation_mode", + "execution_context", + "shell", + "trust_level", + "remote_inline_execution", + "degradation_strategy", + "portability_profile", + "job_to_be_done", + "ir_source", + "ir_schema_version", + "semantic_contract", + "semantic_parity", + "compiler", + "compiled_contract", + "permission_contract", + "target_permission_contract", + "target_native_contract", + "target_transform" + ] +} diff --git a/tests/verify_adapter_snapshots.py b/tests/verify_adapter_snapshots.py index b390ba72..22f38d48 100644 --- a/tests/verify_adapter_snapshots.py +++ b/tests/verify_adapter_snapshots.py @@ -39,6 +39,8 @@ def main() -> None: "claude", "--platform", "generic", + "--platform", + "vscode", "--expectations", str(EXPECTATIONS), "--output-dir", @@ -54,7 +56,7 @@ def main() -> None: raise SystemExit(proc.returncode) failures = [] - for name in ("openai", "claude", "generic"): + for name in ("openai", "claude", "generic", "vscode"): snapshot = json.loads((SNAPSHOTS / f"{name}_adapter.json").read_text(encoding="utf-8")) adapter = json.loads((TMP / "targets" / name / "adapter.json").read_text(encoding="utf-8")) if adapter.get("platform") != snapshot["platform"]: @@ -152,6 +154,10 @@ def main() -> None: readme = (TMP / "targets" / "claude" / "README.md").read_text(encoding="utf-8") if "Native surface:" not in readme or "Activation:" not in readme: failures.append(f"{name}: generated README does not describe native behavior") + if name == "vscode": + readme = (TMP / "targets" / "vscode" / "README.md").read_text(encoding="utf-8") + if "VS Code / Copilot Agent Skills Package" not in readme or "workspace trust" not in readme: + failures.append(f"{name}: generated README does not describe VS Code install and trust behavior") report = {"ok": not failures, "failures": failures} print(json.dumps(report, ensure_ascii=False, indent=2)) diff --git a/tests/verify_compile_skill.py b/tests/verify_compile_skill.py index be5d6c50..6c3a0c25 100644 --- a/tests/verify_compile_skill.py +++ b/tests/verify_compile_skill.py @@ -44,6 +44,8 @@ def main() -> None: "claude", "--target", "generic", + "--target", + "vscode", "--output-json", str(output_json), "--output-md", @@ -54,13 +56,13 @@ def main() -> None: payload = json.loads(proc.stdout) assert payload["ok"], payload assert payload["schema_version"] == "1.0", payload - assert payload["summary"]["target_count"] == 3, payload - assert payload["summary"]["pass_count"] == 3, payload + assert payload["summary"]["target_count"] == 4, payload + assert payload["summary"]["pass_count"] == 4, payload assert output_json.exists(), output_json assert output_md.exists(), output_md assert "Compiled Targets" in output_md.read_text(encoding="utf-8") by_target = {item["target"]: item for item in payload["targets"]} - for target in ("openai", "claude", "generic"): + for target in ("openai", "claude", "generic", "vscode"): item = by_target[target] assert item["compiler"]["name"] == "yao-skill-ir-compiler", item assert item["compiler"]["source"] == "skill-ir", item diff --git a/tests/verify_install_simulation.py b/tests/verify_install_simulation.py index 60c79de3..dd822918 100644 --- a/tests/verify_install_simulation.py +++ b/tests/verify_install_simulation.py @@ -40,6 +40,8 @@ def build_package(out_dir: Path) -> dict: "claude", "--platform", "generic", + "--platform", + "vscode", "--expectations", str(EXPECTATIONS), "--output-dir", @@ -85,7 +87,7 @@ def main() -> None: assert payload["summary"]["entrypoint_loaded"], payload assert payload["summary"]["manifest_loaded"], payload assert payload["summary"]["interface_loaded"], payload - assert payload["summary"]["adapter_count"] == 3, payload + assert payload["summary"]["adapter_count"] == 4, payload assert not payload["failures"], payload assert "Install Simulation" in (TMP / "install_simulation.md").read_text(encoding="utf-8") diff --git a/tests/verify_package_verification.py b/tests/verify_package_verification.py index 4d519076..687b6686 100644 --- a/tests/verify_package_verification.py +++ b/tests/verify_package_verification.py @@ -40,6 +40,8 @@ def build_package(out_dir: Path) -> dict: "claude", "--platform", "generic", + "--platform", + "vscode", "--expectations", str(EXPECTATIONS), "--output-dir", @@ -84,8 +86,8 @@ def main() -> None: payload = valid["payload"] assert valid["ok"], valid assert payload["ok"], payload - assert payload["summary"]["target_count"] == 3, payload - assert payload["summary"]["adapter_count"] == 3, payload + assert payload["summary"]["target_count"] == 4, payload + assert payload["summary"]["adapter_count"] == 4, payload assert payload["summary"]["archive_present"], payload assert payload["summary"]["archive_sha256"], payload assert not payload["failures"], payload diff --git a/tests/verify_registry_audit.py b/tests/verify_registry_audit.py index a0f8d3db..7e769dfa 100644 --- a/tests/verify_registry_audit.py +++ b/tests/verify_registry_audit.py @@ -59,6 +59,7 @@ def main() -> None: assert package["compatibility"]["openai"] == "pass", package assert package["compatibility"]["claude"] == "pass", package assert package["compatibility"]["generic"] == "pass", package + assert package["compatibility"]["vscode"] == "pass", package assert (registry_dir / "index.json").exists(), registry_dir assert (registry_dir / "packages" / "yao-meta-skill.json").exists(), registry_dir assert output_json.exists(), output_json diff --git a/tests/verify_review_studio.py b/tests/verify_review_studio.py index 5deb892a..9a822e43 100644 --- a/tests/verify_review_studio.py +++ b/tests/verify_review_studio.py @@ -59,6 +59,8 @@ def main() -> None: "claude", "--platform", "generic", + "--platform", + "vscode", "--expectations", str(ROOT / "evals" / "packaging_expectations.json"), "--output-dir", @@ -266,7 +268,7 @@ def main() -> None: assert "gaps 0" in permission_gate["detail"], permission_gate permission_runtime_gate = next(item for item in payload["gates"] if item["key"] == "permission-runtime") assert permission_runtime_gate["status"] == "pass", permission_runtime_gate - assert "metadata fallback 3" in permission_runtime_gate["detail"], permission_runtime_gate + assert "metadata fallback 4" in permission_runtime_gate["detail"], permission_runtime_gate assert "native 0" in permission_runtime_gate["detail"], permission_runtime_gate intent_gate = next(item for item in payload["gates"] if item["key"] == "intent-canvas") assert intent_gate["status"] == "pass", intent_gate @@ -300,7 +302,7 @@ def main() -> None: assert full_payload["data"]["review_annotations"]["summary"]["annotation_count"] == 0, full_payload["data"]["review_annotations"] assert full_payload["data"]["compiled_targets"]["summary"]["target_count"] >= 4, full_payload["data"]["compiled_targets"] assert full_payload["data"]["compiled_targets"]["summary"]["block_count"] == 0, full_payload["data"]["compiled_targets"] - assert full_payload["data"]["runtime_permissions"]["summary"]["metadata_fallback_count"] == 3, full_payload["data"]["runtime_permissions"] + assert full_payload["data"]["runtime_permissions"]["summary"]["metadata_fallback_count"] == 4, full_payload["data"]["runtime_permissions"] assert full_payload["evidence_paths"]["runtime_permissions"] == "reports/runtime_permission_probes.md", full_payload["evidence_paths"] action_keys = {item["gate_key"] for item in full_payload["review_actions"]} assert action_keys == {"output-lab", "review-waivers"}, full_payload["review_actions"] diff --git a/tests/verify_runtime_permission_probes.py b/tests/verify_runtime_permission_probes.py index f5ef9ab5..859cc58f 100644 --- a/tests/verify_runtime_permission_probes.py +++ b/tests/verify_runtime_permission_probes.py @@ -40,6 +40,8 @@ def main() -> None: "claude", "--platform", "generic", + "--platform", + "vscode", "--expectations", str(ROOT / "evals" / "packaging_expectations.json"), "--output-dir", @@ -65,12 +67,12 @@ def main() -> None: assert probe["ok"], probe payload = probe["payload"] summary = payload["summary"] - assert summary["target_count"] == 3, summary - assert summary["pass_count"] == 3, summary + assert summary["target_count"] == 4, summary + assert summary["pass_count"] == 4, summary assert summary["fail_count"] == 0, summary assert summary["native_enforcement_count"] == 0, summary - assert summary["metadata_fallback_count"] == 3, summary - assert summary["residual_risk_count"] == 3, summary + assert summary["metadata_fallback_count"] == 4, summary + assert summary["residual_risk_count"] == 4, summary assert payload["expected_capabilities"] == ["file_write", "network", "subprocess"], payload assert {item["assurance"] for item in payload["targets"]} == {"metadata-fallback-explicit"}, payload["targets"] assert (TMP / "runtime_permission_probes.md").exists(), TMP diff --git a/tests/verify_upgrade_check.py b/tests/verify_upgrade_check.py index 945f3813..cbe21380 100644 --- a/tests/verify_upgrade_check.py +++ b/tests/verify_upgrade_check.py @@ -52,6 +52,7 @@ def main() -> None: assert payload["summary"]["declared_bump"] == "minor", payload assert payload["summary"]["recommended_bump"] == "minor", payload assert "agent-skills-compatible" in payload["upgrade_diff"]["added_targets"], payload + assert "vscode" in payload["upgrade_diff"]["added_targets"], payload assert output_json.exists(), output_json assert "Upgrade Check" in output_md.read_text(encoding="utf-8"), output_md diff --git a/tests/verify_yao_cli.py b/tests/verify_yao_cli.py index ad334c87..1b84046c 100644 --- a/tests/verify_yao_cli.py +++ b/tests/verify_yao_cli.py @@ -336,9 +336,9 @@ def main() -> None: assert created_skill_ir["schema_version"] == "2.0.0", created_skill_ir assert created_skill_ir["trigger_surface"]["description"], created_skill_ir - compile_result = run("compile-skill", str(created), "--target", "openai", "--target", "claude", "--target", "generic") + compile_result = run("compile-skill", str(created), "--target", "openai", "--target", "claude", "--target", "generic", "--target", "vscode") assert compile_result["ok"], compile_result - assert compile_result["payload"]["summary"]["target_count"] == 3, compile_result + assert compile_result["payload"]["summary"]["target_count"] == 4, compile_result assert compile_result["payload"]["summary"]["block_count"] == 0, compile_result assert compile_result["payload"]["artifacts"]["markdown"].endswith("reports/compiled_targets.md"), compile_result @@ -523,6 +523,8 @@ def main() -> None: "claude", "--platform", "generic", + "--platform", + "vscode", "--expectations", str(ROOT / "evals" / "packaging_expectations.json"), "--output-dir", @@ -548,7 +550,7 @@ def main() -> None: "2026-06-13", ) assert package_verify_result["ok"], package_verify_result - assert package_verify_result["payload"]["summary"]["adapter_count"] == 3, package_verify_result + assert package_verify_result["payload"]["summary"]["adapter_count"] == 4, package_verify_result assert package_verify_result["payload"]["summary"]["archive_sha256"], package_verify_result runtime_permissions_result = run( @@ -562,7 +564,7 @@ def main() -> None: str(tmp_root / "runtime_permission_probes.md"), ) assert runtime_permissions_result["ok"], runtime_permissions_result - assert runtime_permissions_result["payload"]["summary"]["metadata_fallback_count"] == 3, runtime_permissions_result + assert runtime_permissions_result["payload"]["summary"]["metadata_fallback_count"] == 4, runtime_permissions_result assert runtime_permissions_result["payload"]["summary"]["native_enforcement_count"] == 0, runtime_permissions_result install_simulate_result = run( @@ -581,7 +583,7 @@ def main() -> None: ) assert install_simulate_result["ok"], install_simulate_result assert install_simulate_result["payload"]["summary"]["archive_extracted"], install_simulate_result - assert install_simulate_result["payload"]["summary"]["adapter_count"] == 3, install_simulate_result + assert install_simulate_result["payload"]["summary"]["adapter_count"] == 4, install_simulate_result upgrade_result = run( "upgrade-check",