diff --git a/.previews/yao-meta-skill-v2-report-demo/geo-content-brief-skill/reports/skill-overview.html b/.previews/yao-meta-skill-v2-report-demo/geo-content-brief-skill/reports/skill-overview.html index 2c826046..1ad73a78 100644 --- a/.previews/yao-meta-skill-v2-report-demo/geo-content-brief-skill/reports/skill-overview.html +++ b/.previews/yao-meta-skill-v2-report-demo/geo-content-brief-skill/reports/skill-overview.html @@ -350,19 +350,26 @@ } .metrics-report { display: grid; - gap: 20px; + gap: 22px; + } + .metrics-flow { + display: grid; + gap: 22px; } .metrics-primary { display: grid; - grid-template-columns: minmax(0, 0.92fr) minmax(360px, 1.08fr); - gap: 20px; - align-items: stretch; + grid-template-columns: minmax(420px, 1fr) minmax(360px, 0.88fr); + gap: 22px; + align-items: start; } .metrics-primary .chart-figure { - min-height: 100%; + min-height: 0; display: grid; align-content: center; } + .metrics-primary .chart-figure svg { + max-height: 520px; + } .metrics-note { display: grid; align-content: start; @@ -416,9 +423,12 @@ font-size: 12px; } .metric-grid { - grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); margin-top: 2px; } + .metric-detail-grid { + grid-template-columns: repeat(2, minmax(0, 1fr)); + align-items: stretch; + } .list, .compact-list, .step-list { margin: 0; padding-left: 1.15em; @@ -446,7 +456,7 @@ } .metric-card { display: grid; - grid-template-columns: 92px minmax(0, 1fr); + grid-template-columns: minmax(96px, 118px) minmax(0, 1fr); gap: 18px; align-content: start; min-height: 0; @@ -474,6 +484,11 @@ } .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; @@ -658,14 +673,16 @@
-
-
评分雷达完整度触发清晰证据充分可维护性可迁移性
评分雷达展示结构完整度、触发边界、证据、维护和迁移的相对强弱。
-
-

成熟度条Maturity Bar

-
  1. 稳定Stable完整度92SKILL.md 已存在,是 Skill 的入口。SKILL.md 已存在,是 Skill 的入口。
  2. 稳定Stable触发清晰100frontmatter description 已存在,具备基础路由面。frontmatter description 已存在,具备基础路由面。
  3. 关注Watch证据充分60已生成 12 / 20 类报告证据。已生成 12 / 20 类报告证据。
  4. 稳定Stable可维护性85SKILL.md 约 864 个词/字。SKILL.md 约 864 个词/字。
  5. 稳定Stable可迁移性100agents/interface.yaml 已存在。agents/interface.yaml 已存在。
  6. 可用Usable上下文成本78入口约 864 个词/字,references 约 565 个词/字。入口约 864 个词/字,references 约 565 个词/字。
-
+
+
+
评分雷达完整度触发清晰证据充分可维护性可迁移性
评分雷达展示结构完整度、触发边界、证据、维护和迁移的相对强弱。
+
+

成熟度条Maturity Bar

+
  1. 稳定Stable完整度92SKILL.md 已存在,是 Skill 的入口。SKILL.md 已存在,是 Skill 的入口。
  2. 稳定Stable触发清晰100frontmatter description 已存在,具备基础路由面。frontmatter description 已存在,具备基础路由面。
  3. 关注Watch证据充分60已生成 12 / 20 类报告证据。已生成 12 / 20 类报告证据。
  4. 稳定Stable可维护性85SKILL.md 约 864 个词/字。SKILL.md 约 864 个词/字。
  5. 稳定Stable可迁移性100agents/interface.yaml 已存在。agents/interface.yaml 已存在。
  6. 可用Usable上下文成本78入口约 864 个词/字,references 约 565 个词/字。入口约 864 个词/字,references 约 565 个词/字。
+
+
+
完整度92
  • SKILL.md 已存在,是 Skill 的入口。SKILL.md 已存在,是 Skill 的入口。
  • README.md 已存在,便于人工阅读。README.md 已存在,便于人工阅读。
  • agents/interface.yaml 已存在,便于跨平台适配。agents/interface.yaml 已存在,便于跨平台适配。
触发清晰100
  • frontmatter description 已存在,具备基础路由面。frontmatter description 已存在,具备基础路由面。
  • description 有足够长度说明任务边界。description 有足够长度说明任务边界。
  • description 已包含使用场景或排除边界信号。description 已包含使用场景或排除边界信号。
证据充分60
  • 已生成 12 / 20 类报告证据。已生成 12 / 20 类报告证据。
  • skill-ir.json 已存在。skill-ir.json 已存在。
  • compiled_targets.json 已存在。compiled_targets.json 已存在。
