@wazir-dev/cli 1.1.0 → 1.2.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/CHANGELOG.md +73 -4
- package/README.md +6 -6
- package/docs/concepts/architecture.md +1 -1
- package/docs/concepts/roles-and-workflows.md +2 -0
- package/docs/concepts/why-wazir.md +59 -0
- package/docs/decisions/2026-03-19-deferred-items.md +564 -0
- package/docs/decisions/2026-03-19-enhancement-decisions.md +300 -0
- package/docs/readmes/INDEX.md +21 -5
- package/docs/readmes/features/expertise/README.md +2 -2
- package/docs/readmes/features/exports/README.md +2 -2
- package/docs/readmes/features/schemas/README.md +3 -0
- package/docs/readmes/features/skills/README.md +17 -0
- package/docs/readmes/features/skills/clarifier.md +5 -0
- package/docs/readmes/features/skills/claude-cli.md +5 -0
- package/docs/readmes/features/skills/codex-cli.md +5 -0
- package/docs/readmes/features/skills/dispatching-parallel-agents.md +5 -0
- package/docs/readmes/features/skills/executing-plans.md +5 -0
- package/docs/readmes/features/skills/executor.md +5 -0
- package/docs/readmes/features/skills/finishing-a-development-branch.md +5 -0
- package/docs/readmes/features/skills/gemini-cli.md +5 -0
- package/docs/readmes/features/skills/humanize.md +5 -0
- package/docs/readmes/features/skills/init-pipeline.md +5 -0
- package/docs/readmes/features/skills/receiving-code-review.md +5 -0
- package/docs/readmes/features/skills/requesting-code-review.md +5 -0
- package/docs/readmes/features/skills/reviewer.md +5 -0
- package/docs/readmes/features/skills/subagent-driven-development.md +5 -0
- package/docs/readmes/features/skills/using-git-worktrees.md +5 -0
- package/docs/readmes/features/skills/wazir.md +5 -0
- package/docs/readmes/features/skills/writing-skills.md +5 -0
- package/docs/readmes/features/workflows/prepare-next.md +1 -1
- package/docs/reference/configuration-reference.md +47 -6
- package/docs/reference/launch-checklist.md +4 -4
- package/docs/reference/review-loop-pattern.md +117 -8
- package/docs/reference/roles-reference.md +1 -0
- package/docs/reference/skill-tiers.md +147 -0
- package/docs/reference/tooling-cli.md +3 -1
- package/docs/truth-claims.yaml +12 -0
- package/expertise/antipatterns/process/ai-coding-antipatterns.md +97 -1
- package/exports/hosts/claude/.claude/settings.json +9 -0
- package/exports/hosts/claude/CLAUDE.md +1 -1
- package/exports/hosts/claude/export.manifest.json +4 -2
- package/exports/hosts/claude/host-package.json +3 -1
- package/exports/hosts/codex/AGENTS.md +1 -1
- package/exports/hosts/codex/export.manifest.json +4 -2
- package/exports/hosts/codex/host-package.json +3 -1
- package/exports/hosts/cursor/.cursor/hooks.json +4 -0
- package/exports/hosts/cursor/.cursor/rules/wazir-core.mdc +1 -1
- package/exports/hosts/cursor/export.manifest.json +4 -2
- package/exports/hosts/cursor/host-package.json +3 -1
- package/exports/hosts/gemini/GEMINI.md +1 -1
- package/exports/hosts/gemini/export.manifest.json +4 -2
- package/exports/hosts/gemini/host-package.json +3 -1
- package/hooks/context-mode-router +191 -0
- package/hooks/definitions/context_mode_router.yaml +19 -0
- package/hooks/hooks.json +31 -6
- package/hooks/protected-path-write-guard +8 -0
- package/hooks/routing-matrix.json +45 -0
- package/hooks/session-start +62 -1
- package/llms-full.txt +905 -132
- package/package.json +2 -3
- package/schemas/hook.schema.json +2 -1
- package/schemas/phase-report.schema.json +80 -0
- package/schemas/usage.schema.json +25 -1
- package/schemas/wazir-manifest.schema.json +19 -0
- package/skills/brainstorming/SKILL.md +18 -155
- package/skills/clarifier/SKILL.md +122 -98
- package/skills/claude-cli/SKILL.md +320 -0
- package/skills/codex-cli/SKILL.md +260 -0
- package/skills/debugging/SKILL.md +13 -0
- package/skills/design/SKILL.md +13 -0
- package/skills/dispatching-parallel-agents/SKILL.md +13 -0
- package/skills/executing-plans/SKILL.md +13 -0
- package/skills/executor/SKILL.md +72 -19
- package/skills/finishing-a-development-branch/SKILL.md +13 -0
- package/skills/gemini-cli/SKILL.md +260 -0
- package/skills/humanize/SKILL.md +13 -0
- package/skills/init-pipeline/SKILL.md +73 -164
- package/skills/prepare-next/SKILL.md +81 -10
- package/skills/receiving-code-review/SKILL.md +13 -0
- package/skills/requesting-code-review/SKILL.md +13 -0
- package/skills/reviewer/SKILL.md +287 -15
- package/skills/run-audit/SKILL.md +13 -0
- package/skills/scan-project/SKILL.md +13 -0
- package/skills/self-audit/SKILL.md +197 -16
- package/skills/subagent-driven-development/SKILL.md +13 -0
- package/skills/subagent-driven-development/code-quality-reviewer-prompt.md +2 -0
- package/skills/subagent-driven-development/implementer-prompt.md +8 -0
- package/skills/subagent-driven-development/spec-reviewer-prompt.md +7 -0
- package/skills/tdd/SKILL.md +13 -0
- package/skills/using-git-worktrees/SKILL.md +13 -0
- package/skills/using-skills/SKILL.md +13 -0
- package/skills/verification/SKILL.md +13 -0
- package/skills/wazir/SKILL.md +194 -377
- package/skills/writing-plans/SKILL.md +14 -1
- package/skills/writing-skills/SKILL.md +13 -0
- package/templates/artifacts/implementation-plan.md +3 -0
- package/templates/artifacts/tasks-template.md +133 -0
- package/templates/examples/phase-report.example.json +48 -0
- package/tooling/src/adapters/composition-engine.js +256 -0
- package/tooling/src/adapters/model-router.js +84 -0
- package/tooling/src/capture/command.js +24 -1
- package/tooling/src/capture/run-config.js +3 -1
- package/tooling/src/capture/store.js +24 -0
- package/tooling/src/capture/usage.js +106 -0
- package/tooling/src/checks/ac-matrix.js +256 -0
- package/tooling/src/checks/command-registry.js +12 -0
- package/tooling/src/checks/docs-truth.js +1 -1
- package/tooling/src/checks/skills.js +111 -0
- package/tooling/src/cli.js +9 -0
- package/tooling/src/commands/stats.js +161 -0
- package/tooling/src/commands/validate.js +5 -1
- package/tooling/src/export/compiler.js +33 -37
- package/tooling/src/gating/agent.js +145 -0
- package/tooling/src/guards/phase-prerequisite-guard.js +127 -0
- package/tooling/src/hooks/routing-logic.js +69 -0
- package/tooling/src/init/auto-detect.js +260 -0
- package/tooling/src/init/command.js +95 -135
- package/tooling/src/input/scanner.js +46 -0
- package/tooling/src/reports/command.js +103 -0
- package/tooling/src/reports/phase-report.js +323 -0
- package/tooling/src/state/command.js +160 -0
- package/tooling/src/state/db.js +287 -0
- package/tooling/src/status/command.js +53 -1
- package/wazir.manifest.yaml +26 -14
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wazir-dev/cli",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Host-native engineering OS kit for AI coding agents — roles, phases, expertise modules, quality gates for Claude, Codex, Gemini & Cursor",
|
|
6
6
|
"bin": {
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
],
|
|
30
30
|
"scripts": {
|
|
31
31
|
"test": "npm run test:active",
|
|
32
|
-
"test:active": "node --test tooling/test/cli.test.js tooling/test/validate.test.js tooling/test/index.test.js tooling/test/doctor-status.test.js tooling/test/guard-hooks.test.js tooling/test/export.test.js tooling/test/capture.test.js tooling/test/schema-examples.test.js tooling/test/git-flow-docs.test.js tooling/test/role-contracts.test.js tooling/test/ci-workflow.test.js tooling/test/contributing.test.js tooling/test/author-artifact.test.js tooling/test/capture/usage.test.js tooling/test/docs-drift.test.js tooling/test/init.test.js",
|
|
32
|
+
"test:active": "node --test tooling/test/cli.test.js tooling/test/validate.test.js tooling/test/index.test.js tooling/test/doctor-status.test.js tooling/test/guard-hooks.test.js tooling/test/export.test.js tooling/test/capture.test.js tooling/test/schema-examples.test.js tooling/test/git-flow-docs.test.js tooling/test/role-contracts.test.js tooling/test/ci-workflow.test.js tooling/test/contributing.test.js tooling/test/author-artifact.test.js tooling/test/capture/usage.test.js tooling/test/adapters/composition-engine.test.js tooling/test/docs-drift.test.js tooling/test/init.test.js tooling/test/gating/agent.test.js tooling/test/guards/phase-prerequisite-guard.test.js tooling/test/hooks/context-mode-router.test.js tooling/test/hooks/session-start.test.js tooling/test/input-scanning.test.js tooling/test/init/auto-detect.test.js tooling/test/adapters/model-router.test.js tooling/test/state/db.test.js tooling/test/reports/phase-report.test.js tooling/test/logo-svg.test.js tooling/test/adapters/context-mode.test.js",
|
|
33
33
|
"test:coverage": "c8 npm run test:active",
|
|
34
34
|
"prepare": "husky"
|
|
35
35
|
},
|
|
@@ -63,7 +63,6 @@
|
|
|
63
63
|
"dependencies": {
|
|
64
64
|
"@inquirer/prompts": "^8.3.2",
|
|
65
65
|
"ajv": "^8.18.0",
|
|
66
|
-
"gray-matter": "^4.0.3",
|
|
67
66
|
"yaml": "^2.0.0"
|
|
68
67
|
},
|
|
69
68
|
"devDependencies": {
|
package/schemas/hook.schema.json
CHANGED
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://wazir.dev/schemas/phase-report.schema.json",
|
|
4
|
+
"title": "Phase Report",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"required": ["phase_name", "run_id", "timestamp", "attempted_actions", "drift_analysis", "quality_metrics", "risk_flags", "decisions"],
|
|
7
|
+
"properties": {
|
|
8
|
+
"phase_name": { "type": "string", "minLength": 1 },
|
|
9
|
+
"run_id": { "type": "string", "minLength": 1 },
|
|
10
|
+
"timestamp": { "type": "string", "format": "date-time" },
|
|
11
|
+
"attempted_actions": {
|
|
12
|
+
"type": "array",
|
|
13
|
+
"items": {
|
|
14
|
+
"type": "object",
|
|
15
|
+
"required": ["description", "outcome", "evidence"],
|
|
16
|
+
"properties": {
|
|
17
|
+
"description": { "type": "string", "minLength": 1 },
|
|
18
|
+
"outcome": { "type": "string", "enum": ["success", "fail", "uncertain"] },
|
|
19
|
+
"evidence": { "type": "string" }
|
|
20
|
+
},
|
|
21
|
+
"additionalProperties": true
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
"drift_analysis": {
|
|
25
|
+
"type": "object",
|
|
26
|
+
"required": ["delta"],
|
|
27
|
+
"properties": {
|
|
28
|
+
"delta": { "type": "integer", "minimum": 0 },
|
|
29
|
+
"description": { "type": "string" }
|
|
30
|
+
},
|
|
31
|
+
"additionalProperties": true
|
|
32
|
+
},
|
|
33
|
+
"quality_metrics": {
|
|
34
|
+
"type": "object",
|
|
35
|
+
"properties": {
|
|
36
|
+
"test_pass_count": { "type": "integer", "minimum": 0 },
|
|
37
|
+
"test_fail_count": { "type": "integer", "minimum": 0 },
|
|
38
|
+
"lint_errors": { "type": "integer", "minimum": 0 },
|
|
39
|
+
"type_errors": { "type": "integer", "minimum": 0 }
|
|
40
|
+
},
|
|
41
|
+
"additionalProperties": true
|
|
42
|
+
},
|
|
43
|
+
"risk_flags": {
|
|
44
|
+
"type": "array",
|
|
45
|
+
"items": {
|
|
46
|
+
"type": "object",
|
|
47
|
+
"required": ["severity", "description"],
|
|
48
|
+
"properties": {
|
|
49
|
+
"severity": { "type": "string", "enum": ["low", "medium", "high"] },
|
|
50
|
+
"description": { "type": "string", "minLength": 1 },
|
|
51
|
+
"mitigation": { "type": "string" }
|
|
52
|
+
},
|
|
53
|
+
"additionalProperties": true
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
"decisions": {
|
|
57
|
+
"type": "array",
|
|
58
|
+
"items": {
|
|
59
|
+
"type": "object",
|
|
60
|
+
"required": ["description", "rationale"],
|
|
61
|
+
"properties": {
|
|
62
|
+
"description": { "type": "string", "minLength": 1 },
|
|
63
|
+
"rationale": { "type": "string", "minLength": 1 },
|
|
64
|
+
"alternatives_considered": { "type": "array", "items": { "type": "string" } },
|
|
65
|
+
"source": { "type": "string" }
|
|
66
|
+
},
|
|
67
|
+
"additionalProperties": true
|
|
68
|
+
}
|
|
69
|
+
},
|
|
70
|
+
"verdict_recommendation": {
|
|
71
|
+
"type": "object",
|
|
72
|
+
"properties": {
|
|
73
|
+
"verdict": { "type": "string", "enum": ["continue", "loop_back", "escalate"] },
|
|
74
|
+
"reasoning": { "type": "string" }
|
|
75
|
+
},
|
|
76
|
+
"additionalProperties": true
|
|
77
|
+
}
|
|
78
|
+
},
|
|
79
|
+
"additionalProperties": true
|
|
80
|
+
}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"title": "Usage Report",
|
|
5
5
|
"description": "Per-run token usage tracking and context savings data.",
|
|
6
6
|
"type": "object",
|
|
7
|
-
"required": ["schema_version", "run_id", "created_at", "updated_at", "phases", "roles", "savings", "totals"],
|
|
7
|
+
"required": ["schema_version", "run_id", "created_at", "updated_at", "phases", "roles", "savings", "routing", "totals"],
|
|
8
8
|
"properties": {
|
|
9
9
|
"schema_version": { "type": "integer", "const": 1 },
|
|
10
10
|
"run_id": { "type": "string", "minLength": 1 },
|
|
@@ -81,6 +81,30 @@
|
|
|
81
81
|
"post_compaction_tokens_est": { "type": "integer", "minimum": 0 }
|
|
82
82
|
},
|
|
83
83
|
"additionalProperties": false
|
|
84
|
+
},
|
|
85
|
+
"index_queries": {
|
|
86
|
+
"type": "object",
|
|
87
|
+
"properties": {
|
|
88
|
+
"count": { "type": "integer", "minimum": 0 },
|
|
89
|
+
"total_raw_bytes": { "type": "integer", "minimum": 0 },
|
|
90
|
+
"total_summary_bytes": { "type": "integer", "minimum": 0 },
|
|
91
|
+
"estimated_tokens_saved": { "type": "integer", "minimum": 0 },
|
|
92
|
+
"bytes_avoided": { "type": "integer", "minimum": 0 }
|
|
93
|
+
},
|
|
94
|
+
"additionalProperties": false
|
|
95
|
+
}
|
|
96
|
+
},
|
|
97
|
+
"additionalProperties": false
|
|
98
|
+
},
|
|
99
|
+
"routing": {
|
|
100
|
+
"type": "object",
|
|
101
|
+
"properties": {
|
|
102
|
+
"total_commands": { "type": "integer", "minimum": 0 },
|
|
103
|
+
"context_mode_routed": { "type": "integer", "minimum": 0 },
|
|
104
|
+
"passthrough": { "type": "integer", "minimum": 0 },
|
|
105
|
+
"by_category": {
|
|
106
|
+
"type": "object",
|
|
107
|
+
"additionalProperties": { "type": "integer", "minimum": 0 }
|
|
84
108
|
}
|
|
85
109
|
},
|
|
86
110
|
"additionalProperties": false
|
|
@@ -87,6 +87,25 @@
|
|
|
87
87
|
"uniqueItems": true,
|
|
88
88
|
"minItems": 1
|
|
89
89
|
},
|
|
90
|
+
"phase_prerequisites": {
|
|
91
|
+
"type": "object",
|
|
92
|
+
"additionalProperties": {
|
|
93
|
+
"type": "object",
|
|
94
|
+
"properties": {
|
|
95
|
+
"required_artifacts": {
|
|
96
|
+
"type": "array",
|
|
97
|
+
"items": { "type": "string", "minLength": 1 },
|
|
98
|
+
"uniqueItems": true
|
|
99
|
+
},
|
|
100
|
+
"required_phase_exits": {
|
|
101
|
+
"type": "array",
|
|
102
|
+
"items": { "type": "string", "minLength": 1 },
|
|
103
|
+
"uniqueItems": true
|
|
104
|
+
}
|
|
105
|
+
},
|
|
106
|
+
"additionalProperties": false
|
|
107
|
+
}
|
|
108
|
+
},
|
|
90
109
|
"roles": {
|
|
91
110
|
"type": "array",
|
|
92
111
|
"items": { "type": "string", "minLength": 1 },
|
|
@@ -5,6 +5,24 @@ description: Use before implementation work to turn operator briefings into an a
|
|
|
5
5
|
|
|
6
6
|
# Brainstorming
|
|
7
7
|
|
|
8
|
+
## Model Annotation
|
|
9
|
+
When multi-model mode is enabled:
|
|
10
|
+
- **Opus** for design exploration (brainstorm)
|
|
11
|
+
- **Opus** for design decisions (design)
|
|
12
|
+
|
|
13
|
+
## Command Routing
|
|
14
|
+
Follow the Canonical Command Matrix in `hooks/routing-matrix.json`.
|
|
15
|
+
- Large commands (test runners, builds, diffs, dependency trees, linting) → context-mode tools
|
|
16
|
+
- Small commands (git status, ls, pwd, wazir CLI) → native Bash
|
|
17
|
+
- If context-mode unavailable, fall back to native Bash with warning
|
|
18
|
+
|
|
19
|
+
## Codebase Exploration
|
|
20
|
+
1. Query `wazir index search-symbols <query>` first
|
|
21
|
+
2. Use `wazir recall file <path> --tier L1` for targeted reads
|
|
22
|
+
3. Fall back to direct file reads ONLY for files identified by index queries
|
|
23
|
+
4. Maximum 10 direct file reads without a justifying index query
|
|
24
|
+
5. If no index exists: `wazir index build && wazir index summarize --tier all`
|
|
25
|
+
|
|
8
26
|
Read `input/` first, then inspect only the repo surfaces needed to understand the request.
|
|
9
27
|
|
|
10
28
|
Rules:
|
|
@@ -21,158 +39,3 @@ Required outputs:
|
|
|
21
39
|
- open questions or resolved assumptions
|
|
22
40
|
- explicit recommendation and rejected alternatives
|
|
23
41
|
|
|
24
|
-
---
|
|
25
|
-
|
|
26
|
-
## Team Mode: Agent Teams Structured Dialogue
|
|
27
|
-
|
|
28
|
-
**Condition:** Only activate when `team_mode: parallel` in `.wazir/runs/latest/run-config.yaml`. Otherwise, use the default single-agent brainstorming above.
|
|
29
|
-
|
|
30
|
-
This mode uses **Agent Teams** (experimental, Claude Code + Opus 4.6) to run a
|
|
31
|
-
multi-agent brainstorming session. Your role is the **Arbiter** — you coordinate
|
|
32
|
-
the dialogue, evaluate convergence, and signal when to stop. You do NOT generate
|
|
33
|
-
design ideas yourself.
|
|
34
|
-
|
|
35
|
-
### Infrastructure: Claude Code Agent Teams
|
|
36
|
-
|
|
37
|
-
This skill uses **Agent Teams** — not subagents. The distinction matters:
|
|
38
|
-
|
|
39
|
-
| | Subagents (Task tool) | Agent Teams |
|
|
40
|
-
|---|---|---|
|
|
41
|
-
| **Lifecycle** | Spawn, return result, die | Full independent sessions that persist for team lifetime |
|
|
42
|
-
| **Communication** | Report back to parent only | Direct peer-to-peer messaging via `SendMessage` |
|
|
43
|
-
| **Coordination** | Parent manages everything | Shared task list with self-coordination |
|
|
44
|
-
|
|
45
|
-
**Critical constraint:** Text output from teammates is NOT visible to the team.
|
|
46
|
-
Teammates MUST use `SendMessage` to communicate with each other. Regular text
|
|
47
|
-
output is only visible in a teammate's own terminal pane.
|
|
48
|
-
|
|
49
|
-
### Prerequisites
|
|
50
|
-
|
|
51
|
-
```bash
|
|
52
|
-
# Check if Agent Teams is enabled
|
|
53
|
-
echo $CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
If not set (empty), tell the user:
|
|
57
|
-
|
|
58
|
-
> Agent Teams is not enabled. Run this command and restart Claude Code:
|
|
59
|
-
> ```bash
|
|
60
|
-
> claude config set env.CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS 1
|
|
61
|
-
> ```
|
|
62
|
-
|
|
63
|
-
Then fall back to single-agent brainstorming (rules 1-5 above).
|
|
64
|
-
|
|
65
|
-
### Step 1: Create the Team
|
|
66
|
-
|
|
67
|
-
Derive `<concept-slug>` from the briefing topic (lowercased, hyphens for spaces).
|
|
68
|
-
|
|
69
|
-
Use `TeamCreate` to initialize the team with the name `wazir-brainstorm-<concept-slug>`.
|
|
70
|
-
|
|
71
|
-
### Step 2: Spawn Teammates
|
|
72
|
-
|
|
73
|
-
Spawn three teammates using the `Agent` tool with the `team_name` parameter set
|
|
74
|
-
to `wazir-brainstorm-<concept-slug>`. Each agent receives a detailed system
|
|
75
|
-
prompt via the `prompt` parameter.
|
|
76
|
-
|
|
77
|
-
#### Free Thinker
|
|
78
|
-
|
|
79
|
-
```
|
|
80
|
-
Agent(
|
|
81
|
-
team_name: "wazir-brainstorm-<concept-slug>",
|
|
82
|
-
prompt: "You are the Free Thinker in a Wazir brainstorming session.
|
|
83
|
-
Your job is to propose creative design directions without self-censoring.
|
|
84
|
-
Open new threads, explore possibilities, make connections. Communicate
|
|
85
|
-
ONLY via SendMessage — your text output is not visible to the team.
|
|
86
|
-
After proposing a direction, wait for the Grounder's response before
|
|
87
|
-
opening a new one."
|
|
88
|
-
)
|
|
89
|
-
```
|
|
90
|
-
|
|
91
|
-
#### Grounder
|
|
92
|
-
|
|
93
|
-
```
|
|
94
|
-
Agent(
|
|
95
|
-
team_name: "wazir-brainstorm-<concept-slug>",
|
|
96
|
-
prompt: "You are the Grounder in a Wazir brainstorming session. Your
|
|
97
|
-
job is to challenge every proposal from the Free Thinker with practical
|
|
98
|
-
concerns: feasibility, complexity, risk, alternatives. After 3-5
|
|
99
|
-
exchanges on a direction, decide: pursue, park, or redirect.
|
|
100
|
-
Communicate ONLY via SendMessage — your text output is not visible to
|
|
101
|
-
the team."
|
|
102
|
-
)
|
|
103
|
-
```
|
|
104
|
-
|
|
105
|
-
#### Synthesizer
|
|
106
|
-
|
|
107
|
-
```
|
|
108
|
-
Agent(
|
|
109
|
-
team_name: "wazir-brainstorm-<concept-slug>",
|
|
110
|
-
prompt: "You are the Synthesizer in a Wazir brainstorming session.
|
|
111
|
-
You NEVER participate in dialogue — only observe. Read all SendMessage
|
|
112
|
-
traffic between Free Thinker and Grounder. When the Arbiter signals
|
|
113
|
-
convergence, write the final design document to
|
|
114
|
-
.wazir/runs/latest/clarified/design.md with: design summary, pursued
|
|
115
|
-
directions, rejected alternatives, open questions, recommendation."
|
|
116
|
-
)
|
|
117
|
-
```
|
|
118
|
-
|
|
119
|
-
### Step 3: Coordinate the Dialogue (You Are the Arbiter)
|
|
120
|
-
|
|
121
|
-
1. Use `SendMessage` to tell the Free Thinker to open the first direction
|
|
122
|
-
based on the briefing, research brief, and hardened spec.
|
|
123
|
-
2. Monitor exchanges via `SendMessage`. Do NOT generate ideas — only
|
|
124
|
-
coordinate, nudge, and evaluate.
|
|
125
|
-
3. After each direction is explored (3-5 exchanges), the Grounder decides:
|
|
126
|
-
**pursue**, **park**, or **redirect**.
|
|
127
|
-
4. After depth-appropriate directions are explored:
|
|
128
|
-
|
|
129
|
-
| Depth | Directions to explore | Exchanges per direction |
|
|
130
|
-
|-------|-----------------------|------------------------|
|
|
131
|
-
| Standard | 3-5 | 3-5 exchanges |
|
|
132
|
-
| Deep | 5-8 | 5-8 exchanges |
|
|
133
|
-
|
|
134
|
-
5. **Signal convergence:** Use `SendMessage` to tell the Synthesizer to
|
|
135
|
-
produce the final design document.
|
|
136
|
-
6. Wait for the Synthesizer to write the design to
|
|
137
|
-
`.wazir/runs/latest/clarified/design.md` (if inside a pipeline run) or
|
|
138
|
-
`docs/plans/YYYY-MM-DD-<topic>-design.md` (if standalone).
|
|
139
|
-
|
|
140
|
-
### Step 4: Convergence Criteria
|
|
141
|
-
|
|
142
|
-
The dialogue has converged when:
|
|
143
|
-
|
|
144
|
-
1. Enough directions have been explored for the depth level
|
|
145
|
-
2. The pursued directions have genuine range (not variations of the same idea)
|
|
146
|
-
3. The Grounder signals satisfaction
|
|
147
|
-
4. Further dialogue is producing diminishing returns
|
|
148
|
-
|
|
149
|
-
Early rounds should be more divergent. Later rounds more convergent.
|
|
150
|
-
|
|
151
|
-
### Step 5: Clean Up
|
|
152
|
-
|
|
153
|
-
Use `TeamDelete` to tear down the team after the Synthesizer has written the
|
|
154
|
-
design document.
|
|
155
|
-
|
|
156
|
-
### Constraints
|
|
157
|
-
|
|
158
|
-
- Text output from teammates is NOT visible to the team — they MUST use
|
|
159
|
-
`SendMessage`
|
|
160
|
-
- The Arbiter (you) coordinates but does NOT generate ideas
|
|
161
|
-
- The Synthesizer NEVER sends messages — only reads and writes files
|
|
162
|
-
- Free Thinker and Grounder exchange via broadcast (all agents see every
|
|
163
|
-
message)
|
|
164
|
-
|
|
165
|
-
### Output
|
|
166
|
-
|
|
167
|
-
The Synthesizer produces the design document following the same format as
|
|
168
|
-
single-agent brainstorming:
|
|
169
|
-
|
|
170
|
-
- Design summary
|
|
171
|
-
- Pursued directions with rationale
|
|
172
|
-
- Rejected alternatives with reasons
|
|
173
|
-
- Open questions or resolved assumptions
|
|
174
|
-
- Explicit recommendation
|
|
175
|
-
|
|
176
|
-
After the design is written, submit it for the design-review loop
|
|
177
|
-
(`--mode design-review`). After design-review is complete, hand off to
|
|
178
|
-
`wz:writing-plans`.
|