Improve skill overview world-class roadmap

This commit is contained in:
yaojingang
2026-06-15 18:47:15 +08:00
parent c6584482c6
commit f2fdcce071
8 changed files with 231 additions and 149 deletions
+26 -24
View File
@@ -512,7 +512,7 @@
"path": "scripts",
"label": "Deterministic helpers or local tooling",
"kind": "folder",
"file_count": 101
"file_count": 102
},
{
"path": "evals",
@@ -527,7 +527,7 @@
"file_count": 207
}
],
"file_count": 372,
"file_count": 373,
"folder_count": 4,
"distribution": [
{
@@ -552,7 +552,7 @@
},
{
"label": "scripts",
"value": 101
"value": 102
},
{
"label": "evals",
@@ -566,6 +566,17 @@
},
"iteration_roadmap": {
"items": [
{
"title": "补齐世界证据",
"why": "世界级证据仍有 4 项待补;公开完成态 claim 必须继续保持阻塞。",
"actions": [
"补齐提供商留出证据:缺少真实 provider 模型运行和 token metadata。",
"补齐人工盲评证据:盲评 pair 仍待真实 reviewer 决策。",
"继续补齐剩余 2 项外部/人工证据,并保持 claim guard 为 pending 状态。"
],
"unlocks": "全部外部/人工证据被 ledger 接受后,才能进入公开 world-class claim 复核。",
"source": "world_class_evidence_ledger"
},
{
"title": "Borrow one proven pattern on purpose",
"why": "You already have public benchmark objects. The next gain is to choose one pattern intentionally instead of absorbing everything loosely.",
@@ -585,16 +596,6 @@
"Package the skill once to verify adapter expectations."
],
"unlocks": "Safer cross-environment reuse with less target drift."
},
{
"title": "Create an iteration evidence loop",
"why": "The package should show what changed and why after the first draft.",
"actions": [
"Generate the HTML skill report and keep it aligned with the package.",
"Record reference scan choices and non-goals.",
"Capture the next iteration choice explicitly before adding more files."
],
"unlocks": "A clearer path for the next author or reviewer."
}
]
},
@@ -681,7 +682,7 @@
"path": "scripts",
"label": "Deterministic helpers or local tooling",
"kind": "folder",
"file_count": 101
"file_count": 102
},
{
"path": "evals",
@@ -755,6 +756,17 @@
}
],
"roadmap": [
{
"title": "补齐世界证据",
"why": "世界级证据仍有 4 项待补;公开完成态 claim 必须继续保持阻塞。",
"actions": [
"补齐提供商留出证据:缺少真实 provider 模型运行和 token metadata。",
"补齐人工盲评证据:盲评 pair 仍待真实 reviewer 决策。",
"继续补齐剩余 2 项外部/人工证据,并保持 claim guard 为 pending 状态。"
],
"unlocks": "全部外部/人工证据被 ledger 接受后,才能进入公开 world-class claim 复核。",
"source": "world_class_evidence_ledger"
},
{
"title": "Borrow one proven pattern on purpose",
"why": "You already have public benchmark objects. The next gain is to choose one pattern intentionally instead of absorbing everything loosely.",
@@ -774,16 +786,6 @@
"Package the skill once to verify adapter expectations."
],
"unlocks": "Safer cross-environment reuse with less target drift."
},
{
"title": "Create an iteration evidence loop",
"why": "The package should show what changed and why after the first draft.",
"actions": [
"Generate the HTML skill report and keep it aligned with the package.",
"Record reference scan choices and non-goals.",
"Capture the next iteration choice explicitly before adding more files."
],
"unlocks": "A clearer path for the next author or reviewer."
}
],
"cards": [],
+3 -3
View File
@@ -927,7 +927,7 @@
<p><span data-lang="zh-CN">让 reviewer 快速确认关键文件、目录和资产分布。</span><span data-lang="en">Lets reviewers confirm key files, directories, and asset distribution quickly.</span></p>
</div>
<div class="two-col">
<figure class="chart-figure" data-chart="asset_donut"><svg viewBox="0 0 430 270" role="img" aria-label="资产分布"><text data-lang="zh-CN" x="20" y="30" class="chart-title">资产分布</text><text data-lang="en" x="20" y="30" class="chart-title">Asset Distribution</text><circle cx="130" cy="130" r="70" fill="none" stroke="#1B365D" stroke-width="24" stroke-dasharray="0.7 99.3" stroke-dashoffset="0.0" pathLength="100" transform="rotate(-90 130 130)"/><circle cx="130" cy="130" r="70" fill="none" stroke="#2D5A8A" stroke-width="24" stroke-dasharray="0.7 99.3" stroke-dashoffset="-0.7" pathLength="100" transform="rotate(-90 130 130)"/><circle cx="130" cy="130" r="70" fill="none" stroke="#D0DCE9" stroke-width="24" stroke-dasharray="0.7 99.3" stroke-dashoffset="-1.5" pathLength="100" transform="rotate(-90 130 130)"/><circle cx="130" cy="130" r="70" fill="none" stroke="#E4ECF5" stroke-width="24" stroke-dasharray="0.7 99.3" stroke-dashoffset="-2.2" pathLength="100" transform="rotate(-90 130 130)"/><circle cx="130" cy="130" r="70" fill="none" stroke="#e8e6dc" stroke-width="24" stroke-dasharray="23.4 76.6" stroke-dashoffset="-2.9" pathLength="100" transform="rotate(-90 130 130)"/><circle cx="130" cy="130" r="70" fill="none" stroke="#504e49" stroke-width="24" stroke-dasharray="73.7 26.3" stroke-dashoffset="-26.3" pathLength="100" transform="rotate(-90 130 130)"/><text data-lang="zh-CN" x="130" y="136" text-anchor="middle">372</text><text data-lang="en" x="130" y="136" text-anchor="middle">372 items</text><text data-lang="zh-CN" x="235" y="78">SKILL.md</text><text data-lang="en" x="235" y="78">SKILL.md</text><text data-lang="zh-CN" x="235" y="100">README.md</text><text data-lang="en" x="235" y="100">README.md</text><text data-lang="zh-CN" x="235" y="122">agents/interface.yaml</text><text data-lang="en" x="235" y="122">agents/interface.yaml</text><text data-lang="zh-CN" x="235" y="144">manifest.json</text><text data-lang="en" x="235" y="144">manifest.json</text><text data-lang="zh-CN" x="235" y="166">references</text><text data-lang="en" x="235" y="166">references</text><text data-lang="zh-CN" x="235" y="188">scripts</text><text data-lang="en" x="235" y="188">scripts</text></svg><figcaption><span data-lang="zh-CN">资产分布图展示当前包体的文件和目录重心。</span><span data-lang="en">The asset distribution chart shows where files and directories are concentrated.</span></figcaption></figure>
<figure class="chart-figure" data-chart="asset_donut"><svg viewBox="0 0 430 270" role="img" aria-label="资产分布"><text data-lang="zh-CN" x="20" y="30" class="chart-title">资产分布</text><text data-lang="en" x="20" y="30" class="chart-title">Asset Distribution</text><circle cx="130" cy="130" r="70" fill="none" stroke="#1B365D" stroke-width="24" stroke-dasharray="0.7 99.3" stroke-dashoffset="0.0" pathLength="100" transform="rotate(-90 130 130)"/><circle cx="130" cy="130" r="70" fill="none" stroke="#2D5A8A" stroke-width="24" stroke-dasharray="0.7 99.3" stroke-dashoffset="-0.7" pathLength="100" transform="rotate(-90 130 130)"/><circle cx="130" cy="130" r="70" fill="none" stroke="#D0DCE9" stroke-width="24" stroke-dasharray="0.7 99.3" stroke-dashoffset="-1.4" pathLength="100" transform="rotate(-90 130 130)"/><circle cx="130" cy="130" r="70" fill="none" stroke="#E4ECF5" stroke-width="24" stroke-dasharray="0.7 99.3" stroke-dashoffset="-2.2" pathLength="100" transform="rotate(-90 130 130)"/><circle cx="130" cy="130" r="70" fill="none" stroke="#e8e6dc" stroke-width="24" stroke-dasharray="23.2 76.8" stroke-dashoffset="-2.9" pathLength="100" transform="rotate(-90 130 130)"/><circle cx="130" cy="130" r="70" fill="none" stroke="#504e49" stroke-width="24" stroke-dasharray="73.9 26.1" stroke-dashoffset="-26.1" pathLength="100" transform="rotate(-90 130 130)"/><text data-lang="zh-CN" x="130" y="136" text-anchor="middle">373</text><text data-lang="en" x="130" y="136" text-anchor="middle">373 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>
@@ -943,8 +943,8 @@
<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">Borrow one proven…</text><text data-lang="en" x="60" y="150" text-anchor="middle">Borrow one proven…</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">Harden portabilit</text><text data-lang="en" x="250" y="150" text-anchor="middle">Harden portabilit</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">Create an iterati</text><text data-lang="en" x="440" y="150" text-anchor="middle">Create an iterati</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">Borrow one proven pattern on purpose</span></h3><p><span data-lang="zh-CN">已经有公开 benchmark 对象,下一步应主动选择一个模式借鉴,而不是松散吸收所有做法。</span><span data-lang="en">You already have public benchmark objects. The next gain is to choose one pattern intentionally instead of absorbing everything loosely.</span></p><ul class="compact-list"><li><span data-lang="zh-CN">阅读 `obra/superpowers` 中最值得借鉴的模式。</span><span data-lang="en">Read the strongest pattern from obra/superpowers.</span></li><li><span data-lang="zh-CN">先判断要借鉴的是方法、结构、执行方式还是可迁移性,并且第一轮只借鉴其中一个。</span><span data-lang="en">Decide whether to borrow method, structure, execution, or portability, but only one of them first.</span></li><li><span data-lang="zh-CN">记录本轮不借鉴的内容,避免包体过重。</span><span data-lang="en">Record what you will not borrow so the package stays light.</span></li></ul><p class='unlock'><span data-lang="zh-CN">包体形态更清晰,也减少偶然过度设计</span><span data-lang="en">A cleaner package shape with less accidental over-design.</span></p></article><article class='roadmap-item'><span class='step'><span data-lang="zh-CN">下一步 2</span><span data-lang="en">Next 2</span></span><h3><span data-lang="zh-CN">加固跨环境语义</span><span data-lang="en">Harden portability semantics</span></h3><p><span data-lang="zh-CN">这个 Skill 已经面向跨环境复用,因此早期就需要把契约语义说清楚。</span><span data-lang="en">The skill already signals reuse across environments, so contract clarity matters early.</span></p><ul class="compact-list"><li><span data-lang="zh-CN">确认激活模式、执行上下文和信任假设。</span><span data-lang="en">Confirm activation mode, execution context, and trust assumptions.</span></li><li><span data-lang="zh-CN">补充或复核非原生目标端的降级策略。</span><span data-lang="en">Add or review degradation strategy for non-native targets.</span></li><li><span data-lang="zh-CN">至少打包一次 Skill,用来验证 adapter 预期</span><span data-lang="en">Package the skill once to verify adapter expectations.</span></li></ul><p class='unlock'><span data-lang="zh-CN">跨环境复用更安全,目标漂移更少</span><span data-lang="en">Safer cross-environment reuse with less target drift.</span></p></article><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">Create an iteration evidence loop</span></h3><p><span data-lang="zh-CN">第一版之后,包体应该能说明改了什么以及为什么改。</span><span data-lang="en">The package should show what changed and why after the first draft.</span></p><ul class="compact-list"><li><span data-lang="zh-CN">生成 HTML Skill 报告,并保持它与包体内容一致</span><span data-lang="en">Generate the HTML skill report and keep it aligned with the package.</span></li><li><span data-lang="zh-CN">记录参考扫描的取舍和非目标</span><span data-lang="en">Record reference scan choices and non-goals.</span></li><li><span data-lang="zh-CN">在继续增加文件前,明确记录下一轮迭代选择</span><span data-lang="en">Capture the next iteration choice explicitly before adding more files.</span></li></ul><p class='unlock'><span data-lang="zh-CN">让下一位作者或评审者更容易接手</span><span data-lang="en">A clearer path for the next author or reviewer.</span></p></article></div>
<div class="chart-grid"><figure class="chart-figure" data-chart="timeline"><svg viewBox="0 0 520 210" role="img" aria-label="迭代时间"><text data-lang="zh-CN" x="20" y="30" class="chart-title">迭代时间</text><text data-lang="en" x="20" y="30" class="chart-title">Iteration Timeline</text><line x1="60" y1="92" x2="440" y2="92" class="chart-line"/><circle cx="60" cy="92" r="10" fill="#1B365D"/><text data-lang="zh-CN" x="60" y="126" text-anchor="middle">下一步 1</text><text data-lang="en" x="60" y="126" text-anchor="middle">Next 1</text><text data-lang="zh-CN" x="60" y="150" text-anchor="middle">补齐世界证据</text><text data-lang="en" x="60" y="150" text-anchor="middle">Close world-class evide...</text><circle cx="250" cy="92" r="10" fill="#1B365D"/><text data-lang="zh-CN" x="250" y="126" text-anchor="middle">下一步 2</text><text data-lang="en" x="250" y="126" text-anchor="middle">Next 2</text><text data-lang="zh-CN" x="250" y="150" text-anchor="middle">Borrow one proven</text><text data-lang="en" x="250" y="150" text-anchor="middle">Borrow one proven</text><circle cx="440" cy="92" r="10" fill="#1B365D"/><text data-lang="zh-CN" x="440" y="126" text-anchor="middle">下一步 3</text><text data-lang="en" x="440" y="126" text-anchor="middle">Next 3</text><text data-lang="zh-CN" x="440" y="150" text-anchor="middle">Harden portabilit</text><text data-lang="en" x="440" y="150" text-anchor="middle">Harden portabilit</text></svg><figcaption><span data-lang="zh-CN">迭代时间线把下一步升级收束成少数可执行动作。</span><span data-lang="en">The iteration timeline narrows the next upgrade into a few executable moves.</span></figcaption></figure></div>
<div class="roadmap"><article class='roadmap-item'><span class='step'><span data-lang="zh-CN">下一步 1</span><span data-lang="en">Next 1</span></span><h3><span data-lang="zh-CN">补齐世界证据</span><span data-lang="en">Close world-class evidence</span></h3><p><span data-lang="zh-CN">世界级证据仍有 4 项待补;公开完成态 claim 必须继续保持阻塞。</span><span data-lang="en">World-class evidence still has 4 pending item(s); public completion claims must stay blocked.</span></p><ul class="compact-list"><li><span data-lang="zh-CN">补齐提供商留出证据:缺少真实 provider 模型运行和 token metadata。</span><span data-lang="en">Close provider holdout evidence: Missing a real provider model run and token metadata.</span></li><li><span data-lang="zh-CN">补齐人工盲评证据:盲评 pair 仍待真实 reviewer 决策。</span><span data-lang="en">Close human adjudication evidence: Blind-review pairs still need real reviewer decisions.</span></li><li><span data-lang="zh-CN">继续补齐剩余 2 项外部/人工证据,并保持 claim guard 为 pending 状态。</span><span data-lang="en">Close the remaining 2 external or human evidence item(s) and keep the claim guard pending.</span></li></ul><p class='unlock'><span data-lang="zh-CN">全部外部/人工证据被 ledger 接受后,才能进入公开 world-class claim 复核</span><span data-lang="en">Only after the ledger accepts all external and human evidence should the public world-class claim move to review.</span></p></article><article class='roadmap-item'><span class='step'><span data-lang="zh-CN">下一步 2</span><span data-lang="en">Next 2</span></span><h3><span data-lang="zh-CN">有选择地借鉴一个成熟模式</span><span data-lang="en">Borrow one proven pattern on purpose</span></h3><p><span data-lang="zh-CN">已经有公开 benchmark 对象,下一步应主动选择一个模式借鉴,而不是松散吸收所有做法。</span><span data-lang="en">You already have public benchmark objects. The next gain is to choose one pattern intentionally instead of absorbing everything loosely.</span></p><ul class="compact-list"><li><span data-lang="zh-CN">阅读 `obra/superpowers` 中最值得借鉴的模式。</span><span data-lang="en">Read the strongest pattern from obra/superpowers.</span></li><li><span data-lang="zh-CN">先判断要借鉴的是方法、结构、执行方式还是可迁移性,并且第一轮只借鉴其中一个。</span><span data-lang="en">Decide whether to borrow method, structure, execution, or portability, but only one of them first.</span></li><li><span data-lang="zh-CN">记录本轮不借鉴的内容,避免包体过重</span><span data-lang="en">Record what you will not borrow so the package stays light.</span></li></ul><p class='unlock'><span data-lang="zh-CN">包体形态更清晰,也减少偶然过度设计</span><span data-lang="en">A cleaner package shape with less accidental over-design.</span></p></article><article class='roadmap-item'><span class='step'><span data-lang="zh-CN">下一步 3</span><span data-lang="en">Next 3</span></span><h3><span data-lang="zh-CN">加固跨环境语义</span><span data-lang="en">Harden portability semantics</span></h3><p><span data-lang="zh-CN">这个 Skill 已经面向跨环境复用,因此早期就需要把契约语义说清楚。</span><span data-lang="en">The skill already signals reuse across environments, so contract clarity matters early.</span></p><ul class="compact-list"><li><span data-lang="zh-CN">确认激活模式、执行上下文和信任假设</span><span data-lang="en">Confirm activation mode, execution context, and trust assumptions.</span></li><li><span data-lang="zh-CN">补充或复核非原生目标端的降级策略</span><span data-lang="en">Add or review degradation strategy for non-native targets.</span></li><li><span data-lang="zh-CN">至少打包一次 Skill,用来验证 adapter 预期</span><span data-lang="en">Package the skill once to verify adapter expectations.</span></li></ul><p class='unlock'><span data-lang="zh-CN">跨环境复用更安全,目标漂移更少</span><span data-lang="en">Safer cross-environment reuse with less target drift.</span></p></article></div>
</div>
</div>
</section>
+26 -24
View File
@@ -511,7 +511,7 @@
"path": "scripts",
"label": "Deterministic helpers or local tooling",
"kind": "folder",
"file_count": 101
"file_count": 102
},
{
"path": "evals",
@@ -526,7 +526,7 @@
"file_count": 207
}
],
"file_count": 372,
"file_count": 373,
"folder_count": 4,
"distribution": [
{
@@ -551,7 +551,7 @@
},
{
"label": "scripts",
"value": 101
"value": 102
},
{
"label": "evals",
@@ -565,6 +565,17 @@
},
"iteration_roadmap": {
"items": [
{
"title": "补齐世界证据",
"why": "世界级证据仍有 4 项待补;公开完成态 claim 必须继续保持阻塞。",
"actions": [
"补齐提供商留出证据:缺少真实 provider 模型运行和 token metadata。",
"补齐人工盲评证据:盲评 pair 仍待真实 reviewer 决策。",
"继续补齐剩余 2 项外部/人工证据,并保持 claim guard 为 pending 状态。"
],
"unlocks": "全部外部/人工证据被 ledger 接受后,才能进入公开 world-class claim 复核。",
"source": "world_class_evidence_ledger"
},
{
"title": "Borrow one proven pattern on purpose",
"why": "You already have public benchmark objects. The next gain is to choose one pattern intentionally instead of absorbing everything loosely.",
@@ -584,16 +595,6 @@
"Package the skill once to verify adapter expectations."
],
"unlocks": "Safer cross-environment reuse with less target drift."
},
{
"title": "Create an iteration evidence loop",
"why": "The package should show what changed and why after the first draft.",
"actions": [
"Generate the HTML skill report and keep it aligned with the package.",
"Record reference scan choices and non-goals.",
"Capture the next iteration choice explicitly before adding more files."
],
"unlocks": "A clearer path for the next author or reviewer."
}
]
},
@@ -680,7 +681,7 @@
"path": "scripts",
"label": "Deterministic helpers or local tooling",
"kind": "folder",
"file_count": 101
"file_count": 102
},
{
"path": "evals",
@@ -754,6 +755,17 @@
}
],
"roadmap": [
{
"title": "补齐世界证据",
"why": "世界级证据仍有 4 项待补;公开完成态 claim 必须继续保持阻塞。",
"actions": [
"补齐提供商留出证据:缺少真实 provider 模型运行和 token metadata。",
"补齐人工盲评证据:盲评 pair 仍待真实 reviewer 决策。",
"继续补齐剩余 2 项外部/人工证据,并保持 claim guard 为 pending 状态。"
],
"unlocks": "全部外部/人工证据被 ledger 接受后,才能进入公开 world-class claim 复核。",
"source": "world_class_evidence_ledger"
},
{
"title": "Borrow one proven pattern on purpose",
"why": "You already have public benchmark objects. The next gain is to choose one pattern intentionally instead of absorbing everything loosely.",
@@ -773,16 +785,6 @@
"Package the skill once to verify adapter expectations."
],
"unlocks": "Safer cross-environment reuse with less target drift."
},
{
"title": "Create an iteration evidence loop",
"why": "The package should show what changed and why after the first draft.",
"actions": [
"Generate the HTML skill report and keep it aligned with the package.",
"Record reference scan choices and non-goals.",
"Capture the next iteration choice explicitly before adding more files."
],
"unlocks": "A clearer path for the next author or reviewer."
}
],
"cards": [],
+27
View File
@@ -29,6 +29,7 @@ TEXT_ZH = {
"Borrow one proven pattern on purpose": "有选择地借鉴一个成熟模式",
"Harden portability semantics": "加固跨环境语义",
"Create an iteration evidence loop": "建立迭代证据回路",
"补齐世界证据": "补齐世界证据",
"The package needs clearer near-neighbor exclusions before it grows.": "在继续扩展前,需要先把相邻但不应触发的场景说清楚。",
"The package is still mostly prose. Add one asset that removes repeated manual work.": "当前包体仍偏文本说明,应先增加一个能减少重复人工操作的资产。",
"The first version exists; the next gain usually comes from adding the smallest useful gates.": "第一版已经存在,下一步收益通常来自补上最小但有效的质量门禁。",
@@ -58,6 +59,8 @@ TEXT_ZH = {
"A cleaner package shape with less accidental over-design.": "包体形态更清晰,也减少偶然过度设计。",
"Safer cross-environment reuse with less target drift.": "跨环境复用更安全,目标漂移更少。",
"A clearer path for the next author or reviewer.": "让下一位作者或评审者更容易接手。",
"提交有效 intake packet,并让 ledger 通过 artifact SHA-256 校验。": "提交有效 intake packet,并让 ledger 通过 artifact SHA-256 校验。",
"全部外部/人工证据被 ledger 接受后,才能进入公开 world-class claim 复核。": "全部外部/人工证据被 ledger 接受后,才能进入公开 world-class claim 复核。",
}
TEXT_EN = {
@@ -154,6 +157,13 @@ TEXT_EN = {
"只把重复且稳定的步骤沉淀为脚本。": "Turn only repeated and stable steps into scripts.",
"每次升级后重新生成报告并检查分数原因。": "Regenerate the report after each upgrade and inspect score reasons.",
"先补证据和边界,再增加包体复杂度。": "Improve evidence and boundaries before adding package complexity.",
"补齐世界证据": "Close world-class evidence",
"提交有效 intake packet,并让 ledger 通过 artifact SHA-256 校验。": "Submit valid intake packets and let the ledger verify artifact SHA-256 digests.",
"全部外部/人工证据被 ledger 接受后,才能进入公开 world-class claim 复核。": "Only after the ledger accepts all external and human evidence should the public world-class claim move to review.",
"缺少真实 provider 模型运行和 token metadata。": "Missing a real provider model run and token metadata.",
"盲评 pair 仍待真实 reviewer 决策。": "Blind-review pairs still need real reviewer decisions.",
"原生 runtime enforcement 仍待目标客户端或外部安装器证明。": "Native runtime enforcement still needs target-client or external-installer proof.",
"真实外部客户端 metadata-only 事件仍未导入。": "Real external-client metadata-only events have not been imported yet.",
}
MODE_ZH = {
@@ -200,6 +210,13 @@ METRIC_LABEL_EN = {
"上下文成本": "Context cost",
}
WORLD_CLASS_LABEL_EN = {
"提供商留出": "provider holdout",
"人工盲评": "human adjudication",
"原生权限": "native permission",
"原生遥测": "native telemetry",
}
def contains_cjk(text: str) -> bool:
return any("\u4e00" <= char <= "\u9fff" for char in str(text))
@@ -271,6 +288,16 @@ def en_for(text: str) -> str:
return "Recorded fixtures: " + value.removeprefix("记录样本:")
if value.startswith("Token 估算:"):
return "Token estimates: " + value.removeprefix("Token 估算:")
match = re.match(r"^世界级证据仍有\s+(\d+)\s+项待补;公开完成态 claim 必须继续保持阻塞。$", value)
if match:
return f"World-class evidence still has {match.group(1)} pending item(s); public completion claims must stay blocked."
match = re.match(r"^补齐(.+?)证据:(.+)$", value)
if match:
label = WORLD_CLASS_LABEL_EN.get(match.group(1), match.group(1))
return f"Close {label} evidence: {en_for(match.group(2))}"
match = re.match(r"^继续补齐剩余\s+(\d+)\s+项外部/人工证据,并保持 claim guard 为 pending 状态。$", value)
if match:
return f"Close the remaining {match.group(1)} external or human evidence item(s) and keep the claim guard pending."
match = re.match(r"^已生成\s+(\d+)\s+/\s+(\d+)\s+类报告证据。$", value)
if match:
return f"Generated {match.group(1)} / {match.group(2)} evidence report types."
+10 -98
View File
@@ -5,6 +5,7 @@ from datetime import date
from pathlib import Path
from skill_report_metrics import calculate_scorecard
from skill_report_world_class import world_class_readiness, world_class_roadmap_item
try:
import yaml
@@ -307,9 +308,12 @@ def principle_nodes(system_model: dict) -> list[dict]:
]
def roadmap_items(iteration: dict) -> list[dict]:
def roadmap_items(iteration: dict, readiness: dict | None = None) -> list[dict]:
directions = iteration.get("directions", []) if isinstance(iteration, dict) else []
items = []
evidence_item = world_class_roadmap_item(readiness or {})
if evidence_item:
items.append(evidence_item)
for item in directions[:3]:
items.append(
{
@@ -319,6 +323,8 @@ def roadmap_items(iteration: dict) -> list[dict]:
"unlocks": item.get("unlocks", ""),
}
)
if len(items) >= 3:
break
if items:
return items
return [
@@ -460,101 +466,6 @@ def package_assets(package_map: list[dict]) -> dict:
}
WORLD_CLASS_ENTRY_COPY = {
"provider-holdout": {
"label_zh": "提供商留出",
"label_en": "Provider Holdout",
"summary_zh": "缺少真实 provider 模型运行和 token metadata。",
"summary_en": "Missing a real provider model run and token metadata.",
},
"human-adjudication": {
"label_zh": "人工盲评",
"label_en": "Human Adjudication",
"summary_zh": "盲评 pair 仍待真实 reviewer 决策。",
"summary_en": "Blind-review pairs still need real reviewer decisions.",
},
"native-permission-enforcement": {
"label_zh": "原生权限",
"label_en": "Native Permission",
"summary_zh": "原生 runtime enforcement 仍待目标客户端或外部安装器证明。",
"summary_en": "Native runtime enforcement still needs target-client or external-installer proof.",
},
"native-client-telemetry": {
"label_zh": "原生遥测",
"label_en": "Native Telemetry",
"summary_zh": "真实外部客户端 metadata-only 事件仍未导入。",
"summary_en": "Real external-client metadata-only events have not been imported yet.",
},
}
def world_class_readiness(ledger: dict) -> dict:
summary = ledger.get("summary", {}) if isinstance(ledger, dict) else {}
entries = ledger.get("entries", []) if isinstance(ledger, dict) else []
if not isinstance(entries, list):
entries = []
source_check_count = int(summary.get("source_check_count", 0) or 0)
source_pass_count = int(summary.get("source_pass_count", 0) or 0)
pending_count = int(summary.get("pending_count", len(entries)) or 0)
accepted_count = int(summary.get("accepted_count", 0) or 0)
entry_count = int(summary.get("ledger_entry_count", len(entries)) or 0)
external_pending_count = int(summary.get("external_pending_count", 0) or 0)
human_pending_count = int(summary.get("human_pending_count", 0) or 0)
ready = bool(summary.get("ready_to_claim_world_class", False))
decision = str(summary.get("decision", "not-generated" if entry_count == 0 else "evidence-pending"))
if entry_count == 0:
conclusion_zh = "未生成 world-class ledger;当前报告不会宣称世界级完成。"
conclusion_en = "No world-class ledger was generated; this report does not claim world-class completion."
elif ready:
conclusion_zh = "世界级证据已被 ledger 接受,可进入公开 claim 前的最终复核。"
conclusion_en = "World-class evidence is accepted by the ledger and can move to final claim review."
else:
conclusion_zh = f"世界级证据尚未完成:{pending_count} 项待补,{accepted_count} 项已接受。"
conclusion_en = f"World-class evidence is not complete: {pending_count} pending, {accepted_count} accepted."
items = []
for entry in entries[:4]:
if not isinstance(entry, dict):
continue
key = str(entry.get("key", ""))
copy = WORLD_CLASS_ENTRY_COPY.get(key, {})
category = str(entry.get("category", "external"))
source_checklist = entry.get("source_checklist", [])
blocked_checks = [
str(check.get("label", ""))
for check in source_checklist
if isinstance(check, dict) and check.get("status") == "blocked" and str(check.get("label", "")).strip()
][:3]
items.append(
{
"key": key,
"label_zh": copy.get("label_zh", str(entry.get("label", key))),
"label_en": copy.get("label_en", str(entry.get("label", key))),
"category": category,
"category_zh": "人工证据" if category == "human" else "外部证据",
"category_en": "Human evidence" if category == "human" else "External evidence",
"status": str(entry.get("status", "pending")),
"summary_zh": copy.get("summary_zh", str(entry.get("current", ""))),
"summary_en": copy.get("summary_en", str(entry.get("current", ""))),
"blocked_checks": blocked_checks,
}
)
return {
"ready": ready,
"decision": decision,
"entry_count": entry_count,
"pending_count": pending_count,
"accepted_count": accepted_count,
"external_pending_count": external_pending_count,
"human_pending_count": human_pending_count,
"source_check_count": source_check_count,
"source_pass_count": source_pass_count,
"conclusion_zh": conclusion_zh,
"conclusion_en": conclusion_en,
"entries": items,
}
def build_report_model(skill_dir: Path) -> dict:
skill_dir = skill_dir.resolve()
skill_text = (skill_dir / "SKILL.md").read_text(encoding="utf-8")
@@ -607,7 +518,8 @@ def build_report_model(skill_dir: Path) -> dict:
trigger = trigger_contract(interface_data, description)
io = io_contract(intent, package_map, description)
principles = principle_nodes(system_model)
roadmap = roadmap_items(iteration)
readiness = world_class_readiness(world_class_evidence_ledger)
roadmap = roadmap_items(iteration, readiness)
metadata = {
"canonical_format": interface_data.get("compatibility", {}).get("canonical_format", "agent-skills"),
"targets": interface_data.get("compatibility", {}).get("adapter_targets", []),
@@ -714,7 +626,7 @@ def build_report_model(skill_dir: Path) -> dict:
"contract_boundary": contract,
"quality_review": q_review,
"risk_governance": risk_governance(output_risk, system_model, scorecard),
"world_class_readiness": world_class_readiness(world_class_evidence_ledger),
"world_class_readiness": readiness,
"package_assets": package_assets(package_map),
"iteration_roadmap": {"items": roadmap},
"report_contract": report_contract,
+122
View File
@@ -0,0 +1,122 @@
"""World-class evidence shaping for the static skill overview report."""
SCRIPT_INTERFACE = "internal-module"
SCRIPT_INTERFACE_REASON = "Imported by skill_report_model.py to summarize world-class evidence readiness and roadmap actions."
WORLD_CLASS_ENTRY_COPY = {
"provider-holdout": {
"label_zh": "提供商留出",
"label_en": "Provider Holdout",
"summary_zh": "缺少真实 provider 模型运行和 token metadata。",
"summary_en": "Missing a real provider model run and token metadata.",
},
"human-adjudication": {
"label_zh": "人工盲评",
"label_en": "Human Adjudication",
"summary_zh": "盲评 pair 仍待真实 reviewer 决策。",
"summary_en": "Blind-review pairs still need real reviewer decisions.",
},
"native-permission-enforcement": {
"label_zh": "原生权限",
"label_en": "Native Permission",
"summary_zh": "原生 runtime enforcement 仍待目标客户端或外部安装器证明。",
"summary_en": "Native runtime enforcement still needs target-client or external-installer proof.",
},
"native-client-telemetry": {
"label_zh": "原生遥测",
"label_en": "Native Telemetry",
"summary_zh": "真实外部客户端 metadata-only 事件仍未导入。",
"summary_en": "Real external-client metadata-only events have not been imported yet.",
},
}
def world_class_readiness(ledger: dict) -> dict:
summary = ledger.get("summary", {}) if isinstance(ledger, dict) else {}
entries = ledger.get("entries", []) if isinstance(ledger, dict) else []
if not isinstance(entries, list):
entries = []
source_check_count = int(summary.get("source_check_count", 0) or 0)
source_pass_count = int(summary.get("source_pass_count", 0) or 0)
pending_count = int(summary.get("pending_count", len(entries)) or 0)
accepted_count = int(summary.get("accepted_count", 0) or 0)
entry_count = int(summary.get("ledger_entry_count", len(entries)) or 0)
ready = bool(summary.get("ready_to_claim_world_class", False))
decision = str(summary.get("decision", "not-generated" if entry_count == 0 else "evidence-pending"))
if entry_count == 0:
conclusion_zh = "未生成 world-class ledger;当前报告不会宣称世界级完成。"
conclusion_en = "No world-class ledger was generated; this report does not claim world-class completion."
elif ready:
conclusion_zh = "世界级证据已被 ledger 接受,可进入公开 claim 前的最终复核。"
conclusion_en = "World-class evidence is accepted by the ledger and can move to final claim review."
else:
conclusion_zh = f"世界级证据尚未完成:{pending_count} 项待补,{accepted_count} 项已接受。"
conclusion_en = f"World-class evidence is not complete: {pending_count} pending, {accepted_count} accepted."
items = []
for entry in entries[:4]:
if not isinstance(entry, dict):
continue
key = str(entry.get("key", ""))
copy = WORLD_CLASS_ENTRY_COPY.get(key, {})
category = str(entry.get("category", "external"))
checklist = entry.get("source_checklist", [])
blocked_checks = [
str(check.get("label", ""))
for check in checklist
if isinstance(check, dict) and check.get("status") == "blocked" and str(check.get("label", "")).strip()
][:3]
items.append(
{
"key": key,
"label_zh": copy.get("label_zh", str(entry.get("label", key))),
"label_en": copy.get("label_en", str(entry.get("label", key))),
"category": category,
"category_zh": "人工证据" if category == "human" else "外部证据",
"category_en": "Human evidence" if category == "human" else "External evidence",
"status": str(entry.get("status", "pending")),
"summary_zh": copy.get("summary_zh", str(entry.get("current", ""))),
"summary_en": copy.get("summary_en", str(entry.get("current", ""))),
"blocked_checks": blocked_checks,
}
)
return {
"ready": ready,
"decision": decision,
"entry_count": entry_count,
"pending_count": pending_count,
"accepted_count": accepted_count,
"external_pending_count": int(summary.get("external_pending_count", 0) or 0),
"human_pending_count": int(summary.get("human_pending_count", 0) or 0),
"source_check_count": source_check_count,
"source_pass_count": source_pass_count,
"conclusion_zh": conclusion_zh,
"conclusion_en": conclusion_en,
"entries": items,
}
def world_class_roadmap_item(readiness: dict) -> dict | None:
if not isinstance(readiness, dict):
return None
pending_count = int(readiness.get("pending_count", 0) or 0)
if readiness.get("ready") or pending_count <= 0:
return None
actions = []
entries = [entry for entry in readiness.get("entries", []) if isinstance(entry, dict)]
for entry in entries[:2]:
label = str(entry.get("label_zh") or entry.get("key") or "证据项")
summary = str(entry.get("summary_zh") or "仍待补充真实证据。")
actions.append(f"补齐{label}证据:{summary}")
remaining = pending_count - len(actions)
if remaining > 0:
actions.append(f"继续补齐剩余 {remaining} 项外部/人工证据,并保持 claim guard 为 pending 状态。")
else:
actions.append("提交有效 intake packet,并让 ledger 通过 artifact SHA-256 校验。")
return {
"title": "补齐世界证据",
"why": f"世界级证据仍有 {pending_count} 项待补;公开完成态 claim 必须继续保持阻塞。",
"actions": actions[:3],
"unlocks": "全部外部/人工证据被 ledger 接受后,才能进入公开 world-class claim 复核。",
"source": "world_class_evidence_ledger",
}
+15
View File
@@ -72,6 +72,16 @@ def main() -> None:
assert en_for("Use this skill when the request matches: 中文描述") == (
"Use this skill when the request matches the frontmatter description."
)
assert en_for("补齐世界证据") == "Close world-class evidence"
assert en_for("世界级证据仍有 2 项待补;公开完成态 claim 必须继续保持阻塞。") == (
"World-class evidence still has 2 pending item(s); public completion claims must stay blocked."
)
assert en_for("补齐提供商留出证据:缺少真实 provider 模型运行和 token metadata。") == (
"Close provider holdout evidence: Missing a real provider model run and token metadata."
)
assert en_for("提交有效 intake packet,并让 ledger 通过 artifact SHA-256 校验。") == (
"Submit valid intake packets and let the ledger verify artifact SHA-256 digests."
)
tmp_root = ROOT / "tests" / "tmp_skill_overview"
if tmp_root.exists():
@@ -296,6 +306,11 @@ def main() -> None:
assert overview_json["world_class_readiness"]["pending_count"] == 2, overview_json["world_class_readiness"]
assert overview_json["world_class_readiness"]["source_pass_count"] == 1, overview_json["world_class_readiness"]
assert overview_json["world_class_readiness"]["source_check_count"] == 4, overview_json["world_class_readiness"]
assert overview_json["iteration_roadmap"]["items"][0]["title"] == "补齐世界证据", overview_json["iteration_roadmap"]
assert overview_json["iteration_roadmap"]["items"][0]["source"] == "world_class_evidence_ledger", overview_json["iteration_roadmap"]
assert "世界级证据仍有 2 项待补" in overview_json["iteration_roadmap"]["items"][0]["why"], overview_json["iteration_roadmap"]
assert any("补齐提供商留出证据" in item for item in overview_json["iteration_roadmap"]["items"][0]["actions"]), overview_json["iteration_roadmap"]
assert "Close world-class evidence" in report_html, report_html
assert "执行流程" in report_html, report_html[:5000]
assert "调用方式" in report_html, report_html[:5000]
assert "证据不足" in report_html or "证据充分" in report_html, report_html[:8000]
+2
View File
@@ -96,6 +96,7 @@ def main() -> None:
"scripts/skill_report_layout.py",
"scripts/skill_report_metrics.py",
"scripts/skill_report_model.py",
"scripts/skill_report_world_class.py",
"scripts/world_class_evidence_contract.py",
"scripts/world_class_source_checks.py",
"scripts/yao_cli_config.py",
@@ -113,6 +114,7 @@ def main() -> None:
assert "skill_report_layout.py" not in warning_text, payload["warnings"]
assert "skill_report_metrics.py" not in warning_text, payload["warnings"]
assert "skill_report_model.py" not in warning_text, payload["warnings"]
assert "skill_report_world_class.py" not in warning_text, payload["warnings"]
assert "world_class_evidence_contract.py" not in warning_text, payload["warnings"]
assert "world_class_source_checks.py" not in warning_text, payload["warnings"]
assert "yao_cli_config.py" not in warning_text, payload["warnings"]