Farmos Workforce
by @brianppetty
Query employee data, time clock entries, schedules, and requests. Requires authentication — employees see own data, managers see team.
clawhub install farmos-workforce📖 About This Skill
name: farmos-workforce description: Query employee data, time clock entries, schedules, and requests. Requires authentication — employees see own data, managers see team. tags: [farming, workforce, employees, timeclock]
FarmOS Workforce
Employee profiles, time clock, skills tracking, employee requests, and team calendar.
When to Use This
What this skill handles: Time clock (clock in/out), schedules, availability, time-off requests, certifications, employee profiles, overtime tracking, and payroll exports.
Trigger phrases: "I need [day] off", "who's working", "schedule", "clock in/out", "who's clocked in?", "overtime this week?", "any pending time-off requests?", "employee list", "CDL certifications"
What this does NOT handle: Task assignments or work orders (use farmos-tasks), equipment scheduling or maintenance (use farmos-equipment), pay rates or financial compensation questions (restricted to admin only via farmos-finance).
Minimum viable input: Any mention of schedule, availability, time off, or who is working. "I need Friday off" is enough.
Data Completeness
1. Always state the count of employees, time entries, or requests returned: "Found 8 active employees" or "12 time entries this pay period."
2. Time entry queries are date-bounded — always include start_date and end_date parameters to get the full picture for the requested period.
3. If an endpoint fails, report it — don't silently present empty results as "no employees" or "no time entries."
4. For payroll exports, verify the date range covers the full pay period before exporting.
Authentication
This skill accesses protected FarmOS endpoints that require a JWT token.
To get a token:
TOKEN=$(~/clawd/scripts/farmos-auth.sh manager)
Role mapping: Check ~/.clawdbot/farmos-users.json for the sender's role.
API Base
http://100.102.77.110:8006
Integration Endpoints (No Auth)
Employee List (for assignments)
GET /api/integration/employeesReturns: All employees with id, name, role. Use for task assignment dropdowns.
Active Employees
GET /api/integration/employees/activeReturns: Currently active employees only.
Authenticated Endpoints (JWT Required)
Employee Profiles
GET /api/employees — List all employees (manager+) GET /api/employees/{id} — Employee detail (manager+ or own profile) GET /api/employees/me — Current user's profileTime Clock
POST /api/time/clock-in — Clock in (with optional GPS) POST /api/time/clock-out — Clock out GET /api/time/status — Current clock status for user GET /api/time/entries?start_date=2026-02-01&end_date=2026-02-13 — Time entriesTimesheet Approval (Manager)
POST /api/time/entries/{id}/approve — Approve timesheet entry GET /api/time/export?start_date=2026-02-01&end_date=2026-02-13&format=csv — Payroll exportEmployee Requests
POST /api/requests — Submit time off/leave request GET /api/requests/my — My requests GET /api/requests/pending — Pending approvals (manager) POST /api/requests/{id}/approve — Approve POST /api/requests/{id}/reject — Reject with reason body: {"reason": "..."}Calendar
GET /api/calendar/events?start=2026-02-01&end=2026-02-28 — Team calendarSkills & Certifications
GET /api/skills — Skill definitions GET /api/employees/{id}/skills — Employee's skills and certificationsUsage Notes
Conversational Schedule Capture
Crew members communicate schedule needs casually. Recognize these patterns and capture them without making it feel like paperwork.
Capture Patterns
| What They Say | What It Is | Action | |--------------|-----------|--------| | "I need Thursday afternoon off" | Time-off request | Log time-off, notify manager | | "I can come in early tomorrow" | Availability note | Log availability change | | "I'll be late Monday, doctor appointment" | Schedule note | Log late arrival, note reason | | "Can I swap shifts with Jake on Friday?" | Shift swap request | Route to Brian/manager for approval | | "I'm not going to be able to make it Saturday" | Absence notification | Log absence, notify manager | | "I've got a thing next Wednesday" | Vague time-off | Log it — don't ask what "thing" is |
Bot Behavior
Extract from message:
Response pattern:
Routing:
Availability Updates
When crew mentions availability changes mid-conversation (not a formal request), still capture it: