specrails-core 4.12.0 → 5.0.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/README.md +49 -78
- package/bin/specrails-core.mjs +18 -98
- package/bin/tui-installer.mjs +22 -105
- package/commands/doctor.md +1 -1
- package/dist/installer/cli.js +12 -2
- package/dist/installer/cli.js.map +1 -1
- package/dist/installer/commands/doctor.js +3 -5
- package/dist/installer/commands/doctor.js.map +1 -1
- package/dist/installer/commands/init.js +23 -19
- package/dist/installer/commands/init.js.map +1 -1
- package/dist/installer/commands/update.js +17 -16
- package/dist/installer/commands/update.js.map +1 -1
- package/dist/installer/commands/v5-migration.js +119 -0
- package/dist/installer/commands/v5-migration.js.map +1 -0
- package/dist/installer/phases/install-config.js +3 -6
- package/dist/installer/phases/install-config.js.map +1 -1
- package/dist/installer/phases/manifest.js +2 -6
- package/dist/installer/phases/manifest.js.map +1 -1
- package/dist/installer/phases/prereqs.js +0 -1
- package/dist/installer/phases/prereqs.js.map +1 -1
- package/dist/installer/phases/scaffold.js +38 -148
- package/dist/installer/phases/scaffold.js.map +1 -1
- package/package.json +1 -1
- package/schemas/profile.v1.json +1 -1
- package/templates/agents/sr-architect.md +30 -0
- package/templates/agents/sr-developer.md +21 -8
- package/templates/agents/sr-reviewer.md +44 -31
- package/templates/codex-skills/batch-implement/SKILL.md +9 -32
- package/templates/codex-skills/implement/SKILL.md +61 -143
- package/templates/codex-skills/rails/sr-architect/SKILL.md +38 -20
- package/templates/codex-skills/rails/sr-developer/SKILL.md +29 -10
- package/templates/codex-skills/rails/sr-reviewer/SKILL.md +21 -10
- package/templates/commands/specrails/doctor.md +1 -1
- package/templates/commands/specrails/implement.md +117 -288
- package/templates/commands/specrails/memory-inspect.md +6 -4
- package/templates/commands/specrails/propose-spec.md +1 -1
- package/templates/commands/specrails/refactor-recommender.md +8 -51
- package/templates/commands/specrails/retry.md +12 -48
- package/templates/commands/specrails/telemetry.md +1 -1
- package/templates/gemini-commands/implement.toml +9 -0
- package/templates/profiles/default.json +5 -18
- package/commands/enrich.md +0 -1456
- package/templates/agents/sr-backend-developer.md +0 -91
- package/templates/agents/sr-backend-reviewer.md +0 -152
- package/templates/agents/sr-doc-sync.md +0 -247
- package/templates/agents/sr-frontend-developer.md +0 -85
- package/templates/agents/sr-frontend-reviewer.md +0 -145
- package/templates/agents/sr-merge-resolver.md +0 -195
- package/templates/agents/sr-performance-reviewer.md +0 -186
- package/templates/agents/sr-product-analyst.md +0 -36
- package/templates/agents/sr-product-manager.md +0 -148
- package/templates/agents/sr-security-reviewer.md +0 -191
- package/templates/agents/sr-test-writer.md +0 -176
- package/templates/codex-skills/enrich/SKILL.md +0 -191
- package/templates/codex-skills/merge-resolve/SKILL.md +0 -88
- package/templates/codex-skills/rails/sr-backend-developer/SKILL.md +0 -93
- package/templates/codex-skills/rails/sr-backend-reviewer/SKILL.md +0 -120
- package/templates/codex-skills/rails/sr-doc-sync/SKILL.md +0 -124
- package/templates/codex-skills/rails/sr-frontend-developer/SKILL.md +0 -106
- package/templates/codex-skills/rails/sr-frontend-reviewer/SKILL.md +0 -111
- package/templates/codex-skills/rails/sr-merge-resolver/SKILL.md +0 -156
- package/templates/codex-skills/rails/sr-performance-reviewer/SKILL.md +0 -109
- package/templates/codex-skills/rails/sr-product-analyst/SKILL.md +0 -85
- package/templates/codex-skills/rails/sr-product-manager/SKILL.md +0 -131
- package/templates/codex-skills/rails/sr-security-reviewer/SKILL.md +0 -121
- package/templates/codex-skills/rails/sr-test-writer/SKILL.md +0 -115
- package/templates/commands/specrails/auto-propose-backlog-specs.md +0 -312
- package/templates/commands/specrails/enrich.md +0 -1456
- package/templates/commands/specrails/get-backlog-specs.md +0 -226
- package/templates/commands/specrails/merge-resolve.md +0 -172
- package/templates/commands/specrails/reconfig.md +0 -80
- package/templates/commands/specrails/vpc-drift.md +0 -405
- package/templates/commands/test.md +0 -58
- package/templates/personas/persona.md +0 -43
- package/templates/personas/the-maintainer.md +0 -98
- package/templates/settings/perf-thresholds.yml +0 -25
|
@@ -66,7 +66,7 @@ Set the following fields:
|
|
|
66
66
|
- `priority`: Map Estimated Complexity — Low → `"low"`, Medium → `"medium"`, High/Very High → `"high"`
|
|
67
67
|
- `labels`: `["spec-proposal"]`
|
|
68
68
|
- `source`: `"propose-spec"`
|
|
69
|
-
- `created_by`: `"sr-
|
|
69
|
+
- `created_by`: `"sr-architect"`
|
|
70
70
|
|
|
71
71
|
Print: `Created local ticket #{id}: {title}`
|
|
72
72
|
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: "Refactor Recommender"
|
|
3
|
-
description: "Scan the codebase for refactoring opportunities ranked by impact/effort ratio
|
|
3
|
+
description: "Scan the codebase for refactoring opportunities ranked by impact/effort ratio. Analyzes code for duplicates, long functions, large files, dead code, outdated patterns, and complex logic. Optionally creates GitHub Issues for tracking."
|
|
4
4
|
category: Workflow
|
|
5
|
-
tags: [workflow, refactoring, code-quality, tech-debt
|
|
5
|
+
tags: [workflow, refactoring, code-quality, tech-debt]
|
|
6
6
|
---
|
|
7
7
|
|
|
8
|
-
Scan the codebase for refactoring opportunities, score each by impact/effort ratio
|
|
8
|
+
Scan the codebase for refactoring opportunities, score each by impact/effort ratio, and optionally create GitHub Issues for the top findings in {{BACKLOG_PROVIDER_NAME}}.
|
|
9
9
|
|
|
10
10
|
**Input:** `$ARGUMENTS` — optional: comma-separated paths to scope the analysis. Flags: `--dry-run` (print findings without creating issues).
|
|
11
11
|
|
|
@@ -38,27 +38,6 @@ Always exclude the following from all analysis:
|
|
|
38
38
|
|
|
39
39
|
---
|
|
40
40
|
|
|
41
|
-
## Phase 1.5: VPC Context
|
|
42
|
-
|
|
43
|
-
Check whether persona files exist at `.claude/agents/personas/`. This path is present in any repo that has run `/specrails:enrich`.
|
|
44
|
-
|
|
45
|
-
```bash
|
|
46
|
-
ls .claude/agents/personas/ 2>/dev/null
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
If the directory exists and contains persona files, set `VPC_AVAILABLE=true`. Otherwise set `VPC_AVAILABLE=false` and skip all VPC steps (they are optional enrichment, not blockers).
|
|
50
|
-
|
|
51
|
-
When `VPC_AVAILABLE=true`, read each persona file and extract a compact VPC summary. For each persona record:
|
|
52
|
-
|
|
53
|
-
- **name** — persona display name (e.g. "Alex — The Lead Dev")
|
|
54
|
-
- **top_jobs** — up to 3 functional jobs relevant to code quality and maintainability
|
|
55
|
-
- **critical_pains** — up to 3 pains marked Critical or High related to code reliability, complexity, or developer experience
|
|
56
|
-
- **high_gains** — up to 3 gains marked High related to code clarity, speed, or confidence
|
|
57
|
-
|
|
58
|
-
Store these as an in-memory `VPC_PROFILES` list. You will use it in Phase 3 to score persona fit.
|
|
59
|
-
|
|
60
|
-
---
|
|
61
|
-
|
|
62
41
|
## Phase 2: Analysis
|
|
63
42
|
|
|
64
43
|
Analyze the scoped files across six categories. For each finding record:
|
|
@@ -97,24 +76,12 @@ Find deeply nested conditionals (more than 3 levels) and functions with high cyc
|
|
|
97
76
|
|
|
98
77
|
## Phase 3: Score and Rank
|
|
99
78
|
|
|
100
|
-
Score every finding on
|
|
79
|
+
Score every finding on two dimensions (1–5 each):
|
|
101
80
|
|
|
102
81
|
- **Impact** — how much the refactoring improves code quality, readability, or maintainability
|
|
103
82
|
- **Effort** — how hard the refactoring is to implement (1 = trivial, 5 = major)
|
|
104
|
-
- **VPC Value** — how directly this refactoring addresses persona jobs, pains, or gains (1 = no relevance, 5 = resolves a critical persona pain or delivers a high-value gain). Set to 3 when `VPC_AVAILABLE=false`.
|
|
105
|
-
|
|
106
|
-
**Scoring VPC Value** (only when `VPC_AVAILABLE=true`):
|
|
107
|
-
|
|
108
|
-
For each finding, reason over `VPC_PROFILES`:
|
|
109
83
|
|
|
110
|
-
|
|
111
|
-
- Does fixing this deliver a **High gain** for any persona? (e.g. extracting a function → cleaner API surface → easier onboarding → Sara's gain) → score 3–4
|
|
112
|
-
- Is there indirect persona value? (e.g. dead code removal → smaller codebase → easier contributor review → Kai) → score 2–3
|
|
113
|
-
- No clear persona relevance → score 1–2
|
|
114
|
-
|
|
115
|
-
Assign one `vpc_value` integer per finding, and note the **primary persona** and **rationale** (one sentence).
|
|
116
|
-
|
|
117
|
-
**Composite score**: `impact * 2 + (6 - effort) + vpc_value`. Higher is better.
|
|
84
|
+
**Composite score**: `impact * 2 + (6 - effort)`. Higher is better.
|
|
118
85
|
|
|
119
86
|
Sort all findings by composite score descending. If the same code block was flagged by multiple categories, keep only the highest-scored entry and discard the duplicates.
|
|
120
87
|
|
|
@@ -144,7 +111,6 @@ For each of the **top 5** findings (by composite score) that does not already ha
|
|
|
144
111
|
**Category**: {category}
|
|
145
112
|
**File**: {file}:{line_range}
|
|
146
113
|
**Impact**: {impact}/5 | **Effort**: {effort}/5 | **Score**: {composite}
|
|
147
|
-
{vpc_line}
|
|
148
114
|
|
|
149
115
|
### Current Code
|
|
150
116
|
```{lang}
|
|
@@ -163,9 +129,6 @@ For each of the **top 5** findings (by composite score) that does not already ha
|
|
|
163
129
|
_Generated by `/specrails:refactor-recommender` in {{PROJECT_NAME}}_
|
|
164
130
|
```
|
|
165
131
|
|
|
166
|
-
Where `{vpc_line}` is included only when `VPC_AVAILABLE=true`:
|
|
167
|
-
`**VPC Value**: {vpc_value}/5 — {vpc_persona}: {vpc_rationale}`
|
|
168
|
-
|
|
169
132
|
---
|
|
170
133
|
|
|
171
134
|
## Phase 5: Output Summary
|
|
@@ -176,11 +139,10 @@ Print the following report:
|
|
|
176
139
|
## Refactoring Opportunities — {{PROJECT_NAME}}
|
|
177
140
|
|
|
178
141
|
{N} opportunities found | Sorted by composite score
|
|
179
|
-
{vpc_header}
|
|
180
142
|
|
|
181
|
-
| # | Category | File | Impact | Effort |
|
|
182
|
-
|
|
183
|
-
| 1 | {category} | {file}:{line_range} | {impact}/5 | {effort}/5 | {
|
|
143
|
+
| # | Category | File | Impact | Effort | Score | Description |
|
|
144
|
+
|---|----------|------|--------|--------|-------|-------------|
|
|
145
|
+
| 1 | {category} | {file}:{line_range} | {impact}/5 | {effort}/5 | {composite} | {description} |
|
|
184
146
|
...
|
|
185
147
|
|
|
186
148
|
### Top 3 Detailed Recommendations
|
|
@@ -188,7 +150,6 @@ Print the following report:
|
|
|
188
150
|
#### 1. {description}
|
|
189
151
|
**File**: {file}:{line_range}
|
|
190
152
|
**Category**: {category} | **Score**: {composite}
|
|
191
|
-
{vpc_detail}
|
|
192
153
|
|
|
193
154
|
**Current:**
|
|
194
155
|
```{lang}
|
|
@@ -206,7 +167,3 @@ Print the following report:
|
|
|
206
167
|
|
|
207
168
|
Issues created: {N} (or "dry-run: no issues created")
|
|
208
169
|
```
|
|
209
|
-
|
|
210
|
-
Where:
|
|
211
|
-
- `{vpc_header}` is `VPC personas loaded: {persona names}` when `VPC_AVAILABLE=true`, or `VPC personas: not found (run /specrails:enrich to enable)` otherwise.
|
|
212
|
-
- `{vpc_detail}` is `**VPC Value**: {vpc_value}/5 — {vpc_persona}: {vpc_rationale}` when `VPC_AVAILABLE=true`, omitted otherwise.
|
|
@@ -35,7 +35,7 @@ Resume a failed `/specrails:implement` run for **{{PROJECT_NAME}}**. Reads pipel
|
|
|
35
35
|
Scan `$ARGUMENTS` for flags:
|
|
36
36
|
|
|
37
37
|
- `--list`: if present, set `LIST_ONLY=true`.
|
|
38
|
-
- `--from <phase>`: if present, set `RESUME_FROM_OVERRIDE=<phase>`. Valid values: `architect`, `developer`, `
|
|
38
|
+
- `--from <phase>`: if present, set `RESUME_FROM_OVERRIDE=<phase>`. Valid values: `architect`, `developer`, `reviewer`, `ship`, `ci`.
|
|
39
39
|
- `--dry-run`: if present, set `DRY_RUN_OVERRIDE=true`.
|
|
40
40
|
|
|
41
41
|
Extract the first positional argument (not starting with `--`) as `FEATURE_NAME`.
|
|
@@ -60,7 +60,7 @@ Exit after printing — do not proceed.
|
|
|
60
60
|
Usage: /specrails:retry <feature-name> [--from <phase>] [--dry-run]
|
|
61
61
|
/specrails:retry --list
|
|
62
62
|
|
|
63
|
-
Phases: architect | developer |
|
|
63
|
+
Phases: architect | developer | reviewer | ship | ci
|
|
64
64
|
```
|
|
65
65
|
|
|
66
66
|
---
|
|
@@ -91,7 +91,7 @@ Parse the state file and set the following variables:
|
|
|
91
91
|
- `ORIGINAL_INPUT_FLAGS` ← `input.flags` object
|
|
92
92
|
- `SINGLE_MODE` ← `input.flags.single_mode` (default `true`)
|
|
93
93
|
- `DRY_RUN` ← if `DRY_RUN_OVERRIDE=true` then `true`, else `input.flags.dry_run` (default `false`)
|
|
94
|
-
- `PHASE_STATUSES` ← `phases` map (`architect`, `developer`, `
|
|
94
|
+
- `PHASE_STATUSES` ← `phases` map (`architect`, `developer`, `reviewer`, `ship`, `ci` → `"done"`, `"failed"`, `"skipped"`, or `"pending"`)
|
|
95
95
|
|
|
96
96
|
**Validation:**
|
|
97
97
|
|
|
@@ -114,9 +114,7 @@ Print the pipeline status:
|
|
|
114
114
|
| Phase | Status | Notes |
|
|
115
115
|
|--------------|---------|-------------------------------------|
|
|
116
116
|
| architect | done | |
|
|
117
|
-
| developer |
|
|
118
|
-
| test-writer | FAILED | <ERROR_CONTEXT or "no details"> |
|
|
119
|
-
| doc-sync | pending | |
|
|
117
|
+
| developer | FAILED | <ERROR_CONTEXT or "no details"> |
|
|
120
118
|
| reviewer | pending | |
|
|
121
119
|
| ship | pending | |
|
|
122
120
|
| ci | pending | |
|
|
@@ -136,7 +134,7 @@ Original input : <issues list or "text description">
|
|
|
136
134
|
**Phase execution order (canonical):**
|
|
137
135
|
|
|
138
136
|
```
|
|
139
|
-
architect → developer →
|
|
137
|
+
architect → developer → reviewer → ship → ci
|
|
140
138
|
```
|
|
141
139
|
|
|
142
140
|
**If `RESUME_FROM_OVERRIDE` is set:** use it as `RESUME_PHASE`. Validate it is one of the canonical values; if not, print an error and exit.
|
|
@@ -179,7 +177,7 @@ If `n` or no response: exit without changes.
|
|
|
179
177
|
|
|
180
178
|
Execute phases in canonical order starting from `RESUME_PHASE`. For each phase:
|
|
181
179
|
|
|
182
|
-
- If its status in `PHASE_STATUSES` is `"skipped"`: **skip** —
|
|
180
|
+
- If its status in `PHASE_STATUSES` is `"skipped"`: **skip** — it was not run at the original invocation. Never launch a phase that was skipped, regardless of its position relative to `RESUME_PHASE`.
|
|
183
181
|
- If its status in `PHASE_STATUSES` is `"done"` AND it precedes `RESUME_PHASE` in canonical order: **skip** — do not re-run.
|
|
184
182
|
- If it equals `RESUME_PHASE` or comes after (and is not `"skipped"`): **run** it.
|
|
185
183
|
|
|
@@ -240,46 +238,16 @@ Wait for all developers to complete. Collect the list of files created or modifi
|
|
|
240
238
|
|
|
241
239
|
---
|
|
242
240
|
|
|
243
|
-
### 4c. Phase:
|
|
244
|
-
|
|
245
|
-
**Runs if `RESUME_PHASE` is `architect`, `developer`, or `test-writer`.**
|
|
246
|
-
|
|
247
|
-
If `IMPLEMENTED_FILES` is empty: warn but continue — the sr-test-writer will discover files from git diff.
|
|
248
|
-
|
|
249
|
-
Launch **sr-test-writer** agent(s) exactly as in Phase 3c of the implement pipeline. Pass:
|
|
250
|
-
- `IMPLEMENTED_FILES_LIST`: the `implemented_files` array from state
|
|
251
|
-
- `TASK_DESCRIPTION`: derived from `ORIGINAL_ISSUES` or architect artifacts
|
|
252
|
-
|
|
253
|
-
Wait for completion. Failure is **non-blocking** — record `FAILED` and continue to next phase.
|
|
254
|
-
|
|
255
|
-
**Pipeline state update:** `test-writer` → `done` or `failed`.
|
|
256
|
-
|
|
257
|
-
---
|
|
258
|
-
|
|
259
|
-
### 4d. Phase: doc-sync
|
|
260
|
-
|
|
261
|
-
**Runs if `RESUME_PHASE` is any phase up to and including `doc-sync`.**
|
|
262
|
-
|
|
263
|
-
Launch **sr-doc-sync** agent(s) exactly as in Phase 3d of the implement pipeline. Pass:
|
|
264
|
-
- `IMPLEMENTED_FILES_LIST`: the `implemented_files` array from state
|
|
265
|
-
- `TASK_DESCRIPTION`: derived from `ORIGINAL_ISSUES` or architect artifacts
|
|
266
|
-
|
|
267
|
-
Wait for completion. Failure is **non-blocking** — record `FAILED` and continue.
|
|
268
|
-
|
|
269
|
-
**Pipeline state update:** `doc-sync` → `done` or `failed`.
|
|
270
|
-
|
|
271
|
-
---
|
|
272
|
-
|
|
273
|
-
### 4e. Phase: reviewer
|
|
241
|
+
### 4c. Phase: reviewer
|
|
274
242
|
|
|
275
243
|
**Runs if `RESUME_PHASE` is any phase up to and including `reviewer`.**
|
|
276
244
|
|
|
277
|
-
Launch
|
|
245
|
+
Launch the single **sr-reviewer** exactly as in Phase 4b of the implement pipeline. Pass:
|
|
278
246
|
- `MODIFIED_FILES_LIST`: the `implemented_files` array from state
|
|
279
247
|
- `PIPELINE_CONTEXT`: brief description from original input and issue titles
|
|
280
|
-
-
|
|
248
|
+
- The security-exemptions config path (`.claude/security-exemptions.yaml`) if present
|
|
281
249
|
|
|
282
|
-
Wait for
|
|
250
|
+
Wait for it to complete. Parse `SECURITY_BLOCKED` from the reviewer's `SECURITY_STATUS` line.
|
|
283
251
|
|
|
284
252
|
**Run the Confidence Gate (Phase 4b-conf)** exactly as defined in the implement pipeline.
|
|
285
253
|
|
|
@@ -287,7 +255,7 @@ Wait for all to complete. Parse `SECURITY_BLOCKED`, `FRONTEND_STATUS`, `BACKEND_
|
|
|
287
255
|
|
|
288
256
|
---
|
|
289
257
|
|
|
290
|
-
###
|
|
258
|
+
### 4d. Phase: ship
|
|
291
259
|
|
|
292
260
|
**Runs if `RESUME_PHASE` is `ship` or `ci`.**
|
|
293
261
|
|
|
@@ -303,7 +271,7 @@ Otherwise, run Phase 4c (ship) of the implement pipeline exactly as defined:
|
|
|
303
271
|
|
|
304
272
|
---
|
|
305
273
|
|
|
306
|
-
###
|
|
274
|
+
### 4e. Phase: ci
|
|
307
275
|
|
|
308
276
|
**Runs if ship succeeded and code was pushed.**
|
|
309
277
|
|
|
@@ -327,8 +295,6 @@ Phases executed this run: <comma-separated list>
|
|
|
327
295
|
|--------------|---------|
|
|
328
296
|
| architect | done |
|
|
329
297
|
| developer | done |
|
|
330
|
-
| test-writer | done |
|
|
331
|
-
| doc-sync | done |
|
|
332
298
|
| reviewer | done |
|
|
333
299
|
| ship | done |
|
|
334
300
|
| ci | done |
|
|
@@ -359,8 +325,6 @@ Next steps:
|
|
|
359
325
|
|-------|-----------|------------|
|
|
360
326
|
| architect | **Yes** | Stop — cannot proceed without OpenSpec artifacts |
|
|
361
327
|
| developer | **Yes** | Stop — cannot proceed without implemented files |
|
|
362
|
-
| test-writer | No | Record FAILED, continue to doc-sync |
|
|
363
|
-
| doc-sync | No | Record FAILED, continue to reviewer |
|
|
364
328
|
| reviewer | No | Report findings, continue to ship |
|
|
365
329
|
| ship | **Yes** | Stop — report failure with git/PR context |
|
|
366
330
|
| ci | **Yes** | Stop — report failure with CI log and fix suggestions |
|
|
@@ -153,7 +153,7 @@ A valid telemetry record has the following structure (fields may be absent — t
|
|
|
153
153
|
- Infer `agent` name from:
|
|
154
154
|
1. The `agent` field directly (if present).
|
|
155
155
|
2. The source log file path (if the path contains `sr-<name>`, extract it).
|
|
156
|
-
3. A `system_prompt` field snippet (if present): match against known agent
|
|
156
|
+
3. A `system_prompt` field snippet (if present): match against known agent names (`sr-architect`, `sr-developer`, `sr-reviewer`) or any `custom-*` agent declared by an active profile.
|
|
157
157
|
4. If agent cannot be determined: assign to the bucket `"unknown"`.
|
|
158
158
|
- Apply time filter: if `PERIOD_START` is not null, skip records where `timestamp < PERIOD_START`.
|
|
159
159
|
- If `AGENT_FILTER` is set, skip records where the resolved agent name does not match.
|
|
@@ -72,6 +72,15 @@ The change is archived BY THE REVIEWER as part of a passing review — never by
|
|
|
72
72
|
(`openspec validate <id> --strict`).
|
|
73
73
|
Apply the outcome rules above.
|
|
74
74
|
|
|
75
|
+
**Design confidence gate.** Read
|
|
76
|
+
`${SPECRAILS_REPO_DIR:-.}/openspec/changes/<id>/design-confidence.json`
|
|
77
|
+
(written by the architect). Missing → warn and proceed (backward
|
|
78
|
+
compatible). `high`/`medium` → proceed. `low` → STOP before phase 2 and
|
|
79
|
+
report `BLOCKED: design confidence low — <blocking_question>`; tell the
|
|
80
|
+
user to answer the question in the ticket and re-run. Do NOT update the
|
|
81
|
+
ticket, do NOT invoke the developer — implementation must never run on a
|
|
82
|
+
design the architect does not trust.
|
|
83
|
+
|
|
75
84
|
2. **APPLY — `invoke_agent` `sr-developer`.** Only after the architect reports
|
|
76
85
|
back. It implements the tasks in TDD order and checks them off in `tasks.md`.
|
|
77
86
|
Apply the outcome rules — on `MAX_TURNS`, re-invoke to RESUME until every task
|
|
@@ -1,27 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
3
|
"name": "default",
|
|
4
|
-
"description": "Baseline profile
|
|
4
|
+
"description": "Baseline profile: the three core agents (sr-architect, sr-developer, sr-reviewer) with the models matching their shipped frontmatters. Extend by adding user-owned custom-* agents and routing rules.",
|
|
5
5
|
"orchestrator": { "model": "sonnet" },
|
|
6
6
|
"agents": [
|
|
7
|
-
{ "id": "sr-
|
|
8
|
-
{ "id": "sr-
|
|
9
|
-
{ "id": "sr-
|
|
10
|
-
{ "id": "sr-developer", "model": "sonnet", "required": true },
|
|
11
|
-
{ "id": "sr-frontend-developer", "model": "sonnet" },
|
|
12
|
-
{ "id": "sr-backend-developer", "model": "sonnet" },
|
|
13
|
-
{ "id": "sr-test-writer", "model": "sonnet" },
|
|
14
|
-
{ "id": "sr-doc-sync", "model": "sonnet" },
|
|
15
|
-
{ "id": "sr-merge-resolver", "model": "sonnet" },
|
|
16
|
-
{ "id": "sr-reviewer", "model": "sonnet", "required": true },
|
|
17
|
-
{ "id": "sr-frontend-reviewer", "model": "sonnet" },
|
|
18
|
-
{ "id": "sr-backend-reviewer", "model": "sonnet" },
|
|
19
|
-
{ "id": "sr-security-reviewer", "model": "sonnet" },
|
|
20
|
-
{ "id": "sr-performance-reviewer","model": "sonnet" }
|
|
7
|
+
{ "id": "sr-architect", "model": "sonnet", "required": true },
|
|
8
|
+
{ "id": "sr-developer", "model": "sonnet", "required": true },
|
|
9
|
+
{ "id": "sr-reviewer", "model": "sonnet", "required": true }
|
|
21
10
|
],
|
|
22
11
|
"routing": [
|
|
23
|
-
{ "
|
|
24
|
-
{ "tags": ["backend"], "agent": "sr-backend-developer" },
|
|
25
|
-
{ "default": true, "agent": "sr-developer" }
|
|
12
|
+
{ "default": true, "agent": "sr-developer" }
|
|
26
13
|
]
|
|
27
14
|
}
|