Skip to content
Back to skills

Onex Plan To Tickets

ASecurity

Parse a plan file and batch-create Linear tickets — one per `## Task N:` section.

  • 2 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 1, 2026
testinggo

Works with

  • mcp

Security analysis

A100/100

Scanned September 1, 2026

npx -y skills add Julian0444/omnicursor --skill onex-plan-to-tickets --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Onex Plan To Tickets?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Onex Plan To Tickets
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/julian0444-onex-plan-to-tickets/badge)](https://www.skillsdirectory.com/skills/julian0444-onex-plan-to-tickets)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: "onex-plan-to-tickets"
description: >-
  Parse a plan file and batch-create Linear tickets — one per `## Task N:` section.
disable-model-invocation: true
---

# onex-plan-to-tickets

Parse a plan file and batch-create Linear tickets — one per `## Task N:` section.
Called automatically by execute_plan, or invoked directly.

**Announce at start:** "I'm using the onex-plan-to-tickets skill."

## Usage

```
/plan-to-tickets docs/plans/my-plan.md [--dry-run] [--skip-existing]
```

## Flow

### 1. Parse task sections

Read the plan file. Find all `## Task N:` headings (H2 level). Each heading = one ticket.

Example:
```
## Task 1: Write failing test for webhook handler
## Task 2: Implement webhook handler
## Task 3: Add integration test
```
→ 3 tickets will be created.

### 2. Get Linear team

Call `tracker.list_teams`. If multiple teams exist, ask the user which to use.
Cache the team ID for all subsequent calls.

### 3. Create epic

Call `tracker.create_issue` with:
- `title`: plan filename without date prefix and `.md` suffix (e.g., "Execute Plan Pipeline")
- `teamId`: from step 2
- `description`: first paragraph of the plan (Goal + Architecture lines)

Record the epic's ticket ID (e.g., `OMN-100`).

### 4. Create one ticket per task

For each `## Task N:` section:
- `title`: the task heading text (e.g., "Write failing test for webhook handler")
- `teamId`: from step 2
- `parentId`: epic ID from step 3
- `description`: full task body (Files, Steps, Acceptance criteria)
- `blockedBy`: parse "Depends on Task N" or "after Task N" notes → list of earlier ticket IDs

With `--skip-existing`: search for an existing ticket with the same title under the same epic first.
If found, skip creation and use its ID.

### 5. Return ticket mapping

Output:
```
Epic: OMN-100
Task 1 → OMN-101
Task 2 → OMN-102 (blocked by OMN-101)
Task 3 → OMN-103 (blocked by OMN-101, OMN-102)
```

Return this mapping to the caller (execute_plan uses it for ordered implementation).

Downstream, `onex-execute-plan` invokes the Omnimarket MCP tool `run_ticket_pipeline` with **`ticket_id`** set to each Linear identifier from this mapping (e.g. `"OMN-101"`).

## Dry Run

With `--dry-run`: parse the plan and print what would be created, but make no MCP calls.

```
[dry-run] Would create parent epic: "Execute Plan Pipeline"
[dry-run] Would create 3 tickets:
  Task 1: Write failing test for webhook handler
  Task 2: Implement webhook handler (blocked by Task 1)
  Task 3: Add integration test (blocked by Task 1, Task 2)
```

## Error Handling

- If `tracker.list_teams` fails: stop and report "Linear MCP not available. See QUICKSTART.md Linear MCP Setup section."
- If a ticket creation fails: report the failure and continue with remaining tasks. Record failed tasks in the final summary.

Attribution

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

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.