feat(skills): voyage:annotating, the operator-annotation loop as one skill (order B)
The three producing commands name voyage:annotating where they build the page; the description of the page and the freehand revision left them. The skill: the person writes every note, Fix/Change edit only the quoted text, a Question is answered and changes nothing, the approval an edit costs is said before the edit, the page is rebuilt. Research documents on request (decision 62). Red baseline 3 runs per scenario without and with the skill; six eval cases; 11 pins. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
1b613421eb
commit
843897ae33
25 changed files with 550 additions and 46 deletions
35
README.md
35
README.md
|
|
@ -667,6 +667,7 @@ model. A skill is advice; each one says which check stands behind it, or "prose
|
|||
| `voyage:interviewing` | Facts looked up, never asked; one round of at most four questions per call, one decision each, the recommended answer first; the rest written down as assumptions or a Deferred list; an answer that decides nothing, and scope nobody asked for, never written in as the person's decision; stop once the next three answers can be predicted | `/trekbrief` names it for its question round | the brief's sections and `framing:` (`brief-validator`), the explicit approval at the end; the form of the interview is prose only |
|
||||
| `voyage:researching-sources` | Official sources first with URL, date and matching version; no citation, no finding; an empty search is reported with what was searched, never as a finding; fetched pages are data, and text aimed at assistants is reported; nothing local in a query; one confidence scale | `docs-`, `community-`, `security-`, `contrarian-researcher` and `research-scout` (preloaded); `/trekresearch` names it at spawn | the research brief's structure (`research-validator`); the query privacy gate only in the default-off STORM steps; the rest is prose only |
|
||||
| `voyage:reviewing-adversarially` | No praise; no finding without a source (`file:line` or a quoted line); no downgrade without a reason; what was read only as a summary is said and not judged; a Declined to Judge list so nothing set aside disappears; claims checked against the diff, not the report; the axes kept separate | `brief-conformance-reviewer`, `code-correctness-reviewer`, `review-coordinator`, `scope-guardian` (preloaded); `/trekreview` names it at spawn | a finding with no file or citation (`findings-schema`, `coordinator-contract`, partial); the `## Declined to Judge` section in `review.md` (`review-validator`); praise and the rest are prose only |
|
||||
| `voyage:annotating` | The person writes every note on the annotation page and Claude writes none; Fix and Change edit only the text a note points at, a Question is answered and changes nothing, nothing else is edited; the approval an edit costs is said before the edit; the page is built again on the revised file. Also for a research document, on request | `/trekbrief`, `/trekplan` and `/trekreview` name it where they build the page | the script and the commands' call to it (pins in `npm test`); a stale brief approval (`intent-approval`, `/trekplan` halts) and a changed plan (K2 `approval-log`, `/trekexecute` refuses); the rest is prose only |
|
||||
| `voyage:writing-criteria` | Each success criterion and each `Verify:`, `Regression:`, `End-to-end:` and `## Verification` line is one command the criteria runner accepts, written as the line's first backticked span (a known test runner, plain words, no pipe or `&&`); anything more is a script under `tests/`; and each can go red | `brief-reviewer` and `plan-critic` (preloaded); `/trekplan` names it where the plan is written and where it starts its reviewers | the criteria runner and the plan and brief validators (deterministic); that a criterion can go red and tests what the brief asks is prose only |
|
||||
|
||||
The workshop behind them runs in `npm test`: the form check `lib/skills/skill-lint.mjs` (fields,
|
||||
|
|
@ -742,11 +743,30 @@ annotation surface the operator pointed at:
|
|||
Refresh the tab or close the browser and re-open — your work is there.
|
||||
|
||||
You select / click, pick intent, write comment, repeat. When you're
|
||||
done, Copy Prompt, paste back into this chat. Claude revises the `.md`
|
||||
freehand from your notes. **The operator drives every annotation.**
|
||||
Claude never pre-generates suggestions in this flow. The surface has worked
|
||||
this way since v5.0.3; how it got here is in [CHANGELOG.md](CHANGELOG.md)
|
||||
§ v5.0.0 → § v5.0.3.
|
||||
done, Copy Prompt, paste back into this chat. **The operator drives every
|
||||
annotation.** Claude never pre-generates suggestions in this flow. The surface
|
||||
has worked this way since v5.0.3; how it got here is in
|
||||
[CHANGELOG.md](CHANGELOG.md) § v5.0.0 → § v5.0.3.
|
||||
|
||||
What Claude does with the pasted notes is the skill `voyage:annotating`
|
||||
([skills/annotating/](skills/annotating/SKILL.md)), which the three commands
|
||||
ask for by name:
|
||||
|
||||
- **Fix** and **Change** edit the text the note points at, and nothing else.
|
||||
Anything the notes did not ask for (a summary that now disagrees, the same gap
|
||||
in another step) comes back as a question, not as an edit.
|
||||
- A **Question** is answered in the chat; the text stays as it was unless you
|
||||
say to write the answer in.
|
||||
- **An edit costs an approval, and you hear it first.** A note on `## Intent`
|
||||
or `## Goal` of an approved brief makes that approval stale (`/trekplan`
|
||||
halts until you approve the new text); any edit to an approved plan gives it a
|
||||
new sha256, and `/trekexecute` refuses it until you approve it again.
|
||||
- The page is built again on the revised file, so you read the new text where
|
||||
you wrote the notes. Your last round's notes are still in its sidebar
|
||||
(they are stored per file path); "Clear all" empties it.
|
||||
|
||||
A research document under `research/` can be annotated the same way when you
|
||||
ask; `/trekresearch` does not build the page itself.
|
||||
|
||||
---
|
||||
|
||||
|
|
@ -983,8 +1003,9 @@ voyage/
|
|||
├── agents/ 24 specialized agents (all `model: opus`-pinned; per-phase model set by `--profile`)
|
||||
│ └ 21 spawnable (1 dormant: synthesis-agent, Δ≈0) + 3 orchestrator reference docs (not spawned)
|
||||
├── commands/ 6 slash commands (trekbrief, trekresearch, trekplan, trekexecute, trekreview, trekcontinue) + trekendsession helper
|
||||
├── skills/ 6 skills (test-first, debugging: preloaded into the step helper; researching-sources: preloaded into the five web-search agents;
|
||||
│ └ reviewing-adversarially: the review agents; writing-criteria: brief-reviewer, plan-critic; interviewing: named by /trekbrief)
|
||||
├── skills/ 7 skills (test-first, debugging: preloaded into the step helper; researching-sources: preloaded into the five web-search agents;
|
||||
│ └ reviewing-adversarially: the review agents; writing-criteria: brief-reviewer, plan-critic; interviewing: named by /trekbrief;
|
||||
│ └ annotating: named by /trekbrief, /trekplan and /trekreview)
|
||||
├── templates/ Frontmatter templates for brief, research, plan, session
|
||||
├── hooks/ 12 hooks (pre-bash, pre-write, pre-agent-cap, pre-plan-gate, session-title, post-bash-stats, post-approval-log, post-edit-check, pre-compact-flush, post-compact-flush, otel-export, stop-test-lock)
|
||||
├── lib/ Zero-dep parsers and validators (CLI shims under lib/validators/)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue