myaiforone 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (315) hide show
  1. package/README.md +113 -0
  2. package/agents/_template/CLAUDE.md +18 -0
  3. package/agents/_template/agent.json +7 -0
  4. package/agents/platform/agentcreator/CLAUDE.md +300 -0
  5. package/agents/platform/appcreator/CLAUDE.md +158 -0
  6. package/agents/platform/gym/CLAUDE.md +486 -0
  7. package/agents/platform/gym/agent.json +40 -0
  8. package/agents/platform/gym/programs/agent-building/program.json +160 -0
  9. package/agents/platform/gym/programs/automations-mastery/program.json +129 -0
  10. package/agents/platform/gym/programs/getting-started/program.json +124 -0
  11. package/agents/platform/gym/programs/mcp-integrations/program.json +116 -0
  12. package/agents/platform/gym/programs/multi-model-strategy/program.json +115 -0
  13. package/agents/platform/gym/programs/prompt-engineering/program.json +136 -0
  14. package/agents/platform/gym/souls/alex.md +12 -0
  15. package/agents/platform/gym/souls/jordan.md +12 -0
  16. package/agents/platform/gym/souls/morgan.md +12 -0
  17. package/agents/platform/gym/souls/riley.md +12 -0
  18. package/agents/platform/gym/souls/sam.md +12 -0
  19. package/agents/platform/hub/CLAUDE.md +372 -0
  20. package/agents/platform/promptcreator/CLAUDE.md +130 -0
  21. package/agents/platform/skillcreator/CLAUDE.md +163 -0
  22. package/bin/cli.js +566 -0
  23. package/config.example.json +310 -0
  24. package/dist/agent-registry.d.ts +32 -0
  25. package/dist/agent-registry.d.ts.map +1 -0
  26. package/dist/agent-registry.js +144 -0
  27. package/dist/agent-registry.js.map +1 -0
  28. package/dist/channels/discord.d.ts +17 -0
  29. package/dist/channels/discord.d.ts.map +1 -0
  30. package/dist/channels/discord.js +114 -0
  31. package/dist/channels/discord.js.map +1 -0
  32. package/dist/channels/imessage.d.ts +23 -0
  33. package/dist/channels/imessage.d.ts.map +1 -0
  34. package/dist/channels/imessage.js +214 -0
  35. package/dist/channels/imessage.js.map +1 -0
  36. package/dist/channels/slack.d.ts +19 -0
  37. package/dist/channels/slack.d.ts.map +1 -0
  38. package/dist/channels/slack.js +167 -0
  39. package/dist/channels/slack.js.map +1 -0
  40. package/dist/channels/telegram.d.ts +19 -0
  41. package/dist/channels/telegram.d.ts.map +1 -0
  42. package/dist/channels/telegram.js +274 -0
  43. package/dist/channels/telegram.js.map +1 -0
  44. package/dist/channels/types.d.ts +44 -0
  45. package/dist/channels/types.d.ts.map +1 -0
  46. package/dist/channels/types.js +18 -0
  47. package/dist/channels/types.js.map +1 -0
  48. package/dist/channels/whatsapp.d.ts +23 -0
  49. package/dist/channels/whatsapp.d.ts.map +1 -0
  50. package/dist/channels/whatsapp.js +189 -0
  51. package/dist/channels/whatsapp.js.map +1 -0
  52. package/dist/config.d.ts +134 -0
  53. package/dist/config.d.ts.map +1 -0
  54. package/dist/config.js +127 -0
  55. package/dist/config.js.map +1 -0
  56. package/dist/cron.d.ts +8 -0
  57. package/dist/cron.d.ts.map +1 -0
  58. package/dist/cron.js +35 -0
  59. package/dist/cron.js.map +1 -0
  60. package/dist/decrypt-keys.d.ts +7 -0
  61. package/dist/decrypt-keys.d.ts.map +1 -0
  62. package/dist/decrypt-keys.js +53 -0
  63. package/dist/decrypt-keys.js.map +1 -0
  64. package/dist/encrypt-keys.d.ts +8 -0
  65. package/dist/encrypt-keys.d.ts.map +1 -0
  66. package/dist/encrypt-keys.js +62 -0
  67. package/dist/encrypt-keys.js.map +1 -0
  68. package/dist/executor.d.ts +31 -0
  69. package/dist/executor.d.ts.map +1 -0
  70. package/dist/executor.js +2009 -0
  71. package/dist/executor.js.map +1 -0
  72. package/dist/gemini-executor.d.ts +27 -0
  73. package/dist/gemini-executor.d.ts.map +1 -0
  74. package/dist/gemini-executor.js +160 -0
  75. package/dist/gemini-executor.js.map +1 -0
  76. package/dist/goals.d.ts +24 -0
  77. package/dist/goals.d.ts.map +1 -0
  78. package/dist/goals.js +189 -0
  79. package/dist/goals.js.map +1 -0
  80. package/dist/gym/activity-digest.d.ts +30 -0
  81. package/dist/gym/activity-digest.d.ts.map +1 -0
  82. package/dist/gym/activity-digest.js +506 -0
  83. package/dist/gym/activity-digest.js.map +1 -0
  84. package/dist/gym/dimension-scorer.d.ts +76 -0
  85. package/dist/gym/dimension-scorer.d.ts.map +1 -0
  86. package/dist/gym/dimension-scorer.js +236 -0
  87. package/dist/gym/dimension-scorer.js.map +1 -0
  88. package/dist/gym/gym-router.d.ts +7 -0
  89. package/dist/gym/gym-router.d.ts.map +1 -0
  90. package/dist/gym/gym-router.js +718 -0
  91. package/dist/gym/gym-router.js.map +1 -0
  92. package/dist/gym/index.d.ts +11 -0
  93. package/dist/gym/index.d.ts.map +1 -0
  94. package/dist/gym/index.js +11 -0
  95. package/dist/gym/index.js.map +1 -0
  96. package/dist/heartbeat.d.ts +21 -0
  97. package/dist/heartbeat.d.ts.map +1 -0
  98. package/dist/heartbeat.js +163 -0
  99. package/dist/heartbeat.js.map +1 -0
  100. package/dist/index.d.ts +2 -0
  101. package/dist/index.d.ts.map +1 -0
  102. package/dist/index.js +254 -0
  103. package/dist/index.js.map +1 -0
  104. package/dist/keystore.d.ts +22 -0
  105. package/dist/keystore.d.ts.map +1 -0
  106. package/dist/keystore.js +178 -0
  107. package/dist/keystore.js.map +1 -0
  108. package/dist/logger.d.ts +9 -0
  109. package/dist/logger.d.ts.map +1 -0
  110. package/dist/logger.js +45 -0
  111. package/dist/logger.js.map +1 -0
  112. package/dist/memory/daily.d.ts +22 -0
  113. package/dist/memory/daily.d.ts.map +1 -0
  114. package/dist/memory/daily.js +82 -0
  115. package/dist/memory/daily.js.map +1 -0
  116. package/dist/memory/embeddings.d.ts +15 -0
  117. package/dist/memory/embeddings.d.ts.map +1 -0
  118. package/dist/memory/embeddings.js +154 -0
  119. package/dist/memory/embeddings.js.map +1 -0
  120. package/dist/memory/index.d.ts +32 -0
  121. package/dist/memory/index.d.ts.map +1 -0
  122. package/dist/memory/index.js +159 -0
  123. package/dist/memory/index.js.map +1 -0
  124. package/dist/memory/search.d.ts +21 -0
  125. package/dist/memory/search.d.ts.map +1 -0
  126. package/dist/memory/search.js +77 -0
  127. package/dist/memory/search.js.map +1 -0
  128. package/dist/memory/store.d.ts +23 -0
  129. package/dist/memory/store.d.ts.map +1 -0
  130. package/dist/memory/store.js +144 -0
  131. package/dist/memory/store.js.map +1 -0
  132. package/dist/ollama-executor.d.ts +17 -0
  133. package/dist/ollama-executor.d.ts.map +1 -0
  134. package/dist/ollama-executor.js +112 -0
  135. package/dist/ollama-executor.js.map +1 -0
  136. package/dist/openai-executor.d.ts +38 -0
  137. package/dist/openai-executor.d.ts.map +1 -0
  138. package/dist/openai-executor.js +197 -0
  139. package/dist/openai-executor.js.map +1 -0
  140. package/dist/router.d.ts +11 -0
  141. package/dist/router.d.ts.map +1 -0
  142. package/dist/router.js +185 -0
  143. package/dist/router.js.map +1 -0
  144. package/dist/test-message.d.ts +2 -0
  145. package/dist/test-message.d.ts.map +1 -0
  146. package/dist/test-message.js +60 -0
  147. package/dist/test-message.js.map +1 -0
  148. package/dist/utils/imsg-db-reader.d.ts +24 -0
  149. package/dist/utils/imsg-db-reader.d.ts.map +1 -0
  150. package/dist/utils/imsg-db-reader.js +92 -0
  151. package/dist/utils/imsg-db-reader.js.map +1 -0
  152. package/dist/utils/imsg-rpc.d.ts +25 -0
  153. package/dist/utils/imsg-rpc.d.ts.map +1 -0
  154. package/dist/utils/imsg-rpc.js +149 -0
  155. package/dist/utils/imsg-rpc.js.map +1 -0
  156. package/dist/utils/message-formatter.d.ts +3 -0
  157. package/dist/utils/message-formatter.d.ts.map +1 -0
  158. package/dist/utils/message-formatter.js +69 -0
  159. package/dist/utils/message-formatter.js.map +1 -0
  160. package/dist/web-ui.d.ts +12 -0
  161. package/dist/web-ui.d.ts.map +1 -0
  162. package/dist/web-ui.js +5784 -0
  163. package/dist/web-ui.js.map +1 -0
  164. package/dist/whatsapp-chats.d.ts +2 -0
  165. package/dist/whatsapp-chats.d.ts.map +1 -0
  166. package/dist/whatsapp-chats.js +76 -0
  167. package/dist/whatsapp-chats.js.map +1 -0
  168. package/dist/whatsapp-login.d.ts +2 -0
  169. package/dist/whatsapp-login.d.ts.map +1 -0
  170. package/dist/whatsapp-login.js +90 -0
  171. package/dist/whatsapp-login.js.map +1 -0
  172. package/dist/wiki-sync.d.ts +21 -0
  173. package/dist/wiki-sync.d.ts.map +1 -0
  174. package/dist/wiki-sync.js +147 -0
  175. package/dist/wiki-sync.js.map +1 -0
  176. package/docs/AddNewAgentGuide.md +100 -0
  177. package/docs/AddNewMcpGuide.md +72 -0
  178. package/docs/Architecture.md +795 -0
  179. package/docs/CLAUDE-AI-SETUP.md +166 -0
  180. package/docs/Setup.md +297 -0
  181. package/docs/ai-gym-architecture.md +1040 -0
  182. package/docs/ai-gym-build-plan.md +343 -0
  183. package/docs/ai-gym-onboarding.md +122 -0
  184. package/docs/appcreator_plan.md +348 -0
  185. package/docs/platform-mcp-audit.md +320 -0
  186. package/docs/server-deployment-plan.md +503 -0
  187. package/docs/superpowers/plans/2026-03-25-marketplace.md +1281 -0
  188. package/docs/superpowers/specs/2026-03-25-marketplace-design.md +287 -0
  189. package/docs/user-guide.md +2016 -0
  190. package/mcp-catalog.json +628 -0
  191. package/package.json +63 -0
  192. package/public/MyAIforOne-logomark-512.svg +16 -0
  193. package/public/MyAIforOne-logomark-transparent.svg +15 -0
  194. package/public/activity.html +314 -0
  195. package/public/admin.html +1674 -0
  196. package/public/agent-dashboard.html +670 -0
  197. package/public/api-docs.html +1106 -0
  198. package/public/automations.html +722 -0
  199. package/public/canvas.css +223 -0
  200. package/public/canvas.js +588 -0
  201. package/public/changelog.html +231 -0
  202. package/public/gym.html +2766 -0
  203. package/public/home.html +1930 -0
  204. package/public/index.html +2809 -0
  205. package/public/lab.html +1643 -0
  206. package/public/library.html +1442 -0
  207. package/public/marketplace.html +1101 -0
  208. package/public/mcp-docs.html +441 -0
  209. package/public/mini.html +390 -0
  210. package/public/monitor.html +584 -0
  211. package/public/org.html +4304 -0
  212. package/public/projects.html +734 -0
  213. package/public/settings.html +645 -0
  214. package/public/tasks.html +932 -0
  215. package/public/trainers/alex.svg +12 -0
  216. package/public/trainers/jordan.svg +12 -0
  217. package/public/trainers/morgan.svg +12 -0
  218. package/public/trainers/riley.svg +12 -0
  219. package/public/trainers/sam.svg +12 -0
  220. package/public/user-guide.html +218 -0
  221. package/registry/agents.json +3 -0
  222. package/registry/apps.json +20 -0
  223. package/registry/installed-drafts.json +3 -0
  224. package/registry/mcps.json +1084 -0
  225. package/registry/prompts/personal/mcp-test-prompt.md +6 -0
  226. package/registry/prompts/personal/memory-recall.md +6 -0
  227. package/registry/prompts/platform/brainstorm.md +15 -0
  228. package/registry/prompts/platform/code-review.md +16 -0
  229. package/registry/prompts/platform/explain.md +16 -0
  230. package/registry/prompts.json +58 -0
  231. package/registry/skills/external/brainstorming.md +5 -0
  232. package/registry/skills/external/code-review.md +40 -0
  233. package/registry/skills/external/frontend-patterns.md +642 -0
  234. package/registry/skills/external/frontend-slides.md +184 -0
  235. package/registry/skills/external/systematic-debugging.md +5 -0
  236. package/registry/skills/external/tdd.md +328 -0
  237. package/registry/skills/external/verification-before-completion.md +5 -0
  238. package/registry/skills/external/writing-plans.md +5 -0
  239. package/registry/skills/platform/ai41_app_build.md +930 -0
  240. package/registry/skills/platform/ai41_app_deploy.md +168 -0
  241. package/registry/skills/platform/ai41_app_orchestrator.md +239 -0
  242. package/registry/skills/platform/ai41_app_patterns.md +359 -0
  243. package/registry/skills/platform/ai41_app_register.md +85 -0
  244. package/registry/skills/platform/ai41_app_scaffold.md +421 -0
  245. package/registry/skills/platform/ai41_app_verify.md +107 -0
  246. package/registry/skills/platform/opProjectCreate.md +239 -0
  247. package/registry/skills/platform/op_devbrowser.md +136 -0
  248. package/registry/skills/platform/sop_brandguidelines.md +103 -0
  249. package/registry/skills/platform/sop_docx.md +117 -0
  250. package/registry/skills/platform/sop_frontenddesign.md +44 -0
  251. package/registry/skills/platform/sop_frontenddesign_v2.md +659 -0
  252. package/registry/skills/platform/sop_mcpbuilder.md +133 -0
  253. package/registry/skills/platform/sop_pdf.md +172 -0
  254. package/registry/skills/platform/sop_pptx.md +133 -0
  255. package/registry/skills/platform/sop_skillcreator.md +104 -0
  256. package/registry/skills/platform/sop_themefactory.md +128 -0
  257. package/registry/skills/platform/sop_webapptesting.md +75 -0
  258. package/registry/skills/platform/sop_webartifactsbuilder.md +97 -0
  259. package/registry/skills/platform/sop_xlsx.md +134 -0
  260. package/registry/skills.json +1055 -0
  261. package/scripts/discover-chats.sh +11 -0
  262. package/scripts/install-service-windows.ps1 +87 -0
  263. package/scripts/install-service.sh +52 -0
  264. package/scripts/seed-registry.ts +195 -0
  265. package/scripts/test-send.sh +5 -0
  266. package/scripts/tray-indicator.ps1 +35 -0
  267. package/scripts/uninstall-service-windows.ps1 +23 -0
  268. package/scripts/uninstall-service.sh +15 -0
  269. package/scripts/xbar-myagent.5s.sh +32 -0
  270. package/server/mcp-server/dist/index.d.ts +11 -0
  271. package/server/mcp-server/dist/index.js +1332 -0
  272. package/server/mcp-server/dist/lib/api-client.d.ts +165 -0
  273. package/server/mcp-server/dist/lib/api-client.js +241 -0
  274. package/server/mcp-server/index.ts +1545 -0
  275. package/server/mcp-server/lib/api-client.ts +366 -0
  276. package/server/mcp-server/tsconfig.json +14 -0
  277. package/src/agent-registry.ts +180 -0
  278. package/src/channels/discord.ts +129 -0
  279. package/src/channels/imessage.ts +261 -0
  280. package/src/channels/slack.ts +208 -0
  281. package/src/channels/telegram.ts +307 -0
  282. package/src/channels/types.ts +62 -0
  283. package/src/channels/whatsapp.ts +227 -0
  284. package/src/config.ts +281 -0
  285. package/src/cron.ts +43 -0
  286. package/src/decrypt-keys.ts +60 -0
  287. package/src/encrypt-keys.ts +70 -0
  288. package/src/executor.ts +2190 -0
  289. package/src/gemini-executor.ts +212 -0
  290. package/src/goals.ts +240 -0
  291. package/src/gym/activity-digest.ts +546 -0
  292. package/src/gym/dimension-scorer.ts +297 -0
  293. package/src/gym/gym-router.ts +801 -0
  294. package/src/gym/index.ts +19 -0
  295. package/src/heartbeat.ts +220 -0
  296. package/src/index.ts +275 -0
  297. package/src/keystore.ts +190 -0
  298. package/src/logger.ts +51 -0
  299. package/src/memory/daily.ts +101 -0
  300. package/src/memory/embeddings.ts +185 -0
  301. package/src/memory/index.ts +218 -0
  302. package/src/memory/search.ts +124 -0
  303. package/src/memory/store.ts +189 -0
  304. package/src/ollama-executor.ts +126 -0
  305. package/src/openai-executor.ts +259 -0
  306. package/src/router.ts +230 -0
  307. package/src/test-message.ts +72 -0
  308. package/src/utils/imsg-db-reader.ts +109 -0
  309. package/src/utils/imsg-rpc.ts +178 -0
  310. package/src/utils/message-formatter.ts +90 -0
  311. package/src/web-ui.ts +5778 -0
  312. package/src/whatsapp-chats.ts +91 -0
  313. package/src/whatsapp-login.ts +110 -0
  314. package/src/wiki-sync.ts +199 -0
  315. package/tsconfig.json +19 -0
