Skip to content

Tool-adoption registry — the tools himmel uses

A dynamic index with two jobs: it records every tool himmel adopted, pilots or holds provisionally through the tool-adoption rubric, AND holds our own in-house borrow-candidates — items we like, parked, that won’t necessarily ship. Part of the tool-adoption framework.

Tools we evaluated and did not adopt are not listed here: their records live in the state repo (pointer in internals/context-architecture.md).

How to read this

  • Layer (A/B/C/D) and trust-tier reuse the rubric’s definitions verbatim — see rubric §2 for tiers and the layer taxonomy below. Do not redefine them here.
  • Status is one of the rubric’s decision states (rubric §3), mapped to a registry-friendly label: in-use = ADOPT, pilot-pending = PILOT-MEASURE (not yet run/closed).
    • parked-idea is a fourth label, used only in the own-items index below: an in-house item we like and want searchable to borrow from — NOT a community ADOPT/REJECT decision, and NOT committed to ship.
    • provisional is a fifth label: not yet a rubric decision state — an ADR exists but awaits operator sign-off. The row must name the ADR.
  • KPI is the desired outcome-per-session, never %-tokens (rubric §1 — the vanity-metric trap).
  • Measuring in-use rows — the before/after protocol only applies to net-new installs. For items already in the default path the accepted protocol is measure-during: 0-cost live telemetry captured while real work runs (rubric §4; format + emit lib: telemetry.md).
  • ADR link — ADRs may not exist yet. — means no recorded ADR; the source column is the decision trail until one lands. Do not fabricate ADR paths.

How to use this index

  • Search-first — before building or evaluating anything, search this index and the state-repo rejected-tool record. A settled REJECT or an existing borrow-candidate may already answer the question.
  • Port-in — found a community item whose use-case fits a real session? Don’t adopt on the pitch — open a PILOT (rubric §3) and record it here.
  • Borrow — the own-items parked-idea rows are a borrow-library: lift the idea, don’t re-derive it.

Layer taxonomy (from the luna synthesis)

Layers are from the 8-tool luna synthesis (30-Resources/Tech/token-optimizer-tools.md): composing across layers is additive, competing within a layer is substitutive.

  • Layer A — prompt / response shape (output Claude generates per turn).
  • Layer B — tool-output filtering (noise tool calls inject into context).
  • Layer C — setup / scaffolding (how Claude reads the project once).
  • Layer D — MCP / runtime (protocol-layer; needs MCP-compatible client).

Registry

