Install any skill in seconds. Free to start, no credit card required.
Get Started Free →State-persisted autonomous pipeline: spec → go → audit → eval → ship → evolve in one command. Auto-detects direct/council/interactive mode. Crash-recoverable via PIPELINE-*.json. Hands-off until PR.
.claude/skills/hashgraph-online-orbit/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-04 | ✗→✓ | ▲ Improved | 98% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 85% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 153% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 149% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 62% | 0% |
CRITICAL: Run HARNESS_DIR=$(epic path) first. NEVER use .harness/ in the project directory.
You are entering Orbit mode — the full autonomous pipeline from spec to PR in one shot.
At the start of every response during an active orbit:
ls $HARNESS_DIR/orbit/PIPELINE-*.json 2>/dev/null"status": "running"phase matches where you left offphase is ahead of where you think you are, trust the file — you may have compactedphase_history contains an entry for the current phase with a completed timestamp, treat that phase as done and advance to the next phase — phase_history wins over the phase field when they disagree.worktree_name is set in pipeline state:git worktree list | grep "{worktree_name}"cd into the worktree path to continue work"status": "aborted"If no file with "status": "running" exists, orbit was not started or has completed. Do not invent one.
Crash recovery: If updated_at is older than 45 minutes and the pipeline is in status: running, assume a crash occurred. Read the state, determine the last completed phase from phase_history (rule 5 above applies), and resume from there. Report the recovery to the user.
Initialize pipeline state at $HARNESS_DIR/orbit/PIPELINE-{timestamp}.json:
json{ "id": "{timestamp}", "mode": null, "phase": "auto_detect", "status": "running", "spec_file": null, "goal_slug": null, "branch": null, "worktree_name": null, "original_cwd": null, "audit_fail_count": 0, "max_retries": 3, "audit_report": null, "deadline": "{ISO-8601, now + 30 minutes}", "started_at": "{ISO-8601}", "updated_at": "{ISO-8601}", "phase_history": [] }
DO NOT ask the user for mode selection. Auto-detect the best path:
| Signal | Mode | Reason | |--------|------|--------| | PRD / detailed requirements doc exists in project | council | Rich input → council synthesizes best approach | | User request is specific and actionable (clear goal, defined scope) | direct | No need for discovery — spec directly | | User request is vague, unfocused, or "I want to..." without specifics | council | Council frames the problem better than guessing | | User explicitly says "interactive" or "let me discover first" | interactive | Respect explicit preference |
ls {project}/PRD*.md {project}/docs/PRD*.md {project}/requirements*.md 2>/dev/nulldirectcouncil"mode": "direct|council|interactive")"Orbit mode: {mode} (auto-detected)"Use when: Request is specific and actionable.
$HARNESS_DIR/specs/SPEC-{timestamp}.md with status: approvedepic mem add --title "Orbit: {mode} mode decision" --type decision --importance 0.9 --body "CONTEXT"Use when: PRD exists or request needs framing.
$HARNESS_DIR/specs/SPEC-{timestamp}.md with status: approvedepic mem add --title "Orbit: council decision" --type decision --importance 0.9 --body "CONTEXT"Use when: User explicitly requested interactive mode.
/discover → /spec, then say "orbit go". STOP and wait.SPEC-*.md with status: approved. Proceed to Step 3.This mode is never auto-selected. It requires explicit user opt-in.
goal_slugbash [ -z "$(git status --porcelain)" ] || (echo "ERROR: Dirty working tree or untracked files. Commit or stash first." && exit 1) git symbolic-ref -q HEAD || (echo "ERROR: Detached HEAD. Checkout a branch first." && exit 1)
bash git worktree add .claude/worktrees/orbit-{goal_slug} -b orbit-{goal_slug} origin/{default-branch} cd .claude/worktrees/orbit-{goal_slug}
worktree_name and original_cwd in pipeline stategit diff --stataudit_report fieldaudit_fail_count:< 3: plan fixes from action items, execute, return to Step 4≥ 3: PAUSE — ask user "continue or abort?"$HARNESS_DIR/eval/eval.yamlbenchmarks/baselines/latest.json in CWD (in-repo baseline)benchmarks/eval_runner.py in CWD (auto-detected benchmark)epic eval --json via the eval skillaudit_fail_count:< 3: plan fixes, execute, return to Step 4≥ 3: PAUSE — ask user "continue or abort?"cargo clean / npm run clean / equivalentgh pr create with spec + audit report in bodygh pr checks --watch, auto-fix failuresRun the evolution engine to analyze this session and generate/improve skills.
bash epic-harness reflect This triggers the Ring 3 loop: observe → analyze → seed evolved skills → update metrics.
If $HARNESS_DIR/pending_synth.jsonl has records with status: "pending", synthesize each — launch one subagent per manifest (use your host's subagent mechanism; do NOT name a model or CLI), then apply the body it produced: bash epic-harness evolve accept-synth --skill <name> --file <body.md> Unconsumed manifests leave the template skill body in place.
bash epic-harness reflect --context --days 1 and record the successful orbit pattern into memory: bash epic mem add --title "Orbit: {goal_slug} succeeded" \ --type pattern --importance 0.7 \ --body "Orbit completed. Mode: {mode}. AC: all verified. PR: {url}. Stack: {stack}."
"phase": "evolve", "status": "complete".## Orbit Complete
- Pipeline: PIPELINE-{id}
- Mode: {direct|council|interactive} (auto-detected)
- Spec: SPEC-{timestamp} ({goal_slug})
- Branch: orbit-{goal_slug}
- Worktree: orbit-{goal_slug} (preserved for PR)
- PR: {URL}
- Audit retries: {count}
### Phase Summary
| Phase | Status | Retries |
|-------|--------|---------|
| Spec | approved | 0 |
| Go | complete | 0 |
| Audit | PASS | {count} |
| Eval | {PASS|SKIPPED} | 0 |
| Ship | complete | 0 |
| Evolve | complete | 0 |
### Evolution
- Skills evolved: {count}
- Score trend: {improving|stable|declining}| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 24,430 | 13,082 | -46% | 1 | 1 | 0% | 4,741 | 3,213 | -32% | 0 | 0 | — |
case-02 | fail→fail | 10,332 | 10,298 | -0% | 1 | 1 | 0% | 230 | 3,111 | +1253% | 0 | 0 | — |
case-03 | fail→fail | 17,767 | 20,565 | +16% | 1 | 1 | 0% | 235 | 3,104 | +1221% | 0 | 0 | — |
case-04 | fail→pass | 13,936 | 12,830 | -8% | 1 | 1 | 0% | 2,148 | 4,263 | +98% | 0 | 0 | — |
case-05 | fail→pass | 14,550 | 5,105 | -65% | 1 | 1 | 0% | 1,933 | 3,583 | +85% | 0 | 0 | — |
case-06 | fail→pass | 11,045 | 16,090 | +46% | 1 | 1 | 0% | 1,810 | 4,587 | +153% | 0 | 0 | — |
case-07 | fail→pass | 8,965 | 3,400 | -62% | 1 | 1 | 0% | 1,336 | 3,330 | +149% | 0 | 0 | — |
case-12 | pass→pass | 14,658 | 8,609 | -41% | 1 | 1 | 0% | 2,152 | 3,360 | +56% | 0 | 0 | — |
case-08 | pass→pass | 14,546 | 3,659 | -75% | 1 | 1 | 0% | 1,478 | 3,222 | +118% | 0 | 0 | — |
case-09 | fail→pass | 18,573 | 2,140 | -88% | 1 | 1 | 0% | 1,965 | 3,176 | +62% | 0 | 0 | — |
case-10 | fail→pass | 15,161 | 8,579 | -43% | 1 | 1 | 0% | 1,313 | 3,372 | +157% | 0 | 0 | — |
case-11 | fail→pass | 17,565 | 5,600 | -68% | 1 | 1 | 0% | 1,887 | 3,630 | +92% | 0 | 0 | — |
case-13 | fail→pass | 22,228 | 9,918 | -55% | 1 | 1 | 0% | 2,343 | 3,589 | +53% | 0 | 0 | — |
case-14 | fail→pass | 16,277 | 4,020 | -75% | 1 | 1 | 0% | 1,836 | 3,463 | +89% | 0 | 0 | — |
case-15 | fail→pass | 9,146 | 9,591 | +5% | 1 | 1 | 0% | 1,398 | 3,520 | +152% | 0 | 0 | — |
case-16 | fail→fail | 22,142 | 6,985 | -68% | 1 | 1 | 0% | 3,676 | 3,088 | -16% | 0 | 0 | — |
case-17 | fail→fail | 20,033 | 2,535 | -87% | 1 | 1 | 0% | 2,446 | 3,199 | +31% | 0 | 0 | — |
case-18 | fail→pass | 20,572 | 8,087 | -61% | 1 | 1 | 0% | 790 | 3,363 | +326% | 0 | 0 | — |
case-19 | fail→pass | 15,521 | 4,953 | -68% | 1 | 1 | 0% | 1,623 | 3,524 | +117% | 0 | 0 | — |
case-20 | fail→pass | 13,076 | 9,644 | -26% | 1 | 1 | 0% | 1,957 | 3,505 | +79% | 0 | 0 | — |
case-21 | fail→fail | 9,956 | 21,713 | +118% | 1 | 1 | 0% | 1,706 | 3,093 | +81% | 0 | 0 | — |
case-22 | fail→fail | 8,138 | 13,016 | +60% | 1 | 1 | 0% | 313 | 3,100 | +890% | 0 | 0 | — |
case-23 | pass→fail | 10,620 | 7,361 | -31% | 1 | 1 | 0% | 795 | 3,068 | +286% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 23 cases were attempted, and 17 counted toward the lift figure. The other 6 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +52 percentage points is the difference between those two pass rates over the 17 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.