release: Release v0.2.0#14
Merged
pedronauck merged 1 commit intomainfrom May 7, 2026
Merged
Conversation
|
Important Review skippedReview was skipped due to path filters ⛔ Files ignored due to path filters (15)
CodeRabbit blocks several paths by default. You can override this behavior by explicitly including those paths in the path filters. For example, including ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
Contributor
✅ Dry-Run Completed Successfully📊 Build Summary
📦 Built ArtifactsNot available. This is an automated comment from the release dry-run check. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Release v0.2.0
This PR prepares the release of version v0.2.0.
Changelog
0.2.0 - 2026-05-07
🎉 Features
Support few new commands
BREAKING: support few new commands
📚 Documentation
Update readme
Remove skill from readme
Remove wrong skill
Improve readme and skill
Update readme
Release Notes
Breaking Changes
skeeper.lock is tracked in the main repo
A new
skeeper.lockfile is now committed to the main repository. It pins each main commit to exact sidecar commits per namespace and records sidecar URL, source branch, namespace branch, sidecar commit SHA, content digest, file count, and byte count. The managed hooks write and stage it;skeeper verifyand the CI Action check it;skeeper hydraterestores from it.How to upgrade:
skeeper hooks installonce. The installer also configures theskeeper.lockmerge driver via.gitattributes.skeeper syncto generate the initial lockfile.skeeper.lockalongside your normal change.Do not edit the SHAs in
skeeper.lockby hand. Useskeeper syncorskeeper merge-driverto regenerate it.Strict sync replaces async post-commit
The async post-commit hook with its 750 ms budget and
.git/skeeper/queue.jsonretry queue is gone. Skeeper now installs strictpre-commit,pre-merge-commit, andpre-pushhooks that mirror specs, push the sidecar, writeskeeper.lock, and stage it before Git creates the main commit. If the sidecar push fails, the main commit fails with it.This is intentional: a committed main change can no longer silently drift from its sidecar.
How to upgrade:
skeeper hooks installonce per clone. This removes the legacy post-commit block, installs the strict blocks, writes.gitattributes, and configures theskeeper.lockmerge driver.skeeper.lockifskeeper syncreports new state.SKEEPER_SKIP=1bypass and runskeeper syncafterward.git commit --no-verifyis unsupported.Features
New adopt, untrack, and pattern commands
Three new commands cover the full lifecycle of bringing existing files under sidecar coverage and inspecting how globs route into namespaces:
skeeper adopt <path-or-glob>...mirrors files already in the main index into the sidecar and removes them from main-index tracking in a single transaction. Supports--dry-run,--json,--force,--commit --message <msg>.skeeper untrack <path-or-glob>...reverses adoption: stops tracking matched specs in the main repository after the sidecar has the latest content.skeeper pattern test <glob>previews which working-tree files a glob would match, scoped to a namespace with--namespace.skeeper pattern add <glob> [--namespace <name>] [--exclude <glob>]... [--adopt-existing]updates.skeeper.yml, refreshes the managed.gitignoreblock, and (with--adopt-existing) runs the adoption transaction in one step.All four commands accept
--jsonfor scripting and--forceto override the broad-plan guardrails configured undersettings.guardrails.Audited bypass with SKEEPER_SKIP=1
Skipping a hook should leave a paper trail. Setting
SKEEPER_SKIP=1lets the strictpre-commitandpre-merge-commithooks pass without syncing, but every bypass:.git/skeeper/bypass.jsonwith reason and timestamp.skeeper status,skeeper fsck, and thepre-pushhook until the next successfulskeeper syncclears it.The variable name is configurable via
settings.hooks.allow_skip_env.git commit --no-verifyis unsupported because Git skips all hook code and cannot record the audit entry.Branch-aware namespace history
Sidecar branches now follow the pattern
<namespace>/__branches__/<source-branch>, so feature-branch spec history is isolated frommainautomatically. Two engineers iterating onfeature/auth-redesignsee their own sidecar branch;mainkeeps a clean canonical history.The
__branches__segment is reserved and rejected as a namespace name to keep the routing unambiguous.Official compozy/skeeper GitHub Action
The repo now ships a same-repository GitHub Action (
action.yml) that downloads the released Skeeper binary for the requested version and delegates to the CLI. Default arguments runskeeper verifyso pull requests fail whenskeeper.lockand the sidecar remote disagree.Credential precedence:
ssh-private-keywrites a temp key and setsGIT_SSH_COMMAND; otherwisetokenconfigures HTTPS GitHub credentials; otherwise the runner's existing Git/SSH config is used. Secrets are masked before configuration, the temp key is wiped onalways()cleanup, and Linux/macOS/Windows on amd64/arm64 are all resolved through the same release manifest.Merge driver for skeeper.lock
skeeper.lockis a structured file with sidecar SHAs that 3-way text merge cannot reason about safely. The newskeeper merge-drivercommand resolves conflicts deterministically by re-running reconciliation against the merged worktree, andskeeper hooks installwires it through.gitattributesautomatically.Try it:
skeeper hooks install git merge other-branch # any skeeper.lock conflict regenerates instead of abortingWhen merging outside the hook (for example a rebase resolved by hand), run
skeeper syncto refresh the lock and stage it.skeeper log --latest
skeeper log <path>reads the locked sidecar commit by default, matchingskeeper hydrate. The new--latestflag fetches the namespace branch and reads its current tip instead, which is useful when investigating why the working tree disagrees with the lockfile or when reviewing in-flight changes from another contributor before they land inmain.Repair workflow for failed syncs
When a strict hook fails partway through (network drop, auth expiry, sidecar contention), Skeeper now records a resumable transaction at
.git/skeeper/transaction.jsoninstead of leaving the working tree in an unknown state. The newskeeper repairsubcommands act on that record:skeeper repair statusshows the active transaction phase and any pending audit bypass.skeeper repair resumere-runs reconciliation against the recorded plan once the underlying problem is fixed.skeeper repair abortclears the transaction — only safe before the main index has been mutated.skeeper statusalso surfaces the repair state inline so you do not need to remember to check.Read-only verification commands
Three new read-only commands prove sidecar state without mutating files or refs:
skeeper verifycross-checksskeeper.lockagainst the sidecar remote. The same path runs inside the managedpre-pushhook and inside the GitHub Action.skeeper fsckcompares the working tree's spec files against the locked sidecar content and reports drift with structured diagnostic codes.skeeper hooks checkvalidates that the managed hook blocks are present, ordered last inpre-commit, and that the merge driver is configured.Every command supports
--jsonfor CI consumption.verifyandfsckaccept--source-branchto check a specific branch instead of the currentHEAD.Highlights
skeeper hydrate restores from locked commits
skeeper hydrateno longer reaches for a best-effort branch tip. It reads the exact sidecar commit SHA stored inskeeper.lockfor the current main commit and restores spec files from that commit. Fresh clones, bisects, and historical checkouts all see the spec state that actually shipped with the code, not whatever happens to be at the head of the namespace branch today.If you need the live tip for diagnostics,
skeeper log <path> --latestandskeeper statusstill surface it.