feat: boards (rename + working dirs) + per-item archive - #40
Merged
Conversation
Add an `agentic` boolean to items: a task raised and driven by an autonomous agent (e.g. drover). The status lifecycle (hold/go/running) is meaningful only on agentic tasks — a human toggles the status to hand work to, or hold it from, the agent — so marking the task first-class lets consumers tell agent-managed items from the board's own todos instead of overloading category. - quick-add token `agentic` sets the flag; `agentic:false` clears it - serialised as an `agentic: true` meta line; parsed back on load - exposed in `list --json` and described in `schema` (property + token), so the drift guard keeps the DTO and schema in step - shown as `*agentic` in the CLI list line Bumps plugin version to 0.18.0.
Add an optional `action` to items: the effect a consumer (e.g. drover) fires when an agentic task is released. It is an opaque label, NEVER a command — shepherd stores and echoes it and interprets nothing; the agent maps the name to a command in its own trusted config and runs it only on release. That boundary is deliberate: the todo file is synced and hand-editable, so a command sitting in it would be an RCE vector, whereas a name resolved against the agent's allowlist is safe. - quick-add token `action:<name>` sets it; bare `action:` clears - serialised as an `action:` meta line; parsed back on load - exposed in `list --json`, described in `schema` (property + token) - shown as `→<name>` in the CLI list line - documented in AGENTS.md and README (agentic tasks section) Bumps plugin version to 0.19.0.
Add a per-item `shepherd archive <ref>...` verb that moves whole items off the live board into the sibling archive.md — the per-item counterpart to whole-board `project archive` and the TUI's bulk `c`. Refuses subtask refs, supports --json echo and the not_found envelope like the other mutators. watch now retags a "removed" event as "archived" when the vanished id turns up in archive.md, so a consumer (drover) can tell a terminal archive from a plain delete. Bump 0.19.0 -> 0.20.0.
Add C to archive just the item under the cursor (whole items only), alongside c which sweeps all done items. C is a no-op and dimmed in the legend on a subtask row, matching the shepherd archive <ref> CLI which rejects subtasks. Relabel c to 'sweep' to disambiguate the two, document both in the key table, help page and README archive section, and add the missing shepherd archive <ref> CLI verb to the README examples and SKILL reference.
Display agentic items prominently and constrain their status control to the human↔agent hand-off. - pin agentic items to a `◆ agentic` group above overdue, with a `◆` accent marker on every row across all views (list, global, table) - detail view shows the `agentic` flag and the opaque `action` id - `tab` toggles only the human-settable states (hold ↔ go); running and done are the agent's to set - once running/done is set the item is locked from the board (tab no-op) and dimmed to show it's agent-owned - `space` (done toggle) is disabled on agentic items so tab is the sole status control
Reshapes the branch away from the agentic-task experiment toward board ergonomics. Committed as one change because the edits are entangled across the same files (store, cli, tui) and only build together. - remove the agentic-task feature: Item.Agentic/Action, the hold→go→running hand-off vocab (AgenticLocked/ToggleAgenticStatus), the agentic/action: quick-add tokens, TUI ◆ glyph + hold/go toggle, CLI JSON agentic/action fields, and store serialisation. Generic per-item status (in-progress cycling via tab, space toggles done) is kept. Agentic tasks now live in drover, not on a shepherd board. - rename "project" → "board" throughout: CLI verbs and flags (--board, SHEPHERD_BOARD, ResolveBoard), JSON keys (by_board), TUI modes, stats. - add board working directories: a sidecar boards.toml, store BoardDir/ SetBoardDir, a `board dir <name> [<path>]` CLI verb, and a board-dir view/edit in the interactive board.
- saveConfig: plain rewrite of managed keys (shepherd owns config.toml); drop the comment/unknown-key preservation round-trip - dedupe three inline json.MarshalIndent blocks into emitJSON - remove shepherd --stats/--legend launch flags (the `stats` subcommand already covers both) - README: sweep stale projects->boards naming to match current CLI
jwarykowski
force-pushed
the
feat/agentic-tasks
branch
from
July 24, 2026 11:02
e198a0d to
79002be
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
what
Board ergonomics for shepherd. The branch started as an agentic-tasks
experiment; that has been removed and replaced with work that makes boards
first-class. Net change vs
master:board rename|archive| unarchive|delete|dir), the--boardflag andSHEPHERD_BOARDenv, JSONkeys (
by_board), TUI modes and stats. "project" is gone from the vocabulary(Sentry's own "project" concept is unrelated and lives in drover).
a sidecar
boards.toml(the.mdis still rewritten from items, so the dircan't live there). New
board dir <name> [<path>]CLI verb, a board-dirview/edit in the interactive board, and
dirinboards --json.archive <ref>...moves whole items into the siblingarchive.md, with a terminalarchivedwatch event distinct fromremoved.removed: agentic tasks
The agentic-task feature (earlier commits on this branch) is stripped:
Item.Agentic/Action, thehold→go→runninghand-off, theagentic/action:quick-add tokens, the TUI ◆ glyph + toggle, and the CLI JSON fields.Generic per-item status (
in-progresscycling) is kept. Agentic tasks nowlive in drover, not on a shepherd board — shepherd stays a plain,
hand-editable todo board.
test
gofmt,go vet,go test ./...all clean.