Next Steps: 턴마다 보여 주는 Claude Code 프롬프트 제안
각 턴이 끝나면 Claude Code 입력창 위에 다음에 보낼 만한 프롬프트 2~3개를 보여 줍니다. 1, 2, 3으로 초안을 넣습니다.
권한
- 모델 호출 (사용량 소모)Claude에 자체 요청을 보낼 수 있으며, 이는 요금제 사용량에 포함됩니다($.model.* / $.agent.spawn).
- 프롬프트 읽기입력한 내용과 대화 기록을 볼 수 있습니다(prompt.* / session.append / session.messages).
- UI 변경Claude Code 화면에 밴드, 패널, 상태 텍스트, 토스트를 그립니다(ui.render / $.ui.*).
- 테스트 버전
- v2.1.291
- 마지막 테스트
- 필요 버전
- Claude Code ≥ 2.1.287
- 표시 위치
- 프롬프트 위
이 모드는 무엇을 하나요?
Next Steps는 Hamza Zafar(hamzafer)가 만든 커뮤니티 모드로, 그의 claude-code-mods 컬렉션에 속해 있습니다. Claude Code 프롬프트 제안을 제공합니다. 턴이 끝나면 입력창 위의 띠에 다음에 입력할 만한 짧은 프롬프트 두세 개를 보여 줍니다. 예를 들어 Claude가 파일을 설명한 뒤에는 Write a test for the login function을 제안할 수 있습니다.
입력창이 비어 있을 때 1, 2, 3을 누르면 해당 제안이 초안으로 입력창에 들어가고, 0을 누르면 목록이 닫힙니다. 스스로 전송하는 일은 없습니다. 초안을 수정하거나 Enter를 누르면 됩니다. 터미널이 넓으면 제안이 한 줄에 나란히 표시됩니다(next: 1 ... · 2 ... · 0 dismiss). 한 줄에 들어가지 않으면 제안마다 한 줄씩 쓰고, 띠에 쓸 수 있는 줄이 부족하면 한 줄로 두고 끝을 잘라 냅니다.
제안은 턴이 끝난 뒤 haiku 모델을 한 번 호출해서 만듭니다. Claude가 작업 중이거나 설문이 열려 있을 때, 응답이 20자 미만일 때, 백그라운드 에이전트가 아직 실행 중일 때는 띠가 숨겨집니다. 서브에이전트 턴은 무시합니다. 작성자의 where-am-i 모드는 공유 플래그를 읽어, 이 목록이 보이는 동안 자신의 "next" 부분을 뺍니다.
데모
녹화 영상에서는 작은 데모 프로젝트에서 모드를 불러온 채 Claude Code를 시작하고, Claude에게 src/login.js를 읽고 두 문장으로 설명해 달라고 요청합니다. 턴이 끝나면 입력창 위에 next: 띠가 나타나며, Add error handling for empty strings, Write a test for the login function 같은 번호가 붙은 제안 세 개와 0 dismiss 안내가 보입니다. 영상은 이 화면에서 잠시 멈춘 뒤, 빈 입력창에서 1을 누르면 첫 번째 제안이 전송되지 않은 초안으로 입력창에 나타납니다. 영상은 빠르게 재생되므로 실제 정지 시간은 보이는 것보다 짧습니다.
설치
설치 블록의 방법 중 아무거나 사용하십시오. 모두 작성자의 마켓플레이스에서 직접 설치합니다. 띠는 다음 턴이 끝난 뒤에 나타납니다.
$ install next-steps
Claude Code 2.1.287 이상 필요
작성자의 마켓플레이스에서 설치: hamzafer/claude-code-mods
1.Claude Code 안에서 한 줄로
/plugin install next-steps --marketplace hamzafer/claude-code-mods실행 중인 세션(v2.1.275 이상)에 붙여 넣으세요. Claude Code가 먼저 마켓플레이스 추가 여부를 묻습니다.
2.셸에서 설치
claude plugin marketplace add hamzafer/claude-code-mods claude plugin install next-steps@claude-code-mods그런 다음 이미 열려 있는 세션에서 /reload-plugins를 실행하세요.
3.설치하지 않고 사용해 보기
git clone https://github.com/hamzafer/claude-code-mods claude --plugin-dir ./claude-code-mods/mods/next-steps한 세션에서만 모드를 불러옵니다. 설정에는 아무것도 추가되지 않습니다.
작동 방식
모드는 현재 목록을 호스트가 보관하는 $.state 아톰에 저장하고, AbovePrompt 렌더 위치에서 다른 모드의 띠 아래에 그립니다. 키 처리 코드는 hooks/register.tsx에서 가져온 것입니다.
on('prompt.edit', async ($, e, next) => {
if (hasSurvey || !e.key || e.key.ctrl || e.key.meta || e.text !== '' || e.start !== 0 || e.end !== 0 || !/^[0-9]$/.test(e.inputText)) return next(e)
const s = await read($, steps)
if (!s) return next(e)
if (e.inputText === '0') {
await setSteps($, () => null)
return { text: '', cursor: 0 } // consumed: the box stays empty
}
const pick = s.items[Number(e.inputText) - 1]
if (!pick) return next(e)
return next({ ...e, inputText: pick }) // a draft: the person edits it or presses Enter
})turn.complete(메인 에이전트만)에서 suggest는 maxTokens: 200과 20초 제한 시간으로 $.model.complete를 호출합니다. 모델에는 60자 미만의 명령형 프롬프트 2~3개를 한 줄에 하나씩 달라고 요청하거나, 없으면 NONE이라고 답하게 합니다. 그다음 parseSteps가 코드 펜스, 글머리 기호, 번호, 따옴표, em 대시를 제거하고, 서두와 120자를 넘는 줄은 버리고(자르지 않고 버립니다), 중복을 없앤 뒤 최대 세 개만 남깁니다. 그동안 새 프롬프트나 새 턴이 시작되지 않았을 때만 결과를 기록하므로, 늦게 도착한 응답이 더 새로운 상태를 덮어쓰지 않습니다. prompt.submit과 turn.start는 목록을 지웁니다.
사용자 지정
/config에는 옵션이 없습니다. 동작을 바꾸려면 register.tsx 맨 위의 상수를 수정하십시오. MODEL(기본값 haiku), MAX_ITEMS(3), MAX_CHARS(60, 모델에 요청하는 길이), MAX_KEPT(120, 남기는 가장 긴 줄), MIN_ANSWER(20, 호출을 일으키는 가장 짧은 응답)입니다. 모델에 보내는 요청 문구는 suggest의 system과 prompt 문자열에 있습니다.
권한 및 안전
무엇이든 실행하기 전에 플러그인이 실행할 수 있는 모든 파일을 읽었습니다. .claude-plugin/plugin.json, hooks/hooks.json, hooks/register.tsx(유일한 모듈), 타입 선언, 테스트입니다. package.json, 설치 스크립트, 바이너리, 번들되거나 압축된 코드는 없으며 플러그인 폴더 밖에서 불러오는 것도 없습니다.
- 모델 호출. 메인 에이전트의 턴이 끝날 때마다
suggest는$.model.complete를 통해 최근 세션 메시지 최대 6개(각 800자까지)와 마지막 응답(2,000자까지)을 haiku 모델에 보냅니다. 이는 다른 모델 호출처럼 사용자의 Claude Code 계정을 사용하며, 모드는 다른 네트워크 연결을 열지 않습니다. 보내는 텍스트는 세션 내용이므로 사용자와 Claude가 나눈 이야기가 포함될 수 있습니다. - 프롬프트 텍스트. 모드가 모델에 주는 지시문은 읽을 수 있는 평범한 문자열입니다. 사용자의 프롬프트나 Claude의 컨텍스트에는 아무것도 주입하지 않습니다. 모델의 출력은 초안으로 입력창에 들어갈 뿐이며 전송은 사용자가 직접 해야 합니다. 제안은 대화 기록을 바탕으로 만들어지므로 Claude가 읽은 파일 속 텍스트가 제안에 영향을 줄 수는 있지만, 전송하기 전에 사용자가 보게 됩니다.
- 키와 프롬프트 훅.
prompt.edit은 빈 입력창에 입력한 숫자를 제안 텍스트로 바꾸거나0을 소비합니다.prompt.submit은 목록을 지우고 프롬프트를 그대로 넘기기만 합니다.claude plugin validate는prompt.submit이.catch가 없는 게이팅 훅이라고 알리지만, 프롬프트를 막거나 고쳐 쓰지는 않습니다. - 그 밖에는 없음. 명령을 실행하지 않고, 파일을 읽거나 쓰지 않으며, 설정, 셸 파일, 데몬을 건드리지 않고, 환경 변수를 읽지 않으며, 텔레메트리도 없습니다. 상태는 호스트가 메모리에 보관합니다. 라이선스는 MIT이며 저장소에 LICENSE 파일이 있습니다.
claude plugin validate는 오류나 경고를 보고하지 않았고, 작성자의 테스트 16개가 Claude Code 2.1.291에서 모두 통과했습니다.
- 모델 호출 (사용량 소모)
- Claude에 자체 요청을 보낼 수 있으며, 이는 요금제 사용량에 포함됩니다($.model.* / $.agent.spawn).
- 프롬프트 읽기
- 입력한 내용과 대화 기록을 볼 수 있습니다(prompt.* / session.append / session.messages).
- UI 변경
- Claude Code 화면에 밴드, 패널, 상태 텍스트, 토스트를 그립니다(ui.render / $.ui.*).
호환성 및 문제 해결
macOS의 Claude Code 2.1.291에서 확인했습니다(validate, 테스트, 데모 녹화). 제안이 나타나지 않는다면:
- 마지막 응답이 매우 짧거나(20자 미만) 모델이 덧붙일 만한 내용을 찾지 못했습니다.
- 백그라운드 에이전트가 아직 실행 중입니다. 메인 에이전트가 다시 작업할 때까지 호출을 기다립니다.
- Claude가 아직 작업 중이거나 입력창 위에 설문이 열려 있습니다. 띠는 턴이 끝난 뒤에 나타납니다.
- 입력창에 텍스트가 있는 상태에서 숫자를 눌렀거나 숫자를 붙여 넣었습니다. 숫자는 입력창이 비어 있을 때만 동작합니다.
- 프롬프트를 보냈거나 새 턴을 시작했습니다. 턴이 끝날 때까지 목록이 지워진 상태로 유지됩니다.
자주 묻는 질문
- Next Steps가 프롬프트를 대신 보내나요?
- 아닙니다. 숫자 키는 제안을 초안으로 입력창에 넣을 뿐입니다. 수정하거나 Enter를 누르면 됩니다. 사용자가 직접 하기 전에는 아무것도 전송되지 않습니다.
- 토큰이 드나요?
- 조금 듭니다. 각 턴이 끝나면 Claude Code 자체 모델 API를 통해 haiku 모델을 한 번 호출하며, 입력은 최근 메시지 최대 6개와 마지막 응답입니다. 응답이 20자 미만이거나 백그라운드 에이전트가 아직 실행 중이면 호출을 건너뜁니다.
- 목록이 보이는 동안 숫자로 시작하는 프롬프트는 어떻게 입력하나요?
- 먼저 0을 누르십시오. 목록이 닫히고 입력창은 빈 상태로 남으므로 다음 숫자는 텍스트로 입력됩니다. 다른 텍스트 뒤에 입력한 숫자와 붙여 넣은 숫자는 항상 텍스트로 들어갑니다.
- 목록은 언제 사라지나요?
- 프롬프트(슬래시 명령 포함)를 보낼 때, 새 턴이 시작될 때, 0을 누를 때, 그리고 Claude가 작업 중이거나 입력창 위에 설문이 열려 있는 동안입니다.
- 모델이나 제안 개수를 바꿀 수 있나요?
- 설정 항목은 없지만 hooks/register.tsx 맨 위의 상수로 조절할 수 있습니다: MODEL, MAX_ITEMS, MAX_CHARS, MAX_KEPT, MIN_ANSWER. 모델에 보내는 프롬프트는 같은 파일의 suggest 함수에 있습니다.
# 관련 모드
추천Context Bar
Claude Code 컨텍스트 창을 프롬프트 위 누적 막대 하나로 보여 줍니다. 카테고리마다 색이 다르고 토큰 수도 표시됩니다.
- 프롬프트 위
- UI 변경
- 명령어/도구 추가
- 데이터 저장
v2.1.291에서 테스트됨
추천md-preview
Claude가 편집하는 Markdown 파일을 채팅 옆 창에서 GitHub처럼 렌더링해 보여 줍니다. 이전과 이후 보기도 지원합니다.
- 패널
- 토스트
- 파일 읽기
- 파일 쓰기
- 명령어 실행
- 도구 호출 가로채기
- UI 변경
- 명령어/도구 추가
v2.1.291에서 테스트됨
더 보기: 타이머, 할 일, 스탠드업.