specrails-core 4.7.0 → 4.7.2
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 +4 -4
- package/bin/specrails-core.mjs +3 -5
- package/commands/enrich.md +6 -6
- package/dist/installer/cli.js +0 -5
- package/dist/installer/cli.js.map +1 -1
- package/dist/installer/commands/init.js +3 -2
- package/dist/installer/commands/init.js.map +1 -1
- package/dist/installer/commands/update.js +1 -1
- package/dist/installer/commands/update.js.map +1 -1
- package/dist/installer/phases/prereqs.js +1 -1
- package/dist/installer/phases/prereqs.js.map +1 -1
- package/dist/installer/phases/scaffold.js +2 -2
- package/dist/installer/util/errors.js +1 -1
- package/dist/installer/util/paths.js +3 -3
- package/docs/windows.md +1 -1
- package/package.json +3 -7
- package/schemas/profile.v1.json +1 -1
- package/templates/codex-skills/enrich/SKILL.md +1 -1
- package/templates/codex-skills/rails/sr-product-manager/SKILL.md +1 -1
- package/templates/commands/specrails/batch-implement.md +1 -1
- package/templates/commands/specrails/enrich.md +6 -6
- package/templates/commands/specrails/explore-spec.md +7 -7
- package/templates/commands/specrails/implement.md +3 -3
- package/templates/settings/codex-config.toml +1 -1
- package/dist/installer/commands/perf-check.js +0 -16
- package/dist/installer/commands/perf-check.js.map +0 -1
package/README.md
CHANGED
|
@@ -201,7 +201,7 @@ When running the pipeline, the active profile is resolved in this order:
|
|
|
201
201
|
2. `<cwd>/.specrails/profiles/project-default.json`
|
|
202
202
|
3. No profile — legacy behavior (identical to pre-4.1.0)
|
|
203
203
|
|
|
204
|
-
Tools such as [specrails-
|
|
204
|
+
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.
|
|
205
205
|
|
|
206
206
|
### Schema
|
|
207
207
|
|
|
@@ -232,10 +232,10 @@ Baseline agents (`sr-architect`, `sr-developer`, `sr-reviewer`) MUST appear in `
|
|
|
232
232
|
|
|
233
233
|
The following paths are **reserved** — `specrails-core update` will never create, modify, or delete anything inside them:
|
|
234
234
|
|
|
235
|
-
- `.specrails/profiles/**` — profile JSON files (yours and
|
|
235
|
+
- `.specrails/profiles/**` — profile JSON files (yours and desktop-authored).
|
|
236
236
|
- `.claude/agents/custom-*.md` — your custom agents. Use the `custom-` prefix to opt in to this protection.
|
|
237
237
|
|
|
238
|
-
This contract is what lets you safely hand-author (or let specrails-
|
|
238
|
+
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.
|
|
239
239
|
|
|
240
240
|
---
|
|
241
241
|
|
|
@@ -342,7 +342,7 @@ Yes. Everything runs locally through Claude Code. No external services beyond th
|
|
|
342
342
|
|
|
343
343
|
## Related
|
|
344
344
|
|
|
345
|
-
- **[specrails-
|
|
345
|
+
- **[specrails-desktop](https://github.com/fjpulidop/specrails-desktop)** — desktop dashboard that visualises specrails pipelines (macOS, open source).
|
|
346
346
|
- **[specrails.dev](https://specrails.dev)** — landing page and documentation.
|
|
347
347
|
|
|
348
348
|
---
|
package/bin/specrails-core.mjs
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* specrails-core CLI — thin ESM dispatcher.
|
|
4
4
|
*
|
|
5
|
-
* All installer subcommands (init, update, doctor
|
|
5
|
+
* All installer subcommands (init, update, doctor) execute
|
|
6
6
|
* in-process via the Node installer under dist/installer/. This file
|
|
7
7
|
* only keeps logic that is local to the dispatcher:
|
|
8
8
|
* - `profile validate` / `profile show` — schema validation via ajv.
|
|
@@ -50,7 +50,6 @@ const KNOWN_SUBCOMMANDS = new Set([
|
|
|
50
50
|
'init',
|
|
51
51
|
'update',
|
|
52
52
|
'doctor',
|
|
53
|
-
'perf-check',
|
|
54
53
|
'enrich',
|
|
55
54
|
'version',
|
|
56
55
|
'profile',
|
|
@@ -59,7 +58,7 @@ const KNOWN_SUBCOMMANDS = new Set([
|
|
|
59
58
|
|
|
60
59
|
if (!KNOWN_SUBCOMMANDS.has(subcommand)) {
|
|
61
60
|
console.error(`Unknown command: ${subcommand}\n`)
|
|
62
|
-
console.error('Available commands: init, update, doctor,
|
|
61
|
+
console.error('Available commands: init, update, doctor, enrich, version, profile, help')
|
|
63
62
|
process.exit(1)
|
|
64
63
|
}
|
|
65
64
|
|
|
@@ -176,7 +175,7 @@ if (subcommand === 'init') {
|
|
|
176
175
|
process.exit(0)
|
|
177
176
|
}
|
|
178
177
|
|
|
179
|
-
// ─── update / doctor
|
|
178
|
+
// ─── update / doctor — direct dispatch to Node CLI ───────────────────────────
|
|
180
179
|
|
|
181
180
|
await runNodeCli([subcommand, ...subargs])
|
|
182
181
|
process.exit(0)
|
|
@@ -192,7 +191,6 @@ Usage:
|
|
|
192
191
|
specrails-core init [--root-dir <path>] [--yes|-y] [--no-tui] Install into a repository
|
|
193
192
|
specrails-core update [--only <component>] [--dry-run] Update an existing installation
|
|
194
193
|
specrails-core doctor Run health checks
|
|
195
|
-
specrails-core perf-check [--files <list>] Performance regression check (CI)
|
|
196
194
|
specrails-core enrich [--from-config <path>] Run /specrails:enrich via Claude CLI
|
|
197
195
|
specrails-core profile <validate|show> [<path>] Validate or pretty-print a profile JSON
|
|
198
196
|
specrails-core version Show installed version
|
package/commands/enrich.md
CHANGED
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
Interactive wizard to configure the full agent workflow system for this repository. Analyzes the codebase, discovers target users, generates VPC personas, and creates all agents, commands, rules, and configuration adapted to this project. Supports config-driven mode for direct installation from a pre-built config file.
|
|
4
4
|
|
|
5
|
-
**Prerequisites:** Ensure this repo was initialized with `npx specrails-core@latest init` (or via specrails-
|
|
5
|
+
**Prerequisites:** Ensure this repo was initialized with `npx specrails-core@latest init` (or via specrails-desktop) so `.specrails/setup-templates/` exists.
|
|
6
6
|
|
|
7
|
-
###
|
|
7
|
+
### Desktop App Checkpoint Protocol
|
|
8
8
|
|
|
9
|
-
When running inside specrails-
|
|
9
|
+
When running inside specrails-desktop, emit checkpoint markers at key transitions so the desktop app `CheckpointTracker` can display progress. Each checkpoint is a single line printed to stdout:
|
|
10
10
|
|
|
11
11
|
```
|
|
12
12
|
[checkpoint:phase_1_analysis] Codebase analysis complete
|
|
@@ -16,7 +16,7 @@ When running inside specrails-hub, emit checkpoint markers at key transitions so
|
|
|
16
16
|
[checkpoint:phase_5_cleanup] Cleanup and summary complete
|
|
17
17
|
```
|
|
18
18
|
|
|
19
|
-
The
|
|
19
|
+
The desktop app parses these via `detectCheckpointFromText()` regex patterns. Always emit checkpoints at the end of each phase, even in `--from-config` and `--quick` modes.
|
|
20
20
|
|
|
21
21
|
---
|
|
22
22
|
|
|
@@ -890,7 +890,7 @@ Local tickets are always read-write — there is no "read only" mode since the f
|
|
|
890
890
|
**Labels:** Freeform strings following the `area:*` and `effort:*` convention
|
|
891
891
|
**Source values:** `manual`, `get-backlog-specs`, `propose-spec`
|
|
892
892
|
|
|
893
|
-
**Advisory file locking protocol** (CLI agents and
|
|
893
|
+
**Advisory file locking protocol** (CLI agents and desktop app server must both follow this):
|
|
894
894
|
|
|
895
895
|
The `revision` counter in the JSON root enables optimistic concurrency — increment it on **every** write. The lock file prevents concurrent corruption:
|
|
896
896
|
|
|
@@ -903,7 +903,7 @@ The `revision` counter in the JSON root enables optimistic concurrency — incre
|
|
|
903
903
|
4. **Release lock:** Delete `.specrails/local-tickets.json.lock`
|
|
904
904
|
5. **Always increment `revision`** by 1 and update `last_updated` on every successful write
|
|
905
905
|
|
|
906
|
-
The
|
|
906
|
+
The desktop app server uses `proper-lockfile` (or equivalent) to honor the same protocol via the `.lock` file path.
|
|
907
907
|
|
|
908
908
|
#### If GitHub Issues
|
|
909
909
|
|
package/dist/installer/cli.js
CHANGED
|
@@ -13,7 +13,6 @@ import path from 'node:path';
|
|
|
13
13
|
import { fileURLToPath } from 'node:url';
|
|
14
14
|
import { runDoctor } from './commands/doctor.js';
|
|
15
15
|
import { runInit } from './commands/init.js';
|
|
16
|
-
import { runPerfCheck } from './commands/perf-check.js';
|
|
17
16
|
import { runUpdate } from './commands/update.js';
|
|
18
17
|
import { isInstallerError } from './util/errors.js';
|
|
19
18
|
import { fatal } from './util/logger.js';
|
|
@@ -82,7 +81,6 @@ function usageText() {
|
|
|
82
81
|
' init Install specrails into a repository',
|
|
83
82
|
' update Update an existing specrails installation',
|
|
84
83
|
' doctor Diagnose the health of an existing installation',
|
|
85
|
-
' perf-check Run the agent-workflow micro-benchmark',
|
|
86
84
|
' help Show this help message',
|
|
87
85
|
' version Print the installed version',
|
|
88
86
|
'',
|
|
@@ -128,9 +126,6 @@ async function dispatch(subcommand, flags, _positionals) {
|
|
|
128
126
|
const result = await runDoctor(flags);
|
|
129
127
|
return result.failed === 0 ? 0 : 1;
|
|
130
128
|
}
|
|
131
|
-
case 'perf-check':
|
|
132
|
-
await runPerfCheck(flags);
|
|
133
|
-
return 0;
|
|
134
129
|
case 'help':
|
|
135
130
|
case '':
|
|
136
131
|
process.stdout.write(usageText());
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/installer/cli.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAExC,OAAO,EAAE,SAAS,EAAoB,MAAM,sBAAsB,CAAA;AAClE,OAAO,EAAE,OAAO,EAAkB,MAAM,oBAAoB,CAAA;AAC5D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/installer/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -87,9 +87,10 @@ export async function runInit(flags) {
|
|
|
87
87
|
step('Installation complete');
|
|
88
88
|
info('Quick tier: agents + rules were placed directly; enrich not required.');
|
|
89
89
|
}
|
|
90
|
-
// Terminal sentinel for programmatic consumers (specrails-
|
|
90
|
+
// Terminal sentinel for programmatic consumers (specrails-desktop's setup
|
|
91
91
|
// wizard matches this exact line via regex to mark the "init complete"
|
|
92
|
-
// checkpoint).
|
|
92
|
+
// checkpoint). The sentinel line below is FROZEN — the downstream setup
|
|
93
|
+
// wizard regex-matches it byte-for-byte; never change its spelling.
|
|
93
94
|
ok('init complete');
|
|
94
95
|
return {
|
|
95
96
|
repoRoot,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/installer/commands/init.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/installer/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -39,7 +39,7 @@ export async function runUpdate(flags) {
|
|
|
39
39
|
const scope = resolveScope(flags.only);
|
|
40
40
|
if (scope === 'web-manager') {
|
|
41
41
|
warn('--only=web-manager is deprecated. The standalone web-manager has been retired; ' +
|
|
42
|
-
'specrails-
|
|
42
|
+
'specrails-desktop is the supported dashboard. Skipping with no changes.');
|
|
43
43
|
return { repoRoot, previousVersion, currentVersion, provider, dryRun, scope, tier, agentTeams };
|
|
44
44
|
}
|
|
45
45
|
if (config) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/installer/commands/update.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAExC,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AACrE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AACxD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAExE,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAa,MAAM,6BAA6B,CAAA;AAC7F,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAA0B,MAAM,uBAAuB,CAAA;AACjG,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,eAAe,EAAiB,MAAM,8BAA8B,CAAA;AAC/G,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;AAS5D,MAAM,UAAU,GAAwB,IAAI,GAAG,CAAC;IAC9C,KAAK;IACL,MAAM;IACN,OAAO;IACP,QAAQ;IACR,aAAa;CACd,CAAC,CAAA;AAyCF,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,KAAkB;IAChD,MAAM,SAAS,GAAG,gBAAgB,EAAE,CAAA;IACpC,MAAM,cAAc,GAAG,WAAW,CAAC,SAAS,CAAC,CAAA;IAE7C,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAC3B,OAAO,KAAK,CAAC,UAAU,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAC1E,CAAA;IACD,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAA;IAExC,iEAAiE;IACjE,oEAAoE;IACpE,wEAAwE;IACxE,MAAM,MAAM,GAAG,iBAAiB,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAA;IAC7D,MAAM,IAAI,GAAS,MAAM,EAAE,IAAI,IAAI,MAAM,CAAA;IACzC,MAAM,UAAU,GAAG,KAAK,CAAC,aAAa,CAAC,KAAK,IAAI,IAAI,MAAM,EAAE,WAAW,KAAK,IAAI,CAAA;IAChF,MAAM,cAAc,GAAG,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAA;IAE9C,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,EAAE,mBAAmB,CAAC,CAAA;IACrE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,iBAAiB,CACzB,6CAA6C,QAAQ,0CAA0C,CAChG,CAAA;IACH,CAAC;IACD,MAAM,eAAe,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAA;IAErD,IAAI,CAAC,kDAAkD,CAAC,CAAA;IACxD,MAAM,QAAQ,GAAG,MAAM,uBAAuB,CAAC,QAAQ,CAAC,CAAA;IACxD,MAAM,EAAE,WAAW,EAAE,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAA;IAC9C,EAAE,CAAC,sBAAsB,QAAQ,KAAK,WAAW,GAAG,CAAC,CAAA;IAErD,oEAAoE;IACpE,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IACtC,IAAI,KAAK,KAAK,aAAa,EAAE,CAAC;QAC5B,IAAI,CACF,iFAAiF;YAC/E,
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/installer/commands/update.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,7 +15,7 @@ export async function checkPrerequisites(options) {
|
|
|
15
15
|
throw new PrerequisiteError('git is required but not on PATH. Install git: https://git-scm.com/');
|
|
16
16
|
}
|
|
17
17
|
// 1.1 Git repository — auto-init when --yes, otherwise assume caller
|
|
18
|
-
// resolved the prompt upstream (bin/specrails-core.cjs /
|
|
18
|
+
// resolved the prompt upstream (bin/specrails-core.cjs / desktop app TUI).
|
|
19
19
|
if (!(await isGitRepo(options.repoRoot))) {
|
|
20
20
|
if (!options.autoYes) {
|
|
21
21
|
throw new PrerequisiteError(`${options.repoRoot} is not a git repository. ` +
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prereqs.js","sourceRoot":"","sources":["../../../src/installer/phases/prereqs.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAA;AAE5B,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AACrD,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC3D,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACtD,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAE5E,OAAO,EAGL,yBAAyB,EACzB,aAAa,EACb,kBAAkB,EAClB,eAAe,GAChB,MAAM,sBAAsB,CAAA;AA0C7B;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,OAAsB;IAC7D,IAAI,CAAC,CAAC,MAAM,YAAY,EAAE,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,iBAAiB,CACzB,oEAAoE,CACrE,CAAA;IACH,CAAC;IAED,qEAAqE;IACrE
|
|
1
|
+
{"version":3,"file":"prereqs.js","sourceRoot":"","sources":["../../../src/installer/phases/prereqs.ts"],"names":[],"mappings":"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"}
|
|
@@ -86,7 +86,7 @@ const COMMAND_AGENT_DEPENDENCIES = [
|
|
|
86
86
|
const EXPLANATION_AUTHORS = new Set(['sr-architect', 'sr-reviewer']);
|
|
87
87
|
/**
|
|
88
88
|
* Returns true iff any of the provider directories already contains
|
|
89
|
-
* content. The
|
|
89
|
+
* content. The desktop-app-driven path skips the "merge existing?" prompt and
|
|
90
90
|
* assumes `--yes`; the CLI dispatcher (bin/specrails-core.cjs) should
|
|
91
91
|
* have prompted before entering this phase.
|
|
92
92
|
*/
|
|
@@ -406,7 +406,7 @@ function pruneLegacyArtifacts(input) {
|
|
|
406
406
|
* Source is setup-templates/ (not scriptDir/templates/) so the pipeline
|
|
407
407
|
* is: scriptDir/templates/ → setup-templates/ (earlier scaffold step)
|
|
408
408
|
* → <providerDir>/ (this function). The intermediate hop mirrors the
|
|
409
|
-
* retired bash installer and lets downstream consumers (specrails-
|
|
409
|
+
* retired bash installer and lets downstream consumers (specrails-desktop's
|
|
410
410
|
* deployTemplates, /specrails:enrich, update flow) read from a single
|
|
411
411
|
* canonical staging dir.
|
|
412
412
|
*/
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Typed error hierarchy for the installer. Each subclass carries an
|
|
3
3
|
* `exitCode` which the CLI dispatcher translates to the process exit
|
|
4
|
-
* code so callers (shells, CI, specrails-
|
|
4
|
+
* code so callers (shells, CI, specrails-desktop wizard) can distinguish
|
|
5
5
|
* failure modes without string-parsing stdout.
|
|
6
6
|
*
|
|
7
7
|
* Exit-code ranges:
|
|
@@ -2,15 +2,15 @@ import path from 'node:path';
|
|
|
2
2
|
/**
|
|
3
3
|
* Paths the installer MUST NOT create, modify, or delete. These hold
|
|
4
4
|
* user / team state that survives re-runs (profile JSON authored by
|
|
5
|
-
* specrails-
|
|
5
|
+
* specrails-desktop, custom agents authored by the user). Breaking this
|
|
6
6
|
* contract silently destroys user work.
|
|
7
7
|
*
|
|
8
8
|
* Audited by vitest spec `reserved-paths.test.ts`.
|
|
9
9
|
*/
|
|
10
10
|
export const RESERVED_PATHS = [
|
|
11
11
|
/**
|
|
12
|
-
* .specrails/profiles/** — project +
|
|
13
|
-
* specrails-
|
|
12
|
+
* .specrails/profiles/** — project + desktop-app-authored profile JSON.
|
|
13
|
+
* specrails-desktop writes profile files here and expects them preserved
|
|
14
14
|
* across specrails-core updates.
|
|
15
15
|
*/
|
|
16
16
|
'.specrails/profiles/',
|
package/docs/windows.md
CHANGED
|
@@ -37,7 +37,7 @@ Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned
|
|
|
37
37
|
|
|
38
38
|
## Known limitations
|
|
39
39
|
|
|
40
|
-
- **PATH refresh after installing new tools.** Windows GUI shells (Explorer, launcher-started apps) do not re-read PATH until logout/login. If you install `claude.cmd` and launch specrails-
|
|
40
|
+
- **PATH refresh after installing new tools.** Windows GUI shells (Explorer, launcher-started apps) do not re-read PATH until logout/login. If you install `claude.cmd` and launch specrails-desktop immediately, the desktop app's sidecar may not see it. Restart the app after changes to the Env Vars dialog, or launch from a fresh PowerShell.
|
|
41
41
|
- **CRLF checkouts.** If you clone specrails-core with `core.autocrlf=true`, the repo's `.gitattributes` forces LF on every text file at checkout so the Node installer writes byte-identical artefacts across platforms. Running `git add --renormalize .` once after cloning fixes any pre-existing CRLF contamination.
|
|
42
42
|
- **ARM64.** The x64 Node binary runs under Windows 11's native x64 emulation. All native dependencies we use (`better-sqlite3`, `node-pty`, etc.) resolve to their x64 prebuilts; performance hit is ~10-20% vs native ARM64 but fully functional.
|
|
43
43
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "specrails-core",
|
|
3
|
-
"version": "4.7.
|
|
3
|
+
"version": "4.7.2",
|
|
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": {
|
|
@@ -53,17 +53,14 @@
|
|
|
53
53
|
"build": "tsc -p tsconfig.json",
|
|
54
54
|
"build:watch": "tsc -p tsconfig.json --watch",
|
|
55
55
|
"typecheck": "tsc -p tsconfig.test.json --noEmit",
|
|
56
|
-
"test": "npm run typecheck &&
|
|
56
|
+
"test": "npm run typecheck && vitest run",
|
|
57
57
|
"test:watch": "vitest",
|
|
58
58
|
"test:coverage": "vitest run --coverage",
|
|
59
|
-
"prepare": "npm run build",
|
|
60
59
|
"prepack": "npm run build"
|
|
61
60
|
},
|
|
62
|
-
"specrails": {
|
|
63
|
-
"openspecVersion": "1.2.0"
|
|
64
|
-
},
|
|
65
61
|
"dependencies": {
|
|
66
62
|
"@inquirer/prompts": "^7.0.0",
|
|
63
|
+
"ajv": "^8.18.0",
|
|
67
64
|
"js-yaml": "^4.1.0",
|
|
68
65
|
"picocolors": "^1.1.1"
|
|
69
66
|
},
|
|
@@ -71,7 +68,6 @@
|
|
|
71
68
|
"@types/js-yaml": "^4.0.9",
|
|
72
69
|
"@types/node": "^22.10.2",
|
|
73
70
|
"@vitest/coverage-v8": "^4.1.5",
|
|
74
|
-
"ajv": "^8.18.0",
|
|
75
71
|
"typescript": "^5.7.2",
|
|
76
72
|
"vitest": "^4.1.5"
|
|
77
73
|
},
|
package/schemas/profile.v1.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
3
|
"$id": "https://raw.githubusercontent.com/fjpulidop/specrails-core/main/schemas/profile.v1.json",
|
|
4
4
|
"title": "specrails agent profile (v1)",
|
|
5
|
-
"description": "Declarative configuration for the specrails implement pipeline. Describes which agents participate, which models they run with, and how tasks are routed to specialists. Consumed by `implement.md` and produced by tools like specrails-
|
|
5
|
+
"description": "Declarative configuration for the specrails implement pipeline. Describes which agents participate, which models they run with, and how tasks are routed to specialists. Consumed by `implement.md` and produced by tools like specrails-desktop.",
|
|
6
6
|
"type": "object",
|
|
7
7
|
"required": ["schemaVersion", "name", "orchestrator", "agents", "routing"],
|
|
8
8
|
"additionalProperties": false,
|
|
@@ -21,7 +21,7 @@ it doesn't run the rail pipeline.
|
|
|
21
21
|
generation + rail customisation + AGENTS.md refresh).
|
|
22
22
|
- `$enrich --from-config` — read parameters from
|
|
23
23
|
`.specrails/install-config.yaml` instead of asking. Used by
|
|
24
|
-
the
|
|
24
|
+
the desktop app during the install wizard's full-tier path.
|
|
25
25
|
- `$enrich --personas-only` — only regenerate personas; leave
|
|
26
26
|
rail skills untouched.
|
|
27
27
|
|
|
@@ -32,7 +32,7 @@ Two ways:
|
|
|
32
32
|
don't propose duplicates).
|
|
33
33
|
- A representative slice of the source code (5-10 files,
|
|
34
34
|
drawn from the relevant theme).
|
|
35
|
-
- The
|
|
35
|
+
- The desktop app's own `openspec/specs/` if relevant
|
|
36
36
|
(cross-component changes).
|
|
37
37
|
|
|
38
38
|
### 2. Identify gaps
|
|
@@ -192,7 +192,7 @@ For each wave `W`:
|
|
|
192
192
|
2. For each feature batch of size ≤ `CONCURRENCY` within the wave:
|
|
193
193
|
- For every ref in the batch, determine the profile spawn env:
|
|
194
194
|
- If `PROFILE_MAP` contains an entry for this ref, set `SPECRAILS_PROFILE_PATH=<abs path to .specrails/profiles/<mapped-name>.json>` for this invocation only.
|
|
195
|
-
- Otherwise, inherit whatever `$SPECRAILS_PROFILE_PATH` was set by the caller (e.g. specrails-
|
|
195
|
+
- Otherwise, inherit whatever `$SPECRAILS_PROFILE_PATH` was set by the caller (e.g. specrails-desktop), or leave unset so the rail falls back to `.specrails/profiles/project-default.json` or legacy mode.
|
|
196
196
|
- Invoke `/specrails:implement` with the feature refs and forwarded flags:
|
|
197
197
|
```
|
|
198
198
|
SPECRAILS_PROFILE_PATH=<resolved-per-rail-path> /specrails:implement <ref> [--dry-run]
|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
Interactive wizard to configure the full agent workflow system for this repository. Analyzes the codebase, discovers target users, generates VPC personas, and creates all agents, commands, rules, and configuration adapted to this project. Supports config-driven mode for direct installation from a pre-built config file.
|
|
4
4
|
|
|
5
|
-
**Prerequisites:** Ensure this repo was initialized with `npx specrails-core@latest init` (or via specrails-
|
|
5
|
+
**Prerequisites:** Ensure this repo was initialized with `npx specrails-core@latest init` (or via specrails-desktop) so `.specrails/setup-templates/` exists.
|
|
6
6
|
|
|
7
|
-
###
|
|
7
|
+
### Desktop App Checkpoint Protocol
|
|
8
8
|
|
|
9
|
-
When running inside specrails-
|
|
9
|
+
When running inside specrails-desktop, emit checkpoint markers at key transitions so the desktop app `CheckpointTracker` can display progress. Each checkpoint is a single line printed to stdout:
|
|
10
10
|
|
|
11
11
|
```
|
|
12
12
|
[checkpoint:phase_1_analysis] Codebase analysis complete
|
|
@@ -16,7 +16,7 @@ When running inside specrails-hub, emit checkpoint markers at key transitions so
|
|
|
16
16
|
[checkpoint:phase_5_cleanup] Cleanup and summary complete
|
|
17
17
|
```
|
|
18
18
|
|
|
19
|
-
The
|
|
19
|
+
The desktop app parses these via `detectCheckpointFromText()` regex patterns. Always emit checkpoints at the end of each phase, even in `--from-config` and `--quick` modes.
|
|
20
20
|
|
|
21
21
|
---
|
|
22
22
|
|
|
@@ -890,7 +890,7 @@ Local tickets are always read-write — there is no "read only" mode since the f
|
|
|
890
890
|
**Labels:** Freeform strings following the `area:*` and `effort:*` convention
|
|
891
891
|
**Source values:** `manual`, `get-backlog-specs`, `propose-spec`
|
|
892
892
|
|
|
893
|
-
**Advisory file locking protocol** (CLI agents and
|
|
893
|
+
**Advisory file locking protocol** (CLI agents and desktop app server must both follow this):
|
|
894
894
|
|
|
895
895
|
The `revision` counter in the JSON root enables optimistic concurrency — increment it on **every** write. The lock file prevents concurrent corruption:
|
|
896
896
|
|
|
@@ -903,7 +903,7 @@ The `revision` counter in the JSON root enables optimistic concurrency — incre
|
|
|
903
903
|
4. **Release lock:** Delete `.specrails/local-tickets.json.lock`
|
|
904
904
|
5. **Always increment `revision`** by 1 and update `last_updated` on every successful write
|
|
905
905
|
|
|
906
|
-
The
|
|
906
|
+
The desktop app server uses `proper-lockfile` (or equivalent) to honor the same protocol via the `.lock` file path.
|
|
907
907
|
|
|
908
908
|
#### If GitHub Issues
|
|
909
909
|
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: Interactive thinking partner that helps the user shape a spec through conversation. Maintains a structured live draft via fenced spec-draft JSON blocks. The
|
|
2
|
+
description: Interactive thinking partner that helps the user shape a spec through conversation. Maintains a structured live draft via fenced spec-draft JSON blocks. The desktop app commits the ticket — never call ticket-creation commands yourself.
|
|
3
3
|
---
|
|
4
4
|
|
|
5
|
-
You are a senior product engineer helping the user shape a single spec through conversation. The user has opened the **Explore Spec** experience inside specrails-
|
|
5
|
+
You are a senior product engineer helping the user shape a single spec through conversation. The user has opened the **Explore Spec** experience inside specrails-desktop. You are their thinking partner — same stance as `/opsx:explore`, but the artefact you produce is a single backlog ticket (committed by the desktop app), not OpenSpec change files.
|
|
6
6
|
|
|
7
7
|
# Your role
|
|
8
8
|
|
|
@@ -45,11 +45,11 @@ You **MUST NOT**:
|
|
|
45
45
|
- Call `/specrails:propose-spec`, `/specrails:implement`, or other slash commands that produce side effects.
|
|
46
46
|
- Run shell commands beyond read-only inspection (`ls`, `cat`-equivalents via Read).
|
|
47
47
|
|
|
48
|
-
You may **read** anywhere in the project. The
|
|
48
|
+
You may **read** anywhere in the project. The desktop app commits the final ticket via `POST /tickets/from-draft` when the user clicks **Create Spec**.
|
|
49
49
|
|
|
50
50
|
# The structured draft protocol
|
|
51
51
|
|
|
52
|
-
After every assistant turn that has new draft information, end your message with a fenced code block tagged `spec-draft` containing JSON. The
|
|
52
|
+
After every assistant turn that has new draft information, end your message with a fenced code block tagged `spec-draft` containing JSON. The desktop app parses this block and updates the live draft pane the user sees on the right side of the overlay.
|
|
53
53
|
|
|
54
54
|
```spec-draft
|
|
55
55
|
{
|
|
@@ -76,11 +76,11 @@ Field semantics:
|
|
|
76
76
|
- `## Technical Considerations` (bullet list)
|
|
77
77
|
- `## Estimated Complexity` (`Low`/`Medium`/`High`/`Very High` plus one sentence)
|
|
78
78
|
- **Never include a `## Spec Title` heading inside `description`** — the title lives in its own field. Repeating it inside the body produces redundant tickets.
|
|
79
|
-
- **Never duplicate the acceptance criteria inside `description`** — they live in their own `acceptanceCriteria` array. The
|
|
80
|
-
- **`acceptanceCriteria`** is a separate array of short, testable bullet strings. The
|
|
79
|
+
- **Never duplicate the acceptance criteria inside `description`** — they live in their own `acceptanceCriteria` array. The desktop app appends them to the ticket body under a `## Acceptance Criteria` section automatically.
|
|
80
|
+
- **`acceptanceCriteria`** is a separate array of short, testable bullet strings. The desktop app appends them to the ticket body under a `## Acceptance Criteria` section automatically — do NOT duplicate them inside `description`.
|
|
81
81
|
- **`chips`** are 0-3 short replies the user can click to send as their next message. Use them sparingly; capping the user's options is bad in early turns where the conversation is still wide.
|
|
82
82
|
- **`ready: true`** signals "I think the draft is in good enough shape to commit." Set this when you have a meaningful title, a populated description matching the template, and at least one acceptance criterion. Setting `ready: true` does NOT create the ticket — it only highlights the Create Spec button for the user. The user is always the commit.
|
|
83
|
-
- The block is **not shown to the user**. The
|
|
83
|
+
- The block is **not shown to the user**. The desktop app strips it before rendering your message. So put your visible reasoning above the block, in plain prose.
|
|
84
84
|
|
|
85
85
|
# Language
|
|
86
86
|
|
|
@@ -67,7 +67,7 @@ Agent discovery runs in one of two modes: **profile mode** (a profile JSON is ac
|
|
|
67
67
|
|
|
68
68
|
A profile is active when either condition holds:
|
|
69
69
|
|
|
70
|
-
1. The environment variable `SPECRAILS_PROFILE_PATH` is set AND points to a readable file. Tools like `specrails-
|
|
70
|
+
1. The environment variable `SPECRAILS_PROFILE_PATH` is set AND points to a readable file. Tools like `specrails-desktop` set this to a job-scoped snapshot.
|
|
71
71
|
2. The file `.specrails/profiles/project-default.json` exists and is readable.
|
|
72
72
|
|
|
73
73
|
If condition 1 holds, use `$SPECRAILS_PROFILE_PATH` as the profile path. Otherwise, if condition 2 holds, use `.specrails/profiles/project-default.json`. Otherwise, fall through to **legacy mode**.
|
|
@@ -158,7 +158,7 @@ Also store per-agent model overrides and the orchestrator model for use in later
|
|
|
158
158
|
|
|
159
159
|
```bash
|
|
160
160
|
# ORCHESTRATOR_MODEL is informational; the caller is responsible for spawning
|
|
161
|
-
# the orchestrator with this model (e.g. specrails-
|
|
161
|
+
# the orchestrator with this model (e.g. specrails-desktop reads this field directly).
|
|
162
162
|
ORCHESTRATOR_MODEL="$(jq -r '.orchestrator.model' <<<"$PROFILE")"
|
|
163
163
|
|
|
164
164
|
# Per-agent model overrides keyed by agent id.
|
|
@@ -182,7 +182,7 @@ Claude Code's Agent tool determines a subagent's model from the `model:` line in
|
|
|
182
182
|
This rewrite is safe because:
|
|
183
183
|
- Multi-feature runs execute in **isolated git worktrees** (`isolation: worktree`), so each rail mutates its own copy of `.claude/agents/` without cross-rail contention.
|
|
184
184
|
- Single-feature runs are sequential within a single checkout.
|
|
185
|
-
- The
|
|
185
|
+
- The desktop app writes a job-scoped snapshot of the profile and spawns `claude` with `$SPECRAILS_PROFILE_PATH` pointing at it; the frontmatter rewrite follows the snapshot, never the catalog.
|
|
186
186
|
|
|
187
187
|
```bash
|
|
188
188
|
for id in "${!AGENT_MODEL[@]}"; do
|
|
@@ -10,7 +10,7 @@ model = "{{MODEL_NAME}}"
|
|
|
10
10
|
model_reasoning_effort = "medium"
|
|
11
11
|
|
|
12
12
|
# Sandbox mode applied to interactive `codex` sessions launched from this
|
|
13
|
-
# project. The
|
|
13
|
+
# project. The desktop app passes `--sandbox workspace-write` per-spawn so this
|
|
14
14
|
# setting only affects manual terminal use of codex inside this repo.
|
|
15
15
|
# Values: "read-only" | "workspace-write" | "danger-full-access".
|
|
16
16
|
sandbox_mode = "workspace-write"
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { info, rawOut } from '../util/logger.js';
|
|
2
|
-
export async function runPerfCheck(flags = {}) {
|
|
3
|
-
const modifiedFiles = resolveModifiedFiles(flags);
|
|
4
|
-
rawOut('specrails-core performance check\n');
|
|
5
|
-
rawOut(`Modified files: ${modifiedFiles.length > 0 ? modifiedFiles : '<none>'}\n\n`);
|
|
6
|
-
info('This repository contains an installer + Markdown templates — no runtime benchmarks apply.');
|
|
7
|
-
rawOut('\nPERF_STATUS: NO_PERF_IMPACT\n');
|
|
8
|
-
return { status: 'NO_PERF_IMPACT', modifiedFiles };
|
|
9
|
-
}
|
|
10
|
-
function resolveModifiedFiles(flags) {
|
|
11
|
-
if (typeof flags.files === 'string')
|
|
12
|
-
return flags.files;
|
|
13
|
-
const envList = process.env.MODIFIED_FILES_LIST;
|
|
14
|
-
return envList && envList.length > 0 ? envList : '';
|
|
15
|
-
}
|
|
16
|
-
//# sourceMappingURL=perf-check.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"perf-check.js","sourceRoot":"","sources":["../../../src/installer/commands/perf-check.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAoBhD,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,QAAwB,EAAE;IAC3D,MAAM,aAAa,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAA;IAEjD,MAAM,CAAC,oCAAoC,CAAC,CAAA;IAC5C,MAAM,CAAC,mBAAmB,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,MAAM,CAAC,CAAA;IAEpF,IAAI,CACF,2FAA2F,CAC5F,CAAA;IAED,MAAM,CAAC,iCAAiC,CAAC,CAAA;IACzC,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,aAAa,EAAE,CAAA;AACpD,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAqB;IACjD,IAAI,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC,KAAK,CAAA;IACvD,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAA;IAC/C,OAAO,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAA;AACrD,CAAC"}
|