可维护性85
  • SKILL.md 约 864 个词/字。SKILL.md 约 864 个词/字。
  • 入口文件保持克制,可维护性较好。入口文件保持克制,可维护性较好。
  • references/ 已承载扩展指导。references/ 已承载扩展指导。
可迁移性100
  • agents/interface.yaml 已存在。agents/interface.yaml 已存在。
  • manifest.json 已存在。manifest.json 已存在。
  • 目标平台或 adapter target 已声明。目标平台或 adapter target 已声明。
上下文成本78
  • 入口约 864 个词/字,references 约 565 个词/字。入口约 864 个词/字,references 约 565 个词/字。
  • 分数越高代表上下文成本越低。分数越高代表上下文成本越低。
  • 上下文成本处于可控区间。上下文成本处于可控区间。
-
完整度92
  • SKILL.md 已存在,是 Skill 的入口。SKILL.md 已存在,是 Skill 的入口。
  • README.md 已存在,便于人工阅读。README.md 已存在,便于人工阅读。
  • agents/interface.yaml 已存在,便于跨平台适配。agents/interface.yaml 已存在,便于跨平台适配。
触发清晰100
  • frontmatter description 已存在,具备基础路由面。frontmatter description 已存在,具备基础路由面。
  • description 有足够长度说明任务边界。description 有足够长度说明任务边界。
  • description 已包含使用场景或排除边界信号。description 已包含使用场景或排除边界信号。
证据充分60
  • 已生成 12 / 20 类报告证据。已生成 12 / 20 类报告证据。
  • skill-ir.json 已存在。skill-ir.json 已存在。
  • compiled_targets.json 已存在。compiled_targets.json 已存在。
可维护性85
  • SKILL.md 约 864 个词/字。SKILL.md 约 864 个词/字。
  • 入口文件保持克制,可维护性较好。入口文件保持克制,可维护性较好。
  • references/ 已承载扩展指导。references/ 已承载扩展指导。
可迁移性100
  • agents/interface.yaml 已存在。agents/interface.yaml 已存在。
  • manifest.json 已存在。manifest.json 已存在。
  • 目标平台或 adapter target 已声明。目标平台或 adapter target 已声明。
上下文成本78
  • 入口约 864 个词/字,references 约 565 个词/字。入口约 864 个词/字,references 约 565 个词/字。
  • 分数越高代表上下文成本越低。分数越高代表上下文成本越低。
  • 上下文成本处于可控区间。上下文成本处于可控区间。
diff --git a/reports/skill-overview.html b/reports/skill-overview.html index cd546d14..666051a6 100644 --- a/reports/skill-overview.html +++ b/reports/skill-overview.html @@ -350,19 +350,26 @@ } .metrics-report { display: grid; - gap: 20px; + gap: 22px; + } + .metrics-flow { + display: grid; + gap: 22px; } .metrics-primary { display: grid; - grid-template-columns: minmax(0, 0.92fr) minmax(360px, 1.08fr); - gap: 20px; - align-items: stretch; + grid-template-columns: minmax(420px, 1fr) minmax(360px, 0.88fr); + gap: 22px; + align-items: start; } .metrics-primary .chart-figure { - min-height: 100%; + min-height: 0; display: grid; align-content: center; } + .metrics-primary .chart-figure svg { + max-height: 520px; + } .metrics-note { display: grid; align-content: start; @@ -416,9 +423,12 @@ font-size: 12px; } .metric-grid { - grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); margin-top: 2px; } + .metric-detail-grid { + grid-template-columns: repeat(2, minmax(0, 1fr)); + align-items: stretch; + } .list, .compact-list, .step-list { margin: 0; padding-left: 1.15em; @@ -446,7 +456,7 @@ } .metric-card { display: grid; - grid-template-columns: 92px minmax(0, 1fr); + grid-template-columns: minmax(96px, 118px) minmax(0, 1fr); gap: 18px; align-content: start; min-height: 0; @@ -474,6 +484,11 @@ } .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; @@ -658,14 +673,16 @@
-
-
评分雷达完整度触发清晰证据充分可维护性可迁移性
评分雷达展示结构完整度、触发边界、证据、维护和迁移的相对强弱。
-
-

成熟度条Maturity Bar

