Agent skill

Verify Candidate PR Fix

by stickerdaniel in stickerdaniel/linkedin-mcp-server

Reviews a candidate pull request's diff and tests against its linked issue, with an optional live comparison against a previously captured baseline, without editing, merging or pushing.

Apache-2.0Auto-check passedDevelopment

Install Verify Candidate PR Fix

skills CLI
$ npx skills add stickerdaniel/linkedin-mcp-server --skill 3-verify-pr-fix -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install stickerdaniel/linkedin-mcp-server 3-verify-pr-fix --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/stickerdaniel/linkedin-mcp-server.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/3-verify-pr-fix .claude/skills/3-verify-pr-fix && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
3-verify-pr-fix
GitHub stars
3.8k
Token cost
~2k tokens
SKILL.md length
417 words
Files
1
Skills in repo
7
Repo updated
First seen
Licence
Apache-2.0

At a glance

Reviews a candidate pull request's diff and tests against its linked issue, with an optional live comparison against a previously captured baseline, without editing, merging or pushing.

  • Works in 4 steps: Resolve the PR and its linked issue → Packet, diff, and tests → Optional live comparison → …
  • Checking whether a candidate PR actually fixes its linked issue
  • SKILL.md covers 1. Resolve the PR and its…, 2. Packet, diff, and tests, 3. Optional live comparison and 4. Report, plus 1 more section
  • Calls git, gh and jq

What it does

The skill resolves the PR number from its argument or URL, extracts the linked issue from phrasing like Closes, Fixes, Resolves or a bare issue reference in the PR body, asking which one to target if several are linked, then reads that issue's packet and comments before looking at the diff and the list of changed files. A fixed set of hard flags downgrades an otherwise clean verdict to concerns: locale-dependent string matching such as comparing against a literal label, brittle site-specific class-name selectors instead of generic attribute selectors, several navigations hidden behind one section entry, and tests missing beside the file's canonical owner.

A live comparison against a captured baseline is optional and only runs after an explicit yes, and only when genuine baseline and metadata files already exist from an earlier reproduction step; if either file is missing, the skill keeps the packet-and-diff verdict rather than fabricating a baseline, and it never claims an on-main baseline just because of a filename. The step is complete once the report can say whether the diff addresses the packet at that commit, which audit flags apply, and whether a live comparison is still needed.

When your agent uses it

  • Checking whether a candidate PR actually fixes its linked issue
  • Reviewing a PR's diff and tests against hard-flag patterns before merging
  • Running an optional live comparison against a previously captured baseline

Example prompts

  • “Verify this PR against its linked issue and tell me if the fix actually addresses it.”
  • “Does this PR's diff rely on any locale-dependent selectors that could break?”
  • “Run the optional live comparison for this PR if a baseline capture already exists.”

Requirements

  • The gh CLI

Workflow steps

4 steps, taken from the step headings in SKILL.md.

  1. Resolve the PR and its linked issue
  2. Packet, diff, and tests
  3. Optional live comparison
  4. Report

What it can do on your machine

Read from SKILL.md and the folder at commit 01c2d5e. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • git
    • gh
    • jq
    • curl
    • uv

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use git, gh, curl and uv, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Verify Candidate PR Fix loads about 2k tokens when it runs. Until then it costs about 24 tokens; SKILL.md has 417 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~24
When it runs · the whole SKILL.md, loaded when a task matches
~2k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from stickerdaniel/linkedin-mcp-server at commit 01c2d5e, republished under its Apache-2.0 licence (© stickerdaniel). 417 words, ~1,983 tokens.

