ClaudeMods
☰
KO
● 0 명 접속 중 · 조회 0 회
후원프로젝트 제출
GitHub 저장소 · 작성자 fernandomoraes

loose-ends

대화의 미해결 항목을 프롬프트 위에 실시간 체크리스트로 보여 주는 Claude Code 플러그인입니다. 답하지 않은 질문, 지나가듯 언급한 요점, 주의 사항과 미룬 작업을 작은 모델이 매 턴 갱신합니다.

번역 완료

이 mod 소개

loose-ends는 Claude Code 플러그인(Claude Mod)으로, 프롬프트 입력 영역 위의 상태 줄에 대화에서 해결되지 않은 항목을 표시합니다. 답하지 않은 질문, 지나가듯 나온 요점, 아무도 응답하지 않은 경고, 미루거나 건너뛴 일이 대상입니다. turn.complete hook으로 새 메시지를 읽고 Haiku를 호출해 무엇을 놓쳤고 무엇이 해결되었는지 판단하며, 턴마다 최대 3개 항목을 추가합니다. 가장 최근 대화 라운드는 한 턴 뒤에 판단합니다. 목록은 ui.render로 AbovePrompt에 그리며 ctrl+x ctrl+a로 접을 수 있고 항목은 클릭하거나 Enter로 체크할 수 있습니다. 각 세션의 목록은 $.store에 저장되고 --resume을 지원하며 최근 30개 세션을 유지합니다. 미완료 항목이 있으면 /exit가 먼저 묻습니다. 매 턴 Haiku를 한 번 호출하고 대화형 세션에서만 실행하며 claude -p에서는 시작하지 않습니다. /loose-ends 명령 모음으로 목록을 관리합니다. 개발에는 Claude Code 2.1.278 이상과 CLAUDE_CODE_ENABLE_FUNCTION_HOOKS=1 설정이 필요합니다.

설치

먼저 작성자의 README에서 marketplace와 플러그인 이름을 확인하세요. 저장소 구조에 따라 명령어가 달라질 수 있습니다.

claude plugin marketplace add fernandomoraes/loose-ends
claude plugin install loose-ends
원문 / README

loose-ends

A live checklist above the Claude Code prompt of the conversation's loose ends: what was raised and then left behind when it moved on. An unanswered question, a point made in passing, a caveat nobody replied to, something deferred to "later" or skipped. Not the work in progress: that one you won't forget.

loose-ends demo

<sub>The demo is a recreation of the band, with the layout, colors and flow the plugin draws.</sub>

How it works

It is a Claude Mod: a plugin whose hooks are TypeScript functions running inside Claude Code.

  • After every main-loop turn (turn.complete), it reads the messages the checklist has not seen yet ($.session.messages()) and asks Haiku ($.model.complete) which of them were left behind and which open items the conversation settled. The latest exchange is held back one turn: something raised there is not a loose end yet, so it is judged once the next exchange shows whether it was picked up. At most 3 items are added per turn. The call runs outside the main context: the conversation's model never sees it.
  • The list is drawn in the band above the prompt (ui.render on AbovePrompt). Collapse it with ctrl+x ctrl+a.
  • Each item's ○ is a button that checks it off (and ✓ reopens it): click it in the fullscreen layout, or press ctrl+x tab to focus the band, walk with Tab or the arrows and press Enter.
  • Each session keeps its own list in $.store, so --resume brings it back. The last 30 sessions are kept.
  • /exit with open items asks first, from a command.run hook that runs the exit only when the dialog says so. It covers /exit alone: ctrl+c and ctrl+d raise no event a plugin can see, and session.end only observes. Turn it off with /loose-ends exit off.
  • Items you change by hand are pinned: the model never closes an item you reopened, and never adds back one you dropped.

Cost: one Haiku call per turn with the new messages (capped at about 40k characters) and the current list. It only runs in interactive sessions, never under claude -p.

/loose-ends

| Command | What it does | |---|---| | /loose-ends | The whole list | | /loose-ends add <text> | Add an item by hand | | /loose-ends done 2 5 | Mark items done | | /loose-ends undo 2 | Reopen an item | | /loose-ends rm 3 | Drop an item | | /loose-ends clear | Empty the list | | /loose-ends scan | Read the whole conversation again | | /loose-ends on / off | Show or hide the band (off also pauses the model calls) | | /loose-ends rows 12 | Rows the band may take | | /loose-ends exit on / off | Ask before /exit while items are open |

Develop

Needs Claude Code 2.1.278 or later (the build its types were generated from) with CLAUDE_CODE_ENABLE_FUNCTION_HOOKS=1 in the settings env.

claude --plugin-dir .      # loads from disk, hot-reloads on save
bun test
claude plugin validate .claude-plugin/plugin.json

For type checking, run /plugin-types in a session, then bunx -p typescript tsc -p ..

To install it for every session:

claude plugin marketplace add fernandomoraes/loose-ends
claude plugin install loose-ends@loose-ends

비슷한 프로젝트