eforge-build/eforge/eforge-stack

Claude Code and agent skill by eforge-build/eforge

Trust tier 3
  • community
Source check pending

Checking that the SKILL.md file is still in the repository.

Synchronize the git-spice stack, preview with dry-run, interpret the sync report, and recover from manual sync conflicts

Install

npx vskill@latest install eforge-build/eforge/eforge-stack

SKILL.md

/eforge:stack:sync

Manually synchronize the git-spice stack for this project. Use --dry-run to preview what commands would run without executing them.

This skill covers manual eforge stack sync recovery. During stacked PR landing with landing.action: pr, eforge attempts automatic provider-encapsulated recovery for provider-classified recoverable restack conflicts before asking for manual intervention. Landing also preflights the remote base: if a missing parent branch's artifact commit is an ancestor of trunk, eforge automatically performs branch-scoped stale-parent repair by tracking initially untracked children against trunk or retargeting already tracked children; otherwise it fails closed with manual stack-base repair guidance. Before submitting the PR, landing runs provider repo sync, branch restack, and a remote-base freshness proof for the branch being submitted.

Stack sync is a daemon-owned operation that runs from the project root. The daemon calls git-spice repo sync followed by git-spice stack restack. Triggers include: this command (/eforge:stack:sync), the CLI (eforge stack sync), the eforge_stack_sync tool, and — when stacking.sync.afterBuild: true is configured — automatically after each build completes.

Requirements

Stack sync requires stacking.enabled: true in eforge/config.yaml and git-spice initialized in the repository (git-spice repo init). If stacking is not enabled the daemon returns outcome: "skipped" with a reason.

Step 1: Detect dry-run flag

Check $ARGUMENTS for --dry-run. If present, set dryRun: true in the tool call.

Step 2: Run the sync

Call the eforge_stack_sync tool with { dryRun: <true|false> }.

Step 3: Interpret the response

The tool returns a structured sync report. Interpret each field:

FieldMeaning
outcomeOne of "skipped", "complete", "deferred", "failed", "conflict"
reasonHuman-readable reason (always present for skipped/deferred/failed/conflict)
stackingActiveWhether stacking is enabled and active for this project
dryRunWhether this was a preview-only run
localTrunkShaSHA of the local trunk branch
originTrunkShaSHA of origin/<trunk>
fastForwardTrue when local trunk is at or behind origin (fast-forward eligible)
restackCandidatesArtifact branches eligible for restack
activeBuildSkipsBranches/worktrees skipped because active builds are using their worktrees and overlap the stack candidate set
providerCommandsgit-spice commands that ran (or would run in dry-run)
errorError message when outcome is "failed" or "conflict"
Outcome summaries

`skipped` - Stacking is not enabled or no stacking configuration found. Nothing was changed. Show the reason to the user. Suggest enabling stacking with /eforge:config or /eforge:workflow.

`complete` - All eligible artifact branches were restacked onto the latest trunk. Show the list of providerCommands that ran and the restackCandidates that were processed.

`deferred` - Active builds are running and their worktrees overlap the stack candidate set. The restack step was skipped to avoid conflicting with in-flight builds. Show activeBuildSkips and reason. The activeBuildPolicy field will be "defer" when a deferred outcome was explicitly requested. If stacking.sync.afterBuild: true is configured, the daemon will retry deferred syncs after each build completes — no manual action is needed. Otherwise, suggest waiting for active builds to complete and then running /eforge:stack:sync again.

`failed` - The sync command exited with a non-zero code. Show error and the failed providerCommands. Suggest running git-spice manually to investigate, then re-running sync after resolving the issue.

`conflict` - A manual sync restack step hit a merge conflict. Show error and the providerCommands list. Proceed with the manual sync conflict recovery flow below.

Active-build skips

When activeBuildSkips is non-empty, report which branches were excluded and why. These branches were left unchanged because active eforge builds are using their worktrees. When outcome is "deferred", the entire restack step was skipped; when outcome is "complete", only the listed branches were skipped and the rest were restacked. Re-run sync after the active builds complete to restack the skipped branches.

Fast-forward check

When fastForward is false, the local trunk is ahead of origin/<trunk>. Sync uses a fast-forward-only trunk policy: it will not force-push or rebase trunk. Tell the user to push or align their local trunk before syncing.

Step 4: Manual sync conflict recovery

When outcome is "conflict", the conflict came from eforge stack sync. Do not describe this as the stacked PR landing recovery path; landing recovery runs automatically first for provider-classified recoverable restack conflicts, stale-parent landing repair is automatic and branch-scoped when parent artifact ancestry proves trunk integration (tracking initially untracked children against trunk or retargeting already tracked children), and landing-time sync/freshness is automatic for the branch being submitted.

When outcome is "conflict":

  1. Show the error and the exact commands that ran up to the point of conflict.
  2. Instruct the user:

> A merge conflict occurred during manual stack sync restack. To recover: > 1. Run git status to see the conflicting files. > 2. Resolve the conflicts in the affected files. > 3. Run git add <resolved-files> to stage the resolved files. > 4. Run git rebase --continue (or the git-spice equivalent) to resume the restack. > 5. Once the restack finishes, run /eforge:stack:sync again to sync remaining branches.

  1. Offer to re-run the sync after the user confirms they have resolved the conflict.

Dry-run output

When dryRun is true:

  • Make clear that no commands were executed.
  • List each entry in providerCommands with its command and args.
  • Show restackCandidates — the branches that would be restacked.
  • Show activeBuildSkips — branches that would be skipped due to active builds.

Related skills

SkillCommandWhen to suggest
Workflow/eforge:workflowUser wants to configure workflow preset (stacking, landing action, auto-sync)
Config/eforge:configUser wants to enable/disable stacking or change sync config
Status/eforge:statusUser wants to check build progress before sync

Security

  • Security scanPassed, 95 of 100Pattern checks on the skill's files.
  • Model reviewPassed

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

Popularity

Repository stars
69
Repository forks
4
7-day trend score
21

Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.

Works with

Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.

  • Claude Code
  • Cursor
  • GitHub Copilot
  • Windsurf
  • Codex
  • Gemini CLI
  • Cline
  • Amp
  • Roo Code
  • Goose
  • Continue
  • Kilo Code
  • Junie
  • Trae
  • OpenHands
  • Qwen Code
  • AI Agent
  • Tabnine Chat
  • Sourcegraph Cody
  • Amazon Q
  • Firebase Genkit
  • Sweep
  • Devin
  • Phind
  • Mentat
  • Claude Desktop
  • Aider
  • GPT Pilot
  • Plandex
  • bolt.new
  • v0
  • Replit Agent
  • Anse
  • TypingMind
  • BetterChatGPT
  • LibreChat
  • Warp AI
  • Pieces
  • Fig AI
Embed badge
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/eforge-build/eforge/eforge-stack/badge)](https://verified-skill.com/skills/eforge-build/eforge/eforge-stack)

Something wrong with this skill or its page? Tell us.