-
  1. 稳定Stable完整度100SKILL.md 已存在,是 Skill 的入口。SKILL.md 已存在,是 Skill 的入口。
  2. 稳定Stable触发清晰100frontmatter description 已存在,具备基础路由面。frontmatter description 已存在,具备基础路由面。
  3. 稳定Stable证据充分100已生成 20 / 20 类报告证据。已生成 20 / 20 类报告证据。
  4. 稳定Stable可维护性100SKILL.md 约 356 个词/字。SKILL.md 约 356 个词/字。
  5. 稳定Stable可迁移性100agents/interface.yaml 已存在。agents/interface.yaml 已存在。
  6. 关注Watch上下文成本42入口约 356 个词/字,references 约 15566 个词/字。入口约 356 个词/字,references 约 15566 个词/字。
-
+
+
+
评分雷达完整度触发清晰证据充分可维护性可迁移性
评分雷达展示结构完整度、触发边界、证据、维护和迁移的相对强弱。
+
+

成熟度条Maturity Bar

+
  1. 稳定Stable完整度100SKILL.md 已存在,是 Skill 的入口。SKILL.md 已存在,是 Skill 的入口。
  2. 稳定Stable触发清晰100frontmatter description 已存在,具备基础路由面。frontmatter description 已存在,具备基础路由面。
  3. 稳定Stable证据充分100已生成 20 / 20 类报告证据。已生成 20 / 20 类报告证据。
  4. 稳定Stable可维护性100SKILL.md 约 356 个词/字。SKILL.md 约 356 个词/字。
  5. 稳定Stable可迁移性100agents/interface.yaml 已存在。agents/interface.yaml 已存在。
  6. 关注Watch上下文成本42入口约 356 个词/字,references 约 15566 个词/字。入口约 356 个词/字,references 约 15566 个词/字。
+
+
+
完整度100
  • SKILL.md 已存在,是 Skill 的入口。SKILL.md 已存在,是 Skill 的入口。
  • README.md 已存在,便于人工阅读。README.md 已存在,便于人工阅读。
  • agents/interface.yaml 已存在,便于跨平台适配。agents/interface.yaml 已存在,便于跨平台适配。
触发清晰100
  • frontmatter description 已存在,具备基础路由面。frontmatter description 已存在,具备基础路由面。
  • description 有足够长度说明任务边界。description 有足够长度说明任务边界。
  • description 已包含使用场景或排除边界信号。description 已包含使用场景或排除边界信号。
证据充分100
  • 已生成 20 / 20 类报告证据。已生成 20 / 20 类报告证据。
  • skill-ir.json 已存在。skill-ir.json 已存在。
  • compiled_targets.json 已存在。compiled_targets.json 已存在。
可维护性100
  • SKILL.md 约 356 个词/字。SKILL.md 约 356 个词/字。
  • 入口文件保持克制,可维护性较好。入口文件保持克制,可维护性较好。
  • references/ 已承载扩展指导。references/ 已承载扩展指导。
可迁移性100
  • agents/interface.yaml 已存在。agents/interface.yaml 已存在。
  • manifest.json 已存在。manifest.json 已存在。
  • 目标平台或 adapter target 已声明。目标平台或 adapter target 已声明。
上下文成本42
  • 入口约 356 个词/字,references 约 15566 个词/字。入口约 356 个词/字,references 约 15566 个词/字。
  • 分数越高代表上下文成本越低。分数越高代表上下文成本越低。
  • 上下文成本偏高,建议压缩入口或拆分 references。上下文成本偏高,建议压缩入口或拆分 references。
-
完整度100
  • SKILL.md 已存在,是 Skill 的入口。SKILL.md 已存在,是 Skill 的入口。
  • README.md 已存在,便于人工阅读。README.md 已存在,便于人工阅读。
  • agents/interface.yaml 已存在,便于跨平台适配。agents/interface.yaml 已存在,便于跨平台适配。
触发清晰100
  • frontmatter description 已存在,具备基础路由面。frontmatter description 已存在,具备基础路由面。
  • description 有足够长度说明任务边界。description 有足够长度说明任务边界。
  • description 已包含使用场景或排除边界信号。description 已包含使用场景或排除边界信号。
证据充分100
  • 已生成 20 / 20 类报告证据。已生成 20 / 20 类报告证据。
  • skill-ir.json 已存在。skill-ir.json 已存在。
  • compiled_targets.json 已存在。compiled_targets.json 已存在。
可维护性100
  • SKILL.md 约 356 个词/字。SKILL.md 约 356 个词/字。
  • 入口文件保持克制,可维护性较好。入口文件保持克制,可维护性较好。
  • references/ 已承载扩展指导。references/ 已承载扩展指导。
可迁移性100
  • agents/interface.yaml 已存在。agents/interface.yaml 已存在。
  • manifest.json 已存在。manifest.json 已存在。
  • 目标平台或 adapter target 已声明。目标平台或 adapter target 已声明。
