Use when creating a ticket, filing an issue, or opening a task in your team's tracker. Triggered by "create a ticket", "file an issue", "new ticket", "open a ticket", or /casaflow:ticket. Reads ticket-system from jig.config.md and routes to the appropriate tracker pack.
From casaflownpx claudepluginhub casaperks/casaflow --plugin casaflowThis skill uses the workspace's default tool permissions.
Designs and optimizes AI agent action spaces, tool definitions, observation formats, error recovery, and context for higher task completion rates.
Enables AI agents to execute x402 payments with per-task budgets, spending controls, and non-custodial wallets via MCP tools. Use when agents pay for APIs, services, or other agents.
Compares coding agents like Claude Code and Aider on custom YAML-defined codebase tasks using git worktrees, measuring pass rate, cost, time, and consistency.
PURPOSE: Create well-written tickets that clearly describe a problem or need — not the solution — for an audience that includes engineering, customer success, and leadership.
CONFIGURATION: Reads jig.config.md for ticket-system (linear, github, jira), ticket-prefix, and branching.format.
| Ticket | Pull Request | |
|---|---|---|
| What it is | The problem / the need | The solution |
| Audience | Engineering, CS, leadership, PMs | Engineers and reviewers |
| Frame it as | "We need X because Y" | "Here's what changed and why" |
| Acceptance criteria | What done looks like | What was verified |
A ticket describes what needs to happen, not how it was done. Even for retroactive tickets (created after the work), frame the description around the problem that existed, not the code that was written.
Read jig.config.md for:
ticket-system — which tracker to use (linear, github, jira)ticket-prefix — the prefix for ticket identifiers (ENG, PROJ, etc.)branching.format — how to name the branch after ticket creation## Estimates — the team's estimate scale and unit (e.g., [0, 1, 2, 4, 16, 32] in hours)## {Tracker} section (e.g., ## Linear) — tracker-specific IDs like team ID and label mappingsThen load the tracker-specific pack from packs/{ticket-system}/ for tool calls and field mapping. The pack tells you how to call the tools; the config provides which IDs to use. If no pack exists for the configured system, fall back to asking the user to create the ticket manually and provide the URL.
Check if there's relevant session context. Use it to pre-fill the interview — don't ask for things you already know.
git rev-parse --abbrev-ref HEAD # current branch
git log main..HEAD --oneline # commits if work is in progress
Ask only what you don't already know. Keep it conversational — one question at a time if needed, but batch the obvious ones.
Always ask:
## Estimates from jig.config.md for the team's scale and unit. Offer a suggestion based on scope. If no estimates section exists, skip this field.Offer to fill in:
Retroactive tickets: When work is already done in the session, use that context to write the ticket, but frame it as the problem that existed, not the code that was written.
Plain language. Broad audience. Problem-first.
## Overview
{1-2 sentences. What is the need or problem? Who does it affect?}
## Background
{Why does this matter? What breaks or is missing without it? Skip if self-evident.}
## Acceptance Criteria
- {Concrete, testable statement of what "done" looks like}
- {Another criterion}
- {Another criterion}
Voice & tone:
Route to the configured ticket system. Each tracker pack provides the specific tool calls and field mapping.
Linear (via packs/linear/):
mcp__linear-server__save_issue)gitBranchName for branch creationGitHub Issues (via packs/github-issues/):
gh issue create --title "..." --body "..." --label "..."Jira (via packs/jira/):
After creating the ticket, set up the branch:
branching.format from jig.config.mdgitBranchName), use it directly{username}/{prefix}-{number}-{kebab-title}# On main — create and switch:
git checkout -b {branch-name}
# On a feature branch without ticket reference — rename:
git branch -m {current-branch} {branch-name}
Run the appropriate command automatically — don't just suggest it.
Report back:
ENG-1234)/casaflow:kickoff?"| Field | Rule |
|---|---|
| Title | Clear noun phrase. "Export button crash on empty list" not "Fix export" |
| Description | Problem-first. Plain language. Acceptance criteria at the bottom. |
| Issue type | Always set. Feature = new, Improvement = better, Bug = broken, Task = chore |
| Assignee | Optional. Ask who; leave unassigned if no answer. |
| Estimate | If tracker supports it. Suggest based on scope. |
| Mistake | Fix |
|---|---|
| Describing the solution in the ticket | Describe the problem. The PR describes the solution. |
| Engineering jargon in overview | Write it so CS could read it without explanation |
| Skipping acceptance criteria | Always include — they're how you know the work is done |
| Creating ticket without setting up branch | Always offer branch creation after ticket is filed |
| Forgetting issue type | Always required — it's the primary classification |
Called by:
kickoff during the DISCOVER stage (when no ticket exists)/casaflow:ticketRelated:
kickoff — the full pipeline that may invoke this during discoverypr-create — references the ticket in the PR bodycommit — references the ticket in commit messages