Installation
The Critter Stack AI Skills are installed from the JasperFx private NuGet registry (packages.jasperfx.net/nuget/) with the AgentSkills CLI (agentskills-cli), a .NET global tool. A single agentskills-cli add JasperFx.AiSkills command registers the skills into your agent, with predictable versioned releases.
Prerequisites
- .NET 8 or .NET 10 SDK. The runtime alone is not enough:
dotnet tool installanddotnet nuget add sourceare SDK commands. - Claude Code, Cursor, Codex, OpenCode, or another agentskills.io-compatible tool.
- A read-only auth token for
https://packages.jasperfx.net/nuget/, emailed to you after you purchase AI Skills.
Install the AgentSkills CLI
dotnet tool install --global agentskills-cli
agentskills-cli --helpUpdate or uninstall any time with dotnet tool update --global agentskills-cli or dotnet tool uninstall --global agentskills-cli.
Already registered the JasperFx feed?
If you added the jasperfx source before, without the package source mapping from step 1, this command fails with 403 (Forbidden). Add the mapping first, then install the CLI.
Private NuGet registry
The skills follow the agentskills.io spec, so they work with any conformant client: Claude Code, Cursor, Copilot, OpenCode, Aider, Codex, Windsurf. The steps below show Claude Code and the universal target (read by Cursor, Codex, OpenCode, and every other spec-compliant agent); swap or repeat -a for the agents you use.
1. Add the JasperFx NuGet feed
Where your token comes from
After you purchase AI Skills, JasperFx Software emails you setup instructions containing your personal read-only registry token. The token authorizes read/download from the private registry only; it cannot publish.
You can also view, reveal, and regenerate your token any time from the customer portal - handy if the token is lost, rotated, or compromised. Regenerating revokes the old token atomically.
Don't have the email yet? Check spam, or contact JasperFx Software.
Register the feed with the dotnet CLI. Replace YOUR_TOKEN_HERE with the token from your purchase email:
dotnet nuget add source https://packages.jasperfx.net/nuget/v3/index.json \
--name jasperfx \
--username jasperfx \
--password YOUR_TOKEN_HERE \
--store-password-in-clear-textdotnet nuget add source https://packages.jasperfx.net/nuget/v3/index.json `
--name jasperfx `
--username jasperfx `
--password YOUR_TOKEN_HERE--store-password-in-clear-text is required on Linux and macOS because Windows-style encrypted password storage is unavailable there. On Windows the token is stored encrypted and the flag is unnecessary.
Then map JasperFx.AiSkills to the feed. By default NuGet asks every registered source for every package. The JasperFx feed only hosts JasperFx.AiSkills and answers 403 Forbidden for anything else, so without a mapping, unrelated commands such as dotnet tool install --global agentskills-cli fail with Response status code does not indicate success: 403 (Forbidden).
dotnet nuget add source has no option for this, so edit the user-level NuGet.Config the command just wrote to (~/.nuget/NuGet/NuGet.Config on macOS and Linux, %AppData%\NuGet\NuGet.Config on Windows; dotnet nuget config paths lists the files in use). Add the <packageSourceMapping> section inside <configuration>, as a sibling of <packageSources>. After the edit the file looks like this (your token stays where the command put it):
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
<add key="jasperfx" value="https://packages.jasperfx.net/nuget/v3/index.json" />
</packageSources>
<packageSourceCredentials>
<!-- written by dotnet nuget add source; leave as is -->
</packageSourceCredentials>
<packageSourceMapping>
<packageSource key="nuget.org">
<package pattern="*" />
</packageSource>
<packageSource key="jasperfx">
<package pattern="JasperFx.AiSkills" />
</packageSource>
</packageSourceMapping>
</configuration>- Each
keymust match a source name from<packageSources>, as shown bydotnet nuget list source. - Once package source mapping is enabled, NuGet only fetches a package from a source with a matching pattern. If you have other sources registered (a local folder, a company feed), add a
<packageSource>entry for each of them too. - The most specific pattern wins, so the exact ID
JasperFx.AiSkillstakes precedence over the*on nuget.org.
If you'd rather keep the configuration with a single project, drop this NuGet.Config at the project root instead. It includes the same mapping. NuGet only reads it when a command runs inside that directory tree, so it applies to project-local installs (no -g) run from the project.
Don't commit your token
The token is personal to your license. Keep this file out of source control (add NuGet.Config to .gitignore), or commit it without the <packageSourceCredentials> section and have each developer register their own credentials with dotnet nuget update source jasperfx --username jasperfx --password <token> --store-password-in-clear-text.
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
<add key="jasperfx" value="https://packages.jasperfx.net/nuget/v3/index.json" />
</packageSources>
<packageSourceCredentials>
<jasperfx>
<add key="Username" value="jasperfx" />
<add key="ClearTextPassword" value="YOUR_TOKEN_HERE" />
</jasperfx>
</packageSourceCredentials>
<packageSourceMapping>
<packageSource key="nuget.org">
<package pattern="*" />
</packageSource>
<packageSource key="jasperfx">
<package pattern="JasperFx.AiSkills" />
</packageSource>
</packageSourceMapping>
</configuration>2. Install the skills
agentskills-cli reads the same NuGet.Config as dotnet restore, so once the source is registered the install is a single command. -g makes it user-global so every project picks it up.
# universal target: writes to ~/.agents/skills/
# (Cursor, Codex, OpenCode, and every other spec-compliant agent reads here)
agentskills-cli add JasperFx.AiSkills -g -a universal -y
# Claude Code uses its own ~/.claude/skills/, so target it explicitly
agentskills-cli add JasperFx.AiSkills -g -a claude-code -y
# both at once
agentskills-cli add JasperFx.AiSkills -g -a universal -a claude-code -yCheck what was installed with agentskills-cli list --by package.
Drop -g to install only into the current project's ./.agents/skills/ and ./.claude/skills/ directories. Project-local installs write a skills-lock.json at the project root; commit it so collaborators on the same repo install identical versions.
Pinning a version
Add @<version> to the package id to pin:
agentskills-cli add JasperFx.AiSkills@1.4.0 -g -a universal -a claude-code -yPin for reproducible installs across your team; take the latest for immediate access to new guidance. Production agent deployments should pin.
3. Install only a subset
Use -s <skill-name> (repeatable) to install one or more specific skills instead of the full catalog:
agentskills-cli add JasperFx.AiSkills \
-s wolverine-handlers-middleware \
-s marten-aggregate-handler-workflow \
-g -a universal -y4. Updating
Check whether a newer version is published, and optionally reinstall, with:
agentskills-cli updateOr re-run add, which pulls the latest published version and overwrites the installed skill directories:
agentskills-cli add JasperFx.AiSkills -g -a universal -a claude-code -yIf you pinned a version, move the pin by running add with the new version, for example agentskills-cli add JasperFx.AiSkills@1.5.0 -g -a universal -a claude-code -y.
Browse available versions in the customer portal or via dotnet package search JasperFx.AiSkills --source jasperfx.
Flag reference
The agentskills-cli add command used above:
-g: user-global install into~/.agents/skills/and per-agent dirs (omit for project-local).-a <agent>: target a specific agent. Repeat for multiple.universalwrites to the canonical.agents/skills/directory read by Cursor, Codex, OpenCode, and every other spec-compliant agent;claude-codewrites to Claude Code's own.claude/skills/.-s <skill-name>: install one specific skill. Repeat for multiple. Omit to install all 126.-y: non-interactive (no prompts, accept defaults). Required for scripts/CI.
See the AgentSkills CLI add command reference for the full list.
Uninstall
Remove the registered skills:
# from a global install
agentskills-cli remove JasperFx.AiSkills -g -y
# from a project-local install (run from project root)
agentskills-cli remove JasperFx.AiSkills -yOr remove individual skills by name:
agentskills-cli remove wolverine-handlers-middleware -g -yTroubleshooting & support
If agentskills-cli add JasperFx.AiSkills returns a 401 or 403 from packages.jasperfx.net, the problem is your token: a 401 means no valid token was sent, and a 403 means the token was accepted but isn't entitled to the package.
- Confirm the token hasn't been revoked or rotated. Sign in to the customer portal to view the active token for your entitlement.
- Confirm the source was registered with
--store-password-in-clear-text(Linux/macOS) so the token was actually persisted, and that the token in yourdotnet nuget add sourcecommand was the active one. To replace a stored token, rundotnet nuget update source jasperfx --username jasperfx --password <token> --store-password-in-clear-text. - Verify the source is registered:
dotnet nuget list source. Thejasperfxentry should be enabled and point athttps://packages.jasperfx.net/nuget/v3/index.json. - If the token is missing or compromised, regenerate it from the entitlement detail page in the customer portal - the old token is revoked atomically. Or contact JasperFx Software.
If installing or restoring some other package fails with a 403 from packages.jasperfx.net (for example dotnet tool install --global agentskills-cli), NuGet is asking the JasperFx feed for a package it doesn't host. Add the package source mapping from step 1 so that only JasperFx.AiSkills is requested from that feed.
For bug reports, install questions, or feedback on AI Skills (and any other JasperFx commercial offering), open an issue or discussion at github.com/JasperFx/ProductSupport - the canonical tracker for commercial products. Real-time community chat lives in Discord.
Next steps
Browse the full catalog in the sidebar, or start with one of the product-specific getting-started skills:
