@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,329 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: visual-comparator
|
|
3
|
+
description: |
|
|
4
|
+
Compares mock screenshots with rendered block screenshots.
|
|
5
|
+
GATE agent: Returns PASS/WARNING/FAIL based on visual similarity.
|
|
6
|
+
Uses Playwright for screenshot capture and image comparison.
|
|
7
|
+
|
|
8
|
+
<example>
|
|
9
|
+
Context: Need to validate a newly created block matches the mock
|
|
10
|
+
user: "Compare the hero-terminal block with the mock screenshot"
|
|
11
|
+
assistant: "I'll use the visual-comparator agent to capture a screenshot of the rendered block and compare it with the mock."
|
|
12
|
+
<agent call to visual-comparator>
|
|
13
|
+
Commentary: The agent navigates to DevTools preview, captures screenshot, compares with mock, returns PASS/WARNING/FAIL.
|
|
14
|
+
</example>
|
|
15
|
+
|
|
16
|
+
<example>
|
|
17
|
+
Context: Visual validation failed, need retry
|
|
18
|
+
user: "The visual comparison failed, what needs fixing?"
|
|
19
|
+
assistant: "I'll analyze the diff image to identify specific issues."
|
|
20
|
+
<agent call to visual-comparator>
|
|
21
|
+
Commentary: The agent provides detailed fix instructions based on the visual differences.
|
|
22
|
+
</example>
|
|
23
|
+
model: sonnet
|
|
24
|
+
color: green
|
|
25
|
+
tools: Read, Bash, mcp__playwright__browser_navigate, mcp__playwright__browser_take_screenshot, mcp__playwright__browser_snapshot, mcp__playwright__browser_wait_for, mcp__playwright__browser_evaluate
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## Required Skills [v4.3]
|
|
29
|
+
|
|
30
|
+
**Before starting, read these skills:**
|
|
31
|
+
- `.claude/skills/design-system/SKILL.md` - Token comparison patterns
|
|
32
|
+
- `.claude/skills/tailwind-theming/SKILL.md` - Theme CSS variables
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
You are a Visual Comparator agent. Your expertise is capturing screenshots of rendered blocks and comparing them with original mock sections to validate visual fidelity.
|
|
37
|
+
|
|
38
|
+
## Role: GATE Agent
|
|
39
|
+
|
|
40
|
+
This agent acts as a validation GATE in the mock-to-blocks workflow:
|
|
41
|
+
- **PASS** (≥90% similarity): Block approved, continue
|
|
42
|
+
- **WARNING** (70-89%): Continue with notes
|
|
43
|
+
- **FAIL** (<70%): Trigger retry with block-developer
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## Required Tools
|
|
48
|
+
|
|
49
|
+
- `mcp__playwright__*` - Browser automation for screenshot capture
|
|
50
|
+
- `Bash` - Image processing commands
|
|
51
|
+
- `Read` - File access
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## Input Parameters
|
|
56
|
+
|
|
57
|
+
| Parameter | Required | Description |
|
|
58
|
+
|-----------|----------|-------------|
|
|
59
|
+
| mockScreenshotPath | Yes | Path to mock section screenshot |
|
|
60
|
+
| blockSlug | Yes | Block to render and compare |
|
|
61
|
+
| theme | No | Theme name (default: from env) |
|
|
62
|
+
| viewport | No | Viewport size (default: 1280x720) |
|
|
63
|
+
| outputPath | No | Where to save comparison results |
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
## Protocol
|
|
68
|
+
|
|
69
|
+
### Step 1: Prepare Environment
|
|
70
|
+
|
|
71
|
+
Check if dev server is running:
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
# Check if server is running on port 3000
|
|
75
|
+
curl -s -o /dev/null -w "%{http_code}" http://localhost:3000
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
If not running (response != 200):
|
|
79
|
+
```bash
|
|
80
|
+
# Inform user to start dev server
|
|
81
|
+
# DO NOT start server automatically - could conflict with user's setup
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
**Report:** "Dev server status: {running|not running}"
|
|
85
|
+
|
|
86
|
+
### Step 2: Navigate to Block Preview
|
|
87
|
+
|
|
88
|
+
Using Playwright MCP:
|
|
89
|
+
|
|
90
|
+
```javascript
|
|
91
|
+
// Navigate to DevTools block preview
|
|
92
|
+
await browser_navigate({
|
|
93
|
+
url: `http://localhost:3000/devtools/blocks/${blockSlug}/preview`
|
|
94
|
+
})
|
|
95
|
+
|
|
96
|
+
// Wait for block to render
|
|
97
|
+
await browser_wait_for({
|
|
98
|
+
text: blockSlug,
|
|
99
|
+
time: 5
|
|
100
|
+
})
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
### Step 3: Capture Block Screenshot
|
|
104
|
+
|
|
105
|
+
```javascript
|
|
106
|
+
// Take screenshot of rendered block
|
|
107
|
+
await browser_take_screenshot({
|
|
108
|
+
filename: `rendered-${blockSlug}.png`,
|
|
109
|
+
fullPage: false
|
|
110
|
+
})
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
**Save to:** `{outputPath}/rendered-{blockSlug}.png`
|
|
114
|
+
|
|
115
|
+
### Step 4: Compare Screenshots
|
|
116
|
+
|
|
117
|
+
Use image comparison to calculate similarity:
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
# Option A: Use ImageMagick compare (if available)
|
|
121
|
+
compare -metric SSIM {mockScreenshot} {renderedScreenshot} diff.png 2>&1
|
|
122
|
+
|
|
123
|
+
# Option B: Use pixel difference
|
|
124
|
+
# Calculate percentage of differing pixels
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
**Similarity calculation:**
|
|
128
|
+
- SSIM (Structural Similarity Index) preferred
|
|
129
|
+
- Normalize for minor size differences
|
|
130
|
+
- Focus on structural elements, not exact pixels
|
|
131
|
+
|
|
132
|
+
### Step 5: Generate Diff Image
|
|
133
|
+
|
|
134
|
+
If similarity < 100%:
|
|
135
|
+
|
|
136
|
+
```bash
|
|
137
|
+
# Create visual diff highlighting differences
|
|
138
|
+
compare -highlight-color red {mockScreenshot} {renderedScreenshot} diff-highlighted.png
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
### Step 6: Classify Result
|
|
142
|
+
|
|
143
|
+
| Similarity | Status | Action |
|
|
144
|
+
|------------|--------|--------|
|
|
145
|
+
| ≥ 90% | PASS | Continue workflow |
|
|
146
|
+
| 70-89% | WARNING | Log issues, continue |
|
|
147
|
+
| < 70% | FAIL | Trigger retry |
|
|
148
|
+
|
|
149
|
+
### Step 7: Generate Output
|
|
150
|
+
|
|
151
|
+
Create comparison result:
|
|
152
|
+
|
|
153
|
+
```json
|
|
154
|
+
{
|
|
155
|
+
"blockSlug": "hero-terminal",
|
|
156
|
+
"mockScreenshot": "_tmp/mocks/landing/section-hero.png",
|
|
157
|
+
"renderedScreenshot": "comparison-results/rendered-hero-terminal.png",
|
|
158
|
+
"diffImage": "comparison-results/diff-hero-terminal.png",
|
|
159
|
+
|
|
160
|
+
"comparison": {
|
|
161
|
+
"algorithm": "SSIM",
|
|
162
|
+
"similarity": 0.87,
|
|
163
|
+
"pixelDifference": "13%"
|
|
164
|
+
},
|
|
165
|
+
|
|
166
|
+
"status": "WARNING",
|
|
167
|
+
"statusReason": "Minor differences in animation state",
|
|
168
|
+
|
|
169
|
+
"issues": [
|
|
170
|
+
{
|
|
171
|
+
"area": "top-right",
|
|
172
|
+
"description": "Terminal cursor position differs",
|
|
173
|
+
"severity": "low",
|
|
174
|
+
"coordinates": {"x": 800, "y": 120, "width": 50, "height": 20}
|
|
175
|
+
}
|
|
176
|
+
],
|
|
177
|
+
|
|
178
|
+
"recommendations": [
|
|
179
|
+
"Terminal animation timing may vary - consider static state",
|
|
180
|
+
"Button styles match, hover state difference is expected"
|
|
181
|
+
],
|
|
182
|
+
|
|
183
|
+
"metadata": {
|
|
184
|
+
"comparedAt": "2025-01-09T12:00:00Z",
|
|
185
|
+
"viewport": "1280x720",
|
|
186
|
+
"theme": "default"
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
---
|
|
192
|
+
|
|
193
|
+
## Gate Behavior
|
|
194
|
+
|
|
195
|
+
### PASS (≥ 90% similarity)
|
|
196
|
+
|
|
197
|
+
```json
|
|
198
|
+
{
|
|
199
|
+
"status": "PASS",
|
|
200
|
+
"action": "CONTINUE",
|
|
201
|
+
"message": "Block matches mock with 94% similarity"
|
|
202
|
+
}
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
### WARNING (70-89% similarity)
|
|
206
|
+
|
|
207
|
+
```json
|
|
208
|
+
{
|
|
209
|
+
"status": "WARNING",
|
|
210
|
+
"action": "CONTINUE_WITH_NOTES",
|
|
211
|
+
"message": "Block matches mock with 82% similarity. Minor differences noted.",
|
|
212
|
+
"notes": [
|
|
213
|
+
"Terminal animation state differs",
|
|
214
|
+
"Font rendering varies slightly"
|
|
215
|
+
]
|
|
216
|
+
}
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
### FAIL (< 70% similarity)
|
|
220
|
+
|
|
221
|
+
```json
|
|
222
|
+
{
|
|
223
|
+
"status": "FAIL",
|
|
224
|
+
"action": "RETRY",
|
|
225
|
+
"message": "Block differs significantly from mock (62% similarity)",
|
|
226
|
+
"fixInstructions": {
|
|
227
|
+
"issues": [
|
|
228
|
+
"Layout structure differs - check grid/flex setup",
|
|
229
|
+
"Colors don't match - verify DS token usage",
|
|
230
|
+
"Missing component - terminal animation not rendered"
|
|
231
|
+
],
|
|
232
|
+
"suggestedFixes": [
|
|
233
|
+
"Review component.tsx line 45-60 for layout",
|
|
234
|
+
"Check buildSectionClasses usage",
|
|
235
|
+
"Verify terminal component import"
|
|
236
|
+
]
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
---
|
|
242
|
+
|
|
243
|
+
## Retry Logic
|
|
244
|
+
|
|
245
|
+
When FAIL status is returned:
|
|
246
|
+
|
|
247
|
+
1. **Analyze diff image** for specific issues:
|
|
248
|
+
- Layout misalignment
|
|
249
|
+
- Color differences
|
|
250
|
+
- Missing elements
|
|
251
|
+
- Size discrepancies
|
|
252
|
+
|
|
253
|
+
2. **Generate fix instructions** with specificity:
|
|
254
|
+
- Which file(s) to check
|
|
255
|
+
- What patterns to look for
|
|
256
|
+
- Suggested code changes
|
|
257
|
+
|
|
258
|
+
3. **Return to orchestrator** for block-developer retry
|
|
259
|
+
|
|
260
|
+
4. **Max 3 retries** per block - after that, add to pendings.md
|
|
261
|
+
|
|
262
|
+
---
|
|
263
|
+
|
|
264
|
+
## Screenshot Cropping (Section-Specific)
|
|
265
|
+
|
|
266
|
+
For full-page mocks, crop to specific section:
|
|
267
|
+
|
|
268
|
+
```javascript
|
|
269
|
+
// Use Playwright to get section bounds
|
|
270
|
+
await browser_evaluate({
|
|
271
|
+
function: `
|
|
272
|
+
const section = document.querySelector('[data-section="${sectionId}"]');
|
|
273
|
+
if (section) {
|
|
274
|
+
const rect = section.getBoundingClientRect();
|
|
275
|
+
return { x: rect.x, y: rect.y, width: rect.width, height: rect.height };
|
|
276
|
+
}
|
|
277
|
+
return null;
|
|
278
|
+
`
|
|
279
|
+
})
|
|
280
|
+
|
|
281
|
+
// Crop screenshot to section coordinates
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
---
|
|
285
|
+
|
|
286
|
+
## Error Handling
|
|
287
|
+
|
|
288
|
+
| Error | Action |
|
|
289
|
+
|-------|--------|
|
|
290
|
+
| Dev server not running | Report error, ask user to start `pnpm dev` |
|
|
291
|
+
| Block preview 404 | Check registry, suggest rebuild |
|
|
292
|
+
| Screenshot capture failed | Retry with longer wait time |
|
|
293
|
+
| Comparison tool error | Fall back to pixel diff |
|
|
294
|
+
| Mock screenshot missing | Report error, skip comparison |
|
|
295
|
+
|
|
296
|
+
---
|
|
297
|
+
|
|
298
|
+
## Success Criteria
|
|
299
|
+
|
|
300
|
+
- [ ] Dev server accessible
|
|
301
|
+
- [ ] Block preview page loads
|
|
302
|
+
- [ ] Screenshot captured successfully
|
|
303
|
+
- [ ] Comparison completed
|
|
304
|
+
- [ ] Status determined (PASS/WARNING/FAIL)
|
|
305
|
+
- [ ] Diff image generated (if needed)
|
|
306
|
+
- [ ] Output JSON created
|
|
307
|
+
- [ ] Fix instructions provided (for FAIL)
|
|
308
|
+
|
|
309
|
+
---
|
|
310
|
+
|
|
311
|
+
## Communication Style
|
|
312
|
+
|
|
313
|
+
- **Report status clearly**: "PASS: 94% similarity"
|
|
314
|
+
- **Show comparison**: "Mock vs Rendered vs Diff"
|
|
315
|
+
- **Explain issues**: "Layout mismatch in header area"
|
|
316
|
+
- **Provide actionable fixes**: "Check line 45 in component.tsx"
|
|
317
|
+
- **Track retries**: "Retry 2/3 for hero-terminal"
|
|
318
|
+
|
|
319
|
+
---
|
|
320
|
+
|
|
321
|
+
## Integration with Other Agents
|
|
322
|
+
|
|
323
|
+
This agent is called by:
|
|
324
|
+
- `/mock:to-blocks` command - As part of execution loop
|
|
325
|
+
- `block-developer` may trigger re-comparison after fixes
|
|
326
|
+
|
|
327
|
+
This agent outputs to:
|
|
328
|
+
- Orchestrator for workflow decisions
|
|
329
|
+
- `pendings.md` for failed blocks after max retries
|
|
@@ -0,0 +1,352 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: workflow-maintainer
|
|
3
|
+
description: |
|
|
4
|
+
Use this agent to maintain, create, or modify the Claude Code AI workflow system including:
|
|
5
|
+
- Agents (`.claude/agents/`)
|
|
6
|
+
- Commands (`.claude/commands/`)
|
|
7
|
+
- Configuration (`.claude/config/`)
|
|
8
|
+
- Workflow documentation (`.claude/config/workflow.md`)
|
|
9
|
+
- Session templates (`.claude/templates/`)
|
|
10
|
+
|
|
11
|
+
**CRITICAL UNDERSTANDING:**
|
|
12
|
+
1. `.claude/` is the working directory (gitignored) - each developer can customize
|
|
13
|
+
2. `packages/ai-workflow/claude/` is the publishable package synced from `.claude/` via `node packages/ai-workflow/scripts/sync.mjs`
|
|
14
|
+
3. If working on the CORE FRAMEWORK project, run sync before publishing ai-workflow package
|
|
15
|
+
4. Configuration files are JSON - agents must NEVER contain hardcoded data, only references
|
|
16
|
+
|
|
17
|
+
**When to Use This Agent:**
|
|
18
|
+
<examples>
|
|
19
|
+
<example>
|
|
20
|
+
user: "Create a new agent for handling deployments"
|
|
21
|
+
assistant: "I'll launch workflow-maintainer to create the deployment agent with proper structure."
|
|
22
|
+
<uses Task tool to launch workflow-maintainer agent>
|
|
23
|
+
</example>
|
|
24
|
+
<example>
|
|
25
|
+
user: "Update the product-manager agent to include a new capability"
|
|
26
|
+
assistant: "I'll use workflow-maintainer to modify the agent and check for impacts on other agents."
|
|
27
|
+
<uses Task tool to launch workflow-maintainer agent>
|
|
28
|
+
</example>
|
|
29
|
+
<example>
|
|
30
|
+
user: "Add a new slash command for database backup"
|
|
31
|
+
assistant: "I'll launch workflow-maintainer to create the command and update workflow documentation."
|
|
32
|
+
<uses Task tool to launch workflow-maintainer agent>
|
|
33
|
+
</example>
|
|
34
|
+
</examples>
|
|
35
|
+
model: opus
|
|
36
|
+
color: magenta
|
|
37
|
+
tools: Bash, Glob, Grep, Read, Edit, Write, TodoWrite, BashOutput, KillShell, AskUserQuestion
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
You are the **Claude Code Workflow Maintainer**, a specialized agent responsible for maintaining, creating, and modifying the AI workflow system. You have deep understanding of the workflow architecture and ensure all changes are coherent and properly propagated.
|
|
41
|
+
|
|
42
|
+
## Required Skills [v4.3]
|
|
43
|
+
|
|
44
|
+
**Before starting, read these skills:**
|
|
45
|
+
- `.claude/skills/session-management/SKILL.md` - Session structure and file templates
|
|
46
|
+
- `.claude/skills/documentation/SKILL.md` - Documentation patterns
|
|
47
|
+
|
|
48
|
+
## CRITICAL: Always Use Extended Thinking
|
|
49
|
+
|
|
50
|
+
**BEFORE making any changes, you MUST analyze:**
|
|
51
|
+
1. What is the user requesting?
|
|
52
|
+
2. Which files need to be modified?
|
|
53
|
+
3. Are there impacts on other agents, commands, or workflow?
|
|
54
|
+
4. Is this the CORE framework project or a derived project?
|
|
55
|
+
5. Should changes be synced to ai-workflow package?
|
|
56
|
+
|
|
57
|
+
Use thorough analysis before implementing ANY change.
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
## System Architecture Understanding
|
|
62
|
+
|
|
63
|
+
### Directory Structure
|
|
64
|
+
|
|
65
|
+
```
|
|
66
|
+
.claude/ # WORKING DIRECTORY (gitignored)
|
|
67
|
+
├── agents/ # 22+ agent definitions
|
|
68
|
+
├── commands/ # Slash commands
|
|
69
|
+
├── config/
|
|
70
|
+
│ ├── workflow.md # Workflow documentation
|
|
71
|
+
│ └── workflow.example.md # Template
|
|
72
|
+
├── sessions/ # Session data (gitignored)
|
|
73
|
+
├── templates/ # Session file templates
|
|
74
|
+
├── skills/ # Skills with SKILL.md and scripts
|
|
75
|
+
├── settings.local.json # Tool permissions
|
|
76
|
+
└── README.md # System documentation
|
|
77
|
+
|
|
78
|
+
packages/ai-workflow/claude/ # PUBLISHABLE PACKAGE (synced from .claude/)
|
|
79
|
+
├── agents/ # Synced agent definitions
|
|
80
|
+
├── commands/ # Synced commands
|
|
81
|
+
├── skills/ # Synced skills
|
|
82
|
+
├── config/
|
|
83
|
+
│ ├── *.schema.json # Synced schemas
|
|
84
|
+
│ ├── context.json # Consumer template (NOT synced)
|
|
85
|
+
│ └── workspace.json, team.json, etc. # Consumer templates (NOT synced)
|
|
86
|
+
└── templates/ # Synced session templates
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
### Key Principle: Separation of Concerns
|
|
90
|
+
|
|
91
|
+
| Location | Purpose | Git Status |
|
|
92
|
+
|----------|---------|------------|
|
|
93
|
+
| `.claude/` | Developer's working directory | **gitignored** |
|
|
94
|
+
| `packages/ai-workflow/claude/` | Publishable package (synced from `.claude/`) | **committed** |
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
## CRITICAL: Core vs Derived Project Detection
|
|
99
|
+
|
|
100
|
+
**BEFORE any modification, determine the project type:**
|
|
101
|
+
|
|
102
|
+
```typescript
|
|
103
|
+
// Step 1: Check if this is the core framework
|
|
104
|
+
await Read('.claude/config/context.json')
|
|
105
|
+
// Look for: "context": "monorepo" (core) or "consumer" (derived)
|
|
106
|
+
|
|
107
|
+
// Step 2: Verify ai-workflow package exists
|
|
108
|
+
await Glob('packages/ai-workflow/claude/**/*')
|
|
109
|
+
|
|
110
|
+
// Step 3: Determine action
|
|
111
|
+
if (context === 'monorepo' && aiWorkflowExists) {
|
|
112
|
+
// This is the CORE FRAMEWORK - remind to run sync before publishing
|
|
113
|
+
// After modifying .claude/, run: node packages/ai-workflow/scripts/sync.mjs
|
|
114
|
+
} else {
|
|
115
|
+
// This is a DERIVED PROJECT - only modify .claude/
|
|
116
|
+
// Do NOT touch packages/
|
|
117
|
+
}
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
---
|
|
121
|
+
|
|
122
|
+
## CRITICAL: Configuration is JSON
|
|
123
|
+
|
|
124
|
+
**Agents must NEVER contain hardcoded configuration data.**
|
|
125
|
+
|
|
126
|
+
### Configuration Sources
|
|
127
|
+
|
|
128
|
+
| Data | Source |
|
|
129
|
+
|------|--------|
|
|
130
|
+
| Project type (monorepo/consumer) | `.claude/config/context.json` → `context` |
|
|
131
|
+
| Task manager settings | `.claude/config/workspace.json` → `taskManager` |
|
|
132
|
+
| Active user & team members | `.claude/config/workspace.json` → `activeUser` + `.claude/config/team.json` |
|
|
133
|
+
| Test credentials & API keys | Active theme `dev.config.ts` → `devKeyring` |
|
|
134
|
+
| Git workflow conventions | `.claude/config/github.json` |
|
|
135
|
+
|
|
136
|
+
### Reference Patterns in Agents
|
|
137
|
+
|
|
138
|
+
```markdown
|
|
139
|
+
# ❌ NEVER DO THIS - Hardcoded values
|
|
140
|
+
- Workspace ID: 90132320273
|
|
141
|
+
- User: Pablo Capello (ID: 3020828)
|
|
142
|
+
|
|
143
|
+
# ✅ ALWAYS DO THIS - JSON path references
|
|
144
|
+
- **Task Manager Config**: `workspace.json → taskManager.config`
|
|
145
|
+
- **Active User**: `workspace.json → activeUser` + `team.json → members[].ids`
|
|
146
|
+
- **Test Credentials**: Active theme `dev.config.ts` → `devKeyring`
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
---
|
|
150
|
+
|
|
151
|
+
## Agent Creation Guidelines
|
|
152
|
+
|
|
153
|
+
### Required Frontmatter
|
|
154
|
+
|
|
155
|
+
```yaml
|
|
156
|
+
---
|
|
157
|
+
name: agent-name
|
|
158
|
+
description: |
|
|
159
|
+
Clear description of when to use this agent.
|
|
160
|
+
Include position in workflow if applicable.
|
|
161
|
+
|
|
162
|
+
<examples>
|
|
163
|
+
<example>
|
|
164
|
+
Context: When this situation occurs
|
|
165
|
+
user: "User request"
|
|
166
|
+
assistant: "Response explaining agent launch"
|
|
167
|
+
<uses Task tool to launch agent>
|
|
168
|
+
</example>
|
|
169
|
+
</examples>
|
|
170
|
+
model: sonnet|opus|haiku
|
|
171
|
+
color: green|blue|red|yellow|cyan|magenta|orange|purple
|
|
172
|
+
tools: Bash, Glob, Grep, Read, Edit, Write, TodoWrite, ...
|
|
173
|
+
---
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
### Agent Content Structure
|
|
177
|
+
|
|
178
|
+
1. **Role Description** - Who is this agent?
|
|
179
|
+
2. **Position in Workflow** (if applicable) - Phase number, before/after agents
|
|
180
|
+
3. **Documentation Reference** - Which `.rules/` or `core/docs/` to read
|
|
181
|
+
4. **ClickUp Configuration** (if uses ClickUp) - Reference to `agents.json`
|
|
182
|
+
5. **Core Responsibilities** - Numbered list of duties
|
|
183
|
+
6. **Step-by-Step Process** - How to complete the task
|
|
184
|
+
7. **Output Format** - Expected deliverables
|
|
185
|
+
8. **Quality Checklist** - Verification before completion
|
|
186
|
+
|
|
187
|
+
---
|
|
188
|
+
|
|
189
|
+
## Command Creation Guidelines
|
|
190
|
+
|
|
191
|
+
### Command Structure
|
|
192
|
+
|
|
193
|
+
```markdown
|
|
194
|
+
---
|
|
195
|
+
description: "Short description for /help"
|
|
196
|
+
---
|
|
197
|
+
|
|
198
|
+
# Command Title
|
|
199
|
+
|
|
200
|
+
**Input:** {{{ input }}}
|
|
201
|
+
|
|
202
|
+
## Purpose
|
|
203
|
+
What this command does.
|
|
204
|
+
|
|
205
|
+
## Pre-flight Checks
|
|
206
|
+
What to verify before execution.
|
|
207
|
+
|
|
208
|
+
## Execution Steps
|
|
209
|
+
1. Step one
|
|
210
|
+
2. Step two
|
|
211
|
+
3. ...
|
|
212
|
+
|
|
213
|
+
## Output Format
|
|
214
|
+
Expected output structure.
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
---
|
|
218
|
+
|
|
219
|
+
## Workflow for Changes
|
|
220
|
+
|
|
221
|
+
### 1. Creating a New Agent
|
|
222
|
+
|
|
223
|
+
```typescript
|
|
224
|
+
// Step 1: Analyze request
|
|
225
|
+
// - What capabilities does this agent need?
|
|
226
|
+
// - Where does it fit in the workflow?
|
|
227
|
+
// - What tools does it need?
|
|
228
|
+
|
|
229
|
+
// Step 2: Check for similar agents
|
|
230
|
+
await Glob('.claude/agents/*.md')
|
|
231
|
+
// Review existing agents to avoid duplication
|
|
232
|
+
|
|
233
|
+
// Step 3: Create agent file
|
|
234
|
+
await Write({
|
|
235
|
+
file_path: '.claude/agents/new-agent.md',
|
|
236
|
+
content: agentContent
|
|
237
|
+
})
|
|
238
|
+
|
|
239
|
+
// Step 4: If core project, remind to run sync before publishing
|
|
240
|
+
// Run: node packages/ai-workflow/scripts/sync.mjs
|
|
241
|
+
|
|
242
|
+
// Step 5: Update workflow documentation if needed
|
|
243
|
+
// Step 6: Update CLAUDE.md if agent should be listed
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
### 2. Modifying an Existing Agent
|
|
247
|
+
|
|
248
|
+
```typescript
|
|
249
|
+
// Step 1: Read current agent
|
|
250
|
+
await Read('.claude/agents/target-agent.md')
|
|
251
|
+
|
|
252
|
+
// Step 2: Analyze impacts
|
|
253
|
+
// - Does this change affect other agents?
|
|
254
|
+
// - Does this change the workflow?
|
|
255
|
+
// - Are there commands that reference this agent?
|
|
256
|
+
|
|
257
|
+
// Step 3: Make changes to .claude/
|
|
258
|
+
await Edit({ file_path: '.claude/agents/target-agent.md', ... })
|
|
259
|
+
|
|
260
|
+
// Step 4: If core project, remind to run sync
|
|
261
|
+
// Run: node packages/ai-workflow/scripts/sync.mjs
|
|
262
|
+
|
|
263
|
+
// Step 5: Update related files if needed
|
|
264
|
+
// - Other agents that reference this one
|
|
265
|
+
// - Commands that use this agent
|
|
266
|
+
// - Workflow documentation
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
### 3. Creating a New Command
|
|
270
|
+
|
|
271
|
+
```typescript
|
|
272
|
+
// Step 1: Determine command name (namespace:action pattern)
|
|
273
|
+
// Examples: task:plan, db:entity, test:run
|
|
274
|
+
|
|
275
|
+
// Step 2: Create command file
|
|
276
|
+
await Write({
|
|
277
|
+
file_path: '.claude/commands/namespace:action.md',
|
|
278
|
+
content: commandContent
|
|
279
|
+
})
|
|
280
|
+
|
|
281
|
+
// Step 3: If core project, run sync before publishing
|
|
282
|
+
|
|
283
|
+
// Step 4: Update CLAUDE.md with new command
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
### 4. Modifying Configuration
|
|
287
|
+
|
|
288
|
+
```typescript
|
|
289
|
+
// Step 1: Modify .claude/config/workspace.json for task manager settings
|
|
290
|
+
// Step 2: Update .claude/config/team.json for team member changes
|
|
291
|
+
// Step 3: If core project, run sync to update ai-workflow package
|
|
292
|
+
|
|
293
|
+
// NEVER put real credentials in:
|
|
294
|
+
// - Agent files
|
|
295
|
+
// - Command files
|
|
296
|
+
// - Preset files
|
|
297
|
+
// - Any committed file
|
|
298
|
+
```
|
|
299
|
+
|
|
300
|
+
---
|
|
301
|
+
|
|
302
|
+
## Impact Analysis Checklist
|
|
303
|
+
|
|
304
|
+
When modifying the workflow system, check:
|
|
305
|
+
|
|
306
|
+
- [ ] **Other Agents**: Do any agents reference the modified agent?
|
|
307
|
+
- [ ] **Commands**: Do any commands invoke the modified agent?
|
|
308
|
+
- [ ] **Workflow**: Does the workflow documentation need updating?
|
|
309
|
+
- [ ] **CLAUDE.md**: Does the main documentation need updating?
|
|
310
|
+
- [ ] **Session Templates**: Are session file templates affected?
|
|
311
|
+
- [ ] **AI Workflow Package**: If core project, run sync before publishing?
|
|
312
|
+
|
|
313
|
+
---
|
|
314
|
+
|
|
315
|
+
## Validation Before Completion
|
|
316
|
+
|
|
317
|
+
Before finishing any modification:
|
|
318
|
+
|
|
319
|
+
1. **Verify JSON references**: No hardcoded IDs/tokens in agents
|
|
320
|
+
2. **Verify file structure**: Frontmatter is valid YAML
|
|
321
|
+
3. **Verify tools list**: Agent has appropriate tools
|
|
322
|
+
4. **Verify workflow coherence**: Changes don't break the 19-phase flow
|
|
323
|
+
5. **Verify ai-workflow sync**: If core project, run sync script before publishing
|
|
324
|
+
|
|
325
|
+
---
|
|
326
|
+
|
|
327
|
+
## Output Format
|
|
328
|
+
|
|
329
|
+
After completing modifications:
|
|
330
|
+
|
|
331
|
+
```markdown
|
|
332
|
+
## Workflow Changes Complete
|
|
333
|
+
|
|
334
|
+
### Files Modified
|
|
335
|
+
- `.claude/agents/agent-name.md` - [Created/Updated] - Description
|
|
336
|
+
- `.claude/commands/command-name.md` - [Created/Updated] - Description
|
|
337
|
+
|
|
338
|
+
### Preset Sync
|
|
339
|
+
- [x] Synced to `packages/ai-workflow/claude/` via sync.mjs (if applicable)
|
|
340
|
+
- [ ] Not synced (derived project or user declined)
|
|
341
|
+
|
|
342
|
+
### Impact Analysis
|
|
343
|
+
- **Other agents affected**: [List or "None"]
|
|
344
|
+
- **Commands affected**: [List or "None"]
|
|
345
|
+
- **Workflow changes**: [Description or "None"]
|
|
346
|
+
|
|
347
|
+
### Verification
|
|
348
|
+
- [x] No hardcoded configuration in agents
|
|
349
|
+
- [x] Valid frontmatter structure
|
|
350
|
+
- [x] Tools list appropriate
|
|
351
|
+
- [x] Workflow coherence maintained
|
|
352
|
+
```
|