Skip to content

Commit 7a60cf7

Browse files
committed
feat: add 7 production skills from Antony Evans EA system
- marketing/analyzing-dtc-stores — investor-grade DTC brand teardown - marketing/audit-brand — brand positioning + voice audit - marketing/marketing-plan — full 12-phase GTM plan - operations/auto-research — autonomous skill optimization loop - operations/stress-test — three-phase strategic decision analysis - legal/compliance-check — US regulatory compliance assessment - design/marp-slides — MARP presentation deck generator All skills sanitised: personal names/paths removed, project-specific file references generalised. Includes reference docs, scripts, evals.
1 parent 2895526 commit 7a60cf7

76 files changed

Lines changed: 9550 additions & 0 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

design/marp-slides/SKILL.md

Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,120 @@
1+
---
2+
name: marp-slides
3+
description: Creates MARP presentation decks (.md files rendered to PDF/HTML/PPTX via marp CLI) with custom CSS themes, SVG inline charts, dashboard components, and speaker notes. Use when asked to create slides, build a deck, make a presentation, generate MARP output, design a theme, edit existing slides, or convert content into a slide format. Also handles read/summarize requests on existing MARP files. Do NOT use for standalone image generation, static infographics, or PowerPoint requests with no MARP involvement.
4+
version: 3.0
5+
updated: 2026-04-11
6+
---
7+
8+
# MARP Slides
9+
10+
## Startup
11+
1. Read `references/learnings.md` — summarize the 3 most relevant bullets for this task
12+
2. Detect mode from the request (see Mode Selector)
13+
14+
## Mode Selector
15+
16+
| Request signals | Mode |
17+
|---|---|
18+
| "create", "build", "make slides", "new deck", "presentation" | **A: Create** |
19+
| "edit", "update", "change slide N", "revise", "fix" | **B: Edit** |
20+
| "theme only", "CSS only", "just the styles", "color palette" | **C: Theme** |
21+
| "convert from", "turn this into slides", "import", "use this outline" | **D: Convert** |
22+
| "summarize this deck", "what does this cover", "read this marp" | **E: Read** |
23+
24+
---
25+
26+
## Mode A: Create
27+
28+
### A1. Intake (ask all at once in a single message)
29+
Present these 4 questions before generating anything:
30+
1. **Topic + purpose** — what is the deck about, and who is the audience?
31+
2. **Slide count** — how many slides? (if unsure, apply word-count heuristic from `references/quality-rules.md`)
32+
3. **Theme** — dark (default) or light? Describe a vibe or brand if relevant.
33+
4. **Brand context** — use existing brand colors/logo? (if yes, read your brand guidelines file)
34+
35+
Wait for reply before continuing.
36+
37+
**Why:** Generating before intent is locked is the #1 source of wasted cycles in deck authoring. The 4-question intake costs one round-trip and saves 3–5 regeneration loops.
38+
39+
### A2. Theme + outline
40+
1. Select theme using signal-to-theme mapping table in `references/themes.md`
41+
2. Draft a slide-by-slide outline: slide title, one key idea, layout type, visual element planned
42+
3. Present **3 layout direction options** (e.g. minimal / data-heavy / editorial) — not full decks, just 3-slide skeleton previews as markdown
43+
4. Wait for user to approve direction or request changes before generating the full deck
44+
45+
### A3. Generate
46+
1. Read `references/components.md` for SVG chart and component patterns
47+
2. Read `references/layout-patterns.md` for rotation rules and composition guidelines
48+
3. Read 2–3 examples from `examples/` that most closely match the approved style
49+
4. Generate the full `.md` MARP file
50+
51+
**Hard rules during generation (enforce silently — do not annotate violations):**
52+
- Use `-` for list items, never `*` (asterisks trigger animation mode in Marp live preview)
53+
- Rotate layout type every 2–3 slides — same template 3x in a row = quality failure
54+
- Titles ≤35 characters; bullets ≤6 per slide; one key idea per slide
55+
- Put context and detail in speaker notes (`<!-- note: ... -->`), not on slides
56+
- Never add decorative accent lines directly under slide titles (telltale AI pattern)
57+
- SVG backgrounds: always `contain`, never `cover` (cover crops charts at edges)
58+
59+
### A4. QA self-review
60+
1. Load `references/quality-rules.md` — run SlideGauge checklist against the generated deck
61+
2. Fix any slide that fails silently
62+
3. Report only if a slide required significant structural redesign
63+
64+
### A5. Output + export
65+
1. Save to `presentations/[slug].md` (or user-specified path)
66+
2. Verify `.marprc.yml` exists at the project root — create from template in `references/cli-guide.md` if missing
67+
3. Show the relevant export commands from `references/cli-guide.md`
68+
69+
---
70+
71+
## Mode B: Edit
72+
73+
1. Read the existing `.md` file — parse slide boundaries (`---`)
74+
2. Identify the target slide(s) from the request
75+
3. Apply edits; re-check modified slides against `references/quality-rules.md`
76+
4. Confirm layout rotation rule is not broken across surrounding slides
77+
78+
---
79+
80+
## Mode C: Theme
81+
82+
1. Ask: brand colors? target mood? dark or light base?
83+
2. Build CSS using 60-30-10 color rule and WCAG AA contrast — see `references/themes.md`
84+
3. Present **3 palette directions** before committing
85+
4. Save theme CSS with `/* @theme name */` header comment (required for CLI recognition)
86+
87+
---
88+
89+
## Mode D: Convert
90+
91+
1. Parse input format (plain text, outline, bullet list, document)
92+
2. Determine slide boundaries by topic/section shift, not by line breaks
93+
3. Generate MARP `.md` applying Mode A generation rules
94+
4. Run A4 QA self-review
95+
96+
---
97+
98+
## Mode E: Read
99+
100+
1. Load the `.md` file
101+
2. Parse slides, speaker notes, and frontmatter
102+
3. Return: slide count, theme used, key idea per slide, layout types, SlideGauge quality flags
103+
104+
---
105+
106+
## Closing Feedback Gate
107+
108+
After final output, ask once: "Did this produce what you needed? Any corrections or preferences I should remember?"
109+
110+
Route the response:
111+
| User says | Destination |
112+
|---|---|
113+
| Behavioral ("don't do X", "I prefer Y") | Append to `references/learnings.md` |
114+
| Factual exception ("the flag is actually Z") | Append to `references/edge-cases.md` |
115+
| "Never do X again" | Add rule to this SKILL.md |
116+
| Explicit approval / "this was perfect" | Save output to `examples/approved/` |
117+
| No response / "looks good" | Do nothing |
118+
119+
---
120+
<!-- Built with Agent Engineer Master — get your own production-ready skill: www.agentengineermaster.com/skill-engineer -->
Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
[
2+
{
3+
"id": "happy-path-create",
4+
"skill": "marp-slides",
5+
"description": "Happy path: create a new deck from scratch",
6+
"query": "Create a MARP presentation deck for a Q1 sales review. 10 slides. Dark theme. Show revenue growth, top deals, and next quarter pipeline.",
7+
"expected_behavior": [
8+
"Reads references/learnings.md before generating",
9+
"Asks the 4-question intake (topic/count/theme/brand) before generating any slides",
10+
"Presents 3 layout direction options for user to choose",
11+
"Waits for approval before generating the full deck",
12+
"Generated deck uses `-` for list items, not `*`",
13+
"Generated deck has slide titles ≤35 characters",
14+
"Generated deck rotates layout types — no same layout used 3+ slides in a row",
15+
"Generated deck includes speaker notes on content slides",
16+
"Verifies or creates .marprc.yml at project root",
17+
"Shows export commands from references/cli-guide.md"
18+
],
19+
"failure_modes_to_catch": [
20+
"Generates full deck without intake questions",
21+
"Uses `*` bullets instead of `-`",
22+
"Repeats same heading+bullets layout throughout",
23+
"No speaker notes"
24+
]
25+
},
26+
{
27+
"id": "edit-existing",
28+
"skill": "marp-slides",
29+
"description": "Edit mode: modify a specific slide in an existing deck",
30+
"query": "Update slide 4 in my revenue deck — change the chart to show month-over-month instead of quarterly.",
31+
"expected_behavior": [
32+
"Detects Mode B (Edit) from request signals",
33+
"Reads the existing .md file before making changes",
34+
"Parses slide boundaries to identify slide 4",
35+
"Makes targeted edit without rewriting other slides",
36+
"Re-checks modified slide against quality-rules.md after edit",
37+
"Does NOT present intake questions (those are for Mode A only)"
38+
],
39+
"failure_modes_to_catch": [
40+
"Asks intake questions for an edit request",
41+
"Rewrites the whole deck when only one slide was requested",
42+
"Edits the wrong slide"
43+
]
44+
},
45+
{
46+
"id": "negative-trigger-infographic",
47+
"skill": "marp-slides",
48+
"description": "Negative trigger: static infographic request should NOT activate this skill",
49+
"query": "Create a single-image infographic showing our product roadmap timeline.",
50+
"expected_behavior": [
51+
"Does NOT activate the marp-slides skill",
52+
"Recognizes this as a static image/design request, not a slide deck",
53+
"Either declines the request or routes to an appropriate alternative (e.g. generate-image skill)"
54+
],
55+
"failure_modes_to_catch": [
56+
"Activates marp-slides skill and creates a MARP deck for what is clearly a single image request"
57+
]
58+
},
59+
{
60+
"id": "theme-only-mode-c",
61+
"skill": "marp-slides",
62+
"description": "Mode C: theme-only request generates CSS, not a full deck",
63+
"query": "Generate a light theme for my team retro deck using Plus Jakarta Sans.",
64+
"expected_behavior": [
65+
"Detects Mode C (Theme) from 'theme only' / 'just the styles' signals",
66+
"Asks about brand colors and mood before generating",
67+
"Presents 3 palette directions",
68+
"Generates CSS with `/* @theme name */` header comment",
69+
"Does NOT generate a full deck with slides"
70+
],
71+
"failure_modes_to_catch": [
72+
"Generates a full deck with slides instead of just a theme CSS file",
73+
"Skips the 3 palette directions step",
74+
"Omits the `/* @theme name */` comment from the CSS output"
75+
]
76+
},
77+
{
78+
"id": "edge-allow-local-files",
79+
"skill": "marp-slides",
80+
"description": "Edge case: ensure .marprc.yml with allow-local-files is created/verified on export",
81+
"query": "I've finished the deck. Export it to PDF.",
82+
"expected_behavior": [
83+
"Checks for .marprc.yml before showing export commands",
84+
"Creates .marprc.yml with `allow-local-files: true` if missing",
85+
"Shows the correct marp --pdf --allow-local-files command",
86+
"Does NOT show export command without the allow-local-files flag"
87+
],
88+
"failure_modes_to_catch": [
89+
"Provides export command without --allow-local-files",
90+
"Does not check for or create .marprc.yml"
91+
]
92+
}
93+
]

