load one
jack-in load <package|skill>[@version]
Load a single skill. Address it by package id (Ardalis.Specification), folder name (ardalis-spec), or a sibling package — case- and punctuation-insensitive.
// the jack-in cli
jack-in is the companion CLI to Jack In. It downloads version-aware skills from the public DevNines/dotnet-skills (opens in new tab) repo and drops them straight into your agent — for every project on your machine, or just one.
# one-time install (needs the .NET 8 SDK)
$ dotnet tool install --global JackIn
You can invoke the tool using the following command: jack-in
# load every skill into your agent
$ jack-in load all
status: LOADED (10 skills)
# install (global .NET tool — command name: jack-in)
$ dotnet tool install --global JackIn
# update to the latest release
$ dotnet tool update --global JackIn
# remove
$ dotnet tool uninstall --global JackIn
~/.dotnet/tools is on your PATH.
jack-in load <package|skill>[@version]
Load a single skill. Address it by package id (Ardalis.Specification), folder name (ardalis-spec), or a sibling package — case- and punctuation-insensitive.
jack-in load all
Pull every skill in the source repo in one shot.
jack-in list
Show every available skill with its package id and the versions it ships.
jack-in version
Print the installed tool version (also --version).
jack-in help
Full usage, targets, and options — right in the terminal.
<user>/.claude/skills/
With no flag, skills install for your user — every project an agent opens can load them.
./.claude/skills/ · --project
Pass --project (-p) to write into the
current directory's .claude/skills instead — scoped to one repo.
Skills are version-aware at runtime — the skill reads the version a project pins
from its .csproj and self-selects the matching reference files. So
jack-in copies the whole skill folder (every version it ships); the
@version you pass is validated and reported, it never
filters what's copied. The match follows the same rule the skills use:
exact → same minor (highest patch) → same major (highest minor ≤ requested) —
and never a higher minor.
$ jack-in load Ardalis.Specification@9.3.1
· ardalis-spec: exact reference v9.3.1 · grounded, no invented methods
$ jack-in load Ardalis.Specification@9.5.0
· ardalis-spec: v9.5.0 → closest reference v9.3.1
$ jack-in load Ardalis.Specification@9.0.0
! ardalis-spec: no reference data for v9.0.0 — copying anyway,
the skill self-selects at runtime from your .csproj
Don't want to install anything? The same version-aware reference is live on a
hosted MCP server at https://jackin.dev/mcp.
Any Model Context Protocol (opens in new tab)
client — Claude Code, Claude Desktop, Cursor, Windsurf, VS Code — connects over HTTP and pulls the
grounded docs into context on demand. Where jack-in load copies a skill onto your disk, the
hosted server answers tool calls — nothing to install, no key.
# register the hosted server (HTTP transport)
$ claude mcp add --transport http jackin https://jackin.dev/mcp
-s user → every project · -s project → share via .mcp.json
# confirm it connected, inside Claude Code:
/mcp
jackin · connected · 4 tools
.mcp.json at your project root:
{
"mcpServers": {
"jackin": { "type": "http", "url": "https://jackin.dev/mcp" }
}
}
| Tool | What it returns |
|---|---|
list_skills |
Every skill the server can ground, with the versions each one ships. |
get_skill_reference(package, version, section) |
The version-pinned document. section is one of api-surface,
patterns, examples, or migration. Resolves the
closest tracked version and reports which it served. |
detect_version(projectFileXml) |
Pinned versions of supported libraries, read from raw .csproj /
Directory.Packages.props XML. |
resolve_version(package, requestedVersion) |
The closest tracked reference version for a package and a requested version. |
# once connected, ask in plain language — Claude picks the tool & args:
> list the skills jackin can ground
list_skills → ardalis-spec, ardalis-result, fastendpoints, stripe,
hangfire, swagger, shouldly, nsubstitute (+ versions)
> pull the api-surface for Ardalis.Specification 9.3.1
get_skill_reference("Ardalis.Specification", "9.3.1", "api-surface")
served v9.3.1 · real members, nothing invented
> show me FastEndpoints 8.1.0 patterns and examples
get_skill_reference("FastEndpoints", "8.1.0", "patterns")
get_skill_reference("FastEndpoints", "8.1.0", "examples")
> here's my csproj — which supported libraries does it pin?
detect_version("<Project>…</Project>") → FastEndpoints 8.1.0
> closest tracked Stripe.net to 51.9.9?
resolve_version("Stripe.net", "51.9.9") → 51.2.0
# tip: name "jackin" and be specific — the tools fire only when you ask.
# ground every tracked library in your project, then fix the code:
> Use jackin: run detect_version on my .csproj, then get_skill_reference
(api-surface + patterns) for each supported library, and fix the code
that uses them so every call matches the pinned version.
# or target a single library / error:
> I'm getting an error with FastEndpoints — use jackin to pull the 8.1.0
api-surface and fix my endpoint.
jack-in load installs the skill, which
auto-activates whenever Claude touches that library.
# get the patterns doc for Ardalis.Specification 9.3.1
$ curl -sN https://jackin.dev/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":
{"name":"get_skill_reference","arguments":
{"package":"Ardalis.Specification","version":"9.3.1","section":"patterns"}}}'
→ { "servedVersion": "9.3.1", "section": "patterns", "content": "…" }
jack-in load does.
$ jack-in load Ardalis.Specification@9.3.1 # by package id → user-level
$ jack-in load ardalis-spec --project # by name → ./.claude/skills
$ jack-in load all # every skill, user-level
$ jack-in load hangfire --force # reinstall, overwriting
$ jack-in list # what's available + versions