@drunkcoding/agents-and-skills 0.0.13 → 0.0.14

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 (78) hide show
  1. package/.claude-plugin/marketplace.json +9 -6
  2. package/README.md +1 -1
  3. package/package.json +1 -1
  4. package/plugins/html-effectiveness/.claude-plugin/plugin.json +1 -1
  5. package/plugins/html-effectiveness/README.md +9 -4
  6. package/plugins/html-effectiveness/agents/report-builder.md +4 -0
  7. package/plugins/html-effectiveness/assets/base.css +40 -20
  8. package/plugins/html-effectiveness/docs/template-gallery.md +28 -0
  9. package/plugins/html-effectiveness/scripts/_tmp.js +37 -0
  10. package/plugins/html-effectiveness/scripts/catalog.js +47 -0
  11. package/plugins/html-effectiveness/scripts/extract.js +104 -0
  12. package/plugins/html-effectiveness/scripts/render.js +2 -2
  13. package/plugins/html-effectiveness/skills/html-effectiveness/SKILL.md +4 -4
  14. package/plugins/html-effectiveness/templates/01-exploration-code-approaches.html.tmpl +400 -0
  15. package/plugins/html-effectiveness/templates/02-exploration-visual-designs.html.tmpl +456 -0
  16. package/plugins/html-effectiveness/templates/03-code-review-pr.html.tmpl +581 -0
  17. package/plugins/html-effectiveness/templates/04-code-understanding.html.tmpl +443 -0
  18. package/plugins/html-effectiveness/templates/05-design-system.html.tmpl +578 -0
  19. package/plugins/html-effectiveness/templates/06-component-variants.html.tmpl +557 -0
  20. package/plugins/html-effectiveness/templates/07-prototype-animation.html.tmpl +417 -0
  21. package/plugins/html-effectiveness/templates/08-prototype-interaction.html.tmpl +363 -0
  22. package/plugins/html-effectiveness/templates/09-slide-deck.html.tmpl +535 -0
  23. package/plugins/html-effectiveness/templates/10-svg-illustrations.html.tmpl +444 -0
  24. package/plugins/html-effectiveness/templates/11-status-report.html.tmpl +152 -0
  25. package/plugins/html-effectiveness/templates/12-incident-report.html.tmpl +547 -0
  26. package/plugins/html-effectiveness/templates/13-flowchart-diagram.html.tmpl +361 -0
  27. package/plugins/html-effectiveness/templates/14-research-feature-explainer.html.tmpl +348 -0
  28. package/plugins/html-effectiveness/templates/15-research-concept-explainer.html.tmpl +334 -0
  29. package/plugins/html-effectiveness/templates/16-implementation-plan.html.tmpl +657 -0
  30. package/plugins/html-effectiveness/templates/17-pr-writeup.html.tmpl +553 -0
  31. package/plugins/html-effectiveness/templates/18-editor-triage-board.html.tmpl +541 -0
  32. package/plugins/html-effectiveness/templates/19-editor-feature-flags.html.tmpl +627 -0
  33. package/plugins/html-effectiveness/templates/20-editor-prompt-tuner.html.tmpl +687 -0
  34. package/plugins/html-effectiveness/templates/manifest.json +436 -2
  35. package/plugins/html-effectiveness/tests/_tmp.test.js +58 -0
  36. package/plugins/html-effectiveness/tests/fixtures/01-exploration-code-approaches.data.json +3 -0
  37. package/plugins/html-effectiveness/tests/fixtures/02-exploration-visual-designs.data.json +3 -0
  38. package/plugins/html-effectiveness/tests/fixtures/03-code-review-pr.data.json +3 -0
  39. package/plugins/html-effectiveness/tests/fixtures/04-code-understanding.data.json +3 -0
  40. package/plugins/html-effectiveness/tests/fixtures/05-design-system.data.json +3 -0
  41. package/plugins/html-effectiveness/tests/fixtures/06-component-variants.data.json +3 -0
  42. package/plugins/html-effectiveness/tests/fixtures/07-prototype-animation.data.json +3 -0
  43. package/plugins/html-effectiveness/tests/fixtures/08-prototype-interaction.data.json +3 -0
  44. package/plugins/html-effectiveness/tests/fixtures/09-slide-deck.data.json +3 -0
  45. package/plugins/html-effectiveness/tests/fixtures/10-svg-illustrations.data.json +3 -0
  46. package/plugins/html-effectiveness/tests/fixtures/11-status-report.data.json +37 -0
  47. package/plugins/html-effectiveness/tests/fixtures/12-incident-report.data.json +3 -0
  48. package/plugins/html-effectiveness/tests/fixtures/13-flowchart-diagram.data.json +3 -0
  49. package/plugins/html-effectiveness/tests/fixtures/14-research-feature-explainer.data.json +3 -0
  50. package/plugins/html-effectiveness/tests/fixtures/15-research-concept-explainer.data.json +3 -0
  51. package/plugins/html-effectiveness/tests/fixtures/16-implementation-plan.data.json +3 -0
  52. package/plugins/html-effectiveness/tests/fixtures/17-pr-writeup.data.json +3 -0
  53. package/plugins/html-effectiveness/tests/fixtures/18-editor-triage-board.data.json +3 -0
  54. package/plugins/html-effectiveness/tests/fixtures/19-editor-feature-flags.data.json +3 -0
  55. package/plugins/html-effectiveness/tests/fixtures/20-editor-prompt-tuner.data.json +3 -0
  56. package/plugins/html-effectiveness/tests/manifest.test.js +61 -0
  57. package/plugins/plugin-validator/.claude-plugin/plugin.json +1 -1
  58. package/plugins/plugin-validator/skills/validate-agents/SKILL.md +2 -2
  59. package/plugins/plugin-validator/skills/validate-commands/SKILL.md +2 -2
  60. package/plugins/plugin-validator/skills/validate-hooks/SKILL.md +57 -18
  61. package/plugins/team-superpower/.claude-plugin/plugin.json +7 -39
  62. package/plugins/team-superpower/README.md +73 -19
  63. package/plugins/team-superpower/agents/backend-developer.md +33 -0
  64. package/plugins/team-superpower/agents/designer.md +5 -1
  65. package/plugins/team-superpower/agents/frontend-developer.md +33 -0
  66. package/plugins/team-superpower/agents/planner.md +31 -11
  67. package/plugins/team-superpower/agents/qa-engineer.md +30 -0
  68. package/plugins/team-superpower/agents/reviewer.md +37 -21
  69. package/plugins/team-superpower/agents/security-engineer.md +30 -0
  70. package/plugins/team-superpower/agents/software-architect.md +30 -0
  71. package/plugins/team-superpower/assets/ESCALATION.md +19 -5
  72. package/plugins/team-superpower/assets/SESSION_README.md +31 -11
  73. package/plugins/team-superpower/commands/team-feature-resume.md +40 -5
  74. package/plugins/team-superpower/commands/team-feature.md +148 -22
  75. package/plugins/team-superpower/hooks/hooks.json +0 -3
  76. package/plugins/tech-graph/.claude-plugin/plugin.json +1 -1
  77. package/plugins/tech-graph/agents/tech-graph.md +8 -0
  78. package/plugins/team-superpower/agents/implementer.md +0 -46
