AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
SKILL verified MIT Self-run

Jj Todo Workflow

skill-ypares-agent-skills-jj-todo-workflow · by YPares

Structured TODO commit workflow using JJ (Jujutsu). Use to plan tasks as empty commits with [task:*] flags, track progress through status transitions, manage parallel task DAGs with dependency checking. Enforces completion discipline. Enables to divide work between Planners and Workers. **Requires the working-with-jj skill**

No reviews yet
0 installs
38 views
0.0% view→install

Install

$ agentstack add skill-ypares-agent-skills-jj-todo-workflow

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/skill-ypares-agent-skills-jj-todo-workflow)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
2mo ago

Declared compatibility

Claude CodeClaude Desktop

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Jj Todo Workflow? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

JJ TODO Workflow

The core idea is to use a DAG of empty revisions as TODO markers, representing tasks to be done, and then come back later to edit these revisions to actually do the tasks. This enables structured development with clear milestones. Revision descriptions (i.e. commit messages) act as specifications for what to implement. JJ makes it easy to create such a structure, and then to fill each revision afterwards.

For more information on JJ basics, see the working-with-jj skill. We reuse scripts from that skill here.

This skill talks about two roles: Planners (who lay out the empty revisions and their specs) and Workers (who implement them). Depending on the situation, you may be acting as just Planner, just Worker, or both. It is better to have a good idea of the whole process, but section titles make it explicit which role is most concerned by each section.

Quick Start (Planners & Workers)

Here's a complete cycle from planning to completion (full paths to helper scripts not written):

# 1. Plan: Create a simple TODO chain
jj-todo-create @ "Add user validation" "Check email format and password strength"
# Created: abc123 (stays on current @)

jj-todo-create abc123 "Add validation tests" "Test valid/invalid emails and passwords"
# Created: def456 (@ still hasn't moved)

# 2. Start working on first TODO
jj edit abc123
jj-flag-update @ wip   # Now [task:wip]

# ... implement validation ...

# 3. Verify ALL acceptance criteria met
make test  # Or equivalent in your project

# 4. Ask to move to next task
jj-todo-next
### ... review current specs (to ensure compliance) and next possible TODOs ...

# 5. Once we're sure everything is properly done, move to next TODO
jj-todo-next --mark-as done def456   # Marks abc123 as [task:done], starts def456 as [task:wip]

That's it! Empty commits as specs, edit to work on them, jj-todo-next --mark-as done when FULLY complete.

Status Flags (Planners & Workers)

We use description prefixes to track status at a glance. The [task:*] namespace makes them greppable and avoids conflicts with other conventions.

Here are the ONLY allowed status flags:

| Flag | Meaning | | ----------------- | ------------------------------------------------------------------------------------ | | [task:draft] | Placeholder created, needs full specification | | [task:todo] | Not started, empty revision with complete specs | | [task:wip] | Work in progress | | [task:blocked] | Waiting on external dependency | | [task:standby] | Awaits some decision (broken and hard to fix, usefulness called into question, etc.) | | [task:untested] | Implementation done, but not tested enough to be validated | | [task:review] | Needs review (tricky code, design choice) | | [task:done] | Complete, all acceptance criteria met |

This order is indicative: not every task has to go through all these steps, and not necessarily in the order above.

NOTE: In previous versions of this Skill, standby was called "broken". It got renamed to make this status more broadly applicable.

When to Use draft vs todo (Planners)

Use [task:draft] when:

  • Creating placeholder tasks to establish the DAG structure
  • The task title/concept is clear but details aren't worked out yet
  • You want to defer writing full acceptance criteria
  • Planning at a high level before diving into specifics

Use [task:todo] when:

  • The task has complete specifications (context, requirements, acceptance criteria)
  • A Worker could pick it up and implement it without clarification
  • All dependencies and approach are clearly documented

Updating Flags (Workers & Planners)

jj-flag-update @ draft     # Mark as needing specification (Planners)
jj-flag-update @ todo      # Mark as ready to work on (Planners)
jj-flag-update @ wip       # Start work (Workers)
jj-flag-update @ untested  # Implementation done, tests missing (Workers)
jj-flag-update @ done      # Complete (Workers)

Finding Flagged Revisions (Planners & Workers)

jj-find-flagged                     # All tasks
jj-find-flagged draft               # Only [task:draft]
jj-find-flagged todo                # Only [task:todo]
jj-find-flagged wip                 # Only [task:wip]
jj-find-flagged done                # Only [task:done]

