# Task Juggler

> Score and rank tasks using the Task Juggler framework. Load this when the user asks what to work on, wants to add/complete tasks, or asks about their pylons.

- Skill: `limitcracker/task-juggler` (Agent Skill, multi-file: 6 files)
- Install (CLI): `npx skillmds@latest add limitcracker/task-juggler`
- Raw SKILL.md: https://api.skillmd.com/api/skills/limitcracker/task-juggler/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Productivity
- Author: limitcracker (https://skillmd.com/u/limitcracker)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/limitcracker/task-juggler

---


# Task Juggler Skill

## Files to read
Always read `tasks.json` before scoring. It contains pylons, tasks, and current period weights.

## Task Attributes (all 1–10)
- `urgency`   — deadline pressure, time sensitivity
- `value`     — tangible ROI: money, favors, work convenience, ease
- `influence` — reputational capital: visibility, doors opened, future projects
- `interest`  — how much the user wants to do it (motivation, energy match)
- `duration`  — estimated days to complete

## Task States
- `not started` — ready to work on, ranked normally
- `started`     — in progress, ranked normally
- `paused`      — temporarily on hold, excluded from ranking
- `completed`   — done, archived, excluded from ranking
- `stopped`     — cancelled, excluded from ranking
- `abandoned`   — dropped, excluded from ranking

## Dependencies
`deps: ["Task Title"]` — if a dependency is not completed, the task is blocked.
Blocked tasks are excluded from ranking unless the user explicitly asks to see them.

## Scoring Formula (default: gut_roi)
```
score = (urgency×3 + value×2 + influence×2 + interest) / (8 × weighted_cost)
```

- urgency weights highest (deadline = now or never)
- value & influence are equal (tangible vs reputational ROI)
- interest is tiebreaker (energy match)
- divide by 8 to normalize to a readable scale

leverage bonus: multiply final score × 1.4 if `leverage: true`
promoted attribute: if user says "promote [attr] this period" → multiply that attribute × 1.5

weighted_cost = sum(resource × period_weight) / sum(period_weights)
resources: time, money, energy, social (1–5 each)
period_weights: from tasks.json period.weights (higher = more scarce right now)

## Strategies
See strategies.md. Switch with: "use [strategy] strategy"
- gut_roi (default) — formula above
- balance — boost pylons furthest from target
- compound — leverage tasks ×2
- weakest_pylon — divide score by pylon current level

## Output format when ranking
```
#1 [Task Title] — [Pylon] — score: X.XX
   U:X V:X I:X Int:X Dur:Xd | T:X M:X E:X S:X | [leverage] [blocked]
   → [one line reason why this ranks here]
```

## Sorting tasks
User can sort by: urgency, value, influence, interest, duration, state, pylon, id
"Sort by urgency" → re-rank by that attribute descending
"Show lowest effort tasks first" → sort by time ascending

## Sorting pylons
User can sort pylons by: gap (target−level), level, task count, open tasks
"Which pylon has the most gap?" → sort by (target - level) descending

## Adding a task
When user says "add task: X", infer as much as possible from context.
Ask only for: pylon (if unclear), and whether it is leverage.
Estimate all attributes — do not interrogate for every field.
Always show the full JSON object and ask for confirm before writing.

## Updating tasks.json
After any operation (add / state change / edit), show the exact change and confirm.
Use state "completed" + set completed date instead of deleting tasks.

## CLI tool (tjg.py)
The user can also manage tasks from the terminal:
```
python tjg.py show [--pylon <name>] [--sort <key>] [--desc]
python tjg.py add <title> --pylon <name> [--urgency N] [--value N] [--influence N] [--interest N] [--duration N]
python tjg.py done <taskId>
python tjg.py update <taskId> [--field value ...]
python tjg.py delete <taskId>
```

