@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.
- package/LICENSE +21 -0
- package/README.md +115 -0
- package/claude/_docs/workflows-optimizations.md +359 -0
- package/claude/agents/api-tester.md +634 -0
- package/claude/agents/architecture-supervisor.md +1351 -0
- package/claude/agents/backend-developer.md +997 -0
- package/claude/agents/backend-validator.md +417 -0
- package/claude/agents/bdd-docs-writer.md +737 -0
- package/claude/agents/block-developer.md +677 -0
- package/claude/agents/code-reviewer.md +1432 -0
- package/claude/agents/db-developer.md +721 -0
- package/claude/agents/db-validator.md +407 -0
- package/claude/agents/demo-video-generator.md +493 -0
- package/claude/agents/documentation-writer.md +1268 -0
- package/claude/agents/frontend-developer.md +1234 -0
- package/claude/agents/frontend-validator.md +777 -0
- package/claude/agents/functional-validator.md +630 -0
- package/claude/agents/mock-analyst.md +387 -0
- package/claude/agents/product-manager.md +963 -0
- package/claude/agents/qa-automation.md +1762 -0
- package/claude/agents/release-manager.md +634 -0
- package/claude/agents/selectors-translator.md +262 -0
- package/claude/agents/unit-test-writer.md +785 -0
- package/claude/agents/visual-comparator.md +329 -0
- package/claude/agents/workflow-maintainer.md +352 -0
- package/claude/commands/do/README.md +88 -0
- package/claude/commands/do/create-api.md +64 -0
- package/claude/commands/do/create-entity.md +66 -0
- package/claude/commands/do/create-migration.md +64 -0
- package/claude/commands/do/create-plugin.md +56 -0
- package/claude/commands/do/create-theme.md +70 -0
- package/claude/commands/do/mock-data.md +67 -0
- package/claude/commands/do/reset-db.md +71 -0
- package/claude/commands/do/setup-scheduled-action.md +75 -0
- package/claude/commands/do/sync-code-review.md +117 -0
- package/claude/commands/do/update-selectors.md +112 -0
- package/claude/commands/do/use-skills.md +90 -0
- package/claude/commands/do/validate-blocks.md +69 -0
- package/claude/commands/how-to/README.md +261 -0
- package/claude/commands/how-to/add-metadata.md +692 -0
- package/claude/commands/how-to/add-taxonomies.md +806 -0
- package/claude/commands/how-to/add-translations.md +571 -0
- package/claude/commands/how-to/create-api.md +577 -0
- package/claude/commands/how-to/create-block.md +575 -0
- package/claude/commands/how-to/create-child-entities.md +771 -0
- package/claude/commands/how-to/create-entity.md +597 -0
- package/claude/commands/how-to/create-migrations.md +605 -0
- package/claude/commands/how-to/create-plugin.md +654 -0
- package/claude/commands/how-to/customize-app.md +481 -0
- package/claude/commands/how-to/customize-dashboard.md +553 -0
- package/claude/commands/how-to/customize-theme.md +438 -0
- package/claude/commands/how-to/define-features-flows.md +632 -0
- package/claude/commands/how-to/deploy.md +507 -0
- package/claude/commands/how-to/handle-file-uploads.md +746 -0
- package/claude/commands/how-to/implement-search.md +1001 -0
- package/claude/commands/how-to/install-plugins.md +352 -0
- package/claude/commands/how-to/manage-test-coverage.md +984 -0
- package/claude/commands/how-to/run-tests.md +400 -0
- package/claude/commands/how-to/set-app-languages.md +601 -0
- package/claude/commands/how-to/set-plans-and-permissions.md +575 -0
- package/claude/commands/how-to/set-scheduled-actions.md +527 -0
- package/claude/commands/how-to/set-user-roles-and-permissions.md +550 -0
- package/claude/commands/how-to/setup-authentication.md +388 -0
- package/claude/commands/how-to/setup-claude-code.md +440 -0
- package/claude/commands/how-to/setup-database.md +274 -0
- package/claude/commands/how-to/setup-email-providers.md +598 -0
- package/claude/commands/how-to/setup-mobile-dev.md +627 -0
- package/claude/commands/how-to/start.md +500 -0
- package/claude/commands/how-to/use-devtools.md +639 -0
- package/claude/commands/how-to/use-superadmin.md +622 -0
- package/claude/commands/session/README.md +193 -0
- package/claude/commands/session/block-create.md +190 -0
- package/claude/commands/session/block-list.md +203 -0
- package/claude/commands/session/block-update.md +192 -0
- package/claude/commands/session/block-validate.md +218 -0
- package/claude/commands/session/changelog.md +115 -0
- package/claude/commands/session/close.md +225 -0
- package/claude/commands/session/commit.md +174 -0
- package/claude/commands/session/db-entity.md +206 -0
- package/claude/commands/session/db-fix.md +212 -0
- package/claude/commands/session/db-sample.md +206 -0
- package/claude/commands/session/demo.md +178 -0
- package/claude/commands/session/doc-bdd.md +207 -0
- package/claude/commands/session/doc-feature.md +218 -0
- package/claude/commands/session/doc-read.md +225 -0
- package/claude/commands/session/execute.md +204 -0
- package/claude/commands/session/explain.md +202 -0
- package/claude/commands/session/fix-bug.md +210 -0
- package/claude/commands/session/fix-build.md +182 -0
- package/claude/commands/session/fix-test.md +189 -0
- package/claude/commands/session/pending.md +232 -0
- package/claude/commands/session/refine.md +188 -0
- package/claude/commands/session/resume.md +192 -0
- package/claude/commands/session/review.md +192 -0
- package/claude/commands/session/scope-change.md +181 -0
- package/claude/commands/session/start-blocks.md +347 -0
- package/claude/commands/session/start.md +604 -0
- package/claude/commands/session/status.md +169 -0
- package/claude/commands/session/test-fix.md +221 -0
- package/claude/commands/session/test-run.md +203 -0
- package/claude/commands/session/test-write.md +242 -0
- package/claude/commands/session/validate.md +162 -0
- package/claude/config/context.json +40 -0
- package/claude/config/github.json +69 -0
- package/claude/config/github.schema.json +106 -0
- package/claude/config/team.json +46 -0
- package/claude/config/team.schema.json +106 -0
- package/claude/config/workspace.json +43 -0
- package/claude/config/workspace.schema.json +75 -0
- package/claude/skills/README.md +228 -0
- package/claude/skills/accessibility/SKILL.md +573 -0
- package/claude/skills/api-bypass-layers/SKILL.md +550 -0
- package/claude/skills/asana-integration/SKILL.md +499 -0
- package/claude/skills/better-auth/SKILL.md +666 -0
- package/claude/skills/billing-subscriptions/SKILL.md +660 -0
- package/claude/skills/block-decision-matrix/SKILL.md +359 -0
- package/claude/skills/clickup-integration/SKILL.md +434 -0
- package/claude/skills/core-theme-responsibilities/SKILL.md +485 -0
- package/claude/skills/create-plugin/SKILL.md +425 -0
- package/claude/skills/create-theme/SKILL.md +331 -0
- package/claude/skills/cypress-api/SKILL.md +511 -0
- package/claude/skills/cypress-api/scripts/generate-api-controller.py +329 -0
- package/claude/skills/cypress-api/scripts/generate-api-test.py +930 -0
- package/claude/skills/cypress-e2e/SKILL.md +526 -0
- package/claude/skills/cypress-e2e/scripts/extract-selectors.py +383 -0
- package/claude/skills/cypress-e2e/scripts/generate-uat-test.py +788 -0
- package/claude/skills/cypress-selectors/SKILL.md +309 -0
- package/claude/skills/cypress-selectors/scripts/extract-missing.py +243 -0
- package/claude/skills/cypress-selectors/scripts/generate-block-selectors.py +283 -0
- package/claude/skills/cypress-selectors/scripts/validate-selectors.py +145 -0
- package/claude/skills/database-migrations/SKILL.md +335 -0
- package/claude/skills/database-migrations/scripts/generate-sample-data.py +284 -0
- package/claude/skills/database-migrations/scripts/validate-migration.py +323 -0
- package/claude/skills/design-system/SKILL.md +682 -0
- package/claude/skills/documentation/SKILL.md +540 -0
- package/claude/skills/entity-api/SKILL.md +482 -0
- package/claude/skills/entity-system/SKILL.md +635 -0
- package/claude/skills/entity-system/scripts/generate-child-migration.py +298 -0
- package/claude/skills/entity-system/scripts/generate-metas-migration.py +233 -0
- package/claude/skills/entity-system/scripts/generate-migration.py +382 -0
- package/claude/skills/entity-system/scripts/generate-sample-data.py +418 -0
- package/claude/skills/entity-system/scripts/scaffold-entity.py +661 -0
- package/claude/skills/github/SKILL.md +467 -0
- package/claude/skills/i18n-nextintl/SKILL.md +302 -0
- package/claude/skills/i18n-nextintl/scripts/add-translation.py +243 -0
- package/claude/skills/i18n-nextintl/scripts/extract-hardcoded.py +246 -0
- package/claude/skills/i18n-nextintl/scripts/validate-translations.py +260 -0
- package/claude/skills/impact-analysis/SKILL.md +203 -0
- package/claude/skills/jest-unit/SKILL.md +306 -0
- package/claude/skills/jest-unit/references/component-testing.md +371 -0
- package/claude/skills/jest-unit/references/mocking-patterns.md +380 -0
- package/claude/skills/jest-unit/references/service-hook-testing.md +454 -0
- package/claude/skills/jira-integration/SKILL.md +539 -0
- package/claude/skills/media-library/SKILL.md +743 -0
- package/claude/skills/mock-analysis/SKILL.md +276 -0
- package/claude/skills/monorepo-architecture/SKILL.md +162 -0
- package/claude/skills/nextjs-api-development/SKILL.md +364 -0
- package/claude/skills/nextjs-api-development/scripts/generate-crud-tests.py +456 -0
- package/claude/skills/nextjs-api-development/scripts/scaffold-endpoint.py +481 -0
- package/claude/skills/nextjs-api-development/scripts/validate-api.py +283 -0
- package/claude/skills/notion-integration/SKILL.md +641 -0
- package/claude/skills/npm-development-workflow/SKILL.md +480 -0
- package/claude/skills/page-builder-blocks/SKILL.md +530 -0
- package/claude/skills/page-builder-blocks/scripts/scaffold-block.py +444 -0
- package/claude/skills/permissions-system/SKILL.md +619 -0
- package/claude/skills/plugins/SKILL.md +340 -0
- package/claude/skills/plugins/references/plugin-templates.md +414 -0
- package/claude/skills/plugins/references/plugin-testing.md +353 -0
- package/claude/skills/plugins/references/plugin-types.md +198 -0
- package/claude/skills/plugins/scripts/scaffold-plugin.py +443 -0
- package/claude/skills/pom-patterns/SKILL.md +452 -0
- package/claude/skills/pom-patterns/scripts/generate-pom.py +392 -0
- package/claude/skills/rate-limiting/SKILL.md +342 -0
- package/claude/skills/react-best-practices/AGENTS.md +2410 -0
- package/claude/skills/react-best-practices/README.md +123 -0
- package/claude/skills/react-best-practices/SKILL.md +125 -0
- package/claude/skills/react-best-practices/metadata.json +15 -0
- package/claude/skills/react-best-practices/rules/_sections.md +46 -0
- package/claude/skills/react-best-practices/rules/_template.md +28 -0
- package/claude/skills/react-best-practices/rules/advanced-event-handler-refs.md +55 -0
- package/claude/skills/react-best-practices/rules/advanced-use-latest.md +49 -0
- package/claude/skills/react-best-practices/rules/async-api-routes.md +38 -0
- package/claude/skills/react-best-practices/rules/async-defer-await.md +80 -0
- package/claude/skills/react-best-practices/rules/async-dependencies.md +36 -0
- package/claude/skills/react-best-practices/rules/async-parallel.md +28 -0
- package/claude/skills/react-best-practices/rules/async-suspense-boundaries.md +99 -0
- package/claude/skills/react-best-practices/rules/bundle-barrel-imports.md +59 -0
- package/claude/skills/react-best-practices/rules/bundle-conditional.md +31 -0
- package/claude/skills/react-best-practices/rules/bundle-defer-third-party.md +49 -0
- package/claude/skills/react-best-practices/rules/bundle-dynamic-imports.md +35 -0
- package/claude/skills/react-best-practices/rules/bundle-preload.md +50 -0
- package/claude/skills/react-best-practices/rules/client-event-listeners.md +74 -0
- package/claude/skills/react-best-practices/rules/client-localstorage-schema.md +71 -0
- package/claude/skills/react-best-practices/rules/client-passive-event-listeners.md +48 -0
- package/claude/skills/react-best-practices/rules/client-swr-dedup.md +56 -0
- package/claude/skills/react-best-practices/rules/js-batch-dom-css.md +82 -0
- package/claude/skills/react-best-practices/rules/js-cache-function-results.md +80 -0
- package/claude/skills/react-best-practices/rules/js-cache-property-access.md +28 -0
- package/claude/skills/react-best-practices/rules/js-cache-storage.md +70 -0
- package/claude/skills/react-best-practices/rules/js-combine-iterations.md +32 -0
- package/claude/skills/react-best-practices/rules/js-early-exit.md +50 -0
- package/claude/skills/react-best-practices/rules/js-hoist-regexp.md +45 -0
- package/claude/skills/react-best-practices/rules/js-index-maps.md +37 -0
- package/claude/skills/react-best-practices/rules/js-length-check-first.md +49 -0
- package/claude/skills/react-best-practices/rules/js-min-max-loop.md +82 -0
- package/claude/skills/react-best-practices/rules/js-set-map-lookups.md +24 -0
- package/claude/skills/react-best-practices/rules/js-tosorted-immutable.md +57 -0
- package/claude/skills/react-best-practices/rules/rendering-activity.md +26 -0
- package/claude/skills/react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
- package/claude/skills/react-best-practices/rules/rendering-conditional-render.md +40 -0
- package/claude/skills/react-best-practices/rules/rendering-content-visibility.md +38 -0
- package/claude/skills/react-best-practices/rules/rendering-hoist-jsx.md +46 -0
- package/claude/skills/react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
- package/claude/skills/react-best-practices/rules/rendering-svg-precision.md +28 -0
- package/claude/skills/react-best-practices/rules/rerender-defer-reads.md +39 -0
- package/claude/skills/react-best-practices/rules/rerender-dependencies.md +45 -0
- package/claude/skills/react-best-practices/rules/rerender-derived-state.md +29 -0
- package/claude/skills/react-best-practices/rules/rerender-functional-setstate.md +74 -0
- package/claude/skills/react-best-practices/rules/rerender-lazy-state-init.md +58 -0
- package/claude/skills/react-best-practices/rules/rerender-memo.md +44 -0
- package/claude/skills/react-best-practices/rules/rerender-transitions.md +40 -0
- package/claude/skills/react-best-practices/rules/server-after-nonblocking.md +73 -0
- package/claude/skills/react-best-practices/rules/server-cache-lru.md +41 -0
- package/claude/skills/react-best-practices/rules/server-cache-react.md +76 -0
- package/claude/skills/react-best-practices/rules/server-parallel-fetching.md +83 -0
- package/claude/skills/react-best-practices/rules/server-serialization.md +38 -0
- package/claude/skills/react-patterns/SKILL.md +688 -0
- package/claude/skills/registry-system/SKILL.md +331 -0
- package/claude/skills/scheduled-actions/SKILL.md +671 -0
- package/claude/skills/scope-enforcement/SKILL.md +542 -0
- package/claude/skills/scope-enforcement/scripts/validate-scope.py +357 -0
- package/claude/skills/server-actions/SKILL.md +493 -0
- package/claude/skills/service-layer/SKILL.md +587 -0
- package/claude/skills/session-management/SKILL.md +266 -0
- package/claude/skills/session-management/scripts/create-session.py +166 -0
- package/claude/skills/session-management/scripts/iteration-close.sh +105 -0
- package/claude/skills/session-management/scripts/iteration-init.sh +180 -0
- package/claude/skills/session-management/scripts/session-archive.sh +87 -0
- package/claude/skills/session-management/scripts/session-close.sh +133 -0
- package/claude/skills/session-management/scripts/session-init.sh +225 -0
- package/claude/skills/session-management/scripts/session-list.sh +163 -0
- package/claude/skills/session-management/scripts/split-plan.sh +116 -0
- package/claude/skills/shadcn-components/SKILL.md +586 -0
- package/claude/skills/shadcn-theming/SKILL.md +446 -0
- package/claude/skills/suspense-loading/SKILL.md +280 -0
- package/claude/skills/tailwind-theming/SKILL.md +507 -0
- package/claude/skills/tanstack-query/SKILL.md +608 -0
- package/claude/skills/test-coverage/SKILL.md +239 -0
- package/claude/skills/web-design-guidelines/SKILL.md +39 -0
- package/claude/skills/zod-validation/SKILL.md +537 -0
- package/claude/templates/blocks/progress.md +86 -0
- package/claude/templates/iteration/changes.md +61 -0
- package/claude/templates/iteration/progress.md +55 -0
- package/claude/templates/log.md +31 -0
- package/claude/templates/story/context.md +77 -0
- package/claude/templates/story/pendings.md +37 -0
- package/claude/templates/story/plan.md +299 -0
- package/claude/templates/story/requirements.md +109 -0
- package/claude/templates/story/scope.json +10 -0
- package/claude/templates/story/tests.md +91 -0
- package/claude/templates/task/progress.md +58 -0
- package/claude/templates/task/requirements.md +54 -0
- package/claude/workflows/README.md +154 -0
- package/claude/workflows/blocks.md +614 -0
- package/claude/workflows/story.md +1207 -0
- package/claude/workflows/task.md +927 -0
- package/claude/workflows/tweak.md +527 -0
- package/cursor/.gitkeep +0 -0
- package/package.json +35 -0
- package/scripts/postinstall.mjs +198 -0
- package/scripts/setup.mjs +282 -0
- 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 |
|