Your first sync
From any folder, after gap is installed:
gap syncgap sync publishes only merged rules. It refuses when:
- you’re on a branch other than
masteror GitButler’sgitbutler/workspace - you’re in a git worktree
global/,skills/,gap.toml, orgap.lockdiffers fromorigin/HEAD, including untracked files in those paths
Ignored node_modules and .DS_Store do not block. An ignored file blocks only when skills.sh would install it, or when gap reads it (global/AGENTS.md, global/skills.json, top-level global/commands/*.md, gap.toml, gap.lock).
It prints each file it wrote:
~/.claude/rules/global-agent-policy.md~/.pi/agent/APPEND_SYSTEM.md~/.omp/agent/APPEND_SYSTEM.md~/.codex/gap/global-agent-policy.md~/.cursor/rules/global-agent-policy.mdc~/.empryo/EMPRYO.md~/.omp/agent/commands/state-docs.md~/.claude/commands/state-docs.mdEach is a regular file, not a symlink. Policy files are the shared rules. Each top-level global/commands/*.md is also copied, unchanged, to OMP and Claude Code. Start a new session in any agent to load the new rules.
If sync asks before it changes a file it did not write, answer in a terminal. With no terminal, it prints Refusing to replace foreign file, skips that file, publishes the rest, and exits 1.