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.
- package/GETTING_STARTED.md +249 -0
- package/README.md +414 -46
- package/bin/runlist.mjs +402 -51
- package/package.json +3 -1
- package/plugins/runlist-codex/.codex-plugin/plugin.json +1 -1
- package/plugins/runlist-codex/bin/consume-prompt.mjs +45 -0
- package/plugins/runlist-codex/bin/runlist-hook +29 -11
- package/plugins/runlist-codex/bin/session-start.mjs +16 -0
- package/plugins/runlist-codex/bin/subagent-start.mjs +16 -0
- package/plugins/runlist-codex/hooks/hooks.json +11 -0
- package/plugins/runlist-codex/skills/runlist/SKILL.md +27 -11
- package/plugins/runlist-codex/skills/runlist-setup/SKILL.md +109 -0
- package/runlist.config.example.mjs +6 -0
- package/src/agent-context.mjs +8 -2
- package/src/agent-hosts.mjs +305 -0
- package/src/app-create.mjs +11 -1
- package/src/atomic-mutation.mjs +140 -35
- package/src/baton.mjs +127 -33
- package/src/codex-integration.mjs +57 -7
- package/src/commands.mjs +92 -38
- package/src/config-command.mjs +115 -0
- package/src/config-setting.mjs +163 -0
- package/src/config.mjs +57 -12
- package/src/doctor-hosts.mjs +192 -0
- package/src/doctor.mjs +16 -6
- package/src/export.mjs +11 -0
- package/src/git.mjs +58 -2
- package/src/guard.mjs +41 -13
- package/src/handoff-record.mjs +290 -30
- package/src/handoffs-help.mjs +143 -0
- package/src/handoffs-mode.mjs +486 -0
- package/src/handoffs-scope.mjs +98 -0
- package/src/help.mjs +72 -0
- package/src/host-integration.mjs +7 -1
- package/src/hud.mjs +174 -29
- package/src/index.mjs +11 -4
- package/src/init.mjs +255 -160
- package/src/install.mjs +35 -18
- package/src/installation.mjs +110 -27
- package/src/journal.mjs +2 -2
- package/src/lifecycle.mjs +22 -11
- package/src/managed-path.mjs +68 -4
- package/src/migrate.mjs +7 -0
- package/src/naming.mjs +26 -0
- package/src/new.mjs +202 -91
- package/src/pickup-card.mjs +1 -1
- package/src/plan-changes.mjs +49 -0
- package/src/prompt-handoff.mjs +16 -0
- package/src/prompts.mjs +101 -27
- package/src/rename.mjs +13 -0
- package/src/setup-carry.mjs +291 -0
- package/src/setup-waiting.mjs +20 -0
- package/src/setup-worker.mjs +257 -0
- package/src/setup.mjs +404 -0
- package/src/statuses.mjs +5 -2
- package/src/update.mjs +239 -79
- package/src/use.mjs +4 -2
- 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. |
|