@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,282 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: consulting
|
|
3
|
+
description: "Run a full AI consulting engagement. Usage: /consulting <client-name> [--phase discovery|assess|propose|design|deliver|track] [-- <brief>]"
|
|
4
|
+
user-invocable: true
|
|
5
|
+
arguments: "<client-name> [--phase] [-- brief]"
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# AI Consulting Engagement Orchestrator
|
|
9
|
+
|
|
10
|
+
Run structured AI consulting engagements for SMB and mid-market clients. This skill orchestrates the full engagement lifecycle — from initial discovery through delivery and tracking — coordinating all sub-skills and maintaining engagement state.
|
|
11
|
+
|
|
12
|
+
## Steps
|
|
13
|
+
|
|
14
|
+
### Step 1: Parse Arguments and Load Engagement State
|
|
15
|
+
|
|
16
|
+
Parse the command arguments:
|
|
17
|
+
- `<client-name>` (required): The client identifier, used for directory naming and file lookups
|
|
18
|
+
- `--phase <phase>` (optional): Jump to a specific phase. One of: `discovery`, `assess`, `propose`, `design`, `deliver`, `track`
|
|
19
|
+
- `-- <brief>` (optional): Free-text brief describing the engagement context or specific request
|
|
20
|
+
|
|
21
|
+
Check if an engagement already exists for this client:
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
# Check for existing engagement
|
|
25
|
+
ls consulting-toolkit/clients/{client-name}/engagement.json 2>/dev/null
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
If `engagement.json` exists, read it and resume from the current phase. If it does not exist, initialize a new engagement.
|
|
29
|
+
|
|
30
|
+
### Step 2: Initialize Client Workspace
|
|
31
|
+
|
|
32
|
+
If this is a new engagement, create the client directory structure:
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
mkdir -p consulting-toolkit/clients/{client-name}
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
Create `consulting-toolkit/clients/{client-name}/engagement.json` with this schema:
|
|
39
|
+
|
|
40
|
+
```json
|
|
41
|
+
{
|
|
42
|
+
"client": "{client-name}",
|
|
43
|
+
"engagement_id": "{client-name}-{YYYYMMDD}",
|
|
44
|
+
"created": "YYYY-MM-DDTHH:MM:SSZ",
|
|
45
|
+
"updated": "YYYY-MM-DDTHH:MM:SSZ",
|
|
46
|
+
"status": "active",
|
|
47
|
+
"current_phase": "discovery",
|
|
48
|
+
"phases": {
|
|
49
|
+
"discovery": { "status": "not_started", "started": null, "completed": null, "deliverables": [] },
|
|
50
|
+
"assess": { "status": "not_started", "started": null, "completed": null, "deliverables": [] },
|
|
51
|
+
"propose": { "status": "not_started", "started": null, "completed": null, "deliverables": [] },
|
|
52
|
+
"design": { "status": "not_started", "started": null, "completed": null, "deliverables": [] },
|
|
53
|
+
"deliver": { "status": "not_started", "started": null, "completed": null, "deliverables": [] },
|
|
54
|
+
"track": { "status": "not_started", "started": null, "completed": null, "deliverables": [] }
|
|
55
|
+
},
|
|
56
|
+
"brief": "{brief or null}",
|
|
57
|
+
"contacts": [],
|
|
58
|
+
"decisions": [],
|
|
59
|
+
"risks": [],
|
|
60
|
+
"value_captured": {
|
|
61
|
+
"total_projected": 0,
|
|
62
|
+
"total_actual": 0,
|
|
63
|
+
"by_initiative": []
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
Create `consulting-toolkit/clients/{client-name}/profile.md` with this stub:
|
|
69
|
+
|
|
70
|
+
```markdown
|
|
71
|
+
# Client Profile: {Client Name}
|
|
72
|
+
|
|
73
|
+
> Generated by AI Consulting Toolkit | v1.0 | {date}
|
|
74
|
+
|
|
75
|
+
## Company Overview
|
|
76
|
+
- **Company:** {client-name}
|
|
77
|
+
- **Industry:** [TBD]
|
|
78
|
+
- **Size:** [employees]
|
|
79
|
+
- **Revenue:** [annual revenue range]
|
|
80
|
+
- **Location:** [HQ location]
|
|
81
|
+
|
|
82
|
+
## Key Contacts
|
|
83
|
+
| Name | Role | Email | Decision Authority |
|
|
84
|
+
|------|------|-------|--------------------|
|
|
85
|
+
| | | | |
|
|
86
|
+
|
|
87
|
+
## Business Context
|
|
88
|
+
[To be completed during discovery phase]
|
|
89
|
+
|
|
90
|
+
## AI Maturity Score
|
|
91
|
+
[To be completed during assessment phase]
|
|
92
|
+
- Strategy: _/5
|
|
93
|
+
- Data: _/5
|
|
94
|
+
- Technology: _/5
|
|
95
|
+
- People: _/5
|
|
96
|
+
- Process: _/5
|
|
97
|
+
- **Total: _/25**
|
|
98
|
+
|
|
99
|
+
## Current Technology Stack
|
|
100
|
+
[To be completed during discovery phase]
|
|
101
|
+
|
|
102
|
+
## Pain Points & Priorities
|
|
103
|
+
[To be completed during discovery phase]
|
|
104
|
+
|
|
105
|
+
## Engagement History
|
|
106
|
+
| Date | Phase | Activity | Outcome |
|
|
107
|
+
|------|-------|----------|---------|
|
|
108
|
+
| | | | |
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
### Step 3: Route to Active Phase
|
|
112
|
+
|
|
113
|
+
Based on the current phase (from `engagement.json` or `--phase` argument), execute the appropriate skill:
|
|
114
|
+
|
|
115
|
+
**Phase: `discovery`**
|
|
116
|
+
```
|
|
117
|
+
Run /client-discovery {client-name} -- {brief}
|
|
118
|
+
```
|
|
119
|
+
Activities:
|
|
120
|
+
- Structured interview guide generation
|
|
121
|
+
- Business model canvas completion
|
|
122
|
+
- Technology stack assessment
|
|
123
|
+
- Data landscape mapping
|
|
124
|
+
- Stakeholder identification
|
|
125
|
+
- Pain point prioritization
|
|
126
|
+
|
|
127
|
+
Output: Updated `profile.md`, interview notes, data inventory
|
|
128
|
+
|
|
129
|
+
**Phase: `assess`**
|
|
130
|
+
```
|
|
131
|
+
Run /opportunity-map {client-name}
|
|
132
|
+
```
|
|
133
|
+
Activities:
|
|
134
|
+
- AI Maturity Model assessment (Deloitte-adapted)
|
|
135
|
+
- MECE problem decomposition of key challenges
|
|
136
|
+
- Jobs-to-be-Done AI opportunity analysis
|
|
137
|
+
- Porter's Five Forces AI impact assessment
|
|
138
|
+
- BCG Priority Matrix for AI initiatives
|
|
139
|
+
- Market research on industry AI adoption
|
|
140
|
+
|
|
141
|
+
Output: Maturity scorecard, opportunity register, priority matrix
|
|
142
|
+
|
|
143
|
+
**Phase: `propose`**
|
|
144
|
+
```
|
|
145
|
+
Run /pitch-generator {client-name}
|
|
146
|
+
Run /roi-calculator {client-name}
|
|
147
|
+
```
|
|
148
|
+
Activities:
|
|
149
|
+
- Solution options development (2-3 alternatives)
|
|
150
|
+
- ROI model for each recommended initiative
|
|
151
|
+
- Risk assessment and mitigation plan
|
|
152
|
+
- Pricing and engagement structure
|
|
153
|
+
- Proposal document generation
|
|
154
|
+
|
|
155
|
+
Output: Proposal document, ROI models, risk register
|
|
156
|
+
|
|
157
|
+
**Phase: `design`**
|
|
158
|
+
```
|
|
159
|
+
Run /solution-architect {client-name}
|
|
160
|
+
```
|
|
161
|
+
Activities:
|
|
162
|
+
- Technical architecture design
|
|
163
|
+
- Integration mapping with existing systems
|
|
164
|
+
- Data pipeline architecture
|
|
165
|
+
- Build vs Buy analysis
|
|
166
|
+
- Implementation sprint plan
|
|
167
|
+
- Technology vendor evaluation
|
|
168
|
+
|
|
169
|
+
Output: Architecture document, sprint plan, vendor comparison
|
|
170
|
+
|
|
171
|
+
**Phase: `deliver`**
|
|
172
|
+
```
|
|
173
|
+
Run /deliverable-builder {client-name}
|
|
174
|
+
```
|
|
175
|
+
Activities:
|
|
176
|
+
- Sprint execution tracking
|
|
177
|
+
- Deliverable assembly and review
|
|
178
|
+
- Client presentation preparation
|
|
179
|
+
- Knowledge transfer documentation
|
|
180
|
+
- Change management support
|
|
181
|
+
|
|
182
|
+
Output: Final deliverables package, handoff documentation
|
|
183
|
+
|
|
184
|
+
**Phase: `track`**
|
|
185
|
+
```
|
|
186
|
+
Run /engagement-tracker {client-name}
|
|
187
|
+
```
|
|
188
|
+
Activities:
|
|
189
|
+
- Value realization tracking
|
|
190
|
+
- Sprint scorecard updates
|
|
191
|
+
- RAG status reporting
|
|
192
|
+
- Phase transition readiness assessment
|
|
193
|
+
- Engagement health monitoring
|
|
194
|
+
|
|
195
|
+
Output: Status reports, value tracker updates, phase gate reviews
|
|
196
|
+
|
|
197
|
+
### Step 4: Phase Transition Protocol
|
|
198
|
+
|
|
199
|
+
When a phase is complete, follow this transition protocol:
|
|
200
|
+
|
|
201
|
+
1. **Verify phase completion criteria:**
|
|
202
|
+
- All required deliverables produced
|
|
203
|
+
- Client review completed (or flagged for review)
|
|
204
|
+
- Decision log updated with phase decisions
|
|
205
|
+
- Risks identified and logged
|
|
206
|
+
|
|
207
|
+
2. **Update engagement.json:**
|
|
208
|
+
- Set current phase status to `"completed"`
|
|
209
|
+
- Set completion timestamp
|
|
210
|
+
- Record deliverables produced
|
|
211
|
+
- Advance `current_phase` to next phase
|
|
212
|
+
|
|
213
|
+
3. **Generate phase transition summary:**
|
|
214
|
+
```markdown
|
|
215
|
+
## Phase Transition: {previous_phase} -> {next_phase}
|
|
216
|
+
|
|
217
|
+
### Completed
|
|
218
|
+
- [List of deliverables produced]
|
|
219
|
+
|
|
220
|
+
### Key Decisions
|
|
221
|
+
- [Decision 1]: [Rationale]
|
|
222
|
+
|
|
223
|
+
### Risks Carried Forward
|
|
224
|
+
- [Risk 1]: [Mitigation]
|
|
225
|
+
|
|
226
|
+
### Next Phase Objectives
|
|
227
|
+
- [Objective 1]
|
|
228
|
+
- [Objective 2]
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
4. **Confirm with user** before advancing to the next phase. Never auto-advance without explicit approval.
|
|
232
|
+
|
|
233
|
+
### Step 5: Engagement Status Report
|
|
234
|
+
|
|
235
|
+
At any point, the user can request a status report. Generate it from `engagement.json`:
|
|
236
|
+
|
|
237
|
+
```markdown
|
|
238
|
+
# Engagement Status: {client-name}
|
|
239
|
+
> {engagement_id} | Updated: {date}
|
|
240
|
+
|
|
241
|
+
## Phase Progress
|
|
242
|
+
| Phase | Status | Started | Completed | Deliverables |
|
|
243
|
+
|-----------|-------------|------------|------------|--------------|
|
|
244
|
+
| Discovery | [GREEN/AMBER/RED] | {date} | {date} | {count} |
|
|
245
|
+
| Assess | [status] | {date} | {date} | {count} |
|
|
246
|
+
| Propose | [status] | {date} | {date} | {count} |
|
|
247
|
+
| Design | [status] | {date} | {date} | {count} |
|
|
248
|
+
| Deliver | [status] | {date} | {date} | {count} |
|
|
249
|
+
| Track | [status] | {date} | {date} | {count} |
|
|
250
|
+
|
|
251
|
+
## Value Summary
|
|
252
|
+
- Projected Annual Value: ${total_projected}
|
|
253
|
+
- Actual Value Captured: ${total_actual}
|
|
254
|
+
- Realization Rate: {percentage}%
|
|
255
|
+
|
|
256
|
+
## Open Risks ({count})
|
|
257
|
+
{risk_list}
|
|
258
|
+
|
|
259
|
+
## Recent Decisions ({count})
|
|
260
|
+
{decision_list}
|
|
261
|
+
|
|
262
|
+
## Next Actions
|
|
263
|
+
{action_items}
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
### Step 6: Multi-Engagement Management
|
|
267
|
+
|
|
268
|
+
When no client name is provided, list all active engagements:
|
|
269
|
+
|
|
270
|
+
```bash
|
|
271
|
+
ls consulting-toolkit/clients/*/engagement.json 2>/dev/null
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
Display a dashboard:
|
|
275
|
+
|
|
276
|
+
```markdown
|
|
277
|
+
# Active Engagements
|
|
278
|
+
|
|
279
|
+
| Client | Phase | Status | Last Updated | Value Projected |
|
|
280
|
+
|--------|-------|--------|--------------|-----------------|
|
|
281
|
+
| ... | ... | ... | ... | ... |
|
|
282
|
+
```
|
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: custom-domain
|
|
3
|
+
description: "Set up, diagnose, or fix custom domain configuration (DNS + app platform + auth + CORS). Commands: setup, check, fix"
|
|
4
|
+
user-invocable: true
|
|
5
|
+
arguments: "command"
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Custom Domain Skill
|
|
9
|
+
|
|
10
|
+
Manage custom domain configuration across DNS provider, app platform, auth provider, and CORS.
|
|
11
|
+
|
|
12
|
+
## Argument Parsing
|
|
13
|
+
|
|
14
|
+
- `command`: Optional. One of: `setup`, `check`, `fix`. Defaults to `check` if omitted.
|
|
15
|
+
|
|
16
|
+
## Discovery Phase (All Commands)
|
|
17
|
+
|
|
18
|
+
Before any action, discover the project's domain stack by reading config and env vars:
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
1. DNS Provider — Check if Cloudflare is in use:
|
|
22
|
+
curl -sI https://<domain> | grep -i "server: cloudflare"
|
|
23
|
+
dig <domain> CNAME +short
|
|
24
|
+
|
|
25
|
+
2. App Platform — Check Railway services:
|
|
26
|
+
railway status
|
|
27
|
+
railway domain (on frontend service)
|
|
28
|
+
|
|
29
|
+
3. Auth Provider — Detect from frontend code:
|
|
30
|
+
grep -r "STYTCH\|AUTH0\|CLERK\|SUPABASE_AUTH\|FIREBASE_AUTH" frontend/.env* frontend/src/lib/
|
|
31
|
+
|
|
32
|
+
4. Backend CORS — Check current config:
|
|
33
|
+
railway variables --kv --service backend | grep CORS
|
|
34
|
+
railway variables --kv --service backend | grep FRONTEND_URL
|
|
35
|
+
|
|
36
|
+
5. Custom domain already set? —
|
|
37
|
+
curl -sI https://<domain> | head -10
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
Store discovered values for use in subsequent steps.
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## `/custom-domain setup`
|
|
45
|
+
|
|
46
|
+
Full end-to-end setup of a new custom domain.
|
|
47
|
+
|
|
48
|
+
### Step 1: Add Custom Domain in Railway
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
railway service frontend
|
|
52
|
+
railway domain <your-domain.com> --json
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
The JSON response contains `requiredValue` — this is the CNAME target for DNS. It is NOT the same as the public Railway URL. Railway assigns a separate routing hostname for custom domains.
|
|
56
|
+
|
|
57
|
+
### Step 2: Configure DNS
|
|
58
|
+
|
|
59
|
+
**If Cloudflare (recommended):**
|
|
60
|
+
|
|
61
|
+
Check if Railway offers one-click Cloudflare integration in the dashboard:
|
|
62
|
+
- Railway dashboard -> Frontend service -> Settings -> Custom Domain -> "Connect to Cloudflare"
|
|
63
|
+
- This auto-configures CNAME + TXT verification record + proxy settings
|
|
64
|
+
- Click **Authorize** when prompted
|
|
65
|
+
|
|
66
|
+
**If manual DNS setup:**
|
|
67
|
+
|
|
68
|
+
| Field | Value |
|
|
69
|
+
|-------|-------|
|
|
70
|
+
| Type | `CNAME` |
|
|
71
|
+
| Name | `@` (root) or subdomain |
|
|
72
|
+
| Target | `requiredValue` from Step 1 |
|
|
73
|
+
| Proxy | DNS only (grey cloud) for manual; Proxied OK with Railway's Cloudflare integration |
|
|
74
|
+
|
|
75
|
+
**If non-Cloudflare DNS provider:**
|
|
76
|
+
- Add CNAME record pointing to the `requiredValue`
|
|
77
|
+
- Add any TXT records Railway requires for verification
|
|
78
|
+
- SSL will be provisioned by Railway via Let's Encrypt (may take 2-10 min)
|
|
79
|
+
|
|
80
|
+
### Step 3: Update Backend CORS + FRONTEND_URL
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
railway service backend
|
|
84
|
+
railway variables set 'CORS_ORIGINS=["https://<new-domain>","https://<existing-railway-frontend-url>"]'
|
|
85
|
+
railway variables set 'FRONTEND_URL=https://<new-domain>'
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
**CRITICAL — JSON quoting for CORS_ORIGINS:**
|
|
89
|
+
- Value MUST be valid JSON: `["https://domain1","https://domain2"]`
|
|
90
|
+
- Use `railway variables set` CLI directly (NOT the MCP set-variables tool — it strips inner quotes)
|
|
91
|
+
- Verify after setting: `railway variables --kv | grep CORS`
|
|
92
|
+
- If inner quotes are missing, Pydantic (or similar config parser) fails to parse -> app crashes on deploy
|
|
93
|
+
- Keep the old Railway URL in the array so both domains work simultaneously
|
|
94
|
+
|
|
95
|
+
This triggers a backend redeploy. Wait for it to go green.
|
|
96
|
+
|
|
97
|
+
### Step 4: Configure Auth Provider
|
|
98
|
+
|
|
99
|
+
**If Stytch:**
|
|
100
|
+
In Stytch Dashboard -> Live project:
|
|
101
|
+
1. **Frontend SDKs -> Authorized environments** -> Add: `<your-domain.com>`
|
|
102
|
+
2. **Redirect URLs** -> Add:
|
|
103
|
+
- `https://<your-domain.com>/authenticate` (type: Login)
|
|
104
|
+
- `https://<your-domain.com>/authenticate` (type: Sign-up)
|
|
105
|
+
|
|
106
|
+
**If Auth0:** Add `https://<your-domain.com>` to Allowed Callback URLs, Allowed Logout URLs, Allowed Web Origins.
|
|
107
|
+
|
|
108
|
+
**If Clerk:** Add domain to Clerk Dashboard -> Paths -> Allowed origins.
|
|
109
|
+
|
|
110
|
+
**If Supabase Auth:** Add redirect URL in Supabase Dashboard -> Auth -> URL Configuration.
|
|
111
|
+
|
|
112
|
+
No code changes needed for any of these — auth SDKs auto-detect the current domain.
|
|
113
|
+
|
|
114
|
+
### Step 5: Verify
|
|
115
|
+
|
|
116
|
+
```bash
|
|
117
|
+
# DNS resolution
|
|
118
|
+
nslookup <your-domain.com>
|
|
119
|
+
|
|
120
|
+
# HTTPS + SSL working
|
|
121
|
+
curl -sI https://<your-domain.com> | head -10
|
|
122
|
+
# Should return HTTP/2 200
|
|
123
|
+
|
|
124
|
+
# Backend CORS working (after deploy completes)
|
|
125
|
+
curl -sI -H "Origin: https://<your-domain.com>" https://<backend-url>/health | grep -i "access-control"
|
|
126
|
+
|
|
127
|
+
# Auth flow — test in browser
|
|
128
|
+
# Navigate to https://<your-domain.com>/login and complete login
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
## `/custom-domain check` (default)
|
|
134
|
+
|
|
135
|
+
Diagnose the current domain setup. Run all checks and report pass/fail.
|
|
136
|
+
|
|
137
|
+
```
|
|
138
|
+
Domain Health Check:
|
|
139
|
+
DNS Resolution: pass/fail (nslookup + CNAME target)
|
|
140
|
+
SSL Certificate: pass/fail (curl -sI, check for valid cert)
|
|
141
|
+
Frontend Serving: pass/fail (HTTP 200 from custom domain)
|
|
142
|
+
Backend CORS: pass/fail (CORS_ORIGINS includes custom domain)
|
|
143
|
+
FRONTEND_URL: pass/fail (points to custom domain)
|
|
144
|
+
Auth Provider: pass/fail (domain in authorized list — manual check, remind user)
|
|
145
|
+
Railway Domain: pass/fail (old .up.railway.app still works)
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
### Check Commands
|
|
149
|
+
|
|
150
|
+
```bash
|
|
151
|
+
# 1. DNS
|
|
152
|
+
dig <domain> CNAME +short
|
|
153
|
+
nslookup <domain>
|
|
154
|
+
|
|
155
|
+
# 2. SSL
|
|
156
|
+
curl -svI https://<domain> 2>&1 | grep -E "subject:|subjectAltName|SSL"
|
|
157
|
+
|
|
158
|
+
# 3. Frontend
|
|
159
|
+
curl -sI https://<domain> | head -5
|
|
160
|
+
|
|
161
|
+
# 4. CORS
|
|
162
|
+
railway service backend
|
|
163
|
+
railway variables --kv | grep CORS_ORIGINS
|
|
164
|
+
# Verify the custom domain is in the JSON array WITH quotes
|
|
165
|
+
|
|
166
|
+
# 5. FRONTEND_URL
|
|
167
|
+
railway variables --kv | grep FRONTEND_URL
|
|
168
|
+
|
|
169
|
+
# 6. Railway URL still works
|
|
170
|
+
curl -sI https://<railway-frontend-url> | head -3
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
---
|
|
174
|
+
|
|
175
|
+
## `/custom-domain fix`
|
|
176
|
+
|
|
177
|
+
Fix common domain issues based on symptoms.
|
|
178
|
+
|
|
179
|
+
### Issue: CORS blocking (dashboard spinning after login)
|
|
180
|
+
|
|
181
|
+
**Symptom:** Console error: `Access to fetch blocked by CORS policy: No 'Access-Control-Allow-Origin' header`
|
|
182
|
+
|
|
183
|
+
**Fix:**
|
|
184
|
+
```bash
|
|
185
|
+
railway service backend
|
|
186
|
+
# Check current value
|
|
187
|
+
railway variables --kv | grep CORS_ORIGINS
|
|
188
|
+
# Fix — ensure proper JSON with inner quotes
|
|
189
|
+
railway variables set 'CORS_ORIGINS=["https://<custom-domain>","https://<railway-frontend-url>"]'
|
|
190
|
+
# Verify
|
|
191
|
+
railway variables --kv | grep CORS_ORIGINS
|
|
192
|
+
# Wait for redeploy
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
### Issue: Backend crash after CORS change
|
|
196
|
+
|
|
197
|
+
**Symptom:** Config parser error like `SettingsError: error parsing value for field "CORS_ORIGINS"`
|
|
198
|
+
|
|
199
|
+
**Cause:** Inner quotes stripped from JSON array. MCP set-variables tool or Railway dashboard may mangle JSON.
|
|
200
|
+
|
|
201
|
+
**Fix:** Use `railway variables set` CLI directly with single-quoted value:
|
|
202
|
+
```bash
|
|
203
|
+
railway variables set 'CORS_ORIGINS=["https://domain1","https://domain2"]'
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
### Issue: SSL certificate mismatch
|
|
207
|
+
|
|
208
|
+
**Symptom:** `subjectAltName does not match host name`
|
|
209
|
+
|
|
210
|
+
**Cause:** Railway hasn't provisioned SSL cert yet (takes 2-10 min), or Cloudflare proxy is off.
|
|
211
|
+
|
|
212
|
+
**Fix:**
|
|
213
|
+
- Wait 10 minutes and retry
|
|
214
|
+
- If using Cloudflare, enable proxy (orange cloud) — Cloudflare provides instant SSL
|
|
215
|
+
- Check Railway dashboard for domain verification status
|
|
216
|
+
|
|
217
|
+
### Issue: Auth session refresh failing
|
|
218
|
+
|
|
219
|
+
**Symptom:** Auth SDK reports session refresh failed, signs user out on the new domain.
|
|
220
|
+
|
|
221
|
+
**Cause:** Custom domain not in auth provider's authorized environments/origins list.
|
|
222
|
+
|
|
223
|
+
**Fix:** Add the domain in your auth provider's dashboard (see Step 4 of setup).
|
|
224
|
+
|
|
225
|
+
### Issue: Cloudflare Insights CSP violation
|
|
226
|
+
|
|
227
|
+
**Symptom:** `static.cloudflareinsights.com/beacon.min.js violates Content Security Policy`
|
|
228
|
+
|
|
229
|
+
**Cause:** Cloudflare proxy injects analytics script; CSP doesn't allow it.
|
|
230
|
+
|
|
231
|
+
**Fix:** Add to `script-src` in your security headers config:
|
|
232
|
+
```
|
|
233
|
+
https://static.cloudflareinsights.com
|
|
234
|
+
```
|
|
235
|
+
Non-blocking — only affects Cloudflare analytics, not app functionality.
|
|
236
|
+
|
|
237
|
+
---
|
|
238
|
+
|
|
239
|
+
## What Does NOT Need to Change
|
|
240
|
+
|
|
241
|
+
- **Frontend env vars** — API URL stays as backend Railway URL (frontend talks to backend directly)
|
|
242
|
+
- **Agent/worker services** — no changes needed
|
|
243
|
+
- **Backend code** — CORS is configured via env vars, not hardcoded
|
|
244
|
+
- **Old Railway URL** — continues working alongside custom domain (both serve the same app)
|
|
245
|
+
|
|
246
|
+
## Project-Specific Reference
|
|
247
|
+
|
|
248
|
+
Add a section at the bottom of your project's copy of this skill with your actual values:
|
|
249
|
+
|
|
250
|
+
```markdown
|
|
251
|
+
## Project Reference Values
|
|
252
|
+
|
|
253
|
+
| Item | Value |
|
|
254
|
+
|------|-------|
|
|
255
|
+
| Custom domain | `your-domain.com` |
|
|
256
|
+
| CNAME target | `xxx.up.railway.app` |
|
|
257
|
+
| Frontend Railway URL | `frontend-production-xxx.up.railway.app` |
|
|
258
|
+
| Backend Railway URL | `backend-production-xxx.up.railway.app` |
|
|
259
|
+
| Auth provider | Stytch / Auth0 / Clerk / etc. |
|
|
260
|
+
| DNS provider | Cloudflare / etc. |
|
|
261
|
+
```
|