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.gityaml
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 updatebash
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> --localbash
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 personabash
listshows remote resources and descriptions;--locallists project resources.installcopies a remote resource into the project and never overwrites an existing local resource.updatesynchronizes selected installed resources, or all installed resources when no names are supplied.uploadpublishes project resources.--forcereplaces an existing remote resource.removedeletes remote resources.--localdeletes 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 <-- remotetext
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> --forcebash
Repository checkouts are cached under ~/.ene/library/.