Axela
For people who use Claude Code skills

Know when your Claude Code skills change.

Skills are folders of instructions your coding agent reads and follows. Axela watches the ones you installed from a publisher you chose: if those files stop matching what the publisher signed, it saves your copy, puts the published one back, and tells you. Skills you wrote yourself are never touched.

Open source Works offline No account to try it

Start with the skills you already have

Before anything is installed or signed, look at what is already on your machine: every file that runs, every reach for the network, every credential path touched. Under a second, offline, no account.

brew install random1st/tap/skillctl
skillctl lint ~/.claude/skills
1

Read what you have

skillctl lint — a second, offline, no account, your own skills.

2

See a change caught

skillctl demo — a minute, in a sandbox, nothing of yours touched.

3

Bring your organisation

Publish your own and watch every computer that runs them. Sign in.

What this catches, and what it does not

It catches

A skill you installed being edited afterwards — by anything on the machine, including the agent itself. That is the whole gap: nothing else looks at those files again after install.

Your edit is not lost

The changed copy is saved before the published one goes back, and skillctl adopt keeps it if the change was yours.

It does not catch

A skill that was harmful when it was published. A signature tells you who wrote those bytes and that nobody changed them since — it does not tell you the instructions are sensible. A matching copy does not mean a skill is safe.

It cannot stop

Anything running as you — it could edit the checker too. A change is noticed and put back, not prevented.

See a change caught and restored

Open the video page

Try the demo on your computer

Install the checker on macOS, then run the demo:

brew install random1st/tap/skillctl
skillctl demo

The demo changes a sample skill, catches the change and restores its approved copy inside a sandbox. No account needed. It does not check or change your own installed skills.

Axela's published command is currently skillctl. If Homebrew is unavailable, use the release downloads. Linux installation instructions.

Follow public skills with terminal commands

These optional setup commands use a POSIX shell and need Git, curl and the claude CLI on PATH.

1. Check the public source

These downloads are public keys. The publisher's key identifies whose skills you choose to follow; the notary's key checks the second signature.

curl -fL https://raw.githubusercontent.com/random1st/axela-skills/main/catalog.pub -o axela-publisher.pub &&
curl -fL https://notary.axela.app/notary.pub -o axela-notary.pub &&
skillctl subscribe https://github.com/random1st/axela-skills \
  --catalog https://notary.axela.app/v1/catalogs/random1st/axela-skills \
  --key axela-publisher.pub --notary-key axela-notary.pub &&
skillctl sync --report-only

A first check may say nothing is installed yet. That checks the catalog; it does not mean a skill on your computer has been verified.

If the check says catalog has expired, stop here and ask the publisher to renew it. An unavailable source also needs to be fixed before installation. You can try skillctl demo meanwhile: it demonstrates checking and restoring a skill in an isolated sandbox. Creating an organisation will not repair this public catalog.

2. Install one skill and check it

Run this only after the source check succeeds. It checks again before installing, then checks what your client actually installed. Every command stops if the previous one fails. Use whichever client you work in — both are checked the same way.

skillctl sync --report-only &&
claude plugin marketplace add random1st/axela-skills &&
claude plugin install test-driven-development@axela-skills --scope user &&
skillctl sync --report-only

In Codex, the same four steps:

skillctl sync --report-only &&
codex plugin marketplace add random1st/axela-skills &&
codex plugin add test-driven-development@axela-skills &&
skillctl sync --report-only

Continue only when the last check reports at least 1 verified and 0 needing attention, with no unchecked marketplace. If it reports zero verified or an error, stop and resolve that finding first.

3. Turn on checks before each session

skillctl hook install --apply

After the hook is installed, restart Claude Code. The installed skill is now checked before sessions, and local changes can be restored from its signed source.

Ask your agent

One command, then ask in words.

# Claude Code
claude mcp add --transport http axela https://axela.app/mcp

# Codex
codex mcp add axela --url https://axela.app/mcp
What happens next

Say “Set up this computer for Axela”. It signs you in through the browser. After that you ask for the rest the same way: publish this repository's skills, tell me what changed on that machine, close somebody's access.

Both clients are checked the same way, each with its own session hook. Codex reviews a hook before it runs it, so it asks you to trust this one the next time it starts; until you do, nothing is checked.

Set up your organisation or publish skills

Publishing is invite-only during beta.

Publish skills — sign in

Optional: connect to your organisation

Install the local checker, add it to your agent, and sign in when the browser opens. Your agent handles the setup and confirms that installed skills were checked and the report reached your organisation.

# Homebrew on macOS.
brew install random1st/tap/skillctl
skillctl setup

On Linux, follow the installation steps; Windows binaries are in the release archive. Then run skillctl setup.

Restart Claude Code or Codex and say "Connect this computer to Axela." Choose your organisation in the browser, then return to your agent to finish. If Codex asks to approve the session check, confirm it there.

To share your own skills, open their repository and say "Publish these skills to Axela for my organisation." You approve the setup in the browser and the publication changes in your agent. It confirms when the exact catalog is published.

Or type it yourself

skillctl connect
skillctl status --refresh

Publishing from a repository: skillctl publish --org your-organisation. The command remembers your setup and tells you the next step. Renew before expiry with skillctl publish --renew, review the renewal, then submit it.

Which repositories can be signed

Whatever your repository already publishes, in the shape it already publishes it. A Claude Code marketplace is read from .claude-plugin/marketplace.json, a Codex plugin from .codex-plugin/plugin.json, and a repository that has both is read as the marketplace, because that is the broader statement of what it ships.

Codex has no marketplace format of its own — it clones a repository and reads the Claude one. Its plugin manifest lists skill directories rather than plugins, so each skill becomes an entry and carries the plugin's version, which is the only version Codex has.

Cursor has nothing here to sign: it installs nothing from a marketplace, and its skills are plain directories with no publisher behind them. What it does have, skillctl lint reads — the contents, without a signature to check them against.

How checks work and what they guarantee

The publisher signs a record of approved files. We download the repository, look at what the skills do, check the files against that record and add a second signature. Your machine checks both signatures before accepting it. The publisher's private key stays with them.

But does this mean a skill is safe? No. A signature identifies its publisher and lets you check for changes; it cannot guarantee that instructions are safe to run.

The session check runs inside Claude Code today. Connected machines refresh revocations at session start or sync. An offline computer remains stale until it reconnects.

Prefer to self-host? The source is available under Apache-2.0.