opencastle 0.6.0 → 0.8.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.
- package/README.md +8 -7
- package/dist/cli/adapters/claude-code.d.ts.map +1 -1
- package/dist/cli/adapters/claude-code.js +30 -3
- package/dist/cli/adapters/claude-code.js.map +1 -1
- package/dist/cli/adapters/cursor.d.ts.map +1 -1
- package/dist/cli/adapters/cursor.js +27 -3
- package/dist/cli/adapters/cursor.js.map +1 -1
- package/dist/cli/adapters/opencode.d.ts +20 -0
- package/dist/cli/adapters/opencode.d.ts.map +1 -0
- package/dist/cli/adapters/opencode.js +265 -0
- package/dist/cli/adapters/opencode.js.map +1 -0
- package/dist/cli/adapters/vscode.d.ts.map +1 -1
- package/dist/cli/adapters/vscode.js +37 -6
- package/dist/cli/adapters/vscode.js.map +1 -1
- package/dist/cli/copy.d.ts +12 -0
- package/dist/cli/copy.d.ts.map +1 -1
- package/dist/cli/copy.js +27 -0
- package/dist/cli/copy.js.map +1 -1
- package/dist/cli/detect.d.ts +1 -1
- package/dist/cli/detect.js +21 -15
- package/dist/cli/detect.js.map +1 -1
- package/dist/cli/init.d.ts.map +1 -1
- package/dist/cli/init.js +143 -94
- package/dist/cli/init.js.map +1 -1
- package/dist/cli/manifest.d.ts +1 -1
- package/dist/cli/manifest.d.ts.map +1 -1
- package/dist/cli/manifest.js +2 -1
- package/dist/cli/manifest.js.map +1 -1
- package/dist/cli/mcp.d.ts +6 -6
- package/dist/cli/mcp.d.ts.map +1 -1
- package/dist/cli/mcp.js +104 -33
- package/dist/cli/mcp.js.map +1 -1
- package/dist/cli/prompt.d.ts +19 -0
- package/dist/cli/prompt.d.ts.map +1 -1
- package/dist/cli/prompt.js +143 -0
- package/dist/cli/prompt.js.map +1 -1
- package/dist/cli/stack-config.d.ts +23 -0
- package/dist/cli/stack-config.d.ts.map +1 -1
- package/dist/cli/stack-config.js +128 -124
- package/dist/cli/stack-config.js.map +1 -1
- package/dist/cli/types.d.ts +26 -9
- package/dist/cli/types.d.ts.map +1 -1
- package/dist/cli/types.js +26 -1
- package/dist/cli/types.js.map +1 -1
- package/dist/cli/update.d.ts.map +1 -1
- package/dist/cli/update.js +60 -19
- package/dist/cli/update.js.map +1 -1
- package/dist/orchestrator/plugins/chrome-devtools/config.d.ts +3 -0
- package/dist/orchestrator/plugins/chrome-devtools/config.d.ts.map +1 -0
- package/dist/orchestrator/plugins/chrome-devtools/config.js +28 -0
- package/dist/orchestrator/plugins/chrome-devtools/config.js.map +1 -0
- package/dist/orchestrator/plugins/contentful/config.d.ts +3 -0
- package/dist/orchestrator/plugins/contentful/config.d.ts.map +1 -0
- package/dist/orchestrator/plugins/contentful/config.js +48 -0
- package/dist/orchestrator/plugins/contentful/config.js.map +1 -0
- package/dist/orchestrator/plugins/convex/config.d.ts +3 -0
- package/dist/orchestrator/plugins/convex/config.d.ts.map +1 -0
- package/dist/orchestrator/plugins/convex/config.js +32 -0
- package/dist/orchestrator/plugins/convex/config.js.map +1 -0
- package/dist/orchestrator/plugins/index.d.ts +28 -0
- package/dist/orchestrator/plugins/index.d.ts.map +1 -0
- package/dist/orchestrator/plugins/index.js +63 -0
- package/dist/orchestrator/plugins/index.js.map +1 -0
- package/dist/orchestrator/plugins/jira/config.d.ts +3 -0
- package/dist/orchestrator/plugins/jira/config.d.ts.map +1 -0
- package/dist/orchestrator/plugins/jira/config.js +29 -0
- package/dist/orchestrator/plugins/jira/config.js.map +1 -0
- package/dist/orchestrator/plugins/linear/config.d.ts +3 -0
- package/dist/orchestrator/plugins/linear/config.d.ts.map +1 -0
- package/dist/orchestrator/plugins/linear/config.js +33 -0
- package/dist/orchestrator/plugins/linear/config.js.map +1 -0
- package/dist/orchestrator/plugins/nx/config.d.ts +3 -0
- package/dist/orchestrator/plugins/nx/config.d.ts.map +1 -0
- package/dist/orchestrator/plugins/nx/config.js +28 -0
- package/dist/orchestrator/plugins/nx/config.js.map +1 -0
- package/dist/orchestrator/plugins/sanity/config.d.ts +3 -0
- package/dist/orchestrator/plugins/sanity/config.d.ts.map +1 -0
- package/dist/orchestrator/plugins/sanity/config.js +43 -0
- package/dist/orchestrator/plugins/sanity/config.js.map +1 -0
- package/dist/orchestrator/plugins/slack/config.d.ts +3 -0
- package/dist/orchestrator/plugins/slack/config.d.ts.map +1 -0
- package/dist/orchestrator/plugins/slack/config.js +34 -0
- package/dist/orchestrator/plugins/slack/config.js.map +1 -0
- package/dist/orchestrator/plugins/strapi/config.d.ts +3 -0
- package/dist/orchestrator/plugins/strapi/config.d.ts.map +1 -0
- package/dist/orchestrator/plugins/strapi/config.js +40 -0
- package/dist/orchestrator/plugins/strapi/config.js.map +1 -0
- package/dist/orchestrator/plugins/supabase/config.d.ts +3 -0
- package/dist/orchestrator/plugins/supabase/config.d.ts.map +1 -0
- package/dist/orchestrator/plugins/supabase/config.js +33 -0
- package/dist/orchestrator/plugins/supabase/config.js.map +1 -0
- package/dist/orchestrator/plugins/teams/config.d.ts +3 -0
- package/dist/orchestrator/plugins/teams/config.d.ts.map +1 -0
- package/dist/orchestrator/plugins/teams/config.js +43 -0
- package/dist/orchestrator/plugins/teams/config.js.map +1 -0
- package/dist/orchestrator/plugins/types.d.ts +61 -0
- package/dist/orchestrator/plugins/types.d.ts.map +1 -0
- package/dist/orchestrator/plugins/types.js +2 -0
- package/dist/orchestrator/plugins/types.js.map +1 -0
- package/dist/orchestrator/plugins/vercel/config.d.ts +3 -0
- package/dist/orchestrator/plugins/vercel/config.d.ts.map +1 -0
- package/dist/orchestrator/plugins/vercel/config.js +32 -0
- package/dist/orchestrator/plugins/vercel/config.js.map +1 -0
- package/package.json +1 -1
- package/src/cli/adapters/claude-code.ts +36 -4
- package/src/cli/adapters/cursor.ts +42 -4
- package/src/cli/adapters/opencode.ts +320 -0
- package/src/cli/adapters/vscode.ts +40 -8
- package/src/cli/copy.ts +32 -0
- package/src/cli/detect.ts +17 -17
- package/src/cli/init.ts +157 -99
- package/src/cli/manifest.ts +2 -1
- package/src/cli/mcp.ts +129 -50
- package/src/cli/prompt.ts +176 -0
- package/src/cli/stack-config.ts +174 -145
- package/src/cli/types.ts +39 -8
- package/src/cli/update.ts +71 -20
- package/src/dashboard/node_modules/.vite/deps/_metadata.json +6 -6
- package/src/orchestrator/agent-workflows/README.md +1 -1
- package/src/orchestrator/agent-workflows/bug-fix.md +12 -12
- package/src/orchestrator/agent-workflows/data-pipeline.md +21 -20
- package/src/orchestrator/agent-workflows/database-migration.md +11 -11
- package/src/orchestrator/agent-workflows/feature-implementation.md +19 -12
- package/src/orchestrator/agent-workflows/performance-optimization.md +6 -6
- package/src/orchestrator/agent-workflows/refactoring.md +10 -10
- package/src/orchestrator/agent-workflows/schema-changes.md +8 -8
- package/src/orchestrator/agent-workflows/security-audit.md +12 -12
- package/src/orchestrator/agent-workflows/shared-delivery-phase.md +5 -5
- package/src/orchestrator/agents/api-designer.agent.md +1 -1
- package/src/orchestrator/agents/architect.agent.md +2 -2
- package/src/orchestrator/agents/content-engineer.agent.md +3 -3
- package/src/orchestrator/agents/copywriter.agent.md +2 -2
- package/src/orchestrator/agents/data-expert.agent.md +6 -6
- package/src/orchestrator/agents/database-engineer.agent.md +3 -3
- package/src/orchestrator/agents/developer.agent.md +4 -4
- package/src/orchestrator/agents/devops-expert.agent.md +5 -5
- package/src/orchestrator/agents/documentation-writer.agent.md +1 -1
- package/src/orchestrator/agents/performance-expert.agent.md +2 -2
- package/src/orchestrator/agents/release-manager.agent.md +4 -4
- package/src/orchestrator/agents/researcher.agent.md +3 -3
- package/src/orchestrator/agents/reviewer.agent.md +1 -1
- package/src/orchestrator/agents/security-expert.agent.md +4 -4
- package/src/orchestrator/agents/seo-specialist.agent.md +2 -2
- package/src/orchestrator/agents/team-lead.agent.md +56 -38
- package/src/orchestrator/agents/testing-expert.agent.md +5 -5
- package/src/orchestrator/agents/ui-ux-expert.agent.md +6 -6
- package/src/orchestrator/copilot-instructions.md +1 -1
- package/src/orchestrator/customizations/AGENT-FAILURES.md +1 -1
- package/src/orchestrator/customizations/AGENT-PERFORMANCE.md +12 -12
- package/src/orchestrator/customizations/DISPUTES.md +5 -5
- package/src/orchestrator/customizations/KNOWN-ISSUES.md +30 -0
- package/src/orchestrator/customizations/LESSONS-LEARNED.md +7 -7
- package/src/orchestrator/customizations/README.md +5 -2
- package/src/orchestrator/customizations/agents/agent-registry.md +1 -1
- package/src/orchestrator/customizations/agents/skill-matrix.md +12 -7
- package/src/orchestrator/customizations/logs/README.md +1 -1
- package/src/orchestrator/customizations/project/decisions.md +31 -0
- package/src/orchestrator/customizations/project/docs-structure.md +16 -5
- package/src/orchestrator/customizations/project/roadmap.md +24 -0
- package/src/orchestrator/customizations/project/tracker-config.md +1 -1
- package/src/orchestrator/customizations/stack/cms-config.md +1 -1
- package/src/orchestrator/customizations/stack/notifications-config.md +1 -1
- package/src/orchestrator/instructions/ai-optimization.instructions.md +2 -2
- package/src/orchestrator/instructions/general.instructions.md +102 -40
- package/src/orchestrator/{skills/browser-testing → plugins/chrome-devtools}/SKILL.md +1 -1
- package/src/orchestrator/plugins/chrome-devtools/config.ts +29 -0
- package/src/orchestrator/{skills/contentful-cms → plugins/contentful}/SKILL.md +1 -1
- package/src/orchestrator/plugins/contentful/config.ts +49 -0
- package/src/orchestrator/{skills/convex-database → plugins/convex}/SKILL.md +1 -1
- package/src/orchestrator/plugins/convex/config.ts +33 -0
- package/src/orchestrator/plugins/index.ts +85 -0
- package/src/orchestrator/{skills/jira-management → plugins/jira}/SKILL.md +3 -3
- package/src/orchestrator/plugins/jira/config.ts +30 -0
- package/src/orchestrator/{skills/task-management → plugins/linear}/SKILL.md +3 -3
- package/src/orchestrator/plugins/linear/config.ts +34 -0
- package/src/orchestrator/{skills/nx-workspace → plugins/nx}/SKILL.md +1 -1
- package/src/orchestrator/plugins/nx/config.ts +29 -0
- package/src/orchestrator/{skills/sanity-cms → plugins/sanity}/SKILL.md +1 -1
- package/src/orchestrator/plugins/sanity/config.ts +44 -0
- package/src/orchestrator/{skills/slack-notifications → plugins/slack}/SKILL.md +2 -2
- package/src/orchestrator/plugins/slack/config.ts +35 -0
- package/src/orchestrator/{skills/strapi-cms → plugins/strapi}/SKILL.md +1 -1
- package/src/orchestrator/plugins/strapi/config.ts +41 -0
- package/src/orchestrator/{skills/supabase-database → plugins/supabase}/SKILL.md +1 -1
- package/src/orchestrator/plugins/supabase/config.ts +34 -0
- package/src/orchestrator/{skills/teams-notifications → plugins/teams}/SKILL.md +2 -2
- package/src/orchestrator/plugins/teams/config.ts +44 -0
- package/src/orchestrator/plugins/types.ts +79 -0
- package/src/orchestrator/plugins/vercel/config.ts +33 -0
- package/src/orchestrator/prompts/bootstrap-customizations.prompt.md +8 -8
- package/src/orchestrator/prompts/brainstorm.prompt.md +3 -3
- package/src/orchestrator/prompts/bug-fix.prompt.md +27 -22
- package/src/orchestrator/prompts/create-skill.prompt.md +50 -32
- package/src/orchestrator/prompts/generate-task-spec.prompt.md +3 -3
- package/src/orchestrator/prompts/implement-feature.prompt.md +34 -29
- package/src/orchestrator/prompts/metrics-report.prompt.md +11 -11
- package/src/orchestrator/prompts/quick-refinement.prompt.md +23 -19
- package/src/orchestrator/prompts/resolve-pr-comments.prompt.md +19 -5
- package/src/orchestrator/skills/accessibility-standards/SKILL.md +1 -1
- package/src/orchestrator/skills/agent-hooks/SKILL.md +27 -18
- package/src/orchestrator/skills/agent-memory/SKILL.md +7 -7
- package/src/orchestrator/skills/api-patterns/SKILL.md +6 -6
- package/src/orchestrator/skills/code-commenting/SKILL.md +1 -1
- package/src/orchestrator/skills/context-map/SKILL.md +4 -4
- package/src/orchestrator/skills/data-engineering/SKILL.md +7 -4
- package/src/orchestrator/skills/deployment-infrastructure/SKILL.md +2 -2
- package/src/orchestrator/skills/documentation-standards/SKILL.md +1 -1
- package/src/orchestrator/skills/fast-review/SKILL.md +18 -7
- package/src/orchestrator/skills/frontend-design/SKILL.md +1 -1
- package/src/orchestrator/skills/memory-merger/SKILL.md +8 -8
- package/src/orchestrator/skills/nextjs-patterns/SKILL.md +1 -1
- package/src/orchestrator/skills/panel-majority-vote/SKILL.md +2 -2
- package/src/orchestrator/skills/panel-majority-vote/panel-report.template.md +1 -1
- package/src/orchestrator/skills/performance-optimization/SKILL.md +1 -1
- package/src/orchestrator/skills/react-development/SKILL.md +3 -3
- package/src/orchestrator/skills/security-hardening/SKILL.md +27 -27
- package/src/orchestrator/skills/self-improvement/SKILL.md +14 -13
- package/src/orchestrator/skills/seo-patterns/SKILL.md +1 -1
- package/src/orchestrator/skills/session-checkpoints/SKILL.md +19 -19
- package/src/orchestrator/skills/team-lead-reference/SKILL.md +9 -9
- package/src/orchestrator/skills/testing-workflow/SKILL.md +13 -13
- package/src/orchestrator/skills/validation-gates/SKILL.md +157 -27
- package/src/orchestrator/mcp.json +0 -69
|
@@ -1,60 +1,156 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: validation-gates
|
|
3
|
-
description: "Shared validation gates for all orchestration workflows — deterministic checks, browser testing, cache management, regression checks. Referenced by prompt templates to maintain single source of truth."
|
|
3
|
+
description: "Shared validation gates for all orchestration workflows — secret scanning, deterministic checks, blast radius analysis, dependency auditing, browser testing, cache management, regression checks, and final smoke tests. Referenced by prompt templates to maintain single source of truth."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the customizations/ directory instead. -->
|
|
6
|
+
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the .github/customizations/ directory instead. -->
|
|
7
7
|
|
|
8
8
|
# Validation Gates
|
|
9
9
|
|
|
10
10
|
Canonical reference for validation gates shared across all orchestration workflows. Prompt templates reference this skill to avoid duplication.
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
**Gate summary:**
|
|
13
|
+
|
|
14
|
+
| Gate | Name | Runs When |
|
|
15
|
+
|------|------|-----------|
|
|
16
|
+
| 1 | Secret Scanning | Every delegation |
|
|
17
|
+
| 2 | Deterministic Checks | Every delegation |
|
|
18
|
+
| 3 | Blast Radius Check | Every delegation |
|
|
19
|
+
| 4 | Dependency Audit | When `package.json` or lockfiles change |
|
|
20
|
+
| 5 | Fast Review | Every delegation (with auto-PASS exceptions) |
|
|
21
|
+
| 6 | Cache Clearing | Before browser testing |
|
|
22
|
+
| 7 | Browser Testing | UI changes |
|
|
23
|
+
| 8 | Regression Testing | Every delegation |
|
|
24
|
+
| 9 | Panel Review | High-stakes changes only |
|
|
25
|
+
| 10 | Final Smoke Test | Feature completion (after all tasks Done) |
|
|
13
26
|
|
|
14
|
-
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## Gate 1: Secret Scanning
|
|
30
|
+
|
|
31
|
+
> **HARD GATE — Constitution rule #1.** No tokens, keys, passwords, or connection strings in code, logs, commits, or terminal output.
|
|
32
|
+
|
|
33
|
+
Scan every diff **before** any other gate. A secret leak caught after merge is exponentially more expensive than one caught at review time.
|
|
34
|
+
|
|
35
|
+
### What to scan
|
|
36
|
+
|
|
37
|
+
Run a regex scan of all changed files for patterns that match common secret formats:
|
|
15
38
|
|
|
16
39
|
```bash
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
yarn nx run <project>:build
|
|
40
|
+
# Scan staged/changed files for common secret patterns
|
|
41
|
+
grep -rn -E '(AKIA[0-9A-Z]{16}|sk-[a-zA-Z0-9]{20,}|ghp_[a-zA-Z0-9]{36}|glpat-[a-zA-Z0-9\-]{20}|xox[bpors]-[a-zA-Z0-9\-]+|eyJ[a-zA-Z0-9]{10,}\.[a-zA-Z0-9]{10,}|-----BEGIN (RSA |EC |DSA )?PRIVATE KEY-----|mongodb(\+srv)?://[^\s]+|postgres(ql)?://[^\s]+|mysql://[^\s]+|redis://[^\s]+)' <changed-files>
|
|
20
42
|
```
|
|
21
43
|
|
|
44
|
+
Also check for:
|
|
45
|
+
- Hardcoded `password`, `secret`, `api_key`, `apiKey`, `token` assignments (not just references)
|
|
46
|
+
- `.env` file contents copied into source files
|
|
47
|
+
- Base64-encoded secrets (common obfuscation attempt)
|
|
48
|
+
|
|
49
|
+
### On detection
|
|
50
|
+
|
|
51
|
+
- **BLOCK immediately** — do not proceed to Gate 2
|
|
52
|
+
- Flag the specific file and line number
|
|
53
|
+
- Re-delegate to the agent with explicit instruction to use environment variables instead
|
|
54
|
+
- If a secret was already committed, **rotate it immediately** — git history is permanent
|
|
55
|
+
|
|
56
|
+
### Exceptions
|
|
57
|
+
|
|
58
|
+
- Test fixtures with obviously fake values (e.g., `sk-test-1234567890`)
|
|
59
|
+
- Documentation examples with placeholder values (e.g., `YOUR_API_KEY_HERE`)
|
|
60
|
+
- Pattern matches inside comments that are clearly explanatory
|
|
61
|
+
|
|
62
|
+
## Gate 2: Deterministic Checks
|
|
63
|
+
|
|
64
|
+
Run for every affected project (resolve exact commands via the **codebase-tool** skill):
|
|
65
|
+
|
|
66
|
+
- **Lint** (with auto-fix)
|
|
67
|
+
- **Test**
|
|
68
|
+
- **Build**
|
|
69
|
+
|
|
22
70
|
All must pass with zero errors. Run for **every** project that consumed modified files, not just the primary project.
|
|
23
71
|
|
|
24
|
-
## Gate
|
|
72
|
+
## Gate 3: Blast Radius Check
|
|
73
|
+
|
|
74
|
+
Assess the scope of changes to catch scope creep and ensure reviewers can evaluate the diff effectively.
|
|
75
|
+
|
|
76
|
+
### Thresholds
|
|
77
|
+
|
|
78
|
+
| Metric | Normal | Warning | Escalate |
|
|
79
|
+
|--------|--------|---------|----------|
|
|
80
|
+
| Lines changed | ≤200 | 201–500 | >500 |
|
|
81
|
+
| Files changed | ≤5 | 6–10 | >10 |
|
|
82
|
+
| Projects affected | ≤1 | 2 | >2 |
|
|
83
|
+
|
|
84
|
+
### Actions
|
|
85
|
+
|
|
86
|
+
- **Normal** — proceed to Gate 4
|
|
87
|
+
- **Warning** — log a note in the delegation record. Ask: *"Was this scope expected?"* If yes, proceed. If unexpected, investigate whether the agent drifted from the partition
|
|
88
|
+
- **Escalate** — **STOP.** The Team Lead must review the diff before proceeding:
|
|
89
|
+
1. Verify all changed files are within the agent's assigned partition
|
|
90
|
+
2. Check whether the task should have been split into smaller subtasks
|
|
91
|
+
3. If scope creep: revert extra changes, re-delegate with tighter scope
|
|
92
|
+
4. If legitimately large: proceed, but **always run fast review** (no auto-PASS) and consider panel review
|
|
93
|
+
|
|
94
|
+
### Sensitive files
|
|
95
|
+
|
|
96
|
+
Changes to these file categories always trigger Warning regardless of line count:
|
|
97
|
+
|
|
98
|
+
- Auth/middleware files (e.g., `middleware.ts`, `auth.ts`, `**/auth/**`)
|
|
99
|
+
- Database migrations, RLS policies
|
|
100
|
+
- Security headers, CSP configuration (`next.config.*`, `vercel.json`)
|
|
101
|
+
- Environment variable schemas (`.env.example`, `env.ts`)
|
|
102
|
+
- CI/CD configuration (`.github/workflows/**`)
|
|
103
|
+
- Package manager configs (`package.json`, lockfiles) — also triggers Gate 4
|
|
104
|
+
|
|
105
|
+
## Gate 4: Dependency Audit
|
|
106
|
+
|
|
107
|
+
> Runs only when `package.json`, `yarn.lock`, `package-lock.json`, `pnpm-lock.yaml`, or similar lockfiles are modified.
|
|
108
|
+
|
|
109
|
+
When agents add, remove, or update npm packages, verify:
|
|
110
|
+
|
|
111
|
+
1. **Vulnerability scan** — Run `npm audit` (or the project's equivalent). No new `high` or `critical` vulnerabilities
|
|
112
|
+
2. **License compatibility** — New packages must use MIT, Apache-2.0, BSD-2-Clause, BSD-3-Clause, or ISC licenses. Flag any copyleft (GPL, LGPL, AGPL) or proprietary licenses for human review
|
|
113
|
+
3. **Bundle size impact** — For frontend packages, note the minified + gzipped size. Flag packages >50KB gzipped that have lighter alternatives
|
|
114
|
+
4. **Duplicate functionality** — Check whether the new dependency overlaps with an existing one (e.g., adding `moment` when `date-fns` is already installed)
|
|
115
|
+
5. **Maintenance health** — Flag packages with no updates in >2 years or <100 weekly downloads
|
|
116
|
+
|
|
117
|
+
### On failure
|
|
118
|
+
|
|
119
|
+
- **Vulnerability:** BLOCK. Re-delegate with instruction to use a patched version or alternative package
|
|
120
|
+
- **License concern:** Flag for human review. Do not block, but document in the PR description
|
|
121
|
+
- **Size/duplicate:** Flag as SHOULD-FIX in the fast review. Not blocking unless egregious (>200KB)
|
|
122
|
+
|
|
123
|
+
## Gate 5: Fast Review (MANDATORY)
|
|
25
124
|
|
|
26
125
|
> **HARD GATE:** Every agent delegation output must pass fast review before acceptance. This is non-negotiable — even for overnight/unattended runs. Load the **fast-review** skill for the full procedure.
|
|
27
126
|
|
|
28
|
-
After
|
|
127
|
+
After gates 1–4 pass:
|
|
29
128
|
|
|
30
129
|
1. **Spawn a single reviewer sub-agent** with the review prompt from the fast-review skill
|
|
31
130
|
2. **On PASS** — proceed to remaining gates
|
|
32
131
|
3. **On FAIL** — re-delegate to the same agent with reviewer feedback (up to 2 retries)
|
|
33
|
-
4. **On 3x FAIL** — escalate to panel review (Gate
|
|
132
|
+
4. **On 3x FAIL** — escalate to panel review (Gate 9)
|
|
34
133
|
|
|
35
134
|
The reviewer validates: acceptance criteria met, file partition respected, no regressions, type safety, error handling, security basics, and edge cases.
|
|
36
135
|
|
|
37
136
|
**Auto-PASS conditions** (skip the reviewer sub-agent):
|
|
38
137
|
- Pure research/exploration with no code changes
|
|
39
138
|
- Only `.md` files were modified
|
|
40
|
-
- All deterministic gates passed AND the change is ≤10 lines across ≤2 files
|
|
139
|
+
- All deterministic gates passed AND the change is ≤10 lines across ≤2 files AND **no sensitive files were touched** (see Gate 3 sensitive file list)
|
|
41
140
|
|
|
42
|
-
|
|
141
|
+
> **Sensitive file override:** If any changed file falls into the sensitive file categories listed in Gate 3 (auth, migrations, security headers, env schemas, CI/CD), auto-PASS is **never** applied — even for 1-line changes. These files always get a human-quality review.
|
|
43
142
|
|
|
44
|
-
|
|
143
|
+
## Gate 6: Cache Clearing (BEFORE Browser Testing)
|
|
45
144
|
|
|
46
|
-
|
|
47
|
-
rm -rf apps/<app>/.next
|
|
48
|
-
yarn nx reset
|
|
49
|
-
```
|
|
145
|
+
**Always clear before testing.** Testing stale code wastes time and produces false results.
|
|
50
146
|
|
|
51
|
-
|
|
147
|
+
Clear framework caches and task runner caches before starting the dev server for browser testing. See the **codebase-tool** skill for cache-clearing commands.
|
|
52
148
|
|
|
53
|
-
## Gate
|
|
149
|
+
## Gate 7: Browser Testing (MANDATORY for UI Changes)
|
|
54
150
|
|
|
55
151
|
> **HARD GATE:** A task with UI changes is NOT done until you have screenshots in Chrome proving the feature works. "The code looks correct" is not proof. "Tests pass" is not proof. Only a screenshot of the working UI in Chrome is proof.
|
|
56
152
|
|
|
57
|
-
1. **Start the dev server** —
|
|
153
|
+
1. **Start the dev server** — use the project's serve command (see the **codebase-tool** skill) — wait for it to be ready
|
|
58
154
|
2. **Navigate to affected pages** — Verify the new feature renders correctly
|
|
59
155
|
3. **Verify SPECIFIC features** — Check every feature listed in the acceptance criteria. If the criteria say "icons, groups, and AND/OR toggle", you must see all three in the browser
|
|
60
156
|
4. **Test interactions** — Click buttons, fill forms, toggle filters, submit data
|
|
@@ -66,7 +162,7 @@ Run these commands before starting the dev server for browser testing.
|
|
|
66
162
|
|
|
67
163
|
Load the **browser-testing** skill for Chrome MCP commands, breakpoint details, and reporting format.
|
|
68
164
|
|
|
69
|
-
## Gate
|
|
165
|
+
## Gate 8: Regression Testing
|
|
70
166
|
|
|
71
167
|
New features must not break existing functionality:
|
|
72
168
|
|
|
@@ -75,7 +171,7 @@ New features must not break existing functionality:
|
|
|
75
171
|
3. **Verify navigation** — Ensure routing, links, and back-button behavior still work
|
|
76
172
|
4. **Check shared components** — If a component from a shared library was modified, test it in all apps that consume it
|
|
77
173
|
|
|
78
|
-
## Gate
|
|
174
|
+
## Gate 9: Panel Review (High-Stakes Only)
|
|
79
175
|
|
|
80
176
|
Use the **panel-majority-vote** skill for:
|
|
81
177
|
|
|
@@ -86,16 +182,50 @@ Use the **panel-majority-vote** skill for:
|
|
|
86
182
|
|
|
87
183
|
If the panel returns BLOCK, extract MUST-FIX items, re-delegate to the same agent, and re-run the panel. Never skip, never halt. Max 3 attempts, then escalate to Architect.
|
|
88
184
|
|
|
185
|
+
## Gate 10: Final Smoke Test (Feature-Level)
|
|
186
|
+
|
|
187
|
+
> Runs once after ALL tasks in a feature are Done — not per-task.
|
|
188
|
+
|
|
189
|
+
Individual tasks pass gates 1–9 independently. But the combined result may have integration issues that per-task testing misses. This gate verifies the feature as a cohesive unit.
|
|
190
|
+
|
|
191
|
+
### Steps
|
|
192
|
+
|
|
193
|
+
1. **Full build** — Build all affected projects from clean state (not incremental)
|
|
194
|
+
2. **Full test suite** — Run tests across all projects that consumed any changed files
|
|
195
|
+
3. **End-to-end browser walkthrough** — Navigate the complete user flow from start to finish:
|
|
196
|
+
- Verify all states: loading, empty, populated, error, partial
|
|
197
|
+
- Test every state transition end-to-end (not just individual screens)
|
|
198
|
+
- Confirm data flows correctly between pages/components
|
|
199
|
+
- Test the happy path AND at least one error path
|
|
200
|
+
4. **Cross-task integration check** — Verify that outputs from different tasks (e.g., DB migration + component + page) compose correctly
|
|
201
|
+
5. **Smoke test at all breakpoints** — If the feature has UI, one final responsive sweep
|
|
202
|
+
|
|
203
|
+
### When to skip
|
|
204
|
+
|
|
205
|
+
- Non-UI features with comprehensive test coverage (e.g., pure backend/data pipeline work where tests verify integration)
|
|
206
|
+
- Single-task features (Gate 8 already covers regression)
|
|
207
|
+
|
|
208
|
+
### On failure
|
|
209
|
+
|
|
210
|
+
Re-delegate the specific failing integration point to the agent responsible for that layer. Do NOT re-run the entire feature implementation.
|
|
211
|
+
|
|
212
|
+
---
|
|
213
|
+
|
|
89
214
|
## Universal Completion Checklist
|
|
90
215
|
|
|
91
216
|
Use this checklist for any orchestration workflow:
|
|
92
217
|
|
|
93
|
-
- [ ]
|
|
94
|
-
- [ ]
|
|
95
|
-
- [ ]
|
|
96
|
-
- [ ]
|
|
218
|
+
- [ ] **No secrets in diff** (Gate 1)
|
|
219
|
+
- [ ] Lint, test, and build pass for all affected projects (Gate 2)
|
|
220
|
+
- [ ] Blast radius assessed — scope is expected (Gate 3)
|
|
221
|
+
- [ ] Dependency audit passed if packages changed (Gate 4)
|
|
222
|
+
- [ ] **Fast review passed** (mandatory — load **fast-review** skill) (Gate 5)
|
|
223
|
+
- [ ] Dev server started with **clean cache** (Gate 6)
|
|
224
|
+
- [ ] UI changes verified in Chrome with screenshots at all breakpoints (Gate 7)
|
|
97
225
|
- [ ] Every acceptance criteria item visually confirmed — not just "page loads"
|
|
98
|
-
- [ ] No regressions in adjacent functionality
|
|
226
|
+
- [ ] No regressions in adjacent functionality (Gate 8)
|
|
227
|
+
- [ ] Panel review passed for high-stakes changes (Gate 9)
|
|
228
|
+
- [ ] **Final smoke test passed** for multi-task features (Gate 10)
|
|
99
229
|
- [ ] Shared code changes tested across all consuming apps
|
|
100
230
|
- [ ] No duplicated code — shared logic extracted to libraries
|
|
101
231
|
- [ ] Lessons learned captured if any retries occurred
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"servers": {
|
|
3
|
-
"Sanity": {
|
|
4
|
-
"url": "https://mcp.sanity.io",
|
|
5
|
-
"type": "http"
|
|
6
|
-
},
|
|
7
|
-
"Contentful": {
|
|
8
|
-
"command": "npx",
|
|
9
|
-
"args": ["-y", "@contentful/mcp-server"],
|
|
10
|
-
"type": "stdio"
|
|
11
|
-
},
|
|
12
|
-
"Strapi": {
|
|
13
|
-
"command": "npx",
|
|
14
|
-
"args": ["-y", "strapi-mcp"],
|
|
15
|
-
"type": "stdio"
|
|
16
|
-
},
|
|
17
|
-
"Vercel": {
|
|
18
|
-
"url": "https://mcp.vercel.com",
|
|
19
|
-
"type": "http"
|
|
20
|
-
},
|
|
21
|
-
"Supabase": {
|
|
22
|
-
"type": "http",
|
|
23
|
-
"url": "https://mcp.supabase.com/mcp"
|
|
24
|
-
},
|
|
25
|
-
"Convex": {
|
|
26
|
-
"command": "npx",
|
|
27
|
-
"args": ["-y", "convex@latest", "mcp", "start"],
|
|
28
|
-
"type": "stdio"
|
|
29
|
-
},
|
|
30
|
-
"chrome-devtools": {
|
|
31
|
-
"command": "npx",
|
|
32
|
-
"args": ["-y", "chrome-devtools-mcp@latest"],
|
|
33
|
-
"type": "stdio"
|
|
34
|
-
},
|
|
35
|
-
"Linear": {
|
|
36
|
-
"type": "stdio",
|
|
37
|
-
"command": "npx",
|
|
38
|
-
"args": [
|
|
39
|
-
"-y",
|
|
40
|
-
"@mseep/linear-mcp"
|
|
41
|
-
],
|
|
42
|
-
"envFile": "${workspaceFolder}/.env"
|
|
43
|
-
},
|
|
44
|
-
"Jira": {
|
|
45
|
-
"url": "https://mcp.atlassian.com/v1/mcp",
|
|
46
|
-
"type": "http"
|
|
47
|
-
},
|
|
48
|
-
"Slack": {
|
|
49
|
-
"type": "stdio",
|
|
50
|
-
"command": "npx",
|
|
51
|
-
"args": ["-y", "@kazuph/mcp-slack"],
|
|
52
|
-
"envFile": "${workspaceFolder}/.env",
|
|
53
|
-
"env": {
|
|
54
|
-
"SLACK_MCP_ADD_MESSAGE_TOOL": "true"
|
|
55
|
-
}
|
|
56
|
-
},
|
|
57
|
-
"Teams": {
|
|
58
|
-
"type": "http",
|
|
59
|
-
"url": "https://agent365.svc.cloud.microsoft/agents/tenants/${input:tenant_id}/servers/mcp_TeamsServer"
|
|
60
|
-
}
|
|
61
|
-
},
|
|
62
|
-
"inputs": [
|
|
63
|
-
{
|
|
64
|
-
"id": "tenant_id",
|
|
65
|
-
"type": "promptString",
|
|
66
|
-
"description": "Microsoft Entra tenant ID (GUID)"
|
|
67
|
-
}
|
|
68
|
-
]
|
|
69
|
-
}
|