/skills

Skills.

A skill is a set of instructions for a task you do again and again: preparing a release, writing a commit message, reviewing a pull request your team's way. You write the instructions once; after that, /release or /review is enough. Nilux can also use a skill by itself when your request matches it.

Create a skill

A skill is a Markdown file. Put it in one of two places:

  • ~/.nilux/skills/ for skills you use in every project;
  • .nilux/skills/ in a project for skills that only make sense there.

The simplest form is one file named after the skill, for example .nilux/skills/release.md. If the skill needs extra files, such as a checklist or a script, give it a folder with a SKILL.md inside: .nilux/skills/release/SKILL.md.

markdown
---
name: release
description: Prepare a release: run the checks, bump the version, write the changelog
argument-hint: version, for example 1.4.0
---
1. Run the tests and the linter. Stop if anything fails.
2. Set the version in package.json to the version I give.
3. Add a changelog entry listing the changes since the last tag.
4. Show me the result. Do not commit or push.

Then run it:

bash
❯/release 1.4.0

Whatever you type after the command (1.4.0 here) is passed to Nilux together with the skill's instructions.

Frontmatter fields

The lines between the two --- describe the skill:

  • name: the command name. It defaults to the file or folder name.
  • description: what the skill does. It is shown in /skills, and Nilux reads it to decide when the skill fits a request.
  • argument-hint: a hint about what to type after the command.
  • when_to_use: when Nilux should use the skill on its own, without you typing the command.
  • allowed-tools: limit the tools Nilux may use while following the skill, for example Read, Grep, Bash.
  • user-invocable: false: hide the skill from the / list; Nilux can still use it by itself.
  • disable-model-invocation: true: Nilux never uses the skill on its own; it runs only when you type its command.

Inside the instructions, ${NILUX_SKILL_DIR} stands for the skill's own folder, so you can point to a script or template kept next to it.

Good to know

  • /skills lists all your skills and where each one comes from.
  • If a project skill has the same name as one of yours, the project's skill is used.
  • Do not give a skill the name of a built-in command such as /clear; the built-in command wins.
  • A new skill appears in the / list in your next session.
  • Helper agents do not use skills; skills run in your main conversation.

Skills or agents?

A skill is guidance inside your current conversation: quick, and it sees everything you have discussed. A subagent is a separate helper with its own conversation, better for large self-contained pieces of work.