Skip to main content

manage-pull-requests

Manage Harness Code pull requests via MCP. List, create, update, and merge PRs; add reviewers and submit review decisions (approve / request changes); post, update, and delete comments; read the discussion timeline; and check CI status. Use when asked to open a PR, merge a PR, approve a PR, leave a code review comment, request changes, assign reviewers, or inspect PR checks and activity. Trigger phrases: pull request, PR review, merge PR, approve PR, request changes, add reviewer, PR comments, PR checks, PR activity, code review.

Informações da origem

Repositório
thisrohangupta/cursor-harness-plugin
Última atividade na origem
16 de abril de 2026 às 23:36
Idioma detectado do SKILL.md
inglês
Estrelas
1
Forks
0

Opções de instalação

Por padrão, está selecionado o prompt que primeiro revisa a origem. Você pode mudar para um comando direto ou baixar uma cópia local.

Revise os arquivos de origem

Leia o SKILL.md e os arquivos complementares exibidos pelo SkillsMP antes de decidir se vai instalar.

Exibindo SKILL.md

SKILL.md
Instruções da origem · Visualização somente leitura
name
manage-pull-requests
description
Manage Harness Code pull requests via MCP. List, create, update, and merge PRs; add reviewers and submit review decisions (approve / request changes); post, update, and delete comments; read the discussion timeline; and check CI status. Use when asked to open a PR, merge a PR, approve a PR, leave a code review comment, request changes, assign reviewers, or inspect PR checks and activity. Trigger phrases: pull request, PR review, merge PR, approve PR, request changes, add reviewer, PR comments, PR checks, PR activity, code review.
metadata
{"author":"Harness","version":"1.0.0","mcp-server":"harness-mcp-v2"}
license
Apache-2.0
compatibility
Requires Harness MCP v2 server (harness-mcp-v2)
# Manage Pull Requests Manage Harness Code pull requests, reviewers, comments, checks, and activity via MCP v2. ## MCP v2 Tools Used | Tool | Resource Type | Purpose | |------|---------------|---------| | `harness_list` | `pull_request` | List PRs in a repo, filter by state | | `harness_get` | `pull_request` | Get PR details by number | | `harness_create` | `pull_request` | Open a new PR | | `harness_update` | `pull_request` | Update PR title / description / state | | `harness_execute` (action: `merge`) | `pull_request` | Merge a PR (merge/squash/rebase/fast-forward) | | `harness_list` | `pr_reviewer` | List reviewers on a PR | | `harness_create` | `pr_reviewer` | Add a reviewer to a PR | | `harness_execute` (action: `submit_review`) | `pr_reviewer` | Submit an `approved` or `changereq` review | | `harness_create` | `pr_comment` | Post a top-level or inline code comment | | `harness_update` | `pr_comment` | Edit a comment | | `harness_delete` | `pr_comment` | Delete a comment | | `harness_list` | `pr_activity` | Read the discussion timeline — **the only way to READ comments** | | `harness_list` | `pr_check` | List CI status checks on a PR | | `harness_schema` | any of the above | Exact JSON Schema for `create` / `update` body fields | All pull-request resources are **repo-scoped**. Every call needs `repo_id` and `pr_number` (except `harness_list` for `pull_request`, which only needs `repo_id`). `org_id` / `project_id` are optional (the server infers them from the repo). **URL shortcut:** the MCP server auto-extracts `repo_id` and `pr_number` if you pass a Harness PR URL via the `url` parameter — e.g. `harness_get(resource_type="pull_request", url="https://app.harness.io/ng/account/.../pulls/42")`. ## Instructions ### Step 1: List or find the PR ``` Call MCP tool: harness_list Parameters: resource_type: "pull_request" repo_id: "<repository_identifier>" state: "open" # optional: open | closed | merged query: "<keyword>" # optional: full-text search ``` Or fetch a specific PR: ``` Call MCP tool: harness_get Parameters: resource_type: "pull_request" repo_id: "<repository_identifier>" pr_number: <number> ``` ### Step 2: Open a PR ``` Call MCP tool: harness_create Parameters: resource_type: "pull_request" repo_id: "<repository_identifier>" body: title: "Fix race condition in scheduler" source_branch: "fix/scheduler-race" target_branch: "main" description: "Resolves HAR-1234. Adds mutex around queue access." ``` `title`, `source_branch`, `target_branch` are required. `description` supports markdown. ### Step 3: Update PR metadata ``` Call MCP tool: harness_update Parameters: resource_type: "pull_request" repo_id: "<repo>" pr_number: <number> body: title: "Updated title" description: "Updated description" state: "closed" # optional: open | closed ``` All body fields are optional — only include what you want to change. ### Step 4: Add reviewers ``` Call MCP tool: harness_create Parameters: resource_type: "pr_reviewer" repo_id: "<repo>" pr_number: <number> body: reviewer_id: <numeric_user_id> ``` List current reviewers with `harness_list(resource_type="pr_reviewer", repo_id, pr_number)`. ### Step 5: Submit a review decision ``` Call MCP tool: harness_execute Parameters: resource_type: "pr_reviewer" action: "submit_review" repo_id: "<repo>" pr_number: <number> body: decision: "approved" # approved | changereq commit_sha: "<sha>" # optional — the commit you reviewed ``` ### Step 6: Post a comment **Top-level comment:** ``` Call MCP tool: harness_create Parameters: resource_type: "pr_comment" repo_id: "<repo>" pr_number: <number> body: text: "LGTM with one nit — see inline." ``` **Inline code comment:** ``` Call MCP tool: harness_create Parameters: resource_type: "pr_comment" repo_id: "<repo>" pr_number: <number> body: text: "This loop can leak if the context is cancelled." path: "scheduler/queue.go" line_new: 142 source_commit_sha: "<source_sha>" target_commit_sha: "<target_sha>" ``` Use `line_old` for comments on removed lines. ### Step 7: Read comments — use `pr_activity`, not `pr_comment` The Harness Code API does **not** expose `GET` on `/comments`. To read the discussion, list PR activity filtered by kind: ``` Call MCP tool: harness_list Parameters: resource_type: "pr_activity" repo_id: "<repo>" pr_number: <number> kind: "comment" # just comments (general + code) # or type: "code-comment" for inline code review comments only ``` Other useful `type` filters: `review-submit`, `reviewer-add`, `state-change`, `merge`, `title-change`. ### Step 8: Edit or delete a comment ``` Call MCP tool: harness_update Parameters: resource_type: "pr_comment" repo_id: "<repo>" pr_number: <number> comment_id: <numeric_comment_id> body: text: "Updated comment body" ``` ``` Call MCP tool: harness_delete Parameters: resource_type: "pr_comment" repo_id: "<repo>" pr_number: <number> comment_id: <numeric_comment_id> ``` ### Step 9: Inspect CI checks ``` Call MCP tool: harness_list Parameters: resource_type: "pr_check" repo_id: "<repo>" pr_number: <number> ``` Returns the status of each status check (pipeline, test run, external check) associated with the PR head commit. Use this before merging to confirm required checks are green. ### Step 10: Merge ``` Call MCP tool: harness_execute Parameters: resource_type: "pull_request" action: "merge" repo_id: "<repo>" pr_number: <number> body: method: "squash" # merge | squash | rebase | fast-forward delete_source_branch: true dry_run: false source_sha: "<expected_sha>" # optional optimistic lock ``` Set `dry_run: true` first to preview the merge without executing — useful before destructive merges. ## Examples ### Open a PR and request a review ``` /manage-pull-requests Open a PR from feat/new-auth into main titled "Add OAuth device flow" on repo platformUI, and add user 12345 as a reviewer. ``` ### Read all unresolved comments on a PR ``` /manage-pull-requests Show me every inline code comment on PR 182 in repo harness-core so I can address them. ``` ### Approve and merge ``` /manage-pull-requests Approve PR 47 in repo mcp-server with a "LGTM" comment, then squash-merge it and delete the branch. ``` ### Check CI before merging ``` /manage-pull-requests List the checks on PR 99 in repo harness-cli. If they're all green, merge it with a squash. ``` ### Close a stale PR ``` /manage-pull-requests Close PR 22 in repo harness-skills with a comment explaining we're going in a different direction. ``` ## Performance Notes - **Always pass `repo_id` + `pr_number` together** except for `harness_list(pull_request)` which only needs `repo_id`. Missing `pr_number` on per-PR calls returns a helpful 400 from the server. - **Read comments via `pr_activity`, never `pr_comment`.** The comments endpoint is POST-only. Use `kind=comment` for all discussion, `type=code-comment` for inline only. - **Use `dry_run: true` on merge** before destructive squash/rebase merges — especially on main branches with required checks. - **Prefer the URL shortcut** when the user pastes a PR link. `url="<PR URL>"` auto-extracts `org_id`, `project_id`, `repo_id`, and `pr_number` — fewer args to get wrong. - **`pr_reviewer.submit_review`** records a review independently of the reviewer list. You don't need to call `harness_create(pr_reviewer)` first to submit a review — any user with access can review. - **Cross-scope search**: `harness_search(query="<text>", resource_types=["pull_request"])` finds PRs across repos when you don't know which repo contains it. ## Troubleshooting ### "repo_id is required" All PR operations are repo-scoped. Pass the repo identifier (not the repo name) — list repos first with `harness_list(resource_type="repository")` if you're unsure. ### Comments don't show up when I list them `pr_comment` has no `list`/`get` operations. Use `harness_list(resource_type="pr_activity", kind="comment")` to read the discussion timeline. ### "GET /comments not found" / 404 on reading a comment Same cause as above — the Harness Code API is POST-only for `/comments`. Read via `pr_activity`. ### Review decision rejected Check the `decision` value — it must be exactly `"approved"` or `"changereq"`. The API does not accept `"approve"` (no `d`) or `"request_changes"`. ### Merge fails with "source SHA mismatch" You passed `source_sha` and it no longer matches the branch head (someone pushed after you computed it). Drop `source_sha` or re-fetch the PR to get the current `source_sha`. ### Inline comment has no diff context Inline code comments need both `source_commit_sha` and `target_commit_sha` in the body — without them the comment appears as a top-level comment. Get the SHAs from `harness_get(pull_request)` → `source_sha` / `target_sha`. ### Required checks aren't passing but merge succeeded anyway `harness_execute(action=merge)` bypasses branch protection if the caller has admin rights. Use `harness_list(resource_type="pr_check")` first and fail fast in automation if any check is not `success`.
Ver no GitHub