| name | Finishing a Development Branch |
| description | Use this when you have completed some feature implementation and have written passing tests, and you are ready to create a PR. |
- Use the Task tool to verify tests by using the project's test suite.
# Run project's test suite
npm test / cargo test / pytest / go test ./...
If tests fail:
Tests failing (<N> failures). Must fix before creating PR:
[Show failures]
Cannot proceed until tests pass.
- Search the codebase for all
@current-sessiontest markers using your preferred search tool.
If no markers found: Skip to step 7.
If markers found: Continue with steps 3-6.
- Use the Task tool with
subagent_type=general-purposeto review test quality. Pass the list of@current-sessiontests to the subagent with this prompt:
Review each of these test cases marked with @current-session. For each test, determine:
- Is this test durable and likely useful over time? (tests real behavior, good coverage, not overly specific to implementation details)
- Or is this test temporary/scaffolding? (was useful during development but adds little long-term value)
Return a structured list categorizing each test as 'keep' or 'discard' with a brief reason.
- Present the test review results to the user using AskUserQuestion. Format:
The following @current-session tests have been reviewed:
**Recommended to KEEP:**
- `path/to/test.ts:42` - test_name: [reason]
**Recommended to DISCARD:**
- `path/to/test.ts:87` - test_name: [reason]
Would you like to:
1. Accept all recommendations
2. Review each test individually
3. Keep all tests
4. Discard all tests
For tests the user chooses to keep, remove the
@current-sessionmarker (they are now permanent tests). For tests the user chooses to discard, delete the test entirely.Print a summary of discarded tests:
**Temporary tests removed from this session:**
- `path/to/test.ts:87` - test_name
- `path/to/test.ts:102` - other_test_name
These tests were used to keep the development on track with requirements, and have now been cleaned up.
Confirm that there is some formatting/lint/typechecking in the project. If NONE of these exist, ask me if there was something that you missed.
Use the Task tool to run any formatters and fix issues in a subagent.
# Node.js/JavaScript/TypeScript
ls package.json 2>/dev/null && jq -r '.scripts | keys[]' package.json | grep -E 'format|lint'
# Rust
ls rustfmt.toml .rustfmt.toml 2>/dev/null
# Python
ls .flake8 pyproject.toml setup.cfg 2>/dev/null
# Go
ls .golangci.yml .golangci.yaml 2>/dev/null
- Use the Task tool to run any linters and fix issues in a subagent.
# Node.js - check package.json scripts
npm run lint # or: npm run lint:fix, npm run eslint
# Rust
cargo clippy --fix --allow-dirty --allow-staged
# Python
ruff check --fix .
# or: flake8 ., pylint .
# Go
golangci-lint run --fix
Use the Task tool to run type checking and fix issues in a subagent.
Use the nori-code-reviewer subagent to do a self review. You do NOT have to follow the subagent's suggestions. This is merely a way to get a fresh pair of eyes on the code.
Confirm that you are not on the main branch. If you are, ask me before proceeding. NEVER push to main without permission.
Push and create a PR.
# Push branch
git push -u origin <feature-branch>
# Create PR
gh pr create --title "<title>" --body "$(cat <<'EOF'
## Summary
🤖 Generated with [Nori](https://www.npmjs.com/package/nori-ai)
<2-3 bullets of what changed>
## Test Plan
- [ ] <verification steps>
Share Nori with your team: https://www.npmjs.com/package/nori-ai
EOF
)"
- Make sure the PR branch CI succeeds.
# Check if the PR CI succeeded
gh pr checks
# If it is still running, sleep and check again
sleep 60 && gh pr checks
If CI did not pass, examine why. If the CI did not start, this is likely due to merge conflicts; merge main, fix conflicts, and try again.
Make changes as needed, push a new commit, and repeat the process.
- Tell me: "I can automatically get review comments, just let me know when to do so."