specrails-core 4.11.2 โ 4.12.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 +56 -20
- package/bin/specrails-core.mjs +343 -20
- package/bin/tui-installer.mjs +103 -52
- package/dist/installer/cli.js +1 -1
- package/dist/installer/cli.js.map +1 -1
- package/dist/installer/commands/doctor.js +486 -24
- package/dist/installer/commands/doctor.js.map +1 -1
- package/dist/installer/commands/framework.js +49 -7
- package/dist/installer/commands/framework.js.map +1 -1
- package/dist/installer/commands/init.js +423 -25
- package/dist/installer/commands/init.js.map +1 -1
- package/dist/installer/commands/update.js +36 -9
- package/dist/installer/commands/update.js.map +1 -1
- package/dist/installer/phases/framework-lifecycle.js +125 -0
- package/dist/installer/phases/framework-lifecycle.js.map +1 -0
- package/dist/installer/phases/install-config.js +157 -5
- package/dist/installer/phases/install-config.js.map +1 -1
- package/dist/installer/phases/manifest.js +27 -2
- package/dist/installer/phases/manifest.js.map +1 -1
- package/dist/installer/phases/prereqs.js +57 -2
- package/dist/installer/phases/prereqs.js.map +1 -1
- package/dist/installer/phases/provider-detect.js +116 -6
- package/dist/installer/phases/provider-detect.js.map +1 -1
- package/dist/installer/phases/scaffold.js +1222 -12
- package/dist/installer/phases/scaffold.js.map +1 -1
- package/dist/installer/runtime/kimi.js +255 -0
- package/dist/installer/runtime/kimi.js.map +1 -0
- package/dist/installer/util/paths.js +12 -0
- package/dist/installer/util/paths.js.map +1 -1
- package/dist/installer/util/registry.js +234 -14
- package/dist/installer/util/registry.js.map +1 -1
- package/docs/README.md +1 -0
- package/docs/deployment.md +6 -7
- package/docs/getting-started.md +11 -7
- package/docs/installation.md +34 -16
- package/docs/plugin-architecture.md +11 -8
- package/docs/updating.md +21 -3
- package/docs/user-docs/cli-reference.md +43 -22
- package/docs/user-docs/codex-vs-claude-code.md +11 -9
- package/docs/user-docs/faq.md +1 -1
- package/docs/user-docs/getting-started-codex.md +5 -8
- package/docs/user-docs/getting-started-kimi.md +423 -0
- package/docs/user-docs/installation.md +49 -14
- package/docs/user-docs/quick-start.md +11 -8
- package/docs/windows.md +29 -4
- package/integration-contract.json +85 -13
- package/package.json +9 -5
- package/schemas/profile.v1.json +67 -5
- package/templates/codex-skills/batch-implement/SKILL.md +4 -0
- package/templates/commands/specrails/batch-implement.md +11 -0
- package/templates/gemini-commands/batch-implement.toml +4 -0
- package/templates/kimi/specrails/run-skill.mjs +3005 -0
- package/templates/kimi/specrails/vendor/js-yaml/LICENSE +21 -0
- package/templates/kimi/specrails/vendor/js-yaml/NOTICE.md +16 -0
- package/templates/kimi/specrails/vendor/js-yaml/js-yaml.mjs +3856 -0
- package/templates/profiles/kimi-default.json +15 -0
|
@@ -16,12 +16,173 @@
|
|
|
16
16
|
*
|
|
17
17
|
* Everything in this module is synchronous to fit the installer's sync flow.
|
|
18
18
|
*/
|
|
19
|
-
import { closeSync, existsSync, fsyncSync, mkdirSync, openSync, readFileSync, realpathSync, renameSync, statSync, unlinkSync, writeFileSync, } from 'node:fs';
|
|
19
|
+
import { closeSync, existsSync, fsyncSync, lstatSync, mkdirSync, openSync, readFileSync, realpathSync, renameSync, statSync, unlinkSync, writeFileSync, } from 'node:fs';
|
|
20
20
|
import os from 'node:os';
|
|
21
21
|
import path from 'node:path';
|
|
22
22
|
/** Registry schema version. A reader that sees a higher value MUST treat all
|
|
23
23
|
* entries as absent (legacy fallback), never mis-parse. */
|
|
24
24
|
export const REGISTRY_SCHEMA_VERSION = 1;
|
|
25
|
+
const SUPPORTED_PROVIDERS = new Set(['claude', 'codex', 'gemini', 'kimi']);
|
|
26
|
+
const SAFE_SLUG = /^[a-z0-9]+(?:-[a-z0-9]+)*$/;
|
|
27
|
+
const REQUIRED_ENTRY_PATHS = [
|
|
28
|
+
'workspaceDir',
|
|
29
|
+
'artifactRoot',
|
|
30
|
+
'stateDir',
|
|
31
|
+
'ticketsPath',
|
|
32
|
+
'backlogConfigPath',
|
|
33
|
+
'profilesDir',
|
|
34
|
+
'pluginsStateDir',
|
|
35
|
+
'fileSummariesDir',
|
|
36
|
+
];
|
|
37
|
+
function isRecord(value) {
|
|
38
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
39
|
+
}
|
|
40
|
+
function isNonEmptyString(value) {
|
|
41
|
+
return typeof value === 'string' && value.length > 0 && !value.includes('\0');
|
|
42
|
+
}
|
|
43
|
+
function isOptionalString(value) {
|
|
44
|
+
return value === undefined || isNonEmptyString(value);
|
|
45
|
+
}
|
|
46
|
+
function isSupportedProvider(value) {
|
|
47
|
+
return typeof value === 'string' && SUPPORTED_PROVIDERS.has(value);
|
|
48
|
+
}
|
|
49
|
+
function samePath(left, right) {
|
|
50
|
+
return normalizeKey(path.resolve(left)) === normalizeKey(path.resolve(right));
|
|
51
|
+
}
|
|
52
|
+
function isPathContained(root, candidate, allowRoot = true) {
|
|
53
|
+
const relative = path.relative(path.resolve(root), path.resolve(candidate));
|
|
54
|
+
if (relative === '')
|
|
55
|
+
return allowRoot;
|
|
56
|
+
return (relative !== '..' &&
|
|
57
|
+
!relative.startsWith(`..${path.sep}`) &&
|
|
58
|
+
!path.isAbsolute(relative));
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Resolve every existing prefix while retaining a not-yet-created suffix.
|
|
62
|
+
* Unlike `realpathSafe`, a dangling symlink or an existing non-directory parent
|
|
63
|
+
* is invalid: treating either lexically would hide a later filesystem escape.
|
|
64
|
+
*/
|
|
65
|
+
function resolveForContainment(candidate) {
|
|
66
|
+
let cursor = path.resolve(candidate);
|
|
67
|
+
const missingSuffix = [];
|
|
68
|
+
for (;;) {
|
|
69
|
+
try {
|
|
70
|
+
const metadata = lstatSync(cursor);
|
|
71
|
+
if (missingSuffix.length > 0) {
|
|
72
|
+
let followed;
|
|
73
|
+
try {
|
|
74
|
+
followed = statSync(cursor);
|
|
75
|
+
}
|
|
76
|
+
catch {
|
|
77
|
+
return undefined;
|
|
78
|
+
}
|
|
79
|
+
if (!followed.isDirectory())
|
|
80
|
+
return undefined;
|
|
81
|
+
}
|
|
82
|
+
else if (!metadata.isFile() && !metadata.isDirectory() && !metadata.isSymbolicLink()) {
|
|
83
|
+
return undefined;
|
|
84
|
+
}
|
|
85
|
+
let realPrefix;
|
|
86
|
+
try {
|
|
87
|
+
realPrefix = realpathSync(cursor);
|
|
88
|
+
}
|
|
89
|
+
catch {
|
|
90
|
+
return undefined;
|
|
91
|
+
}
|
|
92
|
+
return path.resolve(realPrefix, ...missingSuffix);
|
|
93
|
+
}
|
|
94
|
+
catch (error) {
|
|
95
|
+
const code = error.code;
|
|
96
|
+
if (code !== 'ENOENT' && code !== 'ENOTDIR')
|
|
97
|
+
return undefined;
|
|
98
|
+
const parent = path.dirname(cursor);
|
|
99
|
+
if (parent === cursor)
|
|
100
|
+
return undefined;
|
|
101
|
+
missingSuffix.unshift(path.basename(cursor));
|
|
102
|
+
cursor = parent;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
function hasValidProviderSet(entry) {
|
|
107
|
+
if (!Array.isArray(entry.providers) || entry.providers.length === 0)
|
|
108
|
+
return false;
|
|
109
|
+
if (!entry.providers.every(isSupportedProvider))
|
|
110
|
+
return false;
|
|
111
|
+
if (new Set(entry.providers).size !== entry.providers.length)
|
|
112
|
+
return false;
|
|
113
|
+
return (isSupportedProvider(entry.primaryProvider) &&
|
|
114
|
+
entry.primaryProvider === entry.providers[0]);
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Validate one untrusted registry row before it can influence resolution or a
|
|
118
|
+
* subsequent read-modify-write. The registry stores derived subpaths
|
|
119
|
+
* explicitly so Desktop's layout remains authoritative; Core only requires
|
|
120
|
+
* that those opaque paths stay lexically and physically inside the immutable
|
|
121
|
+
* per-slug workspace.
|
|
122
|
+
*/
|
|
123
|
+
function isValidProjectEntry(key, value, home) {
|
|
124
|
+
if (!isRecord(value))
|
|
125
|
+
return false;
|
|
126
|
+
if (!isNonEmptyString(value.repoPath) ||
|
|
127
|
+
!path.isAbsolute(value.repoPath) ||
|
|
128
|
+
!isNonEmptyString(value.codeRoot) ||
|
|
129
|
+
!path.isAbsolute(value.codeRoot) ||
|
|
130
|
+
!isNonEmptyString(value.slug) ||
|
|
131
|
+
!SAFE_SLUG.test(value.slug) ||
|
|
132
|
+
(value.source !== 'desktop' && value.source !== 'core-standalone') ||
|
|
133
|
+
!hasValidProviderSet(value) ||
|
|
134
|
+
!isOptionalString(value.coreVersion) ||
|
|
135
|
+
!isOptionalString(value.createdAt) ||
|
|
136
|
+
!isOptionalString(value.lastInstallAt) ||
|
|
137
|
+
!isOptionalString(value.desktopProjectId) ||
|
|
138
|
+
!isOptionalString(value.updatedAt)) {
|
|
139
|
+
return false;
|
|
140
|
+
}
|
|
141
|
+
for (const field of REQUIRED_ENTRY_PATHS) {
|
|
142
|
+
const candidate = value[field];
|
|
143
|
+
if (!isNonEmptyString(candidate) || !path.isAbsolute(candidate))
|
|
144
|
+
return false;
|
|
145
|
+
}
|
|
146
|
+
const validatedPaths = value;
|
|
147
|
+
const canonicalRepo = canonicalizeRepoPath(value.repoPath);
|
|
148
|
+
if (!samePath(value.repoPath, canonicalRepo) ||
|
|
149
|
+
normalizeKey(canonicalRepo) !== key ||
|
|
150
|
+
!samePath(value.codeRoot, canonicalRepo) ||
|
|
151
|
+
!samePath(value.codeRoot, canonicalizeRepoPath(value.codeRoot))) {
|
|
152
|
+
return false;
|
|
153
|
+
}
|
|
154
|
+
const lexicalHome = path.resolve(resolveHome(home));
|
|
155
|
+
const lexicalSpecrailsRoot = path.join(lexicalHome, '.specrails');
|
|
156
|
+
const lexicalProjectsRoot = path.join(lexicalSpecrailsRoot, 'projects');
|
|
157
|
+
const lexicalWorkspace = path.join(lexicalProjectsRoot, value.slug, 'workspace');
|
|
158
|
+
if (!samePath(validatedPaths.workspaceDir, lexicalWorkspace) ||
|
|
159
|
+
!samePath(validatedPaths.artifactRoot, lexicalWorkspace)) {
|
|
160
|
+
return false;
|
|
161
|
+
}
|
|
162
|
+
const realHome = resolveForContainment(lexicalHome);
|
|
163
|
+
const realSpecrailsRoot = resolveForContainment(lexicalSpecrailsRoot);
|
|
164
|
+
const realProjectsRoot = resolveForContainment(lexicalProjectsRoot);
|
|
165
|
+
const realWorkspace = resolveForContainment(lexicalWorkspace);
|
|
166
|
+
if (realHome === undefined ||
|
|
167
|
+
realSpecrailsRoot === undefined ||
|
|
168
|
+
realProjectsRoot === undefined ||
|
|
169
|
+
realWorkspace === undefined ||
|
|
170
|
+
!isPathContained(realHome, realSpecrailsRoot, false) ||
|
|
171
|
+
!samePath(realProjectsRoot, path.join(realSpecrailsRoot, 'projects')) ||
|
|
172
|
+
!samePath(realWorkspace, path.join(realProjectsRoot, value.slug, 'workspace'))) {
|
|
173
|
+
return false;
|
|
174
|
+
}
|
|
175
|
+
for (const field of REQUIRED_ENTRY_PATHS) {
|
|
176
|
+
const candidate = validatedPaths[field];
|
|
177
|
+
const realCandidate = resolveForContainment(candidate);
|
|
178
|
+
if (!isPathContained(lexicalWorkspace, candidate) ||
|
|
179
|
+
realCandidate === undefined ||
|
|
180
|
+
!isPathContained(realWorkspace, realCandidate)) {
|
|
181
|
+
return false;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
return true;
|
|
185
|
+
}
|
|
25
186
|
/**
|
|
26
187
|
* Slug derivation โ byte-identical to specrails-desktop's `slugify`
|
|
27
188
|
* (`server/desktop-router.ts`). Do not "improve" it; parity is the contract.
|
|
@@ -77,7 +238,7 @@ export function canonicalizeRepoPath(repoPathInput) {
|
|
|
77
238
|
}
|
|
78
239
|
/** The per-project sub-path layout under a workspace dir. Single source of the
|
|
79
240
|
* layout so writer and (allocation) reader never disagree. */
|
|
80
|
-
export function workspaceLayout(home, slug, canon) {
|
|
241
|
+
export function workspaceLayout(home, slug, canon, primaryProvider = 'claude') {
|
|
81
242
|
const workspaceDir = path.join(resolveHome(home), '.specrails', 'projects', slug, 'workspace');
|
|
82
243
|
const specrailsDir = path.join(workspaceDir, '.specrails');
|
|
83
244
|
return {
|
|
@@ -86,7 +247,7 @@ export function workspaceLayout(home, slug, canon) {
|
|
|
86
247
|
workspaceDir,
|
|
87
248
|
artifactRoot: workspaceDir,
|
|
88
249
|
codeRoot: canon,
|
|
89
|
-
stateDir: path.join(workspaceDir,
|
|
250
|
+
stateDir: path.join(workspaceDir, providerStateDirectory(primaryProvider)),
|
|
90
251
|
ticketsPath: path.join(specrailsDir, 'local-tickets.json'),
|
|
91
252
|
backlogConfigPath: path.join(specrailsDir, 'backlog-config.json'),
|
|
92
253
|
profilesDir: path.join(specrailsDir, 'profiles'),
|
|
@@ -94,6 +255,15 @@ export function workspaceLayout(home, slug, canon) {
|
|
|
94
255
|
fileSummariesDir: path.join(specrailsDir, 'file-summaries'),
|
|
95
256
|
};
|
|
96
257
|
}
|
|
258
|
+
function providerStateDirectory(provider) {
|
|
259
|
+
if (provider === 'codex')
|
|
260
|
+
return '.codex';
|
|
261
|
+
if (provider === 'gemini')
|
|
262
|
+
return '.gemini';
|
|
263
|
+
if (provider === 'kimi')
|
|
264
|
+
return '.kimi-code';
|
|
265
|
+
return '.claude';
|
|
266
|
+
}
|
|
97
267
|
/** The in-repo layout, used when there is no registry entry (legacy fallback). */
|
|
98
268
|
export function legacyResolution(canon) {
|
|
99
269
|
const specrailsDir = path.join(canon, '.specrails');
|
|
@@ -151,15 +321,35 @@ export function readRegistryOrEmpty(home) {
|
|
|
151
321
|
return empty;
|
|
152
322
|
try {
|
|
153
323
|
const parsed = JSON.parse(readFileSync(p, 'utf8'));
|
|
154
|
-
if (!parsed ||
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
parsed.schemaVersion > REGISTRY_SCHEMA_VERSION ||
|
|
158
|
-
typeof parsed.projects !== 'object' ||
|
|
159
|
-
parsed.projects === null) {
|
|
324
|
+
if (!isRecord(parsed) ||
|
|
325
|
+
parsed.schemaVersion !== REGISTRY_SCHEMA_VERSION ||
|
|
326
|
+
!isRecord(parsed.projects)) {
|
|
160
327
|
return empty;
|
|
161
328
|
}
|
|
162
|
-
|
|
329
|
+
const candidates = [];
|
|
330
|
+
const slugCounts = new Map();
|
|
331
|
+
for (const [key, entry] of Object.entries(parsed.projects)) {
|
|
332
|
+
if (!isValidProjectEntry(key, entry, home))
|
|
333
|
+
continue;
|
|
334
|
+
candidates.push([key, entry]);
|
|
335
|
+
slugCounts.set(entry.slug, (slugCounts.get(entry.slug) ?? 0) + 1);
|
|
336
|
+
}
|
|
337
|
+
const projects = {};
|
|
338
|
+
for (const [key, entry] of candidates) {
|
|
339
|
+
// Two repos must never resolve to the same writable workspace. Treat
|
|
340
|
+
// every side of an ambiguous slug as absent instead of choosing a winner.
|
|
341
|
+
if (slugCounts.get(entry.slug) === 1)
|
|
342
|
+
projects[key] = entry;
|
|
343
|
+
}
|
|
344
|
+
const result = {
|
|
345
|
+
schemaVersion: REGISTRY_SCHEMA_VERSION,
|
|
346
|
+
projects,
|
|
347
|
+
};
|
|
348
|
+
if (typeof parsed.generator === 'string')
|
|
349
|
+
result.generator = parsed.generator;
|
|
350
|
+
if (typeof parsed.updatedAt === 'string')
|
|
351
|
+
result.updatedAt = parsed.updatedAt;
|
|
352
|
+
return result;
|
|
163
353
|
}
|
|
164
354
|
catch {
|
|
165
355
|
return empty;
|
|
@@ -286,9 +476,9 @@ export function allocateSlug(canon, existing) {
|
|
|
286
476
|
return `${base}-${n}`;
|
|
287
477
|
}
|
|
288
478
|
function buildEntry(home, canon, slug, opts) {
|
|
289
|
-
const providers = opts.providers
|
|
479
|
+
const providers = validateProvidersForWrite(opts.providers, true);
|
|
290
480
|
const now = opts.now ?? new Date().toISOString();
|
|
291
|
-
const layout = workspaceLayout(home, slug, canon);
|
|
481
|
+
const layout = workspaceLayout(home, slug, canon, providers[0]);
|
|
292
482
|
const entry = {
|
|
293
483
|
...layout,
|
|
294
484
|
providers,
|
|
@@ -302,6 +492,15 @@ function buildEntry(home, canon, slug, opts) {
|
|
|
302
492
|
entry.desktopProjectId = opts.desktopProjectId;
|
|
303
493
|
return entry;
|
|
304
494
|
}
|
|
495
|
+
function validateProvidersForWrite(providers, useDefault) {
|
|
496
|
+
if (providers === undefined || providers.length === 0) {
|
|
497
|
+
return useDefault ? ['claude'] : [];
|
|
498
|
+
}
|
|
499
|
+
if (!providers.every(isSupportedProvider)) {
|
|
500
|
+
throw new Error(`Unsupported registry provider: ${providers.find((provider) => !isSupportedProvider(provider)) ?? ''}`);
|
|
501
|
+
}
|
|
502
|
+
return [...new Set(providers)];
|
|
503
|
+
}
|
|
305
504
|
/**
|
|
306
505
|
* The shared resolver both tools run. Given a repo path, returns where that
|
|
307
506
|
* repo's artifacts live. With `allocate:true`, creates + persists an entry when
|
|
@@ -312,11 +511,32 @@ export function resolveArtifacts(repoPathInput, opts = {}) {
|
|
|
312
511
|
const home = opts.home;
|
|
313
512
|
const canon = canonicalizeRepoPath(repoPathInput);
|
|
314
513
|
const key = normalizeKey(canon);
|
|
514
|
+
const requestedProviders = validateProvidersForWrite(opts.providers, false);
|
|
315
515
|
// Fast path: lock-free read for a pure lookup.
|
|
316
516
|
const reg = readRegistryOrEmpty(home);
|
|
317
517
|
const existing = reg.projects[key];
|
|
318
|
-
if (existing)
|
|
319
|
-
|
|
518
|
+
if (existing) {
|
|
519
|
+
const needsProviderMerge = opts.allocate === true &&
|
|
520
|
+
existing.source === 'core-standalone' &&
|
|
521
|
+
requestedProviders.some((provider) => !existing.providers.includes(provider));
|
|
522
|
+
if (!needsProviderMerge)
|
|
523
|
+
return entryToResolution(key, existing);
|
|
524
|
+
return withFileLock(home, () => {
|
|
525
|
+
const fresh = readRegistryOrEmpty(home);
|
|
526
|
+
const current = fresh.projects[key];
|
|
527
|
+
if (!current)
|
|
528
|
+
return legacyResolution(canon);
|
|
529
|
+
const providers = [...new Set([...current.providers, ...requestedProviders])];
|
|
530
|
+
current.providers = providers;
|
|
531
|
+
current.primaryProvider = current.primaryProvider || providers[0] || 'claude';
|
|
532
|
+
current.lastInstallAt = opts.now ?? new Date().toISOString();
|
|
533
|
+
if (opts.coreVersion)
|
|
534
|
+
current.coreVersion = opts.coreVersion;
|
|
535
|
+
fresh.updatedAt = current.lastInstallAt;
|
|
536
|
+
atomicWrite(registryPath(home), JSON.stringify(fresh, null, 2) + '\n');
|
|
537
|
+
return entryToResolution(key, current);
|
|
538
|
+
});
|
|
539
|
+
}
|
|
320
540
|
if (!opts.allocate)
|
|
321
541
|
return legacyResolution(canon);
|
|
322
542
|
// Allocation path: lock, re-read, double-check, atomic write.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/installer/util/registry.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/installer/util/registry.ts"],"names":[],"mappings":"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"}
|
package/docs/README.md
CHANGED
|
@@ -14,6 +14,7 @@ Welcome to the SpecRails docs. This guide will take you from zero to a fully aut
|
|
|
14
14
|
| Guide | What it covers |
|
|
15
15
|
|-------|----------------|
|
|
16
16
|
| [Installation & Setup](installation.md) | Detailed setup, prerequisites, the `/specrails:enrich` wizard, TUI installer |
|
|
17
|
+
| [Kimi Code Setup](user-docs/getting-started-kimi.md) | Install Kimi, scaffold `.kimi-code`, models, sessions, MCP, and troubleshooting |
|
|
17
18
|
| [Plugin Architecture](plugin-architecture.md) | Plugin vs scaffold, what lives where, how updates work |
|
|
18
19
|
| [Agents](agents.md) | Every agent explained โ role, when it runs, why it exists |
|
|
19
20
|
| [Workflows & Commands](workflows.md) | How to use `/specrails:implement`, `/specrails:get-backlog-specs`, and more |
|
package/docs/deployment.md
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
# Deployment
|
|
2
2
|
|
|
3
|
-
> **๐งช Codex (OpenAI) Support โ Coming Soon (in Lab).** Any Codex-specific option or step below describes the planned behaviour. Codex installation is currently disabled; the installer will guide you to Claude Code instead.
|
|
4
|
-
|
|
5
3
|
SpecRails runs locally โ no cloud infrastructure required. Choose the setup that fits your workflow.
|
|
6
4
|
|
|
7
5
|
## Options at a glance
|
|
@@ -9,7 +7,7 @@ SpecRails runs locally โ no cloud infrastructure required. Choose the setup th
|
|
|
9
7
|
| Option | Best for | Setup time |
|
|
10
8
|
|--------|----------|------------|
|
|
11
9
|
| [Plugin](#plugin-recommended) | Quick start, individual developers | ~1 minute |
|
|
12
|
-
| [Local (npx)](#local-npx) |
|
|
10
|
+
| [Local (npx)](#local-npx) | Any supported provider, full offline control | ~2 minutes |
|
|
13
11
|
| [Local (git clone)](#local-git-clone) | Customization, contributing | ~5 minutes |
|
|
14
12
|
| [Docker](#docker) | Reproducible environments, teams | ~5 minutes |
|
|
15
13
|
| [CI/CD](#cicd-github-actions) | Automated workflows, GitHub Actions | ~10 minutes |
|
|
@@ -31,7 +29,8 @@ claude plugin install sr
|
|
|
31
29
|
|
|
32
30
|
## Local โ npx
|
|
33
31
|
|
|
34
|
-
For Codex
|
|
32
|
+
For Claude Code, Codex CLI, Gemini CLI, or Kimi Code users who need full
|
|
33
|
+
control over agent files.
|
|
35
34
|
|
|
36
35
|
```bash
|
|
37
36
|
npx specrails-core@latest init --root-dir .
|
|
@@ -43,7 +42,7 @@ This will:
|
|
|
43
42
|
|
|
44
43
|
After install, open Claude Code or Codex and run `/specrails:setup` to configure.
|
|
45
44
|
|
|
46
|
-
**Requirements:** Node.js โฅ
|
|
45
|
+
**Requirements:** Node.js โฅ20.19.0 and one supported AI CLI
|
|
47
46
|
|
|
48
47
|
---
|
|
49
48
|
|
|
@@ -147,7 +146,7 @@ jobs:
|
|
|
147
146
|
- name: Setup Node.js
|
|
148
147
|
uses: actions/setup-node@v4
|
|
149
148
|
with:
|
|
150
|
-
node-version: '20'
|
|
149
|
+
node-version: '20.19.0'
|
|
151
150
|
|
|
152
151
|
- name: Install SpecRails
|
|
153
152
|
run: npm install -g specrails
|
|
@@ -180,7 +179,7 @@ jobs:
|
|
|
180
179
|
- name: Setup Node.js
|
|
181
180
|
uses: actions/setup-node@v4
|
|
182
181
|
with:
|
|
183
|
-
node-version: '20'
|
|
182
|
+
node-version: '20.19.0'
|
|
184
183
|
|
|
185
184
|
- name: Install SpecRails
|
|
186
185
|
run: npm install -g specrails
|
package/docs/getting-started.md
CHANGED
|
@@ -4,7 +4,11 @@ Get SpecRails running in your project in under 5 minutes.
|
|
|
4
4
|
|
|
5
5
|
## What is SpecRails?
|
|
6
6
|
|
|
7
|
-
SpecRails installs a **product-driven development workflow** into any
|
|
7
|
+
SpecRails installs a **product-driven development workflow** into any
|
|
8
|
+
repository. It gives Claude Code, Codex CLI, Gemini CLI, or Kimi Code a team of
|
|
9
|
+
specialized AI roles โ an architect, developers, layer reviewers, a reviewer,
|
|
10
|
+
and a product manager โ that work together to go from idea to shipped PR
|
|
11
|
+
automatically.
|
|
8
12
|
|
|
9
13
|
Think of it as hiring a full engineering team that lives inside your CLI.
|
|
10
14
|
|
|
@@ -13,15 +17,14 @@ Think of it as hiring a full engineering team that lives inside your CLI.
|
|
|
13
17
|
You need:
|
|
14
18
|
|
|
15
19
|
- **Git** โ your project must be a git repository
|
|
16
|
-
-
|
|
17
|
-
|
|
18
|
-
> **๐งช Codex (OpenAI) Support โ Coming Soon (in Lab).** OpenAI Codex integration is currently being tested in our lab. The installer will only install with Claude Code for now โ Codex support will ship shortly.
|
|
20
|
+
- One supported AI CLI: Claude Code, Codex CLI, Gemini CLI, or Kimi Code
|
|
19
21
|
|
|
20
22
|
Optional (recommended):
|
|
21
23
|
|
|
22
24
|
- **[GitHub CLI](https://cli.github.com/)** (`gh`) โ for automatic PR creation and issue tracking
|
|
23
25
|
|
|
24
|
-
|
|
26
|
+
See the [Codex guide](user-docs/getting-started-codex.md) or
|
|
27
|
+
[Kimi guide](user-docs/getting-started-kimi.md) for provider-specific setup.
|
|
25
28
|
|
|
26
29
|
## Install
|
|
27
30
|
|
|
@@ -31,7 +34,7 @@ Optional (recommended):
|
|
|
31
34
|
claude plugin install sr
|
|
32
35
|
```
|
|
33
36
|
|
|
34
|
-
**Scaffold method (
|
|
37
|
+
**Scaffold method (all providers, or full offline control)**
|
|
35
38
|
|
|
36
39
|
```bash
|
|
37
40
|
npx specrails-core@latest init --root-dir <your-project>
|
|
@@ -49,7 +52,8 @@ When you run `npx specrails-core@latest init`, the TUI installer lets you choose
|
|
|
49
52
|
2. Choose a model preset
|
|
50
53
|
3. Provide a brief product description
|
|
51
54
|
|
|
52
|
-
Agents are ready to use immediately after install. Open
|
|
55
|
+
Agents are ready to use immediately after install. Open the selected provider
|
|
56
|
+
CLI and start working.
|
|
53
57
|
|
|
54
58
|
> Quick install excludes VPC personas and persona-dependent agents/commands (sr-product-manager, sr-product-analyst). These require the full enrichment process.
|
|
55
59
|
|
package/docs/installation.md
CHANGED
|
@@ -2,19 +2,15 @@
|
|
|
2
2
|
|
|
3
3
|
This guide covers the complete installation process in detail. For the quick version, see [Getting Started](getting-started.md).
|
|
4
4
|
|
|
5
|
-
> ## ๐งช Codex (OpenAI) Support โ Coming Soon (in Lab)
|
|
6
|
-
>
|
|
7
|
-
> OpenAI Codex integration is currently being **tested in our lab** and **cannot be installed yet**. The installer will refuse any attempt to install with `--provider codex` and will guide you to use Claude Code instead. Codex-specific sections below describe the **planned behaviour** and will be activated when the feature ships.
|
|
8
|
-
|
|
9
5
|
## Installation methods
|
|
10
6
|
|
|
11
|
-
SpecRails
|
|
7
|
+
SpecRails offers a Claude plugin and a provider-independent scaffold:
|
|
12
8
|
|
|
13
9
|
| Method | Command | Best for |
|
|
14
10
|
|--------|---------|----------|
|
|
15
11
|
| **Claude Code plugin** (recommended) | `claude plugin install sr` | Most projects โ no Node.js required, auto-updates |
|
|
16
12
|
| **Claude Code scaffold** | `npx specrails-core@latest init` | Full offline control, custom agent edits |
|
|
17
|
-
| **
|
|
13
|
+
| **Provider scaffold** | `npx specrails-core@latest init` | Claude, Codex, Gemini, or Kimi Code projects |
|
|
18
14
|
|
|
19
15
|
---
|
|
20
16
|
|
|
@@ -59,9 +55,9 @@ The plugin bundles the logic layer โ agents, skills, commands, hooks, and refe
|
|
|
59
55
|
|
|
60
56
|
| Tool | Why | Install |
|
|
61
57
|
|------|-----|---------|
|
|
62
|
-
| **Node.js 20+** | Required for the installer (macOS, Linux, Windows) | [nodejs.org](https://nodejs.org/) or via [nvm](https://github.com/nvm-sh/nvm) |
|
|
58
|
+
| **Node.js 20.19.0+** | Required for the installer and pinned OpenSpec 1.4.1 CLI (macOS, Linux, Windows) | [nodejs.org](https://nodejs.org/) or via [nvm](https://github.com/nvm-sh/nvm) |
|
|
63
59
|
| **Git** | SpecRails operates on git repositories | [git-scm.com](https://git-scm.com/) |
|
|
64
|
-
| **
|
|
60
|
+
| **Supported AI CLI** | The runtime that runs the agents | Claude, Codex, Gemini, or [Kimi Code](user-docs/getting-started-kimi.md) |
|
|
65
61
|
|
|
66
62
|
### Install
|
|
67
63
|
|
|
@@ -88,7 +84,8 @@ node bin/specrails-core.mjs init --root-dir <your-project>
|
|
|
88
84
|
The `npx specrails-core@latest init` command now includes a **TUI installer** that runs before copying files:
|
|
89
85
|
|
|
90
86
|
1. **TUI agent selection** โ Interactive terminal UI lets you select which agents to install and choose a model preset (balanced/budget/max). Writes `.specrails/install-config.yaml`.
|
|
91
|
-
2. **Checks prerequisites** โ validates Git
|
|
87
|
+
2. **Checks prerequisites** โ validates Git and the selected provider CLI;
|
|
88
|
+
optionally installs npm and gh
|
|
92
89
|
3. **Detects existing setup** โ warns if SpecRails artifacts already exist
|
|
93
90
|
4. **Installs artifacts:**
|
|
94
91
|
- `.claude/commands/specrails/enrich.md` โ the `/specrails:enrich` wizard
|
|
@@ -105,12 +102,26 @@ The scaffold installer only copies files. It does not modify your existing code,
|
|
|
105
102
|
|
|
106
103
|
## The Enrich Wizard
|
|
107
104
|
|
|
108
|
-
After either installation method, open
|
|
105
|
+
After either installation method, open the selected AI CLI. Claude and Gemini
|
|
106
|
+
use:
|
|
109
107
|
|
|
110
108
|
```
|
|
111
109
|
/specrails:enrich
|
|
112
110
|
```
|
|
113
111
|
|
|
112
|
+
Kimi uses:
|
|
113
|
+
|
|
114
|
+
```text
|
|
115
|
+
/skill:specrails-enrich
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
That slash form is Kimi TUI syntax. Automated callers use the managed
|
|
119
|
+
`.kimi-code/specrails/run-skill.mjs` helper installed beside the skills; passing
|
|
120
|
+
the slash form directly to `kimi -p` does not activate it in Kimi 0.27.
|
|
121
|
+
Generated multi-role workflows give that helper one structured foreground
|
|
122
|
+
role wave. It owns parallel child processes and reusable worktrees, so no
|
|
123
|
+
Kimi daemon or bundled provider binary is required.
|
|
124
|
+
|
|
114
125
|
There are three modes:
|
|
115
126
|
|
|
116
127
|
| Mode | Command | When to use |
|
|
@@ -274,28 +285,35 @@ Runs a fully automated installation using `.specrails/install-config.yaml`. No i
|
|
|
274
285
|
|
|
275
286
|
```yaml
|
|
276
287
|
version: 1
|
|
277
|
-
provider: claude # claude | codex |
|
|
288
|
+
provider: claude # claude | codex | gemini | kimi
|
|
278
289
|
tier: full # full (requires /specrails:enrich) | quick (agents placed directly)
|
|
279
290
|
agents:
|
|
280
|
-
selected: #
|
|
291
|
+
selected: # unique lowercase kebab-case ids (1-64 chars)
|
|
281
292
|
- sr-architect
|
|
282
293
|
- sr-developer
|
|
283
294
|
- sr-reviewer
|
|
284
295
|
- sr-test-writer
|
|
285
296
|
- sr-product-manager
|
|
286
|
-
excluded: [] #
|
|
297
|
+
excluded: [] # unique ids to skip; must not overlap selected
|
|
287
298
|
models:
|
|
288
299
|
preset: balanced # balanced | budget | max
|
|
289
|
-
|
|
300
|
+
defaults:
|
|
301
|
+
model: sonnet # exact provider model/alias; Kimi defaults to k3
|
|
302
|
+
overrides: {} # exact per-agent models: { sr-architect: opus }
|
|
290
303
|
```
|
|
291
304
|
|
|
292
305
|
**Model presets:**
|
|
293
306
|
|
|
294
307
|
| Preset | Description |
|
|
295
308
|
|--------|-------------|
|
|
296
|
-
| `balanced` (default) |
|
|
309
|
+
| `balanced` (default) | Sonnet for all Claude agents |
|
|
297
310
|
| `budget` | Haiku for all agents |
|
|
298
|
-
| `max` | Opus for all
|
|
311
|
+
| `max` | Opus for Claude architect + PM, Sonnet for all others |
|
|
312
|
+
|
|
313
|
+
Other providers resolve the same preset names within their own catalog. Kimi
|
|
314
|
+
presets default to `k3`; exact official ids and configured aliases are retained.
|
|
315
|
+
Kimi ids must be 1โ128 characters matching
|
|
316
|
+
`[A-Za-z0-9][A-Za-z0-9._/:-]*`, the same grammar enforced at process launch.
|
|
299
317
|
|
|
300
318
|
---
|
|
301
319
|
|
|
@@ -74,19 +74,22 @@ The scaffold copies the full agent+command set into `.claude/` โ you own and v
|
|
|
74
74
|
|
|
75
75
|
**Best for:** Teams that want to version the agent prompts themselves, or projects that need full offline control.
|
|
76
76
|
|
|
77
|
-
### 3.
|
|
78
|
-
|
|
79
|
-
> **Codex installation is not yet available.** OpenAI Codex integration is being tested in our lab and will ship shortly. The block below describes the **planned behaviour** for when the feature is released.
|
|
77
|
+
### 3. Provider scaffold
|
|
80
78
|
|
|
81
79
|
```bash
|
|
82
|
-
npx specrails-core@latest init --root-dir .
|
|
83
|
-
|
|
84
|
-
|
|
80
|
+
npx specrails-core@latest init --root-dir . --provider codex
|
|
81
|
+
npx specrails-core@latest init --root-dir . --provider gemini
|
|
82
|
+
npx specrails-core@latest init --root-dir . --provider kimi
|
|
85
83
|
```
|
|
86
84
|
|
|
87
|
-
Codex
|
|
85
|
+
Codex, Gemini, and Kimi do not use the Claude Code plugin package. The
|
|
86
|
+
scaffold renders their native project surfaces under `.codex/`, `.gemini/`,
|
|
87
|
+
and `.kimi-code/` respectively. Kimi interactive workflows use
|
|
88
|
+
`/skill:specrails-*`; its headless workflows use the managed runner installed
|
|
89
|
+
under `.kimi-code/specrails/`.
|
|
88
90
|
|
|
89
|
-
**Best for
|
|
91
|
+
**Best for:** Codex, Gemini, or Kimi users and teams that version generated
|
|
92
|
+
provider artifacts.
|
|
90
93
|
|
|
91
94
|
## The `/specrails:enrich` wizard
|
|
92
95
|
|