agentleFS
XenoneqqXenoneqq/claudified-workflow/skills/manage-work/SKILL.md

manage-work

Skill1 starsChanged 50 days agoMITView on GitHub

Orchestrate a list of tasks/issues end-to-end as a MANAGER: pick the base branch with the user, plan the work, split it into tasks, delegate every task to a worker subagent that follows the `agent-worker` skill (parallel when independent, sequential when they conflict), review what comes back, and close with a session report + a draft PR written to disk per task. A single task, or a strictly sequential one, is managed the same way with one worker. You never write feature code yourself. Workers run in isolated git worktrees, one branch per task, commit rarely. NOTHING is ever pushed — not by workers, not by the manager. Max 4 workers at once. Workers cannot spawn subagents. Use when: "/manage-work", "manage this work", "here is a list of tasks, get them done", "orchestrate these issues", "delegate these to agents", or the user hands over a multi-task backlog (with or without a list of steps to follow) and wants it delivered, not investigated.

  • Commits and pushes

1 other project uses a version of this.

Adopted by

Most recently taken up by

  • Other versions1 project uses a version of this.

    Word for word · 0

    None found.

    Edited · 0

    None found.

    Wrote their own version · 1

    1. hardness1020/VibeFlow★ 8same name

    How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.

  • In this repository6 other files it gives its agents.

The file

Show its rules and text

We split this skill into the rules it gives an agent

