@polymorphism-tech/morph-spec 4.8.19 → 4.10.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 (214) hide show
  1. package/CLAUDE.md +21 -0
  2. package/README.md +2 -2
  3. package/bin/morph-spec.js +44 -55
  4. package/bin/task-manager.js +133 -20
  5. package/bin/validate.js +67 -33
  6. package/claude-plugin.json +1 -1
  7. package/docs/CHEATSHEET.md +201 -203
  8. package/docs/QUICKSTART.md +2 -2
  9. package/framework/CLAUDE.md +99 -77
  10. package/framework/agents.json +734 -182
  11. package/framework/commands/commit.md +166 -0
  12. package/framework/commands/morph-apply.md +13 -2
  13. package/framework/commands/morph-archive.md +8 -2
  14. package/framework/commands/morph-infra.md +6 -0
  15. package/framework/commands/morph-preflight.md +6 -0
  16. package/framework/commands/morph-proposal.md +56 -7
  17. package/framework/commands/morph-status.md +6 -0
  18. package/framework/commands/morph-troubleshoot.md +6 -0
  19. package/framework/hooks/claude-code/notification/approval-reminder.js +3 -2
  20. package/framework/hooks/claude-code/post-tool-use/context-refresh.js +1 -1
  21. package/framework/hooks/claude-code/post-tool-use/dispatch.js +155 -32
  22. package/framework/hooks/claude-code/post-tool-use/skill-reminder.js +78 -0
  23. package/framework/hooks/claude-code/post-tool-use/validator-feedback.js +8 -17
  24. package/framework/hooks/claude-code/pre-compact/save-morph-context.js +16 -3
  25. package/framework/hooks/claude-code/pre-tool-use/enforce-phase-writes.js +4 -3
  26. package/framework/hooks/claude-code/pre-tool-use/protect-spec-files.js +4 -3
  27. package/framework/hooks/claude-code/pre-tool-use/task-tracking-guard.js +60 -0
  28. package/framework/hooks/claude-code/session-start/inject-morph-context.js +124 -2
  29. package/framework/hooks/claude-code/session-start/post-compact-restore.js +41 -0
  30. package/framework/hooks/claude-code/statusline.py +76 -30
  31. package/framework/hooks/claude-code/stop/validate-completion.js +2 -15
  32. package/framework/hooks/claude-code/user-prompt/enrich-prompt.js +23 -5
  33. package/framework/hooks/claude-code/user-prompt/set-terminal-title.js +14 -6
  34. package/framework/hooks/shared/activity-logger.js +0 -24
  35. package/framework/hooks/shared/compact-restore.js +100 -0
  36. package/framework/hooks/shared/dispatch-helpers.js +116 -0
  37. package/framework/hooks/shared/phase-utils.js +12 -5
  38. package/framework/hooks/shared/skill-reminder-helpers.js +79 -0
  39. package/framework/hooks/shared/stale-task-reset.js +57 -0
  40. package/framework/hooks/shared/state-reader.js +29 -5
  41. package/framework/hooks/shared/worktree-helpers.js +53 -0
  42. package/framework/phases.json +69 -14
  43. package/framework/rules/morph-workflow.md +88 -86
  44. package/framework/skills/level-0-meta/mcp-registry.json +86 -51
  45. package/framework/skills/level-0-meta/{brainstorming → morph-brainstorming}/SKILL.md +14 -17
  46. package/framework/skills/level-0-meta/morph-checklist/SKILL.md +2 -2
  47. package/framework/skills/level-0-meta/{code-review → morph-code-review}/SKILL.md +2 -2
  48. package/framework/skills/level-0-meta/{code-review-nextjs → morph-code-review-nextjs}/SKILL.md +163 -163
  49. package/framework/skills/level-0-meta/{frontend-review → morph-frontend-review}/SKILL.md +9 -9
  50. package/framework/skills/level-0-meta/morph-init/SKILL.md +77 -12
  51. package/framework/skills/level-0-meta/{post-implementation → morph-post-implementation}/SKILL.md +62 -15
  52. package/framework/skills/level-0-meta/morph-replicate/SKILL.md +5 -5
  53. package/framework/skills/level-0-meta/morph-replicate/references/blazor-html-mapping.md +1 -1
  54. package/framework/skills/level-0-meta/{simulation-checklist → morph-simulation-checklist}/SKILL.md +1 -1
  55. package/framework/skills/level-0-meta/{terminal-title → morph-terminal-title}/SKILL.md +2 -2
  56. package/framework/skills/level-0-meta/{tool-usage-guide → morph-tool-usage-guide}/SKILL.md +3 -4
  57. package/framework/skills/level-0-meta/{tool-usage-guide → morph-tool-usage-guide}/references/tools-per-phase.md +7 -7
  58. package/framework/skills/level-0-meta/{verification-before-completion → morph-verification-before-completion}/SKILL.md +2 -2
  59. package/framework/skills/level-0-meta/{verification-before-completion → morph-verification-before-completion}/scripts/check-phase-outputs.mjs +2 -2
  60. package/framework/skills/level-1-workflows/morph-phase-clarify/SKILL.md +238 -0
  61. package/framework/skills/level-1-workflows/{phase-codebase-analysis → morph-phase-codebase-analysis}/SKILL.md +3 -3
  62. package/framework/skills/level-1-workflows/morph-phase-design/SKILL.md +507 -0
  63. package/framework/skills/level-1-workflows/{phase-implement → morph-phase-implement}/SKILL.md +168 -27
  64. package/framework/skills/level-1-workflows/morph-phase-implement/prompts/code-quality-reviewer-prompt.md +50 -0
  65. package/framework/skills/level-1-workflows/morph-phase-implement/prompts/implementer-prompt.md +45 -0
  66. package/framework/skills/level-1-workflows/morph-phase-implement/prompts/spec-reviewer-prompt.md +47 -0
  67. package/framework/skills/level-1-workflows/morph-phase-plan/SKILL.md +254 -0
  68. package/framework/skills/level-1-workflows/{phase-setup → morph-phase-setup}/SKILL.md +50 -3
  69. package/framework/skills/level-1-workflows/{phase-tasks → morph-phase-tasks}/SKILL.md +48 -11
  70. package/framework/skills/level-1-workflows/{phase-tasks → morph-phase-tasks}/scripts/validate-tasks.mjs +3 -3
  71. package/framework/skills/level-1-workflows/{phase-uiux → morph-phase-uiux}/SKILL.md +46 -11
  72. package/framework/skills/level-1-workflows/morph-scope-escalation/SKILL.md +97 -0
  73. package/framework/standards/STANDARDS.json +640 -88
  74. package/framework/standards/infrastructure/vercel/vercel-database.md +106 -0
  75. package/framework/standards/integration/mcp/mcp-tools.md +25 -7
  76. package/framework/templates/REGISTRY.json +1825 -1909
  77. package/framework/templates/context/CONTEXT-FEATURE.md +276 -276
  78. package/framework/templates/docs/onboarding.md +3 -7
  79. package/package.json +2 -7
  80. package/src/commands/agents/dispatch-agents.js +104 -6
  81. package/src/commands/mcp/mcp-setup.js +39 -2
  82. package/src/commands/phase/phase-reset.js +74 -0
  83. package/src/commands/project/doctor.js +34 -51
  84. package/src/commands/project/init.js +1 -1
  85. package/src/commands/project/status.js +2 -2
  86. package/src/commands/project/update.js +381 -365
  87. package/src/commands/project/worktree.js +154 -0
  88. package/src/commands/scope/escalate.js +215 -0
  89. package/src/commands/state/advance-phase.js +132 -68
  90. package/src/commands/state/approve.js +2 -2
  91. package/src/commands/state/index.js +7 -8
  92. package/src/commands/state/phase-runner.js +1 -1
  93. package/src/commands/state/state.js +61 -6
  94. package/src/commands/task/expand.js +100 -0
  95. package/src/commands/tasks/task.js +78 -99
  96. package/src/commands/templates/template-render.js +93 -173
  97. package/src/commands/trust/trust.js +26 -21
  98. package/src/core/paths/output-schema.js +19 -3
  99. package/src/core/state/phase-state-machine.js +7 -4
  100. package/src/core/state/state-manager.js +32 -57
  101. package/src/core/workflows/workflow-detector.js +9 -87
  102. package/src/lib/detectors/claude-config-detector.js +93 -347
  103. package/src/lib/detectors/design-system-detector.js +189 -189
  104. package/src/lib/detectors/index.js +155 -57
  105. package/src/lib/generators/context-generator.js +2 -2
  106. package/src/lib/installers/mcp-installer.js +37 -5
  107. package/src/lib/phase-chain/phase-validator.js +336 -0
  108. package/src/lib/scope/impact-analyzer.js +106 -0
  109. package/src/lib/stack/stack-profile.js +88 -0
  110. package/src/lib/tasks/task-classifier.js +16 -0
  111. package/src/lib/tasks/task-parser.js +1 -1
  112. package/src/lib/tasks/test-runner.js +77 -0
  113. package/src/lib/trust/trust-manager.js +32 -144
  114. package/src/lib/validators/shared/emit-validator-dispatch.js +64 -0
  115. package/src/lib/validators/spec-validator.js +58 -4
  116. package/src/lib/validators/validation-runner.js +23 -11
  117. package/src/scripts/setup-infra.js +255 -224
  118. package/src/utils/agents-installer.js +34 -14
  119. package/src/utils/banner.js +1 -1
  120. package/src/utils/claude-settings-manager.js +1 -1
  121. package/src/utils/file-copier.js +1 -1
  122. package/src/utils/hooks-installer.js +272 -8
  123. package/framework/hooks/dev/check-sync-health.js +0 -117
  124. package/framework/hooks/dev/guard-version-numbers.js +0 -57
  125. package/framework/hooks/dev/sync-standards-registry.js +0 -60
  126. package/framework/hooks/dev/sync-template-registry.js +0 -60
  127. package/framework/hooks/dev/validate-skill-format.js +0 -70
  128. package/framework/hooks/dev/validate-standard-format.js +0 -73
  129. package/framework/skills/level-1-workflows/phase-clarify/SKILL.md +0 -190
  130. package/framework/skills/level-1-workflows/phase-design/SKILL.md +0 -366
  131. package/framework/templates/meta-prompts/hops/hop-retry.md +0 -78
  132. package/framework/templates/meta-prompts/hops/hop-validation.md +0 -97
  133. package/framework/templates/meta-prompts/hops/hop-wrapper.md +0 -36
  134. package/framework/workflows/configs/design-impl.json +0 -49
  135. package/framework/workflows/configs/express.json +0 -45
  136. package/framework/workflows/configs/fast-track.json +0 -42
  137. package/framework/workflows/configs/full-morph.json +0 -79
  138. package/framework/workflows/configs/fusion.json +0 -39
  139. package/framework/workflows/configs/long-running.json +0 -33
  140. package/framework/workflows/configs/spec-only.json +0 -43
  141. package/framework/workflows/configs/ui-refresh.json +0 -49
  142. package/framework/workflows/configs/zero-touch.json +0 -82
  143. package/src/commands/project/index.js +0 -8
  144. package/src/commands/project/monitor.js +0 -295
  145. package/src/commands/project/tutorial.js +0 -115
  146. package/src/commands/state/validate-phase.js +0 -238
  147. package/src/commands/templates/generate-contracts.js +0 -445
  148. package/src/core/index.js +0 -10
  149. package/src/core/orchestrator.js +0 -171
  150. package/src/core/registry/command-registry.js +0 -28
  151. package/src/core/registry/index.js +0 -8
  152. package/src/core/registry/validator-registry.js +0 -204
  153. package/src/core/state/index.js +0 -8
  154. package/src/core/templates/index.js +0 -9
  155. package/src/core/templates/template-data-sources.js +0 -325
  156. package/src/core/templates/template-validator.js +0 -296
  157. package/src/core/workflows/index.js +0 -7
  158. package/src/generator/config-generator.js +0 -206
  159. package/src/generator/templates/config.json.template +0 -40
  160. package/src/generator/templates/project.md.template +0 -67
  161. package/src/lib/agents/micro-agent-factory.js +0 -161
  162. package/src/lib/analysis/complexity-analyzer.js +0 -441
  163. package/src/lib/analysis/index.js +0 -7
  164. package/src/lib/analytics/analytics-engine.js +0 -345
  165. package/src/lib/checkpoints/checkpoint-hooks.js +0 -298
  166. package/src/lib/checkpoints/index.js +0 -7
  167. package/src/lib/context/context-bundler.js +0 -241
  168. package/src/lib/context/context-optimizer.js +0 -212
  169. package/src/lib/context/context-tracker.js +0 -273
  170. package/src/lib/context/core-four-tracker.js +0 -201
  171. package/src/lib/context/mcp-optimizer.js +0 -200
  172. package/src/lib/detectors/config-detector.js +0 -223
  173. package/src/lib/detectors/standards-generator.js +0 -335
  174. package/src/lib/detectors/structure-detector.js +0 -275
  175. package/src/lib/execution/fusion-executor.js +0 -304
  176. package/src/lib/execution/parallel-executor.js +0 -270
  177. package/src/lib/hooks/stop-hook-executor.js +0 -286
  178. package/src/lib/hops/hop-composer.js +0 -221
  179. package/src/lib/monitor/agent-resolver.js +0 -144
  180. package/src/lib/monitor/renderer.js +0 -230
  181. package/src/lib/orchestration/index.js +0 -7
  182. package/src/lib/orchestration/team-orchestrator.js +0 -404
  183. package/src/lib/phase-chain/eligibility-checker.js +0 -243
  184. package/src/lib/threads/thread-coordinator.js +0 -238
  185. package/src/lib/threads/thread-manager.js +0 -317
  186. package/src/lib/tracking/artifact-trail.js +0 -202
  187. package/src/sanitizer/context-sanitizer.js +0 -221
  188. package/src/sanitizer/patterns.js +0 -163
  189. package/src/scanner/project-scanner.js +0 -242
  190. package/src/ui/diff-display.js +0 -91
  191. package/src/ui/interactive-wizard.js +0 -96
  192. package/src/ui/user-review.js +0 -211
  193. package/src/ui/wizard-questions.js +0 -188
  194. package/src/utils/color-utils.js +0 -70
  195. package/src/utils/process-handler.js +0 -97
  196. package/src/writer/file-writer.js +0 -86
  197. /package/framework/skills/level-0-meta/{brainstorming → morph-brainstorming}/references/proposal-example.md +0 -0
  198. /package/framework/skills/level-0-meta/{code-review → morph-code-review}/references/review-example.md +0 -0
  199. /package/framework/skills/level-0-meta/{code-review → morph-code-review}/references/review-guidelines.md +0 -0
  200. /package/framework/skills/level-0-meta/{code-review → morph-code-review}/scripts/scan-csharp.mjs +0 -0
  201. /package/framework/skills/level-0-meta/{code-review-nextjs → morph-code-review-nextjs}/references/review-example-nextjs.md +0 -0
  202. /package/framework/skills/level-0-meta/{code-review-nextjs → morph-code-review-nextjs}/scripts/scan-nextjs.mjs +0 -0
  203. /package/framework/skills/level-0-meta/{frontend-review → morph-frontend-review}/scripts/scan-accessibility.mjs +0 -0
  204. /package/framework/skills/level-0-meta/{post-implementation → morph-post-implementation}/scripts/detect-dev-server.mjs +0 -0
  205. /package/framework/skills/level-0-meta/{post-implementation → morph-post-implementation}/scripts/detect-stack.mjs +0 -0
  206. /package/framework/skills/level-0-meta/{terminal-title → morph-terminal-title}/scripts/set_title.sh +0 -0
  207. /package/framework/skills/level-1-workflows/{phase-clarify → morph-phase-clarify}/references/clarifications-example.md +0 -0
  208. /package/framework/skills/level-1-workflows/{phase-design → morph-phase-design}/references/architecture-analysis-guide.md +0 -0
  209. /package/framework/skills/level-1-workflows/{phase-design → morph-phase-design}/references/spec-authoring-guide.md +0 -0
  210. /package/framework/skills/level-1-workflows/{phase-design → morph-phase-design}/references/spec-example.md +0 -0
  211. /package/framework/skills/level-1-workflows/{phase-implement → morph-phase-implement}/references/recap-example.md +0 -0
  212. /package/framework/skills/level-1-workflows/{phase-implement → morph-phase-implement}/references/vsa-implementation-guide.md +0 -0
  213. /package/framework/skills/level-1-workflows/{phase-tasks → morph-phase-tasks}/references/task-planning-patterns.md +0 -0
  214. /package/framework/skills/level-1-workflows/{phase-tasks → morph-phase-tasks}/references/tasks-example.md +0 -0
