Design

Dex Trove — Implementation Checklist

Living checklist; update as work lands. Design: DESIGN.md.

Legend: [x] done · [~] in progress / partial · [ ] todo

Phase 0 — Research & design

  • Survey Ananke registry contract (manifest schema, python importer, ≤4-part wheel depth, ananke:// refs)
  • Survey awesome-copilot layout (skills, agents, instructions, hooks, workflows, plugins) and licensing
  • Survey first-party skills (Skills/), flag AWS icon redistribution
  • Verify candidate source licences via GitHub API (2026-10-19)
  • Design doc (DESIGN.md) and this checklist

Phase 1 — Package core

  • pyproject.toml (hatchling, dex script, trove force-include into wheel)
  • models.py — folded into dataclasses in sources.py / adapters.py / learn.py (no pydantic dependency)
  • licenses.py — SPDX normalise, text fingerprints, deny markers, expression evaluation
  • frontmatter.py — tolerant YAML frontmatter parsing
  • sources.py + sources.yaml — load, git shallow fetch @ ref, local override, commit pin
  • Adapters: agent-skills, awesome-copilot, md-agents
  • Guards: size, symlink, junk, secrets, exec tagging, duplicates, name slug/collision
  • Normaliser: verbatim copy + ananke.yaml + dex.json + LICENSE.upstream + item SemVer bump
  • Catalog, EXCLUDED.json, trove.lock.json, THIRD_PARTY_NOTICES.md
  • CLI: sources learn validate list search show install license ananke notices docs

Phase 2 — Learn the initial trove

  • Learn first-party neo-pragnya (icons excluded)
  • Learn awesome-copilot
  • Learn anthropic (expect docx/pdf/pptx/xlsx denied)
  • Learn superpowers
  • Review EXCLUDED.json for false positives

Results so far (2026-10-19)

  • Learned 970 items: awesome-copilot 937 (435 skills, 222 agents, 192 instructions, 72 plugins, 8 hooks, 8 workflows), superpowers 15, anthropic 14, neo-pragnya 4. 37 excluded: 32 canvas-only plugins (out of scope), anthropic docx/pdf/pptx/xlsx (proprietary text), anthropic doc-coauthoring (no licence at all).
  • Found during learn and fixed: nested licences (OFL fonts in anthropic/canvas-design → recorded as components; strict filenames so pdftk-server-license.md docs aren’t mistaken for terms); Apache declared only in frontmatter (7 items) → canonical Apache text shipped as LICENSE.upstream; first-party URLs point into Dex-Trove.
  • Wheel 15 MB / sdist 11.6 MB; every ananke.yaml at wheel depth 4. All 970 manifests pass Ananke’s ArtifactManifest.
  • ananke registry learn python:dex-trove (clean venv, installed wheel): 961 registered, 9 refused by Ananke’s secret scanner — all placeholders in security-teaching content ("PINECONE_API_KEY", sk_live_…). Dex now mirrors those rules → secret_flags + tag ananke-secret-flag; dex ananke sync skips them unless --include-flagged. Full sync: 961 registered, exit 0; re-sync is idempotent (skipped); bundles resolve to members.

Phase 3 — Ananke integration

  • dex ananke sync via ananke registry learn
  • Verify with local Ananke venv: register a sample of items, ananke registry search finds them
  • Verify ananke registry learn python:dex-trove against an installed wheel
  • Ananke follow-up: placeholder-aware secret rule or per-artifact allow-list (9 false positives today)
  • Propose Ananke [dex] extra + [troves] policy setting (separate PR in Ananke-Plexus)

Phase 4 — Docs site

  • dex docs export → Astro content + JSON
  • Astro site: home, catalog search, per-item page, sources & inspirations, excluded, design
  • astro build passes locally
  • GitHub Pages workflow

Phase 5 — Quality & release

  • pytest suite (licences, adapters, normaliser, CLI, Ananke manifest validity)
  • ruff clean
  • CI workflow (validate, tests, docs build)
  • Release workflow (uv build → PyPI trusted publishing on tag)
  • Scheduled learn workflow (opens PR)
  • README with quickstart
  • Pushed to GitHub main; Pages enabled (build from Actions); pypi/testpypi environments created
  • Live site: https://neo-pragnya.github.io/Dex-Trove/ (all six workflows green on 434c062: ci, security, codeql, scorecard, workflow-lint, docs)
  • First CI round surfaced and fixed: gitleaks hits on placeholder examples quoted in docs (elided; pushed commit allow-listed like Ananke), and dex ananke sync not finding ananke in an unactivated venv (now looks beside the interpreter)
  • First release v0.1.0 (TestPyPI → PyPI), tag + GitHub Release: blocked on publish credentials (see below)
  • Owner action: add PyPI/TestPyPI trusted publishers (project dex-trove, repo Neo-Pragnya/Dex-Trove, workflows release-pypi.yml / release-testpypi.yml, environments pypi / testpypi) for future tags

Results — docs & quality (2026-10-19)

  • astro check: 0 errors / 0 warnings; astro build: 975 pages (970 items + home, catalog, sources, excluded, design).
  • Verified rendering with headless Chrome at 1280 px and a true 390 px (iframe), in dark mode: no horizontal page scroll.
  • Relative upstream image paths broke Astro’s asset pipeline (skills/napkin): export now pins them to upstream URLs.
  • 31 tests pass; ruff check + format clean; dex validate → 970 items valid (with Ananke 0.3.4, same as PyPI).
  • README commands verified end to end: claude / copilot / dir installs, plugin → members, hooks gated by --allow-exec.

Phase 6 — Ananke-parity release engineering & documentation (2026-10-20)

  • Mirror Ananke config: uv.lock + uv sync --all-extras, Makefile (same targets incl. publish-*), .env.example, .pre-commit-config.yaml, .trivyignore, .gitleaks.toml, CHANGELOG (Keep a Changelog), CONTRIBUTING, SECURITY, CODE_OF_CONDUCT
  • mypy strict (clean); coverage 85 % (CI floor 80 %); 39 tests
  • Workflows mirroring Ananke: ci (3.11–3.14 matrix + wheel smoke test with Ananke + docs build), release-pypi and release-testpypi (build once → Trivy → attest → OIDC publish, token fallback, idempotent if already published), security (Trivy package gate + non-blocking trove scan, Semgrep, pip-audit, gitleaks), codeql, scorecard, workflow-lint, dependency-review, docs (Pages), learn (weekly PR); all actions SHA-pinned
  • actionlint clean; zizmor clean (fixed cache-poisoning in release builds and workflow-level security-events)
  • pip-audit: no known vulnerabilities
  • Documentation set (Ananke-style): overview, 6 concepts, 7 guides, 8 references (CLI verified against --help, Python API examples executed, manifests quoted from the real trove)
  • Website: docs section (sidebar, on-page TOC, prev/next, edit links, .md links → routes), rich item pages (at a glance, upstream metadata, hook events, bundled items, part-of, related, files with sizes + pinned links, install matrix), featured first-party skills, theme toggle, copy buttons, 404; 999 pages; 0 broken internal links / anchors
  • Re-learned all sources at latest upstream (awesome-copilot 613efc8, unchanged → 937 items)

Phase 7 — Privacy, new identity, motion, sibling sites (2026-10-20)

  • .dexignore (in the source’s own folder) + user-level ~/.config/dex-trove/ignore ([source:]pattern): ignored items are skipped silently (not copied, not in EXCLUDED.json or the lock); tests added
  • Personal first-party skills hidden via Skills/.dexignore (names kept out of this repo) and removed from the trove; git history rebuilt so no commit contains them
  • Identity: “Dex Trove — a trove of dexterities for your agents” (Dexterity Trove) across site, README, package
  • Pastel light theme by default (crimson-orange, lemon, chartreuse, turquoise, lilac, sky, pink on warm off-white), dark as an opt-in toggle; text colours verified ≥ 5.5:1 contrast
  • Graphify-inspired interactions via motion-kit: morphing kind glyphs (each kind = rest → hover shape), a cursor-reactive shape field in the hero, scramble headings, blur reveals, count-ups, tilt/spotlight cards, marching-ants CTAs, sources marquee; reduced-motion and ?motion=static respected; lazy glyph init for the 968-card catalog
  • New first-party skills registered (Claude Code symlinks, .skill packages, learned into the trove): astro-docs-site (scaffolder + templates + link checker) and interactive-web-motion (motion-kit)
  • Ananke Plexus: Astro site scaffolded with the skill (nav imported from mkdocs.yml), Dex Trove guide, Pages via docs-site.yml; MkDocs kept only for the offline docs bundled in the wheel; committed on branch feat/astro-docs-site (not pushed)
  • VICHARA: motion-kit layer (hero field around the orbit, morphing orbit centre, lens/doc-card glyphs + tilt, reveals, count-up) keeping its green identity; lint/tests/build green; committed on branch feat/interactive-visuals (not pushed)
  • Dex site: 999 pages, 27 701 internal links, 0 broken, 0 missing anchors (check_site.py)

Follow-ups / backlog

  • Move first-party skills into git (this repo’s first-party/ or their own repo) so CI can re-learn them
  • Light-mode visual pass on the docs site (verified by screenshot)
  • Enable huggingface/skills, microsoft/skills, K-Dense-AI/claude-scientific-skills
  • Tune md-agents for wshobson/agents, VoltAgent/awesome-claude-code-subagents
  • rules adapter for awesome-cursorrules
  • Decision on CC-BY-SA (trailofbits/skills)
  • Discovery mode: scan link lists (awesome-claude-code, awesome-mcp-servers) for new candidate repos + licences

Edit this page on GitHub ↗