Skip to content
Back to skills

3043 Agentic Task Decomposition 04ef3d06

ASecurity

Breaking complex tasks into executable agent steps with dependency management, failure recovery, and re-planning

  • 9 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 11, 2026
testingpythongoapi

Works with

  • cli
  • api

Security analysis

A100/100

Scanned October 11, 2026

npx -y skills add tools-only/X-Skills --skill 3043-agentic-task-decomposition_04ef3d06 --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of 3043 Agentic Task Decomposition 04ef3d06?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for 3043 Agentic Task Decomposition 04ef3d06
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/tools-only-3043-agentic-task-decomposition-04ef3d06/badge)](https://www.skillsdirectory.com/skills/tools-only-3043-agentic-task-decomposition-04ef3d06)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

SKILL.md
---
name: agentic-task-decomposition
description: Breaking complex tasks into executable agent steps with dependency management, failure recovery, and re-planning
---

# Agentic Task Decomposition

**Scope**: Goal decomposition, task graphs, atomic tasks, parallel execution, re-planning
**Lines**: ~280
**Last Updated**: 2026-02-02

## When to Use This Skill

Activate this skill when:
- Decomposing complex goals into subtasks for an LLM agent
- Deciding whether to decompose further or execute directly
- Building dependency graphs between agent steps
- Handling ambiguous or underspecified user requests
- Designing parallel vs sequential execution plans
- Implementing failure recovery and re-planning strategies
- Sizing tasks for LLM execution (context-bounded, verifiable)

## Core Concepts

### Decompose vs Execute Directly

Not every task needs decomposition. Use this decision framework:

```
Can I complete this in one tool call or one coherent response?
  YES -> Execute directly
  NO  -> Does it have independent sub-parts?
           YES -> Decompose and identify parallelism
           NO  -> Break into sequential steps
```

**Execute directly when**:
- Single file edit, single command, single query
- Task fits within working memory without state tracking
- No branching logic or conditional paths

**Decompose when**:
- Multiple files, tools, or systems involved
- Steps depend on results of prior steps
- Task requires verification between stages
- Failure in one part shouldn't abort everything

---

### Decomposition Strategies

#### Goal-to-Subgoal Decomposition

Start with the end state and work backward:

```python
# Goal: "Add user authentication to the API"
# Decompose by asking "what must be true for this to be done?"

task_graph = {
    "goal": "Add user authentication",
    "subgoals": [
        {
            "id": "auth-model",
            "task": "Create User model with password hashing",
            "depends_on": [],
            "verify": "User model exists with hash_password method"
        },
        {
            "id": "auth-routes",
            "task": "Create login/register endpoints",
            "depends_on": ["auth-model"],
            "verify": "POST /login and POST /register return tokens"
        },
        {
            "id": "auth-middleware",
            "task": "Create JWT middleware",
            "depends_on": ["auth-model"],
            "verify": "Protected routes reject unauthenticated requests"
        },
        {
            "id": "auth-tests",
            "task": "Write integration tests",
            "depends_on": ["auth-routes", "auth-middleware"],
            "verify": "All tests pass"
        }
    ]
}
```

#### Dependency Graph Approach

Model tasks as a directed acyclic graph (DAG):

```
auth-model ──┬── auth-routes ──┬── auth-tests
             └── auth-middleware ┘
```

**Rules**:
- No cycles (if A depends on B, B cannot depend on A)
- Tasks with no dependencies are immediately executable
- Tasks sharing no dependencies can run in parallel

#### Iterative Refinement

Start coarse, refine as you learn:

```
Round 1: "Build authentication" (too big)
Round 2: "Create model", "Create routes", "Create middleware", "Write tests"
Round 3: "Create model" -> "Define schema", "Add password hashing", "Add validation"
```

**Stop refining when** each task is:
- **Atomic**: Completable in one focused step
- **Verifiable**: Has a clear success condition
- **Context-bounded**: Fits in working memory with room for tool results

---

### Task Sizing for LLM Execution

A well-sized task for an LLM agent:

| Property | Good | Too Big | Too Small |
|----------|------|---------|-----------|
| **Scope** | Edit one function | Refactor entire module | Rename one variable |
| **Verification** | Run specific test | "Does it work?" | N/A |
| **Context** | Needs 2-3 file reads | Needs 20+ files loaded | Needs nothing |
| **Duration** | 1-5 tool calls | 50+ tool calls | 0 tool calls |

**Heuristic**: If a task requires more than 10 tool calls, it should probably be decomposed further. If it requires zero tool calls, it might be premature decomposition.

---

### Handling Ambiguity

When the user request is underspecified:

```python
def handle_ambiguity(task):
    # Strategy 1: Make assumptions explicit
    assumptions = identify_assumptions(task)
    if assumptions:
        # Ask for confirmation before proceeding
        return clarify(assumptions)

    # Strategy 2: Choose the most common interpretation
    # Document the choice so user can redirect
    interpretation = most_likely_interpretation(task)
    log(f"Interpreting '{task}' as: {interpretation}")

    # Strategy 3: Start with the unambiguous parts
    clear_subtasks = [t for t in decompose(task) if not t.ambiguous]
    return execute(clear_subtasks)  # Do what's clear, ask about the rest
```

**Priority order**:
1. Execute unambiguous parts immediately
2. State assumptions explicitly before acting on ambiguous parts
3. Ask for clarification only when ambiguity blocks all progress

---

### Parallel vs Sequential Execution

```python
# Identify parallelism from the dependency graph
def execution_plan(tasks):
    remaining = set(tasks)
    plan = []

    while remaining:
        # Find tasks whose dependencies are all completed
        ready = {t for t in remaining
                 if all(d not in remaining for d in t.depends_on)}

        if not ready:
            raise CyclicDependencyError()

        # All ready tasks can execute in parallel
        plan.append({"parallel": list(ready)})
        remaining -= ready

    return plan

# Result:
# [
#   {"parallel": ["auth-model"]},              # Wave 1
#   {"parallel": ["auth-routes", "auth-middleware"]},  # Wave 2
#   {"parallel": ["auth-tests"]}               # Wave 3
# ]
```

**When to parallelize**:
- Independent file reads/searches (always parallel)
- Independent tool calls with no shared state
- Tests for different components

**When to keep sequential**:
- Write depends on read result
- Later step uses output of earlier step
- Order matters for correctness (migrations, deployments)

---

### Failure Recovery and Re-Planning

```python
def execute_with_recovery(plan):
    completed = []
    for wave in plan:
        results = execute_parallel(wave["parallel"])

        for task, result in results:
            if result.failed:
                # Strategy 1: Retry with more context
                if result.error_type == "insufficient_context":
                    retry = enrich_context(task)
                    result = execute(retry)

                # Strategy 2: Decompose the failing task further
                if result.error_type == "too_complex":
                    subtasks = decompose_further(task)
                    result = execute_with_recovery(subtasks)

                # Strategy 3: Re-plan from current state
                if result.error_type == "assumption_violated":
                    new_plan = replan(
                        original_goal=plan.goal,
                        completed=completed,
                        new_information=result.error
                    )
                    return execute_with_recovery(new_plan)

                # Strategy 4: Skip and continue
                if task.optional:
                    log(f"Skipping optional task: {task}")
                    continue

                # Strategy 5: Abort with clear status
                raise AgentError(
                    completed=completed,
                    failed=task,
                    remaining=remaining_tasks(plan, completed)
                )

            completed.append(task)

    return completed
```

**Recovery priority**:
1. Retry with more context (cheapest)
2. Decompose further (task was too big)
3. Re-plan (assumptions were wrong)
4. Skip if optional
5. Abort with clear status report

---

## Anti-Patterns

### Over-Decomposition
**Problem**: Breaking simple tasks into dozens of micro-steps.
**Symptom**: More time planning than executing. Tasks like "open file", "read line 5", "change word".
**Fix**: If a task takes fewer tool calls to execute than to plan, just do it.

### Under-Decomposition
**Problem**: Attempting complex multi-file changes in one shot.
**Symptom**: Losing track of state, incomplete changes, forgetting steps.
**Fix**: If you catch yourself re-reading the same context, the task needs decomposition.

### Rigid Plans
**Problem**: Following the original plan even when early results change the situation.
**Symptom**: Completing tasks that are no longer relevant, ignoring new information.
**Fix**: Check assumptions after each step. Re-plan when the situation changes.

### Dependency Blindness
**Problem**: Executing tasks in parallel when they actually share state.
**Symptom**: Race conditions, conflicting edits, inconsistent state.
**Fix**: Explicitly list what each task reads and writes. Overlap means sequential.

---

## Checklist

- [ ] Can I execute this directly without decomposition?
- [ ] Are all subtasks atomic, verifiable, and context-bounded?
- [ ] Is the dependency graph a DAG (no cycles)?
- [ ] Have I identified parallel execution opportunities?
- [ ] Does each task have a clear success condition?
- [ ] Is there a recovery strategy for likely failure modes?
- [ ] Have I made ambiguous assumptions explicit?

---

## Related Skills

- `agentic-tool-use.md` - Executing decomposed tasks with tools
- `agentic-memory.md` - Managing context across task steps

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.