Security scanner and skill registry for agent tool descriptions
Project description
Beneath the world tree there is a well. Odin gave an eye to drink from it.
Your agent won't need to. We bottled the water.
Contents
- AX Description Rubric — score your tool descriptions
- Install — one command
- What you get — example output
- The Rubric — five criteria, explained
- Skills — what's available
- Why "brunnr"
- Contributing
What this is
brunnr is a skills marketplace for Claude Code. Install it once, get access to every skill in the collection.
AX Description Rubric
The first skill: the AX Description Rubric — a tool that scores your agent-facing tool descriptions against five criteria that determine whether an agent will ever call your tool.
Most tool descriptions score 1-2 out of 5. The rubric tells you why, then rewrites them to score 5.
Install
Option 1 — Claude Code (recommended)
# Add the brunnr marketplace
/plugin marketplace add Peleke/brunnr
# Install a skill
/plugin install ax-rubric@brunnr-skills
# Use it
/ax-rubric
Paste your tool description when prompted. Or pass it inline:
/ax-rubric "Query the knowledge base for structured learnings, patterns, and skills relevant to your current work context."
Option 2 — CLI
# uv (recommended)
uv tool install brunnr
# or pipx
pipx install brunnr
# or pip
pip install brunnr
# Install a skill from the registry
brunnr install ax-rubric
# Scan your skills for threats
brunnr scan skills/
# Run the eval harness
brunnr eval ax-rubric --dry-run
What you get
knowledge_base_query
Score: 1/5
| Criterion | Result | Notes |
|---|---|---|
| Output shape | fail | "structured learnings, patterns, and skills" — how many? |
| Cost signal | fail | No indication of response size |
| Trigger clarity | fail | "relevant to your current work context" — always true |
| Specificity | fail | Lists categories, solves no named problem |
| Differentiation | fail | Half your tools say "relevant to current context" |
Rewritten (5/5):
"Check for known pitfalls before starting work. Returns 3-5 specific warnings for your tech stack. ~500 tokens. Call once at session start."
One input, five scores, one rewrite. The rewrite is ready to paste into your tool definition.
The rubric
Five criteria. Binary pass/fail. Most descriptions fail.
0-1 pass = invisible (agent will never call it). 2-3 = marginal. 4-5 = habitual.
The bar for habitual use is 4/5. Most tool descriptions in the wild score 1-2. The tool might be excellent. The agent will never know.
Skills
| Skill | What it does | Based on |
|---|---|---|
| ax-rubric | Score tool descriptions for agent discoverability. 5 criteria, pass/fail, rewrite. | I Don't Deliberate About This |
More skills coming. Each one ships alongside an article in the AX series.
Why "brunnr"
Old Norse brunnr: well, spring.
As in Mímisbrunnr — the Well of Mímir beneath Yggdrasil. Odin sacrificed an eye to drink from it and gain wisdom. The well doesn't give you answers. It gives you the capacity to see what was always there.
Your agent doesn't need to sacrifice anything. It just needs tool descriptions that don't waste its context window.
Contributing
Have an agent-facing tool? Run /ax-rubric on your own descriptions first. If they score 4+, you're ahead of 90% of the field.
Want to add a skill? Open a PR. The rubric applies to skill descriptions too.
License
Part of the Agent Experience (AX) series by Peleke Sengstacke and Maren.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file brunnr-0.1.1.tar.gz.
File metadata
- Download URL: brunnr-0.1.1.tar.gz
- Upload date:
- Size: 1.5 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
337b9ca22cd7ec6d81345274a855287c78a21b672bb5f1de7788688ff07f5cd7
|
|
| MD5 |
ba71319580bf6fb94ac29269c516e7ed
|
|
| BLAKE2b-256 |
17099ff5a2608ace75b4ab57f0c331a2e3e3696c4d3ced245c8b0186a915d4cd
|
Provenance
The following attestation bundles were made for brunnr-0.1.1.tar.gz:
Publisher:
publish.yml on Peleke/brunnr
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
brunnr-0.1.1.tar.gz -
Subject digest:
337b9ca22cd7ec6d81345274a855287c78a21b672bb5f1de7788688ff07f5cd7 - Sigstore transparency entry: 1088245434
- Sigstore integration time:
-
Permalink:
Peleke/brunnr@921288319fc5128b8b781b073a29607189d30e29 -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/Peleke
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@921288319fc5128b8b781b073a29607189d30e29 -
Trigger Event:
push
-
Statement type:
File details
Details for the file brunnr-0.1.1-py3-none-any.whl.
File metadata
- Download URL: brunnr-0.1.1-py3-none-any.whl
- Upload date:
- Size: 19.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2a941770faee63ceaddbf603fbf9f8678647f766b10805c5ec415dbd7bc75a25
|
|
| MD5 |
d8b10d3c97f6b5a08b3bd179999f2d09
|
|
| BLAKE2b-256 |
c3ab30346481254ef3788eb30cc03f79228c11fae519f6aacfa8cc92caa75a9a
|
Provenance
The following attestation bundles were made for brunnr-0.1.1-py3-none-any.whl:
Publisher:
publish.yml on Peleke/brunnr
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
brunnr-0.1.1-py3-none-any.whl -
Subject digest:
2a941770faee63ceaddbf603fbf9f8678647f766b10805c5ec415dbd7bc75a25 - Sigstore transparency entry: 1088245512
- Sigstore integration time:
-
Permalink:
Peleke/brunnr@921288319fc5128b8b781b073a29607189d30e29 -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/Peleke
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@921288319fc5128b8b781b073a29607189d30e29 -
Trigger Event:
push
-
Statement type: