runlist 0.99.2 → 0.100.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.
Files changed (58) hide show
  1. package/GETTING_STARTED.md +249 -0
  2. package/README.md +414 -46
  3. package/bin/runlist.mjs +402 -51
  4. package/package.json +3 -1
  5. package/plugins/runlist-codex/.codex-plugin/plugin.json +1 -1
  6. package/plugins/runlist-codex/bin/consume-prompt.mjs +45 -0
  7. package/plugins/runlist-codex/bin/runlist-hook +29 -11
  8. package/plugins/runlist-codex/bin/session-start.mjs +16 -0
  9. package/plugins/runlist-codex/bin/subagent-start.mjs +16 -0
  10. package/plugins/runlist-codex/hooks/hooks.json +11 -0
  11. package/plugins/runlist-codex/skills/runlist/SKILL.md +27 -11
  12. package/plugins/runlist-codex/skills/runlist-setup/SKILL.md +109 -0
  13. package/runlist.config.example.mjs +6 -0
  14. package/src/agent-context.mjs +8 -2
  15. package/src/agent-hosts.mjs +305 -0
  16. package/src/app-create.mjs +11 -1
  17. package/src/atomic-mutation.mjs +140 -35
  18. package/src/baton.mjs +127 -33
  19. package/src/codex-integration.mjs +57 -7
  20. package/src/commands.mjs +92 -38
  21. package/src/config-command.mjs +115 -0
  22. package/src/config-setting.mjs +163 -0
  23. package/src/config.mjs +57 -12
  24. package/src/doctor-hosts.mjs +192 -0
  25. package/src/doctor.mjs +16 -6
  26. package/src/export.mjs +11 -0
  27. package/src/git.mjs +58 -2
  28. package/src/guard.mjs +41 -13
  29. package/src/handoff-record.mjs +290 -30
  30. package/src/handoffs-help.mjs +143 -0
  31. package/src/handoffs-mode.mjs +486 -0
  32. package/src/handoffs-scope.mjs +98 -0
  33. package/src/help.mjs +72 -0
  34. package/src/host-integration.mjs +7 -1
  35. package/src/hud.mjs +174 -29
  36. package/src/index.mjs +11 -4
  37. package/src/init.mjs +255 -160
  38. package/src/install.mjs +35 -18
  39. package/src/installation.mjs +110 -27
  40. package/src/journal.mjs +2 -2
  41. package/src/lifecycle.mjs +22 -11
  42. package/src/managed-path.mjs +68 -4
  43. package/src/migrate.mjs +7 -0
  44. package/src/naming.mjs +26 -0
  45. package/src/new.mjs +202 -91
  46. package/src/pickup-card.mjs +1 -1
  47. package/src/plan-changes.mjs +49 -0
  48. package/src/prompt-handoff.mjs +16 -0
  49. package/src/prompts.mjs +101 -27
  50. package/src/rename.mjs +13 -0
  51. package/src/setup-carry.mjs +291 -0
  52. package/src/setup-waiting.mjs +20 -0
  53. package/src/setup-worker.mjs +257 -0
  54. package/src/setup.mjs +404 -0
  55. package/src/statuses.mjs +5 -2
  56. package/src/update.mjs +239 -79
  57. package/src/use.mjs +4 -2
  58. package/src/validate.mjs +7 -0
@@ -0,0 +1,249 @@
1
+ # Get started with Runlist
2
+
3
+ Runlist manages Markdown plans, docs and saved prompts in a project folder.
4
+ If all you want is session handoffs (save where you are, pick it up next time),
5
+ you need no setup: install the CLI and plugin
6
+ ([three-step quick path](README.md#handoffs-in-3-steps)) and say "baton" in a
7
+ Claude Code session in your project's Git repository. The first handoff writes a
8
+ handoffs-only `runlist.config.mjs` and keeps handoffs in `docs/prompts/` (outside Git, or in a home directory that is a
9
+ repository, it refuses; a project with a config works outside Git as before, and
10
+ other Markdown in the prompt folder is left alone). This guide covers setup, which turns on
11
+ planning: plans, docs and a generated index. The CLI works without a GUI. **Runlist desktop** is an optional document app;
12
+ **Claude Desktop** is a separate product that may host your assistant.
13
+
14
+ This guide tracks the repository source. npm installs the latest published
15
+ release, which may lag development. If your installed CLI lacks `setup` or
16
+ `config`, use the [source-review instructions](README.md#checkout-review-and-migration) to try the
17
+ current source, or wait for the next release. A matching version number alone
18
+ is not proof that an installed copy contains unreleased changes.
19
+
20
+ ## 1. Choose where to install the CLI
21
+
22
+ Open a terminal on the computer where your project and assistant will run.
23
+ You need Node.js 20 or newer for the CLI. Check `node --version` and
24
+ `npm --version`, then install a persistent CLI:
25
+
26
+ ```bash
27
+ npm install -g runlist
28
+ cd /path/to/your/project
29
+ runlist --version
30
+ ```
31
+
32
+ `rl` is a short alias; `dotmd` is the legacy alias. They run the same CLI.
33
+ Global npm installations belong to the selected Node installation. Switching
34
+ Node versions can change which Runlist copy your shell finds.
35
+
36
+ Alternatively, install into the project with `npm install -D runlist` and use
37
+ `npx --no-install runlist setup` from that project. `npx runlist setup` can
38
+ bootstrap without a permanent installation. Agent hooks need a persistent
39
+ `runlist` executable on the PATH of the host process; an ephemeral npx run does
40
+ not provide that. npm installs neither agent integrations nor the desktop app.
41
+
42
+ ## 2. Preview and apply project setup
43
+
44
+ Setup is for planning. In a project that already saved handoffs, setup turns
45
+ planning on: it rewrites the handoffs-only config's `mode`, widens its `root`
46
+ from `docs/prompts` to `docs`, adds `docs/plans/` and the index, and leaves the
47
+ saved prompts where they are. The preview shows the config before and after,
48
+ and counts the existing Markdown under `docs/` that planning will start
49
+ checking.
50
+
51
+ Prompts and plans that an older runlist saved before any config existed are
52
+ carried into the new folders when setup writes the first config, or turns
53
+ planning on in a project that saved handoffs, with their references and local
54
+ handoff/ownership state fixed. Foreign files stay put. Preview lists each move,
55
+ and `--no-carry-prompts` leaves these artifacts in place instead.
56
+
57
+ Run this inside the intended project folder:
58
+
59
+ ```bash
60
+ runlist setup
61
+ ```
62
+
63
+ In a terminal, choose the docs folder, prompt policy and optional actions, then
64
+ review and confirm the preview. A new project defaults to `docs/`, prompt policy
65
+ `untracked`, no ignore edits, no host install, no example plan and no adoption.
66
+ Existing projects retain their configured folders, hooks and prompt policy.
67
+
68
+ For a predictable preview without questions:
69
+
70
+ ```bash
71
+ runlist setup --docs-root docs --prompt-tracking untracked --host none --dry-run --json
72
+ ```
73
+
74
+ For a new project, apply those same choices with:
75
+
76
+ ```bash
77
+ runlist setup --docs-root docs --prompt-tracking untracked --host none --yes --json
78
+ ```
79
+
80
+ `--dry-run` always previews, even with `--yes`. Without `--yes`, noninteractive
81
+ setup previews without writing or waiting. `--json` also avoids interactive
82
+ questions. A different `--docs-root` is refused for an already configured
83
+ project; inspect the existing layout instead of moving its files automatically.
84
+
85
+ `untracked` recommends leaving saved prompts out of routine commits to reduce
86
+ churn. **It does not ignore them: `git add -A` can still stage prompts and
87
+ `.runlist/` runtime caches.** Stage intended files by path. `tracked` allows
88
+ prompt commits; `local` denies prompt Git operations through connected agent
89
+ guards, but cannot intercept arbitrary manual Git. Existing configs without
90
+ an explicit choice retain the legacy `local` policy.
91
+
92
+ No choice changes ignore files by default. To request ignore rules explicitly,
93
+ preview `runlist setup --gitignore --dry-run` and inspect the paths first.
94
+ Changing prompt policy does not move, stage, untrack or delete existing files.
95
+
96
+ ## 3. Add your first plan or selected existing docs
97
+
98
+ Use your real current state and next action. For example:
99
+
100
+ ```bash
101
+ runlist setup --first-plan text-export --current-state "Only JSON export works today." --next-step "Inspect the exporter and decide which fields belong in text output." --dry-run --json
102
+ ```
103
+
104
+ After reviewing, rerun with `--yes` in place of `--dry-run`. This creates the
105
+ plan; it does not execute its next step. State is limited to 1,500 characters
106
+ and next step to 800; longer details belong in the plan body.
107
+
108
+ For an existing file inside your configured root, preview just that adoption:
109
+
110
+ ```bash
111
+ runlist setup --adopt docs/notes/design.md --dry-run
112
+ ```
113
+
114
+ Replace the path with a file that actually exists. Review its frontmatter diff,
115
+ then rerun with `--yes` to apply. Other docs are not adopted. Setup also previews
116
+ missing scaffold directories. Preview success does not mean the whole project
117
+ passes checks: apply runs a whole-project check and can return `attention`
118
+ (exit 1) after selected changes succeed because other documents still need work.
119
+ Read **completed**, **outstanding**, and **failed** before retrying. A **notes**
120
+ section, when present, is information (for example, why prompts stay untracked),
121
+ not work left to do.
122
+
123
+ ### Ask your assistant instead
124
+
125
+ Copy this request and replace the project facts:
126
+
127
+ > Help me set up Runlist in this project. First check which computer and checkout
128
+ > your shell accesses and which Runlist CLI it selects. Use the current project
129
+ > layout, or docs/ for a new project. Leave prompts untracked to reduce commit
130
+ > churn, without editing ignore files. Make my first plan “text export”: today
131
+ > only JSON export works; next inspect the exporter and choose the text fields.
132
+ > Show me the setup preview first. Do not install an agent integration or GUI,
133
+ > adopt other docs, or start the plan work.
134
+
135
+ “Show me first” authorizes a preview. To execute the reviewed choices, ask the
136
+ assistant to apply them. If you already authorize preview and apply in your
137
+ request, it can complete both without another blanket confirmation. The
138
+ `runlist-setup` skill is discoverable only after its host plugin is installed
139
+ and loaded; an assistant without that plugin can follow this guide directly.
140
+
141
+ ## 4. Connect your agent, if wanted
142
+
143
+ Project setup and agent installation are separate. Install only the integration
144
+ for the host you actually use:
145
+
146
+ | Host | Runlist command | Still to do |
147
+ | --- | --- | --- |
148
+ | Claude Code | `runlist install claude` | Review host trust/enablement; reload plugins or start a new session. |
149
+ | Codex | `runlist install codex` | Review hook trust and start a new thread. |
150
+ | OpenCode | `runlist install opencode` | Restart the host so it loads the generated integration. |
151
+
152
+ These commands install Runlist integrations, not the agent programs themselves.
153
+ See the [host setup reference](README.md#agent-host-setup) for account/profile
154
+ choices and host-specific activation. If multiple Claude copies exist, inspect
155
+ `runlist doctor --hosts` before repairs; preserve account wrappers and target
156
+ the intended profile rather than guessing a different native executable.
157
+ Claude's [plugin documentation](https://code.claude.com/docs/en/discover-plugins)
158
+ describes installation, trust and reload behavior.
159
+
160
+ For **Claude Desktop Chat**, this package supplies no Runlist execution bridge.
161
+ Use a local terminal when the conversation has no suitable shell. In **Cowork**,
162
+ inspect the actual shell and folder access. In **Claude Code on desktop**, choose
163
+ the intended project and execution environment; it can use a remote machine.
164
+ A successful npm install in a remote shell changes that remote environment,
165
+ not your laptop. See [Claude Code on desktop](https://code.claude.com/docs/en/desktop)
166
+ and the [host routes](README.md#which-assistant-can-run-setup).
167
+
168
+ ### Save where you are, pick it up later
169
+
170
+ With the Claude Code plugin installed, stopping and resuming takes two phrases,
171
+ with or without setup. When you are done for now, say "baton" or "save where we
172
+ are" (or type `/baton`); the assistant writes a short resume note, called a
173
+ *baton*, into your project.
174
+ In the next session, type `/pickup` or say "pick up where we left off". The
175
+ [three-step quick path](README.md#handoffs-in-3-steps) has the install commands.
176
+
177
+ ## 5. Inspect settings and verify what finished
178
+
179
+ ```bash
180
+ runlist config show
181
+ runlist config get promptDirectory --json
182
+ runlist plans
183
+ runlist check
184
+ runlist doctor --hosts
185
+ ```
186
+
187
+ Settings inspection reports the actual config file and effective roots, index,
188
+ archive directory, prompt location and prompt policy. Sources are `config`,
189
+ `default`, `legacy-readme` (the old index alias), `legacy-default` (old prompt
190
+ policy), or `derived` (resolved paths). No GUI is required. These commands import
191
+ your trusted project's JavaScript config; inspection does not invoke its hooks.
192
+
193
+ Only prompt policy supports CLI edits:
194
+
195
+ ```bash
196
+ runlist config set promptTracking tracked --dry-run
197
+ runlist config set promptTracking tracked
198
+ ```
199
+
200
+ Other `config set` keys give a specific manual-edit path instead of rewriting
201
+ JavaScript. CLI and GUI use the same project configuration; no second GUI policy
202
+ copy is needed. Markdown template content can also live in `runlist.templates.json`.
203
+
204
+ Before calling onboarding complete, verify:
205
+
206
+ - The CLI resolves in the intended terminal and host environment.
207
+ - The setup report lists the chosen project changes as completed.
208
+ - Unadopted documents and check findings are understood.
209
+ - The selected host's trust/reload steps are completed in a fresh session.
210
+ - Your Git staging matches the prompt policy you chose.
211
+
212
+ `doctor --hosts` is offline and read-only by default. Files present on disk do
213
+ not prove a running session loaded them. Repair previews require a named
214
+ `--repair <host>`; writes additionally require `--apply`. `update --check` is
215
+ also offline and does not query whether a newer version is published.
216
+ `runlist update` updates the CLI and existing integrations; it may also update
217
+ an existing Mac app. Use `runlist update --host claude` (or `codex`/`opencode`)
218
+ to restrict an integration update. Reload/trust remains a host step afterward.
219
+
220
+ ## Optional: install Runlist desktop
221
+
222
+ The current native download is for Apple Silicon Macs running macOS 13.5 or
223
+ newer. To install without npm, open the
224
+ [desktop releases](https://github.com/reowens/runlist/releases?q=desktop), select
225
+ the desired Mac release, download its DMG, open it and copy Runlist to
226
+ Applications. The app bundles its engine and runtime; Node and the global CLI
227
+ are not required for this route. Choose your project folder in the app.
228
+
229
+ If you already have the CLI on a supported Mac, use `runlist desktop install`,
230
+ then `runlist desktop`. Preview the installer without downloading or changing
231
+ files with `runlist desktop install --dry-run`.
232
+
233
+ There is one npm CLI package and a separate native GUI download; no additional
234
+ GUI npm package is needed. CLI-only setup never downloads the GUI. Windows,
235
+ Linux and Intel Mac GUI installation is not offered by this installer. See
236
+ [desktop details](README.md#optional-desktop-gui).
237
+
238
+ ## If something is unfinished
239
+
240
+ | Symptom | Next action |
241
+ | --- | --- |
242
+ | `runlist` is missing or an unexpected version runs | Check `type -a runlist rl node npm` in Bash/Zsh or `Get-Command runlist,rl,node,npm -All` in PowerShell; inspect the selected Node/npm scope. |
243
+ | `setup` or `config` is unknown | Your published copy may predate these source changes; see release availability at the top of this guide. |
244
+ | Setup exits 1 after writing files | Read completed actions and whole-project findings. Correct the named issue; do not erase the config or blindly rerun the first-plan command. |
245
+ | First plan already exists | Inspect it with `runlist show <path>` and omit `--first-plan` on later setup runs. |
246
+ | Existing root change is refused | Inspect `runlist config show`; review the root/index/template exports manually. Setup does not migrate existing files. |
247
+ | Plugin files exist but the skill is missing | Check enablement, host trust and reload in the actual host; offline doctor cannot attest loading. |
248
+ | Doctor cannot map a Claude wrapper to a profile | Use the listed explicit-target preview or resolve the account/profile choice; do not bypass the wrapper automatically. |
249
+ | Your assistant only has a remote shell | Run laptop setup in a laptop terminal; remote success does not install local software. |