skills/pr-link-issue/SKILL.md
Append a GitHub issue link and its Linear ticket to the current PR's description. Use when asked to "link issue to pr", "fill in issue and linear in pr", "add issue refs to pr", or when given a GitHub issue URL and asked to attach it to the current PR. Resolves the Linear ticket automatically from the issue's linear-linkback comment.
npx skillsauth add getsentry/skills pr-link-issueInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Appends a Sentry-style #### Issues block to a PR description, referencing both the GitHub issue and the Linear ticket pulled from the issue's linear-linkback comment.
<issue-url> — GitHub issue URL like https://github.com/<owner>/<repo>/issues/<n>. Issue number alone is fine if the PR is in the same repo.<pr-number> — defaults to the open PR for the current branch.Resolve the PR number — skip if user supplied one:
gh pr view --json number,body -q '.number'
If no PR exists on the branch, stop and tell the user.
Extract issue number + repo from the input URL, or accept a bare #1234 for current repo.
Fetch the Linear ticket from the issue's linear-linkback comment:
gh issue view <n> --repo <owner>/<repo> --json comments \
-q '.comments[] | select(.author.login=="linear-code") | .body' \
| grep -Eioe '[a-z]+-[0-9]+' | head -1
If no match, fall back to asking the user for the Linear key, or omit it.
Read the existing PR body so you can append rather than overwrite:
gh pr view <pr-number> --json body -q '.body'
Construct the new body. If the body is empty, use just the #### Issues block. Otherwise, append it after a blank line. Don't duplicate — if #### Issues is already present, replace that section instead of adding a second one.
Format:
#### Issues
* Resolves: #<n>
* Resolves: <linear-key>
Update the PR with a heredoc to preserve newlines:
gh pr edit <pr-number> --body "$(cat <<'EOF'
<new body>
EOF
)"
Confirm by echoing the resulting PR URL:
gh pr view <pr-number> --json url -q '.url'
linear-code. The body contains a markdown link whose text is the Linear key, e.g. PY-2357.PY-… for sentry-python, JS-… for sentry-javascript, etc.) — the regex [a-z]+-[0-9]+ covers them.tools
Analyze a repository to generate recommended Claude Code settings.json permissions. Use when setting up a new project, auditing existing settings, or determining which read-only bash commands to allow. Detects tech stack, build tools, and monorepo structure.
development
Triage new issues in the Sentry `javascript` project by archiving non-actionable noise. Use when asked to "triage issues", "triage the javascript project", "archive non-actionable issues", "triage new frontend issues", or "clean up the sentry/javascript queue". Operates only on the sentry/javascript project, only archives (never resolves), and always archives with `untilEscalating`.
testing
Iterate on a PR until actionable CI passes and high/medium review feedback is addressed. Use for PR CI failures, review feedback, or green-check loops; do not wait for human approval, draft status, or merge gates.
documentation
Create and update pull requests following Sentry conventions. Use when opening a PR or refreshing an existing PR after material changes.