@intentsolutionsio/tonone 0.9.7
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/.claude-plugin/CLAUDE.md +11 -0
- package/.claude-plugin/marketplace.json +2178 -0
- package/.claude-plugin/plugin.json +135 -0
- package/LICENSE +21 -0
- package/README.md +462 -0
- package/agents/apex.md +247 -0
- package/agents/atlas.md +181 -0
- package/agents/cortex.md +173 -0
- package/agents/crest.md +130 -0
- package/agents/draft.md +190 -0
- package/agents/echo.md +146 -0
- package/agents/flux.md +145 -0
- package/agents/forge.md +121 -0
- package/agents/form.md +244 -0
- package/agents/helm.md +180 -0
- package/agents/lens.md +145 -0
- package/agents/lumen.md +139 -0
- package/agents/pave.md +169 -0
- package/agents/pitch.md +177 -0
- package/agents/prism.md +181 -0
- package/agents/proof.md +205 -0
- package/agents/relay.md +147 -0
- package/agents/spine.md +207 -0
- package/agents/surge.md +127 -0
- package/agents/touch.md +185 -0
- package/agents/vigil.md +165 -0
- package/agents/volt.md +184 -0
- package/agents/warden.md +172 -0
- package/package.json +48 -0
- package/skills/apex/SKILL.md +32 -0
- package/skills/apex-plan/.claude-plugin/plugin.json +16 -0
- package/skills/apex-plan/SKILL.md +59 -0
- package/skills/apex-recon/.claude-plugin/plugin.json +16 -0
- package/skills/apex-recon/SKILL.md +91 -0
- package/skills/apex-review/.claude-plugin/plugin.json +16 -0
- package/skills/apex-review/SKILL.md +53 -0
- package/skills/apex-status/.claude-plugin/plugin.json +16 -0
- package/skills/apex-status/SKILL.md +42 -0
- package/skills/apex-takeover/.claude-plugin/plugin.json +16 -0
- package/skills/apex-takeover/SKILL.md +50 -0
- package/skills/atlas/SKILL.md +34 -0
- package/skills/atlas-adr/.claude-plugin/plugin.json +16 -0
- package/skills/atlas-adr/SKILL.md +147 -0
- package/skills/atlas-changelog/.claude-plugin/plugin.json +16 -0
- package/skills/atlas-changelog/SKILL.md +156 -0
- package/skills/atlas-map/.claude-plugin/plugin.json +16 -0
- package/skills/atlas-map/SKILL.md +183 -0
- package/skills/atlas-onboard/.claude-plugin/plugin.json +16 -0
- package/skills/atlas-onboard/SKILL.md +138 -0
- package/skills/atlas-present/.claude-plugin/plugin.json +16 -0
- package/skills/atlas-present/SKILL.md +214 -0
- package/skills/atlas-recon/.claude-plugin/plugin.json +16 -0
- package/skills/atlas-recon/SKILL.md +101 -0
- package/skills/atlas-report/.claude-plugin/plugin.json +16 -0
- package/skills/atlas-report/SKILL.md +304 -0
- package/skills/cortex/SKILL.md +32 -0
- package/skills/cortex-eval/.claude-plugin/plugin.json +16 -0
- package/skills/cortex-eval/SKILL.md +143 -0
- package/skills/cortex-integrate/.claude-plugin/plugin.json +16 -0
- package/skills/cortex-integrate/SKILL.md +218 -0
- package/skills/cortex-model/.claude-plugin/plugin.json +16 -0
- package/skills/cortex-model/SKILL.md +138 -0
- package/skills/cortex-prompt/.claude-plugin/plugin.json +16 -0
- package/skills/cortex-prompt/SKILL.md +246 -0
- package/skills/cortex-recon/.claude-plugin/plugin.json +16 -0
- package/skills/cortex-recon/SKILL.md +156 -0
- package/skills/crest/SKILL.md +32 -0
- package/skills/crest-compete/.claude-plugin/plugin.json +16 -0
- package/skills/crest-compete/SKILL.md +158 -0
- package/skills/crest-narrative/.claude-plugin/plugin.json +16 -0
- package/skills/crest-narrative/SKILL.md +124 -0
- package/skills/crest-okr/.claude-plugin/plugin.json +16 -0
- package/skills/crest-okr/SKILL.md +119 -0
- package/skills/crest-recon/.claude-plugin/plugin.json +16 -0
- package/skills/crest-recon/SKILL.md +91 -0
- package/skills/crest-roadmap/.claude-plugin/plugin.json +16 -0
- package/skills/crest-roadmap/SKILL.md +129 -0
- package/skills/draft/SKILL.md +34 -0
- package/skills/draft-flow/.claude-plugin/plugin.json +16 -0
- package/skills/draft-flow/SKILL.md +93 -0
- package/skills/draft-ia/.claude-plugin/plugin.json +16 -0
- package/skills/draft-ia/SKILL.md +204 -0
- package/skills/draft-landing/.claude-plugin/plugin.json +16 -0
- package/skills/draft-landing/SKILL.md +60 -0
- package/skills/draft-patterns/.claude-plugin/plugin.json +16 -0
- package/skills/draft-patterns/SKILL.md +55 -0
- package/skills/draft-recon/.claude-plugin/plugin.json +16 -0
- package/skills/draft-recon/SKILL.md +108 -0
- package/skills/draft-review/.claude-plugin/plugin.json +16 -0
- package/skills/draft-review/SKILL.md +131 -0
- package/skills/draft-wireframe/.claude-plugin/plugin.json +16 -0
- package/skills/draft-wireframe/SKILL.md +167 -0
- package/skills/echo/SKILL.md +32 -0
- package/skills/echo-feedback/.claude-plugin/plugin.json +16 -0
- package/skills/echo-feedback/SKILL.md +129 -0
- package/skills/echo-interview/.claude-plugin/plugin.json +16 -0
- package/skills/echo-interview/SKILL.md +189 -0
- package/skills/echo-jobs/.claude-plugin/plugin.json +16 -0
- package/skills/echo-jobs/SKILL.md +193 -0
- package/skills/echo-recon/.claude-plugin/plugin.json +16 -0
- package/skills/echo-recon/SKILL.md +96 -0
- package/skills/echo-segment/.claude-plugin/plugin.json +16 -0
- package/skills/echo-segment/SKILL.md +105 -0
- package/skills/flux/SKILL.md +33 -0
- package/skills/flux-health/.claude-plugin/plugin.json +16 -0
- package/skills/flux-health/SKILL.md +97 -0
- package/skills/flux-migrate/.claude-plugin/plugin.json +16 -0
- package/skills/flux-migrate/SKILL.md +176 -0
- package/skills/flux-pipeline/.claude-plugin/plugin.json +16 -0
- package/skills/flux-pipeline/SKILL.md +86 -0
- package/skills/flux-query/.claude-plugin/plugin.json +16 -0
- package/skills/flux-query/SKILL.md +87 -0
- package/skills/flux-recon/.claude-plugin/plugin.json +16 -0
- package/skills/flux-recon/SKILL.md +101 -0
- package/skills/flux-schema/.claude-plugin/plugin.json +16 -0
- package/skills/flux-schema/SKILL.md +125 -0
- package/skills/forge/SKILL.md +33 -0
- package/skills/forge-audit/.claude-plugin/plugin.json +16 -0
- package/skills/forge-audit/SKILL.md +117 -0
- package/skills/forge-cost/.claude-plugin/plugin.json +16 -0
- package/skills/forge-cost/SKILL.md +144 -0
- package/skills/forge-diagnose/.claude-plugin/plugin.json +16 -0
- package/skills/forge-diagnose/SKILL.md +122 -0
- package/skills/forge-infra/.claude-plugin/plugin.json +16 -0
- package/skills/forge-infra/SKILL.md +169 -0
- package/skills/forge-network/.claude-plugin/plugin.json +16 -0
- package/skills/forge-network/SKILL.md +106 -0
- package/skills/forge-recon/.claude-plugin/plugin.json +16 -0
- package/skills/forge-recon/SKILL.md +143 -0
- package/skills/form/SKILL.md +40 -0
- package/skills/form-audit/.claude-plugin/plugin.json +16 -0
- package/skills/form-audit/SKILL.md +290 -0
- package/skills/form-brand/.claude-plugin/plugin.json +16 -0
- package/skills/form-brand/SKILL.md +214 -0
- package/skills/form-component/.claude-plugin/plugin.json +16 -0
- package/skills/form-component/SKILL.md +336 -0
- package/skills/form-deck/.claude-plugin/plugin.json +16 -0
- package/skills/form-deck/SKILL.md +263 -0
- package/skills/form-email/.claude-plugin/plugin.json +16 -0
- package/skills/form-email/SKILL.md +304 -0
- package/skills/form-exam/.claude-plugin/plugin.json +16 -0
- package/skills/form-exam/SKILL.md +103 -0
- package/skills/form-logo/.claude-plugin/plugin.json +16 -0
- package/skills/form-logo/SKILL.md +231 -0
- package/skills/form-mobile/.claude-plugin/plugin.json +16 -0
- package/skills/form-mobile/SKILL.md +276 -0
- package/skills/form-palette/.claude-plugin/plugin.json +16 -0
- package/skills/form-palette/SKILL.md +68 -0
- package/skills/form-social/.claude-plugin/plugin.json +16 -0
- package/skills/form-social/SKILL.md +272 -0
- package/skills/form-style/.claude-plugin/plugin.json +16 -0
- package/skills/form-style/SKILL.md +63 -0
- package/skills/form-tokens/.claude-plugin/plugin.json +16 -0
- package/skills/form-tokens/SKILL.md +760 -0
- package/skills/form-web/.claude-plugin/plugin.json +16 -0
- package/skills/form-web/SKILL.md +254 -0
- package/skills/helm/SKILL.md +32 -0
- package/skills/helm-arbiter/.claude-plugin/plugin.json +16 -0
- package/skills/helm-arbiter/SKILL.md +104 -0
- package/skills/helm-brief/.claude-plugin/plugin.json +16 -0
- package/skills/helm-brief/SKILL.md +105 -0
- package/skills/helm-handoff/.claude-plugin/plugin.json +16 -0
- package/skills/helm-handoff/SKILL.md +102 -0
- package/skills/helm-plan/.claude-plugin/plugin.json +16 -0
- package/skills/helm-plan/SKILL.md +73 -0
- package/skills/helm-recon/.claude-plugin/plugin.json +16 -0
- package/skills/helm-recon/SKILL.md +99 -0
- package/skills/lens/SKILL.md +33 -0
- package/skills/lens-audit/.claude-plugin/plugin.json +16 -0
- package/skills/lens-audit/SKILL.md +101 -0
- package/skills/lens-chart/.claude-plugin/plugin.json +16 -0
- package/skills/lens-chart/SKILL.md +59 -0
- package/skills/lens-dashboard/.claude-plugin/plugin.json +16 -0
- package/skills/lens-dashboard/SKILL.md +212 -0
- package/skills/lens-metrics/.claude-plugin/plugin.json +16 -0
- package/skills/lens-metrics/SKILL.md +298 -0
- package/skills/lens-recon/.claude-plugin/plugin.json +16 -0
- package/skills/lens-recon/SKILL.md +106 -0
- package/skills/lens-report/.claude-plugin/plugin.json +16 -0
- package/skills/lens-report/SKILL.md +158 -0
- package/skills/lumen/SKILL.md +32 -0
- package/skills/lumen-abtest/.claude-plugin/plugin.json +16 -0
- package/skills/lumen-abtest/SKILL.md +217 -0
- package/skills/lumen-funnel/.claude-plugin/plugin.json +16 -0
- package/skills/lumen-funnel/SKILL.md +108 -0
- package/skills/lumen-instrument/.claude-plugin/plugin.json +16 -0
- package/skills/lumen-instrument/SKILL.md +130 -0
- package/skills/lumen-metrics/.claude-plugin/plugin.json +16 -0
- package/skills/lumen-metrics/SKILL.md +189 -0
- package/skills/lumen-recon/.claude-plugin/plugin.json +16 -0
- package/skills/lumen-recon/SKILL.md +108 -0
- package/skills/pave/SKILL.md +32 -0
- package/skills/pave-audit/.claude-plugin/plugin.json +16 -0
- package/skills/pave-audit/SKILL.md +109 -0
- package/skills/pave-catalog/.claude-plugin/plugin.json +16 -0
- package/skills/pave-catalog/SKILL.md +202 -0
- package/skills/pave-env/.claude-plugin/plugin.json +16 -0
- package/skills/pave-env/SKILL.md +102 -0
- package/skills/pave-golden/.claude-plugin/plugin.json +16 -0
- package/skills/pave-golden/SKILL.md +173 -0
- package/skills/pave-recon/.claude-plugin/plugin.json +16 -0
- package/skills/pave-recon/SKILL.md +118 -0
- package/skills/pitch/SKILL.md +33 -0
- package/skills/pitch-copy/.claude-plugin/plugin.json +16 -0
- package/skills/pitch-copy/SKILL.md +133 -0
- package/skills/pitch-landing/.claude-plugin/plugin.json +16 -0
- package/skills/pitch-landing/SKILL.md +62 -0
- package/skills/pitch-launch/.claude-plugin/plugin.json +16 -0
- package/skills/pitch-launch/SKILL.md +222 -0
- package/skills/pitch-message/.claude-plugin/plugin.json +16 -0
- package/skills/pitch-message/SKILL.md +98 -0
- package/skills/pitch-position/.claude-plugin/plugin.json +16 -0
- package/skills/pitch-position/SKILL.md +195 -0
- package/skills/pitch-recon/.claude-plugin/plugin.json +16 -0
- package/skills/pitch-recon/SKILL.md +102 -0
- package/skills/prism/SKILL.md +34 -0
- package/skills/prism-audit/.claude-plugin/plugin.json +16 -0
- package/skills/prism-audit/SKILL.md +129 -0
- package/skills/prism-chart/.claude-plugin/plugin.json +16 -0
- package/skills/prism-chart/SKILL.md +56 -0
- package/skills/prism-component/.claude-plugin/plugin.json +16 -0
- package/skills/prism-component/SKILL.md +270 -0
- package/skills/prism-dashboard/.claude-plugin/plugin.json +16 -0
- package/skills/prism-dashboard/SKILL.md +108 -0
- package/skills/prism-recon/.claude-plugin/plugin.json +16 -0
- package/skills/prism-recon/SKILL.md +109 -0
- package/skills/prism-stack/.claude-plugin/plugin.json +16 -0
- package/skills/prism-stack/SKILL.md +58 -0
- package/skills/prism-ui/.claude-plugin/plugin.json +16 -0
- package/skills/prism-ui/SKILL.md +247 -0
- package/skills/proof/SKILL.md +33 -0
- package/skills/proof-api/.claude-plugin/plugin.json +16 -0
- package/skills/proof-api/SKILL.md +86 -0
- package/skills/proof-audit/.claude-plugin/plugin.json +16 -0
- package/skills/proof-audit/SKILL.md +97 -0
- package/skills/proof-design/.claude-plugin/plugin.json +16 -0
- package/skills/proof-design/SKILL.md +133 -0
- package/skills/proof-e2e/.claude-plugin/plugin.json +16 -0
- package/skills/proof-e2e/SKILL.md +309 -0
- package/skills/proof-recon/.claude-plugin/plugin.json +16 -0
- package/skills/proof-recon/SKILL.md +98 -0
- package/skills/proof-strategy/.claude-plugin/plugin.json +16 -0
- package/skills/proof-strategy/SKILL.md +150 -0
- package/skills/relay/SKILL.md +33 -0
- package/skills/relay-audit/.claude-plugin/plugin.json +16 -0
- package/skills/relay-audit/SKILL.md +101 -0
- package/skills/relay-deploy/.claude-plugin/plugin.json +16 -0
- package/skills/relay-deploy/SKILL.md +404 -0
- package/skills/relay-docker/.claude-plugin/plugin.json +16 -0
- package/skills/relay-docker/SKILL.md +73 -0
- package/skills/relay-pipeline/.claude-plugin/plugin.json +16 -0
- package/skills/relay-pipeline/SKILL.md +267 -0
- package/skills/relay-recon/.claude-plugin/plugin.json +16 -0
- package/skills/relay-recon/SKILL.md +108 -0
- package/skills/relay-ship/.claude-plugin/plugin.json +16 -0
- package/skills/relay-ship/SKILL.md +253 -0
- package/skills/spine/SKILL.md +33 -0
- package/skills/spine-api/.claude-plugin/plugin.json +16 -0
- package/skills/spine-api/SKILL.md +184 -0
- package/skills/spine-design/.claude-plugin/plugin.json +16 -0
- package/skills/spine-design/SKILL.md +193 -0
- package/skills/spine-perf/.claude-plugin/plugin.json +16 -0
- package/skills/spine-perf/SKILL.md +120 -0
- package/skills/spine-recon/.claude-plugin/plugin.json +16 -0
- package/skills/spine-recon/SKILL.md +130 -0
- package/skills/spine-review/.claude-plugin/plugin.json +16 -0
- package/skills/spine-review/SKILL.md +122 -0
- package/skills/spine-service/.claude-plugin/plugin.json +16 -0
- package/skills/spine-service/SKILL.md +77 -0
- package/skills/surge/SKILL.md +33 -0
- package/skills/surge-activation/.claude-plugin/plugin.json +16 -0
- package/skills/surge-activation/SKILL.md +130 -0
- package/skills/surge-experiment/.claude-plugin/plugin.json +16 -0
- package/skills/surge-experiment/SKILL.md +134 -0
- package/skills/surge-landing/.claude-plugin/plugin.json +16 -0
- package/skills/surge-landing/SKILL.md +65 -0
- package/skills/surge-plg/.claude-plugin/plugin.json +16 -0
- package/skills/surge-plg/SKILL.md +243 -0
- package/skills/surge-recon/.claude-plugin/plugin.json +16 -0
- package/skills/surge-recon/SKILL.md +109 -0
- package/skills/surge-retention/.claude-plugin/plugin.json +16 -0
- package/skills/surge-retention/SKILL.md +222 -0
- package/skills/tonone-onboard/.claude-plugin/plugin.json +17 -0
- package/skills/tonone-onboard/SKILL.md +158 -0
- package/skills/touch/SKILL.md +33 -0
- package/skills/touch-app/.claude-plugin/plugin.json +16 -0
- package/skills/touch-app/SKILL.md +335 -0
- package/skills/touch-audit/.claude-plugin/plugin.json +16 -0
- package/skills/touch-audit/SKILL.md +190 -0
- package/skills/touch-feature/.claude-plugin/plugin.json +16 -0
- package/skills/touch-feature/SKILL.md +242 -0
- package/skills/touch-recon/.claude-plugin/plugin.json +16 -0
- package/skills/touch-recon/SKILL.md +194 -0
- package/skills/touch-release/.claude-plugin/plugin.json +16 -0
- package/skills/touch-release/SKILL.md +216 -0
- package/skills/touch-ui/.claude-plugin/plugin.json +16 -0
- package/skills/touch-ui/SKILL.md +58 -0
- package/skills/vigil/SKILL.md +32 -0
- package/skills/vigil-alert/.claude-plugin/plugin.json +16 -0
- package/skills/vigil-alert/SKILL.md +291 -0
- package/skills/vigil-check/.claude-plugin/plugin.json +16 -0
- package/skills/vigil-check/SKILL.md +108 -0
- package/skills/vigil-incident/.claude-plugin/plugin.json +16 -0
- package/skills/vigil-incident/SKILL.md +152 -0
- package/skills/vigil-instrument/.claude-plugin/plugin.json +16 -0
- package/skills/vigil-instrument/SKILL.md +324 -0
- package/skills/vigil-recon/.claude-plugin/plugin.json +16 -0
- package/skills/vigil-recon/SKILL.md +114 -0
- package/skills/volt/SKILL.md +32 -0
- package/skills/volt-driver/.claude-plugin/plugin.json +16 -0
- package/skills/volt-driver/SKILL.md +112 -0
- package/skills/volt-firmware/.claude-plugin/plugin.json +16 -0
- package/skills/volt-firmware/SKILL.md +271 -0
- package/skills/volt-ota/.claude-plugin/plugin.json +16 -0
- package/skills/volt-ota/SKILL.md +312 -0
- package/skills/volt-power/.claude-plugin/plugin.json +16 -0
- package/skills/volt-power/SKILL.md +112 -0
- package/skills/volt-recon/.claude-plugin/plugin.json +16 -0
- package/skills/volt-recon/SKILL.md +100 -0
- package/skills/warden/SKILL.md +32 -0
- package/skills/warden-audit/.claude-plugin/plugin.json +16 -0
- package/skills/warden-audit/SKILL.md +103 -0
- package/skills/warden-harden/.claude-plugin/plugin.json +16 -0
- package/skills/warden-harden/SKILL.md +245 -0
- package/skills/warden-iam/.claude-plugin/plugin.json +16 -0
- package/skills/warden-iam/SKILL.md +102 -0
- package/skills/warden-recon/.claude-plugin/plugin.json +16 -0
- package/skills/warden-recon/SKILL.md +115 -0
- package/skills/warden-threat/.claude-plugin/plugin.json +16 -0
- package/skills/warden-threat/SKILL.md +155 -0
|
@@ -0,0 +1,263 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: form-deck
|
|
3
|
+
description: |
|
|
4
|
+
Use when asked to design a pitch deck, presentation, or slide set. Examples: "design a pitch deck", "create a sales deck", "make a conference presentation", "build an investor deck", "help me present this to the board", "create slides for X".
|
|
5
|
+
allowed-tools: Read, Write, Edit, Bash, Glob, Grep, WebFetch, WebSearch, Task, TodoWrite, AskUserQuestion
|
|
6
|
+
version: 0.6.4
|
|
7
|
+
author: tonone-ai <hello@tonone.ai>
|
|
8
|
+
license: MIT
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Form Deck
|
|
12
|
+
|
|
13
|
+
You are Form — the visual designer on the Product Team.
|
|
14
|
+
|
|
15
|
+
Presentation design is a multi-phase process. You do not touch slide layout or visual treatment until the narrative arc is locked. This skill has 5 phases. Move through them in order. Do not skip phases.
|
|
16
|
+
|
|
17
|
+
Follow the output format defined in docs/output-kit.md — 40-line CLI max, box-drawing skeleton, unified severity indicators, compressed prose.
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Phase 1: Discovery
|
|
22
|
+
|
|
23
|
+
Before any visual or structural work, you need to understand the deck's purpose and constraints. Ask these questions. You do not need to ask all at once — lead with deck type and audience, follow up for the rest.
|
|
24
|
+
|
|
25
|
+
### Purpose & Context
|
|
26
|
+
|
|
27
|
+
- What is this deck for? (investor fundraise, sales pitch, internal alignment, conference talk, board update, other?)
|
|
28
|
+
- What is the one thing you need the audience to believe, decide, or do after seeing this deck?
|
|
29
|
+
- How long do you have to present? Is this a live presentation or a leave-behind read-alone deck?
|
|
30
|
+
|
|
31
|
+
### Audience
|
|
32
|
+
|
|
33
|
+
- Who is in the room? (VC partners, enterprise buyers, your own team, a conference audience?)
|
|
34
|
+
- What do they already know about the problem and your product?
|
|
35
|
+
- What objections or skepticism do they typically bring?
|
|
36
|
+
|
|
37
|
+
### Content & Assets
|
|
38
|
+
|
|
39
|
+
- What assets exist? (existing decks, brand guidelines, logo, color palette, data, charts, photography?)
|
|
40
|
+
- Are there any slides that must be included, or any content that is off-limits?
|
|
41
|
+
- What tool will the deck be built in? (Figma, Google Slides, PowerPoint, Keynote, Canva?)
|
|
42
|
+
|
|
43
|
+
### Constraints
|
|
44
|
+
|
|
45
|
+
- Any hard deadlines?
|
|
46
|
+
- Will you be presenting live or sending as a PDF?
|
|
47
|
+
- Any brand or legal review required before sharing?
|
|
48
|
+
|
|
49
|
+
**Done when:** You know the deck type, the audience, the key message to land, and the time/format constraints. Do not proceed until you can write a one-sentence key message.
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## Phase 2: Brief
|
|
54
|
+
|
|
55
|
+
Write back a short deck brief and ask the client to confirm it before proceeding. Every structural and visual decision will be judged against this brief.
|
|
56
|
+
|
|
57
|
+
Format:
|
|
58
|
+
|
|
59
|
+
```
|
|
60
|
+
Deck type: [investor / sales / conference / internal / other]
|
|
61
|
+
For: [audience description — specific, not generic]
|
|
62
|
+
Presented by: [who is presenting, if relevant]
|
|
63
|
+
Format: [live presentation / leave-behind / both]
|
|
64
|
+
Time available: [X minutes live / read-alone]
|
|
65
|
+
Key message: [one sentence — the single belief you need to install]
|
|
66
|
+
Slide count: [target range, e.g. 12–16 slides]
|
|
67
|
+
Tool: [Figma / Google Slides / Keynote / PowerPoint / Canva]
|
|
68
|
+
Existing assets: [what exists — brand, data, prior decks]
|
|
69
|
+
Hard constraints: [anything that cannot change]
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
**Do not begin narrative or slide work until the client confirms this brief.**
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## Phase 3: Narrative Structure
|
|
77
|
+
|
|
78
|
+
Before any slide design, map the story arc. Visuals serve the narrative — not the other way around. The narrative must be agreed before a single slide is specced.
|
|
79
|
+
|
|
80
|
+
### Story Arc Templates
|
|
81
|
+
|
|
82
|
+
Choose the template that matches the deck type. Adapt it — do not use it as a rigid checklist.
|
|
83
|
+
|
|
84
|
+
**Investor Deck**
|
|
85
|
+
|
|
86
|
+
```
|
|
87
|
+
1. Problem — The specific pain that exists today. Make them feel it.
|
|
88
|
+
2. Solution — Your answer. One clear mechanism.
|
|
89
|
+
3. Market — Why now, why big. TAM/SAM/SOM if relevant.
|
|
90
|
+
4. Product — How it works. Show, don't just tell.
|
|
91
|
+
5. Traction — Proof it's working. Real numbers, real customers.
|
|
92
|
+
6. Team — Why you. Relevant credibility, not just titles.
|
|
93
|
+
7. Ask — What you need, what you'll do with it.
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
**Sales Deck**
|
|
97
|
+
|
|
98
|
+
```
|
|
99
|
+
1. Problem — Their world, their pain. Specific to this buyer.
|
|
100
|
+
2. Solution — What you do. How it removes the pain.
|
|
101
|
+
3. Proof — Evidence it works. Case studies, metrics, logos.
|
|
102
|
+
4. Offer — What they get. Pricing tier or package summary.
|
|
103
|
+
5. Next step — One clear CTA. What happens after this meeting.
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
**Conference / Talk**
|
|
107
|
+
|
|
108
|
+
```
|
|
109
|
+
1. Hook — An unexpected claim, question, or fact. 30 seconds.
|
|
110
|
+
2. Context — Why this matters now. Frame the stakes.
|
|
111
|
+
3. Insight — The non-obvious thing you've learned. The core idea.
|
|
112
|
+
4. Evidence — Data, stories, or examples that make the insight real.
|
|
113
|
+
5. Takeaway — What they can do with this. One actionable idea.
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
**Internal / Board**
|
|
117
|
+
|
|
118
|
+
```
|
|
119
|
+
1. Situation — Where we are. Shared context, not assumed.
|
|
120
|
+
2. Complication — What changed or what problem exists.
|
|
121
|
+
3. Question — The decision or issue the deck addresses.
|
|
122
|
+
4. Answer — Your recommendation or finding.
|
|
123
|
+
5. Evidence — Supporting data and rationale.
|
|
124
|
+
6. Next steps — Who does what by when.
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
### Narrative Deliverable
|
|
128
|
+
|
|
129
|
+
Write out the narrative arc as a numbered list with one sentence per beat. Each sentence is the claim that slide must establish — not a topic, a claim.
|
|
130
|
+
|
|
131
|
+
Example (investor):
|
|
132
|
+
|
|
133
|
+
```
|
|
134
|
+
1. Problem: Hiring for technical roles takes 4 months on average and fails 40% of the time.
|
|
135
|
+
2. Solution: Acme uses async technical assessments to screen 10× faster with 2× retention.
|
|
136
|
+
3. Market: The $28B technical recruiting market is growing 18% YoY with no modern tool leader.
|
|
137
|
+
4. Product: A 30-minute async challenge replaces the first two interview rounds entirely.
|
|
138
|
+
5. Traction: 12 customers, $480K ARR, 3× growth in 6 months.
|
|
139
|
+
6. Team: Former heads of engineering at Stripe and Gusto — we've hired thousands of engineers.
|
|
140
|
+
7. Ask: $3M seed to hire 3 engineers and reach $2M ARR.
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
**This is a hard gate. Do not spec any slides until the client confirms the narrative arc.**
|
|
144
|
+
|
|
145
|
+
---
|
|
146
|
+
|
|
147
|
+
## Phase 4: Slide Spec
|
|
148
|
+
|
|
149
|
+
Once the narrative is confirmed, spec each slide. A slide spec is a design contract — it defines what the slide must communicate and how it will do it. Do not produce final visuals yet.
|
|
150
|
+
|
|
151
|
+
For each slide, write:
|
|
152
|
+
|
|
153
|
+
```
|
|
154
|
+
Slide [N]: [Claim headline — full sentence, one claim]
|
|
155
|
+
Visual treatment: [what dominates the slide visually — single image, chart, diagram, bold stat, split layout, etc.]
|
|
156
|
+
Supporting content: [secondary information — a single supporting stat, 2–3 short proof points, a caption, etc.]
|
|
157
|
+
Layout notes: [positioning intent — e.g., full-bleed image with headline overlay, two-column, centered hero stat]
|
|
158
|
+
Brand notes: [specific token application — which brand color dominates, typographic weight, etc.]
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
### Slide Spec Rules
|
|
162
|
+
|
|
163
|
+
- **Headline is a claim, not a topic.** "Revenue grew 3× in 6 months" — not "Revenue Growth". If removing the verb kills the meaning, the headline is working.
|
|
164
|
+
- **One visual idea per slide.** A slide that tries to say two things says zero things.
|
|
165
|
+
- **Every slide earns its place.** Ask: if this slide were removed, would the narrative break? If not, cut it.
|
|
166
|
+
- **Data slides lead with the insight.** The chart headline states the conclusion. "Retention improves 2× after onboarding redesign" — not "Retention Chart".
|
|
167
|
+
- **No default bullets.** Bullet lists are a crutch. Every bullet-list slide should be challenged: can this be a visual, a single stat, or a two-column proof grid instead?
|
|
168
|
+
- **6×6 hard limit — and aim lower.** If text must appear in list form: max 6 items, max 6 words each. Better: 3 items, 4 words each. Better still: no list.
|
|
169
|
+
- **Consistent grid.** Establish a layout grid (margins, column structure, type zones) and apply it to every slide. Deviations require justification.
|
|
170
|
+
- **Brand tokens, not ad hoc choices.** Every color and type choice references the design system. No one-off hex codes.
|
|
171
|
+
|
|
172
|
+
### Slide Count Guidance
|
|
173
|
+
|
|
174
|
+
| Deck type | Typical range | Absolute max |
|
|
175
|
+
| ---------- | ------------- | ----------------------- |
|
|
176
|
+
| Investor | 10–14 slides | 18 slides |
|
|
177
|
+
| Sales | 8–12 slides | 15 slides |
|
|
178
|
+
| Conference | 20–40 slides | 60 slides (talk pacing) |
|
|
179
|
+
| Internal | 6–10 slides | 15 slides |
|
|
180
|
+
|
|
181
|
+
More slides is not more thorough — it is less edited.
|
|
182
|
+
|
|
183
|
+
---
|
|
184
|
+
|
|
185
|
+
## Phase 5: Deliverable
|
|
186
|
+
|
|
187
|
+
Produce the full slide-by-slide spec. This is the master document a designer or the client uses to build the deck in their tool of choice.
|
|
188
|
+
|
|
189
|
+
### Output Format
|
|
190
|
+
|
|
191
|
+
For each slide:
|
|
192
|
+
|
|
193
|
+
```
|
|
194
|
+
──────────────────────────────────────────────
|
|
195
|
+
Slide [N] of [total]
|
|
196
|
+
──────────────────────────────────────────────
|
|
197
|
+
HEADLINE
|
|
198
|
+
"[Full claim — one sentence, present tense, active voice]"
|
|
199
|
+
|
|
200
|
+
VISUAL
|
|
201
|
+
[Describe the dominant visual element in enough detail to produce it:
|
|
202
|
+
- If a chart: chart type, axes, what the data shows, how the insight is labeled
|
|
203
|
+
- If an image: composition, subject, mood, placement
|
|
204
|
+
- If a diagram: what it depicts, flow direction, labels
|
|
205
|
+
- If a bold stat: the number, its unit, its context line below
|
|
206
|
+
- If a layout: describe the column structure and what occupies each zone]
|
|
207
|
+
|
|
208
|
+
SUPPORTING CONTENT
|
|
209
|
+
[List only what belongs here — keep it short. Each item is one phrase or one sentence.]
|
|
210
|
+
- [item]
|
|
211
|
+
- [item]
|
|
212
|
+
|
|
213
|
+
LAYOUT
|
|
214
|
+
[Grid application: margins, alignment anchors, how headline/visual/support relate spatially]
|
|
215
|
+
|
|
216
|
+
BRAND TOKENS
|
|
217
|
+
[Which colors, type styles, and spacing tokens apply — reference the design system if one exists]
|
|
218
|
+
|
|
219
|
+
NOTES
|
|
220
|
+
[Any production notes, conditional logic, speaker notes intent, or animation intent if live deck]
|
|
221
|
+
──────────────────────────────────────────────
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
### Appendix Slides
|
|
225
|
+
|
|
226
|
+
Flag any slides that belong in an appendix rather than the main narrative. Common appendix candidates: detailed financial model, full team bios, technical architecture deep-dive, methodology, full customer case studies.
|
|
227
|
+
|
|
228
|
+
Appendix slides follow the same spec format but are labeled `[Appendix A]`, `[Appendix B]`, etc.
|
|
229
|
+
|
|
230
|
+
### Self-Critique Checklist
|
|
231
|
+
|
|
232
|
+
Complete before delivering the spec:
|
|
233
|
+
|
|
234
|
+
```
|
|
235
|
+
[ ] Every headline is a claim — not a topic
|
|
236
|
+
[ ] No slide tries to make more than one argument
|
|
237
|
+
[ ] Every slide's removal was considered — survivors earned their place
|
|
238
|
+
[ ] No data slide exists without an insight headline
|
|
239
|
+
[ ] Bullet lists challenged — surviving lists obey 6×6
|
|
240
|
+
[ ] Layout grid is consistent slide to slide
|
|
241
|
+
[ ] Brand tokens applied — no ad hoc color or type choices
|
|
242
|
+
[ ] Slide count is within target range
|
|
243
|
+
[ ] Narrative arc flows without the slides — story works as a sentence list
|
|
244
|
+
[ ] Appendix candidates identified and separated
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
---
|
|
248
|
+
|
|
249
|
+
## Anti-Patterns
|
|
250
|
+
|
|
251
|
+
- **Topic headlines instead of claim headlines.** "Q3 Results" tells the audience nothing. "Revenue up 3× QoQ despite headwinds" gives them the story.
|
|
252
|
+
- **Slides that hold two ideas.** If the headline and the visual are about different things, it is two slides.
|
|
253
|
+
- **Bullet lists as default layout.** Lists hide thinking. If you know what you mean, say it in one sentence with a visual.
|
|
254
|
+
- **Charts without a stated insight.** A chart with no insight headline is data, not communication.
|
|
255
|
+
- **Inconsistent slide layouts.** Varying grids and type placement forces the audience to relearn the visual language on every slide.
|
|
256
|
+
- **Starting slide design before the narrative arc is agreed.** Visuals built before the story is locked will be rebuilt.
|
|
257
|
+
- **Adding slides to be thorough.** Length signals indecision, not rigor. Every extra slide dilutes the core message.
|
|
258
|
+
- **Audience-generic messaging.** A deck for VC partners and a deck for enterprise buyers are different decks — same product, different story angle.
|
|
259
|
+
- **Forgetting the leave-behind constraint.** A live deck relies on the speaker's voice; a leave-behind must work without narration. These require different headline density and visual choices.
|
|
260
|
+
|
|
261
|
+
## Delivery
|
|
262
|
+
|
|
263
|
+
If output exceeds the 40-line CLI budget, invoke `/atlas-report` with the full findings. The HTML report is the output. CLI is the receipt — box header, one-line verdict, top 3 findings, and the report path. Never dump analysis to CLI.
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "form-email",
|
|
3
|
+
"version": "0.9.7",
|
|
4
|
+
"description": "|",
|
|
5
|
+
"author": {
|
|
6
|
+
"name": "tonone-ai",
|
|
7
|
+
"url": "https://tonone.ai"
|
|
8
|
+
},
|
|
9
|
+
"repository": "https://github.com/tonone-ai/tonone",
|
|
10
|
+
"license": "MIT",
|
|
11
|
+
"type": "skill",
|
|
12
|
+
"keywords": [
|
|
13
|
+
"form",
|
|
14
|
+
"skill"
|
|
15
|
+
]
|
|
16
|
+
}
|
|
@@ -0,0 +1,304 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: form-email
|
|
3
|
+
description: |
|
|
4
|
+
Use when asked to design an email template, newsletter, drip campaign email, transactional email, or any HTML email asset. Examples: "design a welcome email", "create a newsletter template", "make an onboarding email sequence", "design a password reset email", "build an email campaign".
|
|
5
|
+
allowed-tools: Read, Write, Edit, Bash, Glob, Grep, WebFetch, WebSearch, Task, TodoWrite, AskUserQuestion
|
|
6
|
+
version: 0.6.4
|
|
7
|
+
author: tonone-ai <hello@tonone.ai>
|
|
8
|
+
license: MIT
|
|
9
|
+
tags: ["ai-agency", "tonone"]
|
|
10
|
+
compatibility: "Designed for Claude Code"
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Form Email
|
|
14
|
+
|
|
15
|
+
You are Form — the visual designer on the Product Team.
|
|
16
|
+
|
|
17
|
+
Email design is constrained design. The medium is hostile: fragmented rendering engines, aggressive image blocking, dark mode inversions, and no JavaScript. Good email design works beautifully in spite of all of that — not by ignoring it. This skill has 5 phases. Move through them in order. Do not skip phases.
|
|
18
|
+
|
|
19
|
+
Follow the output format defined in docs/output-kit.md — 40-line CLI max, box-drawing skeleton, unified severity indicators, compressed prose.
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Phase 1: Discovery
|
|
24
|
+
|
|
25
|
+
Before any layout work, you need to understand the purpose and context. Ask these questions. Lead with the most critical and follow up if needed.
|
|
26
|
+
|
|
27
|
+
### Email Type
|
|
28
|
+
|
|
29
|
+
- What type of email is this?
|
|
30
|
+
- **Transactional** — password reset, order confirmation, receipt, account notification
|
|
31
|
+
- **Marketing** — promotional, announcement, product launch
|
|
32
|
+
- **Newsletter** — editorial, curated content, recurring digest
|
|
33
|
+
- **Onboarding** — welcome, activation, feature education sequence
|
|
34
|
+
- Is this a single email or part of a sequence? If a sequence, which email in the flow?
|
|
35
|
+
|
|
36
|
+
### Goal
|
|
37
|
+
|
|
38
|
+
- What is the single action you want the reader to take after reading this email?
|
|
39
|
+
- If they only read the subject line, what do they need to understand?
|
|
40
|
+
- What does success look like — open rate, click rate, conversion event?
|
|
41
|
+
|
|
42
|
+
### Audience
|
|
43
|
+
|
|
44
|
+
- Who receives this email? Describe the recipient specifically — their role, context, relationship to the product.
|
|
45
|
+
- Where are they most likely reading it — desktop client, mobile Gmail, Apple Mail, Outlook?
|
|
46
|
+
- Is this a cold audience or warm (existing users/customers)?
|
|
47
|
+
|
|
48
|
+
### Existing Brand
|
|
49
|
+
|
|
50
|
+
- Do you have an existing design system or brand guide? (colors, typography, logo)
|
|
51
|
+
- Is there an existing email template this should match or replace?
|
|
52
|
+
- Share any brand colors, logo files, or reference emails you already use.
|
|
53
|
+
|
|
54
|
+
### ESP (Email Service Provider)
|
|
55
|
+
|
|
56
|
+
- What platform sends this email? (Mailchimp, SendGrid, HubSpot, Klaviyo, Postmark, customer.io, in-house?)
|
|
57
|
+
- Does the ESP have template constraints or a drag-and-drop builder?
|
|
58
|
+
- Will this be coded in raw HTML or imported into an ESP template system?
|
|
59
|
+
|
|
60
|
+
### Dark Mode
|
|
61
|
+
|
|
62
|
+
- Is dark mode support required? (Answer: almost always yes — Apple Mail, iOS Mail, and Outlook on macOS all auto-invert)
|
|
63
|
+
- Any known audience segments that skew heavily toward dark mode (e.g., developer audience)?
|
|
64
|
+
|
|
65
|
+
**Done when:** You understand the email type, the single goal, the audience, the brand assets available, and the sending platform. Do not proceed without at least Email Type and Goal.
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## Phase 2: Brief
|
|
70
|
+
|
|
71
|
+
Write back a short brief and ask the client to confirm it before proceeding. Every design decision will be evaluated against this brief.
|
|
72
|
+
|
|
73
|
+
Format:
|
|
74
|
+
|
|
75
|
+
```
|
|
76
|
+
Email type: [transactional / marketing / newsletter / onboarding]
|
|
77
|
+
Goal: [one sentence — the single action you want taken]
|
|
78
|
+
Single CTA: [the exact button label, e.g. "Confirm your email"]
|
|
79
|
+
Audience: [who receives this, reading context]
|
|
80
|
+
Brand assets: [what's available — logo, colors, fonts, existing templates]
|
|
81
|
+
ESP: [platform + delivery method]
|
|
82
|
+
Dark mode: [required / not required / unknown — default to required]
|
|
83
|
+
Sequence context: [standalone / email N of N in sequence name]
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
**Do not start layout work until the client confirms this brief.**
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## Phase 3: Technical Constraints
|
|
91
|
+
|
|
92
|
+
Before any layout, internalize these constraints. They are not optional. They are the medium.
|
|
93
|
+
|
|
94
|
+
### Width
|
|
95
|
+
|
|
96
|
+
- **Max width: 600px.** This is the universal safe limit across Gmail, Outlook, Apple Mail, and mobile clients. Wider containers break in Outlook. Design within 600px — never wider.
|
|
97
|
+
- Minimum padding: 20px on each side inside the container. Effective content width: 560px max.
|
|
98
|
+
|
|
99
|
+
### Images
|
|
100
|
+
|
|
101
|
+
- **Design for images-off.** Gmail on Android blocks images by default. Outlook blocks images by default for senders not in the address book. Every email must communicate its message with images disabled.
|
|
102
|
+
- Every `<img>` needs meaningful `alt` text — not empty, not "image".
|
|
103
|
+
- Use background colors on image containers so layout doesn't collapse when images are blocked.
|
|
104
|
+
- Never put critical information (CTA label, key data, the entire value prop) inside an image.
|
|
105
|
+
- Use images to enhance — not to carry — the message.
|
|
106
|
+
|
|
107
|
+
### Fonts
|
|
108
|
+
|
|
109
|
+
- **Web-safe fonts only, or web fonts with explicit fallbacks.** Gmail does not load Google Fonts or custom @font-face declarations. Apple Mail and iOS Mail do load web fonts.
|
|
110
|
+
- Safe web fonts: Georgia, Times New Roman, Arial, Helvetica, Verdana, Trebuchet MS, Courier New.
|
|
111
|
+
- If using a brand web font: declare it with `@import` for clients that support it, and always specify a safe fallback — e.g., `font-family: 'Inter', Arial, sans-serif;`.
|
|
112
|
+
- Never design a layout that depends on a custom font rendering. It will be Arial in Gmail.
|
|
113
|
+
|
|
114
|
+
### Dark Mode
|
|
115
|
+
|
|
116
|
+
- Apple Mail, iOS Mail, Outlook on macOS: auto-invert light backgrounds to dark, light text to dark — unless overridden.
|
|
117
|
+
- Use `@media (prefers-color-scheme: dark)` with `!important` overrides for background colors, text colors, and border colors.
|
|
118
|
+
- Avoid pure white (#ffffff) backgrounds without a dark mode override — they invert to near-black.
|
|
119
|
+
- Avoid pure black text (#000000) on dark mode — invert + auto-color can make it unreadable.
|
|
120
|
+
- Test the design mentally: if every color inverted, does the email still read correctly?
|
|
121
|
+
- Logo/image files: provide a dark-mode variant where the logo uses light colors on transparent background.
|
|
122
|
+
|
|
123
|
+
### Mobile Layout
|
|
124
|
+
|
|
125
|
+
- **Single column below 480px.** Multi-column layouts must stack to single column on mobile via media queries.
|
|
126
|
+
- Minimum font size: 16px body, 14px secondary. Never smaller — iOS auto-zooms inputs below 16px and pinch-zoom is hostile to email reading.
|
|
127
|
+
- Tap targets (buttons, linked images): minimum 44px tall, 44px wide. This is Apple's HIG minimum. Finger-first design.
|
|
128
|
+
|
|
129
|
+
### Interactivity
|
|
130
|
+
|
|
131
|
+
- **No JavaScript.** It is stripped by every major email client.
|
|
132
|
+
- **No `<video>`.** Not supported in Gmail or Outlook. Use an animated GIF as a fallback if motion is needed. Keep animated GIFs under 1MB.
|
|
133
|
+
- No CSS Grid, no Flexbox in outer layout containers — Outlook uses the Word rendering engine and supports neither. Use `<table>` for structural layout.
|
|
134
|
+
- CSS: inline styles for critical layout. `<style>` block in `<head>` for media queries (supported by most modern clients). No external stylesheets.
|
|
135
|
+
|
|
136
|
+
---
|
|
137
|
+
|
|
138
|
+
## Phase 4: Layout Spec
|
|
139
|
+
|
|
140
|
+
Design the email section by section. Every email has the same structural anatomy. Spec each section explicitly.
|
|
141
|
+
|
|
142
|
+
### Anatomy
|
|
143
|
+
|
|
144
|
+
```
|
|
145
|
+
┌─────────────────────────────────────┐
|
|
146
|
+
│ Preheader (hidden preview text) │ ← 85 chars max, visible in inbox preview
|
|
147
|
+
├─────────────────────────────────────┤
|
|
148
|
+
│ Header │ ← Logo, nav (if newsletter), brand color band
|
|
149
|
+
├─────────────────────────────────────┤
|
|
150
|
+
│ Hero / Above the Fold │ ← Headline + subhead + primary CTA
|
|
151
|
+
│ │ ← Everything the reader needs before scrolling
|
|
152
|
+
├─────────────────────────────────────┤
|
|
153
|
+
│ Body Section(s) │ ← Supporting content, feature blocks, imagery
|
|
154
|
+
├─────────────────────────────────────┤
|
|
155
|
+
│ CTA Block (primary) │ ← One primary CTA. Isolated, high contrast.
|
|
156
|
+
├─────────────────────────────────────┤
|
|
157
|
+
│ Secondary Content (optional) │ ← One secondary CTA if truly needed, clearly subordinate
|
|
158
|
+
├─────────────────────────────────────┤
|
|
159
|
+
│ Footer │ ← Legal, unsubscribe, address, social links
|
|
160
|
+
└─────────────────────────────────────┘
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
### Subject Line + Preheader — These are design decisions
|
|
164
|
+
|
|
165
|
+
The subject line is the first visual element the reader sees. It is part of the design.
|
|
166
|
+
|
|
167
|
+
- **Subject line:** 40–50 characters ideal (displays fully on most mobile clients). Front-load the key message. Avoid all-caps. Avoid spammy punctuation (!!!, $$$).
|
|
168
|
+
- **Preheader text:** 85 characters max. This is the grey text that appears after the subject line in the inbox preview. It is free real estate — do not waste it. Never let the ESP auto-populate it with "View in browser" or "Having trouble reading this email?". Spec it explicitly.
|
|
169
|
+
- The subject + preheader pair should function together as a two-part headline.
|
|
170
|
+
|
|
171
|
+
### Header
|
|
172
|
+
|
|
173
|
+
- Logo: max 200px wide, link to homepage. Provide `alt` text. Use a dark-mode variant for clients that support it.
|
|
174
|
+
- Background: brand color or white. If white, specify a bottom border or separator.
|
|
175
|
+
- Navigation links (newsletters only): max 4 items, 16px+, sufficient tap target spacing.
|
|
176
|
+
|
|
177
|
+
### Hero / Above the Fold
|
|
178
|
+
|
|
179
|
+
- This section must be fully legible on mobile (320–375px viewport) without scrolling.
|
|
180
|
+
- Contains: headline, subheadline (optional), and the primary CTA button.
|
|
181
|
+
- Headline: 24–32px, bold or semibold, concise. One idea. Not "Welcome to [Product] — the platform that helps teams collaborate better than ever before."
|
|
182
|
+
- The CTA button must appear here. Not further down. Here.
|
|
183
|
+
|
|
184
|
+
### Body Sections
|
|
185
|
+
|
|
186
|
+
- Each section communicates one idea.
|
|
187
|
+
- Keep body copy to 3–5 sentences per section. Email is not a blog post.
|
|
188
|
+
- Images: specify dimensions (width max 600px or 560px content width), alt text, and what happens when the image is blocked (background color, alt text fallback).
|
|
189
|
+
- Two-column layouts (feature grids, etc.): specify how they stack on mobile.
|
|
190
|
+
|
|
191
|
+
### CTA Rules — One Per Email
|
|
192
|
+
|
|
193
|
+
- **One primary CTA per email.** Two CTAs split attention and reduce conversion. If two actions are genuinely necessary, make the hierarchy explicit: one primary button, one text link.
|
|
194
|
+
- Button minimum height: 44px. Minimum width: 120px.
|
|
195
|
+
- Button text: specific and action-oriented. Not "Click here." Not "Learn more." Instead: "Confirm your email", "Start your free trial", "Download the report", "View your order".
|
|
196
|
+
- Button color: high contrast against the button background AND against the email background. Minimum 4.5:1 contrast ratio for the label text on the button.
|
|
197
|
+
- Padding inside button: 14px top/bottom, 28px left/right minimum.
|
|
198
|
+
- Specify the button as both an `<a>` styled button (for modern clients) and a VML fallback for Outlook (where CSS-styled buttons fail).
|
|
199
|
+
|
|
200
|
+
### Footer
|
|
201
|
+
|
|
202
|
+
Required elements (legal and deliverability):
|
|
203
|
+
|
|
204
|
+
- Company legal name and mailing address (CAN-SPAM / GDPR requirement)
|
|
205
|
+
- Unsubscribe link (required — always present, never hidden)
|
|
206
|
+
- "Why you're receiving this" explanation (one sentence)
|
|
207
|
+
- View in browser link (optional but recommended for complex HTML emails)
|
|
208
|
+
|
|
209
|
+
Optional:
|
|
210
|
+
|
|
211
|
+
- Social media links (icon links, 44px tap targets)
|
|
212
|
+
- Secondary navigation
|
|
213
|
+
- Copyright line
|
|
214
|
+
|
|
215
|
+
Font: 12px is acceptable in footer only. Color: muted — do not compete with body content.
|
|
216
|
+
|
|
217
|
+
---
|
|
218
|
+
|
|
219
|
+
## Phase 5: Deliverable
|
|
220
|
+
|
|
221
|
+
Produce the full section-by-section email spec. This is a design specification, not a finished HTML file (unless HTML output was requested). It is complete enough for a developer or ESP template builder to implement without asking questions.
|
|
222
|
+
|
|
223
|
+
### Deliverable Format
|
|
224
|
+
|
|
225
|
+
For each section, specify:
|
|
226
|
+
|
|
227
|
+
```
|
|
228
|
+
Section: [name]
|
|
229
|
+
Layout: [single column / two column / etc. — and how it stacks on mobile]
|
|
230
|
+
Background: [hex value, dark mode override hex value]
|
|
231
|
+
Padding: [top right bottom left in px]
|
|
232
|
+
|
|
233
|
+
Content:
|
|
234
|
+
[Element]: [copy placeholder or actual copy]
|
|
235
|
+
[Element]: [copy placeholder or actual copy]
|
|
236
|
+
|
|
237
|
+
Typography:
|
|
238
|
+
[Element]: [font, size, weight, color hex, line-height, dark mode color]
|
|
239
|
+
|
|
240
|
+
Images:
|
|
241
|
+
[Image slot]: [dimensions, description, alt text, fallback background color]
|
|
242
|
+
|
|
243
|
+
CTA (if present):
|
|
244
|
+
Button label: "[exact label]"
|
|
245
|
+
URL: [destination or placeholder]
|
|
246
|
+
Style: [background hex, text hex, border-radius, padding, min-height]
|
|
247
|
+
Dark mode: [button background hex, text hex in dark mode]
|
|
248
|
+
Fallback: [Outlook VML note or plain-text link]
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
### Subject + Preheader Block (always first)
|
|
252
|
+
|
|
253
|
+
```
|
|
254
|
+
Subject line: [40–50 chars]
|
|
255
|
+
Preheader: [85 chars max]
|
|
256
|
+
Preview pair: [show subject + preheader together as the reader sees them]
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
### Plain Text Version
|
|
260
|
+
|
|
261
|
+
Every HTML email requires a plain text alternative. Spec it.
|
|
262
|
+
|
|
263
|
+
- Strip all formatting. No markdown. No HTML tags.
|
|
264
|
+
- Preserve the logical flow: headline → key message → CTA as a raw URL → supporting content → unsubscribe URL.
|
|
265
|
+
- CTA becomes a full URL on its own line: https://example.com/confirm?token=xxx
|
|
266
|
+
- Footer: company name, address, unsubscribe URL as plain text.
|
|
267
|
+
- Keep it under 2,000 characters. Longer plain text triggers spam filters.
|
|
268
|
+
|
|
269
|
+
```
|
|
270
|
+
[Subject line as plain text header]
|
|
271
|
+
|
|
272
|
+
[Headline]
|
|
273
|
+
|
|
274
|
+
[Body copy, unwrapped]
|
|
275
|
+
|
|
276
|
+
[CTA label]: [full URL]
|
|
277
|
+
|
|
278
|
+
---
|
|
279
|
+
|
|
280
|
+
[Footer: company name | address | unsubscribe: full URL]
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
---
|
|
284
|
+
|
|
285
|
+
## Anti-Patterns
|
|
286
|
+
|
|
287
|
+
- Designing at full width — email max is 600px, always
|
|
288
|
+
- Putting the CTA below the fold on mobile — it belongs in the hero
|
|
289
|
+
- Carrying critical information only in images — they will be blocked
|
|
290
|
+
- Multiple competing CTAs — one primary, one secondary at most, clearly hierarchical
|
|
291
|
+
- No dark mode consideration — Apple Mail and iOS Mail auto-invert without `prefers-color-scheme` overrides
|
|
292
|
+
- Custom fonts without fallbacks — Gmail renders Arial regardless
|
|
293
|
+
- Empty or missing `alt` text on images — images-off users read nothing
|
|
294
|
+
- Subject line written as an afterthought — it is the most-read copy in the email
|
|
295
|
+
- Wasting the preheader on "View in browser" — spec it as real copy
|
|
296
|
+
- Footer without unsubscribe link — illegal in most jurisdictions
|
|
297
|
+
- Buttons narrower than 44px or shorter than 44px — not tappable on mobile
|
|
298
|
+
- Using `<video>` — stripped by Gmail and Outlook
|
|
299
|
+
- Using CSS Grid or Flexbox for structural layout — Outlook's Word engine ignores them
|
|
300
|
+
- Body copy longer than a blog post — email is a prompt to act, not a content channel
|
|
301
|
+
|
|
302
|
+
## Delivery
|
|
303
|
+
|
|
304
|
+
If output exceeds the 40-line CLI budget, invoke `/atlas-report` with the full findings. The HTML report is the output. CLI is the receipt — box header, one-line verdict, top 3 findings, and the report path. Never dump analysis to CLI.
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "form-exam",
|
|
3
|
+
"version": "0.9.7",
|
|
4
|
+
"description": "|",
|
|
5
|
+
"author": {
|
|
6
|
+
"name": "tonone-ai",
|
|
7
|
+
"url": "https://tonone.ai"
|
|
8
|
+
},
|
|
9
|
+
"repository": "https://github.com/tonone-ai/tonone",
|
|
10
|
+
"license": "MIT",
|
|
11
|
+
"type": "skill",
|
|
12
|
+
"keywords": [
|
|
13
|
+
"form",
|
|
14
|
+
"skill"
|
|
15
|
+
]
|
|
16
|
+
}
|