Skip to content

board-ops: card lookups silently miss cards now that board #28 exceeds --limit 500 #2451

Description

@cliffhall

Problem

Board #28 now holds 533 items (counted 2026-09-22), but the card lookups in .claude/skills/board-ops/SKILL.md run gh project item-list 28 … --limit 500. Past the limit, item-list truncates silently: no error and no warning, just the first 500 items. Any card beyond that point is invisible, so the recipes return false negatives rather than failing:

Recipe (board-ops/SKILL.md) Limit What goes wrong
GHSA advisory draft lookup (~L44, added in #2444) 500 Reports no draft card titled [GHSA-…] on #28 for a card that exists
Move an existing card (~L160) 500 ITEM_ID comes back empty, then item-edit --id "" fails with an opaque node-resolution error
Delete a card (~L175) 500 Same as above
Snapshot before touching options (~L245) 600 Headroom of 67 items; a snapshot that silently drops cards cannot restore them
Recovery board-broken.json dump (~L267) 600 Same as above

issue-triage/SKILL.md uses --limit 700 (L56, L222), which covers today's board with ~170 items to spare. It will fail the same way once the board grows past that.

The skill already warns that --limit must stay above the board's item count, but that warning relies on someone remembering to check. The "~265 as of 2026-08-01" figure it quotes has doubled in under two months.

How it bit

Twice in one session (2026-09-22), both times leading to a confidently wrong statement:

Expected

A lookup either finds the card or fails loudly. It should never return an empty result because the board grew.

Suggested direction

  • Issue cards: look them up from the issue side, which does not depend on board size:
    gh api graphql -f query='{repository(owner:"modelcontextprotocol",name:"inspector"){issue(number:<N>){projectItems(first:10){nodes{id project{number}}}}}}' \
      --jq '.data.repository.issue.projectItems.nodes[] | select(.project.number==28) | .id'
  • Draft cards and whole-board dumps (GHSA lookup, snapshot, recovery, the triage audit) do need the full listing. Give them a limit with real headroom, and assert .items | length is below it, so a truncated listing fails instead of passing as complete.
  • Remove the stale "~265 items" figure, or replace it with the assertion so no manual check is needed.

🤖 Generated with Claude Code

Activity

  1. added this to the v2.8.0 milestone on Sep 23, 2026
  2. added
    bugSomething isn't working
    v2Issues and PRs for v2
    on Sep 23, 2026
  3. cliffhall commented on Sep 23, 2026

    @cliffhall
    MemberAuthor

    Triage: Priority Medium (total 8)

    Board: #28, Status Todo.

  4. self-assigned this
    on Sep 23, 2026
  5. cliffhall commented on Sep 23, 2026

    @cliffhall
    MemberAuthor

    Fixed by #2452, merged into v2/main as de44e97.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

bugSomething isn't workingv2Issues and PRs for v2

Type

No type

Projects

No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions