360 Secure SkillHub
360 安全技能中心

Nova Accountability

通过 Monday.com GraphQL API 读取和创建问责事项、子项与更新,维护状态、检查频率和最后检查时间;按计划执行工作会话,处理阻塞并在每日汇总中汇报进展,且仅由负责人将负责人指派事项标记完成。

novalystrix
novalystrix
热度 35.91
最近更新 2026-05-18 11:47:32
分类:协作依赖:代码执行 / 第三方 API / 读写文件应用场景:任务管理 / 工作流 / 报告撰写

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add nova-accountability
Metadata
name
accountability
description
Manage accountability items on a Monday.com board. Use when creating new accountability items, checking on existing ones, running work sessions, or when a cron job fires. Also use when the owner says "you're accountable for X" or asks about accountability status.
config
{"board_id":{"type":"string","required":true,"description":"Monday.com board ID (found in the board URL)"},"api_token_env":{"type":"string","default":"MONDAY_API_TOKEN","description":"Name of the environment variable holding the Monday.com API token"},"owner_name":{"type":"string","default":"Owner","description":"Human name for the owner/manager (used in completion rules and messaging)"},"agent_name":{"type":"string","default":"Agent","description":"Name of the AI agent running this skill"},"columns":{"type":"object","description":"Monday.com column IDs for this board","properties":{"status":{"type":"string","default":"color_mm0yr4nm"},"check_frequency":{"type":"string","default":"text_mm0y6b8r"},"last_checked":{"type":"string","default":"date_mm0y8p9j"},"details":{"type":"string","default":"long_text_mm0yce5e"},"assigned_by":{"type":"string","default":"color_mm10z99x"}}},"assigned_by_labels":{"type":"object","properties":{"owner":{"type":"string","default":"Owner"},"agent":{"type":"string","default":"Agent"}}},"messaging_hours":{"type":"object","properties":{"start":{"type":"string","default":"08:00"},"end":{"type":"string","default":"22:00"},"timezone":{"type":"string","default":"UTC"}}}}

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

  1. Read all active items from the Monday board (including sub-items)
  2. Assess each item: What's the current state? What changed since last check? What's blocking progress?
  3. Pick what to work on — prioritize items that are unblocked and can make real progress
  4. Break work into subtasks — create sub-items under the main accountability item on Monday
  5. 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

  1. 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.)
  2. 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:

  1. Reassess the whole project fresh — don't keep banging on the same approach
  2. If it's code: Read ALL of it. Understand the goal. Reflect on everything as if seeing it for the first time.
  3. Create new tasks as needed (sub-items on Monday)
  4. 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.
  5. 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

  1. Update "Last Checked" date on all reviewed items
  2. Update statuses: Move items to Blocked/Stuck if appropriate
  3. 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

  1. Create item on board {{config.board_id}} with create_item mutation
  2. Set Details column with: goal, definition of done, current state
  3. Set Check Frequency (e.g. "1h")
  4. Set Assigned By: {{config.assigned_by_labels.owner}} or {{config.assigned_by_labels.agent}} depending on who initiated it
  5. Write first update with current status
  6. 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.