用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/FerroxLabs/ferrox-factory --skill ferrox-surface命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
Something was built and you want tests covering what it promised to do
A step involves building an AI system and you want its design and evals pinned down first
You want issues found, classified, fixed, tested and committed without steering each one
基于 SOC 职业分类
正在显示 SKILL.md
| name | ferrox-surface |
| description | Too many commands, or too few. Applies a profile or disables a cluster without reinstalling |
| 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 .ferrox-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}/ferrox-core/bin/lib/surface.cjs. The registry is loaded via:
const registry = require(runtimeConfigDir + '/ferrox-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 .ferrox-surface.json)
Install profile: standard (from .ferrox-profile)
readSurface(runtimeConfigDir) → if null, seed from readActiveProfile(runtimeConfigDir).surfaceState.baseProfile = name.writeSurface(runtimeConfigDir, surfaceState).const registry = require(runtimeConfigDir + '/ferrox-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 + '/ferrox-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 + '/ferrox-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.".ferrox-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/ferrox-*/ 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}/.ferrox-surface.json
(i.e. ~/.claude/.ferrox-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 ferrox-core to reinstall Ferrox."<execution_context>
Surface state file: ~/.claude/.ferrox-surface.json
Install profile marker: ~/.claude/.ferrox-profile
Skill dirs: ~/.claude/skills/ferrox-*/
Engine module: ~/.claude/ferrox-core/bin/lib/surface.cjs
Cluster definitions: ~/.claude/ferrox-core/bin/lib/clusters.cjs
</execution_context>