@@ -0,0 +1,106 @@
1
+ # Vercel Deployment — Database Standard
2
+
3
+ > **Scope:** nextjs-vercel
4
+ > **Layer:** 1 (always-on for Vercel-deployed Next.js)
5
+ > **Keywords:** vercel, neon, planetscale, serverless database, serverless postgres, deploy nextjs
6
+ > **Load When:** deployment target is Vercel with Next.js stack
7
+
8
+ ---
9
+
10
+ ## Rule: Vercel Requires a Serverless Database
11
+
12
+ **NEVER** use a traditional long-lived database connection pool (PostgreSQL TCP, MySQL TCP) with Vercel.
13
+ Vercel functions are ephemeral and stateless — each invocation may spawn a fresh process.
14
+ A persistent connection pool (e.g., EF Core + plain Npgsql TCP) will exhaust database connection limits within minutes under moderate load.
15
+
16
+ **ALWAYS** use a **serverless-compatible** database when deploying to Vercel.
17
+
18
+ ---
19
+
20
+ ## Approved Serverless Databases
21
+
22
+ | Provider | Type | Connection mode | Notes |
23
+ |----------|------|-----------------|-------|
24
+ | **Neon** | PostgreSQL (serverless) | HTTP (`@neondatabase/serverless`) or pooled TCP via PgBouncer | First choice for SQL |
25
+ | **PlanetScale** | MySQL-compatible (serverless) | HTTP driver (`@planetscale/database`) | Good for MySQL ecosystems |
26
+ | **Supabase** | PostgreSQL + PgBouncer | Pooled TCP (transaction mode) or REST | Full BaaS option |
27
+ | **Turso** | SQLite (distributed) | HTTP (`@libsql/client`) | Lightweight, edge-friendly |
28
+
29
+ ---
30
+
31
+ ## Implementation: Neon (Recommended)
32
+
33
+ ```ts
34
+ // lib/db.ts
35
+ import { neon } from '@neondatabase/serverless';
36
+
37
+ const sql = neon(process.env.DATABASE_URL!);
38
+ export default sql;
39
+ ```
40
+
41
+ ```ts
42
+ // Example: API Route (app/api/items/route.ts)
43
+ import sql from '@/lib/db';
44
+
45
+ export async function GET() {
46
+ const items = await sql`SELECT * FROM items LIMIT 50`;
47
+ return Response.json(items);
48
+ }
49
+ ```
50
+
51
+ ### Environment variable
52
+ ```
53
+ DATABASE_URL=postgresql://user:pass@ep-xxx.neon.tech/dbname?sslmode=require
54
+ ```
55
+
56
+ ---
57
+
58
+ ## Implementation: Supabase + PgBouncer (Transaction Mode)
59
+
60
+ Use the **port 6543** connection string (PgBouncer, transaction pooling):
61
+
62
+ ```
63
+ DATABASE_URL=postgresql://user:pass@db.xxx.supabase.co:6543/postgres?pgbouncer=true&connection_limit=1
64
+ ```
65
+
66
+ If using an ORM (Prisma/Drizzle), set `connection_limit=1` to avoid pool saturation.
67
+
68
+ ---
69
+
70
+ ## Anti-patterns — NEVER use with Vercel
71
+
72
+ ```ts
73
+ // WRONG: plain Npgsql/pg pool without serverless adapter
74
+ import { Pool } from 'pg';
75
+ const pool = new Pool({ connectionString: process.env.DATABASE_URL });
76
+ // → Leaks connections on every cold start
77
+
78
+ // WRONG: EF Core (dotnet) TCP pool behind a Vercel-deployed Next.js API route
79
+ // → Not applicable (EF Core is .NET), but calling a .NET API that pools
80
+ // connections is fine as long as the .NET side runs on a persistent server
81
+ ```
82
+
83
+ ---
84
+
85
+ ## Decision Tree: Choose Your DB Tier
86
+
87
+ ```
88
+ Deploying to Vercel?
89
+ └── YES → Use serverless DB
90
+ ├── Need SQL + PostGIS/pgvector? → Neon
91
+ ├── Need full BaaS (auth, storage, RLS)? → Supabase
92
+ ├── MySQL ecosystem? → PlanetScale
93
+ └── Edge-only, lightweight? → Turso
94
+ └── NO (EasyPanel, Railway, Render, Azure Container Apps)
95
+ └── Any PostgreSQL with connection pool is fine
96
+ ```
97
+
98
+ ---
99
+
100
+ ## Validator Check (design phase)
101
+
102
+ During `phase-design`, the standards agent must verify:
103
+
104
+ - `config.deployment.target === 'vercel'` → enforce serverless DB selection
105
+ - If `database.provider` is missing or is `postgresql-tcp`, flag as **BLOCKING** issue
106
+ - Add to `decisions.md`: "Database must be serverless-compatible (Vercel constraint)"
@@ -49,15 +49,10 @@ const repo = await mcp__github__get_repo();
49
49
 
