ワンクリックで
gitman
Route ALL version control through gitman (jj + colocated git). Never run raw jj/git.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Route ALL version control through gitman (jj + colocated git). Never run raw jj/git.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
Use when writing a scripts/tasks/processes entry or a manager module. Covers which surface to use, guarding enterShell echoes, and the 0/1/2/3 exit contract.
Use when editing devenv.yaml or adding an input/import. Covers flake:false for modules, nixpkgs-python for version pins, and transitive inputs.
Use when you edited a modules/ file, devenv.nix, or env.* and nothing changed. Resolves the lock + eval-cache staleness loop.
Use when starting a server or any long-running / heavy task. Use processes + devenv up; don't block the shell; poll logs instead of piping out of view.
Use on ModuleNotFoundError or import failures inside the devenv shell, or after a fresh venv. The venv exists but deps may not be installed.
Use when about to run pytest, python, uv, ruff, or any build/tooling command in this repo. Enforces running through the devenv shell.
| name | gitman |
| description | Route ALL version control through gitman (jj + colocated git). Never run raw jj/git. |
Run every version-control action through gitman (inside the devenv shell). Raw
jj/git edits break canonicity and force a gitman reconcile.
gitman owns version control only. For cross-phase, cross-manager ordering across the
repo's whole lifecycle (spec → scaffold → change → verify → save → docs), defer to the
repoman skill — the repoman entrypoint sequences the managers and routes the VC steps
here. Within version control, gitman is authoritative.
gitman init --colocate is the one-command front door: it colocates jj onto this directory's git —
adopting an existing .git (importing its history, keeping uncommitted work on @) or creating
a fresh one — and then freezes trunk. Pick the path by repo state:
Existing git repo with history (e.g. an "Initial commit" + uncommitted edits):
gitman init --colocate --trunk main # adopts the .git; trunk reuses the existing branch
gitman start <name> # adopts the uncommitted work into a lane
gitman save -m "<message>"
No seed needed — trunk already has a commit.
Fresh / empty repo (no commits yet):
gitman init --colocate --trunk main # creates the colocated git + trunk bookmark at @
gitman seed -m "Initial commit" # describes the working copy as trunk's first commit
seed is one-shot and refuses once trunk has any history.
(Without --colocate, gitman init assumes the workspace is already colocated; if it isn't, it
tells you to colocate first.)
A lane is one unit of work: a named bookmark (= git branch) on trunk, kept linear.
gitman start <name> # begin a lane (add --workspace to isolate it in its own dir)
# ...edit files...
gitman save -m "<message>" # describe the current change
gitman status # see trunk + all lanes (canonical or off-canonical)
gitman sync # fetch trunk + rebase this lane onto it
gitman publish # push the lane (branch = lane name); verify hook runs first
gitman land [<lane>...] # fold lane(s) into trunk, advance trunk, retire the lane(s)
gitman abandon [<lane>] # discard a lane
gitman undo reverts the last intent (whole-intent, via jj's op-log).
gitman undo --list shows recent ops; gitman undo --op <id> restores any of them.gitman resolve [--list] surfaces conflicts. Conflicts are not blocking — keep
working and resolve later (jj records conflicts in commits).gitman reconcile is the one recovery path when status says OFF-CANONICAL: it
adopts stray changes into lanes (or --abandon discards them).gitman version # show current version
gitman version bump <major|minor|patch>
gitman release [<level>|--version X.Y.Z] # (bump →) tag vX.Y.Z → push tag
This repo's version lives at: not configured — add a [version] section to gitman.toml to enable version/release
0 ok · 1 a VC decision is needed (conflict / push rejected / verify blocked /
off-canonical) · 2 infra/config · 3 invalid usage. Pass --json for structured output.