| name | task-juggler |
| description | 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. |
| triggers | ["what should I do","what do I work on","prioritize","rank my tasks","add task","mark done","how are my pylons","period context","show tasks","sort by"] |
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>