Guides

Dex Trove: a skill library for your registry

Dex Trove, the trove of dexterities, is a licence-clean library of agent artifacts for Ananke. It provides 968 items (skills, agents, instructions, hooks, workflows and plugins), learned from open repositories such as github/awesome-copilot, anthropics/skills and obra/superpowers, plus first-party skills. Each item is admitted only if its own licence allows redistribution, and ships with a strict ananke.yaml manifest and full provenance (upstream repo, pinned commit, licence evidence).

Ananke is the harness: registry, resolution, policy, activation and evidence. Dex Trove is content you load into it.

flowchart LR
  U[Open repos] --> D[dex learn<br/>licence · guards · normalise]
  D --> W[(dex-trove wheel<br/>ananke.yaml per item)]
  W -->|ananke registry learn python:dex-trove| R[Ananke registry]
  W -->|dex ananke sync --kind skill| R
  R --> A[apm install · activate · lock]

Load everything

Animated: install Dex Trove, learn it into the registry, search, show and resolve a skill

pip install "ananke-plexus[dex]"     # same as: pip install ananke-plexus dex-trove
ananke registry init
ananke registry learn python:dex-trove

The Python importer reads the installed wheel’s RECORD and registers every ananke.yaml found up to four path parts deep (dex_trove/<kind>/<namespace>.<name>/ananke.yaml). It never imports the package.

A small number of security-teaching items contain credential-shaped placeholders (for example api_key="PINECONE_API_KEY"). Ananke’s secret scanner refuses those by default, so this command reports them as denied and exits 1. Everything else is registered. To get a clean exit, use dex ananke sync (below), which skips them.

Load a curated slice

dex ananke sync --project .                               # everything except secret-flagged items
dex ananke sync --project . --kind skill --kind agent     # by kind
dex ananke sync --project . --source superpowers          # by source namespace
dex ananke sync --project . --name awesome-copilot/git-commit
dex ananke sync --project . --dry-run

dex ananke sync stages the selected items and runs ananke registry learn on them. The ananke CLI is the contract: Dex never writes the registry directly. Re-running is idempotent; unchanged items are skipped.

What arrives

Dex kindAnanke kindNotes
skillskill
agentagentinstructions.ref points at the agent file
instruction, promptprompttag instruction for instructions
hooktoolcode-bearing: no permissions declared, so Ananke warns until reviewed
workflowworkflow
pluginbundlemembers are ananke://<kind>/<ns>/<name> references

Every item arrives as trust discovered in channel candidate. Items without code declare empty permissions explicitly; items with scripts leave them unset, so Ananke’s missing-permissions warning prompts a review.

ananke registry search debugging
ananke registry resolve awesome-copilot/arize-ax --explain    # bundle → member skills
ananke apm install superpowers/systematic-debugging --activate
ananke registry promote superpowers/systematic-debugging --trust approved --reviewed-by you

Tighten the policy

Dex admits only redistributable licences. Your project can narrow that further:

# .ananke/registry/policy.toml
[licenses]
allow = ["MIT", "Apache-2.0"]
allow_unknown = false

[permissions]
forbid = ["shell.execute"]

Upgrade

pip install -U dex-trove
ananke registry learn python:dex-trove      # new immutable versions only where content changed
ananke apm upgrade --dry-run

Each Dex item has its own SemVer, bumped only when its upstream content changes, so upgrades are quiet and reviewable.

Ananke finds every installed trove, meaning any package exposing an ananke.troves entry point (Dex Trove does). A project chooses which troves it uses, and which slice of each, in .ananke/config.toml:

pip install "ananke-plexus[dex]"
ananke init
ananke registry troves list                                   # [off] dex-trove  dex-trove 0.3.1  968 items
ananke registry troves enable dex-trove --kind skill --kind agent
ananke registry troves sync                                   # ✓ dex-trove: … registered · 0 denied

enable writes a validated table, which you can also edit by hand:

[troves.dex-trove]
enabled = true
kinds = ["skill", "agent"]      # empty = every kind
namespaces = []                 # e.g. ["neo-pragnya"]; empty = every namespace
include_flagged = false         # true also learns items whose placeholders trip the secret scanner

sync learns every enabled trove through the normal importers, policy and secret scanner, so a trove gets no special trust. Re-run it after upgrading the package: unchanged items stay as they are, and changed ones get a new version. ananke registry troves disable dex-trove switches it off. Versions already registered stay until you unregister them. Use --json on list and sync in scripts and CI.

See the Dex Trove docs for the licence policy and the full integration guide.

Pin exactly what you chose in Dex

Dex Trove 0.3 records every version of every item, with its digest and upstream commit. Pin items in Dex, then hand those pins to Ananke. Dex only resolves here; it doesn’t install into Ananke or run anything:

dex lock superpowers/systematic-debugging agent:awesome-copilot/planner
dex ananke handoff            # prints a [tool.ananke] block: paste it into pyproject.toml
ananke sync                   # resolves the same versions under your policy and writes ananke.lock

Read Dex alongside your own sources

An enabled trove is also a source for the provider port. ananke registry providers discover searches it together with your approved folders and private Git repositories, and ananke registry providers resolve refuses a name that exists in two places until you name the source. Older releases resolve from Dex’s release ledger; if the installed trove no longer holds those bytes, fetching them fails with NOT_CACHED rather than substituting another version.

To send a lesson to Dex, see Learning candidates.

Edit this page on GitHub ↗