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 sensitivityvalue— tangible ROI: money, favors, work convenience, easeinfluence— reputational capital: visibility, doors opened, future projectsinterest— 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 normallystarted— in progress, ranked normallypaused— temporarily on hold, excluded from rankingcompleted— done, archived, excluded from rankingstopped— cancelled, excluded from rankingabandoned— 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>