ToolLayerSourceStatusDesired outcome (KPI)Trust-tierADR
rtkB (tool-output filtering)luna 30-Resources/Tech/token-optimizer-tools.md; docs/tooling-catalog.mdin-useLess tool-output noise in context per session → longer useful context window, fewer re-launches on long sessionscommunity-active → validate-before-adopt (battle-tested, Rust binary, zero deps)—
engrammemory layer (D-adjacent)LUNA-44pilot-pendingPersistent memory survives across sessions → fewer “re-explain the same context” turns, work resumes fastersource-read-mandatory (persistent-memory store; touches what the agent remembers — read before it runs)—
skill-factory / autoresearchskill-qualitybacklog itempilot-pendingHigher-quality generated skills → fewer manual skill fix-ups, a research loop that actually files usable outputcommunity-active → validate-before-adopt (sandbox-test generated skills in a throwaway worktree before any real use)—
nizos/tdd-guardPreToolUse hookluna 30-Resources/Tech/nizos-tdd-guard.mdpilot-pendingTDD enforced structurally → fewer untested-code regressions slipping throughsource-read-mandatory (touches the PreToolUse hook stack — sees/alters every tool call; rubric §2 makes impl-read non-negotiable)—
hermes-agent (Nous) — junior + CR-critic + alpha main tieragent runtime (D-adjacent — separate agent under himmel orchestration)rubric pass + ADR comment, 2026-06-11; free routes WIRED 2026-06-12 (live route SUPERSEDED 2026-06-24 → Codex/gpt-5.5); additive himmel_agent main-tier profile (alpha, 2026-06-24); CR-critic lane wired into /pr-check; route table + new-user how-to docs/hermes-runbook.md; luna 30-Resources/Tech/nousresearch-hermes-agent.md; install %LOCALAPPDATA%/hermespilot-pendingJunior-shaped chores (vault inbox capture, note-taking, summaries) ship on free inference without burning Max quota or operator babysitting; zero write-fence violationssource-read-mandatory (free Nous endpoint — prompts leave the machine; mitigations: curated read tier hot.md/index/CLAUDE.md/synthesis/60-Maps, write fence Clippings/hermes-*.md only, in-house fail-closed lunavaultguard.py guard hook — self-protecting, authored + read locally)rubric-pass ADR comment
/code-review ultra (built-in)CR toolkit (review subagents)eval 2026-06-13, items 2–4in-useLower missed-critical on big/risky PRs — multi-agent cloud escalation tier for exactly the PRs where solo/holistic passes are weakest (the class where cavecrew-solo fabricated 2 Criticals). MOST EXPENSIVE tier — costs MORE than the 6-reviewer heavy CR, so it sits ABOVE heavy CR on the cost ladder: reach it AFTER heavy CR for the biggest/riskiest PRs, never as a cheaper first escalation (operator-conventions.md CR-sizing ladder). User-triggered + billed; the agent cannot launch it. Open follow-up (operator, billed, one action): a live calibration run on a recent real PR to confirm it adds catches over the solo pass without flooding noisedocs-claim-trusted (built-in Anthropic tool, zero install, trivially reversible — rubric §3 ADOPT-without-pre-measurement case)CR-toolkit eval ADR comment
firecrawl/firecrawl (/v2/scrape API)D (runtime / external data-fetch)thin-body escalation, 2026-06-16; clip firecrawl-firecrawl.md → 30-Resources/Tech/firecrawl-firecrawl.mdin-use (opt-in escalation)Thin-body article/web clips the Web Clipper captured poorly get clean markdown instead of being lost → the deferred LUNA-27 gap closes for non-X/non-github URLs, without a browser. Escalation lane, not a default path — gated behind --firecrawl-thin, budget-capped (--firecrawl-budget, default 20/run) to protect the 1000-credit/mo free tier; X/github/youtube excluded (owned by twitter-cli / luna-ingest / playwright-youtube). Self-host via FIRECRAWL_BASE_URL for operators with more budget. The hosted API SDKs are AGPL but we call the REST endpoint over stdlib urllib (no dep, no code lifted)docs-claim-trusted (well-known hosted API; only public URLs + the page content transit firecrawl’s servers — no secrets egress beyond the API key; trivially reversible — drop the flag). Open: 1-credit live smoke to confirm the documented /v2/scrape response shape against the live API—
public-clis/twitter-cli (agent-reach X backend)D (runtime / external data-fetch)feat/x-thread-reply-capture bake-off 2026-06-14not integrated: the cookie-backed enrich rung was removed (HIMMEL-4709)Capture X reply-thread + first-comment repo URL per flagged clip → clips whose payload lives in a reply/self-thread (”↓ repo in comment”) get enriched, not lost. Won the bake-off vs Playwright (Playwright blocked at login by X/Google anti-automation; couldn’t even capture a session). twitter tweet <id> --json returns focal + same-author self-thread + other-author replies + quotedTweet, each with pre-parsed urls[] (proven: extracted github.com/Panniantong/Agent-Reach from the example’s first self-reply). Auth = explicit TWITTER_AUTH_TOKEN/TWITTER_CT0 in gitignored .env (Chrome App-Bound-Encryption v127+ kills cookie auto-extraction). BURNER account only, never the main. Adoption decided; pipeline integration is the open implementationsource-read-mandatory (scrapes X with burner session cookies — ToS-gray, account-ban risk, reads the cookie DB; impl + auth read mandatory)—
obsidian-second-brain research toolkit (/x-read, /x-pulse, /research, /research-deep, /youtube)D (runtime / external data-fetch)2026-07-29 skill-hygiene audit (retroactive — installed 2026-05-16, no ADR filed until now); docs/tooling-catalog.mdprovisional (pending operator sign-off)(Grok/Perplexity-backed research commands) — provisional 2026-07-29, pending operator sign-off: no active XAI/Grok or Perplexity subscription behind the credentials file (a file’s presence is not a working key), and the vault-first capture pipeline already covers X and YouTube content without any external API. /notebooklm (Gemini File Search, different key) is unaffectedsource-read-mandatory (external API, secret + network egress — never independently evaluated at install time)specs/adr/adr-obsidian-second-brain-research-toolkit.md in the handover state repo (DRAFT, pending operator sign-off)
unslop (cursor/plugins pstack)A (prompt / response shape)scoped-research worker + operator pilot decision, 2026-09-17pilot-pendingAI-tell removal in human-facing documents (PR bodies, ADRs, handovers, tickets) → fewer operator reword-passes per document. Rubric §1 does NOT pass on evidence (no CR finding/stuck loop/operator complaint about AI-sounding prose exists) — operator chose to pilot anyway given near-zero cost/blast-radius; close on operator-verdict outcome across 3-5 documents, never on rule-count appliedcommunity-active → validate-before-adopt (33 numbered style rules, injection scan clean, Layer-A prompt content only — no hook/secret/network surface, reversible by deleting one file)specs/adr/adr-unslop-skill.md in the handover state repo
pstack (cursor/plugins pstack, 7 skills)A (prompt / response shape)operator GO 2026-10-15, plan HIMMEL-5802 (audit on HIMMEL-5697)adopted (opt-in)Seven disable-model-invocation skills (correct, blast-radius, create-verification-skill, maintain-verification-skill, benchmark-checklist, principle-explain-the-number, in-your-own-words) run on demand, no listing tokens. Shipped as ONE uninstallable plugin pstack@himmel, pinned 99743e9c, on in the interactive user profile only and in no worker/lane/chief profile; one-step removal is claude plugin disable pstack@himmel. Fork michael-denyer/pstack-claude rejected (SessionStart hook, ship scripts). Per-skill verdicts (HIMMEL-5851, POC measured 2026-10-16, pstack-integration.md): blast-radius = WIRE IN (opt-in CR_CLAUDE_AGENTS=blast-radius in /pr-check step 3.5; 1 of 3 later-fixed defects caught blind and real unreported defects proven in all 3, about 70-80k tokens per run; CR-panel comparison not measured, so default-on waits on follow-up HIMMEL-5855); correct, create-verification-skill, maintain-verification-skill, benchmark-checklist, principle-explain-the-number = KEEP OPT-IN (no flow slot to wire into yet, nothing measured); in-your-own-words = KEEP OPT-IN, low value (one sentence, brainstorming and grilling already restate the goal)community-active → validate-before-adopt (markdown only, no hook/network/secret surface, MIT)marketplace/plugins/pstack/README.md
humanizer (blader/humanizer)A (prompt / response shape)operator request, HIMMEL-5857, 2026-10-16; humanizer.mdin-use (ADOPT verdict 2026-10-22; opt-in, in no profile)An optional second pass that rewrites a full draft in the writer’s voice without changing its claims, so fewer operator reword passes per document. Vendored pinned at 225a6f39 as the opt-in plugin humanizer@himmel (disable-model-invocation, catalog only, in no profile). Exit: after two weeks, zero documents where /humanizer changed something /unslop missed and the operator kept it means REJECT and remove. Closed early (day 6 of 14, by chief ruling) by the HIMMEL-6966 docs pass: 46 pages, 979 passages kept, 4 dropped, mostly dash and bold-label fixes unslop leaves alone (deviation 3)community-active → validate-before-adopt (markdown only, no hook/network/secret surface, MIT)marketplace/plugins/humanizer/VENDORED.md
test-audit (openclaw/openclaw .agents/skills/test-audit)A (prompt / response shape)operator request, 2026-09-24; folds the GPT-6 test-audit findingsadoptedFewer tests that stay green when their subject breaks: an authoring gate at write time, plus a candidate-evidence record before any test is removed. Measured by the first audit pass shipped in the same PR (RED-at-base excerpt per repaired suite)community-active → validate-before-adopt (read in full, no hook/secret/network surface, Layer-A prompt content only; adapted with deviations listed in the SKILL.md header, reversible by deleting one directory)— (provenance header in .claude/skills/test-audit/SKILL.md)
Arize Phoenixtrace store (external, D-adjacent)eval-tooling research Q4; read 2026-10-06 at https://github.com/Arize-ai/phoenixpilot-pendingOne local store for Claude Code OTel traces → an eval row links to its trace by session id. Scope: the trace store ONLY, not an eval runner. Facts read 2026-10-06: SQLite default storage, Docker ports 6006 (UI) and 4317 (traces), licensed under the Elastic License 2.0. Close the pilot on the trace-store work’s measured outcomecommunity-active → validate-before-adopt (ELv2 is source-available, not OSI open source; local-only, no prompt egress if unexposed)—
mattpocock/skills domain-modeling (glossary skill)C (setup / scaffolding, external skill)HIMMEL-5498; https://github.com/mattpocock/skills pinned 49dd158d1076134a641b33efb035946536778336, MIT, skills/engineering/domain-modeling/{SKILL.md,GLOSSARY-FORMAT.md}; grill-with-docs is a 2-line wrapper that calls grilling + domain-modelingin-use (ADOPT verdict 2026-10-15; vendored pinned in PR 2802, retargeted at docs/glossary.md; packaged as plugin domain-modeling@himmel and enabled in the design profile only, HIMMEL-5498)Terms a PR coins land in docs/glossary.md once, under the plain name, with the repo name as the alias, instead of drifting. Pass bar, fixed before the arms run (task: add the terms coined by merged PR #2669 / HIMMEL-5696 to a scratch copy of docs/glossary.md; arm A = glossary + PR text only, arm B = same plus the skill’s SKILL.md and GLOSSARY-FORMAT.md text; n=1 per arm, so it can show “no clear win” or a regression, never an effect size). Score each arm 0/1 on six checks: C1 one definition per coined term (exactly one headword row each, no restatement elsewhere in the diff); C2 alias rule (plain name is the headword, repo identifier in code spans or the Avoid column, no old name as a headword); C3 no duplicate of an existing term (Ready-check is extended or linked, not redefined); C4 smallest diff (at most 12 added lines, no new file or section); C5 format fidelity (added rows keep the target section’s table column count and order); C6 no implementation detail beyond what the neighbouring rows carry. Verdict rule: ADOPT only if arm B beats arm A on at least one check, loses on none, and the skill’s listing costs under 100 tokens; REJECT if arm B loses on any check or only wins by overriding the glossary’s own format; otherwise PILOT-MEASURE. Result (2026-10-15, sonnet, n=1 per arm): both arms passed C1-C5 (arm A: 1 glossary row + 1 overlap-map row; arm B: 1 glossary row + a one-word Ready-check extension); C6 arm A 0 (its row carries the WIRING list and the sourced-library rule), arm B 1 (it dropped the allowlist and per-kind rules, citing the skill’s “glossary only, no implementation detail” rule). Arm B beats A on one check, loses none; listing is the domain-modeling description, about 40 tokens (grill-with-docs is disable-model-invocation, 0). The skill’s GLOSSARY.md bullet format did not override the glossary’s own table format. Caveats: the win is one judgement-scored check at n=1, and arm A’s overlap-map row is coverage arm B skipped. Overlap: lean-skills:grilling is the same upstream grilling skill that grill-with-docs calls; minerva has no glossary step; the new part is only domain-modeling. Injection grep over the four files at the pin: no hits. Follow-up (done, HIMMEL-5498): vendored pinned (PR 2802, precedent writing-for-agents, HIMMEL-5631), target pointed at docs/glossary.md instead of GLOSSARY.md, then moved into marketplace/plugins/domain-modeling/ because a plugin profile selects plugin ids, never a project skill, and enabled in the design profile onlycommunity-active → validate-before-adopt (markdown-only skill, no hooks, no scripts, no network; injection scan of the four files read at the pin)—
pele (obsidianmd/pele)D (runtime / docs-site renderer)HIMMEL-7480, operator request 2026-10-25; POC against the mermaid build, accepted by the chiefin-useDocs-site diagrams render themed to the site’s own colours and font, light and dark, with zoom controls, from the same Mermaid text: a smaller download than mermaid.js (the site’s _astro output went from 5.4 MB to 972 KB) and no restyling of every diagram by hand. Pinned exactly at 1.10.0 in site/package.json, loaded on demand only on pages that have a diagramcommunity-active → validate-before-adopt (MIT, zero dependencies, runs only in the reader’s browser on static text from our own docs; no hook, secret or network surface; reversible by restoring the mermaid loader)—

