Agent skill
maintainx-core-workflow-a
Execute MaintainX primary workflow: Work Order lifecycle management. Use when creating, updating, and managing work orders through their full lifecycle, from creation to completion with all status transitions. Trigger with phrases like "maintainx work order", "create work order", "work order lifecycle", "maintenance task", "manage work orders".
Install this agent skill to your Project
npx add-skill https://github.com/jeremylongshore/claude-code-plugins-plus-skills/tree/main/plugins/saas-packs/maintainx-pack/skills/maintainx-core-workflow-a
SKILL.md
MaintainX Core Workflow A: Work Order Lifecycle
Overview
Master the complete work order lifecycle in MaintainX -- from creation through completion. Work orders are the core unit of maintenance operations.
Prerequisites
- Completed
maintainx-install-authsetup MAINTAINX_API_KEYenvironment variable configured- MaintainX account with work order permissions
Status Transition Flow
OPEN ──→ IN_PROGRESS ──→ COMPLETED ──→ CLOSED
│ │ ↑
│ ↓ │
│ ON_HOLD ───────────┘
│
└──→ CLOSED (cancelled)
Instructions
Step 1: Create a Work Order
import { MaintainXClient } from './maintainx/client';
const client = new MaintainXClient();
// Create a corrective work order
const { data: wo } = await client.createWorkOrder({
title: 'Pump Station #3 - Seal Leak Repair',
description: 'Detected water leak at the mechanical seal. Needs immediate attention.',
priority: 'HIGH',
status: 'OPEN',
assignees: [{ type: 'USER', id: 4521 }],
assetId: 8901,
locationId: 2345,
dueDate: '2026-03-21T17:00:00Z',
categories: ['CORRECTIVE'],
});
console.log(`Work order #${wo.id} created`);
Step 2: Update Status Through Lifecycle
// Technician starts work
await client.updateWorkOrder(wo.id, {
status: 'IN_PROGRESS',
});
// Put on hold (waiting for parts)
await client.updateWorkOrder(wo.id, {
status: 'ON_HOLD',
onHoldReason: 'Waiting for replacement seal kit from supplier',
});
// Resume and complete
await client.updateWorkOrder(wo.id, {
status: 'IN_PROGRESS',
});
await client.updateWorkOrder(wo.id, {
status: 'COMPLETED',
completionNotes: 'Replaced mechanical seal. Tested for 30 min with no leaks.',
});
Step 3: Query Work Orders
// Fetch open work orders sorted by priority
const { data: openOrders } = await client.getWorkOrders({
status: 'OPEN',
limit: 25,
});
for (const order of openOrders.workOrders) {
console.log(`#${order.id} [${order.priority}] ${order.title}`);
}
// Paginate through all IN_PROGRESS orders
async function getAllInProgress() {
const allOrders = [];
let cursor: string | undefined;
do {
const { data } = await client.getWorkOrders({
status: 'IN_PROGRESS',
limit: 100,
cursor,
});
allOrders.push(...data.workOrders);
cursor = data.cursor;
} while (cursor);
return allOrders;
}
Step 4: Add Comments and Attachments
// Add a technician note
await client.request('POST', `/workorders/${wo.id}/comments`, {
body: 'Arrived on site. Isolating pump before disassembly.',
});
// Add a completion photo (URL-based)
await client.request('POST', `/workorders/${wo.id}/files`, {
url: 'https://storage.example.com/photos/seal-repair-complete.jpg',
name: 'seal-repair-complete.jpg',
});
Step 5: Assign to Teams
// Assign to a team instead of individual
const { data: teams } = await client.request('GET', '/teams');
const mechTeam = teams.teams.find((t: any) => t.name === 'Mechanical');
await client.updateWorkOrder(wo.id, {
assignees: [{ type: 'TEAM', id: mechTeam.id }],
});
Output
- Work orders created with full metadata (title, description, priority, assignees, asset, location)
- Status transitions executed through the complete lifecycle
- Paginated query results for filtering work orders
- Comments and files attached to work orders
Error Handling
| Error | Cause | Solution |
|---|---|---|
| 400 Bad Request | Missing title field |
Include at least title in POST body |
| 404 Not Found | Invalid asset/location/user ID | Verify referenced IDs exist via GET endpoints |
| 403 Forbidden | Insufficient permissions | Check user role has work order write access |
| 422 Invalid transition | Invalid status change (e.g., CLOSED to OPEN) | Follow the status transition flow above |
Resources
Next Steps
For asset and location management, see maintainx-core-workflow-b.
Examples
Bulk-create preventive maintenance work orders:
const pmSchedule = [
{ title: 'Weekly HVAC Filter Check', priority: 'LOW', categories: ['PREVENTIVE'] },
{ title: 'Monthly Fire Extinguisher Inspection', priority: 'MEDIUM', categories: ['PREVENTIVE'] },
{ title: 'Quarterly Elevator Safety Audit', priority: 'HIGH', categories: ['PREVENTIVE'] },
];
for (const pm of pmSchedule) {
const { data } = await client.createWorkOrder(pm);
console.log(`PM created: #${data.id} - ${data.title}`);
}
Filter work orders by date range:
curl -s "https://api.getmaintainx.com/v1/workorders?createdAtGte=2026-03-01T00:00:00Z&createdAtLte=2026-03-31T23:59:59Z&limit=50" \
-H "Authorization: Bearer $MAINTAINX_API_KEY" | jq '.workOrders | length'
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
dockerfile-generator
Dockerfile Generator - Auto-activating skill for DevOps Basics. Triggers on: dockerfile generator, dockerfile generator Part of the DevOps Basics skill category.
branch-naming-helper
Branch Naming Helper - Auto-activating skill for DevOps Basics. Triggers on: branch naming helper, branch naming helper Part of the DevOps Basics skill category.
readme-generator
Readme Generator - Auto-activating skill for DevOps Basics. Triggers on: readme generator, readme generator Part of the DevOps Basics skill category.
makefile-generator
Makefile Generator - Auto-activating skill for DevOps Basics. Triggers on: makefile generator, makefile generator Part of the DevOps Basics skill category.
gitignore-generator
Gitignore Generator - Auto-activating skill for DevOps Basics. Triggers on: gitignore generator, gitignore generator Part of the DevOps Basics skill category.
pre-commit-hook-setup
Pre Commit Hook Setup - Auto-activating skill for DevOps Basics. Triggers on: pre commit hook setup, pre commit hook setup Part of the DevOps Basics skill category.
Didn't find tool you were looking for?