Bkt
avivsinai/bitbucket-cli
Operate Bitbucket Cloud or Data Center repositories, pull requests, branches, issues, pipelines, permissions, and webhooks with bkt.
A skill your agent uses when a user asks Claude Code to create a Bitbucket pull request or perform any Bitbucket PR write, including description, title, state, review-decision or comment changes…
$ npx skills add GGGODLIN/claude-pr-review --skill bitbucket-pr-mutation -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install GGGODLIN/claude-pr-review bitbucket-pr-mutation --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/GGGODLIN/claude-pr-review.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/bitbucket-pr-mutation .claude/skills/bitbucket-pr-mutation && rm -rf skills-srcUse ~/.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/
Install the "bitbucket-pr-mutation" agent skill from https://github.com/GGGODLIN/claude-pr-review/tree/master/skills/bitbucket-pr-mutation into .claude/skills/bitbucket-pr-mutation/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "bitbucket-pr-mutation", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/GGGODLIN/claude-pr-review/tree/master/skills/bitbucket-pr-mutationType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add GGGODLIN/claude-pr-review --skill bitbucket-pr-mutation -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install GGGODLIN/claude-pr-review bitbucket-pr-mutation --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/GGGODLIN/claude-pr-review.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/bitbucket-pr-mutation .agents/skills/bitbucket-pr-mutation && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "bitbucket-pr-mutation" agent skill from https://github.com/GGGODLIN/claude-pr-review/tree/master/skills/bitbucket-pr-mutation into .agents/skills/bitbucket-pr-mutation/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "bitbucket-pr-mutation", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add GGGODLIN/claude-pr-review --skill bitbucket-pr-mutation -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install GGGODLIN/claude-pr-review bitbucket-pr-mutation --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/GGGODLIN/claude-pr-review.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/bitbucket-pr-mutation .cursor/skills/bitbucket-pr-mutation && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "bitbucket-pr-mutation" agent skill from https://github.com/GGGODLIN/claude-pr-review/tree/master/skills/bitbucket-pr-mutation into .cursor/skills/bitbucket-pr-mutation/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "bitbucket-pr-mutation", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/GGGODLIN/claude-pr-review.git --path skills/bitbucket-pr-mutation--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add GGGODLIN/claude-pr-review --skill bitbucket-pr-mutation -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install GGGODLIN/claude-pr-review bitbucket-pr-mutation --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/GGGODLIN/claude-pr-review.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/bitbucket-pr-mutation .gemini/skills/bitbucket-pr-mutation && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "bitbucket-pr-mutation" agent skill from https://github.com/GGGODLIN/claude-pr-review/tree/master/skills/bitbucket-pr-mutation into .gemini/skills/bitbucket-pr-mutation/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "bitbucket-pr-mutation", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install GGGODLIN/claude-pr-review bitbucket-pr-mutationInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add GGGODLIN/claude-pr-review --skill bitbucket-pr-mutation -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/GGGODLIN/claude-pr-review.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/bitbucket-pr-mutation .github/skills/bitbucket-pr-mutation && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "bitbucket-pr-mutation" agent skill from https://github.com/GGGODLIN/claude-pr-review/tree/master/skills/bitbucket-pr-mutation into .github/skills/bitbucket-pr-mutation/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "bitbucket-pr-mutation", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add GGGODLIN/claude-pr-review --skill bitbucket-pr-mutation -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install GGGODLIN/claude-pr-review bitbucket-pr-mutation --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/GGGODLIN/claude-pr-review.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/bitbucket-pr-mutation .opencode/skills/bitbucket-pr-mutation && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "bitbucket-pr-mutation" agent skill from https://github.com/GGGODLIN/claude-pr-review/tree/master/skills/bitbucket-pr-mutation into .opencode/skills/bitbucket-pr-mutation/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "bitbucket-pr-mutation", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
bitbucket-pr-mutationA skill your agent uses when a user asks Claude Code to create a Bitbucket pull request or perform any Bitbucket PR write, including description, title, state, review-decision or comment changes…
Bitbucket PR Mutation is an agent skill from GGGODLIN/claude-pr-review. Use when a user asks Claude Code to create a Bitbucket pull request or perform any Bitbucket PR write, including description, title, state, review-decision or comment changes, merges, teammate-authored PR changes, and unsupported mutations. Do not use for read-only PR review, diff, status, or metadata queries.
Its SKILL.md is about 3.3k tokens, which your agent loads only when the skill is triggered. The skill folder holds 18 other files, including scripts (for example `scripts/bitbucket_pr_workflow.py`, `scripts/bitbucket_pr_workflow/__init__.py` and `scripts/bitbucket_pr_workflow/api.py`).
It sits in Development, covering Pull requests. It works with Bitbucket. The repository describes itself as: Multi-axis PR review orchestration for Claude Code — 5 independent review perspectives, symmetric cross-verification, deterministic coverage assertion. The licence is MIT.
Read from SKILL.md and the folder at commit 4aa8f53. It shows what the files ask for, not the result of running them.
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.
Ships 15 files in scripts/ (Python), which the agent can run.
Shell commands in SKILL.md call:
uvpython3From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use uv, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
BITBUCKET_API_TOKENFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Bitbucket PR Mutation loads about 3.3k tokens when it runs. Until then it costs about 83 tokens; SKILL.md has 1,472 words of instructions outside code blocks.
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.
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); the scripts in this folder are not scanned.
The full file from GGGODLIN/claude-pr-review at commit 4aa8f53, republished under its MIT licence (© GGGODLIN). 1,472 words, ~3,262 tokens.
.claude/skills/bitbucket-pr-mutation/SKILL.md (or your agent's skills folder). This skill also uses 15 other files; get the full folder from GitHub.All first-party writes use scripts/bitbucket_pr_workflow.py; never use raw curl or another client.
bitbucket-pr-review.create_pr, update_description, update_title, create_inline_comment, create_pr_comment.UNSUPPORTED_OPERATION.Every existing-PR write first runs inspect --input ... with target metadata and optional drafts only. This read-only preflight returns the actor/author snapshot without requiring review basis or operations.
The stop is scoped by operation class, because the classes carry opposite risk. update_description and update_title overwrite author-owned content and cannot be undone from the API side, so both are owner-only, OPEN-only. Comments are additive, attributable to the actor, and deletable, so someone else's PR — or a merged/declined one — is a normal place to leave them.
Title sits with description rather than with comments even though it is one line: it is still the author's wording, and a workspace may feed titles into downstream automation (e.g. [Release]-prefixed titles driving release notifications), so renaming someone's PR can reach an audience beyond the PR page. What title does not share with description is the ceremony weight — see the tier table below.
| Preflight status | Comments (create_inline_comment, create_pr_comment) | update_title | update_description |
|---|---|---|---|
READY_FOR_PROPOSAL (own PR, OPEN) | allowed | allowed | allowed |
READY_FOR_COMMENT_ONLY (foreign author, or state ≠ OPEN) | allowed | blocked | blocked |
A comment-only batch proceeds through the normal scope → preview → display → later-confirmation → apply path with nothing relaxed. A batch containing any owner-only operation against a READY_FOR_COMMENT_ONLY target is refused whole — preview returns READ_ONLY_FOREIGN_AUTHOR or READ_ONLY_PR_NOT_OPEN, and no partial subset is offered. Confirmation, admin access, and urgency cannot override the owner-only stop.
preview re-derives this independently rather than trusting the inspect status, and apply re-derives it again from the proposal's own operations. Relaxing one layer alone changes nothing.
For DRAFT_ONLY_UNMANAGED_DESCRIPTION or DRAFT_ONLY_INVALID_MARKERS, show managed-block drafts and stop with no envelope/proposal mutation.
Exclude customer data, credentials, unredacted orders, and private links from request bodies until redacted or rewritten.
完成後接「Scope and approval」。
Ceremony is tiered by operation class for the same reason the hard stop is: a comment is additive, attributable and one-click deletable, while a description write destroys author-owned prose. Running the heavyweight path for a two-comment batch costs more attention than the failure it prevents.
| Step | Comment-only batch | Title-only batch | Any batch containing update_description or create_pr |
|---|---|---|---|
| Credential scan | run | run | run |
preview (hash, batch ID, read-back contracts) | run | run | run |
Self-Verify subagent | skip | skip | run |
| Display before applying | compact: per operation, path:line plus the exact comment body | compact: the current title and the exact new title | full exact proposal: target, snapshot, SHAs, operation IDs, methods, endpoints, bodies, read-back fields, proposal_sha256, batch ID |
| Confirmation | one user message after the display | one user message after the display | one user message after the display, separate from the scope message |
apply + read-back | run | run | run |
Comment-only path: ask which findings belong in the batch, build the operations, run preview, display each comment compactly, and apply on the next message confirming it. The proposal hash and batch ID are still computed and bound into the approval; they just are not read out.
Title-only path: same shape as comment-only — display the current title and the proposed one, then apply on the next message confirming it. A title is one line the user can read in full and re-issue if wrong, so printing the whole proposal envelope costs more attention than the mistake it would catch. The owner-only stop, title_sha256 optimistic lock and read-back all still run; only the display and the subagent verification are lighter.
Heavyweight path: scope, then preview, then Self-Verify, then display the full proposal, then wait for a further independent message. Any scope selection or change is scope-only here, even when the message says apply, directly apply, proceed, urgent, or auto-fix. Regenerate and display the proposal, then await another message.
No path ever applies on the same message that chose the scope, and none skips preview, the credential scan, or read-back. Mixed batches take the heaviest tier present — a batch pairing a title change with a description rewrite is a heavyweight batch.
Applies to the heavyweight path only. Comment-only and title-only batches run the credential scan (inside preview) and skip the subagent.
Run the local deterministic credential scan first. It blocks strict JWT Bearer values, valid Basic user:password values, private-key literals, known provider formats, and sensitive keys. It intentionally passes unknown opaque Bearer values and long technical identifiers. On failure, show only category/path and stop. It does not judge customer data, order details, private links, or ambiguous opaque credentials; route those checks to R4.
Then use Agent with subagent_type: skill-verify-auditor (sonnet+low, Read-only, pinned in the agent definition) and description containing skill-verify:bitbucket-pr-mutation. Its prompt Reads the proposal/candidate JSON and this SKILL.md, returning PASS/FAIL plus one evidence sentence per rule:
update_description, update_title) targets a foreign-authored or non-OPEN PR, and unmanaged-description or invalid-marker status has no mutation in envelope/proposal. Comment operations on such a PR are expected and are not a violation.Require final VERDICT: PASS or VERDICT: FAIL. Without PASS, never present the proposal as approvable, create approval, or apply. Fix FAIL and rerun; disclose agent errors as SKIPPED and stop.
Store proposal and approval JSON in session-private files. Run apply with the current Claude Code SESSION_ID; never invent or reuse one. Credentials come only from BITBUCKET_API_USERNAME (or BITBUCKET_EMAIL) and BITBUCKET_API_TOKEN and are never printed.
Report every outcome. Never call partial completion successful or retry outcome_unknown; run reconcile and request inspection.
inspect, preview, and _snapshot_matches on the apply path. Relaxing only preview would have left apply refusing the batch as invalid. When changing a gate here, grep every enforcement point first.other not in actual_inline, but Bitbucket returns the unused anchor side as "from": null rather than omitting it, so every real inline comment failed read-back and aborted the rest of the batch. The suite missed it because FakeClient.create_comment echoed the request body verbatim and therefore never produced the null key. A test double that only replays what it was given cannot catch a response-shape assumption — mirror the provider's actual envelope.update_title needed twelve edits, and three of them were missed on the first pass — all three the same shape, a fall-through dispatcher. _read_back_resource, _read_back_matches and _reconcile_operation each end with the comment branch and no operation-type guard, so an unhandled type is not rejected, it is silently treated as a comment (KeyError: 7, then KeyError: 'inline', then a comment-id lookup during reconcile). Adding an operation type means enumerating every operation_type == / operation['type'] == site with grep, not only the ones that name the operation being copied — and the last of the three was found by that grep rather than by a failing test, because no existing case covered reconcile for a non-comment operation. Write the case anyway; an unexercised branch is where the next one hides.pytest, run the suite with PYTHONPATH=<skill>/scripts uv run --with pytest --python 3.11 pytest tests/ -q from scripts/; without PYTHONPATH every module fails collection with ModuleNotFoundError: bitbucket_pr_workflow. The stdlib path is python3 -m unittest discover -s tests -q from the same directory.© GGGODLIN, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 15 other files (scripts) in skills/bitbucket-pr-mutation of GGGODLIN/claude-pr-review.
Open the folder on GitHubat commit 4aa8f53
Bitbucket PR Mutation 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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Bitbucket PR Mutation this skillGGGODLIN/claude-pr-review | 114 | — | ~3.3k | Automated safety check: Pass | MIT | |
| Bktavivsinai/bitbucket-cli | 233 | 1 repos | ~1k | Automated safety check: Pass | MIT | |
| Rota Update Importoracle/graalpython | 1.7k | — | ~475 | Automated safety check: Pass | Custom licence | |
| Graalpython Bitbucket PRoracle/graalpython | 1.7k | — | ~1.3k | Automated safety check: Pass | Custom licence | |
| Plannotator Referencebacknotprop/plannotator | 9.3k | — | ~6.4k | Automated safety check: Warn | Apache-2.0 | |
| Generate Pull Requestjrkerns/pylinac | 202 | — | ~304 | Automated safety check: Pass | MIT |
avivsinai/bitbucket-cli
Operate Bitbucket Cloud or Data Center repositories, pull requests, branches, issues, pipelines, permissions, and webhooks with bkt.
oracle/graalpython
Run the GraalPy ROTA import update workflow. An agent skill from oracle/graalpython.
oracle/graalpython
Create or continue a GraalPython Bitbucket pull request and drive it through Graal Bot tasks, gate start, gate monitoring, failure investigation, fixes, pushes, and gate reruns.
backnotprop/plannotator
Reference for picking the right Plannotator tool or command for plan review, code review, annotating files and URLs, archived plan decisions and Guided Reviews.
jrkerns/pylinac
Generate a draft Bitbucket pull request with proper formatting
jrkerns/pylinac
Review a Bitbucket pull request against the project checklist
GGGODLIN/claude-pr-review
A skill your agent uses when the user asks to inspect an existing Bitbucket finding, comment, author reply, diff location, or PR evidence without running a full code review.
Works with
Categories
A skill your agent uses when a user asks Claude Code to create a Bitbucket pull request or perform any Bitbucket PR write, including description, title, state, review-decision or comment changes…. Bitbucket PR Mutation is an agent skill from GGGODLIN/claude-pr-review. Use when a user asks Claude Code to create a Bitbucket pull request or perform any Bitbucket PR write, including description, title, state, review-decision or comment changes, merges, teammate-authored PR changes, and unsupported mutations.
Bitbucket PR Mutation fits situations like: A user asks Claude Code to create a Bitbucket pull request; perform any Bitbucket PR write; including description; review-decision.
Run `npx skills add GGGODLIN/claude-pr-review --skill bitbucket-pr-mutation -a claude-code`. Or copy the skill folder (skills/bitbucket-pr-mutation in GGGODLIN/claude-pr-review) into .claude/skills/bitbucket-pr-mutation in your project. Claude Code loads it when a task matches its description.
Run `npx skills add GGGODLIN/claude-pr-review --skill bitbucket-pr-mutation -a codex`. Or copy the skill folder (skills/bitbucket-pr-mutation in GGGODLIN/claude-pr-review) into .agents/skills/bitbucket-pr-mutation in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add GGGODLIN/claude-pr-review --skill bitbucket-pr-mutation -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/bitbucket-pr-mutation, .gemini/skills/bitbucket-pr-mutation, .github/skills/bitbucket-pr-mutation and .opencode/skills/bitbucket-pr-mutation in your project.
Going by SKILL.md and its folder, Bitbucket PR Mutation needs Python for the scripts in its folder, the command-line tools its instructions call (uv and python3) and credentials named BITBUCKET_API_TOKEN. Our summary lists: Python 3; A credential in BITBUCKET_API_TOKEN.
SKILL.md contains no URLs. Its commands use uv, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
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. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Bitbucket PR Mutation is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.3k tokens (SKILL.md is roughly 13k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Bitbucket PR Mutation: Bkt (avivsinai/bitbucket-cli, 233 stars), Rota Update Import (oracle/graalpython, 1.7k stars), Graalpython Bitbucket PR (oracle/graalpython, 1.7k stars) and Plannotator Reference (backnotprop/plannotator, 9.3k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
GGGODLIN (a GitHub user) maintains it in GGGODLIN/claude-pr-review, which has 114 GitHub stars. The repository holds 2 skills in this directory. The repository was last updated on September 18, 2026.
Source: GGGODLIN/claude-pr-review on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.