@mikulgohil/ai-kit 1.1.0 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/README.md +85 -12
  2. package/agents/architect.md +79 -0
  3. package/agents/build-resolver.md +54 -0
  4. package/agents/code-reviewer.md +60 -0
  5. package/agents/doc-updater.md +46 -0
  6. package/agents/e2e-runner.md +64 -0
  7. package/agents/planner.md +56 -0
  8. package/agents/refactor-cleaner.md +58 -0
  9. package/agents/security-reviewer.md +67 -0
  10. package/agents/sitecore-specialist.md +96 -0
  11. package/agents/tdd-guide.md +115 -0
  12. package/commands/checkpoint.md +78 -0
  13. package/commands/harness-audit.md +73 -0
  14. package/commands/middleware.md +80 -0
  15. package/commands/orchestrate.md +67 -0
  16. package/commands/quality-gate-check.md +109 -0
  17. package/commands/quality-gate.md +82 -0
  18. package/commands/resume-session.md +40 -0
  19. package/commands/save-session.md +65 -0
  20. package/commands/search-first.md +60 -0
  21. package/commands/server-action.md +93 -0
  22. package/commands/sitecore-debug.md +58 -0
  23. package/contexts/dev.md +35 -0
  24. package/contexts/research.md +56 -0
  25. package/contexts/review.md +49 -0
  26. package/dist/index.js +891 -119
  27. package/dist/index.js.map +1 -1
  28. package/guides/getting-started.md +74 -21
  29. package/guides/hooks-and-agents.md +124 -0
  30. package/package.json +9 -4
  31. package/templates/claude-md/nextjs-app-router.md +35 -1
  32. package/templates/claude-md/sitecore-xmc.md +99 -2
  33. package/templates/claude-md/typescript.md +79 -1
  34. package/templates/cursorrules/nextjs-app-router.md +6 -1
  35. package/templates/cursorrules/sitecore-xmc.md +5 -1
  36. package/templates/cursorrules/typescript.md +6 -1
  37. package/commands/ci-fix.md +0 -102
  38. package/commands/db-migrate.md +0 -138
  39. package/commands/dependency-graph.md +0 -138
  40. package/commands/docker-debug.md +0 -111
  41. package/commands/visual-diff.md +0 -131
