@compozy/skeeper 0.2.0 → 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 +172 -56
- package/package.json +16 -16
package/README.md
CHANGED
|
@@ -29,9 +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
|
-
- **
|
|
34
|
-
- **
|
|
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.
|
|
35
37
|
|
|
36
38
|
## 🎯 Who Is This For
|
|
37
39
|
|
|
@@ -41,16 +43,51 @@ It mirrors `SPEC.md`, ADRs, RFCs, and AI plan files into a sidecar Git repositor
|
|
|
41
43
|
|
|
42
44
|
## 📦 Installation
|
|
43
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
|
+
|
|
44
61
|
```bash
|
|
45
62
|
go install github.com/compozy/skeeper/cmd/skeeper@latest
|
|
46
63
|
```
|
|
47
64
|
|
|
48
|
-
|
|
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
|
+
```
|
|
49
86
|
|
|
50
87
|
Prerequisites:
|
|
51
88
|
|
|
52
89
|
- `git` on `PATH`
|
|
53
|
-
- `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`
|
|
54
91
|
|
|
55
92
|
## 🔄 How It Works
|
|
56
93
|
|
|
@@ -73,8 +110,8 @@ flowchart TD
|
|
|
73
110
|
|
|
74
111
|
Block --> Commit[✅ Main commit proceeds]:::ok
|
|
75
112
|
Commit --> Push([🚀 git push]):::user
|
|
76
|
-
Push --> Verify[🔍 Skeeper pre-push
|
|
77
|
-
Verify --> Done([🎉 Sidecar
|
|
113
|
+
Push --> Verify[🔍 Skeeper pre-push status check]:::skeeper
|
|
114
|
+
Verify --> Done([🎉 Sidecar checked]):::ok
|
|
78
115
|
|
|
79
116
|
classDef user fill:#dbeafe,stroke:#1d4ed8,color:#0c1e3e
|
|
80
117
|
classDef skeeper fill:#fef3c7,stroke:#b45309,color:#3b2c00
|
|
@@ -82,7 +119,7 @@ flowchart TD
|
|
|
82
119
|
class S1,S2,S3,S4,S5 skeeper
|
|
83
120
|
```
|
|
84
121
|
|
|
85
|
-
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.
|
|
86
123
|
|
|
87
124
|
## ⚙️ Configuration
|
|
88
125
|
|
|
@@ -100,8 +137,6 @@ namespaces:
|
|
|
100
137
|
- "**/*.spec.md"
|
|
101
138
|
exclude:
|
|
102
139
|
- "docs/specs/private/**"
|
|
103
|
-
|
|
104
|
-
bootstrap: brew tap compozy/compozy && brew install --cask skeeper
|
|
105
140
|
```
|
|
106
141
|
|
|
107
142
|
Advanced operational defaults are optional:
|
|
@@ -136,6 +171,8 @@ Local-only state lives under `.git/skeeper/`:
|
|
|
136
171
|
| ------------------ | ---------------------------------------------- |
|
|
137
172
|
| `transaction.json` | Current resumable mutating operation and phase |
|
|
138
173
|
| `bypass.json` | Latest audited strict-hook bypass |
|
|
174
|
+
| `hydration.json` | Last locked sidecar blobs hydrated locally |
|
|
175
|
+
| `rescue/` | Local files moved aside before prune/overwrite |
|
|
139
176
|
|
|
140
177
|
## 🚀 Quick Start
|
|
141
178
|
|
|
@@ -150,8 +187,8 @@ skeeper init \
|
|
|
150
187
|
--sidecar-name myproject-specs \
|
|
151
188
|
--visibility private \
|
|
152
189
|
--namespace project \
|
|
153
|
-
--
|
|
154
|
-
--
|
|
190
|
+
--track "**/SPEC.md" \
|
|
191
|
+
--track "docs/specs/**"
|
|
155
192
|
```
|
|
156
193
|
|
|
157
194
|
Use an existing shared sidecar:
|
|
@@ -160,7 +197,7 @@ Use an existing shared sidecar:
|
|
|
160
197
|
skeeper init \
|
|
161
198
|
--sidecar git@github.com:user/shared-specs.git \
|
|
162
199
|
--namespace project \
|
|
163
|
-
--
|
|
200
|
+
--track "**/SPEC.md"
|
|
164
201
|
```
|
|
165
202
|
|
|
166
203
|
Then edit specs and commit normally:
|
|
@@ -175,66 +212,140 @@ The `pre-commit` and `pre-merge-commit` hooks mirror specs and stage `skeeper.lo
|
|
|
175
212
|
|
|
176
213
|
## 🛟 Failed Sync Recovery
|
|
177
214
|
|
|
178
|
-
|
|
215
|
+
Start with status. It prints the health summary and the next action:
|
|
179
216
|
|
|
180
217
|
```bash
|
|
181
|
-
skeeper
|
|
218
|
+
skeeper status --paths
|
|
182
219
|
```
|
|
183
220
|
|
|
184
|
-
|
|
221
|
+
Use repair as the single recovery door for broken local state, stale bypasses, hook drift, missing sidecar objects, and interrupted transactions:
|
|
185
222
|
|
|
186
223
|
```bash
|
|
187
|
-
skeeper repair
|
|
224
|
+
skeeper repair
|
|
225
|
+
skeeper status --check
|
|
188
226
|
```
|
|
189
227
|
|
|
190
|
-
|
|
228
|
+
When two clones have different docs and both sides should be preserved, use the union workflow:
|
|
191
229
|
|
|
192
230
|
```bash
|
|
193
|
-
skeeper
|
|
231
|
+
skeeper sync
|
|
232
|
+
git add skeeper.lock
|
|
233
|
+
git commit -m "skeeper: sync docs"
|
|
234
|
+
git push
|
|
194
235
|
```
|
|
195
236
|
|
|
196
|
-
|
|
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>
|
|
197
243
|
|
|
198
244
|
```bash
|
|
199
|
-
skeeper
|
|
200
|
-
skeeper verify
|
|
245
|
+
skeeper init [flags]
|
|
201
246
|
```
|
|
202
247
|
|
|
203
|
-
|
|
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>
|
|
204
264
|
|
|
205
265
|
```bash
|
|
206
|
-
skeeper
|
|
207
|
-
|
|
208
|
-
|
|
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>]
|
|
209
309
|
skeeper untrack <path-or-glob>... [--dry-run] [--json] [--force] [--commit --message <msg>]
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
skeeper
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
skeeper
|
|
220
|
-
|
|
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>]
|
|
221
334
|
skeeper version
|
|
335
|
+
skeeper completion <bash|fish|powershell|zsh>
|
|
222
336
|
```
|
|
223
337
|
|
|
224
|
-
|
|
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.
|
|
225
339
|
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
- `hydrate` restores from locked sidecar commits by default.
|
|
232
|
-
- `log --latest` fetches the namespace branch and reads its latest history instead of the locked commit.
|
|
233
|
-
- `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.
|
|
340
|
+
`version` prints build version, commit, and build date.
|
|
341
|
+
|
|
342
|
+
`completion` is provided by Cobra and generates shell completion scripts.
|
|
343
|
+
|
|
344
|
+
</details>
|
|
234
345
|
|
|
235
346
|
## 🤖 CI Action
|
|
236
347
|
|
|
237
|
-
Use the same-repository Action to
|
|
348
|
+
Use the same-repository Action to check Skeeper health in CI:
|
|
238
349
|
|
|
239
350
|
```yaml
|
|
240
351
|
name: skeeper
|
|
@@ -245,16 +356,17 @@ on:
|
|
|
245
356
|
branches: [main]
|
|
246
357
|
|
|
247
358
|
jobs:
|
|
248
|
-
|
|
359
|
+
check:
|
|
249
360
|
runs-on: ubuntu-latest
|
|
250
361
|
steps:
|
|
251
362
|
- uses: actions/checkout@v4
|
|
252
363
|
with:
|
|
253
364
|
fetch-depth: 0
|
|
254
|
-
- uses: compozy/skeeper@v0.
|
|
365
|
+
- uses: compozy/skeeper@v0.2.1
|
|
255
366
|
with:
|
|
256
367
|
args: |
|
|
257
|
-
|
|
368
|
+
status
|
|
369
|
+
--check
|
|
258
370
|
--json
|
|
259
371
|
ssh-private-key: ${{ secrets.SKEEPER_SSH_PRIVATE_KEY }}
|
|
260
372
|
```
|
|
@@ -265,25 +377,29 @@ Credential precedence:
|
|
|
265
377
|
2. `token` configures HTTPS GitHub credentials.
|
|
266
378
|
3. Existing runner Git/SSH credentials are used when neither input is provided.
|
|
267
379
|
|
|
268
|
-
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.
|
|
269
381
|
|
|
270
382
|
## 🩺 Troubleshooting
|
|
271
383
|
|
|
272
384
|
**`SKEEPER_SKIP=1` was used**
|
|
273
385
|
|
|
274
|
-
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.
|
|
275
387
|
|
|
276
388
|
**Sidecar push was rejected**
|
|
277
389
|
|
|
278
|
-
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.
|
|
279
391
|
|
|
280
392
|
**`skeeper.lock` conflicts during merge**
|
|
281
393
|
|
|
282
|
-
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`.
|
|
395
|
+
|
|
396
|
+
**`skeeper pull` or `skeeper restore` is blocked by local managed files**
|
|
397
|
+
|
|
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.
|
|
283
399
|
|
|
284
|
-
**`
|
|
400
|
+
**`status --check` reports a lock mismatch**
|
|
285
401
|
|
|
286
|
-
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`.
|
|
287
403
|
|
|
288
404
|
**A namespace overlaps another namespace**
|
|
289
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
|
}
|