Skip to main content
Skills are the extension mechanism that makes NeuralCleave self-modifying. Each skill is a Python module at ~/.neuralcleave/skills/<name>/skill.py.

Anatomy of a skill

A skill module contains either plain functions, auto-wrapped as tools, or an explicit Plugin subclass for full control over metadata and lifecycle hooks.
Every top-level, non-underscore-prefixed callable becomes a tool the agent can invoke. The function’s docstring becomes the tool description. Blocked imports (subprocess, ctypes, winreg, msvcrt, pty, tty, termios, fcntl) are rejected at write/proposal time.

Two ways a skill gets written

1. You write it — immediate, trusted

Writes to disk and hot-loads immediately. This is the trusted path — for code you wrote yourself, or installed from the Skills Gallery.

2. The agent writes it — proposed for review

When the agent itself calls the write_skill tool during a conversation, the code is validated and queued as a pending proposal — not written to disk or loaded. A human decides:
or via REST:
This review gate exists because agent-authored code running immediately, with no review step, is a real trust boundary — not a hypothetical one.

Managing installed skills

A quarantined skill can be restored by re-running skills write with the same name — that clears the quarantine flag.

Multi-step tool chains

Skills participate the same way any tool does in multi-step tool chains — the pipeline calls a tool, feeds the result back to the LLM, which can call another tool, up to max_tool_steps (default 5) per turn.

Example conversation

Approving it (neuralcleave skills review approve a1b2c3d4) writes the file, loads it, and makes celsius_to_fahrenheit callable in the very next turn. ~/.neuralcleave/skills/ can also be seeded from the bundled example skills — see Skills Gallery for the full list (calendar, GitHub, Jira, Linear, Notion, weather, and more).