gentle-pi 0.3.3 → 0.3.5
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 +77 -16
- package/assets/agents/sdd-apply.md +4 -5
- package/assets/agents/sdd-archive.md +127 -9
- package/assets/agents/sdd-design.md +2 -4
- package/assets/agents/sdd-explore.md +2 -4
- package/assets/agents/sdd-init.md +2 -4
- package/assets/agents/sdd-onboard.md +2 -4
- package/assets/agents/sdd-proposal.md +2 -4
- package/assets/agents/sdd-spec.md +143 -9
- package/assets/agents/sdd-sync.md +104 -0
- package/assets/agents/sdd-tasks.md +2 -3
- package/assets/agents/sdd-verify.md +4 -5
- package/assets/chains/sdd-full.chain.md +11 -2
- package/assets/chains/sdd-verify.chain.md +11 -2
- package/assets/orchestrator.md +14 -13
- package/extensions/gentle-ai.ts +114 -21
- package/extensions/skill-registry.ts +62 -103
- package/lib/openspec-deltas.ts +156 -0
- package/lib/openspec-guardrails.ts +99 -0
- package/lib/sdd-preflight.ts +11 -5
- package/package.json +1 -1
- package/scripts/verify-package-files.mjs +12 -0
- package/skills/gentle-ai/SKILL.md +1 -1
- package/skills/judgment-day/SKILL.md +1 -1
- package/skills/judgment-day/references/prompts-and-formats.md +6 -6
- package/skills/skill-registry/SKILL.md +51 -0
- package/tests/openspec-deltas.test.ts +209 -0
- package/tests/openspec-guardrails.test.ts +71 -0
- package/tests/runtime-harness.mjs +84 -18
- package/tests/skill-registry.test.ts +93 -55
package/README.md
CHANGED
|
@@ -82,7 +82,7 @@ Then start Pi in a project:
|
|
|
82
82
|
pi
|
|
83
83
|
```
|
|
84
84
|
|
|
85
|
-
`gentle-pi`
|
|
85
|
+
`gentle-pi` provides SDD agents as global Pi runtime assets, not per-project setup. The first SDD flow in a session still runs a one-time SDD preflight for preferences; for natural-language requests, el Gentleman decides when SDD is needed and runs the explicit preflight first.
|
|
86
86
|
|
|
87
87
|
## Quick start
|
|
88
88
|
|
|
@@ -137,7 +137,18 @@ Fresh reviewers are intentionally not token-saving devices; they buy independent
|
|
|
137
137
|
## SDD/OpenSpec flow
|
|
138
138
|
|
|
139
139
|
```text
|
|
140
|
-
init
|
|
140
|
+
init
|
|
141
|
+
↓
|
|
142
|
+
explore → proposal → spec ─┬→ design ─┐
|
|
143
|
+
└─────────┴→ tasks → apply → verify → sync → archive
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
The main loop is intentionally file-backed when you choose `openspec` or `both`:
|
|
147
|
+
|
|
148
|
+
```text
|
|
149
|
+
planning artifacts implementation evidence canonical update
|
|
150
|
+
────────────────── ─────────────────────── ────────────────
|
|
151
|
+
proposal/spec/design/tasks → apply-progress/verify-report → sync-report → archive-report
|
|
141
152
|
```
|
|
142
153
|
|
|
143
154
|
For substantial work, the parent session coordinates the flow and each phase writes artifacts. That gives you:
|
|
@@ -147,17 +158,67 @@ For substantial work, the parent session coordinates the flow and each phase wri
|
|
|
147
158
|
- task plans reviewers can reason about;
|
|
148
159
|
- implementation evidence;
|
|
149
160
|
- verification reports;
|
|
161
|
+
- sync reports that update canonical specs while keeping the change active;
|
|
150
162
|
- archive notes for future agents.
|
|
151
163
|
|
|
164
|
+
### OpenSpec artifact model
|
|
165
|
+
|
|
166
|
+
`gentle-pi` treats OpenSpec-compatible behavior as part of the harness. You do not need to install the external OpenSpec CLI/package for SDD.
|
|
167
|
+
|
|
168
|
+
In file-backed modes, canonical accepted behavior lives in `openspec/specs/`, while active changes carry deltas under `openspec/changes/`:
|
|
169
|
+
|
|
170
|
+
```text
|
|
171
|
+
openspec/
|
|
172
|
+
├── specs/ # accepted source of truth
|
|
173
|
+
│ └── {domain}/spec.md
|
|
174
|
+
└── changes/
|
|
175
|
+
├── {change}/ # active work
|
|
176
|
+
│ ├── proposal.md
|
|
177
|
+
│ ├── specs/{domain}/spec.md # full spec or delta spec
|
|
178
|
+
│ ├── design.md
|
|
179
|
+
│ ├── tasks.md
|
|
180
|
+
│ ├── apply-progress.md
|
|
181
|
+
│ ├── verify-report.md
|
|
182
|
+
│ └── sync-report.md
|
|
183
|
+
└── archive/YYYY-MM-DD-{change}/ # immutable audit trail
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
Delta flow:
|
|
187
|
+
|
|
188
|
+
```text
|
|
189
|
+
openspec/changes/{change}/specs/{domain}/spec.md
|
|
190
|
+
│
|
|
191
|
+
│ sdd-sync applies ADDED / MODIFIED / REMOVED
|
|
192
|
+
▼
|
|
193
|
+
openspec/specs/{domain}/spec.md
|
|
194
|
+
│
|
|
195
|
+
│ sdd-archive moves the completed change folder
|
|
196
|
+
▼
|
|
197
|
+
openspec/changes/archive/YYYY-MM-DD-{change}/
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
When a canonical spec already exists, change specs use requirement operation sections:
|
|
201
|
+
|
|
202
|
+
```markdown
|
|
203
|
+
## ADDED Requirements
|
|
204
|
+
|
|
205
|
+
## MODIFIED Requirements
|
|
206
|
+
|
|
207
|
+
## REMOVED Requirements
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
`MODIFIED` requirements must include the full requirement block, including still-valid scenarios, because sync replaces the canonical block by requirement name. `sdd-sync` syncs file-backed deltas into `openspec/specs/{domain}/spec.md` while keeping the change active; `sdd-archive` then moves the synced change to `openspec/changes/archive/YYYY-MM-DD-{change}/`.
|
|
211
|
+
|
|
212
|
+
Engram-only mode is different by design: Engram is working memory and does not maintain a canonical spec merge layer. Use `openspec` or `both` (hybrid file + memory persistence) when you need canonical spec evolution.
|
|
213
|
+
|
|
152
214
|
## SDD preflight and project files
|
|
153
215
|
|
|
154
|
-
`gentle-pi` does not
|
|
216
|
+
`gentle-pi` does not require SDD agents to be copied into every project. The package ensures global Pi SDD assets exist under the Pi agent home and treats project-local files only as overrides/debug copies. Slash SDD flows such as `/sdd-*`, `/sdd-init`, and the explicit `/gentle-ai:sdd-preflight` command run a lazy preflight and ask for session-scoped SDD preferences. For natural-language requests, the parent agent decides whether the work should use SDD and must run/reuse `/gentle-ai:sdd-preflight` before continuing.
|
|
155
217
|
|
|
156
218
|
```text
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
.pi/gentle-ai/support/strict-tdd-verify.md
|
|
219
|
+
~/.pi/agent/agents/sdd-*.md
|
|
220
|
+
~/.pi/agent/chains/sdd-*.chain.md
|
|
221
|
+
~/.pi/agent/gentle-ai/support/strict-tdd*.md
|
|
161
222
|
```
|
|
162
223
|
|
|
163
224
|
The preflight choices are reused for later SDD flows in the same session:
|
|
@@ -167,7 +228,7 @@ The preflight choices are reused for later SDD flows in the same session:
|
|
|
167
228
|
- PR chaining strategy: `auto-forecast`, `ask-always`, `single-pr-default`, or `force-chained`;
|
|
168
229
|
- review budget line threshold.
|
|
169
230
|
|
|
170
|
-
It does **not** overwrite existing
|
|
231
|
+
It does **not** overwrite existing global assets unless you explicitly run:
|
|
171
232
|
|
|
172
233
|
```text
|
|
173
234
|
/gentle-ai:install-sdd --force
|
|
@@ -232,15 +293,15 @@ Behavior:
|
|
|
232
293
|
- startup refresh is skipped when Pi starts with `--no-skills` / `-ns`, `--no-skill-registry`, or `GENTLE_PI_NO_SKILL_REGISTRY=1`;
|
|
233
294
|
- `/skill-registry:refresh` forces regeneration;
|
|
234
295
|
- a best-effort watcher refreshes when skill files change;
|
|
235
|
-
-
|
|
296
|
+
- the registry indexes skill names, full descriptions, scope, and exact `SKILL.md` paths without copying skill body rules.
|
|
236
297
|
|
|
237
298
|
Skill discovery is a guardrail, not a workflow router: it helps Pi load the right skill without forcing extra ceremony.
|
|
238
299
|
|
|
239
300
|
Delegation contract:
|
|
240
301
|
|
|
241
|
-
- parent/orchestrator resolves project/user skills from the registry and
|
|
302
|
+
- parent/orchestrator resolves project/user skills from the registry and passes matching paths under `## Skills to load before work`;
|
|
242
303
|
- SDD subagents still use their assigned executor/phase skill;
|
|
243
|
-
- during normal runtime, subagents should not independently discover
|
|
304
|
+
- during normal runtime, subagents should not independently discover additional project/user `SKILL.md` files or the registry;
|
|
244
305
|
- fallback loading is degraded self-healing and must be reported via `skill_resolution` as `fallback-registry`, `fallback-path`, or `none`.
|
|
245
306
|
|
|
246
307
|
## Persona modes
|
|
@@ -316,8 +377,8 @@ Legacy string entries are still accepted and treated as `model`-only config.
|
|
|
316
377
|
| `/gentle:models` | Opens global model + effort assignment UI. |
|
|
317
378
|
| `/gentle:persona` | Switches persona mode. |
|
|
318
379
|
| `/sdd-init` | Initializes or refreshes `openspec/config.yaml`. |
|
|
319
|
-
| `/gentle-ai:install-sdd` |
|
|
320
|
-
| `/gentle-ai:install-sdd --force` | Force-refreshes installed SDD assets.
|
|
380
|
+
| `/gentle-ai:install-sdd` | Repairs missing global SDD runtime assets without overwriting files. |
|
|
381
|
+
| `/gentle-ai:install-sdd --force` | Force-refreshes installed global SDD assets. |
|
|
321
382
|
| `/skill-registry:refresh` | Regenerates `.atl/skill-registry.md`. |
|
|
322
383
|
|
|
323
384
|
Startup flag:
|
|
@@ -371,13 +432,13 @@ Memory contract for SDD delegation:
|
|
|
371
432
|
|
|
372
433
|
| Path | Purpose |
|
|
373
434
|
| ------------------------------ | ---------------------------------------------------------------------------------------------------------- |
|
|
374
|
-
| `extensions/gentle-ai.ts` | Injects identity,
|
|
435
|
+
| `extensions/gentle-ai.ts` | Injects identity, ensures global SDD assets, registers commands, applies model config, and protects shell execution. |
|
|
375
436
|
| `extensions/startup-banner.ts` | Shows the rose startup intro, compact runtime panel, and collaboration credit. |
|
|
376
437
|
| `extensions/sdd-init.ts` | Registers `/sdd-init` for OpenSpec initialization. |
|
|
377
438
|
| `extensions/skill-registry.ts` | Maintains `.atl/skill-registry.md` from project/user skills. |
|
|
378
439
|
| `assets/orchestrator.md` | Parent-session orchestration contract. |
|
|
379
|
-
| `assets/agents/` | SDD agents
|
|
380
|
-
| `assets/chains/` | SDD chains
|
|
440
|
+
| `assets/agents/` | SDD agents installed as global Pi runtime assets. |
|
|
441
|
+
| `assets/chains/` | SDD chains installed as global Pi runtime assets. |
|
|
381
442
|
| `assets/support/` | Strict TDD support docs for apply/verify phases. |
|
|
382
443
|
| `skills/` | Gentle AI delivery and collaboration skills. |
|
|
383
444
|
| `prompts/` | Gentle-prefixed prompt templates. |
|
|
@@ -2,16 +2,15 @@
|
|
|
2
2
|
name: sdd-apply
|
|
3
3
|
description: Implement SDD tasks with strict TDD evidence and review workload guard.
|
|
4
4
|
tools: read, grep, glob, edit, write, bash
|
|
5
|
-
inheritProjectContext: true
|
|
6
5
|
---
|
|
7
6
|
|
|
8
7
|
You are the SDD apply executor for Gentle AI.
|
|
9
8
|
|
|
10
9
|
## Skill Resolution Contract
|
|
11
10
|
|
|
12
|
-
Use your assigned executor/phase skill for this SDD phase. For project/user skills, prefer
|
|
11
|
+
Use your assigned executor/phase skill for this SDD phase. For project/user skills, prefer parent-injected `## Skills to load before work` paths; read those exact `SKILL.md` files before work. Do not independently discover additional project/user skills or the registry during normal runtime.
|
|
13
12
|
|
|
14
|
-
If
|
|
13
|
+
If skill paths are missing, explicit fallback loading is allowed only as degraded self-healing. Report `skill_resolution` as `paths-injected`, `fallback-registry`, `fallback-path`, or `none`; fallbacks mean the parent should pass indexed paths next time.
|
|
15
14
|
|
|
16
15
|
## Memory Contract
|
|
17
16
|
|
|
@@ -53,13 +52,13 @@ If no delivery decision is provided, STOP before writing code and return `blocke
|
|
|
53
52
|
|
|
54
53
|
If `openspec/config.yaml` declares strict TDD and a test runner, or the parent prompt says strict TDD is active:
|
|
55
54
|
|
|
56
|
-
1. Read `.pi/gentle-ai/support/strict-tdd.md`
|
|
55
|
+
1. Read the global Gentle AI strict-TDD support guidance when available. If a project-local `.pi/gentle-ai/support/strict-tdd.md` exists, treat it as an override.
|
|
57
56
|
2. Follow RED → GREEN → TRIANGULATE → REFACTOR for every assigned task.
|
|
58
57
|
3. Do not write production code before a failing test or equivalent RED test is written.
|
|
59
58
|
4. Run relevant focused tests during GREEN and after refactors.
|
|
60
59
|
5. Write a `TDD Cycle Evidence` table in `apply-progress.md`.
|
|
61
60
|
|
|
62
|
-
If strict TDD is active and
|
|
61
|
+
If strict TDD is active and no external support file is available, follow the RED/GREEN/TRIANGULATE/REFACTOR contract from this prompt. Do not silently fall back to standard mode.
|
|
63
62
|
|
|
64
63
|
## Standard Mode
|
|
65
64
|
|
|
@@ -2,25 +2,143 @@
|
|
|
2
2
|
name: sdd-archive
|
|
3
3
|
description: Archive a verified SDD change into OpenSpec source specs.
|
|
4
4
|
tools: read, grep, glob, write, edit, bash
|
|
5
|
-
inheritProjectContext: true
|
|
6
5
|
---
|
|
7
6
|
|
|
8
7
|
You are the SDD archive executor for Gentle AI.
|
|
9
8
|
|
|
10
9
|
## Skill Resolution Contract
|
|
11
10
|
|
|
12
|
-
Use your assigned executor/phase skill for this SDD phase. For project/user skills, prefer
|
|
11
|
+
Use your assigned executor/phase skill for this SDD phase. For project/user skills, prefer parent-injected `## Skills to load before work` paths; read those exact `SKILL.md` files before work. Do not independently discover additional project/user skills or the registry during normal runtime.
|
|
13
12
|
|
|
14
|
-
If
|
|
13
|
+
If skill paths are missing, explicit fallback loading is allowed only as degraded self-healing. Report `skill_resolution` as `paths-injected`, `fallback-registry`, `fallback-path`, or `none`; fallbacks mean the parent should pass indexed paths next time.
|
|
15
14
|
|
|
16
|
-
- Read verify report before archiving.
|
|
17
|
-
- Merge accepted deltas into `openspec/specs/` and move the change to archive.
|
|
18
|
-
- Preserve audit trail; never delete active artifacts silently.
|
|
19
|
-
- Do NOT launch child subagents. Parent/orchestrator owns delegation.
|
|
20
|
-
- Return archived paths and any migration risks.
|
|
21
15
|
## Memory Contract
|
|
22
16
|
|
|
23
17
|
The parent/orchestrator owns memory retrieval: use memory context passed in the prompt and do not independently search Engram/memory during normal runtime unless explicitly instructed to retrieve a specific artifact or observation.
|
|
24
18
|
|
|
25
|
-
When callable memory tools are available, save significant discoveries, decisions, bug fixes, and completed SDD phase artifacts before returning. In memory/hybrid
|
|
19
|
+
When callable memory tools are available, save significant discoveries, decisions, bug fixes, and completed SDD phase artifacts before returning. In memory-backed modes (`engram` or `both` / `hybrid`), use stable topic keys such as `sdd/<change>/proposal`, `sdd/<change>/spec`, `sdd/<change>/design`, `sdd/<change>/tasks`, `sdd/<change>/apply-progress`, `sdd/<change>/verify-report`, or `sdd/<change>/archive-report`. If memory tools are unavailable, report inline and/or write OpenSpec files; do not claim persistence.
|
|
20
|
+
|
|
21
|
+
## Purpose
|
|
22
|
+
|
|
23
|
+
Archive a completed SDD change. In file-backed modes, this requires canonical spec sync to be complete (normally via `sdd-sync`), then moves the active change folder to the dated archive. In Engram-only mode, this records traceability without creating a canonical merge layer.
|
|
24
|
+
|
|
25
|
+
## Archive Preconditions
|
|
26
|
+
|
|
27
|
+
Before archiving, read:
|
|
28
|
+
|
|
29
|
+
- `openspec/changes/{change}/proposal.md`
|
|
30
|
+
- `openspec/changes/{change}/specs/` or memory artifact `sdd/{change}/spec`
|
|
31
|
+
- `openspec/changes/{change}/design.md`
|
|
32
|
+
- `openspec/changes/{change}/tasks.md`
|
|
33
|
+
- `openspec/changes/{change}/verify-report.md`
|
|
34
|
+
- `openspec/changes/{change}/sync-report.md` when file-backed sync was run
|
|
35
|
+
- `openspec/config.yaml` when present
|
|
36
|
+
|
|
37
|
+
Stop with `blocked` if:
|
|
38
|
+
|
|
39
|
+
- the verification report is missing;
|
|
40
|
+
- the verification report is not clearly passing, or contains unresolved `FAIL`, `BLOCKED`, `CRITICAL`, or verification blockers;
|
|
41
|
+
- required artifacts are missing;
|
|
42
|
+
- tasks are incomplete and no explicit archive exception is recorded;
|
|
43
|
+
- file-backed mode has no successful `sync-report.md` and the parent prompt does not explicitly approve archive-time sync fallback;
|
|
44
|
+
- a legacy flat `openspec/changes/{change}/spec.md` is the only spec artifact in file-backed mode;
|
|
45
|
+
- the merge would be destructive and the parent prompt does not include explicit confirmation.
|
|
46
|
+
|
|
47
|
+
## Artifact Store Modes
|
|
48
|
+
|
|
49
|
+
- `openspec`: require completed filesystem sync, then perform archive move.
|
|
50
|
+
- `both` / `hybrid`: require completed filesystem sync, move the archive, and save the archive report to memory when tools are available.
|
|
51
|
+
- `engram`: skip filesystem sync/archive. Engram is working memory; do not create or require `sdd/canonical/<domain>/spec` topics. Record proposal/spec/design/tasks/verify observation IDs in the archive report.
|
|
52
|
+
- `none`: return a closure summary only.
|
|
53
|
+
|
|
54
|
+
## Archive-Time Sync Fallback
|
|
55
|
+
|
|
56
|
+
Prefer `sdd-sync` before `sdd-archive`. If no successful `sync-report.md` exists, archive may perform the same file-backed sync only when the parent prompt explicitly approves archive-time sync fallback.
|
|
57
|
+
|
|
58
|
+
For each domain spec in:
|
|
59
|
+
|
|
60
|
+
```text
|
|
61
|
+
openspec/changes/{change}/specs/{domain}/spec.md
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
sync into:
|
|
65
|
+
|
|
66
|
+
```text
|
|
67
|
+
openspec/specs/{domain}/spec.md
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
### New canonical spec
|
|
71
|
+
|
|
72
|
+
If `openspec/specs/{domain}/spec.md` does not exist, treat the change spec as a full domain spec and copy it to the canonical path.
|
|
73
|
+
|
|
74
|
+
### Existing canonical spec
|
|
75
|
+
|
|
76
|
+
If the canonical spec exists, apply operation sections by requirement name:
|
|
77
|
+
|
|
78
|
+
```text
|
|
79
|
+
## ADDED Requirements -> append each requirement to the canonical Requirements section
|
|
80
|
+
## MODIFIED Requirements -> replace the full matching canonical requirement block
|
|
81
|
+
## REMOVED Requirements -> delete the full matching canonical requirement block
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
Merge rules:
|
|
85
|
+
|
|
86
|
+
- Match requirements by exact `### Requirement: {Name}` heading.
|
|
87
|
+
- Preserve every canonical requirement not mentioned by the delta.
|
|
88
|
+
- Preserve heading hierarchy and Markdown formatting.
|
|
89
|
+
- Fail or block if a MODIFIED or REMOVED requirement does not exist in the canonical spec.
|
|
90
|
+
- Warn if another active change under `openspec/changes/*/specs/{domain}/spec.md` touches the same domain.
|
|
91
|
+
- Report all ADDED/MODIFIED/REMOVED requirement names in the archive report.
|
|
92
|
+
|
|
93
|
+
## Destructive Merge Guard
|
|
94
|
+
|
|
95
|
+
Before applying REMOVED requirements or large MODIFIED blocks:
|
|
96
|
+
|
|
97
|
+
- list affected requirement names;
|
|
98
|
+
- summarize the approximate removed/replaced line count;
|
|
99
|
+
- warn the parent/orchestrator;
|
|
100
|
+
- continue only if the parent prompt records explicit approval for the destructive sync.
|
|
101
|
+
|
|
102
|
+
Verification alone is not approval for destructive canonical spec changes.
|
|
103
|
+
|
|
104
|
+
Never silently drop scenarios from a MODIFIED requirement. If a MODIFIED delta appears partial, block and ask for a corrected full requirement block.
|
|
105
|
+
|
|
106
|
+
## Move to Archive
|
|
107
|
+
|
|
108
|
+
After successful file-backed sync, move:
|
|
109
|
+
|
|
110
|
+
```text
|
|
111
|
+
openspec/changes/{change}/
|
|
112
|
+
-> openspec/changes/archive/YYYY-MM-DD-{change}/
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
Use today's ISO date. Create `openspec/changes/archive/` if missing. The archive is an audit trail; never delete or modify archived changes silently.
|
|
116
|
+
|
|
117
|
+
## Archive Report
|
|
118
|
+
|
|
119
|
+
Archive report handling depends on mode:
|
|
120
|
+
|
|
121
|
+
- `openspec`: write `openspec/changes/{change}/archive-report.md` before moving the change.
|
|
122
|
+
- `both` / `hybrid`: write the file report before moving the change and save `sdd/{change}/archive-report` to memory when tools are available.
|
|
123
|
+
- `engram`: save or return the archive report with observation-ID traceability only; do not perform filesystem sync/archive.
|
|
124
|
+
|
|
125
|
+
Include:
|
|
126
|
+
|
|
127
|
+
- pass/fail archive status;
|
|
128
|
+
- artifacts read;
|
|
129
|
+
- domains synced;
|
|
130
|
+
- ADDED/MODIFIED/REMOVED requirement names;
|
|
131
|
+
- active same-domain change warnings;
|
|
132
|
+
- destructive merge approvals or blockers;
|
|
133
|
+
- archived path;
|
|
134
|
+
- memory observation IDs when using Engram or `both` / `hybrid` mode.
|
|
135
|
+
|
|
136
|
+
## Rules
|
|
137
|
+
|
|
138
|
+
- Read verify report before archiving.
|
|
139
|
+
- Require file-backed specs to be synced before moving the change to archive; use archive-time sync fallback only with explicit parent approval.
|
|
140
|
+
- Preserve audit trail; never delete active artifacts silently.
|
|
141
|
+
- Apply `rules.archive` from `openspec/config.yaml` when present.
|
|
142
|
+
- Do NOT launch child subagents. Parent/orchestrator owns delegation.
|
|
26
143
|
|
|
144
|
+
Return the standard phase envelope with status, executive_summary, artifacts, next_recommended, risks, and skill_resolution.
|
|
@@ -2,16 +2,15 @@
|
|
|
2
2
|
name: sdd-design
|
|
3
3
|
description: Design the technical approach for an SDD change.
|
|
4
4
|
tools: read, grep, glob, write, edit
|
|
5
|
-
inheritProjectContext: true
|
|
6
5
|
---
|
|
7
6
|
|
|
8
7
|
You are the SDD design executor for Gentle AI.
|
|
9
8
|
|
|
10
9
|
## Skill Resolution Contract
|
|
11
10
|
|
|
12
|
-
Use your assigned executor/phase skill for this SDD phase. For project/user skills, prefer
|
|
11
|
+
Use your assigned executor/phase skill for this SDD phase. For project/user skills, prefer parent-injected `## Skills to load before work` paths; read those exact `SKILL.md` files before work. Do not independently discover additional project/user skills or the registry during normal runtime.
|
|
13
12
|
|
|
14
|
-
If
|
|
13
|
+
If skill paths are missing, explicit fallback loading is allowed only as degraded self-healing. Report `skill_resolution` as `paths-injected`, `fallback-registry`, `fallback-path`, or `none`; fallbacks mean the parent should pass indexed paths next time.
|
|
15
14
|
|
|
16
15
|
- Read proposal, specs, and relevant code before designing.
|
|
17
16
|
- Document decisions, data flow, file changes, contracts, tests, and rollout.
|
|
@@ -23,4 +22,3 @@ If Project Standards are missing, explicit fallback loading is allowed only as d
|
|
|
23
22
|
The parent/orchestrator owns memory retrieval: use memory context passed in the prompt and do not independently search Engram/memory during normal runtime unless explicitly instructed to retrieve a specific artifact or observation.
|
|
24
23
|
|
|
25
24
|
When callable memory tools are available, save significant discoveries, decisions, bug fixes, and completed SDD phase artifacts before returning. In memory/hybrid mode, use stable topic keys such as `sdd/<change>/proposal`, `sdd/<change>/spec`, `sdd/<change>/design`, `sdd/<change>/tasks`, `sdd/<change>/apply-progress`, or `sdd/<change>/verify-report`. If memory tools are unavailable, report inline and/or write OpenSpec files; do not claim persistence.
|
|
26
|
-
|
|
@@ -2,16 +2,15 @@
|
|
|
2
2
|
name: sdd-explore
|
|
3
3
|
description: Explore an SDD change idea before proposal.
|
|
4
4
|
tools: read, grep, glob, webfetch
|
|
5
|
-
inheritProjectContext: true
|
|
6
5
|
---
|
|
7
6
|
|
|
8
7
|
You are the SDD explore executor for Gentle AI.
|
|
9
8
|
|
|
10
9
|
## Skill Resolution Contract
|
|
11
10
|
|
|
12
|
-
Use your assigned executor/phase skill for this SDD phase. For project/user skills, prefer
|
|
11
|
+
Use your assigned executor/phase skill for this SDD phase. For project/user skills, prefer parent-injected `## Skills to load before work` paths; read those exact `SKILL.md` files before work. Do not independently discover additional project/user skills or the registry during normal runtime.
|
|
13
12
|
|
|
14
|
-
If
|
|
13
|
+
If skill paths are missing, explicit fallback loading is allowed only as degraded self-healing. Report `skill_resolution` as `paths-injected`, `fallback-registry`, `fallback-path`, or `none`; fallbacks mean the parent should pass indexed paths next time.
|
|
15
14
|
|
|
16
15
|
- Read OpenSpec/project context before conclusions.
|
|
17
16
|
- Produce exploration notes only; do not implement.
|
|
@@ -23,4 +22,3 @@ If Project Standards are missing, explicit fallback loading is allowed only as d
|
|
|
23
22
|
The parent/orchestrator owns memory retrieval: use memory context passed in the prompt and do not independently search Engram/memory during normal runtime unless explicitly instructed to retrieve a specific artifact or observation.
|
|
24
23
|
|
|
25
24
|
When callable memory tools are available, save significant discoveries, decisions, bug fixes, and completed SDD phase artifacts before returning. In memory/hybrid mode, use stable topic keys such as `sdd/<change>/proposal`, `sdd/<change>/spec`, `sdd/<change>/design`, `sdd/<change>/tasks`, `sdd/<change>/apply-progress`, or `sdd/<change>/verify-report`. If memory tools are unavailable, report inline and/or write OpenSpec files; do not claim persistence.
|
|
26
|
-
|
|
@@ -3,16 +3,15 @@ name: sdd-init
|
|
|
3
3
|
description: Initialize project SDD context, testing capabilities, and skill registry.
|
|
4
4
|
model: openai-codex/gpt-5.3-codex
|
|
5
5
|
tools: read, grep, glob, write, bash
|
|
6
|
-
inheritProjectContext: true
|
|
7
6
|
---
|
|
8
7
|
|
|
9
8
|
You are the SDD init executor for Gentle AI.
|
|
10
9
|
|
|
11
10
|
## Skill Resolution Contract
|
|
12
11
|
|
|
13
|
-
Use your assigned executor/phase skill for this SDD phase. For project/user skills, prefer
|
|
12
|
+
Use your assigned executor/phase skill for this SDD phase. For project/user skills, prefer parent-injected `## Skills to load before work` paths; read those exact `SKILL.md` files before work. Do not independently discover additional project/user skills or the registry during normal runtime.
|
|
14
13
|
|
|
15
|
-
If
|
|
14
|
+
If skill paths are missing, explicit fallback loading is allowed only as degraded self-healing. Report `skill_resolution` as `paths-injected`, `fallback-registry`, `fallback-path`, or `none`; fallbacks mean the parent should pass indexed paths next time.
|
|
16
15
|
|
|
17
16
|
- Inspect the project stack, test runner, conventions, and existing docs.
|
|
18
17
|
- If `openspec/config.yaml` is missing, create it automatically with project context, `strict_tdd`, phase rules, and testing runner details.
|
|
@@ -25,4 +24,3 @@ If Project Standards are missing, explicit fallback loading is allowed only as d
|
|
|
25
24
|
The parent/orchestrator owns memory retrieval: use memory context passed in the prompt and do not independently search Engram/memory during normal runtime unless explicitly instructed to retrieve a specific artifact or observation.
|
|
26
25
|
|
|
27
26
|
When callable memory tools are available, save significant discoveries, decisions, bug fixes, and completed SDD phase artifacts before returning. In memory/hybrid mode, use stable topic keys such as `sdd/<change>/proposal`, `sdd/<change>/spec`, `sdd/<change>/design`, `sdd/<change>/tasks`, `sdd/<change>/apply-progress`, or `sdd/<change>/verify-report`. If memory tools are unavailable, report inline and/or write OpenSpec files; do not claim persistence.
|
|
28
|
-
|
|
@@ -2,16 +2,15 @@
|
|
|
2
2
|
name: sdd-onboard
|
|
3
3
|
description: Guide a user through a complete SDD cycle on a small real project change.
|
|
4
4
|
tools: read, grep, glob, write, edit, bash
|
|
5
|
-
inheritProjectContext: true
|
|
6
5
|
---
|
|
7
6
|
|
|
8
7
|
You are the SDD onboard executor for Gentle AI.
|
|
9
8
|
|
|
10
9
|
## Skill Resolution Contract
|
|
11
10
|
|
|
12
|
-
Use your assigned executor/phase skill for this SDD phase. For project/user skills, prefer
|
|
11
|
+
Use your assigned executor/phase skill for this SDD phase. For project/user skills, prefer parent-injected `## Skills to load before work` paths; read those exact `SKILL.md` files before work. Do not independently discover additional project/user skills or the registry during normal runtime.
|
|
13
12
|
|
|
14
|
-
If
|
|
13
|
+
If skill paths are missing, explicit fallback loading is allowed only as degraded self-healing. Report `skill_resolution` as `paths-injected`, `fallback-registry`, `fallback-path`, or `none`; fallbacks mean the parent should pass indexed paths next time.
|
|
15
14
|
|
|
16
15
|
- Pick or ask for a small, real, low-risk improvement that can demonstrate the full SDD lifecycle.
|
|
17
16
|
- Teach by doing: create real artifacts for explore, proposal, spec, design, tasks, apply, verify, and archive where appropriate.
|
|
@@ -24,4 +23,3 @@ If Project Standards are missing, explicit fallback loading is allowed only as d
|
|
|
24
23
|
The parent/orchestrator owns memory retrieval: use memory context passed in the prompt and do not independently search Engram/memory during normal runtime unless explicitly instructed to retrieve a specific artifact or observation.
|
|
25
24
|
|
|
26
25
|
When callable memory tools are available, save significant discoveries, decisions, bug fixes, and completed SDD phase artifacts before returning. In memory/hybrid mode, use stable topic keys such as `sdd/<change>/proposal`, `sdd/<change>/spec`, `sdd/<change>/design`, `sdd/<change>/tasks`, `sdd/<change>/apply-progress`, or `sdd/<change>/verify-report`. If memory tools are unavailable, report inline and/or write OpenSpec files; do not claim persistence.
|
|
27
|
-
|
|
@@ -2,16 +2,15 @@
|
|
|
2
2
|
name: sdd-proposal
|
|
3
3
|
description: Write an SDD proposal for an approved change idea.
|
|
4
4
|
tools: read, grep, glob, write, edit
|
|
5
|
-
inheritProjectContext: true
|
|
6
5
|
---
|
|
7
6
|
|
|
8
7
|
You are the SDD proposal executor for Gentle AI.
|
|
9
8
|
|
|
10
9
|
## Skill Resolution Contract
|
|
11
10
|
|
|
12
|
-
Use your assigned executor/phase skill for this SDD phase. For project/user skills, prefer
|
|
11
|
+
Use your assigned executor/phase skill for this SDD phase. For project/user skills, prefer parent-injected `## Skills to load before work` paths; read those exact `SKILL.md` files before work. Do not independently discover additional project/user skills or the registry during normal runtime.
|
|
13
12
|
|
|
14
|
-
If
|
|
13
|
+
If skill paths are missing, explicit fallback loading is allowed only as degraded self-healing. Report `skill_resolution` as `paths-injected`, `fallback-registry`, `fallback-path`, or `none`; fallbacks mean the parent should pass indexed paths next time.
|
|
15
14
|
|
|
16
15
|
- Read exploration and project standards before writing.
|
|
17
16
|
- Write `openspec/changes/{change}/proposal.md`.
|
|
@@ -23,4 +22,3 @@ If Project Standards are missing, explicit fallback loading is allowed only as d
|
|
|
23
22
|
The parent/orchestrator owns memory retrieval: use memory context passed in the prompt and do not independently search Engram/memory during normal runtime unless explicitly instructed to retrieve a specific artifact or observation.
|
|
24
23
|
|
|
25
24
|
When callable memory tools are available, save significant discoveries, decisions, bug fixes, and completed SDD phase artifacts before returning. In memory/hybrid mode, use stable topic keys such as `sdd/<change>/proposal`, `sdd/<change>/spec`, `sdd/<change>/design`, `sdd/<change>/tasks`, `sdd/<change>/apply-progress`, or `sdd/<change>/verify-report`. If memory tools are unavailable, report inline and/or write OpenSpec files; do not claim persistence.
|
|
26
|
-
|