skills/generate-pr-description/SKILL.md
Generates pull request descriptions by comparing current branch with parent branch. Creates semantic commit-style PR titles and fills PR templates. Use when the user asks to generate PR description, prepare pull request, or create merge request description. The user may include ticket IDs in the request (e.g. tickets: NN-123, TB-456) from the company tracking system; treat those as the related issue IDs for the PR.
npx skillsauth add lichens-innovation/ai-dev-tools generate-pr-descriptionInstall 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.
Generate a concise pull request description by analyzing git changes and using the project's PR template.
Language: Always generate PR titles and descriptions in English, regardless of the user's language or the language of commit messages.
Identify parent branch
git rev-parse --abbrev-ref HEADmain or master): git show-branch | grep '*' | grep -v "$(git rev-parse --abbrev-ref HEAD)" | head -1 | sed 's/.*\[\(.*\)\].*/\1/' | sed 's/[\^~].*//'git merge-base HEAD main to find common ancestorAnalyze changes
git diff --stat <parent-branch>..HEADgit log --oneline <parent-branch>..HEADgit diff --name-status <parent-branch>..HEADGenerate semantic commit title
feat: - New featuresfix: - Bug fixesdocs: - Documentation changesstyle: - Code style changes (formatting, no logic change)refactor: - Code refactoringperf: - Performance improvementstest: - Adding or updating testschore: - Maintenance tasks (deps, config, etc.)<type>(<scope>): <short description>Load PR template
.github/pull_request_template.md first.gitlab/merge_request_template.mdtemplates/pull_request_template.md (relative to the skill directory)Build the change hierarchy — follow these rules strictly
Step A — Extract raw changes List every meaningful change from the diff and commit log (files modified, features added, bugs fixed, etc.). Do not group yet.
Step B — Group into themes
Assign each raw change to a theme. A theme maps to a functional area or concern, for example: Auth, API, UI, Tests, Config, Docs, DB, CI. One change belongs to exactly one theme. Use at most 6 themes; merge minor themes into the closest major one.
Step C — Decide the hierarchy level for each theme Apply the rule below to each theme independently:
| Number of distinct sub-changes in the theme | Structure to use | |---|---| | 1 (single, simple change) | Level-1 bullet only — no sub-bullets | | 2 or more distinct sub-changes | Level-1 bullet (theme label) + one Level-2 sub-bullet per distinct sub-change |
A "distinct sub-change" is a change that affects a different component, file group, or behavior within the same theme. Two commits that both touch the same component count as one sub-change.
Step D — Write the bullets
- **ThemeLabel:** one-line summary of what changed in this theme. - Sub-change description (one line).Step E — Validate before writing Re-read your draft and check:
Fill template
.md detected in the diff).*.test.* or *.spec.*, or paths under test/, __tests__/, tests/, or similar directories.Related tickets
PROJ-123, PROJ-456). Leave empty if none."tickets: NN-123, TB-456 or inline (e.g. NN-123, TB-456). Normalize to a trimmed list.getJiraIssue in the workspace MCP descriptors). If it is not available, tell the user explicitly that the Atlassian/Jira MCP is not connected and they should install and enable it if they want ticket rows with fetched summaries and correct Jira URLs. Still proceed with the rest of the PR; for "Related Issue(s)" use plain text keys only (e.g. - PROJ-123) or - 🚫 if they confirm there are no tickets.getJiraIssue with the appropriate cloudId and issueIdOrKey; resolve cloudId via MCP resources or tools such as getAccessibleAtlassianResources when needed, following each tool’s schema in the MCP folder).fullTicketUrl from the MCP response or the known Jira browse URL pattern for that site (must be a complete URL, not shortened).{label}.- [summary](fullTicketUrl).[label](url), never a bare URL or plain key.- PROJ-123, or a single line listing keys—do not invent browse URLs.- 🚫.Enforce 1000 character limit
Write file, copy to clipboard, remove file
pr-description.md with the full PR output.node <skill-dir>/scripts/copy-to-clipboard.mjs "<full-path-to-pr-description.md>"pr-description.md in place and tell the user they can open it or copy manually.## PR Description
<semantic-commit-style-title>
<filled-template-markdown>
See examples/checkout-flow.md (relative to this skill directory) for a fully worked example covering Steps A–E with a realistic multi-theme PR.
tools
Reference for managing Claude Code plugins and marketplaces: install, update, remove plugins; add, update, remove marketplaces. Use when the user asks how to install a plugin, remove a marketplace, update plugins, or manage their Claude Code plugin setup.
tools
Scaffolds a new subagent in the ai-dev-tools marketplace repository: creates the agent directory, AGENTS.md file, and symlinks it into the chosen plugin. Use when the user asks to add a subagent, create an agent, or scaffold a subagent in the marketplace.
tools
Scaffolds a new skill in the ai-dev-tools marketplace repository: creates the skill directory and SKILL.md boilerplate directly inside the chosen plugin. Use when the user asks to add a new skill, create a skill, or scaffold a skill in the marketplace.
tools
Scaffolds a new plugin in the ai-dev-tools marketplace repository: creates the plugin directory, plugin.json manifest, skills/ folder, and registers it in marketplace.json. Use when the user asks to add a new plugin, create a plugin, or register a plugin in the marketplace.