hzl-cli 1.26.0 → 1.26.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.
Files changed (2) hide show
  1. package/README.md +53 -588
  2. package/package.json +3 -3
package/README.md CHANGED
@@ -1,127 +1,38 @@
1
1
  # HZL (Hazel)
2
2
 
3
- **External task ledger for coding agents and OpenClaw.**
3
+ **External task ledger for coding agents.**
4
4
 
5
- Claude Code has [Tasks](https://x.com/trq212/status/2014480496013803643). If you use Claude Code for short, self-contained work, that's probably enough.
6
-
7
- HZL is for when work outlives a single session: days-long projects, switching between Claude Code and Codex, OpenClaw juggling parallel workstreams.
8
-
9
- 📚 **[Full Documentation](https://www.hzl-tasks.com)** — Concepts, scenarios, and tutorials
10
-
11
- **Coding agents (Claude Code, Codex, Gemini)**
12
-
13
- You're working across several projects over days or weeks. You switch between agents. Each has its own task tracking (or none).
14
-
15
- HZL is the shared ledger underneath. Claim a task in Claude Code, pick it up in Codex tomorrow. One source of truth across tools and sessions.
16
-
17
- **OpenClaw**
18
-
19
- OpenClaw has tools for user memory—context, preferences, past chats. It doesn't have a tool for tracking task execution state: workstreams, dependencies, checkpoints.
20
-
21
- That all lives in-context today. It burns space. It fragments when chats compact.
22
-
23
- HZL fills that gap. Say you ask OpenClaw to plan a family vacation—flights, hotels, activities, reservations. That's multiple tasks with dependencies (can't book hotels until you know the dates). Instead of tracking all of it in the chat, OpenClaw creates tasks in HZL:
24
-
25
- ```bash
26
- hzl task list --project family-vacation --available --json
27
- {"tasks":[{"task_id":"t_abc123","title":"Book hotel","project":"family-vacation","status":"ready","priority":3,"created_at":"2025-01-15T10:00:00.000Z"}],"total":1}
28
- ```
29
-
30
- OpenClaw queries HZL, sees what's unblocked, and picks up the next task—without reconstructing state from a compacted chat. If you ever run multiple OpenClaw instances, they coordinate through the same ledger.
31
-
32
- **Local-first with built-in cloud sync**
33
-
34
- Fast reads and writes to local SQLite. Enable sync to [Turso](https://turso.tech) with one command (`hzl init --sync-url ...`) for automatic backup and multi-device access.
35
-
36
- **Also**
37
-
38
- - Leases: time-limited claims that expire, so callers can find and reclaim stuck work
39
- - Checkpoints: save progress notes so work can resume after interruption
40
- - Event history: full audit trail of what happened
41
-
42
- Using OpenClaw? Start here: [OpenClaw integration](#openclaw-integration)
43
-
44
- Using Claude Code, Codex, or Gemini? See: [Using HZL with coding agents](#using-hzl-with-claude-code-codex-gemini-cli-or-any-coding-agent)
45
-
46
- Data is stored in SQLite. Default location: `$XDG_DATA_HOME/hzl/` (fallback `~/.local/share/hzl/`); Windows: `%LOCALAPPDATA%\\hzl\\`. Contains `events.db` (source of truth) and `cache.db` (projections).
5
+ 📚 **[Full Documentation](https://www.hzl-tasks.com)** Concepts, workflows, and CLI reference
47
6
 
48
7
  ---
49
8
 
50
- ## Why another task tracker?
9
+ ## Why HZL?
51
10
 
52
- Because most task trackers are built for humans.
11
+ Most task trackers are built for humans. HZL is built for agents:
53
12
 
54
- HZL is built for agents:
13
+ - **Backend-first** Task database with a CLI, not another Trello
14
+ - **Model-agnostic** — Tasks live outside any vendor's memory
15
+ - **Multi-agent safe** — Atomic claiming prevents duplicate work
16
+ - **Resumable** — Checkpoints let work survive session boundaries
55
17
 
56
- - It is backend-first, not UI-first. Think "task database with a CLI," not "another Trello."
57
- - It is model-agnostic. Your tasks live outside any one vendor's memory or chat history.
58
- - It is multi-agent safe. Leases prevent orphaned work and enable clean handoffs.
59
- - It is resumable. Checkpoints let an agent crash, reboot, or swap models and keep going.
18
+ If you already have a favorite human todo app, keep it. HZL is for shared task state that multiple agents can read and write.
60
19
 
61
- If you already have a favorite human todo app, keep it.
62
- If you need a shared task state that multiple agents can read/write, that is HZL.
20
+ ## When to Use HZL
63
21
 
64
- ---
22
+ HZL is for when work outlives a single session:
65
23
 
66
- ## Where HZL fits
24
+ - **Cross-agent workflows** — Claude Code, Codex, Gemini sharing one task board
25
+ - **Session persistence** — Pick up where you left off tomorrow
26
+ - **Orchestration** — One agent delegates to another with clean handoffs
27
+ - **Backup** — Cloud sync keeps task state safe
67
28
 
68
- ### 1) OpenClaw orchestrator + sub-agents
69
-
70
- ```mermaid
71
- flowchart LR
72
- You[You] --> OC["OpenClaw (orchestrator)"]
73
- OC --> Tools["OpenClaw tools<br/>(browser, exec, email, etc.)"]
74
- OC <--> HZL[(HZL task ledger)]
75
- OC --> S1[Claude Code]
76
- OC --> S2[Codex / other]
77
- S1 <--> HZL
78
- S2 <--> HZL
79
- ```
80
-
81
- OpenClaw coordinates the work. HZL is the shared, durable task board that OpenClaw and its sub-agents can use across sessions.
82
-
83
- ### 2) Any multi-agent system (no OpenClaw required)
84
-
85
- ```mermaid
86
- flowchart LR
87
- U[You] --> O["Orchestrator (human or agent)"]
88
- O <--> HZL[(HZL)]
89
- O --> C[Claude Code]
90
- O --> X[Codex]
91
- O --> G[Gemini]
92
- C <--> HZL
93
- X <--> HZL
94
- G <--> HZL
95
- ```
96
-
97
- Same idea: once you are switching tools/models, you need a shared ledger.
98
-
99
- ### 3) One agent, many sessions
100
-
101
- ```mermaid
102
- flowchart LR
103
- U[You] --> A["Coding agent<br>(Claude Code, Codex, etc)"]
104
- A <--> HZL
105
- A --> R[Repo / files]
106
- ```
107
-
108
- Use HZL to persist "what's next" and "what changed" between sessions.
109
-
110
- ### 4) HZL as the backend for your own UI
111
-
112
- ```mermaid
113
- flowchart LR
114
- UI[Lightweight web app] --> HZL
115
- Agents[Agents + scripts] --> HZL
116
- ```
117
-
118
- HZL includes a basic [Kanban dashboard](#web-dashboard) for human visibility. For richer interfaces, build your own frontend using `hzl-core` directly—HZL stays the durable backend that both humans and agents can use.
29
+ If you only use one agent and never need persistence, the built-in tracker is fine. Once you need durability or coordination, reach for HZL.
119
30
 
120
31
  ---
121
32
 
122
33
  ## Quickstart
123
34
 
124
- ### 1. Install HZL
35
+ ### 1. Install
125
36
 
126
37
  Requires Node.js 22.14+.
127
38
 
@@ -129,548 +40,102 @@ Requires Node.js 22.14+.
129
40
  curl -fsSL "https://raw.githubusercontent.com/tmchow/hzl/main/scripts/install.sh?$(date +%s)" | bash
130
41
  ```
131
42
 
132
- This installs the CLI, initializes the database, and sets up Claude Code/Codex integrations (if detected).
133
-
134
43
  <details>
135
44
  <summary>Alternative install methods</summary>
136
45
 
137
- **Via Homebrew (macOS/Linux):**
46
+ **Homebrew (macOS/Linux):**
138
47
  ```bash
139
48
  brew tap tmchow/hzl && brew install hzl && hzl init
140
49
  ```
141
50
 
142
- **Via NPM:**
51
+ **NPM:**
143
52
  ```bash
144
53
  npm install -g hzl-cli && hzl init
145
54
  ```
146
-
147
- **Then set up agent integrations:**
148
-
149
- *Claude Code (run in Claude Code):*
150
- ```
151
- /plugin marketplace add tmchow/hzl
152
- /plugin install hzl@hzl
153
- ```
154
-
155
- *Codex:*
156
- ```bash
157
- mkdir -p ~/.codex/skills/hzl
158
- curl -fsSL https://raw.githubusercontent.com/tmchow/hzl/main/skills/hzl/SKILL.md -o ~/.codex/skills/hzl/SKILL.md
159
- ```
160
-
161
55
  </details>
162
56
 
163
- ### 2. Add HZL to your project
57
+ ### 2. Add to Your Project
164
58
 
165
- Run this in your repo to append the agent policy to your AGENTS.md (or CLAUDE.md, GEMINI.md):
59
+ Append the agent policy to your repo so agents know when to use HZL:
166
60
 
167
61
  ```bash
168
62
  curl -fsSL https://raw.githubusercontent.com/tmchow/hzl/main/snippets/AGENT-POLICY.md >> AGENTS.md
169
63
  ```
170
64
 
171
- This teaches your coding agent when to use HZL.
172
-
173
- ### Enable Cloud Sync (Optional)
174
-
175
- Sync with a Turso database for multi-device/multi-agent access:
65
+ ### 3. Create Tasks and Work
176
66
 
177
67
  ```bash
178
- hzl init --sync-url libsql://<db>.turso.io --auth-token <token>
179
- ```
180
-
181
- ### Create a project and tasks
182
-
183
- ```bash
184
- hzl project create portland-trip
185
-
186
- hzl task add "Check calendars for March weekends" -P portland-trip --priority 5
187
- hzl task add "Research neighborhoods + activities" -P portland-trip --priority 4
188
- hzl task add "Shortlist 2-3 weekend options" -P portland-trip --priority 3 \
189
- --depends-on <calendar-task-id> --depends-on <research-task-id>
190
- ```
191
-
192
- ### Work with checkpoints
68
+ # Create a project and tasks
69
+ hzl project create my-feature
70
+ hzl task add "Design the API" -P my-feature
71
+ hzl task add "Implement endpoints" -P my-feature --depends-on 1
193
72
 
194
- ```bash
195
- hzl task claim <calendar-task-id> --assignee trevin-agent
196
- hzl task checkpoint <calendar-task-id> "Found 3 options: Mar 7-9, 14-16, 21-23"
197
- hzl task complete <calendar-task-id>
198
- ```
199
-
200
- ### Link to supporting documents
201
-
202
- Tasks stay lightweight. Use `--links` to reference design docs, brainstorms, or specs:
203
-
204
- ```bash
205
- # Create a task that links to context documents
206
- hzl task add "Implement auth flow per design" -P myapp --priority 3 \
207
- --links docs/designs/auth-flow.md,docs/brainstorm/2026-01-auth-options.md
73
+ # Claim and work
74
+ hzl task claim 1 --assignee claude-code
75
+ hzl task checkpoint 1 "API design complete"
76
+ hzl task complete 1
208
77
 
209
- # The agent reads linked files for context, task stays focused on the work
210
- hzl task show <id> --json
211
- # → { "links": ["docs/designs/auth-flow.md", "https://somedomain/resource.md"], ... }
78
+ # View progress
79
+ hzl serve # Opens web dashboard at localhost:3456
212
80
  ```
213
81
 
214
- This pattern keeps tasks actionable while pointing agents to richer context stored elsewhere.
215
-
216
- ### Use JSON output when scripting
82
+ ### Enable Cloud Sync (Optional)
217
83
 
218
84
  ```bash
219
- hzl task show <id> --json
220
- hzl task next --project portland-trip --json
85
+ hzl init --sync-url libsql://<db>.turso.io --auth-token <token>
221
86
  ```
222
87
 
223
88
  ---
224
89
 
225
- ## Core concepts (the stuff that matters)
226
-
227
- ### Tasks are units of work, not reminders
228
-
229
- HZL is optimized for "do work, report progress, unblock the next step."
230
-
231
- If you need time-based reminders, pair HZL with a scheduler (cron, OpenClaw cron, etc.).
232
-
233
- ### Checkpoints are progress snapshots
234
-
235
- A checkpoint is a compact, durable record of what happened:
236
-
237
- - what you tried
238
- - what you found
239
- - what's still missing
240
- - links, commands, or file paths needed to resume
241
-
242
- ### Dependencies encode ordering
243
-
244
- Dependencies are how an agent avoids premature work:
245
-
246
- - "Don't search flights before you know dates."
247
- - "Don't open a PR before tests pass."
248
-
249
- ### Leases make multi-agent handoffs reliable
90
+ ## Documentation
250
91
 
251
- Leases are time-limited claims:
252
-
253
- - A worker agent claims a task with `--lease 30`
254
- - If it disappears, the lease expires
255
- - Another agent can detect stuck work and take over
256
-
257
- ### Cloud Sync & Offline-First
258
-
259
- HZL uses a **local-first** architecture. You always read/write to a fast local database. Sync happens in the background via Turso/libSQL.
260
-
261
- ```mermaid
262
- flowchart TD
263
- CLI[User / Agent CLI]
264
- subgraph Local["Local Machine"]
265
- Cache[(cache.db<br/>Reads)]
266
- Events[(events.db<br/>Writes)]
267
- Sync[Sync Engine]
268
- end
269
- Cloud[(Turso / Cloud)]
270
-
271
- CLI -->|Read| Cache
272
- CLI -->|Write| Events
273
- Events -->|Rebuild| Cache
274
- Events <-->|Sync| Sync
275
- Sync <-->|Replication| Cloud
276
- ```
92
+ | Section | What's There |
93
+ |---------|-------------|
94
+ | [Getting Started](https://www.hzl-tasks.com/getting-started/) | Installation, quickstart, agent setup |
95
+ | [Concepts](https://www.hzl-tasks.com/concepts/) | Projects, tasks, dependencies, checkpoints, leases |
96
+ | [Workflows](https://www.hzl-tasks.com/workflows/) | Single-agent, multi-agent, handoffs, breakdown patterns |
97
+ | [CLI Reference](https://www.hzl-tasks.com/reference/cli) | Complete command documentation |
98
+ | [Web Dashboard](https://www.hzl-tasks.com/dashboard) | Kanban board setup and usage |
99
+ | [Troubleshooting](https://www.hzl-tasks.com/troubleshooting) | Common issues and fixes |
277
100
 
278
101
  ---
279
102
 
280
- ## Patterns
281
-
282
- ### Pattern: Multi-agent backlog (recommended)
283
-
284
- Conventions that help:
285
-
286
- - Use consistent author IDs: `openclaw`, `claude-code`, `codex`, `gemini`, etc.
287
- - Claim tasks before work.
288
- - Checkpoint whenever you learn something that would be painful to rediscover.
289
-
290
- Example handoff:
291
-
292
- ```bash
293
- # Orchestrator creates task
294
- hzl task add "Implement REST API endpoints" -P myapp --priority 2
295
- TASK_ID=<id>
296
-
297
- # Worker agent claims with a lease
298
- hzl task claim "$TASK_ID" --assignee claude-code --lease 30
299
- hzl task checkpoint "$TASK_ID" "Endpoints scaffolded; next: auth middleware"
300
- hzl task complete "$TASK_ID"
301
- ```
302
-
303
- ### Pattern: Breaking down work with subtasks
304
-
305
- HZL supports one level of parent/subtask hierarchy for organizing related work.
103
+ ## Agent Setup
306
104
 
307
- **Key behavior: Parent tasks are organizational containers, not actionable work.**
308
-
309
- When you call `hzl task next`, only leaf tasks (tasks without children) are returned. Parent tasks are never returned because they represent the umbrella—work happens on the subtasks.
310
-
311
- ```bash
312
- # Create parent task
313
- hzl task add "Implement user authentication" -P myapp --priority 2
314
- # → Created task abc123
315
-
316
- # Create subtasks (project inherited automatically from parent)
317
- hzl task add "Add login endpoint" --parent abc123
318
- hzl task add "Add logout endpoint" --parent abc123
319
- hzl task add "Add session management" --parent abc123
320
-
321
- # View the breakdown
322
- hzl task show abc123
323
- # Shows task details plus list of subtasks
324
-
325
- # Get next available subtask (parent is never returned)
326
- hzl task next --project myapp
327
- # → [def456] Add login endpoint
328
-
329
- # Scope work to a specific parent's subtasks
330
- hzl task next --parent abc123
331
- # → [def456] Add login endpoint
332
-
333
- # When all subtasks done, manually complete the parent
334
- hzl task complete abc123
335
- ```
336
-
337
- **Constraints:**
338
- - Maximum 1 level of nesting (subtasks cannot have their own subtasks)
339
- - Subtasks are always in the same project as parent (auto-inherited)
340
- - Moving a parent moves all subtasks atomically
341
-
342
- **Filtering:**
343
- ```bash
344
- # See all subtasks of a task
345
- hzl task list --parent abc123
346
-
347
- # See only top-level tasks (no parent)
348
- hzl task list --root
349
-
350
- # Combine with other filters
351
- hzl task list --root --status ready
352
- ```
353
-
354
- **Archiving:**
355
- ```bash
356
- # Archive parent with all subtasks
357
- hzl task archive abc123 --cascade
358
-
359
- # Archive parent only (subtasks promoted to top-level)
360
- hzl task archive abc123 --orphan
361
- ```
362
-
363
- ### Pattern: Personal todo list (it works, but bring your own UI)
364
-
365
- HZL can track personal tasks and has the advantage of centralizing agent and personal tasks.
366
- This enables scenarios like OpenClaw assigning you tasks without needing to sync with other todo systems.
367
-
368
- HZL itself is not trying to be a polished, human-first todo app. You bring other pieces for that.
369
-
370
- If you want a todo app, build or use a UI:
371
-
372
- - a tiny web app
373
- - a TUI wrapper
374
- - a menu bar widget
375
-
376
- HZL stays the storage layer and concurrency-safe ledger underneath.
377
-
378
- ---
379
-
380
- ## Using HZL with Claude Code, Codex, Gemini CLI, or any coding agent
381
-
382
- **Why HZL when your agent already has task tracking?**
383
-
384
- Many coding agents (like Claude Code) have built-in task management. HZL complements rather than replaces it:
385
-
386
- - **Cross-agent workflows**: If you use Claude Code *and* Codex *and* Gemini, each has its own task system. HZL is the shared ledger they can all read/write.
387
- - **Session persistence**: Built-in task trackers often reset between sessions. HZL persists to disk (and optionally to cloud).
388
- - **Orchestration**: When one agent delegates to another, HZL provides the handoff mechanism (claim, checkpoint, complete).
389
- - **Backup**: With cloud sync enabled, your task state survives machine failures.
390
-
391
- If you only ever use one agent and never need cross-session persistence, the built-in tracker is fine. Once you need durability or multi-agent coordination, reach for HZL.
392
-
393
- If your coding agent supports an instruction file (for example `CLAUDE.md`, `AGENTS.md`, `GEMINI.md`, etc.), add a short policy so the agent reaches for HZL consistently.
394
-
395
- ### Drop-in policy snippet
396
-
397
- <!-- START [code:md] snippets/AGENT-POLICY.md -->
398
- <!-- ⚠️ DO NOT EDIT - Auto-generated from snippets/AGENT-POLICY.md -->
399
- ````md
400
- ### HZL task ledger
401
-
402
- This project uses HZL for external task tracking.
403
-
404
- **IMPORTANT - Task tracking:** When starting work that is multi-step, may span sessions, or needs coordination, run `hzl guide` to learn how this project tracks tasks.
405
-
406
- **When delegating to sub-agents:** Include "use HZL for task tracking" in the sub-agent's instructions.
407
-
408
- **Use HZL when:**
409
- - Work has multiple steps or may not finish this session
410
- - Durable record of progress or ownership needed
411
- - Handoff or review expected
412
- - Task is non-trivial (~30+ min or risky changes)
413
-
414
- **Skip HZL when:**
415
- - Small, clearly scoped work completed immediately
416
- - Quick one-off answer or tiny change
417
-
418
- **Rule of thumb:** If you're tempted to make a multi-step plan, use HZL.
419
- ````
420
- <!-- END [code:md] snippets/AGENT-POLICY.md -->
421
-
422
- That snippet is intentionally concise. The goal is clear triggers and structure, not ceremony.
423
-
424
- <!-- START snippets/AGENT-SKILLS-INSTALL.md -->
425
- <!-- ⚠️ DO NOT EDIT - Auto-generated from snippets/AGENT-SKILLS-INSTALL.md -->
426
- ### Claude Code skill (optional)
427
-
428
- HZL includes a Claude Code skill that helps agents work effectively with HZL.
105
+ ### Claude Code
429
106
 
430
107
  ```bash
431
108
  /plugin marketplace add tmchow/hzl
432
109
  /plugin install hzl@hzl
433
110
  ```
434
111
 
435
- <details>
436
- <summary>Migrating from older versions?</summary>
437
-
438
- If you previously installed `hzl@hzl-marketplace`, uninstall it first:
439
-
440
- ```bash
441
- /plugin uninstall hzl@hzl-marketplace
442
- /plugin marketplace remove hzl-marketplace
443
- ```
444
-
445
- Then install the new version using the commands above.
446
- </details>
447
-
448
- ### OpenAI Codex skill (optional)
449
-
450
- HZL also supports [OpenAI Codex CLI](https://github.com/openai/codex). The skill uses the same `SKILL.md` format.
451
-
452
- **Option A: Quick install (prompt injection)**
453
-
454
- Tell Codex:
455
- > Fetch and follow instructions from https://raw.githubusercontent.com/tmchow/hzl/main/.codex/INSTALL.md
456
-
457
- Codex will download the skill and ask whether to add HZL guidance user-wide or project-specific.
458
-
459
- **Security note:** This uses prompt injection—Codex will modify files on your system. Review [`.codex/INSTALL.md`](https://github.com/tmchow/hzl/blob/main/.codex/INSTALL.md) to see exactly what steps Codex will follow, or use Option B for manual control.
460
-
461
- **Option B: Manual install**
462
-
463
- Follow the steps in [`.codex/INSTALL.md`](https://github.com/tmchow/hzl/blob/main/.codex/INSTALL.md) yourself.
464
- <!-- END snippets/AGENT-SKILLS-INSTALL.md -->
465
-
466
- ---
467
-
468
- ## OpenClaw integration
469
-
470
- OpenClaw is a self-hosted AI assistant that can coordinate tools and sub-agents.
471
- HZL fits well as the task ledger that OpenClaw (and its sub-agents) can share.
472
-
473
- ### Quick start (recommended)
474
-
475
- Copy/paste this into an OpenClaw chat (single prompt):
476
-
477
- <!-- START [code:txt] snippets/OPENCLAW-SETUP-PROMPT.md -->
478
- <!-- ⚠️ DO NOT EDIT - Auto-generated from snippets/OPENCLAW-SETUP-PROMPT.md -->
479
- ````txt
480
- Install HZL from https://github.com/tmchow/hzl and run hzl init. Install the HZL skill from https://www.clawhub.ai/tmchow/hzl. Then append the HZL policy from https://raw.githubusercontent.com/tmchow/hzl/main/openclaw/OPENCLAW-TOOLS-PROMPT.md to my TOOLS.md.
481
- ````
482
- <!-- END [code:txt] snippets/OPENCLAW-SETUP-PROMPT.md -->
483
-
484
- ### Manual setup
485
-
486
- 1) Install HZL on the machine running OpenClaw:
487
-
488
- ```bash
489
- npm install -g hzl-cli
490
- hzl init
491
- ```
492
-
493
- 2) Install the HZL skill from https://www.clawhub.ai/tmchow/hzl
494
- Skill source (for reference only): **[`openclaw/skills/hzl/SKILL.md`](./openclaw/skills/hzl/SKILL.md)**
495
-
496
- 3) Teach OpenClaw when to use HZL (important):
497
- - Copy/paste from: **[`openclaw/OPENCLAW-TOOLS-PROMPT.md`](./openclaw/OPENCLAW-TOOLS-PROMPT.md)**
498
- - Or tell OpenClaw to add this policy to `TOOLS.md`:
499
-
500
- ```
501
- HZL is a tool available to you for task management in certain cases. I want you to add this information to your TOOLS.md in the right way so you remember how to use it:
502
- https://raw.githubusercontent.com/tmchow/hzl/main/openclaw/OPENCLAW-TOOLS-PROMPT.md
503
- ```
504
-
505
- ### Upgrading HZL
506
-
507
- To keep both the HZL CLI and your OpenClaw skill up to date, copy/paste this prompt into an OpenClaw chat. It creates a script you can reuse:
508
-
509
- <!-- START [code:txt] snippets/UPGRADE-HZL-PROMPT.md -->
510
- <!-- ⚠️ DO NOT EDIT - Auto-generated from snippets/UPGRADE-HZL-PROMPT.md -->
511
- ````txt
512
- Create a script at scripts/upgrade-hzl.sh (in your workspace) that upgrades both the hzl-cli npm package and the hzl skill from ClawHub. The script should:
513
-
514
- 1. Run `npm install -g hzl-cli@latest`
515
- 2. Run `npx clawhub update hzl` from the workspace directory
516
- 3. Print the installed version after each step
517
-
518
- Make it executable. In the future when I say "upgrade hzl", run this script.
519
- ````
520
- <!-- END [code:txt] snippets/UPGRADE-HZL-PROMPT.md -->
521
-
522
- After running this once, just say "upgrade hzl" to OpenClaw to run the script. Consider adding a cron job to have OpenClaw run the upgrade automatically on a schedule.
523
-
524
- ---
525
-
526
- ## When to use HZL (and when not to)
527
-
528
- ### Use HZL when:
529
-
530
- - work has multiple steps and you want explicit sequencing
531
- - work spans multiple sessions (resume tomorrow with confidence)
532
- - you are coordinating multiple agents or model providers
533
- - you need durable status reporting (done / in progress / blocked / next)
534
- - you want a task ledger your own UI can sit on top of
535
-
536
- ### Consider something else when:
537
-
538
- - you need time-based reminders or notifications (use a scheduler + a notifier)
539
- - you need rich human workflow features (due dates, recurring tasks, calendar views)
540
- - you are tracking an org-wide backlog (GitHub/Jira/etc. may be a better fit)
541
-
542
- ---
543
-
544
- ## CLI reference (short)
545
-
546
- ```bash
547
- # Setup
548
- hzl init # Initialize database (add --sync-url for cloud)
549
- hzl init --reset-config # Reset config to default database location
550
-
551
- # Projects
552
- hzl project create <name> # Create a project
553
- hzl project list # List all projects
554
-
555
- # Tasks
556
- hzl task add "<title>" -P <project> # Create task (--depends-on, --links, --priority)
557
- hzl task list --project <project> # List tasks (--available for claimable only)
558
- hzl task next --project <project> # Get highest priority available task
559
-
560
- # Working
561
- hzl task claim <id> --assignee <name> # Claim task (or: hzl task start <id>)
562
- hzl task claim <id> --agent-id <id> # --lease <minutes> for expiry
563
- hzl task checkpoint <id> "<message>" # Save progress snapshot
564
- hzl task progress <id> <value> # Set progress (0-100)
565
- hzl task complete <id> # Mark done
566
-
567
- # Status management
568
- hzl task block <id> --comment "<context>" # Mark task as blocked
569
- hzl task unblock <id> # Unblock a task (returns to in_progress)
570
-
571
- # Coordination
572
- hzl task stuck # Find expired leases
573
- hzl task steal <id> --if-expired # Take over abandoned task
574
- hzl task show <id> --json # Task details (--json for scripting)
575
-
576
- # Subtasks (organization)
577
- hzl task add "<title>" --parent <id> # Create subtask (inherits project)
578
- hzl task list --parent <id> # List subtasks of a task
579
- hzl task list --root # List only top-level tasks
580
- hzl task next --parent <id> # Next available subtask
581
- hzl task show <id> # Shows subtasks inline
582
- hzl task archive <id> --cascade # Archive parent and all subtasks
583
- hzl task archive <id> --orphan # Archive parent, promote subtasks
584
-
585
- # Cleanup
586
- hzl task prune --project <project> --older-than 30d # Preview tasks eligible for deletion
587
- hzl task prune --project <project> --older-than 30d --dry-run # Preview without deleting
588
- hzl task prune --project <project> --older-than 30d --yes # Permanently delete (no confirmation)
589
- hzl task prune --all --older-than 30d --yes # Prune all projects
590
-
591
- # Diagnostics
592
- hzl sync # Sync with cloud (if configured)
593
- hzl status # Show database and sync state
594
- hzl doctor # Health checks
595
-
596
- # ⚠️ DESTRUCTIVE - permanent deletion
597
- hzl task prune --project <project> --older-than 30d --yes # Permanently deletes old tasks
598
- hzl init --force # Prompts for confirmation before deleting all data
599
- hzl init --force --yes # Deletes all data WITHOUT confirmation (dangerous)
600
-
601
- # Web Dashboard
602
- hzl serve # Start dashboard (network accessible)
603
- hzl serve --port 8080 # Custom port
604
- hzl serve --host 127.0.0.1 # Restrict to localhost only
605
- hzl serve --background # Fork to background
606
- hzl serve --stop # Stop background server
607
- hzl serve --status # Check if running
608
- ```
609
-
610
- ---
611
-
612
- ## Web Dashboard
613
-
614
- HZL includes a lightweight Kanban dashboard for monitoring tasks in near real-time.
112
+ ### OpenAI Codex
615
113
 
616
114
  ```bash
617
- hzl serve # Start on port 3456 (network accessible by default)
618
- hzl serve --host 127.0.0.1 # Restrict to localhost only
115
+ mkdir -p ~/.codex/skills/hzl
116
+ curl -fsSL https://raw.githubusercontent.com/tmchow/hzl/main/skills/hzl/SKILL.md -o ~/.codex/skills/hzl/SKILL.md
619
117
  ```
620
118
 
621
- Open `http://localhost:3456` to see:
119
+ ### OpenClaw
622
120
 
623
- - **Kanban board** with columns: Backlog → Blocked → Ready → In Progress → Done
624
- - **Date filtering**: Today, Last 3d, 7d, 14d, 30d
625
- - **Project filtering**: Focus on a single project
626
- - **Task details**: Click any card to see description, comments, and checkpoints
627
- - **Activity panel**: Recent status changes and events
628
- - **Mobile support**: Tabs layout on smaller screens
121
+ Copy/paste into an OpenClaw chat:
629
122
 
630
- The dashboard polls automatically (configurable 1-30s interval) and pauses when the tab is hidden.
631
-
632
- ### Background mode
633
-
634
- Run the dashboard as a background process:
635
-
636
- ```bash
637
- hzl serve --background # Fork to background, write PID
638
- hzl serve --status # Check if running
639
- hzl serve --stop # Stop the background server
640
123
  ```
641
-
642
- ### Running as a service (systemd)
643
-
644
- For always-on access (e.g., on an OpenClaw box via Tailscale). Linux only.
645
-
646
- ```bash
647
- mkdir -p ~/.config/systemd/user
648
- hzl serve --print-systemd > ~/.config/systemd/user/hzl-web.service
649
- systemctl --user daemon-reload
650
- systemctl --user enable --now hzl-web
651
-
652
- # Enable lingering so the service runs even when logged out
653
- loginctl enable-linger $USER
124
+ Install HZL from https://github.com/tmchow/hzl and run hzl init. Install the HZL skill from https://www.clawhub.ai/tmchow/hzl. Then append the HZL policy from https://raw.githubusercontent.com/tmchow/hzl/main/openclaw/OPENCLAW-TOOLS-PROMPT.md to my TOOLS.md.
654
125
  ```
655
126
 
656
- The server binds to `0.0.0.0` by default, making it accessible over the network (including Tailscale). Use `--host 127.0.0.1` to restrict to localhost only.
657
-
658
- **macOS:** systemd is not available. Use `hzl serve --background` or create a launchd plist.
127
+ See [Coding Agents Setup](https://www.hzl-tasks.com/getting-started/coding-agents) for full details.
659
128
 
660
129
  ---
661
130
 
662
131
  ## Packages
663
132
 
664
- HZL is a monorepo with three packages:
665
-
666
133
  | Package | Description | Install |
667
134
  |---------|-------------|---------|
668
- | [`hzl-cli`](https://www.npmjs.com/package/hzl-cli) | CLI for task management (`hzl` command) | `brew install hzl`<br/>`npm install -g hzl-cli` |
135
+ | [`hzl-cli`](https://www.npmjs.com/package/hzl-cli) | CLI for task management | `npm install -g hzl-cli` |
669
136
  | [`hzl-core`](https://www.npmjs.com/package/hzl-core) | Core library for programmatic use | `npm install hzl-core` |
670
137
  | [`hzl-web`](https://www.npmjs.com/package/hzl-web) | Web server and Kanban dashboard | `npm install hzl-web` |
671
138
 
672
- Most users should install `hzl-cli`. Use `hzl-core` or `hzl-web` directly if you're building your own tooling or UI on top of HZL.
673
-
674
139
  ---
675
140
 
676
141
  ## License
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hzl-cli",
3
- "version": "1.26.0",
3
+ "version": "1.26.1",
4
4
  "description": "CLI for HZL - External task ledger for coding agents and OpenClaw.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -60,8 +60,8 @@
60
60
  "libsql": "^0.5.0",
61
61
  "commander": "^14.0.0",
62
62
  "zod": "^3.23.8",
63
- "hzl-core": "1.26.0",
64
- "hzl-web": "1.26.0"
63
+ "hzl-core": "1.26.1",
64
+ "hzl-web": "1.26.1"
65
65
  },
66
66
  "devDependencies": {
67
67
  "@types/better-sqlite3": "^7.6.13",