Farmos Equipment
by @brianppetty
Query equipment status, maintenance schedules, and service history for the farm fleet. Uses integration endpoints (no auth required).
clawhub install farmos-equipmentπ About This Skill
name: farmos-equipment description: Query equipment status, maintenance schedules, and service history for the farm fleet. Uses integration endpoints (no auth required). tags: [farming, equipment, maintenance]
FarmOS Equipment
Query and manage farm equipment data β status, maintenance schedules, service records, and parts inventory.
When to Use This
What this skill handles: Fleet status, maintenance schedules, equipment issues, hour/mileage logging, service manual lookups, parts questions, and maintenance completion records.
Trigger phrases: "the [machine] is...", "equipment status", "log hours on...", "maintenance due", "what equipment needs service?", "search equipment manuals for...", "what oil does the 8370R take?"
What this does NOT handle: Field observations about crop/soil/pest issues (use farmos-observations), scheduling repairs for people or assigning work (create a task via farmos-tasks), weather damage reports (use farmos-observations with weather_damage type).
Minimum viable input: A machine name or description of an equipment issue. "The combine sounds funny" is enough.
API Base
http://100.102.77.110:8005
Data Completeness Rules
CRITICAL: Always return complete data, never truncated results.
1. Dashboard endpoint is for SUMMARY STATS ONLY β use /api/integration/dashboard for counts and overdue items, NOT for listing equipment.
2. For listing equipment, use /api/integration/equipment which returns ALL equipment without pagination.
3. For due maintenance, use /api/integration/due-maintenance which returns ALL due/overdue items.
4. Always state the total count of items returned: "Found 3 overdue maintenance items" (not just "overdue items:").
5. If suspiciously few results, flag it: "Only seeing X items β that may be incomplete. Let me try a different endpoint."
6. If an endpoint fails, report the failure to the user rather than silently falling back to partial data.
Integration Endpoints (No Auth Required)
Dashboard Summary
GET /api/integration/dashboardReturns: Equipment counts, maintenance stats, overdue items.
Use for: Summary statistics and counts ONLY. Do NOT use for listing equipment or maintenance items.
Equipment List
GET /api/integration/equipmentReturns: All equipment with id, name, make, model, type, status, current_hours.
Use for: Complete equipment listing. This endpoint returns ALL equipment without truncation.
Use this to look up equipment IDs for other queries.
Equipment Detail
GET /api/integration/equipment/{id}/summaryReturns: Full equipment summary including maintenance history, upcoming service, documents.
Due Maintenance
GET /api/integration/due-maintenanceReturns: List of maintenance items that are due or overdue, including:
Use for: Complete list of ALL due/overdue maintenance. Returns all items without truncation.
Record Maintenance Completion
POST /api/integration/record-completion Content-Type: application/jsonBody:
{
"schedule_id": 1,
"equipment_id": 5,
"performed_at": "2026-02-13T10:00:00Z",
"performed_by": "user_name",
"equipment_hours": 1250,
"work_performed": "Changed engine oil and filter",
"parts_used": [],
"task_id": null
}
Use this when someone reports maintenance was done.
Semantic Search (Service Documents)
POST /api/integration/search Content-Type: application/jsonBody:
{
"query": "hydraulic fluid capacity 8370R",
"limit": 5
}
Returns: Relevant chunks from service manuals and parts catalogs with similarity scores. Use this for technical questions about equipment specs, procedures, and parts.
RAG Q&A
POST /api/integration/ask Content-Type: application/jsonBody:
{
"question": "What oil does the 8370R take?"
}
Returns: AI-generated answer sourced from service documents. Use for natural language equipment questions.
Regular API Endpoints
These endpoints provide additional functionality:
Equipment CRUD
GET /api/equipment β List with pagination and filters (?equipment_type=tractor&status=active&search=deere) GET /api/equipment/{id} β Full detail POST /api/equipment/{id}/hours β Log hour meter reading: {"hours": 1500, "recorded_at": "2026-02-13"}Maintenance
GET /api/maintenance/due β Detailed due maintenance list GET /api/schedules β All maintenance schedules GET /api/maintenance β Maintenance history recordsUsage Notes
Conversational Equipment Issue Intake
When crew reports an equipment problem -- even vaguely -- capture it. "The combine sounds funny" is a valid starting point. Your job is to guide toward useful detail without interrogating.
Symptom Detection
Auto-detect from the message what you can:
Sound symptoms (map to likely systems):
Performance symptoms:
Visual symptoms:
Accept vague reports: "Something is off," "doesn't feel right," "acting weird" are ALL valid. Log them and ask follow-ups.
Follow-Up Questions (2-3 Max, Not Interrogation)
Pick the most useful questions based on what is missing. Never ask more than 3.
| Missing Info | Question | |-------------|----------| | Sound type | "Is it more of a grinding, clicking, or whining sound?" | | Condition | "Does it happen all the time or just under load / at certain speeds / when turning?" | | Onset | "When did you first notice it -- today, or has it been building?" | | Context | "Anything change recently -- new attachment, hit something, different field conditions?" | | Location | "Can you tell where it is coming from -- front, rear, left side, engine area?" | | Severity | "Can you still operate it safely, or should it be parked?" |
For detailed reporters (mechanics, experienced operators): auto-detect everything, confirm, offer work order. Skip redundant questions.
For sparse reporters ("something is wrong with the combine"): ask 2-3 targeted questions, then log with what you have. A vague report logged is better than no report.
Auto-Correlation
When an equipment issue is reported, automatically check:
1. Hour meter vs maintenance schedule: "Current hours are 1,247 -- it is due for service at 1,250 anyway, so good timing to look at this." 2. Recent maintenance history: "The hydraulic filter was changed 200 hours ago -- probably not that, but worth mentioning." 3. Similar recent issues: "Someone reported a similar noise on this machine last week -- could be related."
Use the equipment detail endpoint (GET /api/integration/equipment/{id}/summary) to pull maintenance history and service intervals.
Creating Maintenance Flags
After capturing the issue:
1. Always offer before creating: "Want me to flag this for the shop?" or "Should I create a work order?" 2. Create a task via the task-manager skill with: - Title: equipment name + symptom summary (e.g., "8370R -- grinding noise on left turns") - Description: all captured details (symptoms, conditions, operator observations) - Equipment reference: equipment ID - Priority: based on severity assessment 3. Log hour meter reading if the operator mentions it: POST /api/equipment/{id}/hours
Safety Escalation
If the reported issue involves ANY of the following, switch to CRITICAL MODE immediately:
In critical mode:
Post-Issue Actions
After logging the issue, offer:
Example Flows
Detailed reporter (experienced operator):
Crew: "Hey FarmBot, the 8370R is making a weird noise when turning left"FarmBot: "Noted on the 8370R. Couple quick things -- is it more of a
grinding, clicking, or whining sound? And does it happen at
low speed, high speed, or both? I will log a maintenance flag
either way."
Crew: "Grinding I think, mostly at low speed in the field"
FarmBot: "Logged -- 8370R, grinding noise on left turns at low speed.
Current hours are 1,247 so it is due for service at 1,250
anyway. I have flagged it for maintenance review. If it gets
worse, let me know and I will escalate it."
Sparse reporter (vague but valid):
Crew: "Something is off with the planter"FarmBot: "Which planter -- the Kinze 4900? And can you describe what
is off -- a sound, how it is performing, or something you are
seeing? I will log it either way."
Crew: "Yeah the Kinze. It just does not feel right, kind of jerky"
FarmBot: "Got it -- Kinze 4900, jerky operation. That could be
hydraulic valves, drive system, or row unit clutches. Want me
to flag it for the shop? I will include what you told me so
they know what to look for."
Safety escalation:
Crew: "FarmBot the brakes on the grain cart feel spongy"FarmBot: "Flagging this immediately -- spongy brakes on the grain cart
is a safety issue. I have created a critical-priority work
order and notified Brian. Do not use the cart until someone
checks it. Good call reporting this."
Cross-Module Context
When dealing with equipment issues, think about what else is affected:
Equipment β Tasks:
Equipment β Observations:
Equipment β Weather:
Cross-reference when a machine issue could ripple into the work schedule. Don't cross-reference for routine hour logging or simple status checks.
Image Understanding
When a photo accompanies an equipment report (the image description will appear in your context as [Image] Description: ...), use it to enhance your response.
Photo of Damage or Symptoms
POST /api/integration/search with a query like "[make] [model] [component] [symptom]" to find relevant service manual sections.Photo of Hour Meter or Dashboard
POST /api/equipment/{id}/hours with the reading.Photo of Error Codes or Warning Lights
POST /api/integration/search with the error code and machine make/model: {"query": "error code E-47 Case IH 8250"}.Photo Quality Handling
Prompting for Photos
When crew reports equipment issues without a photo, and a photo would genuinely help diagnosis: