ticket-system

Implements ticket CRUD and epic-container operations over a Notion database via the Notion MCP.

Updated Jul 19, 2026
One-click install
npx skills add https://github.com/forhas/pure-dev --skill ticket-system-forhas
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: ticket-system
Source: https://github.com/forhas/pure-dev/tree/main/plugins/notion-dev/skills/ticket-system
Command: npx skills add https://github.com/forhas/pure-dev --skill ticket-system-forhas

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve? It gives notion-dev commands a single, consistent adapter for reading and writing tickets in a configured Notion database, so commands never construct Notion API calls, title prefixes, or status mappings themselves. ## Core Features & Use Cases - Ticket operations: fetchTicket, createTicket, updateTicket, updateStatus, setPullRequest, postComment, and section upsert/append operations over the Notion MCP, driven by .claude/notion-dev.config.json. - Epic containers: createEpic, findEpics, listEpicChildren, getEpicContext, and refreshEpicTasks implement epic grouping via a Checkbox marker and a self-referential Parent task relation, with absence- and wrong-type-tolerant degradation. - Defensive schema handling: every configured property is validated against the live database schema, with missing or wrong-typed properties degrading gracefully and recorded through the issue-log rather than aborting. - Use Case: When running /notion-dev:create-task, the skill resolves the next ticket ID, creates a prefixed Notion page with assignee, epic, phase, and step metadata, and renders styled body sections in one create call. ## Quick Start Ask the agent to fetch ticket STO-67 from the configured Notion database and show its title, status, and body sections.

Frequently Asked Questions about ticket-system

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I create a ticket in a Notion database from Claude Code?

Invoke the createTicket operation with a title, body, and optional type, epic, phase, step, or assignee. The adapter computes the next ID, writes the prefixed title and all configured properties in a single Notion create call, and returns the new ticket id and URL.

How does the skill handle missing properties in the Notion database?

Every configured property is absence-tolerant: if a property like PR, Assignee, or Phase is missing from the live database, the operation skips that write with a one-time warning and records a missing-property signature in the issue log instead of aborting.

Can I use a Notion unique_id column as the ticket ID?

Yes, the idProperty works with both number and unique_id column types. With unique_id, Notion auto-assigns the ID at creation and the adapter reads it back to apply the title prefix in a follow-up update call.

What happens if the Notion MCP server is unavailable?

The skill fails with a clear message telling you to re-check .mcp.json and confirm the notion server is listed, then records an mcp-unavailable:notion signature. There is no CLI fallback for Notion operations.

How are epics distinguished from regular tickets in Notion?

An epic is a page where the configured Checkbox marker property is true and its own Parent task relation is empty. The Epic select tag is only display metadata; the checkbox marker is the sole identity signal, and unusable marker columns cause epic operations to return null rather than guess.

Why does ticket lookup sometimes return wrong rows from Notion?

Structured rows-mode filters can be silently ignored by the MCP, returning unrelated rows. The skill re-issues lookups in SQL mode with a bound parameter and verifies the resolved page's idProperty before trusting it.