Use this skill when the user has a plan or task description and needs a ticket contract template with deterministic repo detection and YAML output.
Scanned 9/1/2026
Install to Claude Code
npx -y skills add Julian0444/omnicursor --skill onex-plan-ticket --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Onex Plan Ticket?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/julian0444-onex-plan-ticket)More formats (shields.io, HTML) on the badges page.
---
name: "onex-plan-ticket"
description: >-
Use this skill when the user has a plan or task description and needs a ticket contract template with deterministic repo detection and YAML output.
disable-model-invocation: true
---
# onex-plan-ticket
Use this skill when the user has a plan or task description and needs a ticket contract template with deterministic repo detection and YAML output.
## Purpose
Generate a structured YAML ticket contract template that can be handed to a team's ticket creation workflow or used as input to Linear (Stage 2). The skill uses deterministic repo detection to pre-fill the target repository.
## Prerequisites
- A plan document path or task description from the user
- Access to README.md in the repository root (for repo detection)
## Workflow
1. **Bounded context read.**
Announce and read README.md. Optionally list one directory relevant to the prompt. Follow `01-codebase-research` constraints.
2. **Deterministic repo detection (3-priority chain).**
Determine which OmniNode repository this ticket belongs to:
- **Priority 1 — CWD or prompt match:** Check if the working directory path or user's prompt contains one of the 7 valid repo names (case-insensitive substring). If found, use it.
- **Priority 2 — README project name:** Check if README.md contains a valid repo name as the project name. If found, use it.
- **Priority 3 — Ask the user:** If priorities 1 and 2 both fail, present a multiple-choice question listing all 7 repos plus "Other." Wait for the answer.
Valid repos: `omniclaude`, `omnibase_core`, `omnibase_infra`, `omnidash`, `omniintelligence`, `omnimemory`, `omninode_infra`
3. **Generate the YAML ticket template.**
Output a YAML contract template pre-filled with context:
- Derive `title` from the user's prompt (imperative verb form)
- Set `repo` to the detected repo name
- Add requirements inferred from the prompt — mark uncertain fields as "FILL IN"
- Include verification blocks (unit tests, lint)
- Leave `relevant_files` empty if file paths are unknown
4. **Create the Linear ticket via MCP.**
Tool names depend on the Linear MCP server configured in Cursor; do not assume a single transport.
- **Common in this repo’s Cursor setup:** `list_teams` on the Linear plugin, then `save_issue` with `title`, `team` (name or id), and `description` (markdown combining requirements + verification).
- **Older / OmniClaude-shaped docs** may say `tracker.list_teams` and `tracker.create_issue` with `teamId` — match that *semantics* using whatever parameters your MCP tools actually accept.
If multiple teams exist and none is obvious, ask the user which team to use. Always list teams (or confirm a single team) before creating the issue. Report the created ticket URL to the user.
**Execute-plan / Omnimarket:** when the user later runs `onex-execute-plan` or the MCP tool `run_ticket_pipeline`, the Linear issue key from the created ticket is passed as **`ticket_id`** (MCP/JSON name). Use the identifier Linear returns (e.g. `OMN-47`), not a made-up prefix.
## Expected Output Format
A YAML contract template (shown in chat for review) containing:
- `title`: imperative description
- `repo`: detected repository name
- `requirements`: list with id, statement, rationale, acceptance criteria
- `verification`: list with id, title, kind, command, expected, blocking
- `context`: relevant_files, patterns_found, notes
Followed by the Linear ticket creation result.
## Quality Checklist
- [ ] Bounded context read was announced before file access
- [ ] Repo detection followed the 3-priority chain exactly
- [ ] YAML template is syntactically valid
- [ ] Title uses imperative verb form
- [ ] Requirements have specific, testable acceptance criteria
- [ ] Verification section includes at least unit tests and lint
- [ ] Teams were resolved (`list_teams` / `tracker.list_teams`, or equivalent) before create (`save_issue` / `tracker.create_issue`, or equivalent)
- [ ] Linear ticket URL is reported to the user
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!