| name | create-pr |
| description | Create a pull request with a valid title, description, changeset, and all required elements |
| disable-model-invocation | true |
[!TIP]
Note: this skill is for manual, user-invocation only.
Agents should only read this only when it is specifically invoked.
Canonical Git conventions take precedence over this command.
Create PR
Create a pull request with a valid title, description, changeset, and all required elements.
Prompt Variables
$TICKET_URL
Paste the JIRA or GitHub issue URL (e.g., https://ledgerhq.atlassian.net/browse/LIVE-1234)
$TICKET_DESCRIPTION
Describe the ticket context: What is the problem? What should be done? Include acceptance criteria if available.
$CHANGE_TYPE
Select the type of change: feat | fix | refactor | test | docs | chore
$CHANGE_SCOPE
Summarise the scope in a single term? (e.g. architecture, coin-evm, counter-values, e2e, portfolio, swap)
$TEST_COVERAGE
Are changes covered by tests? yes | no | partial - If not fully covered, explain why.
$QA_FOCUS_AREAS
What specific areas should QA focus on when testing this PR?
$HAS_UI_CHANGES
Are there visual/UI changes? yes | no - If yes, you will need to edit the PR description to add screenshots.
Instructions
Step 1: Analyze the changes
- Follow
docs/contributing/git-conventions.md for valid commit messages
- Run
git status and git diff to understand current changes
- Run
git log develop..HEAD --oneline to see commits on this branch
- Identify all modified packages for the changeset
Step 2: Create the changeset
- Use the
create-changeset skill to add a changeset for the modified packages.
Step 3: Prepare the PR
Generate the PR body using .github/pull_request_template.md.
Step 4: Create the Pull Request
First, push the branch:
git push -u origin HEAD
Then create the PR as draft and capture the URL:
PR_URL=$(gh pr create --draft --title "{{PR_TITLE}}" --body "$(cat <<'EOF'
{{GENERATED_PR_BODY}}
EOF
)")
Then open the PR in the browser:
open "$PR_URL"
Important: Always run open "$PR_URL" after creating the PR to ensure it opens in the browser. Do NOT skip this step.
If there are UI changes ($HAS_UI_CHANGES is "yes"):
- The PR opens in your browser
- Click the "..." menu (top-right of the PR description) → "Edit"
- Scroll to the Before/After table
- Drag & drop your screenshots into the table cells
- Click "Update comment"
- When ready, click "Ready for review" to publish the PR
Step 5: Generate Slack Message
Use the slack-pr-message skill (.agents/skills/slack-pr-message/SKILL.md) to generate the Slack announcement message for the PR.
Template Fill Rules
-
PR Title: {{CHANGE_TYPE}}({{SCOPE}}): {{SHORT_DESCRIPTION}}
- Example:
feat(mobile): add dark mode toggle
- Example:
fix(desktop): resolve transaction signing issue
-
DESCRIPTION: Generate from $TICKET_DESCRIPTION:
- First paragraph: Problem statement
- Second paragraph: Solution approach
- Include code samples for library changes
- Include before/after for bug fixes
-
SCREENSHOTS_SECTION:
- If $HAS_UI_CHANGES is "yes":
- If "no", omit the section entirely
-
CONTEXT: Link to issues and references:
**JIRA issue**: [LIVE-1234](https://ledgerhq.atlassian.net/browse/LIVE-1234)
**ADR** (if any): https://ledgerhq.atlassian.net/wiki/spaces/WXP/pages/1234
Example Output
For a feature adding portfolio analytics:
PR Title: feat(portfolio): add analytics dashboard
PR Body:
### 📝 Description
This PR introduces a new analytics dashboard to the portfolio feature, providing users with detailed performance metrics and historical data visualization.
**Problem**: Users currently have no way to track their portfolio performance over time.
**Solution**: Added a new analytics screen with:
- Performance charts (daily, weekly, monthly views)
- Key metrics summary (gains, losses, total value)
- Export functionality for data
### ❓ Context
- **JIRA issue**: [LIVE-5678](https://ledgerhq.atlassian.net/browse/LIVE-5678)
Slack Message: Generated via the slack-pr-message skill.