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.

Informations de source

Dépôt
thisrohangupta/cursor-harness-plugin
Dernière activité de la source
16 avril 2026 à 23:36
Langue détectée de SKILL.md
anglais
Étoiles
1
Forks
0

Options d'installation

Le prompt qui vérifie d'abord la source est sélectionné par défaut. Vous pouvez passer à une commande directe ou télécharger une copie locale.

Vérifiez les fichiers source

Lisez SKILL.md et les fichiers associés affichés par SkillsMP avant de décider de l'installer.

Affichage de SKILL.md

SKILL.md
Instructions source · Aperçu en lecture seule
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`.
Voir sur GitHub