commands/gsd/surface.md
Sub-commands: list · status · profile · disable · enable · reset </objective>
Parse the first token of $ARGUMENTS:
| Token | Action |
|---|---|
list | Show enabled + disabled clusters and skills |
status | Alias for list plus token cost summary |
profile <name> | Write baseProfile and re-stage |
profile <n1>,<n2> | Composed profiles (comma-separated, no spaces) |
disable <cluster> | Add cluster to disabledClusters, re-stage |
enable <cluster> | Remove cluster from disabledClusters, re-stage |
reset | Delete .gsd-surface.json, return to install-time profile |
| (none) | Treat as list |
Call listSurface(runtimeConfigDir, manifest, CLUSTERS) from
get-shit-done/bin/lib/surface.cjs. Display:
Enabled (N skills, ~T tokens):
core_loop: new-project discuss-phase plan-phase execute-phase help update
audit_review: …
…
Disabled:
utility: health stats settings …
Token cost: ~T (budget cap ~500 tokens for 200k context @ 1%)
For status also append:
Base profile: standard (from .gsd-surface.json)
Install profile: standard (from .gsd-profile)
readSurface(runtimeConfigDir) → if null, seed from readActiveProfile(runtimeConfigDir).surfaceState.baseProfile = name.writeSurface(runtimeConfigDir, surfaceState).applySurface(runtimeConfigDir, commandsDir, agentsDir, manifest, CLUSTERS).<name>. N skills enabled."Valid cluster names: core_loop, audit_review, milestone, research_ideate,
workspace_state, docs, ui, ai_eval, ns_meta, utility.
Object.keys(CLUSTERS).surfaceState.disabledClusters (deduplicate).writeSurface → applySurface.<cluster>. N skills removed from surface."surfaceState.disabledClusters.writeSurface → applySurface.<cluster>. N skills added back to surface.".gsd-surface.json exists.readActiveProfile(runtimeConfigDir) (install-time profile).<name>."# Claude Code
RUNTIME_CONFIG_DIR=~/.claude/skills
# Resolve commandsDir and agentsDir
COMMANDS_DIR=~/.claude/commands/gsd
AGENTS_DIR=~/.claude/agents
All paths can be overridden by reading the CLAUDE_CONFIG_DIR env var if set.
core, standard, full), exit.surface.cjs → prompt: "Run npm i -g get-shit-done to reinstall GSD."<execution_context>
Surface state file: ~/.claude/skills/.gsd-surface.json
Install profile marker: ~/.claude/skills/.gsd-profile
Engine module: ~/.claude/get-shit-done/bin/lib/surface.cjs
Cluster definitions: ~/.claude/get-shit-done/bin/lib/clusters.cjs
</execution_context>