release-now
Create a git tag + GitHub Release for open-pr — an official release if standing on main, an RC if standing on a branch with an open PR (a dev tool specific to…
Report a problem with the open-pr plugin itself, or ask for a change, on its public issue tracker. Reads no PR; writes nothing in your repo.
> /plugin marketplace add TOMOSIA-VIETNAM/open-pr > /plugin install open-pr@open-pr
How it fires
How this command gets triggered: by you, by Claude, or both.
/feedbackContext preview
What this command does when you run it.
Report a problem with the open-pr plugin itself, or ask for a change, on its public issue tracker. Reads no PR; writes nothing in your repo.
argument-hint: "[what should be better]" description: Report a problem with the open-pr plugin itself, or ask for a change, on its public issue tracker. Reads no PR; writes nothing in your repo.
> **CRITICAL:** `Read` `"${CLAUDE_PLUGIN_ROOT}"/core/guardrails.md` FIRST — shared rules, not repeated > here. On top of those: > - Destination is FIXED: `TOMOSIA-VIETNAM/open-pr`, the plugin's own tracker. FORBIDDEN: any other > repo, and any write to the user's repo, config, memory or worktrees. > - The issue is PUBLIC and cannot be unposted. FORBIDDEN: creating or commenting before the user > approves the exact text at Step 4. > - Carries the PROBLEM, never the user's work — Step 2. > > This CRITICAL block is the SOLE enforcement layer — no `allowed-tools` backs it (deliberate).
Sources, in order: `ARGUMENTS`, then what THIS chat session shows — which `/open-pr:` command the user ran, what it did, what they wanted instead. FORBIDDEN: reading the reviewed repo, its diff, its `notebooks/review/`, its settings or memory.
Both empty ⇒ ONE free-text question — what should change, and what prompted it — then WAIT.
Anonymise: a reader MUST NOT be able to tell which repo, company or person it came from.
| in the report | goes in as | |---|---| | repo / org / product / host name, remote or PR URL, PR number | drop — "a PR" | | path, filename, branch, sha, ticket id | its generic kind — "a config file", "a large diff" | | code, diff, log or error text quoting the user's content | the behaviour, in your own words | | person name, email, handle | drop | | token, key, password, internal hostname, IP | drop — never echoed, not even masked | | vendor (GitHub/GitLab/Bitbucket), stack, language, command name, plugin's own message text | KEEP |
Unsure whether a detail identifies ⇒ drop it.
English whatever the chat language. Title ≤ 70 chars, states the problem. The tracker answers 2 forms — pick by what is reported, fill that form's fields, nothing else:
| the plugin | form | label | field = its heading ← content | |---|---|---|---| | misbehaved, crashed, reviewed wrongly | `bug_report.yml` | `bug` | `description` = Bug description ← what it did + what was expected · `steps` = Steps to reproduce ← the sequence that reached it · `version` = Plugin version in use ← below · `env` = Environment ← OS, vendor, stack | | lacks something, could be better | `feature_request.yml` | `enhancement` | `problem` = Problem you're facing ← the situation hit · `solution` = Proposed solution ← the wish · `alternatives` = Alternatives considered (if any) ← what was tried instead, omitted when nothing was |
FORBIDDEN to fill: `pr_url`, `evidence` — Step 2 strips exactly what they ask for. Only the user, in the browser, may add them.
Each field: 1-3 sentences. FORBIDDEN in any of them: the chat transcript, your own reasoning or steps, a proposed diff, apologies.
Version:
git -C "${CLAUDE_PLUGIN_ROOT}" describe --tags --alwaysNo usable output ⇒ `unknown`.
`gh` installed && `gh auth status --hostname github.com` succeeds ⇒
gh search issues --repo TOMOSIA-VIETNAM/open-pr --state all --limit 5 "<2-4 keywords from the title>"
Either failing ⇒ no search; the draft still goes to the user, and Step 5 takes path B.
Print the drafted title and every filled field VERBATIM — that text, never a summary — and which form it goes to. Then ONE CHOICE per `core/guardrails.md`, at most 4 options:
others; omit this option when the search found nothing, or never ran
`Write` both files first — a multi-line body is not shell-quotable. `$T` ≡ `"${TMPDIR:-/tmp}"`:
| file | holds | |---|---| | `$T/open-pr-feedback.json` | 1 flat object: `template` = the form's filename, `title`, 1 key per field ID filled at Step 3 | | `$T/open-pr-feedback.md` | same fields, each `### <that field's heading, Step 3>` + content, in the form's order. FORBIDDEN: guessing it from the field ID, or reading the form files — the plugin ships without them |
| path | when | run | |---|---|---| | A | `gh` authenticated, `Post it` | `gh issue create --repo TOMOSIA-VIETNAM/open-pr --title "<title>" --label <label> --body-file "$T"/open-pr-feedback.md` | | A | `gh` authenticated, `Comment on #<n>` | `gh issue comment <n> --repo TOMOSIA-VIETNAM/open-pr --body-file "$T"/open-pr-feedback.md` | | B | no `gh`, not authenticated, or A errored | prefilled link, below — the user submits it |
`--label` rejected (the label was renamed) ⇒ run it again without that flag; nothing else changes.
Path B goes through the form: a blank issue is refused there, and the form is what carries the label. Print the URL on its own line, clickable:
python3 -c 'import json,os,urllib.parse as u;d=json.load(open(os.environ.get("TMPDIR","/tmp")+"/open-pr-feedback.json"));print("https://github.com/TOMOSIA-VIETNAM/open-pr/issues/new?"+u.urlencode(d))'No `python3` ⇒ print `https://github.com/TOMOSIA-VIETNAM/open-pr/issues/new/choose` plus the title and the fields, for the user to paste into the form they pick. A errors (403, network, repo moved) ⇒ print the error, then path B. FORBIDDEN: a second attempt at a different repo.
| path | say | |---|---| | A | the URL `gh` printed, on its own line — the maintainers see it there | | B | the issue does NOT exist until they open the link and submit it |
Then, once: nothing in their own repo was read or changed.
ARGUMENTS: $ARGUMENTS
AI code review that lands on the PR, not in your terminal — GitHub, GitLab, Bitbucket. Learns each repo's conventions: 1 review, 1 fix commit, replies in thread. Claude Code · Cursor · Codex · Gemini CLI · Antigravity.
Create a git tag + GitHub Release for open-pr — an official release if standing on main, an RC if standing on a branch with an open PR (a dev tool specific to…
Remove the git worktrees review checked PR code out into. Each one is a full checkout on disk; nothing else is touched.
Act on the findings a review left on a PR — takes or declines each by severity, edits code at pwd to match the project, 1 commit, replies once pushed.
Review PRs against the conventions learned from each repo — 1 post per PR, findings tagged by severity, code left untouched.
Bring every per-repo config found below pwd up to the schema this build expects. Takes no PR.