Skip to content

How GSD's Multi-Runtime Support Works Across Claude Code, Gemini, Codex, Copilot, and More

I switched between three different AI coding assistants last month. Claude Code for complex refactoring. Gemini CLI for quick prototyping. Codex for automated code generation.

Each time I switched, I had to reinstall my workflow tools. Configure agents. Set up templates. Remember different command syntaxes.

Then I discovered GSD’s multi-runtime support. One installer. Fifteen runtimes. Same agents, workflows, and references everywhere.

The Problem: Fragmented AI Coding Workflows

I was maintaining separate configurations for each AI assistant:

My configuration chaos
~/.claude/
commands/
gsd/
plan.md
execute.md
...
~/.codex/
commands/
gsd/
plan.md
execute.md
...
~/.gemini/
commands/
gsd/
plan.md
execute.md
...

Every update meant copying files across three locations. Every new runtime meant starting from scratch.

The Solution: Runtime Abstraction Layer

GSD’s installer handles the differences. I run one command:

Installing GSD for multiple runtimes
npx get-shit-done-cc@latest

The installer presents an interactive menu. I select which runtimes I use. It handles the rest.

How Command Syntax Differs by Runtime

The first thing I noticed: each runtime has its own command convention.

RuntimeCommand SyntaxExample
Claude Code/gsd-command/gsd-plan
Gemini CLI/gsd-command/gsd-plan
Copilot/gsd-command/gsd-plan
Codex$gsd-command$gsd-plan
Cline.clinerulesNo slash commands

At first I was confused. Why different syntaxes?

Then I understood: each runtime parses inputs differently. Claude Code recognizes slash commands. Codex expects dollar-sign prefixes. Cline uses a configuration file instead.

GSD’s abstraction layer generates the right format for each:

Runtime abstraction layer output
┌─────────────────────────────────────────────────────┐
│ GSD Core Agents │
│ (planner, executor, researcher, verifier...) │
└─────────────────────┬───────────────────────────────┘
┌─────────────────────────────────────────────────────┐
│ Runtime Abstraction Layer │
│ - Detects target runtime │
│ - Adapts command format │
│ - Places files in correct location │
└─────────────────────┬───────────────────────────────┘
┌─────────────┼─────────────┐
▼ ▼ ▼
┌─────────┐ ┌─────────┐ ┌─────────┐
│ Claude │ │ Codex │ │ Cline │
│ /gsd-* │ │ $gsd-* │ │.clinerules│
└─────────┘ └─────────┘ └─────────┘

Installation Locations by Runtime

Each AI assistant expects configuration in a specific directory:

RuntimeGlobal LocationLocal Location
Claude Code~/.claude/.claude/
Gemini CLI~/.gemini/.gemini/
Codex~/.codex/.codex/
Copilot~/.github/.github/
Cursor~/.cursor/.cursor/
Windsurf~/.codeium/windsurf/.windsurf/
Cline~/.cline/.clinerules

I used global installation for tools I use everywhere. Local installation for project-specific configurations.

Non-Interactive Installation for Automation

For CI/CD pipelines or setup scripts, I use the flag-based approach:

Non-interactive GSD installation
# Single runtime
npx get-shit-done-cc --claude --global
npx get-shit-done-cc --gemini --local
npx get-shit-done-cc --codex --global
# All runtimes at once
npx get-shit-done-cc --all --global

This skips the interactive menu entirely.

Verifying Installation

Each runtime requires a different verification method:

Verification commands by runtime
# Claude Code, Gemini, Copilot, Qwen Code
> /gsd-help
# Codex
> $gsd-help
# Cline
> cat .clinerules

I accidentally tried /gsd-help in Codex once. Nothing happened. The dollar-sign prefix matters.

Skills vs Commands: A Format Evolution

Modern Claude Code (2.1.88+) and Codex use a newer “skills” format:

Skills format structure
.claude/
skills/
gsd-planner/
SKILL.md
gsd-executor/
SKILL.md

Older versions use the “commands” format:

Commands format structure
.claude/
commands/
gsd/
plan.md
execute.md

The installer detects the version and uses the appropriate format. I didn’t need to know which format my runtime expected.

What Remains Identical Across Runtimes

Despite syntax differences, every runtime gets the same core content:

  • Agents: planner, executor, researcher, verifier
  • Workflows: new-project, plan-phase, execute-phase
  • References: checkpoints, gates, model-profiles
  • Templates: PLAN.md, SUMMARY.md

This consistency means I can switch runtimes without relearning GSD’s workflow.

Supported Runtimes (As of v1.29)

GSD supported runtimes
Claude Code OpenCode Gemini CLI
Kilo Codex Copilot
Cursor Windsurf Antigravity
Augment Trae Qwen Code
Cline CodeBuddy

Fifteen runtimes. One command to install all.

Troubleshooting Common Issues

Issue: Commands not recognized after installation.

Cause: Wrong runtime directory.

Fix: Check the installation location table above. For Windsurf, the global location is ~/.codeium/windsurf/, not ~/.windsurf/.


Issue: Mixed syntax errors (using /gsd-* in Codex).

Cause: Muscle memory from another runtime.

Fix: Reference the syntax table. Codex uses $gsd-*, not /gsd-*.


Issue: Cline installation shows no slash commands.

Cause: Cline doesn’t support slash commands.

Fix: Check .clinerules file instead. GSD generates configuration directives there.

Internationalization

README translations exist for:

  • Portuguese (README.pt-BR.md)
  • Chinese (README.zh-CN.md)
  • Japanese (README.ja-JP.md)
  • Korean (README.ko-KR.md)

The installer output remains in English, but documentation covers major languages.

Final Words + More Resources

My intention with this article was to help others share my knowledge and experience. If you want to contact me, you can contact by email: Email me

Here are also the most important links from this article along with some further resources that will help you in this scope:

Oh, and if you found these resources useful, don’t forget to support me by starring the repo on GitHub!

Comments