GitButler의 `but` CLI로 버전 관리를 수행합니다. 파일이나 변경 구간을 골라 커밋하고, 브랜치와 커밋 이력을 정리하며, 충돌을 해결하고 원격 변경을 반영해 풀 리퀘스트를 만드는 흐름을 안내합니다.
- 파일이나 변경 구간을 골라 커밋
- 커밋 분할·통합·순서 변경
- 의존 관계에 따라 브랜치 배치
스크립트로 숨겨진 창의 GPUI 클라이언트를 조작해 클릭, 키 입력, 대기, 화면 캡처를 수행합니다. UI 변경을 확인하거나 버그를 재현하고 화면을 기록할 수 있으며, 별도의 임시 앱 데이터를 사용합니다.
Use whenever you need to see, click through or screenshot the GPUI client (crates/but-gpui), to check a UI change works, reproduce a UI bug, or show what a change looks like. Drives the app from a script in a window that never shows on the user's screen, against throwaway app data. Never start the app with `cargo run` or the plain binary to look at it.
실행 점수 미검증
설치 방법 보기스크립트로 GPUI 클라이언트를 실행해 사용자 화면에 표시되지 않는 창에서 클릭, 키 입력, 대기, 화면 캡처를 수행합니다. 작업 결과와 앱의 알림, 경고, 오류를 확인하면서 UI 변경을 점검하거나 버그를 재현하고 화면을 기록할 수 있습니다. 실행에는 별도의 임시 앱 데이터를 사용하므로 사용자의 프로젝트나 설정에는 손대지 않습니다. 화면 일부를 확대해 촬영하거나 작업을 한 단계씩 진행하는 방법도 제공합니다.
화면 변경이 의도대로 동작하는지 확인하거나 같은 조작 순서로 UI 문제를 재현할 때 유용합니다. 변경 전후의 화면을 이미지로 저장해 비교할 때도 사용할 수 있습니다. 필요한 상태를 준비하기 위해 일회용 Git 저장소를 앱에 추가할 수도 있습니다.
cargo가 PATH에 있어야 합니다. 없으면 저장소의 개발 셸에서 실행합니다. 실제 저장소를 시험할 때는 APFS 복제본을 사용합니다. 포커스와 블러 동작, 클립보드 복사, 설정 화면의 AI 기능은 별도로 주의해야 합니다.
이 소개문은 공개된 SKILL.md를 바탕으로 AI(OpenAI Codex)가 작성했습니다. 정확한 사양은 아래 원문을 확인하세요.
AI가 SKILL.md의 내용에서 주의가 필요한 작업과 도입 전제를 확인했습니다. 점수는 실제로 실행한 결과(실행 검증)만으로 매깁니다.
점수에는 넣지 않았습니다. 2026년 10월 29일 기준으로 AI(OpenAI Codex)가 판정했습니다. 참고용이므로 설치 전에 원문도 확인해 주세요.
설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.
crates/but-gpui/scripts/drive.sh builds the client with --features dev-script and runs it
from a script. The window never shows, the app stays out of the Dock and never takes the
user's keys, and it runs against app data of its own, so none of the user's projects or
settings are touched. Starting the app any other way opens a window on the user's screen.
The app writes to what it opens: GitButler's workspace, refs, the oplog. Never add the
checkout you're working in, or any repository of the user's. Make a throwaway one:
repo=$(mktemp -d)/repo
git init -q -b main "$repo"
git -C "$repo" -c user.name=Tester -c user.email=t@example.com commit -q --allow-empty -m "Initial commit"
echo hello > "$repo/notes.txt"
Build whatever state the change needs (branches, commits, uncommitted edits) with git here,
or later with sh steps, which run while the app watches. To try a real repository, use an
APFS clone as crates/but-gpui/AGENTS.md (Sandboxes and fixtures) says.
Write a script, one command per line (src/dev.rs lists them all), and run it:
add /path/to/repo # the folder Add a repository would be given
wait 1000 # let the first loads land
shot /tmp/before.png
click 400 184 # window coordinates, see below
key cmd-k
type history
shot /tmp/after.png
crates/but-gpui/scripts/drive.sh run script.txt
It prints what the app reported (failed steps as script line N: …, prompts as PROMPT …,
warnings and errors) and where the app data and logs went. The run quits when the script
ends and is killed after --timeout seconds (300). Read the shots to check them.
To explore, or to find where to click from what's on screen:
crates/but-gpui/scripts/drive.sh start
crates/but-gpui/scripts/drive.sh step "add /path/to/repo" "wait 1000"
crates/but-gpui/scripts/drive.sh step "click 400 184" "key down"
crates/but-gpui/scripts/drive.sh stop
Each step runs its arguments as script lines, saves a shot, and prints its path (under
target/gpui-drive/shots) after anything the app reported and a KEYS line. A session quits
on its own after --timeout seconds (1800); always stop it when done. One session per
checkout.
KEYS Workspace > Navigator > TextInput says what typing reaches: here a text field in the
navigator. Check it before type or a single-letter key. In a list or the diff, letters run
shortcuts, so a query typed there makes branches (b), pushes (⇧P), opens menus (m), or opens
the user's editor on their screen (e) instead. After add the navigator has the keys, so click
the field you mean first. In a run script, a keys line prints the same.
The window is 1360×860 in logical pixels, which is what click, move, drag and scroll
take, and a shot is saved at that size: where something shows in it is where to click it.
shot path x y w h saves just that region, given in the same coordinates, at the display's
full resolution (2× on a Retina Mac) for a closer look, so a point read off it is the region's
origin plus half its pixel offset. size W H resizes the window.
cargo must be on the PATH. If it isn't, run inside the repository's dev shell:
nix develop --command crates/but-gpui/scripts/drive.sh … (needed for run and start;
step and stop don't build).GITBUTLER_GPUI_APPEARANCE=dark (or light) before the command picks the theme.run --release builds with optimizations, for perf and hold timings; see Measuring
performance in crates/but-gpui/AGENTS.md.on_focus and on_blur listeners never fire and carets don't
blink. Check those by hand.add: Add project's folder picker would open on the user's screen.crates/but-gpui/AGENTS.md has the rest: hover needs a second small
move, links in text need press then release, prompts need their buttons clicked, and
drags have their own commands.아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.
로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.
아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.
GitButler의 `but` CLI로 버전 관리를 수행합니다. 파일이나 변경 구간을 골라 커밋하고, 브랜치와 커밋 이력을 정리하며, 충돌을 해결하고 원격 변경을 반영해 풀 리퀘스트를 만드는 흐름을 안내합니다.
GitButler 브랜치, 풀 리퀘스트 또는 변경과 관련된 저장된 에이전트 기록을 살펴봅니다. 이전 논의와 작업을 시간순으로 파악하고, 결정의 이유나 근거가 더 필요한 대화 차례를 자세히 확인합니다.
`but` CLI의 셸 기반 성능 시나리오를 만들고 수정하고 실행하며 문제를 조사합니다. 준비 작업과 측정할 작업을 분리하고 Hyperfine으로 시간을 측정하며 기존 방식에 맞춰 스크립트와 실행 결과를 확인합니다.
GitButler의 기존 구조에 따라 `but` 명령을 구현하거나 수정합니다. 인자 정의, 입력 검증, 실행을 분리하고 사용자용·셸·JSON 출력까지 다루며 TUI에서도 호출할 수 있는 형태를 안내합니다.
`@gitbutler/ui-react`를 사용해 Lite와 but.dev의 사용자 화면을 다듬습니다. 폼, 모달, 알림, 화면 문구를 기존 구성 요소와 디자인 지침에 맞추고 밝은 테마와 어두운 테마에서 확인하도록 안내합니다.
GitButler의 Ratatui 터미널 화면 테스트를 추가하거나 수정합니다. 키 입력과 선택 위치를 확인하고, 예상 화면을 담은 SVG 스냅샷과 비교하며, 테스트 실행 및 스냅샷 갱신 절차를 안내합니다.