50
50
  | MCP | Use Case | Example |
51
51
  |-----|----------|---------|
52
- | **Figma** | Extract design tokens, components | `mcp__figma__get_file({ fileKey })` |
53
52
  | **Playwright** | Navigate, screenshot, inspect live pages | `mcp__playwright__browser_navigate({ url })` |
54
53
  | **Context7** | Component library documentation | `mcp__context7__query_docs({ libraryId, query })` |
55
54
 
56
55
  ```javascript
57
- // Get design tokens from Figma
58
- const file = await mcp__figma__get_file({ fileKey: "abc123" });
59
- // → colors, typography, spacing from design file
60
-
61
56
  // Screenshot existing app for design reference
62
57
  await mcp__playwright__browser_navigate({ url: "https://app.example.com/dashboard" });
63
58
  const screenshot = await mcp__playwright__browser_take_screenshot();
@@ -180,6 +175,7 @@ for (const task of tasks) {
180
175
  | **GitHub** | Create PR, push branches | `mcp__github__create_pull_request()` |
181
176
  | **Context7** | Look up API usage during coding | `mcp__context7__query_docs()` |
182
177
  | **Playwright** | Smoke test deployed features, verify UI | `mcp__playwright__browser_navigate()` |
178
+ | **Vercel** | Deploy, check logs, manage env vars | `mcp__vercel__list_projects()` |
183
179
  | **Azure** | Provision resources, check deployment status | Provider-specific |
184
180
  | **Docker** | Build images, manage containers | Provider-specific |
185
181
 
@@ -214,7 +210,25 @@ const logs = await mcp__playwright__browser_console_messages();
214
210
  // Screenshot for recap.md documentation
215
211
  const screenshot = await mcp__playwright__browser_take_screenshot();
216
212
 
217
- // Fallback: Bash for migrations, gh CLI for PRs
213
+ // === VERCEL (Deployment & Environment) ===
214
+
215
+ // List projects
216
+ const projects = await mcp__vercel__list_projects();
217
+
218
+ // Check deployment status and logs
219
+ const deployments = await mcp__vercel__get_deployments({ projectId: 'my-project' });
220
+ const logs = await mcp__vercel__get_deployment_logs({ deploymentId: deployments[0].uid });
221
+
222
+ // Manage environment variables
223
+ await mcp__vercel__manage_env_vars({
224
+ projectId: 'my-project',
225
+ action: 'set',
226
+ key: 'DATABASE_URL',
227
+ value: process.env.DATABASE_URL,
228
+ target: ['production', 'preview']
229
+ });
230
+
231
+ // Fallback: Bash for migrations, gh CLI for PRs, vercel CLI for deployments
218
232
  ```
219
233
 
220
234
  ---
@@ -225,7 +239,6 @@ const screenshot = await mcp__playwright__browser_take_screenshot();
225
239
  |------|----------|--------------------|
226
240
  | Database schema | Supabase/DB MCP | Grep queries + Read types |
227
241
  | Repo metadata | GitHub MCP | Bash `gh` CLI |
228
- | Design tokens | Figma MCP | Read CSS/SCSS variables |
229
242
  | Library docs | Context7 | WebSearch + WebFetch |
230
243
  | Live page preview | Playwright MCP | WebFetch URL |
231
244
  | Page interaction (click, type, navigate) | Playwright MCP | Manual testing |
@@ -233,6 +246,7 @@ const screenshot = await mcp__playwright__browser_take_screenshot();
233
246
  | Console error checking | Playwright MCP (`browser_console_messages`) | Browser DevTools |
234
247
  | Container ops | Docker MCP | Bash `docker` CLI |
235
248
  | Cloud resources | Azure MCP | Bash `az` CLI |
249
+ | Vercel deployments | Vercel MCP | Bash `vercel` CLI |
236
250
 
237
251
  **Rule:** MCP tools provide structured data (JSON responses). Native tools require manual parsing. **Always prefer MCP when available** — fall back to native when not.
238
252
 
@@ -332,6 +346,8 @@ await mcp__playwright__browser_file_upload({ ref: "s1e20", paths: ["/path/to/fil
332
346
 
333
347
  ### Supabase: Full Schema Discovery
334
348
 
349
+ > **v4 config:** Remote OAuth — `{ "type": "http", "url": "https://mcp.supabase.com/mcp" }`. Authenticate via `/mcp` in Claude Code.
350
+
335
351
  ```javascript
336
352
  // Complete workflow for Phase 2 schema analysis
337
353
  const tables = await mcp__supabase__list_tables();
@@ -362,6 +378,8 @@ const docs = await mcp__context7__query_docs({
362
378
 
363
379
  ### GitHub: Code Search Across Repo
364
380
 
381
+ > **v4 config:** Docker — `{ "command": "docker", "args": ["run", "-i", "--rm", "-e", "GITHUB_PERSONAL_ACCESS_TOKEN", "ghcr.io/github/github-mcp-server"] }`. Requires Docker Desktop.
382
+
365
383
  ```javascript
366
384
  // Find patterns in large codebase during Phase 2
367
385
  const results = await mcp__github__search_code({