@compozy/skeeper 0.2.1 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +168 -65
- package/package.json +16 -16
package/README.md
CHANGED
|
@@ -29,10 +29,11 @@ It mirrors `SPEC.md`, ADRs, RFCs, and AI plan files into a sidecar Git repositor
|
|
|
29
29
|
- **Specs stay local to their code.** Edit `SPEC.md`, `docs/specs/**`, `.claude/plans/**`, ADRs, RFCs, or custom globs where they naturally belong.
|
|
30
30
|
- **Shared sidecars without collisions.** Namespaces isolate stored paths and sidecar branches inside one sidecar remote.
|
|
31
31
|
- **Branch-aware history.** Namespace branches use `<namespace>/__branches__/<source-branch>`.
|
|
32
|
-
- **
|
|
33
|
-
- **Safe
|
|
34
|
-
- **
|
|
35
|
-
- **
|
|
32
|
+
- **Git-like spec sync.** `skeeper pull` brings remote docs in, `skeeper push` publishes local docs, and `skeeper sync` runs pull then push.
|
|
33
|
+
- **Safe by default.** Manual push does not delete remote-only docs just because this clone does not have them; destructive pruning requires `--prune`.
|
|
34
|
+
- **Fresh-clone restore.** `skeeper restore --all` restores files from the exact sidecar commits recorded in `skeeper.lock`.
|
|
35
|
+
- **Small command surface.** Daily use is `status`, `pull`, `push`, `sync`, `restore`, `track`, `untrack`, `repair`, `log`, and `version`; Git hook plumbing lives behind hidden `skeeper internal` commands.
|
|
36
|
+
- **Skill for AI agents.** A bundled skill at [`skills/skeeper/SKILL.md`](skills/skeeper/SKILL.md) teaches coding agents the strict-sync workflow, namespaces, and recovery commands.
|
|
36
37
|
|
|
37
38
|
## 🎯 Who Is This For
|
|
38
39
|
|
|
@@ -42,16 +43,51 @@ It mirrors `SPEC.md`, ADRs, RFCs, and AI plan files into a sidecar Git repositor
|
|
|
42
43
|
|
|
43
44
|
## 📦 Installation
|
|
44
45
|
|
|
46
|
+
#### Homebrew
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
brew tap compozy/compozy
|
|
50
|
+
brew install --cask skeeper
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
#### NPM
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
npm install -g @compozy/skeeper
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
#### Go
|
|
60
|
+
|
|
45
61
|
```bash
|
|
46
62
|
go install github.com/compozy/skeeper/cmd/skeeper@latest
|
|
47
63
|
```
|
|
48
64
|
|
|
49
|
-
|
|
65
|
+
#### GitHub Releases
|
|
66
|
+
|
|
67
|
+
Download the archive for your OS and architecture from [GitHub Releases](https://github.com/compozy/skeeper/releases), then place the `skeeper` binary on your `PATH`.
|
|
68
|
+
|
|
69
|
+
#### From Source
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
git clone git@github.com:compozy/skeeper.git
|
|
73
|
+
cd skeeper
|
|
74
|
+
make verify
|
|
75
|
+
go build -o bin/skeeper ./cmd/skeeper
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
#### Docker
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
git clone git@github.com:compozy/skeeper.git
|
|
82
|
+
cd skeeper
|
|
83
|
+
make docker-build
|
|
84
|
+
docker run --rm -v "$PWD:/workspace" -w /workspace skeeper:dev status
|
|
85
|
+
```
|
|
50
86
|
|
|
51
87
|
Prerequisites:
|
|
52
88
|
|
|
53
89
|
- `git` on `PATH`
|
|
54
|
-
- `gh` only when `skeeper init` creates a new GitHub sidecar repo
|
|
90
|
+
- `gh` only when `skeeper init` creates a new GitHub sidecar repo; existing sidecars can be reused with `--sidecar`
|
|
55
91
|
|
|
56
92
|
## 🔄 How It Works
|
|
57
93
|
|
|
@@ -74,8 +110,8 @@ flowchart TD
|
|
|
74
110
|
|
|
75
111
|
Block --> Commit[✅ Main commit proceeds]:::ok
|
|
76
112
|
Commit --> Push([🚀 git push]):::user
|
|
77
|
-
Push --> Verify[🔍 Skeeper pre-push
|
|
78
|
-
Verify --> Done([🎉 Sidecar
|
|
113
|
+
Push --> Verify[🔍 Skeeper pre-push status check]:::skeeper
|
|
114
|
+
Verify --> Done([🎉 Sidecar checked]):::ok
|
|
79
115
|
|
|
80
116
|
classDef user fill:#dbeafe,stroke:#1d4ed8,color:#0c1e3e
|
|
81
117
|
classDef skeeper fill:#fef3c7,stroke:#b45309,color:#3b2c00
|
|
@@ -83,7 +119,7 @@ flowchart TD
|
|
|
83
119
|
class S1,S2,S3,S4,S5 skeeper
|
|
84
120
|
```
|
|
85
121
|
|
|
86
|
-
If sync fails, the commit fails. This is intentional: a committed main change should not silently drift from the sidecar. The audited bypass is `SKEEPER_SKIP=1`; it records `.git/skeeper/bypass.json`, prints a warning, and `
|
|
122
|
+
If sync fails, the commit fails. This is intentional: a committed main change should not silently drift from the sidecar. The audited bypass is `SKEEPER_SKIP=1`; it records `.git/skeeper/bypass.json`, prints a warning, and `status --check`, `repair`, and the managed `pre-push` hook continue to surface stale-lock diagnostics until `skeeper sync` or `skeeper repair` repairs the state. `git commit --no-verify` is unsupported because Git skips all hook code and cannot record an audit trail.
|
|
87
123
|
|
|
88
124
|
## ⚙️ Configuration
|
|
89
125
|
|
|
@@ -151,8 +187,8 @@ skeeper init \
|
|
|
151
187
|
--sidecar-name myproject-specs \
|
|
152
188
|
--visibility private \
|
|
153
189
|
--namespace project \
|
|
154
|
-
--
|
|
155
|
-
--
|
|
190
|
+
--track "**/SPEC.md" \
|
|
191
|
+
--track "docs/specs/**"
|
|
156
192
|
```
|
|
157
193
|
|
|
158
194
|
Use an existing shared sidecar:
|
|
@@ -161,7 +197,7 @@ Use an existing shared sidecar:
|
|
|
161
197
|
skeeper init \
|
|
162
198
|
--sidecar git@github.com:user/shared-specs.git \
|
|
163
199
|
--namespace project \
|
|
164
|
-
--
|
|
200
|
+
--track "**/SPEC.md"
|
|
165
201
|
```
|
|
166
202
|
|
|
167
203
|
Then edit specs and commit normally:
|
|
@@ -176,74 +212,140 @@ The `pre-commit` and `pre-merge-commit` hooks mirror specs and stage `skeeper.lo
|
|
|
176
212
|
|
|
177
213
|
## 🛟 Failed Sync Recovery
|
|
178
214
|
|
|
179
|
-
|
|
215
|
+
Start with status. It prints the health summary and the next action:
|
|
180
216
|
|
|
181
217
|
```bash
|
|
182
|
-
skeeper
|
|
218
|
+
skeeper status --paths
|
|
183
219
|
```
|
|
184
220
|
|
|
185
|
-
|
|
221
|
+
Use repair as the single recovery door for broken local state, stale bypasses, hook drift, missing sidecar objects, and interrupted transactions:
|
|
186
222
|
|
|
187
223
|
```bash
|
|
188
|
-
skeeper repair
|
|
224
|
+
skeeper repair
|
|
225
|
+
skeeper status --check
|
|
189
226
|
```
|
|
190
227
|
|
|
191
|
-
|
|
228
|
+
When two clones have different docs and both sides should be preserved, use the union workflow:
|
|
192
229
|
|
|
193
230
|
```bash
|
|
194
|
-
skeeper
|
|
231
|
+
skeeper sync
|
|
232
|
+
git add skeeper.lock
|
|
233
|
+
git commit -m "skeeper: sync docs"
|
|
234
|
+
git push
|
|
195
235
|
```
|
|
196
236
|
|
|
197
|
-
|
|
237
|
+
## 📖 CLI Reference
|
|
238
|
+
|
|
239
|
+
The public surface is intentionally small. `status` tells you what is wrong and what to run next; `repair` is the only public recovery door; Git hook and merge-driver plumbing runs through hidden `skeeper internal` commands.
|
|
240
|
+
|
|
241
|
+
<details>
|
|
242
|
+
<summary><code>skeeper init</code> — Create or connect a sidecar repository</summary>
|
|
198
243
|
|
|
199
244
|
```bash
|
|
200
|
-
skeeper
|
|
201
|
-
skeeper verify
|
|
245
|
+
skeeper init [flags]
|
|
202
246
|
```
|
|
203
247
|
|
|
204
|
-
|
|
248
|
+
Run `init` once per main repository. Without flags in an interactive terminal, it opens the guided setup. With flags, it can create a GitHub sidecar or connect an existing remote. `init` installs hooks and merge-driver wiring.
|
|
249
|
+
|
|
250
|
+
| Flag | Default | Description |
|
|
251
|
+
| ---------------- | --------- | ------------------------------------------------- |
|
|
252
|
+
| `--sidecar` | | Existing sidecar repository URL |
|
|
253
|
+
| `--sidecar-name` | | GitHub sidecar repository name or `OWNER/REPO` |
|
|
254
|
+
| `--visibility` | `private` | GitHub repository visibility |
|
|
255
|
+
| `--namespace` | | Sidecar namespace for this project |
|
|
256
|
+
| `--track` | | Managed spec glob; repeat for multiple globs |
|
|
257
|
+
| `--patterns` | | Compatibility spelling for managed spec globs |
|
|
258
|
+
| `--bootstrap` | | Optional install command stored in `.skeeper.yml` |
|
|
259
|
+
|
|
260
|
+
</details>
|
|
261
|
+
|
|
262
|
+
<details>
|
|
263
|
+
<summary><code>skeeper status</code> — Inspect sync health and next action</summary>
|
|
205
264
|
|
|
206
265
|
```bash
|
|
207
|
-
skeeper
|
|
208
|
-
|
|
209
|
-
|
|
266
|
+
skeeper status [--json] [--check] [--paths]
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
Use `status` before guessing. It reports sidecar URL, current branch, lock state, hook health, namespace drift counts, bypass state, active transactions, diagnostics, and a next-action line. `--check` exits non-zero when Skeeper needs action, making it the CI health check. `--paths` includes per-path drift classes such as `local_only`, `missing_local`, `local_modified`, and `both_modified_conflict`.
|
|
270
|
+
|
|
271
|
+
</details>
|
|
272
|
+
|
|
273
|
+
<details>
|
|
274
|
+
<summary><code>skeeper pull</code>, <code>push</code>, and <code>sync</code> — Git-like spec convergence</summary>
|
|
275
|
+
|
|
276
|
+
```bash
|
|
277
|
+
skeeper pull [--json] [--no-git]
|
|
278
|
+
skeeper push [--dry-run] [--json] [--commit --message <msg>] [--force] [--prune]
|
|
279
|
+
skeeper sync [--dry-run] [--json] [--commit --message <msg>] [--force] [--prune]
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
Use `pull` to fetch sidecar refs and materialize remote docs into the working tree while preserving local docs. It fast-forwards the main repo unless `--no-git` is set.
|
|
283
|
+
|
|
284
|
+
Use `push` to publish local managed docs, write `skeeper.lock`, and stage the lockfile. By default `push` is non-destructive: remote-only docs stay in the sidecar.
|
|
285
|
+
|
|
286
|
+
Use `sync` for the common two-clone flow. It runs a sidecar pull, then a push, so disjoint docs from two clones converge to the union.
|
|
287
|
+
|
|
288
|
+
`--prune` is explicit and destructive: it deletes remote-only sidecar files that are absent locally.
|
|
289
|
+
|
|
290
|
+
</details>
|
|
291
|
+
|
|
292
|
+
<details>
|
|
293
|
+
<summary><code>skeeper restore</code> — Restore local files from locked sidecar state</summary>
|
|
294
|
+
|
|
295
|
+
```bash
|
|
296
|
+
skeeper restore <path...> [--dry-run] [--json]
|
|
297
|
+
skeeper restore --all [--dry-run] [--json]
|
|
298
|
+
```
|
|
299
|
+
|
|
300
|
+
Use `restore <path>` to overwrite selected local files with the content pinned by `skeeper.lock`. Existing local content is moved into rescue storage before overwrite. Use `restore --all` after a fresh clone, bisect, or checkout when you need every locked managed file materialized locally. Use `pull` when you want the latest remote sidecar tip instead of the locked state.
|
|
301
|
+
|
|
302
|
+
</details>
|
|
303
|
+
|
|
304
|
+
<details>
|
|
305
|
+
<summary><code>skeeper track</code> and <code>untrack</code> — Change managed coverage</summary>
|
|
306
|
+
|
|
307
|
+
```bash
|
|
308
|
+
skeeper track <glob> [--namespace <name>] [--exclude <glob>]... [--sync] [--dry-run] [--json] [--force] [--commit --message <msg>]
|
|
210
309
|
skeeper untrack <path-or-glob>... [--dry-run] [--json] [--force] [--commit --message <msg>]
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
skeeper
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
skeeper
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
skeeper
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
310
|
+
```
|
|
311
|
+
|
|
312
|
+
Use `track` to add a managed glob to `.skeeper.yml` and the managed `.gitignore` block. Add `--sync` when matching files already exist and should be published into the sidecar immediately.
|
|
313
|
+
|
|
314
|
+
Use `untrack` when a managed path should stop being tracked in the main repository after the sidecar has the content.
|
|
315
|
+
|
|
316
|
+
</details>
|
|
317
|
+
|
|
318
|
+
<details>
|
|
319
|
+
<summary><code>skeeper repair</code> — Diagnose and repair local Skeeper state</summary>
|
|
320
|
+
|
|
321
|
+
```bash
|
|
322
|
+
skeeper repair [--check] [--json]
|
|
323
|
+
```
|
|
324
|
+
|
|
325
|
+
`repair` handles hook drift, strict-hook bypasses, interrupted transactions, missing local sidecar objects, and rescue reporting. It applies safe repairs automatically and stops on ambiguous overwrite/delete decisions. Use `repair --check` for read-only diagnosis.
|
|
326
|
+
|
|
327
|
+
</details>
|
|
328
|
+
|
|
329
|
+
<details>
|
|
330
|
+
<summary><code>skeeper log</code>, <code>version</code>, and <code>completion</code> — Utility commands</summary>
|
|
331
|
+
|
|
332
|
+
```bash
|
|
333
|
+
skeeper log <path> [--latest] [--source-branch <branch>]
|
|
227
334
|
skeeper version
|
|
335
|
+
skeeper completion <bash|fish|powershell|zsh>
|
|
228
336
|
```
|
|
229
337
|
|
|
230
|
-
|
|
338
|
+
`log` shows sidecar history for one managed spec path. By default it reads the locked commit; use `--latest` to fetch and inspect the latest namespace branch instead.
|
|
339
|
+
|
|
340
|
+
`version` prints build version, commit, and build date.
|
|
341
|
+
|
|
342
|
+
`completion` is provided by Cobra and generates shell completion scripts.
|
|
231
343
|
|
|
232
|
-
|
|
233
|
-
- `adopt` and `untrack` push sidecar coverage before removing main-index tracking.
|
|
234
|
-
- `pattern add --adopt-existing` updates `.skeeper.yml`, updates the managed `.gitignore` block, then runs the same adoption transaction.
|
|
235
|
-
- `verify` checks `skeeper.lock` against the sidecar remote and does not require hooks.
|
|
236
|
-
- `fsck` compares current working-tree specs against locked sidecar content, reports exact drift paths, and does not mutate files or refs.
|
|
237
|
-
- `hydrate` restores from locked sidecar commits by default, but fails closed if local managed files would be overwritten or orphaned.
|
|
238
|
-
- `reconcile` is the explicit status/add/merge equivalent for managed documents. Use `--adopt-local` to publish local-only files, or `--prune-local` to move them to `.git/skeeper/rescue/<id>/` before restoring.
|
|
239
|
-
- `diff` lists per-path drift classes such as `local_only`, `missing_local`, `local_modified`, and `both_modified_conflict`.
|
|
240
|
-
- `update` is the high-level clone workflow for agents: safe fast-forward, verify, hydrate, fsck, and hook validation.
|
|
241
|
-
- `log --latest` fetches the namespace branch and reads its latest history instead of the locked commit.
|
|
242
|
-
- `hooks install` removes legacy Skeeper post-commit blocks, installs strict pre-commit/pre-merge-commit/pre-push blocks, writes `.gitattributes`, and configures the `skeeper.lock` merge driver.
|
|
344
|
+
</details>
|
|
243
345
|
|
|
244
346
|
## 🤖 CI Action
|
|
245
347
|
|
|
246
|
-
Use the same-repository Action to
|
|
348
|
+
Use the same-repository Action to check Skeeper health in CI:
|
|
247
349
|
|
|
248
350
|
```yaml
|
|
249
351
|
name: skeeper
|
|
@@ -254,16 +356,17 @@ on:
|
|
|
254
356
|
branches: [main]
|
|
255
357
|
|
|
256
358
|
jobs:
|
|
257
|
-
|
|
359
|
+
check:
|
|
258
360
|
runs-on: ubuntu-latest
|
|
259
361
|
steps:
|
|
260
362
|
- uses: actions/checkout@v4
|
|
261
363
|
with:
|
|
262
364
|
fetch-depth: 0
|
|
263
|
-
- uses: compozy/skeeper@v0.
|
|
365
|
+
- uses: compozy/skeeper@v0.2.1
|
|
264
366
|
with:
|
|
265
367
|
args: |
|
|
266
|
-
|
|
368
|
+
status
|
|
369
|
+
--check
|
|
267
370
|
--json
|
|
268
371
|
ssh-private-key: ${{ secrets.SKEEPER_SSH_PRIVATE_KEY }}
|
|
269
372
|
```
|
|
@@ -274,29 +377,29 @@ Credential precedence:
|
|
|
274
377
|
2. `token` configures HTTPS GitHub credentials.
|
|
275
378
|
3. Existing runner Git/SSH credentials are used when neither input is provided.
|
|
276
379
|
|
|
277
|
-
Secrets are masked before configuration. The wrapper downloads the released Skeeper binary for the action ref/tag and delegates
|
|
380
|
+
Secrets are masked before configuration. The wrapper downloads the released Skeeper binary for the action ref/tag and delegates the status check to the CLI.
|
|
278
381
|
|
|
279
382
|
## 🩺 Troubleshooting
|
|
280
383
|
|
|
281
384
|
**`SKEEPER_SKIP=1` was used**
|
|
282
385
|
|
|
283
|
-
Run `skeeper status`, then `skeeper sync`, then `skeeper
|
|
386
|
+
Run `skeeper status`, then `skeeper sync`, then `skeeper status --check`. The bypass journal remains visible until sync clears it.
|
|
284
387
|
|
|
285
388
|
**Sidecar push was rejected**
|
|
286
389
|
|
|
287
|
-
Run `skeeper repair
|
|
390
|
+
Run `skeeper repair --check`. If the failure is safe to repair automatically, run `skeeper repair` after fixing network/auth or sidecar contention. If the report names an ambiguous overwrite/delete decision, inspect the listed files manually and use `skeeper sync` after resolving it.
|
|
288
391
|
|
|
289
392
|
**`skeeper.lock` conflicts during merge**
|
|
290
393
|
|
|
291
|
-
Run `skeeper
|
|
394
|
+
Run `skeeper repair` to ensure hooks and merge-driver wiring are configured, then rerun the merge. Manual editing of scalar sidecar SHAs is unsupported; regenerate the lock through `skeeper sync`.
|
|
292
395
|
|
|
293
|
-
**`skeeper
|
|
396
|
+
**`skeeper pull` or `skeeper restore` is blocked by local managed files**
|
|
294
397
|
|
|
295
|
-
Run `skeeper
|
|
398
|
+
Run `skeeper status --paths` to inspect exact paths. Use `skeeper sync` when local-only docs should be merged with remote docs. Use `skeeper push --prune` only when the local set is intentionally authoritative and remote-only docs should be pruned.
|
|
296
399
|
|
|
297
|
-
**`
|
|
400
|
+
**`status --check` reports a lock mismatch**
|
|
298
401
|
|
|
299
|
-
The main commit and sidecar remote disagree. Run `skeeper sync`, include the updated `skeeper.lock`, and rerun `skeeper
|
|
402
|
+
The main commit and sidecar remote disagree. Run `skeeper sync`, include the updated `skeeper.lock`, and rerun `skeeper status --check`.
|
|
300
403
|
|
|
301
404
|
**A namespace overlaps another namespace**
|
|
302
405
|
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@compozy/skeeper",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.3.0",
|
|
5
5
|
"description": "Sidecar Git versioning for spec artifacts",
|
|
6
6
|
"scripts": {
|
|
7
7
|
"postinstall": "node install.js",
|
|
@@ -27,63 +27,63 @@
|
|
|
27
27
|
},
|
|
28
28
|
"archives": {
|
|
29
29
|
"darwin-arm64": {
|
|
30
|
-
"name": "skeeper_0.
|
|
31
|
-
"url": "https://github.com/compozy/skeeper/releases/download/v0.
|
|
30
|
+
"name": "skeeper_0.3.0_darwin_arm64.tar.gz",
|
|
31
|
+
"url": "https://github.com/compozy/skeeper/releases/download/v0.3.0/skeeper_0.3.0_darwin_arm64.tar.gz",
|
|
32
32
|
"bins": [
|
|
33
33
|
"skeeper"
|
|
34
34
|
],
|
|
35
35
|
"format": "tar.gz",
|
|
36
36
|
"checksum": {
|
|
37
37
|
"algorithm": "sha256",
|
|
38
|
-
"digest": "
|
|
38
|
+
"digest": "3aa2e55272c6de252f6064cd35fbf4ce328715f6835c3810b6b18be2ba23cd84"
|
|
39
39
|
}
|
|
40
40
|
},
|
|
41
41
|
"darwin-x64": {
|
|
42
|
-
"name": "skeeper_0.
|
|
43
|
-
"url": "https://github.com/compozy/skeeper/releases/download/v0.
|
|
42
|
+
"name": "skeeper_0.3.0_darwin_x86_64.tar.gz",
|
|
43
|
+
"url": "https://github.com/compozy/skeeper/releases/download/v0.3.0/skeeper_0.3.0_darwin_x86_64.tar.gz",
|
|
44
44
|
"bins": [
|
|
45
45
|
"skeeper"
|
|
46
46
|
],
|
|
47
47
|
"format": "tar.gz",
|
|
48
48
|
"checksum": {
|
|
49
49
|
"algorithm": "sha256",
|
|
50
|
-
"digest": "
|
|
50
|
+
"digest": "d56c7ab028576cc50f6e9f3dd4b7c84909ef4baee6dfa9dcb9e98e32d77b0319"
|
|
51
51
|
}
|
|
52
52
|
},
|
|
53
53
|
"linux-arm64": {
|
|
54
|
-
"name": "skeeper_0.
|
|
55
|
-
"url": "https://github.com/compozy/skeeper/releases/download/v0.
|
|
54
|
+
"name": "skeeper_0.3.0_linux_arm64.tar.gz",
|
|
55
|
+
"url": "https://github.com/compozy/skeeper/releases/download/v0.3.0/skeeper_0.3.0_linux_arm64.tar.gz",
|
|
56
56
|
"bins": [
|
|
57
57
|
"skeeper"
|
|
58
58
|
],
|
|
59
59
|
"format": "tar.gz",
|
|
60
60
|
"checksum": {
|
|
61
61
|
"algorithm": "sha256",
|
|
62
|
-
"digest": "
|
|
62
|
+
"digest": "457f1b62137886afa56cdbf48b902b01fc81abc10e4431619ca1a8bbca5b73e1"
|
|
63
63
|
}
|
|
64
64
|
},
|
|
65
65
|
"linux-x64": {
|
|
66
|
-
"name": "skeeper_0.
|
|
67
|
-
"url": "https://github.com/compozy/skeeper/releases/download/v0.
|
|
66
|
+
"name": "skeeper_0.3.0_linux_x86_64.tar.gz",
|
|
67
|
+
"url": "https://github.com/compozy/skeeper/releases/download/v0.3.0/skeeper_0.3.0_linux_x86_64.tar.gz",
|
|
68
68
|
"bins": [
|
|
69
69
|
"skeeper"
|
|
70
70
|
],
|
|
71
71
|
"format": "tar.gz",
|
|
72
72
|
"checksum": {
|
|
73
73
|
"algorithm": "sha256",
|
|
74
|
-
"digest": "
|
|
74
|
+
"digest": "58697a19879045eb0c6f5d92711697f58f78926dc87e772608e8cf99bc614525"
|
|
75
75
|
}
|
|
76
76
|
},
|
|
77
77
|
"win32-x64": {
|
|
78
|
-
"name": "skeeper_0.
|
|
79
|
-
"url": "https://github.com/compozy/skeeper/releases/download/v0.
|
|
78
|
+
"name": "skeeper_0.3.0_windows_x86_64.zip",
|
|
79
|
+
"url": "https://github.com/compozy/skeeper/releases/download/v0.3.0/skeeper_0.3.0_windows_x86_64.zip",
|
|
80
80
|
"bins": [
|
|
81
81
|
"skeeper.exe"
|
|
82
82
|
],
|
|
83
83
|
"format": "zip",
|
|
84
84
|
"checksum": {
|
|
85
85
|
"algorithm": "sha256",
|
|
86
|
-
"digest": "
|
|
86
|
+
"digest": "630c98e8f22fb91777602c704a4e21a70532dfada3bb604477a1997d95951768"
|
|
87
87
|
}
|
|
88
88
|
}
|
|
89
89
|
}
|