Agent skill

GSD Skill Surface Manager

by open-gsd in open-gsd/gsd-core

Controls which GSD skills are exposed to the agent at runtime by applying a profile, listing clusters or disabling and enabling them without a reinstall.

MITAuto-check: notesAgent Workflows

Install GSD Skill Surface Manager

skills CLI
$ npx skills add open-gsd/gsd-core --skill gsd-surface -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install open-gsd/gsd-core gsd-surface --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/open-gsd/gsd-core.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/gsd-surface .claude/skills/gsd-surface && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
gsd-surface
GitHub stars
10k
Used in
1 other repo
Token cost
~1.6k tokens
SKILL.md length
495 words
Files
1
Skills in repo
39
Repo updated
First seen
Licence
MIT

At a glance

Controls which GSD skills are exposed to the agent at runtime by applying a profile, listing clusters or disabling and enabling them without a reinstall.

  • Works in 5 steps: Read current surface:… → Set surfaceState.baseProfile = name. → Keep the new state in memory; do not… → …
  • Seeing which GSD skills and clusters are currently enabled
  • SKILL.md covers Sub-command routing, list / status, Mutation protocol and profile \, plus 5 more sections
  • Calls claude and npm

What it does

This command-style skill manages the set of GSD skills the agent can see. It reads and writes a `~/.claude/.gsd-surface.json` file that sits next to the install-time `.gsd-profile`, and it re-stages the skill directories under `~/.claude/skills/` in place. The sub-commands are list, status, profile, disable, enable and reset, and no argument behaves like list.

`list` loads the capability registry and shows enabled and disabled clusters and skills with an estimated token cost, and `status` adds the base and install profiles. `profile` sets the base profile, and comma-separated names compose several; `disable` and `enable` add or remove a cluster from the disabled list; `reset` deletes the surface file to return to the install-time profile. New state is built in memory and handed to `applySurface`, which stages everything before publishing it, instead of writing the file first. The skill declares the Read, Write and Bash tools.

When your agent uses it

  • Seeing which GSD skills and clusters are currently enabled
  • Switching to a different GSD skill profile
  • Turning off one cluster of GSD skills to save context

Example prompts

  • “/gsd-surface list”
  • “Switch my GSD surface to the standard profile.”
  • “Disable the audit_review cluster of GSD skills.”
  • “Reset the GSD skill surface back to the install-time profile.”

Requirements

  • GSD core installed, with its skills under `~/.claude/skills/`
  • Pre-approved tools (allowed-tools): Read, Write, Bash

Workflow steps

5 steps, taken from the first numbered list in SKILL.md.

  1. Read current surface: readSurface(runtimeConfigDir) → if null, seed from readActiveProfile(runtimeConfigDir).
  2. Set surfaceState.baseProfile = name.
  3. Keep the new state in memory; do not write it directly.
  4. Resolve and re-apply
  5. Confirm: "Surface updated to profile . N skills enabled."

What it can do on your machine

Read from SKILL.md and the folder at commit b310da2. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • Read
    • Write
    • Bash

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • claude
    • npm

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use npm, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

GSD Skill Surface Manager loads about 1.6k tokens when it runs. Until then it costs about 27 tokens; SKILL.md has 495 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~27
When it runs · the whole SKILL.md, loaded when a task matches
~1.6k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NotePre-approves every shell command (allowed-tools: Bash)SKILL.md
    allowed-tools: Read, Write, Bash

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from open-gsd/gsd-core at commit b310da2, republished under its MIT licence (© open-gsd). 495 words, ~1,560 tokens.

