Fetches Jira ticket details, creates an appropriately named branch, and initiates the task planning workflow. Use when the user says "work on [TICKET_ID]" or similar phrases.
npx skills add https://github.com/jjmartres/opencode --skill work-on-ticket
Streamlined workflow to start work on a Jira ticket by fetching ticket details, creating a branch, and initiating task planning.
Activate this skill when:
work on [TICKET_ID] or similar intentExtract the Jira ticket ID from the user's message. Common patterns:
work on AGP-782start AGP-782pick up PROJ-123Ticket ID format: [A-Z]+-[0-9]+ (e.g., AGP-782, AICC-123)
Use the MCP Zapier tool to fetch the ticket:
mcp__zapier -
frontend__jira_software_cloud_find_issue_by_key({
instructions: "Get details for ticket [TICKET_ID]",
key: "[TICKET_ID]",
fields: "summary,description,issuetype,priority,status",
});
Extract from response:
Create a branch name using this format:
[TICKET_ID]-[kebab-case-summary]
Branch Naming Rules:
AGP-782-)Examples:
AGP-782-migrate-existing-mcp-serverAICC-123-fix-auth-token-expiryPROJ-456-add-user-settings-pageImplementation:
# Convert summary to kebab-case
# Example: "Migrate existing MCP server" -> "migrate-existing-mcp-server"
Before creating a branch, check the current state:
# Check current branch
git branch --show-current
# Check for uncommitted changes
git status --porcelain
If uncommitted changes exist:
If not on staging/main:
Once it's safe to proceed:
# Ensure we're on the latest staging
git checkout staging
git pull origin staging
# Create and checkout new branch
git checkout -b [TICKET_ID]-[kebab-case-summary]
Confirm to User: "Created and checked out branch: [BRANCH_NAME]"
Analyze the Jira ticket and create a comprehensive prompt for the /eng:chore command:
Prompt should include:
Example prompt construction:
Summary: [ticket.summary]
Description: [ticket.description]
Acceptance Criteria:
[extracted criteria if present]
Run the /eng:chore slash command with the ticket number and constructed prompt:
/eng:chore [TICKET_ID] [CONSTRUCTED_PROMPT]
Example:
AGP-782 Migrate existing MCP server implementation to new architecture
Description: We need to refactor the MCP server to use the new modular architecture. This includes updating the tool registry, migrating existing tools, and ensuring backward compatibility.
Acceptance Criteria:
- All existing tools work with new architecture
- Tests pass
- No breaking changes to API
If ticket not found:
If branch already exists:
If git operations fail:
User: "work on AGP-782"
Claude:
AGP-782-migrate-existing-mcp-server/eng:chore AGP-782 Migrate existing MCP server implementation...User: "work on AICC-456"
Claude:
User: "work on BAD-999"
Claude:
CRITICAL RULE - NESTED CONDITIONALS:
Why this matters:
Instead of:
if (condition1) {
if (condition2) {
// do something
}
}
Do this:
if (!condition1) return;
if (!condition2) return;
// do something
CRITICAL RULE - NO UNNECESSARY INLINE COMMENTS:
Bad comments (obvious, unnecessary):
// Set the user's name
user.name = "Alice";
// Loop through the items
for (const item of items) {
// Process the item
processItem(item);
}
// Return true if valid
return isValid;
Good comments (explain WHY, add context):
// Cache user data for 5 minutes to reduce API calls
const cachedUser = await cache.get(userId, { ttl: 300 });
// Process items in batches to avoid memory issues with large datasets
for (const batch of chunkArray(items, 100)) {
await processBatch(batch);
}
// Skip validation for admin users per security requirement SEC-123
if (user.isAdmin) return true;
When comments ARE appropriate:
When to use NO comments:
CRITICAL RULE - VITEST TESTING:
When to activate Vitest TDD Expert:
// Before writing Vitest tests, invoke:
Skill({ skill: "vitest-tdd" });
/eng:chore command will handle the detailed planning - this skill just sets up the environmentThe skill is successful when:
/eng:chore command is executed with ticket contextGuide users through a structured workflow for co-authoring documentation. Use when user wants to write documentation, proposals, technical specs, decision docs, or similar structured content. This workflow helps users efficiently transfer context, refine content through iteration, and verify the doc works for readers. Trigger when user mentions writing docs, creating proposals, drafting specs, or similar documentation tasks.
Intelligently organizes your files and folders across your computer by understanding context, finding duplicates, suggesting better structures, and automating cleanup tasks. Reduces cognitive load and keeps your digital workspace tidy without manual effort.
Generates creative domain name ideas for your project and checks availability across multiple TLDs (.com, .io, .dev, .ai, etc.). Saves hours of brainstorming and manual checking.
You MUST use this before any creative work - creating features, building components, adding functionality, or modifying behavior. Explores user intent, requirements and design before implementation.
Implements Manus-style file-based planning for complex tasks. Creates task_plan.md, findings.md, and progress.md. Use when starting complex multi-step tasks, research projects, or any task requiring >5 tool calls.
Creative research ideation and exploration. Use for open-ended brainstorming sessions, exploring interdisciplinary connections, challenging assumptions, or identifying research gaps. Best for early-stage research planning when you do not have specific observations yet. For formulating testable hypotheses from data use hypothesis-generation.
Comprehensive GitHub project management with swarm-coordinated issue tracking, project board automation, and sprint planning
Interview the user relentlessly about a plan or design until reaching shared understanding, resolving each branch of the decision tree. Use when user wants to stress-test a plan, get grilled on their design, or mentions "grill me".
Take jjmartres/work-on-ticket from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.