aw-ecc 1.4.31 → 1.4.47

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 (259) hide show
  1. package/.claude-plugin/plugin.json +1 -1
  2. package/.codex/hooks/aw-post-tool-use.sh +8 -2
  3. package/.codex/hooks/aw-session-start.sh +11 -4
  4. package/.codex/hooks/aw-stop.sh +8 -2
  5. package/.codex/hooks/aw-user-prompt-submit.sh +10 -2
  6. package/.codex/hooks.json +8 -8
  7. package/.cursor/INSTALL.md +7 -5
  8. package/.cursor/hooks/adapter.js +41 -4
  9. package/.cursor/hooks/after-agent-response.js +62 -0
  10. package/.cursor/hooks/before-submit-prompt.js +7 -1
  11. package/.cursor/hooks/post-tool-use-failure.js +21 -0
  12. package/.cursor/hooks/post-tool-use.js +39 -0
  13. package/.cursor/hooks/shared/aw-phase-definitions.js +53 -0
  14. package/.cursor/hooks/shared/aw-phase-runner.js +3 -1
  15. package/.cursor/hooks/subagent-start.js +22 -4
  16. package/.cursor/hooks/subagent-stop.js +18 -1
  17. package/.cursor/hooks.json +23 -2
  18. package/.opencode/package.json +1 -1
  19. package/AGENTS.md +3 -3
  20. package/README.md +5 -5
  21. package/commands/adk.md +52 -0
  22. package/commands/build.md +22 -9
  23. package/commands/deploy.md +12 -0
  24. package/commands/execute.md +9 -0
  25. package/commands/feature.md +333 -0
  26. package/commands/investigate.md +18 -5
  27. package/commands/plan.md +23 -9
  28. package/commands/publish.md +65 -0
  29. package/commands/review.md +12 -0
  30. package/commands/ship.md +12 -0
  31. package/commands/test.md +12 -0
  32. package/commands/verify.md +9 -0
  33. package/hooks/hooks.json +36 -0
  34. package/manifests/install-components.json +8 -0
  35. package/manifests/install-modules.json +83 -0
  36. package/manifests/install-profiles.json +7 -0
  37. package/package.json +1 -1
  38. package/scripts/ci/validate-rules.js +51 -0
  39. package/scripts/cursor-aw-home/hooks.json +23 -2
  40. package/scripts/cursor-aw-hooks/adapter.js +41 -4
  41. package/scripts/cursor-aw-hooks/before-submit-prompt.js +7 -1
  42. package/scripts/hooks/aw-usage-commit-created.js +32 -0
  43. package/scripts/hooks/aw-usage-post-tool-use-failure.js +56 -0
  44. package/scripts/hooks/aw-usage-post-tool-use.js +242 -0
  45. package/scripts/hooks/aw-usage-prompt-submit.js +112 -0
  46. package/scripts/hooks/aw-usage-session-start.js +48 -0
  47. package/scripts/hooks/aw-usage-stop.js +182 -0
  48. package/scripts/hooks/aw-usage-telemetry-send.js +84 -0
  49. package/scripts/hooks/cost-tracker.js +3 -23
  50. package/scripts/hooks/shared/aw-phase-definitions.js +53 -0
  51. package/scripts/hooks/shared/aw-phase-runner.js +3 -1
  52. package/scripts/lib/aw-hook-contract.js +2 -2
  53. package/scripts/lib/aw-pricing.js +306 -0
  54. package/scripts/lib/aw-usage-telemetry.js +472 -0
  55. package/scripts/lib/codex-hook-config.js +8 -8
  56. package/scripts/lib/cursor-hook-config.js +25 -10
  57. package/scripts/lib/install-targets/codex-home.js +7 -0
  58. package/scripts/lib/install-targets/cursor-project.js +3 -0
  59. package/scripts/lib/install-targets/helpers.js +20 -3
  60. package/skills/aw-adk/SKILL.md +317 -0
  61. package/skills/aw-adk/agents/analyzer.md +113 -0
  62. package/skills/aw-adk/agents/comparator.md +113 -0
  63. package/skills/aw-adk/agents/grader.md +115 -0
  64. package/skills/aw-adk/assets/eval_review.html +76 -0
  65. package/skills/aw-adk/eval-viewer/generate_review.py +164 -0
  66. package/skills/aw-adk/eval-viewer/viewer.html +181 -0
  67. package/skills/aw-adk/evals/eval-colocated-placement.md +84 -0
  68. package/skills/aw-adk/evals/eval-create-agent.md +90 -0
  69. package/skills/aw-adk/evals/eval-create-command.md +98 -0
  70. package/skills/aw-adk/evals/eval-create-eval.md +89 -0
  71. package/skills/aw-adk/evals/eval-create-rule.md +99 -0
  72. package/skills/aw-adk/evals/eval-create-skill.md +97 -0
  73. package/skills/aw-adk/evals/eval-delete-agent.md +79 -0
  74. package/skills/aw-adk/evals/eval-delete-command.md +89 -0
  75. package/skills/aw-adk/evals/eval-delete-rule.md +86 -0
  76. package/skills/aw-adk/evals/eval-delete-skill.md +90 -0
  77. package/skills/aw-adk/evals/eval-meta-eval-coverage.md +78 -0
  78. package/skills/aw-adk/evals/eval-meta-eval-determinism.md +81 -0
  79. package/skills/aw-adk/evals/eval-meta-eval-false-pass.md +81 -0
  80. package/skills/aw-adk/evals/eval-score-accuracy.md +95 -0
  81. package/skills/aw-adk/evals/eval-type-redirect.md +68 -0
  82. package/skills/aw-adk/evals/evals.json +96 -0
  83. package/skills/aw-adk/references/artifact-wiring.md +162 -0
  84. package/skills/aw-adk/references/cross-ide-mapping.md +71 -0
  85. package/skills/aw-adk/references/eval-placement-guide.md +183 -0
  86. package/skills/aw-adk/references/external-resources.md +75 -0
  87. package/skills/aw-adk/references/getting-started.md +66 -0
  88. package/skills/aw-adk/references/registry-structure.md +152 -0
  89. package/skills/aw-adk/references/rubric-agent.md +36 -0
  90. package/skills/aw-adk/references/rubric-command.md +36 -0
  91. package/skills/aw-adk/references/rubric-eval.md +36 -0
  92. package/skills/aw-adk/references/rubric-meta-eval.md +132 -0
  93. package/skills/aw-adk/references/rubric-rule.md +36 -0
  94. package/skills/aw-adk/references/rubric-skill.md +36 -0
  95. package/skills/aw-adk/references/schemas.md +222 -0
  96. package/skills/aw-adk/references/template-agent.md +251 -0
  97. package/skills/aw-adk/references/template-command.md +279 -0
  98. package/skills/aw-adk/references/template-eval.md +176 -0
  99. package/skills/aw-adk/references/template-rule.md +119 -0
  100. package/skills/aw-adk/references/template-skill.md +123 -0
  101. package/skills/aw-adk/references/type-classifier.md +98 -0
  102. package/skills/aw-adk/references/writing-good-agents.md +227 -0
  103. package/skills/aw-adk/references/writing-good-commands.md +258 -0
  104. package/skills/aw-adk/references/writing-good-evals.md +271 -0
  105. package/skills/aw-adk/references/writing-good-rules.md +214 -0
  106. package/skills/aw-adk/references/writing-good-skills.md +159 -0
  107. package/skills/aw-adk/scripts/aggregate-benchmark.py +190 -0
  108. package/skills/aw-adk/scripts/lint-artifact.sh +211 -0
  109. package/skills/aw-adk/scripts/score-artifact.sh +179 -0
  110. package/skills/aw-adk/scripts/trigger-eval.py +192 -0
  111. package/skills/aw-build/SKILL.md +19 -2
  112. package/skills/aw-deploy/SKILL.md +65 -3
  113. package/skills/aw-design/SKILL.md +156 -0
  114. package/skills/aw-design/references/highrise-tokens.md +394 -0
  115. package/skills/aw-design/references/micro-interactions.md +76 -0
  116. package/skills/aw-design/references/prompt-template.md +160 -0
  117. package/skills/aw-design/references/quality-checklist.md +70 -0
  118. package/skills/aw-design/references/self-review.md +497 -0
  119. package/skills/aw-design/references/stitch-workflow.md +127 -0
  120. package/skills/aw-feature/SKILL.md +293 -0
  121. package/skills/aw-investigate/SKILL.md +17 -0
  122. package/skills/aw-plan/SKILL.md +34 -3
  123. package/skills/aw-publish/SKILL.md +300 -0
  124. package/skills/aw-publish/evals/eval-confirmation-gate.md +60 -0
  125. package/skills/aw-publish/evals/eval-intent-detection.md +111 -0
  126. package/skills/aw-publish/evals/eval-push-modes.md +67 -0
  127. package/skills/aw-publish/evals/eval-rules-push.md +60 -0
  128. package/skills/aw-publish/evals/evals.json +29 -0
  129. package/skills/aw-publish/references/push-modes.md +38 -0
  130. package/skills/aw-review/SKILL.md +88 -9
  131. package/skills/aw-rules-review/SKILL.md +124 -0
  132. package/skills/aw-rules-review/agents/openai.yaml +3 -0
  133. package/skills/aw-rules-review/scripts/generate-review-template.mjs +323 -0
  134. package/skills/aw-ship/SKILL.md +16 -0
  135. package/skills/aw-spec/SKILL.md +15 -0
  136. package/skills/aw-tasks/SKILL.md +15 -0
  137. package/skills/aw-test/SKILL.md +16 -0
  138. package/skills/aw-yolo/SKILL.md +4 -0
  139. package/skills/diagnose/SKILL.md +121 -0
  140. package/skills/diagnose/scripts/hitl-loop.template.sh +41 -0
  141. package/skills/finish-only-when-green/SKILL.md +265 -0
  142. package/skills/grill-me/SKILL.md +24 -0
  143. package/skills/grill-with-docs/SKILL.md +92 -0
  144. package/skills/grill-with-docs/adr-format.md +47 -0
  145. package/skills/grill-with-docs/context-format.md +67 -0
  146. package/skills/improve-codebase-architecture/SKILL.md +75 -0
  147. package/skills/improve-codebase-architecture/deepening.md +37 -0
  148. package/skills/improve-codebase-architecture/interface-design.md +44 -0
  149. package/skills/improve-codebase-architecture/language.md +53 -0
  150. package/skills/local-ghl-setup-from-screenshot/SKILL.md +538 -0
  151. package/skills/tdd/SKILL.md +115 -0
  152. package/skills/tdd/deep-modules.md +33 -0
  153. package/skills/tdd/interface-design.md +31 -0
  154. package/skills/tdd/mocking.md +59 -0
  155. package/skills/tdd/refactoring.md +10 -0
  156. package/skills/tdd/tests.md +61 -0
  157. package/skills/to-issues/SKILL.md +62 -0
  158. package/skills/to-prd/SKILL.md +75 -0
  159. package/skills/using-aw-skills/SKILL.md +170 -237
  160. package/skills/using-aw-skills/hooks/session-start.sh +11 -41
  161. package/skills/zoom-out/SKILL.md +24 -0
  162. package/.cursor/rules/common-agents.md +0 -53
  163. package/.cursor/rules/common-aw-routing.md +0 -43
  164. package/.cursor/rules/common-coding-style.md +0 -52
  165. package/.cursor/rules/common-development-workflow.md +0 -33
  166. package/.cursor/rules/common-git-workflow.md +0 -28
  167. package/.cursor/rules/common-hooks.md +0 -34
  168. package/.cursor/rules/common-patterns.md +0 -35
  169. package/.cursor/rules/common-performance.md +0 -59
  170. package/.cursor/rules/common-security.md +0 -33
  171. package/.cursor/rules/common-testing.md +0 -33
  172. package/.cursor/skills/api-and-interface-design/SKILL.md +0 -75
  173. package/.cursor/skills/article-writing/SKILL.md +0 -85
  174. package/.cursor/skills/aw-brainstorm/SKILL.md +0 -115
  175. package/.cursor/skills/aw-build/SKILL.md +0 -152
  176. package/.cursor/skills/aw-build/evals/build-stage-cases.json +0 -28
  177. package/.cursor/skills/aw-debug/SKILL.md +0 -49
  178. package/.cursor/skills/aw-deploy/SKILL.md +0 -101
  179. package/.cursor/skills/aw-deploy/evals/deploy-stage-cases.json +0 -32
  180. package/.cursor/skills/aw-execute/SKILL.md +0 -47
  181. package/.cursor/skills/aw-execute/references/mode-code.md +0 -47
  182. package/.cursor/skills/aw-execute/references/mode-docs.md +0 -28
  183. package/.cursor/skills/aw-execute/references/mode-infra.md +0 -44
  184. package/.cursor/skills/aw-execute/references/mode-migration.md +0 -58
  185. package/.cursor/skills/aw-execute/references/worker-implementer.md +0 -26
  186. package/.cursor/skills/aw-execute/references/worker-parallel-worker.md +0 -23
  187. package/.cursor/skills/aw-execute/references/worker-quality-reviewer.md +0 -23
  188. package/.cursor/skills/aw-execute/references/worker-spec-reviewer.md +0 -23
  189. package/.cursor/skills/aw-execute/scripts/build-worker-bundle.js +0 -229
  190. package/.cursor/skills/aw-finish/SKILL.md +0 -111
  191. package/.cursor/skills/aw-investigate/SKILL.md +0 -109
  192. package/.cursor/skills/aw-plan/SKILL.md +0 -368
  193. package/.cursor/skills/aw-prepare/SKILL.md +0 -118
  194. package/.cursor/skills/aw-review/SKILL.md +0 -118
  195. package/.cursor/skills/aw-ship/SKILL.md +0 -115
  196. package/.cursor/skills/aw-spec/SKILL.md +0 -104
  197. package/.cursor/skills/aw-tasks/SKILL.md +0 -138
  198. package/.cursor/skills/aw-test/SKILL.md +0 -118
  199. package/.cursor/skills/aw-verify/SKILL.md +0 -51
  200. package/.cursor/skills/aw-yolo/SKILL.md +0 -111
  201. package/.cursor/skills/browser-testing-with-devtools/SKILL.md +0 -81
  202. package/.cursor/skills/bun-runtime/SKILL.md +0 -84
  203. package/.cursor/skills/ci-cd-and-automation/SKILL.md +0 -71
  204. package/.cursor/skills/code-simplification/SKILL.md +0 -74
  205. package/.cursor/skills/content-engine/SKILL.md +0 -88
  206. package/.cursor/skills/context-engineering/SKILL.md +0 -74
  207. package/.cursor/skills/deprecation-and-migration/SKILL.md +0 -75
  208. package/.cursor/skills/documentation-and-adrs/SKILL.md +0 -75
  209. package/.cursor/skills/documentation-lookup/SKILL.md +0 -90
  210. package/.cursor/skills/frontend-slides/SKILL.md +0 -184
  211. package/.cursor/skills/frontend-slides/STYLE_PRESETS.md +0 -330
  212. package/.cursor/skills/frontend-ui-engineering/SKILL.md +0 -68
  213. package/.cursor/skills/git-workflow-and-versioning/SKILL.md +0 -75
  214. package/.cursor/skills/idea-refine/SKILL.md +0 -84
  215. package/.cursor/skills/incremental-implementation/SKILL.md +0 -75
  216. package/.cursor/skills/investor-materials/SKILL.md +0 -96
  217. package/.cursor/skills/investor-outreach/SKILL.md +0 -76
  218. package/.cursor/skills/market-research/SKILL.md +0 -75
  219. package/.cursor/skills/mcp-server-patterns/SKILL.md +0 -67
  220. package/.cursor/skills/nextjs-turbopack/SKILL.md +0 -44
  221. package/.cursor/skills/performance-optimization/SKILL.md +0 -77
  222. package/.cursor/skills/security-and-hardening/SKILL.md +0 -70
  223. package/.cursor/skills/using-aw-skills/SKILL.md +0 -290
  224. package/.cursor/skills/using-aw-skills/evals/skill-trigger-cases.tsv +0 -25
  225. package/.cursor/skills/using-aw-skills/evals/test-skill-triggers.sh +0 -171
  226. package/.cursor/skills/using-aw-skills/hooks/hooks.json +0 -9
  227. package/.cursor/skills/using-aw-skills/hooks/session-start.sh +0 -67
  228. package/.cursor/skills/using-platform-skills/SKILL.md +0 -163
  229. package/.cursor/skills/using-platform-skills/evals/platform-selection-cases.json +0 -52
  230. /package/.cursor/rules/{golang-coding-style.md → golang-coding-style.mdc} +0 -0
  231. /package/.cursor/rules/{golang-hooks.md → golang-hooks.mdc} +0 -0
  232. /package/.cursor/rules/{golang-patterns.md → golang-patterns.mdc} +0 -0
  233. /package/.cursor/rules/{golang-security.md → golang-security.mdc} +0 -0
  234. /package/.cursor/rules/{golang-testing.md → golang-testing.mdc} +0 -0
  235. /package/.cursor/rules/{kotlin-coding-style.md → kotlin-coding-style.mdc} +0 -0
  236. /package/.cursor/rules/{kotlin-hooks.md → kotlin-hooks.mdc} +0 -0
  237. /package/.cursor/rules/{kotlin-patterns.md → kotlin-patterns.mdc} +0 -0
  238. /package/.cursor/rules/{kotlin-security.md → kotlin-security.mdc} +0 -0
  239. /package/.cursor/rules/{kotlin-testing.md → kotlin-testing.mdc} +0 -0
  240. /package/.cursor/rules/{php-coding-style.md → php-coding-style.mdc} +0 -0
  241. /package/.cursor/rules/{php-hooks.md → php-hooks.mdc} +0 -0
  242. /package/.cursor/rules/{php-patterns.md → php-patterns.mdc} +0 -0
  243. /package/.cursor/rules/{php-security.md → php-security.mdc} +0 -0
  244. /package/.cursor/rules/{php-testing.md → php-testing.mdc} +0 -0
  245. /package/.cursor/rules/{python-coding-style.md → python-coding-style.mdc} +0 -0
  246. /package/.cursor/rules/{python-hooks.md → python-hooks.mdc} +0 -0
  247. /package/.cursor/rules/{python-patterns.md → python-patterns.mdc} +0 -0
  248. /package/.cursor/rules/{python-security.md → python-security.mdc} +0 -0
  249. /package/.cursor/rules/{python-testing.md → python-testing.mdc} +0 -0
  250. /package/.cursor/rules/{swift-coding-style.md → swift-coding-style.mdc} +0 -0
  251. /package/.cursor/rules/{swift-hooks.md → swift-hooks.mdc} +0 -0
  252. /package/.cursor/rules/{swift-patterns.md → swift-patterns.mdc} +0 -0
  253. /package/.cursor/rules/{swift-security.md → swift-security.mdc} +0 -0
  254. /package/.cursor/rules/{swift-testing.md → swift-testing.mdc} +0 -0
  255. /package/.cursor/rules/{typescript-coding-style.md → typescript-coding-style.mdc} +0 -0
  256. /package/.cursor/rules/{typescript-hooks.md → typescript-hooks.mdc} +0 -0
  257. /package/.cursor/rules/{typescript-patterns.md → typescript-patterns.mdc} +0 -0
  258. /package/.cursor/rules/{typescript-security.md → typescript-security.mdc} +0 -0
  259. /package/.cursor/rules/{typescript-testing.md → typescript-testing.mdc} +0 -0
