@nextsparkjs/ai-workflow 0.1.0-beta.100

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 (272) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +115 -0
  3. package/claude/_docs/workflows-optimizations.md +359 -0
  4. package/claude/agents/api-tester.md +634 -0
  5. package/claude/agents/architecture-supervisor.md +1351 -0
  6. package/claude/agents/backend-developer.md +997 -0
  7. package/claude/agents/backend-validator.md +417 -0
  8. package/claude/agents/bdd-docs-writer.md +737 -0
  9. package/claude/agents/block-developer.md +677 -0
  10. package/claude/agents/code-reviewer.md +1432 -0
  11. package/claude/agents/db-developer.md +721 -0
  12. package/claude/agents/db-validator.md +407 -0
  13. package/claude/agents/demo-video-generator.md +493 -0
  14. package/claude/agents/documentation-writer.md +1268 -0
  15. package/claude/agents/frontend-developer.md +1234 -0
  16. package/claude/agents/frontend-validator.md +777 -0
  17. package/claude/agents/functional-validator.md +630 -0
  18. package/claude/agents/mock-analyst.md +387 -0
  19. package/claude/agents/product-manager.md +963 -0
  20. package/claude/agents/qa-automation.md +1762 -0
  21. package/claude/agents/release-manager.md +634 -0
  22. package/claude/agents/selectors-translator.md +262 -0
  23. package/claude/agents/unit-test-writer.md +785 -0
  24. package/claude/agents/visual-comparator.md +329 -0
  25. package/claude/agents/workflow-maintainer.md +352 -0
  26. package/claude/commands/do/README.md +88 -0
  27. package/claude/commands/do/create-api.md +64 -0
  28. package/claude/commands/do/create-entity.md +66 -0
  29. package/claude/commands/do/create-migration.md +64 -0
  30. package/claude/commands/do/create-plugin.md +56 -0
  31. package/claude/commands/do/create-theme.md +70 -0
  32. package/claude/commands/do/mock-data.md +67 -0
  33. package/claude/commands/do/reset-db.md +71 -0
  34. package/claude/commands/do/setup-scheduled-action.md +75 -0
  35. package/claude/commands/do/sync-code-review.md +117 -0
  36. package/claude/commands/do/update-selectors.md +112 -0
  37. package/claude/commands/do/use-skills.md +90 -0
  38. package/claude/commands/do/validate-blocks.md +69 -0
  39. package/claude/commands/how-to/README.md +261 -0
  40. package/claude/commands/how-to/add-metadata.md +692 -0
  41. package/claude/commands/how-to/add-taxonomies.md +806 -0
  42. package/claude/commands/how-to/add-translations.md +571 -0
  43. package/claude/commands/how-to/create-api.md +577 -0
  44. package/claude/commands/how-to/create-block.md +575 -0
  45. package/claude/commands/how-to/create-child-entities.md +771 -0
  46. package/claude/commands/how-to/create-entity.md +597 -0
  47. package/claude/commands/how-to/create-migrations.md +605 -0
  48. package/claude/commands/how-to/create-plugin.md +654 -0
  49. package/claude/commands/how-to/customize-app.md +481 -0
  50. package/claude/commands/how-to/customize-dashboard.md +553 -0
  51. package/claude/commands/how-to/customize-theme.md +438 -0
  52. package/claude/commands/how-to/define-features-flows.md +632 -0
  53. package/claude/commands/how-to/deploy.md +507 -0
  54. package/claude/commands/how-to/handle-file-uploads.md +746 -0
  55. package/claude/commands/how-to/implement-search.md +1001 -0
  56. package/claude/commands/how-to/install-plugins.md +352 -0
  57. package/claude/commands/how-to/manage-test-coverage.md +984 -0
  58. package/claude/commands/how-to/run-tests.md +400 -0
  59. package/claude/commands/how-to/set-app-languages.md +601 -0
  60. package/claude/commands/how-to/set-plans-and-permissions.md +575 -0
  61. package/claude/commands/how-to/set-scheduled-actions.md +527 -0
  62. package/claude/commands/how-to/set-user-roles-and-permissions.md +550 -0
  63. package/claude/commands/how-to/setup-authentication.md +388 -0
  64. package/claude/commands/how-to/setup-claude-code.md +440 -0
  65. package/claude/commands/how-to/setup-database.md +274 -0
  66. package/claude/commands/how-to/setup-email-providers.md +598 -0
  67. package/claude/commands/how-to/setup-mobile-dev.md +627 -0
  68. package/claude/commands/how-to/start.md +500 -0
  69. package/claude/commands/how-to/use-devtools.md +639 -0
  70. package/claude/commands/how-to/use-superadmin.md +622 -0
  71. package/claude/commands/session/README.md +193 -0
  72. package/claude/commands/session/block-create.md +190 -0
  73. package/claude/commands/session/block-list.md +203 -0
  74. package/claude/commands/session/block-update.md +192 -0
  75. package/claude/commands/session/block-validate.md +218 -0
  76. package/claude/commands/session/changelog.md +115 -0
  77. package/claude/commands/session/close.md +225 -0
  78. package/claude/commands/session/commit.md +174 -0
  79. package/claude/commands/session/db-entity.md +206 -0
  80. package/claude/commands/session/db-fix.md +212 -0
  81. package/claude/commands/session/db-sample.md +206 -0
  82. package/claude/commands/session/demo.md +178 -0
  83. package/claude/commands/session/doc-bdd.md +207 -0
  84. package/claude/commands/session/doc-feature.md +218 -0
  85. package/claude/commands/session/doc-read.md +225 -0
  86. package/claude/commands/session/execute.md +204 -0
  87. package/claude/commands/session/explain.md +202 -0
  88. package/claude/commands/session/fix-bug.md +210 -0
  89. package/claude/commands/session/fix-build.md +182 -0
  90. package/claude/commands/session/fix-test.md +189 -0
  91. package/claude/commands/session/pending.md +232 -0
  92. package/claude/commands/session/refine.md +188 -0
  93. package/claude/commands/session/resume.md +192 -0
  94. package/claude/commands/session/review.md +192 -0
  95. package/claude/commands/session/scope-change.md +181 -0
  96. package/claude/commands/session/start-blocks.md +347 -0
  97. package/claude/commands/session/start.md +604 -0
  98. package/claude/commands/session/status.md +169 -0
  99. package/claude/commands/session/test-fix.md +221 -0
  100. package/claude/commands/session/test-run.md +203 -0
  101. package/claude/commands/session/test-write.md +242 -0
  102. package/claude/commands/session/validate.md +162 -0
  103. package/claude/config/context.json +40 -0
  104. package/claude/config/github.json +69 -0
  105. package/claude/config/github.schema.json +106 -0
  106. package/claude/config/team.json +46 -0
  107. package/claude/config/team.schema.json +106 -0
  108. package/claude/config/workspace.json +43 -0
  109. package/claude/config/workspace.schema.json +75 -0
  110. package/claude/skills/README.md +228 -0
  111. package/claude/skills/accessibility/SKILL.md +573 -0
  112. package/claude/skills/api-bypass-layers/SKILL.md +550 -0
  113. package/claude/skills/asana-integration/SKILL.md +499 -0
  114. package/claude/skills/better-auth/SKILL.md +666 -0
  115. package/claude/skills/billing-subscriptions/SKILL.md +660 -0
  116. package/claude/skills/block-decision-matrix/SKILL.md +359 -0
  117. package/claude/skills/clickup-integration/SKILL.md +434 -0
  118. package/claude/skills/core-theme-responsibilities/SKILL.md +485 -0
  119. package/claude/skills/create-plugin/SKILL.md +425 -0
  120. package/claude/skills/create-theme/SKILL.md +331 -0
  121. package/claude/skills/cypress-api/SKILL.md +511 -0
  122. package/claude/skills/cypress-api/scripts/generate-api-controller.py +329 -0
  123. package/claude/skills/cypress-api/scripts/generate-api-test.py +930 -0
  124. package/claude/skills/cypress-e2e/SKILL.md +526 -0
  125. package/claude/skills/cypress-e2e/scripts/extract-selectors.py +383 -0
  126. package/claude/skills/cypress-e2e/scripts/generate-uat-test.py +788 -0
  127. package/claude/skills/cypress-selectors/SKILL.md +309 -0
  128. package/claude/skills/cypress-selectors/scripts/extract-missing.py +243 -0
  129. package/claude/skills/cypress-selectors/scripts/generate-block-selectors.py +283 -0
  130. package/claude/skills/cypress-selectors/scripts/validate-selectors.py +145 -0
  131. package/claude/skills/database-migrations/SKILL.md +335 -0
  132. package/claude/skills/database-migrations/scripts/generate-sample-data.py +284 -0
  133. package/claude/skills/database-migrations/scripts/validate-migration.py +323 -0
  134. package/claude/skills/design-system/SKILL.md +682 -0
  135. package/claude/skills/documentation/SKILL.md +540 -0
  136. package/claude/skills/entity-api/SKILL.md +482 -0
  137. package/claude/skills/entity-system/SKILL.md +635 -0
  138. package/claude/skills/entity-system/scripts/generate-child-migration.py +298 -0
  139. package/claude/skills/entity-system/scripts/generate-metas-migration.py +233 -0
  140. package/claude/skills/entity-system/scripts/generate-migration.py +382 -0
  141. package/claude/skills/entity-system/scripts/generate-sample-data.py +418 -0
  142. package/claude/skills/entity-system/scripts/scaffold-entity.py +661 -0
  143. package/claude/skills/github/SKILL.md +467 -0
  144. package/claude/skills/i18n-nextintl/SKILL.md +302 -0
  145. package/claude/skills/i18n-nextintl/scripts/add-translation.py +243 -0
  146. package/claude/skills/i18n-nextintl/scripts/extract-hardcoded.py +246 -0
  147. package/claude/skills/i18n-nextintl/scripts/validate-translations.py +260 -0
  148. package/claude/skills/impact-analysis/SKILL.md +203 -0
  149. package/claude/skills/jest-unit/SKILL.md +306 -0
  150. package/claude/skills/jest-unit/references/component-testing.md +371 -0
  151. package/claude/skills/jest-unit/references/mocking-patterns.md +380 -0
  152. package/claude/skills/jest-unit/references/service-hook-testing.md +454 -0
  153. package/claude/skills/jira-integration/SKILL.md +539 -0
  154. package/claude/skills/media-library/SKILL.md +743 -0
  155. package/claude/skills/mock-analysis/SKILL.md +276 -0
  156. package/claude/skills/monorepo-architecture/SKILL.md +162 -0
  157. package/claude/skills/nextjs-api-development/SKILL.md +364 -0
  158. package/claude/skills/nextjs-api-development/scripts/generate-crud-tests.py +456 -0
  159. package/claude/skills/nextjs-api-development/scripts/scaffold-endpoint.py +481 -0
  160. package/claude/skills/nextjs-api-development/scripts/validate-api.py +283 -0
  161. package/claude/skills/notion-integration/SKILL.md +641 -0
  162. package/claude/skills/npm-development-workflow/SKILL.md +480 -0
  163. package/claude/skills/page-builder-blocks/SKILL.md +530 -0
  164. package/claude/skills/page-builder-blocks/scripts/scaffold-block.py +444 -0
  165. package/claude/skills/permissions-system/SKILL.md +619 -0
  166. package/claude/skills/plugins/SKILL.md +340 -0
  167. package/claude/skills/plugins/references/plugin-templates.md +414 -0
  168. package/claude/skills/plugins/references/plugin-testing.md +353 -0
  169. package/claude/skills/plugins/references/plugin-types.md +198 -0
  170. package/claude/skills/plugins/scripts/scaffold-plugin.py +443 -0
  171. package/claude/skills/pom-patterns/SKILL.md +452 -0
  172. package/claude/skills/pom-patterns/scripts/generate-pom.py +392 -0
  173. package/claude/skills/rate-limiting/SKILL.md +342 -0
  174. package/claude/skills/react-best-practices/AGENTS.md +2410 -0
  175. package/claude/skills/react-best-practices/README.md +123 -0
  176. package/claude/skills/react-best-practices/SKILL.md +125 -0
  177. package/claude/skills/react-best-practices/metadata.json +15 -0
  178. package/claude/skills/react-best-practices/rules/_sections.md +46 -0
  179. package/claude/skills/react-best-practices/rules/_template.md +28 -0
  180. package/claude/skills/react-best-practices/rules/advanced-event-handler-refs.md +55 -0
  181. package/claude/skills/react-best-practices/rules/advanced-use-latest.md +49 -0
  182. package/claude/skills/react-best-practices/rules/async-api-routes.md +38 -0
  183. package/claude/skills/react-best-practices/rules/async-defer-await.md +80 -0
  184. package/claude/skills/react-best-practices/rules/async-dependencies.md +36 -0
  185. package/claude/skills/react-best-practices/rules/async-parallel.md +28 -0
  186. package/claude/skills/react-best-practices/rules/async-suspense-boundaries.md +99 -0
  187. package/claude/skills/react-best-practices/rules/bundle-barrel-imports.md +59 -0
  188. package/claude/skills/react-best-practices/rules/bundle-conditional.md +31 -0
  189. package/claude/skills/react-best-practices/rules/bundle-defer-third-party.md +49 -0
  190. package/claude/skills/react-best-practices/rules/bundle-dynamic-imports.md +35 -0
  191. package/claude/skills/react-best-practices/rules/bundle-preload.md +50 -0
  192. package/claude/skills/react-best-practices/rules/client-event-listeners.md +74 -0
  193. package/claude/skills/react-best-practices/rules/client-localstorage-schema.md +71 -0
  194. package/claude/skills/react-best-practices/rules/client-passive-event-listeners.md +48 -0
  195. package/claude/skills/react-best-practices/rules/client-swr-dedup.md +56 -0
  196. package/claude/skills/react-best-practices/rules/js-batch-dom-css.md +82 -0
  197. package/claude/skills/react-best-practices/rules/js-cache-function-results.md +80 -0
  198. package/claude/skills/react-best-practices/rules/js-cache-property-access.md +28 -0
  199. package/claude/skills/react-best-practices/rules/js-cache-storage.md +70 -0
  200. package/claude/skills/react-best-practices/rules/js-combine-iterations.md +32 -0
  201. package/claude/skills/react-best-practices/rules/js-early-exit.md +50 -0
  202. package/claude/skills/react-best-practices/rules/js-hoist-regexp.md +45 -0
  203. package/claude/skills/react-best-practices/rules/js-index-maps.md +37 -0
  204. package/claude/skills/react-best-practices/rules/js-length-check-first.md +49 -0
  205. package/claude/skills/react-best-practices/rules/js-min-max-loop.md +82 -0
  206. package/claude/skills/react-best-practices/rules/js-set-map-lookups.md +24 -0
  207. package/claude/skills/react-best-practices/rules/js-tosorted-immutable.md +57 -0
  208. package/claude/skills/react-best-practices/rules/rendering-activity.md +26 -0
  209. package/claude/skills/react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
  210. package/claude/skills/react-best-practices/rules/rendering-conditional-render.md +40 -0
  211. package/claude/skills/react-best-practices/rules/rendering-content-visibility.md +38 -0
  212. package/claude/skills/react-best-practices/rules/rendering-hoist-jsx.md +46 -0
  213. package/claude/skills/react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
  214. package/claude/skills/react-best-practices/rules/rendering-svg-precision.md +28 -0
  215. package/claude/skills/react-best-practices/rules/rerender-defer-reads.md +39 -0
  216. package/claude/skills/react-best-practices/rules/rerender-dependencies.md +45 -0
  217. package/claude/skills/react-best-practices/rules/rerender-derived-state.md +29 -0
  218. package/claude/skills/react-best-practices/rules/rerender-functional-setstate.md +74 -0
  219. package/claude/skills/react-best-practices/rules/rerender-lazy-state-init.md +58 -0
  220. package/claude/skills/react-best-practices/rules/rerender-memo.md +44 -0
  221. package/claude/skills/react-best-practices/rules/rerender-transitions.md +40 -0
  222. package/claude/skills/react-best-practices/rules/server-after-nonblocking.md +73 -0
  223. package/claude/skills/react-best-practices/rules/server-cache-lru.md +41 -0
  224. package/claude/skills/react-best-practices/rules/server-cache-react.md +76 -0
  225. package/claude/skills/react-best-practices/rules/server-parallel-fetching.md +83 -0
  226. package/claude/skills/react-best-practices/rules/server-serialization.md +38 -0
  227. package/claude/skills/react-patterns/SKILL.md +688 -0
  228. package/claude/skills/registry-system/SKILL.md +331 -0
  229. package/claude/skills/scheduled-actions/SKILL.md +671 -0
  230. package/claude/skills/scope-enforcement/SKILL.md +542 -0
  231. package/claude/skills/scope-enforcement/scripts/validate-scope.py +357 -0
  232. package/claude/skills/server-actions/SKILL.md +493 -0
  233. package/claude/skills/service-layer/SKILL.md +587 -0
  234. package/claude/skills/session-management/SKILL.md +266 -0
  235. package/claude/skills/session-management/scripts/create-session.py +166 -0
  236. package/claude/skills/session-management/scripts/iteration-close.sh +105 -0
  237. package/claude/skills/session-management/scripts/iteration-init.sh +180 -0
  238. package/claude/skills/session-management/scripts/session-archive.sh +87 -0
  239. package/claude/skills/session-management/scripts/session-close.sh +133 -0
  240. package/claude/skills/session-management/scripts/session-init.sh +225 -0
  241. package/claude/skills/session-management/scripts/session-list.sh +163 -0
  242. package/claude/skills/session-management/scripts/split-plan.sh +116 -0
  243. package/claude/skills/shadcn-components/SKILL.md +586 -0
  244. package/claude/skills/shadcn-theming/SKILL.md +446 -0
  245. package/claude/skills/suspense-loading/SKILL.md +280 -0
  246. package/claude/skills/tailwind-theming/SKILL.md +507 -0
  247. package/claude/skills/tanstack-query/SKILL.md +608 -0
  248. package/claude/skills/test-coverage/SKILL.md +239 -0
  249. package/claude/skills/web-design-guidelines/SKILL.md +39 -0
  250. package/claude/skills/zod-validation/SKILL.md +537 -0
  251. package/claude/templates/blocks/progress.md +86 -0
  252. package/claude/templates/iteration/changes.md +61 -0
  253. package/claude/templates/iteration/progress.md +55 -0
  254. package/claude/templates/log.md +31 -0
  255. package/claude/templates/story/context.md +77 -0
  256. package/claude/templates/story/pendings.md +37 -0
  257. package/claude/templates/story/plan.md +299 -0
  258. package/claude/templates/story/requirements.md +109 -0
  259. package/claude/templates/story/scope.json +10 -0
  260. package/claude/templates/story/tests.md +91 -0
  261. package/claude/templates/task/progress.md +58 -0
  262. package/claude/templates/task/requirements.md +54 -0
  263. package/claude/workflows/README.md +154 -0
  264. package/claude/workflows/blocks.md +614 -0
  265. package/claude/workflows/story.md +1207 -0
  266. package/claude/workflows/task.md +927 -0
  267. package/claude/workflows/tweak.md +527 -0
  268. package/cursor/.gitkeep +0 -0
  269. package/package.json +35 -0
  270. package/scripts/postinstall.mjs +198 -0
  271. package/scripts/setup.mjs +282 -0
  272. package/scripts/sync.mjs +209 -0
