agentleFS
fagemxfagemx/edda/.claude/skills/path-forward/SKILL.md

path-forward

Skill36 starsChanged 2 months agoApache-2.0View on GitHub

Find the most unblocking next step given current codebase state and goals

The file

Show its rules and text

We split this skill into the rules it gives an agent

15 rules. About 0 are common, 14 are distinctive, and 1 is very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈14

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 1

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Check each crate's implementation status:

    line 34
  2. Distinctive:

    Read project docs for the dependency graph and critical path:

    line 57
  3. Distinctive:

    Do required types exist?

    line 98
  4. Distinctive:

    Do required crate APIs exist?

    line 99
  5. Distinctive:

    If not buildable, move to next candidate.

    line 102
  6. Distinctive:

    After finishing a task:

    line 140
  7. Distinctive:

    When blocked on something:

    line 163
  8. Distinctive:

    Prefer depth (finish one crate) over breadth (start many)

    line 218
  9. Distinctive:

    Prefer end-to-end paths over isolated features

    line 223
  10. Distinctive:

    Prefer hardening over new features

    line 228
  11. Distinctive:

    Check recent git history to understand current direction

    line 232
  12. Very specific:

    Does NOT check if a specific task is ready (that's /ground-check)

    line 245
  13. Distinctive:

    Does NOT create issues or PRs

    line 246
  14. Distinctive:

    Does NOT modify code

    line 247
  15. Distinctive:

    Does NOT question architecture decisions — works within them

    line 248

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Path Forward

Find the single next action that unblocks the most downstream work. Use this after completing a task, when stuck on priorities, or when returning to the project after a break.

Usage

path-forward                      # What should I work on next?
path-forward completed <task>     # I just finished <task>, what's unblocked?
path-forward stuck <problem>      # I'm blocked, find an alternate path
path-forward status               # Show current state of all tracks

Core Principle

Maximum unblocking, not minimum effort.

The right next step is the one that enables the MOST subsequent work. This is different from:

  • "Easiest task" — easy tasks may not unblock anything
  • "Most important feature" — importance doesn't mean buildable now
  • "What the docs say is next" — docs may not reflect actual code state

Operations

Default: What Should I Do Next?

Step 1: Scan Current State

Check each crate's implementation status:

# For each crate, check: lines of code, stub count, test count
for crate in edda-core edda-ledger edda-store edda-transcript edda-index edda-derive edda-pack edda-bridge-claude edda-mcp edda-search-fts edda-cli; do
  echo "=== $crate ==="
  # Actual code lines (excluding blanks and comments)
  find crates/$crate/src -name "*.rs" 2>/dev/null | xargs wc -l 2>/dev/null | tail -1
  # Stub count
  grep -rn "todo!\|unimplemented!" crates/$crate/src/ 2>/dev/null | wc -l
  # Test count
  grep -rn "#\[test\]\|#\[tokio::test\]" crates/$crate/ 2>/dev/null | wc -l
done
# Overall health
cargo check 2>&1 | tail -5
cargo test 2>&1 | tail -10

Step 2: Map What's Blocked

Read project docs for the dependency graph and critical path:

Transcript ingest → Event ledger → Derive views → Pack generation → Bridge injection

Crate dependency order:

edda-core (types, events)
  → edda-store (file storage)
  → edda-ledger (append-only event log)
  → edda-transcript (Claude transcript parsing)
  → edda-index (event indexing)
  → edda-derive (view derivation from events)
  → edda-pack (memory pack generation)
  → edda-search-fts (full-text search)
  → edda-bridge-claude (Claude Code hook injection)
  → edda-mcp (MCP server)
  → edda-cli (CLI entry point)

For each incomplete track, determine:

  • Blocked by: upstream crates that aren't done
  • Blocks: downstream crates waiting on this
  • Downstream count: total tasks that this enables (directly + transitively)

Step 3: Score Candidates

For each candidate next task:

Unblocking Score = (downstream tasks enabled) × (prerequisite readiness)
  • Task enabling 5 downstream tasks > task enabling 1
  • Task with 100% prerequisites ready > task with 50%
  • Tie-breaker: prefer critical path (Transcript → Ledger → Derive → Pack → Bridge)

Step 4: Verify Top Candidate

For the highest-scoring candidate, quick ground-check:

  • Do required types exist?
  • Do required crate APIs exist?
  • Does it compile with the prerequisite crates?

If not buildable, move to next candidate.

Step 5: Report

## Path Forward

### Current State

| Crate | LOC | Tests | Stubs | Status |
|-------|-----|-------|-------|--------|
| edda-core | 450 | 12 | 0 | Complete |
| edda-ledger | 230 | 5 | 3 | In Progress |
| edda-store | 180 | 8 | 0 | Complete |
| edda-transcript | 300 | 10 | 2 | In Progress |
| ... | ... | ... | ... | ... |

### Recommended Next Step

**<task description>**

Why this one:
- Prerequisites: <what's already done>
- Unblocks: <what this enables>
- Readiness: <evidence it's buildable now>
- Scope: <estimated size>

### After That

1. <next priority> — unblocks <what>
2. <next priority> — unblocks <what>
3. <next priority> — unblocks <what>

Operation: completed <task>

After finishing a task:

  1. Verify completion: compile + tests pass for the changed crate
  2. Check what's newly unblocked: which downstream tasks now have all prerequisites met?
  3. Recommend the newly-unblocked task with highest unblocking score
## Completed: <task>

### Newly Unblocked
- <task> (was waiting on <prerequisite> — now done)
- <task> (was waiting on <prerequisite> — now done)

### Recommended Next: <task>
- Just unblocked by your completion of <previous>
- Unblocks: <downstream tasks>
- All prerequisites now met

Operation: stuck <problem>

When blocked on something:

  1. Identify the blocker — what specifically can't you do and why?
  2. Find alternative paths:
    • Can you achieve the same goal differently?
    • Can you do 80% and defer the blocked part?
    • Can you mock/stub the blocker temporarily?
  3. Find the unblocking path — what would remove the blocker?
## Stuck on: <problem>

### Blocker Analysis
<What's blocking and why>

### Alternative Paths
1. **Work around it**: <approach that avoids the blocker>
2. **Partial implementation**: <do what you can, stub the rest>
3. **Unblock it**: <prerequisite work to remove the blocker>

### Recommended Path
<Which alternative and why>

Operation: status

Quick overview, no recommendations:

## Project Status

| Crate | LOC | Tests | Stubs | Status |
|-------|-----|-------|-------|--------|
| edda-core | 450 | 12 | 0 | Complete |
| edda-ledger | 230 | 5 | 3 | In Progress |
| edda-store | 180 | 8 | 0 | Complete |
| ... | ... | ... | ... | ... |

### Build Health
- Compilation: pass/fail
- Tests: X passing, Y failing

### Critical Path Progress
core [===] → ledger [== ] → derive [   ] → pack [   ] → bridge [   ]

Scale Awareness

The skill adapts its recommendations to the project's growth phase:

Early phase (most crates <100 LOC, many stubs):

  • Focus on foundation crates (core, store, ledger)
  • Recommend groundwork that enables the most downstream crates
  • Prefer depth (finish one crate) over breadth (start many)

Mid phase (core crates implemented, bridge/mcp have stubs):

  • Focus on integration (derive, pack, bridge)
  • Recommend connecting implemented pieces
  • Prefer end-to-end paths over isolated features

Late phase (all crates compile and have tests):

  • Focus on polish (CLI, MCP, search)
  • Recommend end-to-end validation and edge cases
  • Prefer hardening over new features

Ongoing development (post-initial build):

  • Focus on what the user is actively working on
  • Check recent git history to understand current direction
  • Recommend based on what was just completed and what's in flight

Phase detection:

# Check LOC distribution across crates
for crate in crates/*/; do
  echo "$(basename $crate): $(find $crate/src -name '*.rs' 2>/dev/null | xargs wc -l 2>/dev/null | tail -1)"
done

What This Skill Does NOT Do

  • Does NOT check if a specific task is ready (that's /ground-check)
  • Does NOT create issues or PRs
  • Does NOT modify code
  • Does NOT question architecture decisions — works within them

References

  • Project scope: docs/SCOPE_V1.md
  • Roadmap: docs/ROADMAP_V1_1.md
  • Bridge contract: docs/BRIDGE_CONTRACT_P1.md
  • Critical path: Transcript → Ledger → Derive → Pack → Bridge

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.