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.
- package/README.md +103 -310
- package/bin/specrails-core.mjs +3 -1
- package/dist/installer/cli.js +4 -0
- package/dist/installer/cli.js.map +1 -1
- package/dist/installer/commands/framework.js +64 -49
- package/dist/installer/commands/framework.js.map +1 -1
- package/dist/installer/commands/init.js +102 -66
- package/dist/installer/commands/init.js.map +1 -1
- package/dist/installer/commands/update.js +80 -74
- package/dist/installer/commands/update.js.map +1 -1
- package/dist/installer/commands/v5-migration.js +14 -0
- package/dist/installer/commands/v5-migration.js.map +1 -1
- package/dist/installer/phases/framework-lifecycle.js +2 -0
- package/dist/installer/phases/framework-lifecycle.js.map +1 -1
- package/dist/installer/phases/scaffold.js +191 -258
- package/dist/installer/phases/scaffold.js.map +1 -1
- package/dist/installer/runtime/pipeline-state.js +801 -0
- package/dist/installer/runtime/pipeline-state.js.map +1 -0
- package/dist/installer/util/exec.js +6 -1
- package/dist/installer/util/exec.js.map +1 -1
- package/dist/installer/util/fs.js +11 -2
- package/dist/installer/util/fs.js.map +1 -1
- package/dist/installer/util/install-transaction.js +246 -0
- package/dist/installer/util/install-transaction.js.map +1 -0
- package/dist/installer/util/registry.js +20 -0
- package/dist/installer/util/registry.js.map +1 -1
- package/docs/ci-cd.md +57 -0
- package/docs/user-docs/codex-vs-claude-code.md +23 -151
- package/docs/user-docs/core-updates.md +70 -0
- package/docs/user-docs/provider-pipelines.md +53 -0
- package/integration-contract.json +179 -66
- package/package.json +5 -2
- package/templates/agents/sr-developer.md +9 -11
- package/templates/agents/sr-reviewer.md +26 -33
- package/templates/codex-skills/batch-implement/SKILL.md +58 -244
- package/templates/codex-skills/implement/SKILL.md +136 -338
- package/templates/codex-skills/rails/sr-architect/SKILL.md +7 -0
- package/templates/codex-skills/rails/sr-developer/SKILL.md +13 -0
- package/templates/codex-skills/rails/sr-reviewer/SKILL.md +39 -5
- package/templates/codex-skills/retry/SKILL.md +37 -117
- package/templates/commands/specrails/batch-implement.md +16 -288
- package/templates/commands/specrails/implement.md +62 -1057
- package/templates/commands/specrails/retry.md +22 -314
- package/templates/gemini-commands/batch-implement.toml +28 -40
- package/templates/gemini-commands/implement.toml +55 -114
- package/templates/gemini-commands/retry.toml +21 -0
- package/templates/kimi/specrails/run-skill.mjs +51 -2
- package/templates/runtime/provider-pipeline.md +55 -0
package/README.md
CHANGED
|
@@ -1,373 +1,166 @@
|
|
|
1
1
|
# specrails-core
|
|
2
2
|
|
|
3
|
-
[](https://www.npmjs.com/package/specrails-core)
|
|
7
|
-
[](#provider-support)
|
|
3
|
+
[](https://github.com/fjpulidop/specrails-core/actions/workflows/ci.yml)
|
|
4
|
+
[](https://www.npmjs.com/package/specrails-core)
|
|
5
|
+
[](LICENSE)
|
|
8
6
|
|
|
9
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
31
|
+
Open the selected AI CLI in that project and use its native workflow syntax:
|
|
154
32
|
|
|
155
|
-
|
|
156
|
-
|
|
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
|
-
|
|
40
|
+
For example, enter this **inside Claude Code or Gemini CLI**, not in your shell:
|
|
160
41
|
|
|
161
|
-
```
|
|
162
|
-
|
|
42
|
+
```text
|
|
43
|
+
/specrails:implement "add keyboard navigation to the settings page"
|
|
44
|
+
/specrails:implement #1, #2
|
|
163
45
|
```
|
|
164
46
|
|
|
165
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
82
|
+
## Extend the agents
|
|
246
83
|
|
|
247
|
-
|
|
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
|
-
```
|
|
250
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
98
|
+
## Update an existing project
|
|
263
99
|
|
|
264
|
-
|
|
100
|
+
Updating the executable and refreshing a project's artifacts are separate operations. From the project directory:
|
|
265
101
|
|
|
266
|
-
```
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
295
|
-
|
|
296
|
-
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
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
|
-
|
|
132
|
+
`npm test` builds `dist/`, checks types and runs the tests. To use the current checkout against a separate project:
|
|
357
133
|
|
|
358
|
-
|
|
359
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
166
|
+
Specrails Core is available under the [MIT license](LICENSE). Development can be supported through [Ko-fi](https://ko-fi.com/D1D81Y002C).
|
package/bin/specrails-core.mjs
CHANGED
|
@@ -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
|
package/dist/installer/cli.js
CHANGED
|
@@ -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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"}
|