# Manual - all tasks
jj log -r 'description(substring:"[task:")'

# Incomplete tasks only (excludes done)
jj log -r 'description(substring:"[task:") & ~description(substring:"[task:done]")'

Basic Workflow (Planners & Workers)

1. Plan: Create TODO Chain (Planners)

# Create linear chain of tasks
jj-todo-create @ "Task 1: Setup data model" "...details..."
jj-todo-create  "Task 2: Implement core logic" "..."
jj-todo-create  "Task 3: Add API endpoints" "..."
jj-todo-create  "Task 4: Write tests" "..."

2. Work: Edit Each TODO (Workers)

# Read the specs
jj-show-desc     # BEWARE: Script from the `working-with-jj` skill
 
# Start working on it
jj edit 
jj-flag-update @ wip

# ... implement ...

# Mark progress
jj-flag-update @ untested

3. Complete and Move to Next (Workers)

jj-todo-next script is there to smooth out the "transition to next task" process.

Without args
  • Print out current task's description so you can review and make sure everything is implemented as planned
  • Print out next possible task(s)
# Review current specs and see what's next
jj-todo-next
# Shows:
#   📋 Current task specs for review:
#   ─────────────────────
#   ...
#   ─────────────────────
#
#   Current task status: [task:wip]
#   Mark as [task:done] only if FULLY COMPLIANT with specs above.
#
#   ✅ Available next tasks:
#     abc123  [task:todo] Feature B
#     def456  [task:todo] Feature C
#
#   ⚠️ Child tasks with unmet dependencies:
#     xyz789  [task:todo] Integration
#             Blocked by: abc123
With args
  • Update the flag of current task
  • Move (jj edit) to the next task
  • Update new task's flag to [task:wip]
# Actually mark current done and start editing next:
jj-todo-next --mark-as done abc123
# Does the `jj edit abc123` and shows its description

Planning Parallel Tasks (DAG) (Planners)

Create branches that can be worked independently. Example:

# Linear foundation
jj-todo-create @ "Task 1: Core infrastructure"
jj-todo-create  "Task 2: Base components"

# Parallel branches from Task 2
jj-parallel-todos  "Widget A" "Widget B" "Widget C"

# ... edit their descriptions to add more details ...

# Merge point (all three parents must complete first)
jj new --no-edit    -m "[task:todo] Integration of widgets\n\n..."

Result:

          Integration
       /      |        \
   Widget A  Widget B  Widget C
       \      |        /
          Task 2: Base
              |
          Task 1: Core

No rebasing needed - parents specified directly!

Writing Good TODO Descriptions (Planners)

Structure

Short title (

Check Dependencies Before Starting (Workers)

If working with parallel branches or complex DAGs, when starting on a new TODO:

# Check what a task depends on (its immediate ancestors)
jj log -r 'ancestors(,2)'  # 2 for parents, 3 for parents + grandparents, etc.

# Check what depends on a task (its immediate descendants)
jj log -r 'descendants(,2)'  # 2 for children, 3 for children + grandchildren, etc.

If any dependency (ancestor) has a [task:*] flag which is still draft, todo, wip or blocked: STOP AND WARN THE USER. Wait for their approval before continuing.

Note: jj-todo-next checks dependencies automatically to indicate which children tasks aren't ready, but it's just here to smooth things out, not to abstract from jj. Inspect the graph yourself with jj log whenever needed.

Helper Scripts (Planners & Workers)

Helper scripts in scripts/. Invoke with full path to avoid PATH setup.

| Script | Purpose | | --------------------------------------------------- | ----------------------------------------------------------- | | jj-todo-create [--draft] [DESC] | Create TODO (stays on @). Use --draft for placeholder tasks | | jj-parallel-todos [--draft] ... | Create parallel TODOs. Use --draft for placeholder tasks | | jj-todo-next [--mark-as STATUS] [REV] | Review specs, check dependencies, mark & optionally move | | jj-flag-update | Update status flag (auto-detects current) | | jj-find-flagged [FLAG] | Find flagged revisions |

Additional useful scripts from the working-with-jj skill:

| Script | Purpose | | -------------------- | ------------------------------- | | jj-show-desc [REV] | Print description of a revision |

References

Advanced topics and detailed guides:

  • references/parallel-agents.md - Using JJ workspaces for parallel agent execution (Planners)

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.