specweave 1.0.340 → 1.0.342
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/bin/specweave.js +11 -0
- package/dist/src/cli/commands/init.d.ts.map +1 -1
- package/dist/src/cli/commands/init.js +34 -3
- package/dist/src/cli/commands/init.js.map +1 -1
- package/dist/src/cli/commands/resolve-structure.d.ts +28 -0
- package/dist/src/cli/commands/resolve-structure.d.ts.map +1 -0
- package/dist/src/cli/commands/resolve-structure.js +85 -0
- package/dist/src/cli/commands/resolve-structure.js.map +1 -0
- package/dist/src/cli/helpers/init/directory-structure.d.ts +2 -2
- package/dist/src/cli/helpers/init/directory-structure.d.ts.map +1 -1
- package/dist/src/cli/helpers/init/directory-structure.js +3 -1
- package/dist/src/cli/helpers/init/directory-structure.js.map +1 -1
- package/dist/src/cli/helpers/init/repository-setup.d.ts +5 -1
- package/dist/src/cli/helpers/init/repository-setup.d.ts.map +1 -1
- package/dist/src/cli/helpers/init/repository-setup.js +207 -12
- package/dist/src/cli/helpers/init/repository-setup.js.map +1 -1
- package/dist/src/cli/helpers/init/summary-banner.d.ts +4 -0
- package/dist/src/cli/helpers/init/summary-banner.d.ts.map +1 -1
- package/dist/src/cli/helpers/init/summary-banner.js +8 -0
- package/dist/src/cli/helpers/init/summary-banner.js.map +1 -1
- package/dist/src/cli/helpers/init/types.d.ts +5 -0
- package/dist/src/cli/helpers/init/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/plugins/specweave/hooks/hooks.json +9 -0
- package/plugins/specweave/hooks/v2/guards/increment-existence-guard.sh +150 -0
- package/plugins/specweave/skills/increment/SKILL.md +26 -0
- package/plugins/specweave/skills/team-build/SKILL.md +6 -0
- package/plugins/specweave/skills/team-lead/SKILL.md +98 -8
|
@@ -9,6 +9,15 @@
|
|
|
9
9
|
"command": "bash -c 'W=\"${CLAUDE_PLUGIN_ROOT}/hooks/universal/fail-fast-wrapper.sh\"; S=\"${CLAUDE_PLUGIN_ROOT}/hooks/v2/dispatchers/pre-tool-use.sh\"; [[ -x \"$W\" ]] && exec \"$W\" \"$S\" || (cat >/dev/null && printf \"{\\\"decision\\\":\\\"allow\\\"}\")'"
|
|
10
10
|
}
|
|
11
11
|
]
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"matcher": "TeamCreate",
|
|
15
|
+
"hooks": [
|
|
16
|
+
{
|
|
17
|
+
"type": "command",
|
|
18
|
+
"command": "bash -c 'W=\"${CLAUDE_PLUGIN_ROOT}/hooks/universal/fail-fast-wrapper.sh\"; S=\"${CLAUDE_PLUGIN_ROOT}/hooks/v2/guards/increment-existence-guard.sh\"; [[ -x \"$W\" ]] && exec \"$W\" \"$S\" || (cat >/dev/null && printf \"{\\\"decision\\\":\\\"allow\\\"}\")'"
|
|
19
|
+
}
|
|
20
|
+
]
|
|
12
21
|
}
|
|
13
22
|
],
|
|
14
23
|
"SessionStart": [
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# increment-existence-guard.sh - Enforces spec-first principle for team creation
|
|
3
|
+
#
|
|
4
|
+
# PURPOSE:
|
|
5
|
+
# Team creation (TeamCreate) MUST NOT proceed until at least one increment
|
|
6
|
+
# exists with a substantive spec.md. This enforces the core SpecWeave principle:
|
|
7
|
+
# /sw:increment → /sw:team-lead (never skip the spec phase)
|
|
8
|
+
#
|
|
9
|
+
# Without a spec, agents have no source of truth for scope, acceptance criteria,
|
|
10
|
+
# or task boundaries. Skipping /sw:increment leads to uncoordinated implementation
|
|
11
|
+
# where agents infer scope from natural language alone.
|
|
12
|
+
#
|
|
13
|
+
# DETECTION:
|
|
14
|
+
# - Fires on TeamCreate tool calls (global via hooks.json + skill-scoped via frontmatter)
|
|
15
|
+
# - Scans .specweave/increments/ and repositories/*/*/.specweave/increments/
|
|
16
|
+
# - Requires spec.md to pass ALL checks:
|
|
17
|
+
# 1. File exists and has >500 bytes of content
|
|
18
|
+
# 2. No template markers (exact strings or {{VAR}} patterns)
|
|
19
|
+
# 3. At least one acceptance criterion (AC- pattern)
|
|
20
|
+
# - BLOCKS if no qualifying increment found
|
|
21
|
+
# - ALLOWS if at least one passes all checks
|
|
22
|
+
#
|
|
23
|
+
# @since 1.0.342
|
|
24
|
+
|
|
25
|
+
set -e
|
|
26
|
+
|
|
27
|
+
INPUT=$(cat)
|
|
28
|
+
TOOL_NAME=$(echo "$INPUT" | jq -r '.tool_name // .toolName // ""')
|
|
29
|
+
|
|
30
|
+
# Only check TeamCreate
|
|
31
|
+
if [[ "$TOOL_NAME" != "TeamCreate" ]]; then
|
|
32
|
+
echo '{"decision":"allow"}'
|
|
33
|
+
exit 0
|
|
34
|
+
fi
|
|
35
|
+
|
|
36
|
+
# Template markers — spec.md with these is a template, not a real spec
|
|
37
|
+
TEMPLATE_MARKERS=(
|
|
38
|
+
"[Story Title]"
|
|
39
|
+
"[user type]"
|
|
40
|
+
"[goal]"
|
|
41
|
+
"[benefit]"
|
|
42
|
+
"[Specific, testable criterion]"
|
|
43
|
+
"[Component 1]"
|
|
44
|
+
"[High-level description"
|
|
45
|
+
"{{RESOLVED_PROJECT}}"
|
|
46
|
+
"TEMPLATE FILE"
|
|
47
|
+
)
|
|
48
|
+
|
|
49
|
+
check_spec() {
|
|
50
|
+
local spec_path="$1"
|
|
51
|
+
if [[ ! -f "$spec_path" ]]; then
|
|
52
|
+
return 1
|
|
53
|
+
fi
|
|
54
|
+
|
|
55
|
+
# Check 1: Minimum size (500 bytes — a real spec with user stories and ACs)
|
|
56
|
+
local size
|
|
57
|
+
size=$(wc -c < "$spec_path" 2>/dev/null || echo "0")
|
|
58
|
+
size=$(echo "$size" | tr -d '[:space:]')
|
|
59
|
+
if [[ "$size" -le 500 ]]; then
|
|
60
|
+
return 1
|
|
61
|
+
fi
|
|
62
|
+
|
|
63
|
+
# Check 2: Scan FULL file for template markers (not just first 10 lines)
|
|
64
|
+
local content
|
|
65
|
+
content=$(cat "$spec_path" 2>/dev/null || echo "")
|
|
66
|
+
|
|
67
|
+
# Exact template marker strings
|
|
68
|
+
for marker in "${TEMPLATE_MARKERS[@]}"; do
|
|
69
|
+
if [[ "$content" == *"$marker"* ]]; then
|
|
70
|
+
return 1
|
|
71
|
+
fi
|
|
72
|
+
done
|
|
73
|
+
|
|
74
|
+
# Regex: {{UPPERCASE_VAR}} mustache placeholders (e.g., {{FEATURE_NAME}})
|
|
75
|
+
if echo "$content" | grep -qE '\{\{[A-Z_]+\}\}' 2>/dev/null; then
|
|
76
|
+
return 1
|
|
77
|
+
fi
|
|
78
|
+
|
|
79
|
+
# Regex: High count of [Bracket Placeholders] suggests unfilled template
|
|
80
|
+
# (threshold: 4+ to avoid false positives from markdown links [text](url))
|
|
81
|
+
local bracket_count
|
|
82
|
+
bracket_count=$(echo "$content" | grep -cE '\[[A-Z][^]]{2,}\]' 2>/dev/null || true)
|
|
83
|
+
bracket_count=$(echo "$bracket_count" | tail -1 | tr -d '[:space:]')
|
|
84
|
+
if [[ -n "$bracket_count" ]] && [[ "$bracket_count" -ge 4 ]]; then
|
|
85
|
+
return 1
|
|
86
|
+
fi
|
|
87
|
+
|
|
88
|
+
# Check 3: Structural completeness — at least one acceptance criterion
|
|
89
|
+
if ! grep -qE 'AC-US[0-9]+-[0-9]+|AC-[0-9]+' "$spec_path" 2>/dev/null; then
|
|
90
|
+
return 1
|
|
91
|
+
fi
|
|
92
|
+
|
|
93
|
+
return 0
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
# Search for qualifying increments
|
|
97
|
+
FOUND=false
|
|
98
|
+
|
|
99
|
+
# Single-repo increments
|
|
100
|
+
if [[ -d ".specweave/increments" ]]; then
|
|
101
|
+
while IFS= read -r spec; do
|
|
102
|
+
if check_spec "$spec"; then
|
|
103
|
+
FOUND=true
|
|
104
|
+
break
|
|
105
|
+
fi
|
|
106
|
+
done < <(find .specweave/increments -maxdepth 2 -name "spec.md" 2>/dev/null)
|
|
107
|
+
fi
|
|
108
|
+
|
|
109
|
+
# Multi-repo increments
|
|
110
|
+
if [[ "$FOUND" == "false" ]] && [[ -d "repositories" ]]; then
|
|
111
|
+
while IFS= read -r spec; do
|
|
112
|
+
if check_spec "$spec"; then
|
|
113
|
+
FOUND=true
|
|
114
|
+
break
|
|
115
|
+
fi
|
|
116
|
+
done < <(find repositories -path "*/.specweave/increments/*/spec.md" -maxdepth 6 2>/dev/null)
|
|
117
|
+
fi
|
|
118
|
+
|
|
119
|
+
if [[ "$FOUND" == "true" ]]; then
|
|
120
|
+
echo '{"decision":"allow"}'
|
|
121
|
+
exit 0
|
|
122
|
+
fi
|
|
123
|
+
|
|
124
|
+
# BLOCK — no qualifying increment found
|
|
125
|
+
REASON="SPEC-FIRST ENFORCEMENT: Increment Required Before Team Creation
|
|
126
|
+
|
|
127
|
+
TeamCreate CANNOT proceed without an existing increment with a substantive spec.md.
|
|
128
|
+
|
|
129
|
+
No qualifying increment found. A valid spec.md must have:
|
|
130
|
+
- At least 500 bytes of real content (not templates)
|
|
131
|
+
- No unfilled template markers or {{PLACEHOLDER}} patterns
|
|
132
|
+
- At least one acceptance criterion (AC-USx-xx pattern)
|
|
133
|
+
|
|
134
|
+
Searched:
|
|
135
|
+
- .specweave/increments/*/spec.md
|
|
136
|
+
- repositories/*/*/.specweave/increments/*/spec.md
|
|
137
|
+
|
|
138
|
+
REQUIRED ACTION:
|
|
139
|
+
1. Run: /sw:increment \"your feature description\"
|
|
140
|
+
2. Review and approve the spec, plan, and tasks
|
|
141
|
+
3. THEN run: /sw:team-lead to parallelize execution
|
|
142
|
+
|
|
143
|
+
WHY: Without a spec, agents have no source of truth for scope, acceptance criteria,
|
|
144
|
+
or task boundaries. Skipping /sw:increment leads to uncoordinated implementation.
|
|
145
|
+
|
|
146
|
+
Workflow: /sw:increment → /sw:team-lead → /sw:done"
|
|
147
|
+
|
|
148
|
+
REASON_ESCAPED=$(echo "$REASON" | jq -Rs .)
|
|
149
|
+
echo "{\"decision\":\"block\",\"reason\":${REASON_ESCAPED}}"
|
|
150
|
+
exit 0
|
|
@@ -56,6 +56,7 @@ Increment planning produces specs, plans, and task breakdowns that require user
|
|
|
56
56
|
STEP 0A: Discipline Check (BLOCKING)
|
|
57
57
|
STEP 0B: WIP Enforcement
|
|
58
58
|
STEP 0C: Tech Stack Detection
|
|
59
|
+
STEP 0D: Structure Resolution (if deferred from init)
|
|
59
60
|
STEP 1: Pre-flight (TDD mode, multi-project, Deep Interview check)
|
|
60
61
|
STEP 2: Project Context (resolve project/board)
|
|
61
62
|
STEP 3: Create Increment (via Template API) ← folder + ID exist after this
|
|
@@ -126,6 +127,31 @@ Auto-detect from project files:
|
|
|
126
127
|
|
|
127
128
|
If detection fails, ask user.
|
|
128
129
|
|
|
130
|
+
## Step 0D: Structure Resolution (if deferred)
|
|
131
|
+
|
|
132
|
+
Check if the user deferred their repository structure decision during init (greenfield projects):
|
|
133
|
+
|
|
134
|
+
```bash
|
|
135
|
+
DEFERRED=$(jq -r '.project.structureDeferred // false' .specweave/config.json 2>/dev/null)
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
If `DEFERRED` is `true`, this is the user's **first increment** and they need to define their project structure.
|
|
139
|
+
|
|
140
|
+
Based on the user's feature description and what you've learned from tech stack detection:
|
|
141
|
+
|
|
142
|
+
1. **Ask the user** about their repository structure:
|
|
143
|
+
- **Single repo** — one repository (monorepo or standard project)
|
|
144
|
+
- **Multiple repos** — microservices, EDA, parent/child architecture
|
|
145
|
+
|
|
146
|
+
2. **Run the resolve command** based on their answer:
|
|
147
|
+
```bash
|
|
148
|
+
specweave resolve-structure --type single
|
|
149
|
+
# OR
|
|
150
|
+
specweave resolve-structure --type multiple
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
3. This clears the deferred flag and configures the project accordingly. Continue with the normal increment flow.
|
|
154
|
+
|
|
129
155
|
## Step 1: Pre-flight Checks
|
|
130
156
|
|
|
131
157
|
```bash
|
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: "Preset-driven team building — spawn coordinated multi-agent teams from battle-tested presets for full-stack, review, testing, TDD, and migration workflows"
|
|
3
|
+
hooks:
|
|
4
|
+
PreToolUse:
|
|
5
|
+
- matcher: TeamCreate
|
|
6
|
+
hooks:
|
|
7
|
+
- type: command
|
|
8
|
+
command: bash plugins/specweave/hooks/v2/guards/increment-existence-guard.sh
|
|
3
9
|
---
|
|
4
10
|
|
|
5
11
|
# Team Build
|
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: Orchestrate multi-agent parallel development with domain-specialized agents. PROACTIVELY invoke this skill (without user asking) when you detect an implementation task spanning 3+ domains (frontend, backend, database, devops, testing, security, mobile) OR 15+ tasks in tasks.md. Warn the user about higher token cost but recommend it for quality. Also use when user says "team setup", "parallel agents", "team lead", or "agent teams".
|
|
3
|
+
hooks:
|
|
4
|
+
PreToolUse:
|
|
5
|
+
- matcher: TeamCreate
|
|
6
|
+
hooks:
|
|
7
|
+
- type: command
|
|
8
|
+
command: bash plugins/specweave/hooks/v2/guards/increment-existence-guard.sh
|
|
3
9
|
---
|
|
4
10
|
|
|
5
11
|
# Team Lead
|
|
@@ -22,6 +28,52 @@ description: Orchestrate multi-agent parallel development with domain-specialize
|
|
|
22
28
|
|
|
23
29
|
---
|
|
24
30
|
|
|
31
|
+
## 0. Increment Pre-Flight (BLOCKING)
|
|
32
|
+
|
|
33
|
+
**CRITICAL: /sw:team-lead REQUIRES an existing increment with a substantive spec.md.**
|
|
34
|
+
A PreToolUse guard on TeamCreate will BLOCK team creation if no increment exists.
|
|
35
|
+
|
|
36
|
+
**You MUST verify an increment exists BEFORE proceeding to Step 1.**
|
|
37
|
+
|
|
38
|
+
### Check for Existing Increment
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
# Single-repo
|
|
42
|
+
find .specweave/increments -maxdepth 2 -name "spec.md" 2>/dev/null | head -5
|
|
43
|
+
|
|
44
|
+
# Multi-repo (umbrella)
|
|
45
|
+
find repositories -path "*/.specweave/increments/*/spec.md" -maxdepth 6 2>/dev/null | head -5
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### If NO increment exists → Auto-invoke /sw:increment
|
|
49
|
+
|
|
50
|
+
Do NOT ask permission. Invoke the increment skill with the user's feature description:
|
|
51
|
+
|
|
52
|
+
```typescript
|
|
53
|
+
Skill({ skill: "sw:increment", args: "the user's feature description" })
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
Wait for /sw:increment to complete (spec.md, plan.md, tasks.md created and approved).
|
|
57
|
+
Then continue to Step 1.
|
|
58
|
+
|
|
59
|
+
If /sw:increment fails (user rejects plan, skill errors, etc.): **STOP. Do NOT proceed.**
|
|
60
|
+
Report the failure to the user and ask them to run `/sw:increment` manually.
|
|
61
|
+
|
|
62
|
+
### If increment exists → Read the master spec
|
|
63
|
+
|
|
64
|
+
Read the increment's spec.md. This is the **source of truth** for all agent work:
|
|
65
|
+
- Scope and boundaries
|
|
66
|
+
- User stories and acceptance criteria
|
|
67
|
+
- Task breakdown and dependencies
|
|
68
|
+
|
|
69
|
+
Store the increment path as `MASTER_INCREMENT_PATH` — you will reference it in agent prompts.
|
|
70
|
+
|
|
71
|
+
**WHY THIS MATTERS**: Without a spec, agents infer scope from natural language alone.
|
|
72
|
+
This leads to uncoordinated implementation, scope creep, and missing acceptance criteria.
|
|
73
|
+
The spec-first principle exists because specs are the contract between user intent and agent execution.
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
25
77
|
## 1. Tool Reference
|
|
26
78
|
|
|
27
79
|
| Action | Tool | Parameters |
|
|
@@ -275,6 +327,12 @@ Each agent receives a detailed prompt that includes its skill invocations, file
|
|
|
275
327
|
```
|
|
276
328
|
You are the FRONTEND agent for increment [INCREMENT_ID].
|
|
277
329
|
|
|
330
|
+
MASTER SPEC (SOURCE OF TRUTH):
|
|
331
|
+
The feature is fully specified in [MASTER_INCREMENT_PATH]/spec.md.
|
|
332
|
+
This spec defines scope, user stories, and acceptance criteria.
|
|
333
|
+
Your work MUST satisfy the ACs relevant to your domain.
|
|
334
|
+
Read the master spec BEFORE planning any work.
|
|
335
|
+
|
|
278
336
|
SKILLS TO INVOKE:
|
|
279
337
|
Skill({ skill: "frontend:architect" })
|
|
280
338
|
Skill({ skill: "frontend:nextjs" }) // if Next.js project
|
|
@@ -302,7 +360,7 @@ WORKFLOW:
|
|
|
302
360
|
1. Set working directory to your assigned repo: cd repositories/{ORG}/{repo-name}
|
|
303
361
|
2. If .specweave/ doesn't exist in your repo, run: specweave init
|
|
304
362
|
3. Create YOUR increment in YOUR repo: .specweave/increments/[ID]/
|
|
305
|
-
4. Read the
|
|
363
|
+
4. Read the MASTER SPEC at [MASTER_INCREMENT_PATH]/spec.md for scope and ACs
|
|
306
364
|
5. Verify services are running and accessible (check dev server, API endpoints)
|
|
307
365
|
6. Wait for contract artifacts if Phase 1 is active:
|
|
308
366
|
- Read src/types/ for shared interfaces
|
|
@@ -335,6 +393,12 @@ RULES:
|
|
|
335
393
|
```
|
|
336
394
|
You are the BACKEND agent for increment [INCREMENT_ID].
|
|
337
395
|
|
|
396
|
+
MASTER SPEC (SOURCE OF TRUTH):
|
|
397
|
+
The feature is fully specified in [MASTER_INCREMENT_PATH]/spec.md.
|
|
398
|
+
This spec defines scope, user stories, and acceptance criteria.
|
|
399
|
+
Your work MUST satisfy the ACs relevant to your domain.
|
|
400
|
+
Read the master spec BEFORE planning any work.
|
|
401
|
+
|
|
338
402
|
SKILLS TO INVOKE:
|
|
339
403
|
Skill({ skill: "sw:architect" })
|
|
340
404
|
Skill({ skill: "infra:devops" }) // if deployment config needed
|
|
@@ -360,7 +424,7 @@ WORKFLOW:
|
|
|
360
424
|
1. Set working directory to your assigned repo: cd repositories/{ORG}/{repo-name}
|
|
361
425
|
2. If .specweave/ doesn't exist in your repo, run: specweave init
|
|
362
426
|
3. Create YOUR increment in YOUR repo: .specweave/increments/[ID]/
|
|
363
|
-
4. Read the
|
|
427
|
+
4. Read the MASTER SPEC at [MASTER_INCREMENT_PATH]/spec.md for scope and ACs
|
|
364
428
|
5. Verify services are running and accessible (database, auth provider, external APIs)
|
|
365
429
|
6. Wait for contract artifacts if Phase 1 is active:
|
|
366
430
|
- Read prisma/schema.prisma for database schema
|
|
@@ -394,6 +458,12 @@ RULES:
|
|
|
394
458
|
```
|
|
395
459
|
You are the DATABASE agent for increment [INCREMENT_ID].
|
|
396
460
|
|
|
461
|
+
MASTER SPEC (SOURCE OF TRUTH):
|
|
462
|
+
The feature is fully specified in [MASTER_INCREMENT_PATH]/spec.md.
|
|
463
|
+
This spec defines scope, user stories, and acceptance criteria.
|
|
464
|
+
Your work MUST satisfy the ACs relevant to your domain.
|
|
465
|
+
Read the master spec BEFORE planning any work.
|
|
466
|
+
|
|
397
467
|
SKILLS TO INVOKE:
|
|
398
468
|
Skill({ skill: "sw:architect" })
|
|
399
469
|
|
|
@@ -411,7 +481,7 @@ WORKFLOW:
|
|
|
411
481
|
1. Set working directory to your assigned repo: cd repositories/{ORG}/{repo-name}
|
|
412
482
|
2. If .specweave/ doesn't exist in your repo, run: specweave init
|
|
413
483
|
3. Create YOUR increment in YOUR repo: .specweave/increments/[ID]/
|
|
414
|
-
4. Read the
|
|
484
|
+
4. Read the MASTER SPEC at [MASTER_INCREMENT_PATH]/spec.md for scope and ACs
|
|
415
485
|
5. Design database schema changes
|
|
416
486
|
6. Create plan files (plan.md, tasks.md) for your increment
|
|
417
487
|
7. Send plan to team-lead and WAIT for approval:
|
|
@@ -444,6 +514,12 @@ RULES:
|
|
|
444
514
|
```
|
|
445
515
|
You are the TESTING agent for increment [INCREMENT_ID].
|
|
446
516
|
|
|
517
|
+
MASTER SPEC (SOURCE OF TRUTH):
|
|
518
|
+
The feature is fully specified in [MASTER_INCREMENT_PATH]/spec.md.
|
|
519
|
+
This spec defines scope, user stories, and acceptance criteria.
|
|
520
|
+
Your tests MUST cover ALL ACs from the master spec.
|
|
521
|
+
Read the master spec BEFORE planning any work.
|
|
522
|
+
|
|
447
523
|
SKILLS TO INVOKE:
|
|
448
524
|
Skill({ skill: "testing:qa" })
|
|
449
525
|
Skill({ skill: "testing:e2e" }) // for E2E test suites
|
|
@@ -467,7 +543,7 @@ WORKFLOW:
|
|
|
467
543
|
1. Set working directory to your assigned repo: cd repositories/{ORG}/{repo-name}
|
|
468
544
|
2. If .specweave/ doesn't exist in your repo, run: specweave init
|
|
469
545
|
3. Create YOUR increment in YOUR repo: .specweave/increments/[ID]/
|
|
470
|
-
4. Read the
|
|
546
|
+
4. Read the MASTER SPEC at [MASTER_INCREMENT_PATH]/spec.md for scope and ACs
|
|
471
547
|
5. Wait for ALL other agents to produce initial code
|
|
472
548
|
6. Create plan files (plan.md, tasks.md) for your increment
|
|
473
549
|
7. Send plan to team-lead and WAIT for approval:
|
|
@@ -500,6 +576,12 @@ RULES:
|
|
|
500
576
|
```
|
|
501
577
|
You are the SECURITY agent for increment [INCREMENT_ID].
|
|
502
578
|
|
|
579
|
+
MASTER SPEC (SOURCE OF TRUTH):
|
|
580
|
+
The feature is fully specified in [MASTER_INCREMENT_PATH]/spec.md.
|
|
581
|
+
This spec defines scope, user stories, and acceptance criteria.
|
|
582
|
+
Your security hardening MUST address all ACs from the master spec.
|
|
583
|
+
Read the master spec BEFORE planning any work.
|
|
584
|
+
|
|
503
585
|
SKILLS TO INVOKE:
|
|
504
586
|
Skill({ skill: "sw:security" })
|
|
505
587
|
Skill({ skill: "sw:security-patterns" })
|
|
@@ -519,7 +601,7 @@ WORKFLOW:
|
|
|
519
601
|
1. Set working directory to your assigned repo: cd repositories/{ORG}/{repo-name}
|
|
520
602
|
2. If .specweave/ doesn't exist in your repo, run: specweave init
|
|
521
603
|
3. Create YOUR increment in YOUR repo: .specweave/increments/[ID]/
|
|
522
|
-
4. Read the
|
|
604
|
+
4. Read the MASTER SPEC at [MASTER_INCREMENT_PATH]/spec.md for scope and ACs
|
|
523
605
|
5. Audit code produced by other agents for security issues
|
|
524
606
|
6. Create plan files (plan.md, tasks.md) for your increment
|
|
525
607
|
7. Send plan to team-lead and WAIT for approval:
|
|
@@ -739,9 +821,12 @@ Orchestrator Final Check:
|
|
|
739
821
|
```
|
|
740
822
|
/sw:team-lead "Build checkout flow"
|
|
741
823
|
│
|
|
742
|
-
├── Step
|
|
824
|
+
├── Step 0: VERIFY INCREMENT EXISTS (BLOCKING)
|
|
825
|
+
│ ├── Found? → Read master spec.md as source of truth
|
|
826
|
+
│ └── Missing? → Auto-invoke /sw:increment, wait for completion
|
|
827
|
+
├── Step 1: Analyze feature (from master spec) -> identify domains -> decide increment split
|
|
743
828
|
├── Step 2: Create team via TeamCreate
|
|
744
|
-
├── Step 3: Create per-domain increments
|
|
829
|
+
├── Step 3: Create per-domain increments (derived from master spec)
|
|
745
830
|
├── Step 4: Contract-first spawning (all agents with mode: "bypassPermissions")
|
|
746
831
|
│ ├── Phase 1: Spawn shared + database
|
|
747
832
|
│ │ └── Receive PLAN_READY, review & approve via SendMessage (Section 3b)
|
|
@@ -753,9 +838,13 @@ Orchestrator Final Check:
|
|
|
753
838
|
└── Step 7: Merge and close (/sw:team-merge)
|
|
754
839
|
```
|
|
755
840
|
|
|
841
|
+
**IMPORTANT**: The intended entry point is: `/sw:increment` → `/sw:do` (detects 3+ domains) → `/sw:team-lead`.
|
|
842
|
+
Direct invocation of `/sw:team-lead` without an existing increment will trigger the guard and auto-invoke `/sw:increment`.
|
|
843
|
+
|
|
756
844
|
### --dry-run Output
|
|
757
845
|
|
|
758
|
-
When `--dry-run` is specified, display the proposed plan without executing
|
|
846
|
+
When `--dry-run` is specified, display the proposed plan without executing.
|
|
847
|
+
**Do NOT call TeamCreate in dry-run mode** — just show the formatted plan text.
|
|
759
848
|
|
|
760
849
|
```
|
|
761
850
|
Team Orchestration Plan (DRY RUN)
|
|
@@ -780,6 +869,7 @@ To execute, run without --dry-run.
|
|
|
780
869
|
|
|
781
870
|
| Issue | Cause | Fix |
|
|
782
871
|
|-------|-------|-----|
|
|
872
|
+
| **TeamCreate blocked by guard** | No increment with spec.md exists | Run `/sw:increment "feature"` first, then retry `/sw:team-lead`. The guard requires a substantive spec.md (>200 bytes, not a template) |
|
|
783
873
|
| **Agent stuck on trust folder** | Agent spawned without `bypassPermissions` | ALWAYS use `mode: "bypassPermissions"` — NEVER `mode: "plan"`. Trust prompts require interactive input agents cannot provide |
|
|
784
874
|
| **Agents editing same files** | Overlapping file ownership patterns | Review ownership map; reassign conflicting files to a single owner; use `--dry-run` to validate before launch |
|
|
785
875
|
| **Token cost too high** | Too many agents or overly large prompts | Reduce `--max-agents`; use `--domains` to limit scope; split feature into smaller increments |
|