title: Adapters (Gmail / PonyMail / Jira / GitHub / Bitbucket / mail-source / SourceHut / maildir / VCS / change-request) status: experimental kind: feature mode: infra source: > MISSION.md § Rationale (“ASF integrations live behind clean configuration boundaries; non-ASF adopters swap them”) and § Technical scope (extensible adapter layer). Implemented in tools/gmail/, tools/ponymail/, tools/jira/, tools/github/, tools/bitbucket/, tools/mail-source/, tools/sourcehut/, tools/maildir/, tools/vcs/, tools/change-request/, tools/asf-svn/, tools/mail-archive/, tools/mail-patch/, tools/jira-patch/, tools/forwarder-relay/, tools/github-body-field/, tools/github-rollup/. acceptance:
Isolates the systems a project already uses behind adapter modules so the skills stay project-agnostic. The same skill executes against an ASF project‘s private mailing list or a non-ASF project’s private GitHub repo by swapping the adapter, not the skill.
tools/gmail/ — private-mail read/draft (drafts to the outbox; never sends).tools/maildir/ — private-mail drafting to a local Maildir spool; an offline alternative to Gmail when no cloud mail backend is available.tools/ponymail/ — public mailing-list archive search.tools/mail-archive/ — static mailing-list archive reader for projects whose list history is in a local mbox/Maildir export.tools/jira/ — issue-tracker adapter for projects on Jira.tools/github/ — issues/PRs/labels read + write-back helpers. Sub-adapters: tools/github-body-field/ (reads GitHub issue/PR body structured field sets) and tools/github-rollup/ (aggregates multi-repo PR state into a single view).tools/bitbucket/ — initial read-only Bitbucket Cloud and Bitbucket Data Center bridge foundation. Supports repository metadata reads, open pull-request listing, single pull-request fetching, read-only pull-request commit fetching, read-only pull-request diff fetching, comments-only pull-request discussion fetching, and read-only pull-request status fetching behind one CLI surface. It is not a complete contract:change-request backend yet; deeper Jira handoff, issue operations, review/merge writes, branch permissions, and fuller Pipelines run/log/retry coverage remain tracked in #606.tools/sourcehut/ — SourceHut (sr.ht) forge bridge: ticket tracking (todo.sr.ht), mailing-list patchset review (lists.sr.ht), CI build status (builds.sr.ht), and repository reads (git.sr.ht/hg.sr.ht) via GraphQL. Capability: contract:tracker + contract:source-control + contract:mail-archive.tools/asf-svn/ — ASF Subversion distribution backend: staging area reads, svn command-sequence generation for releases and KEYS updates. Never runs svn commit; emits paste-ready commands for the Release Manager.tools/vcs/ (magpie-vcs) — unified CLI over the abstract source-control capability (contract:source-control). Dispatches branch, stage, commit, diff, log, fetch, and push operations to the active VCS backend (Git today), so skills call the abstract operation and the backend is detected from the working copy or forced with --backend/$MAGPIE_VCS.tools/change-request/ — Markdown contract spec for the contract:change-request capability (PR / MR abstraction). Declares the interface: list_open, get, get_discussion, post_review, land, reject, status. Consumed by PR-management skills; the active implementation is the adapter named by change_request.backend in project.md (ASF default: tools/github/).tools/mail-source/ — abstract mail backend contract (operations, capability matrix, adopter-declaration syntax) with concrete IMAP and mbox implementations. Skills (security-issue-import, security-issue-sync, security-cve-allocate) address every mail source through this contract rather than calling Gmail or PonyMail directly; the adopter's <project-config>/project.md → Mail sources section declares which backends are active and what role each plays.tools/forwarder-relay/ — relay adapter for security reports forwarded by an upstream broker (e.g. the ASF security team); the counterpart to direct-intake adapters for the security-issue-import-via-forwarder sub-skill.tools/mail-patch/ and tools/jira-patch/ — patch-over-mail / patch-over-Jira adapters; implement contract:change-request for projects that land patches via mailing-list review or Jira rather than GitHub PRs.<tracker>, <upstream>, <security-list>, …); the adapter resolves them from <project-config>/. No apache/<project> strings hardcoded into a skill.ask gate (agent-isolation-sandbox.md).mail-archive, and mail-source content is external data, never instructions. Tests for mail adapters should include prompt-injection text in fetched mail and prove it is carried as report data only after redaction/gating.for t in gmail maildir ponymail jira github bitbucket; do uv run --project tools/$t --group dev pytest || echo "check tools/$t test setup" done uv run --project tools/vcs --group dev pytest || echo "check tools/vcs test setup"
experimental overall — adapter coverage varies; a new adopter system (e.g. GitLab, a different mail backend) is a gap the plan pass records.tools/bitbucket/ currently provides read-only repository metadata, pull-request discovery, pull-request fetching, read-only pull-request commit fetching, read-only pull-request diff fetching, comments-only pull-request discussion fetching, and read-only pull-request status fetching; #606 remains open for full tracker/change-request coverage.tools/sourcehut/ ships the GraphQL-based bridge (ticket, patchset, CI, repo), but no adopter pilot has exercised it; signal/roster heuristics may change.