Skip to content

Add per-release Board view: create on /plan-release, delete on /close-release #22

@gringolito

Description

@gringolito

What

When /plan-release creates a milestone, automatically create a Board view on the GitHub Project named after the version string (e.g. v1.2.0), filtered to items assigned to that milestone. When /close-release closes the milestone, delete the corresponding Board view.

Why

A per-release Board view gives the team a focused kanban scoped to the release in progress, without noise from the full backlog. Deleting it on closure keeps the Project views tidy and avoids accumulating stale boards over time.

In Scope

  • /plan-release — new step after milestone creation:

    • Read project_id from .claude/backlog-project.json
    • Create a Board view named exactly after the version string using createProjectV2View GraphQL mutation with layout: BOARD_LAYOUT
    • Apply milestone:"<version>" filter via updateProjectV2View GraphQL mutation
    • Surface GraphQL errors verbatim; board creation failure warns but does not abort milestone creation
    • Include board view link in the output summary
  • /close-release — new step before milestone closure:

    • Query all project views via node { ... on ProjectV2 { views } } GraphQL query
    • Find the view whose name matches the milestone title exactly
    • Delete it via deleteProjectV2View GraphQL mutation
    • If no matching view is found, emit a warning and continue without blocking closure
    • Reflect deletion result (deleted or skipped) in the final summary

Out of Scope

  • Manually creating or deleting Board views outside of these two commands
  • Updating the Board view filter if a milestone is renamed after creation
  • Retroactive board creation for milestones that existed before this feature

Acceptance Criteria

  • After /plan-release completes, a Board view named <version> exists on the Project with milestone:"<version>" filter applied
  • GraphQL errors during view creation are surfaced verbatim; milestone creation is not aborted on view failure
  • /plan-release output summary includes a link to the newly created Board view
  • /close-release queries project views and finds the one matching the milestone title by exact name
  • /close-release deletes the matching Board view via deleteProjectV2View before closing the milestone
  • If no matching view is found during /close-release, a warning is emitted and closure continues unblocked
  • Board deletion result (deleted or skipped) appears in the /close-release final summary

INVEST Notes

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    Status

    Todo

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions