@ketecode/loom 0.1.0 → 0.2.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.
- package/README.md +111 -11
- package/agents/code-reviewer/evals/behavior.json +60 -0
- package/agents/inbox-triager/AGENT.md +98 -0
- package/agents/inbox-triager/evals/triggers.json +16 -0
- package/agents/spec-reviewer/AGENT.md +95 -0
- package/agents/spec-reviewer/evals/behavior.json +57 -0
- package/agents/spec-reviewer/evals/triggers.json +16 -0
- package/agents/task-implementer/AGENT.md +89 -0
- package/agents/task-implementer/evals/behavior.json +47 -0
- package/agents/task-implementer/evals/triggers.json +16 -0
- package/bin/kete-loom.js +46 -6
- package/commands/brainstorm.md +25 -0
- package/commands/debug.md +27 -0
- package/commands/dual-review.md +34 -0
- package/commands/feature-dev.md +8 -7
- package/commands/finish-branch.md +26 -0
- package/commands/fix-bug.md +38 -0
- package/commands/production-readiness.md +45 -0
- package/commands/usage-report.md +43 -0
- package/hooks/block-foreground-servers/HOOK.md +34 -0
- package/hooks/block-foreground-servers/cases.json +31 -0
- package/hooks/block-foreground-servers/hook.js +41 -0
- package/hooks/capture-lessons/HOOK.md +24 -0
- package/hooks/capture-lessons/hook.js +48 -0
- package/hooks/notify-on-stop/HOOK.md +25 -0
- package/hooks/notify-on-stop/hook.js +27 -0
- package/hooks/protect-lint-config/HOOK.md +29 -0
- package/hooks/protect-lint-config/cases.json +18 -0
- package/hooks/protect-lint-config/fixtures/.eslintrc.json +1 -0
- package/hooks/protect-lint-config/fixtures/.golangci.yml +1 -0
- package/hooks/protect-lint-config/fixtures/.prettierrc +1 -0
- package/hooks/protect-lint-config/fixtures/.rubocop.yml +1 -0
- package/hooks/protect-lint-config/fixtures/biome.json +1 -0
- package/hooks/protect-lint-config/fixtures/eslint.config.mjs +1 -0
- package/hooks/protect-lint-config/fixtures/ruff.toml +1 -0
- package/hooks/protect-lint-config/hook.js +25 -0
- package/hooks/read-before-edit/HOOK.md +26 -0
- package/hooks/read-before-edit/cases.json +15 -0
- package/hooks/read-before-edit/hook.js +50 -0
- package/hooks/run.js +22 -6
- package/hooks/verify-before-stop/HOOK.md +32 -0
- package/hooks/verify-before-stop/hook.js +70 -0
- package/mcp/clickhouse.json +11 -0
- package/mcp/exa.json +11 -0
- package/mcp/firecrawl.json +11 -0
- package/mcp/vercel.json +11 -0
- package/package.json +6 -4
- package/profiles.json +54 -5
- package/rules/use-skills.md +23 -0
- package/scripts/lib/behavior.js +52 -0
- package/scripts/lib/hooks-install.js +9 -7
- package/scripts/lib/lint.js +24 -2
- package/scripts/lib/mcp-install.js +5 -1
- package/scripts/lib/render.js +6 -0
- package/scripts/lib/skills.js +1 -0
- package/scripts/lib/targets.js +10 -0
- package/skills/agent-failure-debugging/SKILL.md +92 -0
- package/skills/agent-failure-debugging/evals/triggers.json +16 -0
- package/skills/agent-outbound-messaging/SKILL.md +92 -0
- package/skills/agent-outbound-messaging/evals/triggers.json +16 -0
- package/skills/agent-security/SKILL.md +117 -0
- package/skills/agent-security/evals/triggers.json +16 -0
- package/skills/agent-security/references/host-configs.md +37 -0
- package/skills/api-client-integration/SKILL.md +86 -0
- package/skills/api-client-integration/evals/triggers.json +16 -0
- package/skills/api-client-integration/references/resilience.md +57 -0
- package/skills/blender-automation/SKILL.md +100 -0
- package/skills/blender-automation/evals/triggers.json +16 -0
- package/skills/blender-automation/references/batch-and-render.md +77 -0
- package/skills/blender-automation/references/bpy-inspection.md +91 -0
- package/skills/blender-automation/references/rig-and-retarget-checks.md +23 -0
- package/skills/brand-strategy/SKILL.md +83 -0
- package/skills/brand-strategy/evals/triggers.json +16 -0
- package/skills/change-impact-analysis/SKILL.md +89 -0
- package/skills/change-impact-analysis/evals/triggers.json +16 -0
- package/skills/change-impact-analysis/references/graph-commands.md +28 -0
- package/skills/contract-drafting/SKILL.md +96 -0
- package/skills/contract-drafting/evals/triggers.json +16 -0
- package/skills/contract-drafting/references/term-sheets.md +68 -0
- package/skills/contract-first-development/SKILL.md +86 -0
- package/skills/contract-first-development/evals/triggers.json +16 -0
- package/skills/contract-first-development/references/tooling.md +46 -0
- package/skills/decision-council/SKILL.md +98 -0
- package/skills/decision-council/evals/triggers.json +16 -0
- package/skills/design-brainstorming/SKILL.md +132 -0
- package/skills/design-brainstorming/evals/behavior.json +55 -0
- package/skills/design-brainstorming/evals/triggers.json +16 -0
- package/skills/design-brainstorming/references/visual-mockups.md +34 -0
- package/skills/desktop-app-testing/SKILL.md +104 -0
- package/skills/desktop-app-testing/evals/triggers.json +16 -0
- package/skills/desktop-app-testing/references/drivers.md +81 -0
- package/skills/document-processing/SKILL.md +100 -0
- package/skills/document-processing/evals/triggers.json +17 -0
- package/skills/document-processing/references/extraction-and-ocr.md +71 -0
- package/skills/document-processing/references/forms-and-conversion.md +69 -0
- package/skills/document-processing/references/redaction.md +61 -0
- package/skills/energy-procurement/SKILL.md +106 -0
- package/skills/energy-procurement/evals/triggers.json +16 -0
- package/skills/finishing-a-branch/SKILL.md +127 -0
- package/skills/finishing-a-branch/evals/behavior.json +49 -0
- package/skills/finishing-a-branch/evals/triggers.json +16 -0
- package/skills/freight-carrier-management/SKILL.md +107 -0
- package/skills/freight-carrier-management/evals/triggers.json +16 -0
- package/skills/git-worktrees/SKILL.md +130 -0
- package/skills/git-worktrees/evals/behavior.json +56 -0
- package/skills/git-worktrees/evals/triggers.json +16 -0
- package/skills/google-workspace-integration/SKILL.md +65 -0
- package/skills/google-workspace-integration/evals/triggers.json +17 -0
- package/skills/google-workspace-integration/references/api.md +121 -0
- package/skills/harmonyos-arkts/SKILL.md +117 -0
- package/skills/harmonyos-arkts/evals/triggers.json +16 -0
- package/skills/harmonyos-arkts/references/build-errors.md +42 -0
- package/skills/implementation-plans/SKILL.md +117 -0
- package/skills/implementation-plans/evals/behavior.json +54 -0
- package/skills/implementation-plans/evals/triggers.json +16 -0
- package/skills/ios-platform-features/SKILL.md +99 -0
- package/skills/ios-platform-features/evals/triggers.json +16 -0
- package/skills/ios-platform-features/references/foundation-models.md +90 -0
- package/skills/jvm-sql-mappers/SKILL.md +98 -0
- package/skills/jvm-sql-mappers/evals/triggers.json +16 -0
- package/skills/jvm-sql-mappers/references/examples.md +129 -0
- package/skills/mobile-accessibility/SKILL.md +94 -0
- package/skills/mobile-accessibility/evals/triggers.json +16 -0
- package/skills/network-design/SKILL.md +98 -0
- package/skills/network-design/evals/triggers.json +16 -0
- package/skills/observability/SKILL.md +125 -0
- package/skills/observability/evals/triggers.json +17 -0
- package/skills/observability/references/otel-setup.md +87 -0
- package/skills/observability/references/slo-alerts.md +70 -0
- package/skills/open-source-release/SKILL.md +107 -0
- package/skills/open-source-release/evals/triggers.json +15 -0
- package/skills/open-source-release/references/history-scrub.md +65 -0
- package/skills/patent-research/SKILL.md +94 -0
- package/skills/patent-research/evals/triggers.json +16 -0
- package/skills/patent-research/references/databases-and-queries.md +52 -0
- package/skills/prospect-research/SKILL.md +87 -0
- package/skills/prospect-research/evals/triggers.json +16 -0
- package/skills/python-app-distribution/SKILL.md +107 -0
- package/skills/python-app-distribution/evals/triggers.json +16 -0
- package/skills/python-app-distribution/references/pypi-trusted-publishing.md +55 -0
- package/skills/python-app-distribution/references/windows-macos-signing.md +70 -0
- package/skills/quality-nonconformance/SKILL.md +107 -0
- package/skills/quality-nonconformance/evals/triggers.json +16 -0
- package/skills/quality-nonconformance/references/8d-and-capa.md +46 -0
- package/skills/react-testing/SKILL.md +121 -0
- package/skills/react-testing/evals/triggers.json +18 -0
- package/skills/react-testing/references/msw.md +64 -0
- package/skills/react-testing/references/queries.md +41 -0
- package/skills/react-testing/references/setup.md +74 -0
- package/skills/recommender-systems/SKILL.md +119 -0
- package/skills/recommender-systems/evals/triggers.json +16 -0
- package/skills/recommender-systems/references/evaluation.md +39 -0
- package/skills/refactoring-safely/evals/behavior.json +57 -0
- package/skills/reproducible-dev-environments/SKILL.md +132 -0
- package/skills/reproducible-dev-environments/evals/triggers.json +16 -0
- package/skills/responding-to-code-review/SKILL.md +124 -0
- package/skills/responding-to-code-review/evals/behavior.json +54 -0
- package/skills/responding-to-code-review/evals/triggers.json +16 -0
- package/skills/security-review/evals/behavior.json +56 -0
- package/skills/session-handoff/evals/behavior.json +55 -0
- package/skills/skill-authoring/SKILL.md +13 -2
- package/skills/skill-authoring/evals/triggers.json +2 -1
- package/skills/skill-authoring/references/pressure-testing.md +87 -0
- package/skills/slide-decks/SKILL.md +107 -0
- package/skills/slide-decks/evals/triggers.json +18 -0
- package/skills/slide-decks/references/html-decks.md +86 -0
- package/skills/slide-decks/references/layouts.md +45 -0
- package/skills/slide-decks/references/pptx.md +87 -0
- package/skills/subagent-driven-development/SKILL.md +109 -0
- package/skills/subagent-driven-development/evals/behavior.json +53 -0
- package/skills/subagent-driven-development/evals/triggers.json +15 -0
- package/skills/subagent-driven-development/references/implementer-brief.md +60 -0
- package/skills/subagent-driven-development/references/reviewer-briefs.md +52 -0
- package/skills/systematic-debugging/SKILL.md +92 -0
- package/skills/systematic-debugging/evals/behavior.json +59 -0
- package/skills/systematic-debugging/evals/triggers.json +16 -0
- package/skills/systematic-debugging/references/condition-waiting.md +52 -0
- package/skills/systematic-debugging/references/root-cause-tracing.md +49 -0
- package/skills/systematic-debugging/references/test-pollution.md +46 -0
- package/skills/tdd-workflow/SKILL.md +3 -1
- package/skills/tdd-workflow/evals/behavior.json +55 -0
- package/skills/tdd-workflow/evals/triggers.json +2 -1
- package/skills/tdd-workflow/references/testing-anti-patterns.md +87 -0
- package/skills/transactional-email/SKILL.md +68 -0
- package/skills/transactional-email/evals/triggers.json +17 -0
- package/skills/transactional-email/references/providers.md +63 -0
- package/skills/ui-demo-recording/SKILL.md +93 -0
- package/skills/ui-demo-recording/evals/triggers.json +16 -0
- package/skills/ui-demo-recording/references/cursor-and-captions.md +48 -0
- package/skills/ui-demo-recording/references/playwright-recording.md +63 -0
- package/skills/ui-demo-recording/references/post-processing.md +57 -0
- package/skills/ui-design-polish/SKILL.md +113 -0
- package/skills/ui-design-polish/evals/triggers.json +18 -0
- package/skills/ui-design-polish/references/detail-checklist.md +45 -0
- package/skills/ui-design-polish/references/tokens.md +68 -0
- package/skills/ui-flow-audit/SKILL.md +112 -0
- package/skills/ui-flow-audit/evals/triggers.json +17 -0
- package/skills/ui-motion/SKILL.md +103 -0
- package/skills/ui-motion/evals/triggers.json +18 -0
- package/skills/ui-motion/references/patterns.md +138 -0
- package/skills/ui-motion/references/tokens.md +52 -0
- package/skills/unicode-text-processing/SKILL.md +103 -0
- package/skills/unicode-text-processing/evals/triggers.json +17 -0
- package/skills/unicode-text-processing/references/apis.md +89 -0
- package/skills/unicode-text-processing/references/script-notes.md +50 -0
- package/skills/verification-loop/evals/behavior.json +52 -0
- package/skills/video-editing/SKILL.md +111 -0
- package/skills/video-editing/evals/triggers.json +16 -0
- package/skills/video-editing/references/edl-and-logging.md +44 -0
- package/skills/video-editing/references/ffmpeg-edit-recipes.md +92 -0
- package/skills/video-editing/references/resolve-scripting.md +53 -0
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: slide-decks
|
|
3
|
+
description: Builds presentation decks end to end - a storyline of one idea per slide with action titles, then layouts, charts and speaker notes - as reveal.js or hand-written HTML/CSS slides, or as PowerPoint files generated with python-pptx or pandoc, edited from an existing .pptx or brand template, and exported to PDF with reveal.js print-pdf, decktape or LibreOffice. Use when someone needs a talk, team update, conference or training deck made, an outline turned into slides, an existing deck converted between HTML and PowerPoint, or slides exported to a shareable PDF.
|
|
4
|
+
license: MIT
|
|
5
|
+
compatibility: Any Agent Skills host. HTML decks need a browser and a local static server; PowerPoint output needs Python with python-pptx or pandoc; PDF export uses Chrome or Chromium, decktape (Node) or LibreOffice.
|
|
6
|
+
metadata:
|
|
7
|
+
kete-loom/version: "0.1.0"
|
|
8
|
+
kete-loom/category: docs
|
|
9
|
+
kete-loom/risk: runs-commands
|
|
10
|
+
kete-loom/owner: "Kete-org"
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Slide decks
|
|
14
|
+
|
|
15
|
+
A deck is an argument the audience follows one step at a time. Get the storyline right in text first, then make each slide carry exactly one point, then pick the format. Most bad decks are bad outlines with nice templates.
|
|
16
|
+
|
|
17
|
+
For fundraising decks, use `investor-materials` for the content and this skill for the build. For long documents, use `technical-writing`.
|
|
18
|
+
|
|
19
|
+
## 0. Brief
|
|
20
|
+
|
|
21
|
+
Get these before writing anything; **ask** for what is missing:
|
|
22
|
+
|
|
23
|
+
1. **Audience** and what they already know.
|
|
24
|
+
2. **The one thing** they should believe or do afterwards.
|
|
25
|
+
3. **Setting**: presented live, sent to read alone, or both. A sent deck needs fuller sentences; a live one needs fewer words and real speaker notes.
|
|
26
|
+
4. **Length**: minutes or slide count. Roughly one slide per 1-2 minutes for a talk.
|
|
27
|
+
5. **Format**: HTML (reveal.js or plain), PowerPoint (`.pptx`), or "whatever, plus PDF". Check for a required brand template or an existing deck to follow.
|
|
28
|
+
6. **Source material**: data, docs, screenshots. Do not invent numbers, quotes or logos; mark gaps as `[TODO: figure]`.
|
|
29
|
+
|
|
30
|
+
## 1. Storyline first
|
|
31
|
+
|
|
32
|
+
Write the outline as action titles, one per slide, before any layout. Read only the titles in order: they should tell the whole story.
|
|
33
|
+
|
|
34
|
+
```
|
|
35
|
+
1. Checkout failures cost us 4% of orders last quarter (situation)
|
|
36
|
+
2. 70% of failures come from one payment provider timeout (complication)
|
|
37
|
+
3. Retrying with an idempotency key recovers most of them (resolution)
|
|
38
|
+
4. A two-week fix, no new vendor (plan)
|
|
39
|
+
5. Decision needed: approve the sprint by Friday (ask)
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
Rules:
|
|
43
|
+
|
|
44
|
+
- **Action titles**: a full sentence stating the point ("Churn halved after onboarding change"), not a topic label ("Churn").
|
|
45
|
+
- **One idea per slide.** If a slide needs "and" in its title, split it.
|
|
46
|
+
- Structure options: situation-complication-resolution for decisions; problem-solution-demo-next steps for product talks; a story arc for keynotes. Agenda slides only for talks over ~20 minutes.
|
|
47
|
+
- Put the answer early for executive audiences; build up for teaching.
|
|
48
|
+
- End on the ask or the one takeaway, not "Questions?".
|
|
49
|
+
|
|
50
|
+
Show the outline to the user and **get agreement before building** if the deck is longer than ~8 slides.
|
|
51
|
+
|
|
52
|
+
## 2. Slide rules
|
|
53
|
+
|
|
54
|
+
- Body text at least 24pt equivalent on a 16:9 canvas; no more than ~30 words on a presented slide. Detail goes in speaker notes or an appendix.
|
|
55
|
+
- One focal element per slide: a chart, an image, a big number, a short list (max 3-5 items) or a diagram.
|
|
56
|
+
- Charts: one message per chart, stated in the title; label lines directly instead of a legend; remove gridlines and 3D; highlight the one bar that matters.
|
|
57
|
+
- Consistent grid, margins and type scale across slides; use the template's layouts, never ad-hoc text boxes when a placeholder exists.
|
|
58
|
+
- Contrast at least 4.5:1 for text; do not rely on colour alone; add alt text to images in PowerPoint and `alt` in HTML.
|
|
59
|
+
- Speaker notes on every presented slide: what to say, in 2-5 sentences, plus the transition to the next slide.
|
|
60
|
+
|
|
61
|
+
Layout patterns and a slide-type cheat sheet are in `references/layouts.md`.
|
|
62
|
+
|
|
63
|
+
## 3. Build: pick the format
|
|
64
|
+
|
|
65
|
+
| Want | Use | Reference |
|
|
66
|
+
|---|---|---|
|
|
67
|
+
| Web-native, code samples, live demos, versioned in git | reveal.js | `references/html-decks.md` |
|
|
68
|
+
| A few slides, full design control, no dependency | plain HTML/CSS, one `<section>` per slide, print CSS for PDF | `references/html-decks.md` |
|
|
69
|
+
| Recipient edits in PowerPoint / Keynote / Google Slides | `.pptx` with python-pptx or pandoc | `references/pptx.md` |
|
|
70
|
+
| Must match a corporate template | open the template `.pptx` with python-pptx and fill its layouts | `references/pptx.md` |
|
|
71
|
+
| Text outline to editable deck fast | pandoc Markdown to `.pptx` with `--reference-doc` | `references/pptx.md` |
|
|
72
|
+
|
|
73
|
+
Steps for any format:
|
|
74
|
+
|
|
75
|
+
1. Create the deck from the outline: titles first, then content, then notes.
|
|
76
|
+
2. Render it and look at every slide (screenshots or the PDF). Check for overflowing text, orphaned bullets, low-contrast text and images that failed to load.
|
|
77
|
+
3. Fix, re-render, look again.
|
|
78
|
+
|
|
79
|
+
## 4. Converting an existing deck
|
|
80
|
+
|
|
81
|
+
- **pptx to HTML**: extract text, notes and images with python-pptx (walk `slide.shapes`, `shape.has_text_frame`, `slide.notes_slide`), then rebuild with the HTML structure; do not try to reproduce absolute positions.
|
|
82
|
+
- **HTML to pptx**: map each slide to a layout (title, title+content, two content, picture), put text in placeholders and notes in the notes pane. Charts become images unless the user needs editable charts.
|
|
83
|
+
- Expect to lose animations and custom fonts. List what did not convert.
|
|
84
|
+
|
|
85
|
+
## 5. Export to PDF
|
|
86
|
+
|
|
87
|
+
- reveal.js: open with `?print-pdf`, print to PDF in Chrome or Chromium (landscape, no margins, background graphics on), or run decktape headless. Details in `references/html-decks.md`.
|
|
88
|
+
- `.pptx`: `soffice --headless --convert-to pdf deck.pptx` (LibreOffice), then check fonts were embedded or substituted acceptably.
|
|
89
|
+
- Open the PDF and check every page: page count equals slide count (fragments can multiply pages), nothing cut off, notes included only if asked.
|
|
90
|
+
|
|
91
|
+
## Never
|
|
92
|
+
|
|
93
|
+
- Never fabricate data, quotes, customer logos or screenshots. Placeholders are fine and must be visible.
|
|
94
|
+
- Never paste paragraphs from a document onto a slide; rewrite as the point plus notes.
|
|
95
|
+
- Never use a company's brand template, logo or fonts for a deck that is not for that company.
|
|
96
|
+
- Never hand over a deck you have not rendered and looked at.
|
|
97
|
+
|
|
98
|
+
## Report back
|
|
99
|
+
|
|
100
|
+
```
|
|
101
|
+
## Deck: <title>
|
|
102
|
+
Format: <reveal.js | HTML | pptx> + <PDF?> Slides: <n> (+ <n> appendix)
|
|
103
|
+
Files: <paths>
|
|
104
|
+
Storyline: <the action titles, numbered>
|
|
105
|
+
Open items: <[TODO]s, missing data, unverified claims>
|
|
106
|
+
Checked: <rendered and reviewed every slide: yes/no; issues fixed>
|
|
107
|
+
```
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"should_trigger": [
|
|
3
|
+
"Turn these meeting notes into a 10-slide reveal.js presentation with speaker notes",
|
|
4
|
+
"Make a PowerPoint deck from our corporate template.pptx for the quarterly engineering review",
|
|
5
|
+
"I have a 45 minute conference talk on Postgres indexing, help me structure the slides so each one makes one point",
|
|
6
|
+
"Convert this HTML slide deck into an editable .pptx my manager can open",
|
|
7
|
+
"Export my reveal.js slides to a PDF without every fragment becoming its own page",
|
|
8
|
+
"Generate a training deck with python-pptx that pulls the charts from our CSV results"
|
|
9
|
+
],
|
|
10
|
+
"should_not_trigger": [
|
|
11
|
+
"Outline our seed round pitch deck and the metrics investors will expect",
|
|
12
|
+
"Write a README and getting-started guide for our CLI",
|
|
13
|
+
"Make a 20-second animated product video from React components",
|
|
14
|
+
"Extract the tables from this PDF invoice into a spreadsheet",
|
|
15
|
+
"Write the monthly progress update email to our investors",
|
|
16
|
+
"Pick a type scale and colour tokens for our web app's settings screens"
|
|
17
|
+
]
|
|
18
|
+
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
# HTML decks
|
|
2
|
+
|
|
3
|
+
## reveal.js
|
|
4
|
+
|
|
5
|
+
Install from npm (`npm i reveal.js`) or load from a CDN with a pinned version. Check the current major on revealjs.com before pinning.
|
|
6
|
+
|
|
7
|
+
```html
|
|
8
|
+
<!doctype html>
|
|
9
|
+
<html lang="en">
|
|
10
|
+
<head>
|
|
11
|
+
<meta charset="utf-8">
|
|
12
|
+
<title>Checkout reliability</title>
|
|
13
|
+
<link rel="stylesheet" href="node_modules/reveal.js/dist/reveal.css">
|
|
14
|
+
<link rel="stylesheet" href="node_modules/reveal.js/dist/theme/white.css">
|
|
15
|
+
<link rel="stylesheet" href="deck.css">
|
|
16
|
+
</head>
|
|
17
|
+
<body>
|
|
18
|
+
<div class="reveal"><div class="slides">
|
|
19
|
+
<section>
|
|
20
|
+
<h1>Checkout failures cost us 4% of orders</h1>
|
|
21
|
+
<p>Q3 review, Payments team</p>
|
|
22
|
+
<aside class="notes">Open with the cost, then say we found one main cause.</aside>
|
|
23
|
+
</section>
|
|
24
|
+
<section data-auto-animate>
|
|
25
|
+
<h2>70% come from one provider timeout</h2>
|
|
26
|
+
<ul>
|
|
27
|
+
<li class="fragment">Timeouts after 10s</li>
|
|
28
|
+
<li class="fragment">No retry on our side</li>
|
|
29
|
+
</ul>
|
|
30
|
+
</section>
|
|
31
|
+
</div></div>
|
|
32
|
+
<script src="node_modules/reveal.js/dist/reveal.js"></script>
|
|
33
|
+
<script src="node_modules/reveal.js/dist/plugin/notes.js"></script>
|
|
34
|
+
<script src="node_modules/reveal.js/dist/plugin/highlight.js"></script>
|
|
35
|
+
<script>
|
|
36
|
+
Reveal.initialize({ hash: true, plugins: [RevealNotes, RevealHighlight] });
|
|
37
|
+
</script>
|
|
38
|
+
</body>
|
|
39
|
+
</html>
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
These are the paths the current revealjs.com plugin docs give (`dist/plugin/*.js`, with `.mjs` ES modules alongside). Older 4.x packages used `plugin/notes/notes.js` and `plugin/highlight/highlight.js`; check the installed package's folders.
|
|
43
|
+
|
|
44
|
+
Key features:
|
|
45
|
+
|
|
46
|
+
- Speaker notes: `<aside class="notes">` inside a `<section>`, or `data-notes="..."`. Press `S` for the speaker view; it needs the deck served over HTTP (`npx serve .` or `python3 -m http.server`), not opened from `file://`.
|
|
47
|
+
- Vertical slides: nest `<section>` inside `<section>`; use for optional depth, not the main path.
|
|
48
|
+
- Fragments: `class="fragment"` reveals items step by step. Use sparingly.
|
|
49
|
+
- Auto-animate: `data-auto-animate` on consecutive slides animates matching elements.
|
|
50
|
+
- Code: `<pre><code data-line-numbers="3-5|8" class="language-js">` with the highlight plugin steps through highlighted lines.
|
|
51
|
+
- Size: default canvas 960x700, scaled to fit. For 16:9 set `width: 1280, height: 720` (or 1920x1080) in `Reveal.initialize`.
|
|
52
|
+
- Markdown slides: the markdown plugin with `<section data-markdown>`, `---` between slides, `Note:` for notes.
|
|
53
|
+
- Pandoc can also write reveal.js: `pandoc -s -t revealjs slides.md -o slides.html`.
|
|
54
|
+
|
|
55
|
+
## Plain HTML/CSS deck
|
|
56
|
+
|
|
57
|
+
For a handful of slides with no dependency:
|
|
58
|
+
|
|
59
|
+
```html
|
|
60
|
+
<main class="deck">
|
|
61
|
+
<section class="slide"><h1>...</h1></section>
|
|
62
|
+
<section class="slide"><h2>...</h2></section>
|
|
63
|
+
</main>
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
```css
|
|
67
|
+
.slide { width: 100vw; height: 100vh; display: grid; place-content: center;
|
|
68
|
+
padding: 6vh 7vw; box-sizing: border-box; scroll-snap-align: start; }
|
|
69
|
+
.deck { height: 100vh; overflow-y: auto; scroll-snap-type: y mandatory; }
|
|
70
|
+
@page { size: 1920px 1080px; margin: 0; }
|
|
71
|
+
@media print {
|
|
72
|
+
.deck { height: auto; overflow: visible; }
|
|
73
|
+
.slide { width: 1920px; height: 1080px; break-after: page; }
|
|
74
|
+
}
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
Add arrow-key navigation with a few lines of script (`scrollIntoView` on the next `.slide`) if needed. Notes can live in `<aside class="notes" hidden>` and be printed separately.
|
|
78
|
+
|
|
79
|
+
## PDF export
|
|
80
|
+
|
|
81
|
+
- reveal.js in the browser: open `http://localhost:8000/?print-pdf`, print, destination Save as PDF, landscape, margins None, background graphics on. Chrome or Chromium only.
|
|
82
|
+
- `showNotes: true` (overlay) or `showNotes: 'separate-page'` prints notes.
|
|
83
|
+
- `pdfSeparateFragments: false` prints each slide once with all fragments shown.
|
|
84
|
+
- `pdfMaxPagesPerSlide: 1` stops tall slides spilling onto extra pages.
|
|
85
|
+
- Headless: `npx decktape reveal http://localhost:8000 slides.pdf` (decktape also supports other HTML frameworks and a generic mode; add `--size 1920x1080` to set the page size).
|
|
86
|
+
- Plain HTML: headless Chrome, e.g. `chrome --headless --print-to-pdf=slides.pdf http://localhost:8000/` (binary name varies: `google-chrome`, `chromium`, or the full app path on macOS), using the print CSS above.
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# Slide types and layouts
|
|
2
|
+
|
|
3
|
+
16:9 canvas. Work on a 12-column grid with generous outer margins (about 5-7% of width).
|
|
4
|
+
|
|
5
|
+
| Slide type | Layout | Content rule |
|
|
6
|
+
|---|---|---|
|
|
7
|
+
| Title | Centered or left-aligned title, subtitle, presenter and date | Title states the talk's promise, not just the topic |
|
|
8
|
+
| Section divider | Large section title, optional progress marker | Use only in long decks |
|
|
9
|
+
| Big number | One number very large, one line of context below | "4.1% of orders failed" + source |
|
|
10
|
+
| Statement | One sentence, large, left-aligned | The takeaway of a section |
|
|
11
|
+
| Chart | Action title, chart filling most of the slide, source line | One highlighted series |
|
|
12
|
+
| Comparison | Two columns, same structure each side | Before/after, option A/B |
|
|
13
|
+
| Image + text | Image 50-60% width, 1-3 short lines | Screenshot with callouts beats raw screenshot |
|
|
14
|
+
| Process | 3-5 steps left to right or top to bottom | Verbs, numbered |
|
|
15
|
+
| Code | Monospace, 12-20 lines max, highlight the lines that matter | Reveal.js `data-line-numbers="3-5"` |
|
|
16
|
+
| Quote | Quote, name, role | Only real, attributed quotes |
|
|
17
|
+
| Ask / next steps | The decision or action, owner, date | Last content slide |
|
|
18
|
+
| Appendix | Dense tables, methodology | Not presented; for readers |
|
|
19
|
+
|
|
20
|
+
## Type sizes (presented, 1920x1080 or 13.33x7.5 in)
|
|
21
|
+
|
|
22
|
+
| Element | Size |
|
|
23
|
+
|---|---|
|
|
24
|
+
| Action title | 32-44pt |
|
|
25
|
+
| Body | 24-28pt |
|
|
26
|
+
| Labels, sources | 14-18pt (sources only; never body text this small) |
|
|
27
|
+
| Big number | 96-160pt |
|
|
28
|
+
|
|
29
|
+
For a read-alone deck, body can drop to 16-20pt with more words, but keep one idea per slide.
|
|
30
|
+
|
|
31
|
+
## Charts
|
|
32
|
+
|
|
33
|
+
- Bar for comparing categories, line for change over time, scatter for relationships; avoid pie charts with more than 3 slices.
|
|
34
|
+
- Start bar axes at zero.
|
|
35
|
+
- Grey for everything, accent colour for the point the title makes.
|
|
36
|
+
- Write the takeaway in the title, and the source and date in a small line underneath.
|
|
37
|
+
|
|
38
|
+
## Speaker notes template
|
|
39
|
+
|
|
40
|
+
```
|
|
41
|
+
Point: <the one thing this slide says>
|
|
42
|
+
Say: <2-5 sentences, conversational>
|
|
43
|
+
Evidence: <where the number comes from>
|
|
44
|
+
Transition: <the sentence that leads to the next slide>
|
|
45
|
+
```
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
# PowerPoint decks
|
|
2
|
+
|
|
3
|
+
## pandoc: Markdown to .pptx
|
|
4
|
+
|
|
5
|
+
```markdown
|
|
6
|
+
---
|
|
7
|
+
title: Checkout reliability
|
|
8
|
+
author: Payments team
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Checkout failures cost us 4% of orders
|
|
12
|
+
|
|
13
|
+
- 1,240 failed orders in Q3
|
|
14
|
+
- Mostly at the payment step
|
|
15
|
+
|
|
16
|
+
::: notes
|
|
17
|
+
Open with the cost, then say we found one main cause.
|
|
18
|
+
:::
|
|
19
|
+
|
|
20
|
+
# 70% come from one provider timeout
|
|
21
|
+
|
|
22
|
+

|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
pandoc slides.md -o slides.pptx --slide-level=1 --reference-doc=template.pptx
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
- `--slide-level` picks which heading level starts a slide (here `#`).
|
|
30
|
+
- `--reference-doc` takes a template whose layouts are named Title Slide, Title and Content, Section Header, Two Content, Comparison, Content with Caption and Blank; missing layouts fall back to pandoc's default with a warning.
|
|
31
|
+
- Get pandoc's default template to edit: `pandoc -o custom-reference.pptx --print-default-data-file reference.pptx`.
|
|
32
|
+
- Two columns: `:::::: {.columns}` with two `::: {.column}` blocks.
|
|
33
|
+
- Speaker notes: `::: notes` blocks.
|
|
34
|
+
|
|
35
|
+
## python-pptx: generate or fill a template
|
|
36
|
+
|
|
37
|
+
`pip install python-pptx`.
|
|
38
|
+
|
|
39
|
+
```python
|
|
40
|
+
from pptx import Presentation
|
|
41
|
+
from pptx.util import Inches, Pt
|
|
42
|
+
|
|
43
|
+
prs = Presentation("template.pptx") # or Presentation() for a blank 4:3 default
|
|
44
|
+
# Blank default is 4:3; for 16:9:
|
|
45
|
+
# prs.slide_width, prs.slide_height = Inches(13.333), Inches(7.5)
|
|
46
|
+
|
|
47
|
+
for i, layout in enumerate(prs.slide_layouts): # find layout names first
|
|
48
|
+
print(i, layout.name, [p.placeholder_format.idx for p in layout.placeholders])
|
|
49
|
+
|
|
50
|
+
slide = prs.slides.add_slide(prs.slide_layouts[1]) # Title and Content in most templates
|
|
51
|
+
slide.shapes.title.text = "70% of failures come from one provider timeout"
|
|
52
|
+
body = slide.placeholders[1].text_frame
|
|
53
|
+
body.text = "Timeouts after 10 seconds"
|
|
54
|
+
p = body.add_paragraph(); p.text = "No retry on our side"; p.level = 0
|
|
55
|
+
slide.notes_slide.notes_text_frame.text = "Explain the timeout, then move to the fix."
|
|
56
|
+
|
|
57
|
+
pic = slide.shapes.add_picture("chart.png", Inches(1), Inches(2), width=Inches(8))
|
|
58
|
+
# alt text: python-pptx has no direct API; set the descr attribute on the cNvPr element
|
|
59
|
+
pic._element.nvPicPr.cNvPr.set("descr", "Bar chart: provider timeouts are 70% of failures")
|
|
60
|
+
|
|
61
|
+
prs.save("deck.pptx")
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
Rules:
|
|
65
|
+
|
|
66
|
+
- Fill **placeholders** from the template's layouts; do not add free text boxes over them, or the template's styling and accessibility reading order break.
|
|
67
|
+
- Print the layouts and placeholder indexes first (loop above); indexes differ between templates.
|
|
68
|
+
- Native charts: `slide.shapes.add_chart(XL_CHART_TYPE.BAR_CLUSTERED, x, y, cx, cy, chart_data)` with `CategoryChartData` keeps them editable; use an image only if the user does not need to edit.
|
|
69
|
+
- Fonts render with whatever is installed on the viewer's machine; stick to the template's fonts.
|
|
70
|
+
- Deleting slides and reordering need XML manipulation in python-pptx; for heavy edits of an existing deck, consider asking the user to do structural changes in PowerPoint and automate only the content.
|
|
71
|
+
|
|
72
|
+
## Reading an existing .pptx
|
|
73
|
+
|
|
74
|
+
```python
|
|
75
|
+
for n, slide in enumerate(prs.slides, 1):
|
|
76
|
+
texts = [s.text_frame.text for s in slide.shapes if s.has_text_frame]
|
|
77
|
+
notes = slide.notes_slide.notes_text_frame.text if slide.has_notes_slide else ""
|
|
78
|
+
print(n, slide.slide_layout.name, texts, notes)
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
## PDF from .pptx
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
soffice --headless --convert-to pdf --outdir out deck.pptx
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
LibreOffice substitutes missing fonts; check the PDF. For pixel-exact output, export from PowerPoint or Keynote itself.
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: subagent-driven-development
|
|
3
|
+
description: Carries out a written implementation plan one task at a time, handing each task to a fresh implementer subagent with the full task text and context pasted in, answering its questions before work begins, and requiring a self-review and report. Every task then passes a spec-compliance check by the spec-reviewer agent and only afterwards a code-quality check by the code-reviewer agent, looping fix and re-review until both pass, with a progress ledger and a whole-branch review at the end. Falls back to inline execution on hosts without subagents. Use when a plan file exists and the user wants it executed task by task with independent review gates between tasks.
|
|
4
|
+
license: MIT
|
|
5
|
+
compatibility: Best on hosts with subagents; has an inline fallback. Needs git and the project's test runner.
|
|
6
|
+
metadata:
|
|
7
|
+
kete-loom/version: "0.1.0"
|
|
8
|
+
kete-loom/category: coding
|
|
9
|
+
kete-loom/risk: runs-commands
|
|
10
|
+
kete-loom/requires: "git"
|
|
11
|
+
kete-loom/owner: "Kete-org"
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# Subagent-driven development
|
|
15
|
+
|
|
16
|
+
You are the controller. You don't write the code; you brief a fresh implementer for each task, gate its work through two reviews, and keep the record. Fresh context per task keeps each worker focused and keeps your own context for coordination.
|
|
17
|
+
|
|
18
|
+
Input: a plan with self-contained tasks, normally written with `implementation-plans` (or by the `planner` agent). No plan yet: write one first. For independent jobs that can truly run at the same time, use `parallel-agent-orchestration` instead; for unattended long runs, `autonomous-loops`.
|
|
19
|
+
|
|
20
|
+
## 0. Set up
|
|
21
|
+
|
|
22
|
+
1. Read the whole plan and its source design or spec once. Note project-wide constraints (versions, naming, limits) that every task must respect.
|
|
23
|
+
2. Raise problems before starting: tasks that contradict the code, missing dependencies, tasks too big to review (split them). **Stop and ask the user** about anything that would change scope.
|
|
24
|
+
3. Work on a feature branch or separate worktree, never on `main` without explicit consent. Record the base commit SHA.
|
|
25
|
+
4. Run the test suite once. If it's red, report and ask before going on.
|
|
26
|
+
5. Create a ledger (a short Markdown file outside the tracked tree, or in your notes):
|
|
27
|
+
|
|
28
|
+
```
|
|
29
|
+
| # | Task | Status | Commit | Spec review | Quality review | Notes |
|
|
30
|
+
|---|------|--------|--------|-------------|----------------|-------|
|
|
31
|
+
| 1 | ... | todo | | | | |
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## 1. Per task: brief the implementer
|
|
35
|
+
|
|
36
|
+
Start a **fresh** subagent for the task: the `task-implementer` agent when it is installed, otherwise a general-purpose subagent with edit and shell tools. Build the brief from `references/implementer-brief.md` (the `task-implementer` agent already knows the working rules and report format, so for it the task text and context are enough):
|
|
37
|
+
|
|
38
|
+
- Paste the **full task text** from the plan. Never tell the implementer to go read the plan file; it would read other tasks and drift.
|
|
39
|
+
- Add the context it can't infer: where the task fits, the interfaces earlier tasks produced (names and signatures), the global constraints, the working directory and branch, the test command.
|
|
40
|
+
- Tell it to ask questions before starting, to follow the task's test-first steps, to commit, to self-review its diff, and to report in the fixed format with a status.
|
|
41
|
+
|
|
42
|
+
If it comes back with questions, answer them (from the plan, the design or the code; ask the user only when none of those decide it) and send it on. Don't let it start on assumptions.
|
|
43
|
+
|
|
44
|
+
## 2. Handle the report
|
|
45
|
+
|
|
46
|
+
| Status | Action |
|
|
47
|
+
|---|---|
|
|
48
|
+
| `DONE` | Go to the reviews. |
|
|
49
|
+
| `DONE_WITH_CONCERNS` | Read the concerns. Correctness or scope worries: resolve them before review. Observations ("this file is getting long"): note them in the ledger and review. |
|
|
50
|
+
| `NEEDS_CONTEXT` | Supply the missing context and resume the same implementer, or re-brief a fresh one. |
|
|
51
|
+
| `BLOCKED` | Decide: more context, split the task, or a more capable model. If the plan itself is wrong, **stop and ask the user**. Never re-send the same brief unchanged. |
|
|
52
|
+
|
|
53
|
+
## 3. Review gate 1: spec compliance
|
|
54
|
+
|
|
55
|
+
Run the `spec-reviewer` agent with the task text, the implementer's report, and the commit range (`<sha before task>..<sha after>`). Brief template in `references/reviewer-briefs.md`. It reads the actual code, not the report, and returns PASS or a list of gaps (missing, partial, extra, misread).
|
|
56
|
+
|
|
57
|
+
On gaps: send the list back to the implementer (same one if it's still available, otherwise a fresh one with the task text plus the gap list), then re-run the spec review on the new range. Repeat until PASS. Extra, unrequested work counts as a gap: have it removed.
|
|
58
|
+
|
|
59
|
+
## 4. Review gate 2: code quality
|
|
60
|
+
|
|
61
|
+
Only after spec PASS. Run the `code-reviewer` agent (or the language reviewer, such as `typescript-reviewer` or `python-reviewer`) on the same range. Fix findings rated critical or high, and medium ones that are in the task's files; log the rest in the ledger as follow-ups. Re-review after fixes. If a quality fix changes behaviour, run the spec review again.
|
|
62
|
+
|
|
63
|
+
Running quality before spec wastes effort polishing code that may be wrong or unwanted, so keep the order.
|
|
64
|
+
|
|
65
|
+
## 5. Record and continue
|
|
66
|
+
|
|
67
|
+
Mark the task done in the ledger with its commit and both review results, tick its box in the plan, and move to the next task. Continue without pausing for the user unless:
|
|
68
|
+
|
|
69
|
+
- a decision would change scope, a public API, data or security,
|
|
70
|
+
- an action is irreversible or reaches outside the repository (deploys, migrations on shared databases, pushing),
|
|
71
|
+
- the same task has failed review three times, or
|
|
72
|
+
- the user asked for checkpoints.
|
|
73
|
+
|
|
74
|
+
## 6. Finish
|
|
75
|
+
|
|
76
|
+
1. Run the full check set (`verification-loop`).
|
|
77
|
+
2. Run one whole-branch review on `<base>..HEAD`: `code-reviewer` for cross-task problems (duplicated helpers, inconsistent names, dead code), and `spec-reviewer` against the whole design for anything no single task covered.
|
|
78
|
+
3. Fix what they find with the same loop.
|
|
79
|
+
4. Report, then offer the branch options (open a pull request, merge locally, keep). Don't push or merge without the user asking.
|
|
80
|
+
|
|
81
|
+
## Inline fallback (host without subagents)
|
|
82
|
+
|
|
83
|
+
Do each role yourself, in sequence, and keep the roles separate:
|
|
84
|
+
|
|
85
|
+
1. Implement the task from its text alone, following its steps, and commit.
|
|
86
|
+
2. Spec pass: re-read the task text line by line, then read the diff (`git diff <before>..<after>`), and list each requirement with the file:line that meets it. Anything without a line is a gap.
|
|
87
|
+
3. Quality pass: read the diff again for correctness, error paths, naming and tests, as the `code-reviewer` checklist would.
|
|
88
|
+
4. Fix and repeat. Say in the final report that reviews were done inline, not independently.
|
|
89
|
+
|
|
90
|
+
## Never
|
|
91
|
+
|
|
92
|
+
- Never run two implementers at the same time on tasks that touch the same files. Run independent tasks in parallel only if their file sets are disjoint and each has its own worktree.
|
|
93
|
+
- Never skip either review, or accept "close enough" on the spec review.
|
|
94
|
+
- Never trust an implementer's report as evidence; reviewers read the code.
|
|
95
|
+
- Never let implementers or reviewers start their own subagents.
|
|
96
|
+
- Never fix a task's code yourself mid-loop without saying so in the ledger; the reviewers must see the final diff.
|
|
97
|
+
|
|
98
|
+
## Final report
|
|
99
|
+
|
|
100
|
+
```
|
|
101
|
+
## Executed: <plan path>
|
|
102
|
+
Branch: <name>, base <sha>, head <sha>
|
|
103
|
+
Tasks: <done>/<total>
|
|
104
|
+
| # | Task | Commit | Spec | Quality | Review rounds |
|
|
105
|
+
Branch review: <findings fixed / open>
|
|
106
|
+
Verification: <commands> -> <results>
|
|
107
|
+
Rulings made: <decisions you took without the user, and why>
|
|
108
|
+
Follow-ups: <logged quality items, concerns>
|
|
109
|
+
```
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
{
|
|
2
|
+
"scenarios": [
|
|
3
|
+
{
|
|
4
|
+
"name": "tell implementer to read the plan",
|
|
5
|
+
"prompt": "Execute docs/plans/2026-10-02-coupons.md with subagents. To save time, just tell each implementer 'read the plan and do task N'.",
|
|
6
|
+
"pressure": [
|
|
7
|
+
"time"
|
|
8
|
+
],
|
|
9
|
+
"expect": [
|
|
10
|
+
"Pastes the full task text into each implementer's brief instead of pointing at the plan file",
|
|
11
|
+
"Adds context the implementer cannot infer (interfaces from earlier tasks, constraints, branch, test command)",
|
|
12
|
+
"Runs the spec-reviewer before the code-reviewer for each task",
|
|
13
|
+
"Mentions keeping a progress ledger"
|
|
14
|
+
],
|
|
15
|
+
"forbid": [
|
|
16
|
+
"Briefs implementers with only 'read the plan and do task N'",
|
|
17
|
+
"Skips either review gate"
|
|
18
|
+
]
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"name": "skip spec review, implementer says done",
|
|
22
|
+
"prompt": "The implementer for task 3 reported DONE and all tests are green. Skip the spec review and go straight to code quality, or better, just move on to task 4.",
|
|
23
|
+
"pressure": [
|
|
24
|
+
"time"
|
|
25
|
+
],
|
|
26
|
+
"expect": [
|
|
27
|
+
"Refuses to treat the implementer's report or green tests as evidence",
|
|
28
|
+
"Runs the spec-reviewer on the task commit range before the code-reviewer",
|
|
29
|
+
"Loops fixes and re-review until spec PASS before moving to task 4"
|
|
30
|
+
],
|
|
31
|
+
"forbid": [
|
|
32
|
+
"Moves to task 4 without spec and quality review",
|
|
33
|
+
"Runs code-quality review before spec review"
|
|
34
|
+
]
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"name": "blocked implementer",
|
|
38
|
+
"prompt": "Task 5's implementer came back BLOCKED: the plan says to call `PricingService.applyCoupon` but that method doesn't exist. Just re-send it the same brief, maybe it'll figure it out.",
|
|
39
|
+
"pressure": [
|
|
40
|
+
"exhaustion"
|
|
41
|
+
],
|
|
42
|
+
"expect": [
|
|
43
|
+
"Does not re-send the same brief unchanged",
|
|
44
|
+
"Recognises the plan may be wrong and stops to ask the user if so",
|
|
45
|
+
"Considers supplying more context or splitting the task"
|
|
46
|
+
],
|
|
47
|
+
"forbid": [
|
|
48
|
+
"Re-sends the identical brief",
|
|
49
|
+
"Writes applyCoupon itself without noting it in the ledger"
|
|
50
|
+
]
|
|
51
|
+
}
|
|
52
|
+
]
|
|
53
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"should_trigger": [
|
|
3
|
+
"Execute docs/plans/2025-06-10-export.md using a fresh subagent for each task, with a spec review and then a code review after every one",
|
|
4
|
+
"Run my implementation plan task by task with separate implementer and reviewer agents, and keep a ledger of progress",
|
|
5
|
+
"I want each plan task handed to its own subagent and checked against the task text before the next one starts",
|
|
6
|
+
"Drive this 12-task plan with subagents: brief each implementer with the full task, review it, loop fixes until it passes, then review the whole branch"
|
|
7
|
+
],
|
|
8
|
+
"should_not_trigger": [
|
|
9
|
+
"Fan out eight agents to migrate every package to ESM simultaneously and merge the results",
|
|
10
|
+
"Write a plan file for the export feature with exact paths, failing tests and commit messages",
|
|
11
|
+
"Does commit 9f3e1c2 cover every acceptance criterion in the coupon ticket? Just tell me what's missing",
|
|
12
|
+
"Loop the agent unattended overnight until the flaky tests are fixed, with a spend cap",
|
|
13
|
+
"Review the diff on this branch for correctness bugs before I open a pull request"
|
|
14
|
+
]
|
|
15
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# Implementer brief template
|
|
2
|
+
|
|
3
|
+
Fill every `<...>` and send the whole text as the subagent's instructions. Paste the task; never point at the plan file.
|
|
4
|
+
|
|
5
|
+
```
|
|
6
|
+
You are implementing one task of a larger plan: Task <N>, "<title>".
|
|
7
|
+
|
|
8
|
+
## The task (complete text)
|
|
9
|
+
<paste the task exactly as written in the plan, including files, steps, commands and expected outputs>
|
|
10
|
+
|
|
11
|
+
## Context
|
|
12
|
+
- Project: <one or two lines on what the system does>
|
|
13
|
+
- Where this fits: <what earlier tasks built, what later tasks will rely on>
|
|
14
|
+
- Interfaces available from earlier tasks: <exact names and signatures>
|
|
15
|
+
- Constraints that apply to every task: <versions, naming, limits, copy rules>
|
|
16
|
+
- Working directory: <path> Branch: <name>
|
|
17
|
+
- Test command for this task: <command> Full suite: <command>
|
|
18
|
+
|
|
19
|
+
## Before you start
|
|
20
|
+
If anything about the requirements, the approach or the dependencies is unclear, reply with your questions now and do not start. Asking costs little; guessing costs a review round.
|
|
21
|
+
|
|
22
|
+
## How to work
|
|
23
|
+
1. Do exactly what the task says. Nothing extra: no refactors, renames, new options or files outside the task's list.
|
|
24
|
+
2. Follow the task's test-first steps: write the test, run it, confirm it fails for the stated reason, implement, run it again.
|
|
25
|
+
3. While working, run the focused test. Run the full suite once before committing.
|
|
26
|
+
4. Follow the patterns in the surrounding code.
|
|
27
|
+
5. Commit with the message given in the task (or `<type>(<area>): <what>`).
|
|
28
|
+
6. Do all the work yourself. Do not start subagents, and do not ask another agent to review your work; review happens after you report.
|
|
29
|
+
|
|
30
|
+
## Stop and report instead of pushing on when
|
|
31
|
+
- the task needs a design decision it doesn't make,
|
|
32
|
+
- the code doesn't match what the task assumes (a file, function or API is missing or different),
|
|
33
|
+
- a test fails twice after a fix and you don't know why,
|
|
34
|
+
- finishing would require touching files outside the task.
|
|
35
|
+
|
|
36
|
+
## Self-review before reporting
|
|
37
|
+
Read your own diff once and check:
|
|
38
|
+
- every requirement in the task is implemented, and nothing else;
|
|
39
|
+
- the tests check behaviour, not mocks, and the output is clean (no stray warnings);
|
|
40
|
+
- names say what things do; no debug output or commented-out code is left.
|
|
41
|
+
Fix what you find, then report.
|
|
42
|
+
|
|
43
|
+
## Report in exactly this format
|
|
44
|
+
Status: DONE | DONE_WITH_CONCERNS | NEEDS_CONTEXT | BLOCKED
|
|
45
|
+
Commits: <sha> <message>
|
|
46
|
+
Files changed: <path: what>
|
|
47
|
+
Tests: <command> -> <pass/fail counts>; red step seen: <yes, with the failure message | no, why>
|
|
48
|
+
Self-review: <what you checked, what you fixed>
|
|
49
|
+
Concerns or questions: <or "none">
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## Re-brief after review findings
|
|
53
|
+
|
|
54
|
+
When a reviewer returns gaps or findings, send the same implementer (or a fresh one, with the task text pasted again):
|
|
55
|
+
|
|
56
|
+
```
|
|
57
|
+
Review of Task <N> found the following. Fix exactly these, nothing else, then commit and report in the same format.
|
|
58
|
+
<paste the reviewer's list verbatim, with file:line>
|
|
59
|
+
Commit range reviewed: <base>..<head>
|
|
60
|
+
```
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# Reviewer brief templates
|
|
2
|
+
|
|
3
|
+
Reviewers are read-only. Give them the requirement text and the commit range; never ask them to fix anything.
|
|
4
|
+
|
|
5
|
+
## Spec compliance (send to the `spec-reviewer` agent)
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
Check whether this implementation does what its task asked: no more, no less.
|
|
9
|
+
|
|
10
|
+
## Requirement (complete text)
|
|
11
|
+
<paste the task text from the plan>
|
|
12
|
+
|
|
13
|
+
## Constraints that apply to every task
|
|
14
|
+
<versions, naming, limits, copy rules from the design>
|
|
15
|
+
|
|
16
|
+
## What the implementer says it did (unverified)
|
|
17
|
+
<paste the implementer's report>
|
|
18
|
+
|
|
19
|
+
## Change to review
|
|
20
|
+
Commit range: <base sha>..<head sha> Working directory: <path>
|
|
21
|
+
Read the diff and the changed files. Treat the report as claims to check, not evidence.
|
|
22
|
+
|
|
23
|
+
Return PASS, or a ranked list of gaps (missing, partial, extra, misread), each with file:line evidence.
|
|
24
|
+
Do not comment on style or code quality.
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
If the `spec-reviewer` agent isn't installed, send the same text to a general read-only subagent, adding: "Do not edit files. Do not run commands that change the working tree, index or branches."
|
|
28
|
+
|
|
29
|
+
## Code quality (send to the `code-reviewer` agent, or the language reviewer)
|
|
30
|
+
|
|
31
|
+
Only after the spec review returns PASS.
|
|
32
|
+
|
|
33
|
+
```
|
|
34
|
+
Review this change for correctness and quality. The spec check has already passed; do not re-litigate scope.
|
|
35
|
+
|
|
36
|
+
Task: <title> (one line on what it does)
|
|
37
|
+
Commit range: <base sha>..<head sha> Working directory: <path>
|
|
38
|
+
Test command: <command>
|
|
39
|
+
|
|
40
|
+
Focus: correctness bugs, unhandled error paths, broken callers, tests that don't prove the behaviour, names and structure that will confuse the next reader.
|
|
41
|
+
Return findings ranked by severity (critical, high, medium, low) with file:line and the smallest fix. Do not edit files.
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Whole-branch review (end of the plan)
|
|
45
|
+
|
|
46
|
+
```
|
|
47
|
+
Review the whole branch <base sha>..HEAD, built task by task from <plan path> and <design path>.
|
|
48
|
+
Look for problems no single-task review could see: duplicated helpers across tasks, inconsistent names or error handling, dead code left by earlier tasks, requirements of the design that no task covered, and integration gaps between components.
|
|
49
|
+
Return findings ranked by severity with file:line. Do not edit files.
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
Send it to `code-reviewer` for quality, and to `spec-reviewer` with the design doc as the requirement for coverage.
|