specrails-core 4.4.0 → 4.6.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.
Files changed (48) hide show
  1. package/bin/specrails-core.mjs +7 -0
  2. package/bin/tui-installer.mjs +89 -26
  3. package/dist/installer/commands/init.js +3 -7
  4. package/dist/installer/commands/init.js.map +1 -1
  5. package/dist/installer/phases/install-config.js +2 -5
  6. package/dist/installer/phases/install-config.js.map +1 -1
  7. package/dist/installer/phases/provider-detect.js +10 -11
  8. package/dist/installer/phases/provider-detect.js.map +1 -1
  9. package/dist/installer/phases/scaffold.js +402 -13
  10. package/dist/installer/phases/scaffold.js.map +1 -1
  11. package/package.json +1 -1
  12. package/templates/agents/sr-architect.md +9 -4
  13. package/templates/agents/sr-backend-developer.md +9 -4
  14. package/templates/agents/sr-backend-reviewer.md +9 -4
  15. package/templates/agents/sr-developer.md +10 -4
  16. package/templates/agents/sr-doc-sync.md +9 -4
  17. package/templates/agents/sr-frontend-developer.md +9 -4
  18. package/templates/agents/sr-frontend-reviewer.md +9 -4
  19. package/templates/agents/sr-merge-resolver.md +9 -4
  20. package/templates/agents/sr-performance-reviewer.md +9 -4
  21. package/templates/agents/sr-reviewer.md +9 -4
  22. package/templates/agents/sr-security-reviewer.md +9 -4
  23. package/templates/agents/sr-test-writer.md +9 -4
  24. package/templates/codex-skills/batch-implement/SKILL.md +268 -0
  25. package/templates/codex-skills/enrich/SKILL.md +191 -0
  26. package/templates/codex-skills/implement/SKILL.md +349 -0
  27. package/templates/codex-skills/merge-resolve/SKILL.md +88 -0
  28. package/templates/codex-skills/rails/sr-architect/SKILL.md +254 -0
  29. package/templates/codex-skills/rails/sr-backend-developer/SKILL.md +90 -0
  30. package/templates/codex-skills/rails/sr-backend-reviewer/SKILL.md +120 -0
  31. package/templates/codex-skills/rails/sr-developer/SKILL.md +163 -0
  32. package/templates/codex-skills/rails/sr-doc-sync/SKILL.md +123 -0
  33. package/templates/codex-skills/rails/sr-frontend-developer/SKILL.md +103 -0
  34. package/templates/codex-skills/rails/sr-frontend-reviewer/SKILL.md +111 -0
  35. package/templates/codex-skills/rails/sr-merge-resolver/SKILL.md +156 -0
  36. package/templates/codex-skills/rails/sr-performance-reviewer/SKILL.md +109 -0
  37. package/templates/codex-skills/rails/sr-product-analyst/SKILL.md +85 -0
  38. package/templates/codex-skills/rails/sr-product-manager/SKILL.md +129 -0
  39. package/templates/codex-skills/rails/sr-reviewer/SKILL.md +188 -0
  40. package/templates/codex-skills/rails/sr-security-reviewer/SKILL.md +121 -0
  41. package/templates/codex-skills/rails/sr-test-writer/SKILL.md +115 -0
  42. package/templates/codex-skills/retry/SKILL.md +117 -0
  43. package/templates/settings/codex-config.toml +15 -10
  44. package/templates/skills/rails/sr-architect/SKILL.md +234 -0
  45. package/templates/skills/rails/sr-developer/SKILL.md +210 -0
  46. package/templates/skills/rails/sr-merge-resolver/SKILL.md +197 -0
  47. package/templates/skills/rails/sr-reviewer/SKILL.md +320 -0
  48. package/templates/settings/codex-rules.star +0 -12
