specrails-core 4.6.5 → 4.6.6
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/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "specrails-core",
|
|
3
|
-
"version": "4.6.
|
|
3
|
+
"version": "4.6.6",
|
|
4
4
|
"description": "AI agent workflow system for Claude Code — installs 12 specialized agents, orchestration commands, and persona-driven product discovery into any repository",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -51,21 +51,22 @@ Do not proceed with any design work, file reading, or artifact creation until sp
|
|
|
51
51
|
|
|
52
52
|
When invoked by the orchestrator with a specName argument, you must execute the following steps in order:
|
|
53
53
|
|
|
54
|
-
### Step 0: Scaffold OpenSpec Artifacts
|
|
54
|
+
### Step 0: Scaffold OpenSpec Artifacts (execute `/opsx:ff`)
|
|
55
55
|
|
|
56
|
-
|
|
56
|
+
Your **first action — before any analysis, design, or file writing — MUST be to actually invoke the OpenSpec fast-forward skill via the Skill tool**:
|
|
57
57
|
|
|
58
58
|
```
|
|
59
59
|
Skill("opsx:ff", specName)
|
|
60
60
|
```
|
|
61
61
|
|
|
62
|
-
`opsx:ff`
|
|
62
|
+
This is a real tool call, not a description of intent. Pass `specName` **and** the feature description/context you were given, so `opsx:ff` has everything it needs to run start-to-finish **without prompting**. `opsx:ff` runs `openspec new change` and then generates `proposal.md`, `design.md`, the spec deltas under `specs/`, and `tasks.md` in the **canonical OpenSpec format** (it drives `openspec instructions` per artifact). These files are the single source of truth.
|
|
63
63
|
|
|
64
|
-
**Critical rules:**
|
|
65
|
-
- You MUST NOT hand-author `proposal.md`, `design.md`, or `tasks.md
|
|
66
|
-
-
|
|
67
|
-
- `opsx:ff` runs
|
|
68
|
-
-
|
|
64
|
+
**Critical rules — non-negotiable:**
|
|
65
|
+
- You MUST actually call the Skill tool and let `opsx:ff` write the files. You MUST NOT hand-author `proposal.md`, `design.md`, or `tasks.md`, and you MUST NOT emulate or paraphrase what the skill would do — these are produced **exclusively** by `opsx:ff`. A `tasks.md` in any shape other than what `opsx:ff` writes is a defect.
|
|
66
|
+
- If `opsx:ff` appears to need input you cannot provide interactively, make the most reasonable decision from the feature context and continue — do NOT stall, and do NOT fall back to writing the artifacts yourself.
|
|
67
|
+
- Do NOT call `opsx:new` first. `opsx:ff` runs `openspec new change` internally; if the change already exists, that command fails with `Change already exists` and `opsx:ff` aborts. `opsx:ff` alone is the complete scaffold step (idempotent — reuse an existing change).
|
|
68
|
+
- Steps 1–6 below **refine and annotate** the artifacts `opsx:ff` generated and produce your design summary for the orchestrator. They do NOT replace `opsx:ff`'s `tasks.md` with a different structure.
|
|
69
|
+
- Only after Step 0 completes successfully do you proceed to Steps 1–6 below.
|
|
69
70
|
|
|
70
71
|
### 1. Analyze Spec Changes
|
|
71
72
|
- Read all relevant specs from `openspec/specs/` — this is the **source of truth**
|
|
@@ -95,13 +95,13 @@ You MUST follow Test-Driven Development. This is non-negotiable. The cycle is: *
|
|
|
95
95
|
|
|
96
96
|
### Phase 3: Implement (TDD cycle)
|
|
97
97
|
|
|
98
|
-
**Entry point:
|
|
98
|
+
**Entry point: your first action in this phase MUST be to actually invoke the apply skill via the Skill tool** — this is a real tool call, not a description of intent:
|
|
99
99
|
|
|
100
100
|
```
|
|
101
101
|
Skill("opsx:apply", specName)
|
|
102
102
|
```
|
|
103
103
|
|
|
104
|
-
Do NOT write production files
|
|
104
|
+
`opsx:apply` reads the OpenSpec change context and drives the task loop in `tasks.md`, marking each task `- [x]` as it is implemented. Do NOT write any production files before calling `opsx:apply`, and do NOT emulate it by editing `tasks.md` yourself outside the skill. Pass `specName` so it runs non-interactively; implement each task following the RED → GREEN → REFACTOR cycle below.
|
|
105
105
|
|
|
106
106
|
**After `opsx:apply` exits — Checkbox Verification Gate:**
|
|
107
107
|
|
|
@@ -121,11 +121,17 @@ After running CI checks, also review for:
|
|
|
121
121
|
- Search for any lines matching `- [ ]` (hyphen, space, open-bracket, space, close-bracket)
|
|
122
122
|
- **If any `- [ ]` lines are found**: BLOCK archive. List every incomplete task title. Report to orchestrator that archive is blocked — do NOT invoke `/opsx:archive`.
|
|
123
123
|
- **If no `- [ ]` lines remain** (all tasks are `- [x]`): gate passes — proceed to Step 6.
|
|
124
|
-
6. **Archive** — Only reachable when Step 5 gate passes.
|
|
124
|
+
6. **Archive** — Only reachable when Step 5 gate passes. Your archive action MUST be a real call to the archive skill via the Skill tool (not a manual directory move, not an emulation):
|
|
125
125
|
```
|
|
126
126
|
Skill("opsx:archive", specName)
|
|
127
127
|
```
|
|
128
|
-
|
|
128
|
+
`opsx:archive` must **sync the delta specs** from `openspec/changes/<specName>/specs/` into the main specs under `openspec/specs/` AND move the change to `openspec/changes/archive/`. Pass `specName` so it runs non-interactively; do NOT prompt the user.
|
|
129
|
+
|
|
130
|
+
**Verify the archive landed** after the skill returns:
|
|
131
|
+
- `openspec/changes/<specName>/` no longer exists (the change was moved), and
|
|
132
|
+
- the delta-spec changes are now present under `openspec/specs/`.
|
|
133
|
+
|
|
134
|
+
If either is false, the archive did NOT complete (a common symptom of a *simulated* archive is delta specs that were never synced) — report `archive incomplete` to the orchestrator and do NOT treat the change as done.
|
|
129
135
|
|
|
130
136
|
## Write Failure Records
|
|
131
137
|
|