Skip to content

intbot/skills

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 

Repository files navigation

skills

My collection of Agent Skills for Claude Code (and any skills.sh-compatible agent).

Quickstart

npx skills@latest add intbot/skills

Then invoke a skill by name in your agent (e.g. /board).

Skills

Skill What it does
board Renders a project's implementation board as a single Markdown table (ID · Goal · Track · Item · Priority · Owner · Manual step · Status), done-first then by priority, with a completion bar + per-Goal progress under every full render. Composable query — board presence !live, board traffic,earned p1, board mine !parked. Plus board next, board explain [query] (detail cards with an inferred "what this is" line per item), board sync (reconcile the conversation into the board), board archive (retire done rows to board.archive.md), board by track, board goal (list a column's values), board help. Named boards: board @<name> runs any command against a separate board.<name>.md; board boards lists them. board init scaffolds a new board and offers to auto-populate it.
status A condensed view of the same board — grouped by Goal, columns trimmed to ID · Item · Priority · Status. Good for a quick "where do things stand" glance.
quiz-me Quizzes you about a plan, design, or topic through AskUserQuestion's selectable chips instead of freeform questions — a friendlier /grill-me. quiz-me <type> sets the answer format (mul multiple-choice, tf true/false, scale rate/prioritize, mix auto-pick); each question marks the recommended pick and adds a 💬 Chat about this escape hatch. --test switches from design review to a graded knowledge quiz with scoring. Defaults to mul, one question at a time.
sharpen Rewrites a rough, unclear prompt into a sharp one for an AI agent — states the goal up front, splits multiple asks into ordered tasks, names implied context — then one confirm both approves and routes it: ✅ run it here now, or 📋 take the clean block to paste elsewhere (plus ✏️ refine · 💬 chat). Slash-only: /sharpen <your rough prompt>.
sharpen-auto Auto-firing companion to sharpen — same rewrite-and-confirm routine, but it triggers when you paste a rough prompt and ask to rewrite/clarify it, no slash needed. Install alongside sharpen (-s sharpen,sharpen-auto) for hands-free prompt-sharpening.

Rendering is read-only and project-agnostic: both skills operate on the board file of whatever project you run them in. Only board init, board sync, and board archive write.

Getting started

No board file yet? That's the normal starting point.

  1. Install: npx skills@latest add intbot/skills
  2. Run /board init in your project. It scaffolds a board and offers to draft your first rows.
  3. Auto-populate (optional). Before writing, init looks for existing work to seed the board:
    • GitHub task lists (- [ ] → to-do, - [x] → done) anywhere in your markdown,
    • files named TODO* / ROADMAP* / PLAN* / BACKLOG*,
    • README/docs sections titled Roadmap / TODO / Planned / Coming soon,
    • and the work from your current conversation. It drafts rows from those, shows them with a provenance line, and writes only after you confirm. Empty project? You get a one-row example starter instead.
  4. From then on: /board (full), /status (condensed), /board traffic (filter). No init step again.

Pick where the board lives at init time — the skill uses the first path that exists:

init target File Use when
init internal internal/board.md private/gitignored working area
init docs / init root docs/board.md / board.md you want it committed
init (default) .claude/board.md local-only (usually gitignored)
init @<name> board.<name>.md (a named board) a genuinely separate domain (own tally/progress)
init <path> that literal path a custom location

The board file

The board is one Markdown table. The Item column uses the pattern **Bold title** — description so each row explains itself (a <br> line break is avoided because terminal Markdown renderers ignore it). A discovered follow-up nests under its parent as a ↳ Parent.N sub-task row. The skills look for the board at the first path that exists: internal/board.md.claude/board.mdboard.mddocs/board.md.

Rendering in a narrow terminal

The full board is a wide, 8-column table. When the terminal — or an editor pane like Zed's — is too narrow to fit it, the Markdown renderer stacks each row into Header: value records rather than truncating, so you see a vertical list instead of a grid. That's a display fallback, not a problem with the board file.

To get the grid back: widen the pane (collapse side panels that eat horizontal space), or use status — its 4-column view (ID · Item · Priority · Status) fits most widths. board next and queries also help by showing fewer rows.

Named boards

By default everything operates on one board. For a genuinely separate domain — where a blended tally would be meaningless — add a named board: a @<name> token targets board.<name>.md in the board's directory (e.g. internal/board.eb1a.md), with its own archive board.<name>.archive.md. Everything after @<name> runs as normal against that file; each named board keeps its own tally and progress, never co-mingled.

board boards            # list the default + every board.*.md, each with its progress
board init @eb1a        # scaffold a new internal/board.eb1a.md
board @eb1a             # render it
board @eb1a next        # …or any command/query against it

For mere facets of one effort, don't split — use a Track + a query (board <track>, board by track).

Filtering & views

board takes an optional query. Tokens are space-separated and AND together; a , inside a token is OR; a leading ! negates. A token matches a row's Goal, Track, Priority (p0p3), state, or owner (mine/yours) — otherwise it's a substring search.

board presence !live        # Goal=Presence, but not the ✅ live ones
board traffic,earned p1      # (Traffic OR Earned) AND P1
board mine !parked           # mine, excluding parked
board T-D                    # a parent row and its ↳ sub-tasks

State words can be literal (!live drops only ✅ live) or a group alias: done=✅🟢 · todo=⚪ · active/wip=🟡 · parked=⏸️ · blocked/deferred=🔒 · skip=⛔ (so !done drops ✅ and 🟢). Owners are mine/me and yours/you; a bare ID like T-D matches that row and its sub-tasks. Beyond queries:

board next          # top ~8 live priorities (highest priority, not done/parked)
board by track      # re-group the board into a section per Track
board goal          # list the distinct values in the Goal column, with counts
board explain moat  # detail cards + an inferred "what this is" line per item (read-only, costs more tokens)
board sync          # reconcile this conversation into the board (writes, with confirm)
board archive       # move done rows out to board.archive.md (writes, with confirm)
board archived      # view board.archive.md
board @eb1a next    # run any command/query against a separate named board (board.eb1a.md)
board boards        # list the default board + every board.*.md, each with its progress
board help          # one-line grammar cheatsheet

Every render ends with a tally (N done · M to-do · K parked · J deferred/skip); a full, unfiltered board also shows a completion bar (▓▓▓▓▓▓░░░░ 31/47 (66%) done) and per-Goal progress (Presence 28/33 · Parity 3/3 · Moat 0/4).

Keeping the board current

board/status only render; board init, board sync, and board archive are the only writes. Two ways to keep the board live as you work:

  • On demand — run board sync at a stopping point. It reconciles the conversation against the board, shows a diff, and writes only on confirm.

  • Inline, automatic — add a rule to your project's CLAUDE.md so the agent keeps the board current as it works, with no extra pass:

    Keep the board current. When a board task completes or a follow-up emerges during work, update the board file before ending the turn — flip the Status, or add a ↳ Parent.N sub-task under its parent. Run board sync for a full reconcile.

    For hands-off updates, wire a SessionEnd hook that runs board sync once per session — not per turn (a per-turn reconcile adds a model call to every turn).

Updating

Already installed? Pull the latest:

npx skills@latest update board status -g     # update these two, globally
# or update everything you installed from here:
npx skills@latest update -g

(Drop -g to update a project-local install.) npx skills@latest list shows what you have.

Badge

skills.sh

License

MIT.

About

My collection of Agent skills

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors