agents-pm
Cross-device project management for a team of agents, backed by the shared ClickUp
Agents space. One pipeline, one source of truth, visible to everyone. This skill
defines the conventions; the use-clickup skill (domain, provides clickup-api) is the
transport. Version 2 (2026-08-15): rebuilt from scratch after a full API audit — the
space, statuses, and tags are new; the Owner field, identity tags, and process tags are
gone (see references/schema.md).
WHEN (self-trigger)
- Session start / after context compaction — read the space before asserting anything
about the team's work.
- Before starting ANY non-trivial work — check for an existing task, scope it if missing.
- Claiming, updating, blocking, reviewing, or closing a tracked task.
- Asked "what is the team working on", "who owns X", "is anything blocked",
"what is running on device X".
- Suspicion of duplicate or out-of-scope work.
PREREQUISITE
Load the use-clickup skill before running any command. All API calls go through its
client and scripts (audited 2026-08-15 — see its references for verified behavior).
STEP 0 — READ THE SPACE (session start, after compaction)
Query the General list before asserting anything about team state. Never answer from
memory. Group results:
- Open tasks by status —
backlog (queued), to do (released, awaiting claim),
in progress (claimed — who?), blocked (stuck — read the blocker comment),
review (awaiting Andrés's accept — surface first).
- Work-type tags (research/build/analysis/…) — the lanes.
- The "needs Andrés" queue is simply the status filter
review + blocked.
STEP 1 — SCOPE BEFORE WORK (scoping gate)
No non-trivial work starts unless it already exists as a task.
- Search the space for an existing task (team query
GET /team/{id}/task + client-side
keyword match — global text search does not exist).
- Found + unclaimed → proceed to STEP 2.
- Found + claimed by another hand (claim comment present) → do NOT start; flag overlap.
- Not found → create the task in
backlog FIRST, self-contained description, with its
work-type tags, then claim it.
STEP 2 — CLAIM
- Status →
in progress.
- Post the claim comment:
Claimed by <hand> — <what I'll deliver>.
- Re-read the task; if another hand's claim comment appeared, release (back to
to do).
- Multi-step ticket? Add subtasks — they're the progress bar (Andrés's ask).
STEP 3 — UPDATE (progress)
On every meaningful milestone: refresh the description (self-contained), append to
## Evidence Log, add an evidence comment. Move status only when state actually changes.
STEP 4 — BLOCK
- Status →
blocked.
- Comment the blocker precisely (what, why, who/what unblocks it).
- If Andrés must act, he'll see it via the
blocked status — no tag needed.
STEP 5 — REVIEW
Done → status → review + fill ## Proof of work. Only Andrés moves review →
complete (the accept gate; never skipped).
STEP 6 — COMPLETE
Andrés accepts → status complete (closes). Closed tasks are the archive; query with
include_closed=true. Note: statuses[]=complete returns closed tasks even without
the flag.
STATUS PIPELINE (exact lowercase — ClickUp normalizes to lowercase on write)
backlog → to do → in progress → blocked → review → complete
| Status |
Meaning |
Set by |
backlog |
idea dump, not started |
creator (Andrés / phone-pi) |
to do |
RELEASED — Andrés's GO; awaiting claim |
only Andrés |
in progress |
being worked; claimed via comment |
the worker |
blocked |
cannot proceed; blocker in comment |
the worker |
review |
awaiting Andrés's accept |
the worker |
complete |
accepted; closes the task |
only Andrés |
Statuses are the ONLY state machine. Never encode progress in a list.
TAGS — WORK-TYPE FACETS (mix-and-match, no process tags)
| Tag |
Meaning |
Example |
research |
explore, discover, learn |
"is X worth doing?" |
build |
create something |
code, projects, artifacts |
analysis |
evaluate, compare, data work |
model reviews, cost analysis |
report |
a document to be read |
papers, reports |
university |
university work |
courses, Moodle, papers |
business |
professional lane |
job search, compensation |
personal |
life — wife, home, errands |
"something for my wife" |
infrastructure |
devices, environment, tooling |
phone/tablet upkeep |
automation |
bots, syncs, schedulers |
daemons, webhook/poller |
design |
UI/UX, architecture, visuals |
prototypes, diagrams |
writing |
language craft |
copy, editing, newsletters |
finance |
money work |
transactions, budgets |
content |
produced media |
posts, videos, images |
learning |
skill-building, study |
teach sessions, courses |
Rules: full words only (never uni/infra — Andrés's directive); any combination,
zero to a few per task; tags are created at space level and registered here. No
waiting-on-andres (review/blocked cover it), no future (backlog covers it), no skill
(research covers it), no identity tags (the claim comment carries identity).
LISTS
- General — default list; all agent-tracked work without a dedicated home.
ID in
references/schema.md.
- A list exists ONLY to enclose a big named project (~5+ related tasks). New lists are
registered in
references/schema.md.
CUSTOM FIELDS — NONE
Custom fields are blocked on the Free plan (FIELD_605) and the design deliberately uses
zero. Identity = the claim comment. There is no Owner field.
DOCS — BANNED
ClickUp Docs are permanent by design (undeletable, even in the UI) — core directive
(Andrés): never create Docs. Long-form artifacts are local files; tasks link paths and
stay fully self-contained (device-death safe).
WHEN TO STOP
- Task registered, claimed, updated, blocked, or closed, each with evidence.
- Space state re-read before any state assertion.
- No work started that had no task.
BOUNDARIES
MUST:
- Statuses encode progress; lists enclose projects. Never invert.
- Create the task before starting non-trivial work (scoping gate).
- Claim before working: status
in progress + claim comment.
- Tag every task with its work-type facets at creation.
- Keep descriptions self-contained and current (Evidence Log).
- Comment evidence at every transition.
- Re-read the space at session start and before each new work item.
- Use
include_closed=true when querying.
- Match status strings exactly (lowercase).
- Respect the shared rate limit (~100/min per key across devices).
MUST NOT:
- Put secrets in task content (shared space).
- Duplicate existing work — search first.
- Cache task state across sessions; the space is the sole source of truth.
- Start work claimed by another hand without resolving the overlap.
- Create ClickUp Docs (banned).
- Set
to do (Andrés's GO column) — only Andrés releases work.
REFERENCES
| File |
Covers |
references/schema.md |
Canonical Agents space schema: IDs, statuses, tags, description contract |
references/workflows.md |
Exact commands per step, agent identity, pitfalls |
1---2name: agents-pm3description: Agent project management over the shared ClickUp **Agents** space: keep every agent's work visible, scoped, claimed, and non-overlapping across devices and harnesses. Statuses drive progress; lists enclose big named projects or goals. Use when starting a session or after context compaction, before picking up any non-trivial work, to check what other agents are doing, to register new work before it starts (nothing is built outside scope), to claim, update, block, review, or close a tracked task, or when asked about the state of the team's work.4---56# agents-pm78Cross-device project management for a team of agents, backed by the shared ClickUp9**Agents** space. One pipeline, one source of truth, visible to everyone. This skill10defines the conventions; the `use-clickup` skill (domain, provides `clickup-api`) is the11transport. **Version 2 (2026-08-15): rebuilt from scratch after a full API audit** — the12space, statuses, and tags are new; the Owner field, identity tags, and process tags are13gone (see `references/schema.md`).1415## WHEN (self-trigger)1617- Session start / after context compaction — read the space before asserting anything18 about the team's work.19- Before starting ANY non-trivial work — check for an existing task, scope it if missing.20- Claiming, updating, blocking, reviewing, or closing a tracked task.21- Asked "what is the team working on", "who owns X", "is anything blocked",22 "what is running on device X".23- Suspicion of duplicate or out-of-scope work.2425## PREREQUISITE2627Load the `use-clickup` skill before running any command. All API calls go through its28client and scripts (audited 2026-08-15 — see its references for verified behavior).2930## STEP 0 — READ THE SPACE (session start, after compaction)3132Query the General list before asserting anything about team state. Never answer from33memory. Group results:34351. Open tasks by status — `backlog` (queued), `to do` (released, awaiting claim),36 `in progress` (claimed — who?), `blocked` (stuck — read the blocker comment),37 `review` (awaiting Andrés's accept — surface first).382. Work-type tags (research/build/analysis/…) — the lanes.393. The "needs Andrés" queue is simply the status filter `review` + `blocked`.4041## STEP 1 — SCOPE BEFORE WORK (scoping gate)4243No non-trivial work starts unless it already exists as a task.44451. Search the space for an existing task (team query `GET /team/{id}/task` + client-side46 keyword match — **global text search does not exist**).472. Found + unclaimed → proceed to STEP 2.483. Found + claimed by another hand (claim comment present) → do NOT start; flag overlap.494. Not found → create the task in `backlog` FIRST, self-contained description, with its50 work-type tags, then claim it.5152## STEP 2 — CLAIM53541. Status → `in progress`.552. Post the claim comment: `Claimed by <hand> — <what I'll deliver>`.563. Re-read the task; if another hand's claim comment appeared, release (back to `to do`).574. Multi-step ticket? Add **subtasks** — they're the progress bar (Andrés's ask).5859## STEP 3 — UPDATE (progress)6061On every meaningful milestone: refresh the description (self-contained), append to62`## Evidence Log`, add an evidence comment. Move status only when state actually changes.6364## STEP 4 — BLOCK65661. Status → `blocked`.672. Comment the blocker precisely (what, why, who/what unblocks it).683. If Andrés must act, he'll see it via the `blocked` status — no tag needed.6970## STEP 5 — REVIEW7172Done → status → `review` + fill `## Proof of work`. **Only Andrés moves `review` →73`complete`** (the accept gate; never skipped).7475## STEP 6 — COMPLETE7677Andrés accepts → status `complete` (closes). Closed tasks are the archive; query with78`include_closed=true`. Note: `statuses[]=complete` returns closed tasks even without79the flag.8081## STATUS PIPELINE (exact lowercase — ClickUp normalizes to lowercase on write)8283`backlog` → `to do` → `in progress` → `blocked` → `review` → `complete`8485| Status | Meaning | Set by |86|---|---|---|87| `backlog` | idea dump, not started | creator (Andrés / phone-pi) |88| `to do` | RELEASED — Andrés's GO; awaiting claim | **only Andrés** |89| `in progress` | being worked; claimed via comment | the worker |90| `blocked` | cannot proceed; blocker in comment | the worker |91| `review` | awaiting Andrés's accept | the worker |92| `complete` | accepted; closes the task | **only Andrés** |9394Statuses are the ONLY state machine. Never encode progress in a list.9596## TAGS — WORK-TYPE FACETS (mix-and-match, no process tags)9798| Tag | Meaning | Example |99|---|---|---|100| `research` | explore, discover, learn | "is X worth doing?" |101| `build` | create something | code, projects, artifacts |102| `analysis` | evaluate, compare, data work | model reviews, cost analysis |103| `report` | a document to be read | papers, reports |104| `university` | university work | courses, Moodle, papers |105| `business` | professional lane | job search, compensation |106| `personal` | life — wife, home, errands | "something for my wife" |107| `infrastructure` | devices, environment, tooling | phone/tablet upkeep |108| `automation` | bots, syncs, schedulers | daemons, webhook/poller |109| `design` | UI/UX, architecture, visuals | prototypes, diagrams |110| `writing` | language craft | copy, editing, newsletters |111| `finance` | money work | transactions, budgets |112| `content` | produced media | posts, videos, images |113| `learning` | skill-building, study | teach sessions, courses |114115Rules: **full words only** (never `uni`/`infra` — Andrés's directive); any combination,116zero to a few per task; tags are created at space level and registered here. No117`waiting-on-andres` (review/blocked cover it), no `future` (backlog covers it), no `skill`118(research covers it), no identity tags (the claim comment carries identity).119120## LISTS121122- **General** — default list; all agent-tracked work without a dedicated home.123 ID in `references/schema.md`.124- A list exists ONLY to enclose a big named project (~5+ related tasks). New lists are125 registered in `references/schema.md`.126127## CUSTOM FIELDS — NONE128129Custom fields are blocked on the Free plan (`FIELD_605`) and the design deliberately uses130zero. Identity = the claim comment. There is no Owner field.131132## DOCS — BANNED133134ClickUp Docs are permanent by design (undeletable, even in the UI) — **core directive135(Andrés): never create Docs.** Long-form artifacts are local files; tasks link paths and136stay fully self-contained (device-death safe).137138## WHEN TO STOP139140- Task registered, claimed, updated, blocked, or closed, each with evidence.141- Space state re-read before any state assertion.142- No work started that had no task.143144## BOUNDARIES145146MUST:147148- Statuses encode progress; lists enclose projects. Never invert.149- Create the task before starting non-trivial work (scoping gate).150- Claim before working: status `in progress` + claim comment.151- Tag every task with its work-type facets at creation.152- Keep descriptions self-contained and current (Evidence Log).153- Comment evidence at every transition.154- Re-read the space at session start and before each new work item.155- Use `include_closed=true` when querying.156- Match status strings exactly (lowercase).157- Respect the shared rate limit (~100/min per key across devices).158159MUST NOT:160161- Put secrets in task content (shared space).162- Duplicate existing work — search first.163- Cache task state across sessions; the space is the sole source of truth.164- Start work claimed by another hand without resolving the overlap.165- Create ClickUp Docs (banned).166- Set `to do` (Andrés's GO column) — only Andrés releases work.167168## REFERENCES169170| File | Covers |171|---|---|172| `references/schema.md` | Canonical Agents space schema: IDs, statuses, tags, description contract |173| `references/workflows.md` | Exact commands per step, agent identity, pitfalls |