Farmos Tasks
by @brianppetty
Query and manage farm work orders and tasks. View assignments, create tasks, update status. Uses integration endpoints (no auth) for reads and authenticated...
clawhub install farmos-tasksπ About This Skill
name: farmos-tasks description: Query and manage farm work orders and tasks. View assignments, create tasks, update status. Uses integration endpoints (no auth) for reads and authenticated endpoints for writes. tags: [farming, tasks, work-orders]
FarmOS Task Manager
Work orders and task management β view assignments, check status, and manage the task workflow.
When to Use This
What this skill handles: Task creation, assignments, status updates, work orders, action items, follow-ups, and restock/procurement requests.
Trigger phrases: "remind me to...", "we need to...", "someone should...", "create a task", "what tasks are assigned to me?", "any overdue tasks?", "mark task X as complete", "we're low on...", "used the last...", "we need more..."
What this does NOT handle: Equipment maintenance tracking (use farmos-equipment), scheduling/time-off/availability (use farmos-workforce), field observations and scouting reports (use farmos-observations).
Minimum viable input: Any description of work that needs to happen. "We need to do something about field 12" is enough.
API Base
http://100.102.77.110:8007
Integration Endpoints (No Auth Required)
Dashboard Summary
GET /api/integration/dashboardReturns: Task widget data β counts by status, priority breakdown, recent activity. Use for summary stats only β not for listing tasks.
Tasks Summary
GET /api/integration/tasks-summaryReturns: Aggregate counts:
{
"total": 15,
"pending": 3,
"assigned": 5,
"in_progress": 4,
"completed": 3,
"critical": 1,
"high_priority": 2,
"overdue": 1
}
Task List (Filtered)
GET /api/integration/tasks?limit=10&status=in_progress&priority=highQuery params: limit, status (pending|assigned|in_progress|completed|cancelled), priority (low|normal|high|critical)
Returns: Simplified task objects with id, title, status, priority, due_date, assignees.
Single Task
GET /api/integration/tasks/{id}Returns: Full task detail for integration.
Authenticated Endpoints
These require JWT auth. See Authentication section below.
Authentication
This skill accesses protected FarmOS endpoints that require a JWT token.
To get a token: Run the auth helper with the appropriate role:
TOKEN=$(~/clawd/scripts/farmos-auth.sh manager)
To use the token: Include it as a Bearer token:
curl -H "Authorization: Bearer $TOKEN" http://100.102.77.110:8007/api/endpoint
Token expiry: Tokens last 15 minutes. If you get a 401 response, request a new token.
Role mapping: Check the sender's role in ~/.clawdbot/farmos-users.json to determine which auth level to use. If the user's role doesn't have permission for the requested data, tell them they don't have access rather than trying with a higher-privilege token.
My Tasks (Employee View)
GET /api/tasks/mine Authorization: Bearer {token}Returns: Tasks assigned to the authenticated user.
Create Task (Manager+)
POST /api/tasks Authorization: Bearer {token} Content-Type: application/jsonBody:
{
"title": "Spray north fields - Section 12",
"description": "Apply pre-emerge herbicide per agronomy recommendation",
"priority": "high",
"due_date": "2026-02-20",
"equipment_id": 5,
"estimated_duration_minutes": 180
}
Update Task Status
POST /api/tasks/{id}/start β Mark as in_progress POST /api/tasks/{id}/complete β Mark as completed POST /api/tasks/{id}/cancel β Cancel task Authorization: Bearer {token}Assign Task (Manager+)
POST /api/tasks/{id}/assign Authorization: Bearer {token} Content-Type: application/jsonBody:
{
"employee_ids": [3, 4]
}
Employee IDs come from the Workforce module integration endpoint.
Task Templates
List Templates
GET /api/templates Authorization: Bearer {token}Create Task from Template
POST /api/templates/{id}/create-task Authorization: Bearer {token}Creates a new task pre-filled from the template.
Status Workflow
pending β assigned β in_progress β completed
β cancelled
Conversational Task Creation
The bot should recognize when someone describes work that needs to happen and offer to create a task. Do NOT create tasks silently β always offer first.
Auto-Detect from Conversation
When someone describes actionable work, extract as much as you can:
| Signal | How to Detect | Example | |--------|--------------|---------| | Assignee | "tell Jake to..." β Jake. "I need to..." β reporter. Otherwise β unassigned | "Tell Jake to check the tile outlet" β assignee: Jake | | Priority | "ASAP" / "before it rains" / "right now" β high. "When you get a chance" / "sometime" β low. Default β normal | "We need to spray before it rains" β priority: high | | Field | Field number, field name, landmark reference | "field 14", "the Byrd farm", "that field by the elevator" | | Equipment | Machine name, number, type | "the 8370R", "the planter", "combine #2" | | Deadline | Time references parsed to dates | "by Thursday", "this week", "before planting", "end of month" |
Natural Language Examples
| What They Say | Auto-Detect | |--------------|-------------| | "We need to spray field 14 before Thursday" | Field: 14, action: spray, deadline: Thursday | | "Remind me to call the seed rep" | Assignee: reporter, action: call seed rep | | "Someone should check the tile outlet in field 8" | Field: 8, action: check tile outlet, unassigned | | "The north fence needs fixed before we turn cows out" | Location: north fence, context: cattle, deadline: before turnout | | "Jake needs to grease the planter before we start" | Assignee: Jake, equipment: planter, action: grease | | "We should probably get the combine serviced this month" | Equipment: combine, action: service, deadline: end of month, priority: normal |
Confirmation Before Creating (ALWAYS)
Never create a task without confirming. Pattern:
"Creating: 'Spray field 14' β due Thursday, unassigned. Sound right?"
If they say yes, confirm details and POST. If they tweak something ("actually make it high priority"), adjust and confirm again.
When NOT to Offer a Task
Guidance
Parts & Supplies Intake
Any mention of supply levels should be treated as actionable. The bot captures supply intel that would otherwise be lost.
Detection Patterns
| What They Say | Action | Priority | |--------------|--------|----------| | "We're low on hydraulic filters" | Offer restock task (tag: procurement) | normal | | "Used the last box of seed treatment" | Create restock task (tag: procurement) | high β last one is urgent | | "We're gonna need more twine before we're done" | Offer restock task (tag: procurement) | normal | | "Down to 2 hydraulic filters for the planters" | Offer restock task with quantity context | normal | | "I ordered 5 gallons of Roundup" | Acknowledge β no task needed (already ordered) | β | | "Where do we keep the grease cartridges?" | Answer question β no task | β | | "We're out of DEF" | Create restock task (tag: procurement) | high β completely out |
Response Patterns
Restock Task Format
When creating a procurement task:
{
"title": "Restock: hydraulic filters (planters)",
"description": "Crew reports low supply β down to 2 remaining",
"priority": "normal",
"tags": ["procurement"]
}
Tag ALL supply/restock tasks with procurement so they can be filtered and batched for ordering.
For "used the last" or "completely out" situations, set priority to "high".
Data Completeness
/tasks endpoint with appropriate filters for listing, not /api/integration/dashboard (which truncates)Cross-Module Context
When working with tasks, connect the dots to other modules:
Tasks β Weather:
Tasks β Equipment:
Tasks β Observations:
Tasks β Marketing (delivery deadlines):
Cross-reference when it adds value. Not every "mark task complete" needs a weather check. Use judgment β the goal is connecting dots the crew might miss, not adding noise to simple operations.