Skills
Skills are reusable prompt packages that give Ene focused procedures, domain knowledge, and optional tools. They are compatible with the open Agent Skills format and add Ene-specific optional tools.py support.
Ene advertises only each skill's name and description in the system prompt.
When a task matches, the model is instructed to reuse complete skill instructions already in context and call load_skill only when they are missing or incomplete, such as after compaction.
Repeated loads still return the full instructions; this prompt guidance reduces redundant loads rather than enforcing deduplication.
This progressive disclosure keeps the normal prompt small while making detailed workflows available on demand.
Find and invoke skills
Skills are discovered from three locations, in this precedence order:
- bundled skills in the installed
enepackage; - project skills under
./.ene/skills/; - personal skills under
~/.ene/skills/.
Bundled names therefore cannot be overridden. Malformed skills and lower-precedence copies shadowed by the same name are reported at startup and by /skills reload.
| Command | Effect |
|---|---|
/skills |
List discovered skills, sources, warnings, and load counts. |
/skills reload |
Re-scan skill directories after a change. |
/skills <name> |
Load a skill's instructions without starting a model turn. |
/<skill-name> <task> |
Apply a skill to the supplied task. |
/<skill-name> |
Run its declared default invocation, or ask for a task. |
Built-in slash commands take precedence over skills with the same name. Loaded-skill state is saved with the session and included in usage summaries.
See Bundled Skills for the workflows included with Ene.
Create a custom skill
A skill is a directory containing SKILL.md. It may also include scripts, references, assets, or native tools:
.ene/skills/
my-workflow/
SKILL.md
scripts/ # optional deterministic programs
references/ # optional documentation loaded on demand
assets/ # optional templates or static data
tools.py # optional skill-provided toolstext
Use ./.ene/skills/ for a project-specific skill or ~/.ene/skills/ for a personal skill shared across local projects.
Every SKILL.md starts with YAML frontmatter followed by Markdown instructions:
---
name: my-workflow
description: Prepare and validate a release. Use when publishing a new version.
---
1. Inspect the current version and changelog.
2. Run the focused test suite.
3. Build and validate the release artifacts.markdown
name and description are required.
The description should state what the skill does and when it should activate because it is the metadata the model uses to select the skill.
Optional Agent Skills fields such as license, compatibility, and metadata are parsed but not used. allowed-tools is accepted for compatibility but is not enforced; the active persona controls Ene's tool surface.
Keep the common workflow in SKILL.md. Put lengthy conditional material in references/, repeatable deterministic operations in scripts/, and templates in assets/. Reference these files by paths relative to the skill directory.
A root tools.py can define structured tools that are registered only while the skill is loaded. Because Ene imports and executes this Python in-process, install only skills you trust. See Skill-provided tools for the runtime behavior.
Add a ## Default invocation section only when /<skill-name> without task text can safely run one clearly defined workflow.
Otherwise Ene loads the skill and asks the user what to do.
The bundled skill-creator instructions provide the complete authoring and validation workflow:
/skill-creator Create a project skill for validating release artifacts.text
After adding or editing a skill, run /skills reload. To share custom skills and personas through Git, use the Library.