FarmOS Task Manager
name: farmos-tasks
by brianppetty · published 2026-03-22
$ claw add gh:brianppetty/brianppetty-farmos-tasks---
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/dashboard
Returns: 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-summary
Returns: 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=high
Query 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/json
Body:
{
"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/json
Body:
{
"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
→ cancelledConversational 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
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.
Usage Notes
More tools from the same signal band
Order food/drinks (点餐) on an Android device paired as an OpenClaw node. Uses in-app menu and cart; add goods, view cart, submit order (demo, no real payment).
Sign plugins, rotate agent credentials without losing identity, and publicly attest to plugin behavior with verifiable claims and authenticated transfers.
The philosophical layer for AI agents. Maps behavior to Spinoza's 48 affects, calculates persistence scores, and generates geometric self-reports. Give your...