@sma1lboy/kobe 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +152 -17
- package/dist/index.js +9021 -41335
- package/package.json +3 -6
- package/dist/highlights-eq9cgrbb.scm +0 -604
- package/dist/highlights-ghv9g403.scm +0 -205
- package/dist/highlights-hk7bwhj4.scm +0 -284
- package/dist/highlights-r812a2qc.scm +0 -150
- package/dist/highlights-x6tmsnaa.scm +0 -115
- package/dist/injections-73j83es3.scm +0 -27
- package/dist/tree-sitter-javascript-nd0q4pe9.wasm +0 -0
- package/dist/tree-sitter-markdown-411r6y9b.wasm +0 -0
- package/dist/tree-sitter-markdown_inline-j5349f42.wasm +0 -0
- package/dist/tree-sitter-typescript-zxjzwt75.wasm +0 -0
- package/dist/tree-sitter-zig-e78zbjpm.wasm +0 -0
package/README.md
CHANGED
|
@@ -3,39 +3,174 @@
|
|
|
3
3
|
</p>
|
|
4
4
|
|
|
5
5
|
<p align="center">
|
|
6
|
-
<strong>
|
|
7
|
-
|
|
6
|
+
<strong>One terminal, many Claude Code sessions.</strong><br/>
|
|
7
|
+
kobe is a TUI that runs N Claude Code agents in parallel — each in its own git worktree — so you can drive a small team of tasks from one screen.
|
|
8
8
|
</p>
|
|
9
9
|
|
|
10
10
|
<p align="center">
|
|
11
|
-
<em>Codename — will be renamed before any
|
|
11
|
+
<em>Codename — will be renamed before any non-beta release.</em>
|
|
12
12
|
</p>
|
|
13
13
|
|
|
14
14
|
---
|
|
15
15
|
|
|
16
|
-
## What
|
|
16
|
+
## What kobe is
|
|
17
17
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
18
|
+
A terminal UI on top of the `claude` CLI. It gives you a Conductor-shaped layout
|
|
19
|
+
(sidebar of tasks, workspace pane with chat + file tabs, file tree, embedded
|
|
20
|
+
terminal, status bar) and runs each task in its own isolated git worktree, so
|
|
21
|
+
multiple Claude Code sessions can edit the same repo at the same time without
|
|
22
|
+
stepping on each other.
|
|
23
23
|
|
|
24
|
-
|
|
24
|
+
If you've used a single `claude` session and wished you could fan out to five,
|
|
25
|
+
that's the gap kobe fills.
|
|
25
26
|
|
|
26
|
-
|
|
27
|
-
Tests via vitest + PTY-driven behavior tests. Lint via biome. Engine spawns the `claude` CLI as a
|
|
28
|
-
subprocess and parses `--output-format stream-json`.
|
|
27
|
+
## Install
|
|
29
28
|
|
|
30
|
-
|
|
29
|
+
[](https://www.npmjs.com/package/@sma1lboy/kobe)
|
|
30
|
+
|
|
31
|
+
You need three things on `PATH`:
|
|
32
|
+
|
|
33
|
+
- [**Bun**](https://bun.sh) ≥ 1.0 — kobe's renderer is opentui, which uses Bun-FFI.
|
|
34
|
+
- [**`claude`** CLI](https://docs.anthropic.com/en/docs/claude-code) — the engine kobe drives. Run `claude --version` to confirm it's installed and signed in.
|
|
35
|
+
- **`tmux`** — the embedded terminal pane uses one tmux session per task. On macOS: `brew install tmux`.
|
|
36
|
+
|
|
37
|
+
Then:
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
bun install -g @sma1lboy/kobe
|
|
41
|
+
kobe
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Or run without installing:
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
bunx @sma1lboy/kobe
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
The first launch drops you into an empty sidebar — press `ctrl+n` to create
|
|
51
|
+
your first task. kobe will ask for a repo path and a base branch, then spin
|
|
52
|
+
up a worktree at `<repo>/.claude/worktrees/<task-id>/` and a chat pane
|
|
53
|
+
talking to a fresh `claude` session inside it.
|
|
54
|
+
|
|
55
|
+
## A glimpse
|
|
56
|
+
|
|
57
|
+
<p align="center">
|
|
58
|
+
<img src="docs/assets/brand/pane-grid.gif" alt="kobe pane layout" width="720" />
|
|
59
|
+
</p>
|
|
60
|
+
|
|
61
|
+
## What you can do
|
|
62
|
+
|
|
63
|
+
Once you're in, the keys you'll use most:
|
|
64
|
+
|
|
65
|
+
| Key | What it does |
|
|
66
|
+
| ------------------ | -------------------------------------------------------------- |
|
|
67
|
+
| `ctrl+n` | New task (any pane, any time) |
|
|
68
|
+
| `ctrl+1` / `2` / `3` / `4` | Jump straight to a pane (sidebar, workspace, files, terminal) |
|
|
69
|
+
| `tab` | Cycle focus to the next pane |
|
|
70
|
+
| `ctrl+q` | Detach back to the sidebar (your task keeps streaming) |
|
|
71
|
+
| `?` | Show the full keybinding help dialog |
|
|
72
|
+
| `,` or `ctrl+,` | Open Settings (theme, transparent background, dev reset) |
|
|
73
|
+
| `q` | Quit (with confirm) |
|
|
74
|
+
|
|
75
|
+
Inside the sidebar, with a task highlighted: `j/k` to move, `enter` to open,
|
|
76
|
+
`r` to rename, `a` to archive, `d` to delete, `[` / `]` to switch between the
|
|
77
|
+
working session and the archives view.
|
|
78
|
+
|
|
79
|
+
Inside the chat composer:
|
|
80
|
+
|
|
81
|
+
- `enter` to send, `shift+enter` for a newline.
|
|
82
|
+
- `shift+tab` cycles the per-task tool-permission mode (`default → acceptEdits → plan`), forwarded to `claude` as `--permission-mode`.
|
|
83
|
+
- Click the model label in the footer to pick the model for this task (opus / sonnet / haiku).
|
|
84
|
+
- Type `/` to open the slash-command dropdown. Bundled `claude-code` commands and your own `.claude/{commands,skills}/*.md` are merged in.
|
|
85
|
+
- A `Create PR` chip on the chat header injects a PR-instructions prompt into the active task and routes the resulting PR through the orchestrator.
|
|
86
|
+
|
|
87
|
+
A given task can host **multiple chat tabs** on the same worktree — useful when
|
|
88
|
+
you want a parallel sub-conversation without losing the main thread.
|
|
89
|
+
|
|
90
|
+
For the full feature manifest, see [`CHANGELOG.md`](./CHANGELOG.md).
|
|
91
|
+
|
|
92
|
+
## Custom themes
|
|
93
|
+
|
|
94
|
+
kobe ships a handful of bundled themes (`claude` is the default), and any JSON
|
|
95
|
+
file you drop into `~/.kobe/themes/` is auto-loaded at boot and shows up in
|
|
96
|
+
Settings → Theme alongside the built-ins. Themes are publishable as raw JSON
|
|
97
|
+
on GitHub and installed with one command:
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
kobe theme add https://raw.githubusercontent.com/<you>/<repo>/main/<your-theme>.json
|
|
101
|
+
kobe theme list
|
|
102
|
+
kobe theme remove <name>
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
A JSON Schema at [`packages/kobe/src/tui/context/theme/theme.schema.json`](./src/tui/context/theme/theme.schema.json)
|
|
106
|
+
gives editor autocomplete — reference it via `"$schema"` in your theme file.
|
|
107
|
+
|
|
108
|
+
Full guide (shape, examples, GitHub publishing flow):
|
|
109
|
+
[`docs/themes.md`](../../docs/themes.md).
|
|
110
|
+
|
|
111
|
+
## Where things live
|
|
112
|
+
|
|
113
|
+
- Tasks: `~/.kobe/tasks.json`
|
|
114
|
+
- User themes: `~/.kobe/themes/*.json`
|
|
115
|
+
- Per-task worktrees: `<repo>/.claude/worktrees/<task-id>/`
|
|
116
|
+
- UI state (theme, sidebar widths, last-active task): kobe's KV store, also under `~/.kobe/`
|
|
117
|
+
|
|
118
|
+
## Troubleshooting
|
|
119
|
+
|
|
120
|
+
**`command not found: claude`** — kobe shells out to the `claude` CLI; install
|
|
121
|
+
it from [the Claude Code docs](https://docs.anthropic.com/en/docs/claude-code)
|
|
122
|
+
and confirm `claude --version` works in the same shell you launched kobe from.
|
|
123
|
+
|
|
124
|
+
**`bun: command not found`** — install [Bun](https://bun.sh) (`curl -fsSL https://bun.sh/install | bash`).
|
|
125
|
+
kobe's renderer requires Bun ≥ 1.0; it does not run under Node.
|
|
126
|
+
|
|
127
|
+
**The terminal pane is blank / errors about tmux** — install `tmux` (`brew install tmux` on macOS).
|
|
128
|
+
The embedded terminal is one tmux session per task; without `tmux` on `PATH`,
|
|
129
|
+
the pane stays empty but the rest of kobe still works.
|
|
130
|
+
|
|
131
|
+
**`posix_spawnp failed` when running `bun run test:behavior`** — on macOS arm64,
|
|
132
|
+
Bun's installer occasionally ships `node-pty`'s prebuilt `spawn-helper` without
|
|
133
|
+
an exec bit. The behavior-test driver fixes it lazily on first spawn (see
|
|
134
|
+
`test/behavior/driver.ts`), so a re-run usually clears it. If not, run
|
|
135
|
+
`chmod +x node_modules/node-pty/build/Release/spawn-helper`.
|
|
136
|
+
|
|
137
|
+
**Worktree won't create** — kobe wants a clean git repo. The new-task dialog
|
|
138
|
+
validates the repo path before creating; if it's complaining, check that
|
|
139
|
+
`git status` runs cleanly inside the path you typed.
|
|
140
|
+
|
|
141
|
+
## Coming later
|
|
142
|
+
|
|
143
|
+
- Homebrew tap (mirroring [`sma1lboy/homebrew-codefox`](https://github.com/sma1lboy/homebrew-codefox)) so you can `brew install kobe` without touching Bun directly.
|
|
144
|
+
- Conductor-as-backend mode (Phase 2 in [`docs/PLAN.md`](./docs/PLAN.md)).
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
|
|
148
|
+
## For contributors
|
|
149
|
+
|
|
150
|
+
If you want to hack on kobe itself rather than just use it:
|
|
31
151
|
|
|
32
152
|
```bash
|
|
33
153
|
bun install
|
|
34
|
-
bun run dev # boots the 5-pane TUI
|
|
154
|
+
bun run dev # boots the 5-pane TUI under KOBE_DEV=1 (no update chip, etc.)
|
|
35
155
|
bun run test # unit + type tests
|
|
36
156
|
bun run test:behavior # PTY-driven; spawns kobe as a real binary
|
|
157
|
+
bun run typecheck # strict tsc
|
|
158
|
+
bun run build # produces ./dist/index.js for `npm publish`
|
|
37
159
|
```
|
|
38
160
|
|
|
39
|
-
|
|
161
|
+
Architecture, design philosophy, and the team-of-agents operating model live in:
|
|
162
|
+
|
|
163
|
+
- [`docs/DESIGN.md`](./docs/DESIGN.md) — design philosophy, tech stack lock-in.
|
|
164
|
+
- [`docs/ARCHITECTURE.md`](./docs/ARCHITECTURE.md) — module map and current state.
|
|
165
|
+
- [`docs/HARNESS.md`](./docs/HARNESS.md) — the agent self-test contract.
|
|
166
|
+
- [`docs/PLAN.md`](./docs/PLAN.md) — phase / wave plan.
|
|
167
|
+
- [`HANDOFF.md`](./HANDOFF.md) — current direction + what just shipped.
|
|
168
|
+
|
|
169
|
+
### Releasing
|
|
40
170
|
|
|
41
|
-
|
|
171
|
+
Bump `package.json`, move `## [Unreleased]` in `CHANGELOG.md` to the new
|
|
172
|
+
version section, commit, then push the matching `vX.Y.Z` tag. The release
|
|
173
|
+
workflow ([`.github/workflows/release.yml`](./.github/workflows/release.yml))
|
|
174
|
+
runs typecheck + unit tests + build, asserts the tag matches `package.json`,
|
|
175
|
+
then `npm publish --provenance` and creates a GitHub release with the
|
|
176
|
+
changelog section as the body.
|