上下文成本42
  • 入口约 356 个词/字,references 约 15566 个词/字。入口约 356 个词/字,references 约 15566 个词/字。
  • 分数越高代表上下文成本越低。分数越高代表上下文成本越低。
  • 上下文成本偏高,建议压缩入口或拆分 references。上下文成本偏高,建议压缩入口或拆分 references。
diff --git a/scripts/render_skill_overview.py b/scripts/render_skill_overview.py index 8ad1fbf5..d2bd162c 100644 --- a/scripts/render_skill_overview.py +++ b/scripts/render_skill_overview.py @@ -415,14 +415,16 @@ def render_html(summary: dict) -> str:
-
- {charts["radar"]} -
-

{bi_span("成熟度条", "Maturity Bar")}

- {render_metric_summary(scorecard)} -
+
+
+ {charts["radar"]} +
+

{bi_span("成熟度条", "Maturity Bar")}

+ {render_metric_summary(scorecard)} +
+
+
{render_metric_cards(scorecard)}
-
{render_metric_cards(scorecard)}
diff --git a/scripts/skill_report_layout.py b/scripts/skill_report_layout.py index f9fb09fa..c0c30bee 100644 --- a/scripts/skill_report_layout.py +++ b/scripts/skill_report_layout.py @@ -379,19 +379,26 @@ def skill_overview_css() -> str: } .metrics-report { display: grid; - gap: 20px; + gap: 22px; + } + .metrics-flow { + display: grid; + gap: 22px; } .metrics-primary { display: grid; - grid-template-columns: minmax(0, 0.92fr) minmax(360px, 1.08fr); - gap: 20px; - align-items: stretch; + grid-template-columns: minmax(420px, 1fr) minmax(360px, 0.88fr); + gap: 22px; + align-items: start; } .metrics-primary .chart-figure { - min-height: 100%; + min-height: 0; display: grid; align-content: center; } + .metrics-primary .chart-figure svg { + max-height: 520px; + } .metrics-note { display: grid; align-content: start; @@ -445,9 +452,12 @@ def skill_overview_css() -> str: font-size: 12px; } .metric-grid { - grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); margin-top: 2px; } + .metric-detail-grid { + grid-template-columns: repeat(2, minmax(0, 1fr)); + align-items: stretch; + } .list, .compact-list, .step-list { margin: 0; padding-left: 1.15em; @@ -475,7 +485,7 @@ def skill_overview_css() -> str: } .metric-card { display: grid; - grid-template-columns: 92px minmax(0, 1fr); + grid-template-columns: minmax(96px, 118px) minmax(0, 1fr); gap: 18px; align-content: start; min-height: 0; @@ -503,6 +513,11 @@ def skill_overview_css() -> str: } .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; diff --git a/tests/verify_skill_overview.py b/tests/verify_skill_overview.py index b51c8c5d..51a6e981 100644 --- a/tests/verify_skill_overview.py +++ b/tests/verify_skill_overview.py @@ -48,7 +48,10 @@ def main() -> None: assert "background: #ffffff" in css_contract, css_contract[:1600] assert ".section-body" in css_contract, css_contract[:7000] assert ".metrics-primary" in css_contract, css_contract[:7000] - assert "repeat(auto-fit, minmax(320px, 1fr))" in css_contract, css_contract[:9000] + assert ".metrics-flow" in css_contract, css_contract[:9000] + assert ".metric-detail-grid" in css_contract, css_contract[:9000] + assert "repeat(2, minmax(0, 1fr))" in css_contract, css_contract[:9000] + assert "repeat(auto-fit, minmax(320px, 1fr))" not in css_contract, css_contract[:9000] assert "overflow-wrap: break-word" in css_contract, css_contract[:9000] assert "@media (max-width: 980px)" in css_contract, css_contract[-2200:] @@ -179,8 +182,11 @@ def main() -> None: assert 'class="progress-bar"' in report_html, report_html[:2400] assert 'aria-current' in report_html, report_html[-3000:] assert 'class="section-body metrics-report"' in report_html, report_html[:9000] + assert 'class="metrics-flow"' in report_html, report_html[:9000] assert 'class="metrics-primary"' in report_html, report_html[:9000] assert 'class="metrics-stack"' not in report_html, report_html[:9000] + assert 'class="metric-grid metric-detail-grid"' in report_html, report_html[:12000] + assert report_html.index('class="metrics-primary"') < report_html.index('class="metric-grid metric-detail-grid"'), report_html[:12000] assert "class='metric-summary-list'" in report_html, report_html[:9000] assert "class='metric-card-head'" in report_html, report_html[:12000] assert 'data-set-lang="zh-CN"' in report_html, report_html[:2600]