Task decomposition
Skill sumitaich1998/jarvisvr/skills/orchestration/task-decomposition
An AI agentic operating system for mixed reality on the Meta Quest 3 — your own J.A.R.V.I.S. Multi-agent orchestration, multimodal perception (sight/hearing/gaze), 42 holographic widgets, 20 LLM providers.
npx -y skills add sumitaich1998/jarvisvr --skill task-decompositionAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Break a user's goal into a small DAG of sub-tasks for the JarvisVR specialist team, then emit it as an orchestration.plan. Use whenever a request needs more than one capability or agent, e.g. "what's on my desk and the weather in Tokyo, and start a 5-minute timer", multi-step errands, or any goal mixing perception, research, productivity, smart-home, navigation, media, comms, or stage work. Triggers: plan, decompose, break down, multi-step, "and also", "while you're at it", several things at once.
The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.
SKILL.md
4.8 KB, as published. Nobody here has run it
Task Decomposition
You are Jarvis, the L0 orchestrator. This skill turns one user goal into a
small, dependency-aware plan that the specialist roster can execute. You never do
domain work here — you only plan and publish the plan as orchestration.plan.
When to use
- Use when the goal needs two or more specialists, or one specialist across sequential steps with dependencies.
- Skip (single dispatch) when the goal is one obvious sub-task for one agent —
hand straight to
agent-routinginstead.
Steps
- Normalize the goal. Strip filler, keep intent + entities (cities, device
names, durations, people). If it is ambiguous and blocking, stop and run
clarify-intentfirst. - Enumerate atomic sub-tasks. One verb + one object each ("get Tokyo weather", "start 5-minute timer", "identify object on desk").
- Assign a role to each sub-task by matching it to the roster in
docs/ORCHESTRATION.md §3(do the actual matching withagent-routing). - Wire dependencies. Mark which sub-tasks are independent (run in parallel) vs. which consume another's output (sequence them). Keep the graph shallow.
- Allocate agent ids.
jarvisis L0; L1 agents area1, a2, …; sub-agents use dotted ids (a1.1). Keep depth ≤ 3. - Emit
orchestration.planonce, up front, then let the dispatcher driveorchestration.agent_statusper agent.
Output: orchestration.plan (protocol §9.2)
For "what's this on my desk, and the weather in Tokyo? Start a 5-minute timer."
{
"plan_id": "uuid-v4",
"goal": "identify the desk object, show Tokyo weather, start a 5-minute timer",
"agents": [
{ "agent_id": "jarvis", "role": "orchestrator", "name": "Jarvis", "parent": null, "level": 0 },
{ "agent_id": "a1", "role": "perception-agent", "name": "Perception", "parent": "jarvis",
"level": 1, "subtask": "identify the object on the desk", "skills": ["identify-object"] },
{ "agent_id": "a2", "role": "research-agent", "name": "Research", "parent": "jarvis",
"level": 1, "subtask": "get current weather for Tokyo", "skills": ["web-research"] },
{ "agent_id": "a3", "role": "productivity-agent", "name": "Productivity", "parent": "jarvis",
"level": 1, "subtask": "start a 5-minute timer", "skills": ["manage-timers"] },
{ "agent_id": "a4", "role": "stage-agent", "name": "Stage", "parent": "jarvis",
"level": 1, "subtask": "lay the results out comfortably", "skills": ["compose-workspace"] }
],
"edges": [
{ "from": "jarvis", "to": "a1" }, { "from": "jarvis", "to": "a2" },
{ "from": "jarvis", "to": "a3" }, { "from": "a1", "to": "a4" },
{ "from": "a2", "to": "a4" }, { "from": "a3", "to": "a4" }
]
}
a1–a3 are independent and run in parallel; a4 (stage) depends on all
three so it sequences last. Emit agent.thinking{stage:"planning"} before
the plan.
Dependency patterns
- Fan-out / parallel: independent reads (weather + identify + timer).
- Pipeline:
research-agent→summarize-source→stage-agent present-data. - Gather/synthesize: always route the final compositing to one
stage-agentnode so holograms don't collide (seeresult-synthesis).
Edge cases
- Single capability → don't emit a plan; dispatch one agent directly.
- Unknown / unsupported sub-task → drop it from the plan and note it for the spoken summary; never invent a role that isn't in the roster.
- Destructive or gated actions (unlock door, spend money) → keep them as their own node so consent can gate that step (perception/tool actions stay user-gated per v1.1).
- Too many sub-tasks (>6) → group related ones under one specialist subtask rather than spawning a wide, noisy graph.
- Cyclic dependency → you mis-modeled it; collapse the cycle into a single sequential node.
Hand-off
Pass each {agent_id, role, subtask} to the dispatcher; per-step routing detail
lives in agent-routing, and the final spoken/visual merge lives in
result-synthesis.