upstream-bug-report
Take a defect in an installed third-party plugin, server, or library from local diagnosis to an issue on its public repository — prove the fix in a fresh…
Skill by devseunggwan
Chalk Labs
Need help deploying upstream-bug-report?
Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/devseunggwan-upstream-bug-report
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: documents, backend
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/upstream-bug-report
What's inside
- Skill name
upstream-bug-report- Description
- Take a defect in an installed third-party plugin, server, or library from local diagnosis to an issue on its public repository — prove the fix in a fresh process, reproduce on pristine upstream, dedup, match the repo's conventions, and post only after approval. Also vets a contributor's fix PR against the original reproduction.
- License
- MIT
- Instructions
- 249 lines in SKILL.md · view on GitHub
Files (1)
- SKILL.md
SKILL.md (first lines)
# upstream-bug-report ## Overview A third-party tool fails, the cause turns out to be in its code, and the next step is an issue on someone else's public repository. That write crosses a boundary: it is public, it cannot be unsent, and a report whose reproduction only works on your patched machine wastes the maintainer's time. Most bad upstream reports fail on one of three things — they blame upstream for a local problem, they quote output from a tree that is not upstream, or they duplicate an existing report. This skill orders the work so each of those is closed before the body is drafted, and the post happens only after the user has seen the exact title and body. **Core principle:** every command in the issue body is a transcription of a run on pristine upstream that produced the quoted output. ## When to Use - An installed plugin, server, or library misbehaves and the defect is in its code, not in the local setup. - The user asks to report a bug upstream or to open an upstream issue. - A contributor opened a PR for an issue you filed and the user asks how well it covers it (Step 8). ## The Iron Law - **Public writes are approval-gated, one action at a time.** Issue, PR, and review comment each need their own explicit approval of the exact text. - **No internal identifiers in the body.** English, synthetic ids and labels, `<checkout>` placeholders instead of home paths, no account names. - **Always `--body-file`.** Never inline a multi-line body in the command. ## Process ### Step 1: Diagnose locally before blaming upstream - **Read the error class first, as a clue, not a verdict.** A 401 says authentication failed: the credential may be missing from the process, or present but invalid or expired. A 400/422 points at the request, but the vendor may use it for other rejections too. Read the response body, and check the credential's presence (without printing it) and its validity before naming a cause. A 401 → 422 transition after adding a key suggests auth now works and the next problem is in the payload — confirm it from the 422's response body. - **A long-running server process keeps the env and code it started with.** A tool served by an already-running MCP server or daemon stays stale until that process restarts. Test a fix in a **fresh process** — import the module with the plugin's own interpreter (its `.venv/bin/python`), loading the credential from your env file inside the same command without printing it. - **Prove the fix in memory before editing files.** Monkeypatch the call (for example wrap the request function to add the missing field) and run one positive case and one negative or abstain case. Only then patch the file and re-run without the monkeypatch. Tell the user the edit is local-only: uncommitted, and overwritten by the next plugin update. - **Confirm the vendor contract from official docs** (the API reference page that says the field is required) and keep the URL for the report. Done when: the defect is attributed to upstream code with a fresh-process positive and negative run, and the vendor contract is cited by URL — or it is attributed to local setup and the skill stops. ### Step 2: Reproduce on pristine upstream Do not reproduce on the locally patched tree. - **Single module:** extract the upstream file at the installed commit into a scratch directory outside any repository — `git -C <plugin> show <sha>:<path> > <scratch>/module.py` (plus its `__init__.py`) — and run the exact reproduce command you will put in the body from there. - **Whole package** (when the local install carries patches on top of upstream): check out the latest upstream head instead. A local `origin` may be a fork and the default branch may not be `main`, so resolve both from the canonical repository first — `gh repo view <r> --json url,defaultBranchRef --jq '.url, .defaultBranchRef.name'` — then fetch by URL: `git -C <repo> fetch <upstream-url> <default-branch> && git -C <repo> worktree add --detach <scratch>/<name>-upstream FETCH_HEAD`. Point the import path at it, run the repro, then `git worktree remove` it. Reproducing on the upstream default branch rather than the installed commit also answers "is it already fixed"; cite that SHA in the body. - **Self-contained:** a throwaway config/home directory, synthetic ids and labels, `<checkout>` placeholders — so the repro carries no account names or local state. Done when: the reproduce command, run on pristine upstream at a named SHA, printed the same error you will quote. ### Step 3: Dedup ```bash gh issue list --repo <r> --state all --search "<phrase>" gh search issues --repo <r> "<phrase>" gh search prs --repo <r> "<phrase>" ``` For a repo of a few hundred issues, or one whose reports are multilingual (CJK titles are common on AI-tool repos), pull the whole corpus once and filter locally instead — it covers every language and both states in one pass: ```bash gh issue list --repo <r> --state all --limit 1000 \ --json number,title,state,createdAt,url,body > "$TMPDIR/<r>-issues.json" # then regex title+body in python, including CJK/Korean synonyms # (e.g. shortcut|hotkey|快捷键|단축키, sidebar|collapse|折叠|收起|접기) ``` Check the count against `--limit`. Give `gh search issues` a positive control: if it returns `[]` for a phrase a known issue contains, discard its empty results and rely on the local filter. Run several phrasings: the symptom, the function name, and a mechanism word (for example `tombstone`, `resurrect`). Report the result with its scan scope (the phrasings used), plus the closest related-but-different reports and why they differ — those go into the body too. praxis's `block-gh-issue-create-without-dup-search` hook blocks `gh issue create`
From devseunggwan/praxis, MIT.
More from devseunggwan/praxis
- 0.592score
stale-pr-revival
devseunggwan
Bring an open, stalled pull request back to a mergeable state without rewriting its history — read every review surface, merge the base in, integrate what…
SkillAFreshness: A★ 1Claude Code +9 - 0.588score
codex-review-wrap
devseunggwan
Worktree-aware wrapper for /codex:review.
SkillAFreshness: A★ 1Claude Code +9 - 0.585score
retrospect
devseunggwan
Session retrospect — analyze the current Claude Code session against the rules it ran under (project and global `CLAUDE.md`), identify friction patterns and…
SkillAFreshness: A★ 1Claude Code +9 - 0.584score
surface-enumeration
devseunggwan
Pre-implementation input-surface enumeration — before writing a parser/validator/sanitizer/classifier, enumerate every input variant so each becomes a…
SkillAFreshness: A★ 1Claude Code +9 - 0.584score
reset-strikes
devseunggwan
Reset the current session's strike counter to 0 and clear the recorded violation list.
SkillAFreshness: A★ 1Claude Code +9 - 0.584score
strike
devseunggwan
Declare a rule violation in the current Claude Code session.
SkillAFreshness: A★ 1Claude Code +9 - 0.581score
perf-leak-review
devseunggwan
Point at performance-defect and memory-leak candidates in a diff — a read-only LLM reviewer reads the change plus the repository around it and reports…
SkillAFreshness: A★ 1Claude Code +9 - 0.581score
strikes
devseunggwan
Show the current session's strike count (0-3) and the list of recorded violation reasons.
SkillAFreshness: A★ 1Claude Code +9 - 0.580score
tradeoff
devseunggwan
Score the options at a decision fork on four cost axes — reversibility, blast radius, cost-if-wrong, process cost — with a provenance grade on every cell so a…
SkillAFreshness: A★ 1Claude Code +9 - 0.580score
merge-briefing
devseunggwan
On-demand home for the pre-merge approval procedure — the three-surface pre-ask probe, grading every open finding by its blocking decoration, carrying the…
SkillAFreshness: A★ 1Claude Code +9 - 0.580score
worktree-merge-cleanup
devseunggwan
On-demand home for the pre-merge worktree precondition and the unified post-merge cleanup sequence — how to run `gh pr merge --squash --delete-branch` from…
SkillAFreshness: A★ 1Claude Code +9 - 0.579score
cmux-recover-sessions
devseunggwan
Bulk recover Claude Code sessions after a crash, power loss, OOM kill, or reboot by scanning the .jsonl files Claude Code persists automatically.
SkillAFreshness: A★ 1Claude Code +9
Signals
- Stars
- 1
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Oct 16, 2026 (14 days ago)
- Last release
- Oct 24, 2026 (7 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/devseunggwan/praxis
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from devseunggwan
- 0.592score
stale-pr-revival
devseunggwan
Bring an open, stalled pull request back to a mergeable state without rewriting its history — read every review surface, merge the base in, integrate what…
SkillAFreshness: A★ 1Claude Code +9 - 0.588score
codex-review-wrap
devseunggwan
Worktree-aware wrapper for /codex:review.
SkillAFreshness: A★ 1Claude Code +9 - 0.585score
retrospect
devseunggwan
Session retrospect — analyze the current Claude Code session against the rules it ran under (project and global `CLAUDE.md`), identify friction patterns and…
SkillAFreshness: A★ 1Claude Code +9 - 0.584score
reset-strikes
devseunggwan
Reset the current session's strike counter to 0 and clear the recorded violation list.
SkillAFreshness: A★ 1Claude Code +9 - 0.584score
strike
devseunggwan
Declare a rule violation in the current Claude Code session.
SkillAFreshness: A★ 1Claude Code +9 - 0.584score
surface-enumeration
devseunggwan
Pre-implementation input-surface enumeration — before writing a parser/validator/sanitizer/classifier, enumerate every input variant so each becomes a…
SkillAFreshness: A★ 1Claude Code +9
Done for you
Rather not set it up yourself?
Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.
See how we build AI agents →Read the case studies
Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.
- launches shipped
- 50+
- launches shipped
- media placements
- 500+
- media placements
- founders on every account
- 2
- founders on every account
Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block
Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.
Get upstream-bug-report running in your business
Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.
Cite this page
upstream-bug-report skill. Agent Mart. https://agentmart.dev/skills/devseunggwan-upstream-bug-report (last updated 2026-10-24)