From uceap
Start work on a Jira ticket by fetching details, creating a branch, and entering planning mode.
How this skill is triggered — by the user, by Claude, or both
Slash command
/uceap:start-ticketThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
When this skill is invoked with a Jira ticket ID (e.g., `/start-ticket UP-1600`), help the user start work on that ticket.
When this skill is invoked with a Jira ticket ID (e.g., /start-ticket UP-1600), help the user start work on that ticket.
Parse Arguments:
{JIRA_PROJECT_KEY}-[0-9]+ (e.g., UP-1600)Validate Environment:
JIRA_EMAIL - User's Jira email for authenticationJIRA_API_TOKEN - API token for Jira authenticationJIRA_BASE_URL - Base URL of the Jira instanceFetch Ticket Details:
curl -s -X GET \
-H "Accept: application/json" \
-u "${JIRA_EMAIL}:${JIRA_API_TOKEN}" \
"${JIRA_BASE_URL}/rest/api/3/issue/{TICKET_ID}"
Check for Existing Branches:
git branch -a | grep -i {TICKET_ID}
Generate Branch Name (only if creating a new branch):
{TICKET_ID}-{slug} (e.g., UP-1600-create-jira-skill)Create or Switch Branch:
git checkout {existing-branch}
git checkout -b {branch-name}
Enter Planning Mode:
/planPresent Context:
Update Ticket Status (After Plan Accepted):
curl -s -X GET \
-H "Accept: application/json" \
-u "${JIRA_EMAIL}:${JIRA_API_TOKEN}" \
"${JIRA_BASE_URL}/rest/api/3/issue/{TICKET_ID}/transitions"
curl -s -X POST \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-u "${JIRA_EMAIL}:${JIRA_API_TOKEN}" \
-d '{"transition": {"id": "{TRANSITION_ID}"}}' \
"${JIRA_BASE_URL}/rest/api/3/issue/{TICKET_ID}/transitions"
Begin Implementation (Documentation Driven Development):
a. Documentation First:
docs/ describing the feature or change from a user's perspectiveb. Tests Second (write a failing test):
.feature file) that validates the expected behaviorhttp://localhost:8080) when needed to understand page structure, DOM elements, CSS selectors, etc. Delete debug scripts before committing.c. Code Implementation (make the test pass):
composer code-sniff-feature) and static analysis (composer static-analysis-feature) and fix any issuesd. Commit all changes together:
Create Pull Request and Follow Up:
qa branch. Include a Test plan section in the PR body with manual testing steps.gh run watch --exit-statuscurl -s -X GET \
-H "Accept: application/json" \
-u "${JIRA_EMAIL}:${JIRA_API_TOKEN}" \
"${JIRA_BASE_URL}/rest/api/3/issue/{TICKET_ID}/transitions"
curl -s -X POST \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-u "${JIRA_EMAIL}:${JIRA_API_TOKEN}" \
-d '{"transition": {"id": "{TRANSITION_ID}"}}' \
"${JIRA_BASE_URL}/rest/api/3/issue/{TICKET_ID}/transitions"
pr-{PR_NUMBER} or the multidev name from the CI logs)https://pr-{PR_NUMBER}-myeap2.pantheonsite.iocurl -s -X POST \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-u "${JIRA_EMAIL}:${JIRA_API_TOKEN}" \
-d '{
"body": {
"type": "doc",
"version": 1,
"content": [...]
}
}' \
"${JIRA_BASE_URL}/rest/api/3/issue/{TICKET_ID}/comment"
gh pr edit to keep the PR description concise, since the test plan now lives on the Jira ticketnpx claudepluginhub uceap/claude --plugin uceapCreates synced feature branches for new tasks: pulls latest main, fetches context from Jira tickets/GitHub issues/local specs, pushes {type}/{task-number}/{slug} branches.
Drives a ticket from analysis through investigation, planning, TDD implementation, committing, and PR creation. Adapts to your stack via an interactive supplement on first run.
Transitions Jira ticket to In Progress, displays summary/status/assignee and acceptance criteria checklist, adds starting comment. Invoke via /start TICKET-ID.