@ccoalm/ccl-skills 0.3.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/classify_envelope.py +34 -3
  2. package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/test_abort_leak_state_helpers.sh +148 -0
  3. package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/test_classify_envelope.sh +28 -0
  4. package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/test_parse_review_json.sh +7 -0
  5. package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/test_review_gate.sh +13 -0
  6. package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/test_review_gate_abort_leak.sh +271 -34
  7. package/dist/assets/marketplace/plugins/ccl-skills/skills/multi-perspective-research/references/public-data-acquisition.md +3 -1
  8. package/dist/assets/marketplace/plugins/ccl-skills/skills/multi-perspective-research/references/public-disclosure-channels.md +2 -0
  9. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/SKILL.md +12 -12
  10. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/dual-track-review-gate.md +8 -0
  11. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/eval-routing.md +7 -8
  12. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/external-practice-controls.md +12 -0
  13. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/extraction-quickstart.md +3 -2
  14. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/firing-point-placement.md +8 -0
  15. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/harness-patterns-and-eval.md +7 -6
  16. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/recurring-anti-patterns-checklist.md +18 -0
  17. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/source-register.md +47 -2
  18. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/source-to-skill-extraction.md +28 -29
  19. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/check-ccl-skills.sh +165 -1
  20. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/eval-health.rb +23 -10
  21. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/impact-chain-gate.rb +303 -1
  22. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_check_ccl_impact_chain_refscripts.sh +222 -91
  23. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_check_ccl_regressions.sh +12 -0
  24. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_ci_checkout_ref_binding.sh +85 -0
  25. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_entrypoint_domain_scan_terms.sh +123 -0
  26. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_impact_chain_gate_dateless_host.sh +6 -1
  27. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_impact_chain_gate_verdict_differential.sh +1 -1
  28. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_impact_chain_round_attribution.sh +12 -12
  29. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_impact_chain_self_adjudication.sh +455 -0
  30. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_impact_chain_source_refuted.sh +20 -20
  31. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_liveness_predicate_gate.sh +288 -0
  32. package/dist/assets/marketplace/plugins/ccl-skills/skills/tighten-doc/SKILL.md +4 -4
  33. package/dist/assets/marketplace/plugins/ccl-skills/skills/tighten-doc/references/deliverable-doc-genre-skeletons.md +133 -0
  34. package/dist/assets/marketplace/plugins/ccl-skills/skills/tighten-doc/references/doc-charter-first.md +2 -0
  35. package/dist/assets/marketplace/plugins/ccl-skills/skills/tighten-doc/references/figure-and-table-craft.md +318 -0
  36. package/dist/assets/marketplace/plugins/ccl-skills/skills/tighten-doc/scripts/AGENTS.md +46 -0
  37. package/dist/assets/marketplace/plugins/ccl-skills/skills/tighten-doc/scripts/doc-lint.py +246 -0
  38. package/dist/assets/marketplace/plugins/ccl-skills/skills/tighten-doc/scripts/figure-lint.py +1092 -0
  39. package/dist/assets/marketplace/plugins/ccl-skills/skills/tighten-doc/scripts/mutation_probe.sh +100 -0
  40. package/dist/assets/marketplace/plugins/ccl-skills/skills/tighten-doc/scripts/test_figure_and_doc_lint.sh +375 -0
  41. package/dist/assets/marketplace/plugins/ccl-skills/skills/tighten-doc/scripts/tests/doc/control.md +10 -0
  42. package/dist/assets/marketplace/plugins/ccl-skills/skills/tighten-doc/scripts/tests/doc/empty-header.md +6 -0
  43. package/dist/assets/marketplace/plugins/ccl-skills/skills/tighten-doc/scripts/tests/doc/fake-header.md +13 -0
  44. package/dist/assets/marketplace/plugins/ccl-skills/skills/tighten-doc/scripts/tests/doc/fenced-noise.md +14 -0
  45. package/dist/assets/marketplace/plugins/ccl-skills/skills/tighten-doc/scripts/tests/doc/fig-dangling.md +5 -0
  46. package/dist/assets/marketplace/plugins/ccl-skills/skills/tighten-doc/scripts/tests/doc/fig-orphan-captioned.md +11 -0
  47. package/dist/assets/marketplace/plugins/ccl-skills/skills/tighten-doc/scripts/tests/doc/fig-orphan.md +9 -0
  48. package/dist/assets/marketplace/plugins/ccl-skills/skills/tighten-doc/scripts/tests/doc/fig.png +0 -0
  49. package/dist/assets/marketplace/plugins/ccl-skills/skills/tighten-doc/scripts/tests/doc/imbalance.md +41 -0
  50. package/dist/assets/marketplace/plugins/ccl-skills/skills/tighten-doc/scripts/tests/doc/no-unit.md +8 -0
  51. package/dist/assets/marketplace/plugins/ccl-skills/skills/tighten-doc/scripts/tests/doc/should-be-chart.md +11 -0
  52. package/dist/assets/marketplace/plugins/ccl-skills/skills/tighten-doc/scripts/tests/doc/tables-only-clean.md +35 -0
  53. package/dist/assets/marketplace/plugins/ccl-skills/skills/tighten-doc/scripts/tests/doc/unfilled.md +7 -0
  54. package/dist/assets/marketplace/plugins/ccl-skills/skills/tighten-doc/scripts/tests/doc/wide-table.md +5 -0
  55. package/dist/assets/marketplace/plugins/ccl-skills/skills/tighten-doc/scripts/tests/svg/bad-viewbox.svg +9 -0
  56. package/dist/assets/marketplace/plugins/ccl-skills/skills/tighten-doc/scripts/tests/svg/blackmarker.svg +9 -0
  57. package/dist/assets/marketplace/plugins/ccl-skills/skills/tighten-doc/scripts/tests/svg/control.svg +12 -0
  58. package/dist/assets/marketplace/plugins/ccl-skills/skills/tighten-doc/scripts/tests/svg/crossings.svg +12 -0
  59. package/dist/assets/marketplace/plugins/ccl-skills/skills/tighten-doc/scripts/tests/svg/cvd-confusable.svg +9 -0
  60. package/dist/assets/marketplace/plugins/ccl-skills/skills/tighten-doc/scripts/tests/svg/decorative-line.svg +10 -0
  61. package/dist/assets/marketplace/plugins/ccl-skills/skills/tighten-doc/scripts/tests/svg/edge-no-arrow.svg +11 -0
  62. package/dist/assets/marketplace/plugins/ccl-skills/skills/tighten-doc/scripts/tests/svg/edge-vague.svg +12 -0
  63. package/dist/assets/marketplace/plugins/ccl-skills/skills/tighten-doc/scripts/tests/svg/figure-contract.json +21 -0
  64. package/dist/assets/marketplace/plugins/ccl-skills/skills/tighten-doc/scripts/tests/svg/figure-is-a-list.svg +12 -0
  65. package/dist/assets/marketplace/plugins/ccl-skills/skills/tighten-doc/scripts/tests/svg/flow-mixed.svg +13 -0
  66. package/dist/assets/marketplace/plugins/ccl-skills/skills/tighten-doc/scripts/tests/svg/low-contrast.svg +12 -0
  67. package/dist/assets/marketplace/plugins/ccl-skills/skills/tighten-doc/scripts/tests/svg/malformed.svg +1 -0
  68. package/dist/assets/marketplace/plugins/ccl-skills/skills/tighten-doc/scripts/tests/svg/no-aria.svg +9 -0
  69. package/dist/assets/marketplace/plugins/ccl-skills/skills/tighten-doc/scripts/tests/svg/no-group.svg +10 -0
  70. package/dist/assets/marketplace/plugins/ccl-skills/skills/tighten-doc/scripts/tests/svg/no-legend.svg +9 -0
  71. package/dist/assets/marketplace/plugins/ccl-skills/skills/tighten-doc/scripts/tests/svg/no-title.svg +12 -0
  72. package/dist/assets/marketplace/plugins/ccl-skills/skills/tighten-doc/scripts/tests/svg/no-viewbox.svg +9 -0
  73. package/dist/assets/marketplace/plugins/ccl-skills/skills/tighten-doc/scripts/tests/svg/offcontract-shape.svg +13 -0
  74. package/dist/assets/marketplace/plugins/ccl-skills/skills/tighten-doc/scripts/tests/svg/overflow.svg +13 -0
  75. package/dist/assets/marketplace/plugins/ccl-skills/skills/tighten-doc/scripts/tests/svg/transformed.svg +9 -0
  76. package/dist/assets/marketplace/plugins/ccl-skills/skills/tighten-doc/scripts/tests/svg/ungrouped-card.svg +12 -0
  77. package/dist/assets/marketplace/plugins/ccl-skills/skills/tighten-doc/scripts/tests/svg/unlabeled-edge.svg +13 -0
  78. package/dist/assets/release.json +276 -31
  79. package/package.json +1 -1
