$npx -y skills add asteroid-belt/skulto --skill skulto-release-certCertify a skulto build for Homebrew prod release. Runs three passes — unit/lint/cross-compile, clean-slate CLI walkthrough, and security audit — then produces a certification summary.
| 1 | # Skulto Release Certification |
| 2 | |
| 3 | Certify a build for Homebrew production release. Three passes, all must be green before shipping. |
| 4 | |
| 5 | ## When to Use |
| 6 | |
| 7 | Before tagging a release or updating the Homebrew tap. Run from the skulto repo root. |
| 8 | |
| 9 | ## Pass 1: Unit Tests, Lint, and Cross-Compile |
| 10 | |
| 11 | Build both binaries and verify all quality gates. |
| 12 | |
| 13 | ```bash |
| 14 | make build-all |
| 15 | make test |
| 16 | make lint |
| 17 | make format |
| 18 | ``` |
| 19 | |
| 20 | Cross-compile all release targets: |
| 21 | |
| 22 | ```bash |
| 23 | GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -o /dev/null ./cmd/skulto |
| 24 | GOOS=linux GOARCH=arm64 CGO_ENABLED=0 go build -o /dev/null ./cmd/skulto |
| 25 | GOOS=darwin GOARCH=amd64 CGO_ENABLED=0 go build -o /dev/null ./cmd/skulto |
| 26 | GOOS=darwin GOARCH=arm64 CGO_ENABLED=0 go build -o /dev/null ./cmd/skulto |
| 27 | ``` |
| 28 | |
| 29 | All four must succeed. |
| 30 | |
| 31 | ## Pass 2: CLI Command Walkthrough |
| 32 | |
| 33 | Test every CLI code path against the built binary (`./build/skulto`). |
| 34 | |
| 35 | ### State Snapshot (REQUIRED before any Pass 2 tests) |
| 36 | |
| 37 | Capture the pre-cert state so it can be restored after testing. Run these BEFORE any commands: |
| 38 | |
| 39 | ```bash |
| 40 | # 1. Snapshot installed skills |
| 41 | skulto check > /tmp/skulto-cert-check-before.txt 2>&1 |
| 42 | |
| 43 | # 2. Backup skulto.json if it exists |
| 44 | cp skulto.json /tmp/skulto-cert-skulto.json.bak 2>/dev/null || true |
| 45 | |
| 46 | # 3. Backup the database |
| 47 | cp ~/.agents/skulto/skulto.db /tmp/skulto-cert-skulto.db.bak |
| 48 | |
| 49 | # 4. Record installed skill count for later comparison |
| 50 | echo "Snapshot taken: $(date)" |
| 51 | ``` |
| 52 | |
| 53 | All subsequent sections MUST clean up their own test artifacts. The State Restore section at the end of Pass 2 verifies nothing leaked. |
| 54 | |
| 55 | ### 2a: Warm state (existing data) |
| 56 | |
| 57 | Run each command and verify expected output: |
| 58 | |
| 59 | | Command | Expected | |
| 60 | |---------|----------| |
| 61 | | `skulto --help` | Shows usage, subcommands | |
| 62 | | `skulto check` | Lists installed skills with platforms | |
| 63 | | `skulto list` | Lists source repositories | |
| 64 | | `skulto info <slug>` | Shows metadata, tags, install status | |
| 65 | | `skulto favorites list` | Shows favorites or empty state | |
| 66 | | `skulto favorites add <slug>` | Adds skill | |
| 67 | | `skulto favorites remove <slug>` | Removes skill | |
| 68 | | `skulto save` | Saves manifest or "No changes" | |
| 69 | | `skulto save` (again) | "No changes" (idempotent) | |
| 70 | | `skulto scan --pending` | Scans unscanned skills | |
| 71 | | `skulto scan --skill <slug>` | Scans by slug (not just ID) | |
| 72 | | `skulto pull` | Syncs all repos, reconciles | |
| 73 | | `skulto update` | Pull + scan + summary | |
| 74 | | `skulto discover` | Lists unmanaged skills | |
| 75 | | `skulto install --help` | Shows usage | |
| 76 | | `skulto install nonexistent -y` | "No platforms selected" (empty selection safety) | |
| 77 | | `skulto uninstall --help` | Shows usage | |
| 78 | | `skulto add --help` | Shows usage | |
| 79 | | `skulto remove --help` | Shows usage | |
| 80 | | `skulto ingest --help` | Shows usage | |
| 81 | | `skulto feedback` | Shows feedback URL | |
| 82 | | `skulto-mcp --help` | Shows MCP server usage | |
| 83 | |
| 84 | ### 2b: Clean-slate (fresh install) |
| 85 | |
| 86 | Back up existing data, delete `~/.agents/skulto`, and test the full lifecycle: |
| 87 | |
| 88 | ```bash |
| 89 | cp -r ~/.agents/skulto ~/.agents/skulto.release-cert-backup |
| 90 | rm -rf ~/.agents/skulto |
| 91 | ``` |
| 92 | |
| 93 | Run this sequence — each step must succeed: |
| 94 | |
| 95 | | # | Command | Verify | |
| 96 | |---|---------|--------| |
| 97 | | 1 | `skulto check` | "No skills installed", `~/.agents/skulto/` created | |
| 98 | | 2 | `skulto add asteroid-belt/skills` | Clones, indexes skills | |
| 99 | | 3 | `skulto list` | Shows 1 source | |
| 100 | | 4 | `skulto info superplan` | Shows metadata | |
| 101 | | 5 | `skulto install superplan -p claude -y` | Creates symlink, "Installed to 1 location" | |
| 102 | | 6 | `skulto check` | Shows superplan with claude (global) | |
| 103 | | 7 | `skulto install teach -p claude -y` | Second install works | |
| 104 | | 8 | `skulto install supercharge -p claude -y` | Third install works | |
| 105 | | 9 | `skulto uninstall supercharge -y` | Removes symlink + DB record | |
| 106 | | 10 | `skulto check` | supercharge gone | |
| 107 | | 11 | `skulto save` | Writes skulto.json with version | |
| 108 | | 12 | `skulto save` (again) | "No changes" | |
| 109 | | 13 | `skulto favorites add teach` / `list` / `remove` | Full cycle | |
| 110 | | 14 | `skulto scan --skill teach` | Scans by slug | |
| 111 | | 15 | `skulto remove asteroid-belt/skills --force` | Cleans up everything | |
| 112 | | 16 | `skulto check` | Empty | |
| 113 | | 17 | `skulto list` | Empty | |
| 114 | |
| 115 | Restore backup: |
| 116 | |
| 117 | ```bash |
| 118 | rm -rf ~/.agents/skulto |
| 119 | mv ~/.agents/skulto.release-cert-backup ~/.agents/skulto |
| 120 | ``` |
| 121 | |
| 122 | Verify restore: |
| 123 | |
| 124 | ```bash |
| 125 | skulto check # Should show original installed skills |
| 126 | ``` |
| 127 | |
| 128 | ### 2c: Migration (if applicable) |
| 129 | |
| 130 | Only needed when the release includes migration changes. Test: |
| 131 | |
| 132 | | # | Step | Verify | |
| 133 | |---|------|--------| |
| 134 | | 1 | Move `~/.agents/skulto` to `~/.skulto` | Simulates pre-migration state | |
| 135 | | 2 | Remove `~/.skulto/.migration-complete` if present | Forces re-migration | |
| 136 | | 3 | Run `skulto check` | Migration runs, data at `~/.agents/skulto` | |
| 137 | | 4 | Check `~/.agents/skulto/.migration-complete` exists | Marker written | |
| 138 | | 5 | Check `~/.skult |