بنقرة واحدة
gsd-surface
Toggle which skills are surfaced — apply a profile, list, or disable a cluster without reinstall
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Toggle which skills are surfaced — apply a profile, list, or disable a cluster without reinstall
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
Create detailed phase plan (PLAN.md) with verification loop
File a phase artifact into MemPalace; mirror decision facts into its temporal KG
Cross-AI plan convergence - replan until review concerns are resolved.
Generate an AI-SPEC.md design contract for phases that involve building AI systems.
Start a new milestone cycle — update PROJECT.md and route to requirements
project lifecycle | milestones audits summary
| name | gsd-surface |
| description | Toggle which skills are surfaced — apply a profile, list, or disable a cluster without reinstall |
| argument-hint | [list|status|profile <name>|disable <cluster>|enable <cluster>|reset] |
| allowed-tools | ["Read","Write","Bash"] |
Sub-commands: list · status · profile · disable · enable · reset
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 |
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:
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)
readSurface(runtimeConfigDir) → if null, seed from readActiveProfile(runtimeConfigDir).surfaceState.baseProfile = name.writeSurface(runtimeConfigDir, surfaceState).const registry = require(runtimeConfigDir + '/gsd-core/bin/lib/capability-registry.cjs');
const layout = resolveRuntimeArtifactLayout(runtime, runtimeConfigDir, scope);
applySurface(runtimeConfigDir, layout, manifest, CLUSTERS, registry);
<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 → resolve layout → applySurface:
const registry = require(runtimeConfigDir + '/gsd-core/bin/lib/capability-registry.cjs');
const layout = resolveRuntimeArtifactLayout(runtime, runtimeConfigDir, scope);
applySurface(runtimeConfigDir, layout, manifest, CLUSTERS, registry);
<cluster>. N skills removed from surface."surfaceState.disabledClusters.writeSurface → resolve layout → applySurface:
const registry = require(runtimeConfigDir + '/gsd-core/bin/lib/capability-registry.cjs');
const layout = resolveRuntimeArtifactLayout(runtime, runtimeConfigDir, scope);
applySurface(runtimeConfigDir, layout, manifest, CLUSTERS, registry);
<cluster>. N skills added back to surface.".gsd-surface.json exists.readActiveProfile(runtimeConfigDir) (install-time profile).<name>."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.
# 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.
core, standard, full), exit.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>