Skill index
Every skill in the marketplace, who may invoke it, and what makes it fire
A skill is the unit of capability here. One directory, one SKILL.md, and
frontmatter that declares who may reach for it.
| Skill | Invoked by | What it does |
|---|---|---|
| openspec:adr | model + user | Record an Architecture Decision Record (ADR) under docs/adr/ - proactively, when a decision made during other work clears the bar (a new external dependency, a technology/pattern choice with long-term consequences, a boundary expensive to move later), not only when explicitly asked via the `adr` skill. |
| openspec:init | user only | Apply the personal engineering standard to this project - OpenSpec (with ADRs formalized at archive time) + LikeC4 architecture diagrams. |
| git:commit | model + user | Commit (and push) changes using Conventional Commits. |
| git:pr | model + user | Open, name and describe a pull/merge request (GitHub PR, GitLab MR) and its branch. |
| tui:record | model + user | Record a terminal UI as a demo video worth publishing - an asciinema cast driven by a scripted, verified take, then cut and rendered to a GIF. |
The invocation policy
The invoke: block in a skill's frontmatter is its portable semantics: the
part UZE translates into whatever each harness calls native.
---
name: init
description: Apply the personal engineering standard to this project…
invoke:
model: false
user: true
---| Declaration | Reads as | The agent | A person |
|---|---|---|---|
(no invoke: block) | the default | discovers and uses it | calls it by name |
model: false, user: true | an explicit action | never triggers it | calls it by name |
model: true, user: false | background-only | uses it | has nothing to type |
Absent is the default on purpose. A skill that only fires when someone remembers to ask is documentation with extra steps. The whole reason to write a capability as a skill is that the agent finds it when the work matches.
Narrowing is the exception, and it needs a reason. openspec:init
is narrowed because it restructures a repository, and "the user
mentioned specs" is not consent to do that.
This is ADR-030 in UZE. There is no commands/ directory in an Agent Plugins
1.0 package. A slash command is a user-invocable skill, and each vendor's
surface is derived from the policy rather than duplicated as a separate file.
What fires when
The description field is not a summary. It is the trigger. It is what an
agent matches against when deciding whether this skill is the right tool, so it
names the phrasings, the situations and the symptoms, and it says what the skill
is not for.
git:commit: asked to commit, push, save or check in. And on its own initiative, once a coherent unit of work builds, passes its fast tests, and is not tangled with unrelated in-progress changes.git:pr: asked to open a PR/MR, or when finished work on a branch needs to reach the default branch through review. Also before publishing a branch, to name it right.openspec:adr: proactively, when a decision made during other work clears the bar: a new external dependency, a technology choice with long-term consequences, a boundary expensive to move later. Also to backfill decisions that predate the convention.openspec:init: never on its own. A person invokes it, once, to adopt the standard in a project.tui:record: asked to record, film, capture or demo a TUI or CLI; to produce a README hero, a docs landing animation, a release clip or a bug repro; or to redo a recording that is too long, too slow, robotic, or that leaked personal data.
Skills that carry more than prose
Two things a SKILL.md can bring with it, both loaded only when needed:
references/: long material the skill reads on demand rather than carrying in context.tui:recordkeeps its driver vocabulary and post-production notes here.scripts/: executables the skill drives instead of reimplementing.tui:recordshipstui-record(the whole pipeline) anddriver-lib.sh(what a take sources).
A plugin-level resources/ directory holds files a skill installs into a
project rather than reads. See anatomy.