agentleFS
Ryan-M-FrankRyan-M-Frank/volley/skills/status/SKILL.md

status

Skill2 starsChanged 5 months agoApache-2.0View on GitHub

Use to inspect the current Volley lock state. Reports who's active, what task they're on, lock age, whether the named PID is still alive, and lists the most recent .volley/ review files. Use to confirm Codex finished, to check for stale locks, or any time you're unsure whose turn it is.

187 other projects use a version of this.

Adopted by

Most recently taken up by

Used with

Projects with it also use off, list and 10 more.

Other files people use alongside this one.

Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
  • StakeholderSenseiSkill

    off

    Disable polygraph for this repo (user-only escape hatch; all hooks no-op)

    Also in 4 projects that use this

  • SuShuhengSkill

    list

    Use when checking obshare-cli upload history, finding document tokens, or reviewing previous upload URLs and permission snapshots.

    Also in 8 projects that use this

  • kennethleungtySkill

    pause

    Pause — stop the music (alias for /stop)

    Also in 6 projects that use this

  • codebycoreySkill

    new

    Start a new change with a proposal. Use when starting a feature, creating a proposal, or beginning planned work.

    Also in 7 projects that use this

  • michaelenglandSkill

    import

    This skill should be used when the user wants to import an existing .pptx file into deckwright, bring in a PowerPoint that was created outside this tool, reverse-engineer a presentation for editing, or invoke /deckwright:import. Converts a .pptx into a PptxGenJS generation script so it can be edited and regenerated through the deckwright pipeline.

    Also in 5 projects that use this

  • genomewalkerSkill

    resume

    Resume a thread by loading its ~800-token context capsule

    Also in 15 projects that use this

The file

We split this skill into the rules it gives an agent

5 rules. 0 are common, 0 are distinctive, and 5 are very specific to this project.

  • 0

    Common

    Most of the 154 edited versions we read keep these.

  • 0

    Distinctive

    This author's own choices. Worth a look.

  • 5

    Very specific

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

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Read-only inspection of the Volley state.

    line 8
  2. Very specific:

    Verify .volley/ exists: If not, tell user to run /volley:setup first and stop.

    line 12
  3. Very specific:

    List recent .volley/ artifacts: If no artifacts exist yet, show (no review artifacts yet) instead of a blank section.

    line 33
  4. Very specific:

    If ACTIVE=codex and alive: volley_next_step_done "Codex is currently working.

    line 74
  5. Very specific:

    If ACTIVE=claude and TASK=done: volley_next_step "/volley:review-code" "Codex finished.

    line 75

“Common” is measured: kept by at least 6 in 10 of the 154 edited versions of this file we could read. “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

/volley:status

Read-only inspection of the Volley state. Never modifies anything.

Steps for Claude

  1. Verify .volley/ exists. If not, tell user to run /volley:setup first and stop.
  2. Read STATE. Source the lib and read all four keys. If any key read fails (missing file, missing key, or malformed STATE), report the error to the user verbatim and stop - do NOT continue with empty/default values.
    . "${CLAUDE_PLUGIN_ROOT}/scripts/lib.sh"
    ACTIVE=$(volley_state_get .volley/STATE ACTIVE) || exit 1
    TASK=$(volley_state_get .volley/STATE TASK) || exit 1
    SINCE=$(volley_state_get .volley/STATE SINCE) || exit 1
    PID=$(volley_state_get .volley/STATE PID) || exit 1
    AGE=$(volley_state_lock_age .volley/STATE) || exit 1
  3. Check PID liveness if ACTIVE=codex.
    if [ "$ACTIVE" = "codex" ] && [ "$PID" != "0" ]; then
      if volley_state_pid_alive "$PID"; then PID_STATUS="alive"; else PID_STATUS="DEAD"; fi
    else
      PID_STATUS="n/a"
    fi
  4. List recent .volley/ artifacts. If no artifacts exist yet, show (no review artifacts yet) instead of a blank section.
    ARTIFACTS=$(ls -lt .volley/*.md 2>/dev/null | head -5)
    [ -z "$ARTIFACTS" ] && ARTIFACTS="(no review artifacts yet)"
  5. Read continuity config for the report (non-mutating). If .volley/config.json exists, parse it (host JSON, no jq) and resolve the review/implementation model + reasoningEffort (inherit → show "Codex default"). If .volley/local.json exists, note whether repo identity matches (volley_repo_identity_matches) and which roles have a stored thread/session id (presence only - never print the id or any secret). Absent files → report "defaults / not initialized".
  6. Report to user. Format like this:
    Volley Status
    ──────────
    Active actor:  <ACTIVE>
    Current task:  <TASK>
    Lock since:    <SINCE>  (<AGE>s ago)
    Recorded PID:  <PID>  (<PID_STATUS>)
    
    Continuity
    ──────────
    Review model:  <model / Codex default>  (effort: <effort>)
    Impl model:    <model / Codex default>  (effort: <effort>)
    Repo identity: <match | mismatch → will rehydrate | not initialized>
    Saved threads: planReview=<yes/no> prReview=<yes/no> implementation=<yes/no>
    Local state:   .volley/local.json   Checkpoint: <managedCheckpoint path>
    
    Recent artifacts:
    <ls output>
  7. Detect stale lock. Stale = ACTIVE=codex AND one of:

    • PID != 0 AND PID is dead, OR
    • AGE > 1800 seconds (30 minutes).

    PID=0 is the documented "untracked" sentinel (set by /volley:implement because the spawned wt PID is useless for liveness). When PID=0, fall back to age-only detection. If stale, print:

    ⚠ STALE LOCK detected. Codex's session looks abandoned (no progress for >30 min, or process ended).
      Run /volley:unlock to clear it.
  8. Print the next-step block. Decide based on state:
    • If stale: volley_next_step "/volley:unlock" "Clear the stale lock so Claude can resume."
    • If ACTIVE=codex and alive: volley_next_step_done "Codex is currently working. Watch the terminal tab; re-run /volley:status when it finishes."
    • If ACTIVE=claude and TASK=done: volley_next_step "/volley:review-code" "Codex finished. Review the diff against the plan."
    • If ACTIVE=claude and TASK=idle: volley_next_step "/volley:review-plan" "Ready for the next handoff. If you have a plan to review, send it to Codex."
    • Otherwise (Claude active mid-task): volley_next_step_done "Claude is mid-task. Continue working in this session."

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.