Run coding agents off your real GitHub Projects board — a quota-aware, review-gated coordinator, not another local Kanban.
Install it, then just talk to your board:
agentic-board is a Claude Code plugin for developers who track work on GitHub Projects and want an agent to actually do the board work: pick the next issue, start it on its own branch and worktree, take it through a PR and a review gate, and merge it — across multiple GitHub accounts, always with a confirmation before anything destructive.
Ask in plain language — "what's pending?", "start issue #42", "move these to Done", "add
everything labeled bug", "close the stale ones" — or just run /board work and let it drive
the whole issue → branch → PR → gate → merge loop.
- Your real board, not a local clone. It drives the GitHub Projects (v2) and Issues APIs
through the
ghCLI — the same board your team already uses, not a throwaway Kanban in a tab. - A quota-aware multi-CLI fleet.
/board workcan start several independent issues at once, each in its own git worktree, and optionally launch one agent session per issue — probing each CLI (Claude, Antigravity, Codex, Jules, Copilot) for quota and availability before handing it work. - Review-gated by default. Every issue finishes through a PR and a review gate (Copilot review + CI checks + unresolved-thread checks) before it can merge. Good GitHub hygiene is driven by the flow, not left to willpower.
See it run on itself → SHOWCASE.md — the tool governs its own roadmap board; every fix was found while using it and tracked in the open (the dogfooding loop).
Read the case study on running a real BI project's board with this tool → agentic-board: agentes de Claude Code en tu board de GitHub (in Spanish)
BI GitOps (PBIP/Fabric, TMDL diff review, semantic-model agents) is a future module on the same foundation — see the roadmap.
Teams track their work on GitHub Projects, but the board work stays manual: creating fields,
moving cards, bulk-triaging issues, wiring CI automation, then babysitting each change through
its branch, PR, and merge. This plugin turns those chores into natural-language requests an agent
executes consistently — including the GitHub gotchas (single-select field IDs, native sub-issues,
gh project delete having no --yes flag) that are easy to get wrong by hand.
/plugin marketplace add CSalcedoDataBI/agentic-board
/plugin install agentic-board
Then enable agentic-board in your Claude Code plugins.
Migrating from
agentic-bi-ops? The plugin was renamed toagentic-board(the GitHub repo redirects automatically). Existing installs keep updating via a deprecatedagentic-bi-opsalias in the marketplace, but to move to the new name refresh the marketplace and install the new id:/plugin marketplace update CSalcedoDataBI/agentic-board /plugin install agentic-board@agentic-board
After installing, use the /board command or just ask:
/board work # the daily driver: see pending work, pick an issue, start it
/board init # create a Projects board and link it to this repo
/board add #42 # add issue #42 to the board
/board move #42 to Done # set an item's Status
/board fill # detect + fill board gaps (assignees, Status, Priority, ...)
/board bulk close label:stale # batch-close (shows a dry-run + asks first)
/board automate # install the CI workflow that auto-adds issues/PRs
/board templates # install issue forms + PR template into the repo
/board labels # apply the label taxonomy (bug/docs/refactor/chore/blocked/...)
/board update # post a high-level status update on the board
/board handoff # save/resume context to continue in another session (days later)
agentic-board follows the noun-verb convention used by git, gh, docker, and kubectl
(clig.dev): a few command "nouns", with verbs as arguments. You learn
one door, not a wall of commands.
| Command | What it does |
|---|---|
/board |
Administer/automate a GitHub Projects board — verbs work/plan/fill/init/add/move/field/bulk/automate/templates/labels/update/changelog/handoff/doctor/close-cycle/telemetry/triage/complete/bi-checklist/actions-cost. Defaults to the CSalcedoDataBI account. |
/cleanup |
Machine housekeeping for Claude Code, apart from GitHub board work — sweep a repo's sessions (park unmerged work as draft PRs, archive resolved sessions), compress old transcripts and restore them, free disk from duplicate copies and old plugin builds, and update every plugin. Verbs sessions/transcripts/disk/plugins. Plan first, act on one confirmation. |
/docs |
Publish all wiki pages (product docs + knowledge registry) in a single push; or check DeepWiki indexing status for this repo. |
/expert |
Auto-expert mode — take a tracked plan and execute it autonomously through a specialized expert persona (research, build, test with recorded evidence, self-drive the board), stopping only at the irreversible line. Three verbs: config (define the contract), auto (run it) and roles (browse the role catalog this project can extend, and explain why a plan matched). |
/knowledge |
Manage the project knowledge references registry by domain (add/harvest/list/gen/wiki). Versioned in knowledge/registry.json + generated KNOWLEDGE.md. |
/scan |
One command from untracked work to a ready board - scan the CURRENT repo (code TODOs, doc checklists, plans), propose priority, order, dependencies and PR batches, then on one confirmation create a standard board, labelled issues, a plan epic and fill every gap. |
/skills |
Manage the Agent Skills lifecycle - create a new skill or improve one through a full pipeline (prior art, author, pressure test, audit gate, trigger eval), organize/catalog, audit for failures, bootstrap best-practice toolkits by profile (quality or bi = Microsoft Fabric / Power BI), or check installed-tool freshness. |
/tools |
Browse, research and install the project's referenced external tools from one unified catalog — it merges the knowledge registry (references) with the installable toolkit presets. Install one tool or all missing at once, kind-aware (skill-clone preserves LICENSE; a plugin surfaces its own install command, never cherry-picked). |
Two rules keep it discoverable, so nothing has to be memorized:
- No args → a menu. Run a command with nothing after it (just
/board) and it lists its own verbs. - One front door.
/boardalso points to the sibling commands, so the whole tool is reachable from a single entry point.
The internal skills (account resolution, board admin, and the rest) are hidden from the / palette
— the four commands above are the only entry points you type.
Stop mid-task and pick it up in a fresh session days later — even on another machine —
without re-typing the context. /board handoff saves a curated, verified snapshot and reads
it back:
/board handoff save # snapshot: the last important thing + the concrete next step + traps
/board handoff resume # rehydrate that context and continue the linked issue
- Durable, board-linked, cross-machine. The source of truth is a pinned
[abios-handoff]comment on the linked issue (nomainnoise), mirrored to a gitignoredHANDOFF.md. - Verified, not hand-waved. Every claim is tagged
[V](re-checked live this run) or[?](from memory); resume reports drift (branch gone, PR merged) and carries traps forward. - Surfaces itself.
/board handoff savedrops a self-cleaningMEMORY.mdpointer; an opt-in SessionStart hook (references/handoff-hook.md) announces the handoff when you resume. - Heavy case, done safely. For persistent semantic memory,
Suggest-HeavyMemory.ps1proposes installing Basic Memory (upstream, AGPL) under a full security gate — never vendored. The lightweightHANDOFF.mdstays the default. Seereferences/heavy-memory.md.
Design + reference: plugins/agentic-board/skills/projects-admin/references/handoff.md.
Three markdown surfaces, one job each:
| File | Holds | Lifetime |
|---|---|---|
MEMORY.md |
facts the agent recalls across sessions | permanent, the agent's |
HANDOFF.md |
how to resume one task | ephemeral, one task |
KNOWLEDGE.md |
catalog of external references by domain (/knowledge) |
permanent, yours |
/board work can start several independent issues at once, each in full isolation — the
official multi-session pattern built on git worktrees:
/board work # pick MORE THAN ONE pending issue to batch-start
# or drive the script directly (path relative to a repo checkout):
plugins/agentic-board/scripts/Board-Work.ps1 -ProjectNum <n> -Parallel 12,14,15 -Launch
For each issue the batch:
-
Moves it to In Progress, assigns you, and posts a
[abios-claim]fingerprint. -
Creates a git worktree on its own branch
issue-<n>-<slug>, branched off a freshorigin/main. All worktrees are grouped under one sibling folder so the parent dir stays clean:Repos/ agentic-board/ ← your main working copy (untouched) agentic-board--worktrees/ ← one folder holds the whole fleet issue-129/ [issue-129-…] ← session A issue-130/ [issue-130-…] ← session BThey share a single
.git, so N working directories edit in parallel without colliding. -
With
-Launch, opens one Windows Terminal tab per worktree running an autonomous headlessclaude -psession, each briefed to take its issue all the way through PR → review gate → merge.
Monitor the fleet with plugins/agentic-board/scripts/Board-Work.ps1 -Sessions (dead-PID entries
are pruned automatically).
Use -DryRun to preview without mutating or spawning. After a PR merges, clean its worktree with
git worktree remove. Only parallelize issues that don't depend on each other. Tabs require
Windows Terminal (wt); without it, each session opens in a standalone pwsh window.
- Install and authenticate the
ghCLI. - Provide a GitHub Personal Access Token (classic) with the
projectandreposcopes. The plugin reads it from an environment variable so the token never lives in the repo.
Multi-account model. The plugin resolves which account to act as, then reads that
account's token from a per-account environment variable — it never calls gh auth switch, so
your global gh state is left untouched. Configure one variable per account you use:
| Account role | Env variable | Default? |
|---|---|---|
| Primary (personal) | GITHUB_TOKEN_PERSONAL |
✅ used unless overridden |
| Secondary (work/org) | GITHUB_TOKEN_BUSINESS |
used with --account override |
The shipped defaults map the primary account to CSalcedoDataBI and the secondary to PAL-Devs. To adapt the plugin to your own accounts, edit the small map at the top of
scripts/Get-GhAccount.ps1and the matching note inskills/gh-account/SKILL.md.
Platform. Token resolution reads the Windows user environment via PowerShell. On
macOS/Linux, export GH_TOKEN yourself before running board ops — the gh recipes themselves
are cross-platform.
| Component | Purpose |
|---|---|
gh-account skill |
Resolves the active account and injects its token per-operation. The shared foundation for every module. |
projects-admin skill |
Board + issue governance: fields, item moves, bulk ops, CI auto-add — with dry-run safety on destructive actions. |
abios-feedback skill |
Capture tool improvements found while working in any project, sanitized so private data never leaks back here. |
project-scan skill |
Scan the CURRENT project for untracked work (code TODOs, doc checklists/pending, plans/specs) and turn chosen items into issues + a board plan. |
| Field presets | One-step localized governance fields (Status/Priority/Type/Area/Estimate/Target) in EN or ES. |
/board, /scan commands |
Natural-language entry points for the above. |
This tool improves itself: most fixes are discovered while using it inside private projects. The hard rule is that the cause may be private, but the contribution must be public-only.
Two layers protect this repo:
- Discipline — the
abios-feedbackskill captures each improvement abstracted to the public tool (no repo names, client names, data, GUIDs, or paths). - A guard you can't forget — after cloning, run once:
This wires a
pwsh -File scripts/install-guard.ps1pre-commit+pre-pushhook that blocks any commit/push whose added lines contain a known secret pattern or a term from your local.abios/private-denylist.txt(gitignored — never committed). Seed that file with your own private fingerprints.
It's defense-in-depth, not a guarantee: a denylist only catches terms you list, so keep layer 1
honest. Override (--no-verify) only for a confirmed false positive.
The /board work flow doesn't just allow good GitHub hygiene — it enforces it. Checked
against the official guides (Projects,
GitHub flow,
Pull requests,
Issues):
| Official practice | How the tool enforces it |
|---|---|
| Branch per change, descriptive name | work creates issue-<num>-<slug> on start |
| PR for every change, issue auto-closed | step 5 mandates a PR with Closes #<num> — never direct to main |
| Right identity per repo | New-BoardPR.ps1 resolves the account from the repo OWNER, pushes with a one-shot credential (remote never rewritten), opens/updates the PR |
| Merge only after review | review gate: Copilot review request + CI checks + unresolved threads; exit 0 gates the merge; honest self-review fallback |
| Small, focused PRs | gate warns over 600 lines / 20 files and suggests a sub-issue split |
| Delete branch after merge | merge flow uses --delete-branch |
| Break down large issues | Board-Breakdown.ps1 creates native sub-issues (progress column fills itself) |
| Custom-field metadata | field presets + Board-Fill (assignees, Status, Priority, Size, Type) |
| Issue templates & labels | /board templates (forms + PR template) and /board labels (taxonomy) |
| Status updates | /board update posts high-level progress on the board |
| Dependencies respected | [BLOCKED] items are flagged and refused by -Start |
| Single source of truth | one board ⇄ one repo, resolve-before-create, backup-before-delete |
Honestly out of scope (GitHub exposes no API): view layouts, charts/insights, project templates.
agentic-board doesn't rebuild the BI tooling ecosystem — it references, installs, and monitors the tools that already exist, so a Fabric / Power BI project gets the right toolkit without reinventing anything. Zero weight for non-BI users: it's a curated JSON catalog plus a couple of scripts that only run when you invoke a profile.
Profiles (presets/toolkits/<profile>.json):
| Profile | Provisions |
|---|---|
quality (default) |
Skill-authoring / review toolkit |
bi |
Microsoft Fabric + Power BI ecosystem — task bundles semantic-model-review, fabric-app, data-agent |
Commands:
/skills bootstrap bi— install the gaps for a profile (never duplicating what's already installed). Detects by kind: askill-clonefolder is clean-cloned with its LICENSE; apluginsurfaces its own install command./skills freshness— report-only: compares each installed skill's recorded commit SHA against upstream and flagsfresh/behind/unknown. It never reinstalls — you decide.
Catalogued tools (attribution). Every tool keeps its owner and license; nothing is vendored:
| Tool | Owner | License | Profile |
|---|---|---|---|
| skills-for-fabric | Microsoft | MIT | bi |
| skill-creator | Anthropic | See repo | quality |
| writing-skills | obra | MIT | quality |
| skill-improver | Trail of Bits | CC BY-SA 4.0 | quality |
| second-opinion | Trail of Bits | CC BY-SA 4.0 | quality |
Add your own public repos (or another developer's) as skill-clone entries in
presets/toolkits/bi.json — always with owner + license. Schema: presets/toolkits/README.md.
| Module | Description | Foundation |
|---|---|---|
| M1 (current) | Cross-account GitHub Projects & issues governance | gh-account |
| M2 (shipped) | TMDL diff review — breaking schema-change detection wired into the review gate (the surviving slice of the old PBIP/Fabric git-ops idea) | tmdl-review |
| M3 (current) | BI toolkit provisioning — reference / install / monitor the Microsoft Fabric + Power BI tooling ecosystem by profile (/skills bootstrap bi, /skills freshness), rather than rebuild it. See Toolkit provisioning |
skills-ops |
| M4 (shipped) | BI release automation — a release checklist spec for BI artifacts (references/bi-release-checklist.md) and changelog generation from board Done issues (/board changelog) |
gh-account |
| M5 | Knowledge-ops — per-project references registry by domain (knowledge/registry.json + generated KNOWLEDGE.md), /knowledge add + harvest; Phase 2 wiki publish + capture-in-handoff |
gh-account |
MIT — see LICENSE.
agentic-board v0.44.0 · docs generated by plugins/agentic-board/scripts/Update-Docs.ps1

