{
  "markdown": "<div align=\"center\">\n\n# GitContribute\n\nContribution research for agents: check repository guidance, related work, code context, and validation before writing a patch.\n\n[![CI](https://github.com/morluto/gitcontribute/actions/workflows/ci.yml/badge.svg)](https://github.com/morluto/gitcontribute/actions/workflows/ci.yml)\n[![npm](https://img.shields.io/npm/v/gitcontribute?logo=npm&color=CB3837)](https://www.npmjs.com/package/gitcontribute)\n[![Go](https://img.shields.io/badge/Go-1.26-00ADD8?logo=go&logoColor=white)](https://go.dev/)\n[![License](https://img.shields.io/github/license/morluto/gitcontribute)](LICENSE)\n[![Platforms](https://img.shields.io/badge/platform-macOS%20%7C%20Linux%20%7C%20Windows-5C6AC4)](#platform-support)\n\n[Quick start](#quick-start) · [Workflow](#contribution-workflow) · [CLI](#cli) · [MCP](#mcp) · [Safety](#side-effect-boundaries) · [Documentation](#documentation)\n\n![GitContribute contribution workbench](docs/assets/gitcontribute-tui-workbench.png)\n\n</div>\n\n`gitcontribute` is available as a CLI, terminal UI, and MCP server for coding\nagents.\n\nGitHub can show you open issues. It cannot tell you whether an issue is still\nrelevant, already being implemented, appropriate for an outside contributor,\nor supported by enough evidence to work on safely.\n\nGitContribute collects repository guidance, related issues and pull requests,\ncode context, accepted contribution patterns, and validation results in a local\nSQLite corpus. Results identify missing or stale coverage.\n\n```text\nfind work -> understand it -> check competing work -> prove the change -> prepare the handoff\n```\n\n> [!IMPORTANT]\n> GitContribute never writes to GitHub. It prepares local research and drafts\n> for you to review.\n\n## Quick start\n\nRun the guided setup with Node.js 18 or newer:\n\n```sh\nnpx --yes gitcontribute@latest setup\n```\n\nChoose **MCP** to use GitContribute from a supported coding agent, **CLI** for\nthe terminal and TUI, or **Both**. The wizard shows every planned change before\napplying it. Adding a repository during setup does not contact GitHub or start\na sync.\n\nAfter setup, start with a repository or an exact issue:\n\n| Task | Coding agent | CLI |\n| --- | --- | --- |\n| Find candidates | `Find contribution candidates in owner/repo. Rank them by contribution fit, evidence, scope, and coordination risk.` | `gitcontribute archive sync owner/repo`<br>`gitcontribute radar owner/repo --limit 10` |\n| Research an issue | `Investigate owner/repo#42. Check guidance, discussion, code, prior fixes, competing work, and missing evidence.` | `gitcontribute archive sync owner/repo --numbers 42`<br>`gitcontribute research brief issue:owner/repo#42` |\n\nResults include source references, coverage gaps, and suggested next steps.\n\n<details>\n<summary><strong>Other installation options</strong></summary>\n\nInstall a persistent command:\n\n```sh\nnpm install --global gitcontribute@latest\ngitcontribute setup\n```\n\nPin GitContribute to a project:\n\n```sh\nnpm install --save-dev gitcontribute\nnpm exec -- gitcontribute setup --mode mcp --codex --token-source none --yes\n```\n\nBuild from source with Go 1.26 or newer:\n\n```sh\ngo install github.com/morluto/gitcontribute/cmd/gitcontribute@latest\n```\n\nNative npm binaries are included for macOS ARM64/x64, Linux ARM64/x64, and\nWindows x64. You also need `git`. The `gh` CLI is optional and can provide\nauthentication through `gh auth token`.\n\n</details>\n\n## Contribution workflow\n\n### 1. Find a candidate\n\nSearch a repository or rank its open issues by available evidence, scope,\nrisks, blockers, and signs that maintainer coordination is needed.\n\n```text\nFind contribution candidates in golang/go. Exclude issues with active\nimplementation work and explain why each remaining candidate is worth\ninvestigating.\n```\n\nThe ranking only covers stored observations. Results report incomplete\ncoverage.\n\n### 2. Research an issue\n\nBuild a research brief from the issue, repository guidance, discussion, linked\nwork, indexed code, and historical contributions. Extracted maintainer text and\ncheckboxes are not presented as complete acceptance criteria.\n\n```text\nInvestigate issue owner/repo#42. Summarize the confirmed problem, likely scope,\nrelevant code, maintainer guidance, and open questions.\n```\n\n### 3. Check related work\n\nLook for duplicate reports, linked pull requests, closing relationships, and\nsemantically overlapping work before investing in an implementation.\n\n```text\nCheck whether owner/repo#42 has duplicate reports or competing implementation\nwork. Tell me what you checked and identify any missing coverage.\n```\n\nIncomplete coverage is reported instead of being treated as proof that no\ncompeting work exists. In the MCP workflow, follow the returned typed recovery\naction, poll the durable job, and reread the affected exact thread or\nrepository before drawing that conclusion.\n\n### 4. Validate a change\n\nRecord a reproduction, test, benchmark, or other validation and compare the\nunmodified baseline with a candidate. Validation commands run only after\nexplicit approval.\n\n```text\nValidate my candidate change against the baseline. Run the approved checks,\nrecord both results, and explain whether the evidence supports the change.\n```\n\nStored runs include the command, outcome, timing, and available process\nmetrics.\n\n### 5. Prepare a draft\n\nCreate a local issue, pull-request, or review draft tied to the research and\nvalidation evidence already collected.\n\n```text\nPrepare a pull-request draft for this contribution. Tie its claims to the\nrecorded evidence, include the validation results, and do not post anything.\n```\n\nDraft revisions retain their exact rendered bytes and provenance.\n\n## Interfaces and storage\n\nGitContribute stores repositories, threads, code snapshots, investigations,\nevidence, validation results, and contribution outcomes in SQLite. Network\naccess is explicit; once information has been synced, corpus search and\ninspection work offline.\n\n```text\n GitHub read APIs                  Local checkout\n       |                                |\n       | explicit sync / hydrate        | explicit index / acquire\n       v                                v\n  +------------------------------------------------+\n  |              Local SQLite corpus               |\n  | observations · coverage · evidence · outcomes  |\n  +------------------------+-----------------------+\n                           | offline reads\n                 +---------+---------+\n                 v                   v\n              CLI / TUI          Coding agents\n```\n\nThe CLI and MCP server use the same application services and side-effect\nboundaries.\n\n## CLI\n\nThe CLI exposes the same workflow without requiring an MCP client:\n\n```sh\n# Sync repository context and current threads\ngitcontribute archive sync-context owner/repo\ngitcontribute archive sync owner/repo\n\n# Find and inspect contribution candidates\ngitcontribute radar owner/repo --limit 10\ngitcontribute research brief issue:owner/repo#42\n\n# Search stored threads and indexed code\ngitcontribute search threads \"connection timeout\" --repo owner/repo\ngitcontribute search code \"context.WithTimeout\" --repo owner/repo\n```\n\nFor implementation work:\n\n```sh\ngitcontribute investigation start-thread issue:owner/repo#42 --json\ngitcontribute workspace create <investigation-id>\ngitcontribute validation define --kind=test --command=\"go test ./...\" \\\n  --working-dir=/path/to/workspace <investigation-id>\ngitcontribute validation run <validation-id> --kind=base --execute\ngitcontribute validation run <validation-id> --kind=candidate --execute\ngitcontribute validation compare <base-run-id> <candidate-run-id>\ngitcontribute readiness opportunity <opportunity-id>\ngitcontribute prepare pr --approach=\"Bound retries with context\" \\\n  --workspace <workspace-id> <opportunity-id>\n```\n\nRun `gitcontribute --help` or `gitcontribute <command> --help` for the complete\ncommand and flag reference. Most non-interactive commands accept `--json`;\nmachine-readable output goes to stdout and progress goes to stderr.\n\nLaunch the local TUI with:\n\n```sh\ngitcontribute tui\n```\n\n## MCP\n\nThe MCP server advertises one unified catalog. Hosts such as Codex and Claude\nCode can discover large MCP catalogs with native tool search, so setup does not\nask users to choose permanent capability profiles.\n\n```sh\ngitcontribute setup --mode mcp --codex --token-source none --yes\ngitcontribute setup --mode mcp --all-clients --token-source none --yes\n```\n\nTo start the stdio server directly:\n\n```sh\ngitcontribute mcp serve --transport=stdio\n```\n\nAdd `--read-only` to remove tools that permit network access, local writes, or\nexecution. See [MCP catalog and composition](docs/mcp.md) for capability\nboundaries, snapshot recovery, resource handoffs, and common tool sequences.\n\nGitHub users are stored as first-class actors. Live discovery records identity\nonly; profile, social-account, organization, pinned-item, repository, and\ncontribution facts are synchronized independently. See the\n[actor corpus](docs/actor-corpus.md) for the data and freshness model.\n\n## Side-effect boundaries\n\nGitContribute separates corpus reads, GitHub reads, local writes, process\nexecution, and external mutation.\n\n| Operation | Network | Local write | Runs a process | GitHub write |\n| --- | :---: | :---: | :---: | :---: |\n| Search and inspect stored research | No | No | No | No |\n| Record investigations and evidence | No | Yes | No | No |\n| Sync or hydrate GitHub context | Yes | Yes | No | No |\n| Acquire and index code | Yes | Yes | `git` only | No |\n| Run an explicitly approved validation | No by default | Yes | Yes | No |\n\n- Corpus reads never fetch data.\n- Crawling and indexing never execute repository-controlled code.\n- Explicit validation commands run on your host with your user permissions.\n- GitContribute has no GitHub mutation capability.\n- There is no hosted corpus or product telemetry.\n\nSee [Architecture](docs/architecture.md) for the complete boundary definitions.\n\n## Documentation\n\n- [Onboarding and configuration](docs/onboarding.md)\n- [MCP catalog and composition](docs/mcp.md)\n- [Actor corpus](docs/actor-corpus.md)\n- [Architecture and side-effect boundaries](docs/architecture.md)\n- [Operational runbooks](docs/runbooks.md)\n- [Security policy](SECURITY.md)\n- [Contributing](CONTRIBUTING.md)\n\n## Storage\n\nGitContribute follows platform conventions:\n\n| Platform | Configuration | Data |\n| --- | --- | --- |\n| Linux | `$XDG_CONFIG_HOME/gitcontribute` or `~/.config/gitcontribute` | `$XDG_DATA_HOME/gitcontribute` or `~/.local/share/gitcontribute` |\n| macOS | `~/Library/Application Support/gitcontribute` | `~/Library/Application Support/gitcontribute/Data` |\n| Windows | `%APPDATA%\\gitcontribute` | `%LOCALAPPDATA%\\gitcontribute\\Data` |\n\nThe default corpus is `gitcontribute.db` in the data directory. Run\n`gitcontribute metadata` or `gitcontribute doctor --json` to inspect the local\nsetup.\n\n## Platform support\n\nLinux and macOS are the primary development and test targets. Windows builds\nare tested in CI and use the standard `%APPDATA%` and `%LOCALAPPDATA%`\nlocations.\n\n## Development\n\n```sh\nmake verify\ngo run ./cmd/gitcontribute --help\n```\n\nBefore changing package boundaries or side effects, read\n[docs/architecture.md](docs/architecture.md). See\n[CONTRIBUTING.md](CONTRIBUTING.md) for the repository workflow.\n",
  "bytes": 11312,
  "sha": "69f85df6d110a85e9d1d445f808886e2a2e50750badb53170f9c1643165e37d8",
  "repo_slug": "morluto/gitcontribute",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_morluto_gitcontribute_f6bce4ae/readme"
}