@drunkcoding/agents-and-skills 0.0.44 → 0.0.46

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 (107) hide show
  1. package/.claude-plugin/marketplace.json +2 -47
  2. package/README.md +3 -6
  3. package/package.json +4 -1
  4. package/plugins/multica-tool/.claude-plugin/plugin.json +1 -1
  5. package/plugins/multica-tool/scripts/lib.mjs +53 -4
  6. package/plugins/multica-tool/scripts/multica-export.mjs +170 -50
  7. package/plugins/multica-tool/scripts/multica-import.mjs +209 -27
  8. package/plugins/multica-tool/skills/export/SKILL.md +91 -22
  9. package/plugins/multica-tool/skills/import/SKILL.md +24 -9
  10. package/plugins/multica-tool/skills/sync/SKILL.md +1 -1
  11. package/plugins/plugin-validator/.claude-plugin/plugin.json +1 -1
  12. package/plugins/html-effectiveness/.claude-plugin/plugin.json +0 -17
  13. package/plugins/html-effectiveness/README.md +0 -28
  14. package/plugins/html-effectiveness/agents/report-builder.md +0 -66
  15. package/plugins/html-effectiveness/assets/base.css +0 -51
  16. package/plugins/html-effectiveness/assets/base.js +0 -11
  17. package/plugins/html-effectiveness/assets/charts.js +0 -1
  18. package/plugins/html-effectiveness/assets/components.css +0 -10
  19. package/plugins/html-effectiveness/commands/html-report.md +0 -13
  20. package/plugins/html-effectiveness/docs/template-gallery.md +0 -28
  21. package/plugins/html-effectiveness/package.json +0 -6
  22. package/plugins/html-effectiveness/scripts/_tmp.js +0 -37
  23. package/plugins/html-effectiveness/scripts/catalog.js +0 -47
  24. package/plugins/html-effectiveness/scripts/extract.js +0 -104
  25. package/plugins/html-effectiveness/scripts/mustache.js +0 -90
  26. package/plugins/html-effectiveness/scripts/render.js +0 -176
  27. package/plugins/html-effectiveness/skills/html-effectiveness/SKILL.md +0 -94
  28. package/plugins/html-effectiveness/templates/01-exploration-code-approaches.html.tmpl +0 -400
  29. package/plugins/html-effectiveness/templates/02-exploration-visual-designs.html.tmpl +0 -456
  30. package/plugins/html-effectiveness/templates/03-code-review-pr.html.tmpl +0 -581
  31. package/plugins/html-effectiveness/templates/04-code-understanding.html.tmpl +0 -443
  32. package/plugins/html-effectiveness/templates/05-design-system.html.tmpl +0 -578
  33. package/plugins/html-effectiveness/templates/06-component-variants.html.tmpl +0 -557
  34. package/plugins/html-effectiveness/templates/07-prototype-animation.html.tmpl +0 -417
  35. package/plugins/html-effectiveness/templates/08-prototype-interaction.html.tmpl +0 -363
  36. package/plugins/html-effectiveness/templates/09-slide-deck.html.tmpl +0 -535
  37. package/plugins/html-effectiveness/templates/10-svg-illustrations.html.tmpl +0 -444
  38. package/plugins/html-effectiveness/templates/11-status-report.html.tmpl +0 -152
  39. package/plugins/html-effectiveness/templates/12-incident-report.html.tmpl +0 -547
  40. package/plugins/html-effectiveness/templates/13-flowchart-diagram.html.tmpl +0 -361
  41. package/plugins/html-effectiveness/templates/14-research-feature-explainer.html.tmpl +0 -348
  42. package/plugins/html-effectiveness/templates/15-research-concept-explainer.html.tmpl +0 -334
  43. package/plugins/html-effectiveness/templates/16-implementation-plan.html.tmpl +0 -657
  44. package/plugins/html-effectiveness/templates/17-pr-writeup.html.tmpl +0 -553
  45. package/plugins/html-effectiveness/templates/18-editor-triage-board.html.tmpl +0 -541
  46. package/plugins/html-effectiveness/templates/19-editor-feature-flags.html.tmpl +0 -627
  47. package/plugins/html-effectiveness/templates/20-editor-prompt-tuner.html.tmpl +0 -687
  48. package/plugins/html-effectiveness/templates/manifest.json +0 -441
  49. package/plugins/team-share/.claude-plugin/plugin.json +0 -18
  50. package/plugins/team-share/README.md +0 -46
  51. package/plugins/team-share/agents/team-share.md +0 -53
  52. package/plugins/team-share/commands/team-share.md +0 -4
  53. package/plugins/team-share/skills/claude-config/SKILL.md +0 -143
  54. package/plugins/team-share/skills/codegraph-setup/SKILL.md +0 -81
  55. package/plugins/team-share/skills/understand-setup/SKILL.md +0 -115
  56. package/plugins/tech-graph/.claude-plugin/plugin.json +0 -17
  57. package/plugins/tech-graph/README.md +0 -66
  58. package/plugins/tech-graph/agents/tech-graph.md +0 -97
  59. package/plugins/tech-graph/commands/tech-graph.md +0 -13
  60. package/plugins/tech-graph/scripts/check-deps.sh +0 -55
  61. package/plugins/tech-graph/skills/tech-graph/LICENSE +0 -21
  62. package/plugins/tech-graph/skills/tech-graph/README.md +0 -555
  63. package/plugins/tech-graph/skills/tech-graph/README.zh.md +0 -514
  64. package/plugins/tech-graph/skills/tech-graph/SKILL.md +0 -263
  65. package/plugins/tech-graph/skills/tech-graph/agents/openai.yaml +0 -4
  66. package/plugins/tech-graph/skills/tech-graph/assets/samples/sample-style1-flat.png +0 -0
  67. package/plugins/tech-graph/skills/tech-graph/assets/samples/sample-style2-dark.png +0 -0
  68. package/plugins/tech-graph/skills/tech-graph/assets/samples/sample-style3-blueprint.png +0 -0
  69. package/plugins/tech-graph/skills/tech-graph/assets/samples/sample-style4-notion.png +0 -0
  70. package/plugins/tech-graph/skills/tech-graph/assets/samples/sample-style5-glass.png +0 -0
  71. package/plugins/tech-graph/skills/tech-graph/assets/samples/sample-style6-claude.png +0 -0
  72. package/plugins/tech-graph/skills/tech-graph/assets/samples/sample-style7-openai.png +0 -0
  73. package/plugins/tech-graph/skills/tech-graph/fixtures/agent-memory-types-style4.json +0 -181
  74. package/plugins/tech-graph/skills/tech-graph/fixtures/api-flow-style7.json +0 -40
  75. package/plugins/tech-graph/skills/tech-graph/fixtures/mem0-style1.json +0 -297
  76. package/plugins/tech-graph/skills/tech-graph/fixtures/microservices-style3.json +0 -64
  77. package/plugins/tech-graph/skills/tech-graph/fixtures/multi-agent-style5.json +0 -45
  78. package/plugins/tech-graph/skills/tech-graph/fixtures/system-architecture-style6.json +0 -48
  79. package/plugins/tech-graph/skills/tech-graph/fixtures/tool-call-style2.json +0 -182
  80. package/plugins/tech-graph/skills/tech-graph/package.json +0 -42
  81. package/plugins/tech-graph/skills/tech-graph/references/diagram-types.md +0 -171
  82. package/plugins/tech-graph/skills/tech-graph/references/icons.md +0 -406
  83. package/plugins/tech-graph/skills/tech-graph/references/style-1-flat-icon.md +0 -108
  84. package/plugins/tech-graph/skills/tech-graph/references/style-2-dark-terminal.md +0 -107
  85. package/plugins/tech-graph/skills/tech-graph/references/style-3-blueprint.md +0 -113
  86. package/plugins/tech-graph/skills/tech-graph/references/style-4-notion-clean.md +0 -95
  87. package/plugins/tech-graph/skills/tech-graph/references/style-5-glassmorphism.md +0 -125
  88. package/plugins/tech-graph/skills/tech-graph/references/style-6-claude-official.md +0 -209
  89. package/plugins/tech-graph/skills/tech-graph/references/style-7-openai.md +0 -215
  90. package/plugins/tech-graph/skills/tech-graph/references/style-diagram-matrix.md +0 -135
  91. package/plugins/tech-graph/skills/tech-graph/references/svg-layout-best-practices.md +0 -100
  92. package/plugins/tech-graph/skills/tech-graph/references/svg-to-png.md +0 -115
  93. package/plugins/tech-graph/skills/tech-graph/scripts/README.md +0 -269
  94. package/plugins/tech-graph/skills/tech-graph/scripts/generate-diagram.sh +0 -181
  95. package/plugins/tech-graph/skills/tech-graph/scripts/generate-from-template.py +0 -1587
  96. package/plugins/tech-graph/skills/tech-graph/scripts/test-all-styles.sh +0 -143
  97. package/plugins/tech-graph/skills/tech-graph/scripts/validate-svg.sh +0 -306
  98. package/plugins/tech-graph/skills/tech-graph/templates/agent-architecture.svg +0 -28
  99. package/plugins/tech-graph/skills/tech-graph/templates/architecture.svg +0 -23
  100. package/plugins/tech-graph/skills/tech-graph/templates/comparison-matrix.svg +0 -14
  101. package/plugins/tech-graph/skills/tech-graph/templates/data-flow.svg +0 -28
  102. package/plugins/tech-graph/skills/tech-graph/templates/er-diagram.svg +0 -21
  103. package/plugins/tech-graph/skills/tech-graph/templates/flowchart.svg +0 -21
  104. package/plugins/tech-graph/skills/tech-graph/templates/sequence.svg +0 -20
  105. package/plugins/tech-graph/skills/tech-graph/templates/state-machine.svg +0 -20
  106. package/plugins/tech-graph/skills/tech-graph/templates/timeline.svg +0 -19
  107. package/plugins/tech-graph/skills/tech-graph/templates/use-case.svg +0 -21
