Sno Station
Sno Station은 AI 에이전트를 하나의 팀으로 묶는 오픈소스 워크스테이션으로, 로컬 머신에서 에이전트 협업을 가능하게 함
Claude Code 플러그인 두 개로, 세션이 컨텍스트를 잃기 전에 다른 세션에 넘기거나 다른 에이전트로 전달
Two Claude Code plugins: hand a session off before it runs out of context, and drive one feature from idea to reviewed pull request.
플러그인Shell · TypeScriptGitHub @h-zahran직접 설치운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
설치형 프로젝트는 배포 도메인 없이도 확인할 수 있습니다. 개인 저장소는 GitHub 로그인으로, 조직 저장소는 위의 저장소 확인 파일로 직접 확인해 주세요.
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
A Claude Code plugin marketplace. Two plugins live here. Each installs on its
own, and neither needs the other.
Both came out of the same exercise: 1,410 prompts across 67 sessions of real
work were sorted by what the human was actually asking for. The two biggest
piles were "continue" and "now commit, push, open a PR, check it ran". Each
pile became a plugin.README 전문 보기 ↗A Claude Code plugin marketplace. Four plugins live here. Each installs on
its own. handoff, pipeline and mission-control need nothing else; team
runs pipeline, so it needs pipeline too.
The first two came out of the same exercise: 1,410 prompts across 67 sessions of real work were sorted by what the human was actually asking for. The two biggest piles were "continue" and "now commit, push, open a PR, check it ran". Each pile became a plugin.
| Plugin | Install as | Use it when |
|---|---|---|
| handoff | handoff@delivery-kit | Long sessions run out of room, and you keep typing continue. |
| pipeline | pipeline@delivery-kit | You want one feature taken from an idea to a reviewed pull request, stopping to ask you at every step that leaves your machine. |
| mission-control | mission-control@delivery-kit | You want to watch the main loop and every subagent at work: tools, context, cost, rate limits and files touched. |
| team | team@delivery-kit | A team works through a shared plan with pipeline, and you want the setup written once and each member's progress kept. |
Install any of them. handoff, pipeline and team share one settings file and otherwise stay out of each other's way. mission-control needs no settings.
1. Check the tools. On Windows, run these in Git Bash, not PowerShell (why).
jq --version # both plugins
git --version # pipeline needs it; handoff's resume check needs it
If jq is not found, the install commands are in
handoff/docs/install.md. For pipeline, the target
repository also needs spec-kit. Run these
yourself, the second one from the target repository's root (the first needs
uv):
uv tool install specify-cli
specify init --here --integration claude
To pin a version in a script, see pipeline's requirements.
2. Add the marketplace and install what you want.
/plugin marketplace add h-zahran/delivery-kit
/plugin install handoff@delivery-kit
/plugin install pipeline@delivery-kit
/plugin install mission-control@delivery-kit
/plugin install team@delivery-kit
If an install command cannot see its plugin, run /reload-plugins after the
marketplace add and try again. Upgrading from the 1.x plugin called
delivery-kit? Uninstall it first:
handoff/README.md
says why.
3. With handoff: tell the guard your real context window. Do this first.
/handoff:setup
Type it as shown, slash included: Claude Code lists each plugin skill as
/<plugin>:<skill>. Asking in words, such as set up handoff, works too,
because Claude can load a skill by itself when your request matches it.
The guard assumes a 200,000-token window. Set too small, it fires early, and
you see it at once. Set too large, it never fires at all, and you find out
when a session dies mid-task. handoff:setup measures your session and writes
the answer to ~/.delivery-kit.json, once per machine. Setting
contextGuard.thresholdTokens as well protects you from a wrong window: it
fires on the transcript alone.
4. With pipeline: give it a seed.
/pipeline add a CSV export to the report page
A seed can also be a heading from your plan file (Phase 9: Claim Pack) or a
GitHub issue (#123). The pipeline page covers the
twenty phases, the five gates, and the flags.
handoff watches how full the context window is after
every tool call. Past a threshold it interrupts, and handoff:handoff writes
one document: branch, commit, what is done, what is next, what is uncommitted,
what will bite you. It prints the exact prompt for a fresh session, which then
resumes from one file read and first checks that the branch, the commit and
the changed files still match. It never writes to git: no commit, no push, no
stash.
pipeline drives one feature through twenty phases,
from specification to release, and stops at five gates: clarify, who
implements and how you review, commit, push and open the PR, and
release. Each gate shows you the exact content before anything happens.
Some things never happen at all: no force-push, no history rewrites, no
git add -A, no skipped hooks, no branch deletion, and it never merges the
pull request it opens.
mission-control adds a side pane with robots:
one for the main loop and one for every subagent, each with its tools, context,
cost, rate limits and the files it touched. It also adds a band above the
prompt, a REQUESTS card, toasts and sounds. /mission shows or hides the pane.
/mission-band shows the band again. Sound: Windows uses PowerShell, macOS uses
the built-in player, and Linux needs paplay, pw-play or aplay. With no
player, it stays quiet.
Nothing is required. Every setting has a default, and anything the tools work out for themselves is printed, so a wrong guess is visible rather than silent.
Both plugins read one file, .delivery-kit.json: in your repository root for
project facts, or at ~/.delivery-kit.json for facts about your machine. The
repository file wins, and for the guard's keys an environment variable beats
both: DELIVERY_KIT_WINDOW_TOKENS, DELIVERY_KIT_THRESHOLD_PCT,
DELIVERY_KIT_THRESHOLD_TOKENS, DELIVERY_KIT_MAX_BYTES and
DELIVERY_KIT_HANDOFF_DIR. Which key each one overrides is in
the guard's configuration page. The pipeline's keys have no environment overrides at all, by design: a
value that answers a gate's question in advance must not arrive from a shell you
did not read.
{
"contextGuard": { "windowTokens": 1000000, "thresholdPct": 45 },
"handoff": { "docsDir": "docs/handoffs" },
"pipeline": { "planFile": "main-plan.md", "testCommand": "npm test" }
}
A repository you clone can carry this file, and some pipeline keys answer a
question for you. When implementer is set, pre-flight prints an Implementer
line naming the file or flag it came from. baseBranchOverride and
commitTrailers can arrive the same way: pre-flight names the file each came
from, on its Base branch and Trailers lines.
Every key: handoff · pipeline.
handoff's hooks run in bash, and both plugins' skills run their scripts with
bash through Claude's Bash tool. On Windows that bash is Git Bash, so Git
for Windows is required, and Git Bash is where a tool must be visible.
| What you see | Why | What to do |
|---|---|---|
jq --version works in PowerShell, but the guard says jq is missing | PowerShell and Git Bash can see different programs | Check from Git Bash. Install with winget install jqlang.jq, then open a new Git Bash and the session again. |
gh works in PowerShell, but Git Bash says gh: command not found | Some package managers, Scoop among them, install gh as gh.cmd only | Pre-flight looks for gh, gh.exe and gh.cmd, and the run's own calls use the one it finds. But the review phase (M) runs the separate code-review plugin, which calls plain gh. Install a gh that Git Bash finds by that name, for example winget install GitHub.cli, which gives gh.exe. |
A value your own script reads from jq ends in a stray carriage return, so a comparison or a path fails | The Windows build of jq ends each line with CRLF. Linux and macOS get LF. | In your own scripts, use jq -b: it writes LF only. The plugins' scripts already cope. They never read jq line by line without -b, and they strip a trailing CR where one could stay. |
You cannot find ~/.delivery-kit.json | ~ is Git Bash's home folder | It is in your Windows user folder: %USERPROFILE%\.delivery-kit.json, or under %HOME% if you set that variable. |
Each plugin's own troubleshooting table: handoff · pipeline.
handoff/ the handoff plugin — hooks, skills, scripts, docs, tests
pipeline/ the pipeline plugin — command, skills, scripts, docs, tests
mission-control/ the mission-control mod — hook modules, sounds, types, its test
team/ the team plugin — skills, scripts, docs, tests
tests/ repo-wide tests: layout, and what may appear in shipped files
specs/ the specifications real pipeline runs produced, kept as examples
main-plan.md the plan file this repository reads its own seeds from
This repository builds itself with its own pipeline. The directories under
specs/ are the output of real runs. Start with
specs/018-progress-commits-pieces:
one small feature with everything a finished run leaves behind — the spec,
with the two clarifying questions a human answered, then the research, plan,
data model, contract, quickstart and task list beside it.
The annotated run says which
phase wrote each file and what to look at. Two fictional samples show what you
get back: a handoff document
and a pull request's review guide.
Tests are bats and need jq. Name
every suite path: passing only tests silently skips every plugin's suite and
still reports green.
git clone --depth 1 --branch v1.11.0 https://github.com/bats-core/bats-core.git "$HOME/bats"
bash "$HOME/bats/bin/bats" -r --print-output-on-failure tests handoff/tests pipeline/tests team/tests
Expect green on Linux, macOS and Windows under Git Bash. CI runs all three. More in CONTRIBUTING.md. Please also read the Code of Conduct. Each plugin keeps its own changelog — see CHANGELOG.md.
MIT. See LICENSE.