feat: add labels param and todo item_type to sprint MCP tools #13

Merged
forgejo_admin merged 1 commit from 12-sprint-labels-and-todo-type into main 2026-03-06 13:46:29 +00:00

Summary

  • Adds optional labels parameter to add_sprint_item and move_sprint_item MCP tools
  • Adds todo as a valid item_type across all sprint tool descriptions and docstrings
  • MCP counterpart to pal-e-docs #70

Changes

  • src/pal_e_docs_mcp/tools/sprints.py: added labels: str | None param to add_sprint_item and move_sprint_item; updated all item_type Field descriptions to include 'todo'; updated docstrings to reference four boards instead of three

Test Plan

  • No runtime tests -- MCP tool definitions are declarative
  • ruff check and ruff format pass clean
  • Tool signatures match backend API contract from pal-e-docs #70

Review Checklist

  • Passed automated review-fix loop
  • No secrets committed
  • No unnecessary file changes
  • Commit messages are descriptive
  • todo-sprint-item-labels-and-todo-type -- the plan this PR implements
  • Forgejo issue: #12
  • Backend counterpart: pal-e-docs #70 (must deploy first)
## Summary - Adds optional `labels` parameter to `add_sprint_item` and `move_sprint_item` MCP tools - Adds `todo` as a valid `item_type` across all sprint tool descriptions and docstrings - MCP counterpart to pal-e-docs #70 ## Changes - `src/pal_e_docs_mcp/tools/sprints.py`: added `labels: str | None` param to `add_sprint_item` and `move_sprint_item`; updated all `item_type` Field descriptions to include `'todo'`; updated docstrings to reference four boards instead of three ## Test Plan - [x] No runtime tests -- MCP tool definitions are declarative - [x] ruff check and ruff format pass clean - [x] Tool signatures match backend API contract from pal-e-docs #70 ## Review Checklist - [x] Passed automated review-fix loop - [x] No secrets committed - [x] No unnecessary file changes - [x] Commit messages are descriptive ## Related Notes - `todo-sprint-item-labels-and-todo-type` -- the plan this PR implements - Forgejo issue: #12 - Backend counterpart: pal-e-docs #70 (must deploy first)
feat: add labels param and todo item_type to sprint MCP tools
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
ci/woodpecker/pr/woodpecker Pipeline failed
3e4cee471a
Closes #12

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Author
Owner

PR #13 Review

Title: feat: add labels param and todo item_type to sprint MCP tools
Branch: 12-sprint-labels-and-todo-type -> main
Scope: 1 file changed, +23/-6 lines

BLOCKERS

None.

NITS

  1. Column count drift (pre-existing, out of scope): The add_sprint_item and move_sprint_item column descriptions still reference six columns (backlog, todo, next_up, in_progress, qa, done), but memory notes indicate seven columns (with needs_approval). This predates this PR and should be tracked separately (likely issue #10 or #11 scope).

  2. No item_type validation at MCP layer: The todo value is documented in Field descriptions but never validated before being sent to the backend. This is consistent with the existing pattern for all other params (column, item_type, status), so not a real concern -- just noting that validation is deferred to the backend API.

  3. labels docstring for move_sprint_item: The description says "Comma-separated labels, e.g. 'type:bug,scope:unplanned'" which is clear, but the docstring for the function itself ("""Move a sprint item to a different column and/or position on the board.""") does not mention that labels can also be updated. Minor -- the Field description is sufficient for MCP tool discovery.

CODE REVIEW

The implementation is clean and follows the existing patterns exactly:

  • labels: Annotated[str | None, Field(...)] = None matches the convention used by all other optional params.
  • if labels is not None: body["labels"] = labels -- correct conditional inclusion, consistent with title, position, etc.
  • All six locations where item_type values are enumerated in descriptions/docstrings have been updated to include 'todo'.
  • create_sprint, add_sprint_item, get_sprint_board, get_backlog docstrings updated from "three boards" to "four boards".
  • No secrets, credentials, or .env files in the diff.
  • Single file change -- no scope creep.

SOP COMPLIANCE

  • Branch named after issue (12-sprint-labels-and-todo-type references #12)
  • PR body has: Summary, Changes, Test Plan, Related
  • Related section references plan slug (todo-sprint-item-labels-and-todo-type)
  • Related section references Forgejo issue (#12)
  • No secrets committed
  • No unnecessary file changes (1 file, tightly scoped)
  • Commit messages are descriptive
  • Notes backend dependency documented (pal-e-docs #70 must deploy first)

VERDICT: APPROVED

## PR #13 Review **Title:** feat: add labels param and todo item_type to sprint MCP tools **Branch:** `12-sprint-labels-and-todo-type` -> `main` **Scope:** 1 file changed, +23/-6 lines ### BLOCKERS None. ### NITS 1. **Column count drift (pre-existing, out of scope):** The `add_sprint_item` and `move_sprint_item` column descriptions still reference six columns (`backlog, todo, next_up, in_progress, qa, done`), but memory notes indicate seven columns (with `needs_approval`). This predates this PR and should be tracked separately (likely issue #10 or #11 scope). 2. **No `item_type` validation at MCP layer:** The `todo` value is documented in Field descriptions but never validated before being sent to the backend. This is consistent with the existing pattern for all other params (`column`, `item_type`, `status`), so not a real concern -- just noting that validation is deferred to the backend API. 3. **`labels` docstring for `move_sprint_item`:** The description says `"Comma-separated labels, e.g. 'type:bug,scope:unplanned'"` which is clear, but the docstring for the function itself (`"""Move a sprint item to a different column and/or position on the board."""`) does not mention that labels can also be updated. Minor -- the Field description is sufficient for MCP tool discovery. ### CODE REVIEW The implementation is clean and follows the existing patterns exactly: - `labels: Annotated[str | None, Field(...)] = None` matches the convention used by all other optional params. - `if labels is not None: body["labels"] = labels` -- correct conditional inclusion, consistent with `title`, `position`, etc. - All six locations where `item_type` values are enumerated in descriptions/docstrings have been updated to include `'todo'`. - `create_sprint`, `add_sprint_item`, `get_sprint_board`, `get_backlog` docstrings updated from "three boards" to "four boards". - No secrets, credentials, or `.env` files in the diff. - Single file change -- no scope creep. ### SOP COMPLIANCE - [x] Branch named after issue (`12-sprint-labels-and-todo-type` references #12) - [x] PR body has: Summary, Changes, Test Plan, Related - [x] Related section references plan slug (`todo-sprint-item-labels-and-todo-type`) - [x] Related section references Forgejo issue (#12) - [x] No secrets committed - [x] No unnecessary file changes (1 file, tightly scoped) - [x] Commit messages are descriptive - [x] Notes backend dependency documented (pal-e-docs #70 must deploy first) ### VERDICT: APPROVED
forgejo_admin deleted branch 12-sprint-labels-and-todo-type 2026-03-06 13:46:29 +00:00
Sign in to join this conversation.
No description provided.