Commit, push, and open pull requests without interrupting your Pi session.
Run this in the repository where you use Pi:
pi install -l npm:@noice-tech/pi-commitCommit the resulting .pi/settings.json change to install it for collaborators too.
/commit fix prevent hidden tracks from rendering
/commit --no-pr internal refresh test fixtures
/commit stacked feat add export presets
| Command | What it does |
|---|---|
/commit [type] [summary] |
Commits and pushes, then creates or updates the pull request. |
/commit --no-pr [type] [summary] |
Commits and pushes without reading or changing a pull request. |
/commit stacked [type] [summary] |
Creates a child branch and PR above the current branch's open PR. |
Add --pr to override no-PR configuration for one run. Leave out the type to choose it interactively, or use auto to let the worker infer it. A supplied summary is the primary wording source and is checked against the current diff.
/commit runs its worker on a separate branch of Pi's session tree, keeping its execution transcript out of your active coding context. You return to the same conversation with a compact, persistent report of the branch, commit, push, and PR actions performed. Both you and the coding agent see that report, including any partial failure or unknown state; it does not trigger another agent turn or authorize further Git/PR changes. The full worker transcript remains available in the session tree.
The built-in types are feat, fix, improve, and internal. Commits use type: description; PR titles add a package scope only in multi-package workspaces. PR bodies contain stable Summary, Changelog, and Verification sections. Internal changes receive no public changelog summary.
Configuration is optional. Create a JSON file in either location:
| Scope | Path | Use it for |
|---|---|---|
| User | ~/.pi/agent/pi-commit.json |
Defaults across your projects. |
| Project | .pi/pi-commit.json |
Shared repository defaults in a trusted project. |
Settings are merged individually: project values override user values, which override the built-in defaults. /commit flags such as --pr and --no-pr override configuration for one run. Project configuration is ignored until the project is trusted.
To push commits without creating or updating pull requests by default:
{
"pullRequest": "never"
}pullRequest accepts "auto" (the default) or "never".
The default opinionated format uses feat, fix, improve, and internal. You can state it explicitly:
{
"format": "opinionated"
}Or replace it with project-specific change types:
{
"format": {
"changeTypes": [
{ "name": "docs", "description": "Documentation", "public": true },
{ "name": "chore", "description": "Maintenance", "public": false }
],
"instructions": "Use type(scope): description."
}
}Each change type needs:
name— a unique lowercase identifier using letters, digits, and hyphens;autoandstackedare reserveddescription— guidance shown when selecting and applying the typepublic— whether the worker must write a standalone public changelog summary; non-public types writeNone.
instructions tells the worker how to format commit and PR titles. It cannot override the commit workflow or public-summary rules.
You may combine both settings in one file. Unknown fields, malformed JSON, and invalid values stop /commit before any Git or GitHub changes.
- Git and a remote you can push to
- PR mode: authenticated GitHub CLI and
jq - Stacked mode: the
github/gh-stackextension
Every commit mode pushes. PR mode can create or update a pull request. Stacked mode must start from the published top of a valid stack and can leave a branch, commit, push, or PR behind if a later step fails; the worker reports any partial state.
The worker sends relevant session and repository context to your selected model. Review your model provider's privacy settings before using it with sensitive code.