@arthai/agents 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +123 -0
- package/VERSION +1 -0
- package/agents/ai-consultant.md +999 -0
- package/agents/architect.md +174 -0
- package/agents/code-reviewer.md +115 -0
- package/agents/competitive-analyst.md +688 -0
- package/agents/content-strategist.md +607 -0
- package/agents/design-studio-create.md +304 -0
- package/agents/design-studio-critique.md +258 -0
- package/agents/design-studio-think.md +79 -0
- package/agents/domain-hunter.md +519 -0
- package/agents/explore-light.md +52 -0
- package/agents/frontend.md +261 -0
- package/agents/gtm-expert.md +811 -0
- package/agents/meeting-prep.md +318 -0
- package/agents/ops.md +149 -0
- package/agents/product-manager.md +563 -0
- package/agents/python-backend.md +286 -0
- package/agents/qa-baseline-updater.md +45 -0
- package/agents/qa-challenger.md +97 -0
- package/agents/qa-domain.md +145 -0
- package/agents/qa-e2e.md +184 -0
- package/agents/qa-test-promoter.md +97 -0
- package/agents/qa.md +226 -0
- package/agents/setup.md +134 -0
- package/agents/sre.md +165 -0
- package/agents/stakeholder-reporter.md +94 -0
- package/agents/user-researcher.md +602 -0
- package/bin/cli.js +322 -0
- package/bundles/canvas.json +16 -0
- package/bundles/compass.json +16 -0
- package/bundles/counsel.json +31 -0
- package/bundles/cruise.json +11 -0
- package/bundles/forge.json +26 -0
- package/bundles/prime.json +10 -0
- package/bundles/prism.json +23 -0
- package/bundles/scalpel.json +17 -0
- package/bundles/sentinel.json +19 -0
- package/bundles/shield.json +14 -0
- package/bundles/spark.json +19 -0
- package/compiler.sh +305 -0
- package/dist/plugins/canvas/.claude-plugin/plugin.json +6 -0
- package/dist/plugins/canvas/agents/design-studio-create.md +304 -0
- package/dist/plugins/canvas/agents/design-studio-critique.md +258 -0
- package/dist/plugins/canvas/agents/design-studio-think.md +79 -0
- package/dist/plugins/canvas/agents/frontend.md +261 -0
- package/dist/plugins/canvas/skills/planning/SKILL.md +436 -0
- package/dist/plugins/compass/.claude-plugin/plugin.json +6 -0
- package/dist/plugins/compass/agents/content-strategist.md +607 -0
- package/dist/plugins/compass/agents/gtm-expert.md +811 -0
- package/dist/plugins/compass/agents/product-manager.md +563 -0
- package/dist/plugins/compass/agents/user-researcher.md +602 -0
- package/dist/plugins/compass/skills/planning/SKILL.md +436 -0
- package/dist/plugins/counsel/.claude-plugin/plugin.json +6 -0
- package/dist/plugins/counsel/agents/ai-consultant.md +999 -0
- package/dist/plugins/counsel/agents/competitive-analyst.md +688 -0
- package/dist/plugins/counsel/agents/meeting-prep.md +318 -0
- package/dist/plugins/counsel/agents/stakeholder-reporter.md +94 -0
- package/dist/plugins/counsel/hooks/check-deliverable.sh +65 -0
- package/dist/plugins/counsel/hooks/ensure-client-dir.sh +59 -0
- package/dist/plugins/counsel/hooks/hooks.json +28 -0
- package/dist/plugins/counsel/skills/client-discovery/SKILL.md +266 -0
- package/dist/plugins/counsel/skills/consulting/SKILL.md +282 -0
- package/dist/plugins/counsel/skills/deliverable-builder/SKILL.md +928 -0
- package/dist/plugins/counsel/skills/engagement-tracker/SKILL.md +380 -0
- package/dist/plugins/counsel/skills/market-research/SKILL.md +300 -0
- package/dist/plugins/counsel/skills/opportunity-map/SKILL.md +307 -0
- package/dist/plugins/counsel/skills/pitch-generator/SKILL.md +378 -0
- package/dist/plugins/counsel/skills/roi-calculator/SKILL.md +469 -0
- package/dist/plugins/counsel/skills/share/SKILL.md +211 -0
- package/dist/plugins/counsel/skills/solution-architect/SKILL.md +566 -0
- package/dist/plugins/counsel/skills/templates/SKILL.md +194 -0
- package/dist/plugins/counsel/skills/welcome/SKILL.md +136 -0
- package/dist/plugins/counsel/skills/wizard/SKILL.md +411 -0
- package/dist/plugins/cruise/.claude-plugin/plugin.json +6 -0
- package/dist/plugins/cruise/skills/autopilot/SKILL.md +425 -0
- package/dist/plugins/forge/.claude-plugin/plugin.json +6 -0
- package/dist/plugins/forge/agents/architect.md +174 -0
- package/dist/plugins/forge/agents/code-reviewer.md +115 -0
- package/dist/plugins/forge/agents/frontend.md +261 -0
- package/dist/plugins/forge/agents/product-manager.md +563 -0
- package/dist/plugins/forge/agents/python-backend.md +286 -0
- package/dist/plugins/forge/agents/qa.md +226 -0
- package/dist/plugins/forge/hooks/hooks.json +28 -0
- package/dist/plugins/forge/hooks/post-test-summary.sh +115 -0
- package/dist/plugins/forge/hooks/triage-router.sh +740 -0
- package/dist/plugins/forge/skills/implement/SKILL.md +532 -0
- package/dist/plugins/forge/skills/planning/SKILL.md +436 -0
- package/dist/plugins/forge/skills/pr/SKILL.md +275 -0
- package/dist/plugins/forge/skills/precheck/SKILL.md +159 -0
- package/dist/plugins/forge/skills/qa/SKILL.md +127 -0
- package/dist/plugins/forge/skills/review-pr/SKILL.md +367 -0
- package/dist/plugins/prime/.claude-plugin/plugin.json +6 -0
- package/dist/plugins/prime/agents/ai-consultant.md +999 -0
- package/dist/plugins/prime/agents/architect.md +174 -0
- package/dist/plugins/prime/agents/code-reviewer.md +115 -0
- package/dist/plugins/prime/agents/competitive-analyst.md +688 -0
- package/dist/plugins/prime/agents/content-strategist.md +607 -0
- package/dist/plugins/prime/agents/design-studio-create.md +304 -0
- package/dist/plugins/prime/agents/design-studio-critique.md +258 -0
- package/dist/plugins/prime/agents/design-studio-think.md +79 -0
- package/dist/plugins/prime/agents/explore-light.md +52 -0
- package/dist/plugins/prime/agents/frontend.md +261 -0
- package/dist/plugins/prime/agents/gtm-expert.md +811 -0
- package/dist/plugins/prime/agents/meeting-prep.md +318 -0
- package/dist/plugins/prime/agents/ops.md +149 -0
- package/dist/plugins/prime/agents/product-manager.md +563 -0
- package/dist/plugins/prime/agents/python-backend.md +286 -0
- package/dist/plugins/prime/agents/qa-baseline-updater.md +45 -0
- package/dist/plugins/prime/agents/qa-challenger.md +97 -0
- package/dist/plugins/prime/agents/qa-domain.md +145 -0
- package/dist/plugins/prime/agents/qa-e2e.md +184 -0
- package/dist/plugins/prime/agents/qa-test-promoter.md +97 -0
- package/dist/plugins/prime/agents/qa.md +226 -0
- package/dist/plugins/prime/agents/setup.md +134 -0
- package/dist/plugins/prime/agents/sre.md +165 -0
- package/dist/plugins/prime/agents/stakeholder-reporter.md +94 -0
- package/dist/plugins/prime/agents/user-researcher.md +602 -0
- package/dist/plugins/prime/hooks/check-deliverable.sh +65 -0
- package/dist/plugins/prime/hooks/ensure-client-dir.sh +59 -0
- package/dist/plugins/prime/hooks/hooks.json +184 -0
- package/dist/plugins/prime/hooks/post-deploy-health.sh +83 -0
- package/dist/plugins/prime/hooks/post-diff-test-compare.sh +125 -0
- package/dist/plugins/prime/hooks/post-edit-lint.sh +92 -0
- package/dist/plugins/prime/hooks/post-git-state.sh +54 -0
- package/dist/plugins/prime/hooks/post-merge-cleanup.sh +101 -0
- package/dist/plugins/prime/hooks/post-test-summary.sh +115 -0
- package/dist/plugins/prime/hooks/pre-bash-guard.sh +142 -0
- package/dist/plugins/prime/hooks/pre-edit-guard.sh +121 -0
- package/dist/plugins/prime/hooks/pre-task-context.sh +113 -0
- package/dist/plugins/prime/hooks/session-bootstrap.sh +379 -0
- package/dist/plugins/prime/hooks/session-end.sh +107 -0
- package/dist/plugins/prime/hooks/session-summary.sh +97 -0
- package/dist/plugins/prime/hooks/sync-agents.sh +269 -0
- package/dist/plugins/prime/hooks/triage-router.sh +740 -0
- package/dist/plugins/prime/skills/arth/SKILL.md +165 -0
- package/dist/plugins/prime/skills/autopilot/SKILL.md +425 -0
- package/dist/plugins/prime/skills/calibrate/SKILL.md +1807 -0
- package/dist/plugins/prime/skills/ci-fix/SKILL.md +293 -0
- package/dist/plugins/prime/skills/client-discovery/SKILL.md +266 -0
- package/dist/plugins/prime/skills/consulting/SKILL.md +282 -0
- package/dist/plugins/prime/skills/custom-domain/SKILL.md +261 -0
- package/dist/plugins/prime/skills/deliverable-builder/SKILL.md +928 -0
- package/dist/plugins/prime/skills/discord-ops/SKILL.md +125 -0
- package/dist/plugins/prime/skills/engagement-tracker/SKILL.md +380 -0
- package/dist/plugins/prime/skills/explore.md +43 -0
- package/dist/plugins/prime/skills/fix/SKILL.md +1058 -0
- package/dist/plugins/prime/skills/implement/SKILL.md +532 -0
- package/dist/plugins/prime/skills/incident/SKILL.md +910 -0
- package/dist/plugins/prime/skills/issue/SKILL.md +134 -0
- package/dist/plugins/prime/skills/market-research/SKILL.md +300 -0
- package/dist/plugins/prime/skills/onboard/SKILL.md +344 -0
- package/dist/plugins/prime/skills/opportunity-map/SKILL.md +307 -0
- package/dist/plugins/prime/skills/pitch-generator/SKILL.md +378 -0
- package/dist/plugins/prime/skills/planning/SKILL.md +436 -0
- package/dist/plugins/prime/skills/pr/SKILL.md +275 -0
- package/dist/plugins/prime/skills/precheck/SKILL.md +159 -0
- package/dist/plugins/prime/skills/qa/SKILL.md +127 -0
- package/dist/plugins/prime/skills/qa-incident/SKILL.md +54 -0
- package/dist/plugins/prime/skills/qa-learn/SKILL.md +47 -0
- package/dist/plugins/prime/skills/restart/SKILL.md +70 -0
- package/dist/plugins/prime/skills/review-pr/SKILL.md +367 -0
- package/dist/plugins/prime/skills/roi-calculator/SKILL.md +469 -0
- package/dist/plugins/prime/skills/scan/SKILL.md +232 -0
- package/dist/plugins/prime/skills/setup/SKILL.md +691 -0
- package/dist/plugins/prime/skills/share/SKILL.md +211 -0
- package/dist/plugins/prime/skills/solution-architect/SKILL.md +566 -0
- package/dist/plugins/prime/skills/sre/SKILL.md +362 -0
- package/dist/plugins/prime/skills/sync/SKILL.md +188 -0
- package/dist/plugins/prime/skills/templates/SKILL.md +194 -0
- package/dist/plugins/prime/skills/welcome/SKILL.md +136 -0
- package/dist/plugins/prime/skills/wizard/SKILL.md +411 -0
- package/dist/plugins/prism/.claude-plugin/plugin.json +6 -0
- package/dist/plugins/prism/agents/qa-baseline-updater.md +45 -0
- package/dist/plugins/prism/agents/qa-challenger.md +97 -0
- package/dist/plugins/prism/agents/qa-domain.md +145 -0
- package/dist/plugins/prism/agents/qa-e2e.md +184 -0
- package/dist/plugins/prism/agents/qa-test-promoter.md +97 -0
- package/dist/plugins/prism/agents/qa.md +226 -0
- package/dist/plugins/prism/hooks/hooks.json +26 -0
- package/dist/plugins/prism/hooks/post-diff-test-compare.sh +125 -0
- package/dist/plugins/prism/hooks/post-test-summary.sh +115 -0
- package/dist/plugins/prism/skills/qa/SKILL.md +127 -0
- package/dist/plugins/prism/skills/qa-incident/SKILL.md +54 -0
- package/dist/plugins/prism/skills/qa-learn/SKILL.md +47 -0
- package/dist/plugins/scalpel/.claude-plugin/plugin.json +6 -0
- package/dist/plugins/scalpel/agents/code-reviewer.md +115 -0
- package/dist/plugins/scalpel/hooks/hooks.json +26 -0
- package/dist/plugins/scalpel/hooks/pre-edit-guard.sh +121 -0
- package/dist/plugins/scalpel/skills/ci-fix/SKILL.md +293 -0
- package/dist/plugins/scalpel/skills/fix/SKILL.md +1058 -0
- package/dist/plugins/scalpel/skills/issue/SKILL.md +134 -0
- package/dist/plugins/sentinel/.claude-plugin/plugin.json +6 -0
- package/dist/plugins/sentinel/agents/ops.md +149 -0
- package/dist/plugins/sentinel/agents/sre.md +165 -0
- package/dist/plugins/sentinel/hooks/hooks.json +26 -0
- package/dist/plugins/sentinel/hooks/post-deploy-health.sh +83 -0
- package/dist/plugins/sentinel/hooks/post-git-state.sh +54 -0
- package/dist/plugins/sentinel/skills/incident/SKILL.md +910 -0
- package/dist/plugins/sentinel/skills/restart/SKILL.md +70 -0
- package/dist/plugins/sentinel/skills/sre/SKILL.md +362 -0
- package/dist/plugins/shield/.claude-plugin/plugin.json +6 -0
- package/dist/plugins/shield/hooks/hooks.json +60 -0
- package/dist/plugins/shield/hooks/pre-bash-guard.sh +142 -0
- package/dist/plugins/shield/hooks/pre-edit-guard.sh +121 -0
- package/dist/plugins/shield/hooks/session-bootstrap.sh +379 -0
- package/dist/plugins/shield/hooks/triage-router.sh +740 -0
- package/dist/plugins/spark/.claude-plugin/plugin.json +6 -0
- package/dist/plugins/spark/agents/explore-light.md +52 -0
- package/dist/plugins/spark/agents/setup.md +134 -0
- package/dist/plugins/spark/hooks/hooks.json +16 -0
- package/dist/plugins/spark/hooks/session-bootstrap.sh +379 -0
- package/dist/plugins/spark/skills/calibrate/SKILL.md +1807 -0
- package/dist/plugins/spark/skills/onboard/SKILL.md +344 -0
- package/dist/plugins/spark/skills/scan/SKILL.md +232 -0
- package/dist/plugins/spark/skills/setup/SKILL.md +691 -0
- package/hook-defs.json +104 -0
- package/hooks/check-deliverable.sh +65 -0
- package/hooks/ensure-client-dir.sh +59 -0
- package/hooks/hooks.json +16 -0
- package/hooks/post-deploy-health.sh +83 -0
- package/hooks/post-diff-test-compare.sh +125 -0
- package/hooks/post-edit-lint.sh +92 -0
- package/hooks/post-git-state.sh +54 -0
- package/hooks/post-merge-cleanup.sh +101 -0
- package/hooks/post-test-summary.sh +115 -0
- package/hooks/pre-bash-guard.sh +142 -0
- package/hooks/pre-edit-guard.sh +121 -0
- package/hooks/pre-task-context.sh +113 -0
- package/hooks/session-bootstrap.sh +379 -0
- package/hooks/session-end.sh +107 -0
- package/hooks/session-start.sh +46 -0
- package/hooks/session-summary.sh +97 -0
- package/hooks/sync-agents.sh +269 -0
- package/hooks/triage-router.sh +740 -0
- package/install.sh +3185 -0
- package/package.json +40 -0
- package/portable.manifest +112 -0
- package/skills/arth/SKILL.md +165 -0
- package/skills/autopilot/SKILL.md +425 -0
- package/skills/calibrate/SKILL.md +1807 -0
- package/skills/ci-fix/SKILL.md +293 -0
- package/skills/client-discovery/SKILL.md +266 -0
- package/skills/consulting/SKILL.md +282 -0
- package/skills/continue/SKILL.md +174 -0
- package/skills/custom-domain/SKILL.md +261 -0
- package/skills/deliverable-builder/SKILL.md +928 -0
- package/skills/discord-ops/SKILL.md +125 -0
- package/skills/engagement-tracker/SKILL.md +380 -0
- package/skills/explore.md +43 -0
- package/skills/fix/SKILL.md +1058 -0
- package/skills/implement/SKILL.md +532 -0
- package/skills/incident/SKILL.md +910 -0
- package/skills/issue/SKILL.md +134 -0
- package/skills/market-research/SKILL.md +300 -0
- package/skills/onboard/SKILL.md +344 -0
- package/skills/opportunity-map/SKILL.md +307 -0
- package/skills/pitch-generator/SKILL.md +378 -0
- package/skills/planning/SKILL.md +436 -0
- package/skills/pr/SKILL.md +275 -0
- package/skills/precheck/SKILL.md +159 -0
- package/skills/qa/SKILL.md +127 -0
- package/skills/qa-incident/SKILL.md +54 -0
- package/skills/qa-learn/SKILL.md +47 -0
- package/skills/railway/central-station/SKILL.md +226 -0
- package/skills/railway/central-station/references/environment-config.md +183 -0
- package/skills/railway/central-station/references/monorepo.md +216 -0
- package/skills/railway/central-station/references/railpack.md +257 -0
- package/skills/railway/central-station/references/variables.md +170 -0
- package/skills/railway/database/SKILL.md +284 -0
- package/skills/railway/database/references/environment-config.md +183 -0
- package/skills/railway/database/references/monorepo.md +216 -0
- package/skills/railway/database/references/railpack.md +257 -0
- package/skills/railway/database/references/variables.md +170 -0
- package/skills/railway/database/scripts/railway-api.sh +41 -0
- package/skills/railway/deploy/SKILL.md +128 -0
- package/skills/railway/deploy/references/environment-config.md +183 -0
- package/skills/railway/deploy/references/monorepo.md +216 -0
- package/skills/railway/deploy/references/railpack.md +257 -0
- package/skills/railway/deploy/references/variables.md +170 -0
- package/skills/railway/deployment/SKILL.md +222 -0
- package/skills/railway/deployment/references/environment-config.md +183 -0
- package/skills/railway/deployment/references/monorepo.md +216 -0
- package/skills/railway/deployment/references/railpack.md +257 -0
- package/skills/railway/deployment/references/variables.md +170 -0
- package/skills/railway/domain/SKILL.md +137 -0
- package/skills/railway/domain/references/environment-config.md +183 -0
- package/skills/railway/domain/references/monorepo.md +216 -0
- package/skills/railway/domain/references/railpack.md +257 -0
- package/skills/railway/domain/references/variables.md +170 -0
- package/skills/railway/environment/SKILL.md +266 -0
- package/skills/railway/environment/references/environment-config.md +183 -0
- package/skills/railway/environment/references/monorepo.md +216 -0
- package/skills/railway/environment/references/railpack.md +257 -0
- package/skills/railway/environment/references/variables.md +170 -0
- package/skills/railway/metrics/SKILL.md +211 -0
- package/skills/railway/metrics/references/environment-config.md +183 -0
- package/skills/railway/metrics/references/monorepo.md +216 -0
- package/skills/railway/metrics/references/railpack.md +257 -0
- package/skills/railway/metrics/references/variables.md +170 -0
- package/skills/railway/metrics/scripts/railway-api.sh +41 -0
- package/skills/railway/new/SKILL.md +489 -0
- package/skills/railway/new/references/environment-config.md +183 -0
- package/skills/railway/new/references/monorepo.md +216 -0
- package/skills/railway/new/references/railpack.md +257 -0
- package/skills/railway/new/references/variables.md +170 -0
- package/skills/railway/projects/SKILL.md +142 -0
- package/skills/railway/projects/references/environment-config.md +183 -0
- package/skills/railway/projects/references/monorepo.md +216 -0
- package/skills/railway/projects/references/railpack.md +257 -0
- package/skills/railway/projects/references/variables.md +170 -0
- package/skills/railway/projects/scripts/railway-api.sh +41 -0
- package/skills/railway/railway-docs/SKILL.md +47 -0
- package/skills/railway/railway-docs/references/environment-config.md +183 -0
- package/skills/railway/railway-docs/references/monorepo.md +216 -0
- package/skills/railway/railway-docs/references/railpack.md +257 -0
- package/skills/railway/railway-docs/references/variables.md +170 -0
- package/skills/railway/service/SKILL.md +249 -0
- package/skills/railway/service/references/environment-config.md +183 -0
- package/skills/railway/service/references/monorepo.md +216 -0
- package/skills/railway/service/references/railpack.md +257 -0
- package/skills/railway/service/references/variables.md +170 -0
- package/skills/railway/service/scripts/railway-api.sh +41 -0
- package/skills/railway/status/SKILL.md +91 -0
- package/skills/railway/status/references/environment-config.md +183 -0
- package/skills/railway/status/references/monorepo.md +216 -0
- package/skills/railway/status/references/railpack.md +257 -0
- package/skills/railway/status/references/variables.md +170 -0
- package/skills/railway/templates/SKILL.md +275 -0
- package/skills/railway/templates/references/environment-config.md +183 -0
- package/skills/railway/templates/references/monorepo.md +216 -0
- package/skills/railway/templates/references/railpack.md +257 -0
- package/skills/railway/templates/references/variables.md +170 -0
- package/skills/railway/templates/scripts/railway-api.sh +41 -0
- package/skills/restart/SKILL.md +70 -0
- package/skills/review-pr/SKILL.md +367 -0
- package/skills/roi-calculator/SKILL.md +469 -0
- package/skills/scan/SKILL.md +232 -0
- package/skills/setup/SKILL.md +691 -0
- package/skills/share/SKILL.md +211 -0
- package/skills/solution-architect/SKILL.md +566 -0
- package/skills/sre/SKILL.md +362 -0
- package/skills/superpowers/brainstorming/SKILL.md +96 -0
- package/skills/superpowers/dispatching-parallel-agents/SKILL.md +180 -0
- package/skills/superpowers/executing-plans/SKILL.md +84 -0
- package/skills/superpowers/finishing-a-development-branch/SKILL.md +200 -0
- package/skills/superpowers/receiving-code-review/SKILL.md +213 -0
- package/skills/superpowers/requesting-code-review/SKILL.md +105 -0
- package/skills/superpowers/requesting-code-review/code-reviewer.md +146 -0
- package/skills/superpowers/subagent-driven-development/SKILL.md +242 -0
- package/skills/superpowers/subagent-driven-development/code-quality-reviewer-prompt.md +20 -0
- package/skills/superpowers/subagent-driven-development/implementer-prompt.md +78 -0
- package/skills/superpowers/subagent-driven-development/spec-reviewer-prompt.md +61 -0
- package/skills/superpowers/systematic-debugging/CREATION-LOG.md +119 -0
- package/skills/superpowers/systematic-debugging/SKILL.md +296 -0
- package/skills/superpowers/systematic-debugging/condition-based-waiting-example.ts +158 -0
- package/skills/superpowers/systematic-debugging/condition-based-waiting.md +115 -0
- package/skills/superpowers/systematic-debugging/defense-in-depth.md +122 -0
- package/skills/superpowers/systematic-debugging/find-polluter.sh +63 -0
- package/skills/superpowers/systematic-debugging/root-cause-tracing.md +169 -0
- package/skills/superpowers/systematic-debugging/test-academic.md +14 -0
- package/skills/superpowers/systematic-debugging/test-pressure-1.md +58 -0
- package/skills/superpowers/systematic-debugging/test-pressure-2.md +68 -0
- package/skills/superpowers/systematic-debugging/test-pressure-3.md +69 -0
- package/skills/superpowers/test-driven-development/SKILL.md +371 -0
- package/skills/superpowers/test-driven-development/testing-anti-patterns.md +299 -0
- package/skills/superpowers/using-git-worktrees/SKILL.md +218 -0
- package/skills/superpowers/using-superpowers/SKILL.md +95 -0
- package/skills/superpowers/verification-before-completion/SKILL.md +139 -0
- package/skills/superpowers/writing-plans/SKILL.md +116 -0
- package/skills/superpowers/writing-skills/SKILL.md +655 -0
- package/skills/superpowers/writing-skills/anthropic-best-practices.md +1150 -0
- package/skills/superpowers/writing-skills/examples/CLAUDE_MD_TESTING.md +189 -0
- package/skills/superpowers/writing-skills/graphviz-conventions.dot +172 -0
- package/skills/superpowers/writing-skills/persuasion-principles.md +187 -0
- package/skills/superpowers/writing-skills/render-graphs.js +168 -0
- package/skills/superpowers/writing-skills/testing-skills-with-subagents.md +384 -0
- package/skills/sync/SKILL.md +188 -0
- package/skills/templates/SKILL.md +194 -0
- package/skills/welcome/SKILL.md +136 -0
- package/skills/wizard/SKILL.md +411 -0
- package/templates/CLAUDE.md.managed-block +123 -0
- package/templates/CLAUDE.md.template +111 -0
- package/templates/consulting/engagement-tracker-template.md +181 -0
- package/templates/consulting/executive-summary-template.md +83 -0
- package/templates/consulting/maturity-assessment-template.md +182 -0
- package/templates/consulting/proposal-template.md +209 -0
- package/templates/consulting/roi-model-template.md +139 -0
- package/templates/consulting/solution-architecture-template.md +313 -0
- package/templates/settings.json +130 -0
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: service
|
|
3
|
+
description: This skill should be used when the user asks about service status, wants to rename a service, change service icons, link services, or create services with Docker images. For creating services with local code, prefer the `new` skill. For GitHub repo sources, use `new` skill to create empty service then `environment` skill to configure source.
|
|
4
|
+
allowed-tools: Bash(railway:*)
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Service Management
|
|
8
|
+
|
|
9
|
+
Check status, update properties, and advanced service creation.
|
|
10
|
+
|
|
11
|
+
## When to Use
|
|
12
|
+
|
|
13
|
+
- User asks about service status, health, or deployments
|
|
14
|
+
- User asks "is my service deployed?"
|
|
15
|
+
- User wants to rename a service or change service icon
|
|
16
|
+
- User wants to link a different service
|
|
17
|
+
- User wants to deploy a Docker image as a new service (advanced)
|
|
18
|
+
|
|
19
|
+
**Note:** For creating services with local code (the common case), prefer the `new` skill which handles project setup, scaffolding, and service creation together.
|
|
20
|
+
|
|
21
|
+
**For GitHub repo sources:** Use `new` skill to create empty service, then `environment` skill to configure source.repo via staged changes API.
|
|
22
|
+
|
|
23
|
+
## Create Service
|
|
24
|
+
|
|
25
|
+
Create a new service via GraphQL API. There is no CLI command for this.
|
|
26
|
+
|
|
27
|
+
### Get Context
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
railway status --json
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
Extract:
|
|
34
|
+
- `project.id` - for creating the service
|
|
35
|
+
- `environment.id` - for staging the instance config
|
|
36
|
+
|
|
37
|
+
### Create Service Mutation
|
|
38
|
+
|
|
39
|
+
```graphql
|
|
40
|
+
mutation serviceCreate($input: ServiceCreateInput!) {
|
|
41
|
+
serviceCreate(input: $input) {
|
|
42
|
+
id
|
|
43
|
+
name
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### ServiceCreateInput Fields
|
|
49
|
+
|
|
50
|
+
| Field | Type | Description |
|
|
51
|
+
|-------|------|-------------|
|
|
52
|
+
| `projectId` | String! | Project ID (required) |
|
|
53
|
+
| `name` | String | Service name (auto-generated if omitted) |
|
|
54
|
+
| `source.image` | String | Docker image (e.g., `nginx:latest`) |
|
|
55
|
+
| `source.repo` | String | GitHub repo (e.g., `user/repo`) |
|
|
56
|
+
| `branch` | String | Git branch for repo source |
|
|
57
|
+
| `environmentId` | String | If set and is a fork, only creates in that env |
|
|
58
|
+
|
|
59
|
+
### Example: Create empty service
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
bash <<'SCRIPT'
|
|
63
|
+
scripts/railway-api.sh \
|
|
64
|
+
'mutation createService($input: ServiceCreateInput!) {
|
|
65
|
+
serviceCreate(input: $input) { id name }
|
|
66
|
+
}' \
|
|
67
|
+
'{"input": {"projectId": "PROJECT_ID"}}'
|
|
68
|
+
SCRIPT
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### Example: Create service with image
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
bash <<'SCRIPT'
|
|
75
|
+
scripts/railway-api.sh \
|
|
76
|
+
'mutation createService($input: ServiceCreateInput!) {
|
|
77
|
+
serviceCreate(input: $input) { id name }
|
|
78
|
+
}' \
|
|
79
|
+
'{"input": {"projectId": "PROJECT_ID", "name": "my-service", "source": {"image": "nginx:latest"}}}'
|
|
80
|
+
SCRIPT
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### Connecting a GitHub Repo
|
|
84
|
+
|
|
85
|
+
**Do NOT use serviceCreate with source.repo** - use staged changes API instead.
|
|
86
|
+
|
|
87
|
+
Flow:
|
|
88
|
+
1. Create empty service: `serviceCreate(input: {projectId: "...", name: "my-service"})`
|
|
89
|
+
2. Use `environment` skill to configure source via staged changes API
|
|
90
|
+
3. Apply to trigger deployment
|
|
91
|
+
|
|
92
|
+
### After Creating: Configure Instance
|
|
93
|
+
|
|
94
|
+
Use `environment` skill to configure the service instance:
|
|
95
|
+
|
|
96
|
+
```json
|
|
97
|
+
{
|
|
98
|
+
"services": {
|
|
99
|
+
"<serviceId>": {
|
|
100
|
+
"isCreated": true,
|
|
101
|
+
"source": { "image": "nginx:latest" },
|
|
102
|
+
"variables": {
|
|
103
|
+
"PORT": { "value": "8080" }
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
**Critical:** Always include `isCreated: true` for new service instances.
|
|
111
|
+
|
|
112
|
+
Then use `environment` skill to apply and deploy.
|
|
113
|
+
|
|
114
|
+
For variable references, see [reference/variables.md](references/variables.md).
|
|
115
|
+
|
|
116
|
+
## Check Service Status
|
|
117
|
+
|
|
118
|
+
```bash
|
|
119
|
+
railway service status --json
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
Returns current deployment status for the linked service.
|
|
123
|
+
|
|
124
|
+
### Deployment History
|
|
125
|
+
|
|
126
|
+
```bash
|
|
127
|
+
railway deployment list --json --limit 5
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
### Present Status
|
|
131
|
+
|
|
132
|
+
Show:
|
|
133
|
+
- **Service**: name and current status
|
|
134
|
+
- **Latest Deployment**: status (SUCCESS, FAILED, DEPLOYING, CRASHED, etc.)
|
|
135
|
+
- **Deployed At**: when the current deployment went live
|
|
136
|
+
- **Recent Deployments**: last 3-5 with status and timestamps
|
|
137
|
+
|
|
138
|
+
### Deployment Statuses
|
|
139
|
+
|
|
140
|
+
| Status | Meaning |
|
|
141
|
+
|--------|---------|
|
|
142
|
+
| SUCCESS | Deployed and running |
|
|
143
|
+
| FAILED | Build or deploy failed |
|
|
144
|
+
| DEPLOYING | Currently deploying |
|
|
145
|
+
| BUILDING | Build in progress |
|
|
146
|
+
| CRASHED | Runtime crash |
|
|
147
|
+
| REMOVED | Deployment removed |
|
|
148
|
+
|
|
149
|
+
## Update Service
|
|
150
|
+
|
|
151
|
+
Update service name or icon via GraphQL API.
|
|
152
|
+
|
|
153
|
+
### Get Service ID
|
|
154
|
+
|
|
155
|
+
```bash
|
|
156
|
+
railway status --json
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
Extract `service.id` from the response.
|
|
160
|
+
|
|
161
|
+
### Update Name
|
|
162
|
+
|
|
163
|
+
```bash
|
|
164
|
+
bash <<'SCRIPT'
|
|
165
|
+
scripts/railway-api.sh \
|
|
166
|
+
'mutation updateService($id: String!, $input: ServiceUpdateInput!) {
|
|
167
|
+
serviceUpdate(id: $id, input: $input) { id name }
|
|
168
|
+
}' \
|
|
169
|
+
'{"id": "SERVICE_ID", "input": {"name": "new-name"}}'
|
|
170
|
+
SCRIPT
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
### Update Icon
|
|
174
|
+
|
|
175
|
+
Icons can be image URLs or animated GIFs.
|
|
176
|
+
|
|
177
|
+
| Type | Example |
|
|
178
|
+
|------|---------|
|
|
179
|
+
| Image URL | `"icon": "https://example.com/logo.png"` |
|
|
180
|
+
| Animated GIF | `"icon": "https://example.com/animated.gif"` |
|
|
181
|
+
| Devicons | `"icon": "https://devicons.railway.app/github"` |
|
|
182
|
+
|
|
183
|
+
**Railway Devicons:** Query `https://devicons.railway.app/{query}` for common developer icons (e.g., `github`, `postgres`, `redis`, `nodejs`). Browse all at https://devicons.railway.app
|
|
184
|
+
|
|
185
|
+
```bash
|
|
186
|
+
bash <<'SCRIPT'
|
|
187
|
+
scripts/railway-api.sh \
|
|
188
|
+
'mutation updateService($id: String!, $input: ServiceUpdateInput!) {
|
|
189
|
+
serviceUpdate(id: $id, input: $input) { id icon }
|
|
190
|
+
}' \
|
|
191
|
+
'{"id": "SERVICE_ID", "input": {"icon": "https://devicons.railway.app/github"}}'
|
|
192
|
+
SCRIPT
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
### ServiceUpdateInput Fields
|
|
196
|
+
|
|
197
|
+
| Field | Type | Description |
|
|
198
|
+
|-------|------|-------------|
|
|
199
|
+
| `name` | String | Service name |
|
|
200
|
+
| `icon` | String | Emoji or image URL (including animated GIFs) |
|
|
201
|
+
|
|
202
|
+
## Link Service
|
|
203
|
+
|
|
204
|
+
Switch the linked service for the current directory:
|
|
205
|
+
|
|
206
|
+
```bash
|
|
207
|
+
railway service link
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
Or specify directly:
|
|
211
|
+
|
|
212
|
+
```bash
|
|
213
|
+
railway service link <service-name>
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
## Composability
|
|
217
|
+
|
|
218
|
+
- **Create service with local code**: Use `new` skill (handles scaffolding + creation)
|
|
219
|
+
- **Configure service**: Use `environment` skill (variables, commands, image, etc.)
|
|
220
|
+
- **Delete service**: Use `environment` skill with `isDeleted: true`
|
|
221
|
+
- **Apply changes**: Use `environment` skill
|
|
222
|
+
- **View logs**: Use `deployment` skill
|
|
223
|
+
- **Deploy local code**: Use `deploy` skill
|
|
224
|
+
|
|
225
|
+
## Error Handling
|
|
226
|
+
|
|
227
|
+
### No Service Linked
|
|
228
|
+
```
|
|
229
|
+
No service linked. Run `railway service link` to link a service.
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
### No Deployments
|
|
233
|
+
```
|
|
234
|
+
Service exists but has no deployments yet. Deploy with `railway up`.
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
### Service Not Found
|
|
238
|
+
```
|
|
239
|
+
Service "foo" not found. Check available services with `railway status`.
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
### Project Not Found
|
|
243
|
+
User may not be in a linked project. Check `railway status`.
|
|
244
|
+
|
|
245
|
+
### Permission Denied
|
|
246
|
+
User needs at least DEVELOPER role to create services.
|
|
247
|
+
|
|
248
|
+
### Invalid Image
|
|
249
|
+
Docker image must be accessible (public or with registry credentials).
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
# Environment Config Reference
|
|
2
|
+
|
|
3
|
+
The `EnvironmentConfig` object is used to configure services, volumes, and shared variables in Railway.
|
|
4
|
+
|
|
5
|
+
## Structure
|
|
6
|
+
|
|
7
|
+
```json
|
|
8
|
+
{
|
|
9
|
+
"services": {
|
|
10
|
+
"<serviceId>": {
|
|
11
|
+
"source": { ... },
|
|
12
|
+
"build": { ... },
|
|
13
|
+
"deploy": { ... },
|
|
14
|
+
"variables": { ... },
|
|
15
|
+
"networking": { ... }
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
"sharedVariables": { ... },
|
|
19
|
+
"volumes": { ... },
|
|
20
|
+
"buckets": { ... }
|
|
21
|
+
}
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
Only include fields being changed. The patch is merged with existing config.
|
|
25
|
+
|
|
26
|
+
Apply changes via CLI: `echo '<json>' | railway environment edit --json`
|
|
27
|
+
|
|
28
|
+
## Service Config
|
|
29
|
+
|
|
30
|
+
### Source
|
|
31
|
+
| Field | Type | Description |
|
|
32
|
+
|-------|------|-------------|
|
|
33
|
+
| `image` | string | Docker image (e.g., `nginx:latest`) |
|
|
34
|
+
| `repo` | string | Git repository URL |
|
|
35
|
+
| `branch` | string | Git branch to deploy |
|
|
36
|
+
| `commitSha` | string | Specific commit SHA |
|
|
37
|
+
| `rootDirectory` | string | Root directory (monorepos) |
|
|
38
|
+
| `checkSuites` | boolean | Wait for GitHub check suites |
|
|
39
|
+
| `autoUpdates.type` | disabled \| patch \| minor | Auto-update policy for Docker images |
|
|
40
|
+
|
|
41
|
+
### Build
|
|
42
|
+
| Field | Type | Description |
|
|
43
|
+
|-------|------|-------------|
|
|
44
|
+
| `builder` | NIXPACKS \| DOCKERFILE \| RAILPACK | Build system |
|
|
45
|
+
| `buildCommand` | string | Command for Nixpacks builds |
|
|
46
|
+
| `dockerfilePath` | string | Path to Dockerfile |
|
|
47
|
+
| `watchPatterns` | string[] | Patterns to trigger deploys |
|
|
48
|
+
| `nixpacksConfigPath` | string | Path to nixpacks config |
|
|
49
|
+
|
|
50
|
+
### Deploy
|
|
51
|
+
| Field | Type | Description |
|
|
52
|
+
|-------|------|-------------|
|
|
53
|
+
| `startCommand` | string | Container start command |
|
|
54
|
+
| `multiRegionConfig` | object | Region → replica config. See [Multi-Region Config](#multi-region-config). |
|
|
55
|
+
| `healthcheckPath` | string | Health check endpoint |
|
|
56
|
+
| `healthcheckTimeout` | number | Seconds to wait for health |
|
|
57
|
+
| `restartPolicyType` | ON_FAILURE \| ALWAYS \| NEVER | Restart behavior |
|
|
58
|
+
| `restartPolicyMaxRetries` | number | Max restart attempts |
|
|
59
|
+
| `cronSchedule` | string | Cron schedule for cron jobs |
|
|
60
|
+
| `sleepApplication` | boolean | Sleep when inactive |
|
|
61
|
+
|
|
62
|
+
### Variables
|
|
63
|
+
| Field | Type | Description |
|
|
64
|
+
|-------|------|-------------|
|
|
65
|
+
| `value` | string | Variable value |
|
|
66
|
+
| `isOptional` | boolean | Allow empty value |
|
|
67
|
+
|
|
68
|
+
Set to `null` to delete a variable.
|
|
69
|
+
|
|
70
|
+
For variable references, see [variables.md](variables.md).
|
|
71
|
+
|
|
72
|
+
### Lifecycle
|
|
73
|
+
| Field | Type | Description |
|
|
74
|
+
|-------|------|-------------|
|
|
75
|
+
| `isDeleted` | boolean | Mark for deletion (requires ADMIN) |
|
|
76
|
+
| `isCreated` | boolean | Mark as newly created |
|
|
77
|
+
|
|
78
|
+
## Multi-Region Config
|
|
79
|
+
|
|
80
|
+
Controls replica count per region. Structure: region name → `{ numReplicas }` or `null` to remove.
|
|
81
|
+
|
|
82
|
+
```json
|
|
83
|
+
{
|
|
84
|
+
"multiRegionConfig": {
|
|
85
|
+
"us-west2": { "numReplicas": 3 },
|
|
86
|
+
"europe-west4-drams3a": { "numReplicas": 2 }
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### Available Regions
|
|
92
|
+
|
|
93
|
+
| Name | Location | Aliases |
|
|
94
|
+
|------|----------|---------|
|
|
95
|
+
| `us-west2` | US West (California) | "us west", "california" |
|
|
96
|
+
| `us-east4-eqdc4a` | US East (Virginia) | "us east", "virginia" |
|
|
97
|
+
| `europe-west4-drams3a` | EU West (Amsterdam) | "europe", "eu", "amsterdam" |
|
|
98
|
+
| `asia-southeast1-eqsg3a` | Southeast Asia (Singapore) | "asia", "singapore" |
|
|
99
|
+
|
|
100
|
+
### Interpreting User Requests
|
|
101
|
+
|
|
102
|
+
- "add 3 replicas to europe" → `{ "europe-west4-drams3a": { "numReplicas": 3 } }`
|
|
103
|
+
- "add a replica to all regions" → set `numReplicas: 1` for all 4 regions
|
|
104
|
+
- "remove from asia" → `{ "asia-southeast1-eqsg3a": null }`
|
|
105
|
+
- "increase replicas to 5" (no region specified) → query current config first, update existing region(s)
|
|
106
|
+
|
|
107
|
+
**Important:** When user doesn't specify a region, query the current `multiRegionConfig` and modify the existing region(s). Don't assume a default region.
|
|
108
|
+
|
|
109
|
+
## Common Operations
|
|
110
|
+
|
|
111
|
+
### Set Build Command
|
|
112
|
+
```json
|
|
113
|
+
{ "services": { "<serviceId>": { "build": { "buildCommand": "npm run build" } } } }
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
### Set Start Command
|
|
117
|
+
```json
|
|
118
|
+
{ "services": { "<serviceId>": { "deploy": { "startCommand": "node server.js" } } } }
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
### Set Replicas
|
|
122
|
+
```json
|
|
123
|
+
{ "services": { "<serviceId>": { "deploy": { "multiRegionConfig": { "us-west2": { "numReplicas": 3 } } } } } }
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
### Add Variables
|
|
127
|
+
```json
|
|
128
|
+
{ "services": { "<serviceId>": { "variables": { "API_KEY": { "value": "xxx" } } } } }
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
### Delete Variable
|
|
132
|
+
```json
|
|
133
|
+
{ "services": { "<serviceId>": { "variables": { "OLD_VAR": null } } } }
|
|
134
|
+
```
|
|
135
|
+
Via CLI: `echo '{"services":{"<serviceId>":{"variables":{"OLD_VAR":null}}}}' | railway environment edit --json`
|
|
136
|
+
|
|
137
|
+
### Add Shared Variable
|
|
138
|
+
```json
|
|
139
|
+
{ "sharedVariables": { "DATABASE_URL": { "value": "postgres://..." } } }
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
### Change Docker Image
|
|
143
|
+
```json
|
|
144
|
+
{ "services": { "<serviceId>": { "source": { "image": "nginx:latest" } } } }
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
### Connect GitHub Repo
|
|
148
|
+
```json
|
|
149
|
+
{ "services": { "<serviceId>": { "source": { "repo": "owner/repo", "branch": "main" } } } }
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
### Change Git Branch
|
|
153
|
+
```json
|
|
154
|
+
{ "services": { "<serviceId>": { "source": { "branch": "develop" } } } }
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
### Set Health Check
|
|
158
|
+
```json
|
|
159
|
+
{ "services": { "<serviceId>": { "deploy": { "healthcheckPath": "/health", "healthcheckTimeout": 30 } } } }
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
### Change Builder
|
|
163
|
+
```json
|
|
164
|
+
{ "services": { "<serviceId>": { "build": { "builder": "DOCKERFILE", "dockerfilePath": "./Dockerfile" } } } }
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
### Delete Service
|
|
168
|
+
```json
|
|
169
|
+
{ "services": { "<serviceId>": { "isDeleted": true } } }
|
|
170
|
+
```
|
|
171
|
+
Via CLI: `echo '{"services":{"<serviceId>":{"isDeleted":true}}}' | railway environment edit --json`
|
|
172
|
+
|
|
173
|
+
### Delete Volume
|
|
174
|
+
```json
|
|
175
|
+
{ "volumes": { "<volumeId>": { "isDeleted": true } } }
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
### New Service Instance
|
|
179
|
+
```json
|
|
180
|
+
{ "services": { "<serviceId>": { "isCreated": true, "source": { "image": "nginx" } } } }
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
**Note:** `isCreated: true` is required for new service instances.
|
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
# Monorepo Reference
|
|
2
|
+
|
|
3
|
+
Railway supports two types of monorepo deployments with different configuration approaches.
|
|
4
|
+
|
|
5
|
+
## Key Decision: Root Directory vs Custom Commands
|
|
6
|
+
|
|
7
|
+
| Approach | When to Use | What Happens |
|
|
8
|
+
|----------|-------------|--------------|
|
|
9
|
+
| **Root Directory** | Isolated apps (no shared code) | Only that directory's code is available |
|
|
10
|
+
| **Custom Commands** | Shared monorepos (TypeScript, workspaces) | Full repo available, filter at build/start |
|
|
11
|
+
|
|
12
|
+
**Critical:** Setting root directory means code outside that directory is NOT available during build. For monorepos with shared packages, use custom commands instead.
|
|
13
|
+
|
|
14
|
+
## Isolated Monorepo
|
|
15
|
+
|
|
16
|
+
Apps are completely independent - no shared code between directories.
|
|
17
|
+
|
|
18
|
+
```
|
|
19
|
+
├── frontend/ # React app (standalone)
|
|
20
|
+
│ ├── package.json
|
|
21
|
+
│ └── src/
|
|
22
|
+
└── backend/ # Python API (standalone)
|
|
23
|
+
├── requirements.txt
|
|
24
|
+
└── main.py
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
### Configuration
|
|
28
|
+
|
|
29
|
+
Set **Root Directory** for each service:
|
|
30
|
+
- Frontend service: `/frontend`
|
|
31
|
+
- Backend service: `/backend`
|
|
32
|
+
|
|
33
|
+
Each service only sees its own directory's code.
|
|
34
|
+
|
|
35
|
+
### When to Use
|
|
36
|
+
|
|
37
|
+
- Frontend and backend in different languages
|
|
38
|
+
- No shared packages or dependencies
|
|
39
|
+
- Each app has its own package.json/requirements.txt
|
|
40
|
+
- Apps don't import from sibling directories
|
|
41
|
+
|
|
42
|
+
## Shared Monorepo
|
|
43
|
+
|
|
44
|
+
Apps share code from common packages or the root.
|
|
45
|
+
|
|
46
|
+
```
|
|
47
|
+
├── package.json # Root workspace config
|
|
48
|
+
├── packages/
|
|
49
|
+
│ ├── frontend/
|
|
50
|
+
│ │ ├── package.json
|
|
51
|
+
│ │ └── src/
|
|
52
|
+
│ ├── backend/
|
|
53
|
+
│ │ ├── package.json
|
|
54
|
+
│ │ └── src/
|
|
55
|
+
│ └── shared/ # Shared utilities
|
|
56
|
+
│ ├── package.json
|
|
57
|
+
│ └── src/
|
|
58
|
+
└── tsconfig.json # Shared TS config
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### Configuration
|
|
62
|
+
|
|
63
|
+
Do NOT set root directory. Instead, use custom build and start commands:
|
|
64
|
+
|
|
65
|
+
**pnpm:**
|
|
66
|
+
```
|
|
67
|
+
Build: pnpm --filter backend build
|
|
68
|
+
Start: pnpm --filter backend start
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
**npm workspaces:**
|
|
72
|
+
```
|
|
73
|
+
Build: npm run build --workspace=packages/backend
|
|
74
|
+
Start: npm run start --workspace=packages/backend
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
**yarn workspaces:**
|
|
78
|
+
```
|
|
79
|
+
Build: yarn workspace backend build
|
|
80
|
+
Start: yarn workspace backend start
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
**bun:**
|
|
84
|
+
```
|
|
85
|
+
Build: bun run --filter backend build
|
|
86
|
+
Start: bun run --filter backend start
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
**Turborepo:**
|
|
90
|
+
```
|
|
91
|
+
Build: turbo run build --filter=backend
|
|
92
|
+
Start: turbo run start --filter=backend
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
### When to Use
|
|
96
|
+
|
|
97
|
+
- TypeScript/JavaScript monorepo with workspaces
|
|
98
|
+
- Packages import from sibling packages (`@myapp/shared`)
|
|
99
|
+
- Shared tsconfig.json, eslint config at root
|
|
100
|
+
- Using pnpm, yarn workspaces, npm workspaces, or bun
|
|
101
|
+
- Using Turborepo, Nx, or similar build tools
|
|
102
|
+
|
|
103
|
+
## Watch Paths
|
|
104
|
+
|
|
105
|
+
Prevent changes in one package from triggering rebuilds of other services.
|
|
106
|
+
|
|
107
|
+
Set watch paths for each service to only rebuild when relevant files change:
|
|
108
|
+
|
|
109
|
+
| Service | Watch Paths |
|
|
110
|
+
|---------|-------------|
|
|
111
|
+
| frontend | `/packages/frontend/**`, `/packages/shared/**` |
|
|
112
|
+
| backend | `/packages/backend/**`, `/packages/shared/**` |
|
|
113
|
+
|
|
114
|
+
Include shared packages in watch paths if the service depends on them.
|
|
115
|
+
|
|
116
|
+
### Pattern Format
|
|
117
|
+
|
|
118
|
+
Uses gitignore-style patterns:
|
|
119
|
+
```
|
|
120
|
+
/packages/backend/** # All files in backend
|
|
121
|
+
/packages/shared/** # All files in shared (if depends on it)
|
|
122
|
+
!**/*.md # Ignore markdown changes
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
## Configuration Examples
|
|
126
|
+
|
|
127
|
+
### Isolated: React + Python API
|
|
128
|
+
|
|
129
|
+
Two separate apps, no shared code.
|
|
130
|
+
|
|
131
|
+
**Frontend service:**
|
|
132
|
+
- Root Directory: `/frontend`
|
|
133
|
+
- No custom commands needed (Railpack auto-detects)
|
|
134
|
+
|
|
135
|
+
**Backend service:**
|
|
136
|
+
- Root Directory: `/backend`
|
|
137
|
+
- No custom commands needed
|
|
138
|
+
|
|
139
|
+
### Shared: TypeScript Monorepo with pnpm
|
|
140
|
+
|
|
141
|
+
Frontend and backend share a `@myapp/shared` package.
|
|
142
|
+
|
|
143
|
+
**Frontend service:**
|
|
144
|
+
- Root Directory: (leave empty)
|
|
145
|
+
- Build Command: `pnpm --filter frontend build`
|
|
146
|
+
- Start Command: `pnpm --filter frontend start`
|
|
147
|
+
- Watch Paths: `/packages/frontend/**`, `/packages/shared/**`
|
|
148
|
+
|
|
149
|
+
**Backend service:**
|
|
150
|
+
- Root Directory: (leave empty)
|
|
151
|
+
- Build Command: `pnpm --filter backend build`
|
|
152
|
+
- Start Command: `pnpm --filter backend start`
|
|
153
|
+
- Watch Paths: `/packages/backend/**`, `/packages/shared/**`
|
|
154
|
+
|
|
155
|
+
### Shared: Turborepo
|
|
156
|
+
|
|
157
|
+
**Frontend service:**
|
|
158
|
+
- Root Directory: (leave empty)
|
|
159
|
+
- Build Command: `turbo run build --filter=frontend`
|
|
160
|
+
- Start Command: `turbo run start --filter=frontend`
|
|
161
|
+
- Watch Paths: `/apps/frontend/**`, `/packages/**`
|
|
162
|
+
|
|
163
|
+
**Backend service:**
|
|
164
|
+
- Root Directory: (leave empty)
|
|
165
|
+
- Build Command: `turbo run build --filter=backend`
|
|
166
|
+
- Start Command: `turbo run start --filter=backend`
|
|
167
|
+
- Watch Paths: `/apps/backend/**`, `/packages/**`
|
|
168
|
+
|
|
169
|
+
## Common Mistakes
|
|
170
|
+
|
|
171
|
+
### Using Root Directory for Shared Monorepos
|
|
172
|
+
|
|
173
|
+
**Wrong:**
|
|
174
|
+
```
|
|
175
|
+
Root Directory: /packages/backend
|
|
176
|
+
```
|
|
177
|
+
This breaks builds because `@myapp/shared` isn't available.
|
|
178
|
+
|
|
179
|
+
**Right:**
|
|
180
|
+
```
|
|
181
|
+
Root Directory: (empty)
|
|
182
|
+
Build Command: pnpm --filter backend build
|
|
183
|
+
Start Command: pnpm --filter backend start
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
### Forgetting Watch Paths
|
|
187
|
+
|
|
188
|
+
Without watch paths, changing `frontend/` triggers a rebuild of `backend/`.
|
|
189
|
+
|
|
190
|
+
Always set watch paths for monorepos to avoid unnecessary builds.
|
|
191
|
+
|
|
192
|
+
### Missing Shared Packages in Watch Paths
|
|
193
|
+
|
|
194
|
+
If `backend` imports from `shared`, include both in watch paths:
|
|
195
|
+
```
|
|
196
|
+
/packages/backend/**
|
|
197
|
+
/packages/shared/**
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
Otherwise changes to `shared` won't trigger backend rebuilds.
|
|
201
|
+
|
|
202
|
+
## Detecting Monorepo Type
|
|
203
|
+
|
|
204
|
+
Check for these indicators:
|
|
205
|
+
|
|
206
|
+
**Isolated monorepo:**
|
|
207
|
+
- Separate package.json in each directory
|
|
208
|
+
- No workspace config in root package.json
|
|
209
|
+
- No imports between directories
|
|
210
|
+
|
|
211
|
+
**Shared monorepo:**
|
|
212
|
+
- Root package.json with `workspaces` field
|
|
213
|
+
- `pnpm-workspace.yaml` exists
|
|
214
|
+
- Packages import from each other (`@myapp/shared`)
|
|
215
|
+
- Shared tsconfig.json at root
|
|
216
|
+
- turbo.json or nx.json at root
|