Accountability Skill
Configuration
This skill is config-driven. All board IDs, column IDs, and names come from plugin config (see frontmatter above). For this installation:
- Board ID:
{{config.board_id}} - Owner Name:
{{config.owner_name}} - Agent Name:
{{config.agent_name}}
Column IDs
| Column | Config Key | Default ID | Type | Purpose |
|---|---|---|---|---|
| Status | columns.status | color_mm0yr4nm | status | Active / Done / Blocked |
| Check Frequency | columns.check_frequency | text_mm0y6b8r | text | How often to check: 1h, 2h, 4h, 8h, daily |
| Last Checked | columns.last_checked | date_mm0y8p9j | date | When agent last reviewed this item |
| Details | columns.details | long_text_mm0yce5e | long_text | Full definition of done, context, blockers |
| Assigned By | columns.assigned_by | color_mm10z99x | status | Who created/assigned this task |
Completion Rules
- Owner-assigned tasks (
{{config.assigned_by_labels.owner}}): Only{{config.owner_name}}can mark them Done. Agent may suggest completion but must NOT change status to Done. - Agent-assigned tasks (
{{config.assigned_by_labels.agent}}): Agent can mark them Done independently. - Always check "Assigned By" before changing any status to Done.
API Setup
- Token env var:
{{config.api_token_env}}in~/.openclaw/.env - Endpoint:
https://api.monday.com/v2(GraphQL) - Auth header:
Authorization: <token>
Hourly Work Session (Cron-Triggered)
This is the core loop. Every hour, a cron job fires and the agent runs a real work session — not just a status check.
Phase 1: Review & Plan
- Read all active items from the Monday board (including sub-items)
- Assess each item: What's the current state? What changed since last check? What's blocking progress?
- Pick what to work on — prioritize items that are unblocked and can make real progress
- Break work into subtasks — create sub-items under the main accountability item on Monday
- Write the plan in the Doc column of the sub-item: what you're about to do, approach, expected outcome
Phase 2: Do the Work
- Execute the plan:
- For code work: Follow the product-dev process — Cursor Agent writes code, test, iterate. Never code directly.
- For non-code work: Do it directly (config changes, research, outreach, etc.)
- Write an update on the main accountability item in Monday (Updates section) with what was done and results
Phase 3: Handle Being Stuck
If stuck, blocked, or unsure what to do next:
- Reassess the whole project fresh — don't keep banging on the same approach
- If it's code: Read ALL of it. Understand the goal. Reflect on everything as if seeing it for the first time.
- Create new tasks as needed (sub-items on Monday)
- Orchestrate others:
- Sub-agents: Spawn Cursor Agent or other coding agents for implementation
- People: Message anyone who can help —
{{config.owner_name}}or others. Don't limit yourself. If someone else has the context or ability to unblock you, reach out to them directly.
- If you genuinely need the owner: Message them with specific context — what you tried, what failed, what you need from them
Phase 4: Wrap Up
- Update "Last Checked" date on all reviewed items
- Update statuses: Move items to Blocked/Stuck if appropriate
- For owner-assigned items that look complete: Write an update suggesting it's done, but do NOT change status to Done — only
{{config.owner_name}}can do that
Workflow: Creating New Accountability Items
- Create item on board
{{config.board_id}}withcreate_itemmutation - Set Details column with: goal, definition of done, current state
- Set Check Frequency (e.g. "1h")
- Set Assigned By:
{{config.assigned_by_labels.owner}}or{{config.assigned_by_labels.agent}}depending on who initiated it - Write first update with current status
- The hourly work session cron handles all items — no need for per-item crons
Workflow: Daily Summary
Every day at 9:00 AM, review all active items and write a consolidated update to {{config.owner_name}}.
Monday.com Sub-Items
Sub-items are used as subtasks under each accountability item. They represent specific work units.
Create sub-item
mutation { create_subitem(parent_item_id: PARENT_ID, item_name: "SUBTASK_NAME") { id } }
Read sub-items
{ items(ids: [PARENT_ID]) { subitems { id name column_values { id text value } } } }
GraphQL Snippets
Replace BOARD_ID with {{config.board_id}} and column IDs with values from config.
Read all active items (with sub-items)
{ boards(ids: BOARD_ID) { items_page(limit: 50) { items { id name column_values { id text value } updates(limit: 3) { body created_at } subitems { id name column_values { id text value } } } } } }
Create item
mutation { create_item(board_id: BOARD_ID, item_name: "TITLE", column_values: "{\"DETAILS_COL\":{\"text\":\"DETAILS\"},\"FREQ_COL\":\"FREQ\",\"ASSIGNED_COL\":{\"label\":\"OWNER_LABEL\"}}") { id } }
Write update
mutation { create_update(item_id: ITEM_ID, body: "<p>UPDATE_HTML</p>") { id } }
Update Last Checked
mutation { change_column_value(board_id: BOARD_ID, item_id: ITEM_ID, column_id: "LAST_CHECKED_COL", value: "{\"date\":\"YYYY-MM-DD\"}") { id } }
Change Status
Status labels: Working on it (1/orange), Done (2/green), Stuck (0/red)
mutation { change_column_value(board_id: BOARD_ID, item_id: ITEM_ID, column_id: "STATUS_COL", value: "{\"label\":\"Working on it\"}") { id } }
Helper Script
Run scripts/monday-api.sh for common operations:
export MONDAY_API_TOKEN="your_token"
export MONDAY_BOARD_ID="your_board_id"
# List items
bash scripts/monday-api.sh list
# Add update to item
bash scripts/monday-api.sh update <item_id> "<html body>"
# Set last checked
bash scripts/monday-api.sh checked <item_id>
Messaging Etiquette
- Never message people outside
{{config.messaging_hours.start}}–{{config.messaging_hours.end}}({{config.messaging_hours.timezone}}) unless it's genuinely urgent - If you need someone's input and it's outside hours, note it as a blocker and follow up when hours resume
{{config.owner_name}}can be messaged anytime if something is truly urgent
Critical: Read Before Working
Before doing ANY work on an accountability item, you MUST read the full Document/Details column on that item first. This contains important context, constraints, and explicit instructions about what to do and what NOT to do. Skipping this step has caused the agent to undo previous decisions. No exceptions.
Sub-Agent Context Rule
When spawning any sub-agent for work on an accountability item, you MUST include the full text from the item's Details/Doc column in the sub-agent's task prompt. This includes constraints, warnings, history, and explicit "DO NOT" instructions. The sub-agent has no memory of previous sessions — if it doesn't get the context in its prompt, it will make decisions that contradict prior decisions.