jujutsu
MANDATORY skill for ALL version control operations. Load this skill BEFORE any VCS action. This project uses Jujutsu (jj) exclusively. Git commands are PROHIBITED. Always use jj commands for: commits, branching, rebasing, pushing, pulling, and all other VCS operations. MUST load when: (1) Creating or modifying commits, (2) Pushing to remote, (3) Creating branches or bookmarks, (4) Managing stacked diffs/PRs, (5) Resolving conflicts, (6) Any version control. Triggers: Any VCS operation, commits, branches, push, pull, rebase, stacked PRs, Change IDs.
安装与使用
请根据来源仓库和你的 AI 工具说明安装此技能。先阅读技能文件和依赖要求,再添加到工作流。
查看来源 ↗使用指南技能说明
Jujutsu for Agents
Core Concepts
Working copy is a commit. Every file edit auto-snapshots into @. No staging area.
Change IDs persist. Always reference Change IDs (e.g., zsowkzkt), not commit hashes. IDs survive rebases.
Conflicts don't halt. jj records conflicts in commits; fix them later.
Quick Reference
| Task | Command |
|---|---|
| Check state | jj status --no-pager |
| Name current work | jj describe -m "message" |
| Seal and start new | jj new |
| Jump to commit | jj edit <change_id> |
| Move file to parent | jj squash --into @- <file> |
| Create bookmark | jj bookmark create <name> -r @ |
| Push bookmark | jj git push --bookmark <name> |
| List conflicts | jj resolve --list |
| Undo last operation | jj undo |
| Find by description | jj log -r 'description("text")' --no-graph -T 'change_id "\n"' |
| Format code | jj fix |
| Quick lint check | jj quality |
| Full verify + push | jj secure-push |
| Post-merge sync | jj git fetch && jj rebase -s <next> -d main |
Workflow Patterns
Basic Loop
# 1. Edit files (auto-snapshots)
# 2. Name the work
jj describe -m "feat: add feature"
# 3. Seal and continue
jj new
Edit Mid-Stack
# Find and jump to target
jj edit <change_id>
# Make edits (auto-snapshots)
# Return to tip
jj edit <tip_id>
# Verify no conflicts
jj log -r '::@' --template 'change_id " " conflict "\n"'
Post-Merge Sync (after GitHub merges)
jj has no git pull --rebase equivalent. After a PR is merged on GitHub:
# 1. Fetch the merged commit
jj git fetch
# 2. Rebase remaining work onto new main
jj rebase -s <oldest-unmerged-change-id> -d main
Important: Always use gh pr merge --rebase (not --squash). With rebase-merge, jj recognizes the commit is on main. Squash-merge creates a new hash, leaving orphaned "zombie" commits.
Forbidden Commands
-
jj split— requires TUI, use construction method -
jj resolve— requires TUI, parse and rewrite conflict markers manually
Quality Gates
This project uses jj fix for auto-formatting and custom aliases for verification.
Philosophy
-
Category A (formatters): Run
jj fixanytime — auto-applies ruff, prettier, buf format -
Category B (verifiers): Run
jj secure-pushbefore pushing — runs all linters, type checkers, tests
Commands
| Command | Purpose | Speed |
|---|---|---|
jj fix |
Format modified files (ruff, prettier, buf) | ~5s |
jj fix-all |
Format entire repo | ~30s |
jj quality |
Quick check: format + lint + type-check | ~30s |
jj secure-push |
Full pipeline: format → lint → build → test → push | ~5min |
Workflow Integration
# While coding: format often
jj fix
# Before pushing: verify everything
jj secure-push --bookmark my-feature
# Quick sanity check (no tests)
jj quality
What Runs
jj fix: ruff-format, ruff-fix (isort/pyupgrade), prettier, buf format
jj secure-push: buf lint → pyright → eslint → prettier check → angular build → pytest → vitest → playwright → e2e → generated code check → push
Detailed Protocols
See references/workflows.md for:
- State verification protocols
- Non-interactive splitting techniques
- Post-merge sync workflow
- Conflict resolution steps
- Safety and recovery operations
See references/divergent-changes.md for:
- Identifying divergent changes (multiple commits with same change ID)
- Resolution strategies: abandon, give new ID, squash, or ignore
- Common causes and prevention
使用示例
查看来源仓库中的使用示例与配置说明。
查看来源 ↗来源历史
- 收录时间
- 2026-01-20
- 索引更新时间
- 2026-01-26
- Branch
- main
收录与同步日期属于本站记录。源码修改历史请查看来源仓库。
GitHub ↗chat Comments (0)
Sign in to join the discussion and leave a comment.
No comments yet. Be the first to share your thoughts!