# Board

> Manage the task board - view, create, move, prioritize, and track work items

- Skill: `tashfeenahmed/board` (Agent Skill, multi-file: 3 files)
- Install (CLI): `npx skillmds@latest add tashfeenahmed/board`
- Raw SKILL.md: https://api.skillmd.com/api/skills/tashfeenahmed/board/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Productivity
- Author: tashfeenahmed (https://skillmd.com/u/tashfeenahmed)
- Updated: 2026-09-21
- Page: https://skillmd.com/skills/tashfeenahmed/board

---


# Board Skill

Unified kanban task board that replaces the reminder and progress skills.

## Columns
- **inbox**: Untriaged items (agent-created proactive triggers)
- **backlog**: Triaged, not yet scheduled
- **scheduled**: Has a trigger time, waiting to fire
- **in_progress**: Being worked on
- **waiting**: Blocked on something
- **done**: Completed
- **archived**: Dismissed/expired/old done

## Actions
- `view`: Show the board. Optional filters: column, priority, label
- `add`: Create a new item. Required: title. Optional: kind, trigger_time, priority, labels, goal_id, task_config, recurring
- `move`: Move item to a column. Required: item_id, status (target column)
- `update`: Edit an item. Required: item_id. Optional: title, priority, labels, trigger_time, kind
- `done`: Mark complete. Required: item_id. Optional: result (completion note)
- `archive`: Dismiss/archive an item. Required: item_id
- `detail`: Show full item detail, including durable worker/attempt/lease/error state and result cost. Required: item_id
- `snooze`: Reschedule trigger time. Required: item_id, time

## Priority Levels
urgent > high > medium (default) > low

## Item Kinds
- `nudge`: A pre-written message/reminder delivered verbatim to the user. The `title` must address them directly.
- `task`: Sub-agent work that runs autonomously under a durable lease with heartbeats and bounded retries, then stores its result. Put internal instructions in `task_config.goal`, not in a nudge.

### User-facing nudge text

For a scheduled `nudge`, `title` is the exact notification text. Never store a plan for what the bot should say.

- BAD: `Daily check-in with Sam - ask about priorities and deadlines`
- GOOD: `Hey Sam, what are your priorities and deadlines today? How are things going?`
- BAD: `Send the user a reminder to take their medication`
- GOOD: `Quick reminder to take your medication.`

If the bot must gather data or perform work before messaging, use `kind: "task"` and put the work in `task_config.goal`.

## Recurring vs one-off

The system supports both. **Pick the right one:**

- **One-off**: use `trigger_time` — e.g. "remind me tomorrow at 9am" → `trigger_time: "tomorrow 9am"`. Fires once, then done.
- **Recurring**: use the `recurring` object — e.g. "remind me every day at 8am" → `recurring: {"type":"daily","hour":8,"minute":0}`. Automatically re-fires on each next occurrence forever until the user archives it.

If the user says any of these, they want **recurring** (never `trigger_time`):

| User says | Use |
|---|---|
| "every day at 8am" / "daily at 8am" | `recurring: {"type":"daily","hour":8,"minute":0}` |
| "every Monday at 9am" | `recurring: {"type":"weekly","hour":9,"minute":0,"dayOfWeek":1}` |
| "every weekday at 9am" / "weekdays at 9am" | `recurring: {"type":"weekdays","hour":9,"minute":0}` |
| "every weekend at 10am" / "weekends at 10am" | `recurring: {"type":"weekends","hour":10,"minute":0}` |

`dayOfWeek`: 0=Sun, 1=Mon, 2=Tue, 3=Wed, 4=Thu, 5=Fri, 6=Sat.

`hour` is 24h: 8am=8, noon=12, 2pm=14, 8pm=20.

**Never** put "every day at 8am" as a string into `trigger_time` — use the `recurring` object.