@@ -1,90 +0,0 @@
1
- ---
2
- name: documentation-lookup
3
- description: Use up-to-date library and framework docs via Context7 MCP instead of training data. Activates for setup questions, API references, code examples, or when the user names a framework (e.g. React, Next.js, Prisma).
4
- origin: ECC
5
- ---
6
-
7
- # Documentation Lookup (Context7)
8
-
9
- When the user asks about libraries, frameworks, or APIs, fetch current documentation via the Context7 MCP (tools `resolve-library-id` and `query-docs`) instead of relying on training data.
10
-
11
- ## Core Concepts
12
-
13
- - **Context7**: MCP server that exposes live documentation; use it instead of training data for libraries and APIs.
14
- - **resolve-library-id**: Returns Context7-compatible library IDs (e.g. `/vercel/next.js`) from a library name and query.
15
- - **query-docs**: Fetches documentation and code snippets for a given library ID and question. Always call resolve-library-id first to get a valid library ID.
16
-
17
- ## When to use
18
-
19
- Activate when the user:
20
-
21
- - Asks setup or configuration questions (e.g. "How do I configure Next.js middleware?")
22
- - Requests code that depends on a library ("Write a Prisma query for...")
23
- - Needs API or reference information ("What are the Supabase auth methods?")
24
- - Mentions specific frameworks or libraries (React, Vue, Svelte, Express, Tailwind, Prisma, Supabase, etc.)
25
-
26
- Use this skill whenever the request depends on accurate, up-to-date behavior of a library, framework, or API. Applies across harnesses that have the Context7 MCP configured (e.g. Claude Code, Cursor, Codex).
27
-
28
- ## How it works
29
-
30
- ### Step 1: Resolve the Library ID
31
-
32
- Call the **resolve-library-id** MCP tool with:
33
-
34
- - **libraryName**: The library or product name taken from the user's question (e.g. `Next.js`, `Prisma`, `Supabase`).
35
- - **query**: The user's full question. This improves relevance ranking of results.
36
-
37
- You must obtain a Context7-compatible library ID (format `/org/project` or `/org/project/version`) before querying docs. Do not call query-docs without a valid library ID from this step.
38
-
39
- ### Step 2: Select the Best Match
40
-
41
- From the resolution results, choose one result using:
42
-
43
- - **Name match**: Prefer exact or closest match to what the user asked for.
44
- - **Benchmark score**: Higher scores indicate better documentation quality (100 is highest).
45
- - **Source reputation**: Prefer High or Medium reputation when available.
46
- - **Version**: If the user specified a version (e.g. "React 19", "Next.js 15"), prefer a version-specific library ID if listed (e.g. `/org/project/v1.2.0`).
47
-
48
- ### Step 3: Fetch the Documentation
49
-
50
- Call the **query-docs** MCP tool with:
51
-
52
- - **libraryId**: The selected Context7 library ID from Step 2 (e.g. `/vercel/next.js`).
53
- - **query**: The user's specific question or task. Be specific to get relevant snippets.
54
-
55
- Limit: do not call query-docs (or resolve-library-id) more than 3 times per question. If the answer is unclear after 3 calls, state the uncertainty and use the best information you have rather than guessing.
56
-
57
- ### Step 4: Use the Documentation
58
-
59
- - Answer the user's question using the fetched, current information.
60
- - Include relevant code examples from the docs when helpful.
61
- - Cite the library or version when it matters (e.g. "In Next.js 15...").
62
-
63
- ## Examples
64
-
65
- ### Example: Next.js middleware
66
-
67
- 1. Call **resolve-library-id** with `libraryName: "Next.js"`, `query: "How do I set up Next.js middleware?"`.
68
- 2. From results, pick the best match (e.g. `/vercel/next.js`) by name and benchmark score.
69
- 3. Call **query-docs** with `libraryId: "/vercel/next.js"`, `query: "How do I set up Next.js middleware?"`.
70
- 4. Use the returned snippets and text to answer; include a minimal `middleware.ts` example from the docs if relevant.
71
-
72
- ### Example: Prisma query
73
-
74
- 1. Call **resolve-library-id** with `libraryName: "Prisma"`, `query: "How do I query with relations?"`.
75
- 2. Select the official Prisma library ID (e.g. `/prisma/prisma`).
76
- 3. Call **query-docs** with that `libraryId` and the query.
77
- 4. Return the Prisma Client pattern (e.g. `include` or `select`) with a short code snippet from the docs.
78
-
79
- ### Example: Supabase auth methods
80
-
81
- 1. Call **resolve-library-id** with `libraryName: "Supabase"`, `query: "What are the auth methods?"`.
82
- 2. Pick the Supabase docs library ID.
83
- 3. Call **query-docs**; summarize the auth methods and show minimal examples from the fetched docs.
84
-
85
- ## Best Practices
86
-
87
- - **Be specific**: Use the user's full question as the query where possible for better relevance.
88
- - **Version awareness**: When users mention versions, use version-specific library IDs from the resolve step when available.
89
- - **Prefer official sources**: When multiple matches exist, prefer official or primary packages over community forks.
90
- - **No sensitive data**: Redact API keys, passwords, tokens, and other secrets from any query sent to Context7. Treat the user's question as potentially containing secrets before passing it to resolve-library-id or query-docs.
@@ -1,184 +0,0 @@
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](https://github.com/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
@@ -1,330 +0,0 @@
1
- # Style Presets Reference
2
-
3
- Curated visual styles for `frontend-slides`.
4
-
5
- Use this file for:
6
- - the mandatory viewport-fitting CSS base
7
- - preset selection and mood mapping
8
- - CSS gotchas and validation rules
9
-
10
- Abstract shapes only. Avoid illustrations unless the user explicitly asks for them.
11
-
12
- ## Viewport Fit Is Non-Negotiable
13
-
14
- Every slide must fully fit in one viewport.
15
-
16
- ### Golden Rule
17
-
18
- ```text
19
- Each slide = exactly one viewport height.
20
- Too much content = split into more slides.
21
- Never scroll inside a slide.
22
- ```
23
-
24
- ### Density Limits
25
-
26
- | Slide Type | Maximum Content |
27
- |------------|-----------------|
28
- | Title slide | 1 heading + 1 subtitle + optional tagline |
29
- | Content slide | 1 heading + 4-6 bullets or 2 paragraphs |
30
- | Feature grid | 6 cards maximum |
31
- | Code slide | 8-10 lines maximum |
32
- | Quote slide | 1 quote + attribution |
33
- | Image slide | 1 image, ideally under 60vh |
34
-
35
- ## Mandatory Base CSS
36
-
37
- Copy this block into every generated presentation and then theme on top of it.
38
-
39
- ```css
40
- /* ===========================================
41
- VIEWPORT FITTING: MANDATORY BASE STYLES
42
- =========================================== */
43
-
44
- html, body {
45
- height: 100%;
46
- overflow-x: hidden;
47
- }
48
-
49
- html {
50
- scroll-snap-type: y mandatory;
51
- scroll-behavior: smooth;
52
- }
53
-
54
- .slide {
55
- width: 100vw;
56
- height: 100vh;
57
- height: 100dvh;
58
- overflow: hidden;
59
- scroll-snap-align: start;
60
- display: flex;
61
- flex-direction: column;
62
- position: relative;
63
- }
64
-
65
- .slide-content {
66
- flex: 1;
67
- display: flex;
68
- flex-direction: column;
69
- justify-content: center;
70
- max-height: 100%;
71
- overflow: hidden;
72
- padding: var(--slide-padding);
73
- }
74
-
75
- :root {
76
- --title-size: clamp(1.5rem, 5vw, 4rem);
77
- --h2-size: clamp(1.25rem, 3.5vw, 2.5rem);
78
- --h3-size: clamp(1rem, 2.5vw, 1.75rem);
79
- --body-size: clamp(0.75rem, 1.5vw, 1.125rem);
80
- --small-size: clamp(0.65rem, 1vw, 0.875rem);
81
-
82
- --slide-padding: clamp(1rem, 4vw, 4rem);
83
- --content-gap: clamp(0.5rem, 2vw, 2rem);
84
- --element-gap: clamp(0.25rem, 1vw, 1rem);
85
- }
86
-
87
- .card, .container, .content-box {
88
- max-width: min(90vw, 1000px);
89
- max-height: min(80vh, 700px);
90
- }
91
-
92
- .feature-list, .bullet-list {
93
- gap: clamp(0.4rem, 1vh, 1rem);
94
- }
95
-
96
- .feature-list li, .bullet-list li {
97
- font-size: var(--body-size);
98
- line-height: 1.4;
99
- }
100
-
101
- .grid {
102
- display: grid;
103
- grid-template-columns: repeat(auto-fit, minmax(min(100%, 250px), 1fr));
104
- gap: clamp(0.5rem, 1.5vw, 1rem);
105
- }
106
-
107
- img, .image-container {
108
- max-width: 100%;
109
- max-height: min(50vh, 400px);
110
- object-fit: contain;
111
- }
112
-
113
- @media (max-height: 700px) {
114
- :root {
115
- --slide-padding: clamp(0.75rem, 3vw, 2rem);
116
- --content-gap: clamp(0.4rem, 1.5vw, 1rem);
117
- --title-size: clamp(1.25rem, 4.5vw, 2.5rem);
118
- --h2-size: clamp(1rem, 3vw, 1.75rem);
119
- }
120
- }
121
-
122
- @media (max-height: 600px) {
123
- :root {
124
- --slide-padding: clamp(0.5rem, 2.5vw, 1.5rem);
125
- --content-gap: clamp(0.3rem, 1vw, 0.75rem);
126
- --title-size: clamp(1.1rem, 4vw, 2rem);
127
- --body-size: clamp(0.7rem, 1.2vw, 0.95rem);
128
- }
129
-
130
- .nav-dots, .keyboard-hint, .decorative {
131
- display: none;
132
- }
133
- }
134
-
135
- @media (max-height: 500px) {
136
- :root {
137
- --slide-padding: clamp(0.4rem, 2vw, 1rem);
138
- --title-size: clamp(1rem, 3.5vw, 1.5rem);
139
- --h2-size: clamp(0.9rem, 2.5vw, 1.25rem);
140
- --body-size: clamp(0.65rem, 1vw, 0.85rem);
141
- }
142
- }
143
-
144
- @media (max-width: 600px) {
145
- :root {
146
- --title-size: clamp(1.25rem, 7vw, 2.5rem);
147
- }
148
-
149
- .grid {
150
- grid-template-columns: 1fr;
151
- }
152
- }
153
-
154
- @media (prefers-reduced-motion: reduce) {
155
- *, *::before, *::after {
156
- animation-duration: 0.01ms !important;
157
- transition-duration: 0.2s !important;
158
- }
159
-
160
- html {
161
- scroll-behavior: auto;
162
- }
163
- }
164
- ```
165
-
166
- ## Viewport Checklist
167
-
168
- - every `.slide` has `height: 100vh`, `height: 100dvh`, and `overflow: hidden`
169
- - all typography uses `clamp()`
170
- - all spacing uses `clamp()` or viewport units
171
- - images have `max-height` constraints
172
- - grids adapt with `auto-fit` + `minmax()`
173
- - short-height breakpoints exist at `700px`, `600px`, and `500px`
174
- - if anything feels cramped, split the slide
175
-
176
- ## Mood to Preset Mapping
177
-
178
- | Mood | Good Presets |
179
- |------|--------------|
180
- | Impressed / Confident | Bold Signal, Electric Studio, Dark Botanical |
181
- | Excited / Energized | Creative Voltage, Neon Cyber, Split Pastel |
182
- | Calm / Focused | Notebook Tabs, Paper & Ink, Swiss Modern |
183
- | Inspired / Moved | Dark Botanical, Vintage Editorial, Pastel Geometry |
184
-
185
- ## Preset Catalog
186
-
187
- ### 1. Bold Signal
188
-
189
- - Vibe: confident, high-impact, keynote-ready
190
- - Best for: pitch decks, launches, statements
191
- - Fonts: Archivo Black + Space Grotesk
192
- - Palette: charcoal base, hot orange focal card, crisp white text
193
- - Signature: oversized section numbers, high-contrast card on dark field
194
-
195
- ### 2. Electric Studio
196
-
197
- - Vibe: clean, bold, agency-polished
198
- - Best for: client presentations, strategic reviews
199
- - Fonts: Manrope only
200
- - Palette: black, white, saturated cobalt accent
201
- - Signature: two-panel split and sharp editorial alignment
202
-
203
- ### 3. Creative Voltage
204
-
205
- - Vibe: energetic, retro-modern, playful confidence
206
- - Best for: creative studios, brand work, product storytelling
207
- - Fonts: Syne + Space Mono
208
- - Palette: electric blue, neon yellow, deep navy
209
- - Signature: halftone textures, badges, punchy contrast
210
-
211
- ### 4. Dark Botanical
212
-
213
- - Vibe: elegant, premium, atmospheric
214
- - Best for: luxury brands, thoughtful narratives, premium product decks
215
- - Fonts: Cormorant + IBM Plex Sans
216
- - Palette: near-black, warm ivory, blush, gold, terracotta
217
- - Signature: blurred abstract circles, fine rules, restrained motion
218
-
219
- ### 5. Notebook Tabs
220
-
221
- - Vibe: editorial, organized, tactile
222
- - Best for: reports, reviews, structured storytelling
223
- - Fonts: Bodoni Moda + DM Sans
224
- - Palette: cream paper on charcoal with pastel tabs
225
- - Signature: paper sheet, colored side tabs, binder details
226
-
227
- ### 6. Pastel Geometry
228
-
229
- - Vibe: approachable, modern, friendly
230
- - Best for: product overviews, onboarding, lighter brand decks
231
- - Fonts: Plus Jakarta Sans only
232
- - Palette: pale blue field, cream card, soft pink/mint/lavender accents
233
- - Signature: vertical pills, rounded cards, soft shadows
234
-
235
- ### 7. Split Pastel
236
-
237
- - Vibe: playful, modern, creative
238
- - Best for: agency intros, workshops, portfolios
239
- - Fonts: Outfit only
240
- - Palette: peach + lavender split with mint badges
241
- - Signature: split backdrop, rounded tags, light grid overlays
242
-
243
- ### 8. Vintage Editorial
244
-
245
- - Vibe: witty, personality-driven, magazine-inspired
246
- - Best for: personal brands, opinionated talks, storytelling
247
- - Fonts: Fraunces + Work Sans
248
- - Palette: cream, charcoal, dusty warm accents
249
- - Signature: geometric accents, bordered callouts, punchy serif headlines
250
-
251
- ### 9. Neon Cyber
252
-
253
- - Vibe: futuristic, techy, kinetic
254
- - Best for: AI, infra, dev tools, future-of-X talks
255
- - Fonts: Clash Display + Satoshi
256
- - Palette: midnight navy, cyan, magenta
257
- - Signature: glow, particles, grids, data-radar energy
258
-
259
- ### 10. Terminal Green
260
-
261
- - Vibe: developer-focused, hacker-clean
262
- - Best for: APIs, CLI tools, engineering demos
263
- - Fonts: JetBrains Mono only
264
- - Palette: GitHub dark + terminal green
265
- - Signature: scan lines, command-line framing, precise monospace rhythm
266
-
267
- ### 11. Swiss Modern
268
-
269
- - Vibe: minimal, precise, data-forward
270
- - Best for: corporate, product strategy, analytics
271
- - Fonts: Archivo + Nunito
272
- - Palette: white, black, signal red
273
- - Signature: visible grids, asymmetry, geometric discipline
274
-
275
- ### 12. Paper & Ink
276
-
277
- - Vibe: literary, thoughtful, story-driven
278
- - Best for: essays, keynote narratives, manifesto decks
279
- - Fonts: Cormorant Garamond + Source Serif 4
280
- - Palette: warm cream, charcoal, crimson accent
281
- - Signature: pull quotes, drop caps, elegant rules
282
-
283
- ## Direct Selection Prompts
284
-
285
- If the user already knows the style they want, let them pick directly from the preset names above instead of forcing preview generation.
286
-
287
- ## Animation Feel Mapping
288
-
289
- | Feeling | Motion Direction |
290
- |---------|------------------|
291
- | Dramatic / Cinematic | slow fades, parallax, large scale-ins |
292
- | Techy / Futuristic | glow, particles, grid motion, scramble text |
293
- | Playful / Friendly | springy easing, rounded shapes, floating motion |
294
- | Professional / Corporate | subtle 200-300ms transitions, clean slides |
295
- | Calm / Minimal | very restrained movement, whitespace-first |
296
- | Editorial / Magazine | strong hierarchy, staggered text and image interplay |
297
-
298
- ## CSS Gotcha: Negating Functions
299
-
300
- Never write these:
301
-
302
- ```css
303
- right: -clamp(28px, 3.5vw, 44px);
304
- margin-left: -min(10vw, 100px);
305
- ```
306
-
307
- Browsers ignore them silently.
308
-
309
- Always write this instead:
310
-
311
- ```css
312
- right: calc(-1 * clamp(28px, 3.5vw, 44px));
313
- margin-left: calc(-1 * min(10vw, 100px));
314
- ```
315
-
316
- ## Validation Sizes
317
-
318
- Test at minimum:
319
- - Desktop: `1920x1080`, `1440x900`, `1280x720`
320
- - Tablet: `1024x768`, `768x1024`
321
- - Mobile: `375x667`, `414x896`
322
- - Landscape phone: `667x375`, `896x414`
323
-
324
- ## Anti-Patterns
325
-
326
- Do not use:
327
- - purple-on-white startup templates
328
- - Inter / Roboto / Arial as the visual voice unless the user explicitly wants utilitarian neutrality
329
- - bullet walls, tiny type, or code blocks that require scrolling
330
- - decorative illustrations when abstract geometry would do the job better
@@ -1,68 +0,0 @@
1
- ---
2
- name: frontend-ui-engineering
3
- description: Builds production-quality UI with design-system compliance, accessibility, responsive behavior, and runtime proof. Use when implementing or changing user-facing interfaces.
4
- origin: ECC
5
- ---
6
-
7
- # Frontend UI Engineering
8
-
9
- ## Overview
10
-
11
- Frontend work is not "just make the UI appear."
12
- This skill treats design quality, accessibility, responsive behavior, interaction states, and runtime verification as part of the implementation itself.
13
-
14
- ## When to Use
15
-
16
- - building new pages, components, forms, or flows
17
- - modifying existing user-facing UI
18
- - implementing interaction changes or responsive layouts
19
- - touching design-system components, page structure, or frontend state
20
-
21
- **When NOT to use**
22
-
23
- - backend-only or non-UI work
24
- - pure documentation updates with no user-facing surface
25
-
26
- ## Workflow
27
-
28
- 1. Load the visual and product constraints first.
29
- Start with approved design artifacts, design-system rules, component conventions, and relevant UI standards.
30
- 2. Define the required states.
31
- Name the happy path, loading, empty, error, disabled, and responsive states before writing polish code.
32
- 3. Build structure before ornament.
33
- Implement semantic layout, component boundaries, and state flow first.
34
- Visual detail should reinforce the structure, not compensate for a weak structure.
35
- 4. Treat accessibility as a first-class requirement.
36
- Use `../../references/accessibility-checklist.md` and `../../references/frontend-quality-checklist.md`.
37
- Keyboard support, focus behavior, labels, semantics, and contrast are part of done.
38
- 5. Pair UI work with proof.
39
- Use `../../references/testing-patterns.md` for behavior tests and runtime evidence.
40
- For complex UI or interaction work, verify the behavior in a browser, not just in code.
41
- 6. Check responsive behavior intentionally.
42
- Confirm the key flow still works across the relevant viewport sizes and input states.
43
-
44
- ## Common Rationalizations
45
-
46
- | Rationalization | Reality |
47
- |---|---|
48
- | "The UI compiles, so it's basically done." | Compilation does not prove usable layout, accessibility, or runtime behavior. |
49
- | "Accessibility can come later." | Retrofitting accessibility after the structure is baked is slower and riskier. |
50
- | "Desktop is enough for now." | Responsive breakage is still product breakage. |
51
- | "The design system will cover everything automatically." | Design systems reduce mistakes, but they do not remove the need for state, layout, and interaction judgment. |
52
-
53
- ## Red Flags
54
-
55
- - no explicit state model for loading, empty, or error cases
56
- - browser/runtime proof is missing for meaningful interaction changes
57
- - design tokens or system components are bypassed without reason
58
- - accessibility is mentioned vaguely instead of checked concretely
59
-
60
- ## Verification
61
-
62
- After frontend implementation, confirm:
63
-
64
- - [ ] required states are implemented, not implied
65
- - [ ] the UI respects the active design system and conventions
66
- - [ ] accessibility checks were applied deliberately
67
- - [ ] the key flow works responsively at the relevant breakpoints
68
- - [ ] runtime or browser evidence exists for meaningful interaction changes