Classifying actions
Use when a board-superpowers SKILL is about to perform a mutating action — changing card status, editing card body, pushing a claim branch, opening or merging a PR, writing project config, writing host-local credentials, deleting a worktree, deleting a branch — and needs to know whether the action proceeds automatically or waits for architect approval. Apply at every mutating-action decision point inside any board-superpowers skill (briefing-daily / intaking-requirement / reviewing-pr-queue / triaging-board / consuming-card / bootstrapping-repo). Apply even when the action looks obviously safe; the decision table is the source of truth, not intuition. Do NOT use for read-only actions or for queries that surface information without changing state. Do NOT invoke for the audit-row write step that follows the decision — that is `board-superpowers:auditing-actions`.From its SKILL.md
npx -y skills add PanQiWei/board-superpowers --skill classifying-actionsAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 2 stars2 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
4.4 KB, as published. Nobody here has run it
classifying-actions
This skill is the decision-table authority for every mutating action a board-superpowers SKILL performs. It answers "does this action proceed automatically or wait for architect approval?" using:
- A 14-row Producer matrix + 14-row Consumer catalog (see
references/matrix.md+references/action-id-catalog.md). - A 5-step short-circuit triage rule that escalates Auto-class actions
to Reserved-class when they touch architect-reserved powers, source
of truth, in-flight work, or cross-card structure (see
references/triage-rule.md). - A two-layer override system — user-level
~/.board-superpowers/overrides.ymland project-level<repo>/.board-superpowers/config.local.yml— where project layer wins on conflict (seereferences/override-parsing.md).
Decision tree at a glance
flowchart TD
Start["Caller: action_id + repo_root"] --> M["Look up default class\nin references/matrix.md"]
M --> D["Default class: A, R, or N"]
D --> T{"5-step triage:\nany short-circuit\nmatches?"}
T -- "yes, default was A" --> Esc["Escalate to R"]
T -- "yes, default was R" --> KeepR["Already R; no change"]
T -- no --> Keep["Use matrix default"]
Esc --> O["bsp_resolve_autonomy_class:\nmerge user + project\nautonomyoverrides\n(project layer wins)"]
KeepR --> O
Keep --> O
O --> Final(["Return final A, R, or N"])
How to apply this skill
Caller passes an action_id (an integer from the catalog) and the repo
root. Caller receives back one of:
A— Auto. Caller acts immediately, then writes one audit row.R— Reserved. Caller drafts a proposal, surfaces to the architect, waits for ack, then acts and writes the resolve audit row.N— No-go. Caller refuses; surfaces the block reason. (No matrix row currently maps to N; the value exists forautonomy_overrides:users who want to disable specific actions outright.)
The decision algorithm:
- Look up the action's default class in
references/matrix.md. - Apply the 5-step triage rule from
references/triage-rule.md— if any step matches and the matrix says A, escalate to R. - Invoke
bsp_resolve_autonomy_class <action_id> <repo_root>(inscripts/lib/common.sh) to merge in any layered overrides. - Return the final class.
The helper handles yaml parsing of the override files via venv-managed PyYAML; if venv is unavailable, the helper falls back to the matrix default (this is conservative — overrides cannot promote R to A without a working venv).
Quick reference
| What you have | What you need |
|---|---|
| an action description | look up its action_id in references/action-id-catalog.md |
an action_id | look up its default class in references/matrix.md |
| an Auto-class default | check references/triage-rule.md for escalation triggers |
| an override system question | read references/override-parsing.md |
What this skill does NOT cover
- Writing the audit row — that's
board-superpowers:auditing-actions. This skill decides; the other records. - Surfacing the proposal to the architect — that's the molecular caller's UX responsibility (the four Producer routines / consuming-card / bootstrapping-repo).
- Tracking proposal acks across architect prompts — that's the caller's session-state responsibility.
This skill defines what class an action is. The caller decides when and how to act on it.