Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 12 additions & 3 deletions docs/agents/agent-skills.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,13 @@ This keeps the system prompt small while still making skills discoverable.

## Where skills live

mux discovers skills from two roots:
mux discovers skills from three roots:

- **Project-local**: `<projectRoot>/.mux/skills/<skill-name>/SKILL.md`
- **Global**: `~/.mux/skills/<skill-name>/SKILL.md`
- **Built-in**: shipped with mux

If a skill exists in both locations, **project-local overrides global**.
If a skill exists in multiple locations, the precedence order is: **project-local > global > built-in**.

<Info>
mux reads skills using the active workspace runtime. For SSH workspaces, skills are read from the
Expand Down Expand Up @@ -80,6 +81,13 @@ metadata:

mux injects an `<agent-skills>` block into the system prompt listing the available skills.

You can apply a skill in two ways:

- **Explicit (slash command)**: type `/{skill-name}` (optionally followed by a message: `/{skill-name} ...`) in the chat input. mux will send your message normally (or a small default message if you omit one), and persist a synthetic snapshot of the skill body in history immediately before that message.
- Example: `/init` runs the built-in `init` skill to bootstrap `AGENTS.md`. You can override it with `~/.mux/skills/init/SKILL.md` (or `.mux/skills/init/SKILL.md` for a single project).
- Type `/` to see skills in the suggestions list.
- **Agent-initiated (tool call)**: the agent can load skills on-demand.

To load a skill, the agent calls:

```ts
Expand All @@ -101,7 +109,8 @@ agent_skill_read_file({ name: "my-skill", filePath: "references/template.md" });

## Current limitations

- There is no `/skill` command or UI activation flow yet; skills are loaded on-demand via tools.
- Slash command invocation supports only a single skill as the first token (for example `/{skill-name}` or `/{skill-name} ...`).
- Skill bodies may be truncated when injected to avoid accidental mega-prompts.
- `allowed-tools` is not enforced by mux (it is tolerated in frontmatter, but ignored).

## Further reading
Expand Down
10 changes: 10 additions & 0 deletions scripts/zizmor.sh
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,16 @@
# Fallback: if Docker isn't available/running (common on dev machines), download a
# prebuilt zizmor binary from GitHub Releases and run it directly.

if ! command -v docker >/dev/null 2>&1; then
echo "⚠️ docker not found; skipping zizmor" >&2
exit 0
fi

if ! docker info >/dev/null 2>&1; then
echo "⚠️ docker daemon not running; skipping zizmor" >&2
exit 0
fi

set -euo pipefail

cd "$(dirname "${BASH_SOURCE[0]}")/.."
Expand Down
Loading