Skills DirectorySkills Directory
SkillsLearnSecurityCategoriesDocsCommunityBlog
Sign InSubmit Skill
Skills Directory

Security-tested agent skills for Claude, coding agents, and AI workflows.

Directory

  • Browse Skills
  • All Skills A–Z
  • Claude Skills
  • Claude Code Skills
  • Agent Skills
  • Categories
  • Authors
  • Submit a Skill

Learn

  • Learn Hub
  • Install Claude Skills
  • Write SKILL.md
  • Skills vs MCP
  • Directories Compared

Security

  • Security
  • Methodology
  • Secure Claude Skills
  • Security Badges

Company

  • About
  • Community
  • Blog
  • API Docs
  • Advertise

2026 Skills Directory. All rights reserved.

ProTermsPrivacyRefunds
Back to skills

Create Ticket

ASecurity

Create a Jira ticket in the current project from a short context blurb. Discovers the project's Jira config (cloudId + key) from its CLAUDE.md, fetches the real issue types, asks type then context, drafts a title + description (structured body for Bugs), shows the draft for inline edit, and creates only after explicit approval. Use on 'create a ticket', 'create a jira', 'file a jira', 'new issue', 'open a ticket'. Global; project-agnostic; NEVER auto-creates.

2 stars
0 votes
0 copies
0 views
Added 9/28/2026
ai-agents

Works with

mcp

Security Analysis

A100/100

Scanned 9/28/2026

Install to Claude Code

$npx -y skills add shashankreddy509/claude-tdd-kit --skill create-ticket --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Create Ticket?

Add the live security badge to your README — it updates automatically with every re-scan.

Security grade badge for Create Ticket
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/shashankreddy509-create-ticket/badge)](https://www.skillsdirectory.com/skills/shashankreddy509-create-ticket)

More formats (shields.io, HTML) on the badges page.

Files
SKILL.md
---
name: "create-ticket"
description: "Create a Jira ticket in the current project from a short context blurb. Discovers the project's Jira config (cloudId + key) from its CLAUDE.md, fetches the real issue types, asks type then context, drafts a title + description (structured body for Bugs), shows the draft for inline edit, and creates only after explicit approval. Use on 'create a ticket', 'create a jira', 'file a jira', 'new issue', 'open a ticket'. Global; project-agnostic; NEVER auto-creates."
---

# create-ticket

Turns a one-line intent into a properly-formatted Jira ticket in whatever project you're
working in. Discovers the project's Jira coordinates from its `CLAUDE.md`, fetches the real
issue types from Jira, asks for the type and a free-text context blurb, drafts the **title**
and **description**, shows the draft for **inline edit**, and creates the issue via the
Atlassian MCP **only after the user explicitly approves**.

**Hard guard: NEVER call `createJiraIssue` before the user approves the draft.** Ask-before-any-change.

This is the **global** version. A project may also ship a local `create-ticket` skill with its
coordinates baked in; the local one shadows this when present. This skill carries no hardcoded
cloudId / project key / issue types — everything is discovered at runtime.

## Steps

1. **Discover Jira config.** Find the project's Jira line in the loaded `CLAUDE.md` files
   (project root, `.claude/`, or nested), of the form:
   ```
   Jira: cloudId=<uuid> key=<PROJECTKEY>
   ```
   - **Found** → use that `cloudId` + `projectKey`. Also note any workflow/bug-format hints in
     the same CLAUDE.md (see step 5).
   - **Not found** → ask the user for the **cloudId** and **project key** (one `AskUserQuestion`
     or a direct prompt). Do not guess. Offer to look them up via the list-projects verb resolved
     in step 1b if the user is unsure of the key.

1b. **Resolve the Jira MCP dialect.** Atlassian MCP servers differ per machine: one exposes
   camelCase names (`mcp__atlassian__getJiraProjectIssueTypesMetadata`) with `cloudId` REQUIRED;
   another exposes snake_case under a `jira` prefix and resolves the site internally, with no
   `cloudId` at all. If the `tdd-pipeline` plugin is installed, follow its `references/jira-mcp.md`.
   Otherwise probe inline: try the camelCase names via `ToolSearch`; if nothing resolves, search by
   keyword (`ToolSearch "+jira create issue"`, `"+jira project"`) and use what comes back.
   **Pass `cloudId` ONLY when the resolved schema has that parameter** — otherwise omit it
   everywhere below and ignore the `cloudId=` half of the CLAUDE.md line. Never hardcode a tool name.

2. **Fetch real issue types.** Call the issue-types-metadata verb resolved in step 1b with
   `projectIdOrKey` (plus `cloudId` only if its schema requires it). Collect the type names
   (excluding sub-tasks unless the user asks for one). Do **not** hardcode Bug/Task/Story — use
   what the project actually has.

3. **Q1 — issue type.** Ask via `AskUserQuestion` (single-select, header `Type`) with the
   fetched types as options. *"What type of ticket is this?"*

4. **Q2 — context.** Ask the user (free text):
   *"Describe the ticket — what's the problem/feature and any detail you have. I'll draft the
   title and description from this."*
   Do not ask for a title separately — the title is derived from this context.

5. **Draft title + description.** From the context, decide:
   - **Title** — concise, specific summary (no `[TYPE]` prefix; Jira shows the type icon).
   - **Description** — shape depends on type:
     - **Bug** → first check the project `CLAUDE.md` for a defined bug-report format/template.
       If one exists, use **that** (it OVERRIDES the default). Otherwise fill
       `assets/bug-template.md` (the default). Fill each section best-effort from the context;
       use `_TBD_` for anything the user didn't state — never invent root cause/fix/repro you
       weren't told.
     - **Other types** (Task/Story/Epic/etc.) → free-form: a one-paragraph summary plus
       acceptance criteria / notes / scope as the context warrants. Keep it tight.
     - **Test floor (default; override in your CLAUDE.md):** any ticket that changes code gets
       "unit tests for <the change>" in its acceptance criteria — no manual-verification-only
       tickets. Skip only for pure docs/config/process tickets.

6. **Self-check (PASS/FAIL — do this BEFORE showing the draft).** Objectively grade the draft
   against these named criteria:
   - **Title** is specific and non-empty (not a generic placeholder).
   - **Every** Bug-template section (from `assets/bug-template.md`) is either filled from the
     user's context or explicitly `_TBD_` — no section left blank. (Non-Bug types: the summary
     and any acceptance criteria are present.)
   - **No invented content** — nothing in root cause / repro / fix / symptom that the user did
     not actually state. Anything unstated must be `_TBD_`, not fabricated. (This gate ENFORCES
     the never-invent rule.)
   - **Issue type** is one of the real types fetched in step 2.

   Emit a verdict line: `TICKET SELF-CHECK: PASS` or `TICKET SELF-CHECK: FAIL — <what failed>`.
   A **FAIL blocks step 7 (showing the draft for approval)** — fix the draft and re-run this
   check until it PASSes; only then proceed.

7. **Confirm (inline edit gate).** Show the user the drafted **Type / Title / Description** in
   full. Ask them to **approve or edit**. If they request changes, apply them, re-run the
   step-6 self-check, and re-show. Loop until they explicitly approve. No `createJiraIssue`
   call happens before approval.

8. **Create.** Call the create-issue verb resolved in step 1b:
   ```
   cloudId:        <discovered>   ← ONLY if the resolved schema has this parameter; omit otherwise
   projectKey:     <discovered>
   issueTypeName:  <from Q1, exact name as fetched>
   summary:        <approved title>
   description:    <approved body>
   contentFormat:  markdown
   ```
   No `transition` (project default status), no `additional_fields`. Field names may differ on a
   snake_case dialect — use the names from the resolved schema, not this list verbatim.

9. **Report.** Print the new issue **key** and **webUrl** from the tool response, e.g.
   `Created PROJ-NN — <webUrl>`.

## Default Bug template

The default structured Bug body lives in **`assets/bug-template.md`** (Symptom / Why it's a bug
/ Root cause / Fix / Verification). Use it **only when the project `CLAUDE.md` defines no bug
format of its own** — a project's bug format OVERRIDES this default. Fill each section from
context; use `_TBD_` for anything the user didn't state — never invent root cause/fix/repro.

## Guards

- **Ask before create.** The draft must be shown and explicitly approved before any
  `createJiraIssue` call. Inline edits loop until approval.
- **Discover, don't hardcode.** cloudId, project key, and issue types are all read at runtime
  (CLAUDE.md + Jira metadata). If the Jira line is missing, ask — never assume.
- **No invention.** Unknown bug fields → `_TBD_`, never fabricated.
- **Default only.** No status transition, priority, labels, components, or assignee.
- **Report key + webUrl** on success.
- **On MCP failure** (auth/offline): report the error and stop. Do not write the ticket anywhere
  else.

## Out of scope

- Status transitions / lifecycle moves (a project's own `/ship`-style skill owns those).
- Subtasks / epic-linking — creates a flat issue by default.
- Project-specific request formats (e.g. catalog/feature-flag tickets) — those belong in a
  dedicated project skill.

Attribution

shashankreddy509shashankreddy509
View sourceMore from shashankreddy509 →
SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments (0)

No comments yet. Be the first to comment!

SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Related Skills

Caveman

Ultra-compressed communication mode that cuts output tokens while keeping technical accuracy. Levels: lite, full, ultra and the wenyan variants. Use for /caveman, "caveman mode", "talk like caveman", "be brief" or "less tokens".

1074701 votes

Hyperplan

Adversarial multi-agent planning skill. Self-orchestrates 5 hostile category members (unspecified-low, unspecified-high, deep, ultrabrain, artistry) via team-mode for ruthless cross-critique debate, distills only the defensible insights, then MANDATORILY hands the distilled insight bundle to the `plan` agent for executable plan formalization. Use when planning needs maximum rigor and surfacing of weak assumptions, blind spots, and over-engineering. Triggers: 'hyperplan', 'hpp', '/hyperplan', ...

695601 votes

Mcp Code Execution

Routes multi-tool workflows through MCP servers for large datasets and pipelines. Use when Bash tool overhead is limiting throughput on data-heavy tasks.

3351 votes

catchup

Recovers the conversation and failed tool calls of a previous Codex, Claude Code, Antigravity, Cline, Copilot CLI, Cursor, DeepSeek Harness, Kimi, OpenCode, Pi Agent, or ZCode session. Use when the user says "catch up", "what did the last session do", "get me up to speed", "I switched agents", asks to recover/summarize a previous session before continuing, or asks to diagnose or report a catchup failure. Do NOT use for the current conversation, git history, or any non-agent log.

691 votes

math-skill

A comprehensive mathematical reasoning skill for AI assistants — handles arithmetic to research-level problems with rigorous step-by-step reasoning, systematic verification, and transparent uncertainty handling

381 votes
View all in ai-agents →