Best use case
Skill: farm-task-manager is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
## Purpose
Teams using Skill: farm-task-manager should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/farm-task-manager/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How Skill: farm-task-manager Compares
| Feature / Agent | Skill: farm-task-manager | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
## Purpose
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# Skill: farm-task-manager
## Purpose
Create, update, query, and complete farm tasks. Manage recurring templates, crew assignments, and task categories. Understand task status flow and how the cron job generates daily tasks.
## Data Model Quick Reference
### Task status flow
```
todo -> in-progress -> done
todo -> overdue (cron, when due_date < today and status != done)
in-progress -> overdue (cron, when due_date < today)
```
Overdue is set automatically by the cron job at 06:00 each morning. An overdue task can still be marked done by a user.
### Task priority levels
| Value | Color token | Description |
|-------|-------------|-------------|
| low | --priority-low (#6b7280) | Non-urgent background work |
| medium | --priority-medium (#2563eb) | Standard farm tasks |
| high | --priority-high (#d97706) | Time-sensitive, same-day |
| urgent | --priority-urgent (#dc2626) | Safety or animal welfare |
### Recurring schedule types
| Type | schedule_days | schedule_day_of_month | season_start / season_end |
|------|---------------|----------------------|---------------------------|
| daily | null | null | null |
| weekly | JSON array of integers 0-6 (0=Sun) | null | null |
| monthly | null | integer 1-28 | null |
| seasonal | null | null | "MM-DD" strings (e.g. "07-01" / "09-30") |
## API Quick Reference
### Tasks
```
GET /api/tasks list tasks; filters: status, priority, assigned_to, category_id, due_date
GET /api/tasks/:id get single task with assignees
POST /api/tasks create task
PUT /api/tasks/:id update task fields
POST /api/tasks/:id/complete mark done: { completed_by_id, actual_hours?, notes? }
DELETE /api/tasks/:id delete task
```
#### Create task body
```json
{
"title": "Harvest Tomatoes - North Field rows 1-4",
"category_id": "uuid",
"priority": "high",
"due_date": "2025-07-20T12:00:00.000Z",
"location": "North Field",
"estimated_hours": 3.0,
"description": "Harvest ripe tomatoes from rows 1-4. Sort by grade A/B/C.",
"assigned_to": ["crew-member-uuid-1", "crew-member-uuid-2"],
"template_id": "uuid-or-null"
}
```
#### Complete task body
```json
{
"completed_by_id": "crew-member-uuid",
"actual_hours": 2.8,
"notes": "Completed rows 1-4, approximately 240kg harvested."
}
```
### Recurring Templates
```
GET /api/recurring list all templates
GET /api/recurring/:id get template
POST /api/recurring create template
PUT /api/recurring/:id update template
DELETE /api/recurring/:id delete template
POST /api/recurring/:id/generate force-generate today's task instance
```
#### Create template body
```json
{
"title": "Morning livestock feeding - all paddocks",
"category_id": "uuid",
"priority": "high",
"assigned_to_id": "crew-member-uuid",
"schedule_type": "daily",
"schedule_days": null,
"schedule_day_of_month": null,
"season_start": null,
"season_end": null,
"estimated_hours": 1.5,
"location": "All paddocks",
"description": "Feed all livestock in paddocks 1-4. Check water and hay levels.",
"active": 1
}
```
Weekly template example:
```json
{
"title": "Weekly equipment safety inspection",
"schedule_type": "weekly",
"schedule_days": "[1,3,5]",
"priority": "high"
}
```
Seasonal template example:
```json
{
"title": "Tomato harvest - season peak",
"schedule_type": "seasonal",
"season_start": "07-01",
"season_end": "09-30",
"priority": "high"
}
```
### Crew
```
GET /api/crew list active crew members
GET /api/crew/:id get crew member with task stats
POST /api/crew create crew member: { name, role, active? }
PUT /api/crew/:id update crew member
DELETE /api/crew/:id deactivate (sets active=0)
```
### Categories
```
GET /api/categories list categories (id, name, color_hex)
POST /api/categories create: { name, color_hex }
PUT /api/categories/:id update
DELETE /api/categories/:id delete (only if no tasks reference it)
```
### Analytics
```
GET /api/analytics/completion-rate ?period=week|month|year
GET /api/analytics/crew-workload ?period=week|month
GET /api/analytics/overdue-report list all currently overdue tasks
GET /api/analytics/category-breakdown task counts and hours by category
```
#### Completion rate response shape
```json
{
"period": "week",
"total_tasks": 42,
"completed": 30,
"rate": 0.714,
"by_priority": {
"urgent": { "total": 3, "completed": 2 },
"high": { "total": 15, "completed": 12 }
}
}
```
### Settings
```
GET /api/settings get all settings as key-value object
PUT /api/settings update: { farm_name?, timezone?, work_start_time? }
```
## Cron Job Behavior
The cron job runs daily at `work_start_time` (default 06:00 local farm time).
**Step 1 - Generate from templates:**
- For each active template where `active = 1`:
- daily: always generate
- weekly: generate if `day_of_week` in `schedule_days`
- monthly: generate if today's day-of-month matches `schedule_day_of_month`
- seasonal: generate if today's MM-DD is within `season_start` to `season_end` inclusive
- Skip if a task with the same `template_id` and the same `due_date` already exists (idempotent)
**Step 2 - Mark overdue:**
- Set `status = 'overdue'` for all tasks where `status IN ('todo','in-progress')` and `due_date < today 00:00`
## Task Assignment
A task can have zero or more assignees stored in the `task_assignments` join table. The `assigned_to` array in create/update requests replaces all existing assignments. An empty array means unassigned.
## Example: Creating a One-Off Task
```json
POST /api/tasks
{
"title": "Repair fence - South boundary breach",
"category_id": "<field-work-category-id>",
"priority": "urgent",
"due_date": "2025-07-18T17:00:00.000Z",
"location": "South boundary",
"estimated_hours": 3.0,
"assigned_to": ["<carlos-id>"]
}
```
## Example: Completing a Task
```json
POST /api/tasks/<task-id>/complete
{
"completed_by_id": "<carlos-id>",
"actual_hours": 3.5,
"notes": "Replaced three posts and 12m of wire fencing."
}
```
Response sets `status = 'done'`, `completed_at = now()`, stores `actual_hours` and `notes`.Related Skills
bookmark-manager
Save and organize URLs with tags, full-text search, and auto-generated screenshots. Use when you need to save a URL for later, organize links into collections, search saved bookmarks, or import browser bookmarks. Triggers include "save this link", "bookmark", "organize URLs", "find that article I saved", or any task involving managing a personal URL library.
Skill: clinic-queue-manager API
## When to use this skill
appointment-manager
Schedule and track healthcare appointments, manage provider contacts, build pre-appointment checklists, attach documents, receive reminders, and export appointment history. Use when a user needs to add, view, update, or export healthcare appointments.
dns-record-manager
Operate dns-record-manager -- manage DNS records across Cloudflare and Route 53, review change history, and configure providers.
task-runner
Run monorepo tasks with dependency ordering using monorepo-task-runner. Covers mtr run, mtr status, tasks.yaml format, and the web dashboard.
env-manager
Manage encrypted .env file vaults across projects and environments using env-file-manager
ssh-config-manager
Manage SSH host configurations in ~/.ssh/config from the terminal. Use when adding, editing, or searching SSH hosts, cloning host configs, testing connections, or importing configs. Triggers include "ssh config", "ssh host", "sshm", "add ssh host", "edit ssh config", "test ssh connection".
Skill: Uptime Monitoring
## Overview
Skill: Status Page
## Overview
Skill: unit-conversion
## Overview
Skill: recipe-scaler
## Overview
reading-list
Operate the reading-list API to save, manage, tag, search, and export articles.