skills/general/write-integration-ticket/SKILL.md
Write API integration tickets in structured specification format. Load when user mentions 'write integration ticket', 'create integration spec', 'integration specification', 'API action ticket', or wants to document an API integration with endpoints, parameters, acceptance criteria, and error handling. Creates Linear tickets with Integration label assigned to Adeel Akram.
npx skillsauth add beam-ai-team/beam-next-skills write-integration-ticketInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Create structured API integration specifications ready for Linear import.
Transform API documentation into actionable integration tickets with clear endpoints, parameters, acceptance criteria, and error messages. Output follows a standardized table format for developer clarity.
ALWAYS ask the user first:
"Please share the API documentation or endpoint details for this integration before I begin writing the specification."
Do NOT proceed with creating the spec until documentation is provided.
Every integration ticket MUST follow this structure:
## [Action Number]. Action Title: [Action Name]
**Objective:** [One sentence describing what this action accomplishes]
| Field | Details |
|-------|---------|
| **Endpoint** | - Discovery: `GET /path` (if applicable)<br>- Action: `POST /path/{id}/action` |
| **Input Parameters** | - `paramName` (type, required/optional): Description.<br>- `paramName2` (type, required/optional): Description. |
| **Internal Parameters** | - `internalParam` (type): Description of resolved/computed values. |
| **Acceptance Criteria** | 1. Step one of the workflow.<br>2. Step two.<br>3. On success, return `{ field1, field2 }`. |
| **Error Messages** | - **Condition**: "Error message text."<br>- **Condition2**: "Error message text." |
{paramName}Include these error types as applicable:
| Category | Template | |----------|----------| | Not found | "No [resource] found with [identifier]. Please verify the [field]." | | Validation | "[Field] is required and must be [constraint]." | | Auth failure | "Access denied. Verify [permission type] permissions." | | API error | "Failed to [action]: {statusCode} - {errorMessage}." | | Rate limit | "Rate limit exceeded. Please try again in {seconds} seconds." |
Ask user for:
Do not proceed without documentation.
From the documentation, identify distinct actions. Each action should be:
For each action:
Present specs to user for review. Ask:
After user approval, create ticket in Linear:
python3 03-skills/linear-connect/scripts/manage_issue.py create \
--team "Platform Squad" \
--title "[Action Title]" \
--description "[Full specification in markdown]" \
--project "[User's project or default]" \
--labels "Integration" \
--assignee "[email protected]"
Default settings:
IntegrationUser provides Microsoft Graph API docs for sending Teams messages.
Objective: Send a plain-text message to a one-on-one Microsoft Teams chat by automatically resolving the chat using the authenticated user's email and the recipient's email.
| Field | Details |
|-------|---------|
| Endpoint | - Discovery: GET /v1.0/me/chats?$filter=chatType eq 'oneOnOne'&$expand=members&$top=100<br>- Send: POST /v1.0/chats/{chatId}/messages |
| Input Parameters | - recipientEmail (string, required): The userPrincipalName of the other participant in the one-on-one chat.<br>- messageContent (string, required): Text body of the message. |
| Internal Parameters | - resolvedChatId (string): ID of the chat matching exactly recipientEmail from members in chats list. |
| Acceptance Criteria | 1. Call GET /me/chats to retrieve all chats.<br>2. Check for @odata.nextLink to resolve pagination (max 3 pages).<br>3. Filter to chats where members' email exactly matches recipientEmail.<br>4. If none found, return error and stop.<br>5. Take first match, set resolvedChatId to its id.<br>6. POST to /chats/{resolvedChatId}/messages with constructed body.<br>7. On HTTP 201, return { id, createdDateTime, body.content }. |
| Error Messages | - Chat not found: "No one-on-one chat found with user {recipientEmail}. Please verify the email."<br>- Empty/oversized content: "Message content is required and must be under service limits."<br>- Auth failure: "Access denied. Verify Graph permissions."<br>- API error: "Failed to send message: {statusCode} - {errorMessage}." |
testing
Audit registry.yaml against disk, validate SKILL.md frontmatter, find duplicates and orphans. Load when user says 'audit skills registry', 'validate beam-next-skills', 'registry drift', 'skills catalog audit', 'check registry yaml'.
tools
All Workable ATS operations — fetch JDs, search candidates, post assessments/reviews. Load when user says "fetch JD", "search workable", "push to workable", "post review", "rate candidate", "workable", "push assessment", "list jobs", or after interview-coach completes an evaluation. Replaces workable-fetch-jd and workable-push-assessment.
data-ai
Load when user mentions "tavily research", "market intelligence", "competitive research", "GTM research", or needs real-time market data for sales, marketing, or vertical strategy.
development
Shared resource library for Slack integration skills. DO NOT load directly - provides common references (setup, API docs, error handling, authentication) and scripts used by slack-connect and individual Slack skills.