design/marp-slides/evals/judge.md

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
# Judge — MARP Slides Quality Evaluator
2+
3+
You are a judge evaluating a MARP presentation deck output. Score the deck against the rubric below.
4+
5+
## Inputs
6+
7+
You will be given:
8+
1. **The task prompt** — what the user asked for
9+
2. **The generated MARP deck** — the `.md` file content
10+
11+
## Instructions
12+
13+
1. Read the rubric in `evals/rubric.md`
14+
2. Score each dimension 1–3 with a quoted evidence string from the deck
15+
3. If a dimension is genuinely not applicable to this specific deck, mark it N/A with a one-sentence reason
16+
4. Return structured JSON only — no prose outside the JSON block
17+
18+
## Scoring guidance
19+
20+
- Quote exact text from the deck as evidence — do not paraphrase
21+
- A score of 2 means "mostly works but has a specific flaw" — name the flaw in the evidence string
22+
- Do not round up. If you cannot find evidence of a 3, score it 2.
23+
- Brand alignment (dimension 7): score N/A if the task prompt did not specify brand context AND no brand-guidelines.md was referenced in the deck
24+
25+
## Output format
26+
27+
```json
28+
{
29+
"dimensions": [
30+
{
31+
"name": "Narrative arc",
32+
"score": 2,
33+
"evidence": "Opening and close slides are present. Body sequence is logical. However, slides 5-7 feel like separate items rather than a building argument — '**Revenue by Region**', '**Revenue by Product**', '**Revenue by Channel**' are parallel without escalation."
34+
},
35+
{
36+
"name": "Visual variety",
37+
"score": 3,
38+
"evidence": "Slides rotate: hero → metric cards → chart → image split → card grid → timeline → chart → CTA. No layout type repeats 3+ times in sequence."
39+
},
40+
{
41+
"name": "Information density",
42+
"score": 1,
43+
"evidence": "Slide 3 has 9 bullet points: '- Q1 revenue...', '- Q1 pipeline...', '- Q1 new logos...', '- Q1 churn...'. Speaker notes on that slide read 'This slide covers Q1 metrics' — no additional context."
44+
},
45+
{
46+
"name": "Theme coherence",
47+
"score": 3,
48+
"evidence": "Consistent dark background (#000), Outfit/Raleway pairing throughout, accent orange (#ff6b1a) used only for metric highlights and one CTA button."
49+
},
50+
{
51+
"name": "Title quality",
52+
"score": 2,
53+
"evidence": "Most titles are insight headlines ('Revenue grew 40% in Q1'). Slide 6 title is 'Pipeline Overview' — a generic label."
54+
},
55+
{
56+
"name": "Technical correctness",
57+
"score": 3,
58+
"evidence": "All list items use '-' not '*'. Image paths are relative ('./logo.png'). .marprc.yml created with allow-local-files: true. Speaker notes present on all 9 content slides."
59+
},
60+
{
61+
"name": "Brand alignment",
62+
"score": "N/A",
63+
"evidence": "N/A — task prompt did not specify brand context and no brand-guidelines.md was referenced."
64+
}
65+
],
66+
"overall": 2.3,
67+
"summary": "Biggest strength: technical correctness and theme coherence are solid. Biggest gap: information density — multiple slides exceed 6 bullets and speaker notes add no value beyond the slide text."
68+
}
69+
```
70+
71+
## Overall score calculation
72+
73+
Sum of numeric scores ÷ count of non-N/A dimensions. Round to one decimal place.

design/marp-slides/evals/rubric.md

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
# MARP Slides — Quality Rubric
2+
3+
Scoring dimensions for subjective output evaluation. 7 dimensions; score each 1–3. Overall = mean, rounded.
4+
5+
Score thresholds: 3.0 excellent, 2.5–2.9 good, 2.0–2.4 passing, <2.0 failing.
6+
7+
A mediocre AI-generated deck should score 1–2 on at least **Narrative arc**, **Visual variety**, and **Information density** — these three dimensions reliably discriminate.
8+
9+
---
10+
11+
## Dimensions
12+
13+
### 1. Narrative arc
14+
Does the deck tell a story with a clear opening, body, and close? Does it have momentum — each slide setting up the next?
15+
16+
| Score | Description |
17+
|---|---|
18+
| 1 | Slides feel like a list of topics dumped in order. No through-line. Audience would not know what to take away. |
19+
| 2 | Opening and close exist, but body slides feel disconnected or arbitrary in sequence. |
20+
| 3 | Clear arc: setup → insight → evidence → implication → CTA/close. Each slide earns its position. |
21+
22+
### 2. Visual variety
23+
Does the deck rotate through different layout types? Is there a mix of visual elements (charts, images, code, cards)?
24+
25+
| Score | Description |
26+
|---|---|
27+
| 1 | Same heading + bullets layout used on 3+ consecutive slides. No charts, images, or visual components. |
28+
| 2 | Some variety exists but relies on 1–2 layout types throughout. Visual elements feel added as decoration rather than supporting the content. |
29+
| 3 | Layout rotates every 2–3 slides. Visual element type (chart vs image vs code vs card) chosen to match slide content, not applied uniformly. |
30+
31+
### 3. Information density
32+
Are slides focused on one idea? Is the right amount of content on-slide vs in speaker notes?
33+
34+
| Score | Description |
35+
|---|---|
36+
| 1 | Multiple ideas per slide. Bullets exceed 6. Speaker notes are empty or repeat the slide verbatim. |
37+
| 2 | Most slides are focused but some are overloaded. Speaker notes exist but are generic ("This slide covers..."). |
38+
| 3 | One clear idea per slide. Speaker notes add context, data, and talking points not present on the slide. |
39+
40+
### 4. Theme coherence
41+
Is the CSS theme applied consistently? Does the visual identity (color, typography, spacing) hold across the deck?
42+
43+
| Score | Description |
44+
|---|---|
45+
| 1 | Inconsistent styling — multiple competing colors, mixed font weights, uneven spacing. |
46+
| 2 | Theme is mostly consistent but has drift (one slide with different background, inconsistent heading sizes). |
47+
| 3 | Consistent palette (60-30-10), typography hierarchy maintained throughout, accent used sparingly and correctly. |
48+
49+
### 5. Title quality
50+
Do slide titles act as insight headlines rather than generic labels?
51+
52+
| Score | Description |
53+
|---|---|
54+
| 1 | Titles are generic labels ("Revenue", "Overview", "Next Steps"). Audience learns nothing from the title alone. |
55+
| 2 | Some titles have insight but others are labels. Titles are within length limit but not memorable. |
56+
| 3 | Every title is a specific insight or claim (≤35 chars). A reader skimming just titles would understand the deck's argument. |
57+
58+
### 6. Technical correctness
59+
Are MARP-specific technical rules followed? (See `references/quality-rules.md` for full list.)
60+
61+
| Score | Description |
62+
|---|---|
63+
| 1 | Uses `*` bullets (animation trigger), absolute image paths, or SVG backgrounds in `cover` mode. Missing .marprc or allow-local-files. |
64+
| 2 | Most technical rules followed but 1–2 violations present (e.g. a single slide with a title slightly over 35 chars). |
65+
| 3 | All technical rules pass. No `*` bullets, relative image paths, SVG in `contain`, .marprc present, speaker notes on all content slides. |
66+
67+
### 7. Brand alignment
68+
Does the deck use the correct brand colors, typography, and voice for the stated context?
69+
70+
| Score | Description |
71+
|---|---|
72+
| 1 | Deck uses default orange theme when brand guidelines specify different colors, or uses a mismatched font pairing for the content type. |
73+
| 2 | Brand colors are present but typography or spacing doesn't match brand guidelines. |
74+
| 3 | Deck correctly derives theme from brand-guidelines.md (or correctly uses default dark theme when no brand context is specified). |
75+
| N/A | No brand context specified and no brand guidelines file available. Mark N/A with reason. |

0 commit comments

Comments
 (0)