AssetsArt's collection of agent-callable skills — Rust CLI tools plus process orchestration skills.
skills is a Cargo workspace plus a skill registry. Most members are small, focused command-line tools written in Rust; a few are process skills with no binary at all (orchestration patterns the agent invokes by reading a SKILL.md). Every skill ships:
- a
SKILL.mdmanifest the agent reads to know when and how to call it, - (for CLI skills) a single self-contained binary built from a sibling
crates/<name>workspace member, - a human-facing
README.mdwith examples.
| Skill | Kind | What it does | Crate |
|---|---|---|---|
| ny-codemap | CLI | Survey a codebase: list files, show symbols, find definitions | crates/codemap |
| ny-codegraph | CLI | Semantic cross-references: find-refs, callers, callees, impact | crates/codegraph |
| ny-astedit | CLI | AST-validated rewrites: rename (cross-file symbol rename via codegraph) and rewrite (structural pattern→rewrite via ast-grep). Dry-run by default; atomic per-file writes. |
crates/astedit |
| ny-auto-pipeline | Process | Autonomous brainstorm → spec → spec-review → plan → subagent-driven impl → scrutinize → post-mortem. Overrides the interactive gates of superpowers:brainstorming / writing-plans when the user has granted autonomous run authority. Composes with 9arm-skills:scrutinize / post-mortem / debug-mantra and superpowers:verification-before-completion. |
— |
In a Claude Code session:
/plugin marketplace add AssetsArt/skills
/plugin install ny-skills
Claude Code refreshes the SKILL manifests on every restart and on /reload-plugins, so pushes to main reach agents automatically. The plugin ships SKILL.md + query files; the compiled CLI binary still needs to be fetched once with the installer below.
curl -fsSL https://raw.githubusercontent.com/AssetsArt/skills/main/scripts/install.sh | sh
# pin a specific version:
curl -fsSL https://raw.githubusercontent.com/AssetsArt/skills/main/scripts/install.sh | sh -s -- v0.4.1The script fetches the repo's source tarball at the resolved tag (no git required) and stages each skill into ~/.claude/skills/ny-<name>/. Override the destination with CLAUDE_SKILLS_DIR=/some/path. Use this in addition to the plugin install above (or on its own) — the plugin handles SKILL.md updates, this handles binary updates.
./scripts/install.sh # downloads the latest release for your platform
./scripts/install.sh v0.4.1 # or pin a specific versionEither entry point lands the binary at skills/ny-<name>/scripts/<name> and also copies the skill dir into ~/.claude/skills/ny-<name>/ so Claude can discover it. If a ~/.claude/skills/ny-<name> already exists as a symlink (manual setup), the script leaves it alone.
Supported asset slugs: linux-gnu-x86_64, linux-gnu-aarch64, linux-musl-x86_64, linux-musl-aarch64, macos-x86_64, macos-aarch64. The script auto-detects the right slug from uname + libc probe; override with SKILLS_TARGET=<slug> if you need to (e.g. installing into an Alpine container from a glibc host). If you hit GitHub's 60/hr unauthenticated API rate limit, export GITHUB_TOKEN before running.
./scripts/build-skills.shBuilds every workspace crate that has a matching skills/<name>/ directory in --release mode and copies each binary into skills/<name>/scripts/<name>. The same layout install.sh produces.
Release tarballs will be paired with .sha256 companions generated in the same CI job that builds them. install.sh verifies the checksum and refuses tarballs containing absolute paths or .. segments before extraction. Code signing (Apple notarisation, sigstore) is intentionally out of scope for this revision.
Two flavours.
Source lives in crates/<name>/, and the agent-installed surface lives in skills/ny-<name>/. The mapping skill_dir == "ny-" + crate_name is load-bearing — build-skills.sh, install.sh, and release.yml all rely on it.
- Create
crates/<name>/(withCargo.toml,src/main.rs, etc. — usecrates/codemapas a template). Inherit shared metadata viaversion.workspace = true,license.workspace = true, etc. - Create
skills/ny-<name>/SKILL.mdwith frontmattername: ny-<name>and adescriptionfield so agents can discover it. Reference the binary as./scripts/<name>(the pre-built file lives atskills/ny-<name>/scripts/<name>; thescripts/directory is gitignored). - Add a row to the Skill Index table above with Kind =
CLI. - Run
./scripts/build-skills.shto verify the local build pipeline picks up the new skill. The release workflow does not require changes — its matrix is per-target, not per-skill.
Sometimes the skill is an orchestration pattern, not a CLI. Example: ny-auto-pipeline. These ship a SKILL.md only.
- Create
skills/ny-<name>/SKILL.mdwith frontmattername: ny-<name>and adescriptionthat lists trigger phrases (English + Thai if applicable) plus negative cases. - No
crates/<name>/directory; no entry in the workspaceCargo.toml. - Add a row to the Skill Index table above with Kind =
Processand crate column—. build-skills.shandinstall.shskip directories without ascripts/subdir automatically — no other infra changes needed.
YAML frontmatter discipline: if the description value contains : (colon + space) anywhere, wrap the whole value in double quotes — YAML will otherwise read the colon as a key/value separator and the manifest will fail to load.
The workspace uses version.workspace = true, so all skills bump together. This is the intended default — release coordination lives at the workspace level. If you need per-skill versioning later, drop version.workspace on the specific crate.
MIT — see LICENSE.