Ene Documentation

Library

ene lib synchronizes reusable skills and personas through a Git repository. It manages authored resources under the current project's ./.ene/skills/ and ./.ene/personas/.

The bundled library skill lets the agent operate this feature for you.

Configure the repository

Set an accessible repository URL in ~/.ene.yaml:

ene_lib: git@github.com:username/ene-resources.git
yaml

The repository uses its main branch and stores resources under skills/<name>/ and personas/<name>/. Ene uses your existing Git and SSH credentials. An empty repository is initialized by the first upload.

Typical workflow

If you create a skill in project A and want to use it in project B:

# project A
cd /path/to/A
ene lib upload <my-skill>

# project B
cd /path/to/B
ene lib install <my-skill>

# synchronize later changes in either direction
ene lib update
bash

Commands

Skills are the default resource kind:

ene lib list [pattern]
ene lib list [pattern] --local
ene lib install <name> [<name> ...]
ene lib update [<name> ...]
ene lib update <name> --force
ene lib upload <name> [<name> ...]
ene lib upload <name> --force
ene lib remove <name> [<name> ...]
ene lib remove <name> --local
bash

Add --verbose to any library command to show Git operation details.

Add --kind persona to operate on personas:

ene lib list --kind persona
ene lib install my-coder --kind persona
ene lib upload my-coder --kind persona
bash
  • list shows remote resources and descriptions; --local lists project resources.
  • install copies a remote resource into the project and never overwrites an existing local resource.
  • update synchronizes selected installed resources, or all installed resources when no names are supplied.
  • upload publishes project resources. --force replaces an existing remote resource.
  • remove deletes remote resources. --local deletes only project copies.

Remote resources are not available to an agent until installed. After installing or updating a skill, run /skills reload; for a persona, run /persona reload.

Synchronization and conflicts

Each installed resource records its last synchronized tree in .ene-lib.json. This base allows Ene to distinguish local-only changes, remote-only changes, and conflicts even on another machine.

A normal update uploads local-only changes and downloads remote-only changes. Each completed resource is shown in an aligned status row:

gitlab-mr              up-to-date
gitlab-review-service  local --> remote
another-skill          local <-- remote
text

local is the project copy; remote is the library copy. The arrow indicates which copy receives the changes; up-to-date means the copies already match.

If both copies changed, it leaves both copies unchanged so you can merge the desired changes into the project-local resource. Validate the merged copy, then run:

ene lib update <name> --force
bash

Repository checkouts are cached under ~/.ene/library/.

Type to search.