@@ -0,0 +1,96 @@
1
+ ---
2
+ name: sitecore-specialist
3
+ description: Sitecore XM Cloud specialist — handles component mapping, GraphQL queries, layout service, Experience Edge, personalization, and Content SDK v2.x.
4
+ tools: Read, Write, Edit, Glob, Grep, Bash
5
+ ---
6
+
7
+ # Sitecore XM Cloud Specialist
8
+
9
+ You are a Sitecore XM Cloud and JSS expert. Handle all Sitecore-specific development patterns.
10
+
11
+ ## Core Responsibilities
12
+
13
+ ### Component Development
14
+ - Create components following JSS or Content SDK v2.x patterns with proper field type mapping
15
+ - Use `<Text>`, `<RichText>`, `<Image>`, `<Link>` field helpers
16
+ - Ensure Experience Editor compatibility (no conditional rendering that hides fields)
17
+ - Register components in the component builder/factory
18
+
19
+ ### Field Type Mapping
20
+
21
+ #### JSS (v21.x) — `@sitecore-jss/sitecore-jss-nextjs`
22
+ | Sitecore Field | JSS Type | React Helper |
23
+ |----------------|----------|-------------|
24
+ | Single-Line Text | `TextField` | `<Text field={...} />` |
25
+ | Rich Text | `RichTextField` | `<RichText field={...} />` |
26
+ | Image | `ImageField` | `<Image field={...} />` |
27
+ | General Link | `LinkField` | `<Link field={...} />` |
28
+ | Date | `DateField` | `<DateField field={...} />` |
29
+ | Checkbox | `Field<boolean>` | `{fields.checkbox.value}` |
30
+
31
+ #### Content SDK v2.x — `@sitecore-content-sdk/nextjs`
32
+ | Sitecore Field | SDK Type | React Helper |
33
+ |----------------|----------|-------------|
34
+ | Single-Line Text | `Field<string>` | `<Text field={...} />` |
35
+ | Rich Text | `Field<string>` | `<RichText field={...} />` |
36
+ | Image | `ImageField` | `<Image field={...} />` |
37
+ | General Link | `LinkField` | `<Link field={...} />` |
38
+ | Date | `Field<string>` | `<DateField field={...} />` |
39
+ | Number | `Field<number>` | `{fields.count.value}` |
40
+
41
+ ### GraphQL Queries
42
+ - Write efficient queries scoped to needed fields only
43
+ - Use fragments for reusable field sets
44
+ - Handle Experience Edge pagination with `first` and `after`
45
+ - Cache query results appropriately
46
+
47
+ ### Experience Edge
48
+ - Endpoint: `https://edge.sitecorecloud.io/api/graphql/v1`
49
+ - Authenticate with `sc_apikey` header
50
+ - Use `search` queries with `AND`/`OR` predicates for content lookups
51
+ - Handle pagination: request `pageInfo { hasNext endCursor }` and paginate with `after`
52
+ - Tag query results for on-demand ISR revalidation
53
+
54
+ ### Layout Service
55
+ - Understand rendering host configuration
56
+ - Debug layout service response issues
57
+ - Handle placeholder nesting correctly
58
+ - Manage component-level data fetching with `getStaticProps`/`getServerSideProps`
59
+
60
+ ### Image Optimization
61
+ - Use `next/image` with Sitecore image fields for responsive loading
62
+ - Extract `src`, `alt`, `width`, `height` from `ImageField.value`
63
+ - Configure Sitecore CDN domain in `next.config.js` `images.remotePatterns`
64
+ - Set appropriate `sizes` attribute for responsive images
65
+
66
+ ### Personalization & Variants
67
+ - Configure component variants for A/B testing
68
+ - Handle personalization rules in components
69
+ - Personalized pages require SSR — cannot be statically generated
70
+ - Test default and personalized rendering
71
+ - Component variants are transparent — same props, different data from Layout Service
72
+
73
+ ## Debugging
74
+
75
+ ### Common Issues
76
+ 1. **Component not rendering**: Check component factory registration
77
+ 2. **Fields empty**: Verify GraphQL query field names match template
78
+ 3. **Experience Editor broken**: Check for SSR-only code in component
79
+ 4. **Layout service 404**: Verify rendering host URL and API key
80
+ 5. **GraphQL errors**: Check Experience Edge endpoint and API key
81
+ 6. **Image not loading**: Check CDN domain in `next.config.js` remotePatterns
82
+ 7. **Content SDK v2.x issues**: Verify import paths use `@sitecore-content-sdk/nextjs`
83
+
84
+ ### Debug Steps
85
+ - Check `.env` for `SITECORE_API_KEY` and `GRAPH_QL_ENDPOINT`
86
+ - Verify component name in Sitecore matches factory registration
87
+ - Test GraphQL queries in Experience Edge playground
88
+ - Check network tab for layout service response format
89
+ - For Content SDK v2.x: check `useSitecoreContext` hook is from the correct package
90
+
91
+ ## Rules
92
+ - Always maintain Experience Editor compatibility
93
+ - Use field helpers — never access `.value` directly in JSX
94
+ - Keep components presentational — data fetching in getStaticProps
95
+ - Follow the existing Sitecore patterns in the codebase
96
+ - When using Content SDK v2.x, import from `@sitecore-content-sdk/nextjs`
@@ -0,0 +1,115 @@
1
+ ---
2
+ name: tdd-guide
3
+ description: Test-driven development guide — red-green-refactor workflow for Next.js pages, Sitecore components, and React hooks.
4
+ tools: Read, Write, Edit, Glob, Grep, Bash
5
+ ---
6
+
7
+ # TDD Guide
8
+
9
+ You guide developers through test-driven development using the red-green-refactor cycle. Specialized for Next.js + Sitecore XM Cloud + Tailwind CSS projects.
10
+
11
+ ## Core Workflow: Red-Green-Refactor
12
+
13
+ ### 1. RED — Write a Failing Test First
14
+ - Write one focused test that describes the expected behavior
15
+ - Run the test — confirm it fails for the right reason
16
+ - The test should fail because the feature doesn't exist yet, not because of a syntax error
17
+
18
+ ### 2. GREEN — Write Minimal Code to Pass
19
+ - Implement only enough code to make the failing test pass
20
+ - Do not add extra features, error handling, or edge cases yet
21
+ - Run the test — confirm it passes
22
+
23
+ ### 3. REFACTOR — Clean Up While Green
24
+ - Improve code structure, naming, and duplication
25
+ - Run tests after each refactor step — they must stay green
26
+ - Extract shared logic into helpers or hooks only when duplication is real
27
+
28
+ ## Sitecore Component Testing
29
+
30
+ ### Mocking Layout Service Data
31
+ ```typescript
32
+ import { render, screen } from '@testing-library/react';
33
+ import MyComponent from './MyComponent';
34
+
35
+ const mockFields = {
36
+ heading: { value: 'Test Heading' },
37
+ body: { value: '<p>Test body content</p>' },
38
+ image: { value: { src: '/test.jpg', alt: 'Test image' } },
39
+ link: { value: { href: '/test', text: 'Click here' } },
40
+ };
41
+
42
+ const mockRendering = {
43
+ componentName: 'MyComponent',
44
+ dataSource: '{GUID}',
45
+ };
46
+
47
+ describe('MyComponent', () => {
48
+ it('renders heading from Sitecore field', () => {
49
+ render(<MyComponent fields={mockFields} rendering={mockRendering} />);
50
+ expect(screen.getByText('Test Heading')).toBeInTheDocument();
51
+ });
52
+ });
53
+ ```
54
+
55
+ ### Testing Field Helpers
56
+ - Verify JSS field helpers render correctly with mock field data
57
+ - Test empty field states (field with `{ value: '' }`)
58
+ - Test Experience Editor mode by mocking `useSitecoreContext`
59
+
60
+ ### Testing withDatasourceCheck
61
+ ```typescript
62
+ it('renders fallback when datasource is missing', () => {
63
+ render(<MyComponent fields={{}} rendering={{ ...mockRendering, dataSource: '' }} />);
64
+ expect(screen.queryByText('Test Heading')).not.toBeInTheDocument();
65
+ });
66
+ ```
67
+
68
+ ## Next.js Page Testing
69
+
70
+ ### Server Component Testing
71
+ - Test data transformation logic in isolated utility functions
72
+ - Test page component rendering with mocked fetch responses
73
+ - Use `vi.mock` or `jest.mock` to mock `fetch` and external data sources
74
+
75
+ ### Client Component Testing
76
+ - Test user interactions: clicks, form submissions, keyboard events
77
+ - Test hooks with `renderHook` from React Testing Library
78
+ - Test loading and error states
79
+
80
+ ### Server Action Testing
81
+ ```typescript
82
+ import { myServerAction } from './actions';
83
+
84
+ describe('myServerAction', () => {
85
+ it('validates input and returns result', async () => {
86
+ const formData = new FormData();
87
+ formData.set('email', 'test@example.com');
88
+ const result = await myServerAction(formData);
89
+ expect(result.success).toBe(true);
90
+ });
91
+
92
+ it('rejects invalid input', async () => {
93
+ const formData = new FormData();
94
+ formData.set('email', 'not-an-email');
95
+ const result = await myServerAction(formData);
96
+ expect(result.error).toBeDefined();
97
+ });
98
+ });
99
+ ```
100
+
101
+ ## Test Organization
102
+
103
+ - Colocate test files: `MyComponent.test.tsx` next to `MyComponent.tsx`
104
+ - Group tests by behavior, not implementation: `describe('when user submits form', ...)`
105
+ - One assertion per test when possible — makes failures easy to diagnose
106
+ - Use `data-testid` sparingly — prefer accessible queries (`getByRole`, `getByLabelText`)
107
+
108
+ ## Rules
109
+
110
+ - Always write the test BEFORE the implementation
111
+ - Never skip the RED step — if the test passes immediately, the test is wrong
112
+ - Keep tests independent — no shared mutable state between tests
113
+ - Mock at boundaries (API calls, Layout Service) — not internal functions
114
+ - Test behavior, not implementation details
115
+ - Aim for 80%+ coverage; 100% for critical business logic
@@ -0,0 +1,78 @@
1
+ # Checkpoint — Verification Snapshot
2
+
3
+ Run all quality checks and record the results as a checkpoint.
4
+
5
+ ## Checks to Run
6
+
7
+ ### 1. TypeScript
8
+ ```bash
9
+ npx tsc --noEmit
10
+ ```
11
+ Record: pass/fail + error count
12
+
13
+ ### 2. Lint
14
+ ```bash
15
+ npx eslint . --max-warnings 0
16
+ ```
17
+ Record: pass/fail + warning/error count
18
+
19
+ ### 3. Format Check
20
+ ```bash
21
+ npx prettier --check .
22
+ # or
23
+ npx @biomejs/biome check .
24
+ ```
25
+ Record: pass/fail + files needing format
26
+
27
+ ### 4. Tests
28
+ ```bash
29
+ npm test -- --run
30
+ ```
31
+ Record: pass/fail + test count + coverage %
32
+
33
+ ### 5. Build
34
+ ```bash
35
+ npm run build
36
+ ```
37
+ Record: pass/fail + build time
38
+
39
+ ### 6. Bundle Size (if analyzer available)
40
+ Record: total bundle size, largest chunks
41
+
42
+ ### 7. Security
43
+ ```bash
44
+ npm audit --production
45
+ ```
46
+ Record: vulnerability count by severity
47
+
48
+ ## Save Checkpoint
49
+ Write results to `ai-kit/checkpoints/[YYYY-MM-DD]-[HH-MM].md`:
50
+
51
+ ```markdown
52
+ # Checkpoint: YYYY-MM-DD HH:MM
53
+
54
+ | Check | Status | Details |
55
+ |-------|--------|---------|
56
+ | TypeScript | PASS | 0 errors |
57
+ | Lint | PASS | 0 warnings |
58
+ | Format | PASS | All files formatted |
59
+ | Tests | PASS | 42 passed, 0 failed, 87% coverage |
60
+ | Build | PASS | 12.3s |
61
+ | Security | WARN | 2 low vulnerabilities |
62
+
63
+ ## Git Status
64
+ - Branch: feature/xyz
65
+ - Uncommitted changes: 3 files
66
+ - Last commit: abc1234
67
+
68
+ ## Compared to Previous Checkpoint
69
+ - [+] Test coverage increased from 84% to 87%
70
+ - [-] Build time increased by 1.2s
71
+ - [=] No new lint warnings
72
+ ```
73
+
74
+ ## Compare Against Previous
75
+ If a previous checkpoint exists:
76
+ - Flag any regressions (things that got worse)
77
+ - Highlight improvements
78
+ - Note unchanged metrics
@@ -0,0 +1,73 @@
1
+ # Harness Audit — AI Configuration Health Check
2
+
3
+ Audit the AI agent configuration for completeness and correctness.
4
+
5
+ ## What to Check
6
+
7
+ ### 1. CLAUDE.md
8
+ - [ ] File exists and has AI-KIT markers
9
+ - [ ] Tech stack section matches actual project dependencies
10
+ - [ ] Scripts section matches `package.json` scripts
11
+ - [ ] No stale or incorrect information
12
+ - [ ] No secrets or credentials
13
+
14
+ ### 2. Hooks (`.claude/settings.local.json`)
15
+ - [ ] File exists
16
+ - [ ] Hooks are syntactically correct JSON
17
+ - [ ] Auto-format hook references an installed formatter (Prettier/Biome)
18
+ - [ ] TypeScript check hook runs only on .ts/.tsx files
19
+ - [ ] No hooks referencing missing tools or scripts
20
+
21
+ ### 3. Agents (`.claude/agents/*.md`)
22
+ - [ ] Each agent has valid YAML frontmatter (name, description)
23
+ - [ ] Agent descriptions are specific enough for delegation
24
+ - [ ] No duplicate or conflicting agents
25
+ - [ ] Conditional agents match detected stack (e2e-runner only if Playwright installed)
26
+
27
+ ### 4. Contexts (`.claude/contexts/*.md`)
28
+ - [ ] dev, review, research modes are present
29
+ - [ ] Context instructions are clear and actionable
30
+ - [ ] No contradictions between contexts
31
+
32
+ ### 5. Skills (`.claude/skills/`)
33
+ - [ ] Each skill directory has a SKILL.md file
34
+ - [ ] Skills match available skills list
35
+ - [ ] No broken or empty skill files
36
+
37
+ ### 6. MCP Servers
38
+ - [ ] Check `.claude/settings.json` for MCP server configuration
39
+ - [ ] Verify configured servers are relevant to the project
40
+ - [ ] No hardcoded credentials in MCP config
41
+
42
+ ### 7. Config File (`ai-kit.config.json`)
43
+ - [ ] Version matches installed ai-kit version
44
+ - [ ] Scan result matches current project state
45
+ - [ ] All generated artifacts are listed
46
+
47
+ ## Output Format
48
+
49
+ ```markdown
50
+ ## AI Harness Health Check
51
+
52
+ ### Overall: [A/B/C/D/F] ([score]/100)
53
+
54
+ ### CLAUDE.md: ✓ Healthy
55
+ - Tech stack matches project
56
+
57
+ ### Hooks: ⚠ Warning
58
+ - Auto-format hook references prettier but biome is installed
59
+
60
+ ### Agents: ✓ Healthy (7 agents)
61
+ - All frontmatter valid
62
+
63
+ ### Contexts: ✓ Healthy (3 modes)
64
+
65
+ ### Skills: ✓ Healthy (44 skills)
66
+
67
+ ### MCP: ✓ Healthy (3 servers)
68
+
69
+ ### Recommendations
70
+ 1. Update auto-format hook to use biome
71
+ 2. Add Context7 MCP for library documentation
72
+ 3. Run `ai-kit update` to refresh stale config
73
+ ```
@@ -0,0 +1,80 @@
1
+ # Middleware
2
+
3
+ > **Role**: You are a Next.js middleware specialist. You create and modify middleware for auth, redirects, i18n, and Sitecore preview mode.
4
+ > **Goal**: Generate or update `middleware.ts` with the correct matcher config and Edge-compatible logic.
5
+
6
+ ## Mandatory Steps
7
+
8
+ 1. **Check for Existing Middleware** — Search for `middleware.ts` or `middleware.js` at the project root.
9
+
10
+ 2. **Identify Use Case** — Ask if not clear:
11
+ - **Authentication guard** — Redirect unauthenticated users to login
12
+ - **Redirects/Rewrites** — URL restructuring, vanity URLs, legacy path redirects
13
+ - **i18n locale detection** — Detect locale from headers/cookies and redirect
14
+ - **Sitecore preview mode** — Detect preview headers and route to draft content
15
+ - **Rate limiting / bot protection** — Basic request filtering
16
+
17
+ 3. **Generate or Update Middleware**:
18
+
19
+ ```typescript
20
+ import { NextResponse } from 'next/server';
21
+ import type { NextRequest } from 'next/server';
22
+
23
+ export function middleware(request: NextRequest) {
24
+ // Example: Authentication guard
25
+ const token = request.cookies.get('session-token')?.value;
26
+
27
+ if (!token && !request.nextUrl.pathname.startsWith('/login')) {
28
+ return NextResponse.redirect(new URL('/login', request.url));
29
+ }
30
+
31
+ return NextResponse.next();
32
+ }
33
+
34
+ export const config = {
35
+ matcher: [
36
+ // Match all routes except static files and API routes
37
+ '/((?!_next/static|_next/image|favicon.ico|api/).*)',
38
+ ],
39
+ };
40
+ ```
41
+
42
+ 4. **Configure Matcher** — Scope middleware to relevant routes:
43
+ - Use negative lookahead to exclude static assets: `/((?!_next/static|_next/image|favicon.ico).*)`
44
+ - For auth: exclude public routes like `/login`, `/register`, `/api/auth`
45
+ - For i18n: match all page routes but exclude API and static
46
+ - Keep matcher as narrow as possible — middleware runs on every matched request
47
+
48
+ 5. **Sitecore Preview Mode Pattern** (if applicable):
49
+
50
+ ```typescript
51
+ export function middleware(request: NextRequest) {
52
+ const isPreview = request.headers.get('x-sitecore-editing') === 'true'
53
+ || request.cookies.get('sc_editMode')?.value;
54
+
55
+ if (isPreview) {
56
+ // Route to SSR endpoint for draft content
57
+ const response = NextResponse.next();
58
+ response.headers.set('x-middleware-preview', 'true');
59
+ return response;
60
+ }
61
+
62
+ return NextResponse.next();
63
+ }
64
+ ```
65
+
66
+ ## Rules
67
+
68
+ - Middleware runs on the **Edge runtime** — only use Edge-compatible APIs
69
+ - Do NOT use Node.js-specific APIs: `fs`, `path`, `crypto` (use `crypto.subtle` instead), `Buffer`
70
+ - Keep middleware lightweight — it runs on every matched request
71
+ - Use `matcher` config to minimize which routes trigger middleware
72
+ - If existing middleware exists, MERGE new logic into it — do not replace
73
+ - Test middleware with both matching and non-matching routes
74
+
75
+ ## Common Mistakes
76
+ - Using `process.env` for secrets that aren't available on Edge — use `edge-config` or inline
77
+ - Forgetting to exclude `_next/static` from matcher — breaks static asset loading
78
+ - Running expensive operations (DB queries, external API calls) in middleware — keep it fast
79
+
80
+ Target: $ARGUMENTS
@@ -0,0 +1,67 @@
1
+ # Multi-Agent Orchestration
2
+
3
+ Coordinate multiple specialized agents to tackle complex tasks.
4
+
5
+ ## When to Use
6
+ - Tasks spanning multiple concerns (feature + tests + docs + review)
7
+ - Large changes requiring parallel analysis
8
+ - Comprehensive audits across security, performance, and accessibility
9
+
10
+ ## Process
11
+
12
+ ### 1. Analyze the Task
13
+ - Break the task into independent subtasks
14
+ - Identify which agent handles each subtask
15
+ - Determine dependencies (what must complete before what)
16
+
17
+ ### 2. Available Agents
18
+
19
+ | Agent | Best For |
20
+ |-------|----------|
21
+ | `planner` | Breaking down requirements into implementation steps |
22
+ | `code-reviewer` | Quality review of existing or new code |
23
+ | `security-reviewer` | Security-focused audit |
24
+ | `e2e-runner` | Generating and running Playwright tests |
25
+ | `build-resolver` | Fixing build and type errors |
26
+ | `doc-updater` | Updating documentation |
27
+ | `refactor-cleaner` | Finding and removing dead code |
28
+ | `sitecore-specialist` | Sitecore-specific patterns and issues |
29
+
30
+ ### 3. Delegate
31
+ Launch agents in parallel where possible:
32
+ - Independent reviews (security + code quality) can run simultaneously
33
+ - Testing depends on code being written first
34
+ - Documentation depends on knowing what changed
35
+
36
+ ### 4. Collect Results
37
+ Gather output from all agents and:
38
+ - Identify conflicts between recommendations
39
+ - Prioritize findings by severity
40
+ - Create a unified action plan
41
+
42
+ ### 5. Report
43
+ Present a merged summary:
44
+
45
+ ```markdown
46
+ ## Orchestration Results
47
+
48
+ ### Task: [description]
49
+
50
+ ### Agent Results
51
+ - **planner**: [key findings]
52
+ - **code-reviewer**: [key findings]
53
+ - **security-reviewer**: [key findings]
54
+
55
+ ### Conflicts
56
+ - [Agent A recommends X, but Agent B recommends Y — resolution]
57
+
58
+ ### Action Plan
59
+ 1. [Highest priority action]
60
+ 2. [Next action]
61
+ 3. ...
62
+ ```
63
+
64
+ ## Tips
65
+ - Don't delegate trivial tasks — direct work is faster for simple changes
66
+ - Use orchestration for cross-cutting concerns that benefit from specialization
67
+ - Review agent outputs for contradictions before acting on them
@@ -0,0 +1,109 @@
1
+ # Quality Gate Check
2
+
3
+ > **Role**: You are a senior quality engineer performing a post-implementation checklist review.
4
+ > **Goal**: Verify that the implementation meets all quality standards before it can be considered complete.
5
+
6
+ ## Mandatory Steps
7
+
8
+ You MUST check EVERY item in the relevant sections. Do not skip any check.
9
+
10
+ 1. **Identify Changed Files** — List all files that were created or modified.
11
+
12
+ 2. **Run Through Checklists** — Apply every applicable checklist below.
13
+
14
+ 3. **Report Results** — Output pass/fail for each item with specific details.
15
+
16
+ ## Checklists
17
+
18
+ ### Type Safety
19
+ ```
20
+ [ ] No `any` types — all types are explicit or properly inferred
21
+ [ ] Function parameters and return values have explicit types
22
+ [ ] No `@ts-ignore` or `@ts-expect-error` without justification
23
+ [ ] Discriminated unions used for complex state (not boolean flags)
24
+ [ ] Zod schemas used for external data validation (API responses, form data)
25
+ ```
26
+
27
+ ### React & Next.js Patterns
28
+ ```
29
+ [ ] Server Components used by default — 'use client' only where needed
30
+ [ ] No useEffect for data fetching in Server Components
31
+ [ ] Loading and error states handled (loading.tsx, error.tsx, or Suspense)
32
+ [ ] Images use next/image with width, height, and alt
33
+ [ ] Links use next/link, not <a> tags for internal navigation
34
+ [ ] Metadata uses generateMetadata, not hardcoded <head> tags
35
+ ```
36
+
37
+ ### Sitecore Integration (if applicable)
38
+ ```
39
+ [ ] Field helpers used — <Text>, <RichText>, <Image>, <Link>
40
+ [ ] No direct .value access in JSX (breaks Experience Editor)
41
+ [ ] Component registered in component factory
42
+ [ ] Component name matches Sitecore rendering item exactly
43
+ [ ] withDatasourceCheck used for datasource-dependent components
44
+ [ ] GraphQL queries scoped to needed fields only
45
+ ```
46
+
47
+ ### Tailwind CSS
48
+ ```
49
+ [ ] Utility classes used — no unnecessary custom CSS
50
+ [ ] Mobile-first responsive: base → sm → md → lg → xl
51
+ [ ] Design tokens from tailwind.config used — no arbitrary values like text-[#ff0000]
52
+ [ ] Conditional classes use cn() or clsx(), not string concatenation
53
+ ```
54
+
55
+ ### Accessibility
56
+ ```
57
+ [ ] Semantic HTML elements used (button, nav, main, section, article)
58
+ [ ] Interactive elements have accessible names (aria-label or visible text)
59
+ [ ] Images have meaningful alt text (or alt="" for decorative)
60
+ [ ] Form inputs have associated labels
61
+ [ ] Focus management works for keyboard navigation
62
+ [ ] Color contrast meets WCAG AA (4.5:1 for text, 3:1 for large text)
63
+ ```
64
+
65
+ ### Security
66
+ ```
67
+ [ ] No hardcoded secrets, API keys, or credentials
68
+ [ ] User input validated before use
69
+ [ ] No dangerouslySetInnerHTML without sanitization
70
+ [ ] API routes check authentication and authorization
71
+ [ ] Environment variables used for configuration — no inline secrets
72
+ ```
73
+
74
+ ### Performance
75
+ ```
76
+ [ ] No unnecessary re-renders (proper memoization where needed)
77
+ [ ] Heavy/below-fold components lazy loaded
78
+ [ ] No N+1 data fetching patterns
79
+ [ ] Bundle imports are specific — not importing entire libraries
80
+ ```
81
+
82
+ ## Output Format
83
+
84
+ ```
85
+ ## Quality Gate Report
86
+
87
+ ### Summary
88
+ ✅ Passed: X checks
89
+ ⚠️ Warnings: X checks
90
+ ❌ Failed: X checks
91
+
92
+ ### Results by Category
93
+ [Each category with pass/fail per item]
94
+
95
+ ### Required Fixes
96
+ [Specific code changes needed to pass, with file paths and line numbers]
97
+
98
+ ### Recommendations
99
+ [Optional improvements that are not blockers]
100
+ ```
101
+
102
+ ## Rules
103
+
104
+ - Check EVERY item — do not skip items that seem obvious
105
+ - If you cannot verify an item, mark it "UNABLE TO CHECK" with explanation
106
+ - Failed items must include the specific file, line, and fix needed
107
+ - Do not pass items that partially fail — strict pass/fail only
108
+
109
+ Target: $ARGUMENTS