claude-do-it 0.0.0-stage → 0.1.1

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/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Dominique Rau
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/NOTICE ADDED
@@ -0,0 +1,25 @@
1
+ The browser editor's notebook colours, PlainTasks markers, tag completions,
2
+ stamps, and tag colours are adapted from
3
+ PlainTasks (https://github.com/aziz/PlainTasks), an MIT licensed project,
4
+ Copyright (c) 2012 Allen Bargi and contributors. See the PlainTasks LICENSE file for the source attribution.
5
+
6
+ Copyright 2012-2013 Allen Bargi.
7
+
8
+ Permission is hereby granted, free of charge, to any person obtaining
9
+ a copy of this software and associated documentation files (the
10
+ "Software"), to deal in the Software without restriction, including
11
+ without limitation the rights to use, copy, modify, merge, publish,
12
+ distribute, sublicense, and/or sell copies of the Software, and to
13
+ permit persons to whom the Software is furnished to do so, subject to
14
+ the following conditions:
15
+
16
+ The above copyright notice and this permission notice shall be
17
+ included in all copies or substantial portions of the Software.
18
+
19
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
20
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
21
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
22
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
23
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
24
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
25
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
package/README.md CHANGED
@@ -1,3 +1,190 @@
1
- # Temporary Holding Version
1
+ # claude-do-it
2
2
 
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
3
+ **A Markdown todo that you and Claude edit at the same time.**
4
+
5
+ You type in a browser editor. Claude reads the list, plans each task, hands it
6
+ to worker agents, and writes status, questions, and results back under the line
7
+ it belongs to. Your keystrokes, the agents' changes, and edits made to the file
8
+ on disk all merge instead of overwriting each other: every open file is one
9
+ [Loro](https://loro.dev) CRDT held by a small daemon on your machine. The file
10
+ itself stays plain Markdown, so any other editor still works on it.
11
+
12
+ ```mermaid
13
+ flowchart LR
14
+ you["You<br/>browser editor"] <-->|"live sync"| daemon
15
+ agents["Claude Code<br/>do-it CLI"] <-->|"versioned commands"| daemon
16
+ daemon["do-it daemon<br/>127.0.0.1, one CRDT per file"] <-->|"atomic writes, file watching"| file[("TODO.md<br/>plain Markdown")]
17
+ other["Any other editor"] <--> file
18
+ ```
19
+
20
+ ## What's inside
21
+
22
+ - **The `do-it` CLI.** Versioned commands agents use to read and change a
23
+ todo. Every change names the version it was made against, so a stale edit is
24
+ refused with a diff instead of clobbering someone else's work.
25
+ - **The daemon.** One per user on `127.0.0.1`. It holds the open documents,
26
+ watches their files, merges outside edits, and serves the editor. It starts
27
+ on demand and stops after 30 idle minutes.
28
+ - **The browser editor.** Built with Foldkit and CodeMirror 6. It keeps the
29
+ todo as plain Markdown while showing a live PlainTasks preview with markers,
30
+ tags, actions, stamps, and a command palette. Task lines always stay
31
+ rendered: markers show as ☐ ✔ ✘ and links as their text, with a popover to
32
+ edit them.
33
+ - **The `/do-it` skill for Claude Code.** It turns a session into a conductor
34
+ that sizes, plans, and delivers every task through worker agents and one
35
+ shared tester.
36
+
37
+ ## Install
38
+
39
+ Needs [Bun](https://bun.sh) 1.3 or newer on macOS or Linux.
40
+
41
+ ```bash
42
+ bun add -g claude-do-it # or: npm install -g claude-do-it (Bun still runs it)
43
+ do-it skill install # the /do-it skill, copied into ~/.claude/skills/do-it
44
+ do-it --help
45
+ ```
46
+
47
+ Run `do-it skill install` again after upgrading to refresh the skill. It never
48
+ replaces a skill directory it did not create unless you pass `--force`.
49
+ `do-it --skill` prints the skill, and `do-it skill path` shows where the
50
+ package keeps it. To try it without installing, use `bunx claude-do-it open TODO.md`.
51
+
52
+ The command is `do-it`, not `do`: `do` is a reserved word in bash and zsh.
53
+
54
+ ### From source
55
+
56
+ ```bash
57
+ git clone https://github.com/DomiR/claude-do-it ~/Developer/claude-do-it
58
+ cd ~/Developer/claude-do-it
59
+ bun install
60
+ bun run build:web # the editor the daemon serves
61
+ mkdir -p ~/.local/bin
62
+ ln -sf "$PWD/packages/cli/src/bin.ts" ~/.local/bin/do-it # any directory on PATH works
63
+ ln -s "$PWD/skill" ~/.claude/skills/do-it # the skill, always current with the checkout
64
+ ```
65
+
66
+ ## Use it from Claude Code
67
+
68
+ ```
69
+ /do-it # TODO.md in the current directory, created when missing
70
+ /do-it PLAN.md
71
+ ```
72
+
73
+ The browser opens on the todo. Add one task per line. The session sizes each
74
+ task, plans it, starts a worker in its own worktree, and writes one status line
75
+ under it, plus any question it needs you to answer (answer by writing under the
76
+ question). Delivered tasks are checked off with their branch and test result.
77
+ Inside Herdr (`HERDR_ENV=1`) the workers are Claude architects in Herdr
78
+ worktrees and tabs with Codex lanes; elsewhere they are Claude Code subagents.
79
+
80
+ Set `DO_IT_BROWSER` to the command that should open links, or to `true` to
81
+ open nothing.
82
+
83
+ ## Use the CLI
84
+
85
+ ```bash
86
+ do-it open TODO.md # start or reuse the daemon, open the browser, return
87
+ do-it read TODO.md # "Version: 7" then the text
88
+ do-it todo list TODO.md
89
+ do-it todo add TODO.md --version 7 --section tasks "Write tests"
90
+ do-it todo start TODO.md --version 8 --section tasks 3
91
+ do-it todo check TODO.md --version 9 3
92
+ do-it edit TODO.md --version 10 --old "ship friday" --new "ship monday"
93
+ do-it append TODO.md --version 11 --section notes -- "- found: flaky CI"
94
+ do-it diff TODO.md --since 9 --wait 300
95
+ do-it watch TODO.md --todos # or --settle 25 for one line per pause
96
+ do-it status
97
+ do-it stop
98
+ ```
99
+
100
+ ### How versions work
101
+
102
+ Every reply starts with the document's version, and every change, by anyone,
103
+ takes the next one. A change names the version it was made against. When the
104
+ document has moved on, nothing is applied and the reply is the latest version
105
+ plus a diff (exit 1). With `--section ID` a stale version still applies while
106
+ that section is unchanged.
107
+
108
+ A resumed watch that missed history prints
109
+ `Missed changes, now at version N: run do-it read`. Use `--quiet` to skip the
110
+ initial `Watching PATH at version N` line.
111
+
112
+ `--json` works on every command, and `--as NAME` (or `DO_IT_AGENT`) names the
113
+ agent.
114
+
115
+ | Exit code | Meaning |
116
+ | --- | --- |
117
+ | 0 | Done |
118
+ | 1 | Refused, or version mismatch |
119
+ | 2 | Invalid arguments |
120
+ | 3 | The daemon is not running and could not start |
121
+ | 4 | Nothing changed yet |
122
+ | 9 | The document was deleted |
123
+
124
+ ## Editor keys
125
+
126
+ | Action | macOS | Linux and Windows |
127
+ | --- | --- | --- |
128
+ | New task | `Cmd-Enter` or `Cmd-I` | `Ctrl-Enter` or `Ctrl-I` |
129
+ | Toggle done | `Cmd-D` or `Cmd-Shift-Enter` | `Ctrl-D` or `Ctrl-Shift-Enter` |
130
+ | Toggle cancelled | `Ctrl-C` or `Cmd-Alt-Enter` | `Alt-C` or `Ctrl-Alt-Enter` |
131
+ | Archive resolved tasks | `Cmd-Shift-A` or `Cmd-Alt-A` | `Ctrl-Shift-A` or `Ctrl-Alt-A` |
132
+ | Move up | `Cmd-Ctrl-Up` or `Alt-Up` | `Ctrl-Shift-Up` or `Alt-Up` |
133
+ | Move down | `Cmd-Ctrl-Down` or `Alt-Down` | `Ctrl-Shift-Down` or `Alt-Down` |
134
+ | Continue task | `Enter` | `Enter` |
135
+ | Expand a PlainTasks tag, or indent | `Tab` | `Tab` |
136
+ | Outdent | `Shift-Tab` or `Cmd-[` | `Shift-Tab` or `Ctrl-[` |
137
+ | Open link | `Cmd-Shift-U` or `Alt-Enter` | `Alt-Enter` |
138
+ | Edit link (or click a link on a task line) | `Cmd-K` | `Ctrl-K` |
139
+ | Go to project | `Cmd-P` | `Ctrl-P` |
140
+ | Command palette | `Cmd-Shift-P` or `F1` | `Ctrl-Shift-P` or `F1` |
141
+ | Find | `Cmd-F` | `Ctrl-F` |
142
+ | Keyboard shortcuts | `Cmd-/` | `Ctrl-/` |
143
+
144
+ Escape then Tab leaves the editor and returns focus to the page.
145
+
146
+ ## The daemon
147
+
148
+ There is one daemon per user. Any command starts it on demand; `do-it stop` or
149
+ 30 idle minutes stop it. State lives in `~/.do-it` (`DO_IT_HOME`): the runtime
150
+ record, a per user token (mode 0600), the log, and the last version of each
151
+ file, so version numbers survive restarts. It listens on `127.0.0.1:47100`
152
+ (`DO_IT_PORT`) and only answers requests that carry the token or the browser
153
+ cookie the `open` link sets.
154
+
155
+ ## How it's built
156
+
157
+ | Package | What it does |
158
+ | --- | --- |
159
+ | [`protocol`](packages/protocol) | RPC schema, errors, and formatting shared by every side |
160
+ | [`doc`](packages/doc) | The CRDT document, Markdown sections and tasks, diffs, and atomic file I/O |
161
+ | [`server`](packages/server) | The daemon: HTTP and RPC, auth, the document registry, file watching |
162
+ | [`client`](packages/client) | Finds, starts, and stops the daemon, plus a typed RPC client |
163
+ | [`cli`](packages/cli) | The `do-it` command |
164
+ | [`web`](packages/web) | The browser editor |
165
+ | [`tui`](packages/tui) | A terminal editor (not built yet) |
166
+
167
+ Everything runs on [Effect](https://effect.website) 4. File system, paths,
168
+ child processes, standard I/O, crypto, and configuration all go through Effect
169
+ platform services, and Bun provides the implementations. The design notes are
170
+ in [docs/plan.md](docs/plan.md) and [docs/design.md](docs/design.md).
171
+
172
+ ## Develop
173
+
174
+ ```bash
175
+ bun run test # unit, daemon, and end to end tests
176
+ bun run typecheck
177
+ bun run build:web
178
+ bun run build:npm # the npm package, in dist/npm
179
+ bun --cwd packages/web run dev # editor with a proxy to the daemon on 47100
180
+ ```
181
+
182
+ ## Acknowledgements
183
+
184
+ The editor's notebook colours, PlainTasks markers, tag completions, stamps, and
185
+ tag colours are adapted from [PlainTasks](https://github.com/aziz/PlainTasks)
186
+ (MIT). See [NOTICE](NOTICE).
187
+
188
+ ## License
189
+
190
+ [MIT](LICENSE)