feat(board): cross-repo attention board as script + skill (0.9.0)
The mailbox answers "who wrote to me"; it never answered "which repo deserves the next session". board.sh scans every discovered repo and reads three sources each: the STATE.md next-step block with its optional board line, git status, and that repo's pending mailbox count. Read-only by construction, pinned by board-selftest.sh (28 checks). It ships here rather than as a personal script because the mailbox is one of its three inputs and the two carry the same axis distinction: a pending count means others are waiting on that repo, while who a repo waits ON comes only from its board line, since the message format has no reply-to field. Splitting the board from the mailbox would put that distinction in two places. It also lets the skill resolve the engine through CLAUDE_PLUGIN_ROOT like every other script here, instead of depending on a file that exists only in ~/.claude/scripts (a directory with no remote and no backup). The skill is a ranking, not a report: re-runs the board every invocation because counts drift, ranks by what unblocks the most and what is cheapest to move, then names one repo, the rule that fired, and the real next action read from that repo's STATE.md. Never the table. Not wired into session start, which would spend context on repos the session is not in. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MubwdTi88yu4hVLAFG1LbM
This commit is contained in:
parent
ec92c866c1
commit
61e224ccc3
10 changed files with 691 additions and 13 deletions
30
CHANGELOG.md
30
CHANGELOG.md
|
|
@ -5,6 +5,36 @@ All notable changes to this project will be documented in this file.
|
|||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
|
||||
## [0.9.0] - 2026-07-28
|
||||
|
||||
### Added
|
||||
|
||||
- **`board.sh` + the `board` skill — the cross-repo attention board.** The
|
||||
mailbox answers "who wrote to me"; it never answered "which repo deserves the
|
||||
next session". `board.sh` scans every discovered repo and reads three sources
|
||||
per repo: the STATE.md next-step block with its optional board line, `git
|
||||
status`, and that repo's pending mailbox count. Read-only by construction — it
|
||||
writes to no repo, no STATE.md and no mailbox — and pinned by
|
||||
`board-selftest.sh` (28 checks against a throwaway repo tree and a throwaway
|
||||
mailbox).
|
||||
|
||||
**Why it ships here rather than as a personal script.** The mailbox is one of
|
||||
its three inputs, and the two carry the same axis distinction: a repo's pending
|
||||
count means *others are waiting on it* (an obligation owed outward), while who
|
||||
a repo waits *on* is only derivable from its own board line, because the
|
||||
message format has no reply-to or thread field. Splitting the board from the
|
||||
mailbox would put that distinction in two places, and a rule enforced in one of
|
||||
two places is not a rule. It also means the engine resolves through
|
||||
`CLAUDE_PLUGIN_ROOT` like every other script here, instead of existing only on
|
||||
the author's machine.
|
||||
|
||||
The skill is a ranking, not a report: it re-runs the board on every invocation
|
||||
(counts drift between turns), ranks by what unblocks the most and what is
|
||||
cheapest to move, then names one repo, the rule that fired, and the real next
|
||||
action read from that repo's STATE.md — never the table. Deliberately not wired
|
||||
into session start: injecting the whole board into every session spends context
|
||||
on repos the session is not in.
|
||||
|
||||
## [0.8.0] - 2026-07-27
|
||||
|
||||
### Added
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue