skills/pr-descr/SKILL.md
Update PR title and description from branch context. Triggers: 'pr description', 'update PR', 'PR title', 'describe PR'.
npx skillsauth add luan/dot-claude pr-descrInstall 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.
Update an existing PR's title and description from branch context.
Assumes PR already exists. This skill NEVER pushes or submits.
Log: !git log --oneline -10 2>/dev/null
Status: !git status -sb 2>/dev/null
Template: !cat .github/PULL_REQUEST_TEMPLATE.md 2>/dev/null
Resolve at runtime:
gh pr view --json number,title,body,headRefName -q '{number,title,headRefName}'. If empty, tell user and stop.gh stack view --json 2>/dev/null | jq -r '.trunk // empty' || gt parent 2>/dev/null || gt trunk 2>/dev/null || git symbolic-ref refs/remotes/origin/HEAD 2>/dev/null | sed 's|refs/remotes/||' || echo main--auto → skip edge case questions, assume committed changes only. Without --auto:
Edge cases — ask before proceeding:
If state is clear, proceed directly.
git diff $BASE...HEAD # three-dot finds common ancestor
If including uncommitted (per Step 1): git diff HEAD
If diff is large, use --stat first and read key files.
Title: conventional commit per /commit skill — type(scope): description. Max 72 chars — GitHub truncates longer titles in list views.
Body: Follow the repo's PR template if one exists — fill each section from the diff. Otherwise, if recent merged PRs share a consistent format, match it. Fallback: 1-3 sentences explaining WHY with high-level HOW. Don't restate what's obvious from the diff.
Show title + body. Add observations only if genuinely useful:
--auto → update directly. Without --auto → AskUserQuestion: "Update PR with this title and description?"
gh pr edit <NUMBER> --title "<title>" --body "<body>"
Show PR URL when done.
tools
Tree-sitter indexed code navigator (ct sym CLI). Use INSTEAD OF Read/Grep/Glob/Bash when exploring existing code, understanding how something works, locating a symbol, tracing the call graph up (impact) or down (trace), finding implementations of an interface, scoping a diff to one symbol, or preparing to edit code you have not read yet. Triggers: 'how does X work', 'explain this class/file/symbol', 'walk me through X', 'what does X do', 'where is X defined', 'who calls X', 'what does X call', 'find implementations of', 'what breaks if I change X', 'outline this file', 'map imports', 'show me this symbol', exploring unfamiliar repo, tracing call graph, scoping diff to a symbol, preparing to edit code I haven't read, about to Read a file over ~500 lines to understand it. Do NOT use for: writing new code from scratch, editing prose or config, running tests, or when a stack trace already names the file and line.
development
Fully autonomous development workflow from prompt to commit. Chains spec → develop → review → commit. Triggers: /vibe, 'vibe this', 'autonomous workflow', 'just do it all', 'build this end-to-end', 'full pipeline', 'handle everything'.
development
Comprehensive vault maintenance — cross-references blueprints against codebase state to produce a maintenance plan: archive consumed artifacts, audit docs for staleness, propose new docs for undocumented stable systems. Triggers: 'vault sweep', 'sweep the vault', 'clean up vault', 'vault maintenance', 'what can we archive', 'audit blueprints', 'vault hygiene', 'blueprint cleanup'. Use whenever the user wants a holistic view of vault health rather than archiving a single artifact (that's /archive). Also use when the user asks what's stale, what needs docs, or whether artifacts can be cleaned up.
development
Analyze current diff, classify changes by risk, and produce structured manual test plan. Triggers: 'test plan', 'what should I test', 'manual testing', 'verification steps', 'QA checklist'. Exits early for trivial changes. Do NOT use when: writing automated tests — use /develop with TDD. Do NOT use when: reviewing code quality — use /crit instead.