feat(intake): add issue field validation workflow and structured issue templates#274
feat(intake): add issue field validation workflow and structured issue templates#274JustAGhosT merged 8 commits intodevfrom
Conversation
…y, phase, and impact fields Convert issue templates from Markdown to GitHub YAML issue forms with validated dropdown fields. Add feature request template alongside the existing bug report. New fields (area, priority, severity, phase, impact) use preset values derived from teams.yaml and project.yaml enums. Changes: - Replace .github/ISSUE_TEMPLATE/bug_report.md with bug_report.yml (YAML form) - Add .github/ISSUE_TEMPLATE/feature_request.yml with matching fields - Add .github/ISSUE_TEMPLATE/config.yml (disable blank issues, link security advisories) - Add .github/workflows/issue-label-validation.yml (validates fields on issue open/edit, auto-applies area:/priority:/severity: labels) - Update .agentkit/templates/github/ISSUE_TEMPLATE/ source templates - Add issueArea, issuePriority, issueSeverity, issueImpact enums to spec-validator - Add Phase 9 to validate.mjs: validates issue template dropdown values against enums https://claude.ai/code/session_01Ue9aaiqqt1iHDx8KNwQ92m
… and task protocol Wire the new issue area/priority/severity/impact fields into the agent teams orchestration pipeline so issues flow through to the right teams automatically. Changes: - task-protocol: add area, severity fields to task schema with validation, filtering, and display; extend TASK_PRIORITIES to include P4 - orchestrator: add resolveTeamByArea() for area→team routing using teams.yaml intake.routing; add computeEscalation() for dynamic escalation based on severity + impact + area - review-runner: normalize severity values to canonical lowercase (critical/high/medium/low) matching issue templates; export normalizeSeverity() helper - sync-backlog template: add area labels table, severity levels, escalation rules, source tracking, and P4 priority level - sync-backlog prompt: add issue field routing table and escalation rules for Copilot prompt - teams.yaml: add cli→backend and sync-engine→devops intake routing https://claude.ai/code/session_01Ue9aaiqqt1iHDx8KNwQ92m
…s and flows Ensure consistent area/priority/severity values in GitHub issue filing, Linear issue filing, and all platform command templates (Copilot, Cursor, Windsurf, Codex). Changes: - review.md: normalize severity from CRITICAL/HIGH/MEDIUM/LOW to canonical lowercase (critical/high/medium/low); add area field to issue filing with file-path→area mapping; use structured labels (severity:X, area:X, priority:X) for both GitHub and Linear - project-review.md: same severity normalization and structured label format; add area field to Phase 1c findings; add canonical field reference section - Copilot TEMPLATE.prompt.md: add issue field routing section with area→team mapping, priority/severity enums, and escalation rules - Cursor TEMPLATE.md: same routing section added - Windsurf command.md: same routing section added - Codex SKILL.md: same routing section added All platforms now reference identical: - Area values (12 canonical values from teams.yaml) - Priority levels (P0–P4) - Severity levels (critical/high/medium/low) - Escalation rules (severity+area→security teams, impact+P0→product) https://claude.ai/code/session_01Ue9aaiqqt1iHDx8KNwQ92m
…robustness
Required fixes:
- review.md: fix uppercase "CRITICAL→P0, HIGH→P1" to lowercase "critical→P0, high→P1"
- validate.mjs Phase 9: make area parsing consistent with severity — extract
bare value before " — " separator so "backend — Server-side" validates correctly
- (PROJECT_ENUMS export verified as already present on line 1086)
Tests:
- orchestrator.test.mjs: add tests for resolveTeamByArea() (default routing,
unknown areas, config overrides, team- prefix handling) and computeEscalation()
(security escalation, blocked cross-team, operations team from config, edge cases)
- review-runner.test.mjs: add tests for normalizeSeverity() (uppercase, lowercase,
mixed case, unknown values)
- validate.test.mjs: add Phase 9 tests (valid dropdowns, invalid area, invalid
severity, malformed template, area options with description separators)
DRY improvements:
- synchronize.mjs: add buildAreaRoutingTable() to generate routing from teams.yaml
and expose as {{intakeAreaRoutingTable}} template variable
- All 4 platform templates (Copilot, Cursor, Windsurf, Codex) now use
{{intakeAreaRoutingTable}} instead of hardcoded routing strings
Performance:
- orchestrator.mjs: add loadTeamsSpec() cache (Map keyed by agentkitRoot) so
resolveTeamByArea() and computeEscalation() read teams.yaml at most once per
process. Export clearTeamsSpecCache() for test isolation.
Robustness:
- computeEscalation(): read operationsTeam from teams.yaml config instead of
hardcoding 'team-quality'
- issue-label-validation.yml: add workflow_dispatch trigger with optional
issue_number input for manual dry-run testing
All 597 tests pass.
https://claude.ai/code/session_01Ue9aaiqqt1iHDx8KNwQ92m
The Copilot prompt template now uses {{intakeAreaRoutingTable}} which
renders the area→team routing as a compact inline string instead of a
full markdown table.
https://claude.ai/code/session_01Ue9aaiqqt1iHDx8KNwQ92m
Merge PR #237 changes into fresh branch from dev. Resolve merge conflict in synchronize.mjs by keeping both buildTeamVars and buildAreaRoutingTable functions. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Handle workflow_dispatch event by fetching issue via REST API - Add required field validation for Area and Priority (error on missing) - Remove stale area/priority/severity/invalid-fields labels before reapplying - Escape user-controlled values in validation comments to prevent @mention spam Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
AgentKit Forge Source Change DetectedThis PR modifies files in the AgentKit Forge source directories:
These are the upstream source-of-truth for all generated AI tool configs. Review checklist
|
|
Caution Review failedPull request was closed or merged during review WalkthroughThis PR introduces team routing and escalation infrastructure for issues via new orchestrator functions, extends validation to check issue template dropdowns against canonical enums, adds area and severity fields to task management, converts GitHub issue templates to YAML form format with structured fields, normalizes severity values from uppercase to lowercase, and updates documentation and templates to reflect the new routing and validation semantics. Changes
Estimated code review effort🎯 4 (Complex) | ⏱️ ~60 minutes Possibly related PRs
Suggested labels
Poem
🚥 Pre-merge checks | ✅ 2 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (2 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Summary
Supersedes #237 with review findings addressed.
Changes
issue-label-validation.yml): Validates issue form fields, auto-applies labels, posts error commentsissuesandworkflow_dispatchevents (review finding Add orchestration engine, workflow commands, and comprehensive documentation #1)resolveTeamByArea(),computeEscalation(),normalizeSeverity(), canonical enums in spec-validatorteams.yamlwithcliandsync-enginearea routingTest Plan
buildTeamVarsandbuildAreaRoutingTable)repoNamevariable noted for future improvement)Checklist
🤖 Generated with Claude Code
Summary by CodeRabbit
Release Notes
New Features
Bug Fixes
Documentation
Tests