skill-zooCAUTION
All-in-One Desktop Agent Skills Utility. Welcome to the Skill Zoo, where all your skills live!
Overview
From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.
[](https://github.com/luochang212/skill-zoo/releases) [](https://github.com/luochang212/skill-zoo/releases) []() [](LICENSE) [?" [shape=diamond];
"Not this skill — use requesting-code-review" [shape=box];
"User asks to release/ship/publish?" -> "Use this skill" [label="yes"];
"User asks to release/ship/publish?" -> "Homebrew 404 or artifact-not-found after a tag push?" [label="no"];
"Homebrew 404 or artifact-not-found after a tag push?" -> "Use this skill" [label="yes"];
"Homebrew 404 or artifact-not-found after a tag push?" -> "Pre-release checks (code review, QA)?" [label="no"];
"Pre-release checks (code review, QA)?" -> "Not this skill — use requesting-code-review" [label="yes"];
}
```
**Use when:**
- User says "release", "ship", "publish", "new version", "bump version"
- Homebrew cask update failed (404 on DMG URLs)
- CI `create-release` job failed to find artifacts
**Don't use for:**
- Code review before releasing
- Deciding WHAT version number (ask the user)
- Feature work or bug fixes
## Quick Reference
| Step | Command |
|------|---------|
| Check existing tags | `git tag --sort=-v:refname \| head -5` |
| Prerequisites (in order) | fmt → lint:rs → test → typecheck → lint → format:check → status |
| Check Rust formatting | `cargo fmt --check --manifest-path src-tauri/Cargo.toml` |
| Check Rust lint | `bun run lint:rs` |
| Check TypeScript types | `bun run typecheck` |
| Check frontend lint | `bun run lint` |
| Check frontend formatting | `bun run format:check` |
| Check uncommitted changes | `git status --short` |
| Tag and push | `git push origin main && git tag v<VERSION> && git push origin v<VERSION>` |
## Core Pattern
All file changes (CHANGELOG, Cargo.toml, Cargo.lock, package.json) are made and committed together in a single commit. Do not commit after each step. (`docs/version.json` is updated by CI post-release.)
### 1. Confirm Version
Ask the user. Check `git tag --sort=-v:refname | head -5` for context. Version must start with `v` (only `v*` tags trigger CI).
### 2. Update CHANGELOG.md
Add a new version section before the previous release entry:
```markdown
## [X.Y.Z] — YYYY-MM-DD
```
Use today's date. Group changes under **Added**, **Changed**, **Fixed** headings. Review commits since the last tag with `git log --oneline v<LAST>..HEAD` to ensure nothing is missed.
Do NOT commit yet — all changes go into one commit in Step 5.
### 3. Protocol Impact Check
After writing the changelog, decide whether this release changes the desktop-owned local protocol. Desktop is the source of truth for local state; the CLI is an adjunct control surface and must follow the desktop protocol.
Use changed paths as review prompts, not automatic gates. Relevant prompts include desktop persistence structs, archive/restore behavior, local state paths or shapes, schema versions, and CLI protocol read/write code. Trigger the protocol gate only when the release changes desktop-owned local state shape, paths, schema versions, lock/archive write semantics, or user-visible compatibility/migration behavior.
If there is no protocol impact, note it internally and continue. Do not add "no impact" lines to CHANGELOG or commit messages.
If there is protocol impact, verify before continuing:
1. `AGENTS.md` guidance still reflects the desktop-owned protocol relationship.
2. `docs/local-protocol.md` reflects the current desktop protocol.
3. `fixtures/local-protocol/` represents the desktop protocol, not CLI implementation convenience.
4. CLI and Rust protocol fixture tests pass.
5. CHANGELOG mentions any user-visible compatibility, migration, or breaking behavior.
### 4. Update Version Files
Update `src-tauri/Cargo.toml` and `package.json` with `apply_patch` so the instructions work consistently on macOS, Linux, and Windows agents. Both files use bare semver without the `v` prefix. Then regenerate `Cargo.lock`:
```bash
cargo check --manifest-path src-tauri/Cargo.toml
```
Do NOT update `docs/version.json` here — CI updates it automatically after the release is published.
Do NOT commit yet — all changes go into one commit in Step 5.
### 5. Verify Prerequisites
Run all checks in order. If any fails, fix and re-run the full sequence until clean — formatting changes can cascade into lint results. Any fixes become part of the same release commit.
1. `cargo fmt --check --manifest-path src-tauri/Cargo.toml` — run `cargo fmt --manifest-path src-tauri/Cargo.toml` if diffs appear, then restart from here
2. `bun run lint:rs` — fix all warnings; fmt may have introduced new ones
3. `cargo test --manifest-path src-tauri/Cargo.toml --features test-helpers` — fix any test failures before proceeding
4. `bun run typecheck` — fix all type errors before proceeding
5. `bun run lint` — fix any lint errors. Note: pre-existing issues unrelated to this release should be noted separately, not silently fixed in the release commit
6. `bun run format:check` — run `bun run format` if diffs appear. CI also enforces this, but catching it locally avoids a broken tag
7. `RELEASE_BODY.md` uses `__VERSIOTrust audit
CAUTIONgrade B · trust 88/100 Install with care. The audit found things worth knowing before you trust its output.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | WARN |
| L1 | Static analysis of the code | WARN |
| L2 | Instruction surface (what it tells the agent) | PASS |
| L3 | Class-specific surface | PASS |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- declared (6 observation(s))
- Network
- declared (2 observation(s))
- Shell
- none-observed
- Dependencies
- not all pinned
- Secrets in source
- none-found
Findings (17)
icon.icns
let error = client.get("http://127.0.0.1:1/").send().await.unwrap_err();.oxfmtrc.json
.oxlintrc.json
.openspec.yaml
.openspec.yaml
.openspec.yaml
import { makeTempHome } from "../../tests/helpers.js";const fixture = (name: string) => fs.readFile(new URL(`../../../../fixtures/local-protocol/${name}`, import.meta.url), "utf8").then(JSON.parse);path.resolve(moduleDir, "../../wui"),
return path.resolve(dir, "../../../fixtures/local-protocol", name);
.unwrap_or_else(|| include_str!("../../resources/banners.json").to_string());return `http://127.0.0.1:${handle.port}`;[ and found 17 things worth knowing before you trust this skill, listed below with the exact line each was found on.
What can skill-zoo access on my machine?
The audit observed that it reaches the network and reads or writes files. Each of those is consistent with what it says it does. Secrets in the source: none found.
Which assistants does skill-zoo work with?
Its documentation mentions claude-code, codex, cursor, openclaw and windsurf. That is what the text claims, not a compatibility test we ran.
How current is this page?
The grade is for one exact copy of the source (dbf73be1e110), read on 2026-10-10. The repository is watched, and a new audit runs when it changes — this is the first audit.