Install
openclaw skills install farmos-workforceQuery employee data, time clock entries, schedules, and requests. Requires authentication — employees see own data, managers see team.
openclaw skills install farmos-workforceEmployee profiles, time clock, skills tracking, employee requests, and team calendar.
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.
start_date and end_date parameters to get the full picture for the requested period.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.
GET /api/integration/employees
Returns: All employees with id, name, role. Use for task assignment dropdowns.
GET /api/integration/employees/active
Returns: Currently active employees only.
GET /api/employees — List all employees (manager+) GET /api/employees/{id} — Employee detail (manager+ or own profile) GET /api/employees/me — Current user's profile
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 entries
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 export
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": "..."}
GET /api/calendar/events?start=2026-02-01&end=2026-02-28 — Team calendar
GET /api/skills — Skill definitions GET /api/employees/{id}/skills — Employee's skills and certifications
Crew members communicate schedule needs casually. Recognize these patterns and capture them without making it feel like paperwork.
| 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 |
Extract from message:
Response pattern:
Routing:
When crew mentions availability changes mid-conversation (not a formal request), still capture it: