@workscribe/cli 1.15.4 → 1.15.6

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 (3) hide show
  1. package/README.md +33 -101
  2. package/dist/index.js +5 -5
  3. package/package.json +23 -8
package/README.md CHANGED
@@ -1,8 +1,12 @@
1
1
  # Workscribe
2
2
 
3
+ [![npm version](https://img.shields.io/npm/v/@workscribe/cli)](https://www.npmjs.com/package/@workscribe/cli)
4
+ [![npm downloads](https://img.shields.io/npm/dw/@workscribe/cli)](https://www.npmjs.com/package/@workscribe/cli)
5
+ [![license](https://img.shields.io/npm/l/@workscribe/cli)](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
@@ -17,6 +21,8 @@ $ workscribe summary
17
21
  - Investigated and resolved Docker networking issue in compose setup
18
22
  ```
19
23
 
24
+ **[Full documentation →](https://workscribe.mintlify.site)** — commands, configuration, AI providers, troubleshooting. This README covers getting started; everything else lives there and is kept current as the product changes.
25
+
20
26
  ## How it works
21
27
 
22
28
  A shell hook captures every command you run. At the end of the day, `workscribe summary` groups your activity into work sessions and sends structured event data (never raw commands) to your configured AI provider, which returns a standup-ready narrative.
@@ -47,12 +53,16 @@ source ~/.zshrc # or restart your terminal
47
53
 
48
54
  `workscribe init` walks you through choosing an AI provider, installs the shell hook, and offers to install a Claude Code session capture hook if Claude Code is detected. Safe to re-run — updates outdated hooks and skips steps already complete.
49
55
 
56
+ ## Also capturing in your editor?
57
+
58
+ 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.
59
+
50
60
  ## Uninstalling
51
61
 
52
62
  If the CLI is still installed:
53
63
 
54
64
  ```bash
55
- workscribe uninstall # removes shell hooks, optionally deletes ~/.workscribe/
65
+ workscribe uninstall # removes shell hooks, optionally deletes local data
56
66
  npm uninstall -g @workscribe/cli
57
67
  ```
58
68
 
@@ -64,128 +74,48 @@ If you've already removed the binary and still see `_workscribe_precmd` errors i
64
74
 
65
75
  ## AI providers
66
76
 
67
- Workscribe works with any of these — switch at any time via config:
68
-
69
- | Provider | Config value | Requires |
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…) |
77
+ Anthropic, OpenAI, Gemini, Groq, Ollama (fully offline), or any OpenAI-compatible endpoint.
75
78
 
76
79
  ```bash
77
- workscribe config set ai.provider ollama # switch to local
78
- workscribe config set ai.provider anthropic # switch to Anthropic
80
+ workscribe config set ai.provider anthropic
79
81
  workscribe config set ai.apiKey <your-key>
80
82
  ```
81
83
 
84
+ **[Provider setup, defaults, and model overrides →](https://workscribe.mintlify.site/providers)**
85
+
82
86
  ## Commands
83
87
 
88
+ A few of the most common:
89
+
84
90
  | Command | Description |
85
91
  |---|---|
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
92
  | `workscribe summary` | Generate today's work summary |
89
- | `workscribe summary --date 2026-05-20` | Summary for a specific date |
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 |
93
+ | `workscribe week` | Generate this week's digest |
103
94
  | `workscribe status` | Check capture is active and show event counts |
104
- | `workscribe undo` | Remove the last captured event |
105
- | `workscribe undo -n 5` | Remove the last 5 captured events |
106
- | `workscribe undo --dry-run` | Preview what would be removed without deleting |
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 |
95
+ | `workscribe config` | View or update configuration |
96
+
97
+ **[Full command reference →](https://workscribe.mintlify.site/commands)** — every command and every flag.
116
98
 
117
99
  ## Privacy
118
100
 
119
- - All captured data is stored locally in `~/.workscribe/` — nothing is written anywhere else
101
+ - All captured activity data is stored locally on your machine — nothing is written anywhere else
120
102
  - Credentials are redacted before any event is written to disk (tokens, API keys, passwords, JWTs)
121
- - Nothing is sent to any remote server except your configured AI provider, only when you run `workscribe summary`
122
- - The AI provider receives structured event categories (e.g. `test_run`, `code_commit`) — never raw commands, file contents, or file paths
123
- - Use Ollama to keep everything fully on-device with zero external data transmission
103
+ - Your captured activity (commands, sessions) is never sent anywhere except your configured AI provider, and only when you run `workscribe summary`
104
+ - Use Ollama to keep that data fully on-device with zero external transmission
105
+ - 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`
106
+
107
+ **[Full privacy & security details →](https://workscribe.mintlify.site/privacy)**
124
108
 
125
109
  ## Configuration
126
110
 
127
111
  ```bash
128
- workscribe config set session.idleTimeout 20 # minutes before a new session starts (default: 30)
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
112
+ workscribe config set ai.provider anthropic
113
+ workscribe config set session.idleTimeout 20
138
114
  workscribe config set integrations.slackWebhook https://hooks.slack.com/services/...
139
- workscribe config set integrations.webhook https://custom.endpoint/hook # persistent default webhook
140
115
  workscribe summary --slack
141
- workscribe summary --webhook https://custom.endpoint/hook # one-off override
142
116
  ```
143
117
 
144
- | Config key | Default | Description |
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`.
118
+ **[Full configuration reference →](https://workscribe.mintlify.site/configuration)** — every key, Slack setup, webhooks, and more.
189
119
 
190
120
  ## Debug mode
191
121
 
@@ -195,6 +125,8 @@ If capture isn't working, set `WORKSCRIBE_DEBUG=1` to write errors to `~/.worksc
195
125
  WORKSCRIBE_DEBUG=1 workscribe status
196
126
  ```
197
127
 
128
+ **[Troubleshooting →](https://workscribe.mintlify.site/troubleshooting)**
129
+
198
130
  ## License
199
131
 
200
132
  MIT
package/dist/index.js CHANGED
@@ -4145,7 +4145,7 @@ function registerBugReport(program) {
4145
4145
  const timestamp = (/* @__PURE__ */ new Date()).toISOString().replace(/[:.]/g, "-");
4146
4146
  const reportPath = import_path17.default.join(WORKSCRIBE_DIR, `bug-report-${timestamp}.txt`);
4147
4147
  const systemInfo = [
4148
- `Workscribe version : ${"1.15.4"}`,
4148
+ `Workscribe version : ${"1.15.6"}`,
4149
4149
  `Node.js version : ${process.version}`,
4150
4150
  `Platform : ${process.platform}`,
4151
4151
  `Architecture : ${process.arch}`,
@@ -4176,7 +4176,7 @@ function registerBugReport(program) {
4176
4176
  process.exit(1);
4177
4177
  }
4178
4178
  const params = new URLSearchParams({
4179
- title: `Bug report \u2014 workscribe ${"1.15.4"}`,
4179
+ title: `Bug report \u2014 workscribe ${"1.15.6"}`,
4180
4180
  body: `<!-- Attach ${import_path17.default.basename(reportPath)} or paste the relevant sections below -->
4181
4181
 
4182
4182
  **Describe the issue:**
@@ -4376,7 +4376,7 @@ function isNewer(latest, current) {
4376
4376
  return latestPatch > currentPatch;
4377
4377
  }
4378
4378
  function checkForUpdate() {
4379
- const current = "1.15.4";
4379
+ const current = "1.15.6";
4380
4380
  const cache = readCache();
4381
4381
  if (cache && isNewer(cache.latestVersion, current)) {
4382
4382
  process.stderr.write(
@@ -4399,7 +4399,7 @@ function checkForUpdate() {
4399
4399
  function buildTelemetryPayload(config) {
4400
4400
  return {
4401
4401
  installId: config.telemetry.installId,
4402
- cliVersion: "1.15.4",
4402
+ cliVersion: "1.15.6",
4403
4403
  platform: import_os10.default.platform(),
4404
4404
  nodeVersion: process.version
4405
4405
  };
@@ -4474,7 +4474,7 @@ var require_main = __commonJS({
4474
4474
  pingTelemetry();
4475
4475
  }
4476
4476
  var program = new import_commander.Command();
4477
- program.name("workscribe").description("Automatic developer work journal").version("1.15.4");
4477
+ program.name("workscribe").description("Automatic developer work journal").version("1.15.6");
4478
4478
  registerCapture(program);
4479
4479
  registerHook(program);
4480
4480
  registerInit(program);
package/package.json CHANGED
@@ -1,7 +1,29 @@
1
1
  {
2
2
  "name": "@workscribe/cli",
3
- "version": "1.15.4",
3
+ "version": "1.15.6",
4
4
  "description": "Passive developer work journal — automatic terminal activity summaries",
5
+ "homepage": "https://workscribe.co",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "https://github.com/workscribe/cli"
9
+ },
10
+ "bugs": {
11
+ "url": "https://github.com/workscribe/cli/issues"
12
+ },
13
+ "keywords": [
14
+ "cli",
15
+ "developer-tools",
16
+ "terminal",
17
+ "journal",
18
+ "work-journal",
19
+ "standup",
20
+ "productivity",
21
+ "ai",
22
+ "summary",
23
+ "git",
24
+ "time-tracking",
25
+ "shell"
26
+ ],
5
27
  "type": "commonjs",
6
28
  "bin": {
7
29
  "workscribe": "dist/index.js"
@@ -29,13 +51,6 @@
29
51
  "dist",
30
52
  "shell"
31
53
  ],
32
- "keywords": [
33
- "developer-tools",
34
- "journal",
35
- "terminal",
36
- "productivity",
37
- "standup"
38
- ],
39
54
  "author": "Mark Edomwande",
40
55
  "license": "MIT",
41
56
  "dependencies": {