@@ -0,0 +1,387 @@
1
+ # mock-analyst Agent
2
+
3
+ Analyzes HTML/CSS mocks and creates execution plans for block development.
4
+
5
+ ---
6
+
7
+ ## Overview
8
+
9
+ The mock-analyst agent parses design mocks (from Stitch, Figma, UXPilot, etc.) and generates structured analysis files that guide subsequent development phases.
10
+
11
+ **Multi-mode Agent:**
12
+ - `STRUCTURE` mode: Analyze mock HTML/CSS structure
13
+ - `PLANNING` mode: Create block execution plan (BLOCKS workflow only)
14
+ - `FULL` mode: Both STRUCTURE and PLANNING
15
+
16
+ ---
17
+
18
+ ## When to Use
19
+
20
+ | Workflow | Phase | Mode | Trigger |
21
+ |----------|-------|------|---------|
22
+ | **BLOCKS** | Phase 1 | FULL | Always (mock required) |
23
+ | **TASK** | Phase 0.6 | STRUCTURE | If mock selected in discovery |
24
+ | **STORY** | Phase 0.6 | STRUCTURE | If mock selected in discovery |
25
+
26
+ ---
27
+
28
+ ## Inputs
29
+
30
+ ```typescript
31
+ interface MockAnalystInput {
32
+ // Required
33
+ mockPath: string; // Path to mocks/ folder
34
+ workflow: "BLOCKS" | "TASK" | "STORY";
35
+
36
+ // From discovery context
37
+ mockSource: "stitch" | "uxpilot" | "figma" | "other";
38
+ mockFor: "blocks" | "screens" | "components";
39
+ mockComplexity: "single" | "multiple" | "fullPage";
40
+
41
+ // Optional
42
+ blockType?: string; // For BLOCKS: hero, features, cta, etc.
43
+ blockDecision?: string; // For BLOCKS: new, variant, modify
44
+ themePath?: string; // Active theme for token mapping
45
+ }
46
+ ```
47
+
48
+ ---
49
+
50
+ ## Outputs
51
+
52
+ ### All Workflows
53
+
54
+ **analysis.json** - Mock structure analysis
55
+ ```json
56
+ {
57
+ "mockPath": "mocks/",
58
+ "htmlFile": "code.html",
59
+ "screenshotFile": "screen.png",
60
+ "source": "stitch",
61
+ "analyzedAt": "2026-01-12T12:00:00Z",
62
+
63
+ "tailwindConfig": {
64
+ "found": true,
65
+ "colors": { "primary": "#137fec", "background-dark": "#101922" },
66
+ "fonts": { "sans": ["Inter", "sans-serif"] }
67
+ },
68
+
69
+ "sections": [
70
+ {
71
+ "id": "section-1",
72
+ "type": "hero",
73
+ "selector": "section:first-of-type",
74
+ "htmlSnippet": "<section class=\"relative min-h-[600px]...\">",
75
+ "components": [
76
+ {"type": "heading", "level": 1, "text": "Build faster..."},
77
+ {"type": "button", "text": "Get Started", "variant": "primary"}
78
+ ],
79
+ "layout": {
80
+ "type": "centered-flex",
81
+ "minHeight": "600px",
82
+ "hasBackground": true
83
+ },
84
+ "estimatedComplexity": "medium"
85
+ }
86
+ ],
87
+
88
+ "componentInventory": {
89
+ "headings": {"h1": 1, "h2": 4, "h3": 12},
90
+ "buttons": 8,
91
+ "images": 6,
92
+ "forms": 1
93
+ },
94
+
95
+ "summary": {
96
+ "totalSections": 7,
97
+ "complexity": "medium-high",
98
+ "estimatedBlocks": { "new": 2, "existing": 5 }
99
+ }
100
+ }
101
+ ```
102
+
103
+ **ds-mapping.json** - Design token mapping
104
+ ```json
105
+ {
106
+ "theme": "default",
107
+ "themeGlobalsPath": "contents/themes/default/styles/globals.css",
108
+ "analyzedAt": "2026-01-12T12:00:00Z",
109
+
110
+ "colorMapping": [
111
+ {
112
+ "mockValue": "#137fec",
113
+ "mockName": "primary",
114
+ "themeToken": "--primary",
115
+ "tailwindClass": "bg-primary",
116
+ "matchType": "semantic",
117
+ "similarity": 0.85
118
+ }
119
+ ],
120
+
121
+ "gaps": [
122
+ {
123
+ "mockValue": "#00d4ff",
124
+ "mockName": "accent-cyan",
125
+ "recommendation": "Use --accent or add custom token"
126
+ }
127
+ ],
128
+
129
+ "summary": {
130
+ "totalMockTokens": 12,
131
+ "mapped": 10,
132
+ "gaps": 2,
133
+ "overallCompatibility": 0.83
134
+ }
135
+ }
136
+ ```
137
+
138
+ ### BLOCKS Workflow Only
139
+
140
+ **block-plan.json** - Block decision and specification
141
+ ```json
142
+ {
143
+ "mockPath": "mocks/",
144
+ "analyzedAt": "2026-01-12T12:00:00Z",
145
+ "workflow": "BLOCKS",
146
+
147
+ "existingBlocks": [
148
+ {
149
+ "name": "hero-simple",
150
+ "similarity": 0.85,
151
+ "matchReason": "Similar layout and components"
152
+ }
153
+ ],
154
+
155
+ "decision": {
156
+ "type": "new",
157
+ "blockName": "hero-terminal",
158
+ "baseBlock": "hero-simple",
159
+ "reasoning": "Requires custom terminal animation component"
160
+ },
161
+
162
+ "blockSpec": {
163
+ "name": "hero-terminal",
164
+ "category": "hero",
165
+ "fields": [
166
+ {"name": "title", "type": "text", "required": true},
167
+ {"name": "subtitle", "type": "text", "required": false},
168
+ {"name": "primaryCta", "type": "link", "required": true}
169
+ ],
170
+ "customComponents": ["TerminalAnimation"],
171
+ "estimatedComplexity": "medium"
172
+ },
173
+
174
+ "developmentNotes": [
175
+ "Terminal animation requires custom React component",
176
+ "Use existing Button component for CTAs"
177
+ ]
178
+ }
179
+ ```
180
+
181
+ ---
182
+
183
+ ## Process
184
+
185
+ ### Step 1: File Detection
186
+
187
+ ```
188
+ Detect files in mocks/ folder:
189
+ ├── [REQUIRED] Screenshot: screen.png, *.png, *.jpg, *.jpeg
190
+ ├── [RECOMMENDED] HTML: code.html, index.html, *.html
191
+ ├── [OPTIONAL] Tailwind config: tailwind.config.js, inline in HTML
192
+ └── [OPTIONAL] Assets: assets/, images/
193
+
194
+ Detection priority:
195
+ 1. code.html → Primary HTML
196
+ 2. index.html → Alternative
197
+ 3. Any *.html → Fallback
198
+ 4. screen.png → Primary screenshot
199
+ 5. Any *.png, *.jpg → Fallback
200
+ ```
201
+
202
+ ### Step 2: Parse HTML (if available)
203
+
204
+ ```
205
+ Extract from HTML:
206
+ ├── Tailwind config (inline <script>)
207
+ ├── Section structure (<section>, semantic HTML)
208
+ ├── Component inventory (buttons, forms, headings)
209
+ ├── Layout patterns (grid, flex, positioning)
210
+ └── Custom elements (animations, widgets)
211
+ ```
212
+
213
+ ### Step 3: Extract Design Tokens
214
+
215
+ ```
216
+ From Tailwind config:
217
+ ├── colors → Map to theme CSS variables
218
+ ├── fontFamily → Map to theme fonts
219
+ ├── spacing → Map to Tailwind spacing scale
220
+ ├── borderRadius → Map to --radius
221
+ └── Custom values → Flag as gaps
222
+ ```
223
+
224
+ ### Step 4: Map to Theme Tokens
225
+
226
+ ```
227
+ Read active theme globals.css:
228
+ ├── Extract :root variables
229
+ ├── Extract .dark variables
230
+ ├── Compare mock values to theme values
231
+ ├── Calculate similarity scores
232
+ └── Identify gaps (unmapped values)
233
+ ```
234
+
235
+ ### Step 5: Generate Block Plan (BLOCKS only)
236
+
237
+ ```
238
+ If workflow === "BLOCKS":
239
+ ├── Read existing blocks in theme
240
+ ├── Compare mock sections to existing blocks
241
+ ├── Apply decision matrix:
242
+ │ ├── >90% match → type: "existing"
243
+ │ ├── 70-90% match → type: "variant"
244
+ │ └── <70% match → type: "new"
245
+ ├── Generate field specifications
246
+ └── List development notes
247
+ ```
248
+
249
+ ### Step 6: Write Output Files
250
+
251
+ ```
252
+ Write to session folder:
253
+ ├── analysis.json (always)
254
+ ├── ds-mapping.json (always)
255
+ └── block-plan.json (BLOCKS workflow only)
256
+ ```
257
+
258
+ ---
259
+
260
+ ## Section Classification Heuristics
261
+
262
+ | Section Type | Indicators |
263
+ |--------------|------------|
264
+ | `hero` | `min-h-[500px]+`, `h-screen`, `<h1>`, large CTA |
265
+ | `navigation` | `<header>`, `<nav>`, `fixed top-0` |
266
+ | `features` | `grid`, repeated child pattern, icons |
267
+ | `cta` | `text-center`, 1-2 buttons, `py-16+` |
268
+ | `testimonials` | Quotes, avatars, carousel indicators |
269
+ | `pricing` | Tables, price values, plan comparison |
270
+ | `faq` | Accordion pattern, Q&A structure |
271
+ | `footer` | `<footer>`, `mt-auto`, links grid |
272
+
273
+ ---
274
+
275
+ ## Error Handling
276
+
277
+ ```
278
+ If no screenshot found:
279
+ ├── ERROR: "Cannot proceed without visual reference"
280
+ └── Action: Ask user to upload screenshot
281
+
282
+ If no HTML found:
283
+ ├── WARNING: "Limited analysis - screenshot only"
284
+ └── Action: Continue with visual-only analysis
285
+
286
+ If HTML is malformed:
287
+ ├── WARNING: "Could not parse HTML structure"
288
+ └── Action: Continue with partial analysis
289
+
290
+ If theme globals.css not found:
291
+ ├── WARNING: "Theme tokens not found"
292
+ └── Action: Skip token mapping, document gap
293
+ ```
294
+
295
+ ---
296
+
297
+ ## Integration
298
+
299
+ ### With block-developer (BLOCKS)
300
+ ```
301
+ block-developer reads:
302
+ ├── block-plan.json → Decision (new/variant/existing)
303
+ ├── analysis.json → Section structure
304
+ └── ds-mapping.json → Token mappings
305
+ ```
306
+
307
+ ### With frontend-developer (TASK/STORY)
308
+ ```
309
+ frontend-developer reads:
310
+ ├── analysis.json → Component inventory
311
+ └── ds-mapping.json → Token mappings for styling
312
+ ```
313
+
314
+ ### With product-manager (STORY)
315
+ ```
316
+ PM receives mock analysis as context:
317
+ ├── Section count → Informs AC complexity
318
+ ├── Component inventory → Informs requirements
319
+ └── Gaps → May require design decisions
320
+ ```
321
+
322
+ ---
323
+
324
+ ## Required Skills [v4.3]
325
+
326
+ **Before starting, read these skills:**
327
+ - `.claude/skills/mock-analysis/SKILL.md` - Detailed parsing patterns
328
+ - `.claude/skills/design-system/SKILL.md` - Token mapping methodology
329
+ - `.claude/skills/page-builder-blocks/SKILL.md` - Block structure patterns
330
+ - `.claude/skills/tailwind-theming/SKILL.md` - Theme CSS variables
331
+
332
+ ---
333
+
334
+ ## Examples
335
+
336
+ ### Example 1: BLOCKS Workflow
337
+
338
+ ```
339
+ Input:
340
+ ├── mockPath: "blocks/2026-01-12-hero/mocks/"
341
+ ├── workflow: "BLOCKS"
342
+ ├── mockSource: "stitch"
343
+ ├── blockType: "hero"
344
+ └── blockDecision: "new"
345
+
346
+ Process:
347
+ 1. Detect: code.html, screen.png found
348
+ 2. Parse HTML: 1 section, hero type
349
+ 3. Extract tokens: 5 colors, 2 fonts
350
+ 4. Map to theme: 4 mapped, 1 gap
351
+ 5. Generate plan: new block "hero-terminal"
352
+
353
+ Output:
354
+ ├── analysis.json
355
+ ├── ds-mapping.json
356
+ └── block-plan.json
357
+ ```
358
+
359
+ ### Example 2: TASK Workflow
360
+
361
+ ```
362
+ Input:
363
+ ├── mockPath: "tasks/2026-01-12-products/mocks/"
364
+ ├── workflow: "TASK"
365
+ ├── mockSource: "figma"
366
+ ├── mockFor: "screens"
367
+ └── mockComplexity: "multiple"
368
+
369
+ Process:
370
+ 1. Detect: screen.png found, no HTML
371
+ 2. Skip HTML parsing (not available)
372
+ 3. Limited token extraction
373
+ 4. Map available values
374
+ 5. Skip block plan (not BLOCKS workflow)
375
+
376
+ Output:
377
+ ├── analysis.json (limited)
378
+ └── ds-mapping.json (limited)
379
+ ```
380
+
381
+ ---
382
+
383
+ ## Version History
384
+
385
+ | Version | Changes |
386
+ |---------|---------|
387
+ | v1.0 | Initial version - Multi-mode mock analysis agent |