jj-workflow
Installation
SKILL.md
jj Workflow
Philosophy
- Commits are cheap, descriptions are mandatory. The working copy is always a commit. Never leave it as "(no description set)".
- Experiment freely, the oplog is your safety net. Every mutation is recorded.
jj undoandjj op restoremake anything reversible. - Conflicts are state, not emergencies. jj stores conflicts in commits as structured data. Rebase succeeds even with conflicts. Resolve when ready.
- Change IDs are your handle on work. Commit hashes change on rewrite; change IDs don't. Use change IDs to refer to work across rebases and squashes.
- Bookmarks exist for GitHub, not for you. Work with anonymous changes. Add bookmarks only when you need to push.
- Keep the stack shallow. Squash early. Don't let history grow 10 commits deep before curating.
- Use
absorbover manual squash routing. When fixing across a stack, let jj figure out where each hunk belongs. - Colocated = invisible to the team. Teammates see standard git. They don't know you use jj.
CRITICAL: AI-Specific Rules
Always use -m flag to prevent jj from opening an editor: