Feature: Update hooks and skills for BoardItemType 'issue' to 'ticket' rename #191

Open
opened 2026-03-28 04:01:15 +00:00 by forgejo_admin · 0 comments
Contributor

Type

Feature

Lineage

Child of forgejo_admin/claude-custom#181 (parent decomposition ticket).
Deploy order: D of 4 -- depends on Tickets A, B, C merging first. Last consumer to update.

Repo

forgejo_admin/claude-custom

User Story

As an agent,
I want hooks and skills to validate and reference ticket instead of issue for board item types,
So that enforcement logic matches the API's canonical enum value.

Context

The full-stack rename of BoardItemType.issue to BoardItemType.ticket propagates through API (A), SDK (B), MCP (C), and finally hooks/skills (D). This is the last ticket in the chain.

The check-board-item.sh hook validates create_board_item calls and has a case issue) branch. The review-ticket/SKILL.md lists valid item_type values in its routing logic. Both must use the new canonical value.

The API's transition alias means hooks work during rollout, but should use the canonical value once upstream is stable.

File Targets

Files the agent should modify:

  • hooks/check-board-item.sh line 9 -- comment: "issue items have forgejo_issue_url" -> "ticket items..."
  • hooks/check-board-item.sh line 53 -- case branch: issue) -> ticket)
  • hooks/check-board-item.sh line 55 -- error message: "Issue-type board items require..." -> "Ticket-type board items require..."
  • skills/review-ticket/SKILL.md line 27 -- item_type list: (phase, issue, incident, repo) -> (phase, ticket, repo) (also removes phantom incident -- see bug ticket)
  • skills/review-ticket/SKILL.md line 42 -- routing header: **For issue items with forgejo_issue_url:** -> **For ticket items...**

Files the agent should NOT touch:

  • hooks/board-item-on-merge.sh -- uses "issue" only for Forgejo issue number extraction, not BoardItemType
  • hooks/check-note-template.sh -- uses "issue" as a NoteType tag, not BoardItemType

Acceptance Criteria

  • check-board-item.sh validates ticket instead of issue in the case branch
  • check-board-item.sh comments and error messages reference ticket
  • SKILL.md item_type list uses ticket instead of issue
  • SKILL.md routing logic references ticket items

Test Expectations

  • Manual test: create_board_item(item_type="ticket", forgejo_issue_url="https://...", labels="type:feature,arch:board-api,story:test") passes hook validation
  • Manual test: create_board_item(item_type="issue", ...) is rejected by the hook (or accepted during transition -- document which behavior is chosen)
  • Manual test: /review-ticket skill routes ticket-type items correctly
  • Run command: bash -n hooks/check-board-item.sh (syntax check)

Constraints

  • Shell script -- no unit test framework, manual verification required
  • SKILL.md is agent-facing prose -- clarity matters for LLM comprehension
  • Consider whether the hook should accept both ticket and issue during transition (match API behavior) or enforce ticket only (strict)

Checklist

  • PR opened
  • Tests pass (syntax check)
  • No unrelated changes
  • forgejo_admin/claude-custom#181 -- parent decomposition ticket
  • forgejo_admin/pal-e-api Ticket A -- API enum rename (transitive dependency)
  • forgejo_admin/pal-e-sdk Ticket B -- SDK update (transitive dependency)
  • forgejo_admin/pal-e-mcp Ticket C -- MCP update (direct dependency)
  • pal-e-agency -- project this affects
### Type Feature ### Lineage Child of `forgejo_admin/claude-custom#181` (parent decomposition ticket). Deploy order: **D of 4** -- depends on Tickets A, B, C merging first. Last consumer to update. ### Repo `forgejo_admin/claude-custom` ### User Story As an agent, I want hooks and skills to validate and reference `ticket` instead of `issue` for board item types, So that enforcement logic matches the API's canonical enum value. ### Context The full-stack rename of `BoardItemType.issue` to `BoardItemType.ticket` propagates through API (A), SDK (B), MCP (C), and finally hooks/skills (D). This is the last ticket in the chain. The `check-board-item.sh` hook validates `create_board_item` calls and has a `case issue)` branch. The `review-ticket/SKILL.md` lists valid item_type values in its routing logic. Both must use the new canonical value. The API's transition alias means hooks work during rollout, but should use the canonical value once upstream is stable. ### File Targets Files the agent should modify: - `hooks/check-board-item.sh` line 9 -- comment: `"issue items have forgejo_issue_url"` -> `"ticket items..."` - `hooks/check-board-item.sh` line 53 -- case branch: `issue)` -> `ticket)` - `hooks/check-board-item.sh` line 55 -- error message: `"Issue-type board items require..."` -> `"Ticket-type board items require..."` - `skills/review-ticket/SKILL.md` line 27 -- item_type list: `(phase, issue, incident, repo)` -> `(phase, ticket, repo)` (also removes phantom `incident` -- see bug ticket) - `skills/review-ticket/SKILL.md` line 42 -- routing header: `**For issue items with forgejo_issue_url:**` -> `**For ticket items...**` Files the agent should NOT touch: - `hooks/board-item-on-merge.sh` -- uses "issue" only for Forgejo issue number extraction, not BoardItemType - `hooks/check-note-template.sh` -- uses "issue" as a NoteType tag, not BoardItemType ### Acceptance Criteria - [ ] `check-board-item.sh` validates `ticket` instead of `issue` in the case branch - [ ] `check-board-item.sh` comments and error messages reference `ticket` - [ ] `SKILL.md` item_type list uses `ticket` instead of `issue` - [ ] `SKILL.md` routing logic references `ticket` items ### Test Expectations - [ ] Manual test: `create_board_item(item_type="ticket", forgejo_issue_url="https://...", labels="type:feature,arch:board-api,story:test")` passes hook validation - [ ] Manual test: `create_board_item(item_type="issue", ...)` is rejected by the hook (or accepted during transition -- document which behavior is chosen) - [ ] Manual test: `/review-ticket` skill routes ticket-type items correctly - Run command: `bash -n hooks/check-board-item.sh` (syntax check) ### Constraints - Shell script -- no unit test framework, manual verification required - SKILL.md is agent-facing prose -- clarity matters for LLM comprehension - Consider whether the hook should accept both `ticket` and `issue` during transition (match API behavior) or enforce `ticket` only (strict) ### Checklist - [ ] PR opened - [ ] Tests pass (syntax check) - [ ] No unrelated changes ### Related - `forgejo_admin/claude-custom#181` -- parent decomposition ticket - `forgejo_admin/pal-e-api` Ticket A -- API enum rename (transitive dependency) - `forgejo_admin/pal-e-sdk` Ticket B -- SDK update (transitive dependency) - `forgejo_admin/pal-e-mcp` Ticket C -- MCP update (direct dependency) - `pal-e-agency` -- project this affects
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
ldraney/claude-custom#191
No description provided.