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.
- package/bin/specrails-core.mjs +7 -0
- package/bin/tui-installer.mjs +89 -26
- package/dist/installer/commands/init.js +3 -7
- package/dist/installer/commands/init.js.map +1 -1
- package/dist/installer/phases/install-config.js +2 -5
- package/dist/installer/phases/install-config.js.map +1 -1
- package/dist/installer/phases/provider-detect.js +10 -11
- package/dist/installer/phases/provider-detect.js.map +1 -1
- package/dist/installer/phases/scaffold.js +402 -13
- package/dist/installer/phases/scaffold.js.map +1 -1
- package/package.json +1 -1
- package/templates/agents/sr-architect.md +9 -4
- package/templates/agents/sr-backend-developer.md +9 -4
- package/templates/agents/sr-backend-reviewer.md +9 -4
- package/templates/agents/sr-developer.md +10 -4
- package/templates/agents/sr-doc-sync.md +9 -4
- package/templates/agents/sr-frontend-developer.md +9 -4
- package/templates/agents/sr-frontend-reviewer.md +9 -4
- package/templates/agents/sr-merge-resolver.md +9 -4
- package/templates/agents/sr-performance-reviewer.md +9 -4
- package/templates/agents/sr-reviewer.md +9 -4
- package/templates/agents/sr-security-reviewer.md +9 -4
- package/templates/agents/sr-test-writer.md +9 -4
- package/templates/codex-skills/batch-implement/SKILL.md +268 -0
- package/templates/codex-skills/enrich/SKILL.md +191 -0
- package/templates/codex-skills/implement/SKILL.md +349 -0
- package/templates/codex-skills/merge-resolve/SKILL.md +88 -0
- package/templates/codex-skills/rails/sr-architect/SKILL.md +254 -0
- package/templates/codex-skills/rails/sr-backend-developer/SKILL.md +90 -0
- package/templates/codex-skills/rails/sr-backend-reviewer/SKILL.md +120 -0
- package/templates/codex-skills/rails/sr-developer/SKILL.md +163 -0
- package/templates/codex-skills/rails/sr-doc-sync/SKILL.md +123 -0
- package/templates/codex-skills/rails/sr-frontend-developer/SKILL.md +103 -0
- package/templates/codex-skills/rails/sr-frontend-reviewer/SKILL.md +111 -0
- package/templates/codex-skills/rails/sr-merge-resolver/SKILL.md +156 -0
- package/templates/codex-skills/rails/sr-performance-reviewer/SKILL.md +109 -0
- package/templates/codex-skills/rails/sr-product-analyst/SKILL.md +85 -0
- package/templates/codex-skills/rails/sr-product-manager/SKILL.md +129 -0
- package/templates/codex-skills/rails/sr-reviewer/SKILL.md +188 -0
- package/templates/codex-skills/rails/sr-security-reviewer/SKILL.md +121 -0
- package/templates/codex-skills/rails/sr-test-writer/SKILL.md +115 -0
- package/templates/codex-skills/retry/SKILL.md +117 -0
- package/templates/settings/codex-config.toml +15 -10
- package/templates/skills/rails/sr-architect/SKILL.md +234 -0
- package/templates/skills/rails/sr-developer/SKILL.md +210 -0
- package/templates/skills/rails/sr-merge-resolver/SKILL.md +197 -0
- package/templates/skills/rails/sr-reviewer/SKILL.md +320 -0
- package/templates/settings/codex-rules.star +0 -12
|
@@ -71,8 +71,12 @@ export function scaffoldInstallation(input) {
|
|
|
71
71
|
// --- Directory skeleton ---
|
|
72
72
|
mk(path.join(input.repoRoot, input.providerDir));
|
|
73
73
|
if (input.provider === 'codex') {
|
|
74
|
-
|
|
75
|
-
|
|
74
|
+
// Codex skills live under <providerDir>/skills/ (e.g. .codex/skills/).
|
|
75
|
+
// The pre-§18 code wrote to `.agents/skills/` which codex doesn't read;
|
|
76
|
+
// that was a placeholder name from the gated state.
|
|
77
|
+
mk(path.join(input.repoRoot, input.providerDir, 'skills', 'enrich'));
|
|
78
|
+
mk(path.join(input.repoRoot, input.providerDir, 'skills', 'doctor'));
|
|
79
|
+
mk(path.join(input.repoRoot, input.providerDir, 'skills', 'rails'));
|
|
76
80
|
}
|
|
77
81
|
else {
|
|
78
82
|
mk(path.join(input.repoRoot, input.providerDir, 'commands', 'specrails'));
|
|
@@ -118,16 +122,28 @@ export function scaffoldInstallation(input) {
|
|
|
118
122
|
info(`Quick tier: placed ${placed.agents} agent(s) + ${placed.commands} command(s) + ` +
|
|
119
123
|
`${placed.rules} rule file(s) directly into ${input.providerDir}/${skippedNote}`);
|
|
120
124
|
}
|
|
121
|
-
// --- Skills direct-placement (both tiers,
|
|
122
|
-
|
|
125
|
+
// --- Skills direct-placement (both tiers, both providers) ---
|
|
126
|
+
// Skills are provider-neutral (Anthropic Skills format == OpenAI Codex
|
|
127
|
+
// Skills format). The same templates/skills/ directory feeds both
|
|
128
|
+
// .claude/skills/ and .codex/skills/.
|
|
129
|
+
{
|
|
123
130
|
const skills = placeSkills(input);
|
|
124
131
|
copiedFiles += skills.filesCopied;
|
|
125
132
|
const skillSkipNote = skills.skipped > 0 ? ` (skipped ${skills.skipped} VPC-dependent)` : '';
|
|
126
133
|
info(`Placed ${skills.placed} skill(s) into ${input.providerDir}/skills/${skillSkipNote}`);
|
|
127
134
|
}
|
|
135
|
+
// --- Codex provider settings + AGENTS.md initial content ---
|
|
136
|
+
if (input.provider === 'codex') {
|
|
137
|
+
const written = applyCodexSettings(input);
|
|
138
|
+
copiedFiles += written;
|
|
139
|
+
if (written > 0) {
|
|
140
|
+
info(`Codex provider: wrote ${written} setting file(s) (config.toml, AGENTS.md)`);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
128
143
|
// --- Full-tier hint: enrich is required to generate VPC artefacts ---
|
|
129
144
|
if (input.tier === 'full') {
|
|
130
|
-
|
|
145
|
+
const cliName = input.provider === 'codex' ? 'Codex CLI' : 'Claude Code';
|
|
146
|
+
info(`Full tier staged. Run \`/specrails:enrich\` in ${cliName} to generate ` +
|
|
131
147
|
'VPC personas and adapt agents (including sr-product-manager and ' +
|
|
132
148
|
'sr-product-analyst) to this codebase.');
|
|
133
149
|
}
|
|
@@ -146,10 +162,31 @@ function copyBundledCommands(input) {
|
|
|
146
162
|
if (!isDir(commandsSrc))
|
|
147
163
|
return;
|
|
148
164
|
if (input.provider === 'codex') {
|
|
149
|
-
// Codex:
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
165
|
+
// Codex: every claude slash-command (`templates/commands/specrails/*.md`)
|
|
166
|
+
// ships as a SKILL under `.codex/skills/<name>/SKILL.md`. The codex skill
|
|
167
|
+
// loader requires `---`-delimited frontmatter with at least `name` and
|
|
168
|
+
// `description`; the source bodies usually have a claude-style
|
|
169
|
+
// frontmatter with just `description`, which we extract and re-emit in
|
|
170
|
+
// the canonical codex shape. Team-* commands are gated identically to
|
|
171
|
+
// the claude path.
|
|
172
|
+
let count = 0;
|
|
173
|
+
for (const entry of listDir(commandsSrc)) {
|
|
174
|
+
const name = path.basename(entry);
|
|
175
|
+
if (!name.endsWith('.md'))
|
|
176
|
+
continue;
|
|
177
|
+
if (name === 'setup.md')
|
|
178
|
+
continue;
|
|
179
|
+
if (!input.agentTeams && /^team-/.test(name))
|
|
180
|
+
continue;
|
|
181
|
+
const skillName = name.replace(/\.md$/, '');
|
|
182
|
+
writeCodexSkillFromCommand({
|
|
183
|
+
src: entry,
|
|
184
|
+
dest: path.join(input.repoRoot, input.providerDir, 'skills', skillName, 'SKILL.md'),
|
|
185
|
+
name: skillName,
|
|
186
|
+
});
|
|
187
|
+
count++;
|
|
188
|
+
}
|
|
189
|
+
input.copiedIncrement(count);
|
|
153
190
|
return;
|
|
154
191
|
}
|
|
155
192
|
// Claude: all commands land under <providerDir>/commands/specrails/.
|
|
@@ -169,6 +206,89 @@ function copyBundledCommands(input) {
|
|
|
169
206
|
}
|
|
170
207
|
input.copiedIncrement(count);
|
|
171
208
|
}
|
|
209
|
+
/**
|
|
210
|
+
* Convert a claude slash-command markdown file into a codex SKILL.md.
|
|
211
|
+
*
|
|
212
|
+
* Claude commands ship with either no frontmatter or a minimal
|
|
213
|
+
* `--- description: ... ---` block. Codex skill loader needs explicit
|
|
214
|
+
* `name`, `description`, `license`, and `compatibility` keys. We strip
|
|
215
|
+
* the source frontmatter (if any), keep its description, and re-emit
|
|
216
|
+
* the canonical codex shape. The remaining body is preserved.
|
|
217
|
+
*
|
|
218
|
+
* If `args.description` is provided it overrides any value extracted
|
|
219
|
+
* from the source frontmatter — used for the lifecycle skills where we
|
|
220
|
+
* want a more polished one-liner than what the slash-command file ships
|
|
221
|
+
* with.
|
|
222
|
+
*/
|
|
223
|
+
function writeCodexSkillFromCommand(args) {
|
|
224
|
+
if (!pathExists(args.src))
|
|
225
|
+
return;
|
|
226
|
+
const raw = readTextFile(args.src);
|
|
227
|
+
const { body, description: srcDescription } = stripFrontmatter(raw);
|
|
228
|
+
// The carried-over claude description may mention `/specrails:foo`; rewrite
|
|
229
|
+
// those occurrences (description field only, not the body — body
|
|
230
|
+
// translation runs further down) so the codex skill picker shows a
|
|
231
|
+
// codex-shape name to the model.
|
|
232
|
+
const translatedSrcDescription = srcDescription
|
|
233
|
+
?.replace(/\/specrails:([\w-]+)/g, '$$$1')
|
|
234
|
+
?.replace(/\/sr:([\w-]+)/g, '$$$1');
|
|
235
|
+
const description = args.description ?? translatedSrcDescription ?? `specrails ${args.name} command (ported to codex skill).`;
|
|
236
|
+
const frontmatter = [
|
|
237
|
+
'---',
|
|
238
|
+
`name: ${args.name}`,
|
|
239
|
+
`description: ${JSON.stringify(description)}`,
|
|
240
|
+
'license: MIT',
|
|
241
|
+
'compatibility: "Requires the specrails-core installation in this repository."',
|
|
242
|
+
'---',
|
|
243
|
+
'',
|
|
244
|
+
].join('\n');
|
|
245
|
+
// Translate claude-specific paths and slash-command references to their
|
|
246
|
+
// codex equivalents so the skill body reads natively on a codex project:
|
|
247
|
+
// .claude/ → .codex/ (config + memory paths)
|
|
248
|
+
// /specrails:<name> → $<name> (codex skill mention syntax;
|
|
249
|
+
// our scaffold writes a matching
|
|
250
|
+
// .codex/skills/<name>/SKILL.md
|
|
251
|
+
// for every claude slash command)
|
|
252
|
+
// /sr:<name> → $<name> (alias used in some docs)
|
|
253
|
+
// `/opsx:<name>` is intentionally left untouched: the claude→codex
|
|
254
|
+
// mapping is non-trivial (most opsx commands map to
|
|
255
|
+
// `$openspec-<name>-change` but a few drop the suffix, and a couple
|
|
256
|
+
// don't map at all). The references appear inside docstrings only,
|
|
257
|
+
// not at execution paths, so leaving them as-is keeps the skill
|
|
258
|
+
// working without inventing a wrong mapping.
|
|
259
|
+
const translated = body
|
|
260
|
+
.replace(/\.claude\//g, '.codex/')
|
|
261
|
+
.replace(/`\/specrails:([\w-]+)`/g, '`$$$1`')
|
|
262
|
+
.replace(/`\/sr:([\w-]+)`/g, '`$$$1`')
|
|
263
|
+
.replace(/\/specrails:([\w-]+)/g, '$$$1')
|
|
264
|
+
.replace(/\/sr:([\w-]+)/g, '$$$1');
|
|
265
|
+
writeFileLf(args.dest, frontmatter + translated);
|
|
266
|
+
}
|
|
267
|
+
/**
|
|
268
|
+
* Strip a leading `---`-delimited YAML frontmatter block and return the
|
|
269
|
+
* remaining body plus the `description:` value if present. Defensive
|
|
270
|
+
* parser: only handles `key: value` lines (no nested maps), which is
|
|
271
|
+
* the shape every slash-command file ships with today.
|
|
272
|
+
*/
|
|
273
|
+
function stripFrontmatter(raw) {
|
|
274
|
+
if (!raw.startsWith('---\n'))
|
|
275
|
+
return { body: raw };
|
|
276
|
+
const endIdx = raw.indexOf('\n---\n', 4);
|
|
277
|
+
if (endIdx < 0)
|
|
278
|
+
return { body: raw };
|
|
279
|
+
const yaml = raw.slice(4, endIdx);
|
|
280
|
+
const body = raw.slice(endIdx + 5);
|
|
281
|
+
let description;
|
|
282
|
+
for (const line of yaml.split('\n')) {
|
|
283
|
+
const m = line.match(/^description\s*:\s*(.*)$/);
|
|
284
|
+
if (m) {
|
|
285
|
+
const v = m[1].trim();
|
|
286
|
+
description = v.replace(/^['"](.*)['"]$/, '$1');
|
|
287
|
+
break;
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
return { body, description };
|
|
291
|
+
}
|
|
172
292
|
function pruneLegacyArtifacts(input) {
|
|
173
293
|
const legacyPaths = [
|
|
174
294
|
path.join(input.repoRoot, '.specrails', 'bin', 'doctor.sh'),
|
|
@@ -177,7 +297,10 @@ function pruneLegacyArtifacts(input) {
|
|
|
177
297
|
path.join(input.repoRoot, '.specrails-version'),
|
|
178
298
|
];
|
|
179
299
|
if (input.provider === 'codex') {
|
|
180
|
-
|
|
300
|
+
// Pre-§18 layout used `.agents/skills/` — prune any leftovers from a
|
|
301
|
+
// legacy install before settling on the canonical `.codex/skills/`.
|
|
302
|
+
legacyPaths.push(path.join(input.repoRoot, '.agents'));
|
|
303
|
+
legacyPaths.push(path.join(input.repoRoot, input.providerDir, 'skills', 'setup'));
|
|
181
304
|
}
|
|
182
305
|
else {
|
|
183
306
|
legacyPaths.push(path.join(input.repoRoot, input.providerDir, 'commands', 'setup.md'));
|
|
@@ -206,6 +329,55 @@ function pruneLegacyArtifacts(input) {
|
|
|
206
329
|
* canonical staging dir.
|
|
207
330
|
*/
|
|
208
331
|
function placeQuickTierArtefacts(input) {
|
|
332
|
+
// Codex projects: the quick-tier `agents/` + `rules/` placement is
|
|
333
|
+
// skipped (handled by `placeSkills` rail-skills + `applyCodexSettings`).
|
|
334
|
+
// The slash-command catalogue under `setup-templates/commands/specrails/`
|
|
335
|
+
// IS ported, but to `.codex/skills/<name>/SKILL.md` instead of
|
|
336
|
+
// `.claude/commands/specrails/<name>.md`, so codex users get the same
|
|
337
|
+
// command surface (`propose-spec`, `explore-spec`, `retry`, …) as
|
|
338
|
+
// claude.
|
|
339
|
+
if (input.provider === 'codex') {
|
|
340
|
+
const setupTemplates = path.join(input.repoRoot, '.specrails', 'setup-templates');
|
|
341
|
+
const commandsSrc = path.join(setupTemplates, 'commands', 'specrails');
|
|
342
|
+
// Codex-native skill overrides live at `templates/codex-skills/<name>/`.
|
|
343
|
+
// When one exists for a given slash-command name (e.g. `implement`), the
|
|
344
|
+
// scaffold writes that file verbatim instead of porting the claude
|
|
345
|
+
// command body. Use these to ship skills written for codex's
|
|
346
|
+
// single-agent model (no `subagent_type`, no `.claude/agent-memory/`,
|
|
347
|
+
// codex-shape spawn semantics).
|
|
348
|
+
const codexOverridesSrc = path.join(input.scriptDir, 'templates', 'codex-skills');
|
|
349
|
+
let commandsPlaced = 0;
|
|
350
|
+
if (isDir(commandsSrc)) {
|
|
351
|
+
for (const src of listDir(commandsSrc)) {
|
|
352
|
+
const name = path.basename(src);
|
|
353
|
+
if (!name.endsWith('.md'))
|
|
354
|
+
continue;
|
|
355
|
+
if (name === 'setup.md')
|
|
356
|
+
continue;
|
|
357
|
+
if (!input.agentTeams && /^team-/.test(name))
|
|
358
|
+
continue;
|
|
359
|
+
const skillName = name.slice(0, -3);
|
|
360
|
+
const dest = path.join(input.repoRoot, input.providerDir, 'skills', skillName, 'SKILL.md');
|
|
361
|
+
// If a codex-native override exists, ship it verbatim and skip the
|
|
362
|
+
// ported claude body entirely. Mirrors a directory copy in case the
|
|
363
|
+
// override ships sibling assets.
|
|
364
|
+
const overrideDir = path.join(codexOverridesSrc, skillName);
|
|
365
|
+
const overrideSkill = path.join(overrideDir, 'SKILL.md');
|
|
366
|
+
if (pathExists(overrideSkill)) {
|
|
367
|
+
copyDir(overrideDir, path.dirname(dest));
|
|
368
|
+
commandsPlaced++;
|
|
369
|
+
continue;
|
|
370
|
+
}
|
|
371
|
+
writeCodexSkillFromCommand({
|
|
372
|
+
src,
|
|
373
|
+
dest,
|
|
374
|
+
name: skillName,
|
|
375
|
+
});
|
|
376
|
+
commandsPlaced++;
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
return { agents: 0, commands: commandsPlaced, rules: 0, skippedAgents: 0 };
|
|
380
|
+
}
|
|
209
381
|
const setupTemplates = path.join(input.repoRoot, '.specrails', 'setup-templates');
|
|
210
382
|
const projectName = path.basename(input.repoRoot);
|
|
211
383
|
const providerDirAbs = path.join(input.repoRoot, input.providerDir);
|
|
@@ -303,10 +475,107 @@ function placeQuickTierArtefacts(input) {
|
|
|
303
475
|
}
|
|
304
476
|
return { agents: agentsPlaced, commands: commandsPlaced, rules: rulesPlaced, skippedAgents: agentsSkipped };
|
|
305
477
|
}
|
|
478
|
+
/**
|
|
479
|
+
* Codex-specific provider settings. Writes `.codex/config.toml` (model +
|
|
480
|
+
* reasoning effort + sandbox baseline; conforms to the codex 0.128.0+
|
|
481
|
+
* top-level TOML schema) and `AGENTS.md` (top-level instructions file
|
|
482
|
+
* consumed by `codex` on startup, sentinel-protected so user edits
|
|
483
|
+
* outside the managed block survive).
|
|
484
|
+
*
|
|
485
|
+
* Idempotent: existing files outside the sentinel block are preserved.
|
|
486
|
+
* Returns the count of files written/refreshed.
|
|
487
|
+
*/
|
|
488
|
+
function applyCodexSettings(input) {
|
|
489
|
+
const settingsSrc = path.join(input.scriptDir, 'templates', 'settings');
|
|
490
|
+
let written = 0;
|
|
491
|
+
// config.toml — model name interpolated from install-config (preset
|
|
492
|
+
// default `gpt-5.4-mini`). Static for v1; future revisions may surface
|
|
493
|
+
// reasoning_effort etc.
|
|
494
|
+
const configTomlSrc = path.join(settingsSrc, 'codex-config.toml');
|
|
495
|
+
if (pathExists(configTomlSrc)) {
|
|
496
|
+
const dest = path.join(input.repoRoot, input.providerDir, 'config.toml');
|
|
497
|
+
const rendered = readTextFile(configTomlSrc).replace(/\{\{MODEL_NAME\}\}/g, 'gpt-5.4-mini');
|
|
498
|
+
writeFileLf(dest, rendered);
|
|
499
|
+
written++;
|
|
500
|
+
}
|
|
501
|
+
// AGENTS.md — top-level instructions file the codex CLI loads on startup.
|
|
502
|
+
// Written with a sentinel block so update + enrich passes can refresh the
|
|
503
|
+
// managed content while preserving anything the user added outside it.
|
|
504
|
+
const agentsMdPath = path.join(input.repoRoot, 'AGENTS.md');
|
|
505
|
+
const agentsMdContent = renderInitialAgentsMd(input.repoRoot);
|
|
506
|
+
if (!pathExists(agentsMdPath)) {
|
|
507
|
+
writeFileLf(agentsMdPath, agentsMdContent);
|
|
508
|
+
written++;
|
|
509
|
+
}
|
|
510
|
+
else {
|
|
511
|
+
// Upsert sentinel block into an existing AGENTS.md.
|
|
512
|
+
const existing = readTextFile(agentsMdPath);
|
|
513
|
+
const next = upsertAgentsMdManagedBlock(existing, extractManagedBlock(agentsMdContent));
|
|
514
|
+
if (next !== existing) {
|
|
515
|
+
writeFileLf(agentsMdPath, next);
|
|
516
|
+
written++;
|
|
517
|
+
}
|
|
518
|
+
}
|
|
519
|
+
return written;
|
|
520
|
+
}
|
|
521
|
+
const AGENTS_MD_START = '<!-- specrails-managed:start -->';
|
|
522
|
+
const AGENTS_MD_END = '<!-- specrails-managed:end -->';
|
|
523
|
+
function renderInitialAgentsMd(repoRoot) {
|
|
524
|
+
const projectName = path.basename(repoRoot);
|
|
525
|
+
return [
|
|
526
|
+
AGENTS_MD_START,
|
|
527
|
+
'',
|
|
528
|
+
`# ${projectName} — agent instructions`,
|
|
529
|
+
'',
|
|
530
|
+
'This project uses the **specrails** agent workflow under `.codex/`.',
|
|
531
|
+
'See `.codex/skills/` for the catalog of agent skills available to codex',
|
|
532
|
+
'sessions in this repository.',
|
|
533
|
+
'',
|
|
534
|
+
'## Conventions',
|
|
535
|
+
'',
|
|
536
|
+
'- Read specs from `.specrails/local-tickets.json` when implementing',
|
|
537
|
+
' numbered tickets (`#42`, `#71` etc.).',
|
|
538
|
+
'- Prefer the skills in `.codex/skills/sr-*` over ad-hoc edits when a',
|
|
539
|
+
' skill covers the task (implement, batch-implement, refactor-recommender,',
|
|
540
|
+
' compat-check, why, ...).',
|
|
541
|
+
'- Honour the sandbox policy declared in `.codex/config.toml`',
|
|
542
|
+
' (`sandbox_mode` + `approval_policy` top-level keys).',
|
|
543
|
+
'',
|
|
544
|
+
AGENTS_MD_END,
|
|
545
|
+
'',
|
|
546
|
+
].join('\n');
|
|
547
|
+
}
|
|
548
|
+
function extractManagedBlock(rendered) {
|
|
549
|
+
const s = rendered.indexOf(AGENTS_MD_START);
|
|
550
|
+
const e = rendered.indexOf(AGENTS_MD_END);
|
|
551
|
+
if (s < 0 || e < 0)
|
|
552
|
+
return rendered;
|
|
553
|
+
return rendered.slice(s, e + AGENTS_MD_END.length);
|
|
554
|
+
}
|
|
555
|
+
function upsertAgentsMdManagedBlock(existing, managedBlock) {
|
|
556
|
+
const s = existing.indexOf(AGENTS_MD_START);
|
|
557
|
+
const e = existing.indexOf(AGENTS_MD_END);
|
|
558
|
+
if (s >= 0 && e >= 0 && e > s) {
|
|
559
|
+
return existing.slice(0, s) + managedBlock + existing.slice(e + AGENTS_MD_END.length);
|
|
560
|
+
}
|
|
561
|
+
// Append the managed block + a leading blank line if the file doesn't end with one.
|
|
562
|
+
const sep = existing.endsWith('\n\n') ? '' : existing.endsWith('\n') ? '\n' : '\n\n';
|
|
563
|
+
return existing + sep + managedBlock + '\n';
|
|
564
|
+
}
|
|
306
565
|
// Copy each `sr-*` subfolder from `.specrails/setup-templates/skills/`
|
|
307
|
-
//
|
|
308
|
-
//
|
|
309
|
-
//
|
|
566
|
+
// (and the `rails/sr-*` subtree, which holds the canonical pipeline rail
|
|
567
|
+
// agents in SKILL.md format) into `<providerDir>/skills/`. Skills are
|
|
568
|
+
// full directories (SKILL.md + optional assets), so the whole folder is
|
|
569
|
+
// copied. Quick tier excludes VPC-dependent skills; full tier copies all.
|
|
570
|
+
//
|
|
571
|
+
// For codex projects, every copied `.md` file gets a post-copy textual
|
|
572
|
+
// translation so the body reads natively on codex:
|
|
573
|
+
// .claude/ → .codex/
|
|
574
|
+
// /specrails:<name> → $<name>
|
|
575
|
+
// /sr:<name> → $<name>
|
|
576
|
+
// /opsx:<name> → $openspec-<name>
|
|
577
|
+
// The source templates stay canonical (claude-flavoured); the rewrite is
|
|
578
|
+
// applied only to the codex-side copies.
|
|
310
579
|
function placeSkills(input) {
|
|
311
580
|
const setupSkills = path.join(input.repoRoot, '.specrails', 'setup-templates', 'skills');
|
|
312
581
|
const destBase = path.join(input.repoRoot, input.providerDir, 'skills');
|
|
@@ -314,21 +583,141 @@ function placeSkills(input) {
|
|
|
314
583
|
if (!isDir(setupSkills))
|
|
315
584
|
return result;
|
|
316
585
|
mkdirp(destBase);
|
|
586
|
+
// Top-level sr-* skills (sr-implement, sr-batch-implement, sr-why, etc.).
|
|
317
587
|
for (const entry of listDir(setupSkills)) {
|
|
318
588
|
if (!isDir(entry))
|
|
319
589
|
continue;
|
|
320
590
|
const skillId = path.basename(entry);
|
|
591
|
+
// The `rails/` subtree is descended below — skip it at the top level.
|
|
592
|
+
if (skillId === 'rails')
|
|
593
|
+
continue;
|
|
321
594
|
if (input.tier === 'quick' && QUICK_EXCLUDED_SKILLS.has(skillId)) {
|
|
322
595
|
result.skipped++;
|
|
323
596
|
continue;
|
|
324
597
|
}
|
|
325
598
|
const dest = path.join(destBase, skillId);
|
|
326
599
|
copyDir(entry, dest);
|
|
600
|
+
if (input.provider === 'codex')
|
|
601
|
+
translateCodexMarkdownInTree(dest);
|
|
327
602
|
result.placed++;
|
|
328
603
|
result.filesCopied += countFiles(dest);
|
|
329
604
|
}
|
|
605
|
+
// Rail skills (sr-architect, sr-developer, sr-reviewer, sr-merge-resolver).
|
|
606
|
+
// These ship as SKILL.md siblings of the claude `.claude/agents/sr-*.md`
|
|
607
|
+
// counterparts so codex projects can invoke the pipeline via skills
|
|
608
|
+
// (codex doesn't honour Claude's `.claude/agents/` convention).
|
|
609
|
+
//
|
|
610
|
+
// Codex-native overrides at `templates/codex-skills/rails/<name>/` win
|
|
611
|
+
// over the upstream ported copy when present — used to ship skill
|
|
612
|
+
// bodies written for codex's spawn_agent semantics (no
|
|
613
|
+
// `subagent_type:`, role conveyed via $-mention from the orchestrator).
|
|
614
|
+
const railsDir = path.join(setupSkills, 'rails');
|
|
615
|
+
const codexRailsOverridesDir = input.provider === 'codex'
|
|
616
|
+
? path.join(input.scriptDir, 'templates', 'codex-skills', 'rails')
|
|
617
|
+
: null;
|
|
618
|
+
if (isDir(railsDir) || (codexRailsOverridesDir && isDir(codexRailsOverridesDir))) {
|
|
619
|
+
const destRails = path.join(destBase, 'rails');
|
|
620
|
+
mkdirp(destRails);
|
|
621
|
+
const placedIds = new Set();
|
|
622
|
+
// Core rails that ALWAYS install (the implement orchestrator depends
|
|
623
|
+
// on them — leaving any out would break the pipeline). Mirrors
|
|
624
|
+
// QUICK_REQUIRED_AGENTS from the claude path.
|
|
625
|
+
const CORE_RAIL_AGENTS = new Set([
|
|
626
|
+
'sr-architect', 'sr-developer', 'sr-reviewer', 'sr-merge-resolver',
|
|
627
|
+
]);
|
|
628
|
+
// Honour the wizard's agent selection on codex projects, same as
|
|
629
|
+
// claude. If the wizard wrote `agents.selected: [a, b, ...]` to the
|
|
630
|
+
// install-config, install only the rails whose id is in that list
|
|
631
|
+
// OR is a core dependency. Without a selection (legacy installs)
|
|
632
|
+
// fall back to installing every rail that exists.
|
|
633
|
+
const selectedAgents = input.selectedAgents
|
|
634
|
+
? new Set([...input.selectedAgents, ...CORE_RAIL_AGENTS])
|
|
635
|
+
: null;
|
|
636
|
+
const shouldPlace = (skillId) => {
|
|
637
|
+
if (selectedAgents === null)
|
|
638
|
+
return true;
|
|
639
|
+
return selectedAgents.has(skillId);
|
|
640
|
+
};
|
|
641
|
+
if (isDir(railsDir)) {
|
|
642
|
+
for (const entry of listDir(railsDir)) {
|
|
643
|
+
if (!isDir(entry))
|
|
644
|
+
continue;
|
|
645
|
+
const skillId = path.basename(entry);
|
|
646
|
+
if (!shouldPlace(skillId)) {
|
|
647
|
+
result.skipped++;
|
|
648
|
+
continue;
|
|
649
|
+
}
|
|
650
|
+
const dest = path.join(destRails, skillId);
|
|
651
|
+
const overrideSrc = codexRailsOverridesDir
|
|
652
|
+
? path.join(codexRailsOverridesDir, skillId)
|
|
653
|
+
: null;
|
|
654
|
+
if (overrideSrc && isDir(overrideSrc) && pathExists(path.join(overrideSrc, 'SKILL.md'))) {
|
|
655
|
+
copyDir(overrideSrc, dest);
|
|
656
|
+
}
|
|
657
|
+
else {
|
|
658
|
+
copyDir(entry, dest);
|
|
659
|
+
if (input.provider === 'codex')
|
|
660
|
+
translateCodexMarkdownInTree(dest);
|
|
661
|
+
}
|
|
662
|
+
placedIds.add(skillId);
|
|
663
|
+
result.placed++;
|
|
664
|
+
result.filesCopied += countFiles(dest);
|
|
665
|
+
}
|
|
666
|
+
}
|
|
667
|
+
// Codex-only rails that have no upstream counterpart (frontend/
|
|
668
|
+
// backend developers, layer reviewers, product, test writer, doc
|
|
669
|
+
// sync). Same selectedAgents gate applies.
|
|
670
|
+
if (input.provider === 'codex' && codexRailsOverridesDir && isDir(codexRailsOverridesDir)) {
|
|
671
|
+
for (const entry of listDir(codexRailsOverridesDir)) {
|
|
672
|
+
if (!isDir(entry))
|
|
673
|
+
continue;
|
|
674
|
+
const skillId = path.basename(entry);
|
|
675
|
+
if (placedIds.has(skillId))
|
|
676
|
+
continue;
|
|
677
|
+
if (!shouldPlace(skillId)) {
|
|
678
|
+
result.skipped++;
|
|
679
|
+
continue;
|
|
680
|
+
}
|
|
681
|
+
if (!pathExists(path.join(entry, 'SKILL.md')))
|
|
682
|
+
continue;
|
|
683
|
+
const dest = path.join(destRails, skillId);
|
|
684
|
+
copyDir(entry, dest);
|
|
685
|
+
placedIds.add(skillId);
|
|
686
|
+
result.placed++;
|
|
687
|
+
result.filesCopied += countFiles(dest);
|
|
688
|
+
}
|
|
689
|
+
}
|
|
690
|
+
}
|
|
330
691
|
return result;
|
|
331
692
|
}
|
|
693
|
+
/**
|
|
694
|
+
* Walk a directory and rewrite every `.md` file in place with the
|
|
695
|
+
* claude→codex translation map. Used after copying an upstream skill
|
|
696
|
+
* directory onto a codex project so the body refers to `.codex/` and
|
|
697
|
+
* codex's `$skill` mention syntax instead of `.claude/` and
|
|
698
|
+
* `/specrails:` slash commands.
|
|
699
|
+
*/
|
|
700
|
+
function translateCodexMarkdownInTree(dir) {
|
|
701
|
+
if (!isDir(dir))
|
|
702
|
+
return;
|
|
703
|
+
for (const entry of listDir(dir)) {
|
|
704
|
+
if (isDir(entry)) {
|
|
705
|
+
translateCodexMarkdownInTree(entry);
|
|
706
|
+
continue;
|
|
707
|
+
}
|
|
708
|
+
if (!entry.endsWith('.md'))
|
|
709
|
+
continue;
|
|
710
|
+
const raw = readTextFile(entry);
|
|
711
|
+
const translated = raw
|
|
712
|
+
.replace(/\.claude\//g, '.codex/')
|
|
713
|
+
.replace(/`\/specrails:([\w-]+)`/g, '`$$$1`')
|
|
714
|
+
.replace(/`\/sr:([\w-]+)`/g, '`$$$1`')
|
|
715
|
+
.replace(/\/specrails:([\w-]+)/g, '$$$1')
|
|
716
|
+
.replace(/\/sr:([\w-]+)/g, '$$$1');
|
|
717
|
+
if (translated !== raw)
|
|
718
|
+
writeFileLf(entry, translated);
|
|
719
|
+
}
|
|
720
|
+
}
|
|
332
721
|
/**
|
|
333
722
|
* Substitutes `{{KEY}}` tokens in the input text with the provided
|
|
334
723
|
* values, then strips any remaining `{{UNKNOWN}}` tokens (replacing
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../../../src/installer/phases/scaffold.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../../../src/installer/phases/scaffold.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "specrails-core",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.6.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": {
|
|
@@ -218,10 +218,15 @@ Guidelines:
|
|
|
218
218
|
|
|
219
219
|
Your MEMORY.md is currently empty. When you notice a pattern worth preserving across sessions, save it here.
|
|
220
220
|
|
|
221
|
-
## Tool Selection —
|
|
221
|
+
## Tool Selection — MCP-First for Codebase Tasks
|
|
222
222
|
|
|
223
|
-
|
|
223
|
+
**Mandatory step BEFORE any code-navigation tool call**: scan the project's `CLAUDE.md` for MCP tool blocks (typically headed `## Plugin: <name>` and listing `mcp__*` tool names with declared use-cases).
|
|
224
224
|
|
|
225
|
-
|
|
225
|
+
If a project-documented MCP tool's "When to use" matches your current need, you **MUST** call it instead of the built-in equivalent (`Read`, `Grep`, `WebFetch`, etc.). Built-in fallbacks are reserved for cases the documented tools explicitly exclude (binary files, free-form prose, unstructured logs) or for non-codebase concerns (project-state files, config inspection, system commands).
|
|
226
226
|
|
|
227
|
-
|
|
227
|
+
This is non-negotiable for code-navigation work: plugin authors choose tools because they have a measurable advantage (40–60% input-token reduction is typical). Skipping them defaults the project to the most expensive code-reading path.
|
|
228
|
+
|
|
229
|
+
**Quick decision check at every code-related tool call**:
|
|
230
|
+
- Is this a symbol/reference/definition lookup? → MCP tool, not `Grep`/`Read`.
|
|
231
|
+
- Am I about to read a file just to edit one function? → MCP tool, not `Read` + `Edit`.
|
|
232
|
+
- No documented MCP tool fits the current need? → built-in, document why in your reasoning.
|
|
@@ -53,10 +53,15 @@ Guidelines:
|
|
|
53
53
|
|
|
54
54
|
Your MEMORY.md is currently empty.
|
|
55
55
|
|
|
56
|
-
## Tool Selection —
|
|
56
|
+
## Tool Selection — MCP-First for Codebase Tasks
|
|
57
57
|
|
|
58
|
-
|
|
58
|
+
**Mandatory step BEFORE any code-navigation tool call**: scan the project's `CLAUDE.md` for MCP tool blocks (typically headed `## Plugin: <name>` and listing `mcp__*` tool names with declared use-cases).
|
|
59
59
|
|
|
60
|
-
|
|
60
|
+
If a project-documented MCP tool's "When to use" matches your current need, you **MUST** call it instead of the built-in equivalent (`Read`, `Grep`, `WebFetch`, etc.). Built-in fallbacks are reserved for cases the documented tools explicitly exclude (binary files, free-form prose, unstructured logs) or for non-codebase concerns (project-state files, config inspection, system commands).
|
|
61
61
|
|
|
62
|
-
|
|
62
|
+
This is non-negotiable for code-navigation work: plugin authors choose tools because they have a measurable advantage (40–60% input-token reduction is typical). Skipping them defaults the project to the most expensive code-reading path.
|
|
63
|
+
|
|
64
|
+
**Quick decision check at every code-related tool call**:
|
|
65
|
+
- Is this a symbol/reference/definition lookup? → MCP tool, not `Grep`/`Read`.
|
|
66
|
+
- Am I about to read a file just to edit one function? → MCP tool, not `Read` + `Edit`.
|
|
67
|
+
- No documented MCP tool fits the current need? → built-in, document why in your reasoning.
|