feat(assign): add mgw:assign command — claim issues and update board assignment#95
Merged
snipcodeit merged 19 commits intomainfrom Mar 1, 2026
Merged
feat(assign): add mgw:assign command — claim issues and update board assignment#95snipcodeit merged 19 commits intomainfrom
snipcodeit merged 19 commits intomainfrom
Conversation
…ields Add docs/BOARD-SCHEMA.md documenting the full GitHub Projects v2 board field schema for MGW pipeline visibility. Defines 5 custom fields: - Status (single-select, 13 options mapping 1:1 to pipeline_stage values) - AI Agent State (text, shows active GSD agent) - Milestone (text, from project.json) - Phase (text, number + name format) - GSD Route (single-select, 4 options for all known routes) Includes GraphQL mutation templates, project.json board key schema, and board view planning for downstream issues (#72-#79). Closes #71 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Implement new /mgw:board command with three subcommands: - create: idempotent board creation with 5 custom fields via GraphQL - show: display board state with items grouped by Status field - configure: compare field options against canonical schema Custom fields follow board schema from #71 (docs/BOARD-SCHEMA.md): - Status (SINGLE_SELECT, 13 options mapping 1:1 to pipeline_stage) - AI Agent State (TEXT, updated during GSD execution) - Milestone (TEXT, from project.json milestone name) - Phase (TEXT, phase number + name format) - GSD Route (SINGLE_SELECT, 4 options for all known routes) Board metadata (node_id, field IDs, option IDs) stored in project.json under project.project_board.fields for downstream commands to read without re-querying GitHub. Closes #72 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…nd extend Adds sync_milestone_to_board step to mgw:project command. After issues are created (both init and extend modes), each issue is added to the GitHub Projects v2 board as an item with Milestone, Phase, and GSD Route fields set. Board item IDs are stored in project.json per issue (board_item_id field). Non-blocking: any GraphQL failure logs a warning and the pipeline continues. Sync is skipped silently when board is not configured or custom fields are not set up. Closes #73 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ions Add update_board_status shared utility (board-sync.md) and hook into issue.md and run.md stage transitions. All board updates are non-blocking — API failures never prevent pipeline execution. Reads field/option IDs from board-schema.json or project.json at runtime. Closes #74 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Add update_board_agent_state utility to board-sync.md and hook into run.md at planner/executor/verifier spawn points for both quick and plan-phase routes. Field is cleared after PR creation. All calls are non-blocking — API failures never interrupt pipeline execution. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add sync_pr_to_board utility to workflows/board-sync.md that calls addProjectV2ItemById to add a PR as a GitHub Projects v2 board item - Hook sync_pr_to_board into run.md after PR creation (non-blocking) - Hook sync_pr_to_board into pr.md update_state step (linked mode only) - Add board_reconcile step to sync.md that iterates cross-refs and calls sync_pr_to_board for all issue→PR implements links (idempotent, non-blocking) - Add board-sync.md to execution_context of pr.md and sync.md - Pull forward board-sync.md, board.md, issue.md, and state.md from prior milestone board issues (#71-#75) as this branch is based on main Closes #76 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Add mgw:board views subcommand supporting kanban, table, and roadmap layouts. Creates GitHub Projects v2 views via GraphQL and outputs user instructions for setting group-by configuration in the GitHub UI (API limitation). Create docs/BOARD-SCHEMA.md documenting custom fields, Status options, GSD route options, and the three intended layout views with their configuration. Closes #77 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Rename table view from "All Issues" to "Triage Table — Team Planning" - Add step-by-step column configuration instructions for triage planning - Column order: Status, Milestone, Phase, GSD Route, AI Agent State - Sort by Status ascending surfaces active work at top - Update BOARD-SCHEMA.md with triage table column order and sort config - Document table view entry in project.json storage schema Closes #78 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ine grouping - Add mgw:board views roadmap subcommand — creates ROADMAP_LAYOUT view named "Roadmap — Milestone Timeline" via createProjectV2View GraphQL mutation - View dispatch updated: roadmap case delivers milestone grouping instructions and documents date field limitation (MGW uses iteration-based tracking) - Document milestone due date workaround for timeline bar rendering - Store roadmap view ID in project.json alongside kanban and table entries - Update docs/BOARD-SCHEMA.md with full roadmap view configuration reference: - Group by Milestone step-by-step UI instructions - Date field limitation explanation and gh api workaround - Updated views table and storage schema with roadmap entry - Completes the views subcommand: kanban + table + roadmap all implemented Closes #79 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Implements issue #80: new MGW command for claiming GitHub issues. - Assigns issue via gh issue edit --add-assignee (defaults to @me) - Updates .mgw/active/ state file with assignee field - Creates minimal state entry if issue has not been triaged yet - Emits board URL confirmation if GitHub Projects board is configured - Idempotent: re-assigning same user confirms state without error - Follows delegation boundary: only state and GitHub API operations GitHub Projects v2 automatically syncs issue assignees to board items, so no direct GraphQL mutation is needed for the board Assignee field. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This was referenced Mar 1, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
mgw:assign <issue-number> [username]command to claim GitHub issues for a user (defaults to@me)gh issue edit --add-assignee, updates.mgw/active/state, and emits board URL confirmation.mgw/active/state entry on-demand if the issue has not yet been triaged — enabling assignment at any point in the pipelineCloses #80
Milestone Context
Changes
commands/assign.md (new)
parse_args— splits$ARGUMENTSintoISSUE_NUMBER+ optionalUSERNAME, validates numericvalidate_and_load— initializes.mgw/structure, loads existing state file or flags for creationresolve_user— defaults to@meviagh api user; validates named user viagh api users/$USERNAMEfetch_issue— fetches issue metadata; detects if already assigned (idempotent path)assign_github— callsgh issue edit --add-assignee; skips if already assignedupdate_state— writesassigneeto existing state file, or creates minimalpipeline_stage: newentrycheck_board— readsproject.jsonfor board URL; emits URL for confirmation (no GraphQL mutation needed)confirm— prints formatted assignment confirmation table~/.claude/commands/mgw/assign.md (deployed)
commands/assign.mddeployed to user's Claude commands directoryTest Plan
mgw:assign 80— assigns issue Add mgw:assign command — claim issues and update board assignment #80 to authenticated user, state file updatedmgw:assign 80 snipcodeit— assigns to named user, confirms assignmentmgw:assign 80— idempotent path: "already assigned" message, no error.mgw/active/state — minimal state entry created