skillspec visibility manages harness-native skill visibility for Codex and Claude Code. It writes native visibility controls — Codex agents/openai.yaml policy files, Claude settings.json skillOverrides, and Claude SKILL.md frontmatter disable-model-invocation flags — and produces a reversible manifest so any change can be undone precisely.
Visibility controls affect whether a harness offers a skill implicitly (no explicit invocation needed), only when explicitly named, by name only, or not at all. This is distinct from the router: visibility controls harness-native discovery behavior, while the router adds active routing and selection logic on top of the discovered skill set.
visibility plan
Shows the planned visibility changes without applying them. Use this to preview what apply would do.
visibility apply
Applies native harness visibility controls and writes a reversible manifest.
For each skill,
apply writes or updates:
- Codex —
<skill-dir>/agents/openai.yamlwithpolicy.allow_implicit_invocation: true/false. - Claude (repo-local) —
.claude/settings.jsonwith askillOverrides.<skill-name>entry. - Claude (shared
.agentsroot) —SKILL.mdfrontmatterdisable-model-invocationflag.
visibility restore
Restores exact file snapshots from a visibility manifest. Does not infer previous state — it reads the before_content snapshots recorded by apply and writes them back exactly.
Workspace install visibility policies
Theskillspec workspace install command accepts a --visibility-policy flag that controls which packages receive implicit versus manual-only visibility when --apply-visibility is used. These values are not skillspec visibility --profile values — they apply only to workspace install.
The
skillspec visibility command itself uses --profile router-managed as its profile selector. For standalone visibility management outside of workspace install, pass --profile router-managed to visibility plan and visibility apply.
When the router is installed and enabled, visibility is managed automatically by
router install, router enable, router disable, and router index refresh. Use skillspec visibility directly only for standalone visibility management outside the router lifecycle, or when you need fine-grained control over individual skill visibility.Visibility values and harness mapping
Codex has no native
name-only or off state. The manifest records these values for the router so they survive a restore.
Visibility manifest
The manifest is a JSON file with schemaskillspec/visibility-manifest/v1. It records:
- Each changed skill’s name, paths, harness kind, before and after visibility states.
- File-level snapshots of every modified file with before and after content.
apply calls merge new changes rather than overwriting the record of prior changes. This means restore always reverts to the state before the first apply for each skill, not the state before the most recent one.
Distinction from the router
Related commands
skillspec router install— Install the router; automatically manages visibility.skillspec router index refresh— Refresh the router index and reapply router-managed visibility.skillspec skills set-visibility— Set visibility for a single skill.skillspec status— View current visibility state alongside router and skill installation state.