Skip to content

feat: add get_board tool — kanban board view#7

Merged
phuryn merged 4 commits intophuryn:mainfrom
gregario:feat/get-board-tool
Mar 15, 2026
Merged

feat: add get_board tool — kanban board view#7
phuryn merged 4 commits intophuryn:mainfrom
gregario:feat/get-board-tool

Conversation

@gregario
Copy link
Collaborator

Summary

Closes #6.

  • Adds get_board MCP tool — returns all intents grouped by status (open, claimed, blocked, done, cancelled) with active claims and blocked dependencies
  • Optional team_id parameter to filter to a single team
  • Excludes drafts from all columns (following existing convention)
  • Two-query approach: main query (intents LEFT JOIN active claims) + secondary query (blocked dependencies)
  • BoardStatus = Exclude<IntentStatus, 'draft'> type ensures the draft-exclusion contract is visible at the type level

Changes

  • src/types.tsBoardIntent, BoardView, BoardStatus types
  • src/db/queries.tsgetBoard() query function
  • src/tools/overview.tsget_board tool registration
  • tests/overview.test.ts — 6 integration tests (empty board, status grouping, claims, blocked deps, team filter, draft exclusion)

Test plan

  • All 74 tests pass (including 6 new board view tests)
  • Empty board returns all columns with zero counts
  • Intents appear in correct status columns
  • Claimed intents include claimed_by and claim_id
  • Blocked intents include blocked_by dependency IDs
  • team_id filter restricts results to that team only
  • Drafts excluded from all columns and summary

🤖 Generated with Claude Code

gregario and others added 4 commits March 14, 2026 21:13
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add 6 tests in a new 'Board View' describe block covering:
- empty board returns zero counts
- intents grouped into correct status columns
- claimed intents include claimed_by and claim_id
- blocked intents include blocked_by
- team_id filtering
- draft exclusion from all columns

Tests expect to fail with "db.getBoard is not a function" until
the query is implemented.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Wire up get_board tool in overview.ts (optional team_id filter).
Replace Partial<Record<IntentStatus, ...>> with Record<BoardStatus, ...>
using Exclude<IntentStatus, 'draft'> — makes the draft-exclusion contract
explicit at the type level and eliminates non-null assertions in consumers.

Closes phuryn#6

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@phuryn phuryn merged commit f0c9421 into phuryn:main Mar 15, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add board view tool — see all intents grouped by status

2 participants