Compare commits
12 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 9f793d59cf | |||
| 5fbed1d273 | |||
| 6ccb9c86ba | |||
| f37e78def3 | |||
| 00a0a1f0c6 | |||
| ff7381948e | |||
| 21b243e0f5 | |||
| a30bb845d9 | |||
| 715fc750e0 | |||
| d3b74d78ff | |||
| 375dc490da | |||
| 31ce04c655 |
@@ -3,6 +3,7 @@ dist/
|
||||
*.zip
|
||||
__pycache__/
|
||||
tests/tmp/
|
||||
tests/tmp_*/
|
||||
tests/tmp_snapshot/
|
||||
tests/tmp_cli/
|
||||
tests/tmp_skill_overview/
|
||||
@@ -23,9 +24,12 @@ tests/tmp_baseline_compare.*
|
||||
reports/release_snapshots/
|
||||
reports/telemetry_events.jsonl
|
||||
.yao/
|
||||
evidence/world_class/submission-kit/
|
||||
evidence/world_class/submissions/
|
||||
|
||||
# Local business-skill experiments belong outside this meta-skill repo unless promoted intentionally.
|
||||
geo-ranking-article-generator/
|
||||
|
||||
# Private or one-off pattern analysis reports should not be committed as factory evidence.
|
||||
reports/*pattern-analysis*.md
|
||||
reports/*research-plan*.md
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Binary file not shown.
|
After Width: | Height: | Size: 771 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 685 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 1.1 MiB |
@@ -0,0 +1,72 @@
|
||||
# Geo Content Brief Skill
|
||||
|
||||
## What It Does
|
||||
|
||||
`geo-content-brief-skill` is a reusable skill package for this job:
|
||||
|
||||
> 将 GEO 内容访谈、关键词笔记、竞品线索和渠道约束整理成可执行的中文内容简报。用于团队复用、选题规划、内容生产交接和质量评审;不用于直接代写完整长文或替代品牌策略判断。
|
||||
|
||||
## 中文使用方式
|
||||
|
||||
1. 输入访谈纪要、关键词、渠道限制、竞品摘要、品牌禁区或已有内容方向。
|
||||
2. 先判断请求是否属于“生成内容简报”,而不是完整长文、广告口号或品牌策略。
|
||||
3. 按 `references/brief-structure.md` 输出一页中文简报。
|
||||
4. 用 `references/review-checklist.md` 检查事实、结构、证据、风险和下一步动作。
|
||||
5. 用 `evals/trigger_cases.jsonl` 和 `evals/output_cases.jsonl` 做轻量回归。
|
||||
|
||||
## How To Use
|
||||
|
||||
1. Load the skill through `SKILL.md`.
|
||||
2. Start with `reports/intent-dialogue.md` to tighten the real job, outputs, exclusions, and the standards you care about.
|
||||
3. Open `reports/reference-scan.md` to capture external benchmarks and any user-supplied references worth learning from.
|
||||
4. Review `reports/intent-confidence.md` to see whether the real job, inputs, outputs, and exclusions are clear enough yet.
|
||||
5. Open `reports/reference-synthesis.md` to see the GitHub benchmarks plus curated official, research, and principle tracks in one place.
|
||||
6. Follow the workflow steps in `SKILL.md`.
|
||||
7. Check `reports/skill-overview.html` for the generated bilingual HTML skill audit report: overview, metrics, capability profile, principle, contract, quality, risk, assets, and iteration roadmap. It defaults to Simplified Chinese and includes an English switch in the top right.
|
||||
8. Open `reports/review-studio.html` for the one-page Review Studio 2.0 gate view.
|
||||
9. Record source-line reviewer comments in `reports/review_annotations.md` when review needs follow-up.
|
||||
10. Open `reports/review-viewer.html` for a compact visual review of the package.
|
||||
11. Check `reports/output-risk-profile.md` to see likely output mistakes and self-repair checks.
|
||||
12. Check `reports/artifact-design-profile.md` to see the intended artifact direction, layout patterns, visual quality gates, and anti-patterns.
|
||||
13. Check `reports/prompt-quality-profile.md` to see the need model, RTF-to-skill mapping, complexity, and prompt-facing quality matrix.
|
||||
14. Review `reports/skill-ir.json` for the platform-neutral Skill IR contract before platform-specific packaging.
|
||||
15. Review `reports/compiled_targets.md` to see how Skill IR compiles into OpenAI, Claude, generic, and Agent Skills compatible target contracts.
|
||||
16. Review `reports/iteration-directions.md` for the three most valuable next moves.
|
||||
17. Review `reports/system-model.md` to understand the boundary, feedback loops, drift watch, failure map, and highest-leverage next changes.
|
||||
18. Review `reports/adoption_drift_report.md` to see local-first metadata-only adoption and drift signals.
|
||||
19. Review `reports/review_waivers.md` to see human reviewer risk approvals and expiry dates.
|
||||
|
||||
## Honest Boundaries
|
||||
|
||||
- This package starts from the current intent frame and should not pretend to cover unclear adjacent jobs.
|
||||
- The first version should ask for clarification when the real input, output, or exclusion boundary is still fuzzy.
|
||||
- New structure should be added only when it earns its keep through evidence, validation, or reviewer need.
|
||||
- It should not fabricate search volume, competitor rankings, customer quotes, or third-party evidence.
|
||||
|
||||
## Package Map
|
||||
|
||||
- `SKILL.md`: trigger and workflow entrypoint
|
||||
- `agents/interface.yaml`: portable interface metadata
|
||||
- `manifest.json`: lifecycle and packaging metadata
|
||||
- `references/brief-structure.md`: 中文 GEO 内容简报结构、字段说明和质量标准
|
||||
- `references/review-checklist.md`: 交付前编辑复核清单
|
||||
- `evals/trigger_cases.jsonl`: 应触发和不应触发样例
|
||||
- `evals/output_cases.jsonl`: 输出结构验收样例
|
||||
- `reports/intent-dialogue.md`: front-loaded discovery questions for better boundary design and clearer human alignment
|
||||
- `reports/intent-confidence.md`: current clarity score, open gaps, and the next follow-up questions worth asking
|
||||
- `reports/github-benchmark-scan.md`: top public benchmark repositories, extracted patterns, and borrow or avoid notes
|
||||
- `reports/reference-scan.md`: benchmark notes from public references, user references, and local constraints
|
||||
- `reports/reference-synthesis.md`: a combined view of GitHub benchmarks plus curated world-class pattern tracks
|
||||
- `reports/output-risk-profile.md`: predicted output failure modes and self-repair constraints for this skill
|
||||
- `reports/artifact-design-profile.md`: artifact-specific design direction, layout patterns, visual quality gates, and anti-patterns
|
||||
- `reports/prompt-quality-profile.md`: prompt-facing need model, RTF mapping, complexity, and quality matrix
|
||||
- `reports/system-model.md`: systems-thinking model for boundary, feedback loops, drift, failure patterns, and leverage points
|
||||
- `reports/skill-ir.json`: platform-neutral 2.0 Skill IR contract for trigger, workflow, resources, evals, risk, and governance
|
||||
- `reports/compiled_targets.md`: target compiler report showing generated contracts, adapter modes, preserved semantics, warnings, and unsupported features
|
||||
- `reports/skill-overview.html`: white-background bilingual HTML skill audit report with sticky four-character Chinese navigation, a top-right language switch, metrics, SVG charts, contract boundary, quality review, risk governance, assets, and iteration roadmap
|
||||
- `reports/review-studio.html`: Review Studio 2.0 gate page for intent, trigger, output eval, context, runtime conformance, trust, atlas, and release readiness
|
||||
- `reports/review-viewer.html`: compact review page for architecture, usage, feedback, and next steps
|
||||
- `reports/iteration-directions.md`: the top three next iteration directions
|
||||
- `reports/adoption_drift_report.md`: local-first metadata-only telemetry summary for adoption, missed triggers, bad outputs, script errors, and review drift
|
||||
- `reports/review_waivers.md`: human reviewer risk approval ledger for warning acceptance and expiry
|
||||
- `reports/review_annotations.md`: source-line reviewer comments linked to Review Studio gates
|
||||
@@ -0,0 +1,57 @@
|
||||
---
|
||||
name: geo-content-brief-skill
|
||||
description: "将 GEO 内容访谈、关键词笔记、竞品线索和渠道约束整理成可执行的中文内容简报。用于团队复用、选题规划、内容生产交接和质量评审;不用于直接代写完整长文或替代品牌策略判断。"
|
||||
---
|
||||
|
||||
# Geo Content Brief Skill
|
||||
|
||||
## When To Use This Skill
|
||||
|
||||
- 用户提供访谈纪要、关键词、竞品片段、产品卖点或渠道限制,希望沉淀为中文内容简报。
|
||||
- 团队需要把零散输入转换成可执行的 GEO 内容选题、角度、结构、证据和交付要求。
|
||||
- 需要先明确触发边界、输入缺口和输出验收标准,再进入内容生产。
|
||||
|
||||
## Workflow
|
||||
|
||||
1. 读取用户输入,识别目标受众、内容渠道、关键词、品牌边界、禁止表达和必须覆盖的信息。
|
||||
2. 对照 `references/brief-structure.md` 生成简报骨架:目标、洞察、角度、关键词、结构、证据、风险和验收标准。
|
||||
3. 如果缺少核心输入,先提出最多三个澄清问题,不用假设补全用户没有提供的事实。
|
||||
4. 用 `evals/trigger_cases.jsonl` 检查当前请求是否属于 GEO 内容简报场景。
|
||||
5. 用 `evals/output_cases.jsonl` 检查输出是否包含输入摘要、内容结构、证据要求、禁区和下一步动作。
|
||||
6. 交付前回看渠道限制和品牌禁区,删除空泛营销话术、无来源断言和不可执行建议。
|
||||
|
||||
## Inputs
|
||||
|
||||
- 访谈纪要、销售反馈、客户问题或专家观点。
|
||||
- 关键词、搜索意图、竞品页面摘要或排名线索。
|
||||
- 目标渠道、目标读者、品牌口径、禁用词和交付格式。
|
||||
|
||||
## Outputs
|
||||
|
||||
- 一页中文内容简报,包含目标、受众、核心洞察、推荐角度、文章结构、关键词布置、证据需求和风险提示。
|
||||
- 缺口清单,说明继续生产前必须补齐的信息。
|
||||
- 下一步动作,面向写作者、编辑或 SEO/GEO 负责人。
|
||||
|
||||
## Output Quality Guardrails
|
||||
|
||||
- Before final output, apply the likely failure modes in `reports/output-risk-profile.md` when that report is present.
|
||||
- Before rendering reports, tutorials, review pages, dashboards, or visual artifacts, apply the artifact direction and visual quality gates in `reports/artifact-design-profile.md` when that report is present.
|
||||
- When prompt behavior, role design, dialogue quality, or output contracts matter, apply `reports/prompt-quality-profile.md` when that report is present.
|
||||
- Before adding more structure, apply the boundary, feedback-loop, drift, and leverage-point checks in `reports/system-model.md` when that report is present.
|
||||
- Repair generic headings, cluttered notes, fragile visual assumptions, weak tables, and missing verification cues before handing work back.
|
||||
- Map role, task, and format into skill behavior rather than copying a large prompt template into `SKILL.md`.
|
||||
- Let the artifact's content choose the visual system; do not copy a fixed palette or report style from another skill without a clear reason.
|
||||
- If output-specific evidence is missing, state the gap instead of inventing screenshots, citations, data, or examples.
|
||||
|
||||
## Honest Boundaries
|
||||
|
||||
- 不直接代写完整长文,不替代品牌策略判断,不伪造竞品数据、搜索量、排名或引用来源。
|
||||
- 当用户只想要标题灵感、广告文案、舆情分析或完整文章撰写时,不应触发本 Skill。
|
||||
- 缺少目标读者、渠道或关键词时,先收紧输入,再输出简报。
|
||||
|
||||
## Reference Map
|
||||
|
||||
- `references/brief-structure.md`: 中文 GEO 内容简报结构、字段说明和质量标准。
|
||||
- `references/review-checklist.md`: 交付前的编辑复核清单。
|
||||
- `evals/trigger_cases.jsonl`: 应触发和不应触发样例。
|
||||
- `evals/output_cases.jsonl`: 输出结构验收样例。
|
||||
@@ -0,0 +1,29 @@
|
||||
interface:
|
||||
display_name: "Geo Content Brief Skill"
|
||||
short_description: "将 GEO 内容访谈、关键词笔记、竞品线索和渠道约束整理成可执行的中文内容简报。"
|
||||
default_prompt: "当你需要把访谈纪要、关键词、竞品线索和渠道限制整理成中文 GEO 内容简报时,使用 $geo-content-brief-skill。"
|
||||
compatibility:
|
||||
canonical_format: "agent-skills"
|
||||
adapter_targets:
|
||||
- "openai"
|
||||
- "claude"
|
||||
- "generic"
|
||||
- "vscode"
|
||||
activation:
|
||||
mode: "manual"
|
||||
paths:
|
||||
- "SKILL.md"
|
||||
- "references/brief-structure.md"
|
||||
- "evals/trigger_cases.jsonl"
|
||||
execution:
|
||||
context: "inline"
|
||||
shell: "bash"
|
||||
trust:
|
||||
source_tier: "local"
|
||||
remote_inline_execution: "forbid"
|
||||
remote_metadata_policy: "allow-metadata-only"
|
||||
degradation:
|
||||
openai: "metadata-adapter"
|
||||
claude: "neutral-source-plus-adapter"
|
||||
generic: "neutral-source"
|
||||
vscode: "agent-skills-source-with-vscode-notes"
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
{"id":"brief_minimum_contract","input":"访谈纪要、关键词、渠道、品牌禁区","must_include":["输入摘要","目标读者","搜索意图","内容角度","结构建议","证据需求","风险禁区","下一步动作"],"must_not_include":["虚构搜索量","无来源竞品排名","完整长文正文"]}
|
||||
{"id":"missing_evidence_behavior","input":"只有关键词,没有访谈、渠道和品牌限制","must_include":["缺口清单","最多三个澄清问题","待补充证据"],"must_not_include":["假设用户品牌口径","编造客户原话"]}
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
{"id":"should_geo_interview_notes","input":"这里有一段客户访谈和 8 个 GEO 关键词,帮我整理成一份中文内容简报,给写作者用。","expected":"trigger","reason":"用户明确要把访谈和关键词整理为内容简报。"}
|
||||
{"id":"should_competitor_brief","input":"把这些竞品页面摘要、品牌禁区和知乎渠道限制整理成一页选题简报。","expected":"trigger","reason":"输入包含竞品、品牌边界和渠道约束,输出是一页简报。"}
|
||||
{"id":"should_not_full_article","input":"根据这些关键词直接帮我写一篇 3000 字完整文章。","expected":"no_trigger","reason":"用户要完整长文写作,不是生成内容简报。"}
|
||||
{"id":"should_not_ad_copy","input":"给这个活动想 20 条广告口号,越短越好。","expected":"no_trigger","reason":"广告口号生成不属于 GEO 内容简报。"}
|
||||
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"name": "geo-content-brief-skill",
|
||||
"version": "0.1.0",
|
||||
"owner": "Yao Team",
|
||||
"updated_at": "2026-06-15",
|
||||
"status": "active",
|
||||
"maturity_tier": "production",
|
||||
"lifecycle_stage": "production-preview",
|
||||
"context_budget_tier": "production",
|
||||
"review_cadence": "per-release",
|
||||
"skill_archetype": "production",
|
||||
"target_platforms": [
|
||||
"openai",
|
||||
"claude",
|
||||
"generic",
|
||||
"agent-skills-compatible",
|
||||
"vscode"
|
||||
],
|
||||
"factory_components": [
|
||||
"references",
|
||||
"scripts",
|
||||
"reports"
|
||||
]
|
||||
}
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
# GEO 内容简报结构
|
||||
|
||||
## 目标
|
||||
|
||||
把零散材料整理成写作者可以直接执行的一页内容简报。简报应帮助团队快速判断:写给谁、解决什么问题、采用什么角度、需要哪些证据、哪些话不能说。
|
||||
|
||||
## 推荐字段
|
||||
|
||||
- 项目背景:产品、业务目标、目标渠道和期望交付物。
|
||||
- 目标读者:读者身份、已知问题、决策阶段和内容理解门槛。
|
||||
- 搜索意图:核心关键词、近义词、长尾问题和需要避开的无关意图。
|
||||
- 内容角度:建议主张、差异化角度、可引用观点和与竞品的区分点。
|
||||
- 结构建议:标题方向、章节顺序、每节回答的问题和必要证据。
|
||||
- 证据需求:内部数据、案例、截图、第三方来源、专家观点或客户原话。
|
||||
- 风险禁区:禁止承诺、敏感表述、未证实数据、品牌不采用的语气。
|
||||
- 验收标准:完成后需要检查的结构、事实、语气、关键词和行动建议。
|
||||
|
||||
## 质量标准
|
||||
|
||||
- 每个推荐角度都应能追溯到输入材料或明确标记为待验证假设。
|
||||
- 缺少事实证据时写“待补充证据”,不要编造来源。
|
||||
- 输出要服务内容生产交接,避免泛泛的市场建议。
|
||||
- 中文表达要具体、可执行、便于编辑继续拆稿。
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
# 内容简报复核清单
|
||||
|
||||
交付前按以下顺序检查:
|
||||
|
||||
1. 输入摘要是否覆盖访谈、关键词、渠道限制和品牌禁区。
|
||||
2. 目标读者是否具体到角色、问题和决策阶段。
|
||||
3. 推荐角度是否能从输入材料中找到依据。
|
||||
4. 文章结构是否能直接分配给写作者执行。
|
||||
5. 证据需求是否列出已拥有证据和待补证据。
|
||||
6. 风险提示是否包含禁用表达、未证实数据和不应承诺的结果。
|
||||
7. 下一步动作是否明确谁继续补材料、谁写稿、谁审核。
|
||||
+62
@@ -0,0 +1,62 @@
|
||||
{
|
||||
"ok": true,
|
||||
"schema_version": "2.0",
|
||||
"generated_at": "2026-06-15T09:03:27Z",
|
||||
"skill_dir": ".previews/yao-meta-skill-v2-report-demo/geo-content-brief-skill",
|
||||
"privacy_contract": {
|
||||
"storage": "local-first",
|
||||
"event_scope": "metadata-only",
|
||||
"raw_content_allowed": false,
|
||||
"raw_event_log_packaged": false,
|
||||
"blocked_fields": [
|
||||
"content",
|
||||
"input",
|
||||
"inputs",
|
||||
"message",
|
||||
"messages",
|
||||
"note",
|
||||
"output",
|
||||
"outputs",
|
||||
"prompt",
|
||||
"raw",
|
||||
"text",
|
||||
"transcript"
|
||||
]
|
||||
},
|
||||
"summary": {
|
||||
"event_count": 0,
|
||||
"adoption_sample_count": 0,
|
||||
"activation_count": 0,
|
||||
"accepted_count": 0,
|
||||
"edited_count": 0,
|
||||
"rejected_count": 0,
|
||||
"missed_count": 0,
|
||||
"failed_count": 0,
|
||||
"adoption_rate": 0,
|
||||
"missed_trigger_count": 0,
|
||||
"wrong_trigger_count": 0,
|
||||
"bad_output_count": 0,
|
||||
"script_error_count": 0,
|
||||
"missing_resource_count": 0,
|
||||
"review_overdue_count": 0,
|
||||
"risk_band": "no-data",
|
||||
"event_types": {},
|
||||
"failure_types": {},
|
||||
"source_types": {},
|
||||
"command_counts": {}
|
||||
},
|
||||
"adoption_by_skill": [],
|
||||
"next_iteration_candidates": [
|
||||
{
|
||||
"signal": "no telemetry",
|
||||
"recommendation": "Start with a small metadata-only sample before using telemetry for release decisions."
|
||||
}
|
||||
],
|
||||
"recent_events": [],
|
||||
"failures": [],
|
||||
"artifacts": {
|
||||
"events_jsonl": ".previews/yao-meta-skill-v2-report-demo/geo-content-brief-skill/reports/telemetry_events.jsonl",
|
||||
"json": ".previews/yao-meta-skill-v2-report-demo/geo-content-brief-skill/reports/adoption_drift_report.json",
|
||||
"markdown": ".previews/yao-meta-skill-v2-report-demo/geo-content-brief-skill/reports/adoption_drift_report.md"
|
||||
}
|
||||
}
|
||||
+36
@@ -0,0 +1,36 @@
|
||||
# Adoption And Drift Report
|
||||
|
||||
Local-first, metadata-only telemetry for skill operations. Raw prompts, outputs, transcripts, and notes are not allowed in the event stream.
|
||||
|
||||
## Summary
|
||||
|
||||
- Events: `0`
|
||||
- Adoption samples: `0`
|
||||
- Activation events: `0`
|
||||
- Adoption rate: `0`
|
||||
- Missed trigger signals: `0`
|
||||
- Bad output signals: `0`
|
||||
- Script error signals: `0`
|
||||
- Review overdue signals: `0`
|
||||
- Risk band: `no-data`
|
||||
|
||||
## Privacy Contract
|
||||
|
||||
- Storage is local-first.
|
||||
- Events are metadata-only.
|
||||
- Raw user prompts, model outputs, transcripts, notes, and messages are blocked.
|
||||
- Distributed packages should include this aggregate report, not raw `reports/telemetry_events.jsonl`.
|
||||
|
||||
## Adoption By Skill
|
||||
|
||||
| Skill | Events | Adoption Samples | Accepted | Edited | Rejected | Missed | Adoption Rate |
|
||||
| --- | ---: | ---: | ---: | ---: | ---: | ---: | ---: |
|
||||
| `none` | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
|
||||
|
||||
## Next Iteration Candidates
|
||||
|
||||
- `no telemetry`: Start with a small metadata-only sample before using telemetry for release decisions.
|
||||
|
||||
## Recent Metadata Events
|
||||
|
||||
- No metadata events captured yet.
|
||||
+115
@@ -0,0 +1,115 @@
|
||||
{
|
||||
"skill_name": "geo-content-brief-skill",
|
||||
"design_system": "metric editorial",
|
||||
"primary_artifact": {
|
||||
"key": "report",
|
||||
"label": "Report or brief",
|
||||
"direction": "High-trust editorial report with a clear first-screen thesis, compact evidence blocks, and decisions separated from supporting detail.",
|
||||
"matched_keywords": [
|
||||
"report",
|
||||
"brief",
|
||||
"简报"
|
||||
]
|
||||
},
|
||||
"artifact_families": [
|
||||
{
|
||||
"key": "report",
|
||||
"label": "Report or brief",
|
||||
"score": 3,
|
||||
"matched_keywords": [
|
||||
"report",
|
||||
"brief",
|
||||
"简报"
|
||||
],
|
||||
"direction": "High-trust editorial report with a clear first-screen thesis, compact evidence blocks, and decisions separated from supporting detail."
|
||||
},
|
||||
{
|
||||
"key": "review_viewer",
|
||||
"label": "Review viewer",
|
||||
"score": 2,
|
||||
"matched_keywords": [
|
||||
"review",
|
||||
"审查"
|
||||
],
|
||||
"direction": "Side-by-side reviewer studio with explicit tradeoffs, evidence readiness, and fast paths for approving, blocking, or requesting one focused fix."
|
||||
},
|
||||
{
|
||||
"key": "dashboard",
|
||||
"label": "Dashboard or metrics page",
|
||||
"score": 2,
|
||||
"matched_keywords": [
|
||||
"dashboard",
|
||||
"table"
|
||||
],
|
||||
"direction": "Metric-first dashboard with stable dimensions, short labels, visible deltas, and narrative callouts only where they change interpretation."
|
||||
},
|
||||
{
|
||||
"key": "tutorial",
|
||||
"label": "Tutorial or guide",
|
||||
"score": 1,
|
||||
"matched_keywords": [
|
||||
"tutorial"
|
||||
],
|
||||
"direction": "Progressive instructional layout with domain-specific section names, short success checks, and examples close to the user's real input."
|
||||
},
|
||||
{
|
||||
"key": "visual_capture",
|
||||
"label": "Screenshot or visual evidence",
|
||||
"score": 1,
|
||||
"matched_keywords": [
|
||||
"screenshot"
|
||||
],
|
||||
"direction": "Evidence-led visual artifact that records source, viewport, crop intent, and the exact region the reader should inspect."
|
||||
}
|
||||
],
|
||||
"layout_patterns": [
|
||||
"thesis",
|
||||
"evidence blocks",
|
||||
"decision table",
|
||||
"risks",
|
||||
"next actions",
|
||||
"summary",
|
||||
"variant comparison",
|
||||
"evidence"
|
||||
],
|
||||
"design_tokens": {
|
||||
"type": [
|
||||
"Use a distinctive display face or serif for major claims when the artifact is editorial.",
|
||||
"Use a restrained sans for dense body text and technical details.",
|
||||
"Use mono only for metadata, paths, commands, labels, and evidence tags."
|
||||
],
|
||||
"color": [
|
||||
"Choose colors from the artifact's domain, brand, or evidence mood.",
|
||||
"Do not default to Kami parchment, purple gradients, or generic SaaS blue unless the content justifies it.",
|
||||
"Keep accent color limited to decisions, active states, risk, or section anchors."
|
||||
],
|
||||
"spacing": [
|
||||
"Prefer clear grid rhythm over floating decorative cards.",
|
||||
"Increase whitespace around decisions and shrink whitespace around supporting metadata.",
|
||||
"Split dense content instead of shrinking type or adding scroll traps."
|
||||
],
|
||||
"components": [
|
||||
"Use cards for grouped evidence, tables for comparisons, callouts for decisions, and timelines for sequence.",
|
||||
"Avoid cards inside cards.",
|
||||
"Keep reviewer-only detail visible but visually quieter than user-facing guidance."
|
||||
]
|
||||
},
|
||||
"quality_gates": [
|
||||
"Keep the first screen useful without requiring the reader to parse every detail.",
|
||||
"Use tables only for comparisons; move explanations below the table.",
|
||||
"Keep source notes readable without flooding the body with markers.",
|
||||
"Make differences visible instead of hiding them in prose.",
|
||||
"Separate author-facing recommendations from reviewer-only evidence.",
|
||||
"Surface conflicts clearly and keep routine benchmark synthesis quiet.",
|
||||
"Avoid paragraph-heavy table cells.",
|
||||
"Keep charts tied to one analytical question each."
|
||||
],
|
||||
"anti_patterns": [
|
||||
"Do not copy Kami's fixed parchment background as a default.",
|
||||
"Do not use generic purple gradients, glass cards, or stock SaaS hero sections unless the content calls for them.",
|
||||
"Do not let Markdown tables become the default shape for every comparison or explanation.",
|
||||
"Do not turn reviewer evidence into user-facing clutter.",
|
||||
"Do not invent screenshots, citations, charts, or UI states."
|
||||
],
|
||||
"reviewer_note": "Use this profile to judge whether the generated artifacts feel designed for their job, not merely rendered."
|
||||
}
|
||||
+93
@@ -0,0 +1,93 @@
|
||||
# Artifact Design Profile
|
||||
|
||||
Skill: `geo-content-brief-skill`
|
||||
Design system: `metric editorial`
|
||||
|
||||
## Primary Artifact Direction
|
||||
|
||||
**Report or brief**
|
||||
|
||||
High-trust editorial report with a clear first-screen thesis, compact evidence blocks, and decisions separated from supporting detail.
|
||||
|
||||
## Matched Artifact Families
|
||||
|
||||
### Report or brief
|
||||
- Matched keywords: report, brief, 简报
|
||||
- Score: `3`
|
||||
- Direction: High-trust editorial report with a clear first-screen thesis, compact evidence blocks, and decisions separated from supporting detail.
|
||||
|
||||
### Review viewer
|
||||
- Matched keywords: review, 审查
|
||||
- Score: `2`
|
||||
- Direction: Side-by-side reviewer studio with explicit tradeoffs, evidence readiness, and fast paths for approving, blocking, or requesting one focused fix.
|
||||
|
||||
### Dashboard or metrics page
|
||||
- Matched keywords: dashboard, table
|
||||
- Score: `2`
|
||||
- Direction: Metric-first dashboard with stable dimensions, short labels, visible deltas, and narrative callouts only where they change interpretation.
|
||||
|
||||
### Tutorial or guide
|
||||
- Matched keywords: tutorial
|
||||
- Score: `1`
|
||||
- Direction: Progressive instructional layout with domain-specific section names, short success checks, and examples close to the user's real input.
|
||||
|
||||
### Screenshot or visual evidence
|
||||
- Matched keywords: screenshot
|
||||
- Score: `1`
|
||||
- Direction: Evidence-led visual artifact that records source, viewport, crop intent, and the exact region the reader should inspect.
|
||||
|
||||
## Layout Patterns To Prefer
|
||||
|
||||
- thesis
|
||||
- evidence blocks
|
||||
- decision table
|
||||
- risks
|
||||
- next actions
|
||||
- summary
|
||||
- variant comparison
|
||||
- evidence
|
||||
|
||||
## Design Tokens
|
||||
|
||||
### Type
|
||||
- Use a distinctive display face or serif for major claims when the artifact is editorial.
|
||||
- Use a restrained sans for dense body text and technical details.
|
||||
- Use mono only for metadata, paths, commands, labels, and evidence tags.
|
||||
|
||||
### Color
|
||||
- Choose colors from the artifact's domain, brand, or evidence mood.
|
||||
- Do not default to Kami parchment, purple gradients, or generic SaaS blue unless the content justifies it.
|
||||
- Keep accent color limited to decisions, active states, risk, or section anchors.
|
||||
|
||||
### Spacing
|
||||
- Prefer clear grid rhythm over floating decorative cards.
|
||||
- Increase whitespace around decisions and shrink whitespace around supporting metadata.
|
||||
- Split dense content instead of shrinking type or adding scroll traps.
|
||||
|
||||
### Components
|
||||
- Use cards for grouped evidence, tables for comparisons, callouts for decisions, and timelines for sequence.
|
||||
- Avoid cards inside cards.
|
||||
- Keep reviewer-only detail visible but visually quieter than user-facing guidance.
|
||||
|
||||
## Quality Gates
|
||||
|
||||
- Keep the first screen useful without requiring the reader to parse every detail.
|
||||
- Use tables only for comparisons; move explanations below the table.
|
||||
- Keep source notes readable without flooding the body with markers.
|
||||
- Make differences visible instead of hiding them in prose.
|
||||
- Separate author-facing recommendations from reviewer-only evidence.
|
||||
- Surface conflicts clearly and keep routine benchmark synthesis quiet.
|
||||
- Avoid paragraph-heavy table cells.
|
||||
- Keep charts tied to one analytical question each.
|
||||
|
||||
## Anti-Patterns
|
||||
|
||||
- Do not copy Kami's fixed parchment background as a default.
|
||||
- Do not use generic purple gradients, glass cards, or stock SaaS hero sections unless the content calls for them.
|
||||
- Do not let Markdown tables become the default shape for every comparison or explanation.
|
||||
- Do not turn reviewer evidence into user-facing clutter.
|
||||
- Do not invent screenshots, citations, charts, or UI states.
|
||||
|
||||
## Reviewer Note
|
||||
|
||||
Use this profile to judge whether the generated artifacts feel designed for their job, not merely rendered.
|
||||
+2229
File diff suppressed because it is too large
Load Diff
+73
@@ -0,0 +1,73 @@
|
||||
# Compiled Targets
|
||||
|
||||
- OK: `True`
|
||||
- Targets: `5`
|
||||
- Pass: `5`
|
||||
- Warn: `0`
|
||||
- Block: `0`
|
||||
|
||||
## Target Transforms
|
||||
|
||||
| Target | Status | Native Surface | Adapter Mode | Permissions | Degradation | Generated Files |
|
||||
| --- | --- | --- | --- | --- | --- | --- |
|
||||
| `openai` | `pass` | OpenAI-style interface metadata plus neutral Agent Skills source | `metadata-adapter` | `none` | `metadata-adapter` | targets/openai/adapter.json, targets/openai/agents/openai.yaml |
|
||||
| `claude` | `pass` | Claude-compatible neutral source folder with adapter notes | `neutral-source-plus-adapter` | `none` | `neutral-source-plus-adapter` | targets/claude/adapter.json, targets/claude/README.md |
|
||||
| `generic` | `pass` | Agent Skills compatible neutral package | `agent-skills-compatible` | `none` | `neutral-source` | targets/generic/adapter.json |
|
||||
| `agent-skills-compatible` | `pass` | Agent Skills standard source tree | `neutral-agent-skills-source` | `none` | `neutral-source` | SKILL.md, agents/interface.yaml |
|
||||
| `vscode` | `pass` | VS Code/Copilot Agent Skills project or user scope | `vscode-agent-skills-adapter` | `none` | `agent-skills-source-with-vscode-notes` | targets/vscode/adapter.json, targets/vscode/README.md |
|
||||
|
||||
## Native Behavior Contracts
|
||||
|
||||
### openai
|
||||
|
||||
- Native surface: OpenAI-style interface metadata plus neutral Agent Skills source
|
||||
- Activation: Use frontmatter description for catalog routing and targets/openai/agents/openai.yaml for display name, default prompt, and compatibility metadata.
|
||||
- Resources: Ship the neutral source tree and expose OpenAI-facing interface metadata as a generated companion file.
|
||||
- Scripts: Keep scripts as local package resources; expose help-smoke and permission metadata for reviewer approval before execution.
|
||||
- Permission enforcement: `metadata-only`; native enforcement `False`
|
||||
- Review artifacts: targets/openai/agents/openai.yaml, targets/openai/adapter.json, reports/review-studio.html
|
||||
|
||||
### claude
|
||||
|
||||
- Native surface: Claude-compatible neutral source folder with adapter notes
|
||||
- Activation: Use SKILL.md frontmatter description as the primary activation contract and adapter.json for review metadata.
|
||||
- Resources: Preserve the source tree directly; write target notes in targets/claude/README.md.
|
||||
- Scripts: Scripts remain local package resources and must be reviewed through trust and permission reports before use.
|
||||
- Permission enforcement: `metadata-fallback`; native enforcement `False`
|
||||
- Review artifacts: targets/claude/README.md, targets/claude/adapter.json, reports/review-studio.html
|
||||
|
||||
### generic
|
||||
|
||||
- Native surface: Agent Skills compatible neutral package
|
||||
- Activation: Use SKILL.md name and description; consumers decide automatic or manual activation.
|
||||
- Resources: Preserve references, scripts, assets, evals, reports, and adapter metadata as relative package resources.
|
||||
- Scripts: Expose script and permission metadata for downstream clients or installers to enforce.
|
||||
- Permission enforcement: `consumer-enforced-or-metadata-only`; native enforcement `False`
|
||||
- Review artifacts: targets/generic/adapter.json, reports/review-studio.html
|
||||
|
||||
### agent-skills-compatible
|
||||
|
||||
- Native surface: Agent Skills standard source tree
|
||||
- Activation: Use SKILL.md frontmatter name and description for progressive disclosure.
|
||||
- Resources: Keep optional directories as relative resources next to SKILL.md.
|
||||
- Scripts: Scripts remain local optional resources and should advertise --help when executable.
|
||||
- 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
|
||||
|
||||
- None
|
||||
|
||||
## Warnings
|
||||
|
||||
- None
|
||||
+83
@@ -0,0 +1,83 @@
|
||||
{
|
||||
"score": 10,
|
||||
"band": "low",
|
||||
"gate_passed": false,
|
||||
"strengths": [],
|
||||
"gaps": [
|
||||
{
|
||||
"key": "job_specificity",
|
||||
"label": "Recurring job is still generic",
|
||||
"reason": "The current job statement sounds more like a packaging goal than a concrete repeated task.",
|
||||
"severity": "high"
|
||||
},
|
||||
{
|
||||
"key": "real_inputs",
|
||||
"label": "Real inputs are missing",
|
||||
"reason": "Without real inputs, it is hard to choose assets, scripts, or examples.",
|
||||
"severity": "high"
|
||||
},
|
||||
{
|
||||
"key": "primary_output",
|
||||
"label": "Primary output is missing",
|
||||
"reason": "The package does not yet know what it must hand back.",
|
||||
"severity": "high"
|
||||
},
|
||||
{
|
||||
"key": "exclusions",
|
||||
"label": "Near-neighbor exclusions are missing",
|
||||
"reason": "The route may blur into nearby requests without an exclusion list.",
|
||||
"severity": "high"
|
||||
},
|
||||
{
|
||||
"key": "constraints",
|
||||
"label": "Constraints are missing",
|
||||
"reason": "The package does not yet know which tradeoffs matter most.",
|
||||
"severity": "high"
|
||||
},
|
||||
{
|
||||
"key": "standards",
|
||||
"label": "Quality bar is implied, not explicit",
|
||||
"reason": "The first evaluation target is still underspecified.",
|
||||
"severity": "medium"
|
||||
}
|
||||
],
|
||||
"follow_up_questions": [
|
||||
{
|
||||
"slot": "job",
|
||||
"question": "If you say it plainly, what concrete repeated task should this skill own every time?",
|
||||
"why": "A skill needs a real recurring job, not only a generic packaging goal.",
|
||||
"list": false,
|
||||
"label": "Recurring job is still generic",
|
||||
"severity": "high"
|
||||
},
|
||||
{
|
||||
"slot": "real_inputs",
|
||||
"question": "What material will people actually hand to this skill in practice?",
|
||||
"why": "Real input shape decides whether references, scripts, or examples are needed.",
|
||||
"list": true,
|
||||
"label": "Real inputs are missing",
|
||||
"severity": "high"
|
||||
},
|
||||
{
|
||||
"slot": "primary_output",
|
||||
"question": "What finished hand-back should this skill return so the next person can keep moving?",
|
||||
"why": "The output is the anchor for package design and review.",
|
||||
"list": false,
|
||||
"label": "Primary output is missing",
|
||||
"severity": "high"
|
||||
}
|
||||
],
|
||||
"anchor_sentence": "将 GEO 内容访谈、关键词笔记和渠道约束整理成可执行的中文内容简报 Skill,适用于团队复用、触发边界审查和后续质量评估。",
|
||||
"recommended_action": "Pause before deep authoring and close the highest-leverage gaps first.",
|
||||
"context": {
|
||||
"job": "将 GEO 内容访谈、关键词笔记和渠道约束整理成可执行的中文内容简报 Skill,适用于团队复用、触发边界审查和后续质量评估。",
|
||||
"real_inputs": [],
|
||||
"primary_output": "",
|
||||
"description": "将 GEO 内容访谈、关键词笔记和渠道约束整理成可执行的中文内容简报 Skill,适用于团队复用、触发边界审查和后续质量评估。",
|
||||
"exclusions": [],
|
||||
"constraints": [],
|
||||
"standards": [],
|
||||
"correction": "",
|
||||
"user_references": []
|
||||
}
|
||||
}
|
||||
+32
@@ -0,0 +1,32 @@
|
||||
# Intent Confidence
|
||||
|
||||
- Confidence score: `10/100`
|
||||
- Confidence band: `low`
|
||||
- Gate passed: `False`
|
||||
- Recommended action: Pause before deep authoring and close the highest-leverage gaps first.
|
||||
|
||||
## Current Reading
|
||||
|
||||
将 GEO 内容访谈、关键词笔记和渠道约束整理成可执行的中文内容简报 Skill,适用于团队复用、触发边界审查和后续质量评估。
|
||||
|
||||
## Strong Signals
|
||||
|
||||
- No strong signals yet.
|
||||
|
||||
## Gaps To Close
|
||||
|
||||
- **Recurring job is still generic** (`high`): The current job statement sounds more like a packaging goal than a concrete repeated task.
|
||||
- **Real inputs are missing** (`high`): Without real inputs, it is hard to choose assets, scripts, or examples.
|
||||
- **Primary output is missing** (`high`): The package does not yet know what it must hand back.
|
||||
- **Near-neighbor exclusions are missing** (`high`): The route may blur into nearby requests without an exclusion list.
|
||||
- **Constraints are missing** (`high`): The package does not yet know which tradeoffs matter most.
|
||||
- **Quality bar is implied, not explicit** (`medium`): The first evaluation target is still underspecified.
|
||||
|
||||
## Follow-Up Questions
|
||||
|
||||
- **If you say it plainly, what concrete repeated task should this skill own every time?**
|
||||
- Why: A skill needs a real recurring job, not only a generic packaging goal.
|
||||
- **What material will people actually hand to this skill in practice?**
|
||||
- Why: Real input shape decides whether references, scripts, or examples are needed.
|
||||
- **What finished hand-back should this skill return so the next person can keep moving?**
|
||||
- Why: The output is the anchor for package design and review.
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"job": "将 GEO 内容访谈、关键词笔记和渠道约束整理成可执行的中文内容简报 Skill,适用于团队复用、触发边界审查和后续质量评估。",
|
||||
"real_inputs": [],
|
||||
"primary_output": "",
|
||||
"description": "将 GEO 内容访谈、关键词笔记和渠道约束整理成可执行的中文内容简报 Skill,适用于团队复用、触发边界审查和后续质量评估。",
|
||||
"exclusions": [],
|
||||
"constraints": [],
|
||||
"standards": [],
|
||||
"correction": "",
|
||||
"user_references": []
|
||||
}
|
||||
+79
@@ -0,0 +1,79 @@
|
||||
{
|
||||
"skill_name": "geo-content-brief-skill",
|
||||
"title": "Geo Content Brief Skill",
|
||||
"description": "将 GEO 内容访谈、关键词笔记和渠道约束整理成可执行的中文内容简报 Skill,适用于团队复用、触发边界审查和后续质量评估。",
|
||||
"focus": "trigger-and-output",
|
||||
"opening_frame": "Let's start from the real work, the result you care about, and the standards that matter here. We can make the structure clearer after that.",
|
||||
"reference_note": "If you already have examples you admire, bring them in. We will learn the pattern, not copy the source.",
|
||||
"conversation_path": [
|
||||
"Start with the user's own words, not package vocabulary.",
|
||||
"Reflect the job, output, and non-goals back in one clean sentence.",
|
||||
"Only then offer a tiny scaffold if it would help the user move faster."
|
||||
],
|
||||
"opening_styles": [
|
||||
{
|
||||
"label": "温柔陪伴型",
|
||||
"best_when": "用户想法还散、还在试探,或者需要先被接住。",
|
||||
"message": "我们先不急着把它说成一个很完整的 skill。你就像跟我聊天一样,先说说你最想让它以后稳稳接住哪类重复工作;如果它做得很理想,最后应该交回你一个什么结果。"
|
||||
},
|
||||
{
|
||||
"label": "专业教练型",
|
||||
"best_when": "用户目标比较明确,希望被高效带着走。",
|
||||
"message": "我们先把这件事讲清楚,再决定 skill 怎么设计。你先告诉我三件事:它要接住的重复任务是什么,别人通常会给它什么材料,最后你希望它交付什么结果。"
|
||||
},
|
||||
{
|
||||
"label": "共创伙伴型",
|
||||
"best_when": "用户已经有一些想法,希望一起打磨,不想被填表。",
|
||||
"message": "我们把这次当成一次共创。你先给我一个粗糙版本就行,我先帮你看它真正的核心任务是什么,再一起决定边界、结构和接下来最值的一步。"
|
||||
}
|
||||
],
|
||||
"optional_scaffold": [
|
||||
"The repeated job it should reliably handle",
|
||||
"The real inputs people will hand to it",
|
||||
"The useful output it should hand back",
|
||||
"What it should clearly refuse"
|
||||
],
|
||||
"questions": [
|
||||
{
|
||||
"question": "If this skill worked beautifully, what recurring job would it reliably handle for the user every time?",
|
||||
"why": "This reveals the real job-to-be-done and gives the package a humane center instead of a guessed prompt shape."
|
||||
},
|
||||
{
|
||||
"question": "When someone reaches for this skill in the real world, what materials will they actually hand to it?",
|
||||
"why": "Input shape decides whether references, scripts, or templates are needed."
|
||||
},
|
||||
{
|
||||
"question": "What finished output should it hand back so the user can immediately keep moving?",
|
||||
"why": "Outputs should drive the package structure before extra guidance is added."
|
||||
},
|
||||
{
|
||||
"question": "Which nearby requests should this skill politely refuse so the boundary stays clean?",
|
||||
"why": "The exclusion list is the fastest route to better trigger quality."
|
||||
},
|
||||
{
|
||||
"question": "What matters most here: speed, consistency, auditability, portability, governance, or tone/style fit?",
|
||||
"why": "Constraints decide how much structure, packaging, and review the skill actually needs."
|
||||
},
|
||||
{
|
||||
"question": "Do you already have any references you want this skill to learn from, such as a repo, product, page, workflow, or prompt example?",
|
||||
"why": "A good reference can raise the quality bar quickly, but the skill should only borrow patterns and standards, never copy wording or confidential material."
|
||||
},
|
||||
{
|
||||
"question": "What repeated manual step should become a deterministic asset first?",
|
||||
"why": "This usually reveals whether a script or reference should be created next."
|
||||
}
|
||||
],
|
||||
"output": {
|
||||
"capability_sentence": "Geo Content Brief Skill should turn a recurring request into a reliable reusable output without widening the boundary unnecessarily.",
|
||||
"required_capture": [
|
||||
"recurring job",
|
||||
"real inputs",
|
||||
"required outputs",
|
||||
"exclusions",
|
||||
"constraints",
|
||||
"reference preferences",
|
||||
"first evaluation target"
|
||||
],
|
||||
"recommended_first_gate": "trigger and boundary"
|
||||
}
|
||||
}
|
||||
+75
@@ -0,0 +1,75 @@
|
||||
# Intent Dialogue
|
||||
|
||||
Skill: `geo-content-brief-skill`
|
||||
|
||||
## Opening Frame
|
||||
|
||||
Let's start from the real work, the result you care about, and the standards that matter here. We can make the structure clearer after that.
|
||||
|
||||
## Opening Tone Options
|
||||
|
||||
### 温柔陪伴型
|
||||
|
||||
- Best when: 用户想法还散、还在试探,或者需要先被接住。
|
||||
- Example: 我们先不急着把它说成一个很完整的 skill。你就像跟我聊天一样,先说说你最想让它以后稳稳接住哪类重复工作;如果它做得很理想,最后应该交回你一个什么结果。
|
||||
|
||||
### 专业教练型
|
||||
|
||||
- Best when: 用户目标比较明确,希望被高效带着走。
|
||||
- Example: 我们先把这件事讲清楚,再决定 skill 怎么设计。你先告诉我三件事:它要接住的重复任务是什么,别人通常会给它什么材料,最后你希望它交付什么结果。
|
||||
|
||||
### 共创伙伴型
|
||||
|
||||
- Best when: 用户已经有一些想法,希望一起打磨,不想被填表。
|
||||
- Example: 我们把这次当成一次共创。你先给我一个粗糙版本就行,我先帮你看它真正的核心任务是什么,再一起决定边界、结构和接下来最值的一步。
|
||||
|
||||
## Conversation Path
|
||||
|
||||
1. Start with the user's own words, not package vocabulary.
|
||||
2. Reflect the job, output, and non-goals back in one clean sentence.
|
||||
3. Only then offer a tiny scaffold if it would help the user move faster.
|
||||
|
||||
## Why Start Here
|
||||
|
||||
Use this short dialogue before deep authoring. The goal is to learn the real job, output, exclusions, and constraints so the first package is small but accurate.
|
||||
|
||||
## Current Anchor
|
||||
|
||||
- Title: `Geo Content Brief Skill`
|
||||
- Description: 将 GEO 内容访谈、关键词笔记和渠道约束整理成可执行的中文内容简报 Skill,适用于团队复用、触发边界审查和后续质量评估。
|
||||
- Focus: `trigger-and-output`
|
||||
- Reference note: If you already have examples you admire, bring them in. We will learn the pattern, not copy the source.
|
||||
|
||||
## Questions To Ask
|
||||
|
||||
1. If this skill worked beautifully, what recurring job would it reliably handle for the user every time?
|
||||
Why: This reveals the real job-to-be-done and gives the package a humane center instead of a guessed prompt shape.
|
||||
2. When someone reaches for this skill in the real world, what materials will they actually hand to it?
|
||||
Why: Input shape decides whether references, scripts, or templates are needed.
|
||||
3. What finished output should it hand back so the user can immediately keep moving?
|
||||
Why: Outputs should drive the package structure before extra guidance is added.
|
||||
4. Which nearby requests should this skill politely refuse so the boundary stays clean?
|
||||
Why: The exclusion list is the fastest route to better trigger quality.
|
||||
5. What matters most here: speed, consistency, auditability, portability, governance, or tone/style fit?
|
||||
Why: Constraints decide how much structure, packaging, and review the skill actually needs.
|
||||
6. Do you already have any references you want this skill to learn from, such as a repo, product, page, workflow, or prompt example?
|
||||
Why: A good reference can raise the quality bar quickly, but the skill should only borrow patterns and standards, never copy wording or confidential material.
|
||||
7. What repeated manual step should become a deterministic asset first?
|
||||
Why: This usually reveals whether a script or reference should be created next.
|
||||
|
||||
## Capture Before Drafting
|
||||
|
||||
- Capability sentence: Geo Content Brief Skill should turn a recurring request into a reliable reusable output without widening the boundary unnecessarily.
|
||||
- Recommended first gate: `trigger and boundary`
|
||||
- Tiny optional scaffold:
|
||||
- The repeated job it should reliably handle
|
||||
- The real inputs people will hand to it
|
||||
- The useful output it should hand back
|
||||
- What it should clearly refuse
|
||||
- Capture: `recurring job`
|
||||
- Capture: `real inputs`
|
||||
- Capture: `required outputs`
|
||||
- Capture: `exclusions`
|
||||
- Capture: `constraints`
|
||||
- Capture: `reference preferences`
|
||||
- Capture: `first evaluation target`
|
||||
+52
@@ -0,0 +1,52 @@
|
||||
{
|
||||
"summary": {
|
||||
"skill_name": "geo-content-brief-skill",
|
||||
"description": "将 GEO 内容访谈、关键词笔记和渠道约束整理成可执行的中文内容简报 Skill,适用于团队复用、触发边界审查和后续质量评估。",
|
||||
"maturity_tier": "scaffold",
|
||||
"selection_rule": "Pick the three smallest next steps that increase reliability more than they increase context cost.",
|
||||
"recommended_now": "Tighten trigger and exclusions",
|
||||
"recommended_now_why": "The package needs clearer near-neighbor exclusions before it grows.",
|
||||
"defer_for_now": "Promote from scaffold to production-ready"
|
||||
},
|
||||
"directions": [
|
||||
{
|
||||
"priority": 1,
|
||||
"title": "Tighten trigger and exclusions",
|
||||
"why": "The package needs clearer near-neighbor exclusions before it grows.",
|
||||
"actions": [
|
||||
"Add 3 to 5 should-trigger and should-not-trigger examples.",
|
||||
"Refine the frontmatter description to name the recurring job and non-goals.",
|
||||
"Run a first trigger evaluation pass before expanding the package."
|
||||
],
|
||||
"unlocks": "Cleaner routing and fewer accidental activations.",
|
||||
"do_now": "Do this first.",
|
||||
"wait_on": "Wait to add broader structure until this move clearly improves reliability."
|
||||
},
|
||||
{
|
||||
"priority": 2,
|
||||
"title": "Add the first execution asset",
|
||||
"why": "The package is still mostly prose. Add one asset that removes repeated manual work.",
|
||||
"actions": [
|
||||
"Move stable procedural guidance into references if users will need it repeatedly.",
|
||||
"Create one deterministic helper script if a repeated step can be executed instead of described.",
|
||||
"Keep the main SKILL.md compact and route-oriented."
|
||||
],
|
||||
"unlocks": "Stronger execution quality without bloating the entrypoint.",
|
||||
"do_now": "Do this after the first move lands cleanly.",
|
||||
"wait_on": "Wait until the package has evidence that this extra structure is justified."
|
||||
},
|
||||
{
|
||||
"priority": 3,
|
||||
"title": "Promote from scaffold to production-ready",
|
||||
"why": "The first version exists; the next gain usually comes from adding the smallest useful gates.",
|
||||
"actions": [
|
||||
"Decide whether this skill is personal, team-reused, or library-grade.",
|
||||
"Add only the gates that match that risk level.",
|
||||
"Record lifecycle metadata and review cadence once reuse becomes real."
|
||||
],
|
||||
"unlocks": "A clearer path from exploratory package to maintained asset.",
|
||||
"do_now": "Do this after the first move lands cleanly.",
|
||||
"wait_on": "Wait until the package has evidence that this extra structure is justified."
|
||||
}
|
||||
]
|
||||
}
|
||||
+62
@@ -0,0 +1,62 @@
|
||||
# Iteration Directions
|
||||
|
||||
Skill: `geo-content-brief-skill`
|
||||
|
||||
- Maturity tier: `scaffold`
|
||||
- Selection rule: Pick the three smallest next steps that increase reliability more than they increase context cost.
|
||||
- Start here: `Tighten trigger and exclusions`
|
||||
- Why first: The package needs clearer near-neighbor exclusions before it grows.
|
||||
- Defer for now: `Promote from scaffold to production-ready`
|
||||
|
||||
## Top 3 Next Moves
|
||||
|
||||
### 1. Tighten trigger and exclusions
|
||||
|
||||
- Why now: The package needs clearer near-neighbor exclusions before it grows.
|
||||
- Timing: Do this first.
|
||||
- Recommended actions:
|
||||
- Add 3 to 5 should-trigger and should-not-trigger examples.
|
||||
- Unlocks: Cleaner routing and fewer accidental activations.
|
||||
- Wait on: Wait to add broader structure until this move clearly improves reliability.
|
||||
|
||||
- Refine the frontmatter description to name the recurring job and non-goals.
|
||||
- Unlocks: Cleaner routing and fewer accidental activations.
|
||||
- Wait on: Wait to add broader structure until this move clearly improves reliability.
|
||||
|
||||
- Run a first trigger evaluation pass before expanding the package.
|
||||
- Unlocks: Cleaner routing and fewer accidental activations.
|
||||
- Wait on: Wait to add broader structure until this move clearly improves reliability.
|
||||
|
||||
### 2. Add the first execution asset
|
||||
|
||||
- Why now: The package is still mostly prose. Add one asset that removes repeated manual work.
|
||||
- Timing: Do this after the first move lands cleanly.
|
||||
- Recommended actions:
|
||||
- Move stable procedural guidance into references if users will need it repeatedly.
|
||||
- Unlocks: Stronger execution quality without bloating the entrypoint.
|
||||
- Wait on: Wait until the package has evidence that this extra structure is justified.
|
||||
|
||||
- Create one deterministic helper script if a repeated step can be executed instead of described.
|
||||
- Unlocks: Stronger execution quality without bloating the entrypoint.
|
||||
- Wait on: Wait until the package has evidence that this extra structure is justified.
|
||||
|
||||
- Keep the main SKILL.md compact and route-oriented.
|
||||
- Unlocks: Stronger execution quality without bloating the entrypoint.
|
||||
- Wait on: Wait until the package has evidence that this extra structure is justified.
|
||||
|
||||
### 3. Promote from scaffold to production-ready
|
||||
|
||||
- Why now: The first version exists; the next gain usually comes from adding the smallest useful gates.
|
||||
- Timing: Do this after the first move lands cleanly.
|
||||
- Recommended actions:
|
||||
- Decide whether this skill is personal, team-reused, or library-grade.
|
||||
- Unlocks: A clearer path from exploratory package to maintained asset.
|
||||
- Wait on: Wait until the package has evidence that this extra structure is justified.
|
||||
|
||||
- Add only the gates that match that risk level.
|
||||
- Unlocks: A clearer path from exploratory package to maintained asset.
|
||||
- Wait on: Wait until the package has evidence that this extra structure is justified.
|
||||
|
||||
- Record lifecycle metadata and review cadence once reuse becomes real.
|
||||
- Unlocks: A clearer path from exploratory package to maintained asset.
|
||||
- Wait on: Wait until the package has evidence that this extra structure is justified.
|
||||
+147
@@ -0,0 +1,147 @@
|
||||
{
|
||||
"skill_name": "geo-content-brief-skill",
|
||||
"risk_families": [
|
||||
{
|
||||
"key": "markdown_readability",
|
||||
"label": "Markdown readability",
|
||||
"matched_keywords": [
|
||||
"md",
|
||||
"table",
|
||||
"report",
|
||||
"brief"
|
||||
],
|
||||
"score": 4,
|
||||
"risks": [
|
||||
"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.",
|
||||
"Mixed heading levels can reduce scanability."
|
||||
],
|
||||
"constraints": [
|
||||
"Use tables only when comparison is the main job; otherwise prefer compact cards or grouped bullets.",
|
||||
"Keep table cells short and move explanations below the table.",
|
||||
"Use heading levels consistently and keep each section anchored to a user-facing outcome."
|
||||
],
|
||||
"self_repair": [
|
||||
"Preview whether each table still reads well when columns are narrow.",
|
||||
"Convert any table with paragraph-length cells into bullets or cards."
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "visual_capture",
|
||||
"label": "Screenshot and visual capture",
|
||||
"matched_keywords": [
|
||||
"screenshot",
|
||||
"visual",
|
||||
"screen"
|
||||
],
|
||||
"score": 3,
|
||||
"risks": [
|
||||
"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.",
|
||||
"Image descriptions can omit the action-relevant region."
|
||||
],
|
||||
"constraints": [
|
||||
"Never invent a screenshot; state when visual evidence is missing.",
|
||||
"Record the source, viewport, and crop intent for any screenshot-dependent output.",
|
||||
"Describe what the reader should inspect in the image, not just that an image exists."
|
||||
],
|
||||
"self_repair": [
|
||||
"Check that every screenshot reference points to a real provided or generated asset.",
|
||||
"Reword any visual instruction that depends on an unseen screen state."
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "citation_clutter",
|
||||
"label": "Citation and footnote clutter",
|
||||
"matched_keywords": [
|
||||
"citation",
|
||||
"reference"
|
||||
],
|
||||
"score": 2,
|
||||
"risks": [
|
||||
"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.",
|
||||
"Source notes may become more prominent than the tutorial itself."
|
||||
],
|
||||
"constraints": [
|
||||
"Attach citations only to claims that need evidence, not to every sentence.",
|
||||
"Group source notes at the end of a section when inline markers would hurt readability.",
|
||||
"Keep the main sentence readable without requiring the reader to chase a footnote."
|
||||
],
|
||||
"self_repair": [
|
||||
"Remove decorative citations that do not support a material claim.",
|
||||
"Move repeated source explanations into one compact source note."
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "tone_and_specificity",
|
||||
"label": "Tone and specificity",
|
||||
"matched_keywords": [
|
||||
"copy",
|
||||
"content"
|
||||
],
|
||||
"score": 2,
|
||||
"risks": [
|
||||
"Headings and summaries can drift into generic, interchangeable language.",
|
||||
"The output can sound polished but lose the user's actual taste, audience, or scenario.",
|
||||
"Strong claims can appear without examples or constraints."
|
||||
],
|
||||
"constraints": [
|
||||
"Anchor titles and summaries in the user's audience, object, and concrete outcome.",
|
||||
"Avoid placeholder phrases such as comprehensive guide, ultimate solution, or key insights unless the source demands them.",
|
||||
"Preserve one distinctive phrase, constraint, or standard from the user's input."
|
||||
],
|
||||
"self_repair": [
|
||||
"Replace generic title candidates with scenario-specific alternatives.",
|
||||
"Delete any polished sentence that could fit almost any project unchanged."
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "tutorial_quality",
|
||||
"label": "Tutorial quality",
|
||||
"matched_keywords": [
|
||||
"tutorial"
|
||||
],
|
||||
"score": 1,
|
||||
"risks": [
|
||||
"Generic section headings make the tutorial feel templated instead of fitted to the learner's task.",
|
||||
"Steps may explain what to do without naming the exact check that proves the step worked.",
|
||||
"Examples can become too abstract when the input material is concrete."
|
||||
],
|
||||
"constraints": [
|
||||
"Write headings from the user's domain nouns and desired outcome, not from generic labels like Overview or Key Points.",
|
||||
"Pair each major step with a visible success check or expected intermediate output.",
|
||||
"Use one concrete worked example before adding broad principles."
|
||||
],
|
||||
"self_repair": [
|
||||
"Replace generic H2/H3 headings with task-specific headings before final output.",
|
||||
"Scan every numbered step for a missing verification cue."
|
||||
]
|
||||
}
|
||||
],
|
||||
"top_risks": [
|
||||
"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.",
|
||||
"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.",
|
||||
"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."
|
||||
],
|
||||
"output_constraints": [
|
||||
"Use tables only when comparison is the main job; otherwise prefer compact cards or grouped bullets.",
|
||||
"Keep table cells short and move explanations below the table.",
|
||||
"Never invent a screenshot; state when visual evidence is missing.",
|
||||
"Record the source, viewport, and crop intent for any screenshot-dependent output.",
|
||||
"Attach citations only to claims that need evidence, not to every sentence.",
|
||||
"Group source notes at the end of a section when inline markers would hurt readability."
|
||||
],
|
||||
"self_repair_checks": [
|
||||
"Preview whether each table still reads well when columns are narrow.",
|
||||
"Convert any table with paragraph-length cells into bullets or cards.",
|
||||
"Check that every screenshot reference points to a real provided or generated asset.",
|
||||
"Reword any visual instruction that depends on an unseen screen state.",
|
||||
"Remove decorative citations that do not support a material claim.",
|
||||
"Move repeated source explanations into one compact source note."
|
||||
],
|
||||
"reviewer_note": "Use this report before deepening the package and again before approving example outputs."
|
||||
}
|
||||
+60
@@ -0,0 +1,60 @@
|
||||
# Output Risk Profile
|
||||
|
||||
Skill: `geo-content-brief-skill`
|
||||
|
||||
## Why This Exists
|
||||
|
||||
Generated skills often fail in small output details: generic headings, cluttered citations, fragile screenshots, weak Markdown rendering, or missing execution assumptions. This profile predicts the most likely output mistakes before the skill is used heavily.
|
||||
|
||||
## Matched Risk Families
|
||||
|
||||
### Markdown readability
|
||||
- Matched keywords: md, table, report, brief
|
||||
- Score: `4`
|
||||
|
||||
### Screenshot and visual capture
|
||||
- Matched keywords: screenshot, visual, screen
|
||||
- Score: `3`
|
||||
|
||||
### Citation and footnote clutter
|
||||
- Matched keywords: citation, reference
|
||||
- Score: `2`
|
||||
|
||||
### Tone and specificity
|
||||
- Matched keywords: copy, content
|
||||
- Score: `2`
|
||||
|
||||
### Tutorial quality
|
||||
- Matched keywords: tutorial
|
||||
- Score: `1`
|
||||
|
||||
## Likely Output Mistakes
|
||||
|
||||
- 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.
|
||||
- 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.
|
||||
- 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.
|
||||
|
||||
## Output Constraints To Apply
|
||||
|
||||
- Use tables only when comparison is the main job; otherwise prefer compact cards or grouped bullets.
|
||||
- Keep table cells short and move explanations below the table.
|
||||
- Never invent a screenshot; state when visual evidence is missing.
|
||||
- Record the source, viewport, and crop intent for any screenshot-dependent output.
|
||||
- Attach citations only to claims that need evidence, not to every sentence.
|
||||
- Group source notes at the end of a section when inline markers would hurt readability.
|
||||
|
||||
## Self-Repair Checks
|
||||
|
||||
- Preview whether each table still reads well when columns are narrow.
|
||||
- Convert any table with paragraph-length cells into bullets or cards.
|
||||
- Check that every screenshot reference points to a real provided or generated asset.
|
||||
- Reword any visual instruction that depends on an unseen screen state.
|
||||
- Remove decorative citations that do not support a material claim.
|
||||
- Move repeated source explanations into one compact source note.
|
||||
|
||||
## Reviewer Note
|
||||
|
||||
Use this report before deepening the package and again before approving example outputs.
|
||||
+146
@@ -0,0 +1,146 @@
|
||||
{
|
||||
"skill_name": "geo-content-brief-skill",
|
||||
"relevance": "prompt-heavy",
|
||||
"primary_task_family": {
|
||||
"key": "creative_generation",
|
||||
"label": "Creative generation",
|
||||
"matched_keywords": [
|
||||
"copy",
|
||||
"content",
|
||||
"内容"
|
||||
]
|
||||
},
|
||||
"task_families": [
|
||||
{
|
||||
"key": "creative_generation",
|
||||
"label": "Creative generation",
|
||||
"score": 3,
|
||||
"matched_keywords": [
|
||||
"copy",
|
||||
"content",
|
||||
"内容"
|
||||
],
|
||||
"role_guidance": "Use a taste-aware creator role with clear audience, tone, and originality boundaries.",
|
||||
"task_guidance": "Generate variants, explain selection logic, and preserve the user's distinctive constraints.",
|
||||
"format_guidance": "Return options with rationale, selection criteria, and refinement paths."
|
||||
},
|
||||
{
|
||||
"key": "execution_operation",
|
||||
"label": "Execution operation",
|
||||
"score": 3,
|
||||
"matched_keywords": [
|
||||
"workflow",
|
||||
"execute",
|
||||
"执行"
|
||||
],
|
||||
"role_guidance": "Use an operator role with explicit boundaries, inputs, outputs, and failure handling.",
|
||||
"task_guidance": "Convert the job into ordered steps with validation checks and stop conditions.",
|
||||
"format_guidance": "Return a runbook-like handoff with commands, checks, owners, and next actions when relevant."
|
||||
},
|
||||
{
|
||||
"key": "prompt_engineering",
|
||||
"label": "Prompt engineering",
|
||||
"score": 3,
|
||||
"matched_keywords": [
|
||||
"prompt",
|
||||
"role",
|
||||
"format"
|
||||
],
|
||||
"role_guidance": "Use a prompt engineer role only when role design materially improves execution.",
|
||||
"task_guidance": "Map Role, Task, and Format into skill behavior rather than copying a large prompt template.",
|
||||
"format_guidance": "Return a compact prompt contract plus tests, quality matrix, and usage notes."
|
||||
},
|
||||
{
|
||||
"key": "dialogue_interaction",
|
||||
"label": "Dialogue interaction",
|
||||
"score": 2,
|
||||
"matched_keywords": [
|
||||
"dialogue",
|
||||
"访谈"
|
||||
],
|
||||
"role_guidance": "Use a conversational role that asks only high-leverage questions and remembers the user's goal.",
|
||||
"task_guidance": "Clarify intent, resolve uncertainty, and converge toward a recommendation instead of a long option list.",
|
||||
"format_guidance": "Return concise prompts, decision points, and reviewer-visible assumptions."
|
||||
}
|
||||
],
|
||||
"complexity": {
|
||||
"band": "complex",
|
||||
"score": 6,
|
||||
"reason": "multiple inputs, constraints, or task families require tradeoff handling"
|
||||
},
|
||||
"need_model": {
|
||||
"explicit_need": "将 GEO 内容访谈、关键词笔记和渠道约束整理成可执行的中文内容简报 Skill,适用于团队复用、触发边界审查和后续质量评估。",
|
||||
"implicit_need": "The reusable skill needs a stable role, task, and output contract rather than a one-off prompt.",
|
||||
"scenario": "not yet explicit",
|
||||
"user_level": "infer from examples and standards; ask only if it changes output depth",
|
||||
"success_standard": "usable output with clear validation cues"
|
||||
},
|
||||
"rtf_to_skill": {
|
||||
"role": "Use a taste-aware creator role with clear audience, tone, and originality boundaries.",
|
||||
"task": "Generate variants, explain selection logic, and preserve the user's distinctive constraints.",
|
||||
"format": "Return options with rationale, selection criteria, and refinement paths."
|
||||
},
|
||||
"quality_matrix": [
|
||||
{
|
||||
"key": "completeness",
|
||||
"label": "Completeness",
|
||||
"score": 80,
|
||||
"matched_signals": [
|
||||
"input",
|
||||
"output",
|
||||
"constraint",
|
||||
"example",
|
||||
"约束"
|
||||
],
|
||||
"repair": "Name missing inputs, outputs, constraints, or success standards before deepening the package."
|
||||
},
|
||||
{
|
||||
"key": "clarity",
|
||||
"label": "Clarity",
|
||||
"score": 90,
|
||||
"matched_signals": [
|
||||
"clear",
|
||||
"specific"
|
||||
],
|
||||
"repair": "Replace broad verbs with observable actions and define what done means."
|
||||
},
|
||||
{
|
||||
"key": "consistency",
|
||||
"label": "Consistency",
|
||||
"score": 90,
|
||||
"matched_signals": [
|
||||
"boundary",
|
||||
"边界"
|
||||
],
|
||||
"repair": "Check that role, task, format, exclusions, and examples do not contradict each other."
|
||||
},
|
||||
{
|
||||
"key": "practicality",
|
||||
"label": "Practicality",
|
||||
"score": 95,
|
||||
"matched_signals": [
|
||||
"execute",
|
||||
"use",
|
||||
"workflow",
|
||||
"执行"
|
||||
],
|
||||
"repair": "Add runnable steps, examples, or verification cues instead of abstract advice."
|
||||
},
|
||||
{
|
||||
"key": "specificity",
|
||||
"label": "Specificity",
|
||||
"score": 70,
|
||||
"matched_signals": [],
|
||||
"repair": "Anchor wording in the user's audience, domain nouns, and target outcome."
|
||||
}
|
||||
],
|
||||
"overall_quality_score": 85.0,
|
||||
"self_repair_checks": [
|
||||
"Check explicit need, implicit need, scenario, user level, and success standard before deepening.",
|
||||
"Map Role, Task, and Format into skill behavior, not decorative prompt labels.",
|
||||
"Ask one focused clarification only when missing information changes the package boundary.",
|
||||
"Add tests or examples for prompt-heavy behavior before treating it as reusable.",
|
||||
"Keep prompt methodology in references and reports instead of bloating SKILL.md."
|
||||
],
|
||||
"reviewer_note": "Use this profile when the package depends on prompt behavior, role design, output contracts, or conversation quality."
|
||||
}
|
||||
+94
@@ -0,0 +1,94 @@
|
||||
# Prompt Quality Profile
|
||||
|
||||
Skill: `geo-content-brief-skill`
|
||||
Relevance: `prompt-heavy`
|
||||
Overall quality score: `85.0/100`
|
||||
|
||||
## Primary Task Family
|
||||
|
||||
**Creative generation**
|
||||
- Matched keywords: copy, content, 内容
|
||||
|
||||
## Complexity
|
||||
|
||||
- Band: `complex`
|
||||
- Score: `6`
|
||||
- Reason: multiple inputs, constraints, or task families require tradeoff handling
|
||||
|
||||
## Need Model
|
||||
|
||||
- Explicit Need: 将 GEO 内容访谈、关键词笔记和渠道约束整理成可执行的中文内容简报 Skill,适用于团队复用、触发边界审查和后续质量评估。
|
||||
- Implicit Need: The reusable skill needs a stable role, task, and output contract rather than a one-off prompt.
|
||||
- Scenario: not yet explicit
|
||||
- User Level: infer from examples and standards; ask only if it changes output depth
|
||||
- Success Standard: usable output with clear validation cues
|
||||
|
||||
## RTF To Skill Mapping
|
||||
|
||||
- Role: Use a taste-aware creator role with clear audience, tone, and originality boundaries.
|
||||
- Task: Generate variants, explain selection logic, and preserve the user's distinctive constraints.
|
||||
- Format: Return options with rationale, selection criteria, and refinement paths.
|
||||
|
||||
## Quality Matrix
|
||||
|
||||
### Completeness — 80/100
|
||||
- Matched signals: input, output, constraint, example, 约束
|
||||
- Repair: Name missing inputs, outputs, constraints, or success standards before deepening the package.
|
||||
|
||||
### Clarity — 90/100
|
||||
- Matched signals: clear, specific
|
||||
- Repair: Replace broad verbs with observable actions and define what done means.
|
||||
|
||||
### Consistency — 90/100
|
||||
- Matched signals: boundary, 边界
|
||||
- Repair: Check that role, task, format, exclusions, and examples do not contradict each other.
|
||||
|
||||
### Practicality — 95/100
|
||||
- Matched signals: execute, use, workflow, 执行
|
||||
- Repair: Add runnable steps, examples, or verification cues instead of abstract advice.
|
||||
|
||||
### Specificity — 70/100
|
||||
- Matched signals: none
|
||||
- Repair: Anchor wording in the user's audience, domain nouns, and target outcome.
|
||||
|
||||
## Matched Task Families
|
||||
|
||||
### Creative generation
|
||||
- Score: `3`
|
||||
- Keywords: copy, content, 内容
|
||||
- Role: Use a taste-aware creator role with clear audience, tone, and originality boundaries.
|
||||
- Task: Generate variants, explain selection logic, and preserve the user's distinctive constraints.
|
||||
- Format: Return options with rationale, selection criteria, and refinement paths.
|
||||
|
||||
### Execution operation
|
||||
- Score: `3`
|
||||
- Keywords: workflow, execute, 执行
|
||||
- Role: Use an operator role with explicit boundaries, inputs, outputs, and failure handling.
|
||||
- Task: Convert the job into ordered steps with validation checks and stop conditions.
|
||||
- Format: Return a runbook-like handoff with commands, checks, owners, and next actions when relevant.
|
||||
|
||||
### Prompt engineering
|
||||
- Score: `3`
|
||||
- Keywords: prompt, role, format
|
||||
- Role: Use a prompt engineer role only when role design materially improves execution.
|
||||
- Task: Map Role, Task, and Format into skill behavior rather than copying a large prompt template.
|
||||
- Format: Return a compact prompt contract plus tests, quality matrix, and usage notes.
|
||||
|
||||
### Dialogue interaction
|
||||
- Score: `2`
|
||||
- Keywords: dialogue, 访谈
|
||||
- Role: Use a conversational role that asks only high-leverage questions and remembers the user's goal.
|
||||
- Task: Clarify intent, resolve uncertainty, and converge toward a recommendation instead of a long option list.
|
||||
- Format: Return concise prompts, decision points, and reviewer-visible assumptions.
|
||||
|
||||
## Self-Repair Checks
|
||||
|
||||
- Check explicit need, implicit need, scenario, user level, and success standard before deepening.
|
||||
- Map Role, Task, and Format into skill behavior, not decorative prompt labels.
|
||||
- Ask one focused clarification only when missing information changes the package boundary.
|
||||
- Add tests or examples for prompt-heavy behavior before treating it as reusable.
|
||||
- Keep prompt methodology in references and reports instead of bloating SKILL.md.
|
||||
|
||||
## Reviewer Note
|
||||
|
||||
Use this profile when the package depends on prompt behavior, role design, output contracts, or conversation quality.
|
||||
+36
@@ -0,0 +1,36 @@
|
||||
{
|
||||
"skill_name": "geo-content-brief-skill",
|
||||
"title": "Geo Content Brief Skill",
|
||||
"description": "将 GEO 内容访谈、关键词笔记和渠道约束整理成可执行的中文内容简报 Skill,适用于团队复用、触发边界审查和后续质量评估。",
|
||||
"scan_focus": [
|
||||
{
|
||||
"label": "Execution pattern",
|
||||
"reason": "There is deterministic logic in scripts, so compare how strong references separate prose from executable steps."
|
||||
},
|
||||
{
|
||||
"label": "Portability pattern",
|
||||
"reason": "The package carries neutral metadata, so scan how good references preserve semantics across targets without forking source."
|
||||
},
|
||||
{
|
||||
"label": "Method pattern",
|
||||
"reason": "Use the core job description as the anchor for comparison: 将 GEO 内容访谈、关键词笔记和渠道约束整理成可执行的中文内容简报 Skill,适用于团队复用、触发边界审查和后续质量评估。"
|
||||
}
|
||||
],
|
||||
"external_references": [],
|
||||
"user_references": [],
|
||||
"local_constraints": [],
|
||||
"borrow_plan": [
|
||||
"External benchmark first: let high-quality public references define the upper bound for method, structure, execution, or portability.",
|
||||
"User references second: use them to understand taste, standards, and directional preferences without copying source phrasing.",
|
||||
"Local fit third: use local assets only to detect naming conflicts, private dependencies, or compatibility constraints.",
|
||||
"Borrow patterns, not prose: extract loops, boundaries, metadata, and operator flow without copying source-specific language.",
|
||||
"Keep the package light: reject any borrowed pattern that increases context cost faster than it increases reliability."
|
||||
],
|
||||
"priority_rule": "External benchmark objects set the pattern ceiling. User references refine taste and standards. Local files only calibrate fit, risk, and compatibility.",
|
||||
"non_goals": [
|
||||
"Do not copy source prose or branding into the new skill.",
|
||||
"Do not import gates that cost more context than they save.",
|
||||
"Do not use benchmark scanning to justify scope creep.",
|
||||
"Do not let local historical habits outrank stronger public benchmarks."
|
||||
]
|
||||
}
|
||||
+54
@@ -0,0 +1,54 @@
|
||||
# Reference Scan
|
||||
|
||||
Skill: `geo-content-brief-skill`
|
||||
|
||||
## Why This Step Exists
|
||||
|
||||
Use a short benchmark pass before authoring the package in depth. External benchmark objects should define the pattern ceiling. Local files are used afterward only to calibrate fit, privacy, naming, and compatibility.
|
||||
|
||||
## Current Skill Anchor
|
||||
|
||||
- Title: `Geo Content Brief Skill`
|
||||
- Description: 将 GEO 内容访谈、关键词笔记和渠道约束整理成可执行的中文内容简报 Skill,适用于团队复用、触发边界审查和后续质量评估。
|
||||
|
||||
## Scan Focus
|
||||
|
||||
- **Execution pattern**: There is deterministic logic in scripts, so compare how strong references separate prose from executable steps.
|
||||
- **Portability pattern**: The package carries neutral metadata, so scan how good references preserve semantics across targets without forking source.
|
||||
- **Method pattern**: Use the core job description as the anchor for comparison: 将 GEO 内容访谈、关键词笔记和渠道约束整理成可执行的中文内容简报 Skill,适用于团队复用、触发边界审查和后续质量评估。
|
||||
|
||||
## Priority Rule
|
||||
|
||||
- External benchmark objects set the pattern ceiling. User references refine taste and standards. Local files only calibrate fit, risk, and compatibility.
|
||||
|
||||
## External Benchmark Objects
|
||||
|
||||
- No explicit external benchmark objects recorded yet.
|
||||
- Recommended: capture 2 to 5 external references at most.
|
||||
- Suggested mix: one method reference, one structure reference, one execution or portability reference.
|
||||
|
||||
## User-Supplied References
|
||||
|
||||
- No user-supplied references recorded yet.
|
||||
- Ask whether the user has a repo, product, page, workflow, or prompt example worth learning from.
|
||||
- Treat these as pattern references only, not as text to be copied.
|
||||
|
||||
## Local Fit Check
|
||||
|
||||
- No local constraints recorded yet.
|
||||
- Use this section for naming collisions, private dependencies, compatibility limits, or existing library conventions.
|
||||
|
||||
## Borrow Plan
|
||||
|
||||
- External benchmark first: let high-quality public references define the upper bound for method, structure, execution, or portability.
|
||||
- User references second: use them to understand taste, standards, and directional preferences without copying source phrasing.
|
||||
- Local fit third: use local assets only to detect naming conflicts, private dependencies, or compatibility constraints.
|
||||
- Borrow patterns, not prose: extract loops, boundaries, metadata, and operator flow without copying source-specific language.
|
||||
- Keep the package light: reject any borrowed pattern that increases context cost faster than it increases reliability.
|
||||
|
||||
## Non-Goals
|
||||
|
||||
- Do not copy source prose or branding into the new skill.
|
||||
- Do not import gates that cost more context than they save.
|
||||
- Do not use benchmark scanning to justify scope creep.
|
||||
- Do not let local historical habits outrank stronger public benchmarks.
|
||||
+171
@@ -0,0 +1,171 @@
|
||||
{
|
||||
"skill_name": "geo-content-brief-skill",
|
||||
"description": "将 GEO 内容访谈、关键词笔记和渠道约束整理成可执行的中文内容简报 Skill,适用于团队复用、触发边界审查和后续质量评估。",
|
||||
"intent_confidence": {
|
||||
"score": 10,
|
||||
"band": "low",
|
||||
"gate_passed": false
|
||||
},
|
||||
"github_benchmarks": [],
|
||||
"source_tracks": [
|
||||
{
|
||||
"source_type": "official",
|
||||
"name": "Official skill anatomy and context discipline",
|
||||
"evidence_mode": "curated-pattern-track",
|
||||
"matched_keywords": [
|
||||
"general fit"
|
||||
],
|
||||
"borrow": "Borrow progressive disclosure: keep the entrypoint lean and move depth into references or scripts.",
|
||||
"avoid": "Do not let packaging or platform concerns swallow the core job boundary.",
|
||||
"why_relevant": "This track matches: general fit."
|
||||
},
|
||||
{
|
||||
"source_type": "research",
|
||||
"name": "Hypothesis-test-learn loop",
|
||||
"evidence_mode": "curated-pattern-track",
|
||||
"matched_keywords": [
|
||||
"general fit"
|
||||
],
|
||||
"borrow": "Borrow a small hypothesis-test-learn loop so the first revision is evidence-backed.",
|
||||
"avoid": "Do not create experimental overhead that exceeds the skill's real risk tier.",
|
||||
"why_relevant": "This track matches: general fit."
|
||||
},
|
||||
{
|
||||
"source_type": "principles",
|
||||
"name": "Boundary-first design",
|
||||
"evidence_mode": "curated-pattern-track",
|
||||
"matched_keywords": [
|
||||
"general fit"
|
||||
],
|
||||
"borrow": "Borrow the discipline of defining what the skill should not own before growing the package.",
|
||||
"avoid": "Do not expand execution assets until route boundaries stay clean.",
|
||||
"why_relevant": "This track matches: general fit."
|
||||
}
|
||||
],
|
||||
"synthesis": {
|
||||
"borrow_now": [
|
||||
"Borrow progressive disclosure: keep the entrypoint lean and move depth into references or scripts.",
|
||||
"Borrow a small hypothesis-test-learn loop so the first revision is evidence-backed.",
|
||||
"Borrow the discipline of defining what the skill should not own before growing the package."
|
||||
],
|
||||
"avoid_now": [
|
||||
"Do not let packaging or platform concerns swallow the core job boundary.",
|
||||
"Do not create experimental overhead that exceeds the skill's real risk tier.",
|
||||
"Do not expand execution assets until route boundaries stay clean."
|
||||
],
|
||||
"quality_risers": [
|
||||
"Use GitHub repositories for concrete package and workflow patterns.",
|
||||
"Use curated official or commercial tracks for entrypoint and operator ergonomics.",
|
||||
"Use research tracks to justify the smallest evaluation loop that still catches regressions.",
|
||||
"Use principle tracks to keep the package small, boundary-aware, and outcome-driven."
|
||||
],
|
||||
"pattern_gate": {
|
||||
"threshold": 2,
|
||||
"source_count": 3,
|
||||
"accepted": [
|
||||
{
|
||||
"name": "Official skill anatomy and context discipline",
|
||||
"source_type": "official",
|
||||
"borrow": "Borrow progressive disclosure: keep the entrypoint lean and move depth into references or scripts.",
|
||||
"avoid": "Do not let packaging or platform concerns swallow the core job boundary.",
|
||||
"gates": {
|
||||
"recurrence": true,
|
||||
"generativity": true,
|
||||
"distinctiveness": false,
|
||||
"boundary": true
|
||||
},
|
||||
"passed": [
|
||||
"recurrence",
|
||||
"generativity",
|
||||
"boundary"
|
||||
],
|
||||
"missing": [
|
||||
"distinctiveness"
|
||||
],
|
||||
"score": 3
|
||||
},
|
||||
{
|
||||
"name": "Hypothesis-test-learn loop",
|
||||
"source_type": "research",
|
||||
"borrow": "Borrow a small hypothesis-test-learn loop so the first revision is evidence-backed.",
|
||||
"avoid": "Do not create experimental overhead that exceeds the skill's real risk tier.",
|
||||
"gates": {
|
||||
"recurrence": true,
|
||||
"generativity": true,
|
||||
"distinctiveness": false,
|
||||
"boundary": true
|
||||
},
|
||||
"passed": [
|
||||
"recurrence",
|
||||
"generativity",
|
||||
"boundary"
|
||||
],
|
||||
"missing": [
|
||||
"distinctiveness"
|
||||
],
|
||||
"score": 3
|
||||
},
|
||||
{
|
||||
"name": "Boundary-first design",
|
||||
"source_type": "principles",
|
||||
"borrow": "Borrow the discipline of defining what the skill should not own before growing the package.",
|
||||
"avoid": "Do not expand execution assets until route boundaries stay clean.",
|
||||
"gates": {
|
||||
"recurrence": true,
|
||||
"generativity": true,
|
||||
"distinctiveness": false,
|
||||
"boundary": true
|
||||
},
|
||||
"passed": [
|
||||
"recurrence",
|
||||
"generativity",
|
||||
"boundary"
|
||||
],
|
||||
"missing": [
|
||||
"distinctiveness"
|
||||
],
|
||||
"score": 3
|
||||
}
|
||||
],
|
||||
"deferred": [],
|
||||
"summary": "3 accepted, 0 deferred using threshold 2/4."
|
||||
},
|
||||
"conflicts": [
|
||||
{
|
||||
"key": "lightweight_vs_governance",
|
||||
"summary": "The stated preference leans lightweight or speed-first, while the benchmark mix leans toward governance, review, or heavier evaluation structure.",
|
||||
"user_preference": "lightweight or speed-first",
|
||||
"benchmark_pressure": "governance or evaluation-heavy patterns"
|
||||
}
|
||||
],
|
||||
"recommendation": {
|
||||
"summary": "Start by borrowing this pattern: Borrow progressive disclosure: keep the entrypoint lean and move depth into references or scripts. Avoid this for the first pass: Do not let packaging or platform concerns swallow the core job boundary.",
|
||||
"borrow_now": [
|
||||
"Borrow progressive disclosure: keep the entrypoint lean and move depth into references or scripts.",
|
||||
"Borrow a small hypothesis-test-learn loop so the first revision is evidence-backed."
|
||||
],
|
||||
"avoid_for_now": [
|
||||
"Do not let packaging or platform concerns swallow the core job boundary.",
|
||||
"Do not create experimental overhead that exceeds the skill's real risk tier."
|
||||
],
|
||||
"why": "There is a real design conflict to resolve: The stated preference leans lightweight or speed-first, while the benchmark mix leans toward governance, review, or heavier evaluation structure.",
|
||||
"user_decision_required": true
|
||||
},
|
||||
"visibility": {
|
||||
"mode": "explicit",
|
||||
"user_decision_required": true,
|
||||
"reasons": [
|
||||
"intent_uncertain",
|
||||
"design_conflict"
|
||||
],
|
||||
"user_note": "Surface the recommendation because intent is still settling or there is a real design conflict that needs a user call.",
|
||||
"reviewer_note": "Keep the full benchmark and synthesis evidence visible for authors and reviewers."
|
||||
},
|
||||
"decision_prompt": "Use the recommendation by default. Only surface the underlying benchmark tradeoffs when intent is uncertain or a real design conflict needs a deliberate call.",
|
||||
"source_mix": {
|
||||
"github_benchmarks": 0,
|
||||
"curated_tracks": 3,
|
||||
"user_references": 0
|
||||
}
|
||||
}
|
||||
}
|
||||
+81
@@ -0,0 +1,81 @@
|
||||
# Reference Synthesis
|
||||
|
||||
Skill: `geo-content-brief-skill`
|
||||
- Description: 将 GEO 内容访谈、关键词笔记和渠道约束整理成可执行的中文内容简报 Skill,适用于团队复用、触发边界审查和后续质量评估。
|
||||
- Intent confidence: `10/100` (`low`)
|
||||
|
||||
## Live GitHub Benchmarks
|
||||
|
||||
- No live GitHub benchmarks are attached yet.
|
||||
|
||||
## Curated World-Class Pattern Tracks
|
||||
|
||||
### Official skill anatomy and context discipline
|
||||
- Type: `official`
|
||||
- Evidence mode: `curated-pattern-track`
|
||||
- Why relevant: This track matches: general fit.
|
||||
- Borrow: Borrow progressive disclosure: keep the entrypoint lean and move depth into references or scripts.
|
||||
- Avoid: Do not let packaging or platform concerns swallow the core job boundary.
|
||||
|
||||
### Hypothesis-test-learn loop
|
||||
- Type: `research`
|
||||
- Evidence mode: `curated-pattern-track`
|
||||
- Why relevant: This track matches: general fit.
|
||||
- Borrow: Borrow a small hypothesis-test-learn loop so the first revision is evidence-backed.
|
||||
- Avoid: Do not create experimental overhead that exceeds the skill's real risk tier.
|
||||
|
||||
### Boundary-first design
|
||||
- Type: `principles`
|
||||
- Evidence mode: `curated-pattern-track`
|
||||
- Why relevant: This track matches: general fit.
|
||||
- Borrow: Borrow the discipline of defining what the skill should not own before growing the package.
|
||||
- Avoid: Do not expand execution assets until route boundaries stay clean.
|
||||
|
||||
## Borrow Now
|
||||
|
||||
- Borrow progressive disclosure: keep the entrypoint lean and move depth into references or scripts.
|
||||
- Borrow a small hypothesis-test-learn loop so the first revision is evidence-backed.
|
||||
- Borrow the discipline of defining what the skill should not own before growing the package.
|
||||
|
||||
## Avoid Now
|
||||
|
||||
- Do not let packaging or platform concerns swallow the core job boundary.
|
||||
- Do not create experimental overhead that exceeds the skill's real risk tier.
|
||||
- Do not expand execution assets until route boundaries stay clean.
|
||||
|
||||
## Pattern Gate
|
||||
|
||||
- Summary: 3 accepted, 0 deferred using threshold 2/4.
|
||||
- Acceptance threshold: `2/4`
|
||||
- Accepted patterns:
|
||||
- **Official skill anatomy and context discipline**: 3/4 (recurrence, generativity, boundary)
|
||||
- **Hypothesis-test-learn loop**: 3/4 (recurrence, generativity, boundary)
|
||||
- **Boundary-first design**: 3/4 (recurrence, generativity, boundary)
|
||||
|
||||
## Default Recommendation
|
||||
|
||||
- Summary: Start by borrowing this pattern: Borrow progressive disclosure: keep the entrypoint lean and move depth into references or scripts. Avoid this for the first pass: Do not let packaging or platform concerns swallow the core job boundary.
|
||||
- Why: There is a real design conflict to resolve: The stated preference leans lightweight or speed-first, while the benchmark mix leans toward governance, review, or heavier evaluation structure.
|
||||
- User decision required: `True`
|
||||
|
||||
## Visibility Mode
|
||||
|
||||
- Mode: `explicit`
|
||||
- Reasons: intent_uncertain, design_conflict
|
||||
- User note: Surface the recommendation because intent is still settling or there is a real design conflict that needs a user call.
|
||||
- Reviewer note: Keep the full benchmark and synthesis evidence visible for authors and reviewers.
|
||||
|
||||
## Conflict Check
|
||||
|
||||
- **lightweight_vs_governance**: The stated preference leans lightweight or speed-first, while the benchmark mix leans toward governance, review, or heavier evaluation structure.
|
||||
|
||||
## Quality Lift Thesis
|
||||
|
||||
- Use GitHub repositories for concrete package and workflow patterns.
|
||||
- Use curated official or commercial tracks for entrypoint and operator ergonomics.
|
||||
- Use research tracks to justify the smallest evaluation loop that still catches regressions.
|
||||
- Use principle tracks to keep the package small, boundary-aware, and outcome-driven.
|
||||
|
||||
## Decision Prompt
|
||||
|
||||
Use the recommendation by default. Only surface the underlying benchmark tradeoffs when intent is uncertain or a real design conflict needs a deliberate call.
|
||||
+720
File diff suppressed because one or more lines are too long
+4450
File diff suppressed because it is too large
Load Diff
+376
@@ -0,0 +1,376 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>Geo Content Brief Skill Review Viewer</title>
|
||||
<style>
|
||||
:root {
|
||||
--text: #111111;
|
||||
--muted: #666666;
|
||||
--line: #e8e8e8;
|
||||
--soft: #f6f6f4;
|
||||
--white: #ffffff;
|
||||
}
|
||||
* { box-sizing: border-box; }
|
||||
body {
|
||||
margin: 0;
|
||||
background: var(--white);
|
||||
color: var(--text);
|
||||
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
|
||||
line-height: 1.6;
|
||||
}
|
||||
.page {
|
||||
max-width: 1120px;
|
||||
margin: 0 auto;
|
||||
padding: 48px 32px 72px;
|
||||
}
|
||||
.hero {
|
||||
padding-bottom: 28px;
|
||||
border-bottom: 1px solid var(--line);
|
||||
margin-bottom: 28px;
|
||||
}
|
||||
h1, h2, h3 {
|
||||
margin: 0 0 12px;
|
||||
letter-spacing: -0.02em;
|
||||
font-weight: 600;
|
||||
}
|
||||
h1 { font-size: 40px; line-height: 1.08; }
|
||||
h2 { font-size: 22px; margin-top: 34px; }
|
||||
h3 { font-size: 16px; }
|
||||
p, li, span { font-size: 15px; }
|
||||
.lede {
|
||||
max-width: 860px;
|
||||
font-size: 18px;
|
||||
color: var(--muted);
|
||||
margin: 0 0 18px;
|
||||
}
|
||||
.meta {
|
||||
display: flex;
|
||||
gap: 10px;
|
||||
flex-wrap: wrap;
|
||||
margin-top: 16px;
|
||||
}
|
||||
.meta span {
|
||||
border: 1px solid var(--line);
|
||||
padding: 6px 10px;
|
||||
background: var(--soft);
|
||||
}
|
||||
.arch-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(5, minmax(0, 1fr));
|
||||
gap: 12px;
|
||||
margin-top: 16px;
|
||||
}
|
||||
.arch-step, .panel, .direction-card, .baseline-box {
|
||||
border: 1px solid var(--line);
|
||||
background: var(--white);
|
||||
}
|
||||
.arch-step {
|
||||
padding: 14px;
|
||||
min-height: 132px;
|
||||
}
|
||||
.step-label {
|
||||
font-size: 12px;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.08em;
|
||||
color: var(--muted);
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.step-detail {
|
||||
font-size: 14px;
|
||||
}
|
||||
.grid {
|
||||
display: grid;
|
||||
grid-template-columns: 1.1fr 0.9fr;
|
||||
gap: 18px;
|
||||
margin-top: 16px;
|
||||
}
|
||||
.panel {
|
||||
padding: 18px;
|
||||
}
|
||||
.panel ul {
|
||||
margin: 0;
|
||||
padding-left: 18px;
|
||||
}
|
||||
.direction-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(3, minmax(0, 1fr));
|
||||
gap: 16px;
|
||||
margin-top: 16px;
|
||||
}
|
||||
.variant-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(3, minmax(0, 1fr));
|
||||
gap: 16px;
|
||||
margin-top: 16px;
|
||||
}
|
||||
.direction-card {
|
||||
padding: 18px;
|
||||
}
|
||||
.direction-card ul {
|
||||
margin: 12px 0;
|
||||
padding-left: 18px;
|
||||
}
|
||||
.minor {
|
||||
color: var(--muted);
|
||||
font-size: 13px;
|
||||
}
|
||||
.variant-card {
|
||||
border: 1px solid var(--line);
|
||||
background: var(--white);
|
||||
padding: 18px;
|
||||
}
|
||||
.variant-head {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
gap: 12px;
|
||||
align-items: baseline;
|
||||
}
|
||||
.variant-head span {
|
||||
color: var(--muted);
|
||||
font-size: 12px;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.06em;
|
||||
}
|
||||
.variant-description {
|
||||
margin: 14px 0;
|
||||
padding-left: 14px;
|
||||
border-left: 2px solid var(--line);
|
||||
color: var(--text);
|
||||
}
|
||||
.variant-metrics {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 8px;
|
||||
margin-bottom: 14px;
|
||||
}
|
||||
.variant-metrics span {
|
||||
border: 1px solid var(--line);
|
||||
background: var(--soft);
|
||||
padding: 6px 10px;
|
||||
font-size: 12px;
|
||||
}
|
||||
.variant-cues p {
|
||||
margin: 8px 0 6px;
|
||||
}
|
||||
.variant-cues ul {
|
||||
margin: 0 0 12px;
|
||||
padding-left: 18px;
|
||||
}
|
||||
table {
|
||||
width: 100%;
|
||||
border-collapse: collapse;
|
||||
margin-top: 14px;
|
||||
font-size: 14px;
|
||||
}
|
||||
th, td {
|
||||
border-top: 1px solid var(--line);
|
||||
text-align: left;
|
||||
padding: 10px 8px;
|
||||
vertical-align: top;
|
||||
}
|
||||
th {
|
||||
font-size: 12px;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.06em;
|
||||
color: var(--muted);
|
||||
}
|
||||
@media (max-width: 1000px) {
|
||||
.arch-grid, .direction-grid, .variant-grid, .grid {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="page">
|
||||
<section class="hero">
|
||||
<p class="minor">Review Viewer</p>
|
||||
<h1>Geo Content Brief Skill</h1>
|
||||
<p class="lede">将 GEO 内容访谈、关键词笔记、竞品线索和渠道约束整理成可执行的中文内容简报。用于团队复用、选题规划、内容生产交接和质量评审;不用于直接代写完整长文或替代品牌策略判断。</p>
|
||||
<div class="meta">
|
||||
<span>maturity: production</span>
|
||||
<span>archetype: production</span>
|
||||
<span>format: agent-skills</span>
|
||||
<span>updated: 2026-06-15</span>
|
||||
<span>intent confidence: 10 / 100</span>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2>Architecture at a glance</h2>
|
||||
<div class="arch-grid"><div class='arch-step'><div class='step-label'>Inputs</div><div class='step-detail'>workflow, prompt, transcript, docs, or notes</div></div><div class='arch-step'><div class='step-label'>Boundary</div><div class='step-detail'>将 GEO 内容访谈、关键词笔记、竞品线索和渠道约束整理成可执行的中文内容简报。用于团队复用、选题规划、内容生产交接和质量评审;不用于直接代写完整长文或替代品牌策略判断。</div></div><div class='arch-step'><div class='step-label'>Logic</div><div class='step-detail'>读取用户输入,识别目标受众、内容渠道、关键词、品牌边界、禁止表达和必须覆盖的信息。; 对照 `references/brief-structure.md` 生成简报骨架:目标、洞察、角度、关键词、结构、证据、风险和验收标准。; 如果缺少核心输入,先提出最多三个澄清问题,不用假设补全用户没有提供的事实。</div></div><div class='arch-step'><div class='step-label'>Usage</div><div class='step-detail'>当你需要把访谈纪要、关键词、竞品线索和渠道限制整理成中文 GEO 内容简报时,使用 $geo-content-brief-skill。; Use this skill when the request matches: 将 GEO 内容访谈、关键词笔记、竞品线索和渠道约束整理成可执行的中文内容简报。用于团队复用、选题规划、内容生产交接和质量评审;不用于直接代写完整长文或替代品牌策略判断。</div></div><div class='arch-step'><div class='step-label'>Next</div><div class='step-detail'>Review the top iteration directions before growing the package.</div></div></div>
|
||||
</section>
|
||||
|
||||
<section class="grid">
|
||||
<div class="panel">
|
||||
<h2>Core logic</h2>
|
||||
<ul><li>读取用户输入,识别目标受众、内容渠道、关键词、品牌边界、禁止表达和必须覆盖的信息。</li><li>对照 `references/brief-structure.md` 生成简报骨架:目标、洞察、角度、关键词、结构、证据、风险和验收标准。</li><li>如果缺少核心输入,先提出最多三个澄清问题,不用假设补全用户没有提供的事实。</li><li>用 `evals/trigger_cases.jsonl` 检查当前请求是否属于 GEO 内容简报场景。</li><li>用 `evals/output_cases.jsonl` 检查输出是否包含输入摘要、内容结构、证据要求、禁区和下一步动作。</li></ul>
|
||||
</div>
|
||||
<div class="panel">
|
||||
<h2>How to use it</h2>
|
||||
<ul><li>当你需要把访谈纪要、关键词、竞品线索和渠道限制整理成中文 GEO 内容简报时,使用 $geo-content-brief-skill。</li><li>Use this skill when the request matches: 将 GEO 内容访谈、关键词笔记、竞品线索和渠道约束整理成可执行的中文内容简报。用于团队复用、选题规划、内容生产交接和质量评审;不用于直接代写完整长文或替代品牌策略判断。</li></ul>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="grid">
|
||||
<div class="panel">
|
||||
<h2>Intent questions</h2>
|
||||
<ul><li><strong>If this skill worked beautifully, what recurring job would it reliably handle for the user every time?</strong><br><span>This reveals the real job-to-be-done and gives the package a humane center instead of a guessed prompt shape.</span></li><li><strong>When someone reaches for this skill in the real world, what materials will they actually hand to it?</strong><br><span>Input shape decides whether references, scripts, or templates are needed.</span></li><li><strong>What finished output should it hand back so the user can immediately keep moving?</strong><br><span>Outputs should drive the package structure before extra guidance is added.</span></li><li><strong>Which nearby requests should this skill politely refuse so the boundary stays clean?</strong><br><span>The exclusion list is the fastest route to better trigger quality.</span></li><li><strong>What matters most here: speed, consistency, auditability, portability, governance, or tone/style fit?</strong><br><span>Constraints decide how much structure, packaging, and review the skill actually needs.</span></li></ul>
|
||||
</div>
|
||||
<div class="panel">
|
||||
<h2>Why this package is strong</h2>
|
||||
<ul><li>触发面保持精简,并锚定在 frontmatter description。</li><li>已生成 Skill IR,核心语义可先于平台打包被审查和迁移。</li><li>已生成目标编译报告,可审查 IR 到 OpenAI、Claude、generic 等目标契约的映射。</li><li>已生成 Adoption Drift Report,可把本地使用反馈转为下一轮迭代信号。</li><li>已生成 Review Waivers 台账,可记录 reviewer 对 warning 风险的批准、理由和到期时间。</li><li>已生成 Review Annotations 台账,可把 reviewer 批注挂到 gate、文件和行号。</li></ul>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="grid">
|
||||
<div class="panel">
|
||||
<h2>Borrow plan</h2>
|
||||
<ul><li>No external benchmark objects recorded yet. Add 2 to 5 references before deepening the package.</li></ul>
|
||||
</div>
|
||||
<div class="panel">
|
||||
<h2>Compare view</h2>
|
||||
<p class='minor'>No baseline comparison has been recorded for this package yet.</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2>Variant diff studio</h2>
|
||||
<div class="variant-grid"><p class='minor'>No description optimization compare payload is attached yet.</p></div>
|
||||
</section>
|
||||
|
||||
<section class="grid">
|
||||
<div class="panel">
|
||||
<h2>Evidence readiness</h2>
|
||||
<p class="minor">Readiness score: 57/100</p>
|
||||
<ul><li><strong>Intent clarity</strong> · needs review<br><span>10/100 intent confidence.</span></li><li><strong>Benchmark coverage</strong> · needs evidence<br><span>0 GitHub benchmark repositories attached.</span></li><li><strong>Pattern gate</strong> · ready<br><span>3 accepted, 0 deferred using threshold 2/4.</span></li><li><strong>Conflict handling</strong> · decision needed<br><span>The stated preference leans lightweight or speed-first, while the benchmark mix leans toward governance, review, or heavier evaluation structure.</span></li><li><strong>Output risk profile</strong> · ready<br><span>5 output risk families attached.</span></li><li><strong>Artifact design profile</strong> · ready<br><span>High-trust editorial report with a clear first-screen thesis, compact evidence blocks, and decisions separated from supporting detail.</span></li><li><strong>Prompt quality profile</strong> · ready<br><span>85.0/100 prompt-facing quality score.</span></li></ul>
|
||||
</div>
|
||||
<div class="panel">
|
||||
<h2>Honest boundary check</h2>
|
||||
<ul>
|
||||
<li>Are the known limits visible before the package deepens?</li>
|
||||
<li>Does the evidence support the borrowed patterns?</li>
|
||||
<li>Should uncertainty become a clarification question instead of more structure?</li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="grid">
|
||||
<div class="panel">
|
||||
<h2>Output risk profile</h2>
|
||||
<ul><li><strong>Markdown readability</strong><br><span>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.</span></li><li><strong>Screenshot and visual capture</strong><br><span>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.</span></li><li><strong>Citation and footnote clutter</strong><br><span>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.</span></li></ul>
|
||||
</div>
|
||||
<div class="panel">
|
||||
<h2>Self-repair checks</h2>
|
||||
<ul><li>Preview whether each table still reads well when columns are narrow.</li><li>Convert any table with paragraph-length cells into bullets or cards.</li><li>Check that every screenshot reference points to a real provided or generated asset.</li><li>Reword any visual instruction that depends on an unseen screen state.</li><li>Remove decorative citations that do not support a material claim.</li></ul>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="grid">
|
||||
<div class="panel">
|
||||
<h2>Artifact design profile</h2>
|
||||
<p class="minor">Design system: metric editorial</p>
|
||||
<ul><li><strong>Report or brief</strong><br><span>High-trust editorial report with a clear first-screen thesis, compact evidence blocks, and decisions separated from supporting detail.</span></li><li><strong>Review viewer</strong><br><span>Side-by-side reviewer studio with explicit tradeoffs, evidence readiness, and fast paths for approving, blocking, or requesting one focused fix.</span></li><li><strong>Dashboard or metrics page</strong><br><span>Metric-first dashboard with stable dimensions, short labels, visible deltas, and narrative callouts only where they change interpretation.</span></li></ul>
|
||||
</div>
|
||||
<div class="panel">
|
||||
<h2>Visual quality gates</h2>
|
||||
<ul><li>Keep the first screen useful without requiring the reader to parse every detail.</li><li>Use tables only for comparisons; move explanations below the table.</li><li>Keep source notes readable without flooding the body with markers.</li><li>Make differences visible instead of hiding them in prose.</li><li>Separate author-facing recommendations from reviewer-only evidence.</li></ul>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="grid">
|
||||
<div class="panel">
|
||||
<h2>Prompt quality profile</h2>
|
||||
<p class="minor">Relevance: prompt-heavy · score 85.0 / 100 · complexity complex</p>
|
||||
<ul><li><strong>Completeness</strong> · 80 / 100<br><span>Name missing inputs, outputs, constraints, or success standards before deepening the package.</span></li><li><strong>Clarity</strong> · 90 / 100<br><span>Replace broad verbs with observable actions and define what done means.</span></li><li><strong>Consistency</strong> · 90 / 100<br><span>Check that role, task, format, exclusions, and examples do not contradict each other.</span></li><li><strong>Practicality</strong> · 95 / 100<br><span>Add runnable steps, examples, or verification cues instead of abstract advice.</span></li><li><strong>Specificity</strong> · 70 / 100<br><span>Anchor wording in the user's audience, domain nouns, and target outcome.</span></li></ul>
|
||||
</div>
|
||||
<div class="panel">
|
||||
<h2>RTF to skill mapping</h2>
|
||||
<ul><li><strong>Role</strong><br><span>Use a taste-aware creator role with clear audience, tone, and originality boundaries.</span></li><li><strong>Task</strong><br><span>Generate variants, explain selection logic, and preserve the user's distinctive constraints.</span></li><li><strong>Format</strong><br><span>Return options with rationale, selection criteria, and refinement paths.</span></li></ul>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="grid">
|
||||
<div class="panel">
|
||||
<h2>Reference coach</h2>
|
||||
<div class="direction-grid"><p class='minor'>No GitHub benchmark scan has been attached to this package yet.</p></div>
|
||||
</div>
|
||||
<div class="panel">
|
||||
<h2>Decide before you deepen</h2>
|
||||
<ul>
|
||||
<li>Choose one pattern to borrow on purpose, not three at once.</li>
|
||||
<li>State one thing this skill will not inherit from the benchmark objects.</li>
|
||||
<li>Only deepen the package after that choice is visible in the boundary or execution flow.</li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="grid">
|
||||
<div class="panel">
|
||||
<h2>Reference synthesis</h2>
|
||||
<div class="direction-grid"><div class='direction-card'><h3>Official skill anatomy and context discipline</h3><p><strong>Borrow now</strong></p><ul><li>Borrow progressive disclosure: keep the entrypoint lean and move depth into references or scripts.</li></ul><p><strong>Avoid</strong></p><ul><li>Do not let packaging or platform concerns swallow the core job boundary.</li></ul></div><div class='direction-card'><h3>Hypothesis-test-learn loop</h3><p><strong>Borrow now</strong></p><ul><li>Borrow a small hypothesis-test-learn loop so the first revision is evidence-backed.</li></ul><p><strong>Avoid</strong></p><ul><li>Do not create experimental overhead that exceeds the skill's real risk tier.</li></ul></div><div class='direction-card'><h3>Boundary-first design</h3><p><strong>Borrow now</strong></p><ul><li>Borrow the discipline of defining what the skill should not own before growing the package.</li></ul><p><strong>Avoid</strong></p><ul><li>Do not expand execution assets until route boundaries stay clean.</li></ul></div></div>
|
||||
</div>
|
||||
<div class="panel">
|
||||
<h2>Borrow now</h2>
|
||||
<ul><li>Borrow progressive disclosure: keep the entrypoint lean and move depth into references or scripts.</li><li>Borrow a small hypothesis-test-learn loop so the first revision is evidence-backed.</li><li>Borrow the discipline of defining what the skill should not own before growing the package.</li></ul>
|
||||
<p class="minor">Use the recommendation by default. Only surface the underlying benchmark tradeoffs when intent is uncertain or a real design conflict needs a deliberate call.</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2>Top three next moves</h2>
|
||||
<div class="direction-grid"><div class='direction-card'><h3>Tighten trigger and exclusions</h3><p>The package needs clearer near-neighbor exclusions before it grows.</p><ul><li>Add 3 to 5 should-trigger and should-not-trigger examples.</li><li>Refine the frontmatter description to name the recurring job and non-goals.</li><li>Run a first trigger evaluation pass before expanding the package.</li></ul><div class='minor'>Unlocks: Cleaner routing and fewer accidental activations.</div></div><div class='direction-card'><h3>Add the first execution asset</h3><p>The package is still mostly prose. Add one asset that removes repeated manual work.</p><ul><li>Move stable procedural guidance into references if users will need it repeatedly.</li><li>Create one deterministic helper script if a repeated step can be executed instead of described.</li><li>Keep the main SKILL.md compact and route-oriented.</li></ul><div class='minor'>Unlocks: Stronger execution quality without bloating the entrypoint.</div></div><div class='direction-card'><h3>Promote from scaffold to production-ready</h3><p>The first version exists; the next gain usually comes from adding the smallest useful gates.</p><ul><li>Decide whether this skill is personal, team-reused, or library-grade.</li><li>Add only the gates that match that risk level.</li><li>Record lifecycle metadata and review cadence once reuse becomes real.</li></ul><div class='minor'>Unlocks: A clearer path from exploratory package to maintained asset.</div></div></div>
|
||||
</section>
|
||||
|
||||
<section class="grid">
|
||||
<div class="panel">
|
||||
<h2>Recent feedback</h2>
|
||||
<ul><li>No lightweight feedback captured yet. Use `yao.py feedback` to record quick review notes.</li></ul>
|
||||
</div>
|
||||
<div class="panel">
|
||||
<h2>Promotion status</h2>
|
||||
<p class='minor'>No promotion summary is attached to this package yet.</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="grid">
|
||||
<div class="panel">
|
||||
<h2>Package map</h2>
|
||||
<ul><li><strong>SKILL.md</strong> — Skill entrypoint</li><li><strong>README.md</strong> — Human-readable usage guide</li><li><strong>agents/interface.yaml</strong> — Neutral interface metadata</li><li><strong>manifest.json</strong> — Lifecycle and portability metadata</li><li><strong>references</strong> — Extended guidance and reusable notes</li><li><strong>scripts</strong> — Deterministic helpers or local tooling</li><li><strong>evals</strong> — Trigger and quality checks</li><li><strong>reports</strong> — Generated evidence and overview artifacts</li></ul>
|
||||
</div>
|
||||
<div class="panel">
|
||||
<h2>First-pass review frame</h2>
|
||||
<ul>
|
||||
<li>Does the trigger stay narrow enough for the intended job?</li>
|
||||
<li>Does the archetype match the real reuse level?</li>
|
||||
<li>Are we adding structure faster than we are adding reliability?</li>
|
||||
<li>Should the next step be trigger tightening, execution assets, or portability hardening?</li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="grid">
|
||||
<div class="panel">
|
||||
<h2>Authoring discipline</h2>
|
||||
<ul>
|
||||
<li>Name unresolved assumptions before deepening the package.</li>
|
||||
<li>Keep the package no larger than the recurring job requires.</li>
|
||||
<li>Touch only files that directly support the requested change.</li>
|
||||
<li>Tie every meaningful new artifact to a check or reviewer note.</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="panel">
|
||||
<h2>Reviewer guardrails</h2>
|
||||
<ul>
|
||||
<li>Block speculative features that are not backed by real workflow variation.</li>
|
||||
<li>Move unverifiable ideas into next-step candidates instead of baseline structure.</li>
|
||||
<li>Reject decorative folders, reports, or governance that do not reduce risk.</li>
|
||||
<li>Ask for one high-leverage clarification when job, output, or exclusion is still fuzzy.</li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
+1921
File diff suppressed because it is too large
Load Diff
+24
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"schema_version": "1.0",
|
||||
"ok": true,
|
||||
"skill_dir": ".previews/yao-meta-skill-v2-report-demo/geo-content-brief-skill",
|
||||
"source": "reports/review_annotations_input.json",
|
||||
"summary": {
|
||||
"annotation_count": 0,
|
||||
"open_count": 0,
|
||||
"resolved_count": 0,
|
||||
"deferred_count": 0,
|
||||
"open_blocker_count": 0,
|
||||
"open_warning_count": 0,
|
||||
"linked_gate_count": 0,
|
||||
"target_missing_count": 0,
|
||||
"failure_count": 0
|
||||
},
|
||||
"annotations": [],
|
||||
"failures": [],
|
||||
"template_written": false,
|
||||
"artifacts": {
|
||||
"json": "reports/review_annotations.json",
|
||||
"markdown": "reports/review_annotations.md"
|
||||
}
|
||||
}
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
# Review Annotations
|
||||
|
||||
This report renders reviewer annotations attached to Review Studio gates and source/report paths.
|
||||
|
||||
- Annotations: `0`
|
||||
- Open: `0`
|
||||
- Resolved: `0`
|
||||
- Deferred: `0`
|
||||
- Open blockers: `0`
|
||||
- Open warnings: `0`
|
||||
|
||||
No reviewer annotations recorded yet.
|
||||
|
||||
|
||||
## Review Rule
|
||||
|
||||
- Use annotations for reviewer comments tied to a gate or source line.
|
||||
- Use waivers only for explicit acceptance of warning-level release risk.
|
||||
- Open blocker annotations should block a release decision until resolved or deferred with rationale.
|
||||
+44
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"schema_version": "1.0",
|
||||
"ok": true,
|
||||
"skill_dir": ".previews/yao-meta-skill-v2-report-demo/geo-content-brief-skill",
|
||||
"generated_at": "2026-06-15",
|
||||
"summary": {
|
||||
"waiver_count": 0,
|
||||
"active_count": 0,
|
||||
"expired_count": 0,
|
||||
"invalid_count": 0,
|
||||
"covered_gate_count": 0,
|
||||
"covered_gate_keys": [],
|
||||
"waiver_candidate_count": 0,
|
||||
"waiverable_open_count": 0,
|
||||
"non_waivable_count": 0
|
||||
},
|
||||
"policy": {
|
||||
"blocker_waivers_allowed": false,
|
||||
"minimum_reason_chars": 20,
|
||||
"expires_required": true,
|
||||
"known_gate_keys": [
|
||||
"context-budget",
|
||||
"intent-canvas",
|
||||
"operations-loop",
|
||||
"output-lab",
|
||||
"permission-gates",
|
||||
"permission-runtime",
|
||||
"registry-audit",
|
||||
"release-notes",
|
||||
"runtime-matrix",
|
||||
"skill-atlas",
|
||||
"trigger-lab",
|
||||
"trust-report"
|
||||
]
|
||||
},
|
||||
"waivers": [],
|
||||
"waiver_candidates": [],
|
||||
"failures": [],
|
||||
"warnings": [],
|
||||
"artifacts": {
|
||||
"json": ".previews/yao-meta-skill-v2-report-demo/geo-content-brief-skill/reports/review_waivers.json",
|
||||
"markdown": ".previews/yao-meta-skill-v2-report-demo/geo-content-brief-skill/reports/review_waivers.md"
|
||||
}
|
||||
}
|
||||
+34
@@ -0,0 +1,34 @@
|
||||
# Review Waivers
|
||||
|
||||
- OK: `True`
|
||||
- Waivers: `0`
|
||||
- Active: `0`
|
||||
- Expired: `0`
|
||||
- Invalid: `0`
|
||||
- Covered gates: `none`
|
||||
- Waiver candidates: `0`
|
||||
- Open waiverable candidates: `0`
|
||||
- Non-waivable boundaries: `0`
|
||||
|
||||
## Policy
|
||||
|
||||
- Blocker waivers allowed: `False`
|
||||
- Minimum reason chars: `20`
|
||||
- Expiry is required for every waiver.
|
||||
- World-class evidence completion cannot be waived; it can only be proven by accepted ledger evidence.
|
||||
|
||||
## Waivers
|
||||
|
||||
- None
|
||||
|
||||
## Candidate Actions
|
||||
|
||||
- None
|
||||
|
||||
## Failures
|
||||
|
||||
- None
|
||||
|
||||
## Warnings
|
||||
|
||||
- None
|
||||
@@ -0,0 +1,93 @@
|
||||
{
|
||||
"schema_version": "2.0.0",
|
||||
"name": "geo-content-brief-skill",
|
||||
"title": "Geo Content Brief Skill",
|
||||
"job_to_be_done": "将 GEO 内容访谈、关键词笔记和渠道约束整理成可执行的中文内容简报 Skill,适用于团队复用、触发边界审查和后续质量评估。",
|
||||
"trigger_surface": {
|
||||
"description": "将 GEO 内容访谈、关键词笔记和渠道约束整理成可执行的中文内容简报 Skill,适用于团队复用、触发边界审查和后续质量评估。",
|
||||
"should_trigger": [
|
||||
"将 GEO 内容访谈、关键词笔记和渠道约束整理成可执行的中文内容简报 Skill,适用于团队复用、触发边界审查和后续质量评估。"
|
||||
],
|
||||
"should_not_trigger": [
|
||||
"one-off adjacent requests that do not match the recurring job",
|
||||
"private local material that was not intentionally included"
|
||||
],
|
||||
"edge_cases": []
|
||||
},
|
||||
"workflow": {
|
||||
"steps": [
|
||||
"Understand the request.",
|
||||
"Execute the main task.",
|
||||
"Validate the result."
|
||||
],
|
||||
"decision_points": [
|
||||
"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.",
|
||||
"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.",
|
||||
"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.",
|
||||
"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": [],
|
||||
"scripts": [],
|
||||
"assets": [],
|
||||
"reports": [
|
||||
"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"
|
||||
]
|
||||
},
|
||||
"eval_plan": {
|
||||
"trigger": [],
|
||||
"output": [],
|
||||
"adversarial": [],
|
||||
"baseline": "without_skill"
|
||||
},
|
||||
"risk": {
|
||||
"output_risk": "high",
|
||||
"execution_risk": "low",
|
||||
"trust_boundary": "personal"
|
||||
},
|
||||
"governance": {
|
||||
"owner": "Yao Team",
|
||||
"maturity": "scaffold",
|
||||
"review_cadence": "per-release",
|
||||
"review_due": ""
|
||||
},
|
||||
"targets": [
|
||||
"openai",
|
||||
"claude",
|
||||
"generic",
|
||||
"agent-skills-compatible",
|
||||
"vscode"
|
||||
],
|
||||
"source_files": [
|
||||
"SKILL.md",
|
||||
"manifest.json",
|
||||
"agents/interface.yaml",
|
||||
"reports/intent-context.json",
|
||||
"reports/output-risk-profile.json",
|
||||
"reports/system-model.json"
|
||||
]
|
||||
}
|
||||
+986
@@ -0,0 +1,986 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>geo-content-brief-skill Skill 生成审计报告</title>
|
||||
<style>
|
||||
:root {
|
||||
--paper: #ffffff;
|
||||
--wash: #f8fafc;
|
||||
--wash-strong: #f2f5f8;
|
||||
--line: #e6e0d4;
|
||||
--line-soft: #eee9df;
|
||||
--brand: #1B365D;
|
||||
--brand-soft: #EEF3F8;
|
||||
--brand-mid: #315982;
|
||||
--ink: #151515;
|
||||
--text: #2f2d29;
|
||||
--muted: #68625a;
|
||||
--faint: #8b857b;
|
||||
--success: #2f6f5e;
|
||||
--warn: #8a5a19;
|
||||
--serif: "TsangerJinKai02", "Source Han Serif SC", "Noto Serif CJK SC", "Songti SC", "STSong", Charter, Georgia, serif;
|
||||
--mono: "JetBrains Mono", "SF Mono", ui-monospace, Menlo, Consolas, monospace;
|
||||
--shadow-soft: 0 1px 2px rgba(27, 54, 93, 0.06), 0 16px 44px rgba(27, 54, 93, 0.08);
|
||||
}
|
||||
* { box-sizing: border-box; }
|
||||
html { scroll-behavior: smooth; }
|
||||
body {
|
||||
margin: 0;
|
||||
background: #ffffff;
|
||||
color: var(--ink);
|
||||
font-family: var(--serif);
|
||||
line-height: 1.62;
|
||||
letter-spacing: 0;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
text-rendering: optimizeLegibility;
|
||||
}
|
||||
body[data-report-lang="zh-CN"] [data-lang="en"],
|
||||
body[data-report-lang="en"] [data-lang="zh-CN"] { display: none !important; }
|
||||
.skip-link {
|
||||
position: fixed;
|
||||
left: 18px;
|
||||
top: 10px;
|
||||
z-index: 40;
|
||||
transform: translateY(-140%);
|
||||
padding: 8px 12px;
|
||||
border-radius: 8px;
|
||||
background: var(--brand);
|
||||
color: #fff;
|
||||
text-decoration: none;
|
||||
transition: transform 160ms cubic-bezier(0.16, 1, 0.3, 1);
|
||||
}
|
||||
.skip-link:focus-visible { transform: translateY(0); outline: 2px solid var(--brand-mid); outline-offset: 2px; }
|
||||
.topbar {
|
||||
position: sticky;
|
||||
top: 0;
|
||||
z-index: 20;
|
||||
background: rgba(255, 255, 255, 0.96);
|
||||
border-bottom: 1px solid var(--line);
|
||||
}
|
||||
.progress-track {
|
||||
height: 2px;
|
||||
background: transparent;
|
||||
}
|
||||
.progress-bar {
|
||||
display: block;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background: var(--brand);
|
||||
transition: transform 160ms cubic-bezier(0.16, 1, 0.3, 1);
|
||||
transform-origin: left center;
|
||||
transform: scaleX(0);
|
||||
}
|
||||
.topbar-inner {
|
||||
max-width: 1240px;
|
||||
margin: 0 auto;
|
||||
padding: 9px 28px;
|
||||
display: grid;
|
||||
grid-template-columns: minmax(0, 1fr) auto;
|
||||
gap: 18px;
|
||||
align-items: center;
|
||||
}
|
||||
.nav-shell {
|
||||
display: grid;
|
||||
grid-template-columns: auto minmax(0, 1fr);
|
||||
gap: 18px;
|
||||
align-items: center;
|
||||
min-width: 0;
|
||||
}
|
||||
.report-mark {
|
||||
color: var(--brand);
|
||||
font-family: var(--mono);
|
||||
font-size: 11px;
|
||||
line-height: 1;
|
||||
text-transform: uppercase;
|
||||
white-space: nowrap;
|
||||
}
|
||||
.report-nav {
|
||||
display: flex;
|
||||
gap: 4px;
|
||||
overflow-x: auto;
|
||||
scrollbar-width: none;
|
||||
min-width: 0;
|
||||
}
|
||||
.report-nav::-webkit-scrollbar { display: none; }
|
||||
.report-nav a {
|
||||
flex: 0 0 auto;
|
||||
min-width: 76px;
|
||||
min-height: 40px;
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
padding: 0 10px;
|
||||
color: var(--brand);
|
||||
text-decoration: none;
|
||||
text-align: center;
|
||||
font-size: 13px;
|
||||
border-radius: 8px;
|
||||
white-space: nowrap;
|
||||
transition-property: background-color, color, transform;
|
||||
transition-duration: 160ms;
|
||||
transition-timing-function: cubic-bezier(0.16, 1, 0.3, 1);
|
||||
}
|
||||
@media (hover: hover) {
|
||||
.report-nav a:hover { background: var(--brand-soft); }
|
||||
}
|
||||
.report-nav a:focus-visible {
|
||||
outline: 2px solid var(--brand-mid);
|
||||
outline-offset: 2px;
|
||||
background: var(--brand-soft);
|
||||
}
|
||||
.report-nav a[aria-current="true"] {
|
||||
background: var(--brand);
|
||||
color: #ffffff;
|
||||
}
|
||||
.report-nav a[aria-current="true"] span { color: #ffffff; }
|
||||
.language-switch {
|
||||
display: inline-flex;
|
||||
gap: 3px;
|
||||
padding: 3px;
|
||||
border: 1px solid var(--line);
|
||||
border-radius: 8px;
|
||||
background: var(--paper);
|
||||
box-shadow: 0 1px 2px rgba(27, 54, 93, 0.05);
|
||||
}
|
||||
.language-switch button {
|
||||
appearance: none;
|
||||
min-width: 42px;
|
||||
min-height: 34px;
|
||||
border: 0;
|
||||
border-radius: 6px;
|
||||
padding: 0 10px;
|
||||
background: transparent;
|
||||
color: var(--muted);
|
||||
font: inherit;
|
||||
font-size: 13px;
|
||||
cursor: pointer;
|
||||
transition-property: background-color, color, transform;
|
||||
transition-duration: 160ms;
|
||||
transition-timing-function: cubic-bezier(0.16, 1, 0.3, 1);
|
||||
}
|
||||
.language-switch button:active { transform: scale(0.96); }
|
||||
.language-switch button:focus-visible { outline: 2px solid var(--brand-mid); outline-offset: 2px; }
|
||||
.language-switch button[aria-pressed="true"] {
|
||||
background: var(--brand-soft);
|
||||
color: var(--brand);
|
||||
}
|
||||
.wrap {
|
||||
max-width: 1240px;
|
||||
margin: 0 auto;
|
||||
padding: 58px 28px 92px;
|
||||
}
|
||||
.hero {
|
||||
padding: 16px 0 34px;
|
||||
}
|
||||
.hero-grid {
|
||||
display: grid;
|
||||
grid-template-columns: minmax(0, 1fr) 360px;
|
||||
gap: 44px;
|
||||
align-items: end;
|
||||
}
|
||||
.eyebrow, .report-mark {
|
||||
letter-spacing: 0;
|
||||
}
|
||||
.eyebrow {
|
||||
margin: 0 0 12px;
|
||||
color: var(--brand);
|
||||
font-family: var(--mono);
|
||||
font-size: 12px;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
.slug {
|
||||
margin: 0 0 18px;
|
||||
color: var(--faint);
|
||||
font-family: var(--mono);
|
||||
font-size: 13px;
|
||||
overflow-wrap: anywhere;
|
||||
}
|
||||
h1, h2, h3 {
|
||||
margin: 0;
|
||||
font-weight: 500;
|
||||
letter-spacing: 0;
|
||||
text-wrap: balance;
|
||||
}
|
||||
h1 {
|
||||
max-width: 8em;
|
||||
color: var(--ink);
|
||||
font-size: 4rem;
|
||||
line-height: 1.02;
|
||||
}
|
||||
.lead {
|
||||
max-width: 760px;
|
||||
margin: 20px 0 0;
|
||||
color: var(--text);
|
||||
font-size: 1.08rem;
|
||||
text-wrap: pretty;
|
||||
}
|
||||
.hero-meta, .badges {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 8px;
|
||||
margin-top: 20px;
|
||||
}
|
||||
.hero-meta span, .badges span, .tag {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
min-height: 30px;
|
||||
padding: 5px 10px;
|
||||
border-radius: 6px;
|
||||
background: var(--brand-soft);
|
||||
color: var(--brand);
|
||||
font-size: 13px;
|
||||
font-variant-numeric: tabular-nums;
|
||||
}
|
||||
.hero-card {
|
||||
position: relative;
|
||||
padding: 22px 22px 24px;
|
||||
border-radius: 8px;
|
||||
background: linear-gradient(180deg, #ffffff 0%, #fbfaf7 100%);
|
||||
box-shadow: var(--shadow-soft);
|
||||
border: 1px solid var(--line-soft);
|
||||
}
|
||||
.hero-card::before {
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: 18px;
|
||||
right: 18px;
|
||||
width: 38px;
|
||||
height: 2px;
|
||||
background: var(--brand);
|
||||
}
|
||||
.score-strip {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(4, minmax(0, 1fr));
|
||||
gap: 10px;
|
||||
margin-top: 32px;
|
||||
padding-top: 20px;
|
||||
border-top: 1px solid var(--line);
|
||||
}
|
||||
.score-chip {
|
||||
padding: 14px 14px 12px;
|
||||
border-radius: 8px;
|
||||
background: var(--wash);
|
||||
border: 1px solid var(--line-soft);
|
||||
}
|
||||
.score-chip span {
|
||||
display: block;
|
||||
color: var(--muted);
|
||||
font-size: 12px;
|
||||
}
|
||||
.score-chip strong {
|
||||
display: block;
|
||||
margin: 5px 0 8px;
|
||||
color: var(--brand);
|
||||
font-family: var(--mono);
|
||||
font-size: 1.65rem;
|
||||
font-weight: 500;
|
||||
line-height: 1;
|
||||
font-variant-numeric: tabular-nums;
|
||||
}
|
||||
.score-chip i {
|
||||
display: block;
|
||||
height: 3px;
|
||||
border-radius: 999px;
|
||||
background: linear-gradient(90deg, var(--brand) var(--score), #dfe6ee var(--score));
|
||||
}
|
||||
.score-chip small {
|
||||
display: block;
|
||||
margin-top: 8px;
|
||||
color: var(--muted);
|
||||
font-size: 12px;
|
||||
line-height: 1.45;
|
||||
}
|
||||
section {
|
||||
scroll-margin-top: 78px;
|
||||
padding-top: 44px;
|
||||
margin-top: 44px;
|
||||
border-top: 1px solid var(--line);
|
||||
}
|
||||
section.hero {
|
||||
scroll-margin-top: 0;
|
||||
padding-top: 16px;
|
||||
margin-top: 0;
|
||||
border-top: 0;
|
||||
}
|
||||
.section-head {
|
||||
display: grid;
|
||||
grid-template-columns: minmax(0, 1fr);
|
||||
gap: 22px;
|
||||
align-items: start;
|
||||
}
|
||||
h2 {
|
||||
color: var(--ink);
|
||||
font-size: 1.5rem;
|
||||
line-height: 1.18;
|
||||
}
|
||||
h2::before {
|
||||
content: "";
|
||||
display: block;
|
||||
width: 32px;
|
||||
height: 2px;
|
||||
margin-bottom: 12px;
|
||||
background: var(--brand);
|
||||
}
|
||||
h3 {
|
||||
color: var(--ink);
|
||||
font-size: 1.02rem;
|
||||
line-height: 1.3;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.section-head > div:first-child p {
|
||||
margin: 12px 0 0;
|
||||
color: var(--muted);
|
||||
max-width: 68ch;
|
||||
text-wrap: pretty;
|
||||
}
|
||||
.section-body {
|
||||
margin-top: 24px;
|
||||
}
|
||||
.two-col, .metric-grid, .chart-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||
gap: 16px;
|
||||
align-items: stretch;
|
||||
}
|
||||
.quality-panels {
|
||||
margin-top: 16px;
|
||||
}
|
||||
.metrics-flow {
|
||||
display: grid;
|
||||
gap: 24px;
|
||||
}
|
||||
.metrics-primary {
|
||||
display: grid;
|
||||
grid-template-columns: minmax(0, 1.08fr) minmax(320px, 0.92fr);
|
||||
gap: 18px;
|
||||
align-items: start;
|
||||
}
|
||||
.metrics-primary .chart-figure {
|
||||
min-height: 0;
|
||||
display: grid;
|
||||
align-content: center;
|
||||
}
|
||||
.metrics-primary .chart-figure svg {
|
||||
max-height: 520px;
|
||||
}
|
||||
.metrics-note {
|
||||
display: grid;
|
||||
align-content: start;
|
||||
gap: 16px;
|
||||
}
|
||||
.metrics-note p {
|
||||
margin: 0;
|
||||
max-width: none;
|
||||
color: var(--text);
|
||||
}
|
||||
.metric-summary-list {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
list-style: none;
|
||||
display: grid;
|
||||
gap: 10px;
|
||||
}
|
||||
.metric-summary-list li {
|
||||
display: grid;
|
||||
grid-template-columns: auto minmax(0, 1fr) auto;
|
||||
gap: 8px 10px;
|
||||
align-items: baseline;
|
||||
padding: 10px 0;
|
||||
border-bottom: 1px solid var(--line-soft);
|
||||
}
|
||||
.metric-summary-list li:last-child { border-bottom: 0; }
|
||||
.metric-summary-list b {
|
||||
color: var(--ink);
|
||||
font-weight: 500;
|
||||
}
|
||||
.metric-summary-list em {
|
||||
color: var(--brand);
|
||||
font-family: var(--mono);
|
||||
font-style: normal;
|
||||
font-variant-numeric: tabular-nums;
|
||||
}
|
||||
.metric-summary-list small {
|
||||
grid-column: 2 / 4;
|
||||
color: var(--muted);
|
||||
line-height: 1.5;
|
||||
overflow-wrap: break-word;
|
||||
}
|
||||
.metric-status {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
min-height: 24px;
|
||||
padding: 2px 7px;
|
||||
border-radius: 6px;
|
||||
background: var(--brand-soft);
|
||||
color: var(--brand);
|
||||
font-size: 12px;
|
||||
}
|
||||
.metric-detail-grid {
|
||||
grid-template-columns: repeat(auto-fit, minmax(min(100%, 320px), 1fr));
|
||||
align-items: stretch;
|
||||
}
|
||||
.list, .compact-list, .step-list {
|
||||
margin: 0;
|
||||
padding-left: 1.15em;
|
||||
display: grid;
|
||||
gap: 8px;
|
||||
}
|
||||
.list li::marker, .compact-list li::marker, .step-list li::marker { color: var(--brand); }
|
||||
.compact-list {
|
||||
gap: 6px;
|
||||
font-size: 13.5px;
|
||||
color: var(--muted);
|
||||
line-height: 1.55;
|
||||
}
|
||||
.compact-list li, .list li, .step-list li {
|
||||
min-width: 0;
|
||||
overflow-wrap: break-word;
|
||||
}
|
||||
.panel, .metric-card, .roadmap-item {
|
||||
background: #ffffff;
|
||||
border: 1px solid var(--line-soft);
|
||||
border-radius: 8px;
|
||||
padding: 22px;
|
||||
box-shadow: 0 1px 2px rgba(27, 54, 93, 0.04);
|
||||
min-width: 0;
|
||||
}
|
||||
.metric-card {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr;
|
||||
gap: 14px;
|
||||
align-content: start;
|
||||
min-height: 0;
|
||||
}
|
||||
.metric-card-head {
|
||||
display: flex;
|
||||
gap: 14px;
|
||||
align-items: flex-start;
|
||||
justify-content: space-between;
|
||||
}
|
||||
.metric-card strong {
|
||||
display: block;
|
||||
margin: 0;
|
||||
color: var(--brand);
|
||||
font-family: var(--mono);
|
||||
font-size: 2rem;
|
||||
font-weight: 500;
|
||||
line-height: 1;
|
||||
font-variant-numeric: tabular-nums;
|
||||
}
|
||||
.metric-label {
|
||||
color: var(--muted);
|
||||
font-size: 13px;
|
||||
line-height: 1.45;
|
||||
}
|
||||
.metric-card-body {
|
||||
min-width: 0;
|
||||
}
|
||||
.metric-card-body .compact-list {
|
||||
gap: 7px;
|
||||
max-width: 62ch;
|
||||
}
|
||||
.metric-card-body .compact-list li {
|
||||
overflow-wrap: break-word;
|
||||
word-break: normal;
|
||||
}
|
||||
.chart-figure {
|
||||
margin: 0;
|
||||
padding: 18px;
|
||||
border: 1px solid var(--line-soft);
|
||||
border-radius: 8px;
|
||||
background: #ffffff;
|
||||
box-shadow: 0 1px 2px rgba(27, 54, 93, 0.04);
|
||||
}
|
||||
.chart-figure svg {
|
||||
width: 100%;
|
||||
height: auto;
|
||||
display: block;
|
||||
overflow: visible;
|
||||
}
|
||||
.chart-figure text {
|
||||
fill: var(--ink);
|
||||
font-family: var(--serif);
|
||||
font-size: 13px;
|
||||
}
|
||||
.chart-title {
|
||||
fill: var(--brand);
|
||||
font-size: 16px;
|
||||
font-weight: 500;
|
||||
}
|
||||
.chart-line {
|
||||
fill: none;
|
||||
stroke: var(--brand);
|
||||
stroke-width: 2;
|
||||
}
|
||||
figcaption {
|
||||
margin-top: 12px;
|
||||
padding-top: 10px;
|
||||
border-top: 1px solid var(--line-soft);
|
||||
color: var(--muted);
|
||||
font-size: 13px;
|
||||
line-height: 1.5;
|
||||
text-wrap: pretty;
|
||||
}
|
||||
table {
|
||||
width: 100%;
|
||||
border-collapse: collapse;
|
||||
font-size: 14px;
|
||||
}
|
||||
th, td {
|
||||
padding: 12px 10px;
|
||||
text-align: left;
|
||||
border-bottom: 1px solid var(--line-soft);
|
||||
vertical-align: top;
|
||||
}
|
||||
th {
|
||||
color: var(--brand);
|
||||
font-weight: 500;
|
||||
font-size: 12px;
|
||||
}
|
||||
td:first-child, th:first-child { width: 96px; }
|
||||
.world-readiness {
|
||||
margin-top: 16px;
|
||||
display: grid;
|
||||
gap: 16px;
|
||||
}
|
||||
.section-head > .world-readiness { grid-column: 1; }
|
||||
.world-readiness-head {
|
||||
display: grid;
|
||||
grid-template-columns: minmax(0, 1fr) auto;
|
||||
gap: 16px;
|
||||
align-items: start;
|
||||
}
|
||||
.world-readiness-head p {
|
||||
margin-top: 8px;
|
||||
max-width: 72ch;
|
||||
}
|
||||
.world-status {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
min-height: 30px;
|
||||
padding: 4px 10px;
|
||||
border-radius: 6px;
|
||||
background: var(--brand-soft);
|
||||
color: var(--brand);
|
||||
font-size: 13px;
|
||||
white-space: nowrap;
|
||||
}
|
||||
.evidence-kpis {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(3, minmax(0, 1fr));
|
||||
gap: 10px;
|
||||
}
|
||||
.evidence-kpi {
|
||||
padding: 14px;
|
||||
border: 1px solid var(--line-soft);
|
||||
border-radius: 8px;
|
||||
background: var(--wash);
|
||||
min-width: 0;
|
||||
}
|
||||
.evidence-kpi span {
|
||||
display: block;
|
||||
color: var(--muted);
|
||||
font-size: 12px;
|
||||
}
|
||||
.evidence-kpi strong {
|
||||
display: block;
|
||||
margin-top: 4px;
|
||||
color: var(--brand);
|
||||
font-family: var(--mono);
|
||||
font-size: 1.5rem;
|
||||
font-weight: 500;
|
||||
line-height: 1;
|
||||
font-variant-numeric: tabular-nums;
|
||||
}
|
||||
.evidence-kpi small {
|
||||
display: block;
|
||||
margin-top: 8px;
|
||||
color: var(--muted);
|
||||
line-height: 1.45;
|
||||
overflow-wrap: break-word;
|
||||
}
|
||||
.evidence-list {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||
gap: 10px;
|
||||
}
|
||||
.evidence-item {
|
||||
padding: 14px;
|
||||
border: 1px solid var(--line-soft);
|
||||
border-radius: 8px;
|
||||
background: #ffffff;
|
||||
min-width: 0;
|
||||
}
|
||||
.evidence-item span {
|
||||
color: var(--brand);
|
||||
font-family: var(--mono);
|
||||
font-size: 11px;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
.evidence-item h4 {
|
||||
margin: 4px 0 8px;
|
||||
color: var(--ink);
|
||||
font-size: 1rem;
|
||||
font-weight: 500;
|
||||
line-height: 1.3;
|
||||
}
|
||||
.evidence-item h5 {
|
||||
margin: 12px 0 6px;
|
||||
color: var(--brand);
|
||||
font-size: 12px;
|
||||
font-weight: 500;
|
||||
}
|
||||
.evidence-item p {
|
||||
margin: 0;
|
||||
max-width: none;
|
||||
color: var(--muted);
|
||||
overflow-wrap: break-word;
|
||||
}
|
||||
.blocked-checks {
|
||||
margin: 0;
|
||||
padding-left: 1.05em;
|
||||
color: var(--muted);
|
||||
font-size: 13px;
|
||||
line-height: 1.45;
|
||||
}
|
||||
.blocked-checks li {
|
||||
overflow-wrap: break-word;
|
||||
}
|
||||
.blocked-checks li::marker {
|
||||
color: var(--brand);
|
||||
}
|
||||
.blocked-checks-empty {
|
||||
font-size: 13px;
|
||||
}
|
||||
.roadmap {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(3, minmax(0, 1fr));
|
||||
gap: 16px;
|
||||
}
|
||||
.step {
|
||||
display: inline-flex;
|
||||
margin-bottom: 12px;
|
||||
min-height: 28px;
|
||||
align-items: center;
|
||||
padding: 3px 8px;
|
||||
border-radius: 6px;
|
||||
background: var(--brand-soft);
|
||||
color: var(--brand);
|
||||
font-size: 12px;
|
||||
}
|
||||
.unlock {
|
||||
margin-top: 14px;
|
||||
color: var(--muted);
|
||||
font-size: 13px;
|
||||
}
|
||||
@media (max-width: 980px) {
|
||||
.topbar-inner {
|
||||
grid-template-columns: minmax(0, 1fr) auto;
|
||||
padding: 8px 16px;
|
||||
}
|
||||
.nav-shell { grid-template-columns: 1fr; gap: 6px; }
|
||||
.report-mark { display: none; }
|
||||
.report-nav a { min-width: 72px; }
|
||||
.hero-grid, .section-head { grid-template-columns: 1fr; }
|
||||
.section-head > .world-readiness { grid-column: auto; }
|
||||
.hero-grid { gap: 24px; }
|
||||
.score-strip { grid-template-columns: repeat(2, minmax(0, 1fr)); }
|
||||
.metrics-primary, .metric-detail-grid, .two-col, .metric-grid, .chart-grid, .roadmap { grid-template-columns: 1fr; }
|
||||
.evidence-list { grid-template-columns: 1fr; }
|
||||
.metric-card { grid-template-columns: 1fr; }
|
||||
h1 { font-size: 2.75rem; }
|
||||
}
|
||||
@media (max-width: 540px) {
|
||||
.wrap { padding: 34px 16px 72px; }
|
||||
.topbar-inner { gap: 10px; }
|
||||
.report-nav {
|
||||
display: flex;
|
||||
gap: 2px;
|
||||
}
|
||||
.report-nav a {
|
||||
min-width: 66px;
|
||||
min-height: 38px;
|
||||
padding: 0 8px;
|
||||
font-size: 12px;
|
||||
}
|
||||
.language-switch button { min-width: 38px; min-height: 32px; padding: 0 8px; }
|
||||
.hero { padding-top: 8px; }
|
||||
h1 { max-width: 8em; font-size: 2.35rem; }
|
||||
.lead { font-size: 1rem; }
|
||||
.hero-meta span, .badges span { font-size: 12px; }
|
||||
.score-strip { grid-template-columns: 1fr; }
|
||||
section { margin-top: 34px; padding-top: 34px; }
|
||||
.panel, .metric-card, .roadmap-item, .chart-figure, .hero-card { padding: 18px; }
|
||||
.world-readiness-head, .evidence-kpis { grid-template-columns: 1fr; }
|
||||
.metric-card { grid-template-columns: 1fr; gap: 10px; }
|
||||
.metric-card strong { margin-bottom: 2px; }
|
||||
.metric-summary-list li { grid-template-columns: auto minmax(0, 1fr) auto; }
|
||||
table { font-size: 13px; }
|
||||
th, td { padding: 10px 7px; }
|
||||
}
|
||||
@media (prefers-reduced-motion: reduce) {
|
||||
html { scroll-behavior: auto; }
|
||||
*, *::before, *::after { transition-duration: 0.01ms !important; }
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body data-report-lang="zh-CN">
|
||||
<a class="skip-link" href="#overview"><span data-lang="zh-CN">跳到正文</span><span data-lang="en">Skip to content</span></a>
|
||||
<header class="topbar">
|
||||
<div class="progress-track" aria-hidden="true"><span class="progress-bar"></span></div>
|
||||
<div class="topbar-inner">
|
||||
<div class="nav-shell">
|
||||
<span class="report-mark">Skill audit</span>
|
||||
<nav class="report-nav" aria-label="报告导航"><a href="#overview"><span data-lang="zh-CN">技能概述</span><span data-lang="en">Overview</span></a><a href="#metrics"><span data-lang="zh-CN">总览指标</span><span data-lang="en">Metrics</span></a><a href="#capability"><span data-lang="zh-CN">能力画像</span><span data-lang="en">Profile</span></a><a href="#principle"><span data-lang="zh-CN">原理结构</span><span data-lang="en">Principle</span></a><a href="#contract"><span data-lang="zh-CN">契约边界</span><span data-lang="en">Contract</span></a><a href="#quality"><span data-lang="zh-CN">质量评估</span><span data-lang="en">Quality</span></a><a href="#risk"><span data-lang="zh-CN">风险治理</span><span data-lang="en">Risk</span></a><a href="#assets"><span data-lang="zh-CN">包体资产</span><span data-lang="en">Assets</span></a><a href="#roadmap"><span data-lang="zh-CN">迭代路线</span><span data-lang="en">Roadmap</span></a></nav>
|
||||
</div>
|
||||
<div class="language-switch" aria-label="语言切换"><button type="button" data-set-lang="zh-CN" aria-pressed="true">简体</button><button type="button" data-set-lang="en" aria-pressed="false">EN</button></div>
|
||||
</div>
|
||||
</header>
|
||||
<main id="main-content" class="wrap">
|
||||
<section class="hero" aria-labelledby="report-title">
|
||||
<div class="hero-grid">
|
||||
<div>
|
||||
<p class="eyebrow"><span data-lang="zh-CN">YAO Skill 生成审计报告</span><span data-lang="en">YAO Skill Generation Audit</span></p>
|
||||
<p class="slug">geo-content-brief-skill</p>
|
||||
<h1 id="report-title"><span data-lang="zh-CN">技能审计报告</span><span data-lang="en">Geo Content Brief Skill Audit Report</span></h1>
|
||||
<p class="lead"><span data-lang="zh-CN">这份报告默认使用中文简体,把新 Skill 的定位、指标、原理、契约、质量、风险、资产和迭代路线整理为一份可审计的 HTML 报告。</span><span data-lang="en">Skill-specific source text is authored in Chinese; switch to Simplified Chinese for the exact wording.</span></p>
|
||||
<div class="hero-meta"><span><span data-lang="zh-CN">技能名称:geo-content-brief-skill</span><span data-lang="en">Skill name: geo-content-brief-skill</span></span><span><span data-lang="zh-CN">成熟度:生产</span><span data-lang="en">Maturity: production</span></span><span><span data-lang="zh-CN">格式:Agent Skills</span><span data-lang="en">Format: agent-skills</span></span><span><span data-lang="zh-CN">更新时间:2026-06-15</span><span data-lang="en">Updated: 2026-06-15</span></span></div>
|
||||
<div class="badges"><span><span data-lang="zh-CN">openai</span><span data-lang="en">openai</span></span><span><span data-lang="zh-CN">claude</span><span data-lang="en">claude</span></span><span><span data-lang="zh-CN">generic</span><span data-lang="en">generic</span></span><span><span data-lang="zh-CN">vscode</span><span data-lang="en">vscode</span></span></div>
|
||||
</div>
|
||||
<aside class="hero-card">
|
||||
<h3><span data-lang="zh-CN">核心判断</span><span data-lang="en">Core reading</span></h3>
|
||||
<ul class="list"><li><span data-lang="zh-CN">把一次性经验沉淀为可复用、可评估、可迁移的 Skill 包体。</span><span data-lang="en">Turn one-off experience into a reusable, evaluable, and portable skill package.</span></li><li><span data-lang="zh-CN">Skill 作者、复用团队和后续 reviewer。</span><span data-lang="en">Skill authors, reuse teams, and later reviewers.</span></li><li><span data-lang="zh-CN">创建完成后建议先打开 reports/skill-overview.html,再继续扩展包体。</span><span data-lang="en">After creation, open reports/skill-overview.html before expanding the package further.</span></li></ul>
|
||||
</aside>
|
||||
</div>
|
||||
<div class="score-strip" aria-label="报告关键指标"><article class='score-chip'><span><span data-lang="zh-CN">完整度</span><span data-lang="en">Completeness</span></span><strong>92</strong><i style='--score:92%'></i><small><span data-lang="zh-CN">SKILL.md 已存在,是 Skill 的入口。</span><span data-lang="en">SKILL.md exists and acts as the skill entrypoint.</span></small></article><article class='score-chip'><span><span data-lang="zh-CN">触发清晰</span><span data-lang="en">Trigger clarity</span></span><strong>100</strong><i style='--score:100%'></i><small><span data-lang="zh-CN">frontmatter description 已存在,具备基础路由面。</span><span data-lang="en">The frontmatter description exists, giving the skill a basic routing surface.</span></small></article><article class='score-chip'><span><span data-lang="zh-CN">证据充分</span><span data-lang="en">Evidence depth</span></span><strong>60</strong><i style='--score:60%'></i><small><span data-lang="zh-CN">已生成 12 / 20 类报告证据。</span><span data-lang="en">Generated 12 / 20 evidence report types.</span></small></article><article class='score-chip'><span><span data-lang="zh-CN">上下文成本</span><span data-lang="en">Context cost</span></span><strong>78</strong><i style='--score:78%'></i><small><span data-lang="zh-CN">入口约 864 个词/字,references 约 565 个词/字。</span><span data-lang="en">Entrypoint is about 864 words/characters; references are about 565.</span></small></article></div>
|
||||
</section>
|
||||
|
||||
<section id="overview">
|
||||
<div class="section-head">
|
||||
<div>
|
||||
<h2><span data-lang="zh-CN">技能概述</span><span data-lang="en">Overview</span></h2>
|
||||
<p><span data-lang="zh-CN">先用一屏说明这个 Skill 是什么、给谁用、交付什么。</span><span data-lang="en">A first-screen explanation of what this skill is, who it serves, and what it delivers.</span></p>
|
||||
</div>
|
||||
<div class="two-col">
|
||||
<article class="panel">
|
||||
<h3><span data-lang="zh-CN">作用定位</span><span data-lang="en">Role</span></h3>
|
||||
<ul class="list"><li><span data-lang="zh-CN">将 GEO 内容访谈、关键词笔记、竞品线索和渠道约束整理成可执行的中文内容简报。用于团队复用、选题规划、内容生产交接和质量评审;不用于直接代写完整长文或替代品牌策略判断。</span><span data-lang="en">Skill-specific source text is authored in Chinese; switch to Simplified Chinese for the exact wording.</span></li><li><span data-lang="zh-CN">把一次性经验沉淀为可复用、可评估、可迁移的 Skill 包体。</span><span data-lang="en">Turn one-off experience into a reusable, evaluable, and portable skill package.</span></li><li><span data-lang="zh-CN">交付结果:SKILL.md, agents/interface.yaml, reports/skill-ir.json, reports/compiled_targets.md, reports/output_quality_scorecard.md, reports/conformance_matrix.md, reports/security_trust_report.md, reports/skill_atlas.html, reports/registry_audit.md, reports/package_verification.md, reports/install_simulation.md, reports/upgrade_check.md, reports/adoption_drift_report.md, reports/review_waivers.md, reports/review_annotations.md, reports/review-studio.html, reports/skill-interpretation.html, reports/skill-overview.html</span><span data-lang="en">Deliverables: SKILL.md, agents/interface.yaml, reports/skill-ir.json, reports/compiled_targets.md, reports/output_quality_scorecard.md, reports/conformance_matrix.md, reports/security_trust_report.md, reports/skill_atlas.html, reports/registry_audit.md, reports/package_verification.md, reports/install_simulation.md, reports/upgrade_check.md, reports/adoption_drift_report.md, reports/review_waivers.md, reports/review_annotations.md, reports/review-studio.html, reports/skill-interpretation.html, reports/skill-overview.html</span></li></ul>
|
||||
</article>
|
||||
<figure class="chart-figure" data-chart="flow"><svg viewBox="0 0 620 170" role="img" aria-label="交付流程"><text data-lang="zh-CN" x="20" y="28" class="chart-title">交付流程</text><text data-lang="en" x="20" y="28" class="chart-title">Delivery Flow</text><path d="M188 93 H248 M398 93 H458" class="chart-line"/><g><rect x="38" y="56" width="150" height="74" rx="8" fill="#F6F8FB" stroke="#e8e6dc"/><text data-lang="zh-CN" x="113" y="99" text-anchor="middle">输入材料</text><text data-lang="en" x="113" y="99" text-anchor="middle">Input material</text></g><g><rect x="248" y="56" width="150" height="74" rx="8" fill="#F6F8FB" stroke="#e8e6dc"/><text data-lang="zh-CN" x="323" y="99" text-anchor="middle">Skill 包体</text><text data-lang="en" x="323" y="99" text-anchor="middle">Skill package</text></g><g><rect x="458" y="56" width="150" height="74" rx="8" fill="#F6F8FB" stroke="#e8e6dc"/><text data-lang="zh-CN" x="533" y="99" text-anchor="middle">可复用能力</text><text data-lang="en" x="533" y="99" text-anchor="middle">Reusable capability</text></g></svg><figcaption><span data-lang="zh-CN">交付流程把用户输入、生成的包体和可复用能力放在一条线上。</span><span data-lang="en">The delivery flow places user input, generated package, and reusable capability on one path.</span></figcaption></figure>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section id="metrics">
|
||||
<div class="section-head">
|
||||
<div>
|
||||
<h2><span data-lang="zh-CN">总览指标</span><span data-lang="en">Metrics</span></h2>
|
||||
<p><span data-lang="zh-CN">分数来自本地文件和 reports 证据,缺失时明确标为证据不足。</span><span data-lang="en">Scores are derived from package files and reports; missing inputs are shown as evidence gaps.</span></p>
|
||||
</div>
|
||||
<article class="panel metrics-note">
|
||||
<h3><span data-lang="zh-CN">指标判读</span><span data-lang="en">Reading</span></h3>
|
||||
<p><span data-lang="zh-CN">先看雷达图判断能力短板,再看每项分数的证据原因。分数不是装饰数字,必须和本地文件、reports 证据或证据不足提示对应。</span><span data-lang="en">Read the radar first for weak spots, then inspect each score with its evidence. Scores must map to local files, reports, or explicit evidence gaps.</span></p>
|
||||
</article>
|
||||
</div>
|
||||
<div class="section-body metrics-report">
|
||||
<div class="metrics-flow">
|
||||
<div class="metrics-primary">
|
||||
<figure class="chart-figure" data-chart="radar"><svg viewBox="0 0 300 300" role="img" aria-label="评分雷达"><text data-lang="zh-CN" x="20" y="28" class="chart-title">评分雷达</text><text data-lang="en" x="20" y="28" class="chart-title">Rating Radar</text><polygon points="150.0,127.0 171.9,142.9 163.5,168.6 136.5,168.6 128.1,142.9" fill="none" stroke="#e8e6dc" stroke-width="1"/><polygon points="150.0,104.0 193.7,135.8 177.0,187.2 123.0,187.2 106.3,135.8" fill="none" stroke="#e8e6dc" stroke-width="1"/><polygon points="150.0,81.0 215.6,128.7 190.6,205.8 109.4,205.8 84.4,128.7" fill="none" stroke="#e8e6dc" stroke-width="1"/><polygon points="150.0,58.0 237.5,121.6 204.1,224.4 95.9,224.4 62.5,121.6" fill="none" stroke="#e8e6dc" stroke-width="1"/><polygon points="150.0,65.4 237.5,121.6 182.4,194.7 104.0,213.3 62.5,121.6" fill="#E4ECF5" stroke="#1B365D" stroke-width="2"/><text data-lang="zh-CN" x="150.0" y="26.0" text-anchor="middle" dominant-baseline="middle">完整度</text><text data-lang="en" x="150.0" y="26.0" text-anchor="middle" dominant-baseline="middle">Completeness</text><text data-lang="zh-CN" x="267.9" y="111.7" text-anchor="middle" dominant-baseline="middle">触发清晰</text><text data-lang="en" x="267.9" y="111.7" text-anchor="middle" dominant-baseline="middle">Trigger clarity</text><text data-lang="zh-CN" x="222.9" y="250.3" text-anchor="middle" dominant-baseline="middle">证据充分</text><text data-lang="en" x="222.9" y="250.3" text-anchor="middle" dominant-baseline="middle">Evidence depth</text><text data-lang="zh-CN" x="77.1" y="250.3" text-anchor="middle" dominant-baseline="middle">可维护性</text><text data-lang="en" x="77.1" y="250.3" text-anchor="middle" dominant-baseline="middle">Maintainability</text><text data-lang="zh-CN" x="32.1" y="111.7" text-anchor="middle" dominant-baseline="middle">可迁移性</text><text data-lang="en" x="32.1" y="111.7" text-anchor="middle" dominant-baseline="middle">Portability</text></svg><figcaption><span data-lang="zh-CN">评分雷达展示结构完整度、触发边界、证据、维护和迁移的相对强弱。</span><span data-lang="en">The radar chart compares completeness, trigger clarity, evidence, maintainability, and portability.</span></figcaption></figure>
|
||||
<article class="panel metrics-note metrics-summary-panel">
|
||||
<h3><span data-lang="zh-CN">成熟度条</span><span data-lang="en">Maturity Bar</span></h3>
|
||||
<ol class='metric-summary-list'><li><span class='metric-status'><span data-lang="zh-CN">稳定</span><span data-lang="en">Stable</span></span><b><span data-lang="zh-CN">完整度</span><span data-lang="en">Completeness</span></b><em>92</em><small><span data-lang="zh-CN">SKILL.md 已存在,是 Skill 的入口。</span><span data-lang="en">SKILL.md exists and acts as the skill entrypoint.</span></small></li><li><span class='metric-status'><span data-lang="zh-CN">稳定</span><span data-lang="en">Stable</span></span><b><span data-lang="zh-CN">触发清晰</span><span data-lang="en">Trigger clarity</span></b><em>100</em><small><span data-lang="zh-CN">frontmatter description 已存在,具备基础路由面。</span><span data-lang="en">The frontmatter description exists, giving the skill a basic routing surface.</span></small></li><li><span class='metric-status'><span data-lang="zh-CN">关注</span><span data-lang="en">Watch</span></span><b><span data-lang="zh-CN">证据充分</span><span data-lang="en">Evidence depth</span></b><em>60</em><small><span data-lang="zh-CN">已生成 12 / 20 类报告证据。</span><span data-lang="en">Generated 12 / 20 evidence report types.</span></small></li><li><span class='metric-status'><span data-lang="zh-CN">稳定</span><span data-lang="en">Stable</span></span><b><span data-lang="zh-CN">可维护性</span><span data-lang="en">Maintainability</span></b><em>85</em><small><span data-lang="zh-CN">SKILL.md 约 864 个词/字。</span><span data-lang="en">SKILL.md is about 864 words/characters.</span></small></li><li><span class='metric-status'><span data-lang="zh-CN">稳定</span><span data-lang="en">Stable</span></span><b><span data-lang="zh-CN">可迁移性</span><span data-lang="en">Portability</span></b><em>100</em><small><span data-lang="zh-CN">agents/interface.yaml 已存在。</span><span data-lang="en">agents/interface.yaml exists.</span></small></li><li><span class='metric-status'><span data-lang="zh-CN">可用</span><span data-lang="en">Usable</span></span><b><span data-lang="zh-CN">上下文成本</span><span data-lang="en">Context cost</span></b><em>78</em><small><span data-lang="zh-CN">入口约 864 个词/字,references 约 565 个词/字。</span><span data-lang="en">Entrypoint is about 864 words/characters; references are about 565.</span></small></li></ol>
|
||||
</article>
|
||||
</div>
|
||||
<div class="metric-grid metric-detail-grid"><article class='metric-card'><div class='metric-card-head'><span class='metric-label'><span data-lang="zh-CN">完整度</span><span data-lang="en">Completeness</span></span><strong>92</strong></div><div class='metric-card-body'><ul class="compact-list"><li><span data-lang="zh-CN">SKILL.md 已存在,是 Skill 的入口。</span><span data-lang="en">SKILL.md exists and acts as the skill entrypoint.</span></li><li><span data-lang="zh-CN">README.md 已存在,便于人工阅读。</span><span data-lang="en">README.md exists for human-readable usage.</span></li><li><span data-lang="zh-CN">agents/interface.yaml 已存在,便于跨平台适配。</span><span data-lang="en">agents/interface.yaml exists for cross-platform adaptation.</span></li></ul></div></article><article class='metric-card'><div class='metric-card-head'><span class='metric-label'><span data-lang="zh-CN">触发清晰</span><span data-lang="en">Trigger clarity</span></span><strong>100</strong></div><div class='metric-card-body'><ul class="compact-list"><li><span data-lang="zh-CN">frontmatter description 已存在,具备基础路由面。</span><span data-lang="en">The frontmatter description exists, giving the skill a basic routing surface.</span></li><li><span data-lang="zh-CN">description 有足够长度说明任务边界。</span><span data-lang="en">The description is long enough to explain the task boundary.</span></li><li><span data-lang="zh-CN">description 已包含使用场景或排除边界信号。</span><span data-lang="en">The description includes usage-scenario or exclusion-boundary signals.</span></li></ul></div></article><article class='metric-card'><div class='metric-card-head'><span class='metric-label'><span data-lang="zh-CN">证据充分</span><span data-lang="en">Evidence depth</span></span><strong>60</strong></div><div class='metric-card-body'><ul class="compact-list"><li><span data-lang="zh-CN">已生成 12 / 20 类报告证据。</span><span data-lang="en">Generated 12 / 20 evidence report types.</span></li><li><span data-lang="zh-CN">skill-ir.json 已存在。</span><span data-lang="en">skill-ir.json exists.</span></li><li><span data-lang="zh-CN">compiled_targets.json 已存在。</span><span data-lang="en">compiled_targets.json exists.</span></li></ul></div></article><article class='metric-card'><div class='metric-card-head'><span class='metric-label'><span data-lang="zh-CN">可维护性</span><span data-lang="en">Maintainability</span></span><strong>85</strong></div><div class='metric-card-body'><ul class="compact-list"><li><span data-lang="zh-CN">SKILL.md 约 864 个词/字。</span><span data-lang="en">SKILL.md is about 864 words/characters.</span></li><li><span data-lang="zh-CN">入口文件保持克制,可维护性较好。</span><span data-lang="en">The entrypoint stays restrained, which supports maintainability.</span></li><li><span data-lang="zh-CN">references/ 已承载扩展指导。</span><span data-lang="en">references/ carries extended guidance.</span></li></ul></div></article><article class='metric-card'><div class='metric-card-head'><span class='metric-label'><span data-lang="zh-CN">可迁移性</span><span data-lang="en">Portability</span></span><strong>100</strong></div><div class='metric-card-body'><ul class="compact-list"><li><span data-lang="zh-CN">agents/interface.yaml 已存在。</span><span data-lang="en">agents/interface.yaml exists.</span></li><li><span data-lang="zh-CN">manifest.json 已存在。</span><span data-lang="en">manifest.json exists.</span></li><li><span data-lang="zh-CN">目标平台或 adapter target 已声明。</span><span data-lang="en">Target platforms or adapter targets are declared.</span></li></ul></div></article><article class='metric-card'><div class='metric-card-head'><span class='metric-label'><span data-lang="zh-CN">上下文成本</span><span data-lang="en">Context cost</span></span><strong>78</strong></div><div class='metric-card-body'><ul class="compact-list"><li><span data-lang="zh-CN">入口约 864 个词/字,references 约 565 个词/字。</span><span data-lang="en">Entrypoint is about 864 words/characters; references are about 565.</span></li><li><span data-lang="zh-CN">分数越高代表上下文成本越低。</span><span data-lang="en">A higher score means lower context cost.</span></li><li><span data-lang="zh-CN">上下文成本处于可控区间。</span><span data-lang="en">Context cost is within a controlled range.</span></li></ul></div></article></div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section id="capability">
|
||||
<div class="section-head">
|
||||
<div>
|
||||
<h2><span data-lang="zh-CN">能力画像</span><span data-lang="en">Capability</span></h2>
|
||||
<p><span data-lang="zh-CN">判断这个 Skill 在能力地图中的位置和复用范围。</span><span data-lang="en">Places this skill on a capability map and clarifies reuse scope.</span></p>
|
||||
</div>
|
||||
<div class="two-col">
|
||||
<figure class="chart-figure" data-chart="matrix"><svg viewBox="0 0 520 460" role="img" aria-label="能力矩阵"><text data-lang="zh-CN" x="20" y="30" class="chart-title">能力矩阵</text><text data-lang="en" x="20" y="30" class="chart-title">Capability Matrix</text><rect x="70" y="70" width="380" height="320" fill="#faf9f5" stroke="#e8e6dc"/><line x1="260" y1="70" x2="260" y2="390" stroke="#e8e6dc"/><line x1="70" y1="230" x2="450" y2="230" stroke="#e8e6dc"/><text data-lang="zh-CN" x="260" y="424" text-anchor="middle">执行确定性</text><text data-lang="en" x="260" y="424" text-anchor="middle">Execution certainty</text><text data-lang="zh-CN" x="22" y="230" transform="rotate(-90 22 230)" text-anchor="middle">知识密度</text><text data-lang="en" x="22" y="230" transform="rotate(-90 22 230)" text-anchor="middle">Knowledge density</text><circle cx="343.6" cy="174.0" r="12" fill="#1B365D"/><text data-lang="zh-CN" x="361.6" y="179.0">Creative generation</text><text data-lang="en" x="361.6" y="179.0">Creative generation</text></svg><figcaption><span data-lang="zh-CN">能力矩阵说明这个 Skill 更偏知识密集还是执行确定。</span><span data-lang="en">The capability matrix shows whether the skill leans toward knowledge density or execution certainty.</span></figcaption></figure>
|
||||
<article class="panel">
|
||||
<h3><span data-lang="zh-CN">画像摘要</span><span data-lang="en">Profile</span></h3>
|
||||
<ul class="list"><li><span data-lang="zh-CN">能力类型:Creative generation</span><span data-lang="en">Capability type: Creative generation</span></li><li><span data-lang="zh-CN">成熟度:production</span><span data-lang="en">Maturity: production</span></li><li><span data-lang="zh-CN">触发强度:手动触发 + description 路由</span><span data-lang="en">Trigger strength: Manual activation plus description-based routing</span></li><li><span data-lang="zh-CN">复用范围:跨平台</span><span data-lang="en">Reuse scope: Cross-platform</span></li></ul>
|
||||
</article>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section id="principle">
|
||||
<div class="section-head">
|
||||
<div>
|
||||
<h2><span data-lang="zh-CN">原理结构</span><span data-lang="en">Principle</span></h2>
|
||||
<p><span data-lang="zh-CN">说明入口、参考、脚本、评估和报告如何组成一个稳定闭环。</span><span data-lang="en">Explains how entrypoint, references, scripts, evals, and reports form a stable loop.</span></p>
|
||||
</div>
|
||||
<div>
|
||||
<div class="chart-grid"><figure class="chart-figure" data-chart="layers"><svg viewBox="0 0 520 320" role="img" aria-label="Skill principle flow"><text data-lang="zh-CN" x="20" y="30" class="chart-title">分层结构</text><text data-lang="en" x="20" y="30" class="chart-title">Layered Structure</text><rect x="70" y="55" width="380" height="34" rx="7" fill="#F6F8FB" stroke="#e8e6dc"/><text data-lang="zh-CN" x="260" y="77" text-anchor="middle">入口层</text><text data-lang="en" x="260" y="77" text-anchor="middle">Entrypoint layer</text><rect x="88" y="103" width="344" height="34" rx="7" fill="#F6F8FB" stroke="#e8e6dc"/><text data-lang="zh-CN" x="260" y="125" text-anchor="middle">参考层</text><text data-lang="en" x="260" y="125" text-anchor="middle">Reference layer</text><rect x="106" y="151" width="308" height="34" rx="7" fill="#F6F8FB" stroke="#e8e6dc"/><text data-lang="zh-CN" x="260" y="173" text-anchor="middle">脚本层</text><text data-lang="en" x="260" y="173" text-anchor="middle">Script layer</text><rect x="124" y="199" width="272" height="34" rx="7" fill="#F6F8FB" stroke="#e8e6dc"/><text data-lang="zh-CN" x="260" y="221" text-anchor="middle">评估层</text><text data-lang="en" x="260" y="221" text-anchor="middle">Evaluation layer</text><rect x="142" y="247" width="236" height="34" rx="7" fill="#F6F8FB" stroke="#e8e6dc"/><text data-lang="zh-CN" x="260" y="269" text-anchor="middle">报告层</text><text data-lang="en" x="260" y="269" text-anchor="middle">Report layer</text></svg><figcaption><span data-lang="zh-CN">分层结构展示入口、参考、脚本、评估和报告如何各司其职。</span><span data-lang="en">The layered structure shows how entrypoint, references, scripts, evals, and reports each carry a distinct role.</span></figcaption></figure></div>
|
||||
<div class="two-col">
|
||||
<article class="panel">
|
||||
<h3><span data-lang="zh-CN">执行流程</span><span data-lang="en">Execution Flow</span></h3>
|
||||
<ol class="step-list"><li><span data-lang="zh-CN">读取用户输入,识别目标受众、内容渠道、关键词、品牌边界、禁止表达和必须覆盖的信息。</span><span data-lang="en">Skill-specific source text is authored in Chinese; switch to Simplified Chinese for the exact wording.</span></li><li><span data-lang="zh-CN">对照 `references/brief-structure.md` 生成简报骨架:目标、洞察、角度、关键词、结构、证据、风险和验收标准。</span><span data-lang="en">Skill-specific source text is authored in Chinese; switch to Simplified Chinese for the exact wording.</span></li><li><span data-lang="zh-CN">如果缺少核心输入,先提出最多三个澄清问题,不用假设补全用户没有提供的事实。</span><span data-lang="en">Skill-specific source text is authored in Chinese; switch to Simplified Chinese for the exact wording.</span></li><li><span data-lang="zh-CN">用 `evals/trigger_cases.jsonl` 检查当前请求是否属于 GEO 内容简报场景。</span><span data-lang="en">Skill-specific source text is authored in Chinese; switch to Simplified Chinese for the exact wording.</span></li><li><span data-lang="zh-CN">用 `evals/output_cases.jsonl` 检查输出是否包含输入摘要、内容结构、证据要求、禁区和下一步动作。</span><span data-lang="en">Skill-specific source text is authored in Chinese; switch to Simplified Chinese for the exact wording.</span></li></ol>
|
||||
</article>
|
||||
<article class="panel">
|
||||
<h3><span data-lang="zh-CN">调用方式</span><span data-lang="en">How To Use</span></h3>
|
||||
<ol class="step-list"><li><span data-lang="zh-CN">当你需要把访谈纪要、关键词、竞品线索和渠道限制整理成中文 GEO 内容简报时,使用 $geo-content-brief-skill。</span><span data-lang="en">Skill-specific source text is authored in Chinese; switch to Simplified Chinese for the exact wording.</span></li><li><span data-lang="zh-CN">Use this skill when the request matches: 将 GEO 内容访谈、关键词笔记、竞品线索和渠道约束整理成可执行的中文内容简报。用于团队复用、选题规划、内容生产交接和质量评审;不用于直接代写完整长文或替代品牌策略判断。</span><span data-lang="en">Use this skill when the request matches the frontmatter description.</span></li></ol>
|
||||
</article>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section id="contract">
|
||||
<div class="section-head">
|
||||
<div>
|
||||
<h2><span data-lang="zh-CN">契约边界</span><span data-lang="en">Contract</span></h2>
|
||||
<p><span data-lang="zh-CN">把触发、输入、输出和排除场景放在同一屏。</span><span data-lang="en">Keeps trigger, inputs, outputs, and exclusions on the same screen.</span></p>
|
||||
</div>
|
||||
<div class="two-col">
|
||||
<article class="panel">
|
||||
<h3><span data-lang="zh-CN">触发描述</span><span data-lang="en">Trigger</span></h3>
|
||||
<p><span data-lang="zh-CN">将 GEO 内容访谈、关键词笔记、竞品线索和渠道约束整理成可执行的中文内容简报。用于团队复用、选题规划、内容生产交接和质量评审;不用于直接代写完整长文或替代品牌策略判断。</span><span data-lang="en">Skill-specific source text is authored in Chinese; switch to Simplified Chinese for the exact wording.</span></p>
|
||||
<h3><span data-lang="zh-CN">输入材料</span><span data-lang="en">Inputs</span></h3>
|
||||
<ul class="list"><li><span data-lang="zh-CN">用户提供的工作流、提示词、文档、记录或散乱笔记</span><span data-lang="en">User-provided workflows, prompts, documents, records, or rough notes.</span></li><li><span data-lang="zh-CN">期望沉淀的复用场景、排除项、约束和质量标准</span><span data-lang="en">The reusable scenario, exclusions, constraints, and quality standards to capture.</span></li></ul>
|
||||
</article>
|
||||
<article class="panel">
|
||||
<h3><span data-lang="zh-CN">输出结果</span><span data-lang="en">Outputs</span></h3>
|
||||
<ul class="list"><li><span data-lang="zh-CN">可路由的 SKILL.md</span><span data-lang="en">A routeable SKILL.md.</span></li><li><span data-lang="zh-CN">agents/interface.yaml 元数据</span><span data-lang="en">agents/interface.yaml metadata.</span></li><li><span data-lang="zh-CN">必要的 references、scripts、evals、reports 证据</span><span data-lang="en">Necessary references, scripts, evals, and reports evidence.</span></li><li><span data-lang="zh-CN">结构化 Skill 目录,共 8 类关键资产。</span><span data-lang="en">Structured skill directory with 8 key asset groups.</span></li></ul>
|
||||
<h3><span data-lang="zh-CN">不应触发</span><span data-lang="en">Should Not Trigger</span></h3>
|
||||
<ul class="list"><li><span data-lang="zh-CN">只需要一次性回答、没有复用价值的临时请求。</span><span data-lang="en">One-off requests that do not need reusable skill behavior.</span></li><li><span data-lang="zh-CN">要求直接执行相邻任务,而不是沉淀或使用这个 Skill。</span><span data-lang="en">Requests to perform an adjacent task directly rather than create or use this skill.</span></li><li><span data-lang="zh-CN">缺少必要事实且用户不允许澄清的场景。</span><span data-lang="en">Cases that lack required facts and do not allow clarification.</span></li></ul>
|
||||
</article>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section id="quality">
|
||||
<div class="section-head">
|
||||
<div>
|
||||
<h2><span data-lang="zh-CN">质量评估</span><span data-lang="en">Quality</span></h2>
|
||||
<p><span data-lang="zh-CN">展示强项、缺口和建议,避免只给分不解释。</span><span data-lang="en">Shows strengths, gaps, and recommendations instead of scores without explanation.</span></p>
|
||||
</div>
|
||||
<div>
|
||||
<table>
|
||||
<thead><tr><th><span data-lang="zh-CN">类型</span><span data-lang="en">Type</span></th><th><span data-lang="zh-CN">证据</span><span data-lang="en">Evidence</span></th><th><span data-lang="zh-CN">建议</span><span data-lang="en">Action</span></th></tr></thead>
|
||||
<tbody><tr><td><span data-lang="zh-CN">强项</span><span data-lang="en">Strength</span></td><td><span data-lang="zh-CN">触发面保持精简,并锚定在 frontmatter description。</span><span data-lang="en">The trigger surface stays lean and anchored in the frontmatter description.</span></td><td><span data-lang="zh-CN">保留并复用</span><span data-lang="en">Keep</span></td></tr><tr><td><span data-lang="zh-CN">强项</span><span data-lang="en">Strength</span></td><td><span data-lang="zh-CN">已生成 Skill IR,核心语义可先于平台打包被审查和迁移。</span><span data-lang="en">Skill IR is generated so core semantics can be reviewed and migrated before platform packaging.</span></td><td><span data-lang="zh-CN">保留并复用</span><span data-lang="en">Keep</span></td></tr><tr><td><span data-lang="zh-CN">强项</span><span data-lang="en">Strength</span></td><td><span data-lang="zh-CN">已生成目标编译报告,可审查 IR 到 OpenAI、Claude、generic 等目标契约的映射。</span><span data-lang="en">Target compilation evidence is generated to review how IR maps to OpenAI, Claude, generic, and other target contracts.</span></td><td><span data-lang="zh-CN">保留并复用</span><span data-lang="en">Keep</span></td></tr><tr><td><span data-lang="zh-CN">缺口</span><span data-lang="en">Gap</span></td><td><span data-lang="zh-CN">证据充分需要补强:已生成 12 / 20 类报告证据。</span><span data-lang="en">Evidence depth needs improvement: Generated 12 / 20 evidence report types.</span></td><td><span data-lang="zh-CN">纳入下一轮修复</span><span data-lang="en">Fix next</span></td></tr></tbody>
|
||||
</table>
|
||||
<div class="two-col quality-panels">
|
||||
<article class="panel">
|
||||
<h3><span data-lang="zh-CN">执行证据</span><span data-lang="en">Execution Evidence</span></h3>
|
||||
<ul class="list"><li><span data-lang="zh-CN">尚未生成输出执行证据报告。</span><span data-lang="en">The output execution evidence report has not been generated yet.</span></li></ul>
|
||||
</article>
|
||||
<article class="panel">
|
||||
<h3><span data-lang="zh-CN">盲评审定</span><span data-lang="en">Blind Adjudication</span></h3>
|
||||
<ul class="list"><li><span data-lang="zh-CN">尚未生成盲评审定报告。</span><span data-lang="en">The blind review adjudication report has not been generated yet.</span></li></ul>
|
||||
</article>
|
||||
</div>
|
||||
<div class="two-col quality-panels">
|
||||
<article class="panel">
|
||||
<h3><span data-lang="zh-CN">评审原则</span><span data-lang="en">Review Rule</span></h3>
|
||||
<ul class="list"><li><span data-lang="zh-CN">先记录 reviewer 对 A/B 的选择,再打开答案 key 计算一致率。</span><span data-lang="en">Record the reviewer's A/B choice before opening the answer key and calculating agreement.</span></li><li><span data-lang="zh-CN">缺少真实 reviewer 决策时只显示待评审,不伪造人工结论。</span><span data-lang="en">When real reviewer decisions are missing, show pending status instead of fabricating human conclusions.</span></li></ul>
|
||||
</article>
|
||||
<article class="panel">
|
||||
<h3><span data-lang="zh-CN">运行原则</span><span data-lang="en">Run Rule</span></h3>
|
||||
<ul class="list"><li><span data-lang="zh-CN">recorded fixture 只能证明可复现样本,不等同于模型执行。</span><span data-lang="en">A recorded fixture proves reproducible samples only; it is not model execution.</span></li><li><span data-lang="zh-CN">只有 provider runner 返回 model metadata 时才计入 model-executed。</span><span data-lang="en">Only provider runners that return model metadata count as model-executed.</span></li></ul>
|
||||
</article>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section id="risk">
|
||||
<div class="section-head">
|
||||
<div>
|
||||
<h2><span data-lang="zh-CN">风险治理</span><span data-lang="en">Risk</span></h2>
|
||||
<p><span data-lang="zh-CN">提前暴露误触发、漂移、证据不足和迁移风险。</span><span data-lang="en">Surfaces trigger, drift, evidence, and portability risks before the package grows.</span></p>
|
||||
</div>
|
||||
<div class="two-col">
|
||||
<figure class="chart-figure" data-chart="risk_heatmap"><svg viewBox="0 0 380 300" role="img" aria-label="风险热力"><text data-lang="zh-CN" x="20" y="30" class="chart-title">风险热力</text><text data-lang="en" x="20" y="30" class="chart-title">Risk Heatmap</text><rect x="80" y="190" width="78" height="58" rx="6" fill="#faf9f5" stroke="#e8e6dc"/><text x="119" y="224" text-anchor="middle">0</text><rect x="166" y="190" width="78" height="58" rx="6" fill="#faf9f5" stroke="#e8e6dc"/><text x="205" y="224" text-anchor="middle">0</text><rect x="252" y="190" width="78" height="58" rx="6" fill="#faf9f5" stroke="#e8e6dc"/><text x="291" y="224" text-anchor="middle">0</text><rect x="80" y="124" width="78" height="58" rx="6" fill="#faf9f5" stroke="#e8e6dc"/><text x="119" y="158" text-anchor="middle">0</text><rect x="166" y="124" width="78" height="58" rx="6" fill="#D0DCE9" stroke="#e8e6dc"/><text x="205" y="158" text-anchor="middle">2</text><rect x="252" y="124" width="78" height="58" rx="6" fill="#faf9f5" stroke="#e8e6dc"/><text x="291" y="158" text-anchor="middle">0</text><rect x="80" y="58" width="78" height="58" rx="6" fill="#D0DCE9" stroke="#e8e6dc"/><text x="119" y="92" text-anchor="middle">2</text><rect x="166" y="58" width="78" height="58" rx="6" fill="#EEF2F7" stroke="#e8e6dc"/><text x="205" y="92" text-anchor="middle">1</text><rect x="252" y="58" width="78" height="58" rx="6" fill="#faf9f5" stroke="#e8e6dc"/><text x="291" y="92" text-anchor="middle">0</text><text data-lang="zh-CN" x="210" y="278" text-anchor="middle">发生概率</text><text data-lang="en" x="210" y="278" text-anchor="middle">Probability</text><text data-lang="zh-CN" x="24" y="160" transform="rotate(-90 24 160)" text-anchor="middle">影响程度</text><text data-lang="en" x="24" y="160" transform="rotate(-90 24 160)" text-anchor="middle">Impact</text></svg><figcaption><span data-lang="zh-CN">风险热力图用影响程度和发生概率标出当前治理重点。</span><span data-lang="en">The risk heatmap marks governance priorities by impact and probability.</span></figcaption></figure>
|
||||
<div>
|
||||
<table>
|
||||
<thead><tr><th><span data-lang="zh-CN">风险</span><span data-lang="en">Risk</span></th><th><span data-lang="zh-CN">信号</span><span data-lang="en">Signal</span></th><th><span data-lang="zh-CN">应对</span><span data-lang="en">Response</span></th></tr></thead>
|
||||
<tbody><tr><td><span data-lang="zh-CN">误触发风险</span><span data-lang="en">Trigger risk</span></td><td><span data-lang="zh-CN">frontmatter description 已存在,具备基础路由面。</span><span data-lang="en">The frontmatter description exists, giving the skill a basic routing surface.</span></td><td><span data-lang="zh-CN">先补证据和边界,再增加包体复杂度。</span><span data-lang="en">Improve evidence and boundaries before adding package complexity.</span></td></tr><tr><td><span data-lang="zh-CN">输出漂移风险</span><span data-lang="en">Output drift risk</span></td><td><span data-lang="zh-CN">已生成 12 / 20 类报告证据。</span><span data-lang="en">Generated 12 / 20 evidence report types.</span></td><td><span data-lang="zh-CN">先补证据和边界,再增加包体复杂度。</span><span data-lang="en">Improve evidence and boundaries before adding package complexity.</span></td></tr><tr><td><span data-lang="zh-CN">证据不足风险</span><span data-lang="en">Evidence gap risk</span></td><td><span data-lang="zh-CN">已生成 12 / 20 类报告证据。</span><span data-lang="en">Generated 12 / 20 evidence report types.</span></td><td><span data-lang="zh-CN">先补证据和边界,再增加包体复杂度。</span><span data-lang="en">Improve evidence and boundaries before adding package complexity.</span></td></tr><tr><td><span data-lang="zh-CN">包体膨胀风险</span><span data-lang="en">Package bloat risk</span></td><td><span data-lang="zh-CN">SKILL.md 约 864 个词/字。</span><span data-lang="en">SKILL.md is about 864 words/characters.</span></td><td><span data-lang="zh-CN">先补证据和边界,再增加包体复杂度。</span><span data-lang="en">Improve evidence and boundaries before adding package complexity.</span></td></tr><tr><td><span data-lang="zh-CN">跨平台迁移风险</span><span data-lang="en">Portability risk</span></td><td><span data-lang="zh-CN">agents/interface.yaml 已存在。</span><span data-lang="en">agents/interface.yaml exists.</span></td><td><span data-lang="zh-CN">先补证据和边界,再增加包体复杂度。</span><span data-lang="en">Improve evidence and boundaries before adding package complexity.</span></td></tr></tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<article class='panel world-readiness'><div class='world-readiness-head'><div><h3><span data-lang="zh-CN">世界证据</span><span data-lang="en">World Evidence</span></h3><p><span data-lang="zh-CN">未生成 world-class ledger;当前报告不会宣称世界级完成。</span><span data-lang="en">No world-class ledger was generated; this report does not claim world-class completion.</span></p></div><span class='world-status'><span data-lang="zh-CN">证据待补</span><span data-lang="en">Evidence pending</span></span></div><div class='evidence-kpis'><article class='evidence-kpi'><span><span data-lang="zh-CN">待补证据</span><span data-lang="en">Pending</span></span><strong>0</strong><small><span data-lang="zh-CN">仍需外部或人工证据接受。</span><span data-lang="en">External or human evidence still needs acceptance.</span></small></article><article class='evidence-kpi'><span><span data-lang="zh-CN">已接受</span><span data-lang="en">Accepted</span></span><strong>0</strong><small><span data-lang="zh-CN">已通过 source check 与提交契约。</span><span data-lang="en">Passed source checks and submission contract.</span></small></article><article class='evidence-kpi'><span><span data-lang="zh-CN">源检查</span><span data-lang="en">Source Checks</span></span><strong>0 / 0</strong><small><span data-lang="zh-CN">通过数 / 总检查数。</span><span data-lang="en">Passed checks / total checks.</span></small></article></div><div class='evidence-list'><article class='evidence-item empty'><p><span data-lang="zh-CN">尚未生成 world-class ledger;这里只保留反过度承诺提示。</span><span data-lang="en">No world-class ledger has been generated; this panel keeps the anti-overclaim guard visible.</span></p></article></div></article>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section id="assets">
|
||||
<div class="section-head">
|
||||
<div>
|
||||
<h2><span data-lang="zh-CN">包体资产</span><span data-lang="en">Assets</span></h2>
|
||||
<p><span data-lang="zh-CN">让 reviewer 快速确认关键文件、目录和资产分布。</span><span data-lang="en">Lets reviewers confirm key files, directories, and asset distribution quickly.</span></p>
|
||||
</div>
|
||||
<div class="two-col">
|
||||
<figure class="chart-figure" data-chart="asset_donut"><svg viewBox="0 0 430 270" role="img" aria-label="资产分布"><text data-lang="zh-CN" x="20" y="30" class="chart-title">资产分布</text><text data-lang="en" x="20" y="30" class="chart-title">Asset Distribution</text><circle cx="130" cy="130" r="70" fill="none" stroke="#1B365D" stroke-width="24" stroke-dasharray="14.3 85.7" stroke-dashoffset="0.0" pathLength="100" transform="rotate(-90 130 130)"/><circle cx="130" cy="130" r="70" fill="none" stroke="#2D5A8A" stroke-width="24" stroke-dasharray="14.3 85.7" stroke-dashoffset="-14.3" pathLength="100" transform="rotate(-90 130 130)"/><circle cx="130" cy="130" r="70" fill="none" stroke="#D0DCE9" stroke-width="24" stroke-dasharray="14.3 85.7" stroke-dashoffset="-28.6" pathLength="100" transform="rotate(-90 130 130)"/><circle cx="130" cy="130" r="70" fill="none" stroke="#E4ECF5" stroke-width="24" stroke-dasharray="14.3 85.7" stroke-dashoffset="-42.9" pathLength="100" transform="rotate(-90 130 130)"/><circle cx="130" cy="130" r="70" fill="none" stroke="#e8e6dc" stroke-width="24" stroke-dasharray="28.6 71.4" stroke-dashoffset="-57.1" pathLength="100" transform="rotate(-90 130 130)"/><circle cx="130" cy="130" r="70" fill="none" stroke="#504e49" stroke-width="24" stroke-dasharray="14.3 85.7" stroke-dashoffset="-85.7" pathLength="100" transform="rotate(-90 130 130)"/><text data-lang="zh-CN" x="130" y="136" text-anchor="middle">42项</text><text data-lang="en" x="130" y="136" text-anchor="middle">42 items</text><text data-lang="zh-CN" x="235" y="78">SKILL.md</text><text data-lang="en" x="235" y="78">SKILL.md</text><text data-lang="zh-CN" x="235" y="100">README.md</text><text data-lang="en" x="235" y="100">README.md</text><text data-lang="zh-CN" x="235" y="122">agents/interface.yaml</text><text data-lang="en" x="235" y="122">agents/interface.yaml</text><text data-lang="zh-CN" x="235" y="144">manifest.json</text><text data-lang="en" x="235" y="144">manifest.json</text><text data-lang="zh-CN" x="235" y="166">references</text><text data-lang="en" x="235" y="166">references</text><text data-lang="zh-CN" x="235" y="188">scripts</text><text data-lang="en" x="235" y="188">scripts</text></svg><figcaption><span data-lang="zh-CN">资产分布图展示当前包体的文件和目录重心。</span><span data-lang="en">The asset distribution chart shows where files and directories are concentrated.</span></figcaption></figure>
|
||||
<table>
|
||||
<thead><tr><th><span data-lang="zh-CN">路径</span><span data-lang="en">Path</span></th><th><span data-lang="zh-CN">作用</span><span data-lang="en">Role</span></th><th><span data-lang="zh-CN">类型</span><span data-lang="en">Type</span></th></tr></thead>
|
||||
<tbody><tr><td>SKILL.md</td><td><span data-lang="zh-CN">Skill 入口文件</span><span data-lang="en">Skill entrypoint</span></td><td><span data-lang="zh-CN">文件</span><span data-lang="en">file</span></td></tr><tr><td>README.md</td><td><span data-lang="zh-CN">人类可读使用说明</span><span data-lang="en">Human-readable usage guide</span></td><td><span data-lang="zh-CN">文件</span><span data-lang="en">file</span></td></tr><tr><td>agents/interface.yaml</td><td><span data-lang="zh-CN">跨平台接口元数据</span><span data-lang="en">Neutral interface metadata</span></td><td><span data-lang="zh-CN">文件</span><span data-lang="en">file</span></td></tr><tr><td>manifest.json</td><td><span data-lang="zh-CN">生命周期与打包元数据</span><span data-lang="en">Lifecycle and portability metadata</span></td><td><span data-lang="zh-CN">文件</span><span data-lang="en">file</span></td></tr><tr><td>references</td><td><span data-lang="zh-CN">扩展指导与复用资料</span><span data-lang="en">Extended guidance and reusable notes</span></td><td><span data-lang="zh-CN">目录</span><span data-lang="en">folder</span></td></tr><tr><td>scripts</td><td><span data-lang="zh-CN">确定性脚本或本地工具</span><span data-lang="en">Deterministic helpers or local tooling</span></td><td><span data-lang="zh-CN">目录</span><span data-lang="en">folder</span></td></tr><tr><td>evals</td><td><span data-lang="zh-CN">触发与质量检查</span><span data-lang="en">Trigger and quality checks</span></td><td><span data-lang="zh-CN">目录</span><span data-lang="en">folder</span></td></tr><tr><td>reports</td><td><span data-lang="zh-CN">生成的证据与总结报告</span><span data-lang="en">Generated evidence and overview artifacts</span></td><td><span data-lang="zh-CN">目录</span><span data-lang="en">folder</span></td></tr></tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section id="roadmap">
|
||||
<div class="section-head">
|
||||
<div>
|
||||
<h2><span data-lang="zh-CN">迭代路线</span><span data-lang="en">Roadmap</span></h2>
|
||||
<p><span data-lang="zh-CN">把下一步升级收束为少数高价值动作。</span><span data-lang="en">Keeps next iteration moves focused and actionable.</span></p>
|
||||
</div>
|
||||
<div>
|
||||
<div class="chart-grid"><figure class="chart-figure" data-chart="timeline"><svg viewBox="0 0 520 210" role="img" aria-label="迭代时间"><text data-lang="zh-CN" x="20" y="30" class="chart-title">迭代时间</text><text data-lang="en" x="20" y="30" class="chart-title">Iteration Timeline</text><line x1="60" y1="92" x2="440" y2="92" class="chart-line"/><circle cx="60" cy="92" r="10" fill="#1B365D"/><text data-lang="zh-CN" x="60" y="126" text-anchor="middle">下一步 1</text><text data-lang="en" x="60" y="126" text-anchor="middle">Next 1</text><text data-lang="zh-CN" x="60" y="150" text-anchor="middle">Tighten trigger a…</text><text data-lang="en" x="60" y="150" text-anchor="middle">Tighten trigger a…</text><circle cx="250" cy="92" r="10" fill="#1B365D"/><text data-lang="zh-CN" x="250" y="126" text-anchor="middle">下一步 2</text><text data-lang="en" x="250" y="126" text-anchor="middle">Next 2</text><text data-lang="zh-CN" x="250" y="150" text-anchor="middle">Add the first exe…</text><text data-lang="en" x="250" y="150" text-anchor="middle">Add the first exe…</text><circle cx="440" cy="92" r="10" fill="#1B365D"/><text data-lang="zh-CN" x="440" y="126" text-anchor="middle">下一步 3</text><text data-lang="en" x="440" y="126" text-anchor="middle">Next 3</text><text data-lang="zh-CN" x="440" y="150" text-anchor="middle">Promote from scaf…</text><text data-lang="en" x="440" y="150" text-anchor="middle">Promote from scaf…</text></svg><figcaption><span data-lang="zh-CN">迭代时间线把下一步升级收束成少数可执行动作。</span><span data-lang="en">The iteration timeline narrows the next upgrade into a few executable moves.</span></figcaption></figure></div>
|
||||
<div class="roadmap"><article class='roadmap-item'><span class='step'><span data-lang="zh-CN">下一步 1</span><span data-lang="en">Next 1</span></span><h3><span data-lang="zh-CN">收紧触发与排除边界</span><span data-lang="en">Tighten trigger and exclusions</span></h3><p><span data-lang="zh-CN">在继续扩展前,需要先把相邻但不应触发的场景说清楚。</span><span data-lang="en">The package needs clearer near-neighbor exclusions before it grows.</span></p><ul class="compact-list"><li><span data-lang="zh-CN">增加 3 到 5 个应触发和不应触发的例子。</span><span data-lang="en">Add 3 to 5 should-trigger and should-not-trigger examples.</span></li><li><span data-lang="zh-CN">精炼 frontmatter description,明确重复任务和非目标。</span><span data-lang="en">Refine the frontmatter description to name the recurring job and non-goals.</span></li><li><span data-lang="zh-CN">扩展包体前先跑一轮触发评估。</span><span data-lang="en">Run a first trigger evaluation pass before expanding the package.</span></li></ul><p class='unlock'><span data-lang="zh-CN">路由更清晰,误触发更少。</span><span data-lang="en">Cleaner routing and fewer accidental activations.</span></p></article><article class='roadmap-item'><span class='step'><span data-lang="zh-CN">下一步 2</span><span data-lang="en">Next 2</span></span><h3><span data-lang="zh-CN">补上第一个执行资产</span><span data-lang="en">Add the first execution asset</span></h3><p><span data-lang="zh-CN">当前包体仍偏文本说明,应先增加一个能减少重复人工操作的资产。</span><span data-lang="en">The package is still mostly prose. Add one asset that removes repeated manual work.</span></p><ul class="compact-list"><li><span data-lang="zh-CN">如果用户会反复使用某段流程说明,把它沉淀到 references。</span><span data-lang="en">Move stable procedural guidance into references if users will need it repeatedly.</span></li><li><span data-lang="zh-CN">如果某个重复步骤可以执行而不是描述,就沉淀成一个确定性 helper script。</span><span data-lang="en">Create one deterministic helper script if a repeated step can be executed instead of described.</span></li><li><span data-lang="zh-CN">保持主 SKILL.md 简洁,并围绕路由与入口组织。</span><span data-lang="en">Keep the main SKILL.md compact and route-oriented.</span></li></ul><p class='unlock'><span data-lang="zh-CN">在不膨胀入口文件的前提下提升执行质量。</span><span data-lang="en">Stronger execution quality without bloating the entrypoint.</span></p></article><article class='roadmap-item'><span class='step'><span data-lang="zh-CN">下一步 3</span><span data-lang="en">Next 3</span></span><h3><span data-lang="zh-CN">从脚手架推进到生产可用</span><span data-lang="en">Promote from scaffold to production-ready</span></h3><p><span data-lang="zh-CN">第一版已经存在,下一步收益通常来自补上最小但有效的质量门禁。</span><span data-lang="en">The first version exists; the next gain usually comes from adding the smallest useful gates.</span></p><ul class="compact-list"><li><span data-lang="zh-CN">判断这个 Skill 是个人使用、团队复用,还是库级基础能力。</span><span data-lang="en">Decide whether this skill is personal, team-reused, or library-grade.</span></li><li><span data-lang="zh-CN">只添加与风险等级匹配的质量门禁。</span><span data-lang="en">Add only the gates that match that risk level.</span></li><li><span data-lang="zh-CN">一旦进入真实复用,就记录生命周期元数据和评审节奏。</span><span data-lang="en">Record lifecycle metadata and review cadence once reuse becomes real.</span></li></ul><p class='unlock'><span data-lang="zh-CN">更清晰地从探索性包体走向可维护资产。</span><span data-lang="en">A clearer path from exploratory package to maintained asset.</span></p></article></div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</main>
|
||||
<script>
|
||||
(function () {
|
||||
var buttons = Array.prototype.slice.call(document.querySelectorAll("[data-set-lang]"));
|
||||
var navLinks = Array.prototype.slice.call(document.querySelectorAll(".report-nav a"));
|
||||
var sections = navLinks
|
||||
.map(function (link) { return document.querySelector(link.getAttribute("href")); })
|
||||
.filter(Boolean);
|
||||
var progressBar = document.querySelector(".progress-bar");
|
||||
function setLanguage(lang) {
|
||||
document.body.setAttribute("data-report-lang", lang);
|
||||
document.documentElement.setAttribute("lang", lang);
|
||||
buttons.forEach(function (button) {
|
||||
button.setAttribute("aria-pressed", button.getAttribute("data-set-lang") === lang ? "true" : "false");
|
||||
});
|
||||
}
|
||||
function updateProgress() {
|
||||
var scrollTop = window.scrollY || document.documentElement.scrollTop;
|
||||
var height = Math.max(1, document.documentElement.scrollHeight - window.innerHeight);
|
||||
var pct = Math.min(100, Math.max(0, (scrollTop / height) * 100));
|
||||
if (progressBar) progressBar.style.transform = "scaleX(" + pct / 100 + ")";
|
||||
var active = sections[0];
|
||||
sections.forEach(function (section) {
|
||||
if (section.getBoundingClientRect().top <= 110) active = section;
|
||||
});
|
||||
navLinks.forEach(function (link) {
|
||||
link.setAttribute("aria-current", link.getAttribute("href") === "#" + active.id ? "true" : "false");
|
||||
});
|
||||
}
|
||||
buttons.forEach(function (button) {
|
||||
button.addEventListener("click", function () {
|
||||
setLanguage(button.getAttribute("data-set-lang"));
|
||||
});
|
||||
});
|
||||
window.addEventListener("scroll", updateProgress, { passive: true });
|
||||
window.addEventListener("resize", updateProgress);
|
||||
setLanguage("zh-CN");
|
||||
updateProgress();
|
||||
})();
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
+1060
File diff suppressed because it is too large
Load Diff
+166
@@ -0,0 +1,166 @@
|
||||
{
|
||||
"skill_name": "geo-content-brief-skill",
|
||||
"description": "将 GEO 内容访谈、关键词笔记和渠道约束整理成可执行的中文内容简报 Skill,适用于团队复用、触发边界审查和后续质量评估。",
|
||||
"systems_doctrine": "Structure drives behavior: improve the boundary, feedback loops, drift watch, and leverage points before adding weight.",
|
||||
"stability": {
|
||||
"score": 77,
|
||||
"band": "stable-first-pass"
|
||||
},
|
||||
"boundary_map": {
|
||||
"owned_job": "将 GEO 内容访谈、关键词笔记和渠道约束整理成可执行的中文内容简报 Skill,适用于团队复用、触发边界审查和后续质量评估。",
|
||||
"input_boundary": [
|
||||
"user-provided workflow notes, prompts, docs, or examples"
|
||||
],
|
||||
"output_boundary": "a reusable skill output",
|
||||
"non_goals": [
|
||||
"one-off adjacent requests that do not match the recurring job",
|
||||
"private local material that was not intentionally included"
|
||||
],
|
||||
"constraints": [],
|
||||
"standards": [],
|
||||
"human_judgment_boundary": [
|
||||
"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."
|
||||
],
|
||||
"maturity_assumption": "scaffold"
|
||||
},
|
||||
"feedback_loops": [
|
||||
{
|
||||
"name": "Intent boundary loop",
|
||||
"signal": "Intent confidence score is 10/100.",
|
||||
"response": "Ask only the highest-leverage clarification before adding package weight.",
|
||||
"evidence": "reports/intent-confidence.md and reports/intent-dialogue.md"
|
||||
},
|
||||
{
|
||||
"name": "Reference synthesis loop",
|
||||
"signal": "Benchmark patterns are useful only after they are abstracted into borrow and avoid guidance.",
|
||||
"response": "Borrow one pattern at a time and keep the rest as reviewer-visible evidence.",
|
||||
"evidence": "reports/reference-synthesis.md",
|
||||
"current_patterns": [
|
||||
"Borrow progressive disclosure: keep the entrypoint lean and move depth into references or scripts.",
|
||||
"Borrow a small hypothesis-test-learn loop so the first revision is evidence-backed.",
|
||||
"Borrow the discipline of defining what the skill should not own before growing the package.",
|
||||
"Do not let packaging or platform concerns swallow the core job boundary.",
|
||||
"Do not create experimental overhead that exceeds the skill's real risk tier."
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Output quality loop",
|
||||
"signal": "Generated output may fail in recurring domain-specific ways.",
|
||||
"response": "Apply predicted output-risk families as self-repair checks before final output.",
|
||||
"evidence": "reports/output-risk-profile.md",
|
||||
"current_risk_families": [
|
||||
"Markdown readability",
|
||||
"Screenshot and visual capture",
|
||||
"Citation and footnote clutter",
|
||||
"Tone and specificity",
|
||||
"Tutorial quality"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Reviewer feedback loop",
|
||||
"signal": "Human review catches drift that static checks miss.",
|
||||
"response": "Capture lightweight feedback and turn repeated findings into gates or references.",
|
||||
"evidence": "reports/review-viewer.html and feedback records"
|
||||
},
|
||||
{
|
||||
"name": "Lifecycle loop",
|
||||
"signal": "As reuse grows, the skill needs stronger gates, ownership, and regression evidence.",
|
||||
"response": "Promote only when the next gate improves reliability more than context cost.",
|
||||
"evidence": "manifest.json, reports/iteration-directions.md, and governance checks"
|
||||
}
|
||||
],
|
||||
"drift_watch": [
|
||||
{
|
||||
"name": "Trigger drift",
|
||||
"watch_signal": "Users start invoking the skill for adjacent one-off or explanation-only requests.",
|
||||
"countermeasure": "Add near-neighbor exclusions and route evals before expanding workflow steps.",
|
||||
"cadence": "per trigger or description change"
|
||||
},
|
||||
{
|
||||
"name": "Output drift",
|
||||
"watch_signal": "Outputs remain valid but become generic, cluttered, or weakly aligned with the user's domain.",
|
||||
"countermeasure": "Refresh output-risk and artifact-design profiles, then add one self-repair check.",
|
||||
"cadence": "after the first 3-5 real uses",
|
||||
"risk_families": [
|
||||
"Markdown readability",
|
||||
"Screenshot and visual capture",
|
||||
"Citation and footnote clutter",
|
||||
"Tone and specificity",
|
||||
"Tutorial quality"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Reference drift",
|
||||
"watch_signal": "Borrowed benchmark patterns no longer fit the local job or add ceremony without payoff.",
|
||||
"countermeasure": "Re-run reference synthesis and keep only patterns that improve the current boundary.",
|
||||
"cadence": "per material benchmark or product assumption change"
|
||||
},
|
||||
{
|
||||
"name": "Governance drift",
|
||||
"watch_signal": "Skill usage becomes team-critical while ownership, review cadence, or rollback evidence stays informal.",
|
||||
"countermeasure": "Promote maturity tier and add reviewer-visible lifecycle evidence.",
|
||||
"cadence": "when reuse becomes real"
|
||||
}
|
||||
],
|
||||
"failure_pattern_map": [
|
||||
{
|
||||
"family": "Boundary failure",
|
||||
"symptom": "The skill handles nearby requests that were never part of the recurring job.",
|
||||
"repair": "Narrow the description and add explicit non-goals before adding more execution steps."
|
||||
},
|
||||
{
|
||||
"family": "Feedback gap",
|
||||
"symptom": "The skill has rules but no signal telling authors which rule should change after use.",
|
||||
"repair": "Turn repeated reviewer feedback into one eval, one reference note, or one self-repair check."
|
||||
},
|
||||
{
|
||||
"family": "Output degradation",
|
||||
"symptom": "The result is structurally correct but generic, cluttered, or weakly matched to the user's domain.",
|
||||
"repair": "Use output-risk families as pre-final checks.",
|
||||
"current_risk_families": [
|
||||
"Markdown readability",
|
||||
"Screenshot and visual capture",
|
||||
"Citation and footnote clutter",
|
||||
"Tone and specificity",
|
||||
"Tutorial quality"
|
||||
]
|
||||
},
|
||||
{
|
||||
"family": "Prompt-behavior mismatch",
|
||||
"symptom": "The role, task, and format are copied from a prompt instead of becoming stable skill behavior.",
|
||||
"repair": "Convert reusable role/task/format assumptions into workflow, reports, or references.",
|
||||
"watch_axes": [
|
||||
"Specificity"
|
||||
]
|
||||
}
|
||||
],
|
||||
"leverage_points": [
|
||||
{
|
||||
"rank": 1,
|
||||
"point": "Clarify the real job boundary",
|
||||
"why": "Intent uncertainty creates downstream trigger, output, and governance errors.",
|
||||
"move": "Ask one focused question and update intent context before adding assets."
|
||||
},
|
||||
{
|
||||
"rank": 2,
|
||||
"point": "Tune the frontmatter description",
|
||||
"why": "The description is the highest-leverage routing surface.",
|
||||
"move": "Name the recurring job, expected input, output, and strongest non-goal in compact language."
|
||||
},
|
||||
{
|
||||
"rank": 3,
|
||||
"point": "Install output self-repair checks",
|
||||
"why": "The likely failure families are: Markdown readability, Screenshot and visual capture, Citation and footnote clutter.",
|
||||
"move": "Add only the checks that prevent recurring output mistakes."
|
||||
},
|
||||
{
|
||||
"rank": 4,
|
||||
"point": "Borrow one pattern, not a whole product",
|
||||
"why": "External references improve quality when reduced to structure, not copied as surface style.",
|
||||
"move": "Start from: Borrow progressive disclosure: keep the entrypoint lean and move depth into references or scripts."
|
||||
}
|
||||
],
|
||||
"reviewer_rule": "Reviewer should ask whether the skill's structure will keep producing the desired behavior after repeated real use."
|
||||
}
|
||||
+156
@@ -0,0 +1,156 @@
|
||||
# System Model
|
||||
|
||||
Skill: `geo-content-brief-skill`
|
||||
|
||||
- Stability score: `77/100`
|
||||
- Stability band: `stable-first-pass`
|
||||
- Doctrine: Structure drives behavior: improve the boundary, feedback loops, drift watch, and leverage points before adding weight.
|
||||
|
||||
## System Boundary Map
|
||||
|
||||
- Owned job: 将 GEO 内容访谈、关键词笔记和渠道约束整理成可执行的中文内容简报 Skill,适用于团队复用、触发边界审查和后续质量评估。
|
||||
- Output boundary: a reusable skill output
|
||||
- Maturity assumption: `scaffold`
|
||||
- Input boundary:
|
||||
- user-provided workflow notes, prompts, docs, or examples
|
||||
- Non-goals:
|
||||
- one-off adjacent requests that do not match the recurring job
|
||||
- private local material that was not intentionally included
|
||||
- Human judgment boundary:
|
||||
- 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.
|
||||
|
||||
## Feedback Loops
|
||||
|
||||
### Intent boundary loop
|
||||
|
||||
- Signal: Intent confidence score is 10/100.
|
||||
- Response: Ask only the highest-leverage clarification before adding package weight.
|
||||
- Evidence: reports/intent-confidence.md and reports/intent-dialogue.md
|
||||
|
||||
### Reference synthesis loop
|
||||
|
||||
- Signal: Benchmark patterns are useful only after they are abstracted into borrow and avoid guidance.
|
||||
- Response: Borrow one pattern at a time and keep the rest as reviewer-visible evidence.
|
||||
- Evidence: reports/reference-synthesis.md
|
||||
- Current patterns:
|
||||
- Borrow progressive disclosure: keep the entrypoint lean and move depth into references or scripts.
|
||||
- Borrow a small hypothesis-test-learn loop so the first revision is evidence-backed.
|
||||
- Borrow the discipline of defining what the skill should not own before growing the package.
|
||||
- Do not let packaging or platform concerns swallow the core job boundary.
|
||||
- Do not create experimental overhead that exceeds the skill's real risk tier.
|
||||
|
||||
### Output quality loop
|
||||
|
||||
- Signal: Generated output may fail in recurring domain-specific ways.
|
||||
- Response: Apply predicted output-risk families as self-repair checks before final output.
|
||||
- Evidence: reports/output-risk-profile.md
|
||||
- Current risk families:
|
||||
- Markdown readability
|
||||
- Screenshot and visual capture
|
||||
- Citation and footnote clutter
|
||||
- Tone and specificity
|
||||
- Tutorial quality
|
||||
|
||||
### Reviewer feedback loop
|
||||
|
||||
- Signal: Human review catches drift that static checks miss.
|
||||
- Response: Capture lightweight feedback and turn repeated findings into gates or references.
|
||||
- Evidence: reports/review-viewer.html and feedback records
|
||||
|
||||
### Lifecycle loop
|
||||
|
||||
- Signal: As reuse grows, the skill needs stronger gates, ownership, and regression evidence.
|
||||
- Response: Promote only when the next gate improves reliability more than context cost.
|
||||
- Evidence: manifest.json, reports/iteration-directions.md, and governance checks
|
||||
|
||||
## Delay And Drift Watch
|
||||
|
||||
### Trigger drift
|
||||
|
||||
- Watch signal: Users start invoking the skill for adjacent one-off or explanation-only requests.
|
||||
- Countermeasure: Add near-neighbor exclusions and route evals before expanding workflow steps.
|
||||
- Cadence: per trigger or description change
|
||||
|
||||
### Output drift
|
||||
|
||||
- Watch signal: Outputs remain valid but become generic, cluttered, or weakly aligned with the user's domain.
|
||||
- Countermeasure: Refresh output-risk and artifact-design profiles, then add one self-repair check.
|
||||
- Cadence: after the first 3-5 real uses
|
||||
- Risk families:
|
||||
- Markdown readability
|
||||
- Screenshot and visual capture
|
||||
- Citation and footnote clutter
|
||||
- Tone and specificity
|
||||
- Tutorial quality
|
||||
|
||||
### Reference drift
|
||||
|
||||
- Watch signal: Borrowed benchmark patterns no longer fit the local job or add ceremony without payoff.
|
||||
- Countermeasure: Re-run reference synthesis and keep only patterns that improve the current boundary.
|
||||
- Cadence: per material benchmark or product assumption change
|
||||
|
||||
### Governance drift
|
||||
|
||||
- Watch signal: Skill usage becomes team-critical while ownership, review cadence, or rollback evidence stays informal.
|
||||
- Countermeasure: Promote maturity tier and add reviewer-visible lifecycle evidence.
|
||||
- Cadence: when reuse becomes real
|
||||
|
||||
## Failure Pattern Map
|
||||
|
||||
### Boundary failure
|
||||
|
||||
- Symptom: The skill handles nearby requests that were never part of the recurring job.
|
||||
- Repair: Narrow the description and add explicit non-goals before adding more execution steps.
|
||||
|
||||
### Feedback gap
|
||||
|
||||
- Symptom: The skill has rules but no signal telling authors which rule should change after use.
|
||||
- Repair: Turn repeated reviewer feedback into one eval, one reference note, or one self-repair check.
|
||||
|
||||
### Output degradation
|
||||
|
||||
- Symptom: The result is structurally correct but generic, cluttered, or weakly matched to the user's domain.
|
||||
- Repair: Use output-risk families as pre-final checks.
|
||||
- Current Risk Families:
|
||||
- Markdown readability
|
||||
- Screenshot and visual capture
|
||||
- Citation and footnote clutter
|
||||
- Tone and specificity
|
||||
- Tutorial quality
|
||||
|
||||
### Prompt-behavior mismatch
|
||||
|
||||
- Symptom: The role, task, and format are copied from a prompt instead of becoming stable skill behavior.
|
||||
- Repair: Convert reusable role/task/format assumptions into workflow, reports, or references.
|
||||
- Watch Axes:
|
||||
- Specificity
|
||||
|
||||
## Highest Leverage Moves
|
||||
|
||||
### 1. Clarify the real job boundary
|
||||
|
||||
- Why: Intent uncertainty creates downstream trigger, output, and governance errors.
|
||||
- Move: Ask one focused question and update intent context before adding assets.
|
||||
|
||||
### 2. Tune the frontmatter description
|
||||
|
||||
- Why: The description is the highest-leverage routing surface.
|
||||
- Move: Name the recurring job, expected input, output, and strongest non-goal in compact language.
|
||||
|
||||
### 3. Install output self-repair checks
|
||||
|
||||
- Why: The likely failure families are: Markdown readability, Screenshot and visual capture, Citation and footnote clutter.
|
||||
- Move: Add only the checks that prevent recurring output mistakes.
|
||||
|
||||
### 4. Borrow one pattern, not a whole product
|
||||
|
||||
- Why: External references improve quality when reduced to structure, not copied as surface style.
|
||||
- Move: Start from: Borrow progressive disclosure: keep the entrypoint lean and move depth into references or scripts.
|
||||
|
||||
## Reviewer Use
|
||||
|
||||
- Reviewer should ask whether the skill's structure will keep producing the desired behavior after repeated real use.
|
||||
- Prefer changing the system boundary, feedback loop, or leverage point before adding more prose.
|
||||
- If a problem repeats, convert it into a named failure pattern and one regression check.
|
||||
@@ -23,6 +23,7 @@ Use `make ci-test` as the default full verification command before calling a cha
|
||||
Common focused checks:
|
||||
|
||||
- CLI changes: `python3 tests/verify_yao_cli.py`
|
||||
- Operator UX changes: `python3 tests/verify_operator_ux.py`
|
||||
- Skill overview report changes: `python3 tests/verify_skill_overview.py`
|
||||
- Review Studio changes: `python3 tests/verify_review_studio.py`
|
||||
- Trust or script inventory changes: `python3 tests/verify_trust_check.py`
|
||||
@@ -34,18 +35,60 @@ After source changes that affect scripts, package contents, trust evidence, Revi
|
||||
GENERATED_AT="${GENERATED_AT:-$(date +%F)}"
|
||||
python3 scripts/run_output_execution.py --runner-command '["python3","scripts/local_output_eval_runner.py"]'
|
||||
python3 scripts/compile_skill.py . --generated-at "$GENERATED_AT"
|
||||
python3 scripts/cross_packager.py . --platform openai --platform claude --platform generic --expectations evals/packaging_expectations.json --output-dir dist --zip
|
||||
python3 scripts/cross_packager.py . --platform openai --platform claude --platform generic --platform vscode --expectations evals/packaging_expectations.json --output-dir dist --zip
|
||||
python3 scripts/simulate_install.py . --package-dir dist --install-root dist/install-simulation --output-json reports/install_simulation.json --output-md reports/install_simulation.md --generated-at "$GENERATED_AT"
|
||||
python3 scripts/trust_check.py . --output-json reports/security_trust_report.json --output-md reports/security_trust_report.md
|
||||
python3 scripts/registry_audit.py . --generated-at "$GENERATED_AT"
|
||||
python3 scripts/verify_package.py . --package-dir dist --expectations evals/packaging_expectations.json --registry-json reports/registry_audit.json --output-json reports/package_verification.json --output-md reports/package_verification.md --require-zip --generated-at "$GENERATED_AT"
|
||||
python3 scripts/registry_audit.py . --generated-at "$GENERATED_AT"
|
||||
python3 scripts/upgrade_check.py . --previous-package-json registry/examples/yao-meta-skill-1.0.0.json --current-package-json reports/registry_audit.json --output-json reports/upgrade_check.json --output-md reports/upgrade_check.md --generated-at "$GENERATED_AT"
|
||||
python3 scripts/render_adoption_drift_report.py . --generated-at "$GENERATED_AT"
|
||||
python3 scripts/render_architecture_maintainability.py . --generated-at "$GENERATED_AT"
|
||||
python3 scripts/python_compat_check.py . --generated-at "$GENERATED_AT"
|
||||
python3 scripts/probe_runtime_permissions.py . --package-dir dist
|
||||
python3 scripts/render_review_waivers.py . --generated-at "$GENERATED_AT"
|
||||
python3 scripts/render_review_annotations.py .
|
||||
python3 scripts/build_skill_atlas.py --workspace-root . --output-dir skill_atlas --report-html reports/skill_atlas.html --report-json reports/skill_atlas.json --today "$GENERATED_AT"
|
||||
python3 scripts/render_world_class_evidence_plan.py . --generated-at "$GENERATED_AT"
|
||||
python3 scripts/render_world_class_evidence_ledger.py . --generated-at "$GENERATED_AT"
|
||||
python3 scripts/render_world_class_evidence_intake.py . --generated-at "$GENERATED_AT"
|
||||
python3 scripts/render_world_class_submission_review.py . --generated-at "$GENERATED_AT"
|
||||
python3 scripts/render_world_class_operator_runbook.py . --generated-at "$GENERATED_AT"
|
||||
python3 scripts/render_world_class_claim_guard.py . --generated-at "$GENERATED_AT"
|
||||
python3 scripts/render_daily_skillops_report.py . --generated-at "$GENERATED_AT"
|
||||
python3 scripts/render_weekly_curator_report.py . --generated-at "$GENERATED_AT"
|
||||
python3 scripts/render_skill_os2_audit.py . --generated-at "$GENERATED_AT"
|
||||
python3 scripts/render_skill_os2_coverage.py . --generated-at "$GENERATED_AT"
|
||||
python3 scripts/render_context_reports.py --generated-at "$GENERATED_AT"
|
||||
python3 scripts/render_benchmark_reproducibility.py . --generated-at "$GENERATED_AT"
|
||||
python3 scripts/render_skill_overview.py .
|
||||
python3 scripts/render_skill_interpretation.py .
|
||||
python3 scripts/render_review_viewer.py .
|
||||
python3 scripts/render_world_class_preflight.py . --generated-at "$GENERATED_AT"
|
||||
python3 scripts/render_review_studio.py . --output-html reports/review-studio.html --output-json reports/review-studio.json
|
||||
python3 scripts/render_evidence_consistency.py . --generated-at "$GENERATED_AT"
|
||||
```
|
||||
|
||||
Clean test-only scratch directories after verification with `rm -rf tests/tmp_*`. Do not clean unrelated untracked files.
|
||||
For final release evidence, commit source and generated package evidence first, then run the clean-lock reports from a clean worktree:
|
||||
|
||||
```bash
|
||||
python3 scripts/render_context_reports.py --generated-at "$GENERATED_AT"
|
||||
python3 scripts/render_benchmark_reproducibility.py . --generated-at "$GENERATED_AT"
|
||||
python3 scripts/render_daily_skillops_report.py . --generated-at "$GENERATED_AT"
|
||||
python3 scripts/render_weekly_curator_report.py . --generated-at "$GENERATED_AT"
|
||||
python3 scripts/render_skill_overview.py .
|
||||
python3 scripts/render_skill_interpretation.py .
|
||||
python3 scripts/render_review_viewer.py .
|
||||
python3 scripts/render_world_class_preflight.py . --generated-at "$GENERATED_AT"
|
||||
python3 scripts/render_review_studio.py . --output-html reports/review-studio.html --output-json reports/review-studio.json
|
||||
python3 scripts/render_evidence_consistency.py . --generated-at "$GENERATED_AT"
|
||||
```
|
||||
|
||||
If `reports/benchmark_reproducibility.json` reports `release_lock_ready: false`, do not commit that benchmark as release evidence. Restore the transient dirty-lock reports, commit the source/generated evidence that caused the dirty state, and regenerate the clean-lock reports on the resulting clean tree.
|
||||
|
||||
Local sync into `~/.agents/skills.disabled/yao-meta-skill` or `~/.agents/skills/yao-meta-skill` must keep the install preflight enabled unless the user explicitly requests a diagnostic bypass. `make sync-local-install` and `make sync-active-install` rebuild the package first, then `scripts/sync_local_install.py` refuses to copy files when install simulation or installer permission enforcement fails.
|
||||
|
||||
Clean test-only scratch directories after verification with `find tests -maxdepth 1 \( -name 'tmp' -o -name 'tmp_*' \) -type d -exec rm -rf {} +`. Do not clean unrelated untracked files.
|
||||
|
||||
## Boundaries
|
||||
|
||||
@@ -60,11 +103,30 @@ Clean test-only scratch directories after verification with `rm -rf tests/tmp_*`
|
||||
|
||||
- `scripts/yao.py`: unified CLI orchestration. Keep command behavior stable; move pure config and side-effect-free helpers into small internal modules.
|
||||
- `scripts/render_skill_overview.py`: v2 bilingual skill overview report. Preserve `reports/skill-overview.html` / `.json`, `body data-report-lang="zh-CN"`, default Simplified Chinese, English switch, and inline-chart/no-external-dependency behavior.
|
||||
- `scripts/skill_report_layout.py` plus `assets/skill-overview.css` / `assets/skill-overview.js`: overview report layout contract and inline assets. Keep the generated report single-file at render time, but keep long CSS/JS source in `assets/` instead of embedding it inside Python.
|
||||
- `scripts/render_review_studio.py`: Review Studio gate orchestration. Keep gate scoring, evidence links, and action generation separate from layout helpers.
|
||||
- `scripts/review_studio_layout.py`: Review Studio static layout and CSS contract.
|
||||
- `scripts/review_studio_layout.py` plus `assets/review-studio.css`: Review Studio static layout and CSS contract. Keep the generated report single-file at render time, but keep long CSS source in `assets/` instead of embedding it inside Python.
|
||||
- `scripts/review_studio_formatting.py`: Review Studio dictionary-to-panel formatting and Chinese metric labels.
|
||||
- `scripts/review_studio_gates.py`: Review Studio gate evaluation, release decision scoring, and gate status labels.
|
||||
- `scripts/render_skill_os2_audit.py`: requirement-by-requirement Skill OS 2.0 completion audit. Keep local evidence, human-required gaps, and external-required gaps separate so reports do not overclaim world-class readiness.
|
||||
- `scripts/render_world_class_evidence_plan.py`: executable evidence task plan for the remaining world-class readiness gaps. Keep provider, human, native-permission, and real-client telemetry evidence requirements concrete without marking planned work as complete.
|
||||
- `scripts/render_world_class_evidence_ledger.py`: machine-checkable acceptance ledger for the remaining world-class evidence gaps. Keep anti-overclaim guards explicit so planned work, metadata fallbacks, pending review, and local command runners never count as final evidence.
|
||||
- `scripts/render_world_class_evidence_intake.py`: intake validator for external and human world-class evidence packets. Real submissions must reference concrete local aggregate artifacts with matching SHA-256 digests; templates may stay hash-free and must not count as evidence.
|
||||
- `scripts/world_class_evidence_contract.py`: shared intake contract and artifact-integrity validator. Keep ledger, intake, and submission review aligned so source evidence cannot be accepted without a valid real submission and matching artifact SHA-256 checks.
|
||||
- `scripts/render_world_class_submission_review.py`: read-only queue for external and human evidence packets after intake validation. Keep it from accepting evidence; it may only compare packet validity, source evidence checks, and ledger state.
|
||||
- `scripts/render_world_class_operator_runbook.py`: operator-facing world-class evidence runbook. Keep it as coordination guidance only; it must not accept evidence or flip world-class readiness.
|
||||
- `scripts/render_world_class_preflight.py` plus `scripts/world_class_preflight_layout.py`: operator-facing collection preflight for world-class evidence. Keep data assembly and CLI emission in the renderer, keep HTML layout in the layout helper, keep environment and external prerequisite checks redacted, and never let preflight count as accepted evidence.
|
||||
- `scripts/render_benchmark_reproducibility.py`: release-facing benchmark reproducibility manifest. Keep methodology sections, required artifacts, failure disclosure, reproduction commands, and world-class limitations machine-checkable.
|
||||
- `scripts/skill_report_model.py`, `scripts/skill_report_metrics.py`, `scripts/skill_report_charts.py`: skill overview data model, scoring, and inline SVG chart generation.
|
||||
- `scripts/yao_cli_config.py`: CLI target maps, archetype heuristics, diagnosis copy, and side-effect-free shaping helpers.
|
||||
- `scripts/yao_cli_parser.py`: CLI argparse command surface, flags, choices, and command handler binding.
|
||||
- `scripts/yao_cli_operator_commands.py`: read-only operator diagnostics for active install status, localized homepage sync, and PR review reports. Keep install checks non-mutating, docs sync explicit, and PR review free of merge/write actions.
|
||||
- `scripts/yao_cli_parser_operator.py`: argparse surface for operator UX commands. Keep command names stable and route all behavior into `yao_cli_operator_commands.py`.
|
||||
- `scripts/yao_cli_telemetry.py`: opt-in metadata-only CLI run telemetry. Keep it free of prompt, argument, output, transcript, note, or message capture.
|
||||
- `scripts/import_telemetry_events.py`: external telemetry importer. Validate the whole input before appending events, and keep raw prompt/output/transcript/message/note fields blocked.
|
||||
- `scripts/emit_telemetry_event.py`: external client telemetry emitter. It may append one normalized metadata event to a local spool, but must never accept or write raw prompt, output, transcript, message, note, argument, or private content.
|
||||
- `scripts/render_telemetry_hook_recipes.py`: client hook recipe report. Keep recipes metadata-only, mark native auto-capture as unclaimed unless a real client integration exists, and preserve dry-run commands for Browser/Chrome/IDE/wrapper adapters.
|
||||
- `scripts/telemetry_native_host.py`: Browser/Chrome Native Messaging telemetry bridge. Preserve length-prefixed stdio behavior, raw-content blocking, and launcher/manifest generation tests.
|
||||
|
||||
New helper modules that are imported by CLI/report scripts but are not standalone commands must declare:
|
||||
|
||||
|
||||
@@ -1,8 +1,12 @@
|
||||
PYTHON ?= python3
|
||||
REQUIRED_PYTHON_VERSION ?= 3.11
|
||||
LOCAL_SKILL_INSTALL_DIR ?= $(HOME)/.agents/skills.disabled/yao-meta-skill
|
||||
ACTIVE_SKILL_INSTALL_DIR ?= $(HOME)/.agents/skills/yao-meta-skill
|
||||
|
||||
.PHONY: eval eval-suite route-scorecard route-confusion-check description-optimization judge-blind-eval description-optimization-check promotion-check yao-cli-check skill-overview-check skill-report-metrics-check skill-report-charts-check skill-ir-check compiler-check output-eval-check output-execution-check output-review-adjudication-check runtime-conformance-check runtime-permission-check trust-check skill-atlas-check registry-audit-check package-verify-check install-simulation-check upgrade-check review-viewer-check review-studio-check feedback-check adoption-drift-check review-waivers-check review-annotations-check baseline-compare-check reference-scan-check github-benchmark-scan-check intent-confidence-check reference-synthesis-check output-risk-profile-check artifact-design-profile-check prompt-quality-profile-check system-model-check iteration-directions-check description-drift-history iteration-ledger results-panel regression-history context-reports portability-report portability-check failure-regression-check package-check package-failure-check security-boundary-check local-install-sync-check snapshot-check validate lint governance-check resource-boundary-check quality-check sync-local-install sync-active-install test ci-test clean
|
||||
.PHONY: python-version-check eval eval-suite route-scorecard route-confusion-check description-optimization judge-blind-eval description-optimization-check promotion-check python-compat-check architecture-maintainability-check yao-cli-check yao-cli-world-class-check operator-ux-check skill-overview-check skill-interpretation-check skill-report-metrics-check skill-report-charts-check html-rendering-check skill-ir-check compiler-check output-eval-check output-execution-check output-review-kit-check output-review-adjudication-check runtime-conformance-check runtime-permission-check trust-check skill-atlas-check registry-audit-check package-verify-check install-simulation-check upgrade-check review-viewer-check review-studio-check skill-os2-audit-check skill-os2-coverage-check world-class-evidence-check world-class-ledger-check world-class-intake-check world-class-submission-kit-check world-class-preflight-check world-class-submission-review-check world-class-runbook-check world-class-claim-guard-check benchmark-reproducibility-check evidence-consistency-check feedback-check adaptation-safety-check skillops-opportunity-check daily-skillops-check weekly-curator-check adoption-drift-check telemetry-import-check telemetry-emit-check telemetry-hooks-check telemetry-native-host-check review-waivers-check review-annotations-check baseline-compare-check reference-scan-check github-benchmark-scan-check intent-confidence-check reference-synthesis-check output-risk-profile-check artifact-design-profile-check prompt-quality-profile-check system-model-check iteration-directions-check description-drift-history iteration-ledger results-panel regression-history context-reports portability-report portability-check failure-regression-check package-check package-failure-check security-boundary-check local-install-sync-check snapshot-check validate lint governance-check resource-boundary-check quality-check sync-local-install sync-active-install test ci-test clean
|
||||
|
||||
python-version-check:
|
||||
@$(PYTHON) -c 'import sys; required=tuple(map(int, "$(REQUIRED_PYTHON_VERSION)".split("."))); actual=sys.version_info[:2]; raise SystemExit(0 if actual >= required else "Python {}.{}+ is required; {}.{} is active. Set PYTHON=/path/to/python{} or create a Python {} virtualenv.".format(*required, *actual, "$(REQUIRED_PYTHON_VERSION)", "$(REQUIRED_PYTHON_VERSION)"))'
|
||||
|
||||
eval:
|
||||
$(PYTHON) scripts/trigger_eval.py --description-file evals/improved_description.txt --cases evals/trigger_cases.json --baseline-description-file evals/baseline_description.txt
|
||||
@@ -28,20 +32,39 @@ description-optimization-check:
|
||||
promotion-check:
|
||||
$(PYTHON) tests/verify_promotion_checker.py
|
||||
|
||||
python-compat-check:
|
||||
$(PYTHON) tests/verify_python_compat_check.py
|
||||
|
||||
architecture-maintainability-check:
|
||||
$(PYTHON) tests/verify_architecture_maintainability.py
|
||||
|
||||
yao-cli-check:
|
||||
$(PYTHON) tests/verify_yao_cli.py
|
||||
|
||||
yao-cli-world-class-check:
|
||||
$(PYTHON) tests/verify_yao_cli_world_class.py
|
||||
|
||||
operator-ux-check:
|
||||
$(PYTHON) tests/verify_operator_ux.py
|
||||
|
||||
skill-overview-check:
|
||||
$(PYTHON) tests/verify_skill_overview.py
|
||||
|
||||
skill-interpretation-check:
|
||||
$(PYTHON) tests/verify_skill_interpretation.py
|
||||
|
||||
skill-report-metrics-check:
|
||||
$(PYTHON) tests/verify_skill_report_metrics.py
|
||||
|
||||
skill-report-charts-check:
|
||||
$(PYTHON) tests/verify_skill_report_charts.py
|
||||
|
||||
html-rendering-check:
|
||||
$(PYTHON) tests/verify_html_rendering.py
|
||||
|
||||
skill-ir-check:
|
||||
$(PYTHON) tests/verify_skill_ir.py
|
||||
$(PYTHON) tests/verify_skill_ir_paths.py
|
||||
|
||||
compiler-check:
|
||||
$(PYTHON) tests/verify_compile_skill.py
|
||||
@@ -52,6 +75,9 @@ output-eval-check:
|
||||
output-execution-check:
|
||||
$(PYTHON) tests/verify_output_execution_runs.py
|
||||
|
||||
output-review-kit-check:
|
||||
$(PYTHON) tests/verify_output_review_kit.py
|
||||
|
||||
output-review-adjudication-check:
|
||||
$(PYTHON) tests/verify_output_review_adjudication.py
|
||||
|
||||
@@ -85,12 +111,72 @@ review-viewer-check:
|
||||
review-studio-check:
|
||||
$(PYTHON) tests/verify_review_studio.py
|
||||
|
||||
skill-os2-audit-check:
|
||||
$(PYTHON) tests/verify_skill_os2_audit.py
|
||||
|
||||
skill-os2-coverage-check:
|
||||
$(PYTHON) tests/verify_skill_os2_coverage.py
|
||||
|
||||
world-class-evidence-check:
|
||||
$(PYTHON) tests/verify_world_class_evidence_plan.py
|
||||
|
||||
world-class-ledger-check:
|
||||
$(PYTHON) tests/verify_world_class_evidence_ledger.py
|
||||
|
||||
world-class-intake-check:
|
||||
$(PYTHON) tests/verify_world_class_evidence_intake.py
|
||||
|
||||
world-class-submission-kit-check:
|
||||
$(PYTHON) tests/verify_world_class_submission_kit.py
|
||||
|
||||
world-class-preflight-check:
|
||||
$(PYTHON) tests/verify_world_class_preflight.py
|
||||
|
||||
world-class-submission-review-check:
|
||||
$(PYTHON) tests/verify_world_class_submission_review.py
|
||||
|
||||
world-class-runbook-check:
|
||||
$(PYTHON) tests/verify_world_class_operator_runbook.py
|
||||
|
||||
world-class-claim-guard-check:
|
||||
$(PYTHON) tests/verify_world_class_claim_guard.py
|
||||
|
||||
benchmark-reproducibility-check:
|
||||
$(PYTHON) tests/verify_benchmark_reproducibility.py
|
||||
|
||||
evidence-consistency-check:
|
||||
$(PYTHON) tests/verify_evidence_consistency.py
|
||||
|
||||
feedback-check:
|
||||
$(PYTHON) tests/verify_feedback.py
|
||||
|
||||
adaptation-safety-check:
|
||||
$(PYTHON) tests/verify_adaptation_safety.py
|
||||
|
||||
skillops-opportunity-check:
|
||||
$(PYTHON) tests/verify_skillops_opportunity.py
|
||||
|
||||
daily-skillops-check:
|
||||
$(PYTHON) tests/verify_daily_skillops.py
|
||||
|
||||
weekly-curator-check:
|
||||
$(PYTHON) tests/verify_weekly_curator.py
|
||||
|
||||
adoption-drift-check:
|
||||
$(PYTHON) tests/verify_adoption_drift.py
|
||||
|
||||
telemetry-import-check:
|
||||
$(PYTHON) tests/verify_telemetry_import.py
|
||||
|
||||
telemetry-emit-check:
|
||||
$(PYTHON) tests/verify_telemetry_emit.py
|
||||
|
||||
telemetry-hooks-check:
|
||||
$(PYTHON) tests/verify_telemetry_hooks.py
|
||||
|
||||
telemetry-native-host-check:
|
||||
$(PYTHON) tests/verify_telemetry_native_host.py
|
||||
|
||||
review-waivers-check:
|
||||
$(PYTHON) tests/verify_review_waivers.py
|
||||
|
||||
@@ -152,7 +238,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
|
||||
@@ -181,17 +267,17 @@ resource-boundary-check:
|
||||
quality-check:
|
||||
$(PYTHON) tests/verify_quality_checks.py
|
||||
|
||||
sync-local-install:
|
||||
sync-local-install: package-check
|
||||
$(PYTHON) scripts/sync_local_install.py --install-dir "$(LOCAL_SKILL_INSTALL_DIR)"
|
||||
|
||||
sync-active-install:
|
||||
sync-active-install: package-check
|
||||
$(PYTHON) scripts/sync_local_install.py --install-dir "$(ACTIVE_SKILL_INSTALL_DIR)"
|
||||
|
||||
test: eval eval-suite route-scorecard route-confusion-check description-optimization description-optimization-check promotion-check yao-cli-check skill-overview-check skill-report-metrics-check skill-report-charts-check skill-ir-check compiler-check output-eval-check output-execution-check output-review-adjudication-check runtime-conformance-check runtime-permission-check trust-check skill-atlas-check registry-audit-check package-verify-check install-simulation-check upgrade-check review-viewer-check review-studio-check feedback-check adoption-drift-check review-waivers-check review-annotations-check baseline-compare-check reference-scan-check github-benchmark-scan-check intent-confidence-check reference-synthesis-check output-risk-profile-check artifact-design-profile-check prompt-quality-profile-check system-model-check iteration-directions-check description-drift-history iteration-ledger regression-history context-reports portability-report portability-check failure-regression-check package-check package-failure-check security-boundary-check local-install-sync-check snapshot-check validate lint governance-check resource-boundary-check quality-check
|
||||
test: python-version-check eval eval-suite route-scorecard route-confusion-check description-optimization description-optimization-check promotion-check python-compat-check architecture-maintainability-check yao-cli-check operator-ux-check skill-overview-check skill-interpretation-check skill-report-metrics-check skill-report-charts-check html-rendering-check skill-ir-check compiler-check output-eval-check output-execution-check output-review-adjudication-check runtime-conformance-check runtime-permission-check trust-check skill-atlas-check registry-audit-check package-verify-check install-simulation-check upgrade-check review-viewer-check review-studio-check skill-os2-audit-check skill-os2-coverage-check world-class-evidence-check world-class-ledger-check world-class-intake-check world-class-submission-kit-check world-class-preflight-check world-class-submission-review-check world-class-runbook-check world-class-claim-guard-check benchmark-reproducibility-check evidence-consistency-check feedback-check adaptation-safety-check skillops-opportunity-check daily-skillops-check weekly-curator-check adoption-drift-check telemetry-import-check telemetry-emit-check telemetry-hooks-check telemetry-native-host-check review-waivers-check review-annotations-check baseline-compare-check reference-scan-check github-benchmark-scan-check intent-confidence-check reference-synthesis-check output-risk-profile-check artifact-design-profile-check prompt-quality-profile-check system-model-check iteration-directions-check description-drift-history iteration-ledger regression-history context-reports portability-report portability-check failure-regression-check package-check package-failure-check security-boundary-check local-install-sync-check snapshot-check validate lint governance-check resource-boundary-check quality-check
|
||||
|
||||
ci-test:
|
||||
ci-test: python-version-check
|
||||
$(PYTHON) scripts/ci_test.py
|
||||
|
||||
clean:
|
||||
rm -rf dist tests/tmp tests/tmp_snapshot tests/tmp_cli tests/tmp_skill_overview tests/tmp_skill_report_metrics tests/tmp_skill_report_charts tests/tmp_skill_ir tests/tmp_compile_skill tests/tmp_output_eval tests/tmp_output_execution tests/tmp_output_review_adjudication tests/tmp_conformance tests/tmp_runtime_permission tests/tmp_trust tests/tmp_skill_atlas tests/tmp_registry tests/tmp_package_verification tests/tmp_install_simulation tests/tmp_upgrade_check tests/tmp_reference_scan tests/tmp_iteration_directions tests/tmp_review_viewer tests/tmp_review_studio tests/tmp_feedback tests/tmp_adoption_drift tests/tmp_review_waivers tests/tmp_review_annotations tests/tmp_github_benchmark_scan tests/tmp_intent_confidence tests/tmp_reference_synthesis tests/tmp_output_risk_profile tests/tmp_artifact_design_profile tests/tmp_prompt_quality_profile tests/tmp_system_model tests/tmp_security tests/tmp_baseline_compare.json tests/tmp_baseline_compare.md
|
||||
rm -rf dist tests/tmp tests/tmp_snapshot tests/tmp_cli tests/tmp_operator_ux tests/tmp_python_compat tests/tmp_architecture_maintainability tests/tmp_skill_overview tests/tmp_skill_interpretation tests/tmp_skill_report_metrics tests/tmp_skill_report_charts tests/tmp_skill_ir tests/tmp_compile_skill tests/tmp_output_eval tests/tmp_output_execution tests/tmp_output_review_adjudication tests/tmp_conformance tests/tmp_runtime_permission tests/tmp_trust tests/tmp_skill_atlas tests/tmp_registry tests/tmp_package_verification tests/tmp_install_simulation tests/tmp_upgrade_check tests/tmp_reference_scan tests/tmp_iteration_directions tests/tmp_review_viewer tests/tmp_review_studio tests/tmp_skill_os2_audit tests/tmp_skill_os2_coverage tests/tmp_world_class_evidence tests/tmp_world_class_evidence_ledger tests/tmp_world_class_evidence_intake tests/tmp_world_class_submission_review tests/tmp_world_class_operator_runbook tests/tmp_world_class_claim_guard tests/tmp_benchmark_reproducibility tests/tmp_evidence_consistency tests/tmp_feedback tests/tmp_daily_skillops tests/tmp_weekly_curator tests/tmp_adoption_drift tests/tmp_telemetry_import tests/tmp_telemetry_emit tests/tmp_telemetry_hooks tests/tmp_telemetry_native_host tests/tmp_review_waivers tests/tmp_review_annotations tests/tmp_github_benchmark_scan tests/tmp_intent_confidence tests/tmp_reference_synthesis tests/tmp_output_risk_profile tests/tmp_artifact_design_profile tests/tmp_prompt_quality_profile tests/tmp_system_model tests/tmp_security tests/tmp_baseline_compare.json tests/tmp_baseline_compare.md
|
||||
find . -type d -name __pycache__ -prune -exec rm -rf {} +
|
||||
|
||||
@@ -10,9 +10,64 @@
|
||||
|
||||
`YAO` stands for `Yielding AI Outcomes` — the goal is not to generate more prompt text, but to produce reusable AI assets and real operational outcomes.
|
||||
|
||||
`yao-meta-skill` is a lightweight but rigorous system for creating, evaluating, packaging, and governing reusable agent skills.
|
||||
`yao-meta-skill` creates, evaluates, packages, and governs reusable agent skills. The 1.0 line focused on turning repeated workflows into installable, readable, cross-platform skill packages. The 2.0 line expands that factory into a Skill OS: a governed system for modeling a skill once, compiling it for multiple targets, testing its behavior, reviewing its release evidence, and tracking the next iteration.
|
||||
|
||||
[Quick Start](#quick-start) · [Examples](examples/README.md) · [Evals](evals/README.md) · [Failure Library](failures/README.md) · [Method Doctrine](#method-doctrine)
|
||||
[Quick Start](#quick-start) · [Skill OS 2.0](#skill-os-20-upgrade) · [1.0 vs 2.0](#from-10-to-20) · [Operator UX](#operator-ux-commands) · [Benchmark](#weighted-quality-benchmark) · [Examples](examples/README.md) · [Evals](evals/README.md) · [Failure Library](failures/README.md) · [Method Doctrine](#method-doctrine)
|
||||
|
||||
## Skill OS 2.0 Upgrade
|
||||
|
||||
Skill OS 2.0 keeps the original promise of `yao-meta-skill`, but makes the package lifecycle more explicit. Instead of stopping at `SKILL.md`, it adds a semantic contract, target compilers, evaluation evidence, release gates, and operation reports around the skill.
|
||||
|
||||
- **Skill IR**: a platform-neutral intermediate representation for intent, triggers, inputs, outputs, boundaries, references, and expected artifacts.
|
||||
- **Target compilers and adapters**: generated surfaces for OpenAI, Claude, generic agent skills, Agent Skills compatible packages, and VS Code-oriented workflows.
|
||||
- **Output Eval Lab**: trigger checks, output assertions, execution evidence, timing and token evidence, benchmark reproducibility, blind-review packs, answer keys, and adjudication reports.
|
||||
- **Review Studio 2.0**: a single HTML gate page for intent, triggers, output eval, context cost, runtime checks, trust, Skill Atlas signals, adoption drift, waivers, annotations, release evidence, warnings, blockers, and fix actions.
|
||||
- **Evidence and release governance**: evidence consistency checks, package verification, install simulation, runtime permission probes, world-class evidence intake, world-class ledger, operator runbook, and public claim guard.
|
||||
- **SkillOps loop**: metadata-only adoption drift, telemetry hooks, adaptive proposals, daily and weekly curator reports, and portfolio-level drift signals.
|
||||
|
||||
Current posture: the repository is ready for beta and external testing, while stronger public "world-class" claims remain evidence-gated. Provider-backed production evidence, human blind-review evidence, native permission execution, and real-client telemetry are tracked as separate evidence tasks instead of being treated as completed work.
|
||||
|
||||
See the companion artifacts:
|
||||
|
||||
- [Visual 1.0 vs 2.0 comparison report](.previews/yao-meta-skill-2-comparison/index.html)
|
||||
- [Chinese desktop preview](.previews/yao-meta-skill-2-comparison/yao-meta-skill-1-vs-2.png)
|
||||
- [English desktop preview](.previews/yao-meta-skill-2-comparison/yao-meta-skill-1-vs-2-en.png)
|
||||
|
||||
## From 1.0 to 2.0
|
||||
|
||||
| Dimension | 1.0 focus | 2.0 upgrade |
|
||||
| --- | --- | --- |
|
||||
| Product role | Create, refactor, evaluate, and package reusable skills. | Govern the full lifecycle of a skill: creation, compilation, evaluation, review, release, telemetry, and iteration. |
|
||||
| Architecture | `SKILL.md`, `agents/interface.yaml`, manifest files, and report artifacts. | Skill IR, target compilers, adapters, gate contracts, evidence ledgers, release locks, and action-oriented review pages. |
|
||||
| Cross-platform delivery | OpenAI, Claude, and generic package targets. | Adds broader Agent Skills and VS Code-oriented compatibility, with registry-readable compatibility records. |
|
||||
| Quality model | Trigger and structure checks plus report-based review. | Output eval, benchmark reproducibility, execution evidence, failure disclosure, blind-review packs, and evidence consistency checks. |
|
||||
| Report experience | Overview HTML and first-pass review pages. | Bilingual Skill Overview v2, Review Studio 2.0, reviewer annotations, action cards, charts, and audit-oriented report contracts. |
|
||||
| Release boundary | Package output with basic validation. | Package verification, install simulation, runtime permission probes, release locks, public claim guard, and operator runbooks. |
|
||||
| Operating loop | Manual feedback and local iteration. | Adoption drift, metadata telemetry, SkillOps reports, adaptive proposals, and portfolio-level drift detection. |
|
||||
|
||||
## 2.0 Use Cases
|
||||
|
||||
- **Create a new skill from repeated work**: start with a workflow note, prompt set, transcript, runbook, or document pattern, then generate a package with a lean entrypoint, explicit inputs and outputs, references, reports, and the lightest justified gates.
|
||||
- **Upgrade a personal skill into a team asset**: add interface contracts, manifests, target adapters, trust checks, output evals, reviewer waivers, release notes, and Review Studio evidence before other people depend on the skill.
|
||||
- **Prepare a skill for beta release**: run package verification, install simulation, compatibility checks, runtime permission probes, and evidence consistency checks, then separate beta readiness from stronger public claims.
|
||||
- **Keep a skill useful after release**: use metadata-only telemetry, adoption drift, feedback logs, SkillOps reports, and adaptive proposals to decide whether the next move should be documentation, an eval, a skill patch, or a governance update.
|
||||
- **Compare with other meta-skill approaches**: keep Anthropic/OpenAI-style conversational creation and lean instruction writing where they fit, then use `yao-meta-skill` when the package needs evidence, portability, release gates, and repeatable maintenance.
|
||||
|
||||
## Operator UX Commands
|
||||
|
||||
These read-only helper commands turn common maintainer questions into repeatable diagnostics:
|
||||
|
||||
```bash
|
||||
python3 scripts/yao.py install-status --expected-source .
|
||||
python3 scripts/yao.py localized-doc-sync-check
|
||||
python3 scripts/yao.py pr-review-report 4 --repo yaojingang/yao-meta-skill
|
||||
```
|
||||
|
||||
- `install-status` explains whether the active skill is coming from `.codex/skills`, `.agents/skills`, or the disabled mirror, and flags duplicate active installs.
|
||||
- `localized-doc-sync-check` verifies that the Chinese README carries the public homepage sections that were added to the English README.
|
||||
- `pr-review-report` reads GitHub PR metadata, changed files, status checks, and suggested local commands without merging or mutating the PR.
|
||||
|
||||
## Capability Surface
|
||||
|
||||
It turns rough workflows, transcripts, prompts, notes, and runbooks into reusable skill packages with:
|
||||
|
||||
@@ -23,15 +78,32 @@ It turns rough workflows, transcripts, prompts, notes, and runbooks into reusabl
|
||||
- a silent-by-default GitHub benchmark scan plus reference synthesis that studies top public repositories and world-class pattern tracks, then surfaces only real conflicts or uncertainty to the user
|
||||
- a generated visual HTML overview for each newly initialized skill
|
||||
- a Review Studio 2.0 HTML gate page that combines intent, trigger, output eval, context, runtime, trust, atlas, adoption drift, reviewer waivers, reviewer annotations, release evidence, and per-warning fix actions
|
||||
- a Skill OS 2.0 audit that maps each world-class requirement to current evidence, human-required gaps, and external-required gaps
|
||||
- a Skill OS 2.0 blueprint coverage report that maps the upgrade plan's core modules and recommended PRs to concrete artifacts, commands, and tests
|
||||
- a world-class evidence plan that turns remaining provider, human, native-permission, and real-client telemetry gaps into executable evidence tasks
|
||||
- a world-class evidence ledger that records which external and human evidence is accepted or still pending without treating planned work as proof
|
||||
- a world-class evidence intake contract that validates external and human evidence packets for provenance, privacy, artifact refs, and anti-overclaim rules before ledger review
|
||||
- a redacted world-class preflight report that checks local files, environment readiness, human/external prerequisites, and source blockers before operators collect evidence
|
||||
- a world-class submission review queue that compares evidence packets, intake validation, source artifacts, and ledger state without accepting evidence
|
||||
- a world-class operator runbook that gives reviewers the exact commands, artifacts, and collection checklist needed to close remaining evidence gaps
|
||||
- a world-class claim guard that scans public claim surfaces and blocks premature completed/true claims while the evidence ledger still has pending external or human evidence
|
||||
- a benchmark reproducibility manifest that checks methodology sections, required artifacts, failure disclosure, and reproduction commands
|
||||
- an evidence consistency gate that compares generated reports against each other so benchmark, overview, interpretation, adoption, world-class ledger, coverage, and Review Studio facts do not drift silently
|
||||
- Output Eval Lab evidence with assertion grading, execution/timing/token evidence, a blind A/B review pack, a separate answer key, and reviewer adjudication reports
|
||||
- a runtime permission probe report that checks packaged target adapters for explicit permission metadata, native-enforcement flags, metadata fallback notes, and residual risks
|
||||
- a Python compatibility gate that catches supported-runtime syntax hazards before they reach GitHub Actions or packaged distribution
|
||||
- a side-by-side HTML review studio for first-pass human review
|
||||
- an artifact design profile that defines visual direction, layout patterns, and quality gates for reports, tutorials, dashboards, screenshots, and review pages
|
||||
- a prompt quality profile that abstracts need modeling, RTF mapping, complexity, and quality checks into reviewer-visible evidence instead of bloating `SKILL.md`
|
||||
- a systems-thinking model that maps boundaries, feedback loops, drift risks, recurring failure patterns, and highest-leverage quality moves
|
||||
- three high-value next iteration directions after the first package is created
|
||||
- a lightweight feedback log that does not require a full promotion cycle
|
||||
- a local-first metadata-only adoption and drift report that turns real usage signals into next iteration candidates
|
||||
- a local-first metadata-only adoption and drift report that turns real usage signals into next iteration candidates, with optional `yao.py` CLI run capture, external client event emit hooks, hook recipes, and JSONL import that record command names and outcomes without arguments or raw content
|
||||
- an explicit-source adaptive proposal loop that summarizes redacted repeated user preferences and generates approval-gated adaptation proposals without scanning private logs or writing source files
|
||||
- a SkillOps opportunity scorer and decision policy that ranks redacted repeated signals, maps them to report-only, AGENTS update, existing-skill patch, or eval-addition actions, and keeps every durable write approval-gated
|
||||
- a weekly SkillOps curator report that aggregates daily opportunities, Skill Atlas portfolio signals, release lock state, and world-class evidence gaps into a proposal-only maintenance queue
|
||||
- a Browser/Chrome Native Messaging telemetry host that can receive length-prefixed metadata-only client events and generate a local launcher plus manifest without storing raw content
|
||||
- a Skill Atlas drift layer that reads aggregate adoption reports and surfaces portfolio-level drift signals without packaging raw telemetry logs
|
||||
- a baseline compare report for with-skill vs baseline review
|
||||
- a conversation-style, archetype-aware quickstart that steers new packages toward scaffold, production, library, or governed fits
|
||||
- Skill IR as the platform-neutral semantic contract, plus compiler reports and client-specific adapters
|
||||
@@ -40,23 +112,30 @@ It turns rough workflows, transcripts, prompts, notes, and runbooks into reusabl
|
||||
|
||||
## Architecture
|
||||
|
||||
Hero view: turn messy operational input into a governed, reusable skill package through one compact flow.
|
||||
Hero view: Skill OS 2.0 turns messy operational input into a governed, reusable skill package through a model, compile, evaluate, release, and operate loop.
|
||||
|
||||
```mermaid
|
||||
flowchart LR
|
||||
A["Inputs<br/>workflow / prompt / transcript / docs / notes"] --> B["Route<br/>SKILL.md"]
|
||||
B --> C["Design<br/>method + gates"]
|
||||
C --> D["Run<br/>create / validate / eval / promote"]
|
||||
D --> E["Outputs<br/>skill package + reports + adapters"]
|
||||
A["Inputs<br/>workflow / prompt / transcript / docs / notes"] --> B["Intent model<br/>job / outputs / exclusions / standards"]
|
||||
B --> C["Skill IR<br/>trigger / contracts / resources / evidence"]
|
||||
C --> D["Skill package<br/>SKILL.md / references / scripts / reports"]
|
||||
C --> E["Target compilers<br/>OpenAI / Claude / generic / Agent Skills / VS Code"]
|
||||
D --> F["Eval Lab<br/>trigger / output / benchmark / runtime"]
|
||||
E --> F
|
||||
F --> G["Review Studio<br/>gates / warnings / actions / waivers"]
|
||||
G --> H["Release boundary<br/>package verification / install simulation / claim guard"]
|
||||
H --> I["SkillOps loop<br/>feedback / adoption drift / next iteration"]
|
||||
I --> B
|
||||
```
|
||||
|
||||
Read it in 10 seconds:
|
||||
|
||||
- **Inputs**: start from rough operational material.
|
||||
- **Route**: define boundary and trigger in a lean `SKILL.md`.
|
||||
- **Design**: choose the right archetype, gates, and resource split.
|
||||
- **Run**: use the unified CLI to build, validate, optimize, and promote.
|
||||
- **Outputs**: ship a reusable skill plus evidence, governance signals, and portability artifacts.
|
||||
- **Inputs**: start from rough operational material instead of a polished spec.
|
||||
- **Intent model**: make the job, outputs, exclusions, constraints, and standards explicit before generating files.
|
||||
- **Skill IR**: keep the semantic contract separate from any single platform format.
|
||||
- **Package and compile**: generate the lean skill package and the target-specific adapters from the same source model.
|
||||
- **Evaluate and review**: turn trigger behavior, output quality, runtime checks, and trust signals into reviewable evidence.
|
||||
- **Release and operate**: publish only within the current evidence boundary, then feed adoption drift and reviewer feedback into the next iteration.
|
||||
|
||||
## Weighted Quality Benchmark
|
||||
|
||||
@@ -89,7 +168,7 @@ Weighted score formula: `sum(score / 10 * weight)`.
|
||||
2. Start with a short, human intent dialogue so the real job, outputs, exclusions, constraints, and standards are explicit.
|
||||
3. Let `quickstart` clarify intent first, then run silent benchmark scan and reference synthesis; it only surfaces explicit questions when intent is still unclear or when there is a real design conflict.
|
||||
4. Use the archetype-aware `quickstart` or the full authoring flow to generate or improve the package in scaffold, production, library, or governed mode.
|
||||
5. Review the generated `reports/skill-overview.html` first for the bilingual HTML skill report. It defaults to Simplified Chinese and provides an English switch in the top right. Then open `reports/review-studio.html` to inspect release blockers, permission approvals, and evidence paths in one page before adding more structure.
|
||||
5. Review the generated `reports/skill-interpretation.html` first for the bilingual interpretation report. It defaults to Simplified Chinese and provides an English switch in the top right. Then open `reports/skill-overview.html` for the audit scorecard and `reports/review-studio.html` to inspect release blockers, permission approvals, and evidence paths in one page before adding more structure.
|
||||
|
||||
Or use the unified authoring CLI:
|
||||
|
||||
@@ -100,38 +179,78 @@ python3 scripts/yao.py reference-scan my-skill \
|
||||
--external-reference "World Class Method::method::Borrow a tight evaluation loop.::Do not copy heavy process." \
|
||||
--user-reference "A product or repo I admire::taste::Learn the clarity and operating standard.::Do not copy wording." \
|
||||
--local-constraint "Current Library Naming::structure::Keep naming aligned with the local skill library.::Do not inherit private references."
|
||||
python3 scripts/yao.py skill-interpretation my-skill
|
||||
python3 scripts/yao.py review-viewer my-skill
|
||||
python3 scripts/yao.py review-studio my-skill
|
||||
python3 scripts/yao.py artifact-design-profile my-skill
|
||||
python3 scripts/yao.py prompt-quality-profile my-skill
|
||||
python3 scripts/yao.py system-model my-skill
|
||||
python3 scripts/yao.py feedback my-skill --note "Tighten exclusions before adding scripts." --rating 4 --category boundary
|
||||
python3 scripts/yao.py adapt-scan my-skill --source ./curated-user-signals.jsonl
|
||||
python3 scripts/yao.py adapt-propose my-skill
|
||||
python3 scripts/yao.py daily-skillops my-skill --source ./curated-user-signals.jsonl
|
||||
python3 scripts/yao.py weekly-curator my-skill
|
||||
python3 scripts/yao.py adoption-drift my-skill --record-event skill_activation --activation-type explicit --outcome accepted
|
||||
YAO_CLI_TELEMETRY=1 python3 scripts/yao.py validate my-skill
|
||||
python3 scripts/yao.py telemetry-emit my-skill --event skill_activation --activation-type explicit --outcome accepted --command browser-extension
|
||||
python3 scripts/yao.py telemetry-hooks my-skill
|
||||
python3 scripts/telemetry_native_host.py my-skill --write-launcher /tmp/yao-telemetry-host.sh --write-manifest /tmp/yao-telemetry-host.json --allowed-origin chrome-extension://aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/
|
||||
python3 scripts/yao.py telemetry-import my-skill --input-jsonl /tmp/external-client-events.jsonl --command browser-extension
|
||||
python3 scripts/yao.py review-waivers my-skill --add-waiver --gate-key trust-report --reviewer "Yao Team" --reason "Known warning accepted for this release with bounded follow-up." --expires-at 2026-09-30
|
||||
python3 scripts/yao.py review-waivers my-skill --add-waiver --gate-key permission-gates --reviewer "Yao Team" --reason "Permission warning accepted only for this non-governed release window." --expires-at 2026-09-30
|
||||
python3 scripts/yao.py review-annotations my-skill --add-annotation --gate-key output-lab --target-path reports/output_quality_scorecard.md --line 1 --body "Clarify recorded fixture vs model-executed evidence before release."
|
||||
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
|
||||
python3 scripts/yao.py output-review
|
||||
python3 scripts/yao.py conformance .
|
||||
python3 scripts/yao.py trust .
|
||||
python3 scripts/yao.py python-compat .
|
||||
python3 scripts/yao.py runtime-permissions . --package-dir dist
|
||||
python3 scripts/yao.py skill-atlas --workspace-root .
|
||||
python3 scripts/yao.py registry-audit .
|
||||
python3 scripts/yao.py package-verify . --package-dir dist --require-zip
|
||||
python3 scripts/yao.py install-simulate . --package-dir dist
|
||||
python3 scripts/yao.py upgrade-check . --previous-package-json registry/examples/yao-meta-skill-1.0.0.json
|
||||
python3 scripts/yao.py world-class-evidence .
|
||||
SUBMISSIONS_DIR="${SUBMISSIONS_DIR:-evidence/world_class/submissions}"
|
||||
python3 scripts/yao.py world-class-preflight . --submissions-dir "$SUBMISSIONS_DIR"
|
||||
python3 scripts/yao.py world-class-submission-kit . --output-dir "$SUBMISSIONS_DIR"
|
||||
# Alternative: prefill artifact SHA-256 digests while keeping drafts template-only.
|
||||
python3 scripts/yao.py world-class-submission-kit . --output-dir "$SUBMISSIONS_DIR" --prefill-artifacts
|
||||
python3 scripts/yao.py world-class-intake . --submissions-dir "$SUBMISSIONS_DIR"
|
||||
python3 scripts/yao.py world-class-submission-review . --submissions-dir "$SUBMISSIONS_DIR"
|
||||
python3 scripts/yao.py world-class-ledger . --submissions-dir "$SUBMISSIONS_DIR"
|
||||
python3 scripts/yao.py world-class-runbook . --submissions-dir "$SUBMISSIONS_DIR"
|
||||
python3 scripts/yao.py world-class-claim-guard .
|
||||
python3 scripts/yao.py benchmark-reproducibility .
|
||||
python3 scripts/yao.py evidence-consistency .
|
||||
```
|
||||
|
||||
## Local Development Source
|
||||
|
||||
Development source: this repository is the source of truth for authoring and review.
|
||||
|
||||
Use Python 3.11 or newer for local development. GitHub Actions runs the test suite on Python 3.11, and the Makefile checks the active interpreter before running `make test` or `make ci-test`.
|
||||
|
||||
```bash
|
||||
python3.11 -m venv .venv
|
||||
source .venv/bin/activate
|
||||
python -m pip install --upgrade pip
|
||||
python -m pip install --requirement requirements-ci.txt
|
||||
make ci-test
|
||||
```
|
||||
|
||||
If `python3` points to an older system interpreter, pass the interpreter explicitly:
|
||||
|
||||
```bash
|
||||
make PYTHON=python3.11 ci-test
|
||||
```
|
||||
|
||||
Disabled mirror: `~/.agents/skills.disabled/yao-meta-skill` is the local backup mirror for this source. Keeping the mirror outside `~/.agents/skills` prevents Codex from showing a duplicate `Yao Meta Skill` while this repository is also visible in the active workspace.
|
||||
|
||||
Sync the current source into the disabled mirror:
|
||||
@@ -140,7 +259,7 @@ Sync the current source into the disabled mirror:
|
||||
make sync-local-install
|
||||
```
|
||||
|
||||
The sync command copies Git-tracked files plus new source files in code and guidance directories such as `scripts/`, `tests/`, `references/`, and `docs/`. It skips untracked business-skill folders and untracked private reports by default, so local experiments do not leak into the mirror.
|
||||
The sync command first rebuilds the package and runs install preflight against `dist/yao-meta-skill.zip`. It refuses to sync when package extraction, adapter readability, or installer permission enforcement fails. After the preflight passes, it copies Git-tracked files plus new source files in code and guidance directories such as `scripts/`, `tests/`, `references/`, and `docs/`. It skips untracked business-skill folders and untracked private reports by default, so local experiments do not leak into the mirror.
|
||||
|
||||
Restore an active global Codex install only when you intentionally want this skill discoverable outside the development workspace:
|
||||
|
||||
@@ -177,7 +296,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 +318,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 +366,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)
|
||||
<!-- END:EVAL_RESULTS -->
|
||||
|
||||
- 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,8 +377,8 @@ 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`
|
||||
- quality density: root `131.7`, complex benchmark `164.6`, governed benchmark `171.1`
|
||||
- context budgets: root `944/1000`, complex benchmark `790/1000`, governed benchmark `760/1000`
|
||||
- quality density: root `137.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)
|
||||
- route confusion is tracked in [reports/route_scorecard.md](reports/route_scorecard.md)
|
||||
@@ -269,8 +388,18 @@ Full reports: [reports/eval_suite.json](reports/eval_suite.json) and [reports/fa
|
||||
- lightweight with-skill vs baseline comparison is published in [reports/baseline-compare.md](reports/baseline-compare.md)
|
||||
- Review Studio 2.0 gate evidence is published in [reports/review-studio.html](reports/review-studio.html)
|
||||
- Review Studio fix actions are embedded in [reports/review-studio.json](reports/review-studio.json)
|
||||
- Skill OS 2.0 blueprint coverage is published in [reports/skill_os2_coverage.md](reports/skill_os2_coverage.md)
|
||||
- reviewer waiver evidence is published in [reports/review_waivers.md](reports/review_waivers.md)
|
||||
- remaining world-class evidence tasks are published in [reports/world_class_evidence_plan.md](reports/world_class_evidence_plan.md)
|
||||
- current world-class evidence acceptance state is published in [reports/world_class_evidence_ledger.md](reports/world_class_evidence_ledger.md)
|
||||
- world-class evidence intake readiness is published in [reports/world_class_evidence_intake.md](reports/world_class_evidence_intake.md)
|
||||
- world-class submission review queue is published in [reports/world_class_submission_review.md](reports/world_class_submission_review.md)
|
||||
- world-class operator runbook is published in [reports/world_class_operator_runbook.md](reports/world_class_operator_runbook.md) and [reports/world_class_operator_runbook.html](reports/world_class_operator_runbook.html)
|
||||
- world-class public claim guard status is published in [reports/world_class_claim_guard.md](reports/world_class_claim_guard.md)
|
||||
- benchmark reproducibility evidence is published in [reports/benchmark_reproducibility.md](reports/benchmark_reproducibility.md)
|
||||
- cross-report evidence consistency is published in [reports/evidence_consistency.md](reports/evidence_consistency.md)
|
||||
- target compiler evidence is published in [reports/compiled_targets.md](reports/compiled_targets.md)
|
||||
- Python runtime compatibility evidence is published in [reports/python_compatibility.md](reports/python_compatibility.md)
|
||||
- registry package metadata and audit status are published in [reports/registry_audit.md](reports/registry_audit.md)
|
||||
- package archive verification is published in [reports/package_verification.md](reports/package_verification.md)
|
||||
- temporary local install simulation is published in [reports/install_simulation.md](reports/install_simulation.md)
|
||||
@@ -385,7 +514,7 @@ Utility scripts that make the meta-skill operational:
|
||||
- `run_description_optimization_suite.py`: runs description optimization across the root skill and governed examples, then writes reusable reports and optional drift snapshots with calibration and family summaries
|
||||
- `promotion_checker.py`: applies promotion policy to current description candidates, writes promotion decisions, builds candidate registries, and emits iteration bundles with review stubs
|
||||
- `create_iteration_snapshot.py`: freezes the current promotion decision into a versioned release snapshot with review, route, and context evidence
|
||||
- `yao.py`: unified authoring CLI that exposes init, validate, optimize-description, promote-check, review, release-snapshot, workspace-flow, report, skill-ir, compile-skill, output-exec, output-review, package, registry-audit, package-verify, install-simulate, upgrade-check, review-waivers, and test as one entrypoint
|
||||
- `yao.py`: unified authoring CLI that exposes init, validate, optimize-description, promote-check, python-compat, review, release-snapshot, workspace-flow, report, skill-report, skill-interpretation, skill-ir, compile-skill, output-exec, output-review, skill-os2-audit, skill-os2-coverage, world-class-evidence, world-class-ledger, world-class-intake, world-class-preflight, world-class-submission-kit, world-class-submission-review, world-class-runbook, world-class-claim-guard, benchmark-reproducibility, evidence-consistency, adapt-scan, adapt-propose, adapt-apply, daily-skillops, weekly-curator, telemetry-emit, telemetry-hooks, telemetry-import, package, registry-audit, package-verify, install-simulate, upgrade-check, review-waivers, and test as one entrypoint
|
||||
- `render_description_drift_history.py`: turns description-optimization snapshots into a readable drift-history report
|
||||
- `build_confusion_matrix.py`: scores route confusion across tracked sibling skills and `no_route` cases, then writes a route scorecard and optional milestone snapshot
|
||||
- `render_iteration_ledger.py`: compresses regression milestones, description optimization drift, and route scorecards into one iteration-facing ledger
|
||||
@@ -394,9 +523,25 @@ Utility scripts that make the meta-skill operational:
|
||||
- `governance_check.py`: validates owner, review cadence, lifecycle stage, and maturity metadata
|
||||
- `render_context_reports.py`: generates root and example context-budget reports plus a shared context summary
|
||||
- `render_regression_history.py`: turns milestone snapshots into a readable regression history report
|
||||
- `render_skill_os2_audit.py`: renders a requirement-by-requirement Skill OS 2.0 audit that separates landed local evidence from human-required and external-required gaps
|
||||
- `render_skill_os2_coverage.py`: maps the Skill OS 2.0 upgrade blueprint to local artifacts, commands, tests, and remaining evidence boundaries
|
||||
- `render_daily_skillops_report.py`: renders an explicit-source Daily SkillOps operations report that summarizes redacted user patterns, proposal-only adaptations, approval state, release evidence, and world-class evidence gaps without scanning private logs or applying patches
|
||||
- `render_weekly_curator_report.py`: renders a weekly SkillOps curator report from generated daily reports, Skill Atlas, benchmark lock, evidence consistency, and world-class ledger state without scanning private logs or applying patches
|
||||
- `skillops_opportunity.py`: scores redacted SkillOps opportunities and maps them to approval-gated action types such as report-only, AGENTS update, existing-skill patch, or eval addition
|
||||
- `render_world_class_evidence_plan.py`: renders executable evidence tasks for remaining world-class gaps without treating planned external work as completed evidence
|
||||
- `render_world_class_evidence_ledger.py`: renders a machine-checkable ledger for current world-class evidence acceptance, anti-overclaim guards, provenance requirements, and privacy contracts
|
||||
- `render_world_class_evidence_intake.py`: validates world-class external and human evidence packets against provenance, privacy, artifact, and anti-overclaim requirements before ledger review
|
||||
- `render_world_class_preflight.py`: renders redacted collection preflight checks for pending provider, human, native-permission, and native-client evidence without accepting evidence
|
||||
- `render_world_class_submission_review.py`: renders a read-only queue that compares submissions, intake validation, source evidence, and ledger state without accepting evidence
|
||||
- `render_world_class_operator_runbook.py`: renders an operator-facing checklist and command map for collecting pending world-class evidence without accepting evidence
|
||||
- `render_world_class_claim_guard.py`: scans README, docs, and reports for premature world-class completion claims while accepted evidence is still pending
|
||||
- `render_benchmark_reproducibility.py`: renders methodology, artifact, failure-disclosure, and reproduction-command evidence for public benchmark claims
|
||||
- `render_evidence_consistency.py`: compares generated report facts across benchmark reproducibility, overview, interpretation, adoption drift, world-class ledger, coverage, and Review Studio artifacts
|
||||
- `python_compat_check.py`: checks Python source for supported-runtime compatibility hazards such as Python 3.11 f-string expression backslashes
|
||||
- `cross_packager.py`: builds client-specific export artifacts from Skill IR plus neutral metadata, with explicit platform contracts and validation
|
||||
- `render_portability_report.py`: scores cross-environment portability from neutral metadata, degradation rules, and consumer validation coverage
|
||||
- `render_skill_overview.py`: generates the white-background bilingual HTML skill audit report with sticky four-character Chinese navigation, top-right language switch, v2 scorecard, inline SVG charts, contract boundary, quality review, risk governance, assets, and iteration roadmap
|
||||
- `render_skill_interpretation.py`: renders `reports/skill-interpretation.html/json` as the first-class post-creation interpretation report while reusing the Skill Overview v2 model and Kami white layout
|
||||
- `export_skill_ir.py`: exports the 2.0 platform-neutral Skill IR contract from `SKILL.md`, manifest, interface metadata, evals, resources, and reports
|
||||
- `compile_skill.py`: compiles Skill IR into target-specific semantic contracts, generated-file maps, adapter modes, target-native behavior contracts, preserved semantics, warnings, and unsupported-feature notes
|
||||
- `run_output_eval.py`: runs the Output Eval Lab v0 with static with-skill vs baseline assertion grading, blind A/B review pack generation, and separate answer key artifacts
|
||||
@@ -406,12 +551,17 @@ Utility scripts that make the meta-skill operational:
|
||||
- `render_review_annotations.py`: records reviewer annotations tied to Review Studio gates, source/report paths, and optional line numbers, with open blocker annotations reflected in Review Studio decisions
|
||||
- `run_conformance_suite.py`: verifies runtime conformance for OpenAI, Claude, Agent Skills, VS Code/Copilot-style, and generic targets
|
||||
- `trust_check.py`: generates the trust/security report for scripts, dependencies, secret risk, bounded network host policy, execution-level `--help` smoke checks, permission inputs, trust metadata, and stable source-contract integrity
|
||||
- `build_skill_atlas.py`: builds the Skill Atlas catalog, route-overlap matrix, dependency graph, stale report, owner gaps, and HTML overview for a multi-skill workspace
|
||||
- `build_skill_atlas.py`: builds the Skill Atlas catalog, route-overlap matrix, dependency graph, stale report, owner gaps, aggregate drift signals, and HTML overview for a multi-skill workspace
|
||||
- `registry_audit.py`: builds registry package metadata and audits version, owner, license, checksum, Skill IR source, and compatibility matrix
|
||||
- `verify_package.py`: verifies generated package manifests, target adapters, zip archive safety, archive checksum, and registry parity
|
||||
- `simulate_install.py`: extracts a generated zip into a temporary skill root and verifies entrypoint, manifest, interface, reports, and adapters can be loaded
|
||||
- `upgrade_check.py`: compares current and previous registry package metadata, recommends a version bump, and blocks incompatible upgrade claims
|
||||
- `render_adoption_drift_report.py`: records metadata-only local telemetry and renders adoption, missed-trigger, bad-output, script-error, and review-drift signals without packaging raw event logs
|
||||
- `import_telemetry_events.py`: imports external metadata-only telemetry JSONL after whole-file privacy validation, then refreshes the aggregate adoption drift report
|
||||
- `emit_telemetry_event.py`: emits one metadata-only external client event into a local spool for later `telemetry-import`, with dry-run validation and raw-content field blocking
|
||||
- `render_telemetry_hook_recipes.py`: renders Browser, Chrome, VS Code, CLI wrapper, and provider-adapter telemetry hook recipes with dry-run commands and explicit native-integration caveats
|
||||
- `telemetry_native_host.py`: receives Browser/Chrome Native Messaging length-prefixed JSON events, rejects raw-content fields, appends metadata-only events, and writes local launcher/manifest files for operator installation
|
||||
- `yao_cli_telemetry.py`: opt-in metadata-only `yao.py` run capture for command name, source, outcome, and failure class without command arguments or raw content
|
||||
- `render_review_waivers.py`: validates human reviewer risk approvals with gate keys, reasons, expiry dates, and blocker-safe waiver policy
|
||||
- `init_skill.py`, `lint_skill.py`, `validate_skill.py`, `diff_eval.py`: minimal authoring toolchain
|
||||
- `check_update.py`: checks GitHub for a newer `VERSION` or remote manifest version and reports a reinstall hint without modifying local files
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
---
|
||||
name: yao-meta-skill
|
||||
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.
|
||||
description: Create, refactor, evaluate, and package agent skills from workflows, prompts, transcripts, docs, or notes. Use for skill creation, reusable workflow packaging, skill improvement, evals, and team-ready distribution.
|
||||
metadata:
|
||||
author: Yao Team
|
||||
philosophy: "structured design, evaluation loop, template ergonomics, operational packaging"
|
||||
---
|
||||
|
||||
# Yao Meta Skill
|
||||
@@ -16,44 +15,39 @@ metadata:
|
||||
|
||||
## Modes
|
||||
|
||||
- `Scaffold`: exploratory or personal.
|
||||
- `Production`: team reuse.
|
||||
- `Library`: shared infrastructure.
|
||||
|
||||
Mode rules: [Method](references/skill-engineering-method.md), [Operating Modes](references/operating-modes.md), [Resource Boundaries](references/resource-boundaries.md).
|
||||
- `Scaffold`: exploratory/personal. `Production`: team reuse. `Library`: shared infrastructure. `Governed`: high-trust, policy-sensitive, or release-critical.
|
||||
- Rules: [Method](references/skill-engineering-method.md), [Operating Modes](references/operating-modes.md), [Resource Boundaries](references/resource-boundaries.md).
|
||||
|
||||
## Compact Workflow
|
||||
|
||||
1. Decide whether the request should become a skill and choose the lightest fit.
|
||||
2. Capture job, output, exclusions, constraints, and standards.
|
||||
3. Run reference scan: external benchmarks first, user references second, local fit third; surface only uncertainty or conflict.
|
||||
4. Write the `description` early and test route quality before expanding the package.
|
||||
5. Add output-risk, artifact-design, prompt-quality, and system-model reports only when they matter.
|
||||
6. Add only folders and gates that earn their keep.
|
||||
7. Surface the top three next iteration directions.
|
||||
1. For one-off/no reusable process: `Do not create a skill`; `near-neighbor`; require `repeated use` + `reusable output contract`.
|
||||
2. Capture job, output, exclusions, constraints, standards, and the lightest fit.
|
||||
3. Scan references in order: external benchmark, user source, local fit; surface only uncertainty or conflict.
|
||||
4. Write `description` early, test route quality, then add only earned folders and gates.
|
||||
5. Add output-risk, artifact-design, prompt-quality, system-model, and next directions only when useful.
|
||||
|
||||
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).
|
||||
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), [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.
|
||||
|
||||
## Governed Package Boundary
|
||||
|
||||
For file-backed, release-critical, or governed packages, name `input_files` as `file-backed fixture` evidence; include `owner`, `review cadence`, `input_files`, `output contract`, `rollback boundary`; require `trust report` and `reports/output_quality_scorecard.md`; mark unavailable telemetry, approvals, metrics, or benchmarks as `missing evidence`; do not fabricate evidence.
|
||||
|
||||
Preserve audit labels literally when they apply: `file-backed fixture`, `input_files`, `output contract`, `rollback boundary`, `trust report`, `reports/output_quality_scorecard.md`, `missing evidence`.
|
||||
|
||||
## First-Turn Style
|
||||
|
||||
When the skill first activates:
|
||||
|
||||
- start from the user's work and desired outcome before structure
|
||||
- ask only `2-3` key questions unless the user already gave enough detail
|
||||
- avoid cold field lists; surface benchmark choices only when uncertainty or conflict needs a call
|
||||
|
||||
Chinese conversations should sound soft and companion-like rather than procedural.
|
||||
|
||||
Opening patterns: [Intent Dialogue](references/intent-dialogue.md).
|
||||
- Start from the user's work/outcome before structure.
|
||||
- Ask only `2-3` key questions unless enough detail exists.
|
||||
- In Chinese, sound soft and companion-like; use [Intent Dialogue](references/intent-dialogue.md).
|
||||
|
||||
## Output Contract
|
||||
|
||||
Unless the user asks otherwise, produce a working skill directory with `SKILL.md`, aligned `agents/interface.yaml`, justified assets, and a short summary of boundary, exclusions, gates, and next steps.
|
||||
Unless asked otherwise, produce `SKILL.md`, aligned `agents/interface.yaml`, justified assets, and a short summary of boundary, exclusions, gates, and next steps.
|
||||
|
||||
## Reference Map
|
||||
|
||||
Primary references: [Method](references/skill-engineering-method.md), [Artifact Design](references/artifact-design-doctrine.md), [Systems Thinking](references/systems-thinking-doctrine.md), [Governance](references/governance.md).
|
||||
Primary: [Method](references/skill-engineering-method.md), [Artifact Design](references/artifact-design-doctrine.md), [Systems Thinking](references/systems-thinking-doctrine.md), [Governance](references/governance.md), [SkillOps Decision](references/skillops-decision-policy.md).
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -0,0 +1,749 @@
|
||||
:root {
|
||||
--ink: #1B365D;
|
||||
--text: #24201d;
|
||||
--muted: #746d66;
|
||||
--line: #e7ded2;
|
||||
--soft: #faf8f5;
|
||||
--pass: #1e6b52;
|
||||
--warn: #9a6718;
|
||||
--block: #9b2c2c;
|
||||
}
|
||||
* { box-sizing: border-box; }
|
||||
html { scroll-behavior: smooth; }
|
||||
body {
|
||||
margin: 0;
|
||||
background: #ffffff;
|
||||
color: var(--text);
|
||||
font-family: Georgia, "Times New Roman", "Songti SC", serif;
|
||||
line-height: 1.58;
|
||||
}
|
||||
nav {
|
||||
position: sticky;
|
||||
top: 0;
|
||||
z-index: 10;
|
||||
display: flex;
|
||||
gap: 4px;
|
||||
justify-content: center;
|
||||
flex-wrap: wrap;
|
||||
padding: 10px 16px;
|
||||
background: rgba(255,255,255,0.94);
|
||||
border-bottom: 1px solid var(--line);
|
||||
backdrop-filter: blur(10px);
|
||||
}
|
||||
nav a {
|
||||
color: var(--ink);
|
||||
text-decoration: none;
|
||||
font-size: 14px;
|
||||
padding: 7px 10px;
|
||||
border-radius: 6px;
|
||||
}
|
||||
nav a:hover { background: var(--soft); }
|
||||
main { max-width: 1180px; margin: 0 auto; padding: 44px 28px 76px; }
|
||||
header { border-bottom: 1px solid var(--line); padding-bottom: 28px; margin-bottom: 28px; }
|
||||
.eyebrow { color: var(--ink); font-size: 14px; letter-spacing: .08em; text-transform: uppercase; }
|
||||
h1, h2, h3 { color: var(--text); font-weight: 500; margin: 0; letter-spacing: 0; }
|
||||
h1 { font-size: clamp(34px, 5vw, 64px); line-height: 1.03; max-width: 920px; margin-top: 12px; }
|
||||
h2 { font-size: 30px; margin-bottom: 14px; }
|
||||
h3 { font-size: 19px; }
|
||||
p { margin: 0; }
|
||||
.lede { max-width: 820px; color: var(--muted); font-size: 20px; margin-top: 18px; }
|
||||
.decision {
|
||||
display: inline-flex;
|
||||
align-items: baseline;
|
||||
gap: 12px;
|
||||
margin-top: 24px;
|
||||
padding: 12px 16px;
|
||||
border: 1px solid var(--line);
|
||||
border-radius: 8px;
|
||||
color: var(--ink);
|
||||
background: var(--soft);
|
||||
}
|
||||
.decision strong { font-size: 28px; }
|
||||
section { padding: 30px 0; border-bottom: 1px solid var(--line); scroll-margin-top: 76px; }
|
||||
.metrics, .gates {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(5, minmax(0, 1fr));
|
||||
gap: 14px;
|
||||
}
|
||||
.gates { grid-template-columns: repeat(4, minmax(0, 1fr)); }
|
||||
.metric, .gate {
|
||||
border: 1px solid var(--line);
|
||||
border-radius: 8px;
|
||||
padding: 16px;
|
||||
background: #fff;
|
||||
min-width: 0;
|
||||
}
|
||||
.metric span, .gate span { display: block; color: var(--muted); font-size: 13px; }
|
||||
.metric strong { display: block; color: var(--ink); font-size: 34px; line-height: 1.1; margin: 8px 0; }
|
||||
.metric p, .gate p, .gate footer, .issues span, .evidence span { color: var(--muted); font-size: 14px; overflow-wrap: anywhere; }
|
||||
.gate { display: flex; flex-direction: column; gap: 10px; }
|
||||
.gate.pass { border-top: 4px solid var(--pass); }
|
||||
.gate.warn { border-top: 4px solid var(--warn); }
|
||||
.gate.block { border-top: 4px solid var(--block); }
|
||||
.gate footer { border-top: 1px solid var(--line); padding-top: 10px; }
|
||||
a { color: var(--ink); }
|
||||
.twocol {
|
||||
display: grid;
|
||||
grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
|
||||
gap: 22px;
|
||||
align-items: start;
|
||||
}
|
||||
.panel {
|
||||
border: 1px solid var(--line);
|
||||
border-radius: 8px;
|
||||
padding: 18px;
|
||||
background: #fff;
|
||||
}
|
||||
.panel p { color: var(--muted); }
|
||||
.kv-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||
gap: 10px 12px;
|
||||
margin: 2px 0 0;
|
||||
}
|
||||
.kv-grid div {
|
||||
min-width: 0;
|
||||
padding: 9px 0 0;
|
||||
border-top: 1px solid var(--line);
|
||||
}
|
||||
.kv-grid dt {
|
||||
color: var(--muted);
|
||||
font-size: 13px;
|
||||
}
|
||||
.kv-grid dd {
|
||||
margin: 2px 0 0;
|
||||
color: var(--ink);
|
||||
font-size: 15px;
|
||||
overflow-wrap: anywhere;
|
||||
}
|
||||
.issues, .evidence {
|
||||
list-style: none;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
display: grid;
|
||||
gap: 12px;
|
||||
}
|
||||
.issues li, .evidence li {
|
||||
border-left: 3px solid var(--line);
|
||||
padding-left: 12px;
|
||||
display: grid;
|
||||
gap: 3px;
|
||||
}
|
||||
.muted { color: var(--muted); }
|
||||
.actions-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||
gap: 16px;
|
||||
}
|
||||
.annotations-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||
gap: 16px;
|
||||
}
|
||||
.action-card {
|
||||
border: 1px solid var(--line);
|
||||
border-radius: 8px;
|
||||
padding: 18px;
|
||||
background: #fff;
|
||||
display: grid;
|
||||
gap: 10px;
|
||||
min-width: 0;
|
||||
}
|
||||
.action-card.warn { border-left: 4px solid var(--warn); }
|
||||
.action-card.block { border-left: 4px solid var(--block); }
|
||||
.action-card.with-evidence {
|
||||
grid-column: 1 / -1;
|
||||
}
|
||||
.action-evidence-panel {
|
||||
display: grid;
|
||||
gap: 12px;
|
||||
border-top: 1px solid var(--line);
|
||||
padding-top: 12px;
|
||||
margin-top: 2px;
|
||||
}
|
||||
.action-evidence-panel h4 {
|
||||
margin: 0;
|
||||
color: var(--ink);
|
||||
font-size: 16px;
|
||||
font-weight: 500;
|
||||
}
|
||||
.action-evidence-panel p {
|
||||
color: var(--muted);
|
||||
font-size: 14px;
|
||||
}
|
||||
.action-evidence-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||
gap: 14px;
|
||||
}
|
||||
.action-evidence-item {
|
||||
border: 1px solid var(--line);
|
||||
border-radius: 8px;
|
||||
padding: 14px;
|
||||
display: grid;
|
||||
gap: 10px;
|
||||
min-width: 0;
|
||||
background: var(--soft);
|
||||
}
|
||||
.action-evidence-item.pending { border-left: 4px solid var(--warn); }
|
||||
.action-evidence-item.accepted { border-left: 4px solid var(--pass); }
|
||||
.action-evidence-item h4,
|
||||
.action-evidence-item h5 {
|
||||
margin: 0;
|
||||
color: var(--ink);
|
||||
font-weight: 500;
|
||||
}
|
||||
.action-evidence-item h4 { font-size: 16px; }
|
||||
.action-evidence-item h5 { font-size: 14px; }
|
||||
.action-evidence-item section {
|
||||
border-top: 1px solid var(--line);
|
||||
padding-top: 10px;
|
||||
display: grid;
|
||||
gap: 8px;
|
||||
}
|
||||
.action-command-details,
|
||||
.action-phase-details,
|
||||
.action-runbook-details,
|
||||
.action-collection-details {
|
||||
border-top: 1px solid var(--line);
|
||||
padding-top: 10px;
|
||||
display: grid;
|
||||
gap: 8px;
|
||||
}
|
||||
.action-command-details summary,
|
||||
.action-phase-details summary,
|
||||
.action-runbook-details summary,
|
||||
.action-collection-details summary {
|
||||
cursor: pointer;
|
||||
color: var(--ink);
|
||||
font-size: 14px;
|
||||
font-weight: 500;
|
||||
}
|
||||
.action-command-details[open] summary,
|
||||
.action-phase-details[open] summary,
|
||||
.action-runbook-details[open] summary,
|
||||
.action-collection-details[open] summary {
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
.action-collection-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||
gap: 12px;
|
||||
}
|
||||
.action-collection-grid section {
|
||||
border-top: 1px solid var(--line);
|
||||
padding-top: 8px;
|
||||
display: grid;
|
||||
gap: 6px;
|
||||
}
|
||||
.action-collection-grid ul,
|
||||
.action-collection-grid ol {
|
||||
margin: 0;
|
||||
padding-left: 18px;
|
||||
display: grid;
|
||||
gap: 5px;
|
||||
}
|
||||
.action-collection-grid li {
|
||||
color: var(--muted);
|
||||
font-size: 13px;
|
||||
overflow-wrap: anywhere;
|
||||
}
|
||||
.action-artifact-roles {
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
list-style: none;
|
||||
display: grid;
|
||||
gap: 8px;
|
||||
}
|
||||
.action-artifact-roles li {
|
||||
border: 1px solid var(--line);
|
||||
border-radius: 8px;
|
||||
background: #fff;
|
||||
padding: 10px;
|
||||
display: grid;
|
||||
gap: 4px;
|
||||
min-width: 0;
|
||||
}
|
||||
.action-artifact-roles strong {
|
||||
color: var(--ink);
|
||||
font-weight: 500;
|
||||
overflow-wrap: anywhere;
|
||||
}
|
||||
.action-artifact-roles span,
|
||||
.action-artifact-roles code,
|
||||
.action-artifact-roles small {
|
||||
color: var(--muted);
|
||||
font-size: 12px;
|
||||
overflow-wrap: anywhere;
|
||||
white-space: normal;
|
||||
}
|
||||
.action-evidence-item dl {
|
||||
display: grid;
|
||||
grid-template-columns: 76px minmax(0, 1fr);
|
||||
gap: 6px 10px;
|
||||
margin: 0;
|
||||
}
|
||||
.action-evidence-item dt {
|
||||
color: var(--ink);
|
||||
font-size: 14px;
|
||||
}
|
||||
.action-evidence-item dd {
|
||||
margin: 0;
|
||||
min-width: 0;
|
||||
}
|
||||
.action-evidence-checks,
|
||||
.action-phase-list,
|
||||
.action-command-list,
|
||||
.action-repair-list,
|
||||
.action-runbook-list {
|
||||
margin: 0;
|
||||
display: grid;
|
||||
gap: 8px;
|
||||
}
|
||||
.action-evidence-checks,
|
||||
.action-phase-list,
|
||||
.action-repair-list,
|
||||
.action-command-list {
|
||||
padding: 0;
|
||||
list-style: none;
|
||||
}
|
||||
.action-runbook-list {
|
||||
padding-left: 20px;
|
||||
}
|
||||
.action-evidence-check,
|
||||
.action-phase-row,
|
||||
.action-repair-row,
|
||||
.action-command-list li {
|
||||
display: grid;
|
||||
gap: 3px;
|
||||
min-width: 0;
|
||||
border-top: 1px solid var(--line);
|
||||
padding-top: 8px;
|
||||
}
|
||||
.action-evidence-check.blocked { border-left: 3px solid var(--warn); padding-left: 8px; }
|
||||
.action-evidence-check.pass { border-left: 3px solid var(--pass); padding-left: 8px; }
|
||||
.action-phase-row.blocked { border-left: 3px solid var(--warn); padding-left: 8px; }
|
||||
.action-phase-row.ready { border-left: 3px solid var(--pass); padding-left: 8px; }
|
||||
.action-repair-row.blocked { border-left: 3px solid var(--warn); padding-left: 8px; }
|
||||
.action-repair-row.ready { border-left: 3px solid var(--pass); padding-left: 8px; }
|
||||
.action-evidence-check span,
|
||||
.action-phase-row span,
|
||||
.action-repair-row span,
|
||||
.action-command-list span {
|
||||
color: var(--ink);
|
||||
font-size: 13px;
|
||||
}
|
||||
.action-phase-row strong,
|
||||
.action-repair-row strong {
|
||||
color: var(--ink);
|
||||
font-size: 14px;
|
||||
overflow-wrap: anywhere;
|
||||
}
|
||||
.action-phase-row em,
|
||||
.action-repair-row em {
|
||||
color: var(--muted);
|
||||
font-size: 12px;
|
||||
font-style: normal;
|
||||
overflow-wrap: anywhere;
|
||||
}
|
||||
.action-evidence-check code,
|
||||
.action-evidence-check small,
|
||||
.action-phase-row code,
|
||||
.action-phase-row small,
|
||||
.action-repair-row code,
|
||||
.action-repair-row small,
|
||||
.action-command-list code,
|
||||
.action-runbook-list li {
|
||||
color: var(--muted);
|
||||
font-size: 13px;
|
||||
overflow-wrap: anywhere;
|
||||
}
|
||||
.action-command-list code {
|
||||
display: block;
|
||||
white-space: normal;
|
||||
}
|
||||
.annotation-card {
|
||||
border: 1px solid var(--line);
|
||||
border-radius: 8px;
|
||||
padding: 18px;
|
||||
background: #fff;
|
||||
display: grid;
|
||||
gap: 10px;
|
||||
min-width: 0;
|
||||
}
|
||||
.annotation-card.warning { border-left: 4px solid var(--warn); }
|
||||
.annotation-card.blocker { border-left: 4px solid var(--block); }
|
||||
.annotation-card.resolved { opacity: .72; }
|
||||
.world-evidence-grid {
|
||||
display: grid;
|
||||
grid-template-columns: minmax(0, 1fr);
|
||||
gap: 16px;
|
||||
margin-top: 16px;
|
||||
}
|
||||
.world-evidence-card {
|
||||
border: 1px solid var(--line);
|
||||
border-radius: 8px;
|
||||
padding: 18px;
|
||||
background: #fff;
|
||||
display: grid;
|
||||
gap: 12px;
|
||||
min-width: 0;
|
||||
}
|
||||
.world-evidence-card.pending { border-left: 4px solid var(--warn); }
|
||||
.world-evidence-card.accepted { border-left: 4px solid var(--pass); }
|
||||
.world-evidence-card span,
|
||||
.world-evidence-card p,
|
||||
.world-evidence-card dd,
|
||||
.world-evidence-card li {
|
||||
color: var(--muted);
|
||||
font-size: 14px;
|
||||
overflow-wrap: anywhere;
|
||||
}
|
||||
.world-evidence-card dl {
|
||||
display: grid;
|
||||
grid-template-columns: 86px minmax(0, 1fr);
|
||||
gap: 6px 10px;
|
||||
margin: 0;
|
||||
}
|
||||
.world-evidence-card dt { color: var(--ink); font-size: 14px; }
|
||||
.world-evidence-card dd { margin: 0; }
|
||||
.world-evidence-columns {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(3, minmax(0, 1fr));
|
||||
gap: 12px;
|
||||
border-top: 1px solid var(--line);
|
||||
padding-top: 12px;
|
||||
}
|
||||
.world-evidence-columns h4 {
|
||||
margin: 0 0 6px;
|
||||
color: var(--ink);
|
||||
font-size: 14px;
|
||||
font-weight: 500;
|
||||
}
|
||||
.world-evidence-columns ul {
|
||||
margin: 0;
|
||||
padding-left: 18px;
|
||||
}
|
||||
.world-source-panel {
|
||||
border-top: 1px solid var(--line);
|
||||
padding-top: 12px;
|
||||
}
|
||||
.world-runbook-panel {
|
||||
border-top: 1px solid var(--line);
|
||||
padding-top: 12px;
|
||||
}
|
||||
.world-runbook-panel h4,
|
||||
.world-source-panel h4 {
|
||||
margin: 0 0 8px;
|
||||
color: var(--ink);
|
||||
font-size: 14px;
|
||||
font-weight: 500;
|
||||
}
|
||||
.world-runbook-panel ul {
|
||||
margin: 0;
|
||||
padding-left: 18px;
|
||||
}
|
||||
.world-source-checks {
|
||||
list-style: none;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
display: grid;
|
||||
gap: 8px;
|
||||
}
|
||||
.world-source-check {
|
||||
display: grid;
|
||||
grid-template-columns: minmax(0, .7fr) minmax(0, .6fr) minmax(0, 1fr);
|
||||
gap: 10px;
|
||||
align-items: start;
|
||||
min-width: 0;
|
||||
padding: 9px 0 0;
|
||||
border-top: 1px solid var(--line);
|
||||
}
|
||||
.world-source-check span {
|
||||
color: var(--ink);
|
||||
font-size: 14px;
|
||||
}
|
||||
.world-source-check code,
|
||||
.world-source-check small {
|
||||
color: var(--muted);
|
||||
font-size: 13px;
|
||||
overflow-wrap: anywhere;
|
||||
}
|
||||
.world-source-check.pass { border-left: 3px solid var(--pass); padding-left: 8px; }
|
||||
.world-source-check.blocked { border-left: 3px solid var(--warn); padding-left: 8px; }
|
||||
.output-review-grid {
|
||||
display: grid;
|
||||
grid-template-columns: minmax(0, 1fr);
|
||||
gap: 16px;
|
||||
margin-top: 16px;
|
||||
}
|
||||
.output-review-card {
|
||||
border: 1px solid var(--line);
|
||||
border-radius: 8px;
|
||||
padding: 18px;
|
||||
background: #fff;
|
||||
display: grid;
|
||||
gap: 12px;
|
||||
min-width: 0;
|
||||
}
|
||||
.output-review-card.awaiting-decision,
|
||||
.output-review-card.fix-decision { border-left: 4px solid var(--warn); }
|
||||
.output-review-card.adjudicated { border-left: 4px solid var(--pass); }
|
||||
.output-review-card span,
|
||||
.output-review-card p,
|
||||
.output-review-card dd,
|
||||
.output-review-card li {
|
||||
color: var(--muted);
|
||||
font-size: 14px;
|
||||
overflow-wrap: anywhere;
|
||||
}
|
||||
.output-review-card dl {
|
||||
display: grid;
|
||||
grid-template-columns: 86px minmax(0, 1fr);
|
||||
gap: 6px 10px;
|
||||
margin: 0;
|
||||
}
|
||||
.output-review-card dt { color: var(--ink); font-size: 14px; }
|
||||
.output-review-card dd { margin: 0; min-width: 0; }
|
||||
.output-review-steps {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(3, minmax(0, 1fr));
|
||||
gap: 12px;
|
||||
border-top: 1px solid var(--line);
|
||||
padding-top: 12px;
|
||||
}
|
||||
.output-review-steps h4 {
|
||||
margin: 0 0 6px;
|
||||
color: var(--ink);
|
||||
font-size: 14px;
|
||||
font-weight: 500;
|
||||
}
|
||||
.output-review-steps ul {
|
||||
margin: 0;
|
||||
padding-left: 18px;
|
||||
}
|
||||
.output-review-commands,
|
||||
.output-review-fields {
|
||||
list-style: none;
|
||||
padding: 0;
|
||||
display: grid;
|
||||
gap: 8px;
|
||||
}
|
||||
.output-review-commands li,
|
||||
.output-review-fields li {
|
||||
display: grid;
|
||||
gap: 2px;
|
||||
min-width: 0;
|
||||
padding: 8px 0 0;
|
||||
border-top: 1px solid var(--line);
|
||||
}
|
||||
.output-review-commands code {
|
||||
overflow-wrap: anywhere;
|
||||
white-space: normal;
|
||||
display: block;
|
||||
}
|
||||
.world-intake-grid {
|
||||
display: grid;
|
||||
grid-template-columns: minmax(0, 1fr);
|
||||
gap: 16px;
|
||||
margin-top: 16px;
|
||||
}
|
||||
.world-intake-card {
|
||||
border: 1px solid var(--line);
|
||||
border-radius: 8px;
|
||||
padding: 18px;
|
||||
background: #fff;
|
||||
display: grid;
|
||||
gap: 12px;
|
||||
min-width: 0;
|
||||
}
|
||||
.world-intake-card.awaiting-submission,
|
||||
.world-intake-card.fix-submission,
|
||||
.world-intake-card.fix-template { border-left: 4px solid var(--warn); }
|
||||
.world-intake-card.ready-for-ledger-review,
|
||||
.world-intake-card.accepted { border-left: 4px solid var(--pass); }
|
||||
.world-intake-card span,
|
||||
.world-intake-card p,
|
||||
.world-intake-card dd,
|
||||
.world-intake-card li {
|
||||
color: var(--muted);
|
||||
font-size: 14px;
|
||||
overflow-wrap: anywhere;
|
||||
}
|
||||
.world-intake-card dl {
|
||||
display: grid;
|
||||
grid-template-columns: 86px minmax(0, 1fr);
|
||||
gap: 6px 10px;
|
||||
margin: 0;
|
||||
}
|
||||
.world-intake-card dt { color: var(--ink); font-size: 14px; }
|
||||
.world-intake-card dd { margin: 0; min-width: 0; }
|
||||
.world-intake-steps {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||
gap: 12px;
|
||||
border-top: 1px solid var(--line);
|
||||
padding-top: 12px;
|
||||
}
|
||||
.world-intake-steps h4 {
|
||||
margin: 0 0 6px;
|
||||
color: var(--ink);
|
||||
font-size: 14px;
|
||||
font-weight: 500;
|
||||
}
|
||||
.world-intake-steps ul {
|
||||
margin: 0;
|
||||
padding-left: 18px;
|
||||
}
|
||||
.world-intake-commands {
|
||||
list-style: none;
|
||||
padding: 0;
|
||||
display: grid;
|
||||
gap: 8px;
|
||||
}
|
||||
.world-intake-commands li {
|
||||
display: grid;
|
||||
gap: 2px;
|
||||
min-width: 0;
|
||||
padding: 8px 0 0;
|
||||
border-top: 1px solid var(--line);
|
||||
}
|
||||
.world-intake-commands code {
|
||||
overflow-wrap: anywhere;
|
||||
white-space: normal;
|
||||
display: block;
|
||||
}
|
||||
.section-subtitle {
|
||||
margin-top: 22px;
|
||||
margin-bottom: 12px;
|
||||
color: var(--ink);
|
||||
}
|
||||
.waiver-summary { margin-top: 16px; }
|
||||
.waiver-candidate-grid {
|
||||
display: grid;
|
||||
grid-template-columns: minmax(0, 1fr);
|
||||
gap: 16px;
|
||||
}
|
||||
.waiver-card {
|
||||
border: 1px solid var(--line);
|
||||
border-radius: 8px;
|
||||
padding: 18px;
|
||||
background: #fff;
|
||||
display: grid;
|
||||
gap: 12px;
|
||||
min-width: 0;
|
||||
}
|
||||
.waiver-card.allowed { border-left: 4px solid var(--warn); }
|
||||
.waiver-card.blocked { border-left: 4px solid var(--block); }
|
||||
.waiver-card span,
|
||||
.waiver-card p,
|
||||
.waiver-card dd,
|
||||
.waiver-card li {
|
||||
color: var(--muted);
|
||||
font-size: 14px;
|
||||
overflow-wrap: anywhere;
|
||||
}
|
||||
.waiver-card dl {
|
||||
display: grid;
|
||||
grid-template-columns: 86px minmax(0, 1fr);
|
||||
gap: 6px 10px;
|
||||
margin: 0;
|
||||
}
|
||||
.waiver-card dt {
|
||||
color: var(--ink);
|
||||
font-size: 14px;
|
||||
}
|
||||
.waiver-card dd { margin: 0; min-width: 0; }
|
||||
.waiver-review {
|
||||
border-top: 1px solid var(--line);
|
||||
padding-top: 12px;
|
||||
}
|
||||
.waiver-review h4 {
|
||||
margin: 0 0 6px;
|
||||
color: var(--ink);
|
||||
font-size: 14px;
|
||||
font-weight: 500;
|
||||
}
|
||||
.waiver-review ul {
|
||||
margin: 0;
|
||||
padding-left: 18px;
|
||||
}
|
||||
.waiver-command {
|
||||
display: grid;
|
||||
gap: 4px;
|
||||
border-top: 1px solid var(--line);
|
||||
padding-top: 12px;
|
||||
}
|
||||
.waiver-command span {
|
||||
color: var(--ink);
|
||||
font-size: 14px;
|
||||
}
|
||||
.waiver-command code {
|
||||
display: block;
|
||||
max-width: 100%;
|
||||
overflow-wrap: anywhere;
|
||||
white-space: normal;
|
||||
}
|
||||
.action-card span,
|
||||
.annotation-card span,
|
||||
.action-card small,
|
||||
.annotation-card small,
|
||||
.action-card footer,
|
||||
.annotation-card footer,
|
||||
.action-card dd {
|
||||
color: var(--muted);
|
||||
font-size: 14px;
|
||||
overflow-wrap: anywhere;
|
||||
}
|
||||
.annotation-card dd { color: var(--muted); font-size: 14px; overflow-wrap: anywhere; }
|
||||
.action-card dl, .annotation-card dl {
|
||||
display: grid;
|
||||
grid-template-columns: 80px minmax(0, 1fr);
|
||||
gap: 6px 10px;
|
||||
margin: 0;
|
||||
}
|
||||
.action-card dt, .annotation-card dt { color: var(--ink); font-size: 14px; }
|
||||
.action-card dd, .annotation-card dd { margin: 0; }
|
||||
.source-ref-list {
|
||||
list-style: none;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
display: grid;
|
||||
gap: 6px;
|
||||
}
|
||||
.source-ref-list li {
|
||||
display: grid;
|
||||
gap: 2px;
|
||||
min-width: 0;
|
||||
padding: 8px 0 0;
|
||||
border-top: 1px solid var(--line);
|
||||
}
|
||||
.source-ref-list a,
|
||||
.source-ref-list span {
|
||||
overflow-wrap: anywhere;
|
||||
font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
|
||||
font-size: 13px;
|
||||
}
|
||||
.source-ref-list small {
|
||||
font-size: 12px;
|
||||
color: var(--muted);
|
||||
}
|
||||
.source-ref-list blockquote {
|
||||
margin: 2px 0 0;
|
||||
padding: 7px 9px;
|
||||
border-left: 3px solid var(--line);
|
||||
background: var(--soft);
|
||||
color: var(--muted);
|
||||
font-size: 12px;
|
||||
overflow-wrap: anywhere;
|
||||
}
|
||||
code {
|
||||
font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
|
||||
font-size: 13px;
|
||||
}
|
||||
@media (max-width: 980px) {
|
||||
.metrics, .gates, .twocol, .actions-grid, .annotations-grid, .action-evidence-grid, .action-evidence-item dl, .action-collection-grid, .output-review-grid, .output-review-steps, .world-evidence-grid, .world-evidence-columns, .world-source-check, .world-intake-grid, .world-intake-steps, .waiver-candidate-grid, .waiver-card dl, .kv-grid { grid-template-columns: 1fr; }
|
||||
main { padding: 32px 18px 60px; }
|
||||
nav { justify-content: flex-start; overflow-x: auto; flex-wrap: nowrap; }
|
||||
nav a { flex: 0 0 auto; }
|
||||
}
|
||||
@@ -0,0 +1,176 @@
|
||||
:root {
|
||||
--text: #111111;
|
||||
--muted: #666666;
|
||||
--line: #e8e8e8;
|
||||
--soft: #f6f6f4;
|
||||
--white: #ffffff;
|
||||
}
|
||||
* { box-sizing: border-box; }
|
||||
body {
|
||||
margin: 0;
|
||||
background: var(--white);
|
||||
color: var(--text);
|
||||
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
|
||||
line-height: 1.6;
|
||||
}
|
||||
.page {
|
||||
max-width: 1120px;
|
||||
margin: 0 auto;
|
||||
padding: 48px 32px 72px;
|
||||
}
|
||||
.hero {
|
||||
padding-bottom: 28px;
|
||||
border-bottom: 1px solid var(--line);
|
||||
margin-bottom: 28px;
|
||||
}
|
||||
h1, h2, h3 {
|
||||
margin: 0 0 12px;
|
||||
letter-spacing: -0.02em;
|
||||
font-weight: 600;
|
||||
}
|
||||
h1 { font-size: 40px; line-height: 1.08; }
|
||||
h2 { font-size: 22px; margin-top: 34px; }
|
||||
h3 { font-size: 16px; }
|
||||
p, li, span { font-size: 15px; }
|
||||
.lede {
|
||||
max-width: 860px;
|
||||
font-size: 18px;
|
||||
color: var(--muted);
|
||||
margin: 0 0 18px;
|
||||
}
|
||||
.meta {
|
||||
display: flex;
|
||||
gap: 10px;
|
||||
flex-wrap: wrap;
|
||||
margin-top: 16px;
|
||||
}
|
||||
.meta span {
|
||||
border: 1px solid var(--line);
|
||||
padding: 6px 10px;
|
||||
background: var(--soft);
|
||||
}
|
||||
.arch-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(5, minmax(0, 1fr));
|
||||
gap: 12px;
|
||||
margin-top: 16px;
|
||||
}
|
||||
.arch-step, .panel, .direction-card, .baseline-box {
|
||||
border: 1px solid var(--line);
|
||||
background: var(--white);
|
||||
}
|
||||
.arch-step {
|
||||
padding: 14px;
|
||||
min-height: 132px;
|
||||
}
|
||||
.step-label {
|
||||
font-size: 12px;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.08em;
|
||||
color: var(--muted);
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.step-detail {
|
||||
font-size: 14px;
|
||||
}
|
||||
.grid {
|
||||
display: grid;
|
||||
grid-template-columns: 1.1fr 0.9fr;
|
||||
gap: 18px;
|
||||
margin-top: 16px;
|
||||
}
|
||||
.panel {
|
||||
padding: 18px;
|
||||
}
|
||||
.panel ul {
|
||||
margin: 0;
|
||||
padding-left: 18px;
|
||||
}
|
||||
.direction-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(3, minmax(0, 1fr));
|
||||
gap: 16px;
|
||||
margin-top: 16px;
|
||||
}
|
||||
.variant-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(3, minmax(0, 1fr));
|
||||
gap: 16px;
|
||||
margin-top: 16px;
|
||||
}
|
||||
.direction-card {
|
||||
padding: 18px;
|
||||
}
|
||||
.direction-card ul {
|
||||
margin: 12px 0;
|
||||
padding-left: 18px;
|
||||
}
|
||||
.minor {
|
||||
color: var(--muted);
|
||||
font-size: 13px;
|
||||
}
|
||||
.variant-card {
|
||||
border: 1px solid var(--line);
|
||||
background: var(--white);
|
||||
padding: 18px;
|
||||
}
|
||||
.variant-head {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
gap: 12px;
|
||||
align-items: baseline;
|
||||
}
|
||||
.variant-head span {
|
||||
color: var(--muted);
|
||||
font-size: 12px;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.06em;
|
||||
}
|
||||
.variant-description {
|
||||
margin: 14px 0;
|
||||
padding-left: 14px;
|
||||
border-left: 2px solid var(--line);
|
||||
color: var(--text);
|
||||
}
|
||||
.variant-metrics {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 8px;
|
||||
margin-bottom: 14px;
|
||||
}
|
||||
.variant-metrics span {
|
||||
border: 1px solid var(--line);
|
||||
background: var(--soft);
|
||||
padding: 6px 10px;
|
||||
font-size: 12px;
|
||||
}
|
||||
.variant-cues p {
|
||||
margin: 8px 0 6px;
|
||||
}
|
||||
.variant-cues ul {
|
||||
margin: 0 0 12px;
|
||||
padding-left: 18px;
|
||||
}
|
||||
table {
|
||||
width: 100%;
|
||||
border-collapse: collapse;
|
||||
margin-top: 14px;
|
||||
font-size: 14px;
|
||||
}
|
||||
th, td {
|
||||
border-top: 1px solid var(--line);
|
||||
text-align: left;
|
||||
padding: 10px 8px;
|
||||
vertical-align: top;
|
||||
}
|
||||
th {
|
||||
font-size: 12px;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.06em;
|
||||
color: var(--muted);
|
||||
}
|
||||
@media (max-width: 1000px) {
|
||||
.arch-grid, .direction-grid, .variant-grid, .grid {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,735 @@
|
||||
:root {
|
||||
--paper: #ffffff;
|
||||
--wash: #f8fafc;
|
||||
--wash-strong: #f2f5f8;
|
||||
--line: #e6e0d4;
|
||||
--line-soft: #eee9df;
|
||||
--brand: #1B365D;
|
||||
--brand-soft: #EEF3F8;
|
||||
--brand-mid: #315982;
|
||||
--ink: #151515;
|
||||
--text: #2f2d29;
|
||||
--muted: #68625a;
|
||||
--faint: #8b857b;
|
||||
--success: #2f6f5e;
|
||||
--warn: #8a5a19;
|
||||
--serif: "TsangerJinKai02", "Source Han Serif SC", "Noto Serif CJK SC", "Songti SC", "STSong", Charter, Georgia, serif;
|
||||
--mono: "JetBrains Mono", "SF Mono", ui-monospace, Menlo, Consolas, monospace;
|
||||
--shadow-soft: 0 1px 2px rgba(27, 54, 93, 0.06), 0 16px 44px rgba(27, 54, 93, 0.08);
|
||||
}
|
||||
* { box-sizing: border-box; }
|
||||
html { scroll-behavior: smooth; }
|
||||
body {
|
||||
margin: 0;
|
||||
background: #ffffff;
|
||||
color: var(--ink);
|
||||
font-family: var(--serif);
|
||||
line-height: 1.62;
|
||||
letter-spacing: 0;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
text-rendering: optimizeLegibility;
|
||||
}
|
||||
body[data-report-lang="zh-CN"] [data-lang="en"],
|
||||
body[data-report-lang="en"] [data-lang="zh-CN"] { display: none !important; }
|
||||
.skip-link {
|
||||
position: fixed;
|
||||
left: 18px;
|
||||
top: 10px;
|
||||
z-index: 40;
|
||||
transform: translateY(-140%);
|
||||
padding: 8px 12px;
|
||||
border-radius: 8px;
|
||||
background: var(--brand);
|
||||
color: #fff;
|
||||
text-decoration: none;
|
||||
transition: transform 160ms cubic-bezier(0.16, 1, 0.3, 1);
|
||||
}
|
||||
.skip-link:focus-visible { transform: translateY(0); outline: 2px solid var(--brand-mid); outline-offset: 2px; }
|
||||
.topbar {
|
||||
position: sticky;
|
||||
top: 0;
|
||||
z-index: 20;
|
||||
background: rgba(255, 255, 255, 0.96);
|
||||
border-bottom: 1px solid var(--line);
|
||||
}
|
||||
.progress-track {
|
||||
height: 2px;
|
||||
background: transparent;
|
||||
}
|
||||
.progress-bar {
|
||||
display: block;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background: var(--brand);
|
||||
transition: transform 160ms cubic-bezier(0.16, 1, 0.3, 1);
|
||||
transform-origin: left center;
|
||||
transform: scaleX(0);
|
||||
}
|
||||
.topbar-inner {
|
||||
max-width: 1240px;
|
||||
margin: 0 auto;
|
||||
padding: 9px 28px;
|
||||
display: grid;
|
||||
grid-template-columns: minmax(0, 1fr) auto;
|
||||
gap: 18px;
|
||||
align-items: center;
|
||||
}
|
||||
.nav-shell {
|
||||
display: grid;
|
||||
grid-template-columns: auto minmax(0, 1fr);
|
||||
gap: 18px;
|
||||
align-items: center;
|
||||
min-width: 0;
|
||||
}
|
||||
.report-mark {
|
||||
color: var(--brand);
|
||||
font-family: var(--mono);
|
||||
font-size: 11px;
|
||||
line-height: 1;
|
||||
text-transform: uppercase;
|
||||
white-space: nowrap;
|
||||
}
|
||||
.report-nav {
|
||||
display: flex;
|
||||
gap: 4px;
|
||||
overflow-x: auto;
|
||||
scrollbar-width: none;
|
||||
min-width: 0;
|
||||
}
|
||||
.report-nav::-webkit-scrollbar { display: none; }
|
||||
.report-nav a {
|
||||
flex: 0 0 auto;
|
||||
min-width: 76px;
|
||||
min-height: 40px;
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
padding: 0 10px;
|
||||
color: var(--brand);
|
||||
text-decoration: none;
|
||||
text-align: center;
|
||||
font-size: 13px;
|
||||
border-radius: 8px;
|
||||
white-space: nowrap;
|
||||
transition-property: background-color, color, transform;
|
||||
transition-duration: 160ms;
|
||||
transition-timing-function: cubic-bezier(0.16, 1, 0.3, 1);
|
||||
}
|
||||
@media (hover: hover) {
|
||||
.report-nav a:hover { background: var(--brand-soft); }
|
||||
}
|
||||
.report-nav a:focus-visible {
|
||||
outline: 2px solid var(--brand-mid);
|
||||
outline-offset: 2px;
|
||||
background: var(--brand-soft);
|
||||
}
|
||||
.report-nav a[aria-current="true"] {
|
||||
background: var(--brand);
|
||||
color: #ffffff;
|
||||
}
|
||||
.report-nav a[aria-current="true"] span { color: #ffffff; }
|
||||
.language-switch {
|
||||
display: inline-flex;
|
||||
gap: 3px;
|
||||
padding: 3px;
|
||||
border: 1px solid var(--line);
|
||||
border-radius: 8px;
|
||||
background: var(--paper);
|
||||
box-shadow: 0 1px 2px rgba(27, 54, 93, 0.05);
|
||||
}
|
||||
.language-switch button {
|
||||
appearance: none;
|
||||
min-width: 42px;
|
||||
min-height: 34px;
|
||||
border: 0;
|
||||
border-radius: 6px;
|
||||
padding: 0 10px;
|
||||
background: transparent;
|
||||
color: var(--muted);
|
||||
font: inherit;
|
||||
font-size: 13px;
|
||||
cursor: pointer;
|
||||
transition-property: background-color, color, transform;
|
||||
transition-duration: 160ms;
|
||||
transition-timing-function: cubic-bezier(0.16, 1, 0.3, 1);
|
||||
}
|
||||
.language-switch button:active { transform: scale(0.96); }
|
||||
.language-switch button:focus-visible { outline: 2px solid var(--brand-mid); outline-offset: 2px; }
|
||||
.language-switch button[aria-pressed="true"] {
|
||||
background: var(--brand-soft);
|
||||
color: var(--brand);
|
||||
}
|
||||
.wrap {
|
||||
max-width: 1240px;
|
||||
margin: 0 auto;
|
||||
padding: 58px 28px 92px;
|
||||
}
|
||||
.hero {
|
||||
padding: 16px 0 34px;
|
||||
}
|
||||
.hero-grid {
|
||||
display: grid;
|
||||
grid-template-columns: minmax(0, 1fr) 360px;
|
||||
gap: 44px;
|
||||
align-items: end;
|
||||
}
|
||||
.eyebrow, .report-mark {
|
||||
letter-spacing: 0;
|
||||
}
|
||||
.eyebrow {
|
||||
margin: 0 0 12px;
|
||||
color: var(--brand);
|
||||
font-family: var(--mono);
|
||||
font-size: 12px;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
.slug {
|
||||
margin: 0 0 18px;
|
||||
color: var(--faint);
|
||||
font-family: var(--mono);
|
||||
font-size: 13px;
|
||||
overflow-wrap: anywhere;
|
||||
}
|
||||
h1, h2, h3 {
|
||||
margin: 0;
|
||||
font-weight: 500;
|
||||
letter-spacing: 0;
|
||||
text-wrap: balance;
|
||||
}
|
||||
h1 {
|
||||
max-width: 8em;
|
||||
color: var(--ink);
|
||||
font-size: 4rem;
|
||||
line-height: 1.02;
|
||||
}
|
||||
.lead {
|
||||
max-width: 760px;
|
||||
margin: 20px 0 0;
|
||||
color: var(--text);
|
||||
font-size: 1.08rem;
|
||||
text-wrap: pretty;
|
||||
}
|
||||
.hero-meta, .badges {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 8px;
|
||||
margin-top: 20px;
|
||||
}
|
||||
.hero-meta span, .badges span, .tag {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
min-height: 30px;
|
||||
padding: 5px 10px;
|
||||
border-radius: 6px;
|
||||
background: var(--brand-soft);
|
||||
color: var(--brand);
|
||||
font-size: 13px;
|
||||
font-variant-numeric: tabular-nums;
|
||||
}
|
||||
.hero-card {
|
||||
position: relative;
|
||||
padding: 22px 22px 24px;
|
||||
border-radius: 8px;
|
||||
background: linear-gradient(180deg, #ffffff 0%, #fbfaf7 100%);
|
||||
box-shadow: var(--shadow-soft);
|
||||
border: 1px solid var(--line-soft);
|
||||
}
|
||||
.hero-card::before {
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: 18px;
|
||||
right: 18px;
|
||||
width: 38px;
|
||||
height: 2px;
|
||||
background: var(--brand);
|
||||
}
|
||||
.score-strip {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(4, minmax(0, 1fr));
|
||||
gap: 10px;
|
||||
margin-top: 32px;
|
||||
padding-top: 20px;
|
||||
border-top: 1px solid var(--line);
|
||||
}
|
||||
.score-chip {
|
||||
padding: 14px 14px 12px;
|
||||
border-radius: 8px;
|
||||
background: var(--wash);
|
||||
border: 1px solid var(--line-soft);
|
||||
}
|
||||
.score-chip span {
|
||||
display: block;
|
||||
color: var(--muted);
|
||||
font-size: 12px;
|
||||
}
|
||||
.score-chip strong {
|
||||
display: block;
|
||||
margin: 5px 0 8px;
|
||||
color: var(--brand);
|
||||
font-family: var(--mono);
|
||||
font-size: 1.65rem;
|
||||
font-weight: 500;
|
||||
line-height: 1;
|
||||
font-variant-numeric: tabular-nums;
|
||||
}
|
||||
.score-chip i {
|
||||
display: block;
|
||||
height: 3px;
|
||||
border-radius: 999px;
|
||||
background: linear-gradient(90deg, var(--brand) var(--score), #dfe6ee var(--score));
|
||||
}
|
||||
.score-chip small {
|
||||
display: block;
|
||||
margin-top: 8px;
|
||||
color: var(--muted);
|
||||
font-size: 12px;
|
||||
line-height: 1.45;
|
||||
}
|
||||
section {
|
||||
scroll-margin-top: 78px;
|
||||
padding-top: 44px;
|
||||
margin-top: 44px;
|
||||
border-top: 1px solid var(--line);
|
||||
}
|
||||
section.hero {
|
||||
scroll-margin-top: 0;
|
||||
padding-top: 16px;
|
||||
margin-top: 0;
|
||||
border-top: 0;
|
||||
}
|
||||
.section-head {
|
||||
display: grid;
|
||||
grid-template-columns: minmax(0, 1fr);
|
||||
gap: 22px;
|
||||
align-items: start;
|
||||
}
|
||||
h2 {
|
||||
color: var(--ink);
|
||||
font-size: 1.5rem;
|
||||
line-height: 1.18;
|
||||
}
|
||||
h2::before {
|
||||
content: "";
|
||||
display: block;
|
||||
width: 32px;
|
||||
height: 2px;
|
||||
margin-bottom: 12px;
|
||||
background: var(--brand);
|
||||
}
|
||||
h3 {
|
||||
color: var(--ink);
|
||||
font-size: 1.02rem;
|
||||
line-height: 1.3;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.section-head > div:first-child p {
|
||||
margin: 12px 0 0;
|
||||
color: var(--muted);
|
||||
max-width: 68ch;
|
||||
text-wrap: pretty;
|
||||
}
|
||||
.section-body {
|
||||
margin-top: 24px;
|
||||
}
|
||||
.two-col, .metric-grid, .chart-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||
gap: 16px;
|
||||
align-items: stretch;
|
||||
}
|
||||
.quality-panels {
|
||||
margin-top: 16px;
|
||||
}
|
||||
.metrics-flow {
|
||||
display: grid;
|
||||
gap: 30px;
|
||||
}
|
||||
.metrics-primary {
|
||||
display: grid;
|
||||
grid-template-columns: minmax(360px, 0.92fr) minmax(0, 1.08fr);
|
||||
gap: 22px;
|
||||
align-items: start;
|
||||
}
|
||||
.metrics-primary .chart-figure {
|
||||
min-height: 0;
|
||||
display: grid;
|
||||
align-content: center;
|
||||
}
|
||||
.metrics-primary .chart-figure svg {
|
||||
max-height: 520px;
|
||||
}
|
||||
.metrics-note {
|
||||
display: grid;
|
||||
align-content: start;
|
||||
gap: 14px;
|
||||
}
|
||||
.metrics-note p {
|
||||
margin: 0;
|
||||
max-width: none;
|
||||
color: var(--text);
|
||||
}
|
||||
.metric-summary-list {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
list-style: none;
|
||||
display: grid;
|
||||
gap: 10px;
|
||||
}
|
||||
.metric-summary-list li {
|
||||
display: grid;
|
||||
grid-template-columns: auto minmax(0, 1fr) auto;
|
||||
gap: 8px 10px;
|
||||
align-items: baseline;
|
||||
padding: 10px 0;
|
||||
border-bottom: 1px solid var(--line-soft);
|
||||
}
|
||||
.metric-summary-list li:last-child { border-bottom: 0; }
|
||||
.metric-summary-list b {
|
||||
color: var(--ink);
|
||||
font-weight: 500;
|
||||
}
|
||||
.metric-summary-list em {
|
||||
color: var(--brand);
|
||||
font-family: var(--mono);
|
||||
font-style: normal;
|
||||
font-variant-numeric: tabular-nums;
|
||||
}
|
||||
.metric-summary-list small {
|
||||
grid-column: 2 / 4;
|
||||
color: var(--muted);
|
||||
line-height: 1.5;
|
||||
overflow-wrap: break-word;
|
||||
}
|
||||
.metric-detail-section {
|
||||
display: grid;
|
||||
gap: 14px;
|
||||
}
|
||||
.detail-section-kicker {
|
||||
display: inline-flex;
|
||||
width: fit-content;
|
||||
min-height: 28px;
|
||||
align-items: center;
|
||||
padding: 3px 8px;
|
||||
border-radius: 6px;
|
||||
background: var(--brand-soft);
|
||||
color: var(--brand);
|
||||
font-size: 12px;
|
||||
}
|
||||
.metric-status {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
min-height: 24px;
|
||||
padding: 2px 7px;
|
||||
border-radius: 6px;
|
||||
background: var(--brand-soft);
|
||||
color: var(--brand);
|
||||
font-size: 12px;
|
||||
}
|
||||
.metric-detail-grid {
|
||||
grid-template-columns: repeat(2, minmax(min(100%, 420px), 1fr));
|
||||
align-items: stretch;
|
||||
}
|
||||
.list, .compact-list, .step-list {
|
||||
margin: 0;
|
||||
padding-left: 1.15em;
|
||||
display: grid;
|
||||
gap: 8px;
|
||||
}
|
||||
.list li::marker, .compact-list li::marker, .step-list li::marker { color: var(--brand); }
|
||||
.compact-list {
|
||||
gap: 6px;
|
||||
font-size: 13.5px;
|
||||
color: var(--muted);
|
||||
line-height: 1.55;
|
||||
}
|
||||
.compact-list li, .list li, .step-list li {
|
||||
min-width: 0;
|
||||
overflow-wrap: break-word;
|
||||
}
|
||||
.panel, .metric-card, .roadmap-item {
|
||||
background: #ffffff;
|
||||
border: 1px solid var(--line-soft);
|
||||
border-radius: 8px;
|
||||
padding: 22px;
|
||||
box-shadow: 0 1px 2px rgba(27, 54, 93, 0.04);
|
||||
min-width: 0;
|
||||
}
|
||||
.metric-card {
|
||||
display: grid;
|
||||
grid-template-columns: minmax(112px, 0.28fr) minmax(0, 1fr);
|
||||
gap: 18px;
|
||||
align-content: start;
|
||||
min-height: 0;
|
||||
}
|
||||
.metric-card-head {
|
||||
display: grid;
|
||||
gap: 10px;
|
||||
align-content: start;
|
||||
}
|
||||
.metric-card strong {
|
||||
display: block;
|
||||
margin: 0;
|
||||
color: var(--brand);
|
||||
font-family: var(--mono);
|
||||
font-size: 2rem;
|
||||
font-weight: 500;
|
||||
line-height: 1;
|
||||
font-variant-numeric: tabular-nums;
|
||||
}
|
||||
.metric-label {
|
||||
color: var(--muted);
|
||||
font-size: 13px;
|
||||
line-height: 1.45;
|
||||
overflow-wrap: break-word;
|
||||
}
|
||||
.metric-card-body {
|
||||
min-width: 0;
|
||||
}
|
||||
.metric-card-body .compact-list {
|
||||
gap: 7px;
|
||||
max-width: 76ch;
|
||||
}
|
||||
.metric-card-body .compact-list li {
|
||||
overflow-wrap: break-word;
|
||||
word-break: normal;
|
||||
}
|
||||
.chart-figure {
|
||||
margin: 0;
|
||||
padding: 18px;
|
||||
border: 1px solid var(--line-soft);
|
||||
border-radius: 8px;
|
||||
background: #ffffff;
|
||||
box-shadow: 0 1px 2px rgba(27, 54, 93, 0.04);
|
||||
}
|
||||
.chart-figure svg {
|
||||
width: 100%;
|
||||
height: auto;
|
||||
display: block;
|
||||
overflow: visible;
|
||||
}
|
||||
.chart-figure text {
|
||||
fill: var(--ink);
|
||||
font-family: var(--serif);
|
||||
font-size: 13px;
|
||||
}
|
||||
.chart-title {
|
||||
fill: var(--brand);
|
||||
font-size: 16px;
|
||||
font-weight: 500;
|
||||
}
|
||||
.chart-line {
|
||||
fill: none;
|
||||
stroke: var(--brand);
|
||||
stroke-width: 2;
|
||||
}
|
||||
figcaption {
|
||||
margin-top: 12px;
|
||||
padding-top: 10px;
|
||||
border-top: 1px solid var(--line-soft);
|
||||
color: var(--muted);
|
||||
font-size: 13px;
|
||||
line-height: 1.5;
|
||||
text-wrap: pretty;
|
||||
}
|
||||
table {
|
||||
width: 100%;
|
||||
border-collapse: collapse;
|
||||
font-size: 14px;
|
||||
}
|
||||
th, td {
|
||||
padding: 12px 10px;
|
||||
text-align: left;
|
||||
border-bottom: 1px solid var(--line-soft);
|
||||
vertical-align: top;
|
||||
}
|
||||
th {
|
||||
color: var(--brand);
|
||||
font-weight: 500;
|
||||
font-size: 12px;
|
||||
}
|
||||
td:first-child, th:first-child { width: 96px; }
|
||||
.world-readiness {
|
||||
margin-top: 16px;
|
||||
display: grid;
|
||||
gap: 16px;
|
||||
}
|
||||
.section-head > .world-readiness { grid-column: 1; }
|
||||
.world-readiness-head {
|
||||
display: grid;
|
||||
grid-template-columns: minmax(0, 1fr) auto;
|
||||
gap: 16px;
|
||||
align-items: start;
|
||||
}
|
||||
.world-readiness-head p {
|
||||
margin-top: 8px;
|
||||
max-width: 72ch;
|
||||
}
|
||||
.world-status {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
min-height: 30px;
|
||||
padding: 4px 10px;
|
||||
border-radius: 6px;
|
||||
background: var(--brand-soft);
|
||||
color: var(--brand);
|
||||
font-size: 13px;
|
||||
white-space: nowrap;
|
||||
}
|
||||
.evidence-kpis {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(3, minmax(0, 1fr));
|
||||
gap: 10px;
|
||||
}
|
||||
.evidence-kpi {
|
||||
padding: 14px;
|
||||
border: 1px solid var(--line-soft);
|
||||
border-radius: 8px;
|
||||
background: var(--wash);
|
||||
min-width: 0;
|
||||
}
|
||||
.evidence-kpi span {
|
||||
display: block;
|
||||
color: var(--muted);
|
||||
font-size: 12px;
|
||||
}
|
||||
.evidence-kpi strong {
|
||||
display: block;
|
||||
margin-top: 4px;
|
||||
color: var(--brand);
|
||||
font-family: var(--mono);
|
||||
font-size: 1.5rem;
|
||||
font-weight: 500;
|
||||
line-height: 1;
|
||||
font-variant-numeric: tabular-nums;
|
||||
}
|
||||
.evidence-kpi small {
|
||||
display: block;
|
||||
margin-top: 8px;
|
||||
color: var(--muted);
|
||||
line-height: 1.45;
|
||||
overflow-wrap: break-word;
|
||||
}
|
||||
.evidence-list {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||
gap: 10px;
|
||||
}
|
||||
.evidence-item {
|
||||
padding: 14px;
|
||||
border: 1px solid var(--line-soft);
|
||||
border-radius: 8px;
|
||||
background: #ffffff;
|
||||
min-width: 0;
|
||||
}
|
||||
.evidence-item span {
|
||||
color: var(--brand);
|
||||
font-family: var(--mono);
|
||||
font-size: 11px;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
.evidence-item h4 {
|
||||
margin: 4px 0 8px;
|
||||
color: var(--ink);
|
||||
font-size: 1rem;
|
||||
font-weight: 500;
|
||||
line-height: 1.3;
|
||||
}
|
||||
.evidence-item h5 {
|
||||
margin: 12px 0 6px;
|
||||
color: var(--brand);
|
||||
font-size: 12px;
|
||||
font-weight: 500;
|
||||
}
|
||||
.evidence-item p {
|
||||
margin: 0;
|
||||
max-width: none;
|
||||
color: var(--muted);
|
||||
overflow-wrap: break-word;
|
||||
}
|
||||
.blocked-checks {
|
||||
margin: 0;
|
||||
padding-left: 1.05em;
|
||||
color: var(--muted);
|
||||
font-size: 13px;
|
||||
line-height: 1.45;
|
||||
}
|
||||
.blocked-checks li {
|
||||
overflow-wrap: break-word;
|
||||
}
|
||||
.blocked-checks li::marker {
|
||||
color: var(--brand);
|
||||
}
|
||||
.blocked-checks-empty {
|
||||
font-size: 13px;
|
||||
}
|
||||
.roadmap {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(3, minmax(0, 1fr));
|
||||
gap: 16px;
|
||||
}
|
||||
.step {
|
||||
display: inline-flex;
|
||||
margin-bottom: 12px;
|
||||
min-height: 28px;
|
||||
align-items: center;
|
||||
padding: 3px 8px;
|
||||
border-radius: 6px;
|
||||
background: var(--brand-soft);
|
||||
color: var(--brand);
|
||||
font-size: 12px;
|
||||
}
|
||||
.unlock {
|
||||
margin-top: 14px;
|
||||
color: var(--muted);
|
||||
font-size: 13px;
|
||||
}
|
||||
@media (max-width: 980px) {
|
||||
.topbar-inner {
|
||||
grid-template-columns: minmax(0, 1fr) auto;
|
||||
padding: 8px 16px;
|
||||
}
|
||||
.nav-shell { grid-template-columns: 1fr; gap: 6px; }
|
||||
.report-mark { display: none; }
|
||||
.report-nav a { min-width: 72px; }
|
||||
.hero-grid, .section-head { grid-template-columns: 1fr; }
|
||||
.section-head > .world-readiness { grid-column: auto; }
|
||||
.hero-grid { gap: 24px; }
|
||||
.score-strip { grid-template-columns: repeat(2, minmax(0, 1fr)); }
|
||||
.metrics-primary, .metric-detail-grid, .two-col, .metric-grid, .chart-grid, .roadmap { grid-template-columns: 1fr; }
|
||||
.evidence-list { grid-template-columns: 1fr; }
|
||||
.metric-card { grid-template-columns: 1fr; }
|
||||
h1 { font-size: 2.75rem; }
|
||||
}
|
||||
@media (max-width: 540px) {
|
||||
.wrap { padding: 34px 16px 72px; }
|
||||
.topbar-inner { gap: 10px; }
|
||||
.report-nav {
|
||||
display: flex;
|
||||
gap: 2px;
|
||||
}
|
||||
.report-nav a {
|
||||
min-width: 66px;
|
||||
min-height: 38px;
|
||||
padding: 0 8px;
|
||||
font-size: 12px;
|
||||
}
|
||||
.language-switch button { min-width: 38px; min-height: 32px; padding: 0 8px; }
|
||||
.hero { padding-top: 8px; }
|
||||
h1 { max-width: 8em; font-size: 2.35rem; }
|
||||
.lead { font-size: 1rem; }
|
||||
.hero-meta span, .badges span { font-size: 12px; }
|
||||
.score-strip { grid-template-columns: 1fr; }
|
||||
section { margin-top: 34px; padding-top: 34px; }
|
||||
.panel, .metric-card, .roadmap-item, .chart-figure, .hero-card { padding: 18px; }
|
||||
.world-readiness-head, .evidence-kpis { grid-template-columns: 1fr; }
|
||||
.metric-card { grid-template-columns: 1fr; gap: 10px; }
|
||||
.metric-card strong { margin-bottom: 2px; }
|
||||
.metric-summary-list li { grid-template-columns: auto minmax(0, 1fr) auto; }
|
||||
table { font-size: 13px; }
|
||||
th, td { padding: 10px 7px; }
|
||||
}
|
||||
@media (prefers-reduced-motion: reduce) {
|
||||
html { scroll-behavior: auto; }
|
||||
*, *::before, *::after { transition-duration: 0.01ms !important; }
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
(function () {
|
||||
var buttons = Array.prototype.slice.call(document.querySelectorAll("[data-set-lang]"));
|
||||
var navLinks = Array.prototype.slice.call(document.querySelectorAll(".report-nav a"));
|
||||
var sections = navLinks
|
||||
.map(function (link) { return document.querySelector(link.getAttribute("href")); })
|
||||
.filter(Boolean);
|
||||
var progressBar = document.querySelector(".progress-bar");
|
||||
function setLanguage(lang) {
|
||||
document.body.setAttribute("data-report-lang", lang);
|
||||
document.documentElement.setAttribute("lang", lang);
|
||||
buttons.forEach(function (button) {
|
||||
button.setAttribute("aria-pressed", button.getAttribute("data-set-lang") === lang ? "true" : "false");
|
||||
});
|
||||
}
|
||||
function updateProgress() {
|
||||
var scrollTop = window.scrollY || document.documentElement.scrollTop;
|
||||
var height = Math.max(1, document.documentElement.scrollHeight - window.innerHeight);
|
||||
var pct = Math.min(100, Math.max(0, (scrollTop / height) * 100));
|
||||
if (progressBar) progressBar.style.transform = "scaleX(" + pct / 100 + ")";
|
||||
var active = sections[0];
|
||||
sections.forEach(function (section) {
|
||||
if (section.getBoundingClientRect().top <= 110) active = section;
|
||||
});
|
||||
navLinks.forEach(function (link) {
|
||||
link.setAttribute("aria-current", link.getAttribute("href") === "#" + active.id ? "true" : "false");
|
||||
});
|
||||
}
|
||||
buttons.forEach(function (button) {
|
||||
button.addEventListener("click", function () {
|
||||
setLanguage(button.getAttribute("data-set-lang"));
|
||||
});
|
||||
});
|
||||
window.addEventListener("scroll", updateProgress, { passive: true });
|
||||
window.addEventListener("resize", updateProgress);
|
||||
setLanguage("zh-CN");
|
||||
updateProgress();
|
||||
})();
|
||||
+99
-23
@@ -2,7 +2,64 @@
|
||||
|
||||
`YAO = Yielding AI Outcomes`,中文可理解为:产出 AI 结果,交付真实成果。它强调的不是生成更多 prompt 文本,而是沉淀可复用的 AI 资产与可落地的实际结果。
|
||||
|
||||
`yao-meta-skill` 是一套轻量但严谨的系统,用来创建、评估、打包和治理可复用的 agent skill。
|
||||
`yao-meta-skill` 用来创建、评估、打包和治理可复用的 agent skill。1.0 的重点是把重复工作流整理成可安装、可阅读、可跨平台的 skill 包;2.0 进一步升级为 Skill OS,把建模、跨端编译、输出评测、评审工作台、证据账本、包体验证、发布门禁和后续迭代串成一套完整流程。
|
||||
|
||||
[快速开始](#快速开始) · [Skill OS 2.0 升级](#skill-os-20-升级) · [从 1.0 到 2.0](#从-10-到-20) · [Operator UX 命令](#operator-ux-命令) · [加权质量评测](#加权质量评测) · [与其他元 Skill 的适用差异](#与其他元-skill-的适用差异)
|
||||
|
||||
## Skill OS 2.0 升级
|
||||
|
||||
Skill OS 2.0 保留 `yao-meta-skill` 原来的轻量入口,但把 skill 的生命周期说得更清楚。它不止生成 `SKILL.md`,还会围绕这个 skill 生成结构化契约、目标平台适配、评测证据、发布门禁和运营报告。
|
||||
|
||||
- **Skill IR(技能中间表示)**:用平台无关的结构记录意图、触发方式、输入输出、边界、参考资料和交付产物。
|
||||
- **目标编译与适配器**:把同一份 skill 语义编译到 OpenAI、Claude、通用 agent skill、Agent Skills 兼容包和 VS Code 使用场景。
|
||||
- **输出评测实验室**:覆盖触发评测、输出断言、执行证据、耗时与 token 证据、基准复现、盲评材料包、答案钥匙和评审裁决报告。
|
||||
- **Review Studio 2.0(评审工作台)**:把意图、触发、输出评测、上下文成本、运行时检查、信任扫描、Skill Atlas、采用漂移、豁免、批注、发布证据、警告、阻塞项和修复动作放在同一个 HTML 页面。
|
||||
- **证据与发布治理**:提供证据一致性、包体验证、安装模拟、运行时权限探测、世界级证据接收、证据账本、操作运行手册和公开宣传守卫。
|
||||
- **SkillOps 闭环**:通过元数据级采用漂移、遥测 hook、自适应建议、日报/周报和组合级漂移信号,把发布后的反馈带回下一轮迭代。
|
||||
|
||||
当前发布口径:仓库已经适合进入测试版和外部试用,但更强的“世界级”公开宣传仍然受证据门禁约束。真实生产模型证据、真人盲评证据、原生权限执行和真实客户端遥测会继续作为独立证据任务推进,不会被包装成已经完成。
|
||||
|
||||
相关产物:
|
||||
|
||||
- [1.0 vs 2.0 可视化对比报告](../.previews/yao-meta-skill-2-comparison/index.html)
|
||||
- [中文桌面预览图](../.previews/yao-meta-skill-2-comparison/yao-meta-skill-1-vs-2.png)
|
||||
- [英文桌面预览图](../.previews/yao-meta-skill-2-comparison/yao-meta-skill-1-vs-2-en.png)
|
||||
|
||||
## 从 1.0 到 2.0
|
||||
|
||||
| 维度 | 1.0 重点 | 2.0 升级 |
|
||||
| --- | --- | --- |
|
||||
| 产品定位 | 创建、重构、评估和打包可复用 skill。 | 治理 skill 的完整生命周期:创建、编译、评测、评审、发布、遥测和迭代。 |
|
||||
| 架构模型 | 以 `SKILL.md`、`agents/interface.yaml`、manifest 和报告文件为主。 | 引入 Skill IR、目标编译器、适配器、门禁契约、证据账本、发布锁和行动型评审页面。 |
|
||||
| 跨端交付 | 主要覆盖 OpenAI、Claude 和通用包体。 | 扩展到 Agent Skills 兼容包和 VS Code 使用场景,并把兼容结果写入 registry 可读记录。 |
|
||||
| 质量模型 | 触发、结构和报告式评审。 | 输出评测、基准复现、执行证据、失败披露、盲评材料包和证据一致性检查。 |
|
||||
| 报告体验 | 概览 HTML 和首次评审页面。 | 双语 Skill Overview v2、Review Studio 2.0、评审批注、行动卡片、图表和审计型报告契约。 |
|
||||
| 发布边界 | 能生成包体并做基础校验。 | 包体验证、安装模拟、运行时权限探测、发布锁、公开宣传守卫和操作运行手册。 |
|
||||
| 运营闭环 | 更多依赖手动反馈和本地迭代。 | 采用漂移、元数据遥测、SkillOps 报告、自适应建议和组合级漂移检测。 |
|
||||
|
||||
## 2.0 使用场景
|
||||
|
||||
- **从重复工作创建新 skill**:从 workflow 笔记、prompt 集合、转录、runbook 或文档模式出发,生成精简入口、明确输入输出、参考资料、报告和最轻量的必要门禁。
|
||||
- **把个人 skill 升级成团队资产**:补齐接口契约、manifest、目标适配器、信任检查、输出评测、评审豁免、发布说明和 Review Studio 证据,再交给多人复用。
|
||||
- **准备测试版发布**:运行包体验证、安装模拟、兼容检查、运行时权限探测和证据一致性检查,把测试版就绪和更强公开声明分开处理。
|
||||
- **发布后继续迭代**:用元数据级遥测、采用漂移、feedback log、SkillOps 报告和自适应建议判断下一步是补文档、补 eval、改 skill,还是调整治理规则。
|
||||
- **与其他元 skill 搭配使用**:保留 Anthropic/OpenAI 式对话创建和精简写作方法的优势,在需要证据、可移植性、发布门禁和长期维护时用 `yao-meta-skill` 加固。
|
||||
|
||||
## Operator UX 命令
|
||||
|
||||
这组只读辅助命令把维护者最常见的判断变成可复验诊断:
|
||||
|
||||
```bash
|
||||
python3 scripts/yao.py install-status --expected-source .
|
||||
python3 scripts/yao.py localized-doc-sync-check
|
||||
python3 scripts/yao.py pr-review-report 4 --repo yaojingang/yao-meta-skill
|
||||
```
|
||||
|
||||
- `install-status` 会说明当前 skill 是从 `.codex/skills`、`.agents/skills` 还是 disabled mirror(禁用镜像)被发现,并提示是否存在重复激活。
|
||||
- `localized-doc-sync-check` 会检查中文 README 是否同步包含英文 README 首页新增的公开说明模块。
|
||||
- `pr-review-report` 会只读获取 GitHub PR 元数据、变更文件、状态检查和建议本地命令,不会合并或修改 PR。
|
||||
|
||||
## 能力面
|
||||
|
||||
它把粗糙的 workflow、transcript、prompt、notes 和 runbook 转成可复用的 skill 包,并具备:
|
||||
|
||||
@@ -12,35 +69,53 @@
|
||||
- 深度起草前先做一轮更有人味的意图对话,并通过 intent confidence gate 判断理解是否足够清楚;如果不够清楚,会继续补 1 到 2 个高杠杆问题
|
||||
- 深度起草前会静默执行 GitHub benchmark scan 和 reference synthesis,优先学习高质量公开项目与世界级模式;只有遇到真实冲突或不确定性时才显式抬给用户
|
||||
- 会主动询问用户是否有希望借鉴的参考对象,只学习其中的模式抽象、结构和标准,不复制原文或私密内容
|
||||
- 新建 skill 时自动生成一份极简白底 HTML 可视化说明
|
||||
- 新建 skill 时自动生成一份默认中文、可切换英文的 HTML 可视化说明报告
|
||||
- 提供 Review Studio 2.0,把意图、触发、输出评测、上下文、运行时、信任、采用漂移、豁免、批注、发布证据和修复动作汇总到一个页面
|
||||
- 提供 Skill OS 2.0 审计,把世界级要求拆成本地证据、人类证据缺口和外部证据缺口
|
||||
- 提供证据计划、证据账本、证据接收契约、提交审查队列、操作运行手册和公开宣传守卫,避免把计划中的工作写成已经完成
|
||||
- 提供基准复现 manifest、证据一致性检查、输出评测实验室、盲评包和评审裁决报告
|
||||
- 提供运行时权限探测、Python 兼容性门禁、包体验证和安装模拟
|
||||
- 提供 prompt quality profile,把需求模型、RTF 映射、复杂度和提示词质量检查沉淀成 reviewer 可见证据,而不是塞进 `SKILL.md`
|
||||
- 提供 artifact design profile,约束报告、教程、仪表盘、截图和评审页的视觉与质量标准
|
||||
- 提供系统思考模型,记录边界、反馈环、漂移风险、复发失败模式和高杠杆改进点
|
||||
- 首次建包后会自动给出 3 个最有价值的下一步迭代方向
|
||||
- 提供一个紧凑的 HTML review viewer,方便第一次人工理解和评审
|
||||
- 提供一个轻量 feedback log,不必每次都走完整 promotion 流程
|
||||
- 提供本地优先、只记录元数据的 adoption drift 报告、CLI 运行捕获、外部客户端事件 hook、hook recipe 和 JSONL 导入
|
||||
- 提供显式来源的 adaptive proposal loop,从脱敏重复偏好里生成需要人工批准的改进建议
|
||||
- 提供 SkillOps 机会评分、决策策略、日报、周报和组合级漂移信号
|
||||
- 提供一个 with-skill vs baseline 的对比报告,便于快速看增量收益
|
||||
- 提供一个更像对话发现流程的 archetype-aware quickstart,引导新 skill 落到 scaffold、production、library 或 governed 的合适形态
|
||||
- 中性的源元数据以及面向不同客户端的适配层
|
||||
- Skill IR 作为平台无关语义契约,并提供编译报告和客户端适配层
|
||||
- registry audit 元数据,包含 package version、owner、license、checksum 和 compatibility matrix
|
||||
- 内建的治理、晋升和 portability 检查
|
||||
|
||||
## 架构图
|
||||
|
||||
Hero 版可以压缩成一条主线:把零散输入变成一个可治理、可复用的 skill 包。
|
||||
Hero 版可以压缩成一条主线:Skill OS 2.0 把零散输入变成一个可治理、可评测、可发布、可持续迭代的 skill 包。
|
||||
|
||||
```mermaid
|
||||
flowchart LR
|
||||
A["输入<br/>workflow / prompt / transcript / docs / notes"] --> B["路由<br/>SKILL.md"]
|
||||
B --> C["设计<br/>方法 + 质量门"]
|
||||
C --> D["执行<br/>create / validate / eval / promote"]
|
||||
D --> E["产出<br/>skill 包 + 报告 + 适配层"]
|
||||
A["输入<br/>workflow / prompt / transcript / docs / notes"] --> B["意图建模<br/>任务 / 输出 / 排除项 / 标准"]
|
||||
B --> C["Skill IR<br/>触发 / 契约 / 资源 / 证据"]
|
||||
C --> D["Skill 包<br/>SKILL.md / references / scripts / reports"]
|
||||
C --> E["目标编译<br/>OpenAI / Claude / generic / Agent Skills / VS Code"]
|
||||
D --> F["评测实验<br/>触发 / 输出 / 基准 / 运行时"]
|
||||
E --> F
|
||||
F --> G["Review Studio<br/>门禁 / 警告 / 动作 / 豁免"]
|
||||
G --> H["发布边界<br/>包体验证 / 安装模拟 / 宣传守卫"]
|
||||
H --> I["SkillOps 闭环<br/>反馈 / 采用漂移 / 下一轮迭代"]
|
||||
I --> B
|
||||
```
|
||||
|
||||
10 秒理解这张图:
|
||||
|
||||
- **输入**:从零散的 workflow、prompt、文档和笔记出发。
|
||||
- **路由**:先用精简的 `SKILL.md` 定义边界和触发。
|
||||
- **设计**:选择合适的 archetype、gates 和资源拆分方式。
|
||||
- **执行**:通过统一 CLI 完成创建、校验、优化和晋升。
|
||||
- **产出**:最终得到 skill 包,以及评测、治理和 portability 证据。
|
||||
- **输入**:从零散 workflow、prompt、文档和笔记出发,不要求一开始就有完整规格。
|
||||
- **意图建模**:先把任务、输出物、排除项、约束和质量标准说清楚,再生成文件。
|
||||
- **Skill IR**:把语义契约和具体平台格式拆开,避免被某一个客户端锁死。
|
||||
- **打包与编译**:从同一份源模型生成精简 skill 包和目标平台适配产物。
|
||||
- **评测与评审**:把触发行为、输出质量、运行时检查和信任信号变成可复查证据。
|
||||
- **发布与运营**:只在当前证据边界内发布,再把采用漂移和评审反馈带回下一轮迭代。
|
||||
|
||||
## 加权质量评测
|
||||
|
||||
@@ -60,7 +135,7 @@ flowchart LR
|
||||
| 2 | Anthropic Skill Creator | 67.5 | 方法论和迭代闭环强,但本地执行可靠性和治理覆盖较弱。 |
|
||||
| 3 | OpenAI Skill Creator | 50.5 | 更适合作为精简 skill 写作方法论教材,而不是完整工程系统。 |
|
||||
|
||||
## 适用场景
|
||||
## 与其他元 Skill 的适用差异
|
||||
|
||||
- 如果你要的是**团队复用、显式边界、质量门、治理、可移植性和长期维护**,更适合 `Yao Meta Skill`。
|
||||
- 如果你要的是**对话优先的创作循环和人工引导式迭代**,更适合 `Anthropic Skill Creator`。
|
||||
@@ -73,30 +148,31 @@ flowchart LR
|
||||
2. 先做一轮简短但更有人味的意图对话,把真实任务、输出物、边界、约束和你在意的质量标准说清楚。
|
||||
3. 先让 `quickstart` 澄清意图,再静默跑 benchmark scan 和 reference synthesis;只有当意图还不清楚,或者设计路线真的冲突时,才会显式继续追问或让你拍板。
|
||||
4. 使用 archetype-aware 的 `quickstart` 或完整作者流,在 scaffold、production、library 或 governed 模式下生成或改进 skill 包。
|
||||
5. 新建 skill 后,会默认附带 `reports/intent-dialogue.md`、`reports/intent-confidence.md`、`reports/reference-synthesis.md`、`reports/artifact-design-profile.md`、`reports/prompt-quality-profile.md`、`reports/skill-overview.html`、`reports/review-viewer.html` 和 `reports/iteration-directions.md`;后续还可以通过 feedback log 和 baseline compare 快速收集意见、查看增量收益,而不必每次都走完整 promotion 流程。
|
||||
5. 新建 skill 后,先看 `reports/skill-interpretation.html` 理解双语解释报告,再打开 `reports/skill-overview.html` 查看概述、指标、原理、边界、质量、风险、资产和路线,最后用 `reports/review-studio.html` 检查发布阻塞、权限批准和证据路径。
|
||||
|
||||
## 当前结果
|
||||
|
||||
- 当前 `make test` 可通过
|
||||
- 当前 `make test` 和 GitHub Actions `test` 可通过
|
||||
- 当前回归集下 trigger eval 为 `0` 误触发、`0` 漏触发
|
||||
- train / dev / holdout 三层评测均通过
|
||||
- 中文真实表达已经纳入触发评测,覆盖“做一个 skill”“沉淀成可复用能力”“优化已有 skill”“补 trigger 评测”等常见说法
|
||||
- `openai`、`claude`、`generic` 三个目标的 packaging contract 校验通过
|
||||
- registry 记录的目标平台从 OpenAI、Claude、Generic 扩展到 Agent Skills 和 VS Code 相关适配
|
||||
- Review Studio 当前汇总 16 个门禁,包体验证、安装模拟、证据一致性和发布声明边界已经进入报告链路
|
||||
|
||||
## 当前优势
|
||||
|
||||
最新加权评测中,Yao 的总分是 `91.5/100`。最强的部分集中在团队级 skill 资产真正需要的能力上:
|
||||
最新加权评测中,Yao 的总分是 `91.5/100`。2.0 的强项集中在团队级 skill 资产真正需要的能力上:
|
||||
|
||||
- **方法论深度 `9.5`**:已经形成正式的 skill engineering doctrine,覆盖 archetype、gate selection、non-skill decision、governance 和 resource boundary。
|
||||
- **工具链完整度 `9.5`**:初始化、校验、benchmark scan、description optimization、报告、晋升检查、打包、CI 和 portability checks 已经串成一条完整工具链。
|
||||
- **Eval / 测试严谨度 `9.5`**:触发评测覆盖 train/dev/holdout、blind holdout、adversarial holdout、judge-backed blind eval、route confusion、drift history 和 promotion gate。
|
||||
- **治理 / 生命周期 `9.5`**:重要 skill 可以声明 owner、生命周期、review cadence、maturity score、trust boundary、promotion decision 和 regression history。
|
||||
- **工具链完整度 `9.5`**:初始化、校验、benchmark scan、description optimization、Skill IR、目标编译、报告、晋升检查、打包、CI 和 portability checks 已经串成一条完整工具链。
|
||||
- **Eval / 测试严谨度 `9.5`**:触发评测覆盖 train/dev/holdout、blind holdout、adversarial holdout、judge-backed blind eval、route confusion、drift history、output eval 和 promotion gate。
|
||||
- **治理 / 生命周期 `9.5`**:重要 skill 可以声明 owner、生命周期、review cadence、maturity score、trust boundary、promotion decision、regression history、release lock 和 evidence ledger。
|
||||
- **本地可执行可靠性 `9.5`**:可以通过 `make test`、`make ci-test` 和统一 CLI 在本地复验。
|
||||
- **可移植 / 分发能力 `9.0`**:源码保持中性,adapter、degradation rule、packaging contract 和 portability score 负责保留跨环境可复用语义。
|
||||
- **上下文纪律 / 精简度 `8.0`**:入口仍保持在预算内,但因为系统承载了更多报告、案例、benchmark 和证据资产,这一项被持续作为约束跟踪。
|
||||
- **上手 / 评审体验 `6.5`**:quickstart、HTML overview、side-by-side review viewer 和 feedback log 已经改善首次体验,但仍是下一阶段最值得优化的 UX 维度。
|
||||
|
||||
整体方向很明确:入口尽量轻,评测尽量硬,治理显性化,同时继续降低首次创建和人工评审的摩擦。
|
||||
整体方向很明确:入口尽量轻,评测尽量硬,治理显性化;测试版可以开放试用,但公开宣传会继续受证据账本约束。
|
||||
|
||||
## 为什么是 Yao
|
||||
|
||||
@@ -107,7 +183,7 @@ flowchart LR
|
||||
|
||||
## 它能做什么
|
||||
|
||||
这个项目帮助你把 skill 从一次性 prompt,升级成可创建、可重构、可评估、可打包的长期能力包。
|
||||
这个项目帮助你把 skill 从一次性 prompt,升级成可创建、可重构、可评估、可打包、可审计、可发布、可持续迭代的长期能力包。
|
||||
|
||||
它的设计逻辑很简单:
|
||||
|
||||
|
||||
@@ -41,6 +41,8 @@ This document tracks the first migration path from Yao Meta Skill 1.x to the Ski
|
||||
python3 scripts/build_skill_atlas.py --workspace-root . --output-dir skill_atlas --report-html reports/skill_atlas.html --report-json reports/skill_atlas.json
|
||||
```
|
||||
|
||||
This also writes `skill_atlas/drift_signals.json` from aggregate `reports/adoption_drift_report.json` files. Do not migrate or publish raw `reports/telemetry_events.jsonl` logs.
|
||||
|
||||
5. Keep legacy trigger eval gates intact while output eval coverage grows.
|
||||
|
||||
6. Move adapter-specific logic toward future compiler commands after IR fields are stable.
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
{"text":"新生成的 Skill 报告默认使用中文简体,并在右上角提供英文切换。"}
|
||||
{"text":"HTML 报告需要双语能力,但默认内容应该保持中文简体。"}
|
||||
{"text":"报告排版采用白底 Kami 风格,图表、模块和导航都要清晰。"}
|
||||
{"text":"Skill 概览报告需要更多图表模块,避免右侧文本挤在一起。"}
|
||||
{"text":"自适应升级必须先生成提案,不能直接自动修改源文件。"}
|
||||
{"text":"用户偏好扫描必须由用户提供明确路径,不要默认扫描私人日志。"}
|
||||
{"text":"每次升级都需要测试、覆盖报告和可审计证据,推送前要跑 CI。"}
|
||||
{"text":"涉及 GitHub 推送时,要保留证据链,避免把计划当作完成证明。"}
|
||||
@@ -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"]
|
||||
}
|
||||
|
||||
@@ -0,0 +1,45 @@
|
||||
# World-Class Evidence Intake
|
||||
|
||||
This directory defines the intake contract for external and human evidence required before `yao-meta-skill` can honestly claim public world-class completion.
|
||||
|
||||
The templates in `templates/` are review aids only. They do not count as accepted evidence. Real submissions belong in `evidence/world_class/submissions/`, which is intentionally gitignored by default so provider metadata, reviewer identity, or client integration notes can be reviewed before anything is committed.
|
||||
|
||||
Run:
|
||||
|
||||
```bash
|
||||
SUBMISSIONS_DIR="${SUBMISSIONS_DIR:-evidence/world_class/submissions}"
|
||||
python3 scripts/yao.py world-class-preflight . --submissions-dir "$SUBMISSIONS_DIR"
|
||||
python3 scripts/yao.py world-class-submission-kit . --output-dir "$SUBMISSIONS_DIR"
|
||||
# Alternative: prefill artifact SHA-256 digests while keeping drafts template-only.
|
||||
python3 scripts/yao.py world-class-submission-kit . --output-dir "$SUBMISSIONS_DIR" --prefill-artifacts
|
||||
python3 scripts/yao.py world-class-intake . --submissions-dir "$SUBMISSIONS_DIR"
|
||||
python3 scripts/yao.py world-class-submission-review . --submissions-dir "$SUBMISSIONS_DIR"
|
||||
python3 scripts/yao.py world-class-ledger . --submissions-dir "$SUBMISSIONS_DIR"
|
||||
python3 scripts/yao.py world-class-runbook . --submissions-dir "$SUBMISSIONS_DIR"
|
||||
```
|
||||
|
||||
The intake validator checks:
|
||||
|
||||
- the evidence key matches the current world-class ledger
|
||||
- the category and source type match the expected human or external evidence path
|
||||
- artifact references are declared
|
||||
- real submissions reference concrete files inside the skill directory and include a matching SHA-256 digest for each artifact
|
||||
- real submissions use the canonical `<evidence-key>.json` filename expected by the ledger
|
||||
- credentials, secrets, raw user content, and raw provider prompts are explicitly excluded
|
||||
- raw prompt, output, transcript, message, credential, secret, token, and API-key fields are rejected even when nested
|
||||
- human adjudication packets must preserve reviewer identity, review date, A/B winner, confidence, and a required rationale before answer-key reveal can count
|
||||
- planned work, local command-only output, and metadata fallback are not claimed as completion evidence
|
||||
|
||||
Run `world-class-preflight` before assigning external or human work. It checks local files, redacted environment readiness, human/external prerequisites, and source-evidence blockers without accepting evidence or printing secrets.
|
||||
|
||||
The generated intake report also includes an `operator_checklist` for each pending evidence item. Use it to find the template path, target submission path, preparation command, validation command, required provenance, success checks, and privacy boundary before asking a reviewer or external operator to submit evidence.
|
||||
|
||||
The submission kit command creates editable JSON drafts plus a local README for an external operator or human reviewer. Use `--prefill-artifacts` when you want the kit to insert SHA-256 digests for currently available local aggregate artifacts. Prefill is operator convenience only: those drafts still keep `template_only: true` and do not count as evidence until the real run or review exists, the packet is edited truthfully, every artifact ref points to a local aggregate evidence file with a matching `sha256`, and `world-class-intake` validates it.
|
||||
|
||||
The submission kit separates artifact rows into `submission-ref` and `supporting-evidence`. `submission-ref` rows are the concrete paths expected in a real packet's `artifact_refs`; `supporting-evidence` rows help reviewers audit the packet and do not all need to be copied into the submission.
|
||||
|
||||
The submission review command renders a read-only queue that compares valid packets with the source evidence checks and current ledger state. It is for reviewer triage only; it does not accept evidence or make the world-class claim true.
|
||||
|
||||
The operator runbook is the step-by-step coordination cockpit for finishing the remaining real-world work. It includes a Coordination Plan that separates user-required provider, reviewer, native-client, and telemetry actions from assistant-run commands, plus a Release Gate that mirrors the ledger, claim guard, benchmark, Review Studio, evidence consistency, and final CI checks. The runbook is operational guidance only: planning rows, submission drafts, and release-gate rows keep `counts_as_completion: false`.
|
||||
|
||||
Accepted intake means "ready for ledger review", not evidence that the final public claim is ready. The ledger remains the source of truth for `ready_to_claim_world_class`.
|
||||
@@ -0,0 +1,440 @@
|
||||
{
|
||||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||
"$id": "https://example.local/yao-meta-skill/world-class-evidence-intake.schema.json",
|
||||
"title": "Yao World-Class Evidence Intake",
|
||||
"description": "Real submissions must use the canonical <evidence-key>.json filename and the runtime validator rejects nested raw prompt, output, transcript, message, credential, secret, token, and API-key fields.",
|
||||
"type": "object",
|
||||
"required": [
|
||||
"schema_version",
|
||||
"evidence_key",
|
||||
"template_only",
|
||||
"category",
|
||||
"source_type",
|
||||
"submitted_by",
|
||||
"submitted_at",
|
||||
"summary",
|
||||
"artifact_refs",
|
||||
"provenance",
|
||||
"privacy",
|
||||
"anti_overclaim",
|
||||
"attestation"
|
||||
],
|
||||
"properties": {
|
||||
"schema_version": {
|
||||
"const": "1.0"
|
||||
},
|
||||
"evidence_key": {
|
||||
"enum": [
|
||||
"provider-holdout",
|
||||
"human-adjudication",
|
||||
"native-permission-enforcement",
|
||||
"native-client-telemetry"
|
||||
]
|
||||
},
|
||||
"template_only": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"category": {
|
||||
"enum": [
|
||||
"human",
|
||||
"external"
|
||||
]
|
||||
},
|
||||
"source_type": {
|
||||
"type": "string",
|
||||
"minLength": 3
|
||||
},
|
||||
"submitted_by": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
},
|
||||
"submitted_at": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
},
|
||||
"summary": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
},
|
||||
"artifact_refs": {
|
||||
"type": "array",
|
||||
"minItems": 1,
|
||||
"items": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"path",
|
||||
"kind",
|
||||
"contains_raw_content"
|
||||
],
|
||||
"properties": {
|
||||
"path": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
},
|
||||
"kind": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
},
|
||||
"contains_raw_content": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"sha256": {
|
||||
"type": "string",
|
||||
"pattern": "^[0-9a-fA-F]{64}$"
|
||||
},
|
||||
"note": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"additionalProperties": true
|
||||
}
|
||||
},
|
||||
"provenance": {
|
||||
"type": "object",
|
||||
"additionalProperties": true
|
||||
},
|
||||
"privacy": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"raw_user_content_included",
|
||||
"raw_provider_prompt_included",
|
||||
"credentials_included",
|
||||
"secrets_included"
|
||||
],
|
||||
"properties": {
|
||||
"raw_user_content_included": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"raw_provider_prompt_included": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"credentials_included": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"secrets_included": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"notes": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"additionalProperties": true
|
||||
},
|
||||
"anti_overclaim": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"planned_work_counts_as_evidence",
|
||||
"metadata_fallback_counts_as_native_enforcement",
|
||||
"pending_review_counts_as_human_decision",
|
||||
"local_command_runner_counts_as_provider_model"
|
||||
],
|
||||
"properties": {
|
||||
"planned_work_counts_as_evidence": {
|
||||
"const": false
|
||||
},
|
||||
"metadata_fallback_counts_as_native_enforcement": {
|
||||
"const": false
|
||||
},
|
||||
"pending_review_counts_as_human_decision": {
|
||||
"const": false
|
||||
},
|
||||
"local_command_runner_counts_as_provider_model": {
|
||||
"const": false
|
||||
}
|
||||
},
|
||||
"additionalProperties": false
|
||||
},
|
||||
"attestation": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"real_external_or_human_evidence",
|
||||
"reviewer_or_operator_identity_present",
|
||||
"artifact_refs_reviewed",
|
||||
"privacy_contract_satisfied",
|
||||
"ledger_reviewer_approved",
|
||||
"ledger_reviewer",
|
||||
"ledger_reviewed_at"
|
||||
],
|
||||
"properties": {
|
||||
"real_external_or_human_evidence": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"reviewer_or_operator_identity_present": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"artifact_refs_reviewed": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"privacy_contract_satisfied": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"ledger_reviewer_approved": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"ledger_reviewer": {
|
||||
"type": "string"
|
||||
},
|
||||
"ledger_reviewed_at": {
|
||||
"type": "string"
|
||||
},
|
||||
"notes": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"additionalProperties": true
|
||||
}
|
||||
},
|
||||
"allOf": [
|
||||
{
|
||||
"if": {
|
||||
"properties": {
|
||||
"template_only": {
|
||||
"const": false
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"template_only"
|
||||
]
|
||||
},
|
||||
"then": {
|
||||
"properties": {
|
||||
"submitted_at": {
|
||||
"pattern": "^\\d{4}-\\d{2}-\\d{2}(?:T\\d{2}:\\d{2}:\\d{2}Z)?$"
|
||||
},
|
||||
"submitted_by": {
|
||||
"not": {
|
||||
"enum": [
|
||||
"operator with provider credentials",
|
||||
"human reviewer",
|
||||
"target client or installer integrator",
|
||||
"Browser/Chrome/IDE/provider client integrator"
|
||||
]
|
||||
}
|
||||
},
|
||||
"artifact_refs": {
|
||||
"items": {
|
||||
"required": [
|
||||
"path",
|
||||
"kind",
|
||||
"contains_raw_content",
|
||||
"sha256"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"if": {
|
||||
"properties": {
|
||||
"template_only": {
|
||||
"const": false
|
||||
},
|
||||
"evidence_key": {
|
||||
"const": "provider-holdout"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"template_only",
|
||||
"evidence_key"
|
||||
]
|
||||
},
|
||||
"then": {
|
||||
"properties": {
|
||||
"artifact_refs": {
|
||||
"contains": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"path": {
|
||||
"const": "reports/output_execution_runs.json"
|
||||
},
|
||||
"kind": {
|
||||
"const": "aggregate-report"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"path",
|
||||
"kind"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"if": {
|
||||
"properties": {
|
||||
"template_only": {
|
||||
"const": false
|
||||
},
|
||||
"evidence_key": {
|
||||
"const": "human-adjudication"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"template_only",
|
||||
"evidence_key"
|
||||
]
|
||||
},
|
||||
"then": {
|
||||
"properties": {
|
||||
"artifact_refs": {
|
||||
"allOf": [
|
||||
{
|
||||
"contains": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"path": {
|
||||
"const": "reports/output_review_adjudication.json"
|
||||
},
|
||||
"kind": {
|
||||
"const": "adjudication-report"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"path",
|
||||
"kind"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"contains": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"path": {
|
||||
"const": "reports/output_review_decisions.json"
|
||||
},
|
||||
"kind": {
|
||||
"const": "review-decisions"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"path",
|
||||
"kind"
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"if": {
|
||||
"properties": {
|
||||
"template_only": {
|
||||
"const": false
|
||||
},
|
||||
"evidence_key": {
|
||||
"const": "native-permission-enforcement"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"template_only",
|
||||
"evidence_key"
|
||||
]
|
||||
},
|
||||
"then": {
|
||||
"properties": {
|
||||
"artifact_refs": {
|
||||
"allOf": [
|
||||
{
|
||||
"contains": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"path": {
|
||||
"const": "reports/runtime_permission_probes.json"
|
||||
},
|
||||
"kind": {
|
||||
"const": "runtime-probe-report"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"path",
|
||||
"kind"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"contains": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"path": {
|
||||
"const": "reports/install_simulation.json"
|
||||
},
|
||||
"kind": {
|
||||
"const": "installer-enforcement-report"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"path",
|
||||
"kind"
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"if": {
|
||||
"properties": {
|
||||
"template_only": {
|
||||
"const": false
|
||||
},
|
||||
"evidence_key": {
|
||||
"const": "native-client-telemetry"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"template_only",
|
||||
"evidence_key"
|
||||
]
|
||||
},
|
||||
"then": {
|
||||
"properties": {
|
||||
"artifact_refs": {
|
||||
"allOf": [
|
||||
{
|
||||
"contains": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"path": {
|
||||
"const": "reports/adoption_drift_report.json"
|
||||
},
|
||||
"kind": {
|
||||
"const": "adoption-drift-report"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"path",
|
||||
"kind"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"contains": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"path": {
|
||||
"const": "reports/telemetry_hook_recipes.json"
|
||||
},
|
||||
"kind": {
|
||||
"const": "hook-recipes"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"path",
|
||||
"kind"
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"additionalProperties": true
|
||||
}
|
||||
@@ -0,0 +1,64 @@
|
||||
{
|
||||
"schema_version": "1.0",
|
||||
"evidence_key": "human-adjudication",
|
||||
"template_only": true,
|
||||
"category": "human",
|
||||
"source_type": "blind-ab-review",
|
||||
"submitted_by": "human reviewer",
|
||||
"submitted_at": "YYYY-MM-DD",
|
||||
"summary": "Real blind A/B reviewer decisions recorded before the answer key was opened.",
|
||||
"artifact_refs": [
|
||||
{
|
||||
"path": "reports/output_review_adjudication.json",
|
||||
"kind": "adjudication-report",
|
||||
"contains_raw_content": false,
|
||||
"note": "Must show pending_count == 0, invalid_decision_count == 0, blind_review_attested == true, and review_integrity.blind_pack_sha256."
|
||||
},
|
||||
{
|
||||
"path": "reports/output_review_decisions.json",
|
||||
"kind": "review-decisions",
|
||||
"contains_raw_content": false,
|
||||
"note": "Reviewer identity, reviewed_at, winner_variant, confidence, required reason, reviewer_attestation, and review_integrity only."
|
||||
}
|
||||
],
|
||||
"provenance": {
|
||||
"reviewer": "name or team handle",
|
||||
"reviewed_at": "YYYY-MM-DD",
|
||||
"blind_pack_path": "reports/output_blind_review_pack.md",
|
||||
"blind_pack_sha256": "sha256 from reports/output_review_adjudication.json review_integrity.blind_pack_sha256",
|
||||
"answer_key_opened_after_decisions": true,
|
||||
"blind_review_completed_before_answer_key": true,
|
||||
"decision_fields": [
|
||||
"case_id",
|
||||
"winner_variant",
|
||||
"confidence",
|
||||
"reason",
|
||||
"reviewer_attestation",
|
||||
"review_integrity"
|
||||
],
|
||||
"reviewer_reason_required": true
|
||||
},
|
||||
"privacy": {
|
||||
"raw_user_content_included": false,
|
||||
"raw_provider_prompt_included": false,
|
||||
"credentials_included": false,
|
||||
"secrets_included": false,
|
||||
"notes": "Reviewer reasons must be based on the visible rubric and must not include private customer data."
|
||||
},
|
||||
"anti_overclaim": {
|
||||
"planned_work_counts_as_evidence": false,
|
||||
"metadata_fallback_counts_as_native_enforcement": false,
|
||||
"pending_review_counts_as_human_decision": false,
|
||||
"local_command_runner_counts_as_provider_model": false
|
||||
},
|
||||
"attestation": {
|
||||
"real_external_or_human_evidence": false,
|
||||
"reviewer_or_operator_identity_present": false,
|
||||
"artifact_refs_reviewed": false,
|
||||
"privacy_contract_satisfied": false,
|
||||
"ledger_reviewer_approved": false,
|
||||
"ledger_reviewer": "",
|
||||
"ledger_reviewed_at": "",
|
||||
"notes": "Copy this template into submissions/ after a real reviewer completes blind decisions."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
{
|
||||
"schema_version": "1.0",
|
||||
"evidence_key": "native-client-telemetry",
|
||||
"template_only": true,
|
||||
"category": "external",
|
||||
"source_type": "native-client-telemetry",
|
||||
"submitted_by": "Browser/Chrome/IDE/provider client integrator",
|
||||
"submitted_at": "YYYY-MM-DD",
|
||||
"summary": "Metadata-only production events imported from a real external client into the local drift loop.",
|
||||
"artifact_refs": [
|
||||
{
|
||||
"path": "reports/adoption_drift_report.json",
|
||||
"kind": "adoption-drift-report",
|
||||
"contains_raw_content": false,
|
||||
"note": "Must show summary.source_types.external > 0 and adoption_sample_count > 0."
|
||||
},
|
||||
{
|
||||
"path": "reports/telemetry_hook_recipes.json",
|
||||
"kind": "hook-recipes",
|
||||
"contains_raw_content": false,
|
||||
"note": "Documents local-first metadata-only client integration."
|
||||
}
|
||||
],
|
||||
"provenance": {
|
||||
"client": "Browser/Chrome/IDE/provider client",
|
||||
"native_host_manifest": "/local/path/not/committed",
|
||||
"event_source": "external",
|
||||
"metadata_only": true
|
||||
},
|
||||
"privacy": {
|
||||
"raw_user_content_included": false,
|
||||
"raw_provider_prompt_included": false,
|
||||
"credentials_included": false,
|
||||
"secrets_included": false,
|
||||
"notes": "Never commit telemetry JSONL with raw prompts, outputs, transcripts, notes, or messages."
|
||||
},
|
||||
"anti_overclaim": {
|
||||
"planned_work_counts_as_evidence": false,
|
||||
"metadata_fallback_counts_as_native_enforcement": false,
|
||||
"pending_review_counts_as_human_decision": false,
|
||||
"local_command_runner_counts_as_provider_model": false
|
||||
},
|
||||
"attestation": {
|
||||
"real_external_or_human_evidence": false,
|
||||
"reviewer_or_operator_identity_present": false,
|
||||
"artifact_refs_reviewed": false,
|
||||
"privacy_contract_satisfied": false,
|
||||
"ledger_reviewer_approved": false,
|
||||
"ledger_reviewer": "",
|
||||
"ledger_reviewed_at": "",
|
||||
"notes": "Copy this template into submissions/ after real client events have been imported."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,61 @@
|
||||
{
|
||||
"schema_version": "1.0",
|
||||
"evidence_key": "native-permission-enforcement",
|
||||
"template_only": true,
|
||||
"category": "external",
|
||||
"source_type": "runtime-permission-guard",
|
||||
"submitted_by": "target client or installer integrator",
|
||||
"submitted_at": "YYYY-MM-DD",
|
||||
"summary": "A real target or installer guard enforces approved high-permission capabilities at runtime.",
|
||||
"artifact_refs": [
|
||||
{
|
||||
"path": "reports/runtime_permission_probes.json",
|
||||
"kind": "runtime-probe-report",
|
||||
"contains_raw_content": false,
|
||||
"note": "Must show native_enforcement_count > 0 and failure_count == 0 for target-native completion; installer_enforcement_pass_count is supporting local evidence only."
|
||||
},
|
||||
{
|
||||
"path": "reports/install_simulation.json",
|
||||
"kind": "installer-enforcement-report",
|
||||
"contains_raw_content": false,
|
||||
"note": "Shows local package installer enforcement. This does not replace target-native or external runtime guard evidence."
|
||||
},
|
||||
{
|
||||
"path": "dist/targets/<target>/adapter.json",
|
||||
"kind": "target-adapter",
|
||||
"contains_raw_content": false,
|
||||
"note": "Adapter may claim native enforcement only when the target really enforces it."
|
||||
}
|
||||
],
|
||||
"provenance": {
|
||||
"target": "openai|claude|generic|vscode|other",
|
||||
"guard_location": "client or installer component",
|
||||
"guard_scope": "target-client-native",
|
||||
"guard_blocks_undeclared_capability": true,
|
||||
"metadata_fallback_retained_for_other_targets": true,
|
||||
"notes": "Use target-client-native for client-enforced guards or external-installer-runtime-guard for a real external installer guard."
|
||||
},
|
||||
"privacy": {
|
||||
"raw_user_content_included": false,
|
||||
"raw_provider_prompt_included": false,
|
||||
"credentials_included": false,
|
||||
"secrets_included": false,
|
||||
"notes": "Runtime guard proof should avoid environment dumps."
|
||||
},
|
||||
"anti_overclaim": {
|
||||
"planned_work_counts_as_evidence": false,
|
||||
"metadata_fallback_counts_as_native_enforcement": false,
|
||||
"pending_review_counts_as_human_decision": false,
|
||||
"local_command_runner_counts_as_provider_model": false
|
||||
},
|
||||
"attestation": {
|
||||
"real_external_or_human_evidence": false,
|
||||
"reviewer_or_operator_identity_present": false,
|
||||
"artifact_refs_reviewed": false,
|
||||
"privacy_contract_satisfied": false,
|
||||
"ledger_reviewer_approved": false,
|
||||
"ledger_reviewer": "",
|
||||
"ledger_reviewed_at": "",
|
||||
"notes": "Copy this template into submissions/ only after a real client or installer guard exists."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
{
|
||||
"schema_version": "1.0",
|
||||
"evidence_key": "provider-holdout",
|
||||
"template_only": true,
|
||||
"category": "external",
|
||||
"source_type": "provider-output-eval",
|
||||
"submitted_by": "operator with provider credentials",
|
||||
"submitted_at": "YYYY-MM-DD",
|
||||
"summary": "Provider-backed holdout run with model, timing, token metadata, and aggregate output hashes.",
|
||||
"artifact_refs": [
|
||||
{
|
||||
"path": "reports/output_execution_runs.json",
|
||||
"kind": "aggregate-report",
|
||||
"contains_raw_content": false,
|
||||
"note": "Must show model_executed_count > 0 and token_observed_count > 0."
|
||||
}
|
||||
],
|
||||
"provenance": {
|
||||
"provider": "<provider>",
|
||||
"model": "<provider-model>",
|
||||
"run_command": "python3 scripts/yao.py output-exec --provider-runner <provider> --provider-model <provider-model> --timeout-seconds 60",
|
||||
"credential_env": "<PROVIDER_API_KEY_ENV>",
|
||||
"model_env": "YAO_OUTPUT_EVAL_MODEL",
|
||||
"model_default": "<provider-default-model>",
|
||||
"credential_material_committed": false
|
||||
},
|
||||
"privacy": {
|
||||
"raw_user_content_included": false,
|
||||
"raw_provider_prompt_included": false,
|
||||
"credentials_included": false,
|
||||
"secrets_included": false,
|
||||
"notes": "Commit aggregate metadata and hashes only."
|
||||
},
|
||||
"anti_overclaim": {
|
||||
"planned_work_counts_as_evidence": false,
|
||||
"metadata_fallback_counts_as_native_enforcement": false,
|
||||
"pending_review_counts_as_human_decision": false,
|
||||
"local_command_runner_counts_as_provider_model": false
|
||||
},
|
||||
"attestation": {
|
||||
"real_external_or_human_evidence": false,
|
||||
"reviewer_or_operator_identity_present": false,
|
||||
"artifact_refs_reviewed": false,
|
||||
"privacy_contract_satisfied": false,
|
||||
"ledger_reviewer_approved": false,
|
||||
"ledger_reviewer": "",
|
||||
"ledger_reviewed_at": "",
|
||||
"notes": "Copy this template into submissions/ and set all booleans truthfully after the real provider run."
|
||||
}
|
||||
}
|
||||
@@ -6,10 +6,47 @@
|
||||
"context_budget_tier": "production",
|
||||
"context_budget_limit": 1000,
|
||||
"skill_body_tokens": 718,
|
||||
"other_text_tokens": 1946,
|
||||
"other_text_tokens": 1842,
|
||||
"estimated_initial_load_tokens": 790,
|
||||
"estimated_total_text_tokens": 2664,
|
||||
"relevant_file_count": 12,
|
||||
"estimated_total_text_tokens": 2560,
|
||||
"deferred_resource_tokens": 1657,
|
||||
"deferred_resource_warn_threshold": 120000,
|
||||
"deferred_resource_dirs": [
|
||||
{
|
||||
"path": "references",
|
||||
"estimated_tokens": 554,
|
||||
"file_count": 4
|
||||
},
|
||||
{
|
||||
"path": "scripts",
|
||||
"estimated_tokens": 367,
|
||||
"file_count": 1
|
||||
},
|
||||
{
|
||||
"path": "input",
|
||||
"estimated_tokens": 315,
|
||||
"file_count": 1
|
||||
},
|
||||
{
|
||||
"path": "outputs",
|
||||
"estimated_tokens": 263,
|
||||
"file_count": 1
|
||||
},
|
||||
{
|
||||
"path": "evals",
|
||||
"estimated_tokens": 158,
|
||||
"file_count": 1
|
||||
}
|
||||
],
|
||||
"large_deferred_resource_dirs": [],
|
||||
"deferred_resource_governance": {
|
||||
"status": "not-required",
|
||||
"large_dir_count": 0,
|
||||
"governed_large_dir_count": 0,
|
||||
"directories": [],
|
||||
"summary": "No large deferred resource directory exceeds the per-dir threshold."
|
||||
},
|
||||
"relevant_file_count": 11,
|
||||
"unused_resource_dirs": [],
|
||||
"quality_signal_points": 130,
|
||||
"quality_density": 164.6
|
||||
|
||||
@@ -6,10 +6,47 @@
|
||||
"context_budget_tier": "production",
|
||||
"context_budget_limit": 1000,
|
||||
"skill_body_tokens": 658,
|
||||
"other_text_tokens": 1603,
|
||||
"other_text_tokens": 1499,
|
||||
"estimated_initial_load_tokens": 760,
|
||||
"estimated_total_text_tokens": 2261,
|
||||
"relevant_file_count": 13,
|
||||
"estimated_total_text_tokens": 2157,
|
||||
"deferred_resource_tokens": 1030,
|
||||
"deferred_resource_warn_threshold": 120000,
|
||||
"deferred_resource_dirs": [
|
||||
{
|
||||
"path": "scripts",
|
||||
"estimated_tokens": 278,
|
||||
"file_count": 1
|
||||
},
|
||||
{
|
||||
"path": "references",
|
||||
"estimated_tokens": 266,
|
||||
"file_count": 3
|
||||
},
|
||||
{
|
||||
"path": "outputs",
|
||||
"estimated_tokens": 203,
|
||||
"file_count": 1
|
||||
},
|
||||
{
|
||||
"path": "input",
|
||||
"estimated_tokens": 153,
|
||||
"file_count": 1
|
||||
},
|
||||
{
|
||||
"path": "evals",
|
||||
"estimated_tokens": 130,
|
||||
"file_count": 1
|
||||
}
|
||||
],
|
||||
"large_deferred_resource_dirs": [],
|
||||
"deferred_resource_governance": {
|
||||
"status": "not-required",
|
||||
"large_dir_count": 0,
|
||||
"governed_large_dir_count": 0,
|
||||
"directories": [],
|
||||
"summary": "No large deferred resource directory exceeds the per-dir threshold."
|
||||
},
|
||||
"relevant_file_count": 12,
|
||||
"unused_resource_dirs": [],
|
||||
"quality_signal_points": 130,
|
||||
"quality_density": 171.1
|
||||
|
||||
+782
-585
File diff suppressed because it is too large
Load Diff
+12
-12
@@ -14,18 +14,18 @@ Build governed incident command packets. Use when asked to standardize incident
|
||||
|
||||
| Candidate | Tokens | Dev FP | Dev FN | Dev Near | Holdout FP | Holdout FN |
|
||||
| --- | ---: | ---: | ---: | ---: | ---: | ---: |
|
||||
| `Current` | 37 | 0 | 1 | 1.0 | 0 | 1 |
|
||||
| `Guardrail` | 51 | 0 | 1 | 1.0 | 1 | 1 |
|
||||
| `Balanced` | 54 | 0 | 1 | 1.0 | 0 | 1 |
|
||||
| `Boundary` | 78 | 0 | 1 | 1.0 | 0 | 1 |
|
||||
| `Artifact Aware` | 78 | 0 | 1 | 1.0 | 0 | 1 |
|
||||
| `Current` | 37 | 0 | 0 | 1.0 | 0 | 1 |
|
||||
| `Balanced` | 54 | 0 | 0 | 1.0 | 0 | 1 |
|
||||
| `Boundary` | 78 | 0 | 0 | 1.0 | 0 | 1 |
|
||||
| `Artifact Aware` | 78 | 0 | 0 | 1.0 | 0 | 1 |
|
||||
| `Guardrail` | 51 | 0 | 1 | 1.0 | 0 | 1 |
|
||||
|
||||
## Acceptance Gates
|
||||
|
||||
| Gate | Winner FP | Winner FN | Current FP | Current FN | Baseline FP | Baseline FN |
|
||||
| --- | ---: | ---: | ---: | ---: | ---: | ---: |
|
||||
| Holdout | 0 | 1 | 0 | 1 | 0 | 2 |
|
||||
| Blind Holdout | 0 | 0 | 0 | 0 | 0 | 1 |
|
||||
| Holdout | 0 | 1 | 0 | 1 | 0 | 1 |
|
||||
| Blind Holdout | 0 | 0 | 0 | 0 | 0 | 0 |
|
||||
| Judge Blind Holdout | 0 | 0 | 0 | 0 | 0 | 0 |
|
||||
| Adversarial Holdout | 0 | 0 | 0 | 0 | 0 | 0 |
|
||||
|
||||
@@ -34,21 +34,21 @@ Build governed incident command packets. Use when asked to standardize incident
|
||||
| Gate | Winner Gap | Winner Risk | Winner Boundary Rate | Current Gap | Baseline Gap |
|
||||
| --- | ---: | --- | ---: | ---: | ---: |
|
||||
| Holdout | 0.023 | overlap | 0.0 | 0.023 | 0.101 |
|
||||
| Blind Holdout | 0.418 | healthy | 0.167 | 0.418 | 0.063 |
|
||||
| Adversarial Holdout | 0.598 | healthy | 0.0 | 0.598 | 0.172 |
|
||||
| Blind Holdout | 0.417 | healthy | 0.0 | 0.417 | 0.374 |
|
||||
| Adversarial Holdout | 0.538 | watch | 0.167 | 0.538 | 0.467 |
|
||||
|
||||
## Judge Blind Summary
|
||||
|
||||
| Gate | Winner Agreement | Winner Mean Confidence | Current Agreement | Baseline Agreement |
|
||||
| --- | ---: | ---: | ---: | ---: |
|
||||
| Judge Blind Holdout | 1.0 | 0.657 | 1.0 | 1.0 |
|
||||
| Judge Blind Holdout | 1.0 | 0.677 | 1.0 | 1.0 |
|
||||
|
||||
## Family Health
|
||||
|
||||
| Gate | Winner Clean Families | Winner Weakest Family | Current Clean Families | Baseline Clean Families |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| Holdout | 5/6 | packet_assembly (1 errors) | 5/6 | 4/6 |
|
||||
| Blind Holdout | 6/6 | blind_summary_only (0 errors) | 6/6 | 5/6 |
|
||||
| Holdout | 5/6 | packet_assembly (1 errors) | 5/6 | 5/6 |
|
||||
| Blind Holdout | 6/6 | blind_summary_only (0 errors) | 6/6 | 6/6 |
|
||||
| Judge Blind Holdout | 6/6 | blind_summary_only (0 errors) | 6/6 | 6/6 |
|
||||
| Adversarial Holdout | 6/6 | adversarial_single_update_collision (0 errors) | 6/6 | 6/6 |
|
||||
|
||||
|
||||
@@ -37,9 +37,12 @@
|
||||
"weight": 0.32,
|
||||
"phrases": [
|
||||
"incident command packet",
|
||||
"incident command packets",
|
||||
"governed incident packet",
|
||||
"incident packet assembly",
|
||||
"incident review skill"
|
||||
"incident review skill",
|
||||
"incident review",
|
||||
"standardize incident review"
|
||||
]
|
||||
},
|
||||
"incident_inputs": {
|
||||
@@ -59,6 +62,8 @@
|
||||
"severity assessment",
|
||||
"severity",
|
||||
"impact scope",
|
||||
"incident review",
|
||||
"outage review",
|
||||
"sev"
|
||||
]
|
||||
},
|
||||
@@ -68,6 +73,8 @@
|
||||
"stakeholder update",
|
||||
"incident communication",
|
||||
"owner",
|
||||
"owners",
|
||||
"owner actions",
|
||||
"action ownership",
|
||||
"next actions"
|
||||
]
|
||||
@@ -76,6 +83,9 @@
|
||||
"weight": 0.1,
|
||||
"phrases": [
|
||||
"governed",
|
||||
"governed workflow",
|
||||
"reusable governed workflow",
|
||||
"standardize",
|
||||
"reviewed",
|
||||
"audited",
|
||||
"maintained",
|
||||
@@ -128,9 +138,13 @@
|
||||
"exclusive": true,
|
||||
"phrases": [
|
||||
"brainstorm",
|
||||
"sketch a future",
|
||||
"for later",
|
||||
"possible response ideas",
|
||||
"improve incident handling",
|
||||
"ideas for later"
|
||||
"ideas for later",
|
||||
"do not package",
|
||||
"do not package a reusable workflow"
|
||||
]
|
||||
},
|
||||
"summary_only": {
|
||||
|
||||
+2
-1
@@ -12,7 +12,8 @@
|
||||
"openai",
|
||||
"claude",
|
||||
"generic",
|
||||
"agent-skills-compatible"
|
||||
"agent-skills-compatible",
|
||||
"vscode"
|
||||
],
|
||||
"factory_components": [
|
||||
"templates",
|
||||
|
||||
@@ -0,0 +1,65 @@
|
||||
# Autonomous Adaptation Method
|
||||
|
||||
This reference defines the safe foundation for adaptive self-iteration.
|
||||
|
||||
## Scope
|
||||
|
||||
Adaptive iteration is proposal-only until a human explicitly approves a patch application workflow. The current implementation may:
|
||||
|
||||
- read one user-provided local source file;
|
||||
- redact sensitive text before storing evidence excerpts;
|
||||
- summarize repeated preferences and operational signals;
|
||||
- produce adaptation proposals with target files, risks, tests, and rollback plans.
|
||||
- draft a pending approval ledger entry from a reviewed patch, including patch SHA-256, target files, target baseline hashes, verifier commands, and rollback metadata.
|
||||
- dry-run an approved patch through `adapt-apply`, after patch hash, approval, target allowlist, and target baseline hash checks pass.
|
||||
- apply a patch only when the operator passes `--apply` and the approval ledger names the reviewer, reason, patch hash, target files, target file SHA-256 baselines, verification commands, and rollback plan.
|
||||
- automatically reverse an applied patch when `--run-verification` fails, unless the operator explicitly passes `--no-rollback-on-failure`.
|
||||
|
||||
It must not:
|
||||
|
||||
- scan shell history, browser history, chat logs, mail, or private folders by default;
|
||||
- infer permanent user memory from a single comment;
|
||||
- write source files as part of scan or proposal generation;
|
||||
- write source files through `adapt-apply` without explicit `--apply`;
|
||||
- apply a patch whose target files are outside both the proposal and approval allowlists;
|
||||
- apply a patch when an approved target file has changed since the reviewer recorded its baseline SHA-256;
|
||||
- leave a failed verified apply in place by default;
|
||||
- count proposals as completed implementation evidence.
|
||||
|
||||
## Flow
|
||||
|
||||
1. `adapt-scan` reads an explicit source path and writes `reports/user_patterns.json` plus `reports/user_patterns.md`.
|
||||
2. `adapt-propose` reads the pattern report and writes `reports/adaptation_proposals.json` plus `reports/adaptation_proposals.md`.
|
||||
3. A reviewer decides whether any proposal is worth implementing.
|
||||
4. `adapt-apply --write-template` creates `reports/adaptation_approval_ledger.json` and `reports/adaptation_regression_report.json` so the review surface exists before any patch is applied.
|
||||
5. `adapt-apply --prepare-approval --proposal-id <id> --patch-file <patch>` drafts a `pending-review` approval entry. It does not approve or apply the patch.
|
||||
6. A human reviewer changes the draft decision to `approved`, fills reviewer, reason, approval date, and optional expiry, then keeps the generated patch and target baseline hashes intact.
|
||||
7. `adapt-apply --proposal-id <id> --patch-file <patch>` defaults to a dry-run and records patch, target, approval, regression, and rollback evidence.
|
||||
8. `adapt-apply --apply --run-verification` may write files only after approval, patch hash, allowlist, target baseline hash, `git apply --check`, and safe regression command checks pass.
|
||||
9. If a verification command fails after a patch is applied, `adapt-apply` runs `git apply -R <patch>` by default and records `failed-rolled-back` plus rollback evidence in `reports/adaptation_regression_report.json`.
|
||||
|
||||
## Evidence Standard
|
||||
|
||||
Each proposal should include:
|
||||
|
||||
- the repeated pattern that triggered it;
|
||||
- redacted excerpts, never unredacted raw content;
|
||||
- target files and change intent;
|
||||
- risk level and boundary;
|
||||
- verification commands;
|
||||
- rollback plan;
|
||||
- a clear `proposal-only` status.
|
||||
|
||||
Each approved application should include:
|
||||
|
||||
- reviewer, reason, approval date, and optional expiry;
|
||||
- exact patch SHA-256;
|
||||
- target file allowlist;
|
||||
- target file SHA-256 baselines for every patch target, or `__absent__` for approved new files;
|
||||
- regression commands restricted to local `make` targets or local Python verifier scripts;
|
||||
- rollback command or plan.
|
||||
- rollback result if regression failed after an apply attempt.
|
||||
|
||||
## Review Boundary
|
||||
|
||||
The adaptive loop improves iteration quality, but it does not replace normal review. Any proposal touching trigger behavior, reports, packaging, telemetry, privacy, or governance must still pass the same tests and release gates as a manually designed change. `adapt-apply` evidence proves that an approved patch path was checked or applied; it does not make world-class external or human evidence complete.
|
||||
@@ -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 .
|
||||
@@ -36,6 +36,8 @@ Do not claim archive readiness when package verification reports unsafe zip path
|
||||
|
||||
Do not claim install readiness when install simulation cannot extract the archive into a temporary skill root, load `SKILL.md` frontmatter, read `manifest.json`, read `agents/interface.yaml`, find the overview and Review Studio reports, or load each generated adapter.
|
||||
|
||||
Do not sync a local or active install from source until the same package has passed install preflight. `scripts/sync_local_install.py` must run install simulation against the configured package directory and fail before copying files when any target/capability pair lacks active permission approval or target-specific enforcement evidence. Use `--skip-install-preflight` only for isolated diagnostics, not for release or active install.
|
||||
|
||||
Do not include raw `reports/telemetry_events.jsonl` in a distributed package. Include only aggregate adoption drift reports, and block release review when telemetry contains raw prompts, outputs, transcripts, notes, or messages.
|
||||
|
||||
Review waiver evidence may be distributed as `reports/review_waivers.md/json` because it is metadata-only reviewer accountability. Do not store raw prompts, outputs, transcripts, credentials, or private customer detail in waiver reasons.
|
||||
@@ -53,5 +55,6 @@ A reviewer should be able to answer:
|
||||
5. Which reports prove trust and runtime readiness?
|
||||
6. Was the installable archive verified, and which checksum identifies it?
|
||||
7. Was the archive install-simulated in a temporary local skill root?
|
||||
8. What changed since the previous package, and does the declared version bump match the recommended bump?
|
||||
9. Are adoption and drift signals summarized without packaging raw local telemetry?
|
||||
8. Did local or active install sync preserve that preflight and installer permission gate?
|
||||
9. What changed since the previous package, and does the declared version bump match the recommended bump?
|
||||
10. Are adoption and drift signals summarized without packaging raw local telemetry?
|
||||
|
||||
@@ -68,11 +68,37 @@ Minimum gates:
|
||||
- `trigger_eval.py`
|
||||
- `cross_packager.py` for requested targets
|
||||
|
||||
## Governed
|
||||
|
||||
Use when:
|
||||
|
||||
- the skill affects incident, release, compliance, security, or organizational standards
|
||||
- external distribution, public claims, or high-permission scripts require reviewable evidence
|
||||
- wrong output or wrong activation can cause operational, legal, trust, or reputational harm
|
||||
|
||||
Default deliverables:
|
||||
|
||||
- everything required for Library
|
||||
- explicit owner, lifecycle, review cadence, and expiry-aware approvals
|
||||
- trust/security reports for scripts, dependencies, permissions, secrets, and package hash
|
||||
- output eval evidence with blind review status and reviewer-visible boundaries
|
||||
- world-class or public-claim evidence ledger when public readiness is claimed
|
||||
|
||||
Minimum gates:
|
||||
|
||||
- Library gates
|
||||
- `trust_check.py`
|
||||
- runtime permission probes for packaged adapters
|
||||
- review waiver ledger for accepted warning-level risk
|
||||
- Review Studio before release
|
||||
- claim guard before public world-class language
|
||||
|
||||
## Escalation Rules
|
||||
|
||||
- stay in Scaffold unless reuse is clearly real
|
||||
- move to Production when team reuse or route confusion matters
|
||||
- move to Library when the skill becomes shared infrastructure or a governed asset
|
||||
- move to Library when the skill becomes shared infrastructure
|
||||
- move to Governed when the skill needs explicit risk ownership, high-permission review, or public-claim evidence
|
||||
|
||||
## Context Discipline
|
||||
|
||||
|
||||
@@ -69,6 +69,16 @@ python3 scripts/yao.py output-exec --runner-command '["python3","scripts/local_o
|
||||
|
||||
This verifies the command-runner contract, timing capture, grading path, and failure handling. It must not be described as provider-backed model evidence.
|
||||
|
||||
For provider-backed evidence, use the bundled provider runner with real credentials:
|
||||
|
||||
```bash
|
||||
YAO_OUTPUT_EVAL_MODEL=gpt-4.1-mini \
|
||||
OPENAI_API_KEY=... \
|
||||
python3 scripts/yao.py output-exec --provider-runner openai
|
||||
```
|
||||
|
||||
The provider runner calls an OpenAI Responses API compatible endpoint, reads input files relative to `evals/output/`, returns `execution_kind: "model"`, and records observed token usage when the provider returns usage fields. If the API key or model is missing, the runner must fail instead of falling back to fixtures or pretending model evidence exists. Use `--provider-base-url` only for reviewed compatible endpoints; non-default HTTPS hosts require `--allow-custom-base-url`, and plain HTTP is allowed only with `--allow-insecure-localhost` for local test servers.
|
||||
|
||||
## Blind A/B Review
|
||||
|
||||
Every output eval run should also generate:
|
||||
@@ -81,7 +91,7 @@ The review pack must hide whether Variant A or Variant B came from the baseline
|
||||
|
||||
## Reviewer Adjudication
|
||||
|
||||
After blind review, record reviewer choices in `reports/output_review_decisions.json` and run:
|
||||
After blind review, record reviewer choices in `reports/output_review_decisions.json` with `reviewer`, `reviewed_at`, `winner_variant`, optional `confidence`, and a required rubric-based `reason`, then run:
|
||||
|
||||
```bash
|
||||
python3 scripts/adjudicate_output_review.py --write-template
|
||||
@@ -90,10 +100,13 @@ python3 scripts/yao.py output-review
|
||||
|
||||
The adjudication report writes:
|
||||
|
||||
- `reports/output_review_decisions.json`
|
||||
- `reports/output_review_adjudication.json`
|
||||
- `reports/output_review_adjudication.md`
|
||||
|
||||
When no reviewer decisions exist, the report should say the cases are pending. Do not count pending cases as human agreement. Only a real `winner_variant` of `A` or `B` should contribute to agreement rate, disagreement count, and reviewer judgment count.
|
||||
When no reviewer decisions exist, the report should say the cases are pending and Review Studio should link to the decisions template. Do not count pending cases as human agreement. Only a real `winner_variant` of `A` or `B` with reviewer metadata and a non-empty `reason` should contribute to agreement rate, disagreement count, and reviewer judgment count.
|
||||
|
||||
The adjudication report must preserve blind-review integrity: pending and invalid decisions should show the expected winner as hidden. Only reveal `expected_winner_variant` after a valid reviewer decision with rationale exists for that case.
|
||||
|
||||
## Anti-Overfitting
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -40,7 +40,7 @@ Production, library, and governed reviews should also show a blind A/B review pa
|
||||
|
||||
When `reports/output_execution_runs.json` exists, Review Studio should show the number of variant runs, command-executed runs, model-executed runs, recorded fixtures, timing-observed runs, and token-estimated runs. Recorded fixtures are valid reproducibility evidence, but they must not be described as model-executed output evidence.
|
||||
|
||||
When `reports/output_review_adjudication.json` exists, Review Studio should show reviewed pairs and pending pairs. Pending reviewer decisions are acceptable as an explicit state, but they must not be counted as agreement or human review evidence. Invalid adjudication records should block release because they make the blind review audit untrustworthy.
|
||||
When `reports/output_review_adjudication.json` exists, Review Studio should show reviewed pairs and pending pairs. Pending reviewer decisions are acceptable as an explicit state, but they must not be counted as agreement or human review evidence. For production, library, and governed packages, pending reviewer decisions should keep the Output Lab in `warn` until reviewer decisions are recorded or the warning is explicitly accepted in the waiver ledger. Invalid adjudication records should block release because they make the blind review audit untrustworthy.
|
||||
|
||||
The Operations Loop must never display raw telemetry logs. It should link only to `reports/adoption_drift_report.md`; privacy or schema violations are blockers.
|
||||
|
||||
@@ -65,10 +65,12 @@ Each action must include:
|
||||
- `evidence`
|
||||
- `verification_command`
|
||||
|
||||
`source_refs` must be structured entries with relative `path`, human label, kind, existence flag, best-effort line number, and relative link when the file exists. They should point to the smallest useful report or source file, not just a broad directory.
|
||||
`source_refs` must be structured entries with relative `path`, human label, kind, existence flag, best-effort line number, matched pattern, short source excerpt, and relative link when the file exists. They should point to the smallest useful report or source file, not just a broad directory. The HTML page should render the excerpt next to the link so reviewers can understand why a line anchor matters before opening the full artifact.
|
||||
|
||||
The HTML page should render these actions before the detailed supporting sections so a reviewer can move directly from warning to fix. Action entries do not change gate count or score; they make the current decision more operational.
|
||||
|
||||
For `world-class-evidence`, the action should also expose an evidence-step card for every pending evidence key. Each card should show the submission path, template path, blocked source checks, command handoff, first runbook steps, provenance requirements, success checks, evidence artifacts, and privacy boundary. These cards are collection guidance only; they must not count as accepted evidence or change world-class readiness.
|
||||
|
||||
## Review Annotations
|
||||
|
||||
`reports/review_annotations.json` is the structured ledger, and `reports/review_annotations.md` is the human-readable review note surface. Each annotation should include:
|
||||
|
||||
@@ -25,6 +25,16 @@ Every waiver must include:
|
||||
- `evidence`: optional path or note that explains the decision.
|
||||
- `scope`: default `current-release`.
|
||||
|
||||
## Gate Key Policy
|
||||
|
||||
The waiver ledger must track the Review Studio gate universe explicitly:
|
||||
|
||||
- `review_studio_gate_keys`: every gate Review Studio can render.
|
||||
- `waiverable_gate_keys`: warning gates that may receive bounded human acceptance.
|
||||
- `non_waivable_gate_keys`: gates that must not be accepted through a waiver.
|
||||
|
||||
When Review Studio adds or renames a gate, update the waiver gate policy and tests in the same change. `review-waivers` and `world-class-evidence` stay non-waivable: the first is the waiver mechanism itself, and the second can only be satisfied by accepted ledger evidence.
|
||||
|
||||
## Release Semantics
|
||||
|
||||
- Invalid waiver records block Review Studio.
|
||||
@@ -55,3 +65,12 @@ python3 scripts/yao.py review-waivers . \
|
||||
For a non-governed release where `permission-gates` is only a warning, the same command can name `--gate-key permission-gates`. Governed releases must instead provide reviewer, scope, reason, expiry, evidence, and target-enforcement fields in `security/permission_policy.json`.
|
||||
|
||||
Review Studio reads `reports/review_waivers.json` and links to `reports/review_waivers.md`.
|
||||
|
||||
## Candidate Actions
|
||||
|
||||
The waiver report also surfaces current candidate actions from local evidence:
|
||||
|
||||
- waiverable warning candidates, such as an `output-lab` warning caused by pending reviewer decisions or missing provider-backed runs
|
||||
- non-waivable boundaries, especially `world-class-evidence`, where pending ledger evidence cannot be converted into completion by a waiver
|
||||
|
||||
A waiver can make a bounded warning auditable for a release window. It cannot count as provider-backed evidence, human adjudication, native runtime enforcement, external telemetry, or public world-class readiness.
|
||||
|
||||
@@ -16,6 +16,7 @@ Single-skill quality is not enough for a team library. A skill portfolio also ne
|
||||
- Flag missing owner or review metadata.
|
||||
- Flag stale skills based on `updated_at` and `review_cadence`.
|
||||
- Extract no-route opportunities from failure notes.
|
||||
- Read aggregate adoption drift reports and flag telemetry drift without reading raw telemetry logs.
|
||||
|
||||
## Scope Policy
|
||||
|
||||
@@ -23,6 +24,12 @@ Atlas keeps a full catalog, but release gates should distinguish actionable libr
|
||||
|
||||
Use `skill_atlas/policy.json` to mark path prefixes as non-actionable when they are intentionally retained as examples, evolution snapshots, embedded generated skills, or validator fixtures. Non-actionable items still appear in the full report, route matrix, stale list, and owner gap list, but Review Studio should use the actionable counts for release readiness.
|
||||
|
||||
## Telemetry Link
|
||||
|
||||
Atlas may read each skill's aggregate `reports/adoption_drift_report.json` to surface portfolio drift signals such as no telemetry for production/library/governed skills, missed triggers, bad outputs, missing resources, script errors, and review-overdue counts. It must not read or package `reports/telemetry_events.jsonl`; raw telemetry remains local-only evidence owned by the skill.
|
||||
|
||||
Write drift output to `skill_atlas/drift_signals.json`. Non-actionable scopes stay visible in that file and in the HTML report, but only actionable drift signals should affect release readiness.
|
||||
|
||||
## Reviewer Gate
|
||||
|
||||
Use Atlas before promoting a single skill into a shared library. If an actionable route collision, missing owner, or stale governed skill appears, fix the portfolio boundary before adding more local complexity to one skill. Non-actionable issues should stay visible as evidence, not as release blockers.
|
||||
Use Atlas before promoting a single skill into a shared library. If an actionable route collision, missing owner, stale governed skill, or telemetry drift signal appears, fix the portfolio boundary before adding more local complexity to one skill. Non-actionable issues should stay visible as evidence, not as release blockers.
|
||||
|
||||
@@ -0,0 +1,53 @@
|
||||
# SkillOps Decision Policy
|
||||
|
||||
Use this policy when turning explicit-source conversation evidence into SkillOps opportunities, proposals, or release work. The goal is to make repeated user signals actionable without letting automation write durable instructions, skills, scripts, or evals without review.
|
||||
|
||||
## Decision Order
|
||||
|
||||
1. Classify the signal as no action, report only, Memory, AGENTS.md, existing Skill patch, candidate Skill, script, eval, report, merge, split, or archive.
|
||||
2. Prefer the smallest durable surface that fixes the repeated friction.
|
||||
3. Require evidence for every write action.
|
||||
4. Require a proposal or approval ledger entry before any source-file write.
|
||||
5. Map every proposed change to at least one verification command.
|
||||
|
||||
## Score Bands
|
||||
|
||||
SkillOps opportunities use a `0-100` score. Scores are advisory and never bypass approval.
|
||||
|
||||
| Score | Decision |
|
||||
| ---: | --- |
|
||||
| `85-100` | Ready for approval review |
|
||||
| `70-84` | Proposal review |
|
||||
| `50-69` | Observe more evidence |
|
||||
| `0-49` | Report only or no action |
|
||||
|
||||
High-risk items stay proposal-only even when their score is high.
|
||||
|
||||
## Action Mapping
|
||||
|
||||
| Pattern | Default Action | Durable Surface |
|
||||
| --- | --- | --- |
|
||||
| `language_default` | Patch existing skill | Report template or artifact doctrine |
|
||||
| `report_ui` | Patch existing skill | Report renderer, artifact doctrine, visual test |
|
||||
| `approval_safety` | AGENTS update | Governance guidance or approval policy |
|
||||
| `delivery_format` | Patch existing skill | CLI output, README, generated summary copy |
|
||||
| `evidence_testing` | Add eval | Focused regression, report-quality, or release gate |
|
||||
| Unknown pattern | Report only | Manual review queue |
|
||||
|
||||
## Safety Rules
|
||||
|
||||
- Do not scan private logs implicitly; only use explicit user-supplied sources.
|
||||
- Do not store raw conversation content in reports; use redacted excerpts and aggregate counts.
|
||||
- Do not write source files from a daily report run.
|
||||
- Do not count SkillOps reports as public world-class evidence.
|
||||
- Do not treat planned work, draft submissions, or generated proposals as accepted evidence.
|
||||
|
||||
## Verification
|
||||
|
||||
Every implementation that changes this policy should run:
|
||||
|
||||
```bash
|
||||
python3 tests/verify_skillops_opportunity.py
|
||||
python3 tests/verify_daily_skillops.py
|
||||
python3 tests/verify_yao_cli.py
|
||||
```
|
||||
@@ -17,6 +17,8 @@ The local event stream is `reports/telemetry_events.jsonl`. It is intentionally
|
||||
"event": "skill_activation",
|
||||
"skill": "example-skill",
|
||||
"version": "2.0.0",
|
||||
"source": "yao_cli",
|
||||
"command": "quickstart",
|
||||
"activation_type": "implicit",
|
||||
"outcome": "accepted",
|
||||
"failure_type": "none",
|
||||
@@ -26,10 +28,125 @@ The local event stream is `reports/telemetry_events.jsonl`. It is intentionally
|
||||
|
||||
Allowed events: `skill_activation`, `skill_output`, `script_run`, `review_event`.
|
||||
|
||||
Allowed sources: `manual`, `yao_cli`, `external`, `unknown`.
|
||||
|
||||
Allowed outcomes: `accepted`, `edited`, `rejected`, `missed`, `failed`, `reviewed`, `unknown`.
|
||||
|
||||
Allowed failure types: `wrong_trigger`, `under_trigger`, `bad_output`, `missing_resource`, `script_error`, `review_overdue`, `none`.
|
||||
|
||||
`source` and `command` are metadata fields. They may identify that `yao.py` ran `quickstart`, `validate`, `output-exec`, or another subcommand, but they must not include arguments, prompt text, file content, model output, transcripts, or reviewer notes.
|
||||
|
||||
## CLI Capture
|
||||
|
||||
`scripts/yao.py` can record metadata-only `script_run` events automatically. It is opt-in to keep release evidence reproducible and avoid surprising local writes:
|
||||
|
||||
```bash
|
||||
YAO_CLI_TELEMETRY=1 python3 scripts/yao.py validate .
|
||||
```
|
||||
|
||||
Optional destination override:
|
||||
|
||||
```bash
|
||||
YAO_CLI_TELEMETRY=1 \
|
||||
YAO_CLI_TELEMETRY_EVENTS=/tmp/yao-telemetry.jsonl \
|
||||
python3 scripts/yao.py output-exec
|
||||
```
|
||||
|
||||
Equivalent global flags are available before the subcommand:
|
||||
|
||||
```bash
|
||||
python3 scripts/yao.py --record-cli-telemetry validate .
|
||||
python3 scripts/yao.py --no-cli-telemetry validate .
|
||||
```
|
||||
|
||||
Successful CLI runs record `event=script_run`, `source=yao_cli`, `outcome=accepted`, and `failure_type=none`. Failed CLI runs record `outcome=failed` and `failure_type=script_error`. The command name is normalized to the subcommand only; command arguments are never recorded.
|
||||
|
||||
## External Client Emit
|
||||
|
||||
External clients, browser extensions, editor adapters, or wrapper scripts can emit one sanitized event at a time into a local spool before importing it into the aggregate drift report:
|
||||
|
||||
```bash
|
||||
python3 scripts/yao.py telemetry-emit . \
|
||||
--event skill_activation \
|
||||
--activation-type explicit \
|
||||
--outcome accepted \
|
||||
--command browser-extension
|
||||
```
|
||||
|
||||
By default this writes to `.yao/telemetry_spool/external_events.jsonl`. Use `--output-jsonl` when a client needs a different local handoff path:
|
||||
|
||||
```bash
|
||||
python3 scripts/yao.py telemetry-emit . \
|
||||
--output-jsonl /tmp/external-client-events.jsonl \
|
||||
--event skill_output \
|
||||
--activation-type manual \
|
||||
--outcome edited \
|
||||
--command browser-plugin
|
||||
```
|
||||
|
||||
Use `--dry-run` to validate a proposed event without writing to the spool. The emitter uses the same metadata-only contract as import: no prompt, input, output, transcript, message, note, raw text, arguments, or unknown fields are accepted.
|
||||
|
||||
After a client finishes a batch, import the spool:
|
||||
|
||||
```bash
|
||||
python3 scripts/yao.py telemetry-import . --input-jsonl .yao/telemetry_spool/external_events.jsonl
|
||||
```
|
||||
|
||||
## Client Hook Recipes
|
||||
|
||||
Use `telemetry-hooks` to generate auditable Browser, Chrome, VS Code, CLI wrapper, and provider-adapter hook recipes:
|
||||
|
||||
```bash
|
||||
python3 scripts/yao.py telemetry-hooks .
|
||||
```
|
||||
|
||||
The report is written to:
|
||||
|
||||
- `reports/telemetry_hook_recipes.json`
|
||||
- `reports/telemetry_hook_recipes.md`
|
||||
|
||||
Each recipe includes a dry-run command, an emit command, the target local spool, trigger points, and the privacy contract. The report intentionally sets `native_auto_capture=false`; it proves the local hook contract and metadata-only command shape, not that a host client is already natively integrated.
|
||||
|
||||
## Browser Native Host
|
||||
|
||||
`scripts/telemetry_native_host.py` implements the local side of Browser/Chrome Native Messaging. It accepts length-prefixed JSON messages on stdio, validates them with the same metadata-only telemetry contract, appends accepted events to the local spool, and rejects raw prompt/output/transcript/message/note fields.
|
||||
|
||||
Smoke-test one message without Browser installation:
|
||||
|
||||
```bash
|
||||
python3 scripts/telemetry_native_host.py . \
|
||||
--message-json '{"event":"skill_activation","activation_type":"explicit","outcome":"accepted","failure_type":"none","command":"chrome-native-host"}'
|
||||
```
|
||||
|
||||
Generate a local launcher and Chrome native messaging manifest for an operator-installed extension:
|
||||
|
||||
```bash
|
||||
python3 scripts/telemetry_native_host.py . \
|
||||
--write-launcher /tmp/yao-telemetry-host.sh \
|
||||
--write-manifest /tmp/yao-telemetry-host.json \
|
||||
--allowed-origin chrome-extension://aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/
|
||||
```
|
||||
|
||||
This is an executable native host bridge and manifest generator. It still does not prove that a specific Browser/Chrome extension is installed or sending events in the user's environment.
|
||||
|
||||
## External Client Import
|
||||
|
||||
External clients, browser extensions, editor adapters, or wrapper scripts may hand off already-sanitized JSONL through `telemetry-import`:
|
||||
|
||||
```bash
|
||||
python3 scripts/yao.py telemetry-import . \
|
||||
--input-jsonl /tmp/external-client-events.jsonl \
|
||||
--command browser-extension
|
||||
```
|
||||
|
||||
The importer defaults missing `source` to `external` and missing `command` to `external-client`. It validates the entire JSONL file before writing anything. If any line includes a raw content field, unsupported source, unsupported outcome, unsupported failure type, unknown field, malformed JSON, or an unsafe command name, the whole import is rejected and the existing local event stream is left untouched.
|
||||
|
||||
Use `--dry-run` to validate an external batch without writing `reports/telemetry_events.jsonl` or refreshing aggregate reports:
|
||||
|
||||
```bash
|
||||
python3 scripts/yao.py telemetry-import . --input-jsonl /tmp/external-client-events.jsonl --dry-run
|
||||
```
|
||||
|
||||
## Privacy Rule
|
||||
|
||||
The raw JSONL event log is local evidence and should not be distributed in skill packages. The distributable artifact is the aggregate report:
|
||||
@@ -48,13 +165,18 @@ Package builders should exclude `reports/telemetry_events.jsonl`. The root repos
|
||||
|
||||
## Iteration Loop
|
||||
|
||||
1. Capture metadata-only events locally.
|
||||
1. Capture metadata-only events locally, either manually with `adoption-drift --record-event`, automatically with opt-in `yao.py` CLI capture, through `telemetry-emit` client hooks, through generated `telemetry-hooks` client recipes, or through validated external JSONL import.
|
||||
2. Render `reports/adoption_drift_report.md`.
|
||||
3. Convert missed triggers into trigger eval cases.
|
||||
4. Convert bad outputs into Output Eval assertions and failure taxonomy entries.
|
||||
5. Convert script errors into non-interactive smoke tests.
|
||||
6. Feed review-overdue signals back into Skill Atlas and owner review.
|
||||
7. Let Skill Atlas read only `reports/adoption_drift_report.json` and publish portfolio-level `skill_atlas/drift_signals.json`.
|
||||
|
||||
## Review Studio Role
|
||||
|
||||
Review Studio should show the aggregate telemetry gate as an operating loop, not as raw logs. A blocker means the telemetry contract was violated. A warning means the evidence is absent or the drift signal needs a follow-up case.
|
||||
|
||||
## Skill Atlas Role
|
||||
|
||||
Skill Atlas uses aggregate adoption drift reports to rank portfolio work. It should surface no-data warnings for actionable production/library/governed skills, and drift warnings for missed triggers, wrong triggers, bad outputs, missing resources, script errors, and review-overdue counts. It must not inspect raw JSONL telemetry or use non-actionable example/fixture signals as release blockers.
|
||||
|
||||
@@ -64,6 +64,7 @@ Permission approval validates reviewer intent. Runtime permission probes validat
|
||||
- Run `python3 scripts/probe_runtime_permissions.py . --package-dir dist` after `cross_packager.py`.
|
||||
- The probe writes `reports/runtime_permission_probes.json` and `reports/runtime_permission_probes.md`.
|
||||
- A passing probe requires every target adapter to carry `permission_contract`, `target_permission_contract`, declared capabilities, a native-enforcement boolean, representation notes, and operator notes.
|
||||
- When `reports/install_simulation.json` matches the same package directory, the probe also reports installer enforcement counts from the install simulation. This proves the local package installer gate is wired, but it does not count as target-client native enforcement.
|
||||
- If a target has no native enforcement, the probe must mark an explicit metadata fallback and keep residual risk reviewer-visible.
|
||||
- Review Studio surfaces this as the `permission-runtime` gate.
|
||||
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
# User Memory Policy
|
||||
|
||||
This skill treats user preference memory as local, explicit, and reviewable.
|
||||
|
||||
## Principles
|
||||
|
||||
- **Explicit source only**: adaptive scans require a user-provided file path.
|
||||
- **Local first**: no network access is needed for preference extraction.
|
||||
- **No implicit private logs**: shell history, browser history, mail, and hidden chat logs are blocked by default.
|
||||
- **Repeated signals only**: one-off statements are recorded as discarded signals unless they meet the configured support threshold.
|
||||
- **Redacted evidence**: stored excerpts must remove secrets, tokens, email addresses, and local absolute paths.
|
||||
- **Proposal before patch**: preference memory can generate proposals, not automatic source edits.
|
||||
|
||||
## Allowed Inputs
|
||||
|
||||
Recommended inputs are curated JSONL, Markdown, or text files prepared for review. JSONL records should use a field such as `text`, `message`, `content`, `excerpt`, `prompt`, `note`, or `body`.
|
||||
|
||||
## Blocked By Default
|
||||
|
||||
The scanner refuses common shell history files such as `.zsh_history`, `.bash_history`, and `.fish_history` unless an explicit override is added for a controlled test. Even with an override, the output remains redacted and proposal-only.
|
||||
|
||||
## Retention
|
||||
|
||||
Generated reports store only summarized patterns and short redacted excerpts. They should not be treated as a full transcript, chat archive, or durable personal memory store.
|
||||
|
||||
## Upgrade Path
|
||||
|
||||
A future patch-application stage must add:
|
||||
|
||||
- human approval ledger;
|
||||
- allowlisted target files;
|
||||
- dry-run diffs;
|
||||
- regression command execution;
|
||||
- rollback artifacts;
|
||||
- reviewer-visible audit trail.
|
||||
+4
-3
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"schema_version": "2.0",
|
||||
"generated_at": "2026-06-13",
|
||||
"generated_at": "2026-06-21",
|
||||
"package_count": 1,
|
||||
"packages": [
|
||||
{
|
||||
@@ -12,10 +12,11 @@
|
||||
"openai",
|
||||
"claude",
|
||||
"generic",
|
||||
"agent-skills-compatible"
|
||||
"agent-skills-compatible",
|
||||
"vscode"
|
||||
],
|
||||
"package_metadata": "registry/packages/yao-meta-skill.json",
|
||||
"package_sha256": "742dc905b0d221c4f336e741d168861edaf7b75e97fe1e89f7d454c1cabf928f"
|
||||
"package_sha256": "eddeea80a657e9c97cee2e1242d97577b886b33e2ffa6e319629ef5fcb029383"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -2,12 +2,13 @@
|
||||
"schema_version": "2.0",
|
||||
"name": "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.",
|
||||
"description": "Create, refactor, evaluate, and package agent skills from workflows, prompts, transcripts, docs, or notes. Use for skill creation, reusable workflow packaging, skill improvement, evals, and team-ready distribution.",
|
||||
"targets": [
|
||||
"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": "742dc905b0d221c4f336e741d168861edaf7b75e97fe1e89f7d454c1cabf928f",
|
||||
"archive_sha256": "7bc83805501d24cf8e5932ef76e0454100398d5a73652e7440be47984d0cf4a9"
|
||||
"package_sha256": "eddeea80a657e9c97cee2e1242d97577b886b33e2ffa6e319629ef5fcb029383",
|
||||
"archive_sha256": "c56a8519244c0bc8ec17c92d4641c832629cc059f4b51fe177a2c039515253a7"
|
||||
},
|
||||
"compatibility": {
|
||||
"openai": "pass",
|
||||
@@ -47,10 +48,10 @@
|
||||
},
|
||||
"distribution": {
|
||||
"archive_verified": true,
|
||||
"archive_sha256": "7bc83805501d24cf8e5932ef76e0454100398d5a73652e7440be47984d0cf4a9",
|
||||
"archive_sha256": "c56a8519244c0bc8ec17c92d4641c832629cc059f4b51fe177a2c039515253a7",
|
||||
"package_verification": "reports/package_verification.json",
|
||||
"install_simulated": true,
|
||||
"install_simulation": "reports/install_simulation.json"
|
||||
},
|
||||
"generated_at": "2026-06-13"
|
||||
"generated_at": "2026-06-21"
|
||||
}
|
||||
|
||||
@@ -0,0 +1,63 @@
|
||||
{
|
||||
"schema_version": "1.0",
|
||||
"ok": true,
|
||||
"generated_at": "2026-06-15T00:00:00Z",
|
||||
"summary": {
|
||||
"approval_count": 0,
|
||||
"active_approval_count": 0,
|
||||
"pending_review_count": 0,
|
||||
"applied_count": 0,
|
||||
"rollback_count": 0
|
||||
},
|
||||
"approval_contract": {
|
||||
"approval_required": true,
|
||||
"patch_sha256_required": true,
|
||||
"allowlisted_targets_required": true,
|
||||
"target_file_sha256_required": true,
|
||||
"approval_draft_supported": true,
|
||||
"dry_run_default": true,
|
||||
"writes_repository_files_only_with_apply": true,
|
||||
"rollback_required": true
|
||||
},
|
||||
"entries": [],
|
||||
"approval_count": 0,
|
||||
"active_approval_count": 0,
|
||||
"pending_review_count": 0,
|
||||
"applied_count": 0,
|
||||
"rollback_count": 0,
|
||||
"approval_required": true,
|
||||
"patch_sha256_required": true,
|
||||
"allowlisted_targets_required": true,
|
||||
"target_file_sha256_required": true,
|
||||
"approval_draft_supported": true,
|
||||
"dry_run_default": true,
|
||||
"writes_repository_files_only_with_apply": true,
|
||||
"rollback_required": true,
|
||||
"report_contract": {
|
||||
"schema_version": "1.0",
|
||||
"contract": "adaptation-approval-ledger",
|
||||
"top_level_mirrors_summary": true,
|
||||
"top_level_mirrors_approval_contract": true,
|
||||
"summary_fields": [
|
||||
"approval_count",
|
||||
"active_approval_count",
|
||||
"pending_review_count",
|
||||
"applied_count",
|
||||
"rollback_count"
|
||||
],
|
||||
"approval_contract_fields": [
|
||||
"approval_required",
|
||||
"patch_sha256_required",
|
||||
"allowlisted_targets_required",
|
||||
"target_file_sha256_required",
|
||||
"approval_draft_supported",
|
||||
"dry_run_default",
|
||||
"writes_repository_files_only_with_apply",
|
||||
"rollback_required"
|
||||
],
|
||||
"source_of_truth": [
|
||||
"summary",
|
||||
"approval_contract"
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,248 @@
|
||||
{
|
||||
"schema_version": "1.0",
|
||||
"ok": true,
|
||||
"generated_at": "2026-06-21",
|
||||
"skill_dir": ".",
|
||||
"source_patterns": "reports/user_patterns.json",
|
||||
"pattern_count": 5,
|
||||
"proposal_count": 5,
|
||||
"apply_supported": true,
|
||||
"failure_count": 0,
|
||||
"proposal_only": true,
|
||||
"approval_required": true,
|
||||
"writes_repository_files": false,
|
||||
"allowlisted_targets_required": true,
|
||||
"target_file_sha256_required_for_apply": true,
|
||||
"approval_draft_supported": true,
|
||||
"rollback_required_for_apply": true,
|
||||
"apply_command_available": true,
|
||||
"summary": {
|
||||
"pattern_count": 5,
|
||||
"proposal_count": 5,
|
||||
"apply_supported": true,
|
||||
"failure_count": 0
|
||||
},
|
||||
"proposal_contract": {
|
||||
"proposal_only": true,
|
||||
"approval_required": true,
|
||||
"writes_repository_files": false,
|
||||
"allowlisted_targets_required": true,
|
||||
"target_file_sha256_required_for_apply": true,
|
||||
"approval_draft_supported": true,
|
||||
"rollback_required_for_apply": true,
|
||||
"apply_command_available": true
|
||||
},
|
||||
"report_contract": {
|
||||
"schema_version": "1.0",
|
||||
"contract": "adaptation-proposals",
|
||||
"top_level_mirrors_summary": true,
|
||||
"top_level_mirrors_proposal_contract": true,
|
||||
"summary_fields": [
|
||||
"pattern_count",
|
||||
"proposal_count",
|
||||
"apply_supported",
|
||||
"failure_count"
|
||||
],
|
||||
"proposal_contract_fields": [
|
||||
"proposal_only",
|
||||
"approval_required",
|
||||
"writes_repository_files",
|
||||
"allowlisted_targets_required",
|
||||
"target_file_sha256_required_for_apply",
|
||||
"approval_draft_supported",
|
||||
"rollback_required_for_apply",
|
||||
"apply_command_available"
|
||||
],
|
||||
"source_of_truth": [
|
||||
"summary",
|
||||
"proposal_contract"
|
||||
]
|
||||
},
|
||||
"proposals": [
|
||||
{
|
||||
"proposal_id": "adapt-18c7517f3d",
|
||||
"pattern_id": "language_default",
|
||||
"title": "Keep reports Chinese-first with optional English",
|
||||
"change_type": "report-default-language",
|
||||
"status": "proposal-only",
|
||||
"requires_approval": true,
|
||||
"write_allowed_without_approval": false,
|
||||
"risk_level": "low",
|
||||
"reason": "2 redacted records matched repeated report-language signals.",
|
||||
"support_count": 2,
|
||||
"target_files": [
|
||||
"scripts/render_skill_overview.py",
|
||||
"references/artifact-design-doctrine.md"
|
||||
],
|
||||
"suggested_changes": [
|
||||
"Keep user-facing report copy Simplified Chinese by default.",
|
||||
"Expose English through the existing language switch instead of mixing languages in the default view."
|
||||
],
|
||||
"verification_commands": [
|
||||
"python3 tests/verify_skill_overview.py"
|
||||
],
|
||||
"rollback_plan": "Revert report language template changes and rerun the overview verifier.",
|
||||
"evidence_refs": [
|
||||
{
|
||||
"record_id": "line-1",
|
||||
"excerpt": "新生成的 Skill 报告默认使用中文简体,并在右上角提供英文切换。"
|
||||
},
|
||||
{
|
||||
"record_id": "line-2",
|
||||
"excerpt": "HTML 报告需要双语能力,但默认内容应该保持中文简体。"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"proposal_id": "adapt-fbfe921ba5",
|
||||
"pattern_id": "report_ui",
|
||||
"title": "Improve report layout, visual hierarchy, and chart readability",
|
||||
"change_type": "artifact-ui-polish",
|
||||
"status": "proposal-only",
|
||||
"requires_approval": true,
|
||||
"write_allowed_without_approval": false,
|
||||
"risk_level": "medium",
|
||||
"reason": "5 redacted records matched repeated artifact-design signals.",
|
||||
"support_count": 5,
|
||||
"target_files": [
|
||||
"scripts/render_skill_overview.py",
|
||||
"references/artifact-design-doctrine.md",
|
||||
"tests/verify_skill_overview.py"
|
||||
],
|
||||
"suggested_changes": [
|
||||
"Prefer vertical narrative sections with limited two-column layouts only when content has enough width.",
|
||||
"Keep charts inline SVG, with captions and stable responsive constraints."
|
||||
],
|
||||
"verification_commands": [
|
||||
"python3 tests/verify_skill_overview.py",
|
||||
"python3 tests/verify_skill_report_charts.py"
|
||||
],
|
||||
"rollback_plan": "Restore the previous report renderer and regenerate the demo report.",
|
||||
"evidence_refs": [
|
||||
{
|
||||
"record_id": "line-1",
|
||||
"excerpt": "新生成的 Skill 报告默认使用中文简体,并在右上角提供英文切换。"
|
||||
},
|
||||
{
|
||||
"record_id": "line-2",
|
||||
"excerpt": "HTML 报告需要双语能力,但默认内容应该保持中文简体。"
|
||||
},
|
||||
{
|
||||
"record_id": "line-3",
|
||||
"excerpt": "报告排版采用白底 Kami 风格,图表、模块和导航都要清晰。"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"proposal_id": "adapt-59d219a1fb",
|
||||
"pattern_id": "approval_safety",
|
||||
"title": "Keep adaptive iteration approval-gated",
|
||||
"change_type": "privacy-governance",
|
||||
"status": "proposal-only",
|
||||
"requires_approval": true,
|
||||
"write_allowed_without_approval": false,
|
||||
"risk_level": "low",
|
||||
"reason": "2 redacted records matched repeated governance signals.",
|
||||
"support_count": 2,
|
||||
"target_files": [
|
||||
"references/user-memory-policy.md",
|
||||
"references/autonomous-adaptation.md",
|
||||
"schemas/adaptation-proposal.schema.json"
|
||||
],
|
||||
"suggested_changes": [
|
||||
"Require explicit source paths for memory scans.",
|
||||
"Generate proposals before any source patching.",
|
||||
"Reserve automatic apply for a future approval ledger and rollback implementation."
|
||||
],
|
||||
"verification_commands": [
|
||||
"python3 tests/verify_adaptation_safety.py"
|
||||
],
|
||||
"rollback_plan": "Remove the adaptive proposal artifacts and keep feedback/adoption drift as the only iteration inputs.",
|
||||
"evidence_refs": [
|
||||
{
|
||||
"record_id": "line-5",
|
||||
"excerpt": "自适应升级必须先生成提案,不能直接自动修改源文件。"
|
||||
},
|
||||
{
|
||||
"record_id": "line-6",
|
||||
"excerpt": "用户偏好扫描必须由用户提供明确路径,不要默认扫描私人日志。"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"proposal_id": "adapt-457baca160",
|
||||
"pattern_id": "delivery_format",
|
||||
"title": "Make generated artifact paths explicit in CLI output",
|
||||
"change_type": "artifact-discoverability",
|
||||
"status": "proposal-only",
|
||||
"requires_approval": true,
|
||||
"write_allowed_without_approval": false,
|
||||
"risk_level": "low",
|
||||
"reason": "2 redacted records matched repeated artifact-format signals.",
|
||||
"support_count": 2,
|
||||
"target_files": [
|
||||
"scripts/yao.py",
|
||||
"README.md"
|
||||
],
|
||||
"suggested_changes": [
|
||||
"Include stable report paths in command output.",
|
||||
"Document which artifacts are meant for human review."
|
||||
],
|
||||
"verification_commands": [
|
||||
"python3 tests/verify_yao_cli.py"
|
||||
],
|
||||
"rollback_plan": "Revert CLI copy/documentation changes and keep artifact paths unchanged.",
|
||||
"evidence_refs": [
|
||||
{
|
||||
"record_id": "line-2",
|
||||
"excerpt": "HTML 报告需要双语能力,但默认内容应该保持中文简体。"
|
||||
},
|
||||
{
|
||||
"record_id": "line-6",
|
||||
"excerpt": "用户偏好扫描必须由用户提供明确路径,不要默认扫描私人日志。"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"proposal_id": "adapt-abfee25d3a",
|
||||
"pattern_id": "evidence_testing",
|
||||
"title": "Attach tests and evidence refresh to each upgrade",
|
||||
"change_type": "quality-gate",
|
||||
"status": "proposal-only",
|
||||
"requires_approval": true,
|
||||
"write_allowed_without_approval": false,
|
||||
"risk_level": "medium",
|
||||
"reason": "2 redacted records matched repeated quality-gate signals.",
|
||||
"support_count": 2,
|
||||
"target_files": [
|
||||
"tests/verify_adaptation_safety.py",
|
||||
"scripts/render_skill_os2_coverage.py",
|
||||
"reports/skill_os2_coverage.json"
|
||||
],
|
||||
"suggested_changes": [
|
||||
"Add focused verifier coverage for every new adaptive behavior.",
|
||||
"Refresh Skill OS 2.0 coverage so planned, partial, and covered states remain visible."
|
||||
],
|
||||
"verification_commands": [
|
||||
"python3 tests/verify_adaptation_safety.py",
|
||||
"python3 tests/verify_skill_os2_coverage.py"
|
||||
],
|
||||
"rollback_plan": "Revert the new verifier and coverage status updates, then regenerate coverage reports.",
|
||||
"evidence_refs": [
|
||||
{
|
||||
"record_id": "line-7",
|
||||
"excerpt": "每次升级都需要测试、覆盖报告和可审计证据,推送前要跑 CI。"
|
||||
},
|
||||
{
|
||||
"record_id": "line-8",
|
||||
"excerpt": "涉及 GitHub 推送时,要保留证据链,避免把计划当作完成证明。"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"failures": [],
|
||||
"artifacts": {
|
||||
"json": "reports/adaptation_proposals.json",
|
||||
"markdown": "reports/adaptation_proposals.md"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,119 @@
|
||||
# Adaptation Proposals
|
||||
|
||||
- Generated at: `2026-06-21`
|
||||
- Pattern report: `reports/user_patterns.json`
|
||||
- Proposal only: `true`
|
||||
- Writes repository files: `false`
|
||||
- Proposals: `5`
|
||||
|
||||
## Keep reports Chinese-first with optional English
|
||||
|
||||
- ID: `adapt-18c7517f3d`
|
||||
- Status: `proposal-only`
|
||||
- Pattern: `language_default`
|
||||
- Risk: `low`
|
||||
- Requires approval: `true`
|
||||
- Reason: 2 redacted records matched repeated report-language signals.
|
||||
- Target files:
|
||||
- `scripts/render_skill_overview.py`
|
||||
- `references/artifact-design-doctrine.md`
|
||||
- Suggested changes:
|
||||
- Keep user-facing report copy Simplified Chinese by default.
|
||||
- Expose English through the existing language switch instead of mixing languages in the default view.
|
||||
- Verification:
|
||||
- `python3 tests/verify_skill_overview.py`
|
||||
- Rollback: Revert report language template changes and rerun the overview verifier.
|
||||
- Redacted evidence refs:
|
||||
- `line-1`: 新生成的 Skill 报告默认使用中文简体,并在右上角提供英文切换。
|
||||
- `line-2`: HTML 报告需要双语能力,但默认内容应该保持中文简体。
|
||||
|
||||
## Improve report layout, visual hierarchy, and chart readability
|
||||
|
||||
- ID: `adapt-fbfe921ba5`
|
||||
- Status: `proposal-only`
|
||||
- Pattern: `report_ui`
|
||||
- Risk: `medium`
|
||||
- Requires approval: `true`
|
||||
- Reason: 5 redacted records matched repeated artifact-design signals.
|
||||
- Target files:
|
||||
- `scripts/render_skill_overview.py`
|
||||
- `references/artifact-design-doctrine.md`
|
||||
- `tests/verify_skill_overview.py`
|
||||
- Suggested changes:
|
||||
- Prefer vertical narrative sections with limited two-column layouts only when content has enough width.
|
||||
- Keep charts inline SVG, with captions and stable responsive constraints.
|
||||
- Verification:
|
||||
- `python3 tests/verify_skill_overview.py`
|
||||
- `python3 tests/verify_skill_report_charts.py`
|
||||
- Rollback: Restore the previous report renderer and regenerate the demo report.
|
||||
- Redacted evidence refs:
|
||||
- `line-1`: 新生成的 Skill 报告默认使用中文简体,并在右上角提供英文切换。
|
||||
- `line-2`: HTML 报告需要双语能力,但默认内容应该保持中文简体。
|
||||
- `line-3`: 报告排版采用白底 Kami 风格,图表、模块和导航都要清晰。
|
||||
|
||||
## Keep adaptive iteration approval-gated
|
||||
|
||||
- ID: `adapt-59d219a1fb`
|
||||
- Status: `proposal-only`
|
||||
- Pattern: `approval_safety`
|
||||
- Risk: `low`
|
||||
- Requires approval: `true`
|
||||
- Reason: 2 redacted records matched repeated governance signals.
|
||||
- Target files:
|
||||
- `references/user-memory-policy.md`
|
||||
- `references/autonomous-adaptation.md`
|
||||
- `schemas/adaptation-proposal.schema.json`
|
||||
- Suggested changes:
|
||||
- Require explicit source paths for memory scans.
|
||||
- Generate proposals before any source patching.
|
||||
- Reserve automatic apply for a future approval ledger and rollback implementation.
|
||||
- Verification:
|
||||
- `python3 tests/verify_adaptation_safety.py`
|
||||
- Rollback: Remove the adaptive proposal artifacts and keep feedback/adoption drift as the only iteration inputs.
|
||||
- Redacted evidence refs:
|
||||
- `line-5`: 自适应升级必须先生成提案,不能直接自动修改源文件。
|
||||
- `line-6`: 用户偏好扫描必须由用户提供明确路径,不要默认扫描私人日志。
|
||||
|
||||
## Make generated artifact paths explicit in CLI output
|
||||
|
||||
- ID: `adapt-457baca160`
|
||||
- Status: `proposal-only`
|
||||
- Pattern: `delivery_format`
|
||||
- Risk: `low`
|
||||
- Requires approval: `true`
|
||||
- Reason: 2 redacted records matched repeated artifact-format signals.
|
||||
- Target files:
|
||||
- `scripts/yao.py`
|
||||
- `README.md`
|
||||
- Suggested changes:
|
||||
- Include stable report paths in command output.
|
||||
- Document which artifacts are meant for human review.
|
||||
- Verification:
|
||||
- `python3 tests/verify_yao_cli.py`
|
||||
- Rollback: Revert CLI copy/documentation changes and keep artifact paths unchanged.
|
||||
- Redacted evidence refs:
|
||||
- `line-2`: HTML 报告需要双语能力,但默认内容应该保持中文简体。
|
||||
- `line-6`: 用户偏好扫描必须由用户提供明确路径,不要默认扫描私人日志。
|
||||
|
||||
## Attach tests and evidence refresh to each upgrade
|
||||
|
||||
- ID: `adapt-abfee25d3a`
|
||||
- Status: `proposal-only`
|
||||
- Pattern: `evidence_testing`
|
||||
- Risk: `medium`
|
||||
- Requires approval: `true`
|
||||
- Reason: 2 redacted records matched repeated quality-gate signals.
|
||||
- Target files:
|
||||
- `tests/verify_adaptation_safety.py`
|
||||
- `scripts/render_skill_os2_coverage.py`
|
||||
- `reports/skill_os2_coverage.json`
|
||||
- Suggested changes:
|
||||
- Add focused verifier coverage for every new adaptive behavior.
|
||||
- Refresh Skill OS 2.0 coverage so planned, partial, and covered states remain visible.
|
||||
- Verification:
|
||||
- `python3 tests/verify_adaptation_safety.py`
|
||||
- `python3 tests/verify_skill_os2_coverage.py`
|
||||
- Rollback: Revert the new verifier and coverage status updates, then regenerate coverage reports.
|
||||
- Redacted evidence refs:
|
||||
- `line-7`: 每次升级都需要测试、覆盖报告和可审计证据,推送前要跑 CI。
|
||||
- `line-8`: 涉及 GitHub 推送时,要保留证据链,避免把计划当作完成证明。
|
||||
@@ -0,0 +1,87 @@
|
||||
{
|
||||
"schema_version": "1.0",
|
||||
"ok": true,
|
||||
"generated_at": "2026-06-15T00:00:00Z",
|
||||
"skill_dir": ".",
|
||||
"summary": {
|
||||
"apply_supported": true,
|
||||
"attempt_count": 0,
|
||||
"approval_draft_count": 0,
|
||||
"applied_count": 0,
|
||||
"dry_run_count": 0,
|
||||
"rollback_count": 0,
|
||||
"regression_run_count": 0,
|
||||
"regression_pass_count": 0,
|
||||
"failure_count": 0
|
||||
},
|
||||
"apply_contract": {
|
||||
"approval_required": true,
|
||||
"patch_sha256_required": true,
|
||||
"allowlisted_targets_required": true,
|
||||
"target_file_sha256_required": true,
|
||||
"approval_draft_supported": true,
|
||||
"dry_run_default": true,
|
||||
"writes_repository_files_only_with_apply": true,
|
||||
"rollback_required": true,
|
||||
"safe_regression_commands_only": true,
|
||||
"rollback_on_failure_default": true
|
||||
},
|
||||
"attempts": [],
|
||||
"failures": [],
|
||||
"artifacts": {
|
||||
"json": "reports/adaptation_regression_report.json",
|
||||
"approval_ledger": "reports/adaptation_approval_ledger.json"
|
||||
},
|
||||
"apply_supported": true,
|
||||
"attempt_count": 0,
|
||||
"approval_draft_count": 0,
|
||||
"applied_count": 0,
|
||||
"dry_run_count": 0,
|
||||
"rollback_count": 0,
|
||||
"regression_run_count": 0,
|
||||
"regression_pass_count": 0,
|
||||
"failure_count": 0,
|
||||
"approval_required": true,
|
||||
"patch_sha256_required": true,
|
||||
"allowlisted_targets_required": true,
|
||||
"target_file_sha256_required": true,
|
||||
"approval_draft_supported": true,
|
||||
"dry_run_default": true,
|
||||
"writes_repository_files_only_with_apply": true,
|
||||
"rollback_required": true,
|
||||
"safe_regression_commands_only": true,
|
||||
"rollback_on_failure_default": true,
|
||||
"report_contract": {
|
||||
"schema_version": "1.0",
|
||||
"contract": "adaptation-regression-report",
|
||||
"top_level_mirrors_summary": true,
|
||||
"top_level_mirrors_apply_contract": true,
|
||||
"summary_fields": [
|
||||
"apply_supported",
|
||||
"attempt_count",
|
||||
"approval_draft_count",
|
||||
"applied_count",
|
||||
"dry_run_count",
|
||||
"rollback_count",
|
||||
"regression_run_count",
|
||||
"regression_pass_count",
|
||||
"failure_count"
|
||||
],
|
||||
"apply_contract_fields": [
|
||||
"approval_required",
|
||||
"patch_sha256_required",
|
||||
"allowlisted_targets_required",
|
||||
"target_file_sha256_required",
|
||||
"approval_draft_supported",
|
||||
"dry_run_default",
|
||||
"writes_repository_files_only_with_apply",
|
||||
"rollback_required",
|
||||
"safe_regression_commands_only",
|
||||
"rollback_on_failure_default"
|
||||
],
|
||||
"source_of_truth": [
|
||||
"summary",
|
||||
"apply_contract"
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
# Adaptation Regression Report
|
||||
|
||||
- generated_at: `2026-06-15T00:00:00Z`
|
||||
- apply_supported: `true`
|
||||
- attempts: `0`
|
||||
- applied: `0`
|
||||
- dry runs: `0`
|
||||
- rollbacks: `0`
|
||||
- failures: `0`
|
||||
|
||||
This report proves the adaptive apply harness behavior. It does not count proposals as applied changes.
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"ok": true,
|
||||
"schema_version": "2.0",
|
||||
"generated_at": "2026-06-13T10:57:52Z",
|
||||
"generated_at": "2026-06-20T12:35:58Z",
|
||||
"skill_dir": ".",
|
||||
"privacy_contract": {
|
||||
"storage": "local-first",
|
||||
@@ -25,6 +25,7 @@
|
||||
},
|
||||
"summary": {
|
||||
"event_count": 1,
|
||||
"adoption_sample_count": 1,
|
||||
"activation_count": 1,
|
||||
"accepted_count": 1,
|
||||
"edited_count": 0,
|
||||
@@ -42,12 +43,17 @@
|
||||
"event_types": {
|
||||
"skill_activation": 1
|
||||
},
|
||||
"failure_types": {}
|
||||
"failure_types": {},
|
||||
"source_types": {
|
||||
"manual": 1
|
||||
},
|
||||
"command_counts": {}
|
||||
},
|
||||
"adoption_by_skill": [
|
||||
{
|
||||
"skill": "yao-meta-skill",
|
||||
"events": 1,
|
||||
"adoption_events": 1,
|
||||
"accepted": 1,
|
||||
"edited": 0,
|
||||
"rejected": 0,
|
||||
@@ -58,8 +64,10 @@
|
||||
"next_iteration_candidates": [],
|
||||
"recent_events": [
|
||||
{
|
||||
"command": "unknown",
|
||||
"event": "skill_activation",
|
||||
"skill": "yao-meta-skill",
|
||||
"source": "manual",
|
||||
"version": "1.1.0",
|
||||
"activation_type": "explicit",
|
||||
"outcome": "accepted",
|
||||
|
||||
@@ -5,6 +5,7 @@ Local-first, metadata-only telemetry for skill operations. Raw prompts, outputs,
|
||||
## Summary
|
||||
|
||||
- Events: `1`
|
||||
- Adoption samples: `1`
|
||||
- Activation events: `1`
|
||||
- Adoption rate: `100.0`
|
||||
- Missed trigger signals: `0`
|
||||
@@ -22,9 +23,9 @@ Local-first, metadata-only telemetry for skill operations. Raw prompts, outputs,
|
||||
|
||||
## Adoption By Skill
|
||||
|
||||
| Skill | Events | Accepted | Edited | Rejected | Missed | Adoption Rate |
|
||||
| --- | ---: | ---: | ---: | ---: | ---: | ---: |
|
||||
| `yao-meta-skill` | 1 | 1 | 0 | 0 | 0 | 100.0 |
|
||||
| Skill | Events | Adoption Samples | Accepted | Edited | Rejected | Missed | Adoption Rate |
|
||||
| --- | ---: | ---: | ---: | ---: | ---: | ---: | ---: |
|
||||
| `yao-meta-skill` | 1 | 1 | 1 | 0 | 0 | 0 | 100.0 |
|
||||
|
||||
## Next Iteration Candidates
|
||||
|
||||
@@ -32,4 +33,4 @@ Local-first, metadata-only telemetry for skill operations. Raw prompts, outputs,
|
||||
|
||||
## Recent Metadata Events
|
||||
|
||||
- `2026-06-13T10:00:00Z` `yao-meta-skill` event=`skill_activation` activation=`explicit` outcome=`accepted` failure=`none`
|
||||
- `2026-06-13T10:00:00Z` `yao-meta-skill` event=`skill_activation` source=`manual` command=`unknown` activation=`explicit` outcome=`accepted` failure=`none`
|
||||
|
||||
@@ -0,0 +1,181 @@
|
||||
{
|
||||
"schema_version": "1.0",
|
||||
"ok": true,
|
||||
"generated_at": "2026-06-13",
|
||||
"skill_dir": ".",
|
||||
"summary": {
|
||||
"python_file_count": 232,
|
||||
"script_file_count": 155,
|
||||
"test_file_count": 77,
|
||||
"internal_module_count": 71,
|
||||
"cli_script_count": 86,
|
||||
"command_handler_count": 71,
|
||||
"entrypoint_command_handler_count": 18,
|
||||
"command_module_count": 7,
|
||||
"warn_line_threshold": 900,
|
||||
"watch_line_threshold": 720,
|
||||
"early_watch_line_threshold": 600,
|
||||
"block_line_threshold": 1500,
|
||||
"largest_file_lines": 719,
|
||||
"watchlist_count": 0,
|
||||
"early_watchlist_count": 6,
|
||||
"hotspot_count": 0,
|
||||
"blocker_count": 0,
|
||||
"decision": "pass"
|
||||
},
|
||||
"largest_files": [
|
||||
{
|
||||
"path": "tests/verify_evidence_consistency.py",
|
||||
"lines": 719,
|
||||
"kind": "test",
|
||||
"severity": "pass",
|
||||
"early_watch": true,
|
||||
"recommendation": "Break broad integration assertions into focused verifier helpers when the next behavior change lands."
|
||||
},
|
||||
{
|
||||
"path": "tests/verify_world_class_evidence_intake.py",
|
||||
"lines": 703,
|
||||
"kind": "test",
|
||||
"severity": "pass",
|
||||
"early_watch": true,
|
||||
"recommendation": "Break broad integration assertions into focused verifier helpers when the next behavior change lands."
|
||||
},
|
||||
{
|
||||
"path": "tests/verify_yao_cli.py",
|
||||
"lines": 700,
|
||||
"kind": "test",
|
||||
"severity": "pass",
|
||||
"early_watch": true,
|
||||
"recommendation": "Break broad integration assertions into focused verifier helpers when the next behavior change lands."
|
||||
},
|
||||
{
|
||||
"path": "scripts/render_benchmark_reproducibility.py",
|
||||
"lines": 685,
|
||||
"kind": "cli-script",
|
||||
"severity": "pass",
|
||||
"early_watch": true,
|
||||
"recommendation": "Watch this file before adding new responsibilities; extract a helper module when one concern dominates."
|
||||
},
|
||||
{
|
||||
"path": "scripts/render_evidence_consistency.py",
|
||||
"lines": 676,
|
||||
"kind": "cli-script",
|
||||
"severity": "pass",
|
||||
"early_watch": true,
|
||||
"recommendation": "Watch this file before adding new responsibilities; extract a helper module when one concern dominates."
|
||||
},
|
||||
{
|
||||
"path": "scripts/render_world_class_operator_runbook.py",
|
||||
"lines": 651,
|
||||
"kind": "cli-script",
|
||||
"severity": "pass",
|
||||
"early_watch": true,
|
||||
"recommendation": "Watch this file before adding new responsibilities; extract a helper module when one concern dominates."
|
||||
},
|
||||
{
|
||||
"path": "tests/verify_output_review_adjudication.py",
|
||||
"lines": 599,
|
||||
"kind": "test",
|
||||
"severity": "pass",
|
||||
"early_watch": false,
|
||||
"recommendation": "Break broad integration assertions into focused verifier helpers when the next behavior change lands."
|
||||
},
|
||||
{
|
||||
"path": "scripts/render_skill_overview.py",
|
||||
"lines": 588,
|
||||
"kind": "cli-script",
|
||||
"severity": "pass",
|
||||
"early_watch": false,
|
||||
"recommendation": "Watch this file before adding new responsibilities; extract a helper module when one concern dominates."
|
||||
},
|
||||
{
|
||||
"path": "tests/verify_world_class_evidence_ledger.py",
|
||||
"lines": 587,
|
||||
"kind": "test",
|
||||
"severity": "pass",
|
||||
"early_watch": false,
|
||||
"recommendation": "Break broad integration assertions into focused verifier helpers when the next behavior change lands."
|
||||
},
|
||||
{
|
||||
"path": "scripts/build_skill_atlas.py",
|
||||
"lines": 586,
|
||||
"kind": "cli-script",
|
||||
"severity": "pass",
|
||||
"early_watch": false,
|
||||
"recommendation": "Watch this file before adding new responsibilities; extract a helper module when one concern dominates."
|
||||
},
|
||||
{
|
||||
"path": "scripts/optimize_description.py",
|
||||
"lines": 585,
|
||||
"kind": "cli-script",
|
||||
"severity": "pass",
|
||||
"early_watch": false,
|
||||
"recommendation": "Watch this file before adding new responsibilities; extract a helper module when one concern dominates."
|
||||
},
|
||||
{
|
||||
"path": "scripts/trust_check.py",
|
||||
"lines": 582,
|
||||
"kind": "cli-script",
|
||||
"severity": "pass",
|
||||
"early_watch": false,
|
||||
"recommendation": "Watch this file before adding new responsibilities; extract a helper module when one concern dominates."
|
||||
}
|
||||
],
|
||||
"watchlist": [],
|
||||
"early_watchlist": [
|
||||
{
|
||||
"path": "tests/verify_evidence_consistency.py",
|
||||
"lines": 719,
|
||||
"kind": "test",
|
||||
"severity": "pass",
|
||||
"early_watch": true,
|
||||
"recommendation": "Break broad integration assertions into focused verifier helpers when the next behavior change lands."
|
||||
},
|
||||
{
|
||||
"path": "tests/verify_world_class_evidence_intake.py",
|
||||
"lines": 703,
|
||||
"kind": "test",
|
||||
"severity": "pass",
|
||||
"early_watch": true,
|
||||
"recommendation": "Break broad integration assertions into focused verifier helpers when the next behavior change lands."
|
||||
},
|
||||
{
|
||||
"path": "tests/verify_yao_cli.py",
|
||||
"lines": 700,
|
||||
"kind": "test",
|
||||
"severity": "pass",
|
||||
"early_watch": true,
|
||||
"recommendation": "Break broad integration assertions into focused verifier helpers when the next behavior change lands."
|
||||
},
|
||||
{
|
||||
"path": "scripts/render_benchmark_reproducibility.py",
|
||||
"lines": 685,
|
||||
"kind": "cli-script",
|
||||
"severity": "pass",
|
||||
"early_watch": true,
|
||||
"recommendation": "Watch this file before adding new responsibilities; extract a helper module when one concern dominates."
|
||||
},
|
||||
{
|
||||
"path": "scripts/render_evidence_consistency.py",
|
||||
"lines": 676,
|
||||
"kind": "cli-script",
|
||||
"severity": "pass",
|
||||
"early_watch": true,
|
||||
"recommendation": "Watch this file before adding new responsibilities; extract a helper module when one concern dominates."
|
||||
},
|
||||
{
|
||||
"path": "scripts/render_world_class_operator_runbook.py",
|
||||
"lines": 651,
|
||||
"kind": "cli-script",
|
||||
"severity": "pass",
|
||||
"early_watch": true,
|
||||
"recommendation": "Watch this file before adding new responsibilities; extract a helper module when one concern dominates."
|
||||
}
|
||||
],
|
||||
"hotspots": [],
|
||||
"actions": [],
|
||||
"artifacts": {
|
||||
"json": "reports/architecture_maintainability.json",
|
||||
"markdown": "reports/architecture_maintainability.md"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,66 @@
|
||||
# Architecture Maintainability
|
||||
|
||||
Generated at: `2026-06-13`
|
||||
|
||||
## Summary
|
||||
|
||||
- decision: `pass`
|
||||
- python files: `232`
|
||||
- scripts: `155`
|
||||
- tests: `77`
|
||||
- internal modules: `71`
|
||||
- CLI scripts: `86`
|
||||
- Yao CLI command handlers: `71`
|
||||
- entrypoint command handlers: `18`
|
||||
- command modules: `7`
|
||||
- largest file lines: `719`
|
||||
- early watch threshold lines: `600`
|
||||
- early watchlist: `6`
|
||||
- watch threshold lines: `720`
|
||||
- watchlist: `0`
|
||||
- hotspots: `0`
|
||||
- blockers: `0`
|
||||
|
||||
This report keeps maintainability risk visible before the Meta Skill grows more gates, renderers, and CLI commands.
|
||||
|
||||
## Hotspots
|
||||
|
||||
No file-size hotspots found.
|
||||
|
||||
## Watchlist
|
||||
|
||||
No near-threshold files found.
|
||||
|
||||
## Early Watchlist
|
||||
|
||||
| File | Lines | Kind | Recommended next split |
|
||||
| --- | ---: | --- | --- |
|
||||
| `tests/verify_evidence_consistency.py` | `719` | `test` | Break broad integration assertions into focused verifier helpers when the next behavior change lands. |
|
||||
| `tests/verify_world_class_evidence_intake.py` | `703` | `test` | Break broad integration assertions into focused verifier helpers when the next behavior change lands. |
|
||||
| `tests/verify_yao_cli.py` | `700` | `test` | Break broad integration assertions into focused verifier helpers when the next behavior change lands. |
|
||||
| `scripts/render_benchmark_reproducibility.py` | `685` | `cli-script` | Watch this file before adding new responsibilities; extract a helper module when one concern dominates. |
|
||||
| `scripts/render_evidence_consistency.py` | `676` | `cli-script` | Watch this file before adding new responsibilities; extract a helper module when one concern dominates. |
|
||||
| `scripts/render_world_class_operator_runbook.py` | `651` | `cli-script` | Watch this file before adding new responsibilities; extract a helper module when one concern dominates. |
|
||||
|
||||
## Largest Files
|
||||
|
||||
| File | Lines | Kind | Severity |
|
||||
| --- | ---: | --- | --- |
|
||||
| `tests/verify_evidence_consistency.py` | `719` | `test` | `pass` |
|
||||
| `tests/verify_world_class_evidence_intake.py` | `703` | `test` | `pass` |
|
||||
| `tests/verify_yao_cli.py` | `700` | `test` | `pass` |
|
||||
| `scripts/render_benchmark_reproducibility.py` | `685` | `cli-script` | `pass` |
|
||||
| `scripts/render_evidence_consistency.py` | `676` | `cli-script` | `pass` |
|
||||
| `scripts/render_world_class_operator_runbook.py` | `651` | `cli-script` | `pass` |
|
||||
| `tests/verify_output_review_adjudication.py` | `599` | `test` | `pass` |
|
||||
| `scripts/render_skill_overview.py` | `588` | `cli-script` | `pass` |
|
||||
| `tests/verify_world_class_evidence_ledger.py` | `587` | `test` | `pass` |
|
||||
| `scripts/build_skill_atlas.py` | `586` | `cli-script` | `pass` |
|
||||
| `scripts/optimize_description.py` | `585` | `cli-script` | `pass` |
|
||||
| `scripts/trust_check.py` | `582` | `cli-script` | `pass` |
|
||||
|
||||
## Release Rule
|
||||
|
||||
- `block` hotspots should be split before governed release.
|
||||
- `warn` hotspots can ship only when Review Studio keeps them visible and a reviewer accepts the modularization plan.
|
||||
- Do not split a file only for line count; split when a stable responsibility boundary is clear.
|
||||
@@ -1,17 +1,41 @@
|
||||
{
|
||||
"skill_name": "yao-meta-skill",
|
||||
"skill_name": "yao-meta-skill-operator-ux-worktree",
|
||||
"design_system": "metric editorial",
|
||||
"primary_artifact": {
|
||||
"key": "code_or_cli",
|
||||
"label": "Code, CLI, or implementation guide",
|
||||
"direction": "Execution-focused technical artifact with environment assumptions, copyable commands, expected outputs, and side effects made explicit.",
|
||||
"key": "dashboard",
|
||||
"label": "Dashboard or metrics page",
|
||||
"direction": "Metric-first dashboard with stable dimensions, short labels, visible deltas, and narrative callouts only where they change interpretation.",
|
||||
"matched_keywords": [
|
||||
"code",
|
||||
"script",
|
||||
"command"
|
||||
"metric",
|
||||
"score",
|
||||
"table",
|
||||
"scorecard"
|
||||
]
|
||||
},
|
||||
"artifact_families": [
|
||||
{
|
||||
"key": "dashboard",
|
||||
"label": "Dashboard or metrics page",
|
||||
"score": 4,
|
||||
"matched_keywords": [
|
||||
"metric",
|
||||
"score",
|
||||
"table",
|
||||
"scorecard"
|
||||
],
|
||||
"direction": "Metric-first dashboard with stable dimensions, short labels, visible deltas, and narrative callouts only where they change interpretation."
|
||||
},
|
||||
{
|
||||
"key": "review_viewer",
|
||||
"label": "Review viewer",
|
||||
"score": 3,
|
||||
"matched_keywords": [
|
||||
"review",
|
||||
"viewer",
|
||||
"audit"
|
||||
],
|
||||
"direction": "Side-by-side reviewer studio with explicit tradeoffs, evidence readiness, and fast paths for approving, blocking, or requesting one focused fix."
|
||||
},
|
||||
{
|
||||
"key": "code_or_cli",
|
||||
"label": "Code, CLI, or implementation guide",
|
||||
@@ -33,25 +57,6 @@
|
||||
],
|
||||
"direction": "High-trust editorial report with a clear first-screen thesis, compact evidence blocks, and decisions separated from supporting detail."
|
||||
},
|
||||
{
|
||||
"key": "review_viewer",
|
||||
"label": "Review viewer",
|
||||
"score": 2,
|
||||
"matched_keywords": [
|
||||
"review",
|
||||
"viewer"
|
||||
],
|
||||
"direction": "Side-by-side reviewer studio with explicit tradeoffs, evidence readiness, and fast paths for approving, blocking, or requesting one focused fix."
|
||||
},
|
||||
{
|
||||
"key": "dashboard",
|
||||
"label": "Dashboard or metrics page",
|
||||
"score": 1,
|
||||
"matched_keywords": [
|
||||
"table"
|
||||
],
|
||||
"direction": "Metric-first dashboard with stable dimensions, short labels, visible deltas, and narrative callouts only where they change interpretation."
|
||||
},
|
||||
{
|
||||
"key": "visual_capture",
|
||||
"label": "Screenshot or visual evidence",
|
||||
@@ -63,14 +68,14 @@
|
||||
}
|
||||
],
|
||||
"layout_patterns": [
|
||||
"prerequisites",
|
||||
"commands",
|
||||
"expected output",
|
||||
"failure handling",
|
||||
"rollback or cleanup",
|
||||
"thesis",
|
||||
"evidence blocks",
|
||||
"decision table"
|
||||
"metric board",
|
||||
"ranked signals",
|
||||
"comparison rows",
|
||||
"interpretation",
|
||||
"action queue",
|
||||
"summary",
|
||||
"variant comparison",
|
||||
"evidence"
|
||||
],
|
||||
"design_tokens": {
|
||||
"type": [
|
||||
@@ -95,14 +100,14 @@
|
||||
]
|
||||
},
|
||||
"quality_gates": [
|
||||
"Name the working directory and required inputs for commands.",
|
||||
"Mark destructive, networked, or external side-effect operations.",
|
||||
"Prefer the smallest runnable snippet over broad framework scaffolding.",
|
||||
"Keep the first screen useful without requiring the reader to parse every detail.",
|
||||
"Use tables only for comparisons; move explanations below the table.",
|
||||
"Keep source notes readable without flooding the body with markers.",
|
||||
"Avoid paragraph-heavy table cells.",
|
||||
"Keep charts tied to one analytical question each.",
|
||||
"Preserve stable color meaning across metrics and entities.",
|
||||
"Make differences visible instead of hiding them in prose.",
|
||||
"Separate author-facing recommendations from reviewer-only evidence."
|
||||
"Separate author-facing recommendations from reviewer-only evidence.",
|
||||
"Surface conflicts clearly and keep routine benchmark synthesis quiet.",
|
||||
"Name the working directory and required inputs for commands.",
|
||||
"Mark destructive, networked, or external side-effect operations."
|
||||
],
|
||||
"anti_patterns": [
|
||||
"Do not copy Kami's fixed parchment background as a default.",
|
||||
|
||||
@@ -1,16 +1,26 @@
|
||||
# Artifact Design Profile
|
||||
|
||||
Skill: `yao-meta-skill`
|
||||
Skill: `yao-meta-skill-operator-ux-worktree`
|
||||
Design system: `metric editorial`
|
||||
|
||||
## Primary Artifact Direction
|
||||
|
||||
**Code, CLI, or implementation guide**
|
||||
**Dashboard or metrics page**
|
||||
|
||||
Execution-focused technical artifact with environment assumptions, copyable commands, expected outputs, and side effects made explicit.
|
||||
Metric-first dashboard with stable dimensions, short labels, visible deltas, and narrative callouts only where they change interpretation.
|
||||
|
||||
## Matched Artifact Families
|
||||
|
||||
### Dashboard or metrics page
|
||||
- Matched keywords: metric, score, table, scorecard
|
||||
- Score: `4`
|
||||
- Direction: Metric-first dashboard with stable dimensions, short labels, visible deltas, and narrative callouts only where they change interpretation.
|
||||
|
||||
### Review viewer
|
||||
- Matched keywords: review, viewer, audit
|
||||
- Score: `3`
|
||||
- Direction: Side-by-side reviewer studio with explicit tradeoffs, evidence readiness, and fast paths for approving, blocking, or requesting one focused fix.
|
||||
|
||||
### Code, CLI, or implementation guide
|
||||
- Matched keywords: code, script, command
|
||||
- Score: `3`
|
||||
@@ -21,16 +31,6 @@ Execution-focused technical artifact with environment assumptions, copyable comm
|
||||
- Score: `2`
|
||||
- Direction: High-trust editorial report with a clear first-screen thesis, compact evidence blocks, and decisions separated from supporting detail.
|
||||
|
||||
### Review viewer
|
||||
- Matched keywords: review, viewer
|
||||
- Score: `2`
|
||||
- Direction: Side-by-side reviewer studio with explicit tradeoffs, evidence readiness, and fast paths for approving, blocking, or requesting one focused fix.
|
||||
|
||||
### Dashboard or metrics page
|
||||
- Matched keywords: table
|
||||
- Score: `1`
|
||||
- Direction: Metric-first dashboard with stable dimensions, short labels, visible deltas, and narrative callouts only where they change interpretation.
|
||||
|
||||
### Screenshot or visual evidence
|
||||
- Matched keywords: screenshot
|
||||
- Score: `1`
|
||||
@@ -38,14 +38,14 @@ Execution-focused technical artifact with environment assumptions, copyable comm
|
||||
|
||||
## Layout Patterns To Prefer
|
||||
|
||||
- prerequisites
|
||||
- commands
|
||||
- expected output
|
||||
- failure handling
|
||||
- rollback or cleanup
|
||||
- thesis
|
||||
- evidence blocks
|
||||
- decision table
|
||||
- metric board
|
||||
- ranked signals
|
||||
- comparison rows
|
||||
- interpretation
|
||||
- action queue
|
||||
- summary
|
||||
- variant comparison
|
||||
- evidence
|
||||
|
||||
## Design Tokens
|
||||
|
||||
@@ -71,14 +71,14 @@ Execution-focused technical artifact with environment assumptions, copyable comm
|
||||
|
||||
## Quality Gates
|
||||
|
||||
- Name the working directory and required inputs for commands.
|
||||
- Mark destructive, networked, or external side-effect operations.
|
||||
- Prefer the smallest runnable snippet over broad framework scaffolding.
|
||||
- Keep the first screen useful without requiring the reader to parse every detail.
|
||||
- Use tables only for comparisons; move explanations below the table.
|
||||
- Keep source notes readable without flooding the body with markers.
|
||||
- Avoid paragraph-heavy table cells.
|
||||
- Keep charts tied to one analytical question each.
|
||||
- Preserve stable color meaning across metrics and entities.
|
||||
- Make differences visible instead of hiding them in prose.
|
||||
- Separate author-facing recommendations from reviewer-only evidence.
|
||||
- Surface conflicts clearly and keep routine benchmark synthesis quiet.
|
||||
- Name the working directory and required inputs for commands.
|
||||
- Mark destructive, networked, or external side-effect operations.
|
||||
|
||||
## Anti-Patterns
|
||||
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
{
|
||||
"summary": {
|
||||
"target_count": 3,
|
||||
"baseline_total_errors": 8,
|
||||
"current_total_errors": 5,
|
||||
"winner_total_errors": 5,
|
||||
"winner_vs_baseline_gain": 3,
|
||||
"baseline_total_errors": 5,
|
||||
"current_total_errors": 4,
|
||||
"winner_total_errors": 4,
|
||||
"winner_vs_baseline_gain": 1,
|
||||
"winner_vs_current_gain": 0
|
||||
},
|
||||
"comparisons": [
|
||||
@@ -20,7 +20,7 @@
|
||||
"adversarial_errors": 0
|
||||
},
|
||||
"current": {
|
||||
"tokens": 65,
|
||||
"tokens": 53,
|
||||
"dev_errors": 0,
|
||||
"holdout_errors": 0,
|
||||
"blind_errors": 0,
|
||||
@@ -28,7 +28,7 @@
|
||||
"adversarial_errors": 0
|
||||
},
|
||||
"winner": {
|
||||
"tokens": 65,
|
||||
"tokens": 53,
|
||||
"dev_errors": 0,
|
||||
"holdout_errors": 0,
|
||||
"blind_errors": 0,
|
||||
@@ -79,15 +79,15 @@
|
||||
"winner_label": "Current",
|
||||
"baseline": {
|
||||
"tokens": 93,
|
||||
"dev_errors": 1,
|
||||
"holdout_errors": 2,
|
||||
"blind_errors": 1,
|
||||
"dev_errors": 0,
|
||||
"holdout_errors": 1,
|
||||
"blind_errors": 0,
|
||||
"judge_blind_errors": 0,
|
||||
"adversarial_errors": 0
|
||||
},
|
||||
"current": {
|
||||
"tokens": 37,
|
||||
"dev_errors": 1,
|
||||
"dev_errors": 0,
|
||||
"holdout_errors": 1,
|
||||
"blind_errors": 0,
|
||||
"judge_blind_errors": 0,
|
||||
@@ -95,15 +95,15 @@
|
||||
},
|
||||
"winner": {
|
||||
"tokens": 37,
|
||||
"dev_errors": 1,
|
||||
"dev_errors": 0,
|
||||
"holdout_errors": 1,
|
||||
"blind_errors": 0,
|
||||
"judge_blind_errors": 0,
|
||||
"adversarial_errors": 0
|
||||
},
|
||||
"delta": {
|
||||
"current_vs_baseline": 2,
|
||||
"winner_vs_baseline": 2,
|
||||
"current_vs_baseline": 0,
|
||||
"winner_vs_baseline": 0,
|
||||
"winner_vs_current": 0
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,10 +3,10 @@
|
||||
A lightweight with-skill vs baseline comparison across tracked optimization targets.
|
||||
|
||||
- Targets: `3`
|
||||
- Baseline total errors: `8`
|
||||
- Current total errors: `5`
|
||||
- Winner total errors: `5`
|
||||
- Winner vs baseline gain: `3`
|
||||
- Baseline total errors: `5`
|
||||
- Current total errors: `4`
|
||||
- Winner total errors: `4`
|
||||
- Winner vs baseline gain: `1`
|
||||
- Winner vs current gain: `0`
|
||||
|
||||
## Target Breakdown
|
||||
@@ -15,4 +15,4 @@ A lightweight with-skill vs baseline comparison across tracked optimization targ
|
||||
| --- | ---: | ---: | ---: | --- |
|
||||
| root | 1 | 0 | 0 | Current |
|
||||
| team-frontend-review | 3 | 3 | 3 | Current |
|
||||
| governed-incident-command | 4 | 2 | 2 | Current |
|
||||
| governed-incident-command | 1 | 1 | 1 | Current |
|
||||
|
||||
@@ -60,6 +60,7 @@ Recommended release evidence:
|
||||
git rev-parse HEAD
|
||||
python3 scripts/run_output_eval.py
|
||||
python3 scripts/export_skill_ir.py . --output-json skill-ir/examples/yao-meta-skill.json
|
||||
python3 scripts/yao.py benchmark-reproducibility .
|
||||
make ci-test
|
||||
```
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user