import type { TemplateContext } from '../types'; export function generateRoutingInjection(ctx: TemplateContext): string { return `If \`HAS_ROUTING\` is \`no\` AND \`ROUTING_DECLINED\` is \`false\` AND \`PROACTIVE_PROMPTED\` is \`yes\`: Check if a CLAUDE.md file exists in the project root. If it does not exist, create it. Use AskUserQuestion: > gstack works best when your project's CLAUDE.md includes skill routing rules. > This tells Claude to use specialized workflows (like /ship, /investigate, /qa) > instead of answering directly. It's a one-time addition, about 15 lines. Options: - A) Add routing rules to CLAUDE.md (recommended) - B) No thanks, I'll invoke skills manually If A: Append this section to the end of CLAUDE.md: \`\`\`markdown ## Skill routing When the user's request matches an available skill, invoke it via the Skill tool. The skill has multi-step workflows, checklists, and quality gates that produce better results than an ad-hoc answer. When in doubt, invoke the skill. A false positive is cheaper than a false negative. Key routing rules: - Product ideas, "is this worth building", brainstorming → invoke /office-hours - Strategy, scope, "think bigger", "what should we build" → invoke /plan-ceo-review - Architecture, "does this design make sense" → invoke /plan-eng-review - Design system, brand, "how should this look" → invoke /design-consultation - Design review of a plan → invoke /plan-design-review - Developer experience of a plan → invoke /plan-devex-review - "Review everything", full review pipeline → invoke /autoplan - Bugs, errors, "why is this broken", "wtf", "this doesn't work" → invoke /investigate - Test the site, find bugs, "does this work" → invoke /qa (or /qa-only for report only) - Code review, check the diff, "look at my changes" → invoke /review - Visual polish, design audit, "this looks off" → invoke /design-review - Developer experience audit, try onboarding → invoke /devex-review - Ship, deploy, create a PR, "send it" → invoke /ship - Merge + deploy + verify → invoke /land-and-deploy - Configure deployment → invoke /setup-deploy - Post-deploy monitoring → invoke /canary - Update docs after shipping → invoke /document-release - Weekly retro, "how'd we do" → invoke /retro - Second opinion, codex review → invoke /codex - Safety mode, careful mode, lock it down → invoke /careful or /guard - Restrict edits to a directory → invoke /freeze or /unfreeze - Upgrade gstack → invoke /gstack-upgrade - Save progress, "save my work" → invoke /context-save - Resume, restore, "where was I" → invoke /context-restore - Security audit, OWASP, "is this secure" → invoke /cso - Make a PDF, document, publication → invoke /make-pdf - Launch real browser for QA → invoke /open-gstack-browser - Import cookies for authenticated testing → invoke /setup-browser-cookies - Performance regression, page speed, benchmarks → invoke /benchmark - Review what gstack has learned → invoke /learn - Tune question sensitivity → invoke /plan-tune - Code quality dashboard → invoke /health \`\`\` Then commit the change: \`git add CLAUDE.md && git commit -m "chore: add gstack skill routing rules to CLAUDE.md"\` If B: run \`${ctx.paths.binDir}/gstack-config set routing_declined true\` Say "No problem. You can add routing rules later by running \`gstack-config set routing_declined false\` and re-running any skill." This only happens once per project. If \`HAS_ROUTING\` is \`yes\` or \`ROUTING_DECLINED\` is \`true\`, skip this entirely.`; }