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