Skip to content

Releases: dudupii/quiver

quiver v0.5.0 — the state projection 🏹

Choose a tag to compare

@dudupii dudupii released this 22 Sep 08:10
f3f68a5

quiver v0.5.0 — the state projection 🏹📜

Handover notes are an event log: append-only, ever-growing, and increasingly polluted by superseded intermediate states. This release adds the other half — a current-state file the next session can trust at a glance.

New

handover — the current-state file .handovers/CURRENT.md (#11, #19, #20)

Alongside the note, handover now maintains a state projection: one line per durable fact, latest state only, each with its confirmation date and source note:

- Package installs must use the mirror at https://mirror.example.net (confirmed 2026-09-22 | source: 2026-09-22_0750.md)
  • Notes stay the system of record; CURRENT.md is a rebuildable projection. Every failure has a recovery path: re-run the bootstrap.
  • Incremental contract: add facts that became durable; supersede entries whose truth changed — in place, and the entry then states the new fact only (the old value leaves the file entirely; history lives in git and the source note); delete refuted entries. Untouched entries and their dates are never rewritten — dates must not lie. Zero writes when the session produced nothing durable.
  • One-time bootstrap: a first run in a repo that has notes but no CURRENT.md backfills it from the full history, each entry pointing at its original source note.
  • Concurrent agents: re-read and merge immediately before writing — no locks; a cross-branch git merge keeps both sides' additions and the newer supersede.
  • The closing reply reports state-file changes (added / superseded / deleted lines; a bootstrap leads with the entry count and lists every added line) and doubles as a receipt: note path plus the metadata chain it wrote — author, branch, commit sha, and the note it continues (#22).
  • Durable-vs-temporal judgment is part of the skill: standing facts a future session still needs go in; one-off events and anything a read-only query answers at read time stay in the note only.

catchup — state mode (#11, #19)

When CURRENT.md exists, catchup reads it first — the projection outranks what older notes claim — then every note sharing the newest note's date (concurrent same-day handoffs are reported with count and authors). State facts ride with their confirmation dates; freshness is never graded against a threshold. A numeric argument still widens the window; without CURRENT.md the default 3-note fallback applies; a CURRENT.md with no notes left is still briefed from.

Infra

  • Eval suite grew to 27 cases: five new state-projection cases (update / bootstrap / zero-write / state read / fallback), all live-verified 3/3.
  • Two suite-blocking harness defects fixed (#22): trace graders whose all-tokens-present lookahead chains went quadratic over the multi-megabyte run trace (now ^-anchored — same semantics, linear time), and five legacy case directories missing case.yaml, which wedges the 2.1.276 loader. This also re-frames the old eval-harness hang (#10) as this defect class rather than an environment blip.
  • Graders witnessing CURRENT.md writes are anchored on the run trace (Write/Edit tool_use or write-shaped Bash), after the discovery that the files grader target sees only created paths (#20).
  • The documented eval invocation now grants Edit — the harness silently strips ungranted tools (not granted: Edit).

Known cost when downgrading

Rolling back to a pre-0.5.0 quiver would treat CURRENT.md as the newest note (relay seed, handover continues) because of filename sort order. Plugins roll forward; if you must downgrade, delete .handovers/CURRENT.md — it is rebuildable by definition.

Upgrading

Agent Command
Claude Code claude plugin marketplace update quiver && claude plugin update quiver — restart the session to apply
Codex codex plugin marketplace upgrade quiver, then reinstall via codex plugin add quiver@quiver
pi pi install git:github.com/dudupii/quiver@v0.5.0 (version-pinned) or pi install git:github.com/dudupii/quiver (latest)
PrimeAgent prime-agent package install git:github.com/dudupii/quiver

The first handover after upgrading performs the one-time bootstrap — expect the entry count in that run's closing reply.

quiver v0.4.1 — the relay arrow

Choose a tag to compare

@dudupii dudupii released this 21 Sep 14:25
75f3f34

quiver v0.4.1 — the relay arrow 🏹→🚀

The handover loop is now complete: handover writes the note, relay ignites a fresh background agent from it, the agent works unattended, catchup reads the results back.

New

relay — /quiver:relay [focus] (#13, #14)

Hands the latest handover note to a brand-new background agent on this machine. The seed is a pointer — "read this note, run catchup, pursue this thread" — never a copy. The agent starts in the current working directory with a descriptive name visible in the job list and terminal title; the exact launch command is echoed in the reply.

  • User-requested only — spawning a background process is a side effect; relay never fires on its own
  • Zero writes — notes stay byte-identical (.lang included), git stays read-only; the launch is relay's only side effect
  • No note? relay refuses and points at /quiver:handover — it never invents a seed

Per-platform background-launch support — verified against each platform's own CLI and docs; where a platform has no mechanism, relay says so instead of faking a launch:

Platform Background mechanism What relay does
Claude Code Native (claude --bg) Launches; managed from the job list
Codex CLI None local — exec is foreground; queue feeds existing sessions, agents browses them Reports it; hands you the seed for a second terminal, or the experimental codex cloud exec if you use Codex Cloud
pi None in core by design — the documented path is "spawn Pi instances via tmux" Spawns a second pi under tmux (pi -p), or defers to an installed subagents extension
PrimeAgent Native — daemon-backed resident sessions Spawns a resident session (rlm.create_session); managed with prime-agent agents

handover — free-text focus (#9)

/quiver:handover zh finalize the release (or /handover fix login bug) — everything after the language token tells the note what the next session will concentrate on. Emphasis, not selection: all eight sections are still written; the focused thread gets the depth and the top next-steps.

Infra

  • CI: npm run check (manifest validation) on every push/PR
  • Pullfrog PR-review workflow (BYOK; since this release it runs on Z.ai GLM-5.3)

Upgrading

Agent Command
Claude Code claude plugin marketplace update quiver && claude plugin update quiver — restart the session to apply
Codex codex plugin marketplace upgrade quiver, then reinstall via codex plugin add quiver@quiver
pi pi update — or pin with pi install git:github.com/dudupii/quiver@v0.4.1
PrimeAgent prime-agent package update

Full changelog: v0.4.0...v0.4.1


quiver v0.4.1 — relay 箭 🏹→🚀

handover 闭环就此补全:handover 写笔记,relay 用它点火一个全新后台代理,代理无人值守干活,catchup 把成果读回来。

新增

relay — /quiver:relay [焦点](#13、#14)

把最新交接笔记交给本机一个全新后台代理。种子是指针——"读这篇笔记、跑 catchup、主攻这条线索"——绝不是笔记的拷贝。代理以描述性名称在当前工作目录启动,任务列表和终端标题一眼可辨;确切启动命令回显在回复里。

  • 仅限用户主动触发——拉起后台进程是副作用,relay 绝不自行启动
  • 零写入——笔记字节不变(含 .lang)、git 只读;点火是 relay 唯一的副作用
  • 没有笔记? relay 拒绝并指向 /quiver:handover——绝不凭空编造种子

逐平台后台启动支持——对照各平台自有 CLI 与文档逐一核实;平台没有机制时如实说明,绝不假装点火:

平台 后台机制 relay 的做法
Claude Code 原生(claude --bg) 直接点火;任务列表里管理
Codex CLI 本地没有——exec 是前台运行;queue 只喂已有会话、agents 只能浏览 如实说明;把种子交给你去第二个终端跑,或在你使用 Codex Cloud 时给出实验性的 codex cloud exec
pi 核心刻意不做——官方文档指路"经 tmux 再起 pi 实例" 经 tmux 再起一个 pi(pi -p),或遵从已安装的子代理扩展
PrimeAgent 原生——daemon 支撑的常驻会话 经 rlm.create_session 起常驻会话;用 prime-agent agents 管理

handover——自由文本焦点(#9)

/quiver:handover zh 收尾发布(或 /handover 修复登录 bug)——语言 token 之后的全部参数告诉笔记下个会话主攻什么。只调详略、不做取舍:八段照写,被聚焦的线索写深、占下一步首位。

基础设施

  • CI:每次 push/PR 跑 npm run check(manifest 校验)
  • Pullfrog PR 审查工作流(BYOK;自本版本起跑在 Z.ai GLM-5.3 上)

升级

Agent 命令
Claude Code claude plugin marketplace update quiver && claude plugin update quiver——重启会话生效
Codex codex plugin marketplace upgrade quiver,再 codex plugin add quiver@quiver 重装
pi pi update——或用 pi install git:github.com/dudupii/quiver@v0.4.1 锚定
PrimeAgent prime-agent package update

完整变更:v0.4.0...v0.4.1


quiver v0.4.1 — relay アロー 🏹→🚀

handover のループがこれで完成:handover がノートを書き、relay がそこから新しいバックグラウンドエージェントに点火、エージェントが無人で作業し、catchup が成果を読み戻します。

新機能

relay — /quiver:relay [フォーカス](#13、#14)

最新の handover ノートを、このマシンの新しいバックグラウンドエージェントに渡します。シードはポインタ——「このノートを読み、catchup を実行し、この糸口を追え」——ノートのコピーでは決してありません。エージェントは現在の作業ディレクトリで、ジョブリストとターミナルタイトルで一目で分かる説明的な名前とともに起動し、正確な起動コマンドは返信にエコーされます。

  • ユーザー明示要求のみ——バックグラウンドプロセスの起動は副作用なので、relay が自発的に発火することはありません
  • ゼロライト——ノートはバイト単位で不変(.lang も含む)、git は読み取り専用。起動が relay 唯一の副作用です
  • ノートがない? relay は拒否し /quiver:handover を指します——シードを捏造することはありません

プラットフォーム別バックグラウンド起動対応——各プラットフォーム自身の CLI とドキュメントに対して検証済み。仕組みのないプラットフォームでは、起動を偽装せずその旨を伝えます:

プラットフォーム バックグラウンド機構 relay の動作
Claude Code ネイティブ(claude --bg) 起動。ジョブリストから管理
Codex CLI ローカルにはなし——exec はフォアグラウンド、queue は既存セッションへの供給、agents は閲覧のみ その旨を報告し、第2ターミナル用のシードを渡す。Codex Cloud 利用者には実験的な codex cloud exec を案内
pi コアには意図的になし——公式ドキュメントは「tmux 経由で pi インスタンスを起動」を指す tmux 配下で第2の pi を起動(pi -p)、またはインストール済み subagents 拡張に委譲
PrimeAgent ネイティブ——デーモン基盤の常駐セッション 常駐セッションを起動(rlm.create_session)。prime-agent agents で管理

handover — 自由テキストフォーカス(#9)

/quiver:handover zh リリースを仕上げる(または /handover ログインバグを修正)——言語トークン以降のすべてが、次のセッションが集中すべき糸口を伝えます。取捨ではなく重み付け:8 セクションはすべて書かれ、フォーカスされた糸口に深さと次のステップの先頭が与えられます。

インフラ

  • CI:push/PR ごとに npm run check(マニフェスト検証)
  • Pullfrog PR レビューワークフロー(BYOK。本リリース以降 Z.ai GLM-5.3 で稼働)

アップグレード

エージェント コマンド
Claude Code claude plugin marketplace update quiver && claude plugin update quiver——セッション再起動で適用
Codex codex plugin marketplace upgrade quiver の後 codex plugin add quiver@quiver で再インストール
pi pi update——または pi install git:github.com/dudupii/quiver@v0.4.1 でバージョン固定
PrimeAgent prime-agent package update

完全な変更点:v0.4.0...v0.4.1

v0.4.0 — cross-agent quiver (Codex / pi / PrimeAgent)

Choose a tag to compare

@dudupii dudupii released this 06 Sep 09:20

What's new

quiver is now a cross-agent skill quiver — one source of skills, thin per-agent adapters. Claude Code, Codex, pi, and PrimeAgent all install from this one repo.

Cross-agent support (Codex / pi / PrimeAgent)

  • Codex: codex plugin marketplace add dudupii/quiver → codex plugin add quiver@quiver. Verified end-to-end: skills appear in the catalog, and handover stays out of the implicit catalog via a Codex-native invocation policy.
  • pi: pi install git:github.com/dudupii/quiver (pin with @v0.4.0). pi natively honors disable-model-invocation.
  • PrimeAgent: built on pi — prime-agent package install git:github.com/dudupii/quiver.
  • Claude Code install/update flow unchanged.

Neutral .handovers/ path

  • New notes land in .handovers/ at the project root — agent-neutral, so mixed teams (Claude Code + Codex + pi) share one directory.
  • Backward compatible: notes and language memory in the legacy .claude/handovers/ are still read (catchup, continues chain, .lang) and never rewritten. No automatic migration.
  • handover is user-requested only on every platform (hardened description + Codex policy file + native frontmatter support).

Also

  • brainstorm rewritten host-neutral (no harness-specific references).
  • npm run check validates all four manifests (JSON, version alignment, agentskills name=dir).
  • Eval suite: 3 new cases (legacy-path read, language migration, no-autofire); long-broken grader formats repaired — 16/17 cases at 100% on the final runs.
  • Release smoke checklist: docs/release-smoke.md.

中文摘要

quiver 升级为跨 agent 技能箭袋:Codex / pi / PrimeAgent 与 Claude Code 从同一仓库安装。交接笔记目录中立化为 .handovers/(旧 .claude/handovers/ 永久可读、绝不自动迁移);handover 在所有平台仅限用户主动触发。附 manifest 校验(npm run check)与发布冒烟清单。

Full changelog: compare 858d2aa...v0.4.0

v0.3.0 — catchup arrow + multi-developer handover

Choose a tag to compare

@dudupii dudupii released this 04 Sep 05:35

v0.3.0 — catchup arrow + multi-developer handover

New: catchup arrow

/quiver:catchup (bare /catchup works too) — the read side of handover:

  • Reads the latest handover notes — default 3, widen with a number (/catchup 5)
  • Replies with a four-section brief: current state / open threads and next steps / active gotchas / suggested actions
  • When the newest note records a commit, folds in the git log since it — "what happened after the last handover" in one command
  • Model-invocable and strictly read-only: writes nothing anywhere, not even the language memory — safe to auto-trigger when a session takes over a project
  • Legacy notes without frontmatter are read like any other

Changed: handover

  • Notes now carry YAML frontmatter — author (git user.name only, never an email), branch, commit, lang, and continues: linking to the previous note. Unavailable fields are silently omitted; notes from before this convention still work
  • Git-aware, git-read-only: tracked handover directory → one-line suggestion to commit the note so teammates see it; ignored or untracked → no mention of git; never runs a state-changing git command
  • Language resolution: explicit argument > stored project memory > inferred from your messages > English
  • Mechanical credential scan (sk-, ghp_, AKIA, private keys, password: …) before every write

Team workflow (documented in both READMEs)

Track .claude/handovers/ in git — it becomes the sharing medium. Agree on one note language (.lang is a single shared project value). Start sessions with /quiver:catchup.

Infrastructure

Plugin eval suite under evals/ (12 cases, 60+ graders) covering both arrows end-to-end. The claude plugin eval runtime is early-access-gated on some setups; every grader pattern is additionally verified by a local 207-check golden test.

Design spec: #1 · tickets: #2 #3 #4 #5 #6 #7