By krambuhl
Learnings substrate: griot capture/use/compact CLI + griot-* skills + griot-* judge/rewriter/operator/rubric-author agents.
Shared base contract for all griot-* agents. Defines the stateless stance, input handling, structured-output meta-rule, and isolation framing that every role in the griot learnings pipeline inherits. Other griot agents read this file at spawn time and apply its constraints. Not directly callable as a useful subagent — has no role rubric of its own.
Summarizes the prior round's per-judge verdicts and reasoning into a concise brief the next round's judges will see. Pure summarization — no content evaluation, no consensus picking, no opinion. The orchestrator handles tally and threshold logic. Inherits the griot base contract.
Stateless judge for the self-validating learnings benchmark. Compares control vs treatment outputs against an immutable rubric of binary assertions and emits a structured verdict (IMPROVED, UNCHANGED, REGRESSED, or DID_NOT_REPRODUCE). Spawned in parallel as the panel by the /griot-compact orchestrator. Inherits the griot base contract.
Diagnoses why a candidate learning failed N rewrite attempts. Categorises the failure pattern so a human reviewer knows what kind of decision to make. Does not propose fixes, does not modify the rubric or the learning. Inherits the griot base contract.
Revises a candidate learning that failed the judge panel. Reads the prior learning text, the immutable rubric, and the last panel's reasoning, and proposes a new learning that should pass when injected into Claude's system prompt. Cannot modify the rubric. Inherits the griot base contract.
Run the learnings validation pipeline using griot-* subagents. Bills against pooled Claude Code subscription tokens (no ANTHROPIC_API_KEY required). Use ONLY when explicitly invoked via /griot-compact. Processes every unprocessed session-note in learnings/session-notes/, runs the four-judge tier-based panel via parallel Agent calls, mediates consensus through `bin/griot mediate-panel`, attempts up to config.rewrite.max_attempts rewrites on UNCHANGED/REGRESSED outcomes, and escalates stuck notes to griot-operator for diagnosis. After per-note processing, re-runs every existing rollup entry through a single-judge pass-check to detect regressions, then composes a markdown PR body summarizing the run (delivered via the skill response — copy-paste into a GitHub PR). All JSONL writes go through `bin/griot operator-checks log-intervention`.
Load the validated learnings rollup into the current session as LLM-friendly prose, with the citation contract installed. Wraps `bin/griot use --as=llm` — the CLI does the rendering; this skill is the addressable user surface for manual rollup loads. Use when you want the rollup active mid-session or as the deliberate session-start loader. Opt-in: not auto-invoked.
Own this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimOwn this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimBased on adoption, maintenance, documentation, and repository signals. Not a security audit or endorsement.
Marketplace for the guild / griot / loom agent framework, shipped as a family of Claude Code plugins. Source-of-truth for skills, subagents, CLIs, and accumulated learnings used across Evan's projects (originally evolved in aart.camp, now lifted here so other projects — and other machines — can consume it without being coupled to one repo).
The marketplace ships as six self-contained Claude Code plugins:
| Plugin | What it provides | Depends on |
|---|---|---|
griot@krambuhl | Learnings substrate: griot CLI + griot-* skills + judge/rewriter agents | — |
guild@krambuhl | Antagonist-panel substrate: guild CLI + guild-* skills + whiteboard-* / evaluator-* / generator-* agents | — |
loom@krambuhl | Project substrate: loom CLI + loom-* skills (plans, research, sessions, checkins, retros, archives) | guild, griot |
ev@krambuhl | Execution loops: ev-loop-confidence, ev-loop-interactive, ev-run skills | loom, guild, griot |
review-skill@krambuhl | Standalone code-review skill | — |
agent-loop-full@krambuhl | Meta-bundle: zero-content plugin that cascade-installs the full family | all five above |
--scope userclaude plugin marketplace add krambuhl/agents
claude plugin install agent-loop-full@krambuhl --scope user
--scope user writes the enabled-plugins record to
~/.claude/settings.json (per-user-global, never lands in any repo).
This is the recommended scope at Patreon and any environment where
colleagues sharing the repo should NOT see the plugin in their own
Claude Code sessions. See § Install scopes below for the load-
bearing rationale.
agent-loop-full@krambuhl is zero-content; its only job is to
cascade-install griot + guild + loom + ev + review-skill
in dependency order. The cascade is a Claude Code feature (confirmed
empirically in the migration's V4 smoke test).
claude plugin marketplace add krambuhl/agents
claude plugin install loom@krambuhl --scope user
Each plugin's dependencies are declared in the marketplace
manifest, so installing loom also pulls in guild + griot.
Installing griot alone is fine too — no deps.
Claude Code supports four scopes for plugin installs. The relevant two:
--scope user (recommended for personal + work machines):
writes to ~/.claude/settings.json. Per-user-global. Invisible
to colleagues by construction — nothing about the install lands
in any project repo.
--scope local (per-project variant): writes to
<repo>/.claude/settings.local.json inside the project you're in
when you run claude plugin install. Load-bearing requirement:
the consumer repo's .gitignore MUST include
.claude/settings.local.json. If the file is accidentally
committed, colleagues cloning the repo will have the plugin
honored on their own Claude Code sessions at local-settings
precedence — the file is gitignored by Claude Code convention,
not enforcement. The migration's V1 verification established
this empirically via the docs (--scope project's
"makes the plugin available to everyone who clones the project
repository" doc language applies at local scope on whoever loads
the repo). If you want a per-project install for any reason,
triple-check the .gitignore first.
--scope user is the default recommended path because it avoids the
.gitignore footgun entirely.
griot initFor consumer projects that want griot to land learnings/captures
into a project-local learnings/ tree (so the rollup can grow over
time without polluting the user's global learnings), run inside
each consumer repo:
griot init
This idempotently creates learnings/{session-notes,nightly}/ and
appends learnings/ to the project's .gitignore if it's not
already present. No-ops on re-run.
npx claudepluginhub krambuhl/agents --plugin griotProject substrate: loom-* skills + loom CLI for plans, research, sessions, checkins, retros, archives.
Panel substrate: guild-validate / guild-whiteboard / guild-spawn skills + guild CLI + whiteboard-* / evaluator-* / generator-* agents.
Execution loops: ev-loop-confidence (tiered transforms), ev-loop-interactive (paired units), ev-run (router).
Harness-native ECC operator layer - 67 agents, 271 skills, 92 legacy command shims, reusable hooks, rules, selective install profiles, and production-ready workflows for Claude Code, Codex, OpenCode, Cursor, and related agent harnesses
Binary reverse engineering, malware analysis, firmware security, and software protection research for authorized security research, CTF competitions, and defensive security
v9.44.1 — Patch release for Gemini environment/version detection and qwen auth gating. Run /octo:setup.
Comprehensive .NET development skills for modern C#, ASP.NET, MAUI, Blazor, Aspire, EF Core, Native AOT, testing, security, performance optimization, CI/CD, and cloud-native applications
Complete collection of battle-tested Claude Code configs from an Anthropic hackathon winner - agents, skills, hooks, and rules evolved over 10+ months of intensive daily use