@@ -0,0 +1,184 @@
1
+ ---
2
+ name: frontend-slides
3
+ description: Create stunning, animation-rich HTML presentations from scratch or by converting PowerPoint files. Use when the user wants to build a presentation, convert a PPT/PPTX to web, or create slides for a talk/pitch. Helps non-designers discover their aesthetic through visual exploration rather than abstract choices.
4
+ origin: ECC
5
+ ---
6
+
7
+ # Frontend Slides
8
+
9
+ Create zero-dependency, animation-rich HTML presentations that run entirely in the browser.
10
+
11
+ Inspired by the visual exploration approach showcased in work by zarazhangrui (credit: @zarazhangrui).
12
+
13
+ ## When to Activate
14
+
15
+ - Creating a talk deck, pitch deck, workshop deck, or internal presentation
16
+ - Converting `.ppt` or `.pptx` slides into an HTML presentation
17
+ - Improving an existing HTML presentation's layout, motion, or typography
18
+ - Exploring presentation styles with a user who does not know their design preference yet
19
+
20
+ ## Non-Negotiables
21
+
22
+ 1. **Zero dependencies**: default to one self-contained HTML file with inline CSS and JS.
23
+ 2. **Viewport fit is mandatory**: every slide must fit inside one viewport with no internal scrolling.
24
+ 3. **Show, don't tell**: use visual previews instead of abstract style questionnaires.
25
+ 4. **Distinctive design**: avoid generic purple-gradient, Inter-on-white, template-looking decks.
26
+ 5. **Production quality**: keep code commented, accessible, responsive, and performant.
27
+
28
+ Before generating, read `STYLE_PRESETS.md` for the viewport-safe CSS base, density limits, preset catalog, and CSS gotchas.
29
+
30
+ ## Workflow
31
+
32
+ ### 1. Detect Mode
33
+
34
+ Choose one path:
35
+ - **New presentation**: user has a topic, notes, or full draft
36
+ - **PPT conversion**: user has `.ppt` or `.pptx`
37
+ - **Enhancement**: user already has HTML slides and wants improvements
38
+
39
+ ### 2. Discover Content
40
+
41
+ Ask only the minimum needed:
42
+ - purpose: pitch, teaching, conference talk, internal update
43
+ - length: short (5-10), medium (10-20), long (20+)
44
+ - content state: finished copy, rough notes, topic only
45
+
46
+ If the user has content, ask them to paste it before styling.
47
+
48
+ ### 3. Discover Style
49
+
50
+ Default to visual exploration.
51
+
52
+ If the user already knows the desired preset, skip previews and use it directly.
53
+
54
+ Otherwise:
55
+ 1. Ask what feeling the deck should create: impressed, energized, focused, inspired.
56
+ 2. Generate **3 single-slide preview files** in `.ecc-design/slide-previews/`.
57
+ 3. Each preview must be self-contained, show typography/color/motion clearly, and stay under roughly 100 lines of slide content.
58
+ 4. Ask the user which preview to keep or what elements to mix.
59
+
60
+ Use the preset guide in `STYLE_PRESETS.md` when mapping mood to style.
61
+
62
+ ### 4. Build the Presentation
63
+
64
+ Output either:
65
+ - `presentation.html`
66
+ - `[presentation-name].html`
67
+
68
+ Use an `assets/` folder only when the deck contains extracted or user-supplied images.
69
+
70
+ Required structure:
71
+ - semantic slide sections
72
+ - a viewport-safe CSS base from `STYLE_PRESETS.md`
73
+ - CSS custom properties for theme values
74
+ - a presentation controller class for keyboard, wheel, and touch navigation
75
+ - Intersection Observer for reveal animations
76
+ - reduced-motion support
77
+
78
+ ### 5. Enforce Viewport Fit
79
+
80
+ Treat this as a hard gate.
81
+
82
+ Rules:
83
+ - every `.slide` must use `height: 100vh; height: 100dvh; overflow: hidden;`
84
+ - all type and spacing must scale with `clamp()`
85
+ - when content does not fit, split into multiple slides
86
+ - never solve overflow by shrinking text below readable sizes
87
+ - never allow scrollbars inside a slide
88
+
89
+ Use the density limits and mandatory CSS block in `STYLE_PRESETS.md`.
90
+
91
+ ### 6. Validate
92
+
93
+ Check the finished deck at these sizes:
94
+ - 1920x1080
95
+ - 1280x720
96
+ - 768x1024
97
+ - 375x667
98
+ - 667x375
99
+
100
+ If browser automation is available, use it to verify no slide overflows and that keyboard navigation works.
101
+
102
+ ### 7. Deliver
103
+
104
+ At handoff:
105
+ - delete temporary preview files unless the user wants to keep them
106
+ - open the deck with the platform-appropriate opener when useful
107
+ - summarize file path, preset used, slide count, and easy theme customization points
108
+
109
+ Use the correct opener for the current OS:
110
+ - macOS: `open file.html`
111
+ - Linux: `xdg-open file.html`
112
+ - Windows: `start "" file.html`
113
+
114
+ ## PPT / PPTX Conversion
115
+
116
+ For PowerPoint conversion:
117
+ 1. Prefer `python3` with `python-pptx` to extract text, images, and notes.
118
+ 2. If `python-pptx` is unavailable, ask whether to install it or fall back to a manual/export-based workflow.
119
+ 3. Preserve slide order, speaker notes, and extracted assets.
120
+ 4. After extraction, run the same style-selection workflow as a new presentation.
121
+
122
+ Keep conversion cross-platform. Do not rely on macOS-only tools when Python can do the job.
123
+
124
+ ## Implementation Requirements
125
+
126
+ ### HTML / CSS
127
+
128
+ - Use inline CSS and JS unless the user explicitly wants a multi-file project.
129
+ - Fonts may come from Google Fonts or Fontshare.
130
+ - Prefer atmospheric backgrounds, strong type hierarchy, and a clear visual direction.
131
+ - Use abstract shapes, gradients, grids, noise, and geometry rather than illustrations.
132
+
133
+ ### JavaScript
134
+
135
+ Include:
136
+ - keyboard navigation
137
+ - touch / swipe navigation
138
+ - mouse wheel navigation
139
+ - progress indicator or slide index
140
+ - reveal-on-enter animation triggers
141
+
142
+ ### Accessibility
143
+
144
+ - use semantic structure (`main`, `section`, `nav`)
145
+ - keep contrast readable
146
+ - support keyboard-only navigation
147
+ - respect `prefers-reduced-motion`
148
+
149
+ ## Content Density Limits
150
+
151
+ Use these maxima unless the user explicitly asks for denser slides and readability still holds:
152
+
153
+ | Slide type | Limit |
154
+ |------------|-------|
155
+ | Title | 1 heading + 1 subtitle + optional tagline |
156
+ | Content | 1 heading + 4-6 bullets or 2 short paragraphs |
157
+ | Feature grid | 6 cards max |
158
+ | Code | 8-10 lines max |
159
+ | Quote | 1 quote + attribution |
160
+ | Image | 1 image constrained by viewport |
161
+
162
+ ## Anti-Patterns
163
+
164
+ - generic startup gradients with no visual identity
165
+ - system-font decks unless intentionally editorial
166
+ - long bullet walls
167
+ - code blocks that need scrolling
168
+ - fixed-height content boxes that break on short screens
169
+ - invalid negated CSS functions like `-clamp(...)`
170
+
171
+ ## Related ECC Skills
172
+
173
+ - `frontend-patterns` for component and interaction patterns around the deck
174
+ - `liquid-glass-design` when a presentation intentionally borrows Apple glass aesthetics
175
+ - `e2e-testing` if you need automated browser verification for the final deck
176
+
177
+ ## Deliverable Checklist
178
+
179
+ - presentation runs from a local file in a browser
180
+ - every slide fits the viewport without scrolling
181
+ - style is distinctive and intentional
182
+ - animation is meaningful, not noisy
183
+ - reduced motion is respected
184
+ - file paths and customization points are explained at handoff
@@ -0,0 +1,5 @@
1
+ # Systematic Debugging
2
+
3
+ Structured debugging process.
4
+
5
+ (Source: https://raw.githubusercontent.com/affaan-m/everything-claude-code/main/commands/systematic-debugging.md)
@@ -0,0 +1,328 @@
1
+ ---
2
+ description: Enforce test-driven development workflow. Scaffold interfaces, generate tests FIRST, then implement minimal code to pass. Ensure 80%+ coverage.
3
+ ---
4
+
5
+ # TDD Command
6
+
7
+ This command invokes the **tdd-guide** agent to enforce test-driven development methodology.
8
+
9
+ ## What This Command Does
10
+
11
+ 1. **Scaffold Interfaces** - Define types/interfaces first
12
+ 2. **Generate Tests First** - Write failing tests (RED)
13
+ 3. **Implement Minimal Code** - Write just enough to pass (GREEN)
14
+ 4. **Refactor** - Improve code while keeping tests green (REFACTOR)
15
+ 5. **Verify Coverage** - Ensure 80%+ test coverage
16
+
17
+ ## When to Use
18
+
19
+ Use `/tdd` when:
20
+ - Implementing new features
21
+ - Adding new functions/components
22
+ - Fixing bugs (write test that reproduces bug first)
23
+ - Refactoring existing code
24
+ - Building critical business logic
25
+
26
+ ## How It Works
27
+
28
+ The tdd-guide agent will:
29
+
30
+ 1. **Define interfaces** for inputs/outputs
31
+ 2. **Write tests that will FAIL** (because code doesn't exist yet)
32
+ 3. **Run tests** and verify they fail for the right reason
33
+ 4. **Write minimal implementation** to make tests pass
34
+ 5. **Run tests** and verify they pass
35
+ 6. **Refactor** code while keeping tests green
36
+ 7. **Check coverage** and add more tests if below 80%
37
+
38
+ ## TDD Cycle
39
+
40
+ ```
41
+ RED → GREEN → REFACTOR → REPEAT
42
+
43
+ RED: Write a failing test
44
+ GREEN: Write minimal code to pass
45
+ REFACTOR: Improve code, keep tests passing
46
+ REPEAT: Next feature/scenario
47
+ ```
48
+
49
+ ## Example Usage
50
+
51
+ ```
52
+ User: /tdd I need a function to calculate market liquidity score
53
+
54
+ Agent (tdd-guide):
55
+ # TDD Session: Market Liquidity Score Calculator
56
+
57
+ ## Step 1: Define Interface (SCAFFOLD)
58
+
59
+ ```typescript
60
+ // lib/liquidity.ts
61
+ export interface MarketData {
62
+ totalVolume: number
63
+ bidAskSpread: number
64
+ activeTraders: number
65
+ lastTradeTime: Date
66
+ }
67
+
68
+ export function calculateLiquidityScore(market: MarketData): number {
69
+ // TODO: Implementation
70
+ throw new Error('Not implemented')
71
+ }
72
+ ```
73
+
74
+ ## Step 2: Write Failing Test (RED)
75
+
76
+ ```typescript
77
+ // lib/liquidity.test.ts
78
+ import { calculateLiquidityScore } from './liquidity'
79
+
80
+ describe('calculateLiquidityScore', () => {
81
+ it('should return high score for liquid market', () => {
82
+ const market = {
83
+ totalVolume: 100000,
84
+ bidAskSpread: 0.01,
85
+ activeTraders: 500,
86
+ lastTradeTime: new Date()
87
+ }
88
+
89
+ const score = calculateLiquidityScore(market)
90
+
91
+ expect(score).toBeGreaterThan(80)
92
+ expect(score).toBeLessThanOrEqual(100)
93
+ })
94
+
95
+ it('should return low score for illiquid market', () => {
96
+ const market = {
97
+ totalVolume: 100,
98
+ bidAskSpread: 0.5,
99
+ activeTraders: 2,
100
+ lastTradeTime: new Date(Date.now() - 86400000) // 1 day ago
101
+ }
102
+
103
+ const score = calculateLiquidityScore(market)
104
+
105
+ expect(score).toBeLessThan(30)
106
+ expect(score).toBeGreaterThanOrEqual(0)
107
+ })
108
+
109
+ it('should handle edge case: zero volume', () => {
110
+ const market = {
111
+ totalVolume: 0,
112
+ bidAskSpread: 0,
113
+ activeTraders: 0,
114
+ lastTradeTime: new Date()
115
+ }
116
+
117
+ const score = calculateLiquidityScore(market)
118
+
119
+ expect(score).toBe(0)
120
+ })
121
+ })
122
+ ```
123
+
124
+ ## Step 3: Run Tests - Verify FAIL
125
+
126
+ ```bash
127
+ npm test lib/liquidity.test.ts
128
+
129
+ FAIL lib/liquidity.test.ts
130
+ ✕ should return high score for liquid market (2 ms)
131
+ Error: Not implemented
132
+
133
+ 1 test failed, 0 passed
134
+ ```
135
+
136
+ ✅ Tests fail as expected. Ready to implement.
137
+
138
+ ## Step 4: Implement Minimal Code (GREEN)
139
+
140
+ ```typescript
141
+ // lib/liquidity.ts
142
+ export function calculateLiquidityScore(market: MarketData): number {
143
+ // Handle zero volume edge case
144
+ if (market.totalVolume === 0) {
145
+ return 0
146
+ }
147
+
148
+ // Calculate component scores (0-100 scale)
149
+ const volumeScore = Math.min(market.totalVolume / 1000, 100)
150
+ const spreadScore = Math.max(100 - (market.bidAskSpread * 1000), 0)
151
+ const traderScore = Math.min(market.activeTraders / 10, 100)
152
+
153
+ // Recent activity bonus
154
+ const hoursSinceLastTrade = (Date.now() - market.lastTradeTime.getTime()) / (1000 * 60 * 60)
155
+ const recencyScore = Math.max(100 - (hoursSinceLastTrade * 10), 0)
156
+
157
+ // Weighted average
158
+ const score = (
159
+ volumeScore * 0.4 +
160
+ spreadScore * 0.3 +
161
+ traderScore * 0.2 +
162
+ recencyScore * 0.1
163
+ )
164
+
165
+ return Math.min(Math.max(score, 0), 100) // Clamp to 0-100
166
+ }
167
+ ```
168
+
169
+ ## Step 5: Run Tests - Verify PASS
170
+
171
+ ```bash
172
+ npm test lib/liquidity.test.ts
173
+
174
+ PASS lib/liquidity.test.ts
175
+ ✓ should return high score for liquid market (3 ms)
176
+ ✓ should return low score for illiquid market (2 ms)
177
+ ✓ should handle edge case: zero volume (1 ms)
178
+
179
+ 3 tests passed
180
+ ```
181
+
182
+ ✅ All tests passing!
183
+
184
+ ## Step 6: Refactor (IMPROVE)
185
+
186
+ ```typescript
187
+ // lib/liquidity.ts - Refactored with constants and better readability
188
+ const WEIGHTS = {
189
+ VOLUME: 0.4,
190
+ SPREAD: 0.3,
191
+ TRADERS: 0.2,
192
+ RECENCY: 0.1,
193
+ } as const
194
+
195
+ const SCALE_FACTORS = {
196
+ VOLUME: 1000,
197
+ SPREAD: 1000,
198
+ TRADERS: 10,
199
+ RECENCY_PENALTY: 10,
200
+ } as const
201
+
202
+ function clamp(value: number, min: number, max: number): number {
203
+ return Math.min(Math.max(value, min), max)
204
+ }
205
+
206
+ export function calculateLiquidityScore(market: MarketData): number {
207
+ if (market.totalVolume === 0) return 0
208
+
209
+ const volumeScore = Math.min(market.totalVolume / SCALE_FACTORS.VOLUME, 100)
210
+ const spreadScore = clamp(100 - (market.bidAskSpread * SCALE_FACTORS.SPREAD), 0, 100)
211
+ const traderScore = Math.min(market.activeTraders / SCALE_FACTORS.TRADERS, 100)
212
+
213
+ const hoursSinceLastTrade = (Date.now() - market.lastTradeTime.getTime()) / (1000 * 60 * 60)
214
+ const recencyScore = clamp(100 - (hoursSinceLastTrade * SCALE_FACTORS.RECENCY_PENALTY), 0, 100)
215
+
216
+ const weightedScore =
217
+ volumeScore * WEIGHTS.VOLUME +
218
+ spreadScore * WEIGHTS.SPREAD +
219
+ traderScore * WEIGHTS.TRADERS +
220
+ recencyScore * WEIGHTS.RECENCY
221
+
222
+ return clamp(weightedScore, 0, 100)
223
+ }
224
+ ```
225
+
226
+ ## Step 7: Verify Tests Still Pass
227
+
228
+ ```bash
229
+ npm test lib/liquidity.test.ts
230
+
231
+ PASS lib/liquidity.test.ts
232
+ ✓ should return high score for liquid market (3 ms)
233
+ ✓ should return low score for illiquid market (2 ms)
234
+ ✓ should handle edge case: zero volume (1 ms)
235
+
236
+ 3 tests passed
237
+ ```
238
+
239
+ ✅ Refactoring complete, tests still passing!
240
+
241
+ ## Step 8: Check Coverage
242
+
243
+ ```bash
244
+ npm test -- --coverage lib/liquidity.test.ts
245
+
246
+ File | % Stmts | % Branch | % Funcs | % Lines
247
+ ---------------|---------|----------|---------|--------
248
+ liquidity.ts | 100 | 100 | 100 | 100
249
+
250
+ Coverage: 100% ✅ (Target: 80%)
251
+ ```
252
+
253
+ ✅ TDD session complete!
254
+ ```
255
+
256
+ ## TDD Best Practices
257
+
258
+ **DO:**
259
+ - ✅ Write the test FIRST, before any implementation
260
+ - ✅ Run tests and verify they FAIL before implementing
261
+ - ✅ Write minimal code to make tests pass
262
+ - ✅ Refactor only after tests are green
263
+ - ✅ Add edge cases and error scenarios
264
+ - ✅ Aim for 80%+ coverage (100% for critical code)
265
+
266
+ **DON'T:**
267
+ - ❌ Write implementation before tests
268
+ - ❌ Skip running tests after each change
269
+ - ❌ Write too much code at once
270
+ - ❌ Ignore failing tests
271
+ - ❌ Test implementation details (test behavior)
272
+ - ❌ Mock everything (prefer integration tests)
273
+
274
+ ## Test Types to Include
275
+
276
+ **Unit Tests** (Function-level):
277
+ - Happy path scenarios
278
+ - Edge cases (empty, null, max values)
279
+ - Error conditions
280
+ - Boundary values
281
+
282
+ **Integration Tests** (Component-level):
283
+ - API endpoints
284
+ - Database operations
285
+ - External service calls
286
+ - React components with hooks
287
+
288
+ **E2E Tests** (use `/e2e` command):
289
+ - Critical user flows
290
+ - Multi-step processes
291
+ - Full stack integration
292
+
293
+ ## Coverage Requirements
294
+
295
+ - **80% minimum** for all code
296
+ - **100% required** for:
297
+ - Financial calculations
298
+ - Authentication logic
299
+ - Security-critical code
300
+ - Core business logic
301
+
302
+ ## Important Notes
303
+
304
+ **MANDATORY**: Tests must be written BEFORE implementation. The TDD cycle is:
305
+
306
+ 1. **RED** - Write failing test
307
+ 2. **GREEN** - Implement to pass
308
+ 3. **REFACTOR** - Improve code
309
+
310
+ Never skip the RED phase. Never write code before tests.
311
+
312
+ ## Integration with Other Commands
313
+
314
+ - Use `/plan` first to understand what to build
315
+ - Use `/tdd` to implement with tests
316
+ - Use `/build-fix` if build errors occur
317
+ - Use `/code-review` to review implementation
318
+ - Use `/test-coverage` to verify coverage
319
+
320
+ ## Related Agents
321
+
322
+ This command invokes the `tdd-guide` agent provided by ECC.
323
+
324
+ The related `tdd-workflow` skill is also bundled with ECC.
325
+
326
+ For manual installs, the source files live at:
327
+ - `agents/tdd-guide.md`
328
+ - `skills/tdd-workflow/SKILL.md`
@@ -0,0 +1,5 @@
1
+ # Verify Before Completing
2
+
3
+ Run checks before marking work done.
4
+
5
+ (Source: https://raw.githubusercontent.com/affaan-m/everything-claude-code/main/commands/verification-before-completion.md)
@@ -0,0 +1,5 @@
1
+ # Write Plans
2
+
3
+ Create detailed implementation plans.
4
+
5
+ (Source: https://raw.githubusercontent.com/affaan-m/everything-claude-code/main/commands/writing-plans.md)