← VibeShell Hook
설정 파일 하나가 전부입니다.
~/.vibeshell/push-config.json 에 프로젝트와 토픽이 있고, hook.sh 는 그것만 읽습니다. 아래는 그 키 아홉 개와 자주 하는 일입니다.
push-config.json 의 키
| 키 | 뜻 |
|---|---|
| server_url | 푸시 서버 주소. 기본 https://push.vibeshell.io |
| enabled | 전체 켜고 끄기 |
| topic_ids | 전역 토픽 ID 배열. 프로젝트에 토픽이 없으면 여기로 보냅니다 |
| topic_tokens | 토픽별 인증 토큰. install.sh 가 서버에서 받아 넣습니다. 손으로 쓰지 않습니다 |
| projects | 프로젝트 이름 → 설정 |
| projects.*.paths | 이 프로젝트로 볼 디렉터리 경로 목록. 현재 디렉터리가 이 아래일 때만 알림 |
| projects.*.enabled | 프로젝트만 켜고 끄기 |
| projects.*.cli_tool | claude-code, codex-cli, gemini-cli, aider, opencode. 비우면 claude-code |
| projects.*.topic_ids | 프로젝트 토픽. 있으면 전역 대신 이걸로 |
프로젝트마다 다른 도구, 다른 토픽
my-api 는 Codex CLI 로 별도 토픽에, weekend-project 는 꺼 둔 예입니다. topic_tokens 는 install.sh 가 채웁니다.
~/.vibeshell/push-config.json
{
"server_url": "https://push.vibeshell.io",
"enabled": true,
"topic_ids": ["vbs_9b585155aaf8"],
"topic_tokens": {
"vbs_9b585155aaf8": "auto-generated...",
"vbs_separate_topic": "auto-generated..."
},
"projects": {
"vibe-shell": {
"paths": ["/Users/dev/projects/vibe-shell"],
"enabled": true,
"cli_tool": "claude-code"
},
"my-api": {
"paths": ["/Users/dev/projects/my-api"],
"enabled": true,
"cli_tool": "codex-cli",
"topic_ids": ["vbs_separate_topic"]
},
"data-pipeline": {
"paths": ["/Users/dev/projects/data-pipeline"],
"enabled": true,
"cli_tool": "aider"
},
"weekend-project": {
"paths": ["/Users/dev/weekend/app"],
"enabled": false,
"cli_tool": "gemini-cli"
}
}
}관리 메뉴
install.sh 를 인자 없이 실행하면 메뉴가 뜹니다. 자주 쓰면 ~/.vibeshell/manage.sh 로 받아 두는 편이 편합니다.
curl -fsSL -o ~/.vibeshell/manage.sh https://www.wevesolutions.co.kr/downloads/hook/install.sh
chmod +x ~/.vibeshell/manage.sh
~/.vibeshell/manage.sh| 메뉴 | 하는 일 | |
|---|---|---|
| 1 | 프로젝트 추가 | 이름, 경로, 도구, 토픽을 묻고 토픽 토큰을 서버에서 받습니다 |
| 2 | 프로젝트 삭제 | |
| 3 | 프로젝트 활성화/비활성화 | projects.*.enabled 를 뒤집습니다 |
| 4 | 토픽 ID 관리 | 추가, 전체 교체, 삭제. 토픽은 vbs_ 로 시작해야 합니다 |
| 5 | 서버 URL 변경 | |
| 6 | 인증 토큰 갱신 | 등록된 모든 토픽의 토큰을 서버에서 다시 받습니다. 401 이 나면 여기 |
| 7 | 훅 스크립트 업데이트 | hook.sh 를 다시 받습니다 |
손으로 설치하려면
파일 둘을 받고, Stop hook 을 ~/.claude/settings.json 에 직접 넣고, 토픽 토큰을 서버에서 받습니다. 이미 settings.json 이 있으면 hooks.Stop 배열에 항목을 추가합니다.
파일
mkdir -p ~/.vibeshell
curl -fsSL -o ~/.vibeshell/hook.sh https://www.wevesolutions.co.kr/downloads/hook/hook.sh
chmod +x ~/.vibeshell/hook.sh
curl -fsSL -o ~/.vibeshell/push-config.json https://www.wevesolutions.co.kr/downloads/hook/config.example.json토픽 토큰 발급 (install.sh 가 대신 해 주는 일)
curl -s -X POST https://push.vibeshell.io/api/v1/token \
-H "Content-Type: application/json" \
-d '{"topic":"vbs_your_topic_id"}'
# 응답의 token 을 push-config.json 의 topic_tokens["vbs_your_topic_id"] 에 넣습니다업데이트
hook.sh 만 다시 받으면 됩니다. 관리 메뉴 7 과 같은 일입니다. 설정 파일은 그대로 둡니다.
curl -fsSL -o ~/.vibeshell/hook.sh https://www.wevesolutions.co.kr/downloads/hook/hook.sh
chmod +x ~/.vibeshell/hook.sh알림이 안 올 때 보는 순서
| 명령 | 봐야 할 것 | |
|---|---|---|
| 설정 | cat ~/.vibeshell/push-config.json | enabled 가 true 인지, paths 가 맞는지 |
| 경로 | pwd | 이 경로가 그 프로젝트의 paths 중 하나 아래여야 합니다 |
| 등록 | cat ~/.claude/settings.json | jq '.hooks.Stop' | hook.sh 경로가 보여야 합니다 |
| 권한 | ls -la ~/.vibeshell/hook.sh | 실행 권한(x)이 있어야 합니다 |
| 도구 | jq '.projects | to_entries[] | {name: .key, cli_tool: .value.cli_tool}' ~/.vibeshell/push-config.json | 알림 내용이 프롬프트가 아니면 cli_tool 이 틀린 겁니다 |
| OpenCode | command -v sqlite3 | OpenCode 기록은 sqlite 라 sqlite3 가 있어야 읽습니다 |
| 서버 | curl -X POST https://push.vibeshell.io/api/v1/push -H "Content-Type: application/json" -H "Authorization: Bearer <토큰>" -d '{"topic":"vbs_...","project":"test","summary":"hello"}' | 여기서 401 이면 토큰, 429 면 하루 5회 초과 |
한 프로젝트만 끄기
~/.vibeshell/manage.sh
# 메뉴 3 → 프로젝트 선택전부 끄기
jq '.enabled = false' ~/.vibeshell/push-config.json > /tmp/c && mv /tmp/c ~/.vibeshell/push-config.json