From maintainx-pack
Creates minimal MaintainX work order via REST API using curl or TypeScript/Node.js. Tests API key/setup and teaches basic patterns for new integrations.
npx claudepluginhub jeremylongshore/claude-code-plugins-plus-skills --plugin maintainx-packThis skill is limited to using the following tools:
Create your first work order using the MaintainX REST API -- the core building block of CMMS operations.
Sets up MaintainX REST API authentication: generates keys, configures env vars, installs TypeScript Axios client for work orders/assets/locations. For CMMS integrations.
Automates Maintainx operations via Composio toolkit and Rube MCP. Guides tool discovery with RUBE_SEARCH_TOOLS, connection management, and schema-compliant execution.
Guides Next.js Cache Components and Partial Prerendering (PPR): 'use cache' directives, cacheLife(), cacheTag(), revalidateTag() for caching, invalidation, static/dynamic optimization. Auto-activates on cacheComponents: true.
Share bugs, ideas, or general feedback.
Create your first work order using the MaintainX REST API -- the core building block of CMMS operations.
maintainx-install-auth setupMAINTAINX_API_KEY environment variablecurl -X POST https://api.getmaintainx.com/v1/workorders \
-H "Authorization: Bearer $MAINTAINX_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"title": "Hello World - Test Work Order",
"description": "First API-created work order. Safe to delete.",
"priority": "LOW",
"status": "OPEN"
}' | jq .
Expected response:
{
"id": 12345,
"title": "Hello World - Test Work Order",
"status": "OPEN",
"priority": "LOW",
"createdAt": "2026-03-19T12:00:00Z"
}
// hello-maintainx.ts
import { MaintainXClient } from './maintainx/client';
async function helloMaintainX() {
const client = new MaintainXClient();
// Create a basic work order
const { data: workOrder } = await client.createWorkOrder({
title: 'HVAC Filter Replacement - Building A',
description: 'Replace air filters in units 1-4 on the 3rd floor.',
priority: 'MEDIUM',
});
console.log('Created work order:', workOrder.id);
// Retrieve it back to confirm
const { data: fetched } = await client.getWorkOrder(workOrder.id);
console.log('Work order status:', fetched.status);
console.log('Created at:', fetched.createdAt);
// List open work orders
const { data: list } = await client.getWorkOrders({
status: 'OPEN',
limit: 5,
});
console.log(`Found ${list.workOrders.length} open work orders`);
}
helloMaintainX();
# List recent work orders to confirm creation
curl -s "https://api.getmaintainx.com/v1/workorders?limit=3" \
-H "Authorization: Bearer $MAINTAINX_API_KEY" | jq '.workOrders[] | {id, title, status}'
# Delete the test work order (replace ID)
curl -X DELETE "https://api.getmaintainx.com/v1/workorders/12345" \
-H "Authorization: Bearer $MAINTAINX_API_KEY"
| Error | Cause | Solution |
|---|---|---|
| 400 Bad Request | Missing required title field | Include at least title in the POST body |
| 401 Unauthorized | Invalid API key | Check MAINTAINX_API_KEY environment variable |
| 403 Forbidden | Plan limitations | Verify API access on your subscription |
| 422 Unprocessable | Invalid enum value | Use valid priority (NONE, LOW, MEDIUM, HIGH) |
Proceed to maintainx-local-dev-loop for development workflow setup.
Create a work order tied to an asset:
const wo = await client.createWorkOrder({
title: 'Conveyor Belt #7 - Bearing Replacement',
description: 'Replace worn bearings on the main drive shaft.',
priority: 'HIGH',
assetId: 98765, // Link to equipment asset
locationId: 54321, // Link to facility location
assignees: [{ type: 'USER', id: 111 }],
dueDate: '2026-03-25T17:00:00Z',
});
Create a work order from a preventive maintenance template:
curl -X POST https://api.getmaintainx.com/v1/workorders \
-H "Authorization: Bearer $MAINTAINX_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"title": "Monthly Fire Extinguisher Inspection",
"priority": "MEDIUM",
"categories": ["PREVENTIVE"],
"procedureId": 7890
}'