specrails-core 5.0.0 → 5.1.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.
Files changed (48) hide show
  1. package/README.md +103 -310
  2. package/bin/specrails-core.mjs +3 -1
  3. package/dist/installer/cli.js +4 -0
  4. package/dist/installer/cli.js.map +1 -1
  5. package/dist/installer/commands/framework.js +64 -49
  6. package/dist/installer/commands/framework.js.map +1 -1
  7. package/dist/installer/commands/init.js +102 -66
  8. package/dist/installer/commands/init.js.map +1 -1
  9. package/dist/installer/commands/update.js +80 -74
  10. package/dist/installer/commands/update.js.map +1 -1
  11. package/dist/installer/commands/v5-migration.js +14 -0
  12. package/dist/installer/commands/v5-migration.js.map +1 -1
  13. package/dist/installer/phases/framework-lifecycle.js +2 -0
  14. package/dist/installer/phases/framework-lifecycle.js.map +1 -1
  15. package/dist/installer/phases/scaffold.js +191 -258
  16. package/dist/installer/phases/scaffold.js.map +1 -1
  17. package/dist/installer/runtime/pipeline-state.js +801 -0
  18. package/dist/installer/runtime/pipeline-state.js.map +1 -0
  19. package/dist/installer/util/exec.js +6 -1
  20. package/dist/installer/util/exec.js.map +1 -1
  21. package/dist/installer/util/fs.js +11 -2
  22. package/dist/installer/util/fs.js.map +1 -1
  23. package/dist/installer/util/install-transaction.js +246 -0
  24. package/dist/installer/util/install-transaction.js.map +1 -0
  25. package/dist/installer/util/registry.js +20 -0
  26. package/dist/installer/util/registry.js.map +1 -1
  27. package/docs/ci-cd.md +57 -0
  28. package/docs/user-docs/codex-vs-claude-code.md +23 -151
  29. package/docs/user-docs/core-updates.md +70 -0
  30. package/docs/user-docs/provider-pipelines.md +53 -0
  31. package/integration-contract.json +179 -66
  32. package/package.json +5 -2
  33. package/templates/agents/sr-developer.md +9 -11
  34. package/templates/agents/sr-reviewer.md +26 -33
  35. package/templates/codex-skills/batch-implement/SKILL.md +58 -244
  36. package/templates/codex-skills/implement/SKILL.md +136 -338
  37. package/templates/codex-skills/rails/sr-architect/SKILL.md +7 -0
  38. package/templates/codex-skills/rails/sr-developer/SKILL.md +13 -0
  39. package/templates/codex-skills/rails/sr-reviewer/SKILL.md +39 -5
  40. package/templates/codex-skills/retry/SKILL.md +37 -117
  41. package/templates/commands/specrails/batch-implement.md +16 -288
  42. package/templates/commands/specrails/implement.md +62 -1057
  43. package/templates/commands/specrails/retry.md +22 -314
  44. package/templates/gemini-commands/batch-implement.toml +28 -40
  45. package/templates/gemini-commands/implement.toml +55 -114
  46. package/templates/gemini-commands/retry.toml +21 -0
  47. package/templates/kimi/specrails/run-skill.mjs +51 -2
  48. package/templates/runtime/provider-pipeline.md +55 -0
package/README.md CHANGED
@@ -1,373 +1,166 @@
1
1
  # specrails-core
2
2
 
