ADR 0001 - Agent conventions live in the MCP layermadtea ships as both a CLI binary and a Model Context Protocol (MCP) server, and as a Claude Code plugin that bundles skills and PreToolUse hooks around that same binary.
ADR 0005 - Proactive parameter-name schema clarityAgents reach for a “natural” argument name that is not the tool’s canonical parameter, the JSON unmarshaler silently drops it, and a wasted round-trip follows. Recurring, real instances:
ADR 0007 - Structural fail-closed in multi-repo workspacesMutating local-git MCP calls fail closed when the server cwd is a structurally detected multi-repo workspace and no caller-repo signal is present, closing a dead-zone that signal-only guards could…
ADR 0010 - Tag-driven releases, one blessed installEvery release left a trail on the default branch: a docs(changelog): backfill [Unreleased] PR, a chore: prepare release PR, and their merge commits. Two coupled causes:
ADR 0016 - Names match gh/tea verbatimmadtea exposes two surfaces — the Cobra CLI (madtea …) and the MCP server (madt_<noun> tools) — and every operation appears on both.
ADR 0017 - Target the standard Gitea API v1madtea targets the standard Gitea API v1 endpoints that Forgejo maintains for compatibility, working with both platforms without modification.
ADR 0019 - Foreign primary checkouts are immutableADR 0007 (structural fail-closed, multi-repo) introduced dir= targeting: a madtea agent can name any other on-disk git repository as the target of a mutating local-git tool (madt_branch_create, madt_commit, madt_push, …).
ADR 0021 - Pure-read steering is advisorymadtea’s Claude Code plugin ships a local-git steering hook (hooks/scripts/check-git-local.sh) that intercepts the agent’s Bash tool and redirects raw git forms to the madt_* MCP tool that does the same job.
ADR 0023 - Shipped strings are self-containedmadtea ships strings to users in three compiled-in forms: hook steering text (the plugin’s PreToolUse scripts), error/refusal returns from the CLI and the madt_* tools, and MCP tool/parameter descriptions.
ADR 0024 - Commit file sets are declared, never sweptmadt_commit and madt_finish (and madt_add) once offered a blanket-staging mode — all=true on the MCP surface, -A/--all on the CLI — that ran the equivalent of git add -A before…
ADR 0026 - Guard texts are terminal or forwardingmadtea steers agents away from raw, credential-unsafe or shared-state-unsafe git through two families of guards: the Claude Code plugin’s PreToolUse hooks (they deny/advise on the Bash tool) and the…
ADR 0027 - Launch scope is the credential boundarydir= began as a repo selector for local-git tools (ADR 0007) and was extended to any git repo on disk, with ADR 0019 clamping foreign primaries to the worktree→finish contribution flow.
ADR 0028 - Semver tiers within 0.xWithin 0.x, breaking changes bump MINOR and all other releasable types bump PATCH; the cadence gate counts releasable commits regardless of tier.
ADR 0030 - git-mirrored commands match git's argument shapeADR 0016 pins CLI subcommand, flag, and MCP action names to gh then tea verbatim, with one refinement for git-mirrored commands: madtea’s thin wrappers over local git commands (branch,…