Skills guide.
If you do something for the second time, make it a skill. Skills are Markdown workflows that become slash commands — created inside haze, stored as plain files, versioned with your repo.
Create a skill
Run /skills, choose add skill, and answer three prompts. haze uses the model to draft the SKILL.md for you.
/skills # picker → add skill step 1/3 · name › deploy-check step 2/3 · scope › this project step 3/3 · description › Run lint, typecheck, tests, and build in one call. Report each step pass/fail with the exact failing output; do not stop at the first failure. ✓ created .haze/skills/deploy-check/SKILL.md — invoke with /deploy-check
Edit the generated Markdown freely afterwards — it is the source of truth, and haze rereads it whenever its content changes.
Anatomy of a skill
A skill is Markdown with YAML frontmatter: a name, a description that doubles as the match condition, and the instructions the model follows.
--- name: code-review description: Use when the user asks for a review of their branch or diff. --- You are a focused senior code reviewer. Workflow: 1. Diff the current branch against main. 2. Review for bugs, missing tests, and unclear naming. 3. Prefer DRY and KISS; flag duplication worth extracting. 4. Cite every finding as file:line with a severity. 5. End with a three-bullet summary: risks, test gaps, suggested next step.
Skills never execute code themselves — they are instructions that shape what the agent does with its normal tools. They can also list reference files the model reads on demand.
Scope & precedence
- Project skills live in
.haze/skills/<name>/SKILL.md— commit them and share the team's workflows with the repo. - Global skills live in
~/.haze/skills/<name>/SKILL.md— personal workflows that follow you across projects. - A project skill overrides a same-named global skill in that workspace unless you disable the project scope.
- Project skills are repository content: haze labels their provenance visibly and treats them as untrusted input.
Invoking skills
- Directly: type the skill name as a slash command —
/code-review,/deploy-check. Tab completion works. - Automatically: the model can load a matching skill on its own when your request matches its description.
- From the picker:
/skillslists every skill with its source (project/global) and state.
Starter recipes
Run /skills → add skill, and paste these descriptions:
Manage skills
The /skills picker shows each skill's scope and lets you enable, disable, validate, or remove it. Disabled skills disappear from slash completion and model loading, without deleting the file.