@@ -1,444 +0,0 @@
1
- <!--
2
- template: 10-svg-illustrations
3
- upstream: 10-svg-illustrations.html
4
- slots:
5
- title: string # replaces first <h1> innerHTML
6
- -->
7
- <div class="sheet">
8
-
9
- <header>
10
- <h1>{{title}}</h1>
11
- <p class="lead">
12
- Three 720×320 hand-drawn SVGs for the Acme docs section on
13
- background jobs. Flat fills, 1.5–2px strokes, palette-locked. Each
14
- exports standalone via the button below it.
15
- </p>
16
- <div class="meta">720 × 320 · inline SVG · no external assets</div>
17
- </header>
18
-
19
- <!-- ============================================================
20
- A — Queue
21
- ============================================================ -->
22
- <figure>
23
- <div class="canvas">
24
- <svg id="ill-queue" xmlns="http://www.w3.org/2000/svg" width="720" height="320" viewBox="0 0 720 320">
25
- <defs>
26
-
27
- <marker id="qa" markerWidth="10" markerHeight="10" refX="8" refY="4" orient="auto" markerUnits="userSpaceOnUse">
28
- <path d="M0,0 L0,8 L8,4 z" fill="#87867F"/>
29
- </marker>
30
- </defs>
31
-
32
- <rect width="720" height="320" fill="#FAF9F5"/>
33
-
34
- <!-- queue label -->
35
- <text x="60" y="96" class="s" fill="#87867F">queue</text>
36
-
37
- <!-- five job rects -->
38
- <g>
39
- <rect x="60" y="110" width="70" height="100" rx="10" fill="#F0EEE6" stroke="#3D3D3A" stroke-width="1.5"/>
40
- <text x="95" y="164" text-anchor="middle" class="m" fill="#3D3D3A">job 5</text>
41
-
42
- <rect x="140" y="110" width="70" height="100" rx="10" fill="#F0EEE6" stroke="#3D3D3A" stroke-width="1.5"/>
43
- <text x="175" y="164" text-anchor="middle" class="m" fill="#3D3D3A">job 4</text>
44
-
45
- <rect x="220" y="110" width="70" height="100" rx="10" fill="#F0EEE6" stroke="#3D3D3A" stroke-width="1.5"/>
46
- <text x="255" y="164" text-anchor="middle" class="m" fill="#3D3D3A">job 3</text>
47
-
48
- <rect x="300" y="110" width="70" height="100" rx="10" fill="#F0EEE6" stroke="#3D3D3A" stroke-width="1.5"/>
49
- <text x="335" y="164" text-anchor="middle" class="m" fill="#3D3D3A">job 2</text>
50
-
51
- <!-- head of queue, highlighted -->
52
- <rect x="380" y="110" width="70" height="100" rx="10" fill="#D97757" stroke="#141413" stroke-width="2"/>
53
- <text x="415" y="164" text-anchor="middle" class="m" fill="#FAF9F5">job 1</text>
54
- </g>
55
-
56
- <!-- arrow to worker -->
57
- <line x1="458" y1="160" x2="522" y2="160" stroke="#87867F" stroke-width="1.5" marker-end="url(#qa)"/>
58
-
59
- <!-- worker -->
60
- <rect x="530" y="90" width="130" height="140" rx="10" fill="#E3DACC" stroke="#141413" stroke-width="2"/>
61
- <text x="595" y="156" text-anchor="middle" class="m" fill="#141413">worker</text>
62
- <text x="595" y="172" text-anchor="middle" class="m" fill="#87867F">pool=4</text>
63
-
64
- <!-- annotations -->
65
- <text x="415" y="234" text-anchor="middle" class="s" fill="#87867F">next to run</text>
66
- <text x="60" y="258" class="s" fill="#87867F">Jobs are pulled FIFO; the worker leases one at a time.</text>
67
- </svg>
68
- </div>
69
- <figcaption>
70
- <div class="cap-text">
71
- <div class="cap-title">Queue</div>
72
- <div class="cap-sub">For "How jobs are picked up" — intro page header.</div>
73
- </div>
74
- <button class="dl" data-target="ill-queue" data-filename="acme-jobs-queue.svg">Download SVG</button>
75
- </figcaption>
76
- </figure>
77
-
78
- <!-- ============================================================
79
- B — Retry with backoff
80
- ============================================================ -->
81
- <figure>
82
- <div class="canvas">
83
- <svg id="ill-retry" xmlns="http://www.w3.org/2000/svg" width="720" height="320" viewBox="0 0 720 320">
84
- <defs>
85
-
86
- </defs>
87
-
88
- <rect width="720" height="320" fill="#FAF9F5"/>
89
-
90
- <!-- timeline axis -->
91
- <line x1="60" y1="190" x2="660" y2="190" stroke="#D1CFC5" stroke-width="1.5"/>
92
- <text x="60" y="214" class="s" fill="#87867F">t = 0</text>
93
- <text x="660" y="214" text-anchor="end" class="s" fill="#87867F">time →</text>
94
-
95
- <!-- attempts: exponential spacing at x = 100, 170, 310, 590 -->
96
- <!-- attempt 1 (fail) -->
97
- <circle cx="100" cy="190" r="8" fill="#FAF9F5" stroke="#D97757" stroke-width="2"/>
98
- <line x1="96" y1="186" x2="104" y2="194" stroke="#D97757" stroke-width="1.5"/>
99
- <line x1="104" y1="186" x2="96" y2="194" stroke="#D97757" stroke-width="1.5"/>
100
- <text x="100" y="222" text-anchor="middle" class="m" fill="#3D3D3A">try 1</text>
101
-
102
- <!-- attempt 2 (fail) -->
103
- <circle cx="170" cy="190" r="8" fill="#FAF9F5" stroke="#D97757" stroke-width="2"/>
104
- <line x1="166" y1="186" x2="174" y2="194" stroke="#D97757" stroke-width="1.5"/>
105
- <line x1="174" y1="186" x2="166" y2="194" stroke="#D97757" stroke-width="1.5"/>
106
- <text x="170" y="222" text-anchor="middle" class="m" fill="#3D3D3A">try 2</text>
107
-
108
- <!-- attempt 3 (fail) -->
109
- <circle cx="310" cy="190" r="8" fill="#FAF9F5" stroke="#D97757" stroke-width="2"/>
110
- <line x1="306" y1="186" x2="314" y2="194" stroke="#D97757" stroke-width="1.5"/>
111
- <line x1="314" y1="186" x2="306" y2="194" stroke="#D97757" stroke-width="1.5"/>
112
- <text x="310" y="222" text-anchor="middle" class="m" fill="#3D3D3A">try 3</text>
113
-
114
- <!-- attempt 4 (success) -->
115
- <circle cx="590" cy="190" r="9" fill="#788C5D" stroke="#141413" stroke-width="1.5"/>
116
- <path d="M585,190 L589,194 L596,185" fill="none" stroke="#FAF9F5" stroke-width="1.5" stroke-linecap="round"/>
117
- <text x="590" y="222" text-anchor="middle" class="m" fill="#3D3D3A">try 4</text>
118
-
119
- <!-- dashed backoff arcs (loop back over the gap) -->
120
- <path d="M 100 182 Q 135 130 170 182" fill="none" stroke="#87867F" stroke-width="1.5" stroke-dasharray="4 4"/>
121
- <text x="135" y="124" text-anchor="middle" class="m" fill="#87867F">+1s</text>
122
-
123
- <path d="M 170 182 Q 240 110 310 182" fill="none" stroke="#87867F" stroke-width="1.5" stroke-dasharray="4 4"/>
124
- <text x="240" y="104" text-anchor="middle" class="m" fill="#87867F">+2s</text>
125
-
126
- <path d="M 310 182 Q 450 80 590 182" fill="none" stroke="#87867F" stroke-width="1.5" stroke-dasharray="4 4"/>
127
- <text x="450" y="74" text-anchor="middle" class="m" fill="#87867F">+4s</text>
128
-
129
- <!-- annotation -->
130
- <text x="60" y="262" class="s" fill="#87867F">Each failure waits twice as long before re-queuing; jitter not pictured.</text>
131
- </svg>
132
- </div>
133
- <figcaption>
134
- <div class="cap-text">
135
- <div class="cap-title">Retry with backoff</div>
136
- <div class="cap-sub">For "Handling failures" — retry policy header.</div>
137
- </div>
138
- <button class="dl" data-target="ill-retry" data-filename="acme-jobs-retry.svg">Download SVG</button>
139
- </figcaption>
140
- </figure>
141
-
142
- <!-- ============================================================
143
- C — Fan-out
144
- ============================================================ -->
145
- <figure>
146
- <div class="canvas">
147
- <svg id="ill-fanout" xmlns="http://www.w3.org/2000/svg" width="720" height="320" viewBox="0 0 720 320">
148
- <defs>
149
-
150
- <marker id="fa" markerWidth="9" markerHeight="9" refX="7" refY="3.5" orient="auto" markerUnits="userSpaceOnUse">
151
- <path d="M0,0 L0,7 L7,3.5 z" fill="#87867F"/>
152
- </marker>
153
- </defs>
154
-
155
- <rect width="720" height="320" fill="#FAF9F5"/>
156
-
157
- <!-- source -->
158
- <rect x="60" y="128" width="110" height="64" rx="10" fill="#E3DACC" stroke="#141413" stroke-width="2"/>
159
- <text x="115" y="158" text-anchor="middle" class="m" fill="#141413">enqueue</text>
160
- <text x="115" y="172" text-anchor="middle" class="m" fill="#87867F">batch()</text>
161
-
162
- <!-- fan-out arrows: from (170,160) to four shard boxes at x=300 -->
163
- <line x1="170" y1="160" x2="296" y2="64" stroke="#87867F" stroke-width="1.5" marker-end="url(#fa)"/>
164
- <line x1="170" y1="160" x2="296" y2="128" stroke="#87867F" stroke-width="1.5" marker-end="url(#fa)"/>
165
- <line x1="170" y1="160" x2="296" y2="192" stroke="#87867F" stroke-width="1.5" marker-end="url(#fa)"/>
166
- <line x1="170" y1="160" x2="296" y2="256" stroke="#87867F" stroke-width="1.5" marker-end="url(#fa)"/>
167
-
168
- <!-- four shard boxes -->
169
- <g>
170
- <rect x="300" y="44" width="120" height="40" rx="10" fill="#F0EEE6" stroke="#3D3D3A" stroke-width="1.5"/>
171
- <text x="360" y="69" text-anchor="middle" class="m" fill="#3D3D3A">shard 0</text>
172
-
173
- <rect x="300" y="108" width="120" height="40" rx="10" fill="#F0EEE6" stroke="#3D3D3A" stroke-width="1.5"/>
174
- <text x="360" y="133" text-anchor="middle" class="m" fill="#3D3D3A">shard 1</text>
175
-
176
- <rect x="300" y="172" width="120" height="40" rx="10" fill="#F0EEE6" stroke="#3D3D3A" stroke-width="1.5"/>
177
- <text x="360" y="197" text-anchor="middle" class="m" fill="#3D3D3A">shard 2</text>
178
-
179
- <rect x="300" y="236" width="120" height="40" rx="10" fill="#F0EEE6" stroke="#3D3D3A" stroke-width="1.5"/>
180
- <text x="360" y="261" text-anchor="middle" class="m" fill="#3D3D3A">shard 3</text>
181
- </g>
182
-
183
- <!-- converge arrows to merge -->
184
- <line x1="420" y1="64" x2="546" y2="160" stroke="#87867F" stroke-width="1.5" marker-end="url(#fa)"/>
185
- <line x1="420" y1="128" x2="546" y2="160" stroke="#87867F" stroke-width="1.5" marker-end="url(#fa)"/>
186
- <line x1="420" y1="192" x2="546" y2="160" stroke="#87867F" stroke-width="1.5" marker-end="url(#fa)"/>
187
- <line x1="420" y1="256" x2="546" y2="160" stroke="#87867F" stroke-width="1.5" marker-end="url(#fa)"/>
188
-
189
- <!-- merge box -->
190
- <rect x="550" y="128" width="110" height="64" rx="10" fill="#788C5D" stroke="#141413" stroke-width="2"/>
191
- <text x="605" y="158" text-anchor="middle" class="m" fill="#FAF9F5">merge</text>
192
- <text x="605" y="172" text-anchor="middle" class="m" fill="#E3DACC">await all</text>
193
-
194
- <!-- annotations -->
195
- <text x="232" y="42" class="s" fill="#87867F">fan-out</text>
196
- <text x="486" y="42" text-anchor="end" class="s" fill="#87867F">fan-in</text>
197
- <text x="60" y="300" class="s" fill="#87867F">Parent job spawns N children, then blocks on a completion barrier.</text>
198
- </svg>
199
- </div>
200
- <figcaption>
201
- <div class="cap-text">
202
- <div class="cap-title">Fan-out / fan-in</div>
203
- <div class="cap-sub">For "Batch and parallel work" — fan-out pattern header.</div>
204
- </div>
205
- <button class="dl" data-target="ill-fanout" data-filename="acme-jobs-fanout.svg">Download SVG</button>
206
- </figcaption>
207
- </figure>
208
-
209
- <!-- ============================================================
210
- Palette + usage notes
211
- ============================================================ -->
212
- <section class="palette">
213
- <h2>Palette &amp; rules</h2>
214
-
215
- <div class="swatches">
216
- <div class="swatch">
217
- <div class="swatch-chip" style="background:#FAF9F5"></div>
218
- <div class="swatch-meta">
219
- <div class="swatch-name">ivory</div>
220
- <div class="swatch-hex">#FAF9F5</div>
221
- </div>
222
- </div>
223
- <div class="swatch">
224
- <div class="swatch-chip" style="background:#141413"></div>
225
- <div class="swatch-meta">
226
- <div class="swatch-name">slate</div>
227
- <div class="swatch-hex">#141413</div>
228
- </div>
229
- </div>
230
- <div class="swatch">
231
- <div class="swatch-chip" style="background:#D97757"></div>
232
- <div class="swatch-meta">
233
- <div class="swatch-name">clay</div>
234
- <div class="swatch-hex">#D97757</div>
235
- </div>
236
- </div>
237
- <div class="swatch">
238
- <div class="swatch-chip" style="background:#788C5D"></div>
239
- <div class="swatch-meta">
240
- <div class="swatch-name">olive</div>
241
- <div class="swatch-hex">#788C5D</div>
242
- </div>
243
- </div>
244
- <div class="swatch">
245
- <div class="swatch-chip" style="background:#E3DACC"></div>
246
- <div class="swatch-meta">
247
- <div class="swatch-name">oat</div>
248
- <div class="swatch-hex">#E3DACC</div>
249
- </div>
250
- </div>
251
- <div class="swatch">
252
- <div class="swatch-chip" style="background:#F0EEE6"></div>
253
- <div class="swatch-meta">
254
- <div class="swatch-name">gray-150</div>
255
- <div class="swatch-hex">#F0EEE6</div>
256
- </div>
257
- </div>
258
- <div class="swatch">
259
- <div class="swatch-chip" style="background:#D1CFC5"></div>
260
- <div class="swatch-meta">
261
- <div class="swatch-name">gray-300</div>
262
- <div class="swatch-hex">#D1CFC5</div>
263
- </div>
264
- </div>
265
- <div class="swatch">
266
- <div class="swatch-chip" style="background:#87867F"></div>
267
- <div class="swatch-meta">
268
- <div class="swatch-name">gray-500</div>
269
- <div class="swatch-hex">#87867F</div>
270
- </div>
271
- </div>
272
- </div>
273
-
274
- <ul class="notes">
275
- <li>Strokes are 1.5px for neutral boxes, 2px for emphasised containers.</li>
276
- <li>All rectangles use <code>rx="10"</code>; no drop shadows or gradients.</li>
277
- <li>Labels inside boxes are 11px mono; annotations outside are 12px sans, gray-500.</li>
278
- <li>Clay marks "the thing in focus"; olive marks "success / done".</li>
279
- <li>Each SVG carries its own <code>&lt;style&gt;</code> block so the download stands alone.</li>
280
- </ul>
281
- </section>
282
-
283
- </div>
284
-
285
- <style>
286
- * { margin: 0; padding: 0; box-sizing: border-box; }
287
- .sheet {
288
- max-width: 760px;
289
- margin: 0 auto;
290
- }
291
- header { margin-bottom: 56px; }
292
- h1 {
293
- font-family: var(--serif);
294
- font-weight: 500;
295
- font-size: 34px;
296
- letter-spacing: -0.01em;
297
- margin-bottom: 10px;
298
- }
299
- .lead {
300
- font-size: 14px;
301
- line-height: 1.6;
302
- color: var(--gray-700);
303
- max-width: 560px;
304
- }
305
- .meta {
306
- font-family: var(--mono);
307
- font-size: 11px;
308
- color: var(--gray-500);
309
- margin-top: 18px;
310
- }
311
- /* ---------------------------------------------------------------- */
312
-
313
- figure {
314
- margin: 0 0 72px 0;
315
- }
316
- .canvas {
317
- border: 1px solid var(--gray-300);
318
- border-radius: 12px;
319
- overflow: hidden;
320
- background: var(--ivory);
321
- }
322
- .canvas svg { display: block; width: 100%; height: auto; }
323
- figcaption {
324
- display: flex;
325
- align-items: baseline;
326
- justify-content: space-between;
327
- gap: 24px;
328
- padding: 18px 4px 0;
329
- }
330
- .cap-text { flex: 1; }
331
- .cap-title {
332
- font-family: var(--serif);
333
- font-size: 19px;
334
- font-weight: 500;
335
- margin-bottom: 4px;
336
- }
337
- .cap-sub {
338
- font-size: 13px;
339
- line-height: 1.55;
340
- color: var(--gray-500);
341
- }
342
- .dl {
343
- flex-shrink: 0;
344
- font-family: var(--mono);
345
- font-size: 11px;
346
- color: var(--slate);
347
- background: var(--gray-150);
348
- border: 1px solid var(--gray-300);
349
- border-radius: 6px;
350
- padding: 7px 12px;
351
- cursor: pointer;
352
- }
353
- .dl:hover { background: var(--oat); }
354
- .dl:active { transform: translateY(1px); }
355
- /* ----------------------------------------------------------------
356
- Palette reference strip
357
- ---------------------------------------------------------------- */
358
- .palette {
359
- border-top: 1px solid var(--gray-300);
360
- padding-top: 36px;
361
- margin-top: 8px;
362
- }
363
- .palette h2 {
364
- font-family: var(--serif);
365
- font-weight: 500;
366
- font-size: 19px;
367
- margin-bottom: 18px;
368
- }
369
- .swatches {
370
- display: grid;
371
- grid-template-columns: repeat(auto-fill, minmax(112px, 1fr));
372
- gap: 10px;
373
- margin-bottom: 32px;
374
- }
375
- .swatch {
376
- border: 1px solid var(--gray-300);
377
- border-radius: 8px;
378
- overflow: hidden;
379
- background: #fff;
380
- }
381
- .swatch-chip {
382
- height: 44px;
383
- }
384
- .swatch-meta {
385
- padding: 8px 10px 10px;
386
- }
387
- .swatch-name {
388
- font-size: 12px;
389
- color: var(--gray-700);
390
- }
391
- .swatch-hex {
392
- font-family: var(--mono);
393
- font-size: 10px;
394
- color: var(--gray-500);
395
- }
396
- .notes {
397
- font-size: 13px;
398
- line-height: 1.7;
399
- color: var(--gray-700);
400
- list-style: none;
401
- }
402
- .notes li {
403
- padding-left: 18px;
404
- position: relative;
405
- margin-bottom: 6px;
406
- }
407
- .notes li::before {
408
- content: "";
409
- position: absolute;
410
- left: 0;
411
- top: 0.65em;
412
- width: 8px;
413
- height: 1px;
414
- background: var(--gray-500);
415
- }
416
- /* --- */
417
-
418
- .m { font-family: ui-monospace, "SF Mono", Menlo, Consolas, monospace; font-size: 11px; }
419
- .s { font-family: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif; font-size: 12px; }
420
- /* --- */
421
-
422
- .m { font-family: ui-monospace, "SF Mono", Menlo, Consolas, monospace; font-size: 11px; }
423
- .s { font-family: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif; font-size: 12px; }
424
- /* --- */
425
-
426
- .m { font-family: ui-monospace, "SF Mono", Menlo, Consolas, monospace; font-size: 11px; }
427
- .s { font-family: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif; font-size: 12px; }
428
- </style>
429
-
430
- <script>
431
- document.querySelectorAll('.dl').forEach(function (btn) {
432
- btn.addEventListener('click', function () {
433
- var svg = document.getElementById(btn.dataset.target);
434
- var src = new XMLSerializer().serializeToString(svg);
435
- var blob = new Blob([src], { type: 'image/svg+xml;charset=utf-8' });
436
- var url = URL.createObjectURL(blob);
437
- var a = document.createElement('a');
438
- a.href = url;
439
- a.download = btn.dataset.filename || 'illustration.svg';
440
- a.click();
441
- setTimeout(function () { URL.revokeObjectURL(url); }, 1000);
442
- });
443
- });
444
- </script>
@@ -1,152 +0,0 @@
1
- <!--
2
- template: 11-status-report
3
- upstream: 11-status-report.html
4
- slots:
5
- title: string
6
- auto_pill?: string
7
- date_range: string
8
- repo?: string
9
- summary[]: { num, label, delta?, delta_kind?: up|flat|down, warn?: bool }
10
- highlights?: { items[]: { strong, body: html } }
11
- shipped?: { rows[]: { pr, title: html, author, risk: low|med|high } }
12
- velocity_svg?: html
13
- velocity_caption?: string
14
- carryover?: { items[]: { tag, body: html, who? } }
15
- footer?: html
16
- -->
17
- <div class="page report report--status">
18
- <header>
19
- <div class="header-top">
20
- <h1>{{title}}</h1>
21
- {{#auto_pill}}<span class="auto-pill">{{auto_pill}}</span>{{/auto_pill}}
22
- </div>
23
- <div class="date-range">
24
- {{date_range}}
25
- {{#repo}} &middot; <span class="repo">{{repo}}</span>{{/repo}}
26
- </div>
27
- </header>
28
-
29
- <section>
30
- <div class="summary-band">
31
- {{#summary}}
32
- <div class="stat-card {{#warn}}warn{{/warn}}">
33
- <div class="stat-num">{{num}}</div>
34
- <div class="stat-label">{{label}}</div>
35
- {{#delta}}<div class="stat-delta {{delta_kind}}">{{delta}}</div>{{/delta}}
36
- </div>
37
- {{/summary}}
38
- </div>
39
- </section>
40
-
41
- {{#highlights}}
42
- <section>
43
- <h2>Highlights</h2>
44
- <hr class="rule">
45
- <ul class="highlights">
46
- {{#items}}
47
- <li><strong>{{strong}}</strong> {{{body}}}</li>
48
- {{/items}}
49
- </ul>
50
- </section>
51
- {{/highlights}}
52
-
53
- {{#shipped}}
54
- <section>
55
- <h2>Shipped</h2>
56
- <hr class="rule">
57
- <table class="shipped">
58
- <thead>
59
- <tr><th style="width:90px;">PR</th><th>Title</th><th style="width:140px;">Author</th><th style="width:100px;">Risk</th></tr>
60
- </thead>
61
- <tbody>
62
- {{#rows}}
63
- <tr>
64
- <td><a class="pr-link" href="#">{{pr}}</a></td>
65
- <td>{{{title}}}</td>
66
- <td class="author">{{author}}</td>
67
- <td><span class="risk"><span class="risk-dot {{risk}}"></span>{{risk}}</span></td>
68
- </tr>
69
- {{/rows}}
70
- </tbody>
71
- </table>
72
- </section>
73
- {{/shipped}}
74
-
75
- {{#velocity_svg}}
76
- <section>
77
- <h2>Velocity</h2>
78
- <hr class="rule">
79
- <div class="chart-panel">
80
- {{{velocity_svg}}}
81
- {{#velocity_caption}}<div class="chart-caption">{{velocity_caption}}</div>{{/velocity_caption}}
82
- </div>
83
- </section>
84
- {{/velocity_svg}}
85
-
86
- {{#carryover}}
87
- <section>
88
- <h2>Carryover</h2>
89
- <hr class="rule">
90
- <div class="carryover">
91
- {{#items}}
92
- <div class="carry-item">
93
- <span class="carry-tag">{{tag}}</span>
94
- <div class="carry-body">{{{body}}}{{#who}} <span class="who">&middot; {{who}}</span>{{/who}}</div>
95
- </div>
96
- {{/items}}
97
- </div>
98
- </section>
99
- {{/carryover}}
100
-
101
- {{#footer}}<footer>{{{footer}}}</footer>{{/footer}}
102
- </div>
103
-
104
- <style>
105
- .report--status { max-width: 860px; margin: 0 auto; padding: 56px 24px 120px; font-size: 15px; line-height: 1.6; -webkit-font-smoothing: antialiased; }
106
- .report--status header { margin-bottom: 40px; }
107
- .report--status .header-top { display: flex; align-items: baseline; justify-content: space-between; flex-wrap: wrap; gap: 12px; margin-bottom: 8px; }
108
- .report--status h1 { font-family: var(--serif); font-weight: 500; font-size: 38px; letter-spacing: -0.01em; margin: 0; }
109
- .report--status .auto-pill { font-family: var(--mono); font-size: 11px; text-transform: uppercase; letter-spacing: 0.06em; color: var(--gray-500); background: var(--gray-100); border: var(--border-thick); border-radius: 999px; padding: 5px 11px; white-space: nowrap; }
110
- .report--status .date-range { color: var(--gray-500); font-size: 14px; }
111
- .report--status .date-range .repo { font-family: var(--mono); font-size: 13px; color: var(--gray-700); }
112
- .report--status section { margin-bottom: 52px; }
113
- .report--status h2 { font-family: var(--serif); font-weight: 500; font-size: 24px; letter-spacing: -0.01em; margin: 0 0 6px; }
114
- .report--status hr.rule { border: none; border-top: 1px solid var(--gray-300); margin: 0 0 22px; }
115
- .report--status .summary-band { display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; }
116
- @media (max-width: 720px) { .report--status .summary-band { grid-template-columns: repeat(2, 1fr); } }
117
- .report--status .stat-card { background: var(--white); border: var(--border-thick); border-radius: var(--radius-panel); padding: 20px 22px 18px; }
118
- .report--status .stat-card.warn { border-left: 4px solid var(--clay); padding-left: 19px; }
119
- .report--status .stat-num { font-family: var(--serif); font-size: 44px; font-weight: 500; line-height: 1; color: var(--slate); margin-bottom: 8px; }
120
- .report--status .stat-label { font-family: var(--sans); font-size: 12px; text-transform: uppercase; letter-spacing: 0.05em; color: var(--gray-500); }
121
- .report--status .stat-delta { font-family: var(--mono); font-size: 11px; margin-top: 6px; }
122
- .report--status .stat-delta.up { color: var(--olive); }
123
- .report--status .stat-delta.flat { color: var(--gray-500); }
124
- .report--status .stat-delta.down { color: var(--rust); }
125
- .report--status .highlights { list-style: none; margin: 0; padding: 0; }
126
- .report--status .highlights li { position: relative; padding: 0 0 14px 26px; font-size: 15px; color: var(--gray-700); }
127
- .report--status .highlights li::before { content: ""; position: absolute; left: 6px; top: 8px; width: 7px; height: 7px; border-radius: 2px; background: var(--clay); }
128
- .report--status .highlights li strong { color: var(--slate); font-weight: 600; }
129
- .report--status table.shipped { width: 100%; border-collapse: separate; border-spacing: 0; background: var(--white); border: var(--border-thick); border-radius: var(--radius-panel); overflow: hidden; }
130
- .report--status table.shipped thead th { text-align: left; font-family: var(--sans); font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.06em; color: var(--gray-500); background: var(--gray-100); padding: 12px 16px; border-bottom: 1px solid var(--gray-300); }
131
- .report--status table.shipped tbody td { padding: 13px 16px; border-bottom: 1px solid var(--gray-100); font-size: 14px; vertical-align: middle; }
132
- .report--status table.shipped tbody tr:last-child td { border-bottom: none; }
133
- .report--status table.shipped tbody tr:hover { background: var(--ivory); }
134
- .report--status .pr-link { font-family: var(--mono); font-size: 13px; color: var(--clay); text-decoration: none; border-bottom: 1px dotted transparent; }
135
- .report--status .pr-link:hover { border-bottom-color: var(--clay); }
136
- .report--status .author { color: var(--gray-700); font-size: 13px; }
137
- .report--status .risk { display: inline-flex; align-items: center; gap: 7px; font-size: 12px; color: var(--gray-500); text-transform: capitalize; }
138
- .report--status .risk-dot { width: 9px; height: 9px; border-radius: 50%; flex-shrink: 0; }
139
- .report--status .risk-dot.low { background: var(--olive); }
140
- .report--status .risk-dot.med { background: var(--clay); }
141
- .report--status .risk-dot.high { background: var(--rust); }
142
- .report--status .chart-panel { background: var(--white); border: var(--border-thick); border-radius: var(--radius-panel); padding: 24px 28px 18px; }
143
- .report--status .chart-panel svg { display: block; width: 100%; height: auto; }
144
- .report--status .chart-caption { font-size: 12px; color: var(--gray-500); margin-top: 12px; }
145
- .report--status .carryover { background: var(--oat); border-radius: var(--radius-panel); padding: 20px 22px; }
146
- .report--status .carry-item { display: flex; align-items: baseline; gap: 14px; padding: 8px 0; }
147
- .report--status .carry-item + .carry-item { border-top: 1px solid rgba(20, 20, 19, 0.08); }
148
- .report--status .carry-tag { font-family: var(--mono); font-size: 11px; text-transform: uppercase; letter-spacing: 0.05em; color: var(--gray-700); background: var(--ivory); border-radius: 4px; padding: 3px 7px; flex-shrink: 0; }
149
- .report--status .carry-body { font-size: 14px; color: var(--gray-700); }
150
- .report--status .carry-body .who { color: var(--gray-500); font-size: 12px; }
151
- .report--status footer { margin-top: 64px; padding-top: 20px; border-top: 1px solid var(--gray-300); font-family: var(--mono); font-size: 12px; color: var(--gray-500); }
152
- </style>