@@ -133,7 +133,14 @@ if (subcommand === 'init') {
133
133
  ? path.resolve(subargs[rootDirIdx + 1])
134
134
  : process.cwd()
135
135
 
136
+ // Forward --provider so the TUI can honour an explicit choice and
137
+ // skip the interactive picker. Other flags stay with the Node CLI step.
138
+ const providerIdx = subargs.indexOf('--provider')
139
+ const providerVal = providerIdx >= 0 ? subargs[providerIdx + 1] : null
140
+ const providerEqArg = subargs.find((a) => a.startsWith('--provider='))
136
141
  const tuiArgs = [path.resolve(ROOT, 'bin', 'tui-installer.mjs'), rootDir]
142
+ if (providerVal) tuiArgs.push('--provider', providerVal)
143
+ else if (providerEqArg) tuiArgs.push(providerEqArg)
137
144
  const tuiResult = spawnSync('node', tuiArgs, {
138
145
  stdio: 'inherit',
139
146
  cwd: process.cwd(),
@@ -102,6 +102,25 @@ function detectProvider() {
102
102
  return { hasClaude, hasCodex };
103
103
  }
104
104
 
105
+ // Parse `--provider <id>` or `--provider=<id>` from process.argv. Returns
106
+ // 'claude' | 'codex' | null. Unknown values warn-then-null so the TUI
107
+ // falls back to interactive selection.
108
+ function parseProviderArg() {
109
+ const args = process.argv.slice(2);
110
+ for (let i = 0; i < args.length; i++) {
111
+ const a = args[i];
112
+ if (a === '--provider' && args[i + 1]) {
113
+ const v = args[i + 1].trim().toLowerCase();
114
+ return v === 'claude' || v === 'codex' ? v : null;
115
+ }
116
+ if (a.startsWith('--provider=')) {
117
+ const v = a.slice('--provider='.length).trim().toLowerCase();
118
+ return v === 'claude' || v === 'codex' ? v : null;
119
+ }
120
+ }
121
+ return null;
122
+ }
123
+
105
124
  function detectGitRoot(dir) {
106
125
  try {
107
126
  return execSync('git rev-parse --show-toplevel', { cwd: dir, stdio: ['ignore', 'pipe', 'ignore'] })
@@ -181,9 +200,27 @@ async function run() {
181
200
  const rawArgs = process.argv.slice(2);
182
201
  const autoYes = rawArgs.includes('--yes') || rawArgs.includes('-y');
183
202
  const withProfiles = rawArgs.includes('--with-profiles');
184
- const rootArg = rawArgs.find(a => !a.startsWith('-'));
203
+ // First positional arg (skipping flag values that follow `--provider`,
204
+ // `--root-dir`, etc.) is the target directory.
205
+ const FLAGS_WITH_VALUES = new Set(['--provider', '--root-dir', '--from-config']);
206
+ let rootArg;
207
+ for (let i = 0; i < rawArgs.length; i++) {
208
+ const a = rawArgs[i];
209
+ if (a.startsWith('-')) {
210
+ if (FLAGS_WITH_VALUES.has(a)) i++; // skip its value
211
+ continue;
212
+ }
213
+ rootArg = a;
214
+ break;
215
+ }
185
216
  const inputDir = rootArg ? resolve(rootArg) : process.cwd();
186
- const rootDir = detectGitRoot(inputDir);
217
+ // Use inputDir directly — matches the Node CLI step that reads back
218
+ // install-config.yaml from `<inputDir>/.specrails/`. We deliberately do
219
+ // NOT walk up to a git root here: if the user wants the install to land
220
+ // at a git ancestor, they can pass `--root-dir <path>` explicitly, and
221
+ // the Node CLI will honour the same path. Otherwise TUI + Node CLI must
222
+ // agree on the same directory or the config gets stranded.
223
+ const rootDir = inputDir;
187
224
 
188
225
  const specrailsDir = resolve(rootDir, '.specrails');
189
226
 
@@ -211,19 +248,40 @@ async function run() {
211
248
 
212
249
  // Auto-yes: write defaults and exit (no TUI needed)
213
250
  //
214
- // Codex (OpenAI) support is currently being tested in our lab ("Coming Soon").
215
- // If only Codex is detected, bail out instead of silently picking it — Claude
216
- // Code is the only runtime we can install for today.
251
+ // Honours an explicit --provider <id> argv flag when present; otherwise
252
+ // picks claude codex → first-detected. Errors only when none detected.
217
253
  if (autoYes) {
218
254
  const { hasClaude, hasCodex } = detectProvider();
219
- if (!hasClaude && hasCodex) {
255
+ const argvProvider = parseProviderArg();
256
+ let provider;
257
+ if (argvProvider) {
258
+ if (argvProvider === 'claude' && !hasClaude) {
259
+ console.error('');
260
+ console.error(' ⚠ --provider claude requested but Claude Code is not installed.');
261
+ console.error(' Install: https://claude.ai/download');
262
+ console.error('');
263
+ process.exit(1);
264
+ }
265
+ if (argvProvider === 'codex' && !hasCodex) {
266
+ console.error('');
267
+ console.error(' ⚠ --provider codex requested but Codex CLI is not installed.');
268
+ console.error(' Install: https://developers.openai.com/codex');
269
+ console.error('');
270
+ process.exit(1);
271
+ }
272
+ provider = argvProvider;
273
+ } else if (hasClaude) {
274
+ provider = 'claude';
275
+ } else if (hasCodex) {
276
+ provider = 'codex';
277
+ } else {
220
278
  console.error('');
221
- console.error(' ⚠ Only Codex detected Codex (OpenAI) support is coming soon (in lab).');
222
- console.error(' Please install Claude Code to continue: https://claude.ai/download');
279
+ console.error(' ⚠ Neither Claude Code nor Codex CLI detected on PATH.');
280
+ console.error(' Install Claude: https://claude.ai/download');
281
+ console.error(' Install Codex: https://developers.openai.com/codex');
223
282
  console.error('');
224
283
  process.exit(1);
225
284
  }
226
- const provider = 'claude';
227
285
  writeDefaultConfig(specrailsDir, provider);
228
286
  console.log(` ✓ Default config written to .specrails/install-config.yaml`);
229
287
  console.log(` ✓ Provider: ${provider}, Tier: full, Agents: ${DEFAULT_SELECTED.size}/${ALL_AGENT_IDS.length}, Preset: balanced\n`);
@@ -253,36 +311,41 @@ async function run() {
253
311
  console.log(banner.join('\n'));
254
312
 
255
313
  // ── Step 1: Provider ────────────────────────────────────────────────────────
256
- //
257
- // Codex (OpenAI) is still being tested in our lab ("Coming Soon"). Until the
258
- // feature ships, the TUI exposes only Claude Code as a runtime — Codex shows
259
- // as a disabled "Coming Soon" option so users can see it's on the roadmap.
260
314
 
261
315
  const { hasClaude, hasCodex } = detectProvider();
316
+ const argvProvider = parseProviderArg();
262
317
  let provider;
263
318
 
264
- if (hasClaude && hasCodex) {
319
+ if (argvProvider) {
320
+ if (argvProvider === 'claude' && !hasClaude) {
321
+ exitFullscreen();
322
+ console.error('\n ⚠ --provider claude requested but Claude Code is not installed.\n Install: https://claude.ai/download\n');
323
+ process.exit(1);
324
+ }
325
+ if (argvProvider === 'codex' && !hasCodex) {
326
+ exitFullscreen();
327
+ console.error('\n ⚠ --provider codex requested but Codex CLI is not installed.\n Install: https://developers.openai.com/codex\n');
328
+ process.exit(1);
329
+ }
330
+ provider = argvProvider;
331
+ console.log(` → Provider: ${provider} (from --provider flag)\n`);
332
+ } else if (hasClaude && hasCodex) {
265
333
  provider = await select({
266
334
  message: 'Which AI provider will you use?',
267
335
  choices: [
268
336
  { value: 'claude', name: 'Claude Code (recommended)' },
269
- { value: 'codex', name: 'Codex — Coming Soon (in lab)', disabled: '🧪 coming soon' },
337
+ { value: 'codex', name: 'Codex (OpenAI)' },
270
338
  ],
271
339
  });
272
340
  } else if (hasCodex) {
273
- exitFullscreen();
274
- console.error('');
275
- console.error(' ⚠ Only Codex detected — Codex (OpenAI) support is coming soon (in lab).');
276
- console.error(' Please install Claude Code to continue: https://claude.ai/download');
277
- console.error('');
278
- process.exit(1);
341
+ provider = 'codex';
342
+ console.log(' → Provider: codex (auto-detected — Claude Code not found)\n');
343
+ } else if (hasClaude) {
344
+ provider = 'claude';
345
+ console.log(' → Provider: claude (auto-detected)\n');
279
346
  } else {
280
347
  provider = 'claude';
281
- if (hasClaude) {
282
- console.log(' → Provider: claude (auto-detected)\n');
283
- } else {
284
- console.log(' → Provider: claude (default — claude CLI not found, install it at claude.ai/download)\n');
285
- }
348
+ console.log(' → Provider: claude (default — neither claude nor codex CLI found)\n');
286
349
  }
287
350
 
288
351
  // ── Step 2: Installation tier ───────────────────────────────────────────────
@@ -43,14 +43,10 @@ export async function runInit(flags) {
43
43
  }
44
44
  }
45
45
  else if (typeof flags.provider === 'string') {
46
- if (flags.provider === 'codex') {
47
- throw new InstallerError('Codex (OpenAI) support is coming soon currently being tested in our lab. ' +
48
- 'Use --provider claude for now.', 40);
46
+ if (flags.provider !== 'claude' && flags.provider !== 'codex') {
47
+ throw new InstallerError(`--provider value must be 'claude' or 'codex', got: ${flags.provider}`, 40);
49
48
  }
50
- if (flags.provider !== 'claude') {
51
- throw new InstallerError(`--provider value must be 'claude', got: ${flags.provider}`, 40);
52
- }
53
- providerHint = 'claude';
49
+ providerHint = flags.provider;
54
50
  }
55
51
  if (flags.quick === true) {
56
52
  tierHint = 'quick';
@@ -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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"}
@@ -57,11 +57,8 @@ export function validateInstallConfig(raw) {
57
57
  if (doc.provider === undefined) {
58
58
  errors.push(`missing required 'provider' field`);
59
59
  }
60
- else if (doc.provider === 'codex') {
61
- errors.push(`Codex (OpenAI) support is coming soon — currently being tested in our lab. Set provider: claude.`);
62
- }
63
- else if (doc.provider !== 'claude') {
64
- errors.push(`unsupported provider '${String(doc.provider)}' (expected: claude)`);
60
+ else if (doc.provider !== 'claude' && doc.provider !== 'codex') {
61
+ errors.push(`unsupported provider '${String(doc.provider)}' (expected: claude or codex)`);
65
62
  }
66
63
  if (doc.tier !== undefined && doc.tier !== 'full' && doc.tier !== 'quick') {
67
64
  errors.push(`unsupported tier '${String(doc.tier)}' (expected: full or quick)`);
@@ -1 +1 @@
1
- {"version":3,"file":"install-config.js","sourceRoot":"","sources":["../../../src/installer/phases/install-config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"install-config.js","sourceRoot":"","sources":["../../../src/installer/phases/install-config.ts"],"names":[],"mappings":"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"}
@@ -35,25 +35,24 @@ export async function claudeVersion() {
35
35
  * (env `SPECRAILS_SKIP_PREREQS=1`).
36
36
  */
37
37
  export async function resolveProvider(availability, options = {}) {
38
- if (options.explicit === 'codex') {
39
- throw new ProviderError('Codex (OpenAI) support is coming soon — currently being tested in our lab. ' +
40
- 'Use --provider claude for now.');
41
- }
38
+ if (options.explicit === 'codex')
39
+ return 'codex';
42
40
  if (options.explicit === 'claude')
43
41
  return 'claude';
42
+ // Both installed: prefer Claude (the historical default) so existing
43
+ // projects don't get re-bootstrapped onto a different provider when the
44
+ // user just runs `npx specrails-core init` without `--provider`. Users
45
+ // who want codex pass --provider codex or set it in install-config.yaml.
44
46
  if (availability.claude && availability.codex)
45
47
  return 'claude';
46
48
  if (availability.claude)
47
49
  return 'claude';
48
- if (availability.codex) {
49
- throw new ProviderError('Only Codex detected — Codex (OpenAI) support is coming soon (currently in our lab). ' +
50
- 'Please install Claude Code to continue: https://claude.ai/download');
51
- }
50
+ if (availability.codex)
51
+ return 'codex';
52
52
  if (options.skipPrereqs)
53
53
  return 'claude';
54
- throw new ProviderError('No AI CLI found (claude). ' +
55
- 'Install Claude Code: https://claude.ai/download. ' +
56
- 'Codex (OpenAI) support: coming soon.');
54
+ throw new ProviderError('No AI CLI found. Install Claude Code (https://claude.ai/download) or ' +
55
+ 'Codex CLI (https://developers.openai.com/codex) before running specrails-core init.');
57
56
  }
58
57
  /**
59
58
  * Directory / filename conventions the provider dictates.
@@ -1 +1 @@
1
- {"version":3,"file":"provider-detect.js","sourceRoot":"","sources":["../../../src/installer/phases/provider-detect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,IAAI,MAAM,WAAW,CAAA;AAE5B,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC3D,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAuBxD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB;IACtC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;IAC5F,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;AAC1B,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,UAAU,CAAC,QAAQ,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAA;QAChF,OAAO,MAAM,CAAC,IAAI,EAAE,IAAI,SAAS,CAAA;IACnC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAA;IAClB,CAAC;AACH,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,YAAkC,EAClC,UAA0D,EAAE;IAE5D,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,MAAM,IAAI,aAAa,CACrB,6EAA6E;YAC3E,gCAAgC,CACnC,CAAA;IACH,CAAC;IACD,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAA;IAElD,IAAI,YAAY,CAAC,MAAM,IAAI,YAAY,CAAC,KAAK;QAAE,OAAO,QAAQ,CAAA;IAC9D,IAAI,YAAY,CAAC,MAAM;QAAE,OAAO,QAAQ,CAAA;IACxC,IAAI,YAAY,CAAC,KAAK,EAAE,CAAC;QACvB,MAAM,IAAI,aAAa,CACrB,sFAAsF;YACpF,oEAAoE,CACvE,CAAA;IACH,CAAC;IACD,IAAI,OAAO,CAAC,WAAW;QAAE,OAAO,QAAQ,CAAA;IACxC,MAAM,IAAI,aAAa,CACrB,4BAA4B;QAC1B,mDAAmD;QACnD,sCAAsC,CACzC,CAAA;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,QAAkB;IAC7C,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QACzB,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,gBAAgB,EAAE,WAAW,EAAE,CAAA;IACjE,CAAC;IACD,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,gBAAgB,EAAE,WAAW,EAAE,CAAA;AAClE,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,UAAqC,EAAE;IAEvC,IAAI,MAAM,yBAAyB,EAAE;QAAE,OAAM;IAC7C,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC;QAAE,OAAM;IACrF,IAAI,MAAM,kBAAkB,EAAE;QAAE,OAAM;IAEtC,IAAI,OAAO,CAAC,WAAW;QAAE,OAAM;IAE/B,MAAM,IAAI,aAAa,CACrB;QACE,iCAAiC;QACjC,EAAE;QACF,4DAA4D;QAC5D,yCAAyC;KAC1C,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAA;AACH,CAAC;AAED,KAAK,UAAU,yBAAyB;IACtC,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,UAAU,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAA;QACrF,OAAO,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;IACnC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC;AAED,KAAK,UAAU,kBAAkB;IAC/B,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,cAAc,CAAC,CAAA;IAC9C,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAA;IAChC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,CAAC,CAAC,CAAA;QAC3B,OAAO,GAAG,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAA;IACvC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"provider-detect.js","sourceRoot":"","sources":["../../../src/installer/phases/provider-detect.ts"],"names":[],"mappings":"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"}