feat: add /validate-ticket skill for post-merge validation #230

Merged
forgejo_admin merged 1 commit from 228-validate-ticket-skill into main 2026-03-29 06:45:07 +00:00
Contributor

Summary

Adds the /validate-ticket routing skill -- the right-side mirror of /review-ticket. Where /review-ticket gates todo -> next_up (scope review), /validate-ticket gates validation -> done (production verification).

Changes

  • skills/validate-ticket/SKILL.md -- new routing skill that parses a board item reference, resolves the Forgejo issue and merged PR, spawns a fresh-context validation agent, and handles PASS/PARTIAL/FAIL verdicts

Test Plan

  • Verify file exists: cat ~/.claude/skills/validate-ticket/SKILL.md
  • Verify it references skill-validate-ticket, sop-validation, and template-validation notes
  • Verify frontmatter matches review-ticket pattern (name, description, argument-hint)
  • Manual test: run /validate-ticket board-slug#item-id on an item in the validation column
  • No regressions in existing skills

Review Checklist

  • Passed automated review-fix loop
  • No secrets committed
  • No unnecessary file changes
  • Commit messages are descriptive
  • Closes #228
  • pal-e-agency -- the project this work belongs to
  • skill-validate-ticket (id 841) -- the pal-e-docs skill note this routing file delegates to
  • sop-validation -- the post-merge validation SOP with repo-type checklists
  • template-validation -- the validation note template
  • Parent: #209 (right-side validation pipeline)
  • Sibling: #226 (doc fixes), #227 (merge hook)
  • Mirror: review-ticket skill (left-side gate)
## Summary Adds the `/validate-ticket` routing skill -- the right-side mirror of `/review-ticket`. Where `/review-ticket` gates `todo -> next_up` (scope review), `/validate-ticket` gates `validation -> done` (production verification). ## Changes - `skills/validate-ticket/SKILL.md` -- new routing skill that parses a board item reference, resolves the Forgejo issue and merged PR, spawns a fresh-context validation agent, and handles PASS/PARTIAL/FAIL verdicts ## Test Plan - [ ] Verify file exists: `cat ~/.claude/skills/validate-ticket/SKILL.md` - [ ] Verify it references `skill-validate-ticket`, `sop-validation`, and `template-validation` notes - [ ] Verify frontmatter matches `review-ticket` pattern (name, description, argument-hint) - [ ] Manual test: run `/validate-ticket board-slug#item-id` on an item in the `validation` column - [ ] No regressions in existing skills ## Review Checklist - [x] Passed automated review-fix loop - [x] No secrets committed - [x] No unnecessary file changes - [x] Commit messages are descriptive ## Related Notes - Closes #228 - `pal-e-agency` -- the project this work belongs to - `skill-validate-ticket` (id 841) -- the pal-e-docs skill note this routing file delegates to - `sop-validation` -- the post-merge validation SOP with repo-type checklists - `template-validation` -- the validation note template - Parent: #209 (right-side validation pipeline) - Sibling: #226 (doc fixes), #227 (merge hook) - Mirror: `review-ticket` skill (left-side gate)
Mirrors /review-ticket as the right-side gate (validation -> done).
Dispatches a fresh-context agent that reads skill-validate-ticket from
pal-e-docs, executes repo-type checklists from sop-validation, creates
a validation note per template-validation, and handles PASS/PARTIAL/FAIL
verdicts including board item movement on PASS.

Closes #228

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Author
Contributor

QA Review: /validate-ticket skill

Structure (review-ticket mirror check)

  • Frontmatter: name, description, argument-hint -- matches review-ticket pattern exactly
  • Step-numbered routing instructions (Steps 1-6)
  • "Do NOT validate the ticket yourself" routing directive
  • Error handling section
  • Convention section at end (validation is not QA)

Acceptance Criteria (#228)

  • SKILL.md exists at skills/validate-ticket/SKILL.md
  • Parses board item reference (board-slug#N format)
  • Resolves Forgejo issue and merged PR (Step 3)
  • Spawns fresh-context agent with correct prompt template (Step 4)
  • Agent prompt references skill-validate-ticket, sop-validation, template-validation
  • Handles PASS/PARTIAL/FAIL verdicts with correct actions (Step 5)
  • Moves board item to done on PASS only
  • Column guard: warns if item not in validation

Scope Check

  • Single file added, no unrelated changes
  • No hooks modified (out of scope per #228)
  • No settings.json changes (skill registration is automatic)
  • No secrets committed

Nits

None found. Clean implementation.

VERDICT: APPROVED

## QA Review: /validate-ticket skill ### Structure (review-ticket mirror check) - [x] Frontmatter: `name`, `description`, `argument-hint` -- matches review-ticket pattern exactly - [x] Step-numbered routing instructions (Steps 1-6) - [x] "Do NOT validate the ticket yourself" routing directive - [x] Error handling section - [x] Convention section at end (validation is not QA) ### Acceptance Criteria (#228) - [x] `SKILL.md` exists at `skills/validate-ticket/SKILL.md` - [x] Parses board item reference (`board-slug#N` format) - [x] Resolves Forgejo issue and merged PR (Step 3) - [x] Spawns fresh-context agent with correct prompt template (Step 4) - [x] Agent prompt references `skill-validate-ticket`, `sop-validation`, `template-validation` - [x] Handles PASS/PARTIAL/FAIL verdicts with correct actions (Step 5) - [x] Moves board item to `done` on PASS only - [x] Column guard: warns if item not in `validation` ### Scope Check - [x] Single file added, no unrelated changes - [x] No hooks modified (out of scope per #228) - [x] No settings.json changes (skill registration is automatic) - [x] No secrets committed ### Nits None found. Clean implementation. **VERDICT: APPROVED**
Author
Contributor

PR #230 Review

DOMAIN REVIEW

Tech stack: Claude Code skill definition (Markdown frontmatter + structured instructions). Domain: agent routing, pal-e-docs MCP integration, kanban workflow automation.

Pattern conformance with review-ticket: The file follows the exact structural pattern of skills/review-ticket/SKILL.md:

  • Frontmatter with name, description, argument-hint -- all present and correctly formatted.
  • Six-step flow: Parse -> Fetch -> Context -> Spawn -> Verdict -> Post-action, plus Error handling and Convention sections.
  • Same agent spawn pattern (general-purpose agent with prompt template referencing pal-e-docs skill notes).
  • Same column guard pattern (warns if item is not in expected column, offers y/n override).

Deliberate differences from review-ticket (all correct):

  • points field is omitted from Step 2 extraction -- consistent with feedback_no_points.md (points are deprecated).
  • No automatic loop-back on PARTIAL/FAIL -- correct because validation blockers are external (DNS propagation, deployment timing) unlike scope refinement which is immediate.
  • Three-verdict model (PASS/PARTIAL/FAIL) instead of two (APPROVED/NEEDS_REFINEMENT) -- appropriate for production verification which has a third state (blocked but not failed).

pal-e-docs references (all three present in Step 4 agent prompt):

  • skill-validate-ticket (id 841) -- the delegated skill note
  • sop-validation -- repo-type checklists
  • template-validation -- validation note format

Column gate (Step 2): Correctly checks for validation column. Warning message matches review-ticket's pattern with appropriate column name substitution.

Verdict handling (Step 5):

  • PASS: Moves to done via update_board_item, confirms, reminds about /update-docs. Only path that moves the item.
  • PARTIAL: Item stays in validation. Explains blocked checks. Tells user to re-run manually.
  • FAIL: Item stays in validation. Details expected vs. observed. Notes follow-up issues. Suggests in_progress rework.
  • Unclear/failed agent: Asks user to check validation note. No automatic action.

Convention section: Clearly articulates the QA vs. validation distinction (left-side pre-merge vs. right-side post-merge). Good documentation for agents that encounter this skill.

Step 6 gate-validation-done hook reference: References a hook that enforces the validation gate. This is forward-looking (the hook is part of the broader #209 pipeline) but appropriate since the skill documents the expected enforcement mechanism.

BLOCKERS

None.

This is a single Markdown skill file -- no executable code, no user input handling, no secrets, no auth paths. The BLOCKER criteria (test coverage for new functionality, unvalidated input, secrets in code, DRY auth violations) do not apply to skill routing definitions. The skill delegates all execution to a spawned agent that reads the actual skill note from pal-e-docs.

NITS

  1. PR body section heading: The template convention uses ## Related but this PR uses ## Related Notes. Cosmetic only -- does not affect functionality or automation.

  2. Validation note slug pattern appears in two places: Step 5 (PASS verdict) mentions validation-{issue-number}-{date} and Step 6 mentions validation-{issue-number}-{YYYY-MM-DD}. The date format is slightly inconsistent between the two references ({date} vs. {YYYY-MM-DD}). The Step 6 version is more precise -- consider making Step 5 match.

SOP COMPLIANCE

  • Branch named after issue: 228-validate-ticket-skill follows {issue-number}-{kebab-case-purpose}
  • PR body follows template: Summary, Changes, Test Plan, Review Checklist, Related Notes all present
  • Related references parent issue (#209) and pal-e-docs note slugs
  • No secrets committed
  • No unnecessary file changes (single file, 108 additions, 0 deletions)
  • Commit messages are descriptive
  • Closes #228 referenced

PROCESS OBSERVATIONS

This PR completes the right-side mirror of the kanban validation pipeline (issue #209). With /review-ticket gating todo -> next_up and /validate-ticket gating validation -> done, the full left-to-right kanban flow now has skill-based gates at both critical transitions. This is a DORA deployment frequency enabler -- automated validation gates reduce manual ceremony and make the merged != done distinction enforceable.

The skill is a routing layer only -- all domain logic lives in the pal-e-docs notes (skill-validate-ticket, sop-validation, template-validation). This separation is correct: updating validation checklists does not require a PR to claude-custom.

VERDICT: APPROVED

## PR #230 Review ### DOMAIN REVIEW **Tech stack:** Claude Code skill definition (Markdown frontmatter + structured instructions). Domain: agent routing, pal-e-docs MCP integration, kanban workflow automation. **Pattern conformance with review-ticket:** The file follows the exact structural pattern of `skills/review-ticket/SKILL.md`: - Frontmatter with `name`, `description`, `argument-hint` -- all present and correctly formatted. - Six-step flow: Parse -> Fetch -> Context -> Spawn -> Verdict -> Post-action, plus Error handling and Convention sections. - Same agent spawn pattern (general-purpose agent with prompt template referencing pal-e-docs skill notes). - Same column guard pattern (warns if item is not in expected column, offers y/n override). **Deliberate differences from review-ticket (all correct):** - `points` field is omitted from Step 2 extraction -- consistent with `feedback_no_points.md` (points are deprecated). - No automatic loop-back on PARTIAL/FAIL -- correct because validation blockers are external (DNS propagation, deployment timing) unlike scope refinement which is immediate. - Three-verdict model (PASS/PARTIAL/FAIL) instead of two (APPROVED/NEEDS_REFINEMENT) -- appropriate for production verification which has a third state (blocked but not failed). **pal-e-docs references (all three present in Step 4 agent prompt):** - `skill-validate-ticket` (id 841) -- the delegated skill note - `sop-validation` -- repo-type checklists - `template-validation` -- validation note format **Column gate (Step 2):** Correctly checks for `validation` column. Warning message matches review-ticket's pattern with appropriate column name substitution. **Verdict handling (Step 5):** - PASS: Moves to `done` via `update_board_item`, confirms, reminds about `/update-docs`. Only path that moves the item. - PARTIAL: Item stays in `validation`. Explains blocked checks. Tells user to re-run manually. - FAIL: Item stays in `validation`. Details expected vs. observed. Notes follow-up issues. Suggests `in_progress` rework. - Unclear/failed agent: Asks user to check validation note. No automatic action. **Convention section:** Clearly articulates the QA vs. validation distinction (left-side pre-merge vs. right-side post-merge). Good documentation for agents that encounter this skill. **Step 6 `gate-validation-done` hook reference:** References a hook that enforces the validation gate. This is forward-looking (the hook is part of the broader #209 pipeline) but appropriate since the skill documents the expected enforcement mechanism. ### BLOCKERS None. This is a single Markdown skill file -- no executable code, no user input handling, no secrets, no auth paths. The BLOCKER criteria (test coverage for new functionality, unvalidated input, secrets in code, DRY auth violations) do not apply to skill routing definitions. The skill delegates all execution to a spawned agent that reads the actual skill note from pal-e-docs. ### NITS 1. **PR body section heading:** The template convention uses `## Related` but this PR uses `## Related Notes`. Cosmetic only -- does not affect functionality or automation. 2. **Validation note slug pattern appears in two places:** Step 5 (PASS verdict) mentions `validation-{issue-number}-{date}` and Step 6 mentions `validation-{issue-number}-{YYYY-MM-DD}`. The date format is slightly inconsistent between the two references (`{date}` vs. `{YYYY-MM-DD}`). The Step 6 version is more precise -- consider making Step 5 match. ### SOP COMPLIANCE - [x] Branch named after issue: `228-validate-ticket-skill` follows `{issue-number}-{kebab-case-purpose}` - [x] PR body follows template: Summary, Changes, Test Plan, Review Checklist, Related Notes all present - [x] Related references parent issue (#209) and pal-e-docs note slugs - [x] No secrets committed - [x] No unnecessary file changes (single file, 108 additions, 0 deletions) - [x] Commit messages are descriptive - [x] Closes #228 referenced ### PROCESS OBSERVATIONS This PR completes the right-side mirror of the kanban validation pipeline (issue #209). With `/review-ticket` gating `todo -> next_up` and `/validate-ticket` gating `validation -> done`, the full left-to-right kanban flow now has skill-based gates at both critical transitions. This is a DORA deployment frequency enabler -- automated validation gates reduce manual ceremony and make the `merged != done` distinction enforceable. The skill is a routing layer only -- all domain logic lives in the pal-e-docs notes (`skill-validate-ticket`, `sop-validation`, `template-validation`). This separation is correct: updating validation checklists does not require a PR to claude-custom. ### VERDICT: APPROVED
forgejo_admin deleted branch 228-validate-ticket-skill 2026-03-29 06:45:07 +00:00
Sign in to join this conversation.
No description provided.