Checklist Subtask Audit

Trello had no native subtasks until 2023 and the upgrade is still half-built — so teams use checklist items as pseudo-subtasks, then lose track of them. The board view shows checklist progress only as a 3/7 aggregate badge: you cannot filter, sort, or report on individual checkItem state across cards, so items assigned to deactivated members, items past their own due date, items on cards whose parent due date already passed, and bloated 15+-item checklists all drift unseen. This tool walks every checklist on every non-archived card and surfaces the ghosts — four verdicts in severity order, plus a per-card health rollup and a board-level GREEN/AMBER/RED signal.


The subtask upgrade Trello half-shipped.

Trello had no native subtasks until 2023. For the entire decade before that, every team that needed subtasks used checklist items instead — per-card to-do lists with no assignee, no due date, and no cross-card visibility. The 2023 Advanced Checklists upgrade added per-item assignees and per-item due dates, which is most of what subtasks need, but it stopped short of giving checkItems first-class status: the board view still shows checklist progress only as a 3/7 aggregate badge on the card face, and there is no native surface anywhere that lists "incomplete checkItems across the board" or "checkItems assigned to me" or "past-due checkItems." Half a subtask system. The reader who needs the other half — the cross-card view — has to click into every card by hand.

The framing is the same as the rest of the Trello cluster: make your board audit-ready before someone asks. The first two entries audit what's visible on the card face (the aging signal, the archive disposition). This one audits below the card surface that Trello's board view exposes — the pseudo-subtasks that the team uses to plan real work, that get assigned to people who later leave, that get due dates the team forgets about, that grow into 28-item lists nobody can read. When the PMO asks "where's the work?", the board has to be able to answer down to the checkItem — not just the card.

Trello's board view shows the checkItem count but not the checkItem state. The aggregate badge says 3 of 7. It does not say which 4 are blown past their due date, which 2 are assigned to a member who left in March, or which one is item 19 of 28 on a checklist that should have been split into three cards.What this audit catches

Four ghost verdicts, two bloat thresholds, card and board roll-up.

Generated Checklist Subtask Audit report showing Apex Defense — Radar Firmware Sprint board, summary row with 44 total checklists, 233 checkItems, 4 GHOST-ORPHANED, 8 GHOST-DEACTIVATED, 6 GHOST-OVERDUE, 3 GHOST-UNASSIGNED-OVERDUE, 3 bloated, 1 severely-bloated, RED verdict block citing GHOST-ORPHANED count and the severely-bloated 28-item DSP framework v4.2 cutover checklist, then four ghost tables in severity order, the bloated-checklists table, and the card-health rollup callout showing 4 CARD-CRITICAL / 6 CARD-WARN / 18 CARD-OK.
Generated report — Apex Defense demo, 28 cards / 44 checklists / 233 checkItems, verdict RED

Every incomplete checkItem gets exactly one verdict

Complete items are ignored entirely — this is an audit of what's still in flight, not what shipped. The cascade evaluates in severity order and the first matching verdict wins: GHOST-ORPHANED > GHOST-DEACTIVATED > GHOST-OVERDUE > GHOST-UNASSIGNED-OVERDUE > HEALTHY. An item assigned to a deactivated member on an overdue card with no recent activity gets GHOST-ORPHANED, not GHOST-DEACTIVATED — the worst-fit verdict wins.

GHOST-ORPHANED Parent card due date has passed AND this checkItem is incomplete AND there is no updateCheckItemStateOnCard action for this specific idCheckItem in the last 5 working days. The card sailed past its deadline with this work undone and untouched. The "5 working days" window is per-checkItem, not per-card — a card that's overdue can still be HEALTHY on its other items if those individual items had recent activity. Documented design choice; the per-item granularity is the point.
GHOST-DEACTIVATED Incomplete AND assigned to a board member whose account has deactivated=true. Nobody is going to do this; the assignee is gone. The fix is to reassign or close, but the report just surfaces the list — the decision lives with the human.
GHOST-OVERDUE Incomplete AND the checkItem has its own per-item dueAt in the past (Advanced Checklists per-item due) AND there is a live assignee. Past its own deadline, not just the parent card's. The Advanced Checklists upgrade added the per-item due date; this verdict surfaces the cases that drift because there's no native cross-card view that lists past-due checkItems.
GHOST-UNASSIGNED-OVERDUE Incomplete AND own dueAt in the past AND no assignee at all. Worst combination: deadline blown and nobody owns it. Separated from GHOST-OVERDUE because the remediation differs — one needs a reassignment conversation, the other needs an owner first.

Two bloat thresholds per checklist

Independent of the verdict cascade, every checklist gets a size tag. Bloated checklists are the cards that should have been split into multiple cards in the first place — individual items get lost in the noise and the aggregate 3/7 badge stops meaning anything useful when it's 9/28.

  • bloatedcheckItems.Count in 15–24. The card probably should have been split.
  • severely-bloatedcheckItems.Count >= 25. Single-handedly trips the board to RED.

Per-card health rollup

Each card collapses its incomplete checkItems into one tag — so a reader can scan the rollup callout and see how many cards need attention without reading the four ghost tables row by row.

  • CARD-CRITICALHas any GHOST-ORPHANED checkItem OR (parent card overdue AND incomplete-item count >= 5).
  • CARD-WARNHas any GHOST-DEACTIVATED or GHOST-OVERDUE checkItem and is not already CARD-CRITICAL.
  • CARD-OKAll incomplete items are HEALTHY (or no incomplete items at all).

Board verdict roll-up

One verdict per board run, set by the worst-fired threshold:

  • REDAny GHOST-ORPHANED, OR 5+ CARD-CRITICAL, OR any severely-bloated checklist (>= 25 items).
  • AMBERAny GHOST-DEACTIVATED or GHOST-OVERDUE, OR 3+ bloated checklists (15–24 items), OR 5+ CARD-WARN.
  • GREENOtherwise.

