forge-server 0.1.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/.claude/hooks/worktree-create.sh +64 -0
- package/.claude/hooks/worktree-remove.sh +57 -0
- package/.claude/settings.local.json +29 -0
- package/.forge/knowledge/conventions.yaml +1 -0
- package/.forge/knowledge/decisions.yaml +1 -0
- package/.forge/knowledge/gotchas.yaml +1 -0
- package/.forge/knowledge/patterns.yaml +1 -0
- package/.forge/manifest.yaml +6 -0
- package/CLAUDE.md +144 -0
- package/bin/setup-forge.sh +132 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +553 -0
- package/dist/cli.js.map +1 -0
- package/dist/context/codebase.d.ts +57 -0
- package/dist/context/codebase.d.ts.map +1 -0
- package/dist/context/codebase.js +301 -0
- package/dist/context/codebase.js.map +1 -0
- package/dist/context/injector.d.ts +147 -0
- package/dist/context/injector.d.ts.map +1 -0
- package/dist/context/injector.js +533 -0
- package/dist/context/injector.js.map +1 -0
- package/dist/context/memory.d.ts +32 -0
- package/dist/context/memory.d.ts.map +1 -0
- package/dist/context/memory.js +140 -0
- package/dist/context/memory.js.map +1 -0
- package/dist/context/session-index.d.ts +54 -0
- package/dist/context/session-index.d.ts.map +1 -0
- package/dist/context/session-index.js +265 -0
- package/dist/context/session-index.js.map +1 -0
- package/dist/context/session.d.ts +42 -0
- package/dist/context/session.d.ts.map +1 -0
- package/dist/context/session.js +121 -0
- package/dist/context/session.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +37 -0
- package/dist/index.js.map +1 -0
- package/dist/ingestion/chunker.d.ts +19 -0
- package/dist/ingestion/chunker.d.ts.map +1 -0
- package/dist/ingestion/chunker.js +189 -0
- package/dist/ingestion/chunker.js.map +1 -0
- package/dist/ingestion/embedder.d.ts +45 -0
- package/dist/ingestion/embedder.d.ts.map +1 -0
- package/dist/ingestion/embedder.js +152 -0
- package/dist/ingestion/embedder.js.map +1 -0
- package/dist/ingestion/git-analyzer.d.ts +77 -0
- package/dist/ingestion/git-analyzer.d.ts.map +1 -0
- package/dist/ingestion/git-analyzer.js +437 -0
- package/dist/ingestion/git-analyzer.js.map +1 -0
- package/dist/ingestion/indexer.d.ts +79 -0
- package/dist/ingestion/indexer.d.ts.map +1 -0
- package/dist/ingestion/indexer.js +766 -0
- package/dist/ingestion/indexer.js.map +1 -0
- package/dist/ingestion/markdown-chunker.d.ts +19 -0
- package/dist/ingestion/markdown-chunker.d.ts.map +1 -0
- package/dist/ingestion/markdown-chunker.js +243 -0
- package/dist/ingestion/markdown-chunker.js.map +1 -0
- package/dist/ingestion/markdown-knowledge.d.ts +21 -0
- package/dist/ingestion/markdown-knowledge.d.ts.map +1 -0
- package/dist/ingestion/markdown-knowledge.js +129 -0
- package/dist/ingestion/markdown-knowledge.js.map +1 -0
- package/dist/ingestion/parser.d.ts +20 -0
- package/dist/ingestion/parser.d.ts.map +1 -0
- package/dist/ingestion/parser.js +429 -0
- package/dist/ingestion/parser.js.map +1 -0
- package/dist/ingestion/watcher.d.ts +28 -0
- package/dist/ingestion/watcher.d.ts.map +1 -0
- package/dist/ingestion/watcher.js +147 -0
- package/dist/ingestion/watcher.js.map +1 -0
- package/dist/knowledge/hydrator.d.ts +37 -0
- package/dist/knowledge/hydrator.d.ts.map +1 -0
- package/dist/knowledge/hydrator.js +220 -0
- package/dist/knowledge/hydrator.js.map +1 -0
- package/dist/knowledge/registry.d.ts +129 -0
- package/dist/knowledge/registry.d.ts.map +1 -0
- package/dist/knowledge/registry.js +361 -0
- package/dist/knowledge/registry.js.map +1 -0
- package/dist/knowledge/search.d.ts +114 -0
- package/dist/knowledge/search.d.ts.map +1 -0
- package/dist/knowledge/search.js +428 -0
- package/dist/knowledge/search.js.map +1 -0
- package/dist/knowledge/store.d.ts +76 -0
- package/dist/knowledge/store.d.ts.map +1 -0
- package/dist/knowledge/store.js +230 -0
- package/dist/knowledge/store.js.map +1 -0
- package/dist/learning/confidence.d.ts +30 -0
- package/dist/learning/confidence.d.ts.map +1 -0
- package/dist/learning/confidence.js +165 -0
- package/dist/learning/confidence.js.map +1 -0
- package/dist/learning/patterns.d.ts +52 -0
- package/dist/learning/patterns.d.ts.map +1 -0
- package/dist/learning/patterns.js +290 -0
- package/dist/learning/patterns.js.map +1 -0
- package/dist/learning/trajectory.d.ts +55 -0
- package/dist/learning/trajectory.d.ts.map +1 -0
- package/dist/learning/trajectory.js +200 -0
- package/dist/learning/trajectory.js.map +1 -0
- package/dist/memory/memory-compat.d.ts +100 -0
- package/dist/memory/memory-compat.d.ts.map +1 -0
- package/dist/memory/memory-compat.js +146 -0
- package/dist/memory/memory-compat.js.map +1 -0
- package/dist/memory/observation-store.d.ts +57 -0
- package/dist/memory/observation-store.d.ts.map +1 -0
- package/dist/memory/observation-store.js +154 -0
- package/dist/memory/observation-store.js.map +1 -0
- package/dist/memory/session-tracker.d.ts +81 -0
- package/dist/memory/session-tracker.d.ts.map +1 -0
- package/dist/memory/session-tracker.js +262 -0
- package/dist/memory/session-tracker.js.map +1 -0
- package/dist/pipeline/engine.d.ts +179 -0
- package/dist/pipeline/engine.d.ts.map +1 -0
- package/dist/pipeline/engine.js +691 -0
- package/dist/pipeline/engine.js.map +1 -0
- package/dist/pipeline/events.d.ts +54 -0
- package/dist/pipeline/events.d.ts.map +1 -0
- package/dist/pipeline/events.js +157 -0
- package/dist/pipeline/events.js.map +1 -0
- package/dist/pipeline/parallel.d.ts +83 -0
- package/dist/pipeline/parallel.d.ts.map +1 -0
- package/dist/pipeline/parallel.js +277 -0
- package/dist/pipeline/parallel.js.map +1 -0
- package/dist/pipeline/state-machine.d.ts +65 -0
- package/dist/pipeline/state-machine.d.ts.map +1 -0
- package/dist/pipeline/state-machine.js +176 -0
- package/dist/pipeline/state-machine.js.map +1 -0
- package/dist/query/graph-queries.d.ts +84 -0
- package/dist/query/graph-queries.d.ts.map +1 -0
- package/dist/query/graph-queries.js +216 -0
- package/dist/query/graph-queries.js.map +1 -0
- package/dist/query/hybrid-search.d.ts +34 -0
- package/dist/query/hybrid-search.d.ts.map +1 -0
- package/dist/query/hybrid-search.js +263 -0
- package/dist/query/hybrid-search.js.map +1 -0
- package/dist/query/intent-detector.d.ts +35 -0
- package/dist/query/intent-detector.d.ts.map +1 -0
- package/dist/query/intent-detector.js +115 -0
- package/dist/query/intent-detector.js.map +1 -0
- package/dist/query/ranking.d.ts +57 -0
- package/dist/query/ranking.d.ts.map +1 -0
- package/dist/query/ranking.js +109 -0
- package/dist/query/ranking.js.map +1 -0
- package/dist/server.d.ts +3 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +291 -0
- package/dist/server.js.map +1 -0
- package/dist/storage/falkordb-store.d.ts +73 -0
- package/dist/storage/falkordb-store.d.ts.map +1 -0
- package/dist/storage/falkordb-store.js +346 -0
- package/dist/storage/falkordb-store.js.map +1 -0
- package/dist/storage/file-cache.d.ts +32 -0
- package/dist/storage/file-cache.d.ts.map +1 -0
- package/dist/storage/file-cache.js +115 -0
- package/dist/storage/file-cache.js.map +1 -0
- package/dist/storage/interfaces.d.ts +151 -0
- package/dist/storage/interfaces.d.ts.map +1 -0
- package/dist/storage/interfaces.js +7 -0
- package/dist/storage/interfaces.js.map +1 -0
- package/dist/storage/qdrant-store.d.ts +110 -0
- package/dist/storage/qdrant-store.d.ts.map +1 -0
- package/dist/storage/qdrant-store.js +467 -0
- package/dist/storage/qdrant-store.js.map +1 -0
- package/dist/storage/schema.d.ts +4 -0
- package/dist/storage/schema.d.ts.map +1 -0
- package/dist/storage/schema.js +136 -0
- package/dist/storage/schema.js.map +1 -0
- package/dist/storage/sqlite.d.ts +35 -0
- package/dist/storage/sqlite.d.ts.map +1 -0
- package/dist/storage/sqlite.js +132 -0
- package/dist/storage/sqlite.js.map +1 -0
- package/dist/tools/collaboration-tools.d.ts +111 -0
- package/dist/tools/collaboration-tools.d.ts.map +1 -0
- package/dist/tools/collaboration-tools.js +174 -0
- package/dist/tools/collaboration-tools.js.map +1 -0
- package/dist/tools/context-tools.d.ts +293 -0
- package/dist/tools/context-tools.d.ts.map +1 -0
- package/dist/tools/context-tools.js +437 -0
- package/dist/tools/context-tools.js.map +1 -0
- package/dist/tools/graph-tools.d.ts +129 -0
- package/dist/tools/graph-tools.d.ts.map +1 -0
- package/dist/tools/graph-tools.js +237 -0
- package/dist/tools/graph-tools.js.map +1 -0
- package/dist/tools/ingestion-tools.d.ts +96 -0
- package/dist/tools/ingestion-tools.d.ts.map +1 -0
- package/dist/tools/ingestion-tools.js +90 -0
- package/dist/tools/ingestion-tools.js.map +1 -0
- package/dist/tools/learning-tools.d.ts +168 -0
- package/dist/tools/learning-tools.d.ts.map +1 -0
- package/dist/tools/learning-tools.js +158 -0
- package/dist/tools/learning-tools.js.map +1 -0
- package/dist/tools/memory-tools.d.ts +183 -0
- package/dist/tools/memory-tools.d.ts.map +1 -0
- package/dist/tools/memory-tools.js +197 -0
- package/dist/tools/memory-tools.js.map +1 -0
- package/dist/tools/phase-tools.d.ts +954 -0
- package/dist/tools/phase-tools.d.ts.map +1 -0
- package/dist/tools/phase-tools.js +1215 -0
- package/dist/tools/phase-tools.js.map +1 -0
- package/dist/tools/pipeline-tools.d.ts +140 -0
- package/dist/tools/pipeline-tools.d.ts.map +1 -0
- package/dist/tools/pipeline-tools.js +162 -0
- package/dist/tools/pipeline-tools.js.map +1 -0
- package/dist/tools/registration-tools.d.ts +220 -0
- package/dist/tools/registration-tools.d.ts.map +1 -0
- package/dist/tools/registration-tools.js +391 -0
- package/dist/tools/registration-tools.js.map +1 -0
- package/dist/util/circuit-breaker.d.ts +75 -0
- package/dist/util/circuit-breaker.d.ts.map +1 -0
- package/dist/util/circuit-breaker.js +159 -0
- package/dist/util/circuit-breaker.js.map +1 -0
- package/dist/util/config.d.ts +23 -0
- package/dist/util/config.d.ts.map +1 -0
- package/dist/util/config.js +164 -0
- package/dist/util/config.js.map +1 -0
- package/dist/util/logger.d.ts +13 -0
- package/dist/util/logger.d.ts.map +1 -0
- package/dist/util/logger.js +45 -0
- package/dist/util/logger.js.map +1 -0
- package/dist/util/token-counter.d.ts +24 -0
- package/dist/util/token-counter.d.ts.map +1 -0
- package/dist/util/token-counter.js +48 -0
- package/dist/util/token-counter.js.map +1 -0
- package/dist/util/types.d.ts +525 -0
- package/dist/util/types.d.ts.map +1 -0
- package/dist/util/types.js +5 -0
- package/dist/util/types.js.map +1 -0
- package/docker-compose.yml +20 -0
- package/docs/plans/2026-02-27-swarm-coordination/architecture.md +203 -0
- package/docs/plans/2026-02-27-swarm-coordination/vision.md +57 -0
- package/docs/plans/completed/2026-02-26-forge-plugin-bundling/architecture.md +1 -0
- package/docs/plans/completed/2026-02-26-forge-plugin-bundling/vision.md +300 -0
- package/docs/plans/completed/2026-02-27-forge-swarm-learning/architecture.md +480 -0
- package/docs/plans/completed/2026-02-27-forge-swarm-learning/verification-checklist.md +462 -0
- package/docs/plans/completed/2026-02-27-git-history-atlassian/git-jira-plan.md +181 -0
- package/package.json +39 -0
- package/plugin/.claude-plugin/plugin.json +8 -0
- package/plugin/.mcp.json +15 -0
- package/plugin/README.md +134 -0
- package/plugin/agents/architect.md +367 -0
- package/plugin/agents/backend-specialist.md +263 -0
- package/plugin/agents/brainstormer.md +122 -0
- package/plugin/agents/data-specialist.md +266 -0
- package/plugin/agents/designer.md +408 -0
- package/plugin/agents/frontend-specialist.md +241 -0
- package/plugin/agents/inspector.md +406 -0
- package/plugin/agents/knowledge-keeper.md +443 -0
- package/plugin/agents/platform-engineer.md +326 -0
- package/plugin/agents/product-manager.md +268 -0
- package/plugin/agents/product-owner.md +438 -0
- package/plugin/agents/pulse-checker.md +73 -0
- package/plugin/agents/qa-strategist.md +500 -0
- package/plugin/agents/self-improver.md +310 -0
- package/plugin/agents/strategist.md +360 -0
- package/plugin/agents/supervisor.md +380 -0
- package/plugin/commands/brainstorm.md +25 -0
- package/plugin/commands/forge.md +88 -0
- package/plugin/docs/atlassian-integration.md +110 -0
- package/plugin/docs/workflow.md +126 -0
- package/plugin/skills/agent-development/.skillfish.json +10 -0
- package/plugin/skills/agent-development/SKILL.md +415 -0
- package/plugin/skills/agent-development/examples/agent-creation-prompt.md +238 -0
- package/plugin/skills/agent-development/examples/complete-agent-examples.md +427 -0
- package/plugin/skills/agent-development/references/agent-creation-system-prompt.md +207 -0
- package/plugin/skills/agent-development/references/system-prompt-design.md +411 -0
- package/plugin/skills/agent-development/references/triggering-examples.md +491 -0
- package/plugin/skills/agent-development/scripts/validate-agent.sh +217 -0
- package/plugin/skills/agent-handoff/SKILL.md +335 -0
- package/plugin/skills/anti-stub/SKILL.md +317 -0
- package/plugin/skills/brainstorm/SKILL.md +31 -0
- package/plugin/skills/debugging/SKILL.md +276 -0
- package/plugin/skills/fix/SKILL.md +62 -0
- package/plugin/skills/frontend-design/.skillfish.json +10 -0
- package/plugin/skills/frontend-design/SKILL.md +42 -0
- package/plugin/skills/gotchas/SKILL.md +61 -0
- package/plugin/skills/graph-orchestrator/SKILL.md +38 -0
- package/plugin/skills/history/SKILL.md +58 -0
- package/plugin/skills/impact/SKILL.md +59 -0
- package/plugin/skills/implementation-execution/SKILL.md +291 -0
- package/plugin/skills/index-repo/SKILL.md +55 -0
- package/plugin/skills/interviewing/SKILL.md +225 -0
- package/plugin/skills/knowledge-curation/SKILL.md +393 -0
- package/plugin/skills/learn/SKILL.md +69 -0
- package/plugin/skills/mcp-integration/.skillfish.json +10 -0
- package/plugin/skills/mcp-integration/SKILL.md +554 -0
- package/plugin/skills/mcp-integration/examples/http-server.json +20 -0
- package/plugin/skills/mcp-integration/examples/sse-server.json +19 -0
- package/plugin/skills/mcp-integration/examples/stdio-server.json +26 -0
- package/plugin/skills/mcp-integration/references/authentication.md +549 -0
- package/plugin/skills/mcp-integration/references/server-types.md +536 -0
- package/plugin/skills/mcp-integration/references/tool-usage.md +538 -0
- package/plugin/skills/nestjs/.skillfish.json +10 -0
- package/plugin/skills/nestjs/SKILL.md +669 -0
- package/plugin/skills/nestjs/drizzle-reference.md +1894 -0
- package/plugin/skills/nestjs/reference.md +1447 -0
- package/plugin/skills/nestjs/workflow-optimization.md +229 -0
- package/plugin/skills/parallel-dispatch/SKILL.md +308 -0
- package/plugin/skills/project-discovery/SKILL.md +304 -0
- package/plugin/skills/search/SKILL.md +56 -0
- package/plugin/skills/security-audit/SKILL.md +362 -0
- package/plugin/skills/skill-development/.skillfish.json +10 -0
- package/plugin/skills/skill-development/SKILL.md +637 -0
- package/plugin/skills/skill-development/references/skill-creator-original.md +209 -0
- package/plugin/skills/tdd/SKILL.md +273 -0
- package/plugin/skills/terminal-presentation/SKILL.md +395 -0
- package/plugin/skills/test-strategy/SKILL.md +365 -0
- package/plugin/skills/verification-protocol/SKILL.md +256 -0
- package/plugin/skills/visual-explainer/CHANGELOG.md +97 -0
- package/plugin/skills/visual-explainer/LICENSE +21 -0
- package/plugin/skills/visual-explainer/README.md +137 -0
- package/plugin/skills/visual-explainer/SKILL.md +352 -0
- package/plugin/skills/visual-explainer/banner.png +0 -0
- package/plugin/skills/visual-explainer/package.json +11 -0
- package/plugin/skills/visual-explainer/prompts/diff-review.md +68 -0
- package/plugin/skills/visual-explainer/prompts/fact-check.md +63 -0
- package/plugin/skills/visual-explainer/prompts/generate-slides.md +18 -0
- package/plugin/skills/visual-explainer/prompts/generate-web-diagram.md +10 -0
- package/plugin/skills/visual-explainer/prompts/plan-review.md +86 -0
- package/plugin/skills/visual-explainer/prompts/project-recap.md +61 -0
- package/plugin/skills/visual-explainer/references/css-patterns.md +1188 -0
- package/plugin/skills/visual-explainer/references/libraries.md +470 -0
- package/plugin/skills/visual-explainer/references/responsive-nav.md +212 -0
- package/plugin/skills/visual-explainer/references/slide-patterns.md +1403 -0
- package/plugin/skills/visual-explainer/templates/architecture.html +596 -0
- package/plugin/skills/visual-explainer/templates/data-table.html +540 -0
- package/plugin/skills/visual-explainer/templates/mermaid-flowchart.html +435 -0
- package/plugin/skills/visual-explainer/templates/slide-deck.html +913 -0
- package/src/cli.ts +655 -0
- package/src/context/.gitkeep +0 -0
- package/src/context/codebase.ts +393 -0
- package/src/context/injector.ts +797 -0
- package/src/context/memory.ts +187 -0
- package/src/context/session-index.ts +327 -0
- package/src/context/session.ts +152 -0
- package/src/index.ts +47 -0
- package/src/ingestion/.gitkeep +0 -0
- package/src/ingestion/chunker.ts +277 -0
- package/src/ingestion/embedder.ts +167 -0
- package/src/ingestion/git-analyzer.ts +545 -0
- package/src/ingestion/indexer.ts +984 -0
- package/src/ingestion/markdown-chunker.ts +337 -0
- package/src/ingestion/markdown-knowledge.ts +175 -0
- package/src/ingestion/parser.ts +475 -0
- package/src/ingestion/watcher.ts +182 -0
- package/src/knowledge/.gitkeep +0 -0
- package/src/knowledge/hydrator.ts +246 -0
- package/src/knowledge/registry.ts +463 -0
- package/src/knowledge/search.ts +565 -0
- package/src/knowledge/store.ts +262 -0
- package/src/learning/.gitkeep +0 -0
- package/src/learning/confidence.ts +193 -0
- package/src/learning/patterns.ts +360 -0
- package/src/learning/trajectory.ts +268 -0
- package/src/memory/.gitkeep +0 -0
- package/src/memory/memory-compat.ts +233 -0
- package/src/memory/observation-store.ts +224 -0
- package/src/memory/session-tracker.ts +332 -0
- package/src/pipeline/.gitkeep +0 -0
- package/src/pipeline/engine.ts +1139 -0
- package/src/pipeline/events.ts +253 -0
- package/src/pipeline/parallel.ts +394 -0
- package/src/pipeline/state-machine.ts +199 -0
- package/src/query/.gitkeep +0 -0
- package/src/query/graph-queries.ts +262 -0
- package/src/query/hybrid-search.ts +337 -0
- package/src/query/intent-detector.ts +131 -0
- package/src/query/ranking.ts +161 -0
- package/src/server.ts +352 -0
- package/src/storage/.gitkeep +0 -0
- package/src/storage/falkordb-store.ts +388 -0
- package/src/storage/file-cache.ts +141 -0
- package/src/storage/interfaces.ts +201 -0
- package/src/storage/qdrant-store.ts +557 -0
- package/src/storage/schema.ts +139 -0
- package/src/storage/sqlite.ts +168 -0
- package/src/tools/.gitkeep +0 -0
- package/src/tools/collaboration-tools.ts +208 -0
- package/src/tools/context-tools.ts +493 -0
- package/src/tools/graph-tools.ts +295 -0
- package/src/tools/ingestion-tools.ts +122 -0
- package/src/tools/learning-tools.ts +181 -0
- package/src/tools/memory-tools.ts +234 -0
- package/src/tools/phase-tools.ts +1452 -0
- package/src/tools/pipeline-tools.ts +188 -0
- package/src/tools/registration-tools.ts +450 -0
- package/src/util/.gitkeep +0 -0
- package/src/util/circuit-breaker.ts +193 -0
- package/src/util/config.ts +177 -0
- package/src/util/logger.ts +53 -0
- package/src/util/token-counter.ts +52 -0
- package/src/util/types.ts +710 -0
- package/tests/context/.gitkeep +0 -0
- package/tests/integration/.gitkeep +0 -0
- package/tests/knowledge/.gitkeep +0 -0
- package/tests/learning/.gitkeep +0 -0
- package/tests/pipeline/.gitkeep +0 -0
- package/tests/tools/.gitkeep +0 -0
- package/tsconfig.json +21 -0
- package/vitest.config.ts +10 -0
- package/vscode-extension/.vscodeignore +7 -0
- package/vscode-extension/README.md +43 -0
- package/vscode-extension/out/edge-collector.js +274 -0
- package/vscode-extension/out/edge-collector.js.map +1 -0
- package/vscode-extension/out/extension.js +264 -0
- package/vscode-extension/out/extension.js.map +1 -0
- package/vscode-extension/out/forge-client.js +318 -0
- package/vscode-extension/out/forge-client.js.map +1 -0
- package/vscode-extension/package-lock.json +59 -0
- package/vscode-extension/package.json +71 -0
- package/vscode-extension/src/edge-collector.ts +320 -0
- package/vscode-extension/src/extension.ts +269 -0
- package/vscode-extension/src/forge-client.ts +364 -0
- package/vscode-extension/tsconfig.json +19 -0
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
# NestJS Skill Workflow Optimization Guide
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
This document outlines optimized workflows for building NestJS applications with Drizzle ORM by leveraging parallel execution, subagent delegation, and dependency management strategies.
|
|
6
|
+
|
|
7
|
+
## Key Optimization Principles
|
|
8
|
+
|
|
9
|
+
### 1. Parallel Execution Strategy
|
|
10
|
+
|
|
11
|
+
Tasks that can be executed simultaneously:
|
|
12
|
+
- **Package Installation**: Install NestJS, Drizzle, testing, and development dependencies in parallel
|
|
13
|
+
- **Module Scaffolding**: Create folder structures for multiple modules concurrently
|
|
14
|
+
- **Interface/Type Definition**: Define DTOs and interfaces while setting up database schemas
|
|
15
|
+
- **Test Preparation**: Set up test configuration while writing implementation code
|
|
16
|
+
|
|
17
|
+
### 2. Sequential Dependencies
|
|
18
|
+
|
|
19
|
+
Tasks that must follow a specific order:
|
|
20
|
+
1. **Project Setup**: `npm install → nest new → cd project → install additional packages`
|
|
21
|
+
2. **Database Setup**: `.env → drizzle.config.ts → schema → migrations → database service → repositories`
|
|
22
|
+
3. **Feature Development**: `DTOs → Repository → Service → Controller → Module → Guards`
|
|
23
|
+
4. **Testing**: `Unit tests → Integration tests → E2E tests`
|
|
24
|
+
|
|
25
|
+
## Optimized Workflow Examples
|
|
26
|
+
|
|
27
|
+
### Workflow 1: New NestJS Project with Drizzle ORM
|
|
28
|
+
|
|
29
|
+
```yaml
|
|
30
|
+
Phase 1: Parallel Setup (Agents: 2-3)
|
|
31
|
+
Agent 1: Project Initialization
|
|
32
|
+
- Create NestJS project
|
|
33
|
+
- Install core dependencies
|
|
34
|
+
- Configure TypeScript
|
|
35
|
+
- Set up basic folder structure
|
|
36
|
+
|
|
37
|
+
Agent 2: Database Preparation
|
|
38
|
+
- Install Drizzle packages
|
|
39
|
+
- Configure environment files
|
|
40
|
+
- Set up drizzle.config.ts
|
|
41
|
+
- Prepare database connection
|
|
42
|
+
|
|
43
|
+
Phase 2: Core Configuration (Sequential)
|
|
44
|
+
- Database schema definition
|
|
45
|
+
- Migration generation
|
|
46
|
+
- Database service setup
|
|
47
|
+
|
|
48
|
+
Phase 3: Parallel Feature Development (Agents: 2-4)
|
|
49
|
+
Agent 1: Data Layer
|
|
50
|
+
- Repository implementation
|
|
51
|
+
- Service layer logic
|
|
52
|
+
- Unit tests for data layer
|
|
53
|
+
|
|
54
|
+
Agent 2: API Layer
|
|
55
|
+
- Controller implementation
|
|
56
|
+
- DTOs and validation
|
|
57
|
+
- Route protection
|
|
58
|
+
|
|
59
|
+
Agent 3: Security
|
|
60
|
+
- Authentication setup
|
|
61
|
+
- Guards implementation
|
|
62
|
+
- Security middleware
|
|
63
|
+
|
|
64
|
+
Agent 4: Documentation
|
|
65
|
+
- OpenAPI decorators
|
|
66
|
+
- API documentation
|
|
67
|
+
- README generation
|
|
68
|
+
|
|
69
|
+
Phase 4: Integration & Testing (Parallel)
|
|
70
|
+
- Integration tests
|
|
71
|
+
- E2E test scenarios
|
|
72
|
+
- Performance optimization
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### Workflow 2: Adding New Feature Module
|
|
76
|
+
|
|
77
|
+
```yaml
|
|
78
|
+
Step 1: Parallel Preparation
|
|
79
|
+
- Define feature requirements
|
|
80
|
+
- Create module folder structure
|
|
81
|
+
- Prepare DTOs and interfaces
|
|
82
|
+
- Set up test files
|
|
83
|
+
|
|
84
|
+
Step 2: Data Layer (Database Agent)
|
|
85
|
+
- Create/update schema
|
|
86
|
+
- Generate migrations
|
|
87
|
+
- Implement repository
|
|
88
|
+
- Write repository tests
|
|
89
|
+
|
|
90
|
+
Step 3: Business Logic (Service Agent)
|
|
91
|
+
- Implement service methods
|
|
92
|
+
- Add business validation
|
|
93
|
+
- Handle transactions
|
|
94
|
+
- Write unit tests
|
|
95
|
+
|
|
96
|
+
Step 4: API Layer (Controller Agent)
|
|
97
|
+
- Create controller endpoints
|
|
98
|
+
- Add validation pipes
|
|
99
|
+
- Implement guards
|
|
100
|
+
- Write integration tests
|
|
101
|
+
|
|
102
|
+
Step 5: Security Integration (Security Agent)
|
|
103
|
+
- Add route protection
|
|
104
|
+
- Implement role-based access
|
|
105
|
+
- Add audit logging
|
|
106
|
+
- Security tests
|
|
107
|
+
|
|
108
|
+
Step 6: Documentation (Documentation Agent)
|
|
109
|
+
- Add OpenAPI decorators
|
|
110
|
+
- Update API docs
|
|
111
|
+
- Create examples
|
|
112
|
+
- Review documentation
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
## Subagent Delegation Patterns
|
|
116
|
+
|
|
117
|
+
### When to Delegate to Database Agent
|
|
118
|
+
- Setting up new database connections
|
|
119
|
+
- Complex schema migrations
|
|
120
|
+
- Query optimization
|
|
121
|
+
- Transaction management
|
|
122
|
+
- Database testing setup
|
|
123
|
+
|
|
124
|
+
### When to Delegate to Security Agent
|
|
125
|
+
- Implementing authentication
|
|
126
|
+
- Setting up authorization
|
|
127
|
+
- Security audit requirements
|
|
128
|
+
- OAuth integration
|
|
129
|
+
- Vulnerability fixes
|
|
130
|
+
|
|
131
|
+
### When to Delegate to Testing Agent
|
|
132
|
+
- Comprehensive test suite creation
|
|
133
|
+
- Test infrastructure setup
|
|
134
|
+
- CI/CD test integration
|
|
135
|
+
- Performance testing
|
|
136
|
+
- Test data management
|
|
137
|
+
|
|
138
|
+
## Best Practices for Optimization
|
|
139
|
+
|
|
140
|
+
### 1. Dependency Management
|
|
141
|
+
```typescript
|
|
142
|
+
// Use async configuration for parallel setup
|
|
143
|
+
@Module({
|
|
144
|
+
imports: [
|
|
145
|
+
ConfigModule.forRoot({ isGlobal: true }),
|
|
146
|
+
DatabaseModule,
|
|
147
|
+
AuthModule,
|
|
148
|
+
],
|
|
149
|
+
})
|
|
150
|
+
export class AppModule {}
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
### 2. Modular Architecture
|
|
154
|
+
```typescript
|
|
155
|
+
// Keep modules independent for parallel development
|
|
156
|
+
@Module({
|
|
157
|
+
imports: [DatabaseModule],
|
|
158
|
+
controllers: [UsersController],
|
|
159
|
+
providers: [UsersService, UsersRepository],
|
|
160
|
+
exports: [UsersService],
|
|
161
|
+
})
|
|
162
|
+
export class UsersModule {}
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
### 3. Configuration-Driven Development
|
|
166
|
+
```typescript
|
|
167
|
+
// Enable environment-specific parallel development
|
|
168
|
+
export default () => ({
|
|
169
|
+
database: {
|
|
170
|
+
url: process.env.DATABASE_URL,
|
|
171
|
+
poolSize: parseInt(process.env.DB_POOL_SIZE) || 10,
|
|
172
|
+
},
|
|
173
|
+
features: {
|
|
174
|
+
auth: process.env.ENABLE_AUTH === 'true',
|
|
175
|
+
caching: process.env.ENABLE_CACHE === 'true',
|
|
176
|
+
},
|
|
177
|
+
});
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
### 4. Test-Driven Parallel Development
|
|
181
|
+
```typescript
|
|
182
|
+
// Write tests alongside implementation
|
|
183
|
+
describe('UsersService', () => {
|
|
184
|
+
// Test setup can run in parallel with service implementation
|
|
185
|
+
beforeEach(async () => {
|
|
186
|
+
const module = await Test.createTestingModule({
|
|
187
|
+
providers: [UsersService, MockRepository],
|
|
188
|
+
}).compile();
|
|
189
|
+
});
|
|
190
|
+
});
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
## Performance Optimization Techniques
|
|
194
|
+
|
|
195
|
+
### 1. Database Optimizations
|
|
196
|
+
- Use connection pooling
|
|
197
|
+
- Implement query batching
|
|
198
|
+
- Add proper indexes
|
|
199
|
+
- Use database transactions wisely
|
|
200
|
+
|
|
201
|
+
### 2. API Optimizations
|
|
202
|
+
- Implement caching strategies
|
|
203
|
+
- Use pagination
|
|
204
|
+
- Add compression middleware
|
|
205
|
+
- Optimize serialization
|
|
206
|
+
|
|
207
|
+
### 3. Testing Optimizations
|
|
208
|
+
- Parallel test execution
|
|
209
|
+
- Test database reuse
|
|
210
|
+
- Mock external services
|
|
211
|
+
- Selective test runs
|
|
212
|
+
|
|
213
|
+
## Monitoring and Feedback
|
|
214
|
+
|
|
215
|
+
### 1. Workflow Metrics
|
|
216
|
+
- Track time spent in each phase
|
|
217
|
+
- Measure parallel execution efficiency
|
|
218
|
+
- Monitor bottlenecks
|
|
219
|
+
- Collect agent performance data
|
|
220
|
+
|
|
221
|
+
### 2. Quality Gates
|
|
222
|
+
- Code reviews before merging
|
|
223
|
+
- Automated testing
|
|
224
|
+
- Security scans
|
|
225
|
+
- Performance benchmarks
|
|
226
|
+
|
|
227
|
+
## Conclusion
|
|
228
|
+
|
|
229
|
+
By following these optimized workflows and leveraging specialized subagents, NestJS development with Drizzle ORM can be significantly accelerated while maintaining high code quality and architectural integrity. The key is understanding task dependencies, maximizing parallel execution, and delegating specialized work to expert subagents.
|
|
@@ -0,0 +1,308 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: parallel-dispatch
|
|
3
|
+
description: >
|
|
4
|
+
This skill should be used when dispatching multiple implementation agents in parallel for
|
|
5
|
+
concurrent work. Used by the strategist and architect agents to coordinate horizontal scaling
|
|
6
|
+
of frontend, backend, data, and platform specialists.
|
|
7
|
+
user-invocable: false
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Parallel Dispatch Skill
|
|
11
|
+
|
|
12
|
+
## When to Parallelize
|
|
13
|
+
|
|
14
|
+
Parallel dispatch is appropriate when work can be divided into independent units that do not share mutable state, do not depend on each other's outputs, and do not modify the same files. Recognize these opportunities:
|
|
15
|
+
|
|
16
|
+
- **Independent modules**: two NestJS modules that share no providers, no database tables, and no imports between them. Example: a `notifications` module and a `billing` module can be built in parallel.
|
|
17
|
+
- **Separate service boundaries**: a frontend agent building React pages while a backend agent builds API endpoints, provided the API contract (types, routes, response shapes) is established first.
|
|
18
|
+
- **Isolated UI sections**: a settings page and a dashboard page that share a design system but no local state or cross-page logic.
|
|
19
|
+
- **Separate infrastructure domains**: AWS CDK changes in `aws-infrastructure` and Helm/ArgoCD changes in `eks-addons-gitops` — different repos, different tools, no file conflicts.
|
|
20
|
+
- **Independent test suites**: unit tests for module A and unit tests for module B can be written simultaneously if the modules are independent.
|
|
21
|
+
- **Schema domains**: database tables for the `auth` domain and tables for the `content` domain can be designed in parallel if there are no foreign key relationships between them.
|
|
22
|
+
|
|
23
|
+
## When NOT to Parallelize
|
|
24
|
+
|
|
25
|
+
Parallel dispatch creates coordination overhead and merge risk. Avoid it when:
|
|
26
|
+
|
|
27
|
+
- **Shared state**: two agents need to modify the same file, the same database table schema, or the same shared module. Parallel writes to the same file produce merge conflicts that waste more time than sequential execution would.
|
|
28
|
+
- **Sequential dependencies**: agent B's work requires agent A's output as input. Example: the backend agent must define the API response types before the frontend agent can consume them. Create the shared types sequentially first, then dispatch in parallel.
|
|
29
|
+
- **Cross-cutting concerns**: changes to authentication middleware, global error handling, logging infrastructure, or shared configuration affect all modules. Complete these before dispatching module-level work.
|
|
30
|
+
- **Small scope**: if the total work is less than 30 minutes of sequential effort, parallelization overhead (prompt engineering, coordination, convergence verification) exceeds the time saved.
|
|
31
|
+
- **High coupling**: if modules share many imports, call each other's services, or participate in the same transaction, they are too coupled for safe parallel implementation. Refactor the design to reduce coupling first, or implement sequentially.
|
|
32
|
+
- **Unfamiliar territory**: if the architecture is uncertain or the agents will need to make design decisions that affect each other, sequential implementation with feedback loops is safer than parallel implementation with potential rework.
|
|
33
|
+
|
|
34
|
+
## Task Isolation Principles
|
|
35
|
+
|
|
36
|
+
Each dispatched agent must operate in a well-bounded scope with no ambiguity about what it owns.
|
|
37
|
+
|
|
38
|
+
### The Isolation Checklist
|
|
39
|
+
|
|
40
|
+
Before dispatching, verify each task against this checklist:
|
|
41
|
+
|
|
42
|
+
1. **File ownership is exclusive.** No two agents create or modify the same file. If a shared file must be modified (e.g., `app.module.ts` to register new modules), designate one agent as the owner and have others report their additions for that agent to integrate.
|
|
43
|
+
2. **Directory ownership is clear.** Each agent works in a distinct directory subtree. Example: agent A owns `src/modules/auth/`, agent B owns `src/modules/content/`.
|
|
44
|
+
3. **Database table ownership is exclusive.** Each agent creates/modifies only the tables in its domain. If a foreign key crosses domains, define the relationship in the architecture document and have the agent that owns the referencing table create the FK after both tables exist.
|
|
45
|
+
4. **Shared types are pre-created.** Any interfaces, DTOs, or enums used by multiple agents must be created sequentially before parallel dispatch. Place these in `src/shared/` or `src/common/` and instruct all agents to import (not duplicate) them.
|
|
46
|
+
5. **Environment variables are documented.** If an agent needs new env vars, it documents them in its task output rather than modifying `.env` files directly (to avoid merge conflicts).
|
|
47
|
+
|
|
48
|
+
### The Single-Responsibility Rule
|
|
49
|
+
|
|
50
|
+
Each dispatched task should have exactly one primary deliverable. Not "build the auth module and also set up the CI pipeline." One agent, one module, one clear scope. If a task feels like it has two parts, split it into two dispatched agents.
|
|
51
|
+
|
|
52
|
+
## Partition Strategy by Agent Type
|
|
53
|
+
|
|
54
|
+
### Frontend Partitioning
|
|
55
|
+
|
|
56
|
+
Partition frontend work by page, feature, or component group. Each agent receives:
|
|
57
|
+
|
|
58
|
+
- The relevant section of `xd-plan.md` describing the UI for their scope.
|
|
59
|
+
- The API contract (endpoints, request/response types) from `architecture.md` for data fetching.
|
|
60
|
+
- The design system tokens and shared component inventory (so they use existing components, not create duplicates).
|
|
61
|
+
- A list of pages/components they own and explicitly do NOT own.
|
|
62
|
+
|
|
63
|
+
Example partition for a dashboard application:
|
|
64
|
+
|
|
65
|
+
| Agent | Scope | Files Owned |
|
|
66
|
+
|-------|-------|-------------|
|
|
67
|
+
| Frontend-A | Dashboard page, widgets, data visualization | `src/pages/dashboard/`, `src/components/widgets/` |
|
|
68
|
+
| Frontend-B | Settings pages, user preferences, profile | `src/pages/settings/`, `src/components/profile/` |
|
|
69
|
+
| Frontend-C | Navigation, layout shell, shared layout components | `src/components/layout/`, `src/components/nav/` |
|
|
70
|
+
|
|
71
|
+
Frontend-C (layout) should be dispatched first or sequentially, as pages depend on the layout shell.
|
|
72
|
+
|
|
73
|
+
### Backend Partitioning
|
|
74
|
+
|
|
75
|
+
Partition backend work by NestJS module or endpoint group. Each agent receives:
|
|
76
|
+
|
|
77
|
+
- The relevant section of `architecture.md` describing the module's responsibilities, API endpoints, and data model.
|
|
78
|
+
- The database schema for their domain (tables, relationships, indexes).
|
|
79
|
+
- The shared DTOs/interfaces pre-created in `src/common/`.
|
|
80
|
+
- Clear boundaries: which endpoints, which database tables, which service methods.
|
|
81
|
+
|
|
82
|
+
Example partition for a content management backend:
|
|
83
|
+
|
|
84
|
+
| Agent | Scope | Files Owned |
|
|
85
|
+
|-------|-------|-------------|
|
|
86
|
+
| Backend-A | Auth module: login, registration, JWT, RBAC | `src/modules/auth/` |
|
|
87
|
+
| Backend-B | Content module: CRUD, versioning, publishing | `src/modules/content/` |
|
|
88
|
+
| Backend-C | Media module: upload, processing, CDN integration | `src/modules/media/` |
|
|
89
|
+
|
|
90
|
+
### Data Partitioning
|
|
91
|
+
|
|
92
|
+
Partition data work by schema domain, migration set, or seed data category. Each agent receives:
|
|
93
|
+
|
|
94
|
+
- The relevant entity-relationship section of `architecture.md`.
|
|
95
|
+
- Clear table ownership (which tables to create, which to reference but not modify).
|
|
96
|
+
- Seed data specifications (what realistic test data to generate for their domain).
|
|
97
|
+
- Migration ordering constraints (if table B references table A, the migration for A must run first — specify this ordering).
|
|
98
|
+
|
|
99
|
+
Example partition:
|
|
100
|
+
|
|
101
|
+
| Agent | Scope | Tables Owned |
|
|
102
|
+
|-------|-------|-------------|
|
|
103
|
+
| Data-A | Auth schema: users, roles, permissions, sessions | `users`, `roles`, `user_roles`, `sessions` |
|
|
104
|
+
| Data-B | Content schema: documents, versions, categories, tags | `documents`, `versions`, `categories`, `document_tags` |
|
|
105
|
+
|
|
106
|
+
### Platform Partitioning
|
|
107
|
+
|
|
108
|
+
Partition platform/infrastructure work by repository and resource domain. Each agent receives:
|
|
109
|
+
|
|
110
|
+
- The specific IaC repo to work in (`aws-infrastructure` vs. `eks-addons-gitops`).
|
|
111
|
+
- The resources to create or modify (IAM roles, S3 buckets, Helm charts, ArgoCD apps).
|
|
112
|
+
- The naming conventions from the project's CLAUDE.md (kebab-case identifiers, Helm chart names, namespace names, etc.).
|
|
113
|
+
- Cross-references to the other platform agent's work (e.g., "the IRSA role ARN from aws-infrastructure will be referenced in the Helm values in eks-addons-gitops").
|
|
114
|
+
|
|
115
|
+
Example partition:
|
|
116
|
+
|
|
117
|
+
| Agent | Scope | Repo |
|
|
118
|
+
|-------|-------|------|
|
|
119
|
+
| Platform-A | IAM roles, IRSA, ECR, RDS security groups | `aws-infrastructure` |
|
|
120
|
+
| Platform-B | Helm charts, ArgoCD apps, namespace config, service accounts | `eks-addons-gitops` |
|
|
121
|
+
|
|
122
|
+
## Task Description Format
|
|
123
|
+
|
|
124
|
+
Each dispatched task must include a structured description that leaves no room for ambiguity. Use this template when constructing Task tool prompts:
|
|
125
|
+
|
|
126
|
+
```
|
|
127
|
+
TASK: {one-line summary}
|
|
128
|
+
AGENT TYPE: {frontend | backend | data | platform | test}
|
|
129
|
+
SCOPE: {module/page/domain name}
|
|
130
|
+
|
|
131
|
+
PLAN REFERENCE:
|
|
132
|
+
Read: docs/plans/YYYY-MM-DD-{TITLE}/architecture.md, section "{Section Name}"
|
|
133
|
+
Read: docs/plans/YYYY-MM-DD-{TITLE}/xd-plan.md, section "{Section Name}" (frontend only)
|
|
134
|
+
|
|
135
|
+
DELIVERABLES:
|
|
136
|
+
Create: {list of files/directories to create}
|
|
137
|
+
Modify: {list of existing files to modify, and what to add}
|
|
138
|
+
|
|
139
|
+
SHARED DEPENDENCIES:
|
|
140
|
+
Import from: {list of shared types/interfaces to use, with file paths}
|
|
141
|
+
Do NOT create: {types/interfaces that already exist or belong to another agent}
|
|
142
|
+
|
|
143
|
+
DO NOT TOUCH:
|
|
144
|
+
- {list of files/directories owned by other agents}
|
|
145
|
+
- {list of shared files that are off-limits}
|
|
146
|
+
|
|
147
|
+
CONVENTIONS:
|
|
148
|
+
- {relevant naming conventions, code style, patterns}
|
|
149
|
+
- {framework-specific requirements: NestJS module structure, Drizzle schema patterns, etc.}
|
|
150
|
+
|
|
151
|
+
COMPLETION CRITERIA:
|
|
152
|
+
- All files listed under DELIVERABLES exist and compile without errors
|
|
153
|
+
- All exports are properly defined
|
|
154
|
+
- Unit tests pass (if test agent)
|
|
155
|
+
- TypeScript strict mode: no any, no ts-ignore, no suppress
|
|
156
|
+
|
|
157
|
+
HANDOFF:
|
|
158
|
+
When complete, write a summary to: docs/plans/YYYY-MM-DD-{TITLE}/agent-output/{agent-type}-{scope}.md
|
|
159
|
+
Include: files created, decisions made, open questions, integration points for other agents
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
## Coordination Points: The Sequential-Before-Parallel Pattern
|
|
163
|
+
|
|
164
|
+
Not all work within a parallel dispatch is parallel. Some artifacts must be created sequentially before agents can fan out. Identify and complete these coordination points first.
|
|
165
|
+
|
|
166
|
+
### Mandatory Sequential Steps
|
|
167
|
+
|
|
168
|
+
1. **Shared type definitions.** DTOs, interfaces, enums, and Zod schemas used by more than one module. Create these in `src/common/` or `src/shared/` before dispatching.
|
|
169
|
+
2. **Database schema foundation.** If multiple modules reference the same base tables (e.g., a `users` table referenced by both `auth` and `content`), create the base tables first.
|
|
170
|
+
3. **Configuration and environment setup.** Shared configuration (database connection, JWT secret, API keys) must be established before any module that depends on it.
|
|
171
|
+
4. **App module registration skeleton.** Create `app.module.ts` with placeholder imports for all modules, so each agent knows the registration structure.
|
|
172
|
+
5. **API contract definitions.** If frontend and backend agents work in parallel, define the API contracts (routes, request/response types) before dispatching either.
|
|
173
|
+
|
|
174
|
+
### Execution Pattern
|
|
175
|
+
|
|
176
|
+
```
|
|
177
|
+
Phase 1 (Sequential): Create shared types, base schema, configuration
|
|
178
|
+
|
|
|
179
|
+
v
|
|
180
|
+
Phase 2 (Parallel): Dispatch module-level agents simultaneously
|
|
181
|
+
|
|
|
182
|
+
v
|
|
183
|
+
Phase 3 (Sequential): Integration, module registration, cross-module wiring
|
|
184
|
+
|
|
|
185
|
+
v
|
|
186
|
+
Phase 4 (Parallel): Dispatch test agents for each module simultaneously
|
|
187
|
+
|
|
|
188
|
+
v
|
|
189
|
+
Phase 5 (Sequential): Convergence verification, E2E tests, final integration
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
## Convergence: Verifying Parallel Work Integrates
|
|
193
|
+
|
|
194
|
+
After all parallel agents complete, run a convergence check before declaring the dispatch successful.
|
|
195
|
+
|
|
196
|
+
### Convergence Checklist
|
|
197
|
+
|
|
198
|
+
1. **Compilation check.** Run `tsc --noEmit` across the entire project. All modules must compile together, not just individually.
|
|
199
|
+
2. **Import verification.** Verify that cross-module imports resolve correctly. Each module should import shared types from `src/common/`, not define its own duplicates.
|
|
200
|
+
3. **Module registration.** Verify that `app.module.ts` imports all new modules and that NestJS bootstrap succeeds.
|
|
201
|
+
4. **Database migration ordering.** Run all migrations in sequence and verify they apply without errors. Foreign key ordering matters.
|
|
202
|
+
5. **API contract adherence.** For each frontend-backend pair, verify that the frontend's API calls match the backend's actual endpoints (route, method, request body, response shape).
|
|
203
|
+
6. **No file conflicts.** Verify that no two agents created or modified the same file. If they did, manually merge and flag the isolation violation for future dispatch improvement.
|
|
204
|
+
7. **Test suite passes.** Run the full test suite (`npm test`) and verify all tests pass together, not just individually.
|
|
205
|
+
|
|
206
|
+
### The Inspector's Role
|
|
207
|
+
|
|
208
|
+
After parallel dispatch completes and convergence is verified, the Inspector agent runs the **verification-protocol** skill to perform a deeper quality check. The Inspector examines:
|
|
209
|
+
|
|
210
|
+
- Code consistency across modules (naming conventions, error handling patterns, logging patterns).
|
|
211
|
+
- Security posture (no hardcoded secrets, proper input validation, correct auth guard usage).
|
|
212
|
+
- Performance concerns (N+1 queries, missing indexes, unbounded queries).
|
|
213
|
+
- Documentation completeness (JSDoc on public APIs, README updates, migration notes).
|
|
214
|
+
|
|
215
|
+
## Using the Task Tool for Parallel Dispatch
|
|
216
|
+
|
|
217
|
+
Invoke the Task tool for each parallel agent. Provide the model, a detailed prompt containing the full task description (using the template above), and set `run_in_background` for true parallelism.
|
|
218
|
+
|
|
219
|
+
### Prompt Construction Guidelines
|
|
220
|
+
|
|
221
|
+
- **Include the full task description** in the Task prompt. Do not assume the sub-agent has context from the parent conversation. Each sub-agent starts fresh.
|
|
222
|
+
- **Include relevant plan document content.** Either inline the relevant sections of architecture.md/xd-plan.md or instruct the sub-agent to read them. Inlining is more reliable for long plans.
|
|
223
|
+
- **Specify file paths absolutely.** Sub-agents do not share working directory context. Use absolute paths for all file references.
|
|
224
|
+
- **Specify the anti-stub skill.** Instruct each sub-agent to implement fully — no placeholder functions, no TODO comments, no "implement later" stubs.
|
|
225
|
+
- **Specify the test-strategy skill.** If the sub-agent should write tests, reference the test-strategy skill so it follows the project's testing conventions.
|
|
226
|
+
|
|
227
|
+
### Monitoring and Collecting Results
|
|
228
|
+
|
|
229
|
+
After dispatching all agents:
|
|
230
|
+
|
|
231
|
+
1. Wait for all Task tool calls to complete. They run in background and report when finished.
|
|
232
|
+
2. Collect the output from each agent. Check for errors, incomplete work, and open questions.
|
|
233
|
+
3. Run the convergence checklist.
|
|
234
|
+
4. Compile a dispatch report for the Strategist:
|
|
235
|
+
|
|
236
|
+
```
|
|
237
|
+
DISPATCH REPORT
|
|
238
|
+
Dispatched: {N} agents
|
|
239
|
+
Completed: {N} / {N}
|
|
240
|
+
Failed: {list, if any}
|
|
241
|
+
|
|
242
|
+
AGENT RESULTS:
|
|
243
|
+
{Agent-A}: {status} — {summary of deliverables}
|
|
244
|
+
{Agent-B}: {status} — {summary of deliverables}
|
|
245
|
+
...
|
|
246
|
+
|
|
247
|
+
CONVERGENCE:
|
|
248
|
+
Compilation: {pass/fail}
|
|
249
|
+
Imports: {pass/fail}
|
|
250
|
+
Module Registration: {pass/fail}
|
|
251
|
+
Migrations: {pass/fail}
|
|
252
|
+
Tests: {pass/fail}
|
|
253
|
+
|
|
254
|
+
ISSUES:
|
|
255
|
+
- {any issues found during convergence}
|
|
256
|
+
|
|
257
|
+
OPEN QUESTIONS:
|
|
258
|
+
- {questions raised by individual agents}
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
## Error Handling
|
|
262
|
+
|
|
263
|
+
Parallel dispatch must be resilient to individual agent failures.
|
|
264
|
+
|
|
265
|
+
### Failure Isolation
|
|
266
|
+
|
|
267
|
+
- If one agent fails, the others continue. Failures are collected and reported, not propagated.
|
|
268
|
+
- A failed agent's scope becomes "incomplete" and is flagged for retry or manual intervention.
|
|
269
|
+
- Other agents' work remains valid as long as it does not depend on the failed agent's output (which it should not, per the isolation principles).
|
|
270
|
+
|
|
271
|
+
### Common Failure Modes
|
|
272
|
+
|
|
273
|
+
| Failure | Cause | Recovery |
|
|
274
|
+
|---------|-------|----------|
|
|
275
|
+
| Compilation error in one module | Missing type, wrong import | Fix the error, re-run only the failed agent |
|
|
276
|
+
| File conflict between agents | Isolation violation — two agents touched the same file | Manually merge, update dispatch partitioning |
|
|
277
|
+
| Agent exceeded scope | Agent modified files outside its designated area | Revert out-of-scope changes, re-run with stricter instructions |
|
|
278
|
+
| Agent produced stubs | Agent left TODO/placeholder code | Re-dispatch with explicit anti-stub instructions |
|
|
279
|
+
| Agent blocked on missing dependency | Sequential dependency not completed before dispatch | Complete the dependency, re-run the blocked agent |
|
|
280
|
+
|
|
281
|
+
### Retry Strategy
|
|
282
|
+
|
|
283
|
+
When retrying a failed agent:
|
|
284
|
+
|
|
285
|
+
1. Do not re-dispatch all agents — only the failed one.
|
|
286
|
+
2. Provide the failed agent with context about what went wrong (error messages, compilation output).
|
|
287
|
+
3. Provide the failed agent with the completed outputs of the successful agents, so it can see what exists now.
|
|
288
|
+
4. If the failure was due to an isolation violation, tighten the task description boundaries before retrying.
|
|
289
|
+
|
|
290
|
+
## Scaling Considerations
|
|
291
|
+
|
|
292
|
+
### How Many Agents to Dispatch Simultaneously
|
|
293
|
+
|
|
294
|
+
- 2-3 agents: safe default for most features. Low coordination overhead, easy convergence.
|
|
295
|
+
- 4-6 agents: appropriate for large features with clearly isolated modules. Higher coordination cost but significant time savings.
|
|
296
|
+
- 7+ agents: rarely justified. Coordination overhead and merge risk dominate. Consider batching into two rounds of 3-4 instead.
|
|
297
|
+
|
|
298
|
+
### When to Batch Dispatches
|
|
299
|
+
|
|
300
|
+
If the total work requires more agents than can be safely parallelized:
|
|
301
|
+
|
|
302
|
+
1. Group agents into batches by dependency order.
|
|
303
|
+
2. Dispatch batch 1 (no cross-batch dependencies).
|
|
304
|
+
3. Wait for batch 1 to complete and converge.
|
|
305
|
+
4. Dispatch batch 2 (may depend on batch 1 outputs).
|
|
306
|
+
5. Repeat until all batches are complete.
|
|
307
|
+
|
|
308
|
+
This creates a "wave" pattern: sequential between waves, parallel within each wave.
|