@ryan_nookpi/pi-extension-todo-write-overlay
Top-right overlay todo_write tool extension for pi.
Package details
Install @ryan_nookpi/pi-extension-todo-write-overlay from npm and Pi will load the resources declared by the package manifest.
$ pi install npm:@ryan_nookpi/pi-extension-todo-write-overlay- Package
@ryan_nookpi/pi-extension-todo-write-overlay- Version
0.3.0- Published
- Jul 18, 2026
- Downloads
- 523/mo · 316/wk
- Author
- ryan_nookpi
- License
- MIT
- Types
- extension
- Size
- 554.2 KB
- Dependencies
- 0 dependencies · 4 peers
Pi manifest JSON
{
"extensions": [
"./index.ts"
]
}Security note
Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.
README
@ryan_nookpi/pi-extension-todo-write-overlay
pi가 현재 세션에서 구조화된 작업 목록을 만들고 갱신할 수 있게 해주는 todo_write 익스텐션입니다. 할 일 목록은 입력창 위젯이 아니라 우측 상단 passive overlay로 표시됩니다.


설치
pi install npm:@ryan_nookpi/pi-extension-todo-write-overlay
@ryan_nookpi/pi-extension-todo-write와 같은todo_write도구 이름을 사용합니다. 두 익스텐션을 동시에 설치하지 않는 것을 권장합니다.
제공 기능
todo_write도구 등록- 세션 단위 todo 상태 저장 및 복원
- 우측 상단 오버레이 렌더링
- 입력 포커스를 뺏지 않는
nonCapturingoverlay 사용 /todo-overlay show//todo-overlay hide명령으로 오버레이 표시 토글- 진행 중 작업 스피너 표시
- 완료/진행/대기 상태별 색상과 아이콘 표시
notes는 상태에는 보존하지만 오버레이에는 표시하지 않음- compaction 이후 남은 todo reminder 주입
표시 방식
오버레이는 pi TUI의 ctx.ui.custom(..., { overlay: true })를 사용합니다.
- 위치:
top-right - 너비: 42 columns
- 여백: 위 1줄, 오른쪽 2 columns
- 표시 조건: 터미널 너비 70 columns 이상
- 입력 처리:
nonCapturing: true
기존 todo-write의 완료 +2 같은 완료 항목 접기 로직은 사용하지 않습니다. 완료된 항목도 모두 그대로 표시합니다.
명령어
/todo-overlay show
/todo-overlay hide
- 기본값은
show입니다. hide는 todo 상태와 reminder 주입은 유지하고, 우측 상단 오버레이 UI만 숨깁니다.- 인자 없이
/todo-overlay를 실행하면 현재 표시 상태를 알려줍니다.
사용 예
처음 목록을 만들거나 큰 폭으로 재편할 때는 op 없이(기본 replace) 전체를 보냅니다.
{
"todos": [
{ "content": "설계 정리", "status": "completed" },
{ "content": "구현", "status": "in_progress", "activeForm": "구현 중" },
{ "content": "검증", "status": "pending" }
]
}
이미 목록이 있고 일부만 바꿀 때는 op: "patch"로 변경분만 보냅니다. 작업 수가 많을수록 args 크기가 변경분에만 비례해 저렴합니다.
{
"op": "patch",
"set": [
{ "id": "task-1", "status": "completed" },
{ "id": "task-2", "status": "in_progress", "activeForm": "구현 중" }
],
"add": [{ "content": "문서화", "status": "pending" }],
"remove": ["task-5"]
}
set/add/remove는 함께 쓸 수 있으며 remove → set → add 순서로 적용됩니다.id는 직전todo_write결과에 표시된task-N값을 참조합니다. 존재하지 않는 id는 결과 텍스트에 경고로 표시되고 무시됩니다.add로 추가되는 항목은 기존 id와 겹치지 않는 새task-Nid를 받습니다.
상태 필드
content: 작업 설명status:pending|in_progress|completedactiveForm: 진행 중일 때 오버레이에 보여줄 현재진행형 문구notes: 보조 메모
동작 메모
in_progress가 여러 개 들어오면 첫 번째만 유지하고 나머지는pending으로 정규화합니다.in_progress가 없고pending이 있으면 첫 번째pending을 자동으로in_progress로 올립니다.- 모든 항목이 완료되면 잠시 표시한 뒤 자동으로 숨깁니다.