squadfoundry 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/AGENTS.md +76 -0
- package/PROJECT.md +79 -0
- package/README.md +255 -0
- package/dist/orchestrator/adapters/context/IContextAdapter.d.ts +65 -0
- package/dist/orchestrator/adapters/context/IContextAdapter.d.ts.map +1 -0
- package/dist/orchestrator/adapters/context/IContextAdapter.js +12 -0
- package/dist/orchestrator/adapters/context/IContextAdapter.js.map +1 -0
- package/dist/orchestrator/adapters/context/filesystem.context-adapter.d.ts +33 -0
- package/dist/orchestrator/adapters/context/filesystem.context-adapter.d.ts.map +1 -0
- package/dist/orchestrator/adapters/context/filesystem.context-adapter.js +179 -0
- package/dist/orchestrator/adapters/context/filesystem.context-adapter.js.map +1 -0
- package/dist/orchestrator/adapters/deploy/IDeployAdapter.d.ts +78 -0
- package/dist/orchestrator/adapters/deploy/IDeployAdapter.d.ts.map +1 -0
- package/dist/orchestrator/adapters/deploy/IDeployAdapter.js +14 -0
- package/dist/orchestrator/adapters/deploy/IDeployAdapter.js.map +1 -0
- package/dist/orchestrator/adapters/deploy/vercel.adapter.d.ts +31 -0
- package/dist/orchestrator/adapters/deploy/vercel.adapter.d.ts.map +1 -0
- package/dist/orchestrator/adapters/deploy/vercel.adapter.js +83 -0
- package/dist/orchestrator/adapters/deploy/vercel.adapter.js.map +1 -0
- package/dist/orchestrator/adapters/host/IHostAdapter.d.ts +89 -0
- package/dist/orchestrator/adapters/host/IHostAdapter.d.ts.map +1 -0
- package/dist/orchestrator/adapters/host/IHostAdapter.js +10 -0
- package/dist/orchestrator/adapters/host/IHostAdapter.js.map +1 -0
- package/dist/orchestrator/adapters/host/anthropic.adapter.d.ts +27 -0
- package/dist/orchestrator/adapters/host/anthropic.adapter.d.ts.map +1 -0
- package/dist/orchestrator/adapters/host/anthropic.adapter.js +118 -0
- package/dist/orchestrator/adapters/host/anthropic.adapter.js.map +1 -0
- package/dist/orchestrator/adapters/host/antigravity.adapter.d.ts +53 -0
- package/dist/orchestrator/adapters/host/antigravity.adapter.d.ts.map +1 -0
- package/dist/orchestrator/adapters/host/antigravity.adapter.js +148 -0
- package/dist/orchestrator/adapters/host/antigravity.adapter.js.map +1 -0
- package/dist/orchestrator/adapters/host/claude-code.adapter.d.ts +13 -0
- package/dist/orchestrator/adapters/host/claude-code.adapter.d.ts.map +1 -0
- package/dist/orchestrator/adapters/host/claude-code.adapter.js +27 -0
- package/dist/orchestrator/adapters/host/claude-code.adapter.js.map +1 -0
- package/dist/orchestrator/adapters/host/command-model-invoker.d.ts +8 -0
- package/dist/orchestrator/adapters/host/command-model-invoker.d.ts.map +1 -0
- package/dist/orchestrator/adapters/host/command-model-invoker.js +46 -0
- package/dist/orchestrator/adapters/host/command-model-invoker.js.map +1 -0
- package/dist/orchestrator/adapters/host/ide.adapter.d.ts +61 -0
- package/dist/orchestrator/adapters/host/ide.adapter.d.ts.map +1 -0
- package/dist/orchestrator/adapters/host/ide.adapter.js +173 -0
- package/dist/orchestrator/adapters/host/ide.adapter.js.map +1 -0
- package/dist/orchestrator/adapters/host/local.adapter.d.ts +26 -0
- package/dist/orchestrator/adapters/host/local.adapter.d.ts.map +1 -0
- package/dist/orchestrator/adapters/host/local.adapter.js +82 -0
- package/dist/orchestrator/adapters/host/local.adapter.js.map +1 -0
- package/dist/orchestrator/adapters/host/openai.adapter.d.ts +26 -0
- package/dist/orchestrator/adapters/host/openai.adapter.d.ts.map +1 -0
- package/dist/orchestrator/adapters/host/openai.adapter.js +77 -0
- package/dist/orchestrator/adapters/host/openai.adapter.js.map +1 -0
- package/dist/orchestrator/adapters/host/opencode.adapter.d.ts +13 -0
- package/dist/orchestrator/adapters/host/opencode.adapter.d.ts.map +1 -0
- package/dist/orchestrator/adapters/host/opencode.adapter.js +27 -0
- package/dist/orchestrator/adapters/host/opencode.adapter.js.map +1 -0
- package/dist/orchestrator/adapters/model/IModelAdapter.d.ts +68 -0
- package/dist/orchestrator/adapters/model/IModelAdapter.d.ts.map +1 -0
- package/dist/orchestrator/adapters/model/IModelAdapter.js +11 -0
- package/dist/orchestrator/adapters/model/IModelAdapter.js.map +1 -0
- package/dist/orchestrator/adapters/publishing/ISocialMediaAdapter.d.ts +93 -0
- package/dist/orchestrator/adapters/publishing/ISocialMediaAdapter.d.ts.map +1 -0
- package/dist/orchestrator/adapters/publishing/ISocialMediaAdapter.js +10 -0
- package/dist/orchestrator/adapters/publishing/ISocialMediaAdapter.js.map +1 -0
- package/dist/orchestrator/adapters/publishing/instagram.adapter.d.ts +34 -0
- package/dist/orchestrator/adapters/publishing/instagram.adapter.d.ts.map +1 -0
- package/dist/orchestrator/adapters/publishing/instagram.adapter.js +105 -0
- package/dist/orchestrator/adapters/publishing/instagram.adapter.js.map +1 -0
- package/dist/orchestrator/adapters/tools/IToolAdapter.d.ts +52 -0
- package/dist/orchestrator/adapters/tools/IToolAdapter.d.ts.map +1 -0
- package/dist/orchestrator/adapters/tools/IToolAdapter.js +10 -0
- package/dist/orchestrator/adapters/tools/IToolAdapter.js.map +1 -0
- package/dist/orchestrator/adapters/vcs/IVCSAdapter.d.ts +89 -0
- package/dist/orchestrator/adapters/vcs/IVCSAdapter.d.ts.map +1 -0
- package/dist/orchestrator/adapters/vcs/IVCSAdapter.js +11 -0
- package/dist/orchestrator/adapters/vcs/IVCSAdapter.js.map +1 -0
- package/dist/orchestrator/adapters/vcs/github.adapter.d.ts +36 -0
- package/dist/orchestrator/adapters/vcs/github.adapter.d.ts.map +1 -0
- package/dist/orchestrator/adapters/vcs/github.adapter.js +110 -0
- package/dist/orchestrator/adapters/vcs/github.adapter.js.map +1 -0
- package/dist/orchestrator/artifacts/artifact-store.d.ts +47 -0
- package/dist/orchestrator/artifacts/artifact-store.d.ts.map +1 -0
- package/dist/orchestrator/artifacts/artifact-store.js +135 -0
- package/dist/orchestrator/artifacts/artifact-store.js.map +1 -0
- package/dist/orchestrator/builder/domain-classifier.d.ts +24 -0
- package/dist/orchestrator/builder/domain-classifier.d.ts.map +1 -0
- package/dist/orchestrator/builder/domain-classifier.js +156 -0
- package/dist/orchestrator/builder/domain-classifier.js.map +1 -0
- package/dist/orchestrator/builder/interview-questions.d.ts +13 -0
- package/dist/orchestrator/builder/interview-questions.d.ts.map +1 -0
- package/dist/orchestrator/builder/interview-questions.js +127 -0
- package/dist/orchestrator/builder/interview-questions.js.map +1 -0
- package/dist/orchestrator/builder/squad-builder.d.ts +53 -0
- package/dist/orchestrator/builder/squad-builder.d.ts.map +1 -0
- package/dist/orchestrator/builder/squad-builder.js +107 -0
- package/dist/orchestrator/builder/squad-builder.js.map +1 -0
- package/dist/orchestrator/builder/squad-generator.d.ts +33 -0
- package/dist/orchestrator/builder/squad-generator.d.ts.map +1 -0
- package/dist/orchestrator/builder/squad-generator.js +360 -0
- package/dist/orchestrator/builder/squad-generator.js.map +1 -0
- package/dist/orchestrator/cli/index.d.ts +3 -0
- package/dist/orchestrator/cli/index.d.ts.map +1 -0
- package/dist/orchestrator/cli/index.js +8 -0
- package/dist/orchestrator/cli/index.js.map +1 -0
- package/dist/orchestrator/context/context-index.d.ts +48 -0
- package/dist/orchestrator/context/context-index.d.ts.map +1 -0
- package/dist/orchestrator/context/context-index.js +116 -0
- package/dist/orchestrator/context/context-index.js.map +1 -0
- package/dist/orchestrator/context/context-loader.d.ts +49 -0
- package/dist/orchestrator/context/context-loader.d.ts.map +1 -0
- package/dist/orchestrator/context/context-loader.js +111 -0
- package/dist/orchestrator/context/context-loader.js.map +1 -0
- package/dist/orchestrator/core/guardrails.d.ts +33 -0
- package/dist/orchestrator/core/guardrails.d.ts.map +1 -0
- package/dist/orchestrator/core/guardrails.js +272 -0
- package/dist/orchestrator/core/guardrails.js.map +1 -0
- package/dist/orchestrator/core/state-machine.d.ts +65 -0
- package/dist/orchestrator/core/state-machine.d.ts.map +1 -0
- package/dist/orchestrator/core/state-machine.js +227 -0
- package/dist/orchestrator/core/state-machine.js.map +1 -0
- package/dist/orchestrator/core/types.d.ts +364 -0
- package/dist/orchestrator/core/types.d.ts.map +1 -0
- package/dist/orchestrator/core/types.js +10 -0
- package/dist/orchestrator/core/types.js.map +1 -0
- package/dist/orchestrator/index.d.ts +75 -0
- package/dist/orchestrator/index.d.ts.map +1 -0
- package/dist/orchestrator/index.js +64 -0
- package/dist/orchestrator/index.js.map +1 -0
- package/dist/orchestrator/mcp/server.d.ts +35 -0
- package/dist/orchestrator/mcp/server.d.ts.map +1 -0
- package/dist/orchestrator/mcp/server.js +378 -0
- package/dist/orchestrator/mcp/server.js.map +1 -0
- package/dist/orchestrator/runtime/agent-dispatcher.d.ts +25 -0
- package/dist/orchestrator/runtime/agent-dispatcher.d.ts.map +1 -0
- package/dist/orchestrator/runtime/agent-dispatcher.js +82 -0
- package/dist/orchestrator/runtime/agent-dispatcher.js.map +1 -0
- package/dist/orchestrator/runtime/approval-gate.d.ts +55 -0
- package/dist/orchestrator/runtime/approval-gate.d.ts.map +1 -0
- package/dist/orchestrator/runtime/approval-gate.js +104 -0
- package/dist/orchestrator/runtime/approval-gate.js.map +1 -0
- package/dist/orchestrator/runtime/handoff-manager.d.ts +29 -0
- package/dist/orchestrator/runtime/handoff-manager.d.ts.map +1 -0
- package/dist/orchestrator/runtime/handoff-manager.js +80 -0
- package/dist/orchestrator/runtime/handoff-manager.js.map +1 -0
- package/dist/orchestrator/runtime/job-manager.d.ts +39 -0
- package/dist/orchestrator/runtime/job-manager.d.ts.map +1 -0
- package/dist/orchestrator/runtime/job-manager.js +132 -0
- package/dist/orchestrator/runtime/job-manager.js.map +1 -0
- package/dist/orchestrator/runtime/squad-runtime.d.ts +70 -0
- package/dist/orchestrator/runtime/squad-runtime.d.ts.map +1 -0
- package/dist/orchestrator/runtime/squad-runtime.js +249 -0
- package/dist/orchestrator/runtime/squad-runtime.js.map +1 -0
- package/dist/orchestrator/shell/cli.d.ts +4 -0
- package/dist/orchestrator/shell/cli.d.ts.map +1 -0
- package/dist/orchestrator/shell/cli.js +27 -0
- package/dist/orchestrator/shell/cli.js.map +1 -0
- package/dist/orchestrator/shell/commands/create.command.d.ts +3 -0
- package/dist/orchestrator/shell/commands/create.command.d.ts.map +1 -0
- package/dist/orchestrator/shell/commands/create.command.js +41 -0
- package/dist/orchestrator/shell/commands/create.command.js.map +1 -0
- package/dist/orchestrator/shell/commands/edit.command.d.ts +3 -0
- package/dist/orchestrator/shell/commands/edit.command.d.ts.map +1 -0
- package/dist/orchestrator/shell/commands/edit.command.js +49 -0
- package/dist/orchestrator/shell/commands/edit.command.js.map +1 -0
- package/dist/orchestrator/shell/commands/hosts.command.d.ts +3 -0
- package/dist/orchestrator/shell/commands/hosts.command.d.ts.map +1 -0
- package/dist/orchestrator/shell/commands/hosts.command.js +27 -0
- package/dist/orchestrator/shell/commands/hosts.command.js.map +1 -0
- package/dist/orchestrator/shell/commands/init.command.d.ts +3 -0
- package/dist/orchestrator/shell/commands/init.command.d.ts.map +1 -0
- package/dist/orchestrator/shell/commands/init.command.js +13 -0
- package/dist/orchestrator/shell/commands/init.command.js.map +1 -0
- package/dist/orchestrator/shell/commands/list.command.d.ts +3 -0
- package/dist/orchestrator/shell/commands/list.command.d.ts.map +1 -0
- package/dist/orchestrator/shell/commands/list.command.js +18 -0
- package/dist/orchestrator/shell/commands/list.command.js.map +1 -0
- package/dist/orchestrator/shell/commands/run.command.d.ts +3 -0
- package/dist/orchestrator/shell/commands/run.command.d.ts.map +1 -0
- package/dist/orchestrator/shell/commands/run.command.js +71 -0
- package/dist/orchestrator/shell/commands/run.command.js.map +1 -0
- package/dist/orchestrator/shell/commands/status.command.d.ts +3 -0
- package/dist/orchestrator/shell/commands/status.command.d.ts.map +1 -0
- package/dist/orchestrator/shell/commands/status.command.js +29 -0
- package/dist/orchestrator/shell/commands/status.command.js.map +1 -0
- package/dist/orchestrator/shell/services/active-host-detector.service.d.ts +25 -0
- package/dist/orchestrator/shell/services/active-host-detector.service.d.ts.map +1 -0
- package/dist/orchestrator/shell/services/active-host-detector.service.js +128 -0
- package/dist/orchestrator/shell/services/active-host-detector.service.js.map +1 -0
- package/dist/orchestrator/shell/services/host-resolution.service.d.ts +42 -0
- package/dist/orchestrator/shell/services/host-resolution.service.d.ts.map +1 -0
- package/dist/orchestrator/shell/services/host-resolution.service.js +108 -0
- package/dist/orchestrator/shell/services/host-resolution.service.js.map +1 -0
- package/dist/orchestrator/shell/services/host-runtime.service.d.ts +23 -0
- package/dist/orchestrator/shell/services/host-runtime.service.d.ts.map +1 -0
- package/dist/orchestrator/shell/services/host-runtime.service.js +167 -0
- package/dist/orchestrator/shell/services/host-runtime.service.js.map +1 -0
- package/dist/orchestrator/shell/services/interview-host-bridge.service.d.ts +14 -0
- package/dist/orchestrator/shell/services/interview-host-bridge.service.d.ts.map +1 -0
- package/dist/orchestrator/shell/services/interview-host-bridge.service.js +16 -0
- package/dist/orchestrator/shell/services/interview-host-bridge.service.js.map +1 -0
- package/dist/orchestrator/shell/services/job-execution.service.d.ts +22 -0
- package/dist/orchestrator/shell/services/job-execution.service.d.ts.map +1 -0
- package/dist/orchestrator/shell/services/job-execution.service.js +39 -0
- package/dist/orchestrator/shell/services/job-execution.service.js.map +1 -0
- package/dist/orchestrator/shell/services/project-bootstrap.service.d.ts +6 -0
- package/dist/orchestrator/shell/services/project-bootstrap.service.d.ts.map +1 -0
- package/dist/orchestrator/shell/services/project-bootstrap.service.js +111 -0
- package/dist/orchestrator/shell/services/project-bootstrap.service.js.map +1 -0
- package/dist/orchestrator/shell/services/squad-scaffold.service.d.ts +3 -0
- package/dist/orchestrator/shell/services/squad-scaffold.service.d.ts.map +1 -0
- package/dist/orchestrator/shell/services/squad-scaffold.service.js +30 -0
- package/dist/orchestrator/shell/services/squad-scaffold.service.js.map +1 -0
- package/dist/tests/integration/instagram-squad.test.d.ts +8 -0
- package/dist/tests/integration/instagram-squad.test.d.ts.map +1 -0
- package/dist/tests/integration/instagram-squad.test.js +187 -0
- package/dist/tests/integration/instagram-squad.test.js.map +1 -0
- package/dist/tests/integration/shell/cli-run-host-native.test.d.ts +2 -0
- package/dist/tests/integration/shell/cli-run-host-native.test.d.ts.map +1 -0
- package/dist/tests/integration/shell/cli-run-host-native.test.js +42 -0
- package/dist/tests/integration/shell/cli-run-host-native.test.js.map +1 -0
- package/dist/tests/integration/software-squad.test.d.ts +8 -0
- package/dist/tests/integration/software-squad.test.d.ts.map +1 -0
- package/dist/tests/integration/software-squad.test.js +207 -0
- package/dist/tests/integration/software-squad.test.js.map +1 -0
- package/dist/tests/unit/artifact-store.test.d.ts +2 -0
- package/dist/tests/unit/artifact-store.test.d.ts.map +1 -0
- package/dist/tests/unit/artifact-store.test.js +137 -0
- package/dist/tests/unit/artifact-store.test.js.map +1 -0
- package/dist/tests/unit/context-loader.test.d.ts +2 -0
- package/dist/tests/unit/context-loader.test.d.ts.map +1 -0
- package/dist/tests/unit/context-loader.test.js +109 -0
- package/dist/tests/unit/context-loader.test.js.map +1 -0
- package/dist/tests/unit/docs/host-native-docs.test.d.ts +2 -0
- package/dist/tests/unit/docs/host-native-docs.test.d.ts.map +1 -0
- package/dist/tests/unit/docs/host-native-docs.test.js +18 -0
- package/dist/tests/unit/docs/host-native-docs.test.js.map +1 -0
- package/dist/tests/unit/guardrails.test.d.ts +2 -0
- package/dist/tests/unit/guardrails.test.d.ts.map +1 -0
- package/dist/tests/unit/guardrails.test.js +202 -0
- package/dist/tests/unit/guardrails.test.js.map +1 -0
- package/dist/tests/unit/host/host-adapter-contract.test.d.ts +2 -0
- package/dist/tests/unit/host/host-adapter-contract.test.d.ts.map +1 -0
- package/dist/tests/unit/host/host-adapter-contract.test.js +53 -0
- package/dist/tests/unit/host/host-adapter-contract.test.js.map +1 -0
- package/dist/tests/unit/host/ide.adapter.test.d.ts +2 -0
- package/dist/tests/unit/host/ide.adapter.test.d.ts.map +1 -0
- package/dist/tests/unit/host/ide.adapter.test.js +17 -0
- package/dist/tests/unit/host/ide.adapter.test.js.map +1 -0
- package/dist/tests/unit/host/native-ide-adapters.test.d.ts +2 -0
- package/dist/tests/unit/host/native-ide-adapters.test.d.ts.map +1 -0
- package/dist/tests/unit/host/native-ide-adapters.test.js +26 -0
- package/dist/tests/unit/host/native-ide-adapters.test.js.map +1 -0
- package/dist/tests/unit/runtime/squad-runtime-host-metadata.test.d.ts +2 -0
- package/dist/tests/unit/runtime/squad-runtime-host-metadata.test.d.ts.map +1 -0
- package/dist/tests/unit/runtime/squad-runtime-host-metadata.test.js +128 -0
- package/dist/tests/unit/runtime/squad-runtime-host-metadata.test.js.map +1 -0
- package/dist/tests/unit/shell/active-host-detector.test.d.ts +2 -0
- package/dist/tests/unit/shell/active-host-detector.test.d.ts.map +1 -0
- package/dist/tests/unit/shell/active-host-detector.test.js +85 -0
- package/dist/tests/unit/shell/active-host-detector.test.js.map +1 -0
- package/dist/tests/unit/shell/host-resolution.service.test.d.ts +2 -0
- package/dist/tests/unit/shell/host-resolution.service.test.d.ts.map +1 -0
- package/dist/tests/unit/shell/host-resolution.service.test.js +252 -0
- package/dist/tests/unit/shell/host-resolution.service.test.js.map +1 -0
- package/dist/tests/unit/shell/interview-host-bridge.test.d.ts +2 -0
- package/dist/tests/unit/shell/interview-host-bridge.test.d.ts.map +1 -0
- package/dist/tests/unit/shell/interview-host-bridge.test.js +58 -0
- package/dist/tests/unit/shell/interview-host-bridge.test.js.map +1 -0
- package/dist/tests/unit/shell/project-bootstrap.service.test.d.ts +2 -0
- package/dist/tests/unit/shell/project-bootstrap.service.test.d.ts.map +1 -0
- package/dist/tests/unit/shell/project-bootstrap.service.test.js +58 -0
- package/dist/tests/unit/shell/project-bootstrap.service.test.js.map +1 -0
- package/dist/tests/unit/shell/squad-scaffold.service.test.d.ts +2 -0
- package/dist/tests/unit/shell/squad-scaffold.service.test.d.ts.map +1 -0
- package/dist/tests/unit/shell/squad-scaffold.service.test.js +40 -0
- package/dist/tests/unit/shell/squad-scaffold.service.test.js.map +1 -0
- package/dist/tests/unit/squad-builder.test.d.ts +2 -0
- package/dist/tests/unit/squad-builder.test.d.ts.map +1 -0
- package/dist/tests/unit/squad-builder.test.js +126 -0
- package/dist/tests/unit/squad-builder.test.js.map +1 -0
- package/dist/tests/unit/state-machine.test.d.ts +2 -0
- package/dist/tests/unit/state-machine.test.d.ts.map +1 -0
- package/dist/tests/unit/state-machine.test.js +133 -0
- package/dist/tests/unit/state-machine.test.js.map +1 -0
- package/docs/architecture/overview.md +115 -0
- package/docs/development/adding-agents.md +75 -0
- package/docs/development/adding-hosts.md +104 -0
- package/docs/development/adding-integrations.md +83 -0
- package/docs/development/host-detection-and-resolution.md +59 -0
- package/docs/squads/how-to-create.md +85 -0
- package/docs/squads/how-to-execute.md +139 -0
- package/docs/superpowers/plans/2026-04-01-host-native-cli-shell-implementation.md +617 -0
- package/docs/superpowers/specs/2026-04-01-host-native-cli-shell-design.md +253 -0
- package/package.json +103 -0
- package/squads/examples/instagram-content/AGENTS.md +63 -0
- package/squads/examples/instagram-content/POLICIES.md +45 -0
- package/squads/examples/instagram-content/SQUAD.md +63 -0
- package/squads/examples/instagram-content/WORKFLOW.md +58 -0
- package/squads/examples/instagram-content/config/squad.json +474 -0
- package/squads/examples/software-development/AGENTS.md +88 -0
- package/squads/examples/software-development/POLICIES.md +44 -0
- package/squads/examples/software-development/SQUAD.md +65 -0
- package/squads/examples/software-development/WORKFLOW.md +78 -0
- package/squads/examples/software-development/config/squad.json +442 -0
- package/templates/AGENTS.md +46 -0
- package/templates/POLICIES.md +24 -0
- package/templates/PROJECT.md +52 -0
- package/templates/SQUAD.md +52 -0
- package/templates/TASKS.md +31 -0
- package/templates/WORKFLOW.md +35 -0
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
# Workflow: Software Development Pipeline
|
|
2
|
+
|
|
3
|
+
Sequential pipeline with review and test loops.
|
|
4
|
+
|
|
5
|
+
## Steps
|
|
6
|
+
|
|
7
|
+
### 1. Requirements & Design (`step-product`)
|
|
8
|
+
- **Agent:** Product Agent
|
|
9
|
+
- **Input:** Task description / feature request
|
|
10
|
+
- **Output:** PRD.md, SDD.md
|
|
11
|
+
- **Approval:** None required
|
|
12
|
+
|
|
13
|
+
### 2. Implementation (`step-code`)
|
|
14
|
+
- **Agent:** Code Agent
|
|
15
|
+
- **Input:** PRD, SDD
|
|
16
|
+
- **Output:** Implementation files
|
|
17
|
+
- **Approval:** None required
|
|
18
|
+
- **Requires:** PRD must be present (guardrail)
|
|
19
|
+
|
|
20
|
+
### 3. Code Review (`step-review`)
|
|
21
|
+
- **Agent:** Reviewer Agent
|
|
22
|
+
- **Input:** Implementation, PRD
|
|
23
|
+
- **Output:** Review Findings (PASS or FAIL with details)
|
|
24
|
+
- **Approval:** None required
|
|
25
|
+
- **Loop:** If FAIL → returns to Code Agent
|
|
26
|
+
|
|
27
|
+
### 4. Testing (`step-test`)
|
|
28
|
+
- **Agent:** Test Agent
|
|
29
|
+
- **Input:** Implementation, Review Findings
|
|
30
|
+
- **Output:** Test Results
|
|
31
|
+
- **Approval:** None required
|
|
32
|
+
- **Loop:** If tests fail → returns to Code Agent
|
|
33
|
+
|
|
34
|
+
### 5. Commit (`step-commit`)
|
|
35
|
+
- **Agent:** Commit Agent
|
|
36
|
+
- **Input:** Implementation, Test Results
|
|
37
|
+
- **Output:** Branch name + Commit SHA
|
|
38
|
+
- **Approval:** None required
|
|
39
|
+
|
|
40
|
+
### 6. Pull Request (`step-pr`)
|
|
41
|
+
- **Agent:** PR Agent
|
|
42
|
+
- **Input:** Commit Info, Review Findings, Test Results
|
|
43
|
+
- **Output:** PR URL and metadata
|
|
44
|
+
- **Approval:** None required before; human should review the PR
|
|
45
|
+
- **Requires:** Review artifacts + test artifacts (guardrail)
|
|
46
|
+
|
|
47
|
+
### 7. Deploy (`step-deploy`)
|
|
48
|
+
- **Agent:** Deploy Agent
|
|
49
|
+
- **Input:** PR Info
|
|
50
|
+
- **Output:** Deploy result and URL
|
|
51
|
+
- **Approval:** **REQUIRED BEFORE execution**
|
|
52
|
+
- **Guardrail:** `require_human_before_deploy` — always blocks without explicit confirmation
|
|
53
|
+
|
|
54
|
+
## Transition Diagram
|
|
55
|
+
|
|
56
|
+
```
|
|
57
|
+
INTAKE_PENDING
|
|
58
|
+
→ CONTEXT_LOADING
|
|
59
|
+
→ JOB_CREATED
|
|
60
|
+
→ READY_FOR_EXECUTION
|
|
61
|
+
→ RUNNING_STEP (Product Agent)
|
|
62
|
+
→ READY_FOR_EXECUTION
|
|
63
|
+
→ RUNNING_STEP (Code Agent)
|
|
64
|
+
→ READY_FOR_EXECUTION
|
|
65
|
+
→ RUNNING_STEP (Reviewer Agent)
|
|
66
|
+
↳ if FAIL → back to Code Agent
|
|
67
|
+
→ READY_FOR_EXECUTION
|
|
68
|
+
→ RUNNING_STEP (Test Agent)
|
|
69
|
+
↳ if fail → back to Code Agent
|
|
70
|
+
→ READY_FOR_EXECUTION
|
|
71
|
+
→ RUNNING_STEP (Commit Agent)
|
|
72
|
+
→ READY_FOR_EXECUTION
|
|
73
|
+
→ RUNNING_STEP (PR Agent)
|
|
74
|
+
→ WAITING_APPROVAL (human confirms deploy)
|
|
75
|
+
→ READY_FOR_EXECUTION
|
|
76
|
+
→ RUNNING_STEP (Deploy Agent)
|
|
77
|
+
→ COMPLETED
|
|
78
|
+
```
|
|
@@ -0,0 +1,442 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "software-development",
|
|
3
|
+
"name": "Software Development Squad",
|
|
4
|
+
"domain": "software-development",
|
|
5
|
+
"objective": "Implement software features from requirements through to deployed code with full review, testing, and traceability",
|
|
6
|
+
"description": "A full-cycle software development squad that takes a task or feature request, generates a spec, writes code, reviews it, runs tests, creates a commit, opens a PR, and deploys when approved.",
|
|
7
|
+
"context": "This squad is designed for codebases managed with Git and hosted on GitHub. It integrates with CI/CD via GitHub Actions and can deploy to any cloud provider via the deploy adapter.",
|
|
8
|
+
"agents": [
|
|
9
|
+
{
|
|
10
|
+
"id": "product-agent",
|
|
11
|
+
"name": "Product Agent",
|
|
12
|
+
"role": "Product Manager / Requirements Author",
|
|
13
|
+
"domain": "software-development",
|
|
14
|
+
"objective": "Transform the task input into a concise PRD (Product Requirements Document) and SDD (Solution Design Document)",
|
|
15
|
+
"instructions": "You are the Product Agent. Given a task or feature request, produce a clear and concise PRD and SDD. Focus on what needs to be built, not how. Keep it actionable. Include: objective, acceptance criteria, edge cases, and a brief technical approach. Output as Markdown.",
|
|
16
|
+
"inputs": [
|
|
17
|
+
{ "name": "task_input", "description": "The feature request or task description", "required": true }
|
|
18
|
+
],
|
|
19
|
+
"outputs": [
|
|
20
|
+
{ "name": "prd", "description": "Product Requirements Document", "required": true, "format": "markdown" },
|
|
21
|
+
{ "name": "sdd", "description": "Solution Design Document", "required": true, "format": "markdown" }
|
|
22
|
+
],
|
|
23
|
+
"allowedTools": ["filesystem", "context"],
|
|
24
|
+
"constraints": [
|
|
25
|
+
"Do not write code",
|
|
26
|
+
"Do not make technical implementation decisions without flagging them in the SDD",
|
|
27
|
+
"Always include acceptance criteria"
|
|
28
|
+
],
|
|
29
|
+
"successCriteria": ["PRD produced", "SDD produced", "Acceptance criteria defined"],
|
|
30
|
+
"failureCriteria": ["Cannot understand the task", "Task is ambiguous and needs human clarification"],
|
|
31
|
+
"allowedStates": ["READY_FOR_EXECUTION", "RUNNING_STEP"],
|
|
32
|
+
"blockingConditions": [],
|
|
33
|
+
"handoffRules": [
|
|
34
|
+
{
|
|
35
|
+
"condition": "prd_and_sdd_produced",
|
|
36
|
+
"targetAgentId": "code-agent",
|
|
37
|
+
"description": "Pass PRD and SDD to Code Agent for implementation",
|
|
38
|
+
"requiresApproval": false
|
|
39
|
+
}
|
|
40
|
+
],
|
|
41
|
+
"responseFormat": "markdown"
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"id": "code-agent",
|
|
45
|
+
"name": "Code Agent",
|
|
46
|
+
"role": "Software Engineer / Implementor",
|
|
47
|
+
"domain": "software-development",
|
|
48
|
+
"objective": "Implement the feature as described in the PRD and SDD",
|
|
49
|
+
"instructions": "You are the Code Agent. Given a PRD and SDD, implement the feature. Follow the project's coding conventions (read from PROJECT.md and existing code). Write clean, readable, tested code. Do not over-engineer. Output the implementation as code files.",
|
|
50
|
+
"inputs": [
|
|
51
|
+
{ "name": "prd", "description": "Product Requirements Document", "required": true },
|
|
52
|
+
{ "name": "sdd", "description": "Solution Design Document", "required": true }
|
|
53
|
+
],
|
|
54
|
+
"outputs": [
|
|
55
|
+
{ "name": "implementation", "description": "The implemented code files", "required": true }
|
|
56
|
+
],
|
|
57
|
+
"allowedTools": ["filesystem", "git", "context"],
|
|
58
|
+
"constraints": [
|
|
59
|
+
"Do not deploy",
|
|
60
|
+
"Do not merge PRs",
|
|
61
|
+
"Follow existing coding conventions",
|
|
62
|
+
"Do not add unused code or speculative abstractions"
|
|
63
|
+
],
|
|
64
|
+
"successCriteria": ["Code implemented", "Follows project conventions", "No obvious bugs"],
|
|
65
|
+
"failureCriteria": ["Cannot implement without more information", "Conflicting requirements"],
|
|
66
|
+
"allowedStates": ["READY_FOR_EXECUTION", "RUNNING_STEP"],
|
|
67
|
+
"blockingConditions": ["prd_not_present", "sdd_not_present"],
|
|
68
|
+
"handoffRules": [
|
|
69
|
+
{
|
|
70
|
+
"condition": "implementation_complete",
|
|
71
|
+
"targetAgentId": "reviewer-agent",
|
|
72
|
+
"description": "Pass implementation to Reviewer Agent",
|
|
73
|
+
"requiresApproval": false
|
|
74
|
+
}
|
|
75
|
+
],
|
|
76
|
+
"responseFormat": "markdown"
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
"id": "reviewer-agent",
|
|
80
|
+
"name": "Reviewer Agent",
|
|
81
|
+
"role": "Code Reviewer",
|
|
82
|
+
"domain": "software-development",
|
|
83
|
+
"objective": "Review the implementation and return structured findings",
|
|
84
|
+
"instructions": "You are the Reviewer Agent. Review the implementation against the PRD, SDD, and project conventions. Check for: correctness, edge cases, security issues, performance concerns, style violations, missing tests. Output a structured review with PASS/FAIL and a list of findings. If FAIL, the Code Agent must revise.",
|
|
85
|
+
"inputs": [
|
|
86
|
+
{ "name": "implementation", "description": "Code to review", "required": true },
|
|
87
|
+
{ "name": "prd", "description": "Requirements for comparison", "required": true }
|
|
88
|
+
],
|
|
89
|
+
"outputs": [
|
|
90
|
+
{ "name": "review_findings", "description": "Structured code review findings", "required": true }
|
|
91
|
+
],
|
|
92
|
+
"allowedTools": ["filesystem", "context"],
|
|
93
|
+
"constraints": [
|
|
94
|
+
"Do not write code",
|
|
95
|
+
"Always provide actionable feedback",
|
|
96
|
+
"Always output PASS or FAIL verdict clearly"
|
|
97
|
+
],
|
|
98
|
+
"successCriteria": ["Review completed", "Verdict issued", "All findings documented"],
|
|
99
|
+
"failureCriteria": ["Cannot access code", "Insufficient context to review"],
|
|
100
|
+
"allowedStates": ["READY_FOR_EXECUTION", "RUNNING_STEP"],
|
|
101
|
+
"blockingConditions": [],
|
|
102
|
+
"handoffRules": [
|
|
103
|
+
{
|
|
104
|
+
"condition": "review_passed",
|
|
105
|
+
"targetAgentId": "test-agent",
|
|
106
|
+
"description": "Pass to Test Agent on PASS verdict",
|
|
107
|
+
"requiresApproval": false
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
"condition": "review_failed",
|
|
111
|
+
"targetAgentId": "code-agent",
|
|
112
|
+
"description": "Return to Code Agent for revisions on FAIL verdict",
|
|
113
|
+
"requiresApproval": false
|
|
114
|
+
}
|
|
115
|
+
],
|
|
116
|
+
"responseFormat": "structured",
|
|
117
|
+
"allowsLoop": true
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
"id": "test-agent",
|
|
121
|
+
"name": "Test Agent",
|
|
122
|
+
"role": "QA Engineer / Test Runner",
|
|
123
|
+
"domain": "software-development",
|
|
124
|
+
"objective": "Write and execute tests for the implementation",
|
|
125
|
+
"instructions": "You are the Test Agent. Write unit and integration tests for the implemented code. Run the test suite. Report results. Output a test report with: tests written, tests passed, tests failed, coverage estimate.",
|
|
126
|
+
"inputs": [
|
|
127
|
+
{ "name": "implementation", "description": "Code to test", "required": true },
|
|
128
|
+
{ "name": "review_findings", "description": "Review findings to guide test focus", "required": false }
|
|
129
|
+
],
|
|
130
|
+
"outputs": [
|
|
131
|
+
{ "name": "test_results", "description": "Test execution report", "required": true }
|
|
132
|
+
],
|
|
133
|
+
"allowedTools": ["filesystem", "test-runner", "context"],
|
|
134
|
+
"constraints": [
|
|
135
|
+
"Do not modify production code",
|
|
136
|
+
"Only write tests",
|
|
137
|
+
"Report honestly — do not hide failures"
|
|
138
|
+
],
|
|
139
|
+
"successCriteria": ["Tests written", "Tests executed", "Results reported"],
|
|
140
|
+
"failureCriteria": ["Cannot run tests", "Test environment broken"],
|
|
141
|
+
"allowedStates": ["READY_FOR_EXECUTION", "RUNNING_STEP"],
|
|
142
|
+
"blockingConditions": [],
|
|
143
|
+
"handoffRules": [
|
|
144
|
+
{
|
|
145
|
+
"condition": "tests_passed",
|
|
146
|
+
"targetAgentId": "commit-agent",
|
|
147
|
+
"description": "Pass to Commit Agent on test success",
|
|
148
|
+
"requiresApproval": false
|
|
149
|
+
},
|
|
150
|
+
{
|
|
151
|
+
"condition": "tests_failed",
|
|
152
|
+
"targetAgentId": "code-agent",
|
|
153
|
+
"description": "Return to Code Agent if tests fail",
|
|
154
|
+
"requiresApproval": false
|
|
155
|
+
}
|
|
156
|
+
],
|
|
157
|
+
"responseFormat": "structured"
|
|
158
|
+
},
|
|
159
|
+
{
|
|
160
|
+
"id": "commit-agent",
|
|
161
|
+
"name": "Commit Agent",
|
|
162
|
+
"role": "VCS / Branch Manager",
|
|
163
|
+
"domain": "software-development",
|
|
164
|
+
"objective": "Create a branch, stage files, and produce a well-formed commit",
|
|
165
|
+
"instructions": "You are the Commit Agent. Create a feature branch with a descriptive name. Stage all modified files. Write a clear, conventional commit message (format: type(scope): description). Output the branch name and commit SHA.",
|
|
166
|
+
"inputs": [
|
|
167
|
+
{ "name": "implementation", "description": "Files to commit", "required": true },
|
|
168
|
+
{ "name": "test_results", "description": "Test results for commit message context", "required": false }
|
|
169
|
+
],
|
|
170
|
+
"outputs": [
|
|
171
|
+
{ "name": "commit_info", "description": "Branch name, commit SHA, and message", "required": true }
|
|
172
|
+
],
|
|
173
|
+
"allowedTools": ["git", "filesystem"],
|
|
174
|
+
"constraints": [
|
|
175
|
+
"Do not push to main or master directly",
|
|
176
|
+
"Always create a feature branch",
|
|
177
|
+
"Follow conventional commit format",
|
|
178
|
+
"Do not force-push"
|
|
179
|
+
],
|
|
180
|
+
"successCriteria": ["Branch created", "Files committed", "Commit message is conventional"],
|
|
181
|
+
"failureCriteria": ["Git not available", "No files to commit"],
|
|
182
|
+
"allowedStates": ["READY_FOR_EXECUTION", "RUNNING_STEP"],
|
|
183
|
+
"blockingConditions": [],
|
|
184
|
+
"handoffRules": [
|
|
185
|
+
{
|
|
186
|
+
"condition": "commit_created",
|
|
187
|
+
"targetAgentId": "pr-agent",
|
|
188
|
+
"description": "Pass to PR Agent after commit",
|
|
189
|
+
"requiresApproval": false
|
|
190
|
+
}
|
|
191
|
+
],
|
|
192
|
+
"responseFormat": "structured"
|
|
193
|
+
},
|
|
194
|
+
{
|
|
195
|
+
"id": "pr-agent",
|
|
196
|
+
"name": "PR Agent",
|
|
197
|
+
"role": "Pull Request Manager",
|
|
198
|
+
"domain": "software-development",
|
|
199
|
+
"objective": "Create, review, and manage pull requests",
|
|
200
|
+
"instructions": "You are the PR Agent. Using the commit info, review findings, and test results, create a well-structured PR. Include: title, summary of changes, test evidence, related issues. Do NOT auto-merge. Do NOT approve your own PRs. Output the PR URL.",
|
|
201
|
+
"inputs": [
|
|
202
|
+
{ "name": "commit_info", "description": "Branch and commit details", "required": true },
|
|
203
|
+
{ "name": "review_findings", "description": "Code review for PR description", "required": false },
|
|
204
|
+
{ "name": "test_results", "description": "Test results for PR description", "required": false }
|
|
205
|
+
],
|
|
206
|
+
"outputs": [
|
|
207
|
+
{ "name": "pr_info", "description": "PR URL and number", "required": true }
|
|
208
|
+
],
|
|
209
|
+
"allowedTools": ["git", "github"],
|
|
210
|
+
"constraints": [
|
|
211
|
+
"Do not auto-merge PRs",
|
|
212
|
+
"Do not approve your own PR",
|
|
213
|
+
"Always include test evidence in PR description",
|
|
214
|
+
"Always link to related issues if known"
|
|
215
|
+
],
|
|
216
|
+
"successCriteria": ["PR created", "PR description is complete", "CI checks triggered"],
|
|
217
|
+
"failureCriteria": ["Branch not found", "GitHub not accessible"],
|
|
218
|
+
"allowedStates": ["READY_FOR_EXECUTION", "RUNNING_STEP"],
|
|
219
|
+
"blockingConditions": ["review_not_passed", "tests_not_passed"],
|
|
220
|
+
"handoffRules": [
|
|
221
|
+
{
|
|
222
|
+
"condition": "pr_created",
|
|
223
|
+
"targetAgentId": "deploy-agent",
|
|
224
|
+
"description": "Pass to Deploy Agent after PR is created (deploy to staging/preview)",
|
|
225
|
+
"requiresApproval": true
|
|
226
|
+
}
|
|
227
|
+
],
|
|
228
|
+
"responseFormat": "structured"
|
|
229
|
+
},
|
|
230
|
+
{
|
|
231
|
+
"id": "deploy-agent",
|
|
232
|
+
"name": "Deploy Agent",
|
|
233
|
+
"role": "Deployment Manager",
|
|
234
|
+
"domain": "software-development",
|
|
235
|
+
"objective": "Deploy the feature to the target environment",
|
|
236
|
+
"instructions": "You are the Deploy Agent. ALWAYS ask the user to confirm: target environment (staging/production) and branch/PR before deploying. Never deploy to production automatically. Always report the deploy URL and status. If deployment fails, report the failure clearly.",
|
|
237
|
+
"inputs": [
|
|
238
|
+
{ "name": "pr_info", "description": "PR details for deployment", "required": true }
|
|
239
|
+
],
|
|
240
|
+
"outputs": [
|
|
241
|
+
{ "name": "deploy_result", "description": "Deployment status and URL", "required": true }
|
|
242
|
+
],
|
|
243
|
+
"allowedTools": ["deploy", "github"],
|
|
244
|
+
"constraints": [
|
|
245
|
+
"NEVER deploy to production without explicit human confirmation",
|
|
246
|
+
"ALWAYS ask for environment before deploying",
|
|
247
|
+
"ALWAYS ask for branch/ref before deploying",
|
|
248
|
+
"Do not rollback without human confirmation"
|
|
249
|
+
],
|
|
250
|
+
"successCriteria": ["Deployment completed", "Deploy URL returned", "Health check passed"],
|
|
251
|
+
"failureCriteria": ["Deploy failed", "Health check failed after deploy"],
|
|
252
|
+
"allowedStates": ["READY_FOR_EXECUTION", "RUNNING_STEP", "WAITING_APPROVAL"],
|
|
253
|
+
"blockingConditions": ["no_human_approval"],
|
|
254
|
+
"handoffRules": [],
|
|
255
|
+
"responseFormat": "structured"
|
|
256
|
+
}
|
|
257
|
+
],
|
|
258
|
+
"workflow": {
|
|
259
|
+
"id": "workflow-software-development",
|
|
260
|
+
"name": "Software Development Pipeline",
|
|
261
|
+
"description": "Full-cycle software development pipeline: spec → code → review → test → commit → PR → deploy",
|
|
262
|
+
"entryStepId": "step-product",
|
|
263
|
+
"steps": [
|
|
264
|
+
{
|
|
265
|
+
"id": "step-product",
|
|
266
|
+
"name": "Requirements & Design",
|
|
267
|
+
"agentId": "product-agent",
|
|
268
|
+
"description": "Generate PRD and SDD from task input",
|
|
269
|
+
"dependsOn": [],
|
|
270
|
+
"guardrails": ["grail-min-context"],
|
|
271
|
+
"requiresApprovalBefore": false,
|
|
272
|
+
"requiresApprovalAfter": false,
|
|
273
|
+
"requiredArtifacts": [],
|
|
274
|
+
"producedArtifacts": ["prd", "sdd"],
|
|
275
|
+
"nextStepId": "step-code"
|
|
276
|
+
},
|
|
277
|
+
{
|
|
278
|
+
"id": "step-code",
|
|
279
|
+
"name": "Implementation",
|
|
280
|
+
"agentId": "code-agent",
|
|
281
|
+
"description": "Implement the feature",
|
|
282
|
+
"dependsOn": ["step-product"],
|
|
283
|
+
"guardrails": ["grail-artifact-prd"],
|
|
284
|
+
"requiresApprovalBefore": false,
|
|
285
|
+
"requiresApprovalAfter": false,
|
|
286
|
+
"requiredArtifacts": ["prd", "sdd"],
|
|
287
|
+
"producedArtifacts": ["implementation"],
|
|
288
|
+
"nextStepId": "step-review"
|
|
289
|
+
},
|
|
290
|
+
{
|
|
291
|
+
"id": "step-review",
|
|
292
|
+
"name": "Code Review",
|
|
293
|
+
"agentId": "reviewer-agent",
|
|
294
|
+
"description": "Review the implementation",
|
|
295
|
+
"dependsOn": ["step-code"],
|
|
296
|
+
"guardrails": ["grail-artifact-impl"],
|
|
297
|
+
"requiresApprovalBefore": false,
|
|
298
|
+
"requiresApprovalAfter": false,
|
|
299
|
+
"requiredArtifacts": ["implementation"],
|
|
300
|
+
"producedArtifacts": ["review_findings"],
|
|
301
|
+
"allowsLoop": true,
|
|
302
|
+
"nextStepId": "step-test"
|
|
303
|
+
},
|
|
304
|
+
{
|
|
305
|
+
"id": "step-test",
|
|
306
|
+
"name": "Testing",
|
|
307
|
+
"agentId": "test-agent",
|
|
308
|
+
"description": "Write and execute tests",
|
|
309
|
+
"dependsOn": ["step-review"],
|
|
310
|
+
"guardrails": ["grail-pr-criteria"],
|
|
311
|
+
"requiresApprovalBefore": false,
|
|
312
|
+
"requiresApprovalAfter": false,
|
|
313
|
+
"requiredArtifacts": ["implementation", "review_findings"],
|
|
314
|
+
"producedArtifacts": ["test_results"],
|
|
315
|
+
"nextStepId": "step-commit"
|
|
316
|
+
},
|
|
317
|
+
{
|
|
318
|
+
"id": "step-commit",
|
|
319
|
+
"name": "Commit",
|
|
320
|
+
"agentId": "commit-agent",
|
|
321
|
+
"description": "Create branch and commit",
|
|
322
|
+
"dependsOn": ["step-test"],
|
|
323
|
+
"guardrails": [],
|
|
324
|
+
"requiresApprovalBefore": false,
|
|
325
|
+
"requiresApprovalAfter": false,
|
|
326
|
+
"requiredArtifacts": ["implementation", "test_results"],
|
|
327
|
+
"producedArtifacts": ["commit_info"],
|
|
328
|
+
"nextStepId": "step-pr"
|
|
329
|
+
},
|
|
330
|
+
{
|
|
331
|
+
"id": "step-pr",
|
|
332
|
+
"name": "Pull Request",
|
|
333
|
+
"agentId": "pr-agent",
|
|
334
|
+
"description": "Create and document the PR",
|
|
335
|
+
"dependsOn": ["step-commit"],
|
|
336
|
+
"guardrails": ["grail-pr-criteria"],
|
|
337
|
+
"requiresApprovalBefore": false,
|
|
338
|
+
"requiresApprovalAfter": false,
|
|
339
|
+
"requiredArtifacts": ["commit_info"],
|
|
340
|
+
"producedArtifacts": ["pr_info"],
|
|
341
|
+
"nextStepId": "step-deploy"
|
|
342
|
+
},
|
|
343
|
+
{
|
|
344
|
+
"id": "step-deploy",
|
|
345
|
+
"name": "Deploy",
|
|
346
|
+
"agentId": "deploy-agent",
|
|
347
|
+
"description": "Deploy to target environment",
|
|
348
|
+
"dependsOn": ["step-pr"],
|
|
349
|
+
"guardrails": ["grail-human-deploy"],
|
|
350
|
+
"requiresApprovalBefore": true,
|
|
351
|
+
"requiresApprovalAfter": false,
|
|
352
|
+
"requiredArtifacts": ["pr_info"],
|
|
353
|
+
"producedArtifacts": ["deploy_result"]
|
|
354
|
+
}
|
|
355
|
+
]
|
|
356
|
+
},
|
|
357
|
+
"policy": {
|
|
358
|
+
"id": "policy-software-dev",
|
|
359
|
+
"name": "Software Development Policies",
|
|
360
|
+
"description": "Policies governing the software development squad",
|
|
361
|
+
"guardrails": [
|
|
362
|
+
{
|
|
363
|
+
"id": "grail-min-context",
|
|
364
|
+
"name": "Require Minimum Context",
|
|
365
|
+
"description": "PROJECT.md should be present",
|
|
366
|
+
"severity": "warn",
|
|
367
|
+
"ruleKey": "require_minimum_context",
|
|
368
|
+
"params": { "requiredFields": ["projectMd"] }
|
|
369
|
+
},
|
|
370
|
+
{
|
|
371
|
+
"id": "grail-artifact-prd",
|
|
372
|
+
"name": "Require PRD Before Code",
|
|
373
|
+
"description": "Code Agent cannot run without PRD",
|
|
374
|
+
"severity": "block",
|
|
375
|
+
"ruleKey": "require_artifact_before_step",
|
|
376
|
+
"params": { "artifactNames": ["prd"] }
|
|
377
|
+
},
|
|
378
|
+
{
|
|
379
|
+
"id": "grail-artifact-impl",
|
|
380
|
+
"name": "Require Implementation Before Review",
|
|
381
|
+
"description": "Reviewer Agent cannot run without implementation",
|
|
382
|
+
"severity": "block",
|
|
383
|
+
"ruleKey": "require_artifact_before_step",
|
|
384
|
+
"params": { "artifactNames": ["implementation"] }
|
|
385
|
+
},
|
|
386
|
+
{
|
|
387
|
+
"id": "grail-pr-criteria",
|
|
388
|
+
"name": "PR Criteria",
|
|
389
|
+
"description": "PR requires review and test artifacts",
|
|
390
|
+
"severity": "block",
|
|
391
|
+
"ruleKey": "require_pr_criteria"
|
|
392
|
+
},
|
|
393
|
+
{
|
|
394
|
+
"id": "grail-human-deploy",
|
|
395
|
+
"name": "Human Before Deploy",
|
|
396
|
+
"description": "All deploys require explicit human approval",
|
|
397
|
+
"severity": "block",
|
|
398
|
+
"ruleKey": "require_human_before_deploy"
|
|
399
|
+
}
|
|
400
|
+
],
|
|
401
|
+
"prohibitedActions": [
|
|
402
|
+
"Auto-merge PRs",
|
|
403
|
+
"Deploy to production without human confirmation",
|
|
404
|
+
"Push directly to main or master",
|
|
405
|
+
"Approve own PRs",
|
|
406
|
+
"Force push to any branch"
|
|
407
|
+
],
|
|
408
|
+
"requiredApprovals": [
|
|
409
|
+
{ "action": "deploy", "description": "Human must confirm environment and branch before deploy" }
|
|
410
|
+
]
|
|
411
|
+
},
|
|
412
|
+
"expectedArtifacts": [
|
|
413
|
+
{ "id": "artifact-prd", "name": "PRD", "description": "Product Requirements Document", "path": "outputs/prd.md", "required": true, "format": "markdown" },
|
|
414
|
+
{ "id": "artifact-sdd", "name": "SDD", "description": "Solution Design Document", "path": "outputs/sdd.md", "required": true, "format": "markdown" },
|
|
415
|
+
{ "id": "artifact-review", "name": "Review Findings", "description": "Code review output", "path": "outputs/review_findings.md", "required": true, "format": "markdown" },
|
|
416
|
+
{ "id": "artifact-tests", "name": "Test Results", "description": "Test execution report", "path": "outputs/test_results.md", "required": true, "format": "markdown" },
|
|
417
|
+
{ "id": "artifact-pr", "name": "PR Info", "description": "PR URL and metadata", "path": "outputs/pr_info.json", "required": true, "format": "json" }
|
|
418
|
+
],
|
|
419
|
+
"allowedIntegrations": [
|
|
420
|
+
{ "id": "github", "type": "vcs", "name": "GitHub", "required": false, "status": "stub" },
|
|
421
|
+
{ "id": "vercel", "type": "deploy", "name": "Vercel", "required": false, "status": "stub" }
|
|
422
|
+
],
|
|
423
|
+
"templates": ["prd-template", "sdd-template", "pr-template"],
|
|
424
|
+
"successCriteria": [
|
|
425
|
+
"Feature implemented and passes review",
|
|
426
|
+
"All tests pass",
|
|
427
|
+
"PR created with full documentation",
|
|
428
|
+
"Deployment completed to target environment"
|
|
429
|
+
],
|
|
430
|
+
"failureCriteria": [
|
|
431
|
+
"Code review fails repeatedly (more than 3 loops)",
|
|
432
|
+
"Tests fail and cannot be fixed",
|
|
433
|
+
"Deploy fails and cannot be resolved"
|
|
434
|
+
],
|
|
435
|
+
"metadata": {
|
|
436
|
+
"version": "1.0.0",
|
|
437
|
+
"createdAt": "2026-04-01T00:00:00.000Z",
|
|
438
|
+
"updatedAt": "2026-04-01T00:00:00.000Z",
|
|
439
|
+
"tags": ["software-development", "full-cycle", "github", "ci-cd"],
|
|
440
|
+
"hostCompatibility": ["claude-code", "opencode", "cursor", "codex", "zed", "any"]
|
|
441
|
+
}
|
|
442
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# Agents: [Squad Name]
|
|
2
|
+
|
|
3
|
+
## [Agent Name]
|
|
4
|
+
|
|
5
|
+
**ID:** `[agent-id]`
|
|
6
|
+
**Role:** [Role title]
|
|
7
|
+
**Domain:** [domain]
|
|
8
|
+
|
|
9
|
+
### Objective
|
|
10
|
+
|
|
11
|
+
[What this agent is responsible for achieving]
|
|
12
|
+
|
|
13
|
+
### Instructions
|
|
14
|
+
|
|
15
|
+
[Full system prompt / operating instructions for this agent]
|
|
16
|
+
|
|
17
|
+
### Inputs
|
|
18
|
+
|
|
19
|
+
| Name | Description | Required |
|
|
20
|
+
|------|-------------|----------|
|
|
21
|
+
| [input_name] | [description] | yes/no |
|
|
22
|
+
|
|
23
|
+
### Outputs
|
|
24
|
+
|
|
25
|
+
| Name | Description | Format |
|
|
26
|
+
|------|-------------|--------|
|
|
27
|
+
| [output_name] | [description] | markdown/json/text |
|
|
28
|
+
|
|
29
|
+
### Allowed Tools
|
|
30
|
+
|
|
31
|
+
- [tool-id]
|
|
32
|
+
|
|
33
|
+
### Constraints
|
|
34
|
+
|
|
35
|
+
- [Constraint 1]
|
|
36
|
+
- [Constraint 2]
|
|
37
|
+
|
|
38
|
+
### Handoff Rules
|
|
39
|
+
|
|
40
|
+
| Condition | Next Agent | Requires Approval |
|
|
41
|
+
|-----------|-----------|-------------------|
|
|
42
|
+
| [condition] | [agent-id] | yes/no |
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
[Repeat for each agent]
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Policies: [Squad Name]
|
|
2
|
+
|
|
3
|
+
## Guardrails
|
|
4
|
+
|
|
5
|
+
### [Guardrail Name] (`guardrail-id`)
|
|
6
|
+
- **Severity:** block | warn
|
|
7
|
+
- **Rule:** `[builtin_rule_key]`
|
|
8
|
+
- **Description:** [What this guardrail enforces]
|
|
9
|
+
- **Applies to steps:** [step IDs]
|
|
10
|
+
|
|
11
|
+
## Prohibited Actions
|
|
12
|
+
|
|
13
|
+
- [Action that is never allowed]
|
|
14
|
+
- [Action that requires human confirmation instead]
|
|
15
|
+
|
|
16
|
+
## Required Approvals
|
|
17
|
+
|
|
18
|
+
| Action | Description |
|
|
19
|
+
|--------|-------------|
|
|
20
|
+
| [action] | [Why and who must approve] |
|
|
21
|
+
|
|
22
|
+
## Compliance Notes
|
|
23
|
+
|
|
24
|
+
[Any regulatory, brand, or legal compliance requirements]
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# Project: [Project Name]
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
[1–3 sentence description of what this project is and why it exists.]
|
|
6
|
+
|
|
7
|
+
## Domain
|
|
8
|
+
|
|
9
|
+
[e.g. software-development, social-media, documentation, research]
|
|
10
|
+
|
|
11
|
+
## Stack / Technology
|
|
12
|
+
|
|
13
|
+
[List main technologies, frameworks, languages, platforms]
|
|
14
|
+
|
|
15
|
+
## Key Conventions
|
|
16
|
+
|
|
17
|
+
- [Coding style / naming convention]
|
|
18
|
+
- [Branch naming: e.g. `feat/`, `fix/`, `chore/`]
|
|
19
|
+
- [Commit format: e.g. Conventional Commits]
|
|
20
|
+
- [PR process]
|
|
21
|
+
|
|
22
|
+
## Project Structure
|
|
23
|
+
|
|
24
|
+
```
|
|
25
|
+
[Describe the main directories and their purpose]
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## External Systems
|
|
29
|
+
|
|
30
|
+
| System | Purpose | Status |
|
|
31
|
+
|--------|---------|--------|
|
|
32
|
+
| [GitHub] | VCS + PRs | active |
|
|
33
|
+
| [CI/CD] | Automated builds | active |
|
|
34
|
+
|
|
35
|
+
## Contacts
|
|
36
|
+
|
|
37
|
+
| Role | Contact |
|
|
38
|
+
|------|---------|
|
|
39
|
+
| [Owner] | [name/email] |
|
|
40
|
+
|
|
41
|
+
## Goals for Current Phase
|
|
42
|
+
|
|
43
|
+
- [ ] [Goal 1]
|
|
44
|
+
- [ ] [Goal 2]
|
|
45
|
+
|
|
46
|
+
## Known Constraints / Non-Goals
|
|
47
|
+
|
|
48
|
+
- [Constraint 1]
|
|
49
|
+
- [Not in scope: X]
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
_This file is read by Squad Foundry agents as primary project context._
|