@staff0rd/assist 0.296.0 → 0.297.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 +7 -6
- package/claude/commands/handover.md +20 -9
- package/claude/commands/recall.md +30 -27
- package/dist/index.js +1632 -1574
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -45,12 +45,12 @@ After installation, the `assist` command will be available globally. You can als
|
|
|
45
45
|
- `/devlog` - Generate devlog entry for the next unversioned day
|
|
46
46
|
- `/draft` - Draft a new backlog item with LLM-assisted questioning
|
|
47
47
|
- `/forward-comments` - Split a coarse PR comment (e.g. from Slack) into per-line review comments on the current branch's PR, attributed to the original reviewer
|
|
48
|
-
- `/handover` - Write a session handover note
|
|
48
|
+
- `/handover` - Write a session handover note for the next conversation and save it to the backlog DB (scoped by git origin, never on disk). Can be run any number of times; each call appends a note with a one-line summary. The SessionStart hook advises how many unrecalled handovers exist
|
|
49
49
|
- `/pr` - Raise a PR with a concise description
|
|
50
50
|
- `/prs-slack <number>` - Post a PR's title and URL to the Slack channel configured in `prs.slack`
|
|
51
51
|
- `/refactor` - Run refactoring checks for code quality
|
|
52
52
|
- `/prompts` - Analyze denied tool calls and suggest settings changes to auto-allow recurring prompts
|
|
53
|
-
- `/recall` - Recall
|
|
53
|
+
- `/recall` - Recall the most recent handover note for this repo from the backlog DB, emit it as a `# Recall` block, and mark it recalled. Reads DB handovers only (no transcripts or disk files)
|
|
54
54
|
- `/refine` - Refine an existing backlog item through conversation
|
|
55
55
|
- `/restructure` - Analyze and restructure tightly-coupled files
|
|
56
56
|
- `/review-comments` - Process PR review comments one by one
|
|
@@ -107,7 +107,7 @@ After installation, the `assist` command will be available globally. You can als
|
|
|
107
107
|
- `--top <n>` - Only report the top `n` repos by commit count; committers and the author breakdown then cover those repos only (also caps the per-repo author queries, which speeds up large orgs)
|
|
108
108
|
- `--json` - Output all three views as structured JSON instead of tables
|
|
109
109
|
- `assist news add [url]` - Add an RSS feed URL (rendered in the sessions web News tab)
|
|
110
|
-
Backlog data is stored in a global Postgres database (shared across all repos, scoped per repository by git origin), so a connection string is required. Set it via the `
|
|
110
|
+
Backlog data is stored in a global Postgres database (shared across all repos, scoped per repository by git origin), so a connection string is required. Set it via the `ASSIST_DATABASE_URL` environment variable or the `database.url` key in `assist.yml`; the environment variable takes precedence. Without one, every `assist backlog` command exits with a setup message. (There is no SQLite/JSONL fallback.) Commands default to the current repository's items; pass `--all-repos` to span every repository.
|
|
111
111
|
|
|
112
112
|
The first backlog command in a repository that still has a local `.assist/backlog.jsonl` automatically migrates it into Postgres — but only as a one-time bootstrap into an empty origin. If Postgres has **no** items for the repo's origin yet, it runs `git pull` (best-effort) to fetch the latest committed copy, imports every item under the origin with fresh global IDs (rewriting links to other items), and verifies the result. If Postgres **already** has items for that origin (a prior run, another clone, or a pre-seeded database), the import is skipped to avoid creating duplicates. Either way the local `.assist/backlog.jsonl` and `.assist/backlog.db` are renamed to `*.bak`, so the migration never re-runs and a local copy is retained.
|
|
113
113
|
|
|
@@ -224,9 +224,10 @@ The first backlog command in a repository that still has a local `.assist/backlo
|
|
|
224
224
|
- `assist sql tables [connection]` - List tables in the connected database (via INFORMATION_SCHEMA.TABLES)
|
|
225
225
|
- `assist sql columns <table> [connection]` - List columns for a table (use `schema.table` for non-default schema; via INFORMATION_SCHEMA.COLUMNS)
|
|
226
226
|
- `assist screenshot <process>` - Capture a screenshot of a running application window (e.g. `assist screenshot notepad`). Output directory is configurable via `screenshot.outputDir` (default `./screenshots`)
|
|
227
|
-
- `assist handover
|
|
228
|
-
- `assist handover
|
|
229
|
-
- `assist handover
|
|
227
|
+
- `assist handover save --summary <s>` - Save a session handover note to the backlog DB (content read from stdin), scoped by the repo's git origin. Appends a new row each call; `--summary` is the one-line description shown when recalling
|
|
228
|
+
- `assist handover list` - List unrecalled handovers for this repo, most recent first, one per line as tab-separated `id`, ISO-8601 created timestamp, and one-line summary. Prints nothing when none are pending
|
|
229
|
+
- `assist handover recall [id]` - Print an unrecalled handover for this repo and mark it recalled (so it drops out of the SessionStart advisory and future recalls). Recalls the most recent by default, or the given `id`. Prints nothing when none match
|
|
230
|
+
- `assist handover load` - SessionStart hook entry point: reads `{cwd, session_id}` from stdin, migrates any legacy disk handovers (`.assist/HANDOVER.md` and notes under `.assist/handovers/`) into the backlog DB then deletes them, and emits `{ hookSpecificOutput: { hookEventName: "SessionStart" }, systemMessage }` advising how many unrecalled handovers exist. Emits nothing when there are none (use `/recall` to load one)
|
|
230
231
|
- `assist mermaid export [file.md]` - Render each fenced mermaid block to `<stem>-<index>.svg` via [Kroki](https://kroki.io). With no file, scans `*.md` in the current directory (non-recursive). Use `--out <dir>` to override the output directory. Use `--index <n>` to render only the nth mermaid block (1-based; requires a file argument). Endpoint is configurable via `mermaid.krokiUrl` (default `https://kroki.io`).
|
|
231
232
|
- `assist prompts` - Show top 10 denied tool calls by frequency with count and repo breakdown
|
|
232
233
|
- `assist coverage` - Print global statement coverage percentage
|
|
@@ -2,17 +2,13 @@
|
|
|
2
2
|
description: Write a session handover note for the next conversation
|
|
3
3
|
---
|
|
4
4
|
|
|
5
|
-
Write a concise handover note for the next session working on this repo. The note captures everything the next session needs to pick up where this one left off.
|
|
5
|
+
Write a concise handover note for the next session working on this repo, then save it to the backlog database. The note captures everything the next session needs to pick up where this one left off.
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
Handover notes are stored in the backlog DB (scoped by git origin), never on disk. `/handover` can be run any number of times — each run appends a new note.
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
## Step 1: Compose the note
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
## Step 2: Write `.assist/HANDOVER.md`
|
|
14
|
-
|
|
15
|
-
Always operate on the current working directory. Write the file at `.assist/HANDOVER.md` (create the `.assist/` directory if needed). Use the following sections, in this order, and omit none even if empty (use a single "—" placeholder line):
|
|
11
|
+
Always operate on the current working directory. Compose the note body using the following sections, in this order, and omit none even if empty (use a single "—" placeholder line):
|
|
16
12
|
|
|
17
13
|
```markdown
|
|
18
14
|
# Handover
|
|
@@ -46,9 +42,24 @@ Non-obvious gotchas, in-flight refactors, broken tests, half-applied changes, or
|
|
|
46
42
|
Things that have been ruled out, attempted unsuccessfully, or that the user has explicitly asked not to do. Saves the next session from repeating dead ends.
|
|
47
43
|
```
|
|
48
44
|
|
|
45
|
+
## Step 2: Save the note
|
|
46
|
+
|
|
47
|
+
Author a one-line summary (under 100 chars) describing the note — this is what `/recall` shows when listing notes. Then save it by piping the composed note into `assist handover save` via stdin:
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
assist handover save --summary "<one-line summary>" <<'HANDOVER_EOF'
|
|
51
|
+
# Handover
|
|
52
|
+
|
|
53
|
+
## Current Task
|
|
54
|
+
...
|
|
55
|
+
HANDOVER_EOF
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
Use a quoted heredoc delimiter (`<<'HANDOVER_EOF'`) so nothing in the note body is expanded by the shell. The command resolves the repo's git origin and inserts a new row in the backlog DB.
|
|
59
|
+
|
|
49
60
|
## Guidelines
|
|
50
61
|
|
|
51
62
|
- Keep each section terse — bullets, not paragraphs. The next session will read this cold.
|
|
52
63
|
- Reference concrete file paths and line numbers wherever it helps orientation.
|
|
53
64
|
- Do not summarise context that is already obvious from the code or git history.
|
|
54
|
-
- Do not
|
|
65
|
+
- Do not write `.assist/HANDOVER.md` or any other file — handovers live only in the backlog DB.
|
|
@@ -2,51 +2,54 @@
|
|
|
2
2
|
description: Recall context from the most recent prior session in this repo
|
|
3
3
|
---
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Load the most recent handover note for this repo so the current session can pick up where the last one left off. Always operate on the current working directory; do not ask which repo to recall.
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
Handover notes are stored in the backlog database (scoped by git origin), authored by `/handover`. `/recall` reads only those notes — it does not read session transcripts or any disk files.
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
## Step 1: List unrecalled notes
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
2. List `*.jsonl` files in that directory, newest-first by mtime.
|
|
13
|
-
3. Walk the list and pick the **first** file that satisfies all of:
|
|
14
|
-
- It is **not** the current session's JSONL (the current session id is in `$CLAUDE_SESSION_ID` if set, or matches the JSONL whose tail you would actively be appending to right now — when in doubt, skip the newest if it could be this session).
|
|
15
|
-
- It is **not** an sdk-cli-only transcript. A transcript is sdk-cli-only when every `type:"user"` entry with text content has `"entrypoint":"sdk-cli"`. If at least one `type:"user"` entry has `"entrypoint":"cli"` (or any value other than `sdk-cli`), the transcript counts as a real interactive session and is eligible.
|
|
11
|
+
Run:
|
|
16
12
|
|
|
17
|
-
|
|
13
|
+
```bash
|
|
14
|
+
assist handover list
|
|
15
|
+
```
|
|
18
16
|
|
|
19
|
-
|
|
20
|
-
# Recall
|
|
17
|
+
This prints one unrecalled handover per line, most recent first, as tab-separated `id`, ISO-8601 created timestamp, and one-line summary.
|
|
21
18
|
|
|
22
|
-
No
|
|
23
|
-
|
|
19
|
+
- **No output** — there are no unrecalled handovers. Skip to Step 3 and emit the "no handover" block.
|
|
20
|
+
- **Exactly one line** — recall it directly in Step 2 with no id.
|
|
21
|
+
- **More than one line** — present the summaries (with their created timestamps) to the user and ask which to recall, then pass the chosen `id` in Step 2.
|
|
22
|
+
|
|
23
|
+
## Step 2: Recall the chosen note
|
|
24
24
|
|
|
25
|
-
|
|
25
|
+
Run:
|
|
26
26
|
|
|
27
|
-
|
|
27
|
+
```bash
|
|
28
|
+
assist handover recall [id]
|
|
29
|
+
```
|
|
28
30
|
|
|
29
|
-
|
|
31
|
+
With no argument this recalls the most recent unrecalled handover; with an `id` it recalls that specific note. Either way it prints the note's content to stdout and marks it recalled (so it drops out of the SessionStart advisory and future recalls).
|
|
30
32
|
|
|
31
|
-
|
|
33
|
+
## Step 3: Surface it
|
|
34
|
+
|
|
35
|
+
If the command printed content, present it to the user as a `# Recall` block so they can resume:
|
|
32
36
|
|
|
33
37
|
```markdown
|
|
34
38
|
# Recall
|
|
35
39
|
|
|
36
|
-
|
|
40
|
+
<the recalled handover content>
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
If the command printed nothing, there are no unrecalled handovers — emit:
|
|
37
44
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
- <bullet>
|
|
41
|
-
- <bullet>
|
|
45
|
+
```markdown
|
|
46
|
+
# Recall
|
|
42
47
|
|
|
43
|
-
|
|
48
|
+
No handover found for this repo.
|
|
44
49
|
```
|
|
45
50
|
|
|
46
51
|
## Guidelines
|
|
47
52
|
|
|
48
53
|
- Always operate on the current working directory — never guess or substitute another repo.
|
|
49
|
-
-
|
|
50
|
-
-
|
|
51
|
-
- If `.assist/HANDOVER.md` exists, the SessionStart hook will already have surfaced it — `/recall` complements that by pulling context from the prior transcript, not the handover file.
|
|
52
|
-
- Do not modify any files. `/recall` is read-only.
|
|
54
|
+
- `/recall` is the counterpart to `/handover`: it reads notes the previous session authored, nothing else.
|
|
55
|
+
- Do not write or modify any files.
|