{"id":50962714,"url":"https://github.com/tjboudreaux/rosetta","last_synced_at":"2026-06-18T16:02:31.302Z","repository":{"id":363353727,"uuid":"1262975751","full_name":"tjboudreaux/rosetta","owner":"tjboudreaux","description":"Reconcile every AI coding agent's conversation history (Claude Code, Codex, Gemini, Cursor, Aider, opencode, Cline +11 more) with git \u0026 docs into one cited ground truth — and generate ADR/PDR/BDR decision records. Local, deterministic, zero-deps agent skill.","archived":false,"fork":false,"pushed_at":"2026-06-18T13:07:36.000Z","size":935,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-18T14:10:20.348Z","etag":null,"topics":["adr","agent-skills","ai-agents","ai-coding-assistant","aider","anthropic","architecture-decision-records","claude-code","claude-skill","codex","context-engineering","cursor","decision-records","developer-tools","gemini-cli","ground-truth","knowledge-management","llm","opencode","skills"],"latest_commit_sha":null,"homepage":"https://skills.sh","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tjboudreaux.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-06-08T13:56:09.000Z","updated_at":"2026-06-18T13:07:51.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/tjboudreaux/rosetta","commit_stats":null,"previous_names":["tjboudreaux/rosetta"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/tjboudreaux/rosetta","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tjboudreaux%2Frosetta","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tjboudreaux%2Frosetta/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tjboudreaux%2Frosetta/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tjboudreaux%2Frosetta/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tjboudreaux","download_url":"https://codeload.github.com/tjboudreaux/rosetta/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tjboudreaux%2Frosetta/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34497372,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-18T02:00:06.871Z","response_time":128,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["adr","agent-skills","ai-agents","ai-coding-assistant","aider","anthropic","architecture-decision-records","claude-code","claude-skill","codex","context-engineering","cursor","decision-records","developer-tools","gemini-cli","ground-truth","knowledge-management","llm","opencode","skills"],"created_at":"2026-06-18T16:02:30.217Z","updated_at":"2026-06-18T16:02:31.293Z","avatar_url":"https://github.com/tjboudreaux.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!-- SEO: Rosetta — Claude Code / agent skill that reconciles AI coding agent conversation history (Claude Code, Codex, Gemini CLI, Cursor, Aider, opencode, Cline, and more) into a cited ground truth and generates ADR / PDR / BDR decision records. Local, deterministic, pure-stdlib Python. --\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/banner.svg\" alt=\"Rosetta — the decision context engine for AI coding agents: reconcile Claude Code, Codex, Gemini, Cursor, Aider and more into one cited ground truth\" width=\"100%\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"LICENSE\"\u003e\u003cimg alt=\"License: MIT\" src=\"https://img.shields.io/badge/License-MIT-22c55e.svg\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://skills.sh\"\u003e\u003cimg alt=\"Agent Skill on skills.sh\" src=\"https://img.shields.io/badge/Agent%20Skill-skills.sh-818cf8\"\u003e\u003c/a\u003e\n  \u003ca href=\"docs/agents.md\"\u003e\u003cimg alt=\"18 agents supported\" src=\"https://img.shields.io/badge/agents-18-5eead4\"\u003e\u003c/a\u003e\n  \u003cimg alt=\"Python 3.8+ stdlib only\" src=\"https://img.shields.io/badge/python-3.8%2B%20·%20stdlib%20only-3776ab\"\u003e\n  \u003ca href=\"https://github.com/tjboudreaux/rosetta/actions/workflows/ci.yml\"\u003e\u003cimg alt=\"CI\" src=\"https://github.com/tjboudreaux/rosetta/actions/workflows/ci.yml/badge.svg\"\u003e\u003c/a\u003e\n  \u003ca href=\"CONTRIBUTING.md\"\u003e\u003cimg alt=\"PRs welcome\" src=\"https://img.shields.io/badge/PRs-welcome-c084fc\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n# Rosetta — the decision context engine for AI coding agents\n\n**Your AI coding agents make hundreds of decisions across dozens of sessions — then that context\nevaporates the moment each window closes.**\n\nRosetta is an open-source [agent skill](https://agentskills.io) that reads every coding agent's local\nconversation history (across **18 tools**), reconciles it with your git history and docs, and turns it\ninto one *cited* **ground truth** — plus durable **decision records** (ADRs, PDRs, BDRs). So you, your\nteam, and the next agent never lose the thread. **100% local, read-only, pure-stdlib Python, zero\ndependencies.**\n\n\u003e Like the Rosetta Stone recovered one meaning across three scripts, Rosetta recovers one project\n\u003e truth across many incompatible agent transcript formats.\n\n```bash\nnpx skills add tjboudreaux/rosetta        # skills.sh — Claude Code, Codex, Gemini, Cursor, opencode…\ngh skill install tjboudreaux/rosetta      # or via GitHub CLI\n```\n\nThen just ask your agent: **“build a ground truth for this project from all our previous agent\nconversations.”**\n\n---\n\n## Table of contents\n\n- [What is Rosetta?](#what-is-rosetta)\n- [Who it's for](#who-its-for)\n- [Why it exists](#why-it-exists)\n- [How Rosetta compares](#how-rosetta-compares)\n- [How it works](#how-it-works)\n- [Quickstart](#quickstart)\n- [Which agents does Rosetta support?](#which-agents-does-rosetta-support)\n- [Decision records: ADR / PDR / BDR](#decision-records-adr--pdr--bdr)\n- [CLI](#cli)\n- [Use it for your team](#use-it-for-your-team)\n- [FAQ](#faq)\n- [Documentation](#documentation)\n- [Roadmap](#roadmap)\n- [Contributing \u0026 license](#contributing--license)\n\n## What is Rosetta?\n\nRosetta answers two questions that scatter across dozens of agent sessions, repos, and chats:\n**“what is true about this project right now?”** and **“what did we decide, and why?”**\n\nIt does this by reading the local transcript stores that AI coding agents leave behind — Claude Code,\nCodex, Gemini CLI, Cursor, Aider, opencode, Cline, Goose, and more — reconciling them with the code\nand git history, and producing two durable artifacts:\n\n1. **`.agents/ground-truth.md`** — a reconciled, cited snapshot of the project's current state\n   (coverage map, architecture, decisions, contradictions, provenance).\n2. **A decision library** (`decisions/`) — individually-addressable **ADR** (architecture), **PDR**\n   (product), and **BDR** (business) records with provenance and a status lifecycle.\n\n## Who it's for\n\n- **Solo developers** running several AI agents across many projects — stop re-explaining each project from scratch to every new session.\n- **Teams** who need onboarding context and a decision audit trail a new hire (or a new agent) can actually read.\n- **Anyone returning to a project weeks later** asking *\"wait — why did we build it this way?\"*\n\n## Why it exists\n\nThe same project's history is smeared across five-plus incompatible storage schemes, most not\nproject-scoped the same way, several drifting across CLI versions. Reading it by hand is impossible;\nreading it all into one context window is ruinous. And the two ways a summary fails are:\n\n- **A silent gap** — it quietly missed an entire agent's history and still called itself ground truth.\n- **Chat-as-fact** — it reported something the transcripts merely *discussed then abandoned* as done.\n\nRosetta is engineered to defeat both: **coverage is loud** (every run shows what it found *and missed*\nbefore summarizing) and **code wins over chat** (a strict truth hierarchy where git arbitrates what\nactually shipped).\n\n## How Rosetta compares\n\nHow a project's history and decisions get reconstructed today — versus with Rosetta:\n\n| | Reading transcripts by hand | A wiki / hand-written ADRs | **Rosetta** |\n|---|---|---|---|\n| Reads all 18 agents' formats | Manual, one tool at a time | — | **Automatic** |\n| Reconciles against git (code wins) | No | No | **Yes — truth hierarchy** |\n| Surfaces coverage gaps | No — silent misses | — | **Yes — loud manifest** |\n| Every claim cited to its source | Rarely | Drifts from reality | **Yes — provenance** |\n| Decisions as durable records | No | Manual upkeep | **ADR / PDR / BDR, auto-numbered** |\n| Effort | Hours, every time | Ongoing discipline | **One command** |\n\nRosetta isn't another note-taking habit to maintain — it reconstructs the truth from history you've\nalready created.\n\n## How it works\n\n```\n agent transcripts          deterministic            agent synthesis           durable output\n (18 stores)        ──▶     collector (stdlib) ──▶   (reads normalized   ──▶   ground-truth.md\n Claude · Codex ·          normalizes + a            text, never raw;          + ADR / PDR / BDR\n Gemini · Cursor ·         loud coverage map         reconciles vs git;        decision records\n Aider · opencode …        (manifest.json)           adversarial verify)\n```\n\n- **Deterministic tools do the heavy lifting.** Path resolution, schema-tolerant parsing, timestamp\n  normalization, decision numbering/indexing/validation — all pure Python, so the agent spends tokens\n  only on judgment.\n- **Never reads raw transcripts into context.** The collector writes clean per-session markdown;\n  sub-readers digest that, keeping the heavy text out of the main context window.\n- **Truth hierarchy:** `current code / git \u003e committed decisions \u003e docs \u003e latest conversation \u003e older\n  conversation`. A transcript claim the code doesn't show is recorded as *intended*, not *done*.\n\n## Quickstart\n\n```bash\n# 1. Install (pure stdlib — no pip, no deps)\nnpx skills add tjboudreaux/rosetta\nalias rosetta=\"python3 ~/.claude/skills/rosetta/scripts/rosetta\"\n\n# 2. Discover which projects on your machine even have agent history\nrosetta discover --out /tmp/disc \u0026\u0026 cat /tmp/disc/projects-index.md\n\n# 3. Reconcile one project (or just ask your agent to \"build a ground truth\")\nrosetta collect --project ~/code/your-project --out ~/code/your-project/.agents/rosetta/full\n\n# 4. Capture decisions deterministically\nrosetta decisions new --type adr --title \"Adopt SQLite for the cache\" --decider you\nrosetta decisions index --root decisions \u0026\u0026 rosetta decisions validate --root decisions\n```\n\nFull flow with sample output: **[end-to-end walkthrough](skills/rosetta/docs/examples/end-to-end.md)**.\n\n## Which agents does Rosetta support?\n\n**18 agent transcript stores**, each with a purpose-built resolver + parser:\n\nClaude Code · Claude Agent-Mode (Desktop) · Codex (OpenAI) · Factory / Droid · Cursor · Gemini CLI ·\nopencode · Cline · Continue · Aider · Hermes · Qwen Code · Roo Code · Kilo Code · Goose (Block) ·\nCrush (Charm) · Windsurf / Cascade · Augment.\n\nFormats range from JSONL to one-JSON-per-message directories, nested JSON trees, markdown, and sqlite.\nUnrecognized stores are **flagged loudly** rather than silently skipped, so you always know what wasn't\nread. See the full table, scoping rules, and how to add an agent in **[docs/agents.md](skills/rosetta/docs/agents.md)**.\n\n## Decision records: ADR / PDR / BDR\n\nRosetta turns scattered decisions into durable, cited records:\n\n| Type | Captures |\n|---|---|\n| **ADR** — Architecture Decision Record | *how* the system is built (technical/structural) |\n| **PDR** — Product Decision Record | *what* you make and why (product/strategy) |\n| **BDR** — Business Decision Record | business/commercial calls, often made in meetings |\n\nEach record carries `Sources:` provenance (`agent · session-id · date`, a commit, a code path), a\n`Proposed → Accepted → Superseded` lifecycle, and never silently oscillates. Rosetta's own\n[`decisions/`](decisions) library is the reference implementation. Details:\n**[docs/decisions.md](skills/rosetta/docs/decisions.md)**.\n\n## CLI\n\n```bash\nrosetta collect   --project \u003cpath\u003e --out \u003cdir\u003e   # gather + normalize a project's transcripts\n                                                 #   (skips already-processed sessions; --reprocess rebuilds all)\nrosetta discover  [--out \u003cdir\u003e]                  # machine-wide index of projects with history\nrosetta decisions new|index|validate             # scaffold / index / validate the decision library\nrosetta ingest    --root ./decisions --from x.json   # external decisions (meetings/Slack) -\u003e Proposed records\n```\n\n`validate` exits nonzero on a malformed library, so it drops straight into CI. No install needed, but\n`pip install -e skills/rosetta` puts `rosetta` on your PATH. Full reference:\n**[docs/cli.md](skills/rosetta/docs/cli.md)**.\n\n## Use it for your team\n\nThe decision-record format **bends to your team**, not the reverse. Drop a `config.json` at your\n`decisions/` root to define your own record types, directories, numbering, statuses, required fields,\nand templates — or omit it for sensible defaults. Add a new record type (say, a Governance record)\nwith no code change. See [docs/decisions.md → customize](skills/rosetta/docs/decisions.md#use-your-own-templates-any-team).\n\n## FAQ\n\n**Is my data sent anywhere?** No. Rosetta is fully local and read-only against your own machine's\ntranscript files. It's pure-stdlib Python — no network calls, no telemetry, no dependencies. The\nnormalized-transcript cache (`.agents/`) can contain secrets, so it's git-ignored by default.\n\n**Is it only for Claude Code?** No. It installs into any [skills-compatible agent](https://agentskills.io)\n(Claude Code, Codex, Gemini CLI, Cursor, opencode, and more) and *reads* 18 different agents' histories.\n\n**How is this different from just grepping my transcripts?** Rosetta resolves each agent's storage\nscheme, filters to the right project, tolerates schema drift, reconciles conflicting sources against\ngit, and adversarially verifies claims — then makes coverage gaps explicit. Grep does none of that.\n\n**What does “ground truth” mean here?** A single document that states what's actually true about a\nproject *now* (verified against code/git), with every claim cited to its source and contradictions\ncalled out rather than smoothed over.\n\n**What are ADRs, PDRs, and BDRs?** Lightweight markdown decision records — architecture, product, and\nbusiness — each with rationale, provenance, and a status. They turn “why did we do this?” archaeology\ninto a queryable, version-controlled library.\n\n**Do I need to write the records by hand?** No — the agent drafts them from the reconciled history;\nthe deterministic `decisions.py` handles numbering, the index, and validation.\n\n## Documentation\n\n- [Getting started](skills/rosetta/docs/getting-started.md)\n- [Agents \u0026 discovery](skills/rosetta/docs/agents.md)\n- [Decision records](skills/rosetta/docs/decisions.md)\n- [CLI reference](skills/rosetta/docs/cli.md)\n- [End-to-end walkthrough](skills/rosetta/docs/examples/end-to-end.md) · [Example ground truth](skills/rosetta/docs/examples/ground-truth.example.md)\n- [Agent store registry](skills/rosetta/references/agent-stores.md) · [Decision schema](skills/rosetta/references/decision-schema.md)\n\n## Roadmap\n\n- **External-source ingestion via MCP** (Circleback meeting notes, Slack) so human/meeting decisions\n  become cited records too — designed in [references/external-sources.md](skills/rosetta/references/external-sources.md)\n  (Proposed, [ADR 0012](skills/rosetta/decisions/architecture-decisions/0012-mcp-external-source-ingestion.md)).\n- **Installable CLI packaging** (`pipx install`) — [ADR 0013](skills/rosetta/decisions/architecture-decisions/0013-installable-cli-packaging.md).\n- Resolvers for more agents as they appear (the sweep flags unknown stores so you know when to add one).\n\n## Contributing \u0026 license\n\nContributions welcome — adding an agent is usually a registry row + a resolver + a fixture. See\n[CONTRIBUTING.md](skills/rosetta/CONTRIBUTING.md). Licensed under [MIT](LICENSE).\n\n---\n\n### Try it now\n\n```bash\nnpx skills add tjboudreaux/rosetta\n```\n\nThen ask your agent to **“build a ground truth for this project.”** If it saves you an afternoon of\ndecision archaeology, a ⭐ helps other developers find it.\n\n\u003csub\u003eRosetta is a local-first Claude Code / agent skill for reconciling AI coding agent conversation\nhistory — across Codex, Gemini CLI, Cursor, Aider, opencode, Cline, Goose and 11 more — into one cited\nground truth, and for generating ADR, PDR, and BDR decision records. Latest release: v0.1.1 · MIT licensed.\u003c/sub\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftjboudreaux%2Frosetta","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftjboudreaux%2Frosetta","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftjboudreaux%2Frosetta/lists"}