@@ -0,0 +1,7 @@
1
+ # 文档
2
+
3
+ | 项 | 值 | 说明 |
4
+ |---|---|---|
5
+ | A | TBD | 待定 |
6
+ | B | - | 待补 |
7
+ | C | 甲 | 乙 |
@@ -0,0 +1,5 @@
1
+ # 文档
2
+
3
+ | a | b | c | d | e | f | g | h | i |
4
+ |---|---|---|---|---|---|---|---|---|
5
+ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
@@ -0,0 +1,9 @@
1
+ <svg role="img" aria-label="Bad viewBox" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 400">
2
+ <title>Bad viewBox</title>
3
+ <defs><style>.ok{font-size:14px;fill:#111827}</style></defs>
4
+ <g>
5
+ <rect x="10" y="120" width="14" height="14" fill="#0072B2"/><text x="32" y="132" class="ok">图例一</text>
6
+ <rect x="10" y="145" width="14" height="14" fill="#D55E00"/><text x="32" y="157" class="ok">图例二</text>
7
+ <rect x="10" y="170" width="14" height="14" fill="#009E73"/><text x="32" y="182" class="ok">图例三</text>
8
+ </g>
9
+ </svg>
@@ -0,0 +1,9 @@
1
+ <svg role="img" aria-label="Referenced marker without fill renders black" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 400 200">
2
+ <title>Referenced marker without fill renders black</title>
3
+ <defs><style>.ok{font-size:14px;fill:#111827}.flow{fill:none;stroke:#0072B2;marker-end:url(#a)}</style>
4
+ <marker id="a" refX="10" refY="6"><path d="M1 1L11 6L1 11Z"/></marker></defs>
5
+ <g><path class="flow" d="M200 20 L360 20"/><text x="270" y="14" class="ok">发起结算</text>
6
+ <rect x="10" y="120" width="14" height="14" fill="#0072B2"/><text x="32" y="132" class="ok">图例一</text>
7
+ <rect x="10" y="145" width="14" height="14" fill="#D55E00"/><text x="32" y="157" class="ok">图例二</text>
8
+ <rect x="10" y="170" width="14" height="14" fill="#009E73"/><text x="32" y="182" class="ok">图例三</text></g>
9
+ </svg>
@@ -0,0 +1,12 @@
1
+ <svg role="img" aria-label="Self test" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 400 200">
2
+ <title>Self test</title>
3
+ <defs><style>.ok{font-size:14px;fill:#111827}.low{font-size:13px;fill:#98A2B3}.flow{fill:none;stroke:#0072B2;marker-end:url(#a)}</style>
4
+ <marker id="a" refX="10" refY="6"><path d="M1 1L11 6L1 11Z" fill="#0072B2"/></marker></defs>
5
+ <g>
6
+ <rect x="0" y="0" width="400" height="200" fill="#FFFFFF"/>
7
+ <text x="15" y="40" class="ok">短文本</text>
8
+ <rect x="10" y="120" width="14" height="14" fill="#0072B2"/><text x="32" y="132" class="ok">图例一</text>
9
+ <rect x="10" y="145" width="14" height="14" fill="#D55E00"/><text x="32" y="157" class="ok">图例二</text>
10
+ <rect x="10" y="170" width="14" height="14" fill="#009E73"/><text x="32" y="182" class="ok">图例三</text>
11
+ </g>
12
+ </svg>
@@ -0,0 +1,12 @@
1
+ <svg role="img" aria-label="Two crossing connectors" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 400 200">
2
+ <title>Two crossing connectors</title>
3
+ <defs><style>.ok{font-size:14px;fill:#111827}.flow{fill:none;stroke:#0072B2;marker-end:url(#a)}</style>
4
+ <marker id="a" refX="10" refY="6"><path d="M1 1L11 6L1 11Z" fill="#0072B2"/></marker></defs>
5
+ <g>
6
+ <path class="flow" d="M40 20 L360 90"/><text x="200" y="10" class="ok">甲到乙</text>
7
+ <path class="flow" d="M40 90 L360 20"/><text x="200" y="105" class="ok">丙到丁</text>
8
+ <rect x="10" y="120" width="14" height="14" fill="#0072B2"/><text x="32" y="132" class="ok">图例一</text>
9
+ <rect x="10" y="145" width="14" height="14" fill="#D55E00"/><text x="32" y="157" class="ok">图例二</text>
10
+ <rect x="10" y="170" width="14" height="14" fill="#009E73"/><text x="32" y="182" class="ok">图例三</text>
11
+ </g>
12
+ </svg>
@@ -0,0 +1,9 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 400 200" role="img" aria-label="Semantic colours confusable under CVD">
2
+ <title>Semantic colours confusable under CVD</title>
3
+ <defs><style>.ok{font-size:14px;fill:#111827}</style></defs>
4
+ <g>
5
+ <rect x="10" y="120" width="14" height="14" fill="#B54708"/><text x="32" y="132" class="ok">警告</text>
6
+ <rect x="10" y="145" width="14" height="14" fill="#B42318"/><text x="32" y="157" class="ok">危险</text>
7
+ <rect x="10" y="170" width="14" height="14" fill="#009E73"/><text x="32" y="182" class="ok">正常</text>
8
+ </g>
9
+ </svg>
@@ -0,0 +1,10 @@
1
+ <svg role="img" aria-label="Decorative divider is not a connector" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 400 200">
2
+ <title>Decorative divider is not a connector</title>
3
+ <defs><style>.ok{font-size:14px;fill:#111827}</style></defs>
4
+ <g>
5
+ <line x1="20" y1="60" x2="380" y2="60" stroke="#0072B2"/>
6
+ <rect x="10" y="120" width="14" height="14" fill="#0072B2"/><text x="32" y="132" class="ok">图例一</text>
7
+ <rect x="10" y="145" width="14" height="14" fill="#D55E00"/><text x="32" y="157" class="ok">图例二</text>
8
+ <rect x="10" y="170" width="14" height="14" fill="#009E73"/><text x="32" y="182" class="ok">图例三</text>
9
+ </g>
10
+ </svg>
@@ -0,0 +1,11 @@
1
+ <svg role="img" aria-label="Edge without arrow" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 400 200">
2
+ <title>Edge without arrow</title>
3
+ <defs><style>.ok{font-size:14px;fill:#111827}.flow{fill:none;stroke:#0072B2}</style></defs>
4
+ <g>
5
+ <path class="flow" d="M200 20 L360 20"/>
6
+ <text x="250" y="14" class="ok">发起结算</text>
7
+ <rect x="10" y="120" width="14" height="14" fill="#0072B2"/><text x="32" y="132" class="ok">图例一</text>
8
+ <rect x="10" y="145" width="14" height="14" fill="#D55E00"/><text x="32" y="157" class="ok">图例二</text>
9
+ <rect x="10" y="170" width="14" height="14" fill="#009E73"/><text x="32" y="182" class="ok">图例三</text>
10
+ </g>
11
+ </svg>
@@ -0,0 +1,12 @@
1
+ <svg role="img" aria-label="Vague edge label" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 400 200">
2
+ <title>Vague edge label</title>
3
+ <defs><style>.ok{font-size:14px;fill:#111827}.flow{fill:none;stroke:#0072B2;marker-end:url(#a)}</style>
4
+ <marker id="a" refX="10" refY="6"><path d="M1 1L11 6L1 11Z" fill="#0072B2"/></marker></defs>
5
+ <g>
6
+ <path class="flow" d="M200 20 L360 20"/>
7
+ <text x="270" y="14" class="ok">调用</text>
8
+ <rect x="10" y="120" width="14" height="14" fill="#0072B2"/><text x="32" y="132" class="ok">图例一</text>
9
+ <rect x="10" y="145" width="14" height="14" fill="#D55E00"/><text x="32" y="157" class="ok">图例二</text>
10
+ <rect x="10" y="170" width="14" height="14" fill="#009E73"/><text x="32" y="182" class="ok">图例三</text>
11
+ </g>
12
+ </svg>
@@ -0,0 +1,21 @@
1
+ {
2
+ "_note": "fixture 契约。配色改用 Okabe-Ito(色盲安全,实测二色视最小距离 38)——原先那组语义色在 tritan 下仅 19,会让每个 fixture 都连带触发 CVD-CONFUSABLE,谓词就隔离不开了。#7C3AED 刻意不列(offcontract-shape 负例)。",
3
+ "canvas_ratios": [
4
+ 2.0
5
+ ],
6
+ "font_scale": [
7
+ 13.0,
8
+ 14.0
9
+ ],
10
+ "color_tokens": {
11
+ "c0": "#111827",
12
+ "c1": "#009E73",
13
+ "c2": "#0072B2",
14
+ "c3": "#98A2B3",
15
+ "c4": "#D55E00",
16
+ "c5": "#F7F8FA",
17
+ "c6": "#FFFFFF",
18
+ "warnX": "#B54708",
19
+ "critX": "#B42318"
20
+ }
21
+ }
@@ -0,0 +1,12 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 400 200" role="img" aria-label="Boxes without relations">
2
+ <title>Boxes without relations</title>
3
+ <defs><style>.ok{font-size:14px;fill:#111827}</style></defs>
4
+ <g>
5
+ <rect x="20" y="20" width="80" height="30" fill="#F7F8FA"/><text x="28" y="40" class="ok">甲</text>
6
+ <rect x="120" y="20" width="80" height="30" fill="#F7F8FA"/><text x="128" y="40" class="ok">乙</text>
7
+ <rect x="220" y="20" width="80" height="30" fill="#F7F8FA"/><text x="228" y="40" class="ok">丙</text>
8
+ <rect x="10" y="120" width="14" height="14" fill="#0072B2"/><text x="32" y="132" class="ok">图例一</text>
9
+ <rect x="10" y="145" width="14" height="14" fill="#D55E00"/><text x="32" y="157" class="ok">图例二</text>
10
+ <rect x="10" y="170" width="14" height="14" fill="#009E73"/><text x="32" y="182" class="ok">图例三</text>
11
+ </g>
12
+ </svg>
@@ -0,0 +1,13 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 400 200" role="img" aria-label="Mixed flow directions">
2
+ <title>Mixed flow directions</title>
3
+ <defs><style>.ok{font-size:14px;fill:#111827}.flow{fill:none;stroke:#0072B2;marker-end:url(#a)}</style>
4
+ <marker id="a" refX="10" refY="6"><path d="M1 1L11 6L1 11Z" fill="#0072B2"/></marker></defs>
5
+ <g>
6
+ <path class="flow" d="M20 20 L180 20"/><text x="90" y="14" class="ok">向右</text>
7
+ <path class="flow" d="M200 40 L40 40"/><text x="110" y="34" class="ok">向左</text>
8
+ <path class="flow" d="M300 20 L300 90"/><text x="308" y="55" class="ok">向下</text>
9
+ <rect x="10" y="120" width="14" height="14" fill="#0072B2"/><text x="32" y="132" class="ok">图例一</text>
10
+ <rect x="10" y="145" width="14" height="14" fill="#D55E00"/><text x="32" y="157" class="ok">图例二</text>
11
+ <rect x="10" y="170" width="14" height="14" fill="#009E73"/><text x="32" y="182" class="ok">图例三</text>
12
+ </g>
13
+ </svg>
@@ -0,0 +1,12 @@
1
+ <svg role="img" aria-label="Self test" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 400 200">
2
+ <title>Self test</title>
3
+ <defs><style>.ok{font-size:14px;fill:#111827}.low{font-size:13px;fill:#98A2B3}.flow{fill:none;stroke:#0072B2;marker-end:url(#a)}</style>
4
+ <marker id="a" refX="10" refY="6"><path d="M1 1L11 6L1 11Z" fill="#0072B2"/></marker></defs>
5
+ <g>
6
+ <rect x="0" y="0" width="400" height="200" fill="#FFFFFF"/>
7
+ <text x="15" y="40" class="low">浅灰小字</text>
8
+ <rect x="10" y="120" width="14" height="14" fill="#0072B2"/><text x="32" y="132" class="ok">图例一</text>
9
+ <rect x="10" y="145" width="14" height="14" fill="#D55E00"/><text x="32" y="157" class="ok">图例二</text>
10
+ <rect x="10" y="170" width="14" height="14" fill="#009E73"/><text x="32" y="182" class="ok">图例三</text>
11
+ </g>
12
+ </svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 400 200"><title>bad</title><rect
@@ -0,0 +1,9 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 400 200">
2
+ <title>Title without aria</title>
3
+ <defs><style>.ok{font-size:14px;fill:#111827}</style></defs>
4
+ <g>
5
+ <rect x="10" y="120" width="14" height="14" fill="#0072B2"/><text x="32" y="132" class="ok">图例一</text>
6
+ <rect x="10" y="145" width="14" height="14" fill="#D55E00"/><text x="32" y="157" class="ok">图例二</text>
7
+ <rect x="10" y="170" width="14" height="14" fill="#009E73"/><text x="32" y="182" class="ok">图例三</text>
8
+ </g>
9
+ </svg>
@@ -0,0 +1,10 @@
1
+ <svg role="img" aria-label="Self test" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 400 200">
2
+ <title>Self test</title>
3
+ <defs><style>.ok{font-size:14px;fill:#111827}.low{font-size:13px;fill:#98A2B3}.flow{fill:none;stroke:#0072B2;marker-end:url(#a)}</style>
4
+ <marker id="a" refX="10" refY="6"><path d="M1 1L11 6L1 11Z" fill="#0072B2"/></marker></defs>
5
+ <rect x="0" y="0" width="400" height="200" fill="#FFFFFF"/>
6
+ <text x="15" y="40" class="ok">短文本</text>
7
+ <rect x="10" y="120" width="14" height="14" fill="#0072B2"/><text x="32" y="132" class="ok">图例一</text>
8
+ <rect x="10" y="145" width="14" height="14" fill="#D55E00"/><text x="32" y="157" class="ok">图例二</text>
9
+ <rect x="10" y="170" width="14" height="14" fill="#009E73"/><text x="32" y="182" class="ok">图例三</text>
10
+ </svg>
@@ -0,0 +1,9 @@
1
+ <svg role="img" aria-label="Self test" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 400 200">
2
+ <title>Self test</title>
3
+ <defs><style>.ok{font-size:14px;fill:#111827}.low{font-size:13px;fill:#98A2B3}.flow{fill:none;stroke:#0072B2;marker-end:url(#a)}</style>
4
+ <marker id="a" refX="10" refY="6"><path d="M1 1L11 6L1 11Z" fill="#0072B2"/></marker></defs>
5
+ <g>
6
+ <rect x="0" y="0" width="400" height="200" fill="#FFFFFF"/>
7
+ <text x="15" y="40" class="ok">短文本</text>
8
+ </g>
9
+ </svg>
@@ -0,0 +1,12 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 400 200">
2
+
3
+ <defs><style>.ok{font-size:14px;fill:#111827}.low{font-size:13px;fill:#98A2B3}.flow{fill:none;stroke:#0072B2;marker-end:url(#a)}</style>
4
+ <marker id="a" refX="10" refY="6"><path d="M1 1L11 6L1 11Z" fill="#0072B2"/></marker></defs>
5
+ <g>
6
+ <rect x="0" y="0" width="400" height="200" fill="#FFFFFF"/>
7
+ <text x="15" y="40" class="ok">短文本</text>
8
+ <rect x="10" y="120" width="14" height="14" fill="#0072B2"/><text x="32" y="132" class="ok">图例一</text>
9
+ <rect x="10" y="145" width="14" height="14" fill="#D55E00"/><text x="32" y="157" class="ok">图例二</text>
10
+ <rect x="10" y="170" width="14" height="14" fill="#009E73"/><text x="32" y="182" class="ok">图例三</text>
11
+ </g>
12
+ </svg>
@@ -0,0 +1,9 @@
1
+ <svg role="img" aria-label="No viewBox" xmlns="http://www.w3.org/2000/svg" width="400" height="200">
2
+ <title>No viewBox</title>
3
+ <defs><style>.ok{font-size:14px;fill:#111827}</style></defs>
4
+ <g>
5
+ <rect x="10" y="120" width="14" height="14" fill="#0072B2"/><text x="32" y="132" class="ok">图例一</text>
6
+ <rect x="10" y="145" width="14" height="14" fill="#D55E00"/><text x="32" y="157" class="ok">图例二</text>
7
+ <rect x="10" y="170" width="14" height="14" fill="#009E73"/><text x="32" y="182" class="ok">图例三</text>
8
+ </g>
9
+ </svg>
@@ -0,0 +1,13 @@
1
+ <svg role="img" aria-label="Off-contract shape fill" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 400 200">
2
+ <title>Off-contract shape fill</title>
3
+ <defs><style>.ok{font-size:14px;fill:#111827}</style></defs>
4
+ <g>
5
+ <rect x="0" y="0" width="400" height="200" fill="#FFFFFF"/>
6
+ <rect x="300" y="20" width="60" height="20" fill="#7C3AED"/>
7
+ <rect x="20" y="20" width="120" height="40" fill="#FFFFFF"/>
8
+ <text x="30" y="45" class="ok">卡片文字</text>
9
+ <rect x="10" y="120" width="14" height="14" fill="#0072B2"/><text x="32" y="132" class="ok">图例一</text>
10
+ <rect x="10" y="145" width="14" height="14" fill="#D55E00"/><text x="32" y="157" class="ok">图例二</text>
11
+ <rect x="10" y="170" width="14" height="14" fill="#009E73"/><text x="32" y="182" class="ok">图例三</text>
12
+ </g>
13
+ </svg>
@@ -0,0 +1,13 @@
1
+ <svg role="img" aria-label="Self test" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 400 200">
2
+ <title>Self test</title>
3
+ <defs><style>.ok{font-size:14px;fill:#111827}.low{font-size:13px;fill:#98A2B3}.flow{fill:none;stroke:#0072B2;marker-end:url(#a)}</style>
4
+ <marker id="a" refX="10" refY="6"><path d="M1 1L11 6L1 11Z" fill="#0072B2"/></marker></defs>
5
+ <g>
6
+ <rect x="0" y="0" width="400" height="200" fill="#FFFFFF"/>
7
+ <rect x="10" y="30" width="80" height="24" fill="#F7F8FA"/>
8
+ <text x="15" y="46" class="ok">这段文字明显装不下这段文字明显装不下</text>
9
+ <rect x="10" y="120" width="14" height="14" fill="#0072B2"/><text x="32" y="132" class="ok">图例一</text>
10
+ <rect x="10" y="145" width="14" height="14" fill="#D55E00"/><text x="32" y="157" class="ok">图例二</text>
11
+ <rect x="10" y="170" width="14" height="14" fill="#009E73"/><text x="32" y="182" class="ok">图例三</text>
12
+ </g>
13
+ </svg>
@@ -0,0 +1,9 @@
1
+ <svg role="img" aria-label="Transformed group" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 400 200">
2
+ <title>Transformed group</title>
3
+ <defs><style>.ok{font-size:14px;fill:#111827}</style></defs>
4
+ <g transform="translate(5,5)">
5
+ <rect x="10" y="120" width="14" height="14" fill="#0072B2"/><text x="32" y="132" class="ok">图例一</text>
6
+ <rect x="10" y="145" width="14" height="14" fill="#D55E00"/><text x="32" y="157" class="ok">图例二</text>
7
+ <rect x="10" y="170" width="14" height="14" fill="#009E73"/><text x="32" y="182" class="ok">图例三</text>
8
+ </g>
9
+ </svg>
@@ -0,0 +1,12 @@
1
+ <svg role="img" aria-label="Ungrouped card" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 400 200">
2
+ <title>Ungrouped card</title>
3
+ <defs><style>.ok{font-size:14px;fill:#111827}</style></defs>
4
+ <rect x="0" y="0" width="400" height="200" fill="#FFFFFF"/>
5
+ <rect x="20" y="20" width="120" height="40" fill="#FFFFFF"/>
6
+ <text x="30" y="45" class="ok">卡片文字</text>
7
+ <g>
8
+ <rect x="10" y="120" width="14" height="14" fill="#0072B2"/><text x="32" y="132" class="ok">图例一</text>
9
+ <rect x="10" y="145" width="14" height="14" fill="#D55E00"/><text x="32" y="157" class="ok">图例二</text>
10
+ <rect x="10" y="170" width="14" height="14" fill="#009E73"/><text x="32" y="182" class="ok">图例三</text>
11
+ </g>
12
+ </svg>
@@ -0,0 +1,13 @@
1
+ <svg role="img" aria-label="Self test" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 400 200">
2
+ <title>Self test</title>
3
+ <defs><style>.ok{font-size:14px;fill:#111827}.low{font-size:13px;fill:#98A2B3}.flow{fill:none;stroke:#0072B2;marker-end:url(#a)}</style>
4
+ <marker id="a" refX="10" refY="6"><path d="M1 1L11 6L1 11Z" fill="#0072B2"/></marker></defs>
5
+ <g>
6
+ <rect x="0" y="0" width="400" height="200" fill="#FFFFFF"/>
7
+ <path class="flow" d="M200 20 L200 60 L380 60"/>
8
+ <text x="15" y="40" class="ok">远处文本</text>
9
+ <rect x="10" y="120" width="14" height="14" fill="#0072B2"/><text x="32" y="132" class="ok">图例一</text>
10
+ <rect x="10" y="145" width="14" height="14" fill="#D55E00"/><text x="32" y="157" class="ok">图例二</text>
11
+ <rect x="10" y="170" width="14" height="14" fill="#009E73"/><text x="32" y="182" class="ok">图例三</text>
12
+ </g>
13
+ </svg>