Packs
Share what your agents learned. Get instincts on day one.
A pack is a shareable folder of Adage rules, their evidence and the conditions where they apply. Export learned reflexes for a team, or start with built-in rules called instincts. Skills still carry instructions and judgment; packs make supported, repeatable steps explicit.
The label on the box: its name and version, where it applies (one repository here), what it needs, and the most it may ever ask to run (E0: advice only).
format = "adage-pack/1"
[pack]
name = "acme-billing/work-items"
version = "0.1.0"
origin = "reflex"
description = "Context gathering for prompts that name a work item"
[applicability]
kind = "repo"
repo_keys = ["acme-billing"]
[requires]
harness = ["claude-code"]
templates = ["read@1"]
[exec]
requested = "E0"
[provenance]
tool = "adage 0.1.0"
[provenance.origins]
organic = 3
synthetic = 0
declared = 0
instinct = 0
imported = 0
.venv.
Real files. The reflex pack is one Adage learned in a study (acme-billing, Claude Sonnet 5) and shared with adage share, signed with a throwaway test key; the instinct is Adage's own packs/python-env, exactly as its marketplace pins it.
-
01 / share
Package it
One command builds the pack, scans for recognized secrets and machine paths, and signs it with your SSH key. Review the files before sharing: a scanner cannot guarantee that every private detail was removed.
adage share work-items --out packs/work-items -
02 / add
Hand it over
Your teammate's Adage checks the signature, works out what the pack depends on and re-checks every command before it installs anything.
adage add packs/work-items -
03 / bind
It binds where it fits
Each pack says where it applies: its own repository, or any repository whose files match. Shared reflexes start as suggestions, and a reflex learned on that machine always wins.
adage packs
Instincts come in the box
Adage's own repository is its first marketplace: eight instinct packs, each pinned by its digest, the way a Claude Code marketplace lists plugins. Every copy of Adage carries it, so nothing is downloaded. Each pack names a detector that reads your repository's files (Makefile, package.json, pyproject.toml, lockfiles) and turns on only where it finds what it needs. Most provide guidance; the verified Python environment rule can rewrite a supported command before the agent runs it. Separately delegated execution requires approval. A matching reflex learned from your own work takes precedence.
adage/python-envRun tests inside the project's Python environment.adage/test-wrapperUse the test target that sets what the tests need.adage/test-commandUse the repository's one declared test command.adage/pytest-wrapperRun pytest the way the repository runs it.adage/package-managerUse pnpm, yarn or bun where the repository says so.adage/regenerateRegenerate after editing a generator's inputs.adage/generated-filesDon't hand-edit generated files.adage/lockfilesDon't hand-edit lockfiles.
Two optional packs, adage/verification-discovery and adage/verification-recovery, flag empty test runs and suspicious fail-then-pass retries. They are off by default and provide advice, not proof that a check is sufficient or permission to skip it.
See the marketplace with adage marketplace, which packs apply with adage packs, and turn any off with adage packs off adage/lockfiles.
More detail: skills, packs and trust
| A skill | A pack | |
|---|---|---|
| Who decides it applies | The model, from a description | Adage, on your CPU, when its trigger matches |
| What reaches the agent | The whole text, each time it loads | One line from a fixed template, only on a match |
| Evidence | Depends on the skill and its evaluations | Per reflex: sessions seen, a confidence bound, how much telling the agent helps |
| Execution | The agent uses its tools and permissions | Guidance by default; supported command rewrites, or separately approved execution |
A pack is trusted one of two ways: an SSH signature from someone you trust, or a digest pinned by a marketplace you trust (Adage's own, for its instincts). Where it is stored doesn't matter. Commit it to your repository, send the folder, or keep a team marketplace in a git repository. Adding a marketplace by name comes next.