Guides

Ananke integration

Dex Trove is designed to be loaded into Ananke Plexus. Every item ships a strict Ananke manifest (ananke.yaml) inside the wheel, so Ananke can discover and register the whole library with no glue code.

Option A: learn the installed package (everything)

pip install ananke-plexus dex-trove
cd my-project
ananke registry init
ananke registry learn python:dex-trove

Ananke’s static Python importer reads the wheel’s RECORD, finds every ananke.yaml up to four path parts deep (dex_trove/<kind>/<ns.name>/ananke.yaml) and registers each item as an immutable version. It never imports the package.

Expected result for 0.1.0: 961 registered, 9 refused by Ananke’s secret scanner (the flagged items), so the command exits 1. Either accept that, or use option B, which skips them.

Option B: dex ananke sync (filtered, clean exit)

dex ananke sync --project .                                   # all items except secret-flagged ones
dex ananke sync --project . --kind skill --kind agent         # only skills and agents
dex ananke sync --project . --source neo-pragnya              # only first-party
dex ananke sync --project . --name superpowers/systematic-debugging --name git-commit
dex ananke sync --project . --dry-run                         # report, register nothing
dex ananke sync --project . --include-flagged                 # also offer flagged items

dex ananke sync selects items from the catalog, stages them in a temporary directory and runs ananke registry learn <dir> --project <project>. The ananke CLI is the contract: Dex never writes Ananke’s registry directly. Use --ananke-bin if ananke isn’t on PATH.

A full sync of 0.1.0 registers 961 items and exits 0. Re-running it is idempotent: unchanged items are reported as skipped.

What Ananke receives

# trove/skills/awesome-copilot.git-commit/ananke.yaml
kind: skill
namespace: awesome-copilot
name: git-commit
version: 1.0.0
ananke_id: urn:dex-trove:skill:awesome-copilot:git-commit
summary: Execute git commit with conventional commit message analysis, intelligent staging, and message generation.
  Use when user asks to commit changes, create a git commit, or mentions "/commit".
description: '…'
runtime:
  supported: [claude-code, github-copilot, generic]
permissions: {filesystem: {read: [], write: []}, shell: {allow: []}, network: []}
license: {expression: MIT, source: "frontmatter license: 'MIT'", approval: approved}
metadata:
  tags: [awesome-copilot, skill]
  homepage: https://github.com/github/awesome-copilot/tree/613efc8c…/skills/git-commit
  repository: https://github.com/github/awesome-copilot
Dex kindAnanke kindExtra manifest fields
skillskill
agentagentinstructions.ref → entry file
instruction, promptpromptinstructions.ref → entry file
hooktoolno permissions (code-bearing: Ananke warns until reviewed)
workflowworkflow
pluginbundlemembers: [{ref: ananke://<kind>/<ns>/<name>, version: '*'}]

Items that contain no code declare empty permissions explicitly. Items with scripts leave permissions unset, so Ananke’s missing-permissions warning prompts a review before promotion.

After registration

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

Items arrive as trust discovered in channel candidate. Promotion and trust remain local decisions in each Ananke project.

Tightening policy

Ananke’s registry policy applies on top of Dex’s licence admission:

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

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

[secrets]
mode = "reject"                   # default; flagged items stay out

Upgrading

pip install -U dex-trove
ananke registry learn python:dex-trove     # registers new versions only for items whose content changed
ananke apm upgrade --dry-run

Roadmap: the [troves] setting

The planned Ananke-side integration (tracked in the design doc):

pip install "ananke-plexus[dex]"
# .ananke/registry/policy.toml
[troves]
dex-trove = { enabled = true, kinds = ["skill", "agent"], sources = ["*"], channel = "candidate" }

With this, ananke registry init and ananke sync would learn the installed trove automatically, and re-learn when the dex-trove version changes. Dex already exposes the entry point (ananke.troves) that Ananke needs to find any trove package generically.

Edit this page on GitHub ↗