Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,7 @@
"name": "work-items",
"source": "./plugins/work-items",
"category": "productivity",
"tags": ["work-items", "issues", "github", "tracker", "triage", "orchestration", "skill"]
"tags": ["work-items", "tracker", "seam", "provider-neutral", "github", "issues", "triage", "orchestration", "skill"]
},
{
"name": "discovery",
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ Browse and manage with `/plugin`. To refresh after updates: `/plugin marketplace
| [`fable-5-playbook`](plugins/fable-5-playbook) | Skill | Ships Claude Fable 5's operating doctrine as an on-demand knowledge skill — core standing instructions plus twelve trigger-routed chapters (calibration, reasoning moves, planning, debugging, orchestration, verification, recovery, trust boundaries, and more) and an Opus-adaptation chapter for non-Fable models. |
| [`firecrawl`](plugins/firecrawl) | Skill | Web scraping, search, crawling, URL discovery, browser interaction, and local file parsing through the `firecrawl-cli` binary — results written to disk and read back selectively to keep large pages out of context, plus a gated maintainer update flow tracking the upstream CLI and skill source. |
| [`claude-config-audit`](plugins/claude-config-audit) | Skills | Keeps a repo's Claude Code configuration healthy via three report-first audit skills: `settings-audit` (config files vs upstream truth, with live plugin-drift detection), `memory-health` (CLAUDE.md / rules / auto-memory against official-doc criteria), and `automation-deep-dive` (evidence-gated verdicts on automation gaps). |
| [`work-items`](plugins/work-items) | Skill | Manages GitHub Issues as a development work-item tracker: dashboard, taxonomy-labeled creation, a concurrent-safe hold→verify→claim protocol for multi-agent pickup, recurring-schedule checks, TODO scanning, stale-claim auditing, plan decomposition into vertical slices, and structured triage. |
| [`work-items`](plugins/work-items) | Skill | Manages development work items through a provider-neutral tracker seam (GitHub the bound adapter today): dashboard, taxonomy-labeled creation, a race-safe assignee-plus-lease claim protocol for multi-agent pickup, recurring-schedule checks, TODO scanning, stale-lease auditing, plan decomposition into vertical slices, and structured triage. |
| [`discovery`](plugins/discovery) | Skills | Structured discovery before changes. Ships four skills: `/discovery:explore` and `/discovery:explore-deep` (six-dimension codebase exploration, inline or in a forked subagent) plus `/discovery:research` and `/discovery:research-deep` (three-phase multi-source external research with source tiers, falsification, and recency gates). |
| [`playwright`](plugins/playwright) | Skill | Live E2E browser automation through Microsoft's `@playwright/cli` — named sessions, accessibility-ref snapshots (click/fill by ref), screenshots, console/network capture, mocking, tracing, video, and auth state, with artifacts written to disk so only paths enter context, plus Windows/orchestrator overlays and a gated maintainer update flow tracking the upstream npm skill. |
| [`code-tidying`](plugins/code-tidying) | Skills | Structure-only codebase improvement per Beck's *Tidy First?*: `/code-tidying:tidy` proactively hunts a rotated, glob-scoped lane for named tidyings under a research-backed scope budget (consumer-defined lanes in `.claude/tidy-lanes/` override bundled ones) and ships one tight PR; `/code-tidying:batch-simplify` sweeps recently changed files through grouped, dependency-ordered simplification waves with a never-drop deferred-items contract. |
Expand Down
6 changes: 3 additions & 3 deletions plugins/work-items/.claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
{
"$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json",
"name": "work-items",
"version": "0.1.0",
"description": "Manages GitHub Issues as a development work-item tracker: dashboard, create with a label taxonomy, concurrent-safe claim protocol, recurring-schedule checks, TODO scanning, stale-claim auditing, plan decomposition into vertical-slice issues, and structured triage.",
"version": "0.2.0",
"description": "Manages development work items through a provider-neutral tracker seam (GitHub the bound adapter today): dashboard, taxonomy-labeled creation, a race-safe assignee-plus-lease claim protocol, recurring-schedule checks, TODO scanning, stale-lease auditing, plan decomposition into vertical-slice items, and structured triage.",
"author": {
"name": "Melodic Software",
"email": "info@melodicsoftware.com"
},
"license": "MIT",
"keywords": ["work-items", "issues", "github", "tracker", "triage", "orchestration"]
"keywords": ["work-items", "tracker", "seam", "provider-neutral", "github", "issues", "triage", "orchestration"]
}
41 changes: 41 additions & 0 deletions plugins/work-items/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# Changelog

All notable changes to the `work-items` plugin are documented here. Format follows
[Keep a Changelog](https://keepachangelog.com/en/1.1.0/); this plugin uses semantic versioning.

## [0.2.0]

Re-plumbed onto the provider-neutral work-item-tracker seam. The skill is now backend-agnostic; GitHub
is the bound adapter today rather than a hardcoded dependency.

### Changed (breaking)

- **Provider-neutral over the tracker seam.** Every tracker operation routes through the
work-item-tracker seam — the skill calls `tools/work-item-tracker/work-item-tracker.sh <verb>` and the
bound provider adapter executes it (contract: `tools/work-item-tracker/CONTRACT.md`). The skill core
inlines **no** provider commands: coordination (create, claim, renew/reclaim lease, dependency links,
sub-items, frontier selection, single-item fetch) uses seam verbs, and provider mechanics (filtered
listing, search, aggregation, close, label/comment edits) reference the bound adapter's operations
doc. Previously the skill called `gh` directly throughout.
- **Claim protocol is now assignee + lease, race-safe at the seam.** The label-based
hold&nbsp;→&nbsp;verify&nbsp;→&nbsp;claim dance (`status:considering` / `status:claimed`) is retired.
Claiming assigns the item and writes a lease comment; races are resolved by lease-comment identity,
and a session-start `reclaim` runs idempotently to recover crashed sessions' stale leases. The claim
identity is always the authenticated session user, never a shared bot.
- **New consumer requirement.** The consuming repo provides the seam at `tools/work-item-tracker/` and
binds its active provider in `.work-item-tracker.json`. The skill no longer shells out to `gh` on its
own; the GitHub adapter behind the seam does.

### Changed

- Backend-neutral vocabulary throughout — "work item" rather than "GitHub issue"; the description and
action docs read against any bound provider.
- Removed the skill's `gh`-scoped `allowed-tools` and the inline `gh`-based pre-computed dashboard
block; the dashboard now derives through the seam and adapter.
- The agent-brief template ships at `reference/agent-brief.md`.

## [0.1.0]

- Initial release: a GitHub-Issues work-item tracker skill — `stats`, `list`, `add`, `work`, `start`,
`done`, `due`, `recheck`, `search`, `scan`, `audit`, `decompose`, `triage` — with a `gh`-backed
hold&nbsp;→&nbsp;verify&nbsp;→&nbsp;claim multi-agent claim protocol.
70 changes: 46 additions & 24 deletions plugins/work-items/README.md
Original file line number Diff line number Diff line change
@@ -1,17 +1,18 @@
# work-items

A Claude Code plugin that manages **GitHub Issues as a development work-item
tracker** — a centralized, concurrent-safe alternative to file-based TODO
lists, designed for teams where humans and autonomous agents pick work from
the same queue.
A Claude Code plugin that manages **development work items through a
provider-neutral tracker seam** — a centralized, concurrent-safe alternative to
file-based TODO lists, designed for teams where humans and autonomous agents
pick work from the same queue. The skill core is backend-agnostic; GitHub is the
bound adapter today.

Invoke it with `/work-items:work-items <action>` (or let Claude invoke it when
you ask about issues, tracked work, or what to do next):
you ask about work items, tracked work, or what to do next):

```text
/work-items:work-items # stats dashboard (default)
/work-items:work-items add "fix the flaky retry test" --type fix
/work-items:work-items work # auto-select + claim + execute one issue
/work-items:work-items work # auto-select + claim + execute one item
/work-items:work-items triage 42
```

Expand All @@ -20,28 +21,48 @@ you ask about issues, tracked work, or what to do next):
| Action | What it does |
|--------|--------------|
| `stats` | Dashboard: open/claimed counts, overdue recurring items, category breakdown |
| `list` / `search` | Filtered listing / full-text search across open + closed issues |
| `add` | Create an issue with a label taxonomy, duplicate pre-flight, and an authorization gate against model-initiated filing |
| `work` | Auto-select one issue by priority tiers and execute it end-to-end |
| `start` / `done` | Claim an issue / close it with a completion comment and PR linkage |
| `list` / `search` | Filtered listing / full-text search across open + closed items |
| `add` | Create a work item with a label taxonomy, duplicate pre-flight, and an authorization gate against model-initiated filing |
| `work` | Auto-select one item by priority tiers and execute it end-to-end |
| `start` / `done` | Claim an item / close it with a completion comment and PR linkage |
| `due` / `recheck` | Recurring-schedule checks and cadence advancement (optional consumer infrastructure) |
| `scan` | Sweep the codebase for TODO/FIXME/HACK markers; resolve or file each |
| `audit` | Detect stale claims/holds, orphaned recurring entries, label hygiene issues |
| `decompose` | Break a plan/PRD/issue into vertical-slice issues with AFK/HITL classification and dependency ordering |
| `triage` | Structured evaluation of incoming issues, with an attention view |
| `audit` | Detect stale leases, orphaned recurring entries, label hygiene issues |
| `decompose` | Break a plan/PRD/item into vertical-slice items with AFK/HITL classification and dependency ordering |
| `triage` | Structured evaluation of incoming items, with an attention view |

## The tracker seam

Every tracker operation goes through the **work-item-tracker seam** — the skill
calls `tools/work-item-tracker/work-item-tracker.sh <verb>` and the bound
provider adapter executes it (contract:
`tools/work-item-tracker/CONTRACT.md`). Coordination — create, claim
(assignee + lease), renew/reclaim lease, dependency links, sub-items, frontier
selection, single-item fetch — uses seam verbs directly. Operations without a
core verb (filtered listing, search, aggregation, close, label/comment edits)
are provider-specific and route through the bound adapter's operations reference
(GitHub: `tools/work-item-tracker/adapters/github/README.md`). The skill core
inlines no provider commands, so swapping the backend is swapping the bound
adapter, not editing the skill.

## Multi-agent claim protocol

`work` and `start` use a three-phase **hold → verify → claim** optimistic-lock
protocol built on GitHub comment-ID ordering, so multiple concurrent agents
never grab the same issue. Stale holds and claims are cleaned up by `audit`.
Claim assignments always run on the session's own identity — a shared bot
identity would defeat the collision check.
`work` and `start` claim an item by **assigning it and writing a lease
comment**, race-safe at the seam via lease-comment identity, so multiple
concurrent agents never grab the same item. A session-start `reclaim` runs
idempotently to recover the stale leases of crashed or abandoned sessions.
Claim assignments always run on the session's own authenticated identity — never
a shared bot — so the race check stays sound.

## Requirements

- **`gh` CLI**, authenticated against the repository's host. All tracker
operations go through `gh`; nothing else leaves the machine.
- **The work-item-tracker seam.** The consuming repo provides the seam at
`tools/work-item-tracker/` and binds its active provider in
`.work-item-tracker.json`. The seam's contract and per-adapter mechanics are
documented alongside it (`tools/work-item-tracker/CONTRACT.md`).
- **The bound provider's client.** For the GitHub adapter that is the **`gh`
CLI**, authenticated against the repository's host; the adapter is the only
thing that leaves the machine.
- **Labels** (optional but recommended): the universal `type:` / `priority:` /
`status:` / meta groups, plus any project-specific `area:` / `category:` /
`ecosystem:` groups the repo defines. The taxonomy and discovery command are
Expand All @@ -60,10 +81,11 @@ identity would defeat the collision check.
## Configuration

No `userConfig`. Project-specific behavior routes through the consuming repo's
own surfaces: its labels (taxonomy discovery via `gh label list`), its optional
recurring schedule file, and its own `CLAUDE.md` / rules for write-identity
policy (e.g. routing tracker writes through a bot wrapper) and development
workflow. The skill degrades gracefully when any of these are absent.
own surfaces: the bound provider in `.work-item-tracker.json`, its labels
(taxonomy discovery through the adapter), its optional recurring schedule file,
and its own `CLAUDE.md` / rules for write-identity policy (e.g. routing tracker
writes through a bot wrapper) and development workflow. The skill degrades
gracefully when any of these are absent.

## License

Expand Down
Loading
Loading