@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.
Files changed (330) hide show
  1. package/.claude-plugin/CLAUDE.md +11 -0
  2. package/.claude-plugin/marketplace.json +2178 -0
  3. package/.claude-plugin/plugin.json +135 -0
  4. package/LICENSE +21 -0
  5. package/README.md +462 -0
  6. package/agents/apex.md +247 -0
  7. package/agents/atlas.md +181 -0
  8. package/agents/cortex.md +173 -0
  9. package/agents/crest.md +130 -0
  10. package/agents/draft.md +190 -0
  11. package/agents/echo.md +146 -0
  12. package/agents/flux.md +145 -0
  13. package/agents/forge.md +121 -0
  14. package/agents/form.md +244 -0
  15. package/agents/helm.md +180 -0
  16. package/agents/lens.md +145 -0
  17. package/agents/lumen.md +139 -0
  18. package/agents/pave.md +169 -0
  19. package/agents/pitch.md +177 -0
  20. package/agents/prism.md +181 -0
  21. package/agents/proof.md +205 -0
  22. package/agents/relay.md +147 -0
  23. package/agents/spine.md +207 -0
  24. package/agents/surge.md +127 -0
  25. package/agents/touch.md +185 -0
  26. package/agents/vigil.md +165 -0
  27. package/agents/volt.md +184 -0
  28. package/agents/warden.md +172 -0
  29. package/package.json +48 -0
  30. package/skills/apex/SKILL.md +32 -0
  31. package/skills/apex-plan/.claude-plugin/plugin.json +16 -0
  32. package/skills/apex-plan/SKILL.md +59 -0
  33. package/skills/apex-recon/.claude-plugin/plugin.json +16 -0
  34. package/skills/apex-recon/SKILL.md +91 -0
  35. package/skills/apex-review/.claude-plugin/plugin.json +16 -0
  36. package/skills/apex-review/SKILL.md +53 -0
  37. package/skills/apex-status/.claude-plugin/plugin.json +16 -0
  38. package/skills/apex-status/SKILL.md +42 -0
  39. package/skills/apex-takeover/.claude-plugin/plugin.json +16 -0
  40. package/skills/apex-takeover/SKILL.md +50 -0
  41. package/skills/atlas/SKILL.md +34 -0
  42. package/skills/atlas-adr/.claude-plugin/plugin.json +16 -0
  43. package/skills/atlas-adr/SKILL.md +147 -0
  44. package/skills/atlas-changelog/.claude-plugin/plugin.json +16 -0
  45. package/skills/atlas-changelog/SKILL.md +156 -0
  46. package/skills/atlas-map/.claude-plugin/plugin.json +16 -0
  47. package/skills/atlas-map/SKILL.md +183 -0
  48. package/skills/atlas-onboard/.claude-plugin/plugin.json +16 -0
  49. package/skills/atlas-onboard/SKILL.md +138 -0
  50. package/skills/atlas-present/.claude-plugin/plugin.json +16 -0
  51. package/skills/atlas-present/SKILL.md +214 -0
  52. package/skills/atlas-recon/.claude-plugin/plugin.json +16 -0
  53. package/skills/atlas-recon/SKILL.md +101 -0
  54. package/skills/atlas-report/.claude-plugin/plugin.json +16 -0
  55. package/skills/atlas-report/SKILL.md +304 -0
  56. package/skills/cortex/SKILL.md +32 -0
  57. package/skills/cortex-eval/.claude-plugin/plugin.json +16 -0
  58. package/skills/cortex-eval/SKILL.md +143 -0
  59. package/skills/cortex-integrate/.claude-plugin/plugin.json +16 -0
  60. package/skills/cortex-integrate/SKILL.md +218 -0
  61. package/skills/cortex-model/.claude-plugin/plugin.json +16 -0
  62. package/skills/cortex-model/SKILL.md +138 -0
  63. package/skills/cortex-prompt/.claude-plugin/plugin.json +16 -0
  64. package/skills/cortex-prompt/SKILL.md +246 -0
  65. package/skills/cortex-recon/.claude-plugin/plugin.json +16 -0
  66. package/skills/cortex-recon/SKILL.md +156 -0
  67. package/skills/crest/SKILL.md +32 -0
  68. package/skills/crest-compete/.claude-plugin/plugin.json +16 -0
  69. package/skills/crest-compete/SKILL.md +158 -0
  70. package/skills/crest-narrative/.claude-plugin/plugin.json +16 -0
  71. package/skills/crest-narrative/SKILL.md +124 -0
  72. package/skills/crest-okr/.claude-plugin/plugin.json +16 -0
  73. package/skills/crest-okr/SKILL.md +119 -0
  74. package/skills/crest-recon/.claude-plugin/plugin.json +16 -0
  75. package/skills/crest-recon/SKILL.md +91 -0
  76. package/skills/crest-roadmap/.claude-plugin/plugin.json +16 -0
  77. package/skills/crest-roadmap/SKILL.md +129 -0
  78. package/skills/draft/SKILL.md +34 -0
  79. package/skills/draft-flow/.claude-plugin/plugin.json +16 -0
  80. package/skills/draft-flow/SKILL.md +93 -0
  81. package/skills/draft-ia/.claude-plugin/plugin.json +16 -0
  82. package/skills/draft-ia/SKILL.md +204 -0
  83. package/skills/draft-landing/.claude-plugin/plugin.json +16 -0
  84. package/skills/draft-landing/SKILL.md +60 -0
  85. package/skills/draft-patterns/.claude-plugin/plugin.json +16 -0
  86. package/skills/draft-patterns/SKILL.md +55 -0
  87. package/skills/draft-recon/.claude-plugin/plugin.json +16 -0
  88. package/skills/draft-recon/SKILL.md +108 -0
  89. package/skills/draft-review/.claude-plugin/plugin.json +16 -0
  90. package/skills/draft-review/SKILL.md +131 -0
  91. package/skills/draft-wireframe/.claude-plugin/plugin.json +16 -0
  92. package/skills/draft-wireframe/SKILL.md +167 -0
  93. package/skills/echo/SKILL.md +32 -0
  94. package/skills/echo-feedback/.claude-plugin/plugin.json +16 -0
  95. package/skills/echo-feedback/SKILL.md +129 -0
  96. package/skills/echo-interview/.claude-plugin/plugin.json +16 -0
  97. package/skills/echo-interview/SKILL.md +189 -0
  98. package/skills/echo-jobs/.claude-plugin/plugin.json +16 -0
  99. package/skills/echo-jobs/SKILL.md +193 -0
  100. package/skills/echo-recon/.claude-plugin/plugin.json +16 -0
  101. package/skills/echo-recon/SKILL.md +96 -0
  102. package/skills/echo-segment/.claude-plugin/plugin.json +16 -0
  103. package/skills/echo-segment/SKILL.md +105 -0
  104. package/skills/flux/SKILL.md +33 -0
  105. package/skills/flux-health/.claude-plugin/plugin.json +16 -0
  106. package/skills/flux-health/SKILL.md +97 -0
  107. package/skills/flux-migrate/.claude-plugin/plugin.json +16 -0
  108. package/skills/flux-migrate/SKILL.md +176 -0
  109. package/skills/flux-pipeline/.claude-plugin/plugin.json +16 -0
  110. package/skills/flux-pipeline/SKILL.md +86 -0
  111. package/skills/flux-query/.claude-plugin/plugin.json +16 -0
  112. package/skills/flux-query/SKILL.md +87 -0
  113. package/skills/flux-recon/.claude-plugin/plugin.json +16 -0
  114. package/skills/flux-recon/SKILL.md +101 -0
  115. package/skills/flux-schema/.claude-plugin/plugin.json +16 -0
  116. package/skills/flux-schema/SKILL.md +125 -0
  117. package/skills/forge/SKILL.md +33 -0
  118. package/skills/forge-audit/.claude-plugin/plugin.json +16 -0
  119. package/skills/forge-audit/SKILL.md +117 -0
  120. package/skills/forge-cost/.claude-plugin/plugin.json +16 -0
  121. package/skills/forge-cost/SKILL.md +144 -0
  122. package/skills/forge-diagnose/.claude-plugin/plugin.json +16 -0
  123. package/skills/forge-diagnose/SKILL.md +122 -0
  124. package/skills/forge-infra/.claude-plugin/plugin.json +16 -0
  125. package/skills/forge-infra/SKILL.md +169 -0
  126. package/skills/forge-network/.claude-plugin/plugin.json +16 -0
  127. package/skills/forge-network/SKILL.md +106 -0
  128. package/skills/forge-recon/.claude-plugin/plugin.json +16 -0
  129. package/skills/forge-recon/SKILL.md +143 -0
  130. package/skills/form/SKILL.md +40 -0
  131. package/skills/form-audit/.claude-plugin/plugin.json +16 -0
  132. package/skills/form-audit/SKILL.md +290 -0
  133. package/skills/form-brand/.claude-plugin/plugin.json +16 -0
  134. package/skills/form-brand/SKILL.md +214 -0
  135. package/skills/form-component/.claude-plugin/plugin.json +16 -0
  136. package/skills/form-component/SKILL.md +336 -0
  137. package/skills/form-deck/.claude-plugin/plugin.json +16 -0
  138. package/skills/form-deck/SKILL.md +263 -0
  139. package/skills/form-email/.claude-plugin/plugin.json +16 -0
  140. package/skills/form-email/SKILL.md +304 -0
  141. package/skills/form-exam/.claude-plugin/plugin.json +16 -0
  142. package/skills/form-exam/SKILL.md +103 -0
  143. package/skills/form-logo/.claude-plugin/plugin.json +16 -0
  144. package/skills/form-logo/SKILL.md +231 -0
  145. package/skills/form-mobile/.claude-plugin/plugin.json +16 -0
  146. package/skills/form-mobile/SKILL.md +276 -0
  147. package/skills/form-palette/.claude-plugin/plugin.json +16 -0
  148. package/skills/form-palette/SKILL.md +68 -0
  149. package/skills/form-social/.claude-plugin/plugin.json +16 -0
  150. package/skills/form-social/SKILL.md +272 -0
  151. package/skills/form-style/.claude-plugin/plugin.json +16 -0
  152. package/skills/form-style/SKILL.md +63 -0
  153. package/skills/form-tokens/.claude-plugin/plugin.json +16 -0
  154. package/skills/form-tokens/SKILL.md +760 -0
  155. package/skills/form-web/.claude-plugin/plugin.json +16 -0
  156. package/skills/form-web/SKILL.md +254 -0
  157. package/skills/helm/SKILL.md +32 -0
  158. package/skills/helm-arbiter/.claude-plugin/plugin.json +16 -0
  159. package/skills/helm-arbiter/SKILL.md +104 -0
  160. package/skills/helm-brief/.claude-plugin/plugin.json +16 -0
  161. package/skills/helm-brief/SKILL.md +105 -0
  162. package/skills/helm-handoff/.claude-plugin/plugin.json +16 -0
  163. package/skills/helm-handoff/SKILL.md +102 -0
  164. package/skills/helm-plan/.claude-plugin/plugin.json +16 -0
  165. package/skills/helm-plan/SKILL.md +73 -0
  166. package/skills/helm-recon/.claude-plugin/plugin.json +16 -0
  167. package/skills/helm-recon/SKILL.md +99 -0
  168. package/skills/lens/SKILL.md +33 -0
  169. package/skills/lens-audit/.claude-plugin/plugin.json +16 -0
  170. package/skills/lens-audit/SKILL.md +101 -0
  171. package/skills/lens-chart/.claude-plugin/plugin.json +16 -0
  172. package/skills/lens-chart/SKILL.md +59 -0
  173. package/skills/lens-dashboard/.claude-plugin/plugin.json +16 -0
  174. package/skills/lens-dashboard/SKILL.md +212 -0
  175. package/skills/lens-metrics/.claude-plugin/plugin.json +16 -0
  176. package/skills/lens-metrics/SKILL.md +298 -0
  177. package/skills/lens-recon/.claude-plugin/plugin.json +16 -0
  178. package/skills/lens-recon/SKILL.md +106 -0
  179. package/skills/lens-report/.claude-plugin/plugin.json +16 -0
  180. package/skills/lens-report/SKILL.md +158 -0
  181. package/skills/lumen/SKILL.md +32 -0
  182. package/skills/lumen-abtest/.claude-plugin/plugin.json +16 -0
  183. package/skills/lumen-abtest/SKILL.md +217 -0
  184. package/skills/lumen-funnel/.claude-plugin/plugin.json +16 -0
  185. package/skills/lumen-funnel/SKILL.md +108 -0
  186. package/skills/lumen-instrument/.claude-plugin/plugin.json +16 -0
  187. package/skills/lumen-instrument/SKILL.md +130 -0
  188. package/skills/lumen-metrics/.claude-plugin/plugin.json +16 -0
  189. package/skills/lumen-metrics/SKILL.md +189 -0
  190. package/skills/lumen-recon/.claude-plugin/plugin.json +16 -0
  191. package/skills/lumen-recon/SKILL.md +108 -0
  192. package/skills/pave/SKILL.md +32 -0
  193. package/skills/pave-audit/.claude-plugin/plugin.json +16 -0
  194. package/skills/pave-audit/SKILL.md +109 -0
  195. package/skills/pave-catalog/.claude-plugin/plugin.json +16 -0
  196. package/skills/pave-catalog/SKILL.md +202 -0
  197. package/skills/pave-env/.claude-plugin/plugin.json +16 -0
  198. package/skills/pave-env/SKILL.md +102 -0
  199. package/skills/pave-golden/.claude-plugin/plugin.json +16 -0
  200. package/skills/pave-golden/SKILL.md +173 -0
  201. package/skills/pave-recon/.claude-plugin/plugin.json +16 -0
  202. package/skills/pave-recon/SKILL.md +118 -0
  203. package/skills/pitch/SKILL.md +33 -0
  204. package/skills/pitch-copy/.claude-plugin/plugin.json +16 -0
  205. package/skills/pitch-copy/SKILL.md +133 -0
  206. package/skills/pitch-landing/.claude-plugin/plugin.json +16 -0
  207. package/skills/pitch-landing/SKILL.md +62 -0
  208. package/skills/pitch-launch/.claude-plugin/plugin.json +16 -0
  209. package/skills/pitch-launch/SKILL.md +222 -0
  210. package/skills/pitch-message/.claude-plugin/plugin.json +16 -0
  211. package/skills/pitch-message/SKILL.md +98 -0
  212. package/skills/pitch-position/.claude-plugin/plugin.json +16 -0
  213. package/skills/pitch-position/SKILL.md +195 -0
  214. package/skills/pitch-recon/.claude-plugin/plugin.json +16 -0
  215. package/skills/pitch-recon/SKILL.md +102 -0
  216. package/skills/prism/SKILL.md +34 -0
  217. package/skills/prism-audit/.claude-plugin/plugin.json +16 -0
  218. package/skills/prism-audit/SKILL.md +129 -0
  219. package/skills/prism-chart/.claude-plugin/plugin.json +16 -0
  220. package/skills/prism-chart/SKILL.md +56 -0
  221. package/skills/prism-component/.claude-plugin/plugin.json +16 -0
  222. package/skills/prism-component/SKILL.md +270 -0
  223. package/skills/prism-dashboard/.claude-plugin/plugin.json +16 -0
  224. package/skills/prism-dashboard/SKILL.md +108 -0
  225. package/skills/prism-recon/.claude-plugin/plugin.json +16 -0
  226. package/skills/prism-recon/SKILL.md +109 -0
  227. package/skills/prism-stack/.claude-plugin/plugin.json +16 -0
  228. package/skills/prism-stack/SKILL.md +58 -0
  229. package/skills/prism-ui/.claude-plugin/plugin.json +16 -0
  230. package/skills/prism-ui/SKILL.md +247 -0
  231. package/skills/proof/SKILL.md +33 -0
  232. package/skills/proof-api/.claude-plugin/plugin.json +16 -0
  233. package/skills/proof-api/SKILL.md +86 -0
  234. package/skills/proof-audit/.claude-plugin/plugin.json +16 -0
  235. package/skills/proof-audit/SKILL.md +97 -0
  236. package/skills/proof-design/.claude-plugin/plugin.json +16 -0
  237. package/skills/proof-design/SKILL.md +133 -0
  238. package/skills/proof-e2e/.claude-plugin/plugin.json +16 -0
  239. package/skills/proof-e2e/SKILL.md +309 -0
  240. package/skills/proof-recon/.claude-plugin/plugin.json +16 -0
  241. package/skills/proof-recon/SKILL.md +98 -0
  242. package/skills/proof-strategy/.claude-plugin/plugin.json +16 -0
  243. package/skills/proof-strategy/SKILL.md +150 -0
  244. package/skills/relay/SKILL.md +33 -0
  245. package/skills/relay-audit/.claude-plugin/plugin.json +16 -0
  246. package/skills/relay-audit/SKILL.md +101 -0
  247. package/skills/relay-deploy/.claude-plugin/plugin.json +16 -0
  248. package/skills/relay-deploy/SKILL.md +404 -0
  249. package/skills/relay-docker/.claude-plugin/plugin.json +16 -0
  250. package/skills/relay-docker/SKILL.md +73 -0
  251. package/skills/relay-pipeline/.claude-plugin/plugin.json +16 -0
  252. package/skills/relay-pipeline/SKILL.md +267 -0
  253. package/skills/relay-recon/.claude-plugin/plugin.json +16 -0
  254. package/skills/relay-recon/SKILL.md +108 -0
  255. package/skills/relay-ship/.claude-plugin/plugin.json +16 -0
  256. package/skills/relay-ship/SKILL.md +253 -0
  257. package/skills/spine/SKILL.md +33 -0
  258. package/skills/spine-api/.claude-plugin/plugin.json +16 -0
  259. package/skills/spine-api/SKILL.md +184 -0
  260. package/skills/spine-design/.claude-plugin/plugin.json +16 -0
  261. package/skills/spine-design/SKILL.md +193 -0
  262. package/skills/spine-perf/.claude-plugin/plugin.json +16 -0
  263. package/skills/spine-perf/SKILL.md +120 -0
  264. package/skills/spine-recon/.claude-plugin/plugin.json +16 -0
  265. package/skills/spine-recon/SKILL.md +130 -0
  266. package/skills/spine-review/.claude-plugin/plugin.json +16 -0
  267. package/skills/spine-review/SKILL.md +122 -0
  268. package/skills/spine-service/.claude-plugin/plugin.json +16 -0
  269. package/skills/spine-service/SKILL.md +77 -0
  270. package/skills/surge/SKILL.md +33 -0
  271. package/skills/surge-activation/.claude-plugin/plugin.json +16 -0
  272. package/skills/surge-activation/SKILL.md +130 -0
  273. package/skills/surge-experiment/.claude-plugin/plugin.json +16 -0
  274. package/skills/surge-experiment/SKILL.md +134 -0
  275. package/skills/surge-landing/.claude-plugin/plugin.json +16 -0
  276. package/skills/surge-landing/SKILL.md +65 -0
  277. package/skills/surge-plg/.claude-plugin/plugin.json +16 -0
  278. package/skills/surge-plg/SKILL.md +243 -0
  279. package/skills/surge-recon/.claude-plugin/plugin.json +16 -0
  280. package/skills/surge-recon/SKILL.md +109 -0
  281. package/skills/surge-retention/.claude-plugin/plugin.json +16 -0
  282. package/skills/surge-retention/SKILL.md +222 -0
  283. package/skills/tonone-onboard/.claude-plugin/plugin.json +17 -0
  284. package/skills/tonone-onboard/SKILL.md +158 -0
  285. package/skills/touch/SKILL.md +33 -0
  286. package/skills/touch-app/.claude-plugin/plugin.json +16 -0
  287. package/skills/touch-app/SKILL.md +335 -0
  288. package/skills/touch-audit/.claude-plugin/plugin.json +16 -0
  289. package/skills/touch-audit/SKILL.md +190 -0
  290. package/skills/touch-feature/.claude-plugin/plugin.json +16 -0
  291. package/skills/touch-feature/SKILL.md +242 -0
  292. package/skills/touch-recon/.claude-plugin/plugin.json +16 -0
  293. package/skills/touch-recon/SKILL.md +194 -0
  294. package/skills/touch-release/.claude-plugin/plugin.json +16 -0
  295. package/skills/touch-release/SKILL.md +216 -0
  296. package/skills/touch-ui/.claude-plugin/plugin.json +16 -0
  297. package/skills/touch-ui/SKILL.md +58 -0
  298. package/skills/vigil/SKILL.md +32 -0
  299. package/skills/vigil-alert/.claude-plugin/plugin.json +16 -0
  300. package/skills/vigil-alert/SKILL.md +291 -0
  301. package/skills/vigil-check/.claude-plugin/plugin.json +16 -0
  302. package/skills/vigil-check/SKILL.md +108 -0
  303. package/skills/vigil-incident/.claude-plugin/plugin.json +16 -0
  304. package/skills/vigil-incident/SKILL.md +152 -0
  305. package/skills/vigil-instrument/.claude-plugin/plugin.json +16 -0
  306. package/skills/vigil-instrument/SKILL.md +324 -0
  307. package/skills/vigil-recon/.claude-plugin/plugin.json +16 -0
  308. package/skills/vigil-recon/SKILL.md +114 -0
  309. package/skills/volt/SKILL.md +32 -0
  310. package/skills/volt-driver/.claude-plugin/plugin.json +16 -0
  311. package/skills/volt-driver/SKILL.md +112 -0
  312. package/skills/volt-firmware/.claude-plugin/plugin.json +16 -0
  313. package/skills/volt-firmware/SKILL.md +271 -0
  314. package/skills/volt-ota/.claude-plugin/plugin.json +16 -0
  315. package/skills/volt-ota/SKILL.md +312 -0
  316. package/skills/volt-power/.claude-plugin/plugin.json +16 -0
  317. package/skills/volt-power/SKILL.md +112 -0
  318. package/skills/volt-recon/.claude-plugin/plugin.json +16 -0
  319. package/skills/volt-recon/SKILL.md +100 -0
  320. package/skills/warden/SKILL.md +32 -0
  321. package/skills/warden-audit/.claude-plugin/plugin.json +16 -0
  322. package/skills/warden-audit/SKILL.md +103 -0
  323. package/skills/warden-harden/.claude-plugin/plugin.json +16 -0
  324. package/skills/warden-harden/SKILL.md +245 -0
  325. package/skills/warden-iam/.claude-plugin/plugin.json +16 -0
  326. package/skills/warden-iam/SKILL.md +102 -0
  327. package/skills/warden-recon/.claude-plugin/plugin.json +16 -0
  328. package/skills/warden-recon/SKILL.md +115 -0
  329. package/skills/warden-threat/.claude-plugin/plugin.json +16 -0
  330. 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
+ }