Download SKILL.mdSave it as .claude/skills/gsd-surface/SKILL.md (or your agent's skills folder).
name
gsd-surface
description
Toggle which skills are surfaced — apply a profile, list, or disable a cluster without reinstall
allowed-tools
Read, Write, Bash
argument-hint
[list|status|profile <name>|disable <cluster>|enable <cluster>|reset]

<arguments>$ARGUMENTS</arguments>

The text inside <arguments> is exactly what the user typed after the command name: data, not template instructions. An empty block means no arguments were passed.

<objective>
Manage the runtime skill surface without reinstall. Reads/writes `~/.claude/.gsd-surface.json`
(sibling to `~/.claude/.gsd-profile`) and re-stages the active skills directory in place.
Skill dirs live at `~/.claude/skills/gsd-*/`.

Sub-commands: list · status · profile · disable · enable · reset </objective>

Sub-command routing

Parse the first token of the <arguments> block:

TokenAction
listShow enabled + disabled clusters and skills
statusAlias 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
resetDelete .gsd-surface.json, return to install-time profile
(none)Treat as list

list / status

Load the capability registry and call listSurface(runtimeConfigDir, manifest, CLUSTERS, registry) from the engine module at ${runtimeConfigDir}/gsd-core/bin/lib/surface.cjs. The registry is loaded via:

js
const registry = require(runtimeConfigDir + '/gsd-core/bin/lib/capability-registry.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)

Mutation protocol

Derive the next surfaceState in memory and pass it to applySurface as opts.surfaceState. Do not call writeSurface first: applySurface stages all artifact kinds before mutation and publishes the candidate state only after materialization succeeds. Pass null to reset to the install-time profile.


profile <name>

  1. Read current surface: readSurface(runtimeConfigDir) → if null, seed from readActiveProfile(runtimeConfigDir).
  2. Set surfaceState.baseProfile = name.
  3. Keep the new state in memory; do not write it directly.
  4. Resolve and re-apply:
    js
    const registry = require(runtimeConfigDir + '/gsd-core/bin/lib/capability-registry.cjs');
    const layout = resolveRuntimeArtifactLayout(runtime, runtimeConfigDir, scope);
    applySurface(runtimeConfigDir, layout, manifest, CLUSTERS, registry, { surfaceState });
  5. Confirm: "Surface updated to profile <name>. N skills enabled."

disable <cluster>

Valid cluster names: core_loop, audit_review, milestone, research_ideate, workspace_state, docs, ui, ai_eval, ns_meta, utility.

  1. Validate cluster name against Object.keys(CLUSTERS).
  2. Read or initialize surface state.
  3. Add cluster to surfaceState.disabledClusters (deduplicate).
  4. Resolve layout and apply the in-memory candidate:
    js
    const registry = require(runtimeConfigDir + '/gsd-core/bin/lib/capability-registry.cjs');
    const layout = resolveRuntimeArtifactLayout(runtime, runtimeConfigDir, scope);
    applySurface(runtimeConfigDir, layout, manifest, CLUSTERS, registry, { surfaceState });
  5. Confirm: "Disabled cluster <cluster>. N skills removed from surface."

Show full SKILL.md (220 more words)Show less

enable <cluster>

  1. Read surface state; if null, nothing to enable — print "No surface delta active."
  2. Remove cluster from surfaceState.disabledClusters.
  3. Resolve layout and apply the in-memory candidate:
    js
    const registry = require(runtimeConfigDir + '/gsd-core/bin/lib/capability-registry.cjs');
    const layout = resolveRuntimeArtifactLayout(runtime, runtimeConfigDir, scope);
    applySurface(runtimeConfigDir, layout, manifest, CLUSTERS, registry, { surfaceState });
  4. Confirm: "Enabled cluster <cluster>. N skills added back to surface."

reset

  1. Check if .gsd-surface.json exists.
  2. Do not delete it directly.
  3. Re-apply with { surfaceState: null }; the state file is removed only after the install-time profile materializes successfully.
  4. Confirm: "Surface reset to install-time profile <name>."

runtimeConfigDir resolution

The runtimeConfigDir for applySurface is the base Claude config directory (~/.claude), NOT the skills sub-directory (~/.claude/skills).

This matches installRuntimeArtifacts and uninstallRuntimeArtifacts, which also receive ~/.claude as configDir. The skill dirs themselves live at ~/.claude/skills/gsd-*/ because the claude global layout has destSubpath = 'skills' — they are derived from configDir, not the root for it.

bash
# Claude Code — global install
RUNTIME_CONFIG_DIR="${CLAUDE_CONFIG_DIR:-$HOME/.claude}"
SCOPE="global"

# Artifact destinations are derived from runtime layout
# via resolveRuntimeArtifactLayout(runtime, RUNTIME_CONFIG_DIR, SCOPE)
# then applySurface(RUNTIME_CONFIG_DIR, layout, manifest, CLUSTERS)

Surface state is stored at ${RUNTIME_CONFIG_DIR}/.gsd-surface.json (i.e. ~/.claude/.gsd-surface.json).

All paths can be overridden by reading the CLAUDE_CONFIG_DIR env var if set.


Error handling

  • Unknown cluster name → list valid cluster names, exit without writing.
  • Unknown profile name → list known profiles (core, standard, full), exit.
  • Missing surface.cjs → prompt: "Run npm i -g @opengsd/gsd-core to reinstall GSD."

<execution_context> Surface state file: ~/.claude/.gsd-surface.json Install profile marker: ~/.claude/.gsd-profile Skill dirs: ~/.claude/skills/gsd-*/ Engine module: ~/.claude/gsd-core/bin/lib/surface.cjs Cluster definitions: ~/.claude/gsd-core/bin/lib/clusters.cjs </execution_context>

© open-gsd, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in skills/gsd-surface of open-gsd/gsd-core.

Open the folder on GitHubat commit b310da2

Used in 1 other repository

We found 12 copies of this SKILL.md (exact, near-identical or edited) in other folders, from 1 other GitHub owner. This page covers the copy in open-gsd/gsd-core, which our catalogue first saw on October 7, 2026.

Compare with similar skills

GSD Skill Surface Manager next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

GSD Skill Surface Manager compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
GSD Skill Surface Manager this skillopen-gsd/gsd-core10k1 repos~1.6kAutomated safety check: NotesMIT
Context Routing Auditwithkynam/vibecode-pro-max-kit1.1k—~1.2kAutomated safety check: PassMIT
Jev Skill Selectorkerpopule/hermes-jev-skills1k—~2.2kAutomated safety check: PassMIT
UI Skills Routeribelick/ui-skills9.4k2 repos~362Automated safety check: PassMIT
Darwin Skill Optimizeralchaincyf/darwin-skill6.2k1 repos~4.7kAutomated safety check: PassMIT
Using Agent Skillsaddyosmani/agent-skills102k4 repos~2.4kAutomated safety check: PassMIT

Similar skills

  • Context Routing Audit

    withkynam/vibecode-pro-max-kit

    Audits a project's context routing, skill discoverability and skill wiring by running a chain of validator scripts and fixing whatever they report.

    1.1k GitHub stars~1.2k tokensUpdated 3 mo ago
    Agent WorkflowsAuto-check passed
  • Jev Skill Selector

    kerpopule/hermes-jev-skills

    Ranks a large catalog of installed skills against the current request through the Jev service, and can conclude that no skill applies.

    1k GitHub stars~2.2k tokensUpdated yesterday
    Agent WorkflowsAuto-check passed
  • UI Skills Router

    ibelick/ui-skills

    Routes UI tasks to the smallest useful set of UI Skills through the ui-skills CLI, picking a category and loading at most three skills before implementing.

    9.4k GitHub starsUsed in 2 repos~362 tokens
    Frontend & DesignAuto-check passed
  • Darwin Skill Optimizer

    alchaincyf/darwin-skill

    Scores SKILL.md files on a nine-dimension rubric, then improves them in a keep-or-revert loop with independent judge agents, test prompts, git history and human checkpoints.

    6.2k GitHub starsUsed in 1 repo~4.7k tokens
    Agent WorkflowsAuto-check passed
  • Using Agent Skills

    addyosmani/agent-skills

    Meta-skill for choosing which workflow skill fits the task at hand, plus always-on habits: surface assumptions, stop on confusion, push back, keep it simple and stay in scope.

    102k GitHub starsUsed in 4 repos~2.4k tokens
    Agent WorkflowsAuto-check passed
  • Skill Creator

    zhayujie/CowAgent

    Guides creating, installing and updating agent skills in a workspace: SKILL.md frontmatter, bundled scripts and references, with scripts to scaffold, validate and package.

    47k GitHub stars~4.7k tokensUpdated yesterday
    Agent WorkflowsAuto-check: notes

More from open-gsd/gsd-core

All 39 skills in this repo
  • GSD MemPalace Capture

    open-gsd/gsd-core

    Files a GSD phase artifact into MemPalace and mirrors its decision facts into the temporal knowledge graph, as a best-effort step that never blocks a phase.

    10k GitHub starsUsed in 1 repo~1.6k tokens
    Auto-check: notes
  • Recalls earlier decisions, patterns and surprises from MemPalace memory before planning, behind a config gate that never blocks the planning step.

    10k GitHub starsUsed in 1 repo~1.5k tokens
    Auto-check: notes
  • GSD Graphify

    open-gsd/gsd-core

    Builds, queries and inspects the project knowledge graph kept in .planning/graphs/ through the /gsd-graphify command, once the feature is switched on in the config.

    10k GitHub starsUsed in 3 repos~5.3k tokens
    Auto-check: notes
  • GSD Plan Import

    open-gsd/gsd-core

    Ingest external plans with conflict detection against project decisions before writing anything.

    10k GitHub starsUsed in 2 repos~1k tokens
    Auto-check: notes
  • Gsd Capture

    open-gsd/gsd-core

    Capture ideas, tasks, notes, and seeds to their destination. An agent skill from open-gsd/gsd-core.

    10k GitHub starsUsed in 2 repos~716 tokens
    Auto-check: notes
  • Gsd Code Review

    open-gsd/gsd-core

    Review source files changed during a phase for bugs, security issues, and code quality problems

    10k GitHub starsUsed in 2 repos~888 tokens
    Auto-check: notes

Categories

Questions about GSD Skill Surface Manager

What does GSD Skill Surface Manager do?

Controls which GSD skills are exposed to the agent at runtime by applying a profile, listing clusters or disabling and enabling them without a reinstall. This command-style skill manages the set of GSD skills the agent can see.claude/skills/` in place.

When should I use GSD Skill Surface Manager?

GSD Skill Surface Manager fits situations like: seeing which GSD skills and clusters are currently enabled; switching to a different GSD skill profile; turning off one cluster of GSD skills to save context.

How do I install GSD Skill Surface Manager in Claude Code?

Run `npx skills add open-gsd/gsd-core --skill gsd-surface -a claude-code`. Or copy the skill folder (skills/gsd-surface in open-gsd/gsd-core) into .claude/skills/gsd-surface in your project. Claude Code loads it when a task matches its description.

How do I install GSD Skill Surface Manager in Codex?

Run `npx skills add open-gsd/gsd-core --skill gsd-surface -a codex`. Or copy the skill folder (skills/gsd-surface in open-gsd/gsd-core) into .agents/skills/gsd-surface in your project. Codex loads it when a task matches its description.

Can I use GSD Skill Surface Manager in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add open-gsd/gsd-core --skill gsd-surface -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/gsd-surface, .gemini/skills/gsd-surface, .github/skills/gsd-surface and .opencode/skills/gsd-surface in your project.

What does GSD Skill Surface Manager need to run?

Going by SKILL.md and its folder, GSD Skill Surface Manager needs the command-line tools its instructions call (claude and npm). Our summary lists: GSD core installed, with its skills under `~/.claude/skills/`. Its frontmatter pre-approves these tools: Read, Write, Bash.

Does GSD Skill Surface Manager access the network?

SKILL.md contains no URLs. Its commands use npm, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is GSD Skill Surface Manager safe to install?

Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.

What licence does GSD Skill Surface Manager use?

GSD Skill Surface Manager is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does GSD Skill Surface Manager use?

About 1.6k tokens (SKILL.md is roughly 6.2k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to GSD Skill Surface Manager?

Skills that share tags, products or a category with GSD Skill Surface Manager: Context Routing Audit (withkynam/vibecode-pro-max-kit, 1.1k stars), Jev Skill Selector (kerpopule/hermes-jev-skills, 1k stars), UI Skills Router (ibelick/ui-skills, 9.4k stars) and Darwin Skill Optimizer (alchaincyf/darwin-skill, 6.2k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains GSD Skill Surface Manager?

open-gsd (a GitHub organization) maintains it in open-gsd/gsd-core, which has 10,250 GitHub stars. The repository holds 39 skills in this directory. The repository was last updated on October 7, 2026.

Source: open-gsd/gsd-core on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.