specrails-core 4.11.3 โ†’ 4.12.1

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 (57) hide show
  1. package/README.md +56 -20
  2. package/bin/specrails-core.mjs +343 -20
  3. package/bin/tui-installer.mjs +103 -52
  4. package/dist/installer/cli.js +1 -1
  5. package/dist/installer/cli.js.map +1 -1
  6. package/dist/installer/commands/doctor.js +486 -24
  7. package/dist/installer/commands/doctor.js.map +1 -1
  8. package/dist/installer/commands/framework.js +49 -7
  9. package/dist/installer/commands/framework.js.map +1 -1
  10. package/dist/installer/commands/init.js +423 -25
  11. package/dist/installer/commands/init.js.map +1 -1
  12. package/dist/installer/commands/update.js +36 -9
  13. package/dist/installer/commands/update.js.map +1 -1
  14. package/dist/installer/phases/framework-lifecycle.js +125 -0
  15. package/dist/installer/phases/framework-lifecycle.js.map +1 -0
  16. package/dist/installer/phases/install-config.js +157 -5
  17. package/dist/installer/phases/install-config.js.map +1 -1
  18. package/dist/installer/phases/manifest.js +27 -2
  19. package/dist/installer/phases/manifest.js.map +1 -1
  20. package/dist/installer/phases/prereqs.js +57 -2
  21. package/dist/installer/phases/prereqs.js.map +1 -1
  22. package/dist/installer/phases/provider-detect.js +116 -6
  23. package/dist/installer/phases/provider-detect.js.map +1 -1
  24. package/dist/installer/phases/scaffold.js +1222 -12
  25. package/dist/installer/phases/scaffold.js.map +1 -1
  26. package/dist/installer/runtime/kimi.js +255 -0
  27. package/dist/installer/runtime/kimi.js.map +1 -0
  28. package/dist/installer/util/exec.js +6 -1
  29. package/dist/installer/util/exec.js.map +1 -1
  30. package/dist/installer/util/fs.js +11 -2
  31. package/dist/installer/util/fs.js.map +1 -1
  32. package/dist/installer/util/paths.js +12 -0
  33. package/dist/installer/util/paths.js.map +1 -1
  34. package/dist/installer/util/registry.js +234 -14
  35. package/dist/installer/util/registry.js.map +1 -1
  36. package/docs/README.md +1 -0
  37. package/docs/deployment.md +6 -7
  38. package/docs/getting-started.md +11 -7
  39. package/docs/installation.md +34 -16
  40. package/docs/plugin-architecture.md +11 -8
  41. package/docs/updating.md +21 -3
  42. package/docs/user-docs/cli-reference.md +43 -22
  43. package/docs/user-docs/codex-vs-claude-code.md +11 -9
  44. package/docs/user-docs/faq.md +1 -1
  45. package/docs/user-docs/getting-started-codex.md +5 -8
  46. package/docs/user-docs/getting-started-kimi.md +423 -0
  47. package/docs/user-docs/installation.md +49 -14
  48. package/docs/user-docs/quick-start.md +11 -8
  49. package/docs/windows.md +29 -4
  50. package/integration-contract.json +85 -13
  51. package/package.json +9 -5
  52. package/schemas/profile.v1.json +67 -5
  53. package/templates/kimi/specrails/run-skill.mjs +3005 -0
  54. package/templates/kimi/specrails/vendor/js-yaml/LICENSE +21 -0
  55. package/templates/kimi/specrails/vendor/js-yaml/NOTICE.md +16 -0
  56. package/templates/kimi/specrails/vendor/js-yaml/js-yaml.mjs +3856 -0
  57. package/templates/profiles/kimi-default.json +15 -0
