Create GitHub pull requests that follow the NemoClaw PR template. Use when the user wants to create a new PR, submit code for review, open a pull request, or push changes for review. Trigger keywords - create PR, pull request, new PR, submit for review, open PR, push for review.
Create pull requests on the NemoClaw GitHub repository using the gh CLI. This skill ensures every PR follows the project's PR template exactly.
gh CLI must be authenticated (gh auth status).Before creating a PR, verify the branch.
Not on main. Never create PRs from main.
git branch --show-current
Branch has commits ahead of main.
git log main..HEAD --oneline
Working tree is clean. Stage or stash any uncommitted changes first.
git status
Run both checks and confirm they pass before proceeding. Do not skip this step.
npx prek run --all-files
npm test
If either fails, fix the issues before creating the PR.
Ensure the branch is pushed to the remote.
git push -u origin HEAD
PR titles must follow Conventional Commits format:
<type>(<scope>): <description>
Types: feat, fix, docs, chore, refactor, test, ci, perf
Scope is typically the component name (e.g., cli, blueprint, plugin, policy, docs).
Examples:
feat(cli): add offline mode for onboardingfix(blueprint): prevent SSRF bypass via redirectdocs: update quickstart for Windows prerequisitesDetermine which type applies based on the diff:
docs/.Check the branch name and commit messages for issue references. If an issue exists, use Fixes #NNN or Closes #NNN.
The PR body must include a DCO sign-off line. Determine the user's name and email from git config:
git config user.name
git config user.email
Use the exact template structure below. Fill in each section based on the diff (git diff main...HEAD). Check the applicable boxes and leave others unchecked. Do not add, remove, or reorganize sections.
## Summary
<!-- 1-3 sentences: what this PR does and why. -->
## Related Issue
<!-- Fixes #NNN or Closes #NNN. Remove this section if none. -->
## Changes
<!-- Bullet list of key changes. -->
## Type of Change
- [ ] Code change (feature, bug fix, or refactor)
- [ ] Code change with doc updates
- [ ] Doc only (prose changes, no code sample modifications)
- [ ] Doc only (includes code sample changes)
## Verification
<!-- Check each item you ran and confirmed. Leave unchecked items you skipped. -->
- [ ] `npx prek run --all-files` passes
- [ ] `npm test` passes
- [ ] Tests added or updated for new or changed behavior
- [ ] No secrets, API keys, or credentials committed
- [ ] Docs updated for user-facing behavior changes
- [ ] `make docs` builds without warnings (doc changes only)
- [ ] Doc pages follow the [style guide](https://github.com/NVIDIA/NemoClaw/blob/main/docs/CONTRIBUTING.md) (doc changes only)
- [ ] New doc pages include SPDX header and frontmatter (new pages only)
## AI Disclosure
<!-- If an AI agent authored or co-authored this PR, check the box and name the tool. Remove this section for fully human-authored PRs. -->
- [ ] AI-assisted — tool: <!-- e.g., Claude Code, Cursor, GitHub Copilot -->
---
<!-- DCO sign-off required by CI. Run: git config user.name && git config user.email -->
Signed-off-by: {name} <{email}>
Follow these rules when filling in the template:
Fixes #NNN or Closes #NNN if an issue exists. Remove the section entirely if there is no related issue.[x] for checked, [ ] for unchecked.{name} and {email} with values from git config user.name and git config user.email.Use gh pr create with the --assignee @me flag and a HEREDOC for the body to preserve formatting.
gh pr create \
--title "<type>(<scope>): <description>" \
--assignee "@me" \
--body "$(cat <<'EOF'
<full PR body from Step 5>
EOF
)"
Add labels when applicable:
--label "documentation" # for doc-only or doc-inclusive PRs
--label "topic:security" # for security-related changes
For work-in-progress that is not ready for review:
gh pr create --draft --title "..." --assignee "@me" --body "..."
After the PR is created, display the PR URL as a clickable markdown link:
Created PR [#NNN](https://github.com/NVIDIA/NemoClaw/pull/NNN)
make docs, leave that box unchecked.--assignee @me. Every PR must be assigned to its creator.