Esper go
Tool-neutral, simple workflow layer for agentic, spec-driven software development. πͺβ¨
npx -y skills add sichengchen/esper --skill esper-goAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Advance the current work stage. If in spec mode, derives an increment plan. If in increment mode, begins implementation.
SKILL.md
6.1 KB, ~1.5k tokens by cl100k_base, as published. Nobody here has run it
You are advancing the current work stage. The behavior depends on the active context.
Step 1: Read context
Run esperkit context get to determine the current state.
Check:
- Is there an active increment? (
active_incrementfield) - What is the workflow mode?
- Is there an active run? (
active_runfield) - What is the execution mode? (
active_execution_modefield)
Step 2: Detect work stage and branch
Branch A: No active increment β derive from specs
If there is no active increment but the user has been working on specs (via esper:spec):
- Read the spec files that were being edited
- Identify what implementation work is needed based on the specs
- Ask the user: "What would you like to implement from these specs?"
- Based on the answer:
- Single task: Create one increment via
esperkit increment create --title "..." --lane atomic --spec <file> - Multiple tasks: Suggest using
esper:batchinstead
- Single task: Create one increment via
- Activate the increment:
esperkit increment activate <filename> - Present the increment plan for review
- Stop here β do NOT begin implementation until the user confirms or runs
esper:goagain
Branch B: Active increment in plan stage
If there is an active increment and its ## Progress section is empty or says "[Updated during implementation]":
- Read the full increment file from
.esper/increments/active/<filename> - Read the referenced spec files (from
spec:frontmatter field) - Check the
execution_modefrontmatter field - Confirm the plan is approved with the user
If execution_mode is interactive (default):
5. Begin implementation:
- Follow the
## Scopesection - Create/modify files as listed in
## Files Affected - Run verification commands from
## Verification - Update the
## Progresssection as work is completed - Proactively update spec files if implementation reveals spec gaps
- Commit according to
workflow_defaults.commits
If execution_mode is autonomous:
5. Begin autonomous execution:
- Freeze the approved spec snapshot (record the spec file and its current state)
- Create a run:
esperkit run create <increment-filename> - Read the run ID from the output
- Decompose the increment scope into bounded task packets
- For each task, create a task packet:
esperkit run add-task <run-id> '<task-json>' - Task JSON must include:
spec,spec_section,files_allowed,verification,acceptance_criteria,assigned_role - Dispatch tasks to the appropriate worker role as defined in
.esper/esper.jsonagent_roles - After all tasks complete, trigger a review pass
- Create a review record:
esperkit run add-review <run-id> '<review-json>' - If review passes: update run status and proceed to completion
- If review fails: convert findings into repair tasks and repeat
- Stop and escalate to the user if:
- Max review rounds exceeded (from
autonomous_run_policy.max_review_rounds) - Runtime limit exceeded (from
autonomous_run_policy.max_runtime_minutes) - The reviewer finds spec ambiguity, requirement conflicts, or missing approvals
- Max review rounds exceeded (from
- To stop a run:
esperkit run stop <run-id> '<reason>'
Branch C: Active increment in progress
If there is an active increment with progress recorded:
- Read the increment and assess remaining work
- Continue implementation from where it left off
- When all scope items are complete and verification passes:
- Ask the user if they want to finish the increment
- If yes: run
esperkit increment finish <filename> - Suggest running
esper:syncto update specs if needed - Then check for batch continuation (see Step 4)
Branch D: Active run in progress
If there is an active run (active_run is not null):
- Run
esperkit run get <run-id>to read the run state - Run
esperkit run list-tasks <run-id>to check task status - If tasks are pending: continue dispatching
- If all tasks complete: trigger review
- If review passed: proceed to completion
- If review failed: create repair tasks and continue the loop
- If the run is cancelled or escalated: report to the user
Step 3: Refuse if blocked
Before advancing, check:
- If the increment file has unresolved comments (lines starting with
> TODO:or> FIXME:), refuse to advance - Tell the user to resolve the comments first
- List the unresolved items
Step 4: Batch auto-loop
After finishing a child increment, check if it belongs to a batch (has a parent: field in its frontmatter).
If yes:
- Run
esperkit context getto check if a newactive_incrementwas auto-activated - If a new child is active, loop back to Step 2 β read the new increment and continue implementation
- Repeat until no more children remain (i.e.
active_incrementis null or points to the parent) - When the batch is fully complete, finish the parent increment if still active
This loop runs automatically β do NOT ask the user to run esper:go again between children. The user already approved the full queue during esper:batch.
Available CLI commands
esperkit context getβ read current contextesperkit increment create --title "..." [--lane atomic|systematic] [--type feature|fix|chore] [--spec <file>]β create incrementesperkit increment activate <file>β activate an incrementesperkit increment finish <file>β finish an incrementesperkit increment listβ list all incrementsesperkit spec get <file>β read a spec fileesperkit run create <increment>β create a new autonomous runesperkit run get <id>β read run stateesperkit run listβ list all runsesperkit run stop <id> [reason]β stop a runesperkit run add-task <run-id> '<task-json>'β add a task packetesperkit run get-task <run-id> <task-id>β read a taskesperkit run list-tasks <run-id>β list tasks in a runesperkit run add-review <run-id> '<review-json>'β add a review recordesperkit run list-reviews <run-id>β list reviews in a run
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.
Gives 0 of the 12 instructions most plan spec skills give in ~1.5k tokens
Counted across 1,099 of the 1,860 authors here whose files we hold, read 2026-08-07
- Ask one question at a timein 51 of 1099
- Break plans into vertical slicesin 29 of 1099, across 11 files
- Publish issues in dependency orderin 27 of 1099, across 9 files
- Iterate until user approves the breakdownin 25 of 1099, across 7 files
- Explore the repository to understand the codebase statein 24 of 1099, across 7 files
- Use domain glossary vocabularyin 23 of 1099, across 5 files
- Apply correct triage labels to published issuesin 23 of 1099, across 5 files
- Prefer AFK slices over HITLin 22 of 1099, across 7 files
- Write a specification before writing any codein 22 of 1099, across 14 files
- Write failing tests before implementation codein 22 of 1099, across 20 files
- Ask clarifying questions until requirements are concretein 21 of 1099, across 13 files
- Respect existing architecture decision recordsin 20 of 1099, across 5 files
Said here and by no other author read
- run context get to determine state
- identify needed implementation work from specs
- ask user what to implement from specs
- create single increment for single task
- suggest batch mode for multiple tasks
- activate the increment
Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.