Dynamic index — our own items

In-house items we like but won’t necessarily ship, kept here so they’re searchable and borrowable instead of rebuilt. Status is always parked-idea — these aren’t community ADOPT/REJECT decisions.

ItemWhat we likeStatusSource
worktree-isolation pluginGeneric marketplace extraction of our worktree-isolation pattern (/worktree /clean /clean_garden) so it works for any repo — extraction filed, not builtparked-ideabacklog item
emergence→self-improvement crystallizationTriggered pass that crystallizes emerging vault clusters into derived self-improvement candidates — design parked-documented, won’t necessarily buildparked-ideastate repo specs/decisions/emergence-crystallization.md
>100KB auto-externalize + BM25 retrievalThe one genuinely good context-mode pattern (its Part-3 design): oversized tool output auto-indexes into local FTS5 instead of truncating, model retrieves sections on demand — nothing lost, nothing flooding context. If himmel ever needs this shape, extend qmd (already local BM25+vec over markdown) rather than adopt context-modeparked-ideacontext-mode eval ADR (operator’s private handover repo)
CR context-graph for large-repo reviewsThe borrowable idea behind code-review-graph (not adopted): a persistent codebase graph so a reviewer reads only the files that matter, for reviews whose context exceeds a single window. himmel is not large-repo today, so it was REJECTed on the KPI. If himmel ever hits large-repo review-context limits, extend qmd (already a local BM25+vec index over the repo) rather than adopt an MCP graph runtime — same reasoning as the >100KB row aboveparked-ideaCR-toolkit eval ADR comment