Agent skill
agent-workloads
Compatibility alias for the canonical `workflow-rig` front door. Use when older prompts mention `agent-workloads` or when you need the legacy workload-planning guidance; for new work, load `workflow-rig` first.
Install this agent skill to your Project
npx add-skill https://github.com/joelhooks/joelclaw/tree/main/skills/agent-workloads
SKILL.md
Agent Workloads
This skill is now a compatibility alias.
For new work, load workflow-rig first. That is the canonical front door for workload planning, runtime mode selection, and workflow-rig dogfood.
Keep using this skill only when an older prompt already names agent-workloads or when you need the historical workload-planning guidance below.
If the work is really about external repo bridging or low-level runtime submission mechanics, then the restate-workflows skill may matter. For normal coding/repo work, this skill comes first.
What this skill is for
- turning Joel steering into an execution shape
- choosing between serial, parallel, and chained work
- deciding whether a task should stay inline or move to a durable/sandboxed path
- defining the handoff contract between workers
- keeping repo/coding work agent-first instead of runtime-first
Load Order
For serious workload design, also load:
cli-design— futurejoelclaw workloadsurface and JSON contractclawmail— reservations, ownership, and handoffssystem-architecture— real runtime topologydocker-sandbox— isolation/backends when execution mode matterscodex-prompting— if the workload will dispatch coding agents downstream
Canonical repo doc:
docs/workloads.md— source of truth for workload vocabulary, request/plan/handoff schema, and shipped-vs-planned boundaries
Core rule
Do not make the caller choose the substrate unless that tradeoff is the task.
And do not let an approved bounded local slice drift into planner/dispatch/queue theatre just because those surfaces exist.
The caller should describe intent. The planner should decide execution.
Bad:
- “Should I use Restate or queue or sandbox or a loop?”
Good:
- “This is a chained repo workload with sandboxed implementation, inline verification, and docs closeout.”
First pass: classify the workload
Ask or infer these inputs:
- workload kind (
repo.patch,repo.refactor,repo.docs,repo.review,research.spike,runtime.proof,cross-repo.integration) - objective
- acceptance criteria
- repo / file scope
- shape (
auto,serial,parallel,chained) - autonomy level
- proof posture (
none,dry-run,canary,soak,full) - risk posture (
reversible-only,sandbox-required,host-okay,deploy-allowed,human-signoff) - sequence constraints
- required artifacts
If those are fuzzy, shape the workload before dispatch.
Choose the shape
Serial
Use when steps depend on each other or risk is high.
Examples:
- fix → verify → commit
- canary → cleanup → truth update
- refactor → deploy check → docs
Parallel
Use when branches are independent and comparison helps.
Examples:
- spike multiple approaches
- inspect multiple codepaths in parallel
- gather evidence from several repos/surfaces before synthesis
Chained
Use when specialist stages add value and artifacts should flow forward.
Examples:
- implement → verify → docs
- research → planner → implementor → reviewer
- patch → canary → ADR truth
Default execution bias
- prefer inline for obvious low-risk local tasks
- prefer serial for risky or dependent work
- prefer parallel to reduce uncertainty, not to look clever
- prefer chained when artifacts and stage boundaries matter
- prefer sandboxed execution when repo mutation is risky or isolation is the point
Operator loop
Canonical posture for coding/repo work:
- operator gives intent + context
- agent returns a shaped workload plan
- agent asks approved?
- once approved, follow
guidance.executionLoop.approvedNextStepinstead of re-planning - while work is running, let the pi extension/TUI show honest status at real stage boundaries
- finish with a terse outcome summary: what changed, what was verified, what remains, and whether the next move is push / handoff / stop
For a bounded local slice (mode=inline, local repo, explicit paths, cheap verification), the honest default is:
- reserve scope
- execute inline
- verify
- commit
- ask whether to push
Not:
- dispatch ceremony
- queue/restate submission theatre
- adjacent ops churn the operator did not ask for
Handoff rule
Every downstream worker should receive:
- goal
- current state
- artifacts produced
- verification already done
- remaining gates
- reserved file scope
- known risks/caveats
- exact next action
If the next worker has to reconstruct everything from chat history, the workload was shaped badly.
Runtime boundary
This skill is the product layer.
Substrate skills remain implementation details:
restate-workflows— external repo/runtime bridge detailsdocker-sandbox— isolation/backendsagent-loop— durable coding loop mechanics
Use them only after the workload shape is clear.
Command surface
Shipped now:
joelclaw workload plan "<intent>" \
[--preset docs-truth|research-compare|refactor-handoff] \
[--repo /abs/path/or/owner/repo] \
[--paths a,b,c] \
[--paths-from status|head|recent:<n>] \
[--write-plan ~/.joelclaw/workloads/]
joelclaw workload dispatch <plan-artifact> \
[--stage stage-2] \
[--to BlueFox] \
[--from MaroonReef] \
[--send-mail] \
[--write-dispatch ~/.joelclaw/workloads/]
joelclaw workload run <plan-artifact> \
[--stage stage-2] \
[--tool pi|codex|claude] \
[--execution-mode auto|host|sandbox] \
[--sandbox-backend local|k8s] \
[--dry-run]
Use plan to get the canonical request + plan envelope, seed scope from real repo activity, and emit a reusable plan artifact. The CLI now also returns guidance so the agent gets:
recommendedExecution— execute inline now vs tighten scope first vs dispatch after health checkoperatorSummary— plain-spoken next-step recommendationadrCoverage— which ADRs likely govern the slice already; on fresh repo-local ADR clusters, reconcile nearby follow-on ADRs before declaring coverage completerecommendedSkills— includingjoelclaw skills ensure <name>for local repo skills ornpx skills add -y -g <source>for external onesexecutionExamples— serial / parallel / chained coding-task few-shot setup + execution examplesexecutionLoop— the honest plan → approve → execute/watch → summarize contract, including what to do immediately after approval
Use dispatch to turn a saved plan into a real handoff contract instead of retyping the whole bloody thing. The CLI now also returns dispatch guidance so it can say when dispatch is overkill for a bounded inline slice, when to health-check before handing off, when the recipient still needs to be made explicit, and what the approval/progress/closeout loop should look like.
Use run when the plan is approved and should enter the queue-backed runtime through one canonical bridge. It normalizes the saved plan into workload/requested → system/agent.requested instead of forcing the operator to hand-roll joelclaw queue emit payloads.
Still planned:
joelclaw workload status <id>
joelclaw workload explain <id>
joelclaw workload cancel <id>
Until the rest exists:
- run
joelclaw workload plan - read the returned
guidancebefore doing anything cute - present the plan, then ask approved?
- once approved, follow
guidance.executionLoop.approvedNextStep - if
recommendedExecution=execute-inline-now, reserve the scoped files and just do the work - if
recommendedExecution=tighten-scope-first, rerun the planner with explicit--pathsor--paths-from ... - if the approved plan should enter the queue-backed runtime, run
joelclaw workload runinstead of hand-rollingqueue emit - if another worker should take it first, save the plan and run
joelclaw workload dispatch - deliver the dispatch contract through clawmail when appropriate
- keep the handoff explicit and report the final outcome tersely
Reference
Read the detailed workload catalog here:
- references/common-workloads.md
Rules
- start with workload shape, not runtime mechanism
- use the canonical vocabulary from
docs/workloads.md; don't invent fresh field names unless the doc changes too - implementation intent beats docs follow-through:
refactor ... then update docsorextend ... then update READMEshould still plan as implementation work - preserve explicit
Acceptance:clauses from the prompt when they exist; don't throw them away and replace them with mush - mentioning a sandbox as the topic of research does not automatically mean the work must execute in a sandbox
deploy-allowedshould come from explicit release/deploy intent, not from nouns likepublished skills- supervised repo work mentioning
canaryorsoakdoes not automatically meandurable/restate - use
Goal:milestones andreflect/update plancues to keep chained plans from collapsing into generic sludge - if you are not inside the target repo and
workload planwarns about the cwd not being a git repo, rerun with--repo - use
--paths-from status|head|recent:<n>when scope should come from actual repo activity instead of hand-typed path lists - use
--write-planwhen another agent should be able to pick up the workload without reading raw chat - use
joelclaw workload dispatchwhen a saved plan should become a stage-specific handoff contract --write-dispatchis for reusable dispatch artifacts;--send-mailis for actually delivering the contract through clawmail- never hand a coding agent substrate docs as the only answer to “how should I run this work?”
- serial / parallel / chained are first-class planning choices, not afterthoughts
- use
clawmailfor any delegated or shared-file workload - keep outputs machine-usable and explicit
- if the best execution path is unclear, say so and produce a plan rather than guessing
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
skill-review
Audit and maintain the joelclaw skill inventory. Use when checking skill health, fixing broken symlinks, finding stale skills, or running the skill garden. Triggers: 'skill audit', 'check skills', 'stale skills', 'skill health', 'skill garden', 'broken skill', 'skill review', 'fix skills', 'garden skills', or any task involving skill inventory maintenance.
cli-design
Design and build agent-first CLIs with HATEOAS JSON responses, context-protecting output, and self-documenting command trees. Use when creating new CLI tools, adding commands to existing CLIs (joelclaw, slog), or reviewing CLI design for agent-friendliness. Triggers on 'build a CLI', 'add a command', 'CLI design', 'agent-friendly output', or any task involving command-line tool creation.
daily-summary
Generate a daily system activity summary across all joelclaw subsystems. Triggers on 'daily summary', 'what happened today', 'system report', 'today's tally', 'activity summary', 'what did we do', 'daily report'.
inngest-durable-functions
Create and configure Inngest durable functions. Covers triggers (events, cron, invoke), step execution and memoization, idempotency, cancellation, error handling, retries, logging, and observability.
recall
Fan-out search across all memory sources when context is unclear or vaguely referenced. Triggers on: 'from earlier', 'remember when', 'what we discussed', 'that thing with', 'the conversation about', 'did we ever', 'what happened with', 'you mentioned', 'we talked about', 'earlier today', 'last session', 'the other day', or any vague reference to past context that needs resolution before the agent can act.
inngest-local
Set up self-hosted Inngest on macOS as a durable background task manager for AI agents. Interactive Q&A to match intent — from Docker one-liner to full k8s deployment with persistent state. Use when: 'set up inngest', 'background tasks', 'durable workflows', 'self-host inngest', 'event-driven functions', 'cron jobs', or any request for a local workflow engine.
Didn't find tool you were looking for?