gskill

module
v0.3.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 15, 2026 License: MIT

README

GSKILL

Reproducible package management for AI agent skills.

CI Release Go Platforms License OpenSSF Scorecard Go Report Card Downloads

GSKILL installs, versions, locks, verifies, and restores SKILL.md-based AI agent skills across Claude Code, Codex, Cursor, Gemini CLI, developer machines, and CI. Commit skills-lock.json; teammates and CI reproduce a byte-identical skill environment anywhere with gskill install --frozen-lockfile.

Why GSKILL

AI agent skills — SKILL.md instruction bundles — are usually installed by hand: cloned into a dotfile directory, copied between projects, upgraded whenever someone remembers. That leaves no record of what's installed, no way to verify it wasn't tampered with, and no way to reproduce it on a second machine or in CI. GSKILL treats skills like dependencies: resolved, content-hashed, locked, and restorable byte-for-byte from a single committed file.

Key features

  • Reproducible installsskills-lock.json records intent and resolved reality together; --frozen-lockfile restores exactly, or fails closed.
  • Verified integrity — every install is checked against a recorded content hash; gskill verify re-checks on demand; skill content is never executed.
  • Multi-agent, one store — a skill is resolved and stored once and shared by every agent that targets it, via symlinks (or copies where unsupported).
  • Scriptable — every capability is reachable from the CLI, with --json output and documented exit codes for CI.
  • Signed releases — checksummed, cosign-signed archives with SBOMs and build-provenance attestations.

Supported agents and platforms

Agent Agent ID Marker
Claude Code claude .claude/
Codex codex .codex/
Cursor cursor .cursor/
Gemini CLI gemini-cli .gemini/

gskill ships for Linux and macOS on amd64 and arm64. Windows is not supported. See Supported agents for detection and scope details.

Quick start

Install (pick one):

# Install script — downloads the right archive and verifies its checksum
curl -sSfL https://raw.githubusercontent.com/glapsfun/gskill/main/scripts/install.sh | sh

# Homebrew (macOS and Linux)
brew install glapsfun/tap/gskill

# Go (requires a Go toolchain)
go install github.com/glapsfun/gskill/cmd/gskill@latest

Verify the install with gskill version.

Use it:

gskill init                                                      # prepare .gskill/ + .agents/skills/
gskill add github.com/owner/repo --skill example --agent claude  # resolve, install, lock
gskill install --frozen-lockfile                                 # reproduce exactly elsewhere
gskill verify                                                    # re-hash installed content vs the lock

Commit skills-lock.json — it's the only project state file GSKILL writes; it records both what you asked for and what was resolved, so anyone can reproduce it with gskill install --frozen-lockfile.

Core workflow

GSKILL's lifecycle is discover → add → lock → install → verify → update.

1. Discover

Search for available skills:

gskill search kubernetes
2. Add

Resolve, install, and record a skill:

gskill add github.com/example/skills --skill kubernetes --agent claude
3. Lock

Every add/install/update writes the resolution to skills-lock.json automatically — there's no separate lock step to remember.

4. Install

Reproduce a locked environment elsewhere, exactly:

gskill install --frozen-lockfile
5. Verify

Re-hash installed content against the lock:

gskill verify
6. Update

Advance within your version constraints and re-lock:

gskill update

Common examples

Install a skill for one agent:

gskill add github.com/example/skills --skill security-review --agent claude

Install for multiple agents:

gskill add github.com/example/skills --skill security-review --agent claude,codex

Restore a cloned project:

gskill install --frozen-lockfile

Preview changes:

gskill install --dry-run

Check project health:

gskill status
gskill verify

Update skills:

gskill outdated
gskill update

Documentation

Full documentation lives in docs/, organized by the Diátaxis framework:

  • Tutorial: Getting started — from an empty directory to a reproducible skill environment.
  • How-to guides — task-focused recipes.
  • Reference — commands, exit codes, configuration, and the lockfile/frontmatter schemas.
  • Explanation — the reproducibility model, integrity and trust, the store, and multi-agent installs.
  • Contributing — the TDD workflow and quality gate for anyone changing GSKILL itself.

Project status and compatibility

GSKILL is under active development. The current release is v0.2.0 (pre-1.0). It supports Linux and macOS on amd64 and arm64; Windows is not currently supported. It targets Claude Code, Codex, Cursor, and Gemini CLI. The lockfile format (skills-lock.json) is versioned; breaking CLI or schema changes may occur before v1.0 and are documented in release notes.

init, add, onboard, install (incl. --frozen-lockfile/--offline), verify, check, outdated, update, remove, sync, repair, list, info, search, diff, doctor, cache, config, completion, and dashboard (tui) all work today against Git and local sources.

Security and integrity

Every install is verified against a recorded content hash before it's written; a mismatch aborts rather than partially installing. Skill content is data, never executed. Release artifacts are checksummed, cosign-signed, and shipped with SBOMs and build-provenance attestations — see Cut and verify a release to verify them yourself. Read Integrity and trust for the full model.

Contributing

GSKILL is developed test-first behind a single quality gate (./scripts/verify.sh), enforced identically for local development, git hooks, and CI. See docs/contributing/development.md for the full workflow, one-time setup, and script reference.

License

MIT

Directories

