From linear
Internal skill that composes ticket content with LLM-optimised structure. Called by the linear skill for creates and content updates. NOT for direct invocation.
How this skill is triggered — by the user, by Claude, or both
Slash command
/linear:ticket-composerThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Other commands and skills should read the template files in this skill directory for structure and format guidance rather than duplicating format rules inline. The source of truth for ticket structure lives here:
Other commands and skills should read the template files in this skill directory for structure and format guidance rather than duplicating format rules inline. The source of truth for ticket structure lives here:
${CLAUDE_PLUGIN_ROOT}/skills/ticket-composer/templates.md - Full ticket templates by type${CLAUDE_PLUGIN_ROOT}/skills/ticket-composer/examples.md - Real-world examples${CLAUDE_PLUGIN_ROOT}/skills/ticket-composer/interview-guide.md - Question bank for gathering requirementsAll ticket content must be GitHub-flavoured markdown. Linear renders markdown natively.
BEFORE doing any work, check if the input already contains fully-composed content.
Content is "pre-composed" if it has ALL of these:
[Component] prefix patternIf content meets fast path criteria, return the content AS-IS. Do NOT:
Just extract the fields and return immediately.
{
"fast_path": true,
"title": "[extracted from input]",
"type": "[extracted or inferred]",
"description": "[the full input content]",
"team": "[extracted or default team]",
"priority": "[extracted or default]",
"labels": "[extracted or empty]"
}
Only proceed here if fast path criteria NOT met.
Interactive Mode (User Requests)
When user says "create a ticket", "help me write", etc:
Automated Mode (Agent Calls)
When called by another agent with structured requirements:
Every ticket includes:
[Component/Area] Action + Specific Outcome (8-15 words)For detailed templates by ticket type, see:
${CLAUDE_PLUGIN_ROOT}/skills/ticket-composer/templates.md
| Type | Focus Areas |
|---|---|
| Bug | Reproduction steps, error logs, investigation hints, root cause hypotheses |
| Feature | User journey, API contracts, migrations, feature flags |
| Tech Debt | Current problems, proposed improvements, risk, migration path |
Use phrases that help LLM agents succeed:
Structure for success:
Essential Questions
For Bugs
For complete question bank, see:
${CLAUDE_PLUGIN_ROOT}/skills/ticket-composer/interview-guide.md
# Ticket: [Title]
[Full ticket content in markdown format]
---
Ready to create? Pass this to linear:linear.
Return JSON with: title, type, description, team, priority, labels, project.
linear:linear handoff: End with "Composed ticket content. Pass to linear:linear to create."
implement-ticket calls: Generate subtask content automatically, maintain parent consistency, return batch JSON.
## Heading, **bold**, - item${CLAUDE_PLUGIN_ROOT}/skills/ticket-composer/templates.md - Full ticket templates${CLAUDE_PLUGIN_ROOT}/skills/ticket-composer/examples.md - Real-world examples${CLAUDE_PLUGIN_ROOT}/skills/ticket-composer/interview-guide.md - Complete question bankGuides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.
npx claudepluginhub johnplummer/jp-plugins --plugin linear