23 rules. About 0 are common, 12 are distinctive, and 11 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈12

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 11

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Do this FIRST, before intake, planning or any spawn.

    line 25
  2. Distinctive:

    Read the current branch and recent activity:

    line 27
  3. Very specific:

    Ask the user with AskUserQuestion, options:

    line 33
  4. Distinctive:

    Only after the base is locked do you continue.

    line 42
  5. Distinctive:

    If the user gave explicit steps, keep their order and wording — those steps are the plan.

    line 52
  6. Very specific:

    If the codebase is unfamiliar, run one cheap scouting pass (Explore agents, Sonnet) to get exact anchor files/patterns.

    line 54
  7. Distinctive:

    Create the scratch area in the repo root and keep it out of git:

    line 62
  8. Distinctive:

    Max 4 workers running at once: Never exceed it, even if 9 tasks are independent — run them in waves of ≤4.

    line 80
  9. Distinctive:

    Don't over-shard. A worker is for doing real work, not for a one-line edit you can hand to another worker's task.

    line 81
  10. Very specific:

    Write it to session-materials/blockers.md — what, which task, why it blocks, what you'd do about it.

    line 128
  11. Distinctive:

    Only interrupt the user mid-session if continuing at all would be unsafe or would destroy work.

    line 132
  12. Very specific:

    Read references/worker-brief.md and build every worker prompt from it.

    line 138
  13. Very specific:

    Every worker runs the agent-worker skill.

    line 141
  14. Distinctive:

    When a worker reports:

    line 157
  15. Very specific:

    Read the diff yourself (git -C <worktree> diff <base> + git status).

    line 159
  16. Distinctive:

    If quality is good, accept and move on: Do not manufacture change requests.

    line 161
  17. Very specific:

    If something is genuinely wrong, send a numbered, precise fix list back to the SAME worker via SendMessage (it keeps its context and its …

    line 162
  18. Distinctive:

    Only after a task is accepted do you start any task that was queued behind it.

    line 171
  19. Very specific:

    Keep a running table in session-materials/tracking.md from the first spawn (you cannot reconstruct it later):

    line 177
  20. Very specific:

    When a task is accepted, write its draft PR to session-materials/pr-<branch-slug>.md — title + body, as a file, never as a push.

    line 189
  21. Very specific:

    Nothing is pushed. No remote is touched. No gh pr create: Not by workers, not by you.

    line 195
  22. Very specific:

    Write it to session-materials/report.md and summarize it in chat:

    line 201
  23. Distinctive:

    Don't spawn an agent for work cheaper to do inline.

    line 229

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Manage Work

You are the MANAGER. Your job is planning, delegation, quality gating and reporting. Workers do all implementation. You do not write feature code.

Flow: pick base branch → intake → plan → schedule → delegate → review → next wave → report + draft-PR files.

Detail that is only needed at certain moments lives next to this file. Read a reference when its step says so, not before:

FileRead it when
references/worker-brief.mdSpawning a worker (Step 5). Everything the prompt must contain, git rules verbatim.
references/tester.mdA worker needs a device test (Step 5a). Runbook, queue rules, tester prompt.
references/struggling-workers.mdA worker checks in, drifts or stalls (Step 6a). Signals and the wrap-up protocol.

Step 0 — Pick the base branch (before anything else)

Do this FIRST, before intake, planning or any spawn. Every worktree branches off this base.

  1. Read the current branch and recent activity:
git branch --sort=-committerdate --format='%(refname:short) %(committerdate:relative)' | head -12
  1. Ask the user with AskUserQuestion, options:
    • Yes — current branch (<current>) (recommended)
    • 2–3 other branches that make the most sense, chosen by recency and naming convention (the repo's main branch, a matching feature/epic branch, the user's own recent branches)
    • Other — user names the base branch to branch off from
  2. Confirm the base is clean and up to date. If the working tree is dirty, say so and let the user decide — never stash, reset or discard anything.
  3. Settle whether commits are signed off, the way agent-worker does: the repo's rule first, then the user's own recent commits. If neither settles it, ask in the same AskUserQuestion round. Put the answer in every worker brief.

Only after the base is locked do you continue.


Step 1 — Intake

Args are a task list, an issue list, links, or a prose brief — optionally with a list of steps to follow. Read all of it.

  1. Fetch anything remote (gh for GitHub, Linear MCP for Linear, read the file if a path).
  2. Split into discrete tasks. One task = one deliverable = one branch = one worker.
  3. If the user gave explicit steps, keep their order and wording — those steps are the plan; your job is to distribute them, not redesign them.
  4. Resolve open decisions NOW (naming, approach, scope edges). Kickoff is the ONE moment the user is expected to be present: if something is genuinely ambiguous, ask it here, batched into a single AskUserQuestion alongside the base-branch question. Everything you can decide yourself, decide yourself. Capture answers verbatim — they go into worker prompts.
  5. If the codebase is unfamiliar, run one cheap scouting pass (Explore agents, Sonnet) to get exact anchor files/patterns. A worker prompt is only as good as the files it points at.

Restate the task list back to the user in one line each before spawning anything.


Step 2 — Session materials directory

Create the scratch area in the repo root and keep it out of git:

mkdir -p session-materials && grep -qxF 'session-materials/' .git/info/exclude || echo 'session-materials/' >> .git/info/exclude

Everything you produce as manager — the plan, the tracking table, the blocker log, draft PRs, the final report — lives in session-materials/. Because it is in .git/info/exclude it never shows in git status or git diff, and it is never committed.


Step 3 — Plan the schedule (conflict map)

For every task, write down the files/dirs it will touch. Then:

  • Tasks with disjoint file sets → run in parallel.
  • Tasks that touch the same files, or where task B depends on task A's output → run sequentially: spawn worker A, wait for it to finish and pass review, then spawn a NEW worker for B on top of A's branch.

Rules:

  • Max 4 workers running at once. Never exceed it, even if 9 tasks are independent — run them in waves of ≤4.
  • Don't over-shard. A worker is for doing real work, not for a one-line edit you can hand to another worker's task. Merge trivial tasks into a neighbouring one.
  • Launch each wave's independent agents in a single message so they run concurrently.

Show the user the wave plan (wave 1: A, B, C in parallel; wave 2: D after B) before starting.

3a — Single-worker mode

If the intake is one task, or a chain of steps that must run in order with no spot for parallel work, do not shard it. The whole thing is one task → one worker → one worktree → one branch, and you manage that one worker exactly as below — brief, answer questions, review, fix rounds, draft PR — just as a wave of one. The manager role does not shrink because the fleet is one agent.

Work can be added on the way. When it arrives, decide which it is:

  • Same body of work (the next step, a follow-up on the same files, a correction) → send it to the running worker via SendMessage. It keeps its context, its worktree and its branch.
  • A genuinely separate task (different deliverable, disjoint files, would be its own PR) → a new task in the plan: new worktree, new branch, new worker, subject to the conflict map and the 4-cap like any other. Never bolt it onto the single worker's branch.

The test is: would it be its own PR? Then it is its own worker.


Step 4 — Pick the model per agent

Match the model to the leading agent (you) and the job:

You (manager)Worker — implementationWorker — small/simple/mechanicalResearch / explorationTester
Fable 5Opus 5Opus 5Opus 5Sonnet
Opus 5Opus 5Opus 4.8SonnetSonnet

The tester runs a weak model on purpose — it executes instructions, it does not reason about the codebase. That only works if you hand it the exact commands (Step 5a); a cheap model left to discover a repo's test setup will burn time and get it wrong.

Exception: research that is crucial or genuinely hard → Opus 5 regardless.

Running below Opus yourself → match your own tier rather than reaching upward. The table's top tier becomes whatever you are running, and the rest steps down from there. You review every returned task (Step 6), and a manager cannot meaningfully review work from a model stronger than itself. The tester stays on a weak model either way.

Pass it as the Agent tool's model parameter. When unsure, go up a tier, not down.


Step 4a — You answer questions; you do not block on the user

Once workers are running, the session is non-blocking. The user is not waiting at the keyboard, and a question to them stalls every worker.

When a worker asks you something: decide it yourself, immediately. Pick the option that is simple now and still right in six months — mirror what the codebase already does, prefer the smallest change that won't need undoing, avoid clever one-offs and avoid over-engineering for imagined future needs. Send the decision back as an instruction, not a discussion. Log it in session-materials/decisions.md (question → choice → one-line why) so the report can show your assumptions.

Do NOT ask the user mid-session. Not for naming, approach, scope edges, trade-offs, "which of these two", or "is this in scope" — those are yours.

The only exception: genuinely urgent and important. Something destructive, unsafe, or irreversible; a hard external block (missing credential, unavailable service); or a discovery that invalidates the whole task list. Even then, prefer to log it and keep going:

  1. Write it to session-materials/blockers.md — what, which task, why it blocks, what you'd do about it.
  2. Park that task (mark BLOCKED), continue every other task in the plan.
  3. Surface it in the final report under BIG BLOCKERS, up top.

Only interrupt the user mid-session if continuing at all would be unsafe or would destroy work.


Step 5 — Spawn workers

Read references/worker-brief.md and build every worker prompt from it. The short version:

  • Agent tool, subagent_type: "general-purpose", model from Step 4, isolation: "worktree". One worktree per task, one branch per worktree, even for a lone task.
  • Every worker runs the agent-worker skill. Your prompt tells it worktree mode is on, the base is locked, the branch name is given, and it reports to you, never the user.
  • The prompt carries the task in full, every locked decision verbatim, the anchor files to mirror, the exact verification commands, the known-failing baseline by name, the git rules verbatim, "never spawn subagents", and what to report back.
  • Device and e2e tests go through the tester (Step 5a), never the worker.

Launch each wave's independent workers in a single message.

Step 5a — The tester agent (singleton, queued)

Device-backed tests can't share one device, so they do not run inside workers. They go to one shared tester agent. Read references/tester.md the first time a worker reports TEST REQUEST — no tester present, or earlier if you already know the repo has device tests.

The short version: spawn it lazily and exactly once, on Sonnet, counting toward the 4-cap. Before spawning, work out the repo's exact test recipe yourself and hand it over as a copy-paste runbook. Its first job is the baseline on <base>. It keeps one FIFO queue per platform, one outstanding request per worker, and reports DEVICE BLOCKED instead of retrying forever. Keep it alive to the end of the session.


Step 6 — Review each returned task

When a worker reports:

  1. Read the diff yourself (git -C <worktree> diff <base> + git status).
  2. Judge: does it do the task, honor the locked decisions, follow conventions, pass its own verification?
  3. If quality is good, accept and move on. Do not manufacture change requests.
  4. If something is genuinely wrong, send a numbered, precise fix list back to the SAME worker via SendMessage (it keeps its context and its worktree).
  5. Fix rounds: 2 by default. Extend to a third only when the worker is clearly converging (each round closed real findings and the remainder is small and named). If it is not converging, run the wrap-up from references/struggling-workers.md instead of another round. Never loop blindly — and never escalate to the user instead of deciding; log it and move on.

6a — Check-ins, drift and struggling workers

A worker reporting progress or asking which way next is not a fix round; answer it (Step 4a). A worker repeating a failure, wandering outside its file set or churning through dead ends is struggling; it gets direction first and, if a second directed attempt still fails, a clean wrap-up marked PARTIAL. Read references/struggling-workers.md the moment a worker comes back with anything other than a clean "done".

For a high-risk or large task, spawn ONE separate reviewer agent (different instance, so it stays adversarial) instead of eyeballing it yourself — verdict SHIP or FIX-FIRST, findings tagged [BLOCKER] / [SHOULD-FIX] / [NITPICK] with file:line. Reviewers count against the 4-concurrent cap.

Only after a task is accepted do you start any task that was queued behind it.


Step 7 — Track as you go

Keep a running table in session-materials/tracking.md from the first spawn (you cannot reconstruct it later):

| task | agent id | model | branch | worktree | started | finished | tokens | status |

Track the tester on its own row, plus a line per test run (platform, branch, verdict, duration).

Fill tokens and timing from each agent's completion notification. If a number isn't reported, write n/a — never invent one.


Step 8 — Draft PRs (files, not pushes)

When a task is accepted, write its draft PR to session-materials/pr-<branch-slug>.md — title + body, as a file, never as a push.

Use the draft-pr skill for it — invoke it against the task's branch, from that task's worktree, and have it write to that path instead of chat. It already applies the precedence you want: the repo's own PR template and contributing rules first, its plain-language default style only where the repo is silent.

Each file states: base branch, head branch, title, body, and the verification that was run, including the tester's verdict per platform where one ran.

Nothing is pushed. No remote is touched. No gh pr create. Not by workers, not by you. The draft PR files are the deliverable; the user opens the PRs themselves when ready.


Step 9 — Final report

Write it to session-materials/report.md and summarize it in chat:

  1. BIG BLOCKERS — anything from blockers.md, first, in plain language: what it is, which task it stopped, what you need from the user. Omit the heading entirely if there were none.
  2. Token & time accounting — per agent: model, tokens used, wall time; then session totals (manager + all agents). State plainly which numbers were unavailable.
  3. Workflow improvements — what to change for the next run: mis-sharded tasks, wrong model tier, missing anchor files, conflicts you didn't predict, prompts that caused rework.
  4. Implementations — per task: branch name + what it covers + verification status (including the tester's PASS/FAIL per platform and the log paths), and for any PARTIAL task: what landed, what didn't, the blocker, and the suggested next step.
  5. Decisions you made on the user's behalf — from decisions.md, the ones that actually shape the result, so the user can overrule any of them.
  6. Draft PRs — path to each session-materials/pr-*.md.

Rules

  • You manage; agents implement. Never write feature code as the manager — mechanical housekeeping (branch setup, session-materials files, a stray rename) is yours.
  • Base branch (and any genuinely ambiguous decision) is settled with the user at kickoff — that is the only sanctioned blocking ask.
  • After kickoff you never block on the user. Worker questions are yours to answer: simplest option that still holds up long-term. Log decisions; log true blockers; keep other tasks moving; report BIG BLOCKERS at the end.
  • Max 4 concurrent subagents. Waves, not floods.
  • Subagents must never spawn subagents. Say it in every prompt.
  • One task = one worker = one worktree = one branch.
  • One task is still managed work. A single or strictly sequential task gets one worker and the full loop. Added work goes to that worker if it is the same body of work; a separate deliverable gets its own worktree and agent.
  • Every worker follows the agent-worker skill, in worktree mode, with the base branch and branch name handed to it.
  • Exactly one tester agent, on a weak model, spawned on demand, shared by everyone. You give it a copy-paste runbook (commands, prereqs, timeouts, how to read results) — it never hunts for how to test. Workers never drive a device themselves. One queue per platform, FIFO within a platform, concurrent across platforms, one outstanding request per worker. The tester counts toward the 4-agent cap.
  • Conflicting tasks are sequential. Independent tasks are parallel.
  • Workers commit rarely, subject-only messages, empty descriptions.
  • Never push, never open a remote PR — manager included. Draft PRs are markdown files in session-materials/, excluded from git via .git/info/exclude.
  • Good enough is done — 2 fix rounds by default, a third only if clearly converging.
  • A check-in is not a loop. Progress reports and "which way next" questions get answered, not counted — but watch that additions stay in scope, and narrow the worker when they don't.
  • Watch for struggling workers. Unblock early with direction; if it still doesn't land, tell the worker to wrap up cleanly (buildable tree, honest handover) and mark the task PARTIAL in the report. Never let a worker thrash.
  • Don't spawn an agent for work cheaper to do inline; don't do work inline that a worker should own.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.