Path Synopsis
cmd
gen-reference command
Command gen-reference writes GSKILL's generated reference Markdown (docs/reference/commands.md and docs/reference/exit-codes.md) from the live CLI grammar and exit-code table.
Command gen-reference writes GSKILL's generated reference Markdown (docs/reference/commands.md and docs/reference/exit-codes.md) from the live CLI grammar and exit-code table.
gskill command
Command gskill is the GSKILL command-line entrypoint.
Command gskill is the GSKILL command-line entrypoint.
internal
active
Package active manages the project active-skill layer: the per-skill entry at .agents/skills/<name> that links into the content store and is the single source of truth every agent target derives from.
Package active manages the project active-skill layer: the per-skill entry at .agents/skills/<name> that links into the content store and is the single source of truth every agent target derives from.
agent
Package agent defines the pluggable per-agent behavior gskill installs into, plus a registry of adapters.
Package agent defines the pluggable per-agent behavior gskill installs into, plus a registry of adapters.
app
Package app is gskill's orchestration layer.
Package app is gskill's orchestration layer.
cache
Package cache is the content-addressed cache of fetched source material, enabling offline reproduction from a warm cache.
Package cache is the content-addressed cache of fetched source material, enabling offline reproduction from a warm cache.
cli
Package cli is the gskill command-line view.
Package cli is the gskill command-line view.
config
Package config resolves gskill's layered configuration.
Package config resolves gskill's layered configuration.
discovery
Package discovery locates SKILL.md bundles within fetched material and enforces naming and frontmatter schema rules.
Package discovery locates SKILL.md bundles within fetched material and enforces naming and frontmatter schema rules.
docs
Package docs generates GSKILL's reference documentation from the live sources of truth — the Kong command grammar (internal/cli) and the exit-code table (internal/errs) — so the reference can never silently drift from the tool.
Package docs generates GSKILL's reference documentation from the live sources of truth — the Kong command grammar (internal/cli) and the exit-code table (internal/errs) — so the reference can never silently drift from the tool.
errs
Package errs defines gskill's typed errors and their mapping to process exit codes.
Package errs defines gskill's typed errors and their mapping to process exit codes.
fsutil
Package fsutil provides the filesystem primitives gskill relies on for safe, reproducible mutations: atomic file writes, same-filesystem staging temp dirs, and a symlink-or-copy activation that records the method actually used.
Package fsutil provides the filesystem primitives gskill relies on for safe, reproducible mutations: atomic file writes, same-filesystem staging temp dirs, and a symlink-or-copy activation that records the method actually used.
git
Package git defines the GitRunner interface and a system-git implementation that shells out to the installed git binary.
Package git defines the GitRunner interface and a system-git implementation that shells out to the installed git binary.
installer
Package installer runs the staging-verify-activate install transaction with temp-then-rename atomicity under an exclusive lock.
Package installer runs the staging-verify-activate install transaction with temp-then-rename atomicity under an exclusive lock.
integrity
Package integrity provides canonical content hashing, fail-closed verification, and drift classification for installed skills.
Package integrity provides canonical content hashing, fail-closed verification, and drift classification for installed skills.
logging
Package logging configures gskill's structured logger.
Package logging configures gskill's structured logger.
metadata
Package metadata models and parses SKILL.md YAML frontmatter, including the declared requires block.
Package metadata models and parses SKILL.md YAML frontmatter, including the declared requires block.
progress
Package progress carries a download-progress sink through context.Context so the git/installer/app layers can report fetch progress to the CLI without any signature changes.
Package progress carries a download-progress sink through context.Context so the git/installer/app layers can report fetch progress to the CLI without any signature changes.
registry
Package registry lists the skill repositories of a GitHub owner or organization via the GitHub REST API, so a search can fan out across an owner's public repositories.
Package registry lists the skill repositories of a GitHub owner or organization via the GitHub REST API, so a search can fan out across an owner's public repositories.
resolver
Package resolver turns a requested source reference into a resolved, immutable revision, keeping requested, resolved, and immutable refs distinct.
Package resolver turns a requested source reference into a resolved, immutable revision, keeping requested, resolved, and immutable refs distinct.
selection
Package selection resolves user-provided skill selectors (by name, the "all" wildcard, or a name@path disambiguator) against the skills discovered in a source.
Package selection resolves user-provided skill selectors (by name, the "all" wildcard, or a name@path disambiguator) against the skills discovered in a source.
skillslock
Package skillslock owns the shared project-level skills-lock.json v1 format that gskill co-owns with compatible external tooling (e.g.
Package skillslock owns the shared project-level skills-lock.json v1 format that gskill co-owns with compatible external tooling (e.g.
source
Package source parses, normalizes, and classifies skill source references (git shorthand, full HTTPS/SSH, local path, url) into a canonical identity.
Package source parses, normalizes, and classifies skill source references (git shorthand, full HTTPS/SSH, local path, url) into a canonical identity.
store
Package store is the content-addressed store of installed skill content, keyed by canonical content hash.
Package store is the content-addressed store of installed skill content, keyed by canonical content hash.
testutil
Package testutil provides golden-file and temporary-directory helpers shared across gskill tests.
Package testutil provides golden-file and temporary-directory helpers shared across gskill tests.
tui
Package tui hosts gskill's interactive surfaces, rendered over the app service layer and refusing to launch without a TTY: the dashboard (a bubbles table stacked over a glamour SKILL.md preview viewport), the guided onboarding wizard (a step state machine whose agents and version steps are huh forms, while the source and skill-picker steps stay custom where the keyboard contract demands it), and the bounded, filterable multi-select skill picker.
Package tui hosts gskill's interactive surfaces, rendered over the app service layer and refusing to launch without a TTY: the dashboard (a bubbles table stacked over a glamour SKILL.md preview viewport), the guided onboarding wizard (a step state machine whose agents and version steps are huh forms, while the source and skill-picker steps stay custom where the keyboard contract demands it), and the bounded, filterable multi-select skill picker.
version
Package version exposes the gskill build version and source commit.
Package version exposes the gskill build version and source commit.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL