Provider Integration
A systematic workflow for integrating project management tools like Jira and Linear into the BloomPath ecosystem.
Install
mkdir -p .claude/skills/provider-integration && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/9866" && unzip -o skill.zip -d .claude/skills/provider-integration && rm skill.zipInstalls to .claude/skills/provider-integration
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
Standardized workflow for adding or modifying Jira/Linear provider integrations in BloomPath.Key capabilities
- →Normalize provider data into UnifiedTicket objects
- →Implement webhook signature verification
- →Integrate with task queues for asynchronous processing
- →Expose provider-specific API routes
- →Perform health checks for provider configurations
How it works
Providers extend a base class to normalize incoming webhook data into a standard UnifiedTicket format. The system then routes these events through an asynchronous task queue to ensure performance.
Inputs & outputs
When to use Provider Integration
- →Adding new Jira integration
- →Customizing Linear provider
- →Normalizing ticket data
- →Setting up webhook routes
About this skill
Provider Integration Skill
Use this skill when adding a new project management provider or modifying existing Jira/Linear integrations.
Architecture
All providers extend IssueProvider (base class in middleware/providers/base.py) and normalize data to UnifiedTicket (in middleware/models/ticket.py).
1. Base Class Contract
Every provider must implement these methods:
class NewProvider(IssueProvider):
@property
def name(self) -> str: ...
def parse_webhook(self, data: dict) -> UnifiedTicket: ...
def get_active_sprint_or_cycle(self) -> Optional[dict]: ...
def get_sprint_issues(self, sprint_id: str) -> List[UnifiedTicket]: ...
def get_issue_dependencies(self, issue_id: str) -> list: ...
def transition_to_done(self, issue_id: str) -> bool: ...
2. Provider Implementation
- Create
middleware/providers/<name>.py. - Load credentials from environment variables (
.env). - Implement
parse_webhook()to normalize toUnifiedTicket:- Map provider statuses →
IssueStatusenum (OPEN,IN_PROGRESS,DONE,BLOCKED). - Map issue types →
IssueTypeenum (BUG,TASK,STORY,EPIC). - Populate:
id,title,status,issue_type,priority,assignee_*,labels,provider.
- Map provider statuses →
- Implement webhook signature verification if the provider supports it.
3. Webhook Route
- Add a new route in
middleware/routes/webhooks.py:@webhooks_bp.route('/<provider_name>', methods=['POST']) def new_provider_webhook(): # Parse → detect event → enqueue (use task_queue!) - Create
_detect_<provider>_event(data)helper for event classification. - CRITICAL: Use
enqueue_ticket_event()— never callprocess_ticket_event()synchronously.
4. API Routes
- Update
_get_provider()inmiddleware/routes/api.pyto recognize the new provider. - Ensure
/sprint_status,/team_members,/complete_taskwork with the new provider.
5. Configuration
- Add required env vars to
.env.template. - Update
api.pyhealth check to report the new provider's configuration status.
6. Verification
- Create
test_<provider>.pywith mock webhook payloads. - Test the webhook response time (must be < 500ms).
- Verify
UnifiedTicketnormalization is correct.
When not to use it
- →When processing ticket events synchronously
Prerequisites
Limitations
- →Webhook response time must be under 500ms
- →Must use enqueue_ticket_event instead of synchronous processing
How it compares
This approach enforces a strict contract for all providers, ensuring data normalization and asynchronous event handling, rather than allowing ad-hoc integration logic.
Compared to similar skills
Provider Integration side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| Provider Integration (this skill) | 0 | 6mo | Review | Advanced |
| task-execution-engine | 3 | 7mo | Review | Beginner |
| dashboard | 0 | 2mo | Review | Beginner |
| emailable-automation | 0 | 3mo | No flags | Intermediate |
Try saying
Example prompts that trigger this skill in your AI assistant.
You might also like
task-execution-engine
davila7
Execute implementation tasks from design documents using markdown checkboxes. Use when (1) implementing features from feature-design-assistant output, (2) resuming interrupted work, (3) batch executing tasks. Triggers on 'start implementation', 'run tasks', 'resume'.
dashboard
pedrogrande
Opens the TaskFlow Dashboard in your browser to view project progress, tasks, features, retros, and decisions.
emailable-automation
onfire7777
Automate Emailable tasks via Rube MCP (Composio). Always search tools first for current schemas.
google-sheets-automation
TJSNDHU
Lightweight Google Sheets integration with standalone OAuth authentication. No MCP server required. Full read/write access.
fastapi-templates
wshobson
Create production-ready FastAPI projects with async patterns, dependency injection, and comprehensive error handling. Use when building new FastAPI applications or setting up backend API projects.
mcp-builder
anthropics
Guide for creating high-quality MCP (Model Context Protocol) servers that enable LLMs to interact with external services through well-designed tools. Use when building MCP servers to integrate external APIs or services, whether in Python (FastMCP) or Node/TypeScript (MCP SDK).