@@ -1 +1 @@
1
- {"version":3,"file":"fs.js","sourceRoot":"","sources":["../../../src/installer/util/fs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fs.js","sourceRoot":"","sources":["../../../src/installer/util/fs.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EACL,SAAS,EACT,YAAY,EACZ,UAAU,EACV,SAAS,EACT,SAAS,EACT,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,MAAM,EACN,QAAQ,EACR,WAAW,EACX,UAAU,EACV,aAAa,GACd,MAAM,SAAS,CAAA;AAChB,OAAO,IAAI,MAAM,WAAW,CAAA;AAE5B,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAE7C;;;;GAIG;AACH,MAAM,UAAU,MAAM,CAAC,GAAW;IAChC,IAAI,CAAC;QACH,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IACrC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,eAAe,CAAC,+BAAgC,GAAa,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC,CAAA;IACzF,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,CAAS;IAClC,OAAO,UAAU,CAAC,CAAC,CAAC,CAAA;AACtB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CAAC,QAAgB,EAAE,QAAgB;IAC5D,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;IACrC,MAAM,CAAC,MAAM,CAAC,CAAA;IACd,MAAM,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;IAC1C,IAAI,CAAC;QACH,aAAa,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAA;IACnD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,eAAe,CAAC,yBAA0B,GAAa,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAA;IACxF,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,QAAgB;IAC3C,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;IACvC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,eAAe,CAAC,wBAAyB,GAAa,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAA;IACvF,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,QAAgB;IACxC,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,QAAQ,CAAC,CAAA;IAC/B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,eAAe,CAAC,wBAAyB,GAAa,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAA;IACvF,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAC,GAAW,EAAE,IAAY;IAChD,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;IAC1B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,UAAU,EAAE,EAAE,CAAC,CAAA;IAC/F,IAAI,CAAC;QACH,wEAAwE;QACxE,6EAA6E;QAC7E,4EAA4E;QAC5E,YAAY,CAAC,GAAG,EAAE,SAAS,EAAE,SAAS,CAAC,aAAa,GAAG,SAAS,CAAC,gBAAgB,CAAC,CAAA;QAClF,UAAU,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;IAC7B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,eAAe,CACvB,kBAAkB,GAAG,MAAM,IAAI,KAAM,GAAa,CAAC,OAAO,EAAE,EAC5D,IAAI,CACL,CAAA;IACH,CAAC;YAAS,CAAC;QACT,MAAM,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;IACpC,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,OAAO,CACrB,MAAc,EACd,OAAe,EACf,UAAkE,EAAE;IAEpE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,eAAe,CAAC,iCAAiC,EAAE,MAAM,CAAC,CAAA;IACtE,CAAC;IACD,MAAM,CAAC,OAAO,CAAC,CAAA;IAEf,MAAM,IAAI,GAAG,CAAC,UAAkB,EAAE,WAAmB,EAAE,SAAiB,EAAQ,EAAE;QAChF,IAAI,OAAiB,CAAA;QACrB,IAAI,CAAC;YACH,OAAO,GAAG,WAAW,CAAC,UAAU,CAAC,CAAA;QACnC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,eAAe,CACvB,6BAA8B,GAAa,CAAC,OAAO,EAAE,EACrD,UAAU,CACX,CAAA;QACH,CAAC;QACD,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;YAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAA;YAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAA;YAC5C,MAAM,OAAO,GAAG,SAAS,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;YACpE,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;gBAAE,SAAQ;YAChE,MAAM,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAA;YAC3B,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;gBACrB,MAAM,CAAC,OAAO,CAAC,CAAA;gBACf,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;YAChC,CAAC;iBAAM,IAAI,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC;gBACvB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;YAC3B,CAAC;YACD,kEAAkE;QACpE,CAAC;IACH,CAAC,CAAA;IACD,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,CAAC,CAAA;AAC3B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,OAAO,CAAC,GAAW;IACjC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,CAAA;IAC/B,IAAI,CAAC;QACH,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAA;IAC7D,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,eAAe,CAAC,6BAA8B,GAAa,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC,CAAA;IACvF,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,MAAM,CAAC,CAAS;IAC9B,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAA;IAChC,IAAI,CAAC;QACH,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAA;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,KAAK,CAAC,CAAS;IAC7B,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAA;IAChC,IAAI,CAAC;QACH,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAA;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,SAAS,CAAC,CAAS;IACjC,IAAI,CAAC;QACH,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,CAAA;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,CAAS;IACpC,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,CAAC,CAAC,CAAA;IACxB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;IACxB,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,CAAS;IAClC,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,CAAA;QACvB,IAAI,EAAE,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC;YACvC,UAAU,CAAC,CAAC,CAAC,CAAA;QACf,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAA;QAC5E,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,2BAA2B;IAC7B,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,aAAa,CAC3B,MAAc,EACd,QAAgB,EAChB,UAAU,GAAG,KAAK;IAElB,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,CAAA;IAEjC,+EAA+E;IAC/E,gFAAgF;IAChF,+CAA+C;IAC/C,IAAI,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;QACxB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAA;YACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAA;YACnG,IAAI,YAAY,CAAC,QAAQ,CAAC,KAAK,YAAY,CAAC,MAAM,CAAC;gBAAE,OAAO,SAAS,CAAA;QACvE,CAAC;QAAC,MAAM,CAAC;YACP,gDAAgD;QAClD,CAAC;IACH,CAAC;IAED,UAAU,CAAC,QAAQ,CAAC,CAAA;IACpB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAA;IAE9B,wEAAwE;IACxE,IAAI,UAAU,EAAE,CAAC;QACf,IAAI,WAAW,EAAE,CAAC;YAChB,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;QAC3B,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;QAC5B,CAAC;QACD,OAAO,MAAM,CAAA;IACf,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,IAAI,WAAW,EAAE,CAAC;YAChB,yEAAyE;YACzE,8CAA8C;YAC9C,IAAI,CAAC;gBACH,WAAW,CAAC,MAAM,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAA;gBACzC,OAAO,UAAU,CAAA;YACnB,CAAC;YAAC,MAAM,CAAC;gBACP,0BAA0B;YAC5B,CAAC;QACH,CAAC;aAAM,CAAC;YACN,wEAAwE;YACxE,wEAAwE;YACxE,qEAAqE;YACrE,yEAAyE;YACzE,6CAA6C;YAC7C,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;YAC1B,OAAO,MAAM,CAAA;QACf,CAAC;IACH,CAAC;SAAM,CAAC;QACN,IAAI,CAAC;YACH,WAAW,CAAC,MAAM,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;YAC3D,OAAO,SAAS,CAAA;QAClB,CAAC;QAAC,MAAM,CAAC;YACP,0BAA0B;QAC5B,CAAC;IACH,CAAC;IAED,wEAAwE;IACxE,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;IAC3B,CAAC;SAAM,CAAC;QACN,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;IAC5B,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAc,EAAE,QAAgB;IAChE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAA;IAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,OAAO,CAAC,GAAG,EAAE,CAAC,CAAA;IAC/F,UAAU,CAAC,GAAG,CAAC,CAAA;IACf,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAA;IACzF,IAAI,CAAC;QACH,WAAW,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAA;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,yEAAyE;QACzE,UAAU,CAAC,QAAQ,CAAC,CAAA;QACpB,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;QAC/B,OAAM;IACR,CAAC;IACD,IAAI,CAAC;QACH,UAAU,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,UAAU,CAAC,QAAQ,CAAC,CAAA;QACpB,UAAU,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;IAC3B,CAAC;AACH,CAAC"}
@@ -20,6 +20,18 @@ export const RESERVED_PATHS = [
20
20
  * them.
21
21
  */
22
22
  '.claude/agents/custom-',
23
+ /**
24
+ * `.kimi-code/skills/custom-<id>/...` โ€” user-authored Kimi role skills.
25
+ * Kimi discovers skills only one directory below `skills/`, so custom roles
26
+ * share the flat namespace with managed `sr-*` and workflow skills.
27
+ */
28
+ '.kimi-code/skills/custom-',
29
+ /**
30
+ * Pre-release compatibility: preserve a legacy nested custom role until the
31
+ * installer can atomically migrate it to the flat path. A destination
32
+ * collision is never overwritten or deleted automatically.
33
+ */
34
+ '.kimi-code/skills/rails/custom-',
23
35
  ];
24
36
  /**
25
37
  * Returns true when a repo-relative path falls inside a reserved
@@ -1 +1 @@
1
- {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../../src/installer/util/paths.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAA;AAE5B;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B;;;;OAIG;IACH,sBAAsB;IAEtB;;;;OAIG;IACH,wBAAwB;CAChB,CAAA;AAEV;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,OAAe;IAC5C,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;IAC9C,KAAK,MAAM,MAAM,IAAI,cAAc,EAAE,CAAC;QACpC,IAAI,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC;YAAE,OAAO,IAAI,CAAA;IAChD,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,OAAO,CAAC,GAAG,QAAkB;IAC3C,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAA;AACvE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,GAAG,QAAkB;IAC5C,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAA;AAC/B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,QAAgB,EAAE,OAAe;IAC5D,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;IAC5C,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACzB,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;IACpC,CAAC;IACD,OAAO,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;AAChC,CAAC"}
1
+ {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../../src/installer/util/paths.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAA;AAE5B;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B;;;;OAIG;IACH,sBAAsB;IAEtB;;;;OAIG;IACH,wBAAwB;IAExB;;;;OAIG;IACH,2BAA2B;IAE3B;;;;OAIG;IACH,iCAAiC;CACzB,CAAA;AAEV;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,OAAe;IAC5C,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;IAC9C,KAAK,MAAM,MAAM,IAAI,cAAc,EAAE,CAAC;QACpC,IAAI,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC;YAAE,OAAO,IAAI,CAAA;IAChD,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,OAAO,CAAC,GAAG,QAAkB;IAC3C,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAA;AACvE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,GAAG,QAAkB;IAC5C,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAA;AAC/B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,QAAgB,EAAE,OAAe;IAC5D,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;IAC5C,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACzB,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;IACpC,CAAC;IACD,OAAO,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;AAChC,CAAC"}
@@ -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, '.claude'),
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
- typeof parsed !== 'object' ||
156
- typeof parsed.schemaVersion !== 'number' ||
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
- return parsed;
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 && opts.providers.length > 0 ? opts.providers : ['claude'];
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
- return entryToResolution(key, existing);
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 |
@@ -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) | Scaffold/Codex, full offline control | ~2 minutes |
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 users or when you need full control over agent files.
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 โ‰ฅ18, Claude Code or Codex CLI
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
@@ -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 repository. It gives Claude Code a team of **12 specialized AI agents** โ€” an architect, developers, layer reviewers, a reviewer, a product manager โ€” that work together to go from idea to shipped PR automatically.
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
- - **[Claude Code](https://claude.ai/claude-code)** โ€” Anthropic's CLI tool
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
- > **Using OpenAI Codex instead of Claude Code?** See [getting-started-codex.md](user-docs/getting-started-codex.md) for Codex-specific setup.
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 (for Codex users or full offline control)**
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 Claude Code and start working.
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