Expand description
Controlled-tier skills (Domain 11, concept 15) — install and remove,
each through the door the harness itself publishes.
Charter (docs/plans/orchestration-domain-11-2026-09-02.md §0.4):
supercode never runs a skill registry, never resolves a slug, never
unpacks an archive. Every mutation is the harness’s own door:
- Hermes —
hermes skills install <identifier> --yes/hermes skills uninstall <name> --yes, withHERMES_HOMEin the environment. The pinned help (parity/fixtures/hermes-help.txt, re-checked against the installed 0.21.0) says the positional is a registry identifier or a direct HTTP(S) URL to aSKILL.md; hermes publishes NO local-directory install form, so a local path is refused rather than handed to a verb that cannot take it. - OpenClaw —
openclaw skills install <skill-ref>(@owner/slug,git:<repo>, or a local skill directory;--globalfor the shared managed directory,--as <slug>to name it). At the pin there is NOopenclaw skills remove, soremoveis refused withUnsupportedAction— supercode does not delete files behind the harness’s back. - Claude Code, Codex, opencode, pi — the door IS the directory. These
four have no skills CLI at all; a skill is installed by placing its
package at the root the harness’s own loader reads
(
crate::skills::writable_skill_roots, transcribed from the same inventories ORCH-11 reads), and removed by deleting that directory. Both operations are confined to those roots: a name that would escape one, or a package the loader does not recognize, is refused. - supercode itself — refused: it has no skills root of its own
(
crate::skills::SKILL_HARNESSESnames the six harnesses it reads).
The three ORCH-18 rules are inherited verbatim:
- The harness’s answer is the answer. After the door succeeds the row
is re-read through the ORCH-11 loader (
crate::skills::list_skills) and returned; aremovethat leaves the row behind is a failure. Note thathermes skills installexits 0 on a fetch failure, so the re-read — not the exit status — is what decides. - The door is narrated. Every outcome carries
ran: the harness command that was executed, or the directory operation in its shell spelling (cp -R <source> <dest>,rm -r <dest>). - A door the harness does not have is refused
(
SkillControlError::Unsupported→UnsupportedAction), never a silent no-op and never a file supercode writes on its own authority.
Structs§
- Skill
Mutation - One mutating request, in the uniform Domain 11 vocabulary.
- Skill
Mutation Outcome - What one mutation did, with the harness’s own row read back afterwards.
Enums§
- Skill
Control Error - Why a mutation could not be performed.
- Skill
Verb - One uniform mutating verb.
Constants§
- CONTROLLED_
SKILL_ HARNESSES - Harnesses whose installed skills supercode can MUTATE through a door the
harness publishes. Identical to
SKILL_HARNESSEStoday: the two CLI harnesses have a verb, the core four have their loader’s directory. - OPENCLAW_
REMOVE_ REFUSAL - Why
removeis refused on OpenClaw at the pinned version. - SUPERCODE_
REFUSAL - Why supercode refuses to install a skill into itself.
Functions§
- mutate_
skill - Perform one mutation through the harness’s own door, then re-read the row.
- supports_
skill_ control - Whether
harnesshas any skills door supercode can drive.