3
- [![npm version](https://img.shields.io/npm/v/specrails-core.svg)](https://www.npmjs.com/package/specrails-core)
4
- [![GitHub Stars](https://img.shields.io/github/stars/fjpulidop/specrails-core?style=social)](https://github.com/fjpulidop/specrails-core)
5
- [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
6
- [![npm downloads](https://img.shields.io/npm/dw/specrails-core.svg)](https://www.npmjs.com/package/specrails-core)
7
- [![AI providers](https://img.shields.io/badge/providers-Claude%20%7C%20Codex%20%7C%20Gemini%20%7C%20Kimi-6f42c1)](#provider-support)
3
+ [![CI](https://github.com/fjpulidop/specrails-core/actions/workflows/ci.yml/badge.svg)](https://github.com/fjpulidop/specrails-core/actions/workflows/ci.yml)
4
+ [![npm](https://img.shields.io/npm/v/specrails-core.svg)](https://www.npmjs.com/package/specrails-core)
5
+ [![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
8
6
 
9
- **Your agentic development team. From idea to production code.**
7
+ Specrails Core installs specification-driven development workflows into a project. It gives your AI CLI three baseline roles—architect, developer and reviewer—plus provider-native commands, OpenSpec integration and project conventions. You choose the provider; Core supplies the workflow and its local artifacts.
10
8
 
11
- One command turns your repo into a spec-driven pipeline with three specialized AI agents working together through OpenSpec architect, developer, reviewer all adapted to your codebase. Need more specialists? Add your own via a profile.
9
+ Use Core directly from Claude Code, Codex CLI, Gemini CLI or Kimi Code. For mission conversations, a shared project board, execution loops and delivery controls, use [Specrails Desktop](https://github.com/fjpulidop/specrails-desktop).
12
10
 
13
- ```bash
14
- npx specrails-core@latest init # install into the current repo — ready to use immediately
15
- ```
16
-
17
- > **Requirements:** one supported AI CLI, git, and Node 20.19.0+. Cross-platform:
18
- > macOS, Linux, and Windows. Use `--provider claude|codex|gemini|kimi` to
19
- > override auto-detection.
20
-
21
- ---
22
-
23
- ## How it works
24
-
25
- ```
26
- Idea → Architecture → Implementation → Review → PR
27
- (sr-architect) (sr-developer) (sr-reviewer)
28
- ```
29
-
30
- Run `/specrails:implement "add dark mode"` — the pipeline designs, builds, reviews, and ships a pull request. No hand-holding.
31
-
32
- The three core agents are adapted to your project's stack and conventions at install time, and the per-layer rules carry your codebase's patterns. Extend the trio with your own specialists through a [profile](#agent-profiles).
33
-
34
- ---
11
+ This README describes the current source tree. `npx specrails-core@latest` installs the published package, not unmerged changes. Check the [release notes](https://github.com/fjpulidop/specrails-core/releases), or [build this checkout](#develop-from-source) when testing unreleased work.
35
12
 
36
13
  ## Quick start
37
14
 
38
- ```bash
39
- # 1. Install into the current repo — one pass, no follow-up step
40
- npx specrails-core@latest init
41
-
42
- # 2. Start building
43
- > /specrails:implement "add user authentication"
44
- > /specrails:implement #1, #2 # from local tickets (default)
45
- > /specrails:implement #42 # from GitHub Issues (if configured)
46
- ```
47
-
48
- That's it. Installation places the three agents, commands, rules, and OpenSpec skills directly — no wizard, no AI step. The pipeline takes over.
49
-
50
- ---
51
-
52
- ## Provider support
53
-
54
- | Provider | Runtime command | Project surface | Workflow syntax |
55
- |----------|-----------------|-----------------|-----------------|
56
- | Claude Code | `claude` | `.claude/` | `/specrails:<command>` |
57
- | Codex CLI | `codex` | `.codex/` | provider-native skills |
58
- | Gemini CLI | `gemini` | `.gemini/` | `/specrails:<command>` |
59
- | Kimi Code | managed Node skill runner → external `kimi -p` | `.kimi-code/` | `/skill:specrails-<command>` in the TUI |
60
-
61
- Kimi is an external CLI dependency, just like the other providers. SpecRails
62
- does not bundle a Kimi binary, start `kimi web`, or own a Kimi server. Install
63
- Kimi Code separately, run `kimi login` once, then select it explicitly or let
64
- the installer detect it. Parallel Kimi roles are submitted as one bounded
65
- foreground wave; Core creates/reuses their git worktrees, attributes each
66
- child stream, and waits for aggregate completion—without a server. See the
67
- [Kimi setup guide](./docs/user-docs/getting-started-kimi.md).
68
-
69
- ## What gets installed
70
-
71
- Everything lands in your repo — nothing auto-updates, nothing phones home. You own it, you commit it.
72
-
73
- | Category | Location | Purpose |
74
- |----------|----------|---------|
75
- | **Agents** | `.claude/agents/` (Claude) or the provider-native skills tree (`.codex/`, `.gemini/`, `.kimi-code/`) | The three core agents (sr-architect, sr-developer, sr-reviewer) |
76
- | **Commands** | `.claude/commands/specrails/` | Workflow commands (`/specrails:implement`, `/specrails:why`, ...) |
77
- | **Kimi workflow skills** | `.kimi-code/skills/specrails-*/SKILL.md` | `/skill:specrails-*` directory-form skills |
78
- | **Kimi headless runner** | `.kimi-code/specrails/run-skill.mjs` | Materializes Kimi's native skill-activation flow for headless runs |
79
- | **OpenSpec skills** | `.claude/commands/opsx/` (or the provider-native skills directory) | `/opsx:*` commands for spec artefacts |
80
- | **Config** | `.specrails/config.yaml` | Stack, CI commands, git workflow |
81
- | **Rules** | `.specrails/rules/*.md` | Per-layer coding conventions |
82
- | **Memory** | `.specrails/agent-memory/` | Persistent knowledge — agents learn across sessions |
83
- | **Pipeline state** | `.specrails/pipeline/` | In-flight feature state for parallel builds |
84
- | **Profiles** _(optional, yours)_ | `.specrails/profiles/*.json` | Add custom specialists + task routing |
85
-
86
- To update, re-run the installer:
87
-
88
- ```bash
89
- npx specrails-core@latest init
90
- ```
91
-
92
- Or run `npx specrails-core@latest update` to refresh in place. Update leaves your `.specrails/` data, profiles, and `custom-*` agents untouched. Upgrading from v4? Update also removes the artefacts v5 no longer ships (the enrich wizard, install tiers, and the non-core agents) and prints exactly what it removed — see [Migrating from v4](#migrating-from-v4).
93
-
94
- ---
95
-
96
- ## Why specrails
97
-
98
- | | specrails | Plain Claude Code | Cursor / Copilot |
99
- |---|---|---|---|
100
- | Structured pipeline | ✅ Architect → Dev → Review → PR | ❌ Manual | ❌ Manual |
101
- | Adapts to your codebase | ✅ Reads your real stack/CI | ⚠️ Prompts only | ❌ |
102
- | Spec-driven (OpenSpec) | ✅ Proposal → design → tasks → specs | ❌ | ❌ |
103
- | Parallel feature builds | ✅ Git worktrees | ❌ | ❌ |
104
- | Institutional memory | ✅ Agents learn across sessions | ❌ | ❌ |
105
- | Open source | ✅ MIT | N/A | ❌ |
106
-
107
- specrails is not a chat interface. It's a **development pipeline** that coordinates specialised agents through your existing tools (GitHub Issues, git, CI).
108
-
109
- ---
110
-
111
- ## The agents
112
-
113
- Three agents, tightly integrated through the OpenSpec lifecycle (`/opsx:ff` → `/opsx:apply` → `/opsx:archive`):
114
-
115
- | Agent | Model | Role |
116
- |-------|-------|------|
117
- | **sr-architect** | Sonnet | Designs features: proposal, technical design, task breakdown |
118
- | **sr-developer** | Sonnet | Full-stack implementation (tests and docs included per task) |
119
- | **sr-reviewer** | Sonnet | Single quality gate: correctness, TDD/spec completeness, security, and performance; runs CI, fixes issues, records learnings |
120
-
121
- Need a specialist — a dedicated security reviewer, a data-engineering developer, a docs agent? Author it as a `custom-*` agent and declare it in a [profile](#agent-profiles); the pipeline routes to it. The installer never ships or manages non-core agents, so your custom agents are always yours.
15
+ You need **Node.js 20.19.0+**, Git and at least one installed, authenticated AI CLI. A provider may impose a higher Node or operating-system requirement than Core itself. Install providers through their own supported installation flow.
122
16
 
123
- ---
17
+ From the project you want to configure:
124
18
 
125
- ## Commands
126
-
127
- ### `/specrails:implement` — Build features
128
-
129
- ```bash
130
- /specrails:implement "add dark mode" # from a description
131
- /specrails:implement #85, #71 # from tickets
19
+ ```sh
20
+ npx specrails-core@latest init --provider claude
132
21
  ```
133
22
 
134
- Architect designs developer builds reviewer validates PR created. Multiple features run in parallel with git worktrees.
135
-
136
- #### Letting a host own version control (`SPECRAILS_GIT_AUTO`)
137
-
138
- By default the pipeline ships automatically (`GIT_AUTO=true`): it creates a branch, commits, pushes, and opens a pull request. When specrails-core runs **inside a host that owns version control itself** — such as [specrails-desktop](https://github.com/fjpulidop/specrails-desktop), which runs each pipeline in an isolated git worktree and opens the pull request for you — that host sets the `SPECRAILS_GIT_AUTO` environment variable to `false`.
139
-
140
- When `SPECRAILS_GIT_AUTO=false` (or `0`), the Ship phase is forced onto the **manual** path regardless of configuration: the pipeline stops at "code written and verified" and makes **no branch, commit, push, or PR** — the host does that. This prevents a second, uncoordinated pull request. Leave the variable unset for the normal standalone behaviour (automatic shipping, subject to your `GIT_AUTO` configuration). It composes with `--dry-run`, which independently skips all git/GitHub/backlog operations.
23
+ Choose `claude`, `codex`, `gemini` or `kimi`. The default installer collects agent and model configuration interactively. For a non-interactive installation using defaults:
141
24
 
142
- #### Dry-run / preview mode
143
-
144
- Not ready to commit? Run the full pipeline without touching git or GitHub:
145
-
146
- ```bash
147
- /specrails:implement "add dark mode" --dry-run
148
- /specrails:implement #85 --preview # --preview is an alias for --dry-run
25
+ ```sh
26
+ npx specrails-core@latest init --yes --provider claude
149
27
  ```
150
28
 
151
- All agents run normally. Generated files land in `.claude/.dry-run/<feature-name>/` instead of your working tree. No branches, commits, PRs, or issue updates are created.
29
+ Core 5 installs the baseline roles and workflows directly; it does not invoke a model for an enrichment phase. Installing dependencies or OpenSpec may require network access. Review the generated project configuration before running an implementation.
152
30
 
153
- When you're happy with the preview, apply the cached output:
31
+ Open the selected AI CLI in that project and use its native workflow syntax:
154
32
 
155
- ```bash
156
- /specrails:implement --apply add-dark-mode # copies files to real paths, then ships
157
- ```
33
+ | Provider | Executable | Implement | Batch | Retry |
34
+ | --- | --- | --- | --- | --- |
35
+ | Claude Code | `claude` | `/specrails:implement` | `/specrails:batch-implement` | `/specrails:retry` |
36
+ | Codex CLI | `codex` | `$implement` | `$batch-implement` | `$retry` |
37
+ | Gemini CLI | `gemini` | `/specrails:implement` | `/specrails:batch-implement` | `/specrails:retry` |
38
+ | Kimi Code | `kimi` | `/skill:specrails-implement` | `/skill:specrails-batch-implement` | `/skill:specrails-retry` |
158
39
 
159
- To discard without applying:
40
+ For example, enter this **inside Claude Code or Gemini CLI**, not in your shell:
160
41
 
161
- ```bash
162
- rm -rf .claude/.dry-run/add-dark-mode/
42
+ ```text
43
+ /specrails:implement "add keyboard navigation to the settings page"
44
+ /specrails:implement #1, #2
163
45
  ```
164
46
 
165
- ### `/specrails:retry` Resume a failed pipeline
47
+ Kimi integration targets Kimi Code 0.27.0+. Its headless path uses the installed `.kimi-code/specrails/run-skill.mjs` helper to activate the workflow before calling the external CLI; passing a slash command directly to `kimi -p` is not equivalent. See [Kimi setup](docs/user-docs/getting-started-kimi.md) and [provider pipeline contracts](docs/user-docs/provider-pipelines.md).
166
48
 
167
- ```bash
168
- /specrails:retry add-dark-mode # resume from the failed phase
169
- /specrails:retry add-dark-mode --from reviewer
170
- /specrails:retry --list # show resumable pipeline states
171
- ```
49
+ ## How implementation works
172
50
 
173
- Picks up a `/specrails:implement` run from where it stopped, reusing the OpenSpec artefacts already produced.
174
-
175
- ---
176
-
177
- ## Agent profiles
178
-
179
- Profiles are **the way to extend the core trio**. They are declarative JSON files that tell `/specrails:implement` which agents to use, which models to run them with, and how to route tasks to specialists. Without a profile the pipeline runs the three baseline agents; with one, you add your own `custom-*` agents and routing. One project can define many profiles (e.g. `default`, `data-heavy`, `security-heavy`) and run different features with different profiles — useful for concurrent rails in `/specrails:batch-implement`.
180
-
181
- ### File layout
182
-
183
- ```
184
- <project>/.specrails/
185
- profiles/
186
- default.json # checked into git, team-shared
187
- data-heavy.json # checked into git, team-shared
188
- .user-preferred.json # gitignored, your personal default
51
+ ```text
52
+ Specification → Architecture → Implementation → Review → Delivery
53
+ sr-architect sr-developer sr-reviewer
189
54
  ```
190
55
 
191
- ### Resolution order
192
-
193
- When running the pipeline, the active profile is resolved in this order:
194
-
195
- 1. `$SPECRAILS_PROFILE_PATH` environment variable (absolute path to a JSON snapshot)
196
- 2. Provider default: `<cwd>/.specrails/profiles/project-default.json` for
197
- Claude, or `<cwd>/.specrails/profiles/kimi-default.json` for Kimi
198
- 3. No profile — the three baseline agents (`sr-architect`, `sr-developer`, `sr-reviewer`)
199
-
200
- Tools such as [specrails-desktop](https://github.com/fjpulidop/specrails-desktop) set `$SPECRAILS_PROFILE_PATH` to a job-scoped snapshot so concurrent rails can run independent profiles.
201
-
202
- ### Schema
203
-
204
- The v1 profile schema is published at [`schemas/profile.v1.json`](./schemas/profile.v1.json). Example:
205
-
206
- ```json
207
- {
208
- "schemaVersion": 1,
209
- "name": "data-heavy",
210
- "description": "Data engineering rail with stricter review",
211
- "orchestrator": { "model": "opus" },
212
- "agents": [
213
- { "id": "sr-architect", "model": "opus", "required": true },
214
- { "id": "sr-data-engineer", "model": "sonnet" },
215
- { "id": "sr-developer", "model": "sonnet", "required": true },
216
- { "id": "sr-reviewer", "model": "opus", "required": true }
217
- ],
218
- "routing": [
219
- { "tags": ["etl", "schema", "data"], "agent": "sr-data-engineer" },
220
- { "default": true, "agent": "sr-developer" }
221
- ]
222
- }
223
- ```
56
+ The architect produces the OpenSpec proposal, design and tasks. The developer implements the agreed work. The reviewer checks the result against the spec and project verification commands. Delivery follows the configured Git workflow and the execution owner's policy.
224
57
 
225
- Baseline agents (`sr-architect`, `sr-developer`, `sr-reviewer`) MUST appear in `agents[]`. The `routing` array is ordered first rule whose `tags` intersects the task's tags wins; the terminal `default: true` rule catches everything else.
58
+ The current source installs a local pipeline helper for persisted phase state, explicit role handoffs and verification receipts. Retry resumes the first incomplete or invalid phase; it does not treat an earlier success as valid after its inputs change. A batch retains its tickets' requirements and repository identities in an aggregate change. See the [pipeline contract](docs/user-docs/provider-pipelines.md) for the execution context and validation limits.
226
59
 
227
- ### Reserved paths
60
+ Standalone automatic delivery can create branches, commits, pushes and pull requests when enabled. Set the project's Git workflow deliberately; model execution and repository writes are real operations, not a preview by default. GitHub pull requests additionally require an authenticated `gh` CLI.
228
61
 
229
- The following paths are **reserved** `specrails-core update` will never create, modify, or delete anything inside them:
62
+ When a host such as Desktop owns worktrees and delivery, it sets `SPECRAILS_GIT_AUTO=false` and supplies the execution context. Core then leaves branch creation, commits, pushes and PRs to that host. Multi-repository contexts must explicitly identify the selected repositories and the OpenSpec/backlog owner; an additional readable folder is not automatically an implementation target.
230
63
 
231
- - `.specrails/profiles/**` — profile JSON files (yours and desktop-authored).
232
- - `.claude/agents/custom-*.md` — your custom agents. Use the `custom-` prefix to opt in to this protection.
233
- - `.kimi-code/skills/custom-*/**` — your custom Kimi role skills. Pre-release
234
- `.kimi-code/skills/rails/custom-*` roles are also reserved while Core safely
235
- migrates them into this discoverable direct-child layout.
64
+ ## Installed files and ownership
236
65
 
237
- This contract is what lets you safely hand-author (or let specrails-desktop author) profiles and custom agents without fear of the next `update` overwriting your work. Other paths managed by specrails-core (`.specrails/install-config.yaml`, `.specrails/specrails-version`, etc.) remain under update's control. Audited by `src/installer/__tests__/reserved-paths.test.ts` on every CI run.
66
+ Standalone installation normally copies committable artifacts into the repository and uses a shared framework store under `~/.specrails/`. Relocated installations, including Desktop-managed workspaces, can keep framework links and project artifacts outside the checkout. The resolved workspace determines where these files live.
238
67
 
239
- ---
68
+ | Surface | Purpose |
69
+ | --- | --- |
70
+ | `.claude/`, `.codex/`, `.gemini/`, `.kimi-code/` | Selected provider's agents, commands or skills |
71
+ | `openspec/` | Specifications and change artifacts |
72
+ | `.specrails/config.yaml` and `install-config.yaml` | Project workflow and installation configuration |
73
+ | `.specrails/rules/` and `agent-memory/` | Coding conventions and retained agent notes |
74
+ | `.specrails/runtime/` and `pipeline/` | Installed execution helper and run state in the current source |
75
+ | `.specrails/local-tickets.json` | Local backlog, when that backlog provider is selected |
76
+ | `.specrails/profiles/` | User-owned profiles and model/routing choices |
240
77
 
241
- ## Local ticket management
78
+ Local tickets do not require GitHub or Jira. External backlog integrations require their own credentials and configuration. See [local tickets](docs/local-tickets.md) and [backlog migration](docs/migration-guide.md).
242
79
 
243
- specrails-core ships with a built-in ticket system no GitHub account or external tools required.
80
+ Managed files can be regenerated by updates. Keep extensions in documented user-owned locations rather than relying on edits to generated agents surviving an update.
244
81
 
245
- Tickets live in `.specrails/local-tickets.json` alongside your code. They're plain JSON and git-friendly.
82
+ ## Extend the agents
246
83
 
247
- **Local tickets are the default** no GitHub account or credential setup required.
84
+ Profiles can select models and route tasks to additional specialists where the provider workflow supports them. Keep the three baseline roles, then add your custom agents and routing. The profile schema is [schemas/profile.v1.json](schemas/profile.v1.json).
248
85
 
249
- ```bash
250
- /specrails:implement #1, #4 # implement by ticket ID
251
- /specrails:propose-spec # create a ticket from a spec proposal
86
+ ```sh
87
+ npx specrails-core@latest profile validate .specrails/profiles/default.json
252
88
  ```
253
89
 
254
- See [docs/local-tickets.md](./docs/local-tickets.md) for the full schema reference, concurrency model, and command integration details.
255
-
256
- Migrating from GitHub Issues or JIRA? See [docs/migration-guide.md](./docs/migration-guide.md).
90
+ The installer reserves these extension paths:
257
91
 
258
- ---
92
+ - `.specrails/profiles/**`
93
+ - `.claude/agents/custom-*.md`
94
+ - `.kimi-code/skills/custom-*/**`
259
95
 
260
- ## Migrating from v4
96
+ Use the `custom-` prefix for protected custom roles. The legacy nested Kimi custom-role layout is preserved during migration as well. Other provider-managed surfaces are not a blanket guarantee that arbitrary local changes survive regeneration. See [customization](docs/customization.md) for the broader configuration model.
261
97
 
262
- v5 is a breaking release. It removes the `/specrails:enrich` wizard, the quick/full install tiers, and the nine non-core agents (product manager/analyst, layer-specific developers and reviewers, test-writer, doc-sync, merge-resolver). The installer is now mode-less: `init` places the three core agents directly, in one pass.
98
+ ## Update an existing project
263
99
 
264
- To upgrade an existing install:
100
+ Updating the executable and refreshing a project's artifacts are separate operations. From the project directory:
265
101
 
266
- ```bash
102
+ ```sh
103
+ npx specrails-core@latest --version
104
+ npx specrails-core@latest update --dry-run
267
105
  npx specrails-core@latest update
106
+ npx specrails-core@latest doctor
268
107
  ```
269
108
 
270
- Update removes the artefacts v5 no longer ships (installer-owned agents, commands, and enrich staging) and prints the exact list of removed files. It never touches your `.specrails/profiles/**` or `.claude/agents/custom-*.md`.
109
+ Use an exact published package version instead of `latest` when reproducibility matters. The selected CLI supplies the framework bytes; the current source rejects an older CLI overwriting a newer installed framework. It retains recovery information for failed updates and does not report a complete upgrade after a partial component refresh.
271
110
 
272
- - **Relied on a removed agent?** Its body is plain Markdown copy the v4 agent to `.claude/agents/custom-<name>.md` and declare it in a [profile](#agent-profiles). Same behaviour, now user-owned.
273
- - **Have a v4 profile that lists removed agents?** It keeps working: the pipeline warns and skips any profile agent whose file no longer exists, and continues with the rest. The three baseline agents remain required.
274
- - **Using specrails-desktop?** Pin it to `specrails-core@^4` until a desktop release adopts the mode-less `init --from-config` flow.
111
+ Existing provider selections are preserved by the current update implementation. Installing support for an additional provider does not require discarding the other provider's managed artifacts. See [installation and update consistency](docs/user-docs/core-updates.md) for version checks, copied versus linked workspaces, concurrent updates and rollback behavior.
275
112
 
276
- ---
113
+ ### Migrating from Core 4
277
114
 
278
- ## Prerequisites
115
+ Core 5 removes the `enrich` command, the quick/full installation tiers and the previously bundled non-core specialist agents. `init` performs deterministic placement instead of launching the old enrichment wizard.
279
116
 
280
- | Tool | Required | Purpose |
281
- |------|----------|---------|
282
- | **One supported AI CLI** | Yes | Claude Code, Codex CLI, Gemini CLI, or Kimi Code |
283
- | **Kimi Code 0.27.0+** | For Kimi projects | Install from the [official Kimi Code guide](https://www.kimi.com/code/docs/en/kimi-code-cli/guides/getting-started), then run `kimi login` |
284
- | **git** | Yes | Repository detection |
285
- | **Node 20.19.0+** | Yes | Needed for `npx specrails-core@latest init` (the floor required by the pinned OpenSpec 1.4.1 CLI). Cross-platform: macOS, Linux, Windows (10/11, x64 + ARM64 via emulation). |
286
- | **GitHub CLI** (`gh`) | Optional | Backlog sync to GitHub Issues, PR creation. Not needed with local tickets. |
117
+ Before upgrading, review customizations and profiles that refer to removed agents. Move any specialist you want to retain into a protected `custom-*` role and update its profile reference. The migration removes installer-owned legacy artifacts; protected profiles and custom agents remain user-owned.
287
118
 
288
- The installer checks for prerequisites and offers to install missing ones.
119
+ Desktop must support the selected Core lifecycle. Current Desktop source supports Core 5, but older installed Desktop releases can differ. Updating this repository or the global CLI alone does not upgrade a running Desktop application or every project's copied artifacts.
289
120
 
290
- ---
121
+ ## Develop from source
291
122
 
292
- ## Supported stacks
123
+ Core uses one npm dependency tree. Node **20.19.0+** is the package minimum; CI exercises the declared platform/runtime matrix.
293
124
 
294
- Stack-agnostic. The installer detects and adapts the agents and rules to whatever you're running:
295
-
296
- - **Backend:** Python/FastAPI, Node/Express, Go/Gin, Rust/Actix, Java/Spring, Ruby/Rails, .NET
297
- - **Frontend:** React, Vue, Angular, Svelte, Next.js, Nuxt
298
- - **Database:** PostgreSQL, MySQL, SQLite, MongoDB, Redis
299
- - **CI/CD:** GitHub Actions, GitLab CI, Jenkins, Makefile
300
- - **Testing:** pytest, vitest, jest, go test, cargo test, rspec
301
-
302
- ---
303
-
304
- ## Design principles
305
-
306
- 1. **Local by default** — Everything lives in your repo. No cloud services, no telemetry, no phone home.
307
- 2. **Mode-less** — One install path. `init` places everything directly; there is no follow-up wizard.
308
- 3. **Context-first** — Every generated file uses your real paths, patterns, and CI commands.
309
- 4. **Spec-driven** — Every feature flows through OpenSpec (proposal → design → tasks → specs), not ad-hoc prompts.
310
- 5. **Institutional memory** — Agents learn across sessions. Reviewer learnings feed back to future developers.
311
- 6. **Parallel-safe** — Multiple features implemented simultaneously via git worktrees with automatic merge.
312
- 7. **Yours to extend** — The core is three agents; specialists come from profiles + `custom-*` agents the installer never touches.
313
-
314
- ---
315
-
316
- ## FAQ
317
-
318
- **Can I customise the agents after installation?**
319
- Yes. Everything in the selected provider tree and `.specrails/` is yours to
320
- edit — agent prompts, rules, config. For Kimi, customize `.kimi-code/skills/`,
321
- `.kimi-code/rules/`, and the managed block in `.kimi-code/AGENTS.md`;
322
- `custom-*` role skills are preserved. To add a specialist, declare a
323
- `custom-*` agent in a profile.
324
-
325
- **How do I update an install?**
326
- Run `npx specrails-core@latest update` (or re-run `init`) to refresh the agents/commands. Both leave your `.specrails/` data, profiles, and `custom-*` agents untouched.
327
-
328
- **Does this work without GitHub CLI?**
329
- Yes. Local tickets are the default and need no external tools. `/specrails:implement "description"` also works without `gh` — it just skips automated PR creation.
330
-
331
- **Can I use local tickets and GitHub Issues together?**
332
- Not simultaneously for the same project — backlog commands use one active provider at a time. You can migrate from GitHub Issues to local tickets using the [migration guide](./docs/migration-guide.md).
333
-
334
- **How much does it cost to run?**
335
- Cost depends on the selected provider, model, and workload. SpecRails does not
336
- add a model surcharge. Kimi's stream output does not currently report a native
337
- USD cost, so consumers must display it as unavailable rather than inventing an
338
- estimate.
339
-
340
- **Does it work with private repos?**
341
- Yes. Orchestration runs through the selected local CLI. The provider still
342
- connects to its model API and any MCP/integration endpoints you configure.
343
-
344
- **How do I use specrails with Kimi?**
345
- Install and authenticate Kimi Code, then run
346
- `npx specrails-core@latest init --provider kimi`. Invoke the generated workflows
347
- as `/skill:specrails-implement`, `/skill:specrails-enrich`, and so on in Kimi's
348
- interactive TUI. Headless callers use the managed
349
- `.kimi-code/specrails/run-skill.mjs` helper: Kimi 0.27 sends a slash command
350
- passed directly to `kimi -p` as literal text, so the helper first renders the
351
- same skill prompt as Kimi's native activation path and then starts external
352
- `kimi -p --output-format stream-json`. No server installation is required.
353
-
354
- ---
125
+ ```sh
126
+ git clone https://github.com/fjpulidop/specrails-core.git
127
+ cd specrails-core
128
+ npm ci
129
+ npm test
130
+ ```
355
131
 
356
- ## Related
132
+ `npm test` builds `dist/`, checks types and runs the tests. To use the current checkout against a separate project:
357
133
 
358
- - **[specrails-desktop](https://github.com/fjpulidop/specrails-desktop)** — desktop dashboard that visualises specrails pipelines (macOS, open source).
359
- - **[specrails.dev](https://specrails.dev)** — landing page and documentation.
134
+ ```sh
135
+ npm run build
136
+ node bin/specrails-core.mjs --version
137
+ node bin/specrails-core.mjs init --root-dir /absolute/path/to/project --provider codex
138
+ ```
360
139
 
361
- ---
140
+ That final command installs into the target project. Use a disposable fixture when testing installation behavior. No global npm install is needed to execute this checkout.
362
141
 
363
- ## Support
142
+ | Command | Purpose |
143
+ | --- | --- |
144
+ | `npm run build` | Compile the installer and runtime |
145
+ | `npm run typecheck` | Check production and test types |
146
+ | `npm test` | Build, typecheck and run tests |
147
+ | `npm run test:coverage` | Build and run the coverage suite |
148
+ | `npm run test:scripts` | Run release and package guard regressions |
149
+ | `npm run check:package` | Build, install and verify a temporary npm consumer |
150
+ | `npm run ci` | Run local type, release, coverage and package checks |
151
+ | `npm pack` | Build and create a package tarball without publishing |
364
152
 
365
- If specrails-core is useful to you, you can donate on [Ko-fi](https://ko-fi.com/D1D81Y002C) to support ongoing development.
153
+ See [CI and releases](docs/ci-cd.md) for platform gates and publication requirements. Tests with simulated provider processes do not establish live compatibility with every CLI version, and an installer test does not prove a model will successfully implement every requested feature.
366
154
 
367
- [![Donate on Ko-fi](https://img.shields.io/badge/Donate-Ko--fi-FF5E5B?logo=kofi&logoColor=white&style=flat-square)](https://ko-fi.com/D1D81Y002C)
155
+ ## Data, security and documentation
368
156
 
369
- ---
157
+ Core's configuration, specs and run state are local files. Provider CLIs still send supplied context to their configured model services; package installation, GitHub/Jira and MCP integrations may also use the network. Model usage is billed according to your provider. Review the repository's commands and agent permissions before execution.
370
158
 
371
- ## License
159
+ - [CLI reference](docs/user-docs/cli-reference.md)
160
+ - [Provider pipeline contracts](docs/user-docs/provider-pipelines.md)
161
+ - [Core update consistency](docs/user-docs/core-updates.md)
162
+ - [Local tickets](docs/local-tickets.md)
163
+ - [Documentation index](docs/README.md)
164
+ - [Contributing](CONTRIBUTING.md), [security reporting](SECURITY.md) and [changelog](CHANGELOG.md)
372
165
 
373
- MIT [fjpulidop](https://github.com/fjpulidop)
166
+ Specrails Core is available under the [MIT license](LICENSE). Development can be supported through [Ko-fi](https://ko-fi.com/D1D81Y002C).
@@ -61,6 +61,7 @@ const KNOWN_SUBCOMMANDS = new Set([
61
61
  'init',
62
62
  'update',
63
63
  'doctor',
64
+ 'pipeline',
64
65
  'install-framework',
65
66
  'swap-current',
66
67
  'assemble',
@@ -72,7 +73,7 @@ const KNOWN_SUBCOMMANDS = new Set([
72
73
  if (!KNOWN_SUBCOMMANDS.has(subcommand)) {
73
74
  console.error(`Unknown command: ${subcommand}\n`)
74
75
  console.error(
75
- 'Available commands: init, update, doctor, install-framework, swap-current, assemble, version, profile, help',
76
+ 'Available commands: init, update, doctor, install-framework, swap-current, assemble, version, profile, pipeline, help',
76
77
  )
77
78
  process.exit(1)
78
79
  }
@@ -187,6 +188,7 @@ function printUsage() {
187
188
  Usage:
188
189
  specrails-core init [--root-dir <path>] [--yes|-y] [--no-tui] Install into a repository
189
190
  specrails-core update [--only <component>] [--dry-run] Update an existing installation
191
+ specrails-core pipeline <init|status|phase|verify|archive-check|preview|apply-preview> [--context <path>]
190
192
  specrails-core doctor Run health checks
191
193
  specrails-core install-framework --framework-dir <path> --provider <value> --version <value>
192
194
  Materialize an offline framework version
@@ -15,6 +15,7 @@ import { runDoctor } from './commands/doctor.js';
15
15
  import { runAssemble, runInstallFramework, runSwapCurrent, } from './commands/framework.js';
16
16
  import { runInit } from './commands/init.js';
17
17
  import { runUpdate } from './commands/update.js';
18
+ import { runPipelineCommand } from './runtime/pipeline-state.js';
18
19
  import { isInstallerError } from './util/errors.js';
19
20
  import { fatal } from './util/logger.js';
20
21
  /**
@@ -81,6 +82,7 @@ function usageText() {
81
82
  'Commands:',
82
83
  ' init Install specrails into a repository',
83
84
  ' update Update an existing specrails installation',
85
+ ' pipeline Inspect and execute durable implementation phases',
84
86
  ' doctor Diagnose the health of an existing installation',
85
87
  ' install-framework Materialize the versioned framework (offline)',
86
88
  ' swap-current Point framework/current at a version (offline)',
@@ -126,6 +128,8 @@ async function dispatch(subcommand, flags, _positionals) {
126
128
  case 'update':
127
129
  await runUpdate(flags);
128
130
  return 0;
131
+ case 'pipeline':
132
+ return runPipelineCommand(flags, _positionals);
129
133
  case 'doctor': {
130
134
  const result = await runDoctor(flags);
131
135
  return result.failed === 0 ? 0 : 1;
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/installer/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/installer/cli.ts"],"names":[],"mappings":"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"}