After: 작업을 방해하지 않는 Claude Code 프롬프트 대기열
Claude Code용 프롬프트 대기열: /after는 현재 턴이 끝난 뒤에 다음 작업을 실행하며, 진행 중인 작업에 끼어들지 않습니다.
권한
- 모델 호출 (사용량 소모)Claude에 자체 요청을 보낼 수 있으며, 이는 요금제 사용량에 포함됩니다($.model.* / $.agent.spawn).
- 프롬프트 읽기입력한 내용과 대화 기록을 볼 수 있습니다(prompt.* / session.append / session.messages).
- UI 변경Claude Code 화면에 밴드, 패널, 상태 텍스트, 토스트를 그립니다(ui.render / $.ui.*).
- 명령어/도구 추가사용자나 Claude가 호출할 수 있는 새 슬래시 명령어나 도구를 등록합니다($.command.register / $.tool.register).
- 데이터 저장플러그인 전용 저장소에 세션 간 데이터를 보관합니다($.store.*).
- 테스트 버전
- v2.1.303
- 마지막 테스트
- 필요 버전
- Claude Code ≥ 2.1.287
- 표시 위치
- 프롬프트 위, 패널, 토스트, 상태 표시줄
이 모드는 무엇을 하나요?
After는 Miguel Ángel Durán(midudev)이 만든 커뮤니티 모드로, Claude Code의 프롬프트 대기열 역할을 합니다. /after <task>는 Claude가 하던 일을 마친 뒤에 실행할 작업을 추가합니다. Claude가 쉬고 있다면 작업이 바로 시작됩니다. /before <task>는 작업을 맨 앞에 두어 다음에 실행되게 합니다. 핵심은 대기열의 작업이 현재 턴을 조종하지 않는다는 점입니다. 차례가 오기 전에는 Claude가 그 작업을 보지 못합니다.
각 명령은 대화 기록에 테두리가 있는 카드로 답하며, 무엇이 바뀌었는지 보여 줍니다. 새로 추가했는지, 옮겼는지, 편집했는지, 제거했는지입니다. 대기열에 무언가 있는 동안에는 프롬프트 위에 한 줄짜리 막대가 지금 실행 중인 작업과 다음 작업을 보여 줍니다. /after만 입력하면 패널이 열려 키보드로 작업을 고르고, 편집하고, 순서를 바꾸고, 삭제할 수 있습니다. /after remove the tests one이나 /after tests, write a README explaining them처럼 일상적인 말로 입력해도 되며, 글이 이미 대기열에 있는 작업을 가리킬 수 있을 때는 Haiku가 의도를 파악합니다.
다른 명령은 /after rm 2, mv 3 1, edit 2 <text>, pause, resume, undo, clear, list, help입니다. 작성자의 README는 모드를 지원하는 Claude Code 버전, 즉 2.1.289 이상이 필요하다고 설명합니다.
데모
녹화에서는 작은 데모 프로젝트에서 모드를 불러온 Claude Code를 시작하고, README.md를 읽고 이 프로젝트가 무엇인지 한 문장으로 말해 달라고 요청합니다. Claude가 아직 작업하는 동안 /after read src/login.js and say what it does in one sentence를 입력합니다. After라는 제목의 카드가 나타나 Queued #1과 ← new가 붙은 작업을 보여 주고, 프롬프트 위 막대에도 그 작업이 표시됩니다. 첫 답변이 끝나면 모드가 대기열의 작업을 메시지("Prompt from the after plugin")로 제출하고, 막대는 ▶ read src/login.js and say what… nothing else queued로 바뀌며 Claude가 작업을 시작합니다. 녹화는 여기서 끝납니다.
설치
설치 블록의 방법 중 아무거나 사용하세요. 모두 작성자의 마켓플레이스에서 직접 설치합니다. 이미 열려 있는 세션에 설치한다면 먼저 /reload-plugins를 실행하세요. 그런 다음 Claude가 작업하는 동안 /after <task>를 써 보세요.
$ install after
Claude Code 2.1.287 이상 필요
작성자의 마켓플레이스에서 설치: midudev/better-claude
1.Claude Code 안에서 한 줄로
/plugin install after --marketplace midudev/better-claude실행 중인 세션(v2.1.275 이상)에 붙여 넣으세요. Claude Code가 먼저 마켓플레이스 추가 여부를 묻습니다.
2.셸에서 설치
claude plugin marketplace add midudev/better-claude claude plugin install after@better-claude그런 다음 이미 열려 있는 세션에서 /reload-plugins를 실행하세요.
3.설치하지 않고 사용해 보기
git clone https://github.com/midudev/better-claude claude --plugin-dir ./better-claude/plugins/after한 세션에서만 모드를 불러옵니다. 설정에는 아무것도 추가되지 않습니다.
작동 방식
모드 전체는 하나의 hooks 모듈인 hooks/register.tsx와 그 아래 src/의 평범한 JavaScript입니다. /after와 /before는 즉시 실행 명령으로 등록되어 턴 도중에도 동작합니다. 대기열은 막대와 패널을 위해 $.state에 보관되고, 세션별로 $.store에도 저장됩니다. 턴이 끝나면 다음 작업이 Claude에게 전달됩니다.
on('turn.complete', async ($, e, next) => {
const result = await next(e)
if (e.agentId === undefined) await finishTurn($, e.reason === 'answer')
return result
})
// ...
reason = (await $.prompt.submit({ text: item.text, asUser: true })).drop메인 에이전트가 답변으로 끝낸 턴만 대기열을 진행시킵니다. Esc, 거절, API 오류가 나면 다음에 정상적으로 끝날 때까지 멈춥니다. 작업이 Claude의 컨텍스트에 들어가지 않도록, 명령은 #lq2x9k-3 같은 짧은 참조만 답하고, CommandOutput의 ui.render 훅이 그 자리에 카드를 그리며, session.append 훅이 기록에 남은 명령의 인수를 비웁니다. 데모의 /after 줄이 그 예입니다. 자연어 문장은 대기열을 가리킬 수 있을 때만 $.model.complete로 보내고, 모델이 답하지 않으면 로컬 휴리스틱이 이어받습니다.
사용자 지정
/config에 옵션이 세 개 있으며, settings.json의 pluginConfigs.after.options 아래에서 설정할 수도 있습니다.
smart(기본값 켬): 작은 모델에게 명령의 뜻을 묻습니다. 끄면 로컬 매칭만 사용합니다.model(기본값haiku): 이 요청에 쓸 별칭 또는 전체 모델 ID입니다.display(기본값band):band는 프롬프트 위,status는 프롬프트 아래 한 줄,none은 표시하지 않습니다.
권한 및 안전
무엇이든 실행하기 전에 플러그인이 불러오는 모든 파일을 읽었습니다. plugin.json, hooks/hooks.json, hooks/register.tsx, src/ 전체(Node API가 없고 플러그인 밖에서 가져오는 것도 없는 순수 JavaScript), 타입 선언, 테스트입니다. 플러그인에는 package.json, 설치 스크립트, 번들되거나 압축된 코드, 바이너리가 없습니다. 저장소에는 MIT LICENSE 파일이 있습니다.
UI를 변경함은 막대, 패널, 카드, 토스트 "After · all queued tasks done"에 해당합니다. 명령을 추가함은 /after와 /before입니다. 데이터를 저장함은 대기열과 카드이며, 플러그인 자체 $.store에 저장되고 각각 7일, 30일 뒤에 정리됩니다.
알아 둘 점:
- 사용자 대신 프롬프트를 제출합니다. 턴이 끝나면
$.prompt.submit이 대기열의 각 작업을 사용자의 메시지로 보냅니다. 이후 Claude는 평소의 권한 설정 아래에서 작업하지만, 대기열의 작업은 지켜보지 않는 사이에 실행되므로/after list나 막대로 대기열을 확인하세요. - 대기열 텍스트를 모델에 보냅니다. 자연어 명령은 명령과 대기열 작업의 텍스트를 Claude Code 자체 클라이언트(
$.model.complete, 25초 제한)를 통해 Haiku에 보냅니다. 이미 쓰고 있는 같은 계정이며 추가 호스트나 키는 없습니다.smart로 끌 수 있습니다. - 기록을 고쳐 씁니다.
session.append훅은/after와/before의 인수를 모델이 읽는 내용에서 제거합니다. 도구 호출이나 사용자의 프롬프트를 막거나 바꾸지는 않습니다.validate는 이것을.catch가 없는 게이팅 훅으로 표시하며, 코드는 README와 일치합니다. - 스스로는 네트워크를 쓰지 않고, 셸 명령을 실행하지 않으며, 환경 변수를 읽지 않고, 자체 저장소 밖에는 쓰지 않습니다.
scripts/eval-haiku.js는claude -p를 실행하지만 개발자용 스크립트이며 플러그인이 불러오지 않습니다. ~/.claude/commands에 예전after.md와before.md가 있는지 확인하고, 있으면 삭제하라는 메시지를 남길 뿐 파일은 건드리지 않습니다.
claude plugin validate는 오류나 경고를 보고하지 않았고, 작성자의 테스트 20개가 Claude Code 2.1.303에서 모두 통과했습니다.
- 모델 호출 (사용량 소모)
- Claude에 자체 요청을 보낼 수 있으며, 이는 요금제 사용량에 포함됩니다($.model.* / $.agent.spawn).
- 프롬프트 읽기
- 입력한 내용과 대화 기록을 볼 수 있습니다(prompt.* / session.append / session.messages).
- UI 변경
- Claude Code 화면에 밴드, 패널, 상태 텍스트, 토스트를 그립니다(ui.render / $.ui.*).
- 명령어/도구 추가
- 사용자나 Claude가 호출할 수 있는 새 슬래시 명령어나 도구를 등록합니다($.command.register / $.tool.register).
- 데이터 저장
- 플러그인 전용 저장소에 세션 간 데이터를 보관합니다($.store.*).
호환성 및 문제 해결
macOS의 Claude Code 2.1.303에서 확인했습니다(validate, 테스트, 데모). 동작하지 않는다면:
/after가 없음:/plugin에서 플러그인이 로드되었는지 확인하고, 설치 후/reload-plugins를 실행하세요.~/.claude/commands의after.md또는before.md(After 0.1이 남긴 것)가 모드를 가립니다. 삭제하세요.- 아무것도 실행되지 않음: 대기열이 일시 중지되었을 수 있으니
/after resume을 실행하세요. Esc나 오류 뒤에는 턴이 정상적으로 끝날 때까지 기다립니다. - 패널은 사용 중인 화면에서 입력을 지원해야 합니다. 지원하지 않으면 명령을 직접 사용하세요.
- Claude가 쉬는 동안 대기열을 먼저 만들고 싶다면
/after pause를 실행하고, 작업을 추가한 뒤/after resume을 실행하세요.
자주 묻는 질문
- Claude가 작업하는 동안 그냥 입력하는 것과 /after는 무엇이 다른가요?
- 턴이 진행되는 동안 입력한 글은 그 턴에 주입되어 Claude가 지금 하는 일을 바꿀 수 있습니다. /after로 넣은 작업은 현재 턴이 끝날 때까지 Claude의 컨텍스트에 들어가지 않고, 끝난 뒤 사용자의 메시지로 전달됩니다.
- After는 모델을 호출하나요?
- “/after remove the tests one” 같은 자연어 명령이고, 그 글이 대기열의 작업을 가리킬 수 있을 때만 호출합니다. Claude Code 자체 클라이언트를 통해 Haiku에 물어보므로 API 키가 필요 없습니다. smart 옵션을 끄면 로컬 매칭만 사용합니다.
- Esc를 누르면 어떻게 되나요?
- Esc는 평소처럼 실행 중인 작업을 중단하고, 대기열은 이후 턴이 정상적으로 끝날 때까지 기다립니다. /after pause로 직접 멈추고 /after resume으로 다시 진행할 수도 있습니다.
- 재시작이나 /clear 뒤에도 대기열이 남나요?
- 네. 대기열은 세션별로 플러그인 자체 저장소에 저장되므로, 다시 연 세션은 실행 중인 작업 없이 대기열을 찾습니다. /clear는 새 대화에도 대기열을 유지합니다.
- 프롬프트 위 막대를 숨기려면 어떻게 하나요?
- display 옵션을 status로 하면 프롬프트 아래에 한 줄로 표시되고, none으로 하면 /after로만 대기열을 볼 수 있습니다. 옵션은 /config에 있습니다.
# 관련 모드
더 보기: 타이머, 할 일, 스탠드업, 슬래시 명령.