The bundled fixture lands RED via two independent triggers: 4 GHOST-ORPHANED checkItems across 3 cards (Boresight 2, IF amp 1, Sidelobe 1) AND a severely-bloated 28-item checklist ("DSP framework v4.2 cutover"). Either one alone would have tripped RED — the fixture pins both so the verdict path is exercised on the first render and the reason list shows the two stacked triggers.

What ends up on the page

Kicker + h1 (board name) + meta line (workspace, cards, checklists, checkItems, asOfDate). Summary row (total checklists / total checkItems / ghost-orphaned / ghost-deactivated / ghost-overdue / ghost-unassigned-overdue / bloated / severely-bloated). Board-level verdict (GREEN/AMBER/RED) with named reasons. Four ghost-checkItem tables in severity order — ORPHANED (CheckItem, Card, Card overdue by, Days since item activity, Assignee), DEACTIVATED (CheckItem, Card, Checklist, Assignee (deactivated), Days since item activity), OVERDUE (CheckItem, Card, CheckItem due, Days overdue, Assignee), UNASSIGNED-OVERDUE (CheckItem, Card, CheckItem due, Days overdue). Bloated-checklists table (Checklist, Card, Items, Severity pill, Complete %). Card-health rollup callout (CARD-CRITICAL / CARD-WARN / CARD-OK counts). Footer.

Trello Checklist Subtask Audit local UI showing health dot, discovery bar with Apex Defense — Radar Firmware Sprint board, 28 cards, 44 checklists, 233 checkItems, 16 members, Scan-scope section, and Discover plus Generate report buttons.
The local UI — click Discover, then Generate report

The honest scope of v1.

v1 is demo mode only. The discover script reads the bundled sample-data/checklists.json fixture — an Apex Defense workspace with one board ("Apex Defense — Radar Firmware Sprint"), 6 lists (Backlog, To Do, Doing, Blocked, In Review, Done), 16 members (3 deactivated: Marcus Lee, Linh Tran, Derek Singh), 28 non-archived cards, 44 checklists, and 233 checkItems engineered to break down 4 GHOST-ORPHANED / 8 GHOST-DEACTIVATED / 6 GHOST-OVERDUE / 3 GHOST-UNASSIGNED-OVERDUE plus 3 bloated and 1 severely-bloated checklist. You can evaluate the report shape, the verdict cascade, the bloat thresholds, and the card-health rollup end-to-end with no Trello credentials. Live mode (Trello REST against /boards/{id}/cards?filter=open, /boards/{id}/checklists for Advanced Checklists payload, /boards/{id}/members for the activityBlocked cross-reference, and /cards/{id}/actions?filter=updateCheckItemStateOnCard for per-item activity timestamps) is deferred to v2 once usage validates the demand.

Doesn't unghost the items. This is a read-only audit. The tool tells you which checkItems look like ghosts, with the reasons spelled out. It does not reassign the deactivated-member items, close the past-due items, restore the orphaned items, or split the bloated checklists. The remediation lives with the human reading the report. v2 might offer optional bulk-reassign for the GHOST-DEACTIVATED list; v1 stays out of write territory entirely.

Doesn't enforce checklist size. The bloated and severely-bloated tags flag the checklists that should have been split, but the tool has no opinion about when the split should happen — that's a planning conversation, not an audit finding. A 17-item checklist on a multi-week implementation card may be reasonable; the same 17 items on a single-day refactor card means the card scope grew. The tag is the signal to look; it isn't the instruction to break the checklist up.

Not a replacement for per-item subtask conversion. Trello's own half-built subtask upgrade lets you promote a checkItem to a full Trello card with one click — that's the right move for items that have real cross-card dependencies, multi-person ownership, or independent due dates from the parent. This tool audits the checkItems that stayed as checkItems and surfaces the ones that have drifted; it doesn't make the conversion call for you. A GHOST-OVERDUE item with its own per-item due date that another team is blocked on is probably a card, not a checklist row — the audit tells you it's there; the conversion decision is yours.


The badge shows 3/7. It doesn't show which 4 are ghosts.

Trello's board view collapses every checklist on a card to a single 3/7 aggregate badge on the card face. There is no native surface anywhere that says "show me incomplete checkItems assigned to deactivated members across the board," "show me past-due checkItems," or "show me checkItems on overdue cards with no recent activity." The Advanced Checklists upgrade added per-item assignees and per-item due dates but didn't add a cross-card report — the data exists, the view doesn't. Walking every checklist on every card by hand to find the four ghost shapes is the work this tool automates. The audit is what tells the reader which 4 of the 7 are ghosts without forcing them to click into 28 cards in a row.


Requirements

  • OSWindows, macOS, or Linux
  • RuntimePowerShell 7+ (pwsh). 5.1 is not supported.
  • BrowserAnything modern. UI on localhost:8795.
  • TrelloLive mode deferred to v2 — will use Trello REST (api.trello.com/1) with a personal API key + token. v1 demonstrates the report shape on a bundled fixture.
  • Demo modeBundled 28-card / 44-checklist / 233-checkItem / 16-member Apex Defense fixture — runs end-to-end with no creds, lands RED via 4 GHOST-ORPHANED items plus a severely-bloated 28-item checklist.

Three files. Free.

The tool, a user guide, and a prompt guide showing the spec, the fixture engineering that pins the 4/8/6/3 ghost counts and the 3/1 bloat counts, and the Pester contract.

Drop your email to unlock the downloads.

One email when new tools ship, digest only. Confirms via Kit (double opt-in). No tracking. Unlocks every download on the site from this browser.

One email · Double opt-in · Unlocks the whole library