@@ -1,7 +1,441 @@
1
1
  {
2
2
  "_meta": {
3
3
  "upstream_repo": "ThariqS/html-effectiveness",
4
- "upstream_sha": "PENDING",
5
- "extracted_at": "PENDING"
4
+ "upstream_sha": "a1fb5673c26f87be9b833e1876cf4fd0f30f5f2d",
5
+ "fetched_at": "2026-05-13",
6
+ "note": "Templates vendored. Re-fetch is manual; see scripts/fetch-upstream.js."
7
+ },
8
+ "11-status-report": {
9
+ "title": "Status Report",
10
+ "use_cases": [
11
+ "weekly status",
12
+ "project update",
13
+ "team digest",
14
+ "monthly recap",
15
+ "engineering status"
16
+ ],
17
+ "pattern": "interactive_report",
18
+ "tmpl": "templates/11-status-report.html.tmpl",
19
+ "slots": {
20
+ "title": {
21
+ "type": "string",
22
+ "required": true
23
+ },
24
+ "auto_pill": {
25
+ "type": "string"
26
+ },
27
+ "date_range": {
28
+ "type": "string",
29
+ "required": true
30
+ },
31
+ "repo": {
32
+ "type": "string"
33
+ },
34
+ "summary": {
35
+ "type": "array",
36
+ "of": {
37
+ "num": "string",
38
+ "label": "string",
39
+ "delta": "string",
40
+ "delta_kind": "string",
41
+ "warn": "boolean"
42
+ }
43
+ },
44
+ "highlights": {
45
+ "type": "object"
46
+ },
47
+ "shipped": {
48
+ "type": "object"
49
+ },
50
+ "velocity_svg": {
51
+ "type": "html"
52
+ },
53
+ "velocity_caption": {
54
+ "type": "string"
55
+ },
56
+ "carryover": {
57
+ "type": "object"
58
+ },
59
+ "footer": {
60
+ "type": "html"
61
+ }
62
+ },
63
+ "asset_bundles": [
64
+ "base"
65
+ ],
66
+ "extra_js": null
67
+ },
68
+ "01-exploration-code-approaches": {
69
+ "title": "Code-Approaches Exploration",
70
+ "use_cases": [
71
+ "compare implementations",
72
+ "approach trade-offs",
73
+ "design alternatives"
74
+ ],
75
+ "pattern": "comparison_board",
76
+ "tmpl": "templates/01-exploration-code-approaches.html.tmpl",
77
+ "slots": {
78
+ "title": {
79
+ "type": "string",
80
+ "required": true
81
+ }
82
+ },
83
+ "asset_bundles": [
84
+ "base"
85
+ ],
86
+ "extra_js": null
87
+ },
88
+ "02-exploration-visual-designs": {
89
+ "title": "Visual Design Exploration",
90
+ "use_cases": [
91
+ "compare designs",
92
+ "UI alternatives",
93
+ "visual options"
94
+ ],
95
+ "pattern": "comparison_board",
96
+ "tmpl": "templates/02-exploration-visual-designs.html.tmpl",
97
+ "slots": {
98
+ "title": {
99
+ "type": "string",
100
+ "required": true
101
+ }
102
+ },
103
+ "asset_bundles": [
104
+ "base"
105
+ ],
106
+ "extra_js": null
107
+ },
108
+ "03-code-review-pr": {
109
+ "title": "PR Code Review Board",
110
+ "use_cases": [
111
+ "PR review",
112
+ "code review",
113
+ "diff review"
114
+ ],
115
+ "pattern": "code_review_board",
116
+ "tmpl": "templates/03-code-review-pr.html.tmpl",
117
+ "slots": {
118
+ "title": {
119
+ "type": "string",
120
+ "required": true
121
+ }
122
+ },
123
+ "asset_bundles": [
124
+ "base"
125
+ ],
126
+ "extra_js": null
127
+ },
128
+ "04-code-understanding": {
129
+ "title": "Code Walkthrough",
130
+ "use_cases": [
131
+ "explain code",
132
+ "walk through architecture",
133
+ "trace logic"
134
+ ],
135
+ "pattern": "knowledge_explorer",
136
+ "tmpl": "templates/04-code-understanding.html.tmpl",
137
+ "slots": {
138
+ "title": {
139
+ "type": "string",
140
+ "required": true
141
+ }
142
+ },
143
+ "asset_bundles": [
144
+ "base"
145
+ ],
146
+ "extra_js": null
147
+ },
148
+ "05-design-system": {
149
+ "title": "Design System Sheet",
150
+ "use_cases": [
151
+ "design tokens",
152
+ "color palette",
153
+ "typography"
154
+ ],
155
+ "pattern": "design_system_sheet",
156
+ "tmpl": "templates/05-design-system.html.tmpl",
157
+ "slots": {
158
+ "title": {
159
+ "type": "string",
160
+ "required": true
161
+ }
162
+ },
163
+ "asset_bundles": [
164
+ "base"
165
+ ],
166
+ "extra_js": null
167
+ },
168
+ "06-component-variants": {
169
+ "title": "Component Variant Matrix",
170
+ "use_cases": [
171
+ "component variants",
172
+ "states gallery"
173
+ ],
174
+ "pattern": "design_system_sheet",
175
+ "tmpl": "templates/06-component-variants.html.tmpl",
176
+ "slots": {
177
+ "title": {
178
+ "type": "string",
179
+ "required": true
180
+ }
181
+ },
182
+ "asset_bundles": [
183
+ "base"
184
+ ],
185
+ "extra_js": null
186
+ },
187
+ "07-prototype-animation": {
188
+ "title": "Animation Prototype",
189
+ "use_cases": [
190
+ "animation prototype",
191
+ "motion preview"
192
+ ],
193
+ "pattern": "interactive_report",
194
+ "tmpl": "templates/07-prototype-animation.html.tmpl",
195
+ "slots": {
196
+ "title": {
197
+ "type": "string",
198
+ "required": true
199
+ }
200
+ },
201
+ "asset_bundles": [
202
+ "base"
203
+ ],
204
+ "extra_js": null
205
+ },
206
+ "08-prototype-interaction": {
207
+ "title": "Interaction Prototype",
208
+ "use_cases": [
209
+ "interaction prototype",
210
+ "ux flow"
211
+ ],
212
+ "pattern": "interactive_report",
213
+ "tmpl": "templates/08-prototype-interaction.html.tmpl",
214
+ "slots": {
215
+ "title": {
216
+ "type": "string",
217
+ "required": true
218
+ }
219
+ },
220
+ "asset_bundles": [
221
+ "base"
222
+ ],
223
+ "extra_js": null
224
+ },
225
+ "09-slide-deck": {
226
+ "title": "Slide Deck",
227
+ "use_cases": [
228
+ "slide deck",
229
+ "presentation",
230
+ "pitch"
231
+ ],
232
+ "pattern": "slide_deck",
233
+ "tmpl": "templates/09-slide-deck.html.tmpl",
234
+ "slots": {
235
+ "title": {
236
+ "type": "string",
237
+ "required": true
238
+ }
239
+ },
240
+ "asset_bundles": [
241
+ "base"
242
+ ],
243
+ "extra_js": null
244
+ },
245
+ "10-svg-illustrations": {
246
+ "title": "SVG Illustration Gallery",
247
+ "use_cases": [
248
+ "illustrate concept",
249
+ "svg gallery"
250
+ ],
251
+ "pattern": "knowledge_explorer",
252
+ "tmpl": "templates/10-svg-illustrations.html.tmpl",
253
+ "slots": {
254
+ "title": {
255
+ "type": "string",
256
+ "required": true
257
+ }
258
+ },
259
+ "asset_bundles": [
260
+ "base"
261
+ ],
262
+ "extra_js": null
263
+ },
264
+ "12-incident-report": {
265
+ "title": "Incident Report",
266
+ "use_cases": [
267
+ "incident report",
268
+ "post-mortem",
269
+ "outage writeup"
270
+ ],
271
+ "pattern": "interactive_report",
272
+ "tmpl": "templates/12-incident-report.html.tmpl",
273
+ "slots": {
274
+ "title": {
275
+ "type": "string",
276
+ "required": true
277
+ }
278
+ },
279
+ "asset_bundles": [
280
+ "base"
281
+ ],
282
+ "extra_js": null
283
+ },
284
+ "13-flowchart-diagram": {
285
+ "title": "Flowchart Diagram",
286
+ "use_cases": [
287
+ "flowchart",
288
+ "process diagram",
289
+ "decision tree"
290
+ ],
291
+ "pattern": "knowledge_explorer",
292
+ "tmpl": "templates/13-flowchart-diagram.html.tmpl",
293
+ "slots": {
294
+ "title": {
295
+ "type": "string",
296
+ "required": true
297
+ }
298
+ },
299
+ "asset_bundles": [
300
+ "base"
301
+ ],
302
+ "extra_js": null
303
+ },
304
+ "14-research-feature-explainer": {
305
+ "title": "Feature Explainer",
306
+ "use_cases": [
307
+ "explain feature",
308
+ "feature deep-dive"
309
+ ],
310
+ "pattern": "knowledge_explorer",
311
+ "tmpl": "templates/14-research-feature-explainer.html.tmpl",
312
+ "slots": {
313
+ "title": {
314
+ "type": "string",
315
+ "required": true
316
+ }
317
+ },
318
+ "asset_bundles": [
319
+ "base"
320
+ ],
321
+ "extra_js": null
322
+ },
323
+ "15-research-concept-explainer": {
324
+ "title": "Concept Explainer",
325
+ "use_cases": [
326
+ "explain concept",
327
+ "tutorial",
328
+ "primer"
329
+ ],
330
+ "pattern": "knowledge_explorer",
331
+ "tmpl": "templates/15-research-concept-explainer.html.tmpl",
332
+ "slots": {
333
+ "title": {
334
+ "type": "string",
335
+ "required": true
336
+ }
337
+ },
338
+ "asset_bundles": [
339
+ "base"
340
+ ],
341
+ "extra_js": null
342
+ },
343
+ "16-implementation-plan": {
344
+ "title": "Implementation Plan",
345
+ "use_cases": [
346
+ "implementation plan",
347
+ "phased rollout",
348
+ "roadmap"
349
+ ],
350
+ "pattern": "annotated_timeline",
351
+ "tmpl": "templates/16-implementation-plan.html.tmpl",
352
+ "slots": {
353
+ "title": {
354
+ "type": "string",
355
+ "required": true
356
+ }
357
+ },
358
+ "asset_bundles": [
359
+ "base"
360
+ ],
361
+ "extra_js": null
362
+ },
363
+ "17-pr-writeup": {
364
+ "title": "PR Writeup",
365
+ "use_cases": [
366
+ "PR description",
367
+ "release notes",
368
+ "change writeup"
369
+ ],
370
+ "pattern": "interactive_report",
371
+ "tmpl": "templates/17-pr-writeup.html.tmpl",
372
+ "slots": {
373
+ "title": {
374
+ "type": "string",
375
+ "required": true
376
+ }
377
+ },
378
+ "asset_bundles": [
379
+ "base"
380
+ ],
381
+ "extra_js": null
382
+ },
383
+ "18-editor-triage-board": {
384
+ "title": "Triage Board",
385
+ "use_cases": [
386
+ "bug triage",
387
+ "issue board",
388
+ "kanban"
389
+ ],
390
+ "pattern": "kanban_board",
391
+ "tmpl": "templates/18-editor-triage-board.html.tmpl",
392
+ "slots": {
393
+ "title": {
394
+ "type": "string",
395
+ "required": true
396
+ }
397
+ },
398
+ "asset_bundles": [
399
+ "base"
400
+ ],
401
+ "extra_js": null
402
+ },
403
+ "19-editor-feature-flags": {
404
+ "title": "Feature Flags Matrix",
405
+ "use_cases": [
406
+ "feature flags",
407
+ "rollout matrix"
408
+ ],
409
+ "pattern": "decision_matrix",
410
+ "tmpl": "templates/19-editor-feature-flags.html.tmpl",
411
+ "slots": {
412
+ "title": {
413
+ "type": "string",
414
+ "required": true
415
+ }
416
+ },
417
+ "asset_bundles": [
418
+ "base"
419
+ ],
420
+ "extra_js": null
421
+ },
422
+ "20-editor-prompt-tuner": {
423
+ "title": "Prompt Tuner",
424
+ "use_cases": [
425
+ "prompt tuning",
426
+ "LLM config"
427
+ ],
428
+ "pattern": "interactive_report",
429
+ "tmpl": "templates/20-editor-prompt-tuner.html.tmpl",
430
+ "slots": {
431
+ "title": {
432
+ "type": "string",
433
+ "required": true
434
+ }
435
+ },
436
+ "asset_bundles": [
437
+ "base"
438
+ ],
439
+ "extra_js": null
6
440
  }
7
441
  }
@@ -0,0 +1,58 @@
1
+ import { test } from 'node:test';
2
+ import assert from 'node:assert/strict';
3
+ import { existsSync, writeFileSync } from 'node:fs';
4
+ import { join } from 'node:path';
5
+ import { getTmpDir, cleanup, withTmp, ROOT } from '../scripts/_tmp.js';
6
+
7
+ test('getTmpDir creates a fresh dir under .tmp/html-effectiveness/', () => {
8
+ const dir = getTmpDir('unit-a');
9
+ assert.ok(dir.endsWith('/.tmp/html-effectiveness/unit-a'));
10
+ assert.ok(existsSync(dir));
11
+ cleanup('unit-a');
12
+ });
13
+
14
+ test('getTmpDir wipes existing dir contents', () => {
15
+ const dir = getTmpDir('unit-b');
16
+ writeFileSync(join(dir, 'old.txt'), 'stale');
17
+ const dir2 = getTmpDir('unit-b');
18
+ assert.equal(dir, dir2);
19
+ assert.equal(existsSync(join(dir2, 'old.txt')), false);
20
+ cleanup('unit-b');
21
+ });
22
+
23
+ test('cleanup removes dir', () => {
24
+ const dir = getTmpDir('unit-c');
25
+ cleanup('unit-c');
26
+ assert.equal(existsSync(dir), false);
27
+ });
28
+
29
+ test('cleanup is idempotent on missing dir', () => {
30
+ cleanup('unit-never-created');
31
+ assert.ok(true);
32
+ });
33
+
34
+ test('withTmp runs callback and cleans up on success', () => {
35
+ let observed;
36
+ const result = withTmp('unit-d', (dir) => {
37
+ observed = dir;
38
+ writeFileSync(join(dir, 'x'), 'y');
39
+ return 'done';
40
+ });
41
+ assert.equal(result, 'done');
42
+ assert.equal(existsSync(observed), false);
43
+ });
44
+
45
+ test('withTmp cleans up even when callback throws', () => {
46
+ let observed;
47
+ assert.throws(() => {
48
+ withTmp('unit-e', (dir) => {
49
+ observed = dir;
50
+ throw new Error('boom');
51
+ });
52
+ }, /boom/);
53
+ assert.equal(existsSync(observed), false);
54
+ });
55
+
56
+ test('ROOT is anchored at repo .tmp/html-effectiveness', () => {
57
+ assert.ok(ROOT.endsWith('/.tmp/html-effectiveness'));
58
+ });
@@ -0,0 +1,3 @@
1
+ {
2
+ "title": "Code-Approaches Exploration"
3
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "title": "Visual Design Exploration"
3
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "title": "PR Code Review Board"
3
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "title": "Code Walkthrough"
3
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "title": "Design System Sheet"
3
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "title": "Component Variant Matrix"
3
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "title": "Animation Prototype"
3
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "title": "Interaction Prototype"
3
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "title": "Slide Deck"
3
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "title": "SVG Illustration Gallery"
3
+ }
@@ -0,0 +1,37 @@
1
+ {
2
+ "title": "Engineering Status",
3
+ "auto_pill": "Auto-generated",
4
+ "date_range": "Apr 29 — May 13, 2026",
5
+ "repo": "drunkcoding/agents-and-skills",
6
+ "summary": [
7
+ { "num": "12", "label": "Shipped", "delta": "+3 vs prev", "delta_kind": "up" },
8
+ { "num": "47", "label": "Open bugs", "delta": "-8", "delta_kind": "down" },
9
+ { "num": "14", "label": "On-call", "delta": "+2", "delta_kind": "up", "warn": true },
10
+ { "num": "92%","label": "CI green", "delta": "flat", "delta_kind": "flat" }
11
+ ],
12
+ "highlights": {
13
+ "items": [
14
+ { "strong": "Auth v2 cutover.", "body": "All traffic on new identity stack; p95 latency down <em>30%</em>." },
15
+ { "strong": "Search reindex.", "body": "Full corpus rebuilt in 11h, down from 26h." },
16
+ { "strong": "Mobile beta.", "body": "iOS 17 build live to internal testers." }
17
+ ]
18
+ },
19
+ "shipped": {
20
+ "rows": [
21
+ { "pr": "#1042", "title": "feat(auth): rotate session keys", "author": "alice", "risk": "low" },
22
+ { "pr": "#1048", "title": "fix(search): off-by-one in date filter", "author": "bob", "risk": "low" },
23
+ { "pr": "#1055", "title": "perf(api): cache permission lookups", "author": "charlie", "risk": "med" },
24
+ { "pr": "#1061", "title": "feat(mobile): push notif opt-in", "author": "dana", "risk": "high" }
25
+ ]
26
+ },
27
+ "velocity_svg": "<svg viewBox=\"0 0 600 160\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#D97757\" stroke-width=\"2\" points=\"0,120 75,90 150,100 225,70 300,60 375,80 450,40 525,30 600,50\"/><line x1=\"0\" y1=\"150\" x2=\"600\" y2=\"150\" stroke=\"#D1CFC5\"/></svg>",
28
+ "velocity_caption": "Merged PRs per day, 2-week window. Source: GitHub API.",
29
+ "carryover": {
30
+ "items": [
31
+ { "tag": "BLOCKED", "body": "App Store review for iOS 17 build.", "who": "dana" },
32
+ { "tag": "REVIEW", "body": "Permission cache invalidation edge case.", "who": "charlie" },
33
+ { "tag": "SCOPE", "body": "Q3 platform RFC pending review.", "who": "alice" }
34
+ ]
35
+ },
36
+ "footer": "Generated 2026-05-13 · <a href=\"#\">runbook</a>"
37
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "title": "Incident Report"
3
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "title": "Flowchart Diagram"
3
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "title": "Feature Explainer"
3
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "title": "Concept Explainer"
3
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "title": "Implementation Plan"
3
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "title": "PR Writeup"
3
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "title": "Triage Board"
3
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "title": "Feature Flags Matrix"
3
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "title": "Prompt Tuner"
3
+ }