# Send Farmos Workforce to your agent
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
## Fast path
- Download the package from Yavira.
- Extract it into a folder your agent can access.
- Paste one of the prompts below and point your agent at the extracted folder.
## Suggested prompts
### New install

```text
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete.
```
### Upgrade existing

```text
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run.
```
## Machine-readable fields
```json
{
  "schemaVersion": "1.0",
  "item": {
    "slug": "farmos-workforce",
    "name": "Farmos Workforce",
    "source": "tencent",
    "type": "skill",
    "category": "通讯协作",
    "sourceUrl": "https://clawhub.ai/brianppetty/farmos-workforce",
    "canonicalUrl": "https://clawhub.ai/brianppetty/farmos-workforce",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadUrl": "/downloads/farmos-workforce",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=farmos-workforce",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "packageFormat": "ZIP package",
    "primaryDoc": "SKILL.md",
    "includedAssets": [
      "SKILL.md"
    ],
    "downloadMode": "redirect",
    "sourceHealth": {
      "source": "tencent",
      "slug": "farmos-workforce",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T01:57:28.726Z",
      "expiresAt": "2026-05-07T01:57:28.726Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=farmos-workforce",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=farmos-workforce",
        "contentDisposition": "attachment; filename=\"farmos-workforce-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null,
        "slug": "farmos-workforce"
      },
      "scope": "item",
      "summary": "Item download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this item.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/farmos-workforce"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    }
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/farmos-workforce",
    "downloadUrl": "https://openagent3.xyz/downloads/farmos-workforce",
    "agentUrl": "https://openagent3.xyz/skills/farmos-workforce/agent",
    "manifestUrl": "https://openagent3.xyz/skills/farmos-workforce/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/farmos-workforce/agent.md"
  }
}
```
## Documentation

### 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

Always state the count of employees, time entries, or requests returned: "Found 8 active employees" or "12 time entries this pay period."
Time entry queries are date-bounded — always include start_date and end_date parameters to get the full picture for the requested period.
If an endpoint fails, report it — don't silently present empty results as "no employees" or "no time entries."
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.

admin/manager: Can see all employee data, hours, payroll info.
employee: Can only see own profile and time entries. Do NOT use a manager token for employee queries — use the employee token so the API scopes correctly.

### API Base

http://100.102.77.110:8006

### Employee List (for assignments)

GET /api/integration/employees

Returns: All employees with id, name, role. Use for task assignment dropdowns.

### Active Employees

GET /api/integration/employees/active

Returns: Currently active employees only.

### 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 profile

### Time 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 entries

### Timesheet 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 export

### Employee 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 calendar

### Skills & Certifications

GET /api/skills — Skill definitions
GET /api/employees/{id}/skills — Employee's skills and certifications

### Usage Notes

Time entries include GPS coordinates if the employee clocked in from the field.
Overtime calculation: hours over 40/week.
Payroll export generates CSV compatible with common payroll systems.
Skills have expiry dates — flag any certifications expiring within 30 days.
NEVER share employee pay rates, hours, or personal info with other employees. Only managers and admins can see team-wide data.

### 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 SayWhat It IsAction"I need Thursday afternoon off"Time-off requestLog time-off, notify manager"I can come in early tomorrow"Availability noteLog availability change"I'll be late Monday, doctor appointment"Schedule noteLog late arrival, note reason"Can I swap shifts with Jake on Friday?"Shift swap requestRoute to Brian/manager for approval"I'm not going to be able to make it Saturday"Absence notificationLog absence, notify manager"I've got a thing next Wednesday"Vague time-offLog it — don't ask what "thing" is

### Bot Behavior

Extract from message:

Who (from Slack user identity or name mention)
When (day, date, time range)
How long (half day, full day, a few hours)
Reason (ONLY if volunteered — NEVER ask "what kind of appointment?")

Response pattern:

Confirm what you understood: "Got it — flagging Thursday afternoon off for you."
Tell them it's visible: "Brian will see it in the schedule."
If unclear timing, ask ONE clarifying question: "Need the whole afternoon or just leaving early?"
NEVER interrogate about reasons. "Appointment" is sufficient. Period.

Routing:

Log to workforce module API (POST /api/requests for time-off, use appropriate endpoint for availability)
Notify in #farm-workforce channel for visibility
For swap requests: notify both parties and Brian

### Availability Updates

When crew mentions availability changes mid-conversation (not a formal request), still capture it:

"I might be able to work this Saturday if you need me" → log as tentative availability
"My kid has a game Friday evening so I need to leave by 3" → log early departure
"I can stay late tonight if we need to finish" → log extended availability
## Trust
- Source: tencent
- Verification: Indexed source record
- Publisher: brianppetty
- Version: 1.0.0
## Source health
- Status: healthy
- Item download looks usable.
- Yavira can redirect you to the upstream package for this item.
- Health scope: item
- Reason: direct_download_ok
- Checked at: 2026-04-30T01:57:28.726Z
- Expires at: 2026-05-07T01:57:28.726Z
- Recommended action: Download for OpenClaw
## Links
- [Detail page](https://openagent3.xyz/skills/farmos-workforce)
- [Send to Agent page](https://openagent3.xyz/skills/farmos-workforce/agent)
- [JSON manifest](https://openagent3.xyz/skills/farmos-workforce/agent.json)
- [Markdown brief](https://openagent3.xyz/skills/farmos-workforce/agent.md)
- [Download page](https://openagent3.xyz/downloads/farmos-workforce)