소스 정보
- 저장소
- Bullish-Design/Pyjutsu
- 최근 소스 활동
- 2026년 8월 25일 21:55
- 감지된 SKILL.md 언어
- 영어
- 스타
- 2
- 포크
- 0
설치 방법
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
소스 파일 검토
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
메뉴
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
직접 명령은 검토 Prompt를 거치지 않습니다. 실행하기 전에 소스를 확인하세요.
npx skills add https://github.com/Bullish-Design/Pyjutsu --skill gitman명령은 한 줄로 유지됩니다. 복사하기 전에 가로로 스크롤해 전체 내용을 확인하세요.
로컬 사본을 원하시나요? SkillsMP에서 현재 제공할 수 있는 파일을 다운로드하세요.
Adopt or templatize an existing repo — bring a hand-written repo under template management with copyroom adopt / templatize, and read the drift report.
Entry point for all CopyRoom work — scaffolding a repo from a template, template drift and updates, and adopting an existing repo. Routes to the copyroom-adopt and copyroom-template-edit sub-skills for the deep arcs.
Edit a template from inside a generated project — the template-checkout → edit → template-test → template-preview → template-discard loop, preview-only.
SKILL.md 표시 중
| 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)
gitman start <T/api> # STACK a lane on `T`: a `/`-path name's base IS its name-parent
gitman subtask <leaf> # fan out `<current-lane>/<leaf>` (≡ `start <cur>/<leaf>`) — decompose a task
gitman subtask <leaf> --workspace # …in its OWN workspace dir, for a parallel agent to work it
gitman switch <lane> # resume a parked lane: move @ back onto an existing lane's change
gitman split --paths <sel> --into <lane> # carve entangled paths into a second sibling lane
# ...edit files...
gitman save -m "<message>" # describe the current change
gitman status # see trunk + the lane TREE (a stacked lane is indented, shows `↳ on <base>`)
gitman sync # rebase this lane onto its base (parent lane, or local trunk)
gitman publish # push the lane (branch = lane name); verify hook runs first
gitman land [<lane>...] # fold lane(s) into their base (parent lane, or trunk), retire the lane(s)
gitman land --all # fold the WHOLE forest bottom-up (child→parent→trunk) in one command
gitman abandon [<lane>] # discard a lane (add --recursive to tear down its whole subtree)
Decomposing a task into a tree — the /-path name IS the structure (fractal lanes). A lane name
may be a /-path: T, T/api, T/api/handler. A lane's base is its name-parent (T/api stacks
on T) — derived purely from the name, so the tree is always explicit. start T/api refuses if T
isn't a live lane (gitman start T first); a flat name (no /) roots on trunk as before. gitman subtask <leaf> is the ergonomic fan-out: while on T, subtask api creates T/api stacked on
T, carrying T's tree. land <child> folds the child into its base (the parent lane advances);
a base with a live child refuses to land/abandon until the child is folded in ("fold the child in
first"). Land bottom-up: children before their parents — or gitman land --all to fold the whole
forest bottom-up (child→parent→trunk) in one command, each level its own undo checkpoint. To discard
a whole branch of the tree, gitman abandon <node> --recursive tears it down bottom-up (child→parent),
each node its own undo checkpoint; a workspace an agent may still be in is forgotten but its dir is
kept, not deleted. --onto <lane> is retained only as an optional assertion that must equal the name-parent.
Parallel agents — fan out with --workspace, fold in from your own workspace. subtask <leaf> --workspace (or start <T/api> --workspace) puts a child lane in its own .worktrees/<lane>/
dir, so N agents work N subtasks with no contention over @; the report prints the cd target.
Editing is lock-free and parallel; only the brief land/sync/start transactions serialize (on
one shared repo lock). Fold in from the lane's own workspace (cd there, gitman land): gitman
refuses to fold a lane whose @ is live in another workspace — it won't yank a dir out from
under a working agent (land/land --all name it and skip it; land it from its own dir, or park it
first). Landing one child advances the shared parent, leaving siblings N behind — each catches up
on its own schedule with gitman sync (gitman never reaches into another workspace's @). A
workspace whose @ was rewritten out from under it (a sibling's fold, a pull) shows stale; gitman reconcile from inside it refreshes it.
switch is the lane-navigation verb: when @ leaves a lane without ending it (a sibling start
in the same workspace stranded yours; you landed one of several lanes), gitman switch <lane> puts
@ back on it. It refuses to strand an unnamed dirty @ (save/start/abandon it first) and reports
cleanly if the lane is checked out in another --workspace (cd there to resume).
split is the lane-partition verb: when two concerns entangle in one draft change,
gitman split --paths <sel>… --into <new-lane> [-m <desc>] carves the selected paths onto a new
sibling lane on trunk and leaves the remainder on the original — both independently landable.
@ stays on the remainder; continue on the carved one with gitman switch <new-lane>.
Trunk is local-authored: it advances only via land, and gitman is the sole writer of trunk
SHAs. Origin is a mirror you reach by fast-forward push; pull integrates genuine origin moves.
gitman remote add <url> # bootstrap a remote (in-process; never touches git HEAD)
gitman push # fast-forward local trunk → origin (refuses non-FF → `gitman pull`)
gitman pull # integrate a moved origin/<trunk> (rebases your un-pushed lands; never drops work)
gitman untrack <path> # stop tracking a machine-local file (gitignore + drop from the tree)
gitman push --reset-origin deliberately overwrites divergent origin residue (lease-safe; rare —
for migrating a repo that already carries re-hash-twin residue).
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: pyproject.toml (version = "X.Y.Z")
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.