{
  "markdown": "# PR Comments Resolver\n\nA multi-agent skill plugin that resolves unresolved PR/MR review comments across GitHub, GitLab, Bitbucket Cloud, and Azure DevOps.\n\nSupported agents: **Claude Code**, **Augment**, **Codex**, **Junie**, **Roo Code**.\n\n## Features\n\n- **Multi-platform**: GitHub (Pull Requests), GitLab (Merge Requests), Bitbucket Cloud, and Azure DevOps.\n- **Auto-detection**: Identifies the hosting platform from the git remote URL.\n- **Pluggable auth**: For Bitbucket and Azure DevOps you choose between a CLI path (analogous to `gh`/`glab`) and an MCP-server path. The skill remembers your choice per repository.\n- **Secret hygiene**: PATs are never written to memory or MCP config files — only env-variable references (e.g. `${AZURE_DEVOPS_PAT}`).\n- **Memory**: Saves platform settings so subsequent runs skip detection and auth-method selection.\n- **Deferred critical comments**: Classifies critical or larger-scope comments (security gaps, missing features, cross-file refactors) and handles them after all normal comments are done. For each deferred item you pick the workflow: SDD, Brainstorming, plan mode, just-do-it, or skip.\n- **Reply/Resolve preference**: One prompt per project decides whether the skill may post replies and resolve threads on your behalf (`a` post & resolve / `b` post only / `c` none). Applied uniformly across normal, deferred, and no-code-change paths.\n- **Configurable verification**: Runs project-defined lint, test, and analysis commands from `CLAUDE.md` (or `AGENTS.md` as fallback).\n- **Graphify-aware**: If a `graphify` skill is available in the running agent, the skill is required to use it for understanding code, mapping cross-file relationships, and design decisions (Step 0). If Graphify is absent, the skill proceeds normally.\n- **Language-agnostic**: Works with any programming language or framework.\n\n## Supported Platforms\n\n| Platform        | CLI path                                                                             | MCP path                                                                                 |\n|-----------------|--------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------|\n| GitHub          | `gh`                                                                                 | —                                                                                        |\n| GitLab          | `glab`                                                                               | —                                                                                        |\n| Bitbucket Cloud | `acli` ([Atlassian CLI](https://developer.atlassian.com/cloud/acli/))                | [Atlassian Remote MCP](https://mcp.atlassian.com/v1/sse) (OAuth)                         |\n| Azure DevOps    | `az` + the [`azure-devops` extension](https://learn.microsoft.com/azure/devops/cli/) | [`@azure-devops/mcp`](https://www.npmjs.com/package/@azure-devops/mcp) (PAT via env var) |\n\nFor platforms with two paths the skill prompts on first use. The choice is persisted in project memory and skipped on subsequent runs.\n\n## Architecture\n\nA single source (`core/` + `adapters/<agent>/`) is compiled into per-agent variants\n(`skills/`, `dist/`, `plugins/`) by `scripts/build.sh`. Generated artifacts are committed\nautomatically after merge by the release workflow. For the full picture — source vs.\ngenerated files, per-agent `plugin.json` differences, the build, and the CI/CD release\nflow — see [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md).\n\n## Installation\n\n### Claude Code\n\n```bash\n/plugin marketplace add Dropelikeit/pr-comments-resolver\n/plugin install pr-comments-resolver@pr-comments-resolver\n```\n\n### Augment\n\nAugment reads the same `.claude-plugin/` manifests as Claude, plus its own `.augment-plugin/`. The repository now ships an agent-specific plugin bundle under `plugins/augment/pr-comments-resolver`, so the marketplace entry points at an installable plugin directory instead of the repo root. Install via Augment's plugin/marketplace UI by pointing it at this repository.\n\n### Codex\n\nCodex auto-discovers `.codex-plugin/` and the repo-scoped marketplace at `.agents/plugins/marketplace.json`. The marketplace entry points at `plugins/codex/pr-comments-resolver`, which contains a self-contained Codex plugin bundle.\n\nIf plugin installation from repo marketplaces is available in your Codex build, use the repository directly:\n\n```bash\ncodex plugin marketplace add Dropelikeit/pr-comments-resolver\ncodex plugin add pr-comments-resolver@pr-comments-resolver\n```\n\nIf your Codex build does not yet allow the plugin path, install the skill directly instead:\n\n```sh\nbash scripts/build.sh codex\nbash scripts/install.sh codex --user\n```\n\nThat copies the generated skill to `~/.codex/skills/resolve-comments`. Restart Codex afterwards so the new skill is discovered.\n\n### Junie\n\nJunie does not self-publish; install manually:\n\n```sh\nbash scripts/install.sh junie --user      # install to ~/.junie/skills/\nbash scripts/install.sh junie --project   # install to ./.junie/skills/\n```\n\n### Roo Code\n\nRoo Code does not have a public marketplace format; install manually:\n\n```sh\nbash scripts/install.sh roo --user        # install to ~/.roo/skills/\nbash scripts/install.sh roo --project     # install to ./.roo/skills/\n```\n\n## Prerequisites\n\nDepending on your hosting platform and chosen auth method, install one of the following.\n\nFor a direct Codex skill install, you also need the skill present under `~/.codex/skills/`. The helper above handles that copy for you.\n\n### CLI paths\n\n| Platform        | CLI Tool                        | Install                                                                                                    | Auth                                                   |\n|-----------------|---------------------------------|------------------------------------------------------------------------------------------------------------|--------------------------------------------------------|\n| GitHub          | `gh`                            | [cli.github.com](https://cli.github.com/)                                                                  | `gh auth login`                                        |\n| GitLab          | `glab`                          | [gitlab.com/gitlab-org/cli](https://gitlab.com/gitlab-org/cli)                                             | `glab auth login`                                      |\n| Bitbucket Cloud | `acli`                          | [developer.atlassian.com/cloud/acli](https://developer.atlassian.com/cloud/acli/)                          | `acli auth login`                                      |\n| Azure DevOps    | `az` + `azure-devops` extension | [learn.microsoft.com/cli/azure/install-azure-cli](https://learn.microsoft.com/cli/azure/install-azure-cli) | `az extension add --name azure-devops` then `az login` |\n\nThe skill verifies authentication before doing any work and stops with a specific install/login instruction if something is missing.\n\n### MCP paths\n\nBitbucket and Azure DevOps additionally support an MCP-server path. The skill writes the MCP server entry for you (`mcpServers.atlassian` or `mcpServers.ado`) into `~/.claude.json` by default, or `.mcp.json` in the repository if you prefer project scope. If an entry already exists, the skill shows you the diff and asks before overwriting — it never mutates existing configuration silently.\n\n#### Bitbucket Cloud (Atlassian Remote MCP)\n\nNothing to install or configure ahead of time. The MCP server lives at `https://mcp.atlassian.com/v1/sse` and uses OAuth, so the first MCP tool call opens a browser for you to authenticate. The skill writes the following entry on your behalf:\n\n```json\n{\n  \"mcpServers\": {\n    \"atlassian\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"mcp-remote\", \"https://mcp.atlassian.com/v1/sse\"]\n    }\n  }\n}\n```\n\nAfter the write you restart Claude Code; the OAuth handshake happens automatically on first use.\n\n#### Azure DevOps (`@azure-devops/mcp`)\n\nYou need a [Personal Access Token (PAT)](https://learn.microsoft.com/azure/devops/organizations/accounts/use-personal-access-tokens-to-authenticate) for your organisation. **Never paste the PAT into the MCP config** — the skill enforces this for you by writing only an env-variable reference.\n\n1. Add the PAT to your shell profile (e.g. `~/.zshrc`):\n\n   ```sh\n   export AZURE_DEVOPS_PAT='<your-personal-access-token>'\n   ```\n\n   Reload the shell (`source ~/.zshrc`) so the variable is set in the current environment. The skill verifies the variable is set *before* writing the MCP config and stops with an instruction otherwise — your token value is never read into the skill, only its name.\n\n2. Run `/resolve-comments`. On first run, the skill asks for your Azure DevOps organisation name and the env-variable name (default `AZURE_DEVOPS_PAT`), then writes:\n\n   ```json\n   {\n     \"mcpServers\": {\n       \"ado\": {\n         \"command\": \"npx\",\n         \"args\": [\"-y\", \"@azure-devops/mcp\", \"<your-org>\", \"--authentication\", \"pat\"],\n         \"env\": {\n           \"PERSONAL_ACCESS_TOKEN\": \"${AZURE_DEVOPS_PAT}\"\n         }\n       }\n     }\n   }\n   ```\n\n3. Restart Claude Code, then re-run `/resolve-comments`. The MCP server resolves the env variable at start-up; the PAT value never lands in any config file or in the project memory.\n\n## Usage\n\nTrigger the skill with the slash command:\n\n```bash\n/resolve-comments\n```\n\nOr provide a specific PR/MR number:\n\n```bash\n/resolve-comments 42\n```\n\nThe skill will:\n\n1. Detect your hosting platform from the git remote\n2. For Bitbucket / Azure DevOps on first use, ask whether you want the CLI or MCP path (remembered for next time)\n3. Verify auth (CLI logged in, or MCP tools present); on failure, print the exact install/login command and stop\n4. Fetch all unresolved review comments / discussions / threads\n5. **Classify** each comment as `normal` or `deferred` and let you confirm the split before any work starts\n6. On first use, ask once for Reply/Resolve permission and remember it per project\n7. Work through `normal` comments sequentially, applying your reply/resolve preference\n8. Walk the `deferred` bucket afterwards, asking per item which workflow to use (SDD / Brainstorming / plan mode / just do it / skip)\n9. Run verification commands (from your project's `CLAUDE.md` or `AGENTS.md`)\n10. Self-review all changes\n11. Provide a summary\n\n## Deferred Critical Comments\n\nSome review comments are not small in-place edits — they flag missing critical or larger pieces of work (security gaps, missing features, refactors touching several files, reviewer-tagged `blocker` / `critical` / `must-fix`). The skill handles these in a dedicated pass so the obvious changes ship first and the bigger items get the design attention they need.\n\n**How it works:**\n\n1. After fetching unresolved comments, the skill proposes a split (`Deferred` / `Normal`) with a one-line reason per deferred item. You confirm or edit the split with `move <i>→normal`, `move <i>→deferred`, or `exclude <i>` until you reply `OK`.\n2. All `normal` items are processed first (existing flow).\n3. The `deferred` bucket runs strictly afterwards, one item at a time. For each item the skill offers five options:\n   - `[s]` use SDD (spec → plan → tasks)\n   - `[b]` use the Brainstorming skill\n   - `[p]` enter plan mode\n   - `[d]` just do it (no design skill — proceeds inline)\n   - `[x]` skip this item (recorded in the summary)\n\n   Options that depend on a skill the current harness can't see (e.g. SDD on Codex) are shown marked unavailable, not removed.\n4. After each item the Reply/Resolve permission applies exactly as in the normal flow.\n\n## Reply/Resolve Permission\n\nOn the first reply or resolve action in a repository, the skill asks once:\n\n- `a` — post replies AND resolve threads on my behalf\n- `b` — post replies only (you resolve manually)\n- `c` — no posting or resolving — I'll handle it\n\nThe answer is saved in the existing `pr-comments-resolver-platform` project memory. Subsequent runs skip the prompt. The choice applies to every reply/resolve interaction, including the no-code-change path: when a comment needs no code change, the skill posts a short justification and (for `a`) resolves the thread.\n\nPer-adapter naming: the memory field is `Reply/Resolve permission` (Claude), `reply-resolve-permission` (Augment / Roo), `pr-comments-resolver-reply-resolve` (Junie). Codex has no persistence layer — the prompt runs once per session.\n\n## Verification Commands\n\nThe skill looks for verification commands in your project's `CLAUDE.md` (or `AGENTS.md` if Claude is not in use). Define them however fits your project:\n\n- PHP: `task cs-fixer`, `task psalm`, `task test`\n- JavaScript: `npm run lint`, `npm test`\n- Python: `ruff check .`, `pytest`\n- Go: `go vet ./...`, `go test ./...`\n\nIf no commands are found, the skill will ask you what to run (or skip verification).\n\n## License\n\nMIT\n",
  "bytes": 13025,
  "sha": "c442840d0356539a0be8ed90898e80645c37fc44b5a2ab9db86d5f70c0e8f56a",
  "repo_slug": "dropelikeit/pr-comments-resolver",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/plg_dropelikeit_pr_comments_resolver_pr_comm_f461c5a8/readme"
}