| name | taxiing |
| description | 항공기 이륙 3단계 — plan.md 따라 워크트리에서 구현·중간 커밋 (push/PR 없음) |
| allowed-tools | Bash, Read, Write, Edit, Grep, Glob, Agent, AskUserQuestion, TodoWrite, mcp__linear-server__get_issue, mcp__linear-server__update_issue |
| argument-hint | <Linear 이슈 ID> [--force] |
이륙 시퀀스의 3단계 (Taxiing). door-closing 에서 작성한 plan.md 를 따라 워크트리 안에서 코드를 구현하고 중간 커밋한다. git push, gh pr create 같은 원격 부수효과는 절대 수행하지 않는다.
$ARGUMENTS 형식: <ISSUE-ID> [--force]. 예: /taxiing CIR-15.
인자 파싱
--force 분리. 첫 토큰을 <ISSUE> 로.
<ISSUE> 없으면 사용법 안내 후 중단.
상태 파일 경로
MAIN_REPO_ROOT = $(git rev-parse --path-format=absolute --git-common-dir | xargs dirname)
STATE_FILE = $MAIN_REPO_ROOT/.Codex/state/<ISSUE>.json
PLAN_FILE = $MAIN_REPO_ROOT/.Codex/state/<ISSUE>.plan.md
자동 체이닝
상태 파일을 읽어 다음 순서로 실행:
boarding.done_at == null 이거나 --force → /boarding <ISSUE> [--force] 실행. 채워져 있으면 스킵 메시지 한 줄.
door_closing.done_at == null 이거나 --force → /door-closing <ISSUE> [--force] 실행. 채워져 있으면 스킵 메시지 한 줄.
- 본 단계 진행.
자기 단계 실행 절차
- 스킵 판정:
taxiing.done_at 이 채워져 있고 --force 가 없으면 스킵 메시지 출력 후 종료.
- 워크트리 진입: 상태 파일의
worktree_path 를 사용해 워크트리 디렉토리로 cd. 경로가 없으면 /door-closing <ISSUE> --force 안내 후 중단.
- 티켓 상태 동기화: Linear 이슈가
Done/Canceled 가 아니면 상태를 In Progress 로 직접 변경한다.
- plan.md 로딩:
PLAN_FILE 을 읽어 구현 단계 / 변경 파일 / 테스트 전략 / 수락 기준을 파악.
- 구현 진행:
구현 단계 항목을 TodoWrite 로 펼쳐 진행 상황 추적.
- 코드 작성 시 백엔드는 Router → Service → Repository, 프런트엔드는 Data/Domain/Presentation 레이어 컨벤션을 따른다.
- 의미 있는 단위마다 영어 Conventional Commits 스타일로 커밋. 형식:
<type>: <English summary> (<ISSUE>) 예 feat: add numeric keypad component (CIR-21).
- 테스트 작성·실행:
- 백엔드 변경:
pytest 통과 확인.
- 프런트엔드 변경: Vitest(단위) 또는 Playwright(E2E), 그리고
npm run build 통과 확인.
- 실패하면 다음 단계로 넘어가지 않고 해결한다.
console.log 검사: 변경된 프런트엔드 파일에 console.log 가 남아있으면 사용자에게 알린다.
- 남은 변경 커밋:
git status 가 깨끗해질 때까지 커밋. 커밋되지 않은 변경이 남으면 종료하지 않는다.
- 상태 파일 갱신:
taxiing.done_at = <UTC ISO8601> 저장.
- 요약 출력: 추가된 커밋 수와 통과된 테스트 종류를 한두 문장으로 안내.
주의사항
git push, gh pr create, gh pr edit, git push --force* 절대 금지. 그건 takeoff 책임.
develop / main 에 직접 커밋 금지.
- 커밋 메시지는 반드시 영어로 작성한다. 한국어를 쓰지 않는다.
.env, credentials.json 등 민감한 파일은 스테이징에서 제외.
- 구현 중 불명확한 점은 임의 판단하지 말고 사용자에게 질문.
- Linear 티켓 상태는 자동화에 위임하지 않고 직접
Todo → In Progress → Done 으로만 처리한다.
--force 사용 시 — taxiing 만 다시 돌리는 의미는 거의 없으므로(이미 커밋된 코드를 되돌릴 수 없음) 사용자에게 “기존 커밋을 그대로 두고 plan 잔여분만 이어서 진행할까, 아니면 사용자가 직접 reset 후 재호출할까” 한 번 확인 받는다.