specrails-desktop 2.8.0 → 2.9.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.
- package/README.md +23 -19
- package/client/dist/assets/{ActivityFeedPage-LKqd18-G.js → ActivityFeedPage-DpQzYMBz.js} +1 -1
- package/client/dist/assets/{AgentsPage-Cb-b-6Ot.js → AgentsPage-29fCY8qV.js} +1 -1
- package/client/dist/assets/{AnalyticsPage-HVxQQ1wy.js → AnalyticsPage-BwGtS6Hf.js} +1 -1
- package/client/dist/assets/{BarChart-BOyHB0dw.js → BarChart-CTR97DVC.js} +1 -1
- package/client/dist/assets/{CodePage-DnOnwKGB.js → CodePage-yAAxKasA.js} +1 -1
- package/client/dist/assets/{DesktopAnalyticsPage-D2auU39x.js → DesktopAnalyticsPage-BdK_XpsD.js} +1 -1
- package/client/dist/assets/{DocsDialog-CTuDX3GK.js → DocsDialog-BaE0cLlL.js} +2 -2
- package/client/dist/assets/{DocsPage-DRyMmu0Z.js → DocsPage-c1FgZX8_.js} +2 -2
- package/client/dist/assets/{ExportDropdown-DO-GGiMh.js → ExportDropdown-lPv_yDen.js} +1 -1
- package/client/dist/assets/{IntegrationsPage-BhbO4jFT.js → IntegrationsPage-DOpxRe7G.js} +1 -1
- package/client/dist/assets/{JobDetailPage-DJooEg1s.js → JobDetailPage-5ExzXY-F.js} +1 -1
- package/client/dist/assets/{JobsPage-BbaC-YOg.js → JobsPage-iW7WuPAc.js} +1 -1
- package/client/dist/assets/{dist-js-Xc2lRKp2.js → dist-js-A8aSaLng.js} +1 -1
- package/client/dist/assets/{dist-js-CiIVMsx3.js → dist-js-CD_m3Xj5.js} +1 -1
- package/client/dist/assets/index-D6BaYRRU.css +2 -0
- package/client/dist/assets/{index-DK214dak.js → index-DRhFPNAv.js} +44 -44
- package/client/dist/assets/{integrations-2C7MkGT0.js → integrations-7YyTBuU9.js} +1 -1
- package/client/dist/assets/{integrations-CX4p_bij.js → integrations-B9CEpNF0.js} +1 -1
- package/client/dist/assets/{integrations-C2jQtv-s.js → integrations-BlvAdewo.js} +1 -1
- package/client/dist/assets/{integrations-eQPHAYsE.js → integrations-Bw8UM9Xd.js} +1 -1
- package/client/dist/assets/{integrations-BDC670cg.js → integrations-C5SxNKnG.js} +1 -1
- package/client/dist/assets/{integrations-BqUmRUef.js → integrations-CJQKMmdW.js} +1 -1
- package/client/dist/assets/{integrations-CB98NeH5.js → integrations-DWz1eU_K.js} +1 -1
- package/client/dist/assets/{integrations-_SuVeQIG.js → integrations-DiPR8Fzp.js} +1 -1
- package/client/dist/assets/{lib-Bo5s6xpe.js → lib-1vkTuLY7.js} +1 -1
- package/client/dist/assets/setup-B6egeeTM.js +1 -0
- package/client/dist/assets/setup-BHroXlke.js +1 -0
- package/client/dist/assets/setup-BIXsWUp1.js +1 -0
- package/client/dist/assets/setup-BJRdg1iE.js +1 -0
- package/client/dist/assets/setup-C0rVGnCy.js +1 -0
- package/client/dist/assets/setup-Cpu17hJv.js +1 -0
- package/client/dist/assets/setup-D-1r0uSx.js +1 -0
- package/client/dist/assets/setup-Dn2-veYO.js +1 -0
- package/client/dist/assets/{tickets-9kdPXInd.js → tickets-CG_mo-Bg.js} +1 -1
- package/client/dist/assets/{tickets-n23kDqJT.js → tickets-CVJQ-vRm.js} +1 -1
- package/client/dist/assets/{tickets-tGx5AR5b.js → tickets-D5MSAPe_.js} +1 -1
- package/client/dist/assets/{tickets-1UIGf_oA.js → tickets-DBV3wgQZ.js} +1 -1
- package/client/dist/assets/{tickets-DNmXcAwu.js → tickets-Q0_pONEh.js} +1 -1
- package/client/dist/assets/{tickets-C6pwZwt4.js → tickets-RZ0LyeQe.js} +1 -1
- package/client/dist/assets/{tickets-DAjtxAVb.js → tickets-d1A6EOHa.js} +1 -1
- package/client/dist/assets/{tickets-0rM0lIXd.js → tickets-r4-oNV0R.js} +1 -1
- package/client/dist/assets/{useProjectCache-DVNypkmR.js → useProjectCache-CSi2xHri.js} +1 -1
- package/client/dist/index.html +5 -5
- package/docs/README.md +5 -2
- package/docs/agy-cli-provider-study.md +78 -0
- package/docs/cli.md +23 -4
- package/docs/codex.md +116 -58
- package/docs/creating-specs.md +19 -5
- package/docs/customizing.md +27 -6
- package/docs/gemini.md +225 -73
- package/docs/getting-started.md +18 -9
- package/docs/guide/de/agents/1-meet-the-agents.md +38 -0
- package/docs/guide/de/agents/2-profiles-and-the-balanced-default.md +45 -0
- package/docs/guide/de/agents/3-customizing-models-per-agent.md +60 -0
- package/docs/guide/de/agents/4-custom-agents-catalog.md +43 -0
- package/docs/guide/de/getting-started/1-what-is-specrails.md +49 -0
- package/docs/guide/de/getting-started/2-installing-and-first-run.md +42 -0
- package/docs/guide/de/getting-started/3-adding-your-first-project.md +58 -0
- package/docs/guide/de/getting-started/4-the-dashboard-tour.md +53 -0
- package/docs/guide/de/insights/1-analytics-and-cost-tracking.md +78 -0
- package/docs/guide/de/insights/2-the-integrated-terminal.md +46 -0
- package/docs/guide/de/insights/3-code-explorer.md +50 -0
- package/docs/guide/de/integrations/1-ai-providers.md +64 -0
- package/docs/guide/de/integrations/2-plugins.md +44 -0
- package/docs/guide/de/integrations/3-jira-integration.md +71 -0
- package/docs/guide/de/integrations/4-mobile-companion.md +38 -0
- package/docs/guide/de/pipeline/1-rails-and-jobs.md +94 -0
- package/docs/guide/de/pipeline/2-the-job-detail-view.md +90 -0
- package/docs/guide/de/pipeline/3-batch-implement-and-multi-feature.md +78 -0
- package/docs/guide/de/pipeline/4-picking-an-engine-per-rail.md +60 -0
- package/docs/guide/de/settings/1-themes.md +37 -0
- package/docs/guide/de/settings/2-language.md +39 -0
- package/docs/guide/de/settings/3-pipeline-telemetry-and-diagnostics.md +46 -0
- package/docs/guide/de/settings/4-where-your-data-lives.md +48 -0
- package/docs/guide/de/specs/1-specs-and-the-backlog.md +52 -0
- package/docs/guide/de/specs/2-add-spec-quick-mode.md +45 -0
- package/docs/guide/de/specs/3-add-spec-explore-mode.md +68 -0
- package/docs/guide/de/specs/4-drafts-and-contract-layer.md +81 -0
- package/docs/guide/en/agents/1-meet-the-agents.md +38 -0
- package/docs/guide/en/agents/2-profiles-and-the-balanced-default.md +45 -0
- package/docs/guide/en/agents/3-customizing-models-per-agent.md +60 -0
- package/docs/guide/en/agents/4-custom-agents-catalog.md +43 -0
- package/docs/guide/en/getting-started/1-what-is-specrails.md +49 -0
- package/docs/guide/en/getting-started/2-installing-and-first-run.md +42 -0
- package/docs/guide/en/getting-started/3-adding-your-first-project.md +58 -0
- package/docs/guide/en/getting-started/4-the-dashboard-tour.md +53 -0
- package/docs/guide/en/insights/1-analytics-and-cost-tracking.md +78 -0
- package/docs/guide/en/insights/2-the-integrated-terminal.md +46 -0
- package/docs/guide/en/insights/3-code-explorer.md +50 -0
- package/docs/guide/en/integrations/1-ai-providers.md +64 -0
- package/docs/guide/en/integrations/2-plugins.md +44 -0
- package/docs/guide/en/integrations/3-jira-integration.md +71 -0
- package/docs/guide/en/integrations/4-mobile-companion.md +38 -0
- package/docs/guide/en/pipeline/1-rails-and-jobs.md +94 -0
- package/docs/guide/en/pipeline/2-the-job-detail-view.md +90 -0
- package/docs/guide/en/pipeline/3-batch-implement-and-multi-feature.md +78 -0
- package/docs/guide/en/pipeline/4-picking-an-engine-per-rail.md +60 -0
- package/docs/guide/en/settings/1-themes.md +37 -0
- package/docs/guide/en/settings/2-language.md +39 -0
- package/docs/guide/en/settings/3-pipeline-telemetry-and-diagnostics.md +46 -0
- package/docs/guide/en/settings/4-where-your-data-lives.md +48 -0
- package/docs/guide/en/specs/1-specs-and-the-backlog.md +52 -0
- package/docs/guide/en/specs/2-add-spec-quick-mode.md +45 -0
- package/docs/guide/en/specs/3-add-spec-explore-mode.md +68 -0
- package/docs/guide/en/specs/4-drafts-and-contract-layer.md +81 -0
- package/docs/guide/es/agents/1-meet-the-agents.md +38 -0
- package/docs/guide/es/agents/2-profiles-and-the-balanced-default.md +45 -0
- package/docs/guide/es/agents/3-customizing-models-per-agent.md +60 -0
- package/docs/guide/es/agents/4-custom-agents-catalog.md +43 -0
- package/docs/guide/es/getting-started/1-what-is-specrails.md +49 -0
- package/docs/guide/es/getting-started/2-installing-and-first-run.md +42 -0
- package/docs/guide/es/getting-started/3-adding-your-first-project.md +58 -0
- package/docs/guide/es/getting-started/4-the-dashboard-tour.md +53 -0
- package/docs/guide/es/insights/1-analytics-and-cost-tracking.md +78 -0
- package/docs/guide/es/insights/2-the-integrated-terminal.md +46 -0
- package/docs/guide/es/insights/3-code-explorer.md +50 -0
- package/docs/guide/es/integrations/1-ai-providers.md +64 -0
- package/docs/guide/es/integrations/2-plugins.md +44 -0
- package/docs/guide/es/integrations/3-jira-integration.md +71 -0
- package/docs/guide/es/integrations/4-mobile-companion.md +38 -0
- package/docs/guide/es/pipeline/1-rails-and-jobs.md +94 -0
- package/docs/guide/es/pipeline/2-the-job-detail-view.md +90 -0
- package/docs/guide/es/pipeline/3-batch-implement-and-multi-feature.md +78 -0
- package/docs/guide/es/pipeline/4-picking-an-engine-per-rail.md +60 -0
- package/docs/guide/es/settings/1-themes.md +37 -0
- package/docs/guide/es/settings/2-language.md +39 -0
- package/docs/guide/es/settings/3-pipeline-telemetry-and-diagnostics.md +46 -0
- package/docs/guide/es/settings/4-where-your-data-lives.md +48 -0
- package/docs/guide/es/specs/1-specs-and-the-backlog.md +52 -0
- package/docs/guide/es/specs/2-add-spec-quick-mode.md +45 -0
- package/docs/guide/es/specs/3-add-spec-explore-mode.md +68 -0
- package/docs/guide/es/specs/4-drafts-and-contract-layer.md +81 -0
- package/docs/guide/fr/agents/1-meet-the-agents.md +38 -0
- package/docs/guide/fr/agents/2-profiles-and-the-balanced-default.md +45 -0
- package/docs/guide/fr/agents/3-customizing-models-per-agent.md +60 -0
- package/docs/guide/fr/agents/4-custom-agents-catalog.md +43 -0
- package/docs/guide/fr/getting-started/1-what-is-specrails.md +49 -0
- package/docs/guide/fr/getting-started/2-installing-and-first-run.md +42 -0
- package/docs/guide/fr/getting-started/3-adding-your-first-project.md +58 -0
- package/docs/guide/fr/getting-started/4-the-dashboard-tour.md +53 -0
- package/docs/guide/fr/insights/1-analytics-and-cost-tracking.md +78 -0
- package/docs/guide/fr/insights/2-the-integrated-terminal.md +46 -0
- package/docs/guide/fr/insights/3-code-explorer.md +50 -0
- package/docs/guide/fr/integrations/1-ai-providers.md +64 -0
- package/docs/guide/fr/integrations/2-plugins.md +44 -0
- package/docs/guide/fr/integrations/3-jira-integration.md +71 -0
- package/docs/guide/fr/integrations/4-mobile-companion.md +38 -0
- package/docs/guide/fr/pipeline/1-rails-and-jobs.md +94 -0
- package/docs/guide/fr/pipeline/2-the-job-detail-view.md +90 -0
- package/docs/guide/fr/pipeline/3-batch-implement-and-multi-feature.md +78 -0
- package/docs/guide/fr/pipeline/4-picking-an-engine-per-rail.md +60 -0
- package/docs/guide/fr/settings/1-themes.md +37 -0
- package/docs/guide/fr/settings/2-language.md +39 -0
- package/docs/guide/fr/settings/3-pipeline-telemetry-and-diagnostics.md +46 -0
- package/docs/guide/fr/settings/4-where-your-data-lives.md +48 -0
- package/docs/guide/fr/specs/1-specs-and-the-backlog.md +52 -0
- package/docs/guide/fr/specs/2-add-spec-quick-mode.md +45 -0
- package/docs/guide/fr/specs/3-add-spec-explore-mode.md +68 -0
- package/docs/guide/fr/specs/4-drafts-and-contract-layer.md +81 -0
- package/docs/guide/it/agents/1-meet-the-agents.md +38 -0
- package/docs/guide/it/agents/2-profiles-and-the-balanced-default.md +45 -0
- package/docs/guide/it/agents/3-customizing-models-per-agent.md +60 -0
- package/docs/guide/it/agents/4-custom-agents-catalog.md +43 -0
- package/docs/guide/it/getting-started/1-what-is-specrails.md +49 -0
- package/docs/guide/it/getting-started/2-installing-and-first-run.md +42 -0
- package/docs/guide/it/getting-started/3-adding-your-first-project.md +58 -0
- package/docs/guide/it/getting-started/4-the-dashboard-tour.md +53 -0
- package/docs/guide/it/insights/1-analytics-and-cost-tracking.md +78 -0
- package/docs/guide/it/insights/2-the-integrated-terminal.md +46 -0
- package/docs/guide/it/insights/3-code-explorer.md +50 -0
- package/docs/guide/it/integrations/1-ai-providers.md +64 -0
- package/docs/guide/it/integrations/2-plugins.md +44 -0
- package/docs/guide/it/integrations/3-jira-integration.md +71 -0
- package/docs/guide/it/integrations/4-mobile-companion.md +38 -0
- package/docs/guide/it/pipeline/1-rails-and-jobs.md +94 -0
- package/docs/guide/it/pipeline/2-the-job-detail-view.md +90 -0
- package/docs/guide/it/pipeline/3-batch-implement-and-multi-feature.md +78 -0
- package/docs/guide/it/pipeline/4-picking-an-engine-per-rail.md +60 -0
- package/docs/guide/it/settings/1-themes.md +37 -0
- package/docs/guide/it/settings/2-language.md +39 -0
- package/docs/guide/it/settings/3-pipeline-telemetry-and-diagnostics.md +46 -0
- package/docs/guide/it/settings/4-where-your-data-lives.md +48 -0
- package/docs/guide/it/specs/1-specs-and-the-backlog.md +52 -0
- package/docs/guide/it/specs/2-add-spec-quick-mode.md +45 -0
- package/docs/guide/it/specs/3-add-spec-explore-mode.md +68 -0
- package/docs/guide/it/specs/4-drafts-and-contract-layer.md +81 -0
- package/docs/guide/ja/agents/1-meet-the-agents.md +38 -0
- package/docs/guide/ja/agents/2-profiles-and-the-balanced-default.md +45 -0
- package/docs/guide/ja/agents/3-customizing-models-per-agent.md +60 -0
- package/docs/guide/ja/agents/4-custom-agents-catalog.md +43 -0
- package/docs/guide/ja/getting-started/1-what-is-specrails.md +49 -0
- package/docs/guide/ja/getting-started/2-installing-and-first-run.md +42 -0
- package/docs/guide/ja/getting-started/3-adding-your-first-project.md +58 -0
- package/docs/guide/ja/getting-started/4-the-dashboard-tour.md +53 -0
- package/docs/guide/ja/insights/1-analytics-and-cost-tracking.md +78 -0
- package/docs/guide/ja/insights/2-the-integrated-terminal.md +46 -0
- package/docs/guide/ja/insights/3-code-explorer.md +50 -0
- package/docs/guide/ja/integrations/1-ai-providers.md +64 -0
- package/docs/guide/ja/integrations/2-plugins.md +44 -0
- package/docs/guide/ja/integrations/3-jira-integration.md +71 -0
- package/docs/guide/ja/integrations/4-mobile-companion.md +38 -0
- package/docs/guide/ja/pipeline/1-rails-and-jobs.md +94 -0
- package/docs/guide/ja/pipeline/2-the-job-detail-view.md +90 -0
- package/docs/guide/ja/pipeline/3-batch-implement-and-multi-feature.md +78 -0
- package/docs/guide/ja/pipeline/4-picking-an-engine-per-rail.md +60 -0
- package/docs/guide/ja/settings/1-themes.md +37 -0
- package/docs/guide/ja/settings/2-language.md +39 -0
- package/docs/guide/ja/settings/3-pipeline-telemetry-and-diagnostics.md +46 -0
- package/docs/guide/ja/settings/4-where-your-data-lives.md +48 -0
- package/docs/guide/ja/specs/1-specs-and-the-backlog.md +52 -0
- package/docs/guide/ja/specs/2-add-spec-quick-mode.md +45 -0
- package/docs/guide/ja/specs/3-add-spec-explore-mode.md +68 -0
- package/docs/guide/ja/specs/4-drafts-and-contract-layer.md +81 -0
- package/docs/guide/pt/agents/1-meet-the-agents.md +38 -0
- package/docs/guide/pt/agents/2-profiles-and-the-balanced-default.md +45 -0
- package/docs/guide/pt/agents/3-customizing-models-per-agent.md +60 -0
- package/docs/guide/pt/agents/4-custom-agents-catalog.md +43 -0
- package/docs/guide/pt/getting-started/1-what-is-specrails.md +49 -0
- package/docs/guide/pt/getting-started/2-installing-and-first-run.md +42 -0
- package/docs/guide/pt/getting-started/3-adding-your-first-project.md +58 -0
- package/docs/guide/pt/getting-started/4-the-dashboard-tour.md +53 -0
- package/docs/guide/pt/insights/1-analytics-and-cost-tracking.md +78 -0
- package/docs/guide/pt/insights/2-the-integrated-terminal.md +46 -0
- package/docs/guide/pt/insights/3-code-explorer.md +50 -0
- package/docs/guide/pt/integrations/1-ai-providers.md +64 -0
- package/docs/guide/pt/integrations/2-plugins.md +44 -0
- package/docs/guide/pt/integrations/3-jira-integration.md +71 -0
- package/docs/guide/pt/integrations/4-mobile-companion.md +38 -0
- package/docs/guide/pt/pipeline/1-rails-and-jobs.md +94 -0
- package/docs/guide/pt/pipeline/2-the-job-detail-view.md +90 -0
- package/docs/guide/pt/pipeline/3-batch-implement-and-multi-feature.md +78 -0
- package/docs/guide/pt/pipeline/4-picking-an-engine-per-rail.md +60 -0
- package/docs/guide/pt/settings/1-themes.md +37 -0
- package/docs/guide/pt/settings/2-language.md +39 -0
- package/docs/guide/pt/settings/3-pipeline-telemetry-and-diagnostics.md +46 -0
- package/docs/guide/pt/settings/4-where-your-data-lives.md +48 -0
- package/docs/guide/pt/specs/1-specs-and-the-backlog.md +52 -0
- package/docs/guide/pt/specs/2-add-spec-quick-mode.md +45 -0
- package/docs/guide/pt/specs/3-add-spec-explore-mode.md +68 -0
- package/docs/guide/pt/specs/4-drafts-and-contract-layer.md +81 -0
- package/docs/guide/zh/agents/1-meet-the-agents.md +38 -0
- package/docs/guide/zh/agents/2-profiles-and-the-balanced-default.md +45 -0
- package/docs/guide/zh/agents/3-customizing-models-per-agent.md +60 -0
- package/docs/guide/zh/agents/4-custom-agents-catalog.md +43 -0
- package/docs/guide/zh/getting-started/1-what-is-specrails.md +49 -0
- package/docs/guide/zh/getting-started/2-installing-and-first-run.md +42 -0
- package/docs/guide/zh/getting-started/3-adding-your-first-project.md +58 -0
- package/docs/guide/zh/getting-started/4-the-dashboard-tour.md +53 -0
- package/docs/guide/zh/insights/1-analytics-and-cost-tracking.md +78 -0
- package/docs/guide/zh/insights/2-the-integrated-terminal.md +46 -0
- package/docs/guide/zh/insights/3-code-explorer.md +50 -0
- package/docs/guide/zh/integrations/1-ai-providers.md +64 -0
- package/docs/guide/zh/integrations/2-plugins.md +44 -0
- package/docs/guide/zh/integrations/3-jira-integration.md +71 -0
- package/docs/guide/zh/integrations/4-mobile-companion.md +38 -0
- package/docs/guide/zh/pipeline/1-rails-and-jobs.md +94 -0
- package/docs/guide/zh/pipeline/2-the-job-detail-view.md +90 -0
- package/docs/guide/zh/pipeline/3-batch-implement-and-multi-feature.md +78 -0
- package/docs/guide/zh/pipeline/4-picking-an-engine-per-rail.md +60 -0
- package/docs/guide/zh/settings/1-themes.md +37 -0
- package/docs/guide/zh/settings/2-language.md +39 -0
- package/docs/guide/zh/settings/3-pipeline-telemetry-and-diagnostics.md +46 -0
- package/docs/guide/zh/settings/4-where-your-data-lives.md +48 -0
- package/docs/guide/zh/specs/1-specs-and-the-backlog.md +52 -0
- package/docs/guide/zh/specs/2-add-spec-quick-mode.md +45 -0
- package/docs/guide/zh/specs/3-add-spec-explore-mode.md +68 -0
- package/docs/guide/zh/specs/4-drafts-and-contract-layer.md +81 -0
- package/docs/internals/README.md +1 -1
- package/docs/internals/adding-a-provider.md +192 -59
- package/docs/internals/api-reference.md +130 -21
- package/docs/internals/architecture.md +22 -9
- package/docs/internals/bundled-framework-build-plan.md +264 -0
- package/docs/internals/configuration.md +33 -8
- package/docs/internals/global-artifacts-alignment-contract.md +486 -0
- package/docs/internals/global-artifacts-relocation-evaluation.md +294 -0
- package/docs/internals/operations-runbook.md +16 -5
- package/docs/internals/profiles.md +42 -14
- package/docs/platforms/macos.md +27 -8
- package/docs/platforms/windows.md +20 -6
- package/docs/running-pipelines.md +17 -9
- package/docs/terminal.md +9 -3
- package/docs/tracking-cost.md +17 -11
- package/package.json +1 -1
- package/server/dist/agent-refine-manager.js +20 -5
- package/server/dist/artifact-registry.js +468 -0
- package/server/dist/attachment-manager.js +5 -8
- package/server/dist/browser-capture-manager.js +4 -4
- package/server/dist/bundled-core.js +72 -0
- package/server/dist/bundled-openspec.js +58 -0
- package/server/dist/chat-manager.js +42 -5
- package/server/dist/code-explorer-router.js +10 -7
- package/server/dist/config.js +7 -2
- package/server/dist/context-budget.js +17 -6
- package/server/dist/context-scope.js +6 -2
- package/server/dist/contract-refine-runner.js +31 -9
- package/server/dist/desktop-router.js +24 -1
- package/server/dist/docs-router.js +210 -132
- package/server/dist/file-summary-manager.js +41 -16
- package/server/dist/framework-manager.js +248 -0
- package/server/dist/framework-migration.js +308 -0
- package/server/dist/index.js +30 -0
- package/server/dist/install-config-path.js +73 -0
- package/server/dist/jira/jira-sync-manager.js +23 -11
- package/server/dist/openspec-shim.js +153 -0
- package/server/dist/plugins-router.js +19 -8
- package/server/dist/profiles-router.js +38 -16
- package/server/dist/project-registry.js +101 -3
- package/server/dist/project-router-chat.js +1 -1
- package/server/dist/project-router-helpers.js +25 -12
- package/server/dist/project-router-jobs.js +3 -3
- package/server/dist/project-router-settings.js +8 -6
- package/server/dist/project-router-setup.js +27 -10
- package/server/dist/project-router-spending.js +6 -1
- package/server/dist/project-router-tickets.js +30 -10
- package/server/dist/project-router.js +16 -1
- package/server/dist/queue-manager.js +149 -18
- package/server/dist/setup-manager.js +131 -29
- package/server/dist/smash-runner.js +21 -6
- package/server/dist/ticket-store.js +6 -2
- package/server/dist/ticket-watcher.js +5 -1
- package/server/dist/vitest-setup.js +25 -0
- package/server/dist/workspace-manager.js +199 -0
- package/server/dist/workspace-resolution.js +147 -0
- package/client/dist/assets/index-DgKfQFcf.css +0 -2
- package/client/dist/assets/setup-BIIkb-_K.js +0 -1
- package/client/dist/assets/setup-BeQxu9kD.js +0 -1
- package/client/dist/assets/setup-CPa6GnlI.js +0 -1
- package/client/dist/assets/setup-CZl4OEJx.js +0 -1
- package/client/dist/assets/setup-ChpodNfn.js +0 -1
- package/client/dist/assets/setup-D_fjJH6u.js +0 -1
- package/client/dist/assets/setup-YzD8DX4O.js +0 -1
- package/client/dist/assets/setup-fRpDozmq.js +0 -1
- package/docs/adding-a-provider.md +0 -107
package/docs/gemini.md
CHANGED
|
@@ -1,106 +1,258 @@
|
|
|
1
1
|
# Using Specrails with the Gemini CLI
|
|
2
2
|
|
|
3
|
-
Specrails supports
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
>
|
|
10
|
-
> **Scope today.** With the beta on, Gemini powers the *non-pipeline* surfaces —
|
|
11
|
-
> Explore Spec, Quick spec, AI Edit, the terminal launcher, and cost analytics.
|
|
12
|
-
> The full **rails pipeline** (`/specrails:implement`, `batch-implement`) needs a
|
|
13
|
-
> Gemini artifact target in `specrails-core` (`.gemini/commands/*.toml` +
|
|
14
|
-
> `.gemini/agents/sr-*.md`), which ships separately. Rails are hidden for Gemini
|
|
15
|
-
> projects until then.
|
|
3
|
+
Specrails supports **three AI providers**: Anthropic's
|
|
4
|
+
[Claude Code](https://claude.com/claude-code), OpenAI's
|
|
5
|
+
[Codex CLI](https://developers.openai.com/codex), and Google's
|
|
6
|
+
[Gemini CLI](https://github.com/google-gemini/gemini-cli). You pick one,
|
|
7
|
+
two, or all three when you add a project, and the rest of the app behaves
|
|
8
|
+
the same across them.
|
|
16
9
|
|
|
17
|
-
|
|
10
|
+
> **Gemini is enabled by default** (parity with Claude and Codex). It shows
|
|
11
|
+
> up in **Add Project** and is selectable whenever the `gemini` CLI is on
|
|
12
|
+
> your `PATH`. To disable it as an emergency rollback, set
|
|
13
|
+
> `SPECRAILS_GEMINI_BETA=0` in the app's environment — only the exact string
|
|
14
|
+
> `0` disables it; `1`, `true`, and unset all mean **enabled**. (Unlike
|
|
15
|
+
> Codex, there is no legacy `SPECRAILS_HUB_*` fallback name.)
|
|
18
16
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
-
|
|
22
|
-
|
|
23
|
-
[Google AI Studio](https://aistudio.google.com/apikey)). The free OAuth
|
|
24
|
-
"Login with Google" tier exists but is being wound down for the CLI and is not a
|
|
25
|
-
reliable unattended path — use an API key.
|
|
17
|
+
**What works with Gemini:** Explore Spec, Quick spec, AI Edit, the terminal
|
|
18
|
+
"Open AI CLI" launcher, cost analytics, **and the full rails pipeline**
|
|
19
|
+
(`/specrails:implement`, `batch-implement`). The one exception is
|
|
20
|
+
**Ultracode rails**, which remain Claude-only.
|
|
26
21
|
|
|
27
|
-
##
|
|
22
|
+
## Prerequisites
|
|
28
23
|
|
|
29
|
-
|
|
24
|
+
| What | Why | How |
|
|
25
|
+
|---|---|---|
|
|
26
|
+
| `gemini` CLI ≥ 0.11.0 | Earlier versions lack `--output-format stream-json` + headless `--resume`, which the app relies on | `npm i -g @google/gemini-cli` · check with `gemini --version` |
|
|
27
|
+
| A Gemini API key | The app spawns Gemini headlessly, so it needs non-interactive auth | Set `GEMINI_API_KEY` to a paid Gemini Developer API key from [Google AI Studio](https://aistudio.google.com/apikey) |
|
|
28
|
+
| `specrails-core` ≥ 4.8.0 in the project | 4.8.0 ships the Gemini provider target (`.gemini/` commands + agents) that the rails pipeline needs | The Add-Project install flow uses `specrails-core@^4.8.0` automatically |
|
|
29
|
+
| `git`, `node`, `npm`, `npx` | Same as Claude — needed for `specrails-core init` | Use your usual installer |
|
|
30
30
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
31
|
+
> **Two different minimums.** The `gemini` **binary** floor is **0.11.0**.
|
|
32
|
+
> The `specrails-core` **package** floor is **4.8.0** (a single shared
|
|
33
|
+
> version for all providers). They are separate things — the binary on your
|
|
34
|
+
> machine vs. the artifacts installed into the project.
|
|
35
|
+
|
|
36
|
+
**On the API key.** The free OAuth "Login with Google" tier exists, but it
|
|
37
|
+
is being wound down for the CLI and is not a reliable unattended path. Use a
|
|
38
|
+
real `GEMINI_API_KEY` so headless rails and Explore turns can authenticate
|
|
39
|
+
without a browser prompt. Free-tier keys serve the Flash models; Pro/preview
|
|
40
|
+
models need billing enabled.
|
|
34
41
|
|
|
35
|
-
|
|
36
|
-
|
|
42
|
+
The app's **Add Project** dialog runs a live prerequisites check. It disables
|
|
43
|
+
the Gemini provider checkbox with a "not found" hint when the binary isn't on
|
|
44
|
+
`PATH`, and shows install commands if you click "More info".
|
|
37
45
|
|
|
38
46
|
## Adding a Gemini project
|
|
39
47
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
the
|
|
48
|
+
1. Open the app UI and click **Add Project**.
|
|
49
|
+
2. Pick the project's path.
|
|
50
|
+
3. In the **AI providers** row, check **Gemini** (you can check Claude and/or
|
|
51
|
+
Codex too — see [Running multiple providers in one
|
|
52
|
+
project](#running-multiple-providers-in-one-project)). The first provider
|
|
53
|
+
you select becomes the project default.
|
|
54
|
+
4. Submit. The app writes `.specrails/install-config.yaml` and spawns
|
|
55
|
+
`npx --yes --prefer-online specrails-core@^4.8.0 init --yes --from-config <file>`.
|
|
56
|
+
The install produces the `.gemini/` artifacts (commands + `sr-*` agents),
|
|
57
|
+
plus a `GEMINI.md` instructions file.
|
|
58
|
+
|
|
59
|
+
The provider **set** you choose is **immutable after creation** — you can't
|
|
60
|
+
add or remove a provider on an existing project. Install everything you may
|
|
61
|
+
want up front.
|
|
62
|
+
|
|
63
|
+
## Using Gemini (per-spec and per-rail)
|
|
64
|
+
|
|
65
|
+
When more than one provider is installed, **per-invocation engine pickers**
|
|
66
|
+
let you choose which CLI runs each piece of work:
|
|
67
|
+
|
|
68
|
+
- **Per spec:** Dashboard → **+ Add Spec** → the engine selector at the top
|
|
69
|
+
of the dialog → choose **Gemini**. The Explore/Quick session then runs on
|
|
70
|
+
Gemini.
|
|
71
|
+
- **Per rail:** open a rail's header → the **engine selector** → choose
|
|
72
|
+
**Gemini** → **Launch**. The rail job spawns `gemini` headlessly.
|
|
73
|
+
- **In the terminal:** the **Open AI CLI** (Sparkles) button → pick
|
|
74
|
+
**Gemini** to launch an interactive `gemini` session in the project dir.
|
|
75
|
+
|
|
76
|
+
Your last-used engine is remembered per project (defaulting to the primary),
|
|
77
|
+
so you don't have to re-pick every time. On a single-provider Gemini project
|
|
78
|
+
these pickers don't render — there's nothing to choose.
|
|
79
|
+
|
|
80
|
+
## Running multiple providers in one project
|
|
81
|
+
|
|
82
|
+
A single project can install **Claude, Codex, and Gemini** in any
|
|
83
|
+
combination. In **Add Project** the **AI providers** control is a
|
|
84
|
+
multi-select; check the ones you want and the app runs each provider's
|
|
85
|
+
install sequentially. The first you select is the **primary/default**.
|
|
86
|
+
|
|
87
|
+
Once more than one is installed:
|
|
88
|
+
|
|
89
|
+
- **Engine pickers** (above) appear on Add Spec, the rail header, and the
|
|
90
|
+
terminal launcher.
|
|
91
|
+
- **Capability intersection.** The right sidebar only shows sections that
|
|
92
|
+
*every* installed provider supports. Because Gemini and Codex have no
|
|
93
|
+
agent profiles, the **Agents** section is **hidden** on a mixed project.
|
|
94
|
+
The **Integrations** section stays visible (it hosts the
|
|
95
|
+
provider-agnostic Jira card); only the Serena **plugin** entry inside it
|
|
96
|
+
is filtered per-provider. In the Add Spec dialog, the SMASH and Contract
|
|
97
|
+
Layer options are hidden when the selected engine is Gemini.
|
|
98
|
+
|
|
99
|
+
When only one provider is installed the app behaves byte-identically to a
|
|
100
|
+
single-provider project — no engine pickers, no provider persisted on spawns.
|
|
43
101
|
|
|
44
102
|
## What's different vs Claude
|
|
45
103
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
104
|
+
| Capability | Claude | Codex | Gemini |
|
|
105
|
+
|---|---|---|---|
|
|
106
|
+
| **CLI / project dir** | `claude` / `.claude/` | `codex` / `.codex/` | `gemini` / `.gemini/` |
|
|
107
|
+
| **Instructions file** | `CLAUDE.md` | `AGENTS.md` | `GEMINI.md` |
|
|
108
|
+
| **Native cost report** | ✅ `total_cost_usd` | ❌ estimated | ❌ estimated |
|
|
109
|
+
| **Native OTEL** | ✅ | 🔧 synthesized by the app | ✅ native (no bridge) |
|
|
110
|
+
| **`--system-prompt` flag** | ✅ | ❌ folded into prompt | ❌ folded into prompt |
|
|
111
|
+
| **Rails pipeline** | ✅ | ✅ | ✅ |
|
|
112
|
+
| **Ultracode rails** | ✅ | ❌ Claude-only | ❌ Claude-only |
|
|
113
|
+
| **Agent profiles on rails** | ✅ | ❌ forced legacy | ❌ forced legacy |
|
|
114
|
+
| **SMASH / Contract Refine** | ✅ | ❌ Claude-only | ❌ Claude-only |
|
|
115
|
+
| **Plugins (Serena)** | ✅ | ❌ | ✅ |
|
|
116
|
+
|
|
117
|
+
A few of these deserve a fuller explanation:
|
|
118
|
+
|
|
119
|
+
- **Cost is estimated, not native.** Gemini reports token counts (including
|
|
120
|
+
cached) but no USD cost in its stream, so Specrails estimates the cost from
|
|
121
|
+
a rate card (`server/pricing.ts`, keys `gemini:<model>`). Estimated rows
|
|
122
|
+
show a `~` prefix on the Analytics page.
|
|
123
|
+
- **OTEL is native.** Like Claude, Gemini honours the standard `OTEL_*`
|
|
124
|
+
telemetry env vars, so QueueManager injects the same telemetry env
|
|
125
|
+
(`buildTelemetryEnv`) for Gemini rail spawns — no synthetic bridge (unlike
|
|
126
|
+
Codex). There is no Gemini-specific OTEL env builder.
|
|
51
127
|
- **System prompt is folded.** Gemini has no `--system-prompt` flag, so for
|
|
52
|
-
non-Explore actions the system prompt is folded into the user prompt.
|
|
53
|
-
turns stay user-only and trust the app-managed `GEMINI.md` in the
|
|
54
|
-
|
|
55
|
-
|
|
128
|
+
non-Explore actions the system prompt is folded into the user prompt.
|
|
129
|
+
Explore turns stay user-only and trust the app-managed `GEMINI.md` in the
|
|
130
|
+
explore cwd.
|
|
131
|
+
- **Agent profiles aren't selectable for Gemini rails.** The rails router
|
|
132
|
+
forces the profile to `null` (legacy mode) for any non-Claude engine. (UI
|
|
133
|
+
limitation: the rail header may still render a profile picker for a Gemini
|
|
134
|
+
rail, but the server ignores the selection.)
|
|
135
|
+
- **Plugins do work.** Unlike Codex, Gemini uses `project-json` MCP
|
|
136
|
+
registration (like Claude), so `project-json` plugins such as **Serena**
|
|
137
|
+
load for Gemini rails.
|
|
138
|
+
|
|
139
|
+
## How rails work headlessly (`prepareHeadlessSpawn`)
|
|
140
|
+
|
|
141
|
+
Rails run `gemini -p` in headless mode. Gemini *discovers*
|
|
142
|
+
`<project>/.gemini/agents/*.md` but only *enables* a project's custom
|
|
143
|
+
subagents after an interactive "New Agents Discovered → Acknowledge and
|
|
144
|
+
Enable" prompt — which never fires in a headless spawn. Without
|
|
145
|
+
acknowledgment, `invoke_agent sr-architect` returns "Subagent not found" and
|
|
146
|
+
the pipeline silently falls back to a generic agent.
|
|
147
|
+
|
|
148
|
+
The Gemini adapter implements a unique `prepareHeadlessSpawn` hook
|
|
149
|
+
(`server/providers/gemini-agent-ack.ts`) that QueueManager calls right before
|
|
150
|
+
each Gemini rail spawn. It writes the acknowledgment file
|
|
151
|
+
(`~/.gemini/acknowledgments/agents.json`, keyed by project root, value =
|
|
152
|
+
sha256 of each agent's markdown) so the specialised `sr-architect` /
|
|
153
|
+
`sr-developer` / `sr-reviewer` personas load in headless mode. This is the
|
|
154
|
+
load-bearing mechanic that makes the rails pipeline actually work on Gemini.
|
|
155
|
+
It's best-effort and merged, so other projects and agents are never disturbed.
|
|
56
156
|
|
|
57
157
|
## Models
|
|
58
158
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
159
|
+
The curated catalog (`server/providers/gemini-adapter.ts`) is:
|
|
160
|
+
|
|
161
|
+
- **`gemini-3.5-flash`** — the default.
|
|
162
|
+
- `gemini-3.1-pro-preview`
|
|
163
|
+
- `gemini-3.1-flash-lite`
|
|
164
|
+
- `gemini-2.5-flash-lite`
|
|
165
|
+
|
|
166
|
+
Concrete GA ids are pinned (preview ids rotate). Free-tier API keys serve the
|
|
167
|
+
Flash models; Pro/preview need billing.
|
|
168
|
+
|
|
169
|
+
> A few older ids (`gemini-2.5-pro`, `gemini-2.5-flash`, `gemini-3-flash-preview`)
|
|
170
|
+
> are **not** selectable models. They survive only as historic pricing rows in
|
|
171
|
+
> `server/pricing.ts` so that already-recorded invocations on those models still
|
|
172
|
+
> price correctly.
|
|
63
173
|
|
|
64
174
|
## Trusted folders (headless)
|
|
65
175
|
|
|
66
|
-
Gemini's "trusted folders" gate silently overrides `--yolo` back to
|
|
67
|
-
blocking *every* tool call — in a directory it doesn't trust.
|
|
68
|
-
`GEMINI_CLI_TRUST_WORKSPACE=true` into every Gemini spawn
|
|
69
|
-
`spawnGemini`) so headless rails
|
|
70
|
-
from you
|
|
176
|
+
Gemini's "trusted folders" gate silently overrides `--yolo` back to
|
|
177
|
+
`default` — blocking *every* tool call — in a directory it doesn't trust.
|
|
178
|
+
Specrails injects `GEMINI_CLI_TRUST_WORKSPACE=true` into every Gemini spawn
|
|
179
|
+
(`server/util/cli-prompt.ts`, `spawnGemini`) so headless rails and Explore
|
|
180
|
+
turns can actually run tools. **No action is needed from you.**
|
|
71
181
|
|
|
72
182
|
## Troubleshooting
|
|
73
183
|
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
184
|
+
**"Gemini" never appears in Add Project** — `gemini` isn't on `PATH`, or the
|
|
185
|
+
emergency rollback is active (`SPECRAILS_GEMINI_BETA=0`). Check
|
|
186
|
+
`GET /api/available-providers`; install the CLI and restart the app so PATH
|
|
187
|
+
refreshes if needed.
|
|
188
|
+
|
|
189
|
+
**"gemini 0.10.0 is older than required 0.11.0"** — upgrade with
|
|
190
|
+
`npm i -g @google/gemini-cli`. Earlier versions lack the stream-json and
|
|
191
|
+
headless resume support the app relies on.
|
|
192
|
+
|
|
193
|
+
**Tools never run / a job does nothing** — almost always auth or trust.
|
|
194
|
+
Confirm `GEMINI_API_KEY` is set in the server env; the trust var is handled
|
|
195
|
+
automatically.
|
|
196
|
+
|
|
197
|
+
**A rail's agents don't specialise (`Subagent not found`)** — the project's
|
|
198
|
+
`.gemini/agents/*.md` weren't acknowledged. This is normally handled
|
|
199
|
+
automatically by `prepareHeadlessSpawn` (above); make sure the project was
|
|
200
|
+
installed with `specrails-core` ≥ 4.8.0 so the `.gemini/` agents exist.
|
|
201
|
+
|
|
202
|
+
**`limit: 0` / quota errors on Pro** — free-tier API keys don't serve Pro or
|
|
203
|
+
preview models; use a Flash model or enable billing.
|
|
204
|
+
|
|
205
|
+
**Cost shows `—`** — there's no `gemini:<model>` pricing row for the model
|
|
206
|
+
that ran (e.g. a brand-new model Google shipped after our last review). Cost
|
|
207
|
+
estimation fails soft (it returns nothing rather than guessing). Add a row to
|
|
208
|
+
`server/pricing.ts` and reload.
|
|
82
209
|
|
|
83
210
|
## Emergency rollback
|
|
84
211
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
212
|
+
To disable the Gemini path, set `SPECRAILS_GEMINI_BETA=0` in the app's
|
|
213
|
+
environment. For a source checkout that's:
|
|
214
|
+
|
|
215
|
+
```bash
|
|
216
|
+
SPECRAILS_GEMINI_BETA=0 npm run dev
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
For the packaged desktop app, set the variable in the environment the app
|
|
220
|
+
process inherits. Only the exact string `0` disables Gemini — `1`, `true`,
|
|
221
|
+
and unset all mean enabled.
|
|
222
|
+
|
|
223
|
+
With it set, `GET /api/available-providers` reports `gemini: false` and
|
|
224
|
+
`POST /api/projects` refuses new Gemini projects. Existing non-Gemini projects
|
|
225
|
+
are unaffected; the adapter stays registered but dormant.
|
|
88
226
|
|
|
89
227
|
## Architecture pointers (for specrails-desktop developers)
|
|
90
228
|
|
|
91
|
-
- Adapter
|
|
92
|
-
`nativeOtelEnv:true`, `systemPromptArg:false`, `
|
|
93
|
-
`mcpRegistration:'project-json'
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
`
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
-
|
|
229
|
+
- **Adapter:** `server/providers/gemini-adapter.ts` (`nativeCostUsd: false`,
|
|
230
|
+
`nativeOtelEnv: true`, `systemPromptArg: false`, `profileEnvSupport: true`,
|
|
231
|
+
`instructionsFilename: 'GEMINI.md'`, `mcpRegistration: 'project-json'`,
|
|
232
|
+
`minCliVersion: '0.11.0'`). Registered in `server/providers/index.ts`.
|
|
233
|
+
- **Headless subagent ack:** `server/providers/gemini-agent-ack.ts`
|
|
234
|
+
(`acknowledgeGeminiProjectAgents`), wired as the adapter's
|
|
235
|
+
`prepareHeadlessSpawn` and called by `server/queue-manager.ts` before each
|
|
236
|
+
rail spawn.
|
|
237
|
+
- **Stream schema** (pinned to the gemini-cli 0.11 contract, locked by the
|
|
238
|
+
fixtures under `server/providers/__fixtures__/gemini-*.ndjson`):
|
|
239
|
+
`init{session_id,model}` / `message{role,content,delta}` /
|
|
240
|
+
`tool_use{tool_name,tool_id,parameters}` / `tool_result` / `result{stats}`.
|
|
241
|
+
`stats.input_tokens` includes `stats.cached`.
|
|
242
|
+
- **Beta gate + provider list:** `server/desktop-router.ts`
|
|
243
|
+
(`isGeminiBetaDisabled` — returns `true` only when
|
|
244
|
+
`SPECRAILS_GEMINI_BETA === '0'`; `/available-providers`, `POST /projects`).
|
|
245
|
+
- **Pricing / cost estimation:** `server/pricing.ts` (`gemini:<model>` rows +
|
|
246
|
+
`estimateCostUsd`, which returns `null` when no row matches).
|
|
247
|
+
- **Trust-folder env:** `server/util/cli-prompt.ts`, `spawnGemini`.
|
|
100
248
|
|
|
101
249
|
## See also
|
|
102
250
|
|
|
103
|
-
- [`docs/codex.md`](./codex.md) — the Codex provider (the other
|
|
104
|
-
|
|
105
|
-
- [
|
|
106
|
-
|
|
251
|
+
- [`docs/codex.md`](./codex.md) — the Codex provider (the other provider with
|
|
252
|
+
estimated cost).
|
|
253
|
+
- [Adding a provider](internals/adding-a-provider.md) — the developer guide to
|
|
254
|
+
wiring a new AI CLI adapter (Gemini is the freshest worked example).
|
|
255
|
+
- [`docs/gemini-cli-provider-study.md`](./gemini-cli-provider-study.md) — the
|
|
256
|
+
original design study.
|
|
257
|
+
- [`docs/gemini-core-support-evaluation.md`](./gemini-core-support-evaluation.md)
|
|
258
|
+
— the rails/core support work.
|
package/docs/getting-started.md
CHANGED
|
@@ -4,7 +4,7 @@ This guide walks you from "I just heard about specrails-desktop" to "I just ship
|
|
|
4
4
|
|
|
5
5
|
## What you'll need
|
|
6
6
|
|
|
7
|
-
- **An AI CLI signed in** —
|
|
7
|
+
- **An AI CLI signed in** — [Claude Code](https://claude.com/claude-code) (via Claude subscription login or an `ANTHROPIC_API_KEY`), the [Codex CLI](codex.md) (`codex` ≥ 0.128.0), or the [Gemini CLI](gemini.md) (`gemini` ≥ 0.11.0, with `GEMINI_API_KEY` set). You can mix and match — install Claude, Codex, Gemini, or any combination.
|
|
8
8
|
- A project you want to work on (any Git repository works)
|
|
9
9
|
|
|
10
10
|
If you install with **npm** (Option 2 below) you'll also need **Node.js 20+** and **`git`** on your PATH. The **desktop app** bundles its own Node and Git runtimes, so you don't need those installed separately.
|
|
@@ -22,7 +22,7 @@ Download a signed build for your OS from `https://specrails.dev/downloads/specra
|
|
|
22
22
|
- **macOS** — `specrails-desktop-<version>-aarch64.dmg` (Apple Silicon, notarised)
|
|
23
23
|
- **Windows** — `specrails-desktop-<version>-x64-setup.exe` (NSIS) or `.msi`
|
|
24
24
|
|
|
25
|
-
Open the installer, drag to Applications (macOS) or click through the wizard (Windows). The app bundles the server, so you don't need a separate process.
|
|
25
|
+
Open the installer, drag to Applications (macOS) or click through the wizard (Windows). The app bundles the server, so you don't need a separate process. The desktop app resolves your PATH for you at startup — no manual Homebrew/Volta/nvm setup needed — see [platforms/macos.md](platforms/macos.md) if anything looks off.
|
|
26
26
|
|
|
27
27
|
> First Windows launch shows a SmartScreen warning until the installer is code-signed. Click **More info → Run anyway**. Details and hash-verification steps in [platforms/windows.md](platforms/windows.md).
|
|
28
28
|
|
|
@@ -43,7 +43,7 @@ There are two ways. Pick whichever feels natural.
|
|
|
43
43
|
|
|
44
44
|
1. Click **+** in the left sidebar.
|
|
45
45
|
2. Enter the absolute path to your project (e.g. `/Users/you/repos/my-app`).
|
|
46
|
-
3. Pick your **AI providers**. Check **Claude**, **Codex**, or
|
|
46
|
+
3. Pick your **AI providers**. Check **Claude**, **Codex**, **Gemini**, or any combination — the first one in the list (Claude, then Codex, then Gemini) that you check becomes the project default. The provider set is fixed once the project is created.
|
|
47
47
|
4. The prerequisites panel verifies `node`, `npm`, `npx`, `git`. If anything's missing, the panel surfaces OS-aware install commands you can copy.
|
|
48
48
|
5. Click **Add**.
|
|
49
49
|
|
|
@@ -54,12 +54,14 @@ specrails-desktop add /path/to/your/project
|
|
|
54
54
|
specrails-desktop list # verify
|
|
55
55
|
```
|
|
56
56
|
|
|
57
|
+
> Heads-up: if you run a spec from the CLI while no app server is running, the offline fallback always invokes `claude` — regardless of the project's primary provider — and records nothing to Analytics. Start the app (or `specrails-desktop start`) to use Codex or Gemini and to capture cost tracking.
|
|
58
|
+
|
|
57
59
|
### If the project doesn't have specrails-core yet
|
|
58
60
|
|
|
59
61
|
The setup wizard runs automatically. Three steps:
|
|
60
62
|
|
|
61
63
|
1. **Configure** — choose which agents to install (the baseline trio `sr-architect`, `sr-developer`, `sr-reviewer` is always selected; optional agents like Test Writer or Security Reviewer are opt-in). Pick a model preset (Balanced / Budget / Max) and optionally override the model per agent.
|
|
62
|
-
2. **Install** — the app runs the installer (`npx specrails-core
|
|
64
|
+
2. **Install** — the app runs the installer (`npx --yes --prefer-online specrails-core@^4.8.0 init --yes --from-config <config>`) non-interactively and streams the output live. The version is pinned to the core release the app ships with — it never silently jumps to a new major.
|
|
63
65
|
3. **Done** — a summary tells you how many agents and commands landed. Click **Continue to project**.
|
|
64
66
|
|
|
65
67
|
That's the whole onboarding. No tier picker, no second wizard. You can manage agents and their per-agent models later from the **Agents** page (Profiles tab).
|
|
@@ -74,7 +76,7 @@ When you already know what you want:
|
|
|
74
76
|
|
|
75
77
|
1. On the Dashboard, click **+ Add Spec → Quick**.
|
|
76
78
|
2. Type a one-line title (e.g. *"Add a webhook retry with exponential backoff"*).
|
|
77
|
-
3. (Optional) toggle **Enrich with Contract Layer** to get a structured block of names, data shapes, invariants, and a file touch list appended to the description.
|
|
79
|
+
3. (Optional) toggle **Enrich with Contract Layer** to get a structured block of names, data shapes, invariants, and a file touch list appended to the description. (Contract Layer enrichment is a Claude-only feature — on Codex and Gemini projects the toggle is shown but the refinement step is skipped.)
|
|
78
80
|
4. Hit Enter.
|
|
79
81
|
|
|
80
82
|
Your AI CLI generates the full spec in one turn. A small toast at the bottom right shows the project, the spec title, and live elapsed time ("Generating… 0:12") — it turns into a success or failure toast (with a **View** action) when generation finishes.
|
|
@@ -113,6 +115,7 @@ Token usage, duration, and cost are tracked per turn and surface in:
|
|
|
113
115
|
- **[Running pipelines](running-pipelines.md)** — agent profiles, plugins (Serena), telemetry export.
|
|
114
116
|
- **[Tracking cost](tracking-cost.md)** — analytics deep dive and CSV exports.
|
|
115
117
|
- **[Codex](codex.md)** — using the Codex CLI as a provider, alongside or instead of Claude.
|
|
118
|
+
- **[Gemini](gemini.md)** — using the Gemini CLI as a provider, alongside or instead of Claude.
|
|
116
119
|
- **[Terminal panel](terminal.md)** — the built-in per-project terminal (toggle with `Cmd/Ctrl+J`).
|
|
117
120
|
- **[Customising the app](customizing.md)** — themes, terminal settings, kill switches.
|
|
118
121
|
- **[CLI reference](cli.md)** — drive specrails-desktop from the terminal.
|
|
@@ -127,13 +130,19 @@ specrails-desktop stop # stops the running server cleanly
|
|
|
127
130
|
lsof -i :4200 # macOS / Linux
|
|
128
131
|
```
|
|
129
132
|
|
|
130
|
-
**
|
|
133
|
+
**Your AI CLI (`claude`, `codex`, or `gemini`) isn't found inside the app**
|
|
134
|
+
|
|
135
|
+
On macOS, this usually means the app was launched from Finder/Dock and didn't pick up Homebrew/Volta paths. The app resolves PATH at startup automatically, but if it still fails, see [platforms/macos.md](platforms/macos.md).
|
|
136
|
+
|
|
137
|
+
**The setup wizard fails on `npx specrails-core init`**
|
|
131
138
|
|
|
132
|
-
|
|
139
|
+
Most likely Node is missing from the shell environment that launched the app, or whichever AI CLI your project uses isn't authenticated:
|
|
133
140
|
|
|
134
|
-
**
|
|
141
|
+
- **Claude** — sign in to the `claude` CLI or set `ANTHROPIC_API_KEY`.
|
|
142
|
+
- **Codex** — sign in to the `codex` CLI.
|
|
143
|
+
- **Gemini** — make sure `gemini` is on your PATH and `GEMINI_API_KEY` is set (headless spawns can't use the interactive "Login with Google" flow).
|
|
135
144
|
|
|
136
|
-
|
|
145
|
+
Click **Copy diagnostics** in the install-instructions modal — that prints the resolved PATH, where the app found each tool, and login-shell status. Paste it into a bug report if you can't figure it out.
|
|
137
146
|
|
|
138
147
|
**More**
|
|
139
148
|
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# Die Agents im Überblick
|
|
2
|
+
|
|
3
|
+
Wenn du eine **Implement**-Rail startest, übergibt Specrails deine Spec nicht einfach einer einzigen KI und hofft auf das Beste. Stattdessen arbeitet ein kleines Team spezialisierter *Agents*, jeder mit einer einzigen Aufgabe und in einer bewusst gewählten Reihenfolge. Diese Seite stellt dir vor, wer zu diesem Team gehört und was jeder Einzelne tut.
|
|
4
|
+
|
|
5
|
+
## Das Basis-Trio
|
|
6
|
+
|
|
7
|
+
Jeder Pipeline-Durchlauf nutzt diese drei Agents – sie bilden das Rückgrat, und ohne sie kann ein Projekt keine Rail starten.
|
|
8
|
+
|
|
9
|
+
| Agent | Rolle | Aufgabe |
|
|
10
|
+
|-------|------|--------------|
|
|
11
|
+
| **sr-architect** | Der Planer | Liest deine Spec, inspiziert die Codebasis und erstellt einen konkreten Umsetzungsplan – welche Dateien angefasst werden, welche Form die Änderung annimmt und worauf zu achten ist. Er denkt nach, bevor irgendjemand Code schreibt. |
|
|
12
|
+
| **sr-developer** | Der Umsetzer | Nimmt den Plan des Architekten und schreibt den Code tatsächlich: neue Dateien, Änderungen, Tests. Hier wird aus deiner Spec ein echtes Diff. |
|
|
13
|
+
| **sr-reviewer** | Der Kritiker | Prüft die Arbeit des Developers gegen Spec und Plan, findet Regressionen und meldet sich, wenn etwas nicht stimmt. Er ist das Qualitätstor, bevor die Änderung als fertig gilt. |
|
|
14
|
+
|
|
15
|
+
Stell es dir als **Design → Build → Review** vor – derselbe Ablauf, dem auch ein sorgfältiges menschliches Team folgen würde. Jeder Agent übergibt sein Ergebnis an den nächsten, sodass der Developer nie blind arbeitet und der Reviewer stets die ursprüngliche Absicht zum Abgleich hat.
|
|
16
|
+
|
|
17
|
+
## Spezialisten-Agents
|
|
18
|
+
|
|
19
|
+
Über das Trio hinaus kann ein Projekt optionale **Spezialisten-Agents** enthalten, die bestimmte Arten von Arbeit übernehmen. Der häufigste, der dir begegnet, ist:
|
|
20
|
+
|
|
21
|
+
- **sr-merge-resolver** – ein Hilfs-Agent, der dabei hilft, Merge-Konflikte zu entwirren und sich überschneidende Änderungen in Einklang zu bringen. Er ist optional: Profile binden ihn nur ein, wenn du es möchtest, und er blockiert die Pipeline nie, wenn er fehlt.
|
|
22
|
+
|
|
23
|
+
Spezialisten sind opt-in. Ein frisches Projekt läuft nur mit dem Trio; Spezialisten (und deine eigenen **Custom-Agents** – siehe [Custom-Agents & der Katalog](custom-agents-catalog)) fügst du hinzu, wenn der Workflow eines Projekts danach verlangt.
|
|
24
|
+
|
|
25
|
+
## Wie Aufgaben zum richtigen Agent gelangen
|
|
26
|
+
|
|
27
|
+
Innerhalb eines Durchlaufs wird Arbeit *geroutet*. Eine Aufgabe trägt Tags, und die Routing-Regeln eines Profils schicken getaggte Aufgaben an den am besten geeigneten Agent – mit einer abschließenden Auffangregel, die alles Übrige an den Developer leitet. Für den normalen Gebrauch musst du dir darüber keine Gedanken machen; das Standardsetup routet von Haus aus alles sinnvoll. Wenn du bereit bist, bestimmte Arten von Arbeit an bestimmte Agents zu lenken, schau dir [Modelle pro Agent anpassen](customizing-models-per-agent) an.
|
|
28
|
+
|
|
29
|
+
## Eine wichtige Idee vorab
|
|
30
|
+
|
|
31
|
+
Die *Definition* jedes Agents – seine Anweisungen, seine Persönlichkeit, was er darf – ist **geteilt**. Sie lebt als Datei (`.claude/agents/<id>.md`), die mit deinem Repository mitreist, sodass dein ganzes Team denselben Architekten und denselben Reviewer nutzt.
|
|
32
|
+
|
|
33
|
+
Was **pro Projekt** gilt, ist die *Konfiguration* darüber: mit welchem Modell jeder Agent läuft und welche Kombination von Agents du für eine bestimmte Rail wählst. Genau dafür sind Profile da – und das ist die nächste Seite.
|
|
34
|
+
|
|
35
|
+
## Wie es weitergeht
|
|
36
|
+
|
|
37
|
+
- [Profile & der ausgewogene Standard](profiles-and-the-balanced-default) – wie das Setup des Teams verpackt und ausgewählt wird.
|
|
38
|
+
- [Modelle pro Agent anpassen](customizing-models-per-agent) – Kosten und Qualität feinjustieren.
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# Profile & der ausgewogene Standard
|
|
2
|
+
|
|
3
|
+
Ein **Profil** ist ein gespeichertes Rezept für einen Pipeline-Durchlauf. Es beantwortet drei Fragen an einem Ort:
|
|
4
|
+
|
|
5
|
+
1. **Welche Agents** mitwirken (das Basis-Trio plus etwaige Spezialisten oder Custom-Agents).
|
|
6
|
+
2. **Mit welchem Modell** jeder Agent läuft.
|
|
7
|
+
3. **Wie Aufgaben** an diese Agents geroutet werden.
|
|
8
|
+
|
|
9
|
+
Du findest Profile im Bereich **Agents** jedes Projekts (rechte Seitenleiste → **Agents** → Tab **Profile**).
|
|
10
|
+
|
|
11
|
+
## Der ausgewogene Standard
|
|
12
|
+
|
|
13
|
+
Von Haus aus löst ein Projekt auf ein sinnvolles **default**-Profil auf. Es enthält das Basis-Trio – `sr-architect`, `sr-developer`, `sr-reviewer` – und routet über eine einzige Auffangregel jede Aufgabe an den Developer. Die Modelle sind für den Alltag ausgewogen: ein leistungsfähiges Modell dort, wo es zählt, ohne bei jedem Schritt zur teuersten Option zu greifen.
|
|
14
|
+
|
|
15
|
+
Falls dein Projekt die Agent-Modelle bereits auf die alte Weise konfiguriert hatte (in der Frontmatter der Agent-Dateien), liest der **Migrieren**-Button diese aus und baut ein `default`-Profil, das das heutige Verhalten exakt abbildet – verlustfrei, nichts ändert sich, bis du dich entscheidest, daran zu drehen.
|
|
16
|
+
|
|
17
|
+
Die Kernaussage: **Du musst kein Profil erstellen, um Specrails zu nutzen.** Der Standard funktioniert einfach. Profile sind der Weg, weiterzugehen.
|
|
18
|
+
|
|
19
|
+
## Wie ein Profil für einen Durchlauf gewählt wird
|
|
20
|
+
|
|
21
|
+
Wenn du eine Rail startest, wählt Specrails ein Profil in dieser Reihenfolge:
|
|
22
|
+
|
|
23
|
+
1. **Deine ausdrückliche Wahl** im Rail-Header (siehe unten).
|
|
24
|
+
2. Deine **persönliche Vorgabe** – ein Profil, das du als deinen persönlichen Standard für dieses Projekt markiert hast (sie ist lokal bei dir und wird nicht committet).
|
|
25
|
+
3. Das **`default`**-Profil des Projekts.
|
|
26
|
+
|
|
27
|
+
Das Profil wird *beim Start als Snapshot festgehalten*, sodass jede Rail in einem Batch ein anderes Profil ausführen kann und das spätere Ändern eines Profils nie bereits gestartete Jobs umschreibt.
|
|
28
|
+
|
|
29
|
+
## Ein Profil pro Rail auswählen
|
|
30
|
+
|
|
31
|
+
Die Profilwahl passiert genau dort, wo du startest – im **Rail-Header**, über den Profil-Selektor.
|
|
32
|
+
|
|
33
|
+
- Wähle ein Profil aus dem Dropdown, um es **nur für diesen Start** zu verwenden.
|
|
34
|
+
- Nutze die Option zum Festschreiben, um ein Profil künftig zur dauerhaften Wahl der Rail zu machen.
|
|
35
|
+
|
|
36
|
+
Das ist der ganze Ablauf: Profil wählen, starten, fertig. Gleichzeitig laufende Rails im selben Batch können jeweils ihr eigenes Profil tragen, sodass ein schneller Fix und ein umfangreiches Feature mit unterschiedlichen Setups nebeneinander laufen können.
|
|
37
|
+
|
|
38
|
+
## Wenn der Agents-Bereich still ist
|
|
39
|
+
|
|
40
|
+
Profile sind eine Claude-Fähigkeit. Bei einem Projekt, das einen Nicht-Claude-Provider (Codex oder Gemini) enthält, ist der Agents-Bereich ausgeblendet und Rails laufen ohne Profile – das ist so gewollt, kein Fehler. Außerdem setzen Profile ein hinreichend aktuelles `specrails-core` im Projekt voraus; ist es älter, siehst du ein gelbes Banner. Die von dir erstellten Profile werden trotzdem **gespeichert** – sie wirken sich nur erst auf die Pipeline aus, wenn core aktualisiert ist. Aktualisiere mit dem im Banner gezeigten Befehl, um sie freizuschalten.
|
|
41
|
+
|
|
42
|
+
## Wie es weitergeht
|
|
43
|
+
|
|
44
|
+
- [Modelle pro Agent anpassen](customizing-models-per-agent) – `fast`- und `max`-Profile bauen.
|
|
45
|
+
- [Custom-Agents & der Katalog](custom-agents-catalog) – das Team ansehen und erweitern.
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# Modelle pro Agent anpassen
|
|
2
|
+
|
|
3
|
+
Das Nützlichste, was Profile dir ermöglichen, ist, **für jeden Schritt das richtige Modell zu wählen**. Ein Planungsschritt verdient vielleicht dein stärkstes Modell; ein routinemäßiger Build-Schritt ist mit etwas Schnellerem und Günstigerem womöglich vollkommen zufrieden. Profile lassen dich genau das ausdrücken.
|
|
4
|
+
|
|
5
|
+
Hier zahlt sich die Trennung von Geteiltem und Projektbezogenem aus:
|
|
6
|
+
|
|
7
|
+
- Die Agent-*Definitionen* bleiben in deinem Team geteilt.
|
|
8
|
+
- Das *Modell, mit dem jeder Agent läuft*, wird **pro Projekt** innerhalb eines Profils konfiguriert und wirkt sich nur auf dein Projekt aus.
|
|
9
|
+
|
|
10
|
+
Änderst du ein Modell, änderst du Kosten und Verhalten für dieses Projekt – ohne das Setup von irgendwem sonst oder die zugrunde liegenden Anweisungen des Agents anzufassen.
|
|
11
|
+
|
|
12
|
+
## Das Modell eines Agents ändern
|
|
13
|
+
|
|
14
|
+
Wähle unter **Agents → Profile** ein Profil aus und öffne seinen Agent-Ketten-Editor. Jeder Agent in der Kette hat ein Modellfeld. Zusätzlich gibt es ein **Orchestrator**-Modell, das die übergeordnete Koordination der Pipeline übernimmt.
|
|
15
|
+
|
|
16
|
+
Die Modellwerte sind Aliasse – für Claude sind das `opus`, `sonnet` und `haiku` (am leistungsfähigsten → am schnellsten). Setze pro Agent den gewünschten Alias:
|
|
17
|
+
|
|
18
|
+
- Lass das Modell eines Agents **leer**, um auf den Standard der Agent-Datei zurückzufallen.
|
|
19
|
+
- Setze es ausdrücklich, um es nur für dieses Profil zu überschreiben.
|
|
20
|
+
|
|
21
|
+
Speichere, und die nächste mit diesem Profil gestartete Rail nutzt die neuen Modelle. Bereits laufende Jobs behalten ihren Snapshot.
|
|
22
|
+
|
|
23
|
+
## Profile wie `fast` und `max` erstellen
|
|
24
|
+
|
|
25
|
+
Das naheliegende Muster sind ein paar benannte Profile, zu denen du je nach Aufgabe greifst:
|
|
26
|
+
|
|
27
|
+
**Ein `fast`-Profil** – für kleine, risikoarme Änderungen, bei denen du Tempo und eine kleinere Rechnung willst:
|
|
28
|
+
|
|
29
|
+
- Architect: ein mittleres oder schnelles Modell – der Plan ist einfach.
|
|
30
|
+
- Developer: ein schnelles Modell – die Änderung ist mechanisch.
|
|
31
|
+
- Reviewer: halte ihn solide, aber du kannst auch hier abspecken.
|
|
32
|
+
|
|
33
|
+
**Ein `max`-Profil** – für knifflige Features mit hohem Einsatz, bei denen jeder Schritt so scharf wie möglich sein soll:
|
|
34
|
+
|
|
35
|
+
- Architect, Developer und Reviewer: durchweg dein stärkstes Modell.
|
|
36
|
+
|
|
37
|
+
### Zwei Wege, eines zu bauen
|
|
38
|
+
|
|
39
|
+
1. **Duplizieren und anpassen** *(empfohlen).* Wähle dein `default`-Profil, **dupliziere** es, gib der Kopie einen kebab-case-Namen wie `fast` oder `max` und passe dann das Modell jedes Agents an. Du erbst eine bewährte Kette samt Routing und änderst nur, was du auch ändern willst.
|
|
40
|
+
2. **Leer starten.** Erstelle ein **leeres Profil** und stelle die Kette selbst zusammen. Du musst trotzdem das Basis-Trio (`sr-architect`, `sr-developer`, `sr-reviewer`) einbinden – die Pipeline hängt von allen dreien ab – sowie genau eine abschließende Auffang-Routing-Regel, die als Letztes stehen muss.
|
|
41
|
+
|
|
42
|
+
Profilnamen sind in Kleinbuchstaben im kebab-case (z. B. `fast`, `max`, `cheap-and-cheerful`).
|
|
43
|
+
|
|
44
|
+
## Aufgaben an bestimmte Agents routen
|
|
45
|
+
|
|
46
|
+
Die **Routing-Regeln** eines Profils entscheiden, welcher Agent eine getaggte Aufgabe übernimmt. Jede Regel listet Aufgaben-Tags und einen Ziel-Agent auf; die erste Regel, deren Tags passen, gewinnt, und eine einzige `default: true`-Regel am Ende fängt alles Übrige ab. Nur Agents, die tatsächlich in der Kette des Profils stehen, können Routing-Ziele sein – der Editor setzt das durch.
|
|
47
|
+
|
|
48
|
+
Für den Alltag fasst du das Routing nicht an: Die Auffangregel schickt Arbeit an den Developer, und das ist richtig. Greife zu Tag-Regeln, wenn du etwa möchtest, dass mit `migration` getaggte Arbeit an einen Spezialisten geht.
|
|
49
|
+
|
|
50
|
+
## Das Profil beim Start wählen
|
|
51
|
+
|
|
52
|
+
All das kommt beim Start zusammen: Wähle im Rail-Header pro Rail `fast`, `max` oder `default`. Ein Batch kann sie mischen – ein winziger Fix auf `fast`, ein großes Feature auf `max`, beide gleichzeitig laufend. Den Ablauf der Auswahl findest du unter [Profile & der ausgewogene Standard](profiles-and-the-balanced-default).
|
|
53
|
+
|
|
54
|
+
## Eine Anmerkung zur Sicherheit
|
|
55
|
+
|
|
56
|
+
Das Löschen eines Profils ist für laufende Arbeit unbedenklich: Bereits damit gestartete Jobs behalten ihren Snapshot, und künftige Starts fallen einfach durch die Auflösungsreihenfolge zurück. Experimentiere ruhig.
|
|
57
|
+
|
|
58
|
+
## Wie es weitergeht
|
|
59
|
+
|
|
60
|
+
- [Custom-Agents & der Katalog](custom-agents-catalog) – Agents hinzufügen, die du in deine Ketten einbinden kannst.
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# Custom-Agents & der Katalog
|
|
2
|
+
|
|
3
|
+
Profile entscheiden, *welche Agents mit welchen Modellen laufen*. Doch woher kommen die Agents selbst? Aus dem **Agents-Katalog**.
|
|
4
|
+
|
|
5
|
+
Öffne in einem beliebigen Projekt **Agents → Katalog**. Es ist eine schreibgeschützte Ansicht jedes Agents, der diesem Projekt zur Verfügung steht, in zwei Gruppen:
|
|
6
|
+
|
|
7
|
+
- **Upstream-Agents** – die Agents, die mit `specrails-core` ausgeliefert werden: das Basis-Trio (`sr-architect`, `sr-developer`, `sr-reviewer`) und etwaige Spezialisten wie `sr-merge-resolver`.
|
|
8
|
+
- **Custom-Agents** – Agents, die du selbst hinzugefügt hast, benannt als `custom-*`.
|
|
9
|
+
|
|
10
|
+
Jeder Katalogeintrag zeigt, wofür der Agent da ist und welches Standardmodell er nutzt, sodass du die vollständige Aufstellung sehen kannst, bevor du Agents in eine Profil-Kette einbindest.
|
|
11
|
+
|
|
12
|
+
## Einen Custom-Agent hinzufügen
|
|
13
|
+
|
|
14
|
+
Custom-Agents sind schlichte Markdown-Dateien in deinem Repository unter `.claude/agents/`, benannt als `custom-<etwas>.md`. Die Datei enthält die Anweisungen des Agents (seinen System-Prompt) und einen kleinen Frontmatter-Header mit einem Standard-`model:`.
|
|
15
|
+
|
|
16
|
+
Sobald die Datei im Projekt existiert, erscheint sie im Katalog als Custom-Agent, und du kannst ihre id zur Agent-Kette jedes Profils hinzufügen (und Aufgaben an sie routen). Die id muss zum Dateinamen passen – ein Eintrag für `custom-docs` verweist auf `.claude/agents/custom-docs.md`.
|
|
17
|
+
|
|
18
|
+
Weil sie in deinem Repo leben, sind Custom-Agents **committfähige Team-Assets**: Committe die Datei, und dein ganzes Team bekommt den Agent. Das spiegelt die Kernidee, die sich durch den gesamten Agents-Bereich zieht –
|
|
19
|
+
|
|
20
|
+
> **Agent-Definitionen sind geteilt (sie leben im Repo und reisen mit `git` mit). Die Modellkonfiguration ist projektbezogen (sie lebt in Profilen).**
|
|
21
|
+
|
|
22
|
+
Der `custom-*`-Namespace ist reserviert und geschützt: Die Befehle `init` und `update` von `specrails-core` fassen `.claude/agents/custom-*.md` nie an, sodass deine Custom-Agents Core-Upgrades unangetastet überstehen. (Derselbe Schutz gilt für von Plugins beigesteuerte Fragmente wie `custom-serena.md`.)
|
|
23
|
+
|
|
24
|
+
## Einen Custom-Agent einsetzen
|
|
25
|
+
|
|
26
|
+
Der typische Ablauf:
|
|
27
|
+
|
|
28
|
+
1. Schreibe `.claude/agents/custom-<name>.md` mit Anweisungen und einem Standardmodell.
|
|
29
|
+
2. Stelle sicher, dass er unter **Agents → Katalog** im Bereich Custom auftaucht.
|
|
30
|
+
3. Füge den Agent unter **Agents → Profile** zur Kette eines Profils hinzu (und überschreibe optional sein Modell für dieses Profil).
|
|
31
|
+
4. Ergänze eine Routing-Regel, damit Aufgaben mit den passenden Tags ihn erreichen – oder verlasse dich auf die Reihenfolge der Kette.
|
|
32
|
+
5. Starte eine Rail mit diesem Profil aus dem Rail-Header.
|
|
33
|
+
|
|
34
|
+
## Beobachten, wie sich Profile schlagen
|
|
35
|
+
|
|
36
|
+
Der Agents-Bereich hat außerdem einen **Nutzung**-Tab – eine Aufschlüsselung pro Profil, wie viele Jobs in einem gewählten Zeitraum unter jedem Profil liefen. Das ist eine schnelle Möglichkeit zu prüfen, ob deine Aufteilung in `fast`/`max` tatsächlich so genutzt wird, wie du es beabsichtigt hast, und zu erkennen, zu welchem Profil dein Team tendiert.
|
|
37
|
+
|
|
38
|
+
## Zusammenfassung des gesamten Bereichs
|
|
39
|
+
|
|
40
|
+
- **Agents** sind die spezialisierten Teammitglieder – das geteilte Trio plus Spezialisten und deine Custom-Agents. ([Die Agents im Überblick](meet-the-agents))
|
|
41
|
+
- **Profile** bündeln, welche Agents mit welchen Modellen laufen und wie Aufgaben geroutet werden – pro Rail beim Start ausgewählt. Das default-Profil ist die ausgewogene Alltagswahl. ([Profile & der ausgewogene Standard](profiles-and-the-balanced-default))
|
|
42
|
+
- **Modelle** werden pro Agent, pro Projekt, innerhalb von Profilen feinjustiert – baue `fast` und `max`, passend zur Aufgabe. ([Modelle pro Agent anpassen](customizing-models-per-agent))
|
|
43
|
+
- **Der Katalog** zeigt jeden Agent, und der `custom-*`-Namespace lässt dich das Team erweitern – Definitionen geteilt, Konfiguration projektbezogen.
|