Unified Ticket Fetcher Skill
Stateless atomic operation to securely query multiple project management and enterprise ticketing platforms (Jira, Plane, ServiceNow), aggregate assigned work items, resolve credentials gracefully, and produce a single normalized task schema.
Prerequisites
unified-task-tracker — for orchestrating multi-provider authentication and issuing high-fidelity API requests to ticketing backends.
Steps
Step 1: poll_assigned_tickets
Identify and query active ticketing endpoints for the current user session:
- Locate active credentials and connection properties for:
- Jira: Resolve URL, username, and API token.
- Plane: Resolve workspace name, project IDs, and API key.
- ServiceNow: Resolve instance URL, client ID, and credential pairs.
- Execute parallel or sequential queries to each active ticketing platform:
- Call Jira endpoint (e.g., query
assignee = currentUser() AND statusCategory != Done).
- Call Plane endpoint (e.g., retrieve active issues assigned to user profile identifier).
- Call ServiceNow incident tracker (e.g., retrieve incidents where
assigned_to matches user ID and state is not resolved/closed).
- Output parameters:
raw_payloads: Dictionary mapping provider name (jira, plane, servicenow) to lists of raw ticket metadata.
Step 2: aggregate_ticket_payloads [depends_on: poll_assigned_tickets]
Collate raw records, manage connection failures, and extract core ticket attributes:
- Handle execution faults:
- If a specific provider API request fails (e.g., due to timeout or bad credentials), capture the exception, register a warning diagnostic, and continue processing other available backends (graceful degradation).
- Consolidate raw ticket listings:
- Merge the raw JSON arrays into a single in-memory collection.
- Apply global filter logic to remove completed, archived, or resolved issues.
- Output parameters:
aggregated_list: Consolidated list of active raw ticket metadata objects.
failed_providers: List of providers that failed to respond.
Step 3: normalize_tasks [depends_on: aggregate_ticket_payloads]
Transform heterogeneous ticket schemas into a single, standardized, unified task list:
- Standardize fields into the target schema:
id: Normalized ticket identifier string (e.g. JIRA-101, PLANE-402, SN-INC00123).
source: Provider identifier ("jira", "plane", or "servicenow").
title: Short title or summary string.
description: Main description body, stripped of platform-specific HTML/formatting where appropriate.
status: Normalized workflow state ("TODO", "IN_PROGRESS", "BLOCKED").
priority: Standardized severity level ("LOW", "MEDIUM", "HIGH", "CRITICAL").
due_date: ISO-8601 due date string (null if unspecified).
created_date: ISO-8601 creation timestamp.
- Sort and deduplicate:
- Remove duplicate records if any exist.
- Sort the task collection by priority descending, then by created_date ascending.
- Output parameters:
status: "SUCCESS" or "FAILED"
normalized_tasks: List of standard task objects containing all normalized keys.
task_count: Total number of active tickets retrieved.
1---2name: unified-ticket-fetcher3description: Unified Ticket Fetcher atomic skill. Connects to Jira, Plane, and ServiceNow, aggregates assigned tickets, and outputs standardized tasks.4license: MIT5---67# Unified Ticket Fetcher Skill89Stateless atomic operation to securely query multiple project management and enterprise ticketing platforms (Jira, Plane, ServiceNow), aggregate assigned work items, resolve credentials gracefully, and produce a single normalized task schema.1011## Prerequisites1213- `unified-task-tracker` — for orchestrating multi-provider authentication and issuing high-fidelity API requests to ticketing backends.1415## Steps1617### Step 1: poll_assigned_tickets18Identify and query active ticketing endpoints for the current user session:19- Locate active credentials and connection properties for:20 - **Jira**: Resolve URL, username, and API token.21 - **Plane**: Resolve workspace name, project IDs, and API key.22 - **ServiceNow**: Resolve instance URL, client ID, and credential pairs.23- Execute parallel or sequential queries to each active ticketing platform:24 - Call Jira endpoint (e.g., query `assignee = currentUser() AND statusCategory != Done`).25 - Call Plane endpoint (e.g., retrieve active issues assigned to user profile identifier).26 - Call ServiceNow incident tracker (e.g., retrieve incidents where `assigned_to` matches user ID and state is not resolved/closed).27- Output parameters:28 - `raw_payloads`: Dictionary mapping provider name (`jira`, `plane`, `servicenow`) to lists of raw ticket metadata.2930### Step 2: aggregate_ticket_payloads [depends_on: poll_assigned_tickets]31Collate raw records, manage connection failures, and extract core ticket attributes:32- Handle execution faults:33 - If a specific provider API request fails (e.g., due to timeout or bad credentials), capture the exception, register a warning diagnostic, and continue processing other available backends (graceful degradation).34- Consolidate raw ticket listings:35 - Merge the raw JSON arrays into a single in-memory collection.36 - Apply global filter logic to remove completed, archived, or resolved issues.37- Output parameters:38 - `aggregated_list`: Consolidated list of active raw ticket metadata objects.39 - `failed_providers`: List of providers that failed to respond.4041### Step 3: normalize_tasks [depends_on: aggregate_ticket_payloads]42Transform heterogeneous ticket schemas into a single, standardized, unified task list:43- Standardize fields into the target schema:44 - `id`: Normalized ticket identifier string (e.g. `JIRA-101`, `PLANE-402`, `SN-INC00123`).45 - `source`: Provider identifier ("jira", "plane", or "servicenow").46 - `title`: Short title or summary string.47 - `description`: Main description body, stripped of platform-specific HTML/formatting where appropriate.48 - `status`: Normalized workflow state ("TODO", "IN_PROGRESS", "BLOCKED").49 - `priority`: Standardized severity level ("LOW", "MEDIUM", "HIGH", "CRITICAL").50 - `due_date`: ISO-8601 due date string (null if unspecified).51 - `created_date`: ISO-8601 creation timestamp.52- Sort and deduplicate:53 - Remove duplicate records if any exist.54 - Sort the task collection by priority descending, then by created_date ascending.55- Output parameters:56 - `status`: "SUCCESS" or "FAILED"57 - `normalized_tasks`: List of standard task objects containing all normalized keys.58 - `task_count`: Total number of active tickets retrieved.