Skip to content

Questions? Join our Discord.

JasperFx

Formal support for Wolverine, Marten, and Polecat is available through our Support Plans.

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 install and dotnet nuget add source are 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 ​

bash
dotnet tool install --global agentskills-cli
agentskills-cli --help

Update 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:

bash
dotnet nuget add source https://packages.jasperfx.net/nuget/v3/index.json \
  --name jasperfx \
  --username jasperfx \
  --password YOUR_TOKEN_HERE \
  --store-password-in-clear-text
powershell
dotnet 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
<?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 key must match a source name from <packageSources>, as shown by dotnet 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.AiSkills takes 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
<?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.

bash
# 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 -y

Check 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:

bash
agentskills-cli add JasperFx.AiSkills@1.4.0 -g -a universal -a claude-code -y

Pin 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:

bash
agentskills-cli add JasperFx.AiSkills \
  -s wolverine-handlers-middleware \
  -s marten-aggregate-handler-workflow \
  -g -a universal -y

4. Updating ​

Check whether a newer version is published, and optionally reinstall, with:

bash
agentskills-cli update

Or re-run add, which pulls the latest published version and overwrites the installed skill directories:

bash
agentskills-cli add JasperFx.AiSkills -g -a universal -a claude-code -y

If 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. universal writes to the canonical .agents/skills/ directory read by Cursor, Codex, OpenCode, and every other spec-compliant agent; claude-code writes 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:

bash
# 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 -y

Or remove individual skills by name:

bash
agentskills-cli remove wolverine-handlers-middleware -g -y

Troubleshooting & 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 your dotnet nuget add source command was the active one. To replace a stored token, run dotnet nuget update source jasperfx --username jasperfx --password <token> --store-password-in-clear-text.
  • Verify the source is registered: dotnet nuget list source. The jasperfx entry should be enabled and point at https://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:

Proprietary. Copyright © JasperFx Software LLC. See the license for terms.