@workscribe/cli 1.15.5 → 2.0.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/README.md +48 -113
- package/dist/index.js +3286 -2191
- package/dist/index.js.map +1 -1
- package/package.json +25 -9
- package/skills/workscribe/SKILL.md +61 -0
- package/skills/workscribe/references/json-contract.md +43 -0
- package/skills/workscribe/references/summary-format.md +36 -0
package/README.md
CHANGED
|
@@ -1,28 +1,41 @@
|
|
|
1
1
|
# Workscribe
|
|
2
2
|
|
|
3
|
+
[](https://www.npmjs.com/package/@workscribe/cli)
|
|
4
|
+
[](https://www.npmjs.com/package/@workscribe/cli)
|
|
5
|
+
[](https://www.npmjs.com/package/@workscribe/cli)
|
|
6
|
+
|
|
3
7
|
> Your work, automatically documented.
|
|
4
8
|
|
|
5
|
-
Workscribe is a CLI tool that passively captures your terminal activity and transforms it into readable daily work summaries — without you having to write anything.
|
|
9
|
+
[Workscribe](https://workscribe.co) is a CLI tool that passively captures your terminal activity and transforms it into readable daily work summaries — without you having to write anything.
|
|
6
10
|
|
|
7
11
|
```
|
|
8
12
|
$ workscribe summary
|
|
9
13
|
|
|
10
14
|
## api-service (feature/auth) — 2h 15m
|
|
11
|
-
-
|
|
12
|
-
-
|
|
13
|
-
-
|
|
15
|
+
- Committed: add JWT validation middleware
|
|
16
|
+
- Committed: fix token expiry check
|
|
17
|
+
- Resolved failing tests (9 runs, now passing)
|
|
18
|
+
- Added dependencies: bcrypt, jsonwebtoken
|
|
19
|
+
- Pushed to origin/feature/auth
|
|
14
20
|
|
|
15
21
|
## infrastructure — 45m
|
|
16
|
-
-
|
|
17
|
-
-
|
|
22
|
+
- Note: staging was flaky after the compose upgrade
|
|
23
|
+
- Builds passing (2 runs)
|
|
18
24
|
```
|
|
19
25
|
|
|
26
|
+
Want prose instead? Ask your coding agent to *"summarize my work today"* — see [Summaries](#summaries).
|
|
27
|
+
|
|
28
|
+
**[Full documentation →](https://workscribe.mintlify.site)** — commands, configuration, summaries, troubleshooting. This README covers getting started; everything else lives there and is kept current as the product changes.
|
|
29
|
+
|
|
20
30
|
## How it works
|
|
21
31
|
|
|
22
|
-
A shell hook captures every command you run. At the end of the day, `workscribe summary` groups your activity into work sessions and
|
|
32
|
+
A shell hook captures every command you run. At the end of the day, `workscribe summary` groups your activity into work sessions and turns them into a summary with its offline template engine — no AI provider, no API key, nothing sent anywhere.
|
|
33
|
+
|
|
34
|
+
For AI-written prose, ask the coding agent you already use (Claude Code, Codex, GitHub Copilot or Cursor) to *"summarize my work today"*. The Workscribe agent skill reads your sessions and writes the summary — install it with `workscribe skill install`.
|
|
23
35
|
|
|
24
36
|
```
|
|
25
|
-
shell hook → capture → SQLite → session grouper →
|
|
37
|
+
shell hook → capture → SQLite → session grouper → template engine → markdown
|
|
38
|
+
↘ agent skill (your coding agent) → prose summary
|
|
26
39
|
```
|
|
27
40
|
|
|
28
41
|
## Requirements
|
|
@@ -45,15 +58,19 @@ source ~/.zshrc # or restart your terminal
|
|
|
45
58
|
|
|
46
59
|
> Use the global install flag for your package manager — e.g. `npm install -g`, `yarn global add`, `pnpm add -g`, or `bun add -g`.
|
|
47
60
|
|
|
48
|
-
`workscribe init`
|
|
61
|
+
`workscribe init` installs the shell hook, offers to install a Claude Code session capture hook if Claude Code is detected, and offers to install the Workscribe skill into the coding agents it finds. Safe to re-run — updates outdated hooks and skips steps already complete.
|
|
62
|
+
|
|
63
|
+
## Also capturing in your editor?
|
|
64
|
+
|
|
65
|
+
The [Workscribe VS Code extension](https://marketplace.visualstudio.com/items?itemName=workscribe.workscribe) feeds file saves, debug sessions, and test/build runs into the same summary — activity pure terminal capture misses entirely. It also adds a status bar item that surfaces the last summary for a file you haven't touched in 24+ hours. Uses this CLI under the hood; no separate setup beyond installing it.
|
|
49
66
|
|
|
50
67
|
## Uninstalling
|
|
51
68
|
|
|
52
69
|
If the CLI is still installed:
|
|
53
70
|
|
|
54
71
|
```bash
|
|
55
|
-
workscribe uninstall # removes shell hooks, optionally deletes
|
|
56
|
-
npm uninstall -g @workscribe/cli
|
|
72
|
+
workscribe uninstall # removes shell hooks and the agent skill, optionally deletes local data
|
|
73
|
+
npm uninstall -g @workscribe/cli # run after — npm doesn't run Workscribe's cleanup itself
|
|
57
74
|
```
|
|
58
75
|
|
|
59
76
|
If you've already removed the binary and still see `_workscribe_precmd` errors in your terminal, remove the hook block manually:
|
|
@@ -62,130 +79,46 @@ If you've already removed the binary and still see `_workscribe_precmd` errors i
|
|
|
62
79
|
2. Delete everything between `# workscribe:hook:start` and `# workscribe:hook:end` (inclusive)
|
|
63
80
|
3. Run `source ~/.zshrc` or restart your terminal
|
|
64
81
|
|
|
65
|
-
##
|
|
82
|
+
## Summaries
|
|
66
83
|
|
|
67
|
-
|
|
84
|
+
`workscribe summary`, `week` and `export` use a built-in template engine: deterministic, instant and fully offline. There's nothing to configure.
|
|
68
85
|
|
|
69
|
-
|
|
70
|
-
|---|---|---|
|
|
71
|
-
| Anthropic (Claude) | `anthropic` | API key |
|
|
72
|
-
| OpenAI | `openai` | API key |
|
|
73
|
-
| Ollama (local) | `ollama` | Ollama running locally — free, offline |
|
|
74
|
-
| OpenAI-compatible | `openai-compatible` | API key + base URL (Groq, Together, Mistral…) |
|
|
86
|
+
For AI-written summaries, use the coding agent you already have. `workscribe skill install` adds the Workscribe skill to Claude Code, Codex, GitHub Copilot and Cursor; then ask the agent to *"summarize my work today"* (or type `/workscribe` in Claude Code). Summaries the agent writes are saved, so `workscribe summary` and the VS Code status bar show them too.
|
|
75
87
|
|
|
76
|
-
|
|
77
|
-
workscribe config set ai.provider ollama # switch to local
|
|
78
|
-
workscribe config set ai.provider anthropic # switch to Anthropic
|
|
79
|
-
workscribe config set ai.apiKey <your-key>
|
|
80
|
-
```
|
|
88
|
+
**[How summaries work →](https://workscribe.mintlify.site/summaries)** · **Upgrading from 1.x?** AI providers were removed in 2.0 — see the **[migration guide →](https://workscribe.mintlify.site/migrating-to-2)**
|
|
81
89
|
|
|
82
90
|
## Commands
|
|
83
91
|
|
|
92
|
+
A few of the most common:
|
|
93
|
+
|
|
84
94
|
| Command | Description |
|
|
85
95
|
|---|---|
|
|
86
|
-
| `workscribe init` | Set up Workscribe, install shell hooks, configure AI provider |
|
|
87
|
-
| `workscribe uninstall` | Remove shell hooks and optionally delete all local data |
|
|
88
96
|
| `workscribe summary` | Generate today's work summary |
|
|
89
|
-
| `workscribe
|
|
90
|
-
| `workscribe summary --week` | Summary for the current week |
|
|
91
|
-
| `workscribe summary --fresh` | Bypass cache and regenerate |
|
|
92
|
-
| `workscribe summary --verbose` | Show all captured events (including those excluded from AI) |
|
|
93
|
-
| `workscribe summary --slack` | Post summary to configured Slack channel |
|
|
94
|
-
| `workscribe summary --webhook <url>` | Post summary to a custom webhook URL |
|
|
95
|
-
| `workscribe sessions` | List detected work sessions for today |
|
|
96
|
-
| `workscribe sessions --date 2026-05-20` | Sessions for a specific date |
|
|
97
|
-
| `workscribe events` | List captured events for today |
|
|
98
|
-
| `workscribe events --date 2026-05-20` | Events for a specific date |
|
|
99
|
-
| `workscribe events --limit 20` | Show only the most recent N events |
|
|
100
|
-
| `workscribe export` | Save today's summary as a markdown file |
|
|
101
|
-
| `workscribe export --date 2026-05-20` | Export summary for a specific date |
|
|
102
|
-
| `workscribe export --output <path>` | Write to a custom file path |
|
|
97
|
+
| `workscribe week` | Generate this week's digest |
|
|
103
98
|
| `workscribe status` | Check capture is active and show event counts |
|
|
104
|
-
| `workscribe
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
| `workscribe clear` | Delete all captured events for today |
|
|
108
|
-
| `workscribe clear --date 2026-05-20` | Delete all events for a specific date |
|
|
109
|
-
| `workscribe clear --dry-run` | Preview what would be cleared without deleting |
|
|
110
|
-
| `workscribe clear --yes` | Skip the confirmation prompt |
|
|
111
|
-
| `workscribe pause` | Pause capture temporarily |
|
|
112
|
-
| `workscribe resume` | Resume capture after a pause |
|
|
113
|
-
| `workscribe config` | View current configuration |
|
|
114
|
-
| `workscribe config get KEY` | Print a single config value |
|
|
115
|
-
| `workscribe config set KEY VALUE` | Update a config value |
|
|
99
|
+
| `workscribe config` | View or update configuration |
|
|
100
|
+
|
|
101
|
+
**[Full command reference →](https://workscribe.mintlify.site/commands)** — every command and every flag.
|
|
116
102
|
|
|
117
103
|
## Privacy
|
|
118
104
|
|
|
119
|
-
- All captured data is stored locally
|
|
105
|
+
- All captured activity data is stored locally on your machine — nothing is written anywhere else
|
|
120
106
|
- Credentials are redacted before any event is written to disk (tokens, API keys, passwords, JWTs)
|
|
121
|
-
-
|
|
122
|
-
- The
|
|
123
|
-
-
|
|
107
|
+
- `workscribe summary`, `week` and `export` never send your activity anywhere — the template engine runs entirely on your machine
|
|
108
|
+
- The agent skill is the one exception, and only when you ask your coding agent for a summary: the agent sends the session data it reads to its own model provider
|
|
109
|
+
- Separately, Workscribe sends an anonymous install ping (a random ID, CLI version, OS platform, Node version — no activity data, ever), disclosed during `workscribe init`. Opt out anytime: `workscribe config set telemetry.enabled false`
|
|
110
|
+
|
|
111
|
+
**[Full privacy & security details →](https://workscribe.mintlify.site/privacy)**
|
|
124
112
|
|
|
125
113
|
## Configuration
|
|
126
114
|
|
|
127
115
|
```bash
|
|
128
|
-
workscribe config set session.idleTimeout 20
|
|
129
|
-
workscribe config set ai.model gpt-4o # override the default model for your provider
|
|
130
|
-
workscribe config set redact.extra "MY_PATTERN" # add a custom redaction regex
|
|
131
|
-
workscribe config set summary.format json # output summary as JSON instead of markdown
|
|
132
|
-
workscribe config set capture.ignore "mycommand" # suppress a command from being captured
|
|
133
|
-
|
|
134
|
-
# Override the display name for a local clone whose folder name differs from the repo
|
|
135
|
-
workscribe config set projects./Users/me/sandbox/myrepo actual-repo-name
|
|
136
|
-
|
|
137
|
-
# Post summaries to Slack or a custom webhook
|
|
116
|
+
workscribe config set session.idleTimeout 20
|
|
138
117
|
workscribe config set integrations.slackWebhook https://hooks.slack.com/services/...
|
|
139
|
-
workscribe config set integrations.webhook https://custom.endpoint/hook # persistent default webhook
|
|
140
118
|
workscribe summary --slack
|
|
141
|
-
workscribe summary --webhook https://custom.endpoint/hook # one-off override
|
|
142
119
|
```
|
|
143
120
|
|
|
144
|
-
|
|
145
|
-
|---|---|---|
|
|
146
|
-
| `ai.provider` | — | AI provider: `anthropic`, `openai`, `ollama`, `openai-compatible` |
|
|
147
|
-
| `ai.apiKey` | — | API key for the configured provider |
|
|
148
|
-
| `ai.model` | provider default | Model name override |
|
|
149
|
-
| `ai.baseUrl` | — | Base URL for `openai-compatible` providers |
|
|
150
|
-
| `session.idleTimeout` | `30` | Minutes of inactivity before a new session starts |
|
|
151
|
-
| `git.qualifyRepoName` | `false` | Use `owner/repo` instead of bare `repo` for `repo_name` — helpful if you work across repos whose bare names collide (e.g. an org that names its repos after the tool each one targets) |
|
|
152
|
-
| `capture.ignore` | common shell builtins | Commands to exclude from capture |
|
|
153
|
-
| `capture.aiTools` | `true` | Set to `false` to disable all AI session capture |
|
|
154
|
-
| `capture.includeAiderPrompt` | `true` | Set to `false` to skip reading Aider's history file for prompt context |
|
|
155
|
-
| `redact.extra` | `[]` | Additional regex patterns to redact from captured commands |
|
|
156
|
-
| `summary.format` | `markdown` | Output format: `markdown` or `json` |
|
|
157
|
-
| `summary.includeCategories` | `[]` | Event categories to re-include in the AI prompt (e.g. `["linting"]`) |
|
|
158
|
-
| `integrations.slackWebhook` | — | Slack incoming webhook URL |
|
|
159
|
-
| `integrations.webhook` | — | Default webhook URL for `--webhook` |
|
|
160
|
-
| `projects.<path>` | — | Display name override for a repo by absolute path |
|
|
161
|
-
|
|
162
|
-
## Slack integration
|
|
163
|
-
|
|
164
|
-
Post your daily or weekly summary directly to a Slack channel:
|
|
165
|
-
|
|
166
|
-
```bash
|
|
167
|
-
workscribe summary --slack
|
|
168
|
-
workscribe summary --week --slack
|
|
169
|
-
```
|
|
170
|
-
|
|
171
|
-
**Setup:**
|
|
172
|
-
|
|
173
|
-
1. Go to [api.slack.com/apps](https://api.slack.com/apps) → **Create New App** → **From scratch**
|
|
174
|
-
2. Name your app, select your workspace, and click **Create App**
|
|
175
|
-
3. In the left sidebar under **Features**, click **Incoming Webhooks**
|
|
176
|
-
4. Toggle **Activate Incoming Webhooks** to On
|
|
177
|
-
5. Click **Add New Webhook to Workspace**, choose a channel, and click **Allow**
|
|
178
|
-
6. Copy the webhook URL and run:
|
|
179
|
-
|
|
180
|
-
```bash
|
|
181
|
-
workscribe config set integrations.slackWebhook https://hooks.slack.com/services/...
|
|
182
|
-
```
|
|
183
|
-
|
|
184
|
-
Works on all Slack plans including free. No admin role required.
|
|
185
|
-
|
|
186
|
-
Summaries posted to Slack are automatically formatted — headings are bolded, bullets converted to `•`, and your OS username is prepended so recipients know who sent it in shared channels. Custom `--webhook` URLs receive the raw markdown output unchanged.
|
|
187
|
-
|
|
188
|
-
Config is stored at `~/.workscribe/config.json`.
|
|
121
|
+
**[Full configuration reference →](https://workscribe.mintlify.site/configuration)** — every key, Slack setup, webhooks, and more.
|
|
189
122
|
|
|
190
123
|
## Debug mode
|
|
191
124
|
|
|
@@ -195,6 +128,8 @@ If capture isn't working, set `WORKSCRIBE_DEBUG=1` to write errors to `~/.worksc
|
|
|
195
128
|
WORKSCRIBE_DEBUG=1 workscribe status
|
|
196
129
|
```
|
|
197
130
|
|
|
131
|
+
**[Troubleshooting →](https://workscribe.mintlify.site/troubleshooting)**
|
|
132
|
+
|
|
198
133
|
## License
|
|
199
134
|
|
|
200
135
|
MIT
|