Download SKILL.mdSave it as .claude/skills/3-verify-pr-fix/SKILL.md (or your agent's skills folder).
name
3-verify-pr-fix
description
Verify PR #N, does this PR fix #M, check the fix in #N, or test the candidate PR.
argument-hint
<pr-number-or-url>

Verify a candidate PR

Review the packet, the candidate diff, and relevant tests. Live comparison against a captured baseline is optional. No edits, no merges, no pushes.

1. Resolve the PR and its linked issue

bash
PR=$(echo "$ARGUMENTS" | sed -E 's|.*/||; s|#||g' | grep -oE '^[0-9]+' | head -1)
[ -z "$PR" ] && { echo "Invalid input: '$ARGUMENTS'. Pass a PR number or URL." >&2; exit 1; }
REPO=stickerdaniel/linkedin-mcp-server

gh pr view $PR --repo $REPO --json title,body,baseRefName,headRefName,headRepositoryOwner,mergeable,mergeStateStatus,additions,deletions,changedFiles,maintainerCanModify,statusCheckRollup

Extract the linked issue number from the PR body (Closes #, Fixes #, Resolves #, or plain #N). Call it ISSUE. If multiple, ask which one is the verification target.

Read that issue's packet and comments.

2. Packet, diff, and tests

This path does not need /tmp/repro-issue-$ISSUE-main.json. Absence of a local baseline limits the live branch, not the whole PR verdict. Do not create fake success or failure files.

bash
gh pr diff $PR --repo $REPO
gh pr view $PR --repo $REPO --json files --jq '.files[].path'

Hard flags (any one downgrades a clean live pass to concerns):

  • Locale-dependent detection: == "Connect", in ["Pending", "Follow"], contains("1st"), aria-label="..." with translated text. Attribute presence is the locale-independent signal.
  • LinkedIn class-name selectors: .entity-result__item, .artdeco-button__text. Minimal generic selectors only (a[href*="/jobs/view/"]).
  • Multiple navigations behind one PERSON_SECTIONS / COMPANY_SECTIONS entry.
  • Missing tests beside the canonical owner from docs/linkedin-architecture.md.

A supplied capture or regression fixture can support a before-and-after claim within its scope. Protocol or startup failures are execution limits, not a pass.

This step is complete when the report can say whether the diff addresses the packet at this SHA, which audit flags apply, and whether a live comparison is still needed.

Show full SKILL.md (209 more words)Show less

3. Optional live comparison

Only after an explicit yes, and only when a genuine captured baseline exists.

/2-repro-issue writes:

  • /tmp/repro-issue-<ISSUE>-main.json. Captured response
  • /tmp/repro-issue-<ISSUE>-meta.json. {tool, arguments, sha}

If either file is missing or empty, keep the packet-and-diff verdict. Offer the evidence-and-code path. A new live baseline requires approval.

Read sha from the meta file. Do not claim an on-main baseline merely because of the filename. Compare the same call and a sufficiently comparable account context before claiming a live fix.

bash
if [ ! -s /tmp/repro-issue-$ISSUE-main.json ] || [ ! -s /tmp/repro-issue-$ISSUE-meta.json ]; then
  echo "No captured baseline. Keep the packet-and-diff verdict. Do not check out or call the server." >&2
  exit 0
fi
TOOL=$(jq -r .tool /tmp/repro-issue-$ISSUE-meta.json)
ARGS_JSON=$(jq -c .arguments /tmp/repro-issue-$ISSUE-meta.json)
BASE_SHA=$(jq -r .sha /tmp/repro-issue-$ISSUE-meta.json)
echo "Replaying: $TOOL($ARGS_JSON) from sha $BASE_SHA"

Guarded checkout. Leave the user's original branch or detached SHA intact. Clean up only processes and files this run created.

bash
if [ -n "$(git status --porcelain)" ]; then
  echo "Worktree is dirty. Ask before checkout. Do not continue live comparison on a dirty tree." >&2
  exit 1
fi
CURRENT_REF=$(git symbolic-ref -q --short HEAD || git rev-parse HEAD)

git fetch origin "pull/$PR/head" || { echo "git fetch for PR #$PR failed, aborting before checkout." >&2; exit 1; }
PR_SHA=$(git rev-parse FETCH_HEAD)
git checkout --detach "$PR_SHA"

cleanup_verify() {
  rc=$?
  trap - EXIT INT TERM
  kill $SERVER_PID 2>/dev/null
  wait $SERVER_PID 2>/dev/null
  git checkout "$CURRENT_REF" 2>/dev/null
  rm -f /tmp/verify-pr-$PR.json /tmp/verify-pr-$PR-headers /tmp/verify-pr-$PR.log /tmp/verify-pr-$PR-init.json /tmp/verify-pr-$PR-initialized.json
  exit $rc
}
trap cleanup_verify EXIT INT TERM

Restart the server after checkout.

bash
PORT=8765
while lsof -nP -iTCP:$PORT -sTCP:LISTEN >/dev/null 2>&1; do PORT=$((PORT+1)); done
uv run -m linkedin_mcp_server --transport streamable-http --port $PORT --log-level INFO > /tmp/verify-pr-$PR.log 2>&1 &
SERVER_PID=$!

for i in $(seq 1 30); do
  lsof -nP -iTCP:$PORT -sTCP:LISTEN >/dev/null 2>&1 && break
  kill -0 $SERVER_PID 2>/dev/null || { echo "Server died during startup. Tail of /tmp/verify-pr-$PR.log:" >&2; tail -20 /tmp/verify-pr-$PR.log >&2; exit 1; }
  sleep 1
done
lsof -nP -iTCP:$PORT -sTCP:LISTEN >/dev/null 2>&1 || { echo "Server never bound port $PORT after 30s" >&2; tail -20 /tmp/verify-pr-$PR.log >&2; exit 1; }

curl -s -D /tmp/verify-pr-$PR-headers -X POST http://127.0.0.1:$PORT/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"verify-pr","version":"1.0"}}}' \
  > /tmp/verify-pr-$PR-init.json

SESSION_ID=$(grep -i 'Mcp-Session-Id' /tmp/verify-pr-$PR-headers | awk '{print $2}' | tr -d '\r')
[ -z "$SESSION_ID" ] && { echo "MCP initialize returned no Mcp-Session-Id. Tail of /tmp/verify-pr-$PR.log:" >&2; tail -20 /tmp/verify-pr-$PR.log >&2; kill $SERVER_PID 2>/dev/null; exit 1; }
grep -q '"error"' /tmp/verify-pr-$PR-init.json && { echo "Initialize returned a protocol error. Execution limit." >&2; cat /tmp/verify-pr-$PR-init.json >&2; kill $SERVER_PID 2>/dev/null; exit 1; }

curl -s -X POST http://127.0.0.1:$PORT/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -H "Mcp-Session-Id: $SESSION_ID" \
  -d '{"jsonrpc":"2.0","id":2,"method":"notifications/initialized","params":{}}' \
  > /tmp/verify-pr-$PR-initialized.json
grep -q '"error"' /tmp/verify-pr-$PR-initialized.json && { echo "notifications/initialized returned a protocol error. Execution limit." >&2; cat /tmp/verify-pr-$PR-initialized.json >&2; kill $SERVER_PID 2>/dev/null; exit 1; }

Capture and inspect both response bodies before tools/call. A protocol or validation error is an execution limit.

bash
curl -s -X POST http://127.0.0.1:$PORT/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -H "Mcp-Session-Id: $SESSION_ID" \
  -d "{\"jsonrpc\":\"2.0\",\"id\":3,\"method\":\"tools/call\",\"params\":{\"name\":\"$TOOL\",\"arguments\":$ARGS_JSON}}" \
  | tee /tmp/verify-pr-$PR.json | head -200

kill $SERVER_PID 2>/dev/null; wait $SERVER_PID 2>/dev/null
diff -u /tmp/repro-issue-$ISSUE-main.json /tmp/verify-pr-$PR.json | head -200

Live outcomes: fixes in this environment, fixes with concerns, does not fix in this environment, execution limit. A success here never refutes a reporter failure on a different account.

4. Report

**PR #<PR>** (linked #<ISSUE>). <one-line PR title>
**Mergeable:** <CLEAN | DIRTY conflicts | BLOCKED>
**Scope:** <+X/-Y, N files>
**Packet/diff verdict:** <addresses the packet | does not address the packet | needs more evidence>
**Live verdict:** <optional, or skipped: no baseline>
**Audit flags:** <locale-dependent | DOM-class selectors | section-mapping violation | missing tests | none>
**Recommended next step:** <merge | request changes | take over via maintainer-edits | no live check needed>

Non-negotiables

  • Packet and diff first. Live comparison only after yes, with a genuine baseline.
  • Restart the server after checkout. Running workers hold stale code.
  • Do not push, edit the PR, or merge.
  • Leave the user's original branch or detached SHA intact.
  • Locale and DOM-class flags remain concerns even if a live call looks fixed on one target.

© stickerdaniel, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .agents/skills/3-verify-pr-fix of stickerdaniel/linkedin-mcp-server.

Open the folder on GitHubat commit 01c2d5e

Compare with similar skills

Verify Candidate PR Fix next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Verify Candidate PR Fix compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Verify Candidate PR Fix this skillstickerdaniel/linkedin-mcp-server3.8k—~2kAutomated safety check: PassApache-2.0
PR Babysitteropeninterpreter/openinterpreter69k3 repos~4.2kAutomated safety check: PassApache-2.0
Tabularis Local PR ReviewTabularisDB/tabularis5.1k—~1.4kAutomated safety check: PassApache-2.0
MAUI PR Performance Analysisdotnet/maui23k—~2.4kAutomated safety check: PassMIT
Compound Engineering Code ReviewEveryInc/compound-engineering-plugin25k—~2kAutomated safety check: PassMIT
Azurite Pull Request ReviewAzure/AgentBaker157—~3.9kAutomated safety check: PassMIT

Similar skills

  • PR Babysitter

    openinterpreter/openinterpreter

    Watches an open GitHub pull request until it merges, handling review comments, diagnosing CI failures and retrying flaky checks along the way.

    69k GitHub starsUsed in 3 repos~4.2k tokens
    DevelopmentAuto-check passed
  • Tabularis Local PR Review

    TabularisDB/tabularis

    Reviews a Tabularis pull request locally, judging the diff against the repo's rule files, verifying every claim in its description against the code, and running its tests on the real branch.

    5.1k GitHub stars~1.4k tokensUpdated today
    DevelopmentAuto-check passed
  • Official

    Interprets pinned managed benchmark evidence for a dotnet/maui pull request and writes a narrative for the performance review workflow, without running or publishing anything.

    23k GitHub stars~2.4k tokensUpdated today
    DevelopmentAuto-check passed
  • Compound Engineering Code Review

    EveryInc/compound-engineering-plugin

    Runs a staged pull request or diff review using selected reviewer personas, checking the change against its stated intent and project standards before producing findings.

    25k GitHub stars~2k tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Official

    Reviews Azurite pull requests with checks for Blob, Queue and Table API compatibility, auth paths, persistence, tests and changelog, ending in a fixed comment format.

    157 GitHub stars~3.9k tokensUpdated today
    DevelopmentAuto-check passed
  • Core Components Code Review

    core-ds/core-components

    Review a Pull Request or diff in the @alfalab/core-components UI library — correctness bugs, public API/breaking changes, accessibility, keyboard/focus/pointer interaction, component states…

    137 GitHub stars~5.4k tokensUpdated today
    DevelopmentAuto-check passed

More from stickerdaniel/linkedin-mcp-server

  • Issue and PR Triage

    stickerdaniel/linkedin-mcp-server

    Turns the open issues and pull requests of the linkedin-mcp-server repository into a read-only priority list for maintainers.

    3.8k GitHub stars~1.9k tokensUpdated today
    Auto-check passed
  • LinkedIn MCP Issue Investigator

    stickerdaniel/linkedin-mcp-server

    Investigates a reported LinkedIn-MCP issue by matching the reporter's tool call to the exact source file and tests, without applying a fix.

    3.8k GitHub stars~2k tokensUpdated today
    Auto-check passed
  • BTCA Local Repo Search

    stickerdaniel/linkedin-mcp-server

    Searches git repositories cloned locally under a sandbox folder to answer questions with cited links and complete code snippets.

    3.8k GitHub stars~660 tokensUpdated today
    Auto-check passed
  • PR Review Triage

    stickerdaniel/linkedin-mcp-server

    Collects every review comment on a pull request, checks each against the real code, fixes the valid ones, pushes, and replies on and resolves each thread.

    3.8k GitHub stars~1.4k tokensUpdated today
    Auto-check passed
  • GitHub Issue Packet Intake

    stickerdaniel/linkedin-mcp-server

    Turns a bug report or feature idea into a properly sourced GitHub issue or comment, only after searching for a matching issue first.

    3.8k GitHub stars~1.2k tokensUpdated today
    Auto-check passed
  • LinkedIn MCP Usage Rules

    stickerdaniel/linkedin-mcp-server

    Rules for using the bundled LinkedIn MCP server for profile, company, job, post, feed and inbox work, with explicit authorization required for messages and connection requests.

    3.8k GitHub stars~651 tokensUpdated today
    Auto-check passed

Questions about Verify Candidate PR Fix

What does Verify Candidate PR Fix do?

Reviews a candidate pull request's diff and tests against its linked issue, with an optional live comparison against a previously captured baseline, without editing, merging or pushing. The skill resolves the PR number from its argument or URL, extracts the linked issue from phrasing like Closes, Fixes, Resolves or a bare issue reference in the PR body, asking which one to target if several are linked, then reads that issue's packet and comments before looking at the diff and the list of changed files. A fixed set of hard flags downgrades an otherwise clean verdict to concerns: locale-dependent string matching such as comparing against a literal label, brittle site-specific class-name selectors instead of generic attribute selectors, several navigations hidden behind one section entry, and tests missing beside the file's canonical owner.

When should I use Verify Candidate PR Fix?

Verify Candidate PR Fix fits situations like: checking whether a candidate PR actually fixes its linked issue; reviewing a PR's diff and tests against hard-flag patterns before merging; running an optional live comparison against a previously captured baseline.

How do I install Verify Candidate PR Fix in Claude Code?

Run `npx skills add stickerdaniel/linkedin-mcp-server --skill 3-verify-pr-fix -a claude-code`. Or copy the skill folder (.agents/skills/3-verify-pr-fix in stickerdaniel/linkedin-mcp-server) into .claude/skills/3-verify-pr-fix in your project. Claude Code loads it when a task matches its description.

How do I install Verify Candidate PR Fix in Codex?

Run `npx skills add stickerdaniel/linkedin-mcp-server --skill 3-verify-pr-fix -a codex`. Or copy the skill folder (.agents/skills/3-verify-pr-fix in stickerdaniel/linkedin-mcp-server) into .agents/skills/3-verify-pr-fix in your project. Codex loads it when a task matches its description.

Can I use Verify Candidate PR Fix in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add stickerdaniel/linkedin-mcp-server --skill 3-verify-pr-fix -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/3-verify-pr-fix, .gemini/skills/3-verify-pr-fix, .github/skills/3-verify-pr-fix and .opencode/skills/3-verify-pr-fix in your project.

What does Verify Candidate PR Fix need to run?

Going by SKILL.md and its folder, Verify Candidate PR Fix needs the command-line tools its instructions call (git, gh, jq, curl and uv). Our summary lists: The gh CLI.

Does Verify Candidate PR Fix access the network?

SKILL.md contains no URLs. Its commands use git, gh, curl and uv, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Verify Candidate PR Fix safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Verify Candidate PR Fix use?

Verify Candidate PR Fix is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Verify Candidate PR Fix use?

About 2k tokens (SKILL.md is roughly 7.9k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Verify Candidate PR Fix?

Skills that share tags, products or a category with Verify Candidate PR Fix: PR Babysitter (openinterpreter/openinterpreter, 69k stars), Tabularis Local PR Review (TabularisDB/tabularis, 5.1k stars), MAUI PR Performance Analysis (dotnet/maui, 23k stars) and Compound Engineering Code Review (EveryInc/compound-engineering-plugin, 25k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Verify Candidate PR Fix?

stickerdaniel (a GitHub user) maintains it in stickerdaniel/linkedin-mcp-server, which has 3,787 GitHub stars. The repository holds 7 skills in this directory. The repository was last updated on October 9, 2026.

Source: stickerdaniel/linkedin-mcp-server on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.