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.5",
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
- Before any design work, scaffold the required OpenSpec artifacts for `<specName>` by invoking the OpenSpec fast-forward skill via the Skill tool:
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` creates the change directory AND generates `proposal.md`, `design.md`, and `tasks.md` in a single pass.
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` — these are produced exclusively by `opsx:ff`
66
- - 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.
67
- - `opsx:ff` runs non-interactively do NOT prompt the user or ask for confirmation at any point
68
- - Only after Step 0 completes successfully do you proceed to Steps 1–6 below
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: invoke `/opsx:apply` first.** Before writing any files, invoke the apply skill via the Skill tool:
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 directly without first calling `opsx:apply`. The apply command drives the task loop and records task completion state in `tasks.md`.
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. Invoke the archive skill via the Skill tool:
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
- Run non-interactively. Do NOT prompt the user or ask for confirmation.
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