Skip to content

Factor AGENTS.md procedures into agent skills (local dev, board/issue workflow, CI, publishing, …) #2163

Description

@cliffhall

Problem

AGENTS.md is now the single, very large contract for changing this codebase — the issue/board workflow, the priority rubric, the branch and label rules, the TypeScript/Mantine conventions, the test tiers and coverage gate, the pre-push gate, and the release procedure. It works, but it is loaded in full, on every turn, for every task, whether the task is a one-line CSS fix or a release cut.

That has three costs:

  1. Context. The whole contract is resident even when almost none of it applies.
  2. Discoverability. A procedure like "cut a release" or "triage new issues" is a multi-step recipe buried in prose among a dozen unrelated recipes; it is found by reading, not by asking for it.
  3. Drift. The recipes carry live IDs (board field/option IDs, project node IDs) and exact command sequences. When they go stale there is nothing that runs them, so staleness is discovered by a failed command mid-task.

Agent skills are the mechanism designed for exactly this shape: a named, on-demand bundle of instructions loaded only when the task matches, invokable by name (/<skill>).

Proposal

Add a .claude/skills/ set that factors the procedural parts of AGENTS.md into invokable skills, leaving AGENTS.md as the always-on rules (conventions a reviewer cites against a diff) and moving the procedures (multi-step recipes with commands) into skills.

Candidate skills, roughly one per procedure that today lives as prose:

Skill Covers
local-dev The non-workspace install cascade, per-client npm install, clients/web && npm run dev vs the built launcher, which script to run for which client, the @inspector/core alias, dependency placement rules (root-only SDK packages, bundler external lists, overrides)
issue-create The full create flow: version label + type label + milestone + board card + Status + Priority — all five steps, with the current board IDs
issue-triage Pass 1 sweep (the unboarded diff against both boards), the priority rubric with the score comment, and the board audit query
board-ops The gh project recipes for #28 and #11: move a card, re-score, delete a card, plus the option-deletion hazard, the snapshot rule, and the recovery recipe
pre-push-gate npm run formatnpm run ci, what each tier covers, the DCO signoff rule and its repair, and what to do when a specific gate fails
testing Test placement (side-by-side vs src/test/ vs __tests__/), the tiers, the ≥90 per-file gate, the v8 ignore policy, renderWithMantine
pr-flow Branch naming, Closes #N, screenshots into the gitignored pr-screenshots/, requesting Copilot review, responding to review rounds, and closing out (manual close + Done)
release Cutting a release: bump on v2/main first, milestone merge, tag origin/main bare x.y.z, pack:verify, the Docker image
test-servers Picking and running a showcase config, ensure-test-servers, the stale-build hazard

Not exhaustive — the list should be settled while doing the work, and some of the above may merge.

Constraints

  • AGENTS.md stays the source of truth for rules. A skill must not become a second, divergent statement of a convention. Where a skill needs a rule, it should state the procedure and point at AGENTS.md for the rule — the same relationship .github/copilot-instructions.md has, and with the same failure mode (silent drift) to guard against.
  • Anything moved out of AGENTS.md must be removed from it, not duplicated. Two copies of the board IDs is strictly worse than one.
  • Non-Claude agents read AGENTS.md. Skills are a Claude Code mechanism; other agents (and humans) get only the file. So the split has to leave AGENTS.md still complete enough to work from — which argues for moving recipes (which a human can find via a pointer) rather than rules (which a reviewer must have resident).
  • Mirror any review-relevant change into .github/copilot-instructions.md, per the existing rule.

Open questions

  • Is the right split rules-vs-procedures, or task-vs-task? The table above mixes both.
  • Should AGENTS.md keep a short index of the skills so a human/non-Claude agent knows what exists and where to look?
  • Do any of these warrant being project skills committed to the repo (so every contributor gets them) vs personal? Committed, presumably — but that makes them a reviewed surface with its own maintenance cost.
  • Is there a way to make a skill's recipe executable (a script in the skill dir) rather than prose, so the board IDs live in one place that fails loudly when stale?

Metadata

Metadata

Assignees

No one assigned

    Labels

    choreMaintenance: deps, build tooling, CI, cleanup — no user-facing behavior changev2Issues and PRs for v2

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions