{
  "markdown": "<div align=\"center\">\n\n<br />\n\n<img src=\"assets/logo.svg\" width=\"560\" alt=\"compounded — skills that earn trust, and compound\" />\n\n### Your AI agent gets better at *you* the longer you use it.\n\nCorrect Claude once — it asks to remember the lesson, then never makes that mistake again. **Your approval is the only gate**: saved rules are active immediately at `.verified`, build a track record to reach `.trusted`, and graduate to `.autonomous`. One correction sends them back down. **No daemon. No cloud. No re-explaining.**\n\n<br />\n\n[![Tests](https://github.com/ankitkr3/compounded/actions/workflows/tests.yml/badge.svg)](https://github.com/ankitkr3/compounded/actions/workflows/tests.yml)\n[![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)\n[![Claude Code Plugin](https://img.shields.io/badge/claude%20code-plugin-D97757?logo=anthropic&logoColor=white)](https://docs.claude.com/en/docs/claude-code/plugins)\n[![Stars](https://img.shields.io/github/stars/ankitkr3/compounded?style=flat&color=yellow)](https://github.com/ankitkr3/compounded/stargazers)\n[![Python](https://img.shields.io/badge/python-3.9%2B-3776AB?logo=python&logoColor=white)](https://www.python.org/)\n\n<br />\n\n**[Install](#install)** · **[How it works](#the-trust-ladder)** · **[Manifesto](MANIFESTO.md)** · **[Philosophy](PHILOSOPHY.md)** · **[Docs](docs/)** · **[Compare](#how-compounded-composes)**\n\n<br />\n\n<img src=\"assets/demo.gif\" width=\"830\" alt=\"Demo: you correct Claude once, compounded asks to save the rule, and Claude never makes that mistake again.\" />\n\n<sub>Correct it once. Approve the lesson. Never repeat yourself.</sub>\n\n<br />\n\n</div>\n\n---\n\n## What is this? (the no-jargon version)\n\nThink of Claude as a **smart new employee with amnesia** — brilliant, but every morning it forgets everything you taught it yesterday. You end up correcting the same mistakes over and over.\n\ncompounded fixes that, the same way you'd train a real new hire:\n\n<div align=\"center\">\n<img src=\"assets/how-it-works.svg\" width=\"960\" alt=\"How compounded works: you correct Claude, compounded notices, it asks your approval, the rule is remembered, and next time Claude gets it right.\" />\n</div>\n\n**A real example.** You ask Claude to use the *latest* Gemini embedding model. It picks an old one from memory. You say: *\"No — search the web first, then pick the latest.\"* compounded catches that correction and asks: **\"Save this rule?\"** You tap Yes. From now on, whenever you ask for the latest *anything*, Claude searches the web first — without being told.\n\nAnd it's not blind trust: every saved lesson starts on probation and **earns** more freedom each time it works — or loses it the moment it doesn't.\n\n<br />\n\n## Why compounded?\n\n> Claude Code's **AutoMemory** writes notes. **AutoDream** cleans them.\n> **compounded verifies them — and lets them earn the right to act.**\n\nWhen compounded captures a lesson, you approve it once and it's live — `.verified`, injected into every session. Three clean uses → `.trusted`. Ten with no recent corrections → `.autonomous`. One correction sends it back a step. Unapproved captures and demoted skills wait in `.proposed/` for a verifier replay before re-entering.\n\n**It's how you train a junior. It's how you should train your agent.**\n\n<br />\n\n## Install\n\n```sh\n# In Claude Code:\n/plugin marketplace add ankitkr3/compounded-marketplace\n/plugin install compounded@compounded-marketplace\n```\n\nRestart Claude Code. That's it.\n\n> **First-time approval prompts:** hooks fire silently, but the first time you run any `/compounded:*` slash command you'll see a Claude Code permission prompt. Either click **\"always allow\"** in the prompt (per-command, easiest) or pre-allowlist everything by adding `\"Bash(python3 ~/.claude/plugins/cache/compounded-marketplace/compounded/**:*)\"` to `permissions.allow` in `~/.claude/settings.json`. See [INSTALL.md](INSTALL.md#permission-prompts-expected-easy-to-silence) for details.\n\n<table>\n<tr>\n<td>✅ No daemon to run</td>\n<td>✅ No cloud account</td>\n<td>✅ No telemetry</td>\n<td>✅ 100% local</td>\n</tr>\n<tr>\n<td>✅ Python stdlib only</td>\n<td>✅ SQLite + flat files</td>\n<td>✅ Portable archive</td>\n<td>✅ MIT licensed</td>\n</tr>\n</table>\n\n<br />\n\n## The trust ladder\n\n<div align=\"center\">\n<img src=\"assets/trust-ladder.svg\" width=\"930\" alt=\"The trust ladder: proposed to verified to trusted to autonomous. One correction moves a skill one level down.\" />\n</div>\n\n| Tier | Behavior | Activation |\n|---|---|---|\n| `.proposed` | Unapproved: demoted skills and imports, awaiting verification | Never auto-loads |\n| `.verified` | User-approved at capture, or verified on a real task | Rules inject at session start |\n| `.trusted` | 3+ clean uses on real follow-ups | Auto-loads, asks before applying |\n| `.autonomous` | 10+ uses, last 5 clean, no recent corrections | Runs without asking |\n\nDemotions happen automatically: **one correction = one tier down**. Three corrections in 30 days = back to `.proposed`. Pin a skill with `/compounded:pin <skill>` to lock it at its current tier.\n\nRun `/compounded:trust-status` to see where every skill sits and what's about to promote or demote.\n\n<br />\n\n## What compounded actually does\n\nThree things. That's the whole pitch.\n\n<table>\n<tr>\n<td width=\"33%\" valign=\"top\">\n\n### 🧠 Cross-project memory\n\nA user-global `USER.md` (~/.claude/compounded/USER.md) gets injected into every session, on every project, on every machine.\n\nAutoMemory writes per-project notes — compounded writes the **preferences and facts that follow you** across all of them. Hard-bounded at 1500 characters by design, so it stays readable and useful.\n\n</td>\n<td width=\"33%\" valign=\"top\">\n\n### ✓ Verified skills\n\nApprove a lesson once and it's `.verified` — **active immediately**, injected at every session start. It graduates by demonstrating reliability over real use, and demotes the moment it steers a task wrong.\n\nThe verifier subagent guards the unapproved path (imports, demotions): replay against a real task, PASS or FAIL with the reason logged. Failures land in `.rejected/` (recoverable, not deleted).\n\n</td>\n<td width=\"33%\" valign=\"top\">\n\n### 📦 Portable archive\n\n`/compounded:export ~/Desktop/compounded.tar.gz` produces a single archive: USER.md + every active skill + the trust state.\n\n`/compounded:import` merges it on a new machine. **Your earned skills aren't trapped** on the laptop you're typing on right now.\n\n</td>\n</tr>\n</table>\n\n<br />\n\n## Learns from your corrections (v1.2)\n\nCorrections are the highest-signal teaching moments — so compounded treats them as the **primary** learning trigger, not noise:\n\n1. **You correct Claude** (\"no — web-search for the latest model first\") and Claude does the corrective work\n2. The Stop hook spots the correction and nudges Claude: *the delta between what you asked, what it did, and how you corrected it is a lesson*\n3. Claude extracts the generalizable rule and **asks you to approve it — your approval is the only gate**\n4. Approved rules save straight to `.verified/` and are **injected at the start of every session** — *\"when the user asks for the latest X, web-search first\"* — active immediately, climbing the trust ladder with each clean use, demoted the moment they steer a task wrong\n\nOne-off corrections (\"use port 3001 here\") are deliberately ignored — only rules with a clear, general trigger get proposed. `.proposed/` still exists for the unapproved path: demoted skills and imports wait there for verification.\n\n## Auto-propose (v1.1)\n\nYou don't have to remember to save things. After every turn, the Stop hook scores what just happened — tool calls, distinct files edited, shell commands, recovery from failure, planned execution. When the score crosses the threshold, the agent gets a nudge to consider authoring a skill. The agent still decides whether to propose (one-off chores get ignored), but the *prompt to consider* is automatic.\n\nQuiet by design: routine turns produce zero output. You only see anything when there's real signal. Check `~/.claude/compounded/logs/auto_propose.jsonl` to see what fired and what didn't — each entry now records a `capture_kind` (`procedure` or `rule`) — useful for tuning if you want to.\n\n<br />\n\n## Demo\n\nRun the included lifecycle demo to see propose → verify → use × 3 → trust → use × 7 → autonomous → correction → demote in 30 seconds:\n\n```sh\nbash docs/demo.sh\n```\n\n```text\n[1/8] proposing skill 'typo-fixer' ......................... .proposed/\n[2/8] running verifier subagent (claude-haiku-4-5) ......... PASS\n[3/8] moved to .verified/, ready for use\n[4/8] used 3× on real follow-ups ........................... promoted → .trusted\n[5/8] used 7× more, last 5 clean ........................... promoted → .autonomous\n[6/8] one correction on use #11 ............................ demoted → .trusted\n[7/8] exported archive ..................................... compounded.tar.gz (12KB)\n[8/8] imported on a fresh install .......................... ✓ same state\n```\n\n<br />\n\n## How compounded composes\n\ncompounded does not replace anything. It is the **verification + portability layer** of a stack:\n\n| Tool | What it does | What compounded adds |\n|---|---|---|\n| **AutoMemory** (native) | Per-project notes, MEMORY.md | Cross-project USER.md |\n| **AutoDream** (native) | Consolidates project memory between sessions | Verifies skills, not notes |\n| **skill-creator** (native) | Eval-based testing of hand-authored skills | Replay-based verification of agent-authored skills |\n| **[superpowers](https://github.com/obra/superpowers)** | TDD / brainstorm / plan methodology | Memory + earned trust gradient |\n| **[claude-mem](https://github.com/thedotmack/claude-mem)** | Daemon-based observation capture | No daemon, different model |\n| **Karpathy CLAUDE.md** | Behavioral principles | Composable — drop both into your project |\n\nEach layer does one thing well. None of them does what compounded does.\n\n<br />\n\n## Commands\n\n| Command | What it does |\n|---|---|\n| `/compounded:status` | USER.md size, skill counts by tier, recent transitions |\n| `/compounded:trust-status` | The full trust ladder, with promotion/demotion candidates highlighted |\n| `/compounded:export <path>` | Bundle USER.md + verified skills into a portable archive |\n| `/compounded:import <path>` | Merge an archive on this machine |\n| `/compounded:verify <skill>` | Manually run the verifier on a `.proposed/` skill |\n| `/compounded:trust <skill> --to <tier>` | Manual promotion (skip the gradient) |\n| `/compounded:demote <skill>` | Drop a skill one tier |\n| `/compounded:pin <skill>` | Lock a skill at its current tier (no auto-demotion) |\n| `/compounded:unpin <skill>` | Remove a pin |\n\n<br />\n\n## What's stored where\n\n```\n~/.claude/compounded/\n├── USER.md                   ← user-global preferences (loaded every session)\n├── trust.db                  ← SQLite: skill state, events, sessions\n├── config.json               ← per-user config\n├── skills/\n│   ├── .proposed/<name>/     ← awaiting verification\n│   ├── .verified/<name>/     ← passed verification\n│   ├── .trusted/<name>/      ← 3+ clean uses\n│   ├── .autonomous/<name>/   ← 10+ uses, recent run clean\n│   ├── .rejected/<name>/     ← failed verification (recoverable)\n│   └── .pinned               ← list of pinned skill names\n└── logs/\n    └── verifier_dispatches.jsonl\n```\n\n**All local. All inspectable. All editable** if something goes wrong.\n\n<br />\n\n## What it doesn't do\n\n| Won't do | Why |\n|---|---|\n| ❌ No daemon | Zero install friction. Hooks fire when Claude Code fires them. |\n| ❌ No cloud / telemetry / account | Your skills are yours. |\n| ❌ No vector index / embeddings / GPU | Keyword overlap + replay is enough. |\n| ❌ No transcript capture | [claude-mem](https://github.com/thedotmack/claude-mem) does that — use both if you want both. |\n| ❌ No project memory cleanup | AutoDream does that. |\n| ❌ No eval framework | skill-creator does that. |\n\nEvery \"no\" is deliberate. **compounded does three things and stops.**\n\n<br />\n\n## Cost\n\nThe verifier subagent runs on **Claude Haiku 4.5** by default. Each verification is roughly 1500 input tokens + a small JSON response.\n\n> **Expected cost at typical usage: under $0.20/month.**\n\nThe verifier only runs when a `.proposed/` skill matches the just-finished task, which for most users is a handful of times per week.\n\nTo switch to Sonnet for higher-accuracy verification (~5× the cost), edit `~/.claude/compounded/config.json`:\n\n```json\n{\n  \"skills\": {\n    \"verifier_model\": \"claude-sonnet-4-6\"\n  }\n}\n```\n\n<br />\n\n## Tested\n\n55 unit tests covering memory injection, skill proposal, correction-driven rule capture, transcript-schema parsing, security scanning, trust-ladder transitions in all directions, pin behavior, stale-sweep exemptions, archive roundtrip, and verdict finalization.\n\n```sh\ngit clone https://github.com/ankitkr3/compounded\ncd compounded\npython3 -m unittest discover tests/ -v\n```\n\nCI runs the suite on **Linux + macOS** across **Python 3.9–3.12** on every PR.\n\n<br />\n\n## The four principles\n\n[**Read the manifesto.**](MANIFESTO.md) Four principles, one page, copy-pasteable.\n\n1. **Bounded over Unbounded** — memory should be small enough to read in one breath.\n2. **Verified over Recalled** — a skill that replayed successfully is a fact; one that was merely saved is a hypothesis.\n3. **Earned over Granted** — authority is earned, not assumed.\n4. **Composable over Comprehensive** — small tool, sharp wedge, plays well with everything else.\n\n<br />\n\n## Contributing\n\nPRs welcome. New built-in skills, bug fixes, doc improvements.\n\n```sh\npython3 -m unittest discover tests/ -v\n```\n\nFor new built-in skills (skills that ship with compounded itself, not user-authored skills), follow the format of `skills/compounded-typo-fixer/SKILL.md` and include the criteria the skill is meant to demonstrate.\n\nSee [CLAUDE.md](CLAUDE.md) for codebase conventions.\n\n<br />\n\n## License\n\n[MIT](LICENSE). Fork, ship, sell. Just include the notice.\n\n<br />\n\n## Why \"compounded\"\n\nCapability that compounds is the whole point. Every verified skill compounds the agent's toolkit. Every clean use compounds the trust in that skill. Every correction compounds *back* — trust isn't given once, it's earned and re-earned. The trust ladder is compound interest applied to demonstrated reliability: small reliable acts that, over time, become the foundation for larger autonomous ones.\n\n> \"The most powerful force in the universe is compound interest.\"  —  Albert Einstein (apocryphal)\n\nThe product is named for what it does to your agent.\n\n---\n\n<div align=\"center\">\n\n<sub>\n\n**[Manifesto](MANIFESTO.md)** · **[Philosophy](PHILOSOPHY.md)** · **[Install Guide](INSTALL.md)** · **[Architecture](docs/architecture.md)** · **[Memory Guide](docs/memory-guide.md)** · **[Skill Authoring](docs/skill-authoring.md)** · **[Privacy](docs/privacy.md)**\n\n</sub>\n\n<br />\n\n<sub>Built for [Claude Code](https://docs.claude.com/en/docs/claude-code) · Made with discipline by [@ankitkr3](https://github.com/ankitkr3)</sub>\n\n</div>\n",
  "bytes": 14996,
  "sha": "fafa5275a738bb660700ffd7e5c87e3d9c814c2ce4d14e22c8fe2166aeba850d",
  "repo_slug": "ankitkr3/compounded",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/plg_ankitkr3_compounded_compounded_e0deedcf/readme"
}