Northwestern University Libraries command-line tooling.
nul installs AI-assistant skills for Northwestern University Libraries workflows. It reads the
NUL community catalog — a Claude
Code plugin marketplace — and writes each plugin's SKILL.md files into the
agent skill directories used by Codex, ChatGPT, Cursor, and similar tools.
Two install paths from one source of truth:
- Claude Code users can add the catalog directly with
/plugin marketplace add nulib-labs/nul-skillsand then/plugin install <plugin>@nul-skills—nul-cliis not required. - Codex, ChatGPT, Cursor, and other clients use
nul skills add <plugin>to install the plugin's skills into.agents/skills/.
nul also installs a generated nul-cli skill that documents the CLI's own
command tree.
Installation via uv:
uv tool install nul-cli
nul --helpRun without installing:
uvx --from nul-cli nul --helpInstallation via pip:
pip install nul-cli
nul --helpnul --help
nul skills --helpList available plugins (community catalog + the generated nul-cli skill):
nul skills listPreview a plugin's skill (defaults to the only skill if there's just one;
otherwise pass <plugin>:<skill>):
nul skills preview meadow
nul skills preview meadow:run-testsInstall the generated nul-cli skill:
nul skills addInstall all skills from a community plugin. Community skills are installed into
flat namespaced directories (<plugin>-<skill>) to avoid collisions across
plugins:
nul skills add meadow
# installs .agents/skills/meadow-run-tests/Install one specific skill from a multi-skill plugin:
nul skills add meadow:run-testsUpgrade installed skills (compares the recorded revision against the upstream commit SHA at each plugin's path):
nul skills upgradeThe catalog is fetched from nulib-labs/nul-skills (branch main). Each
install records the resolved commit SHA in .nul-skill-manifest.json, and
upgrade re-resolves to detect new commits touching that plugin's path.
Naming note. The catalog file is
.claude-plugin/marketplace.jsonand each entry is a plugin with its own.claude-plugin/plugin.jsonmanifest. These are Claude Code plugin marketplace conventions, kept verbatim so the samenul-skillsrepo can be added as a Claude plugin source. We use "community" as the user-facing term throughout the CLI.Plugins may also bundle commands, hooks, or MCP servers for Claude Code.
nul-cliignores those and only installs SKILL.md files — non-Claude clients will use those skills via their own agent skill discovery.
Override via env vars:
NUL_SKILLS_REPO—<owner>/<repo>to fetch from (defaultnulib-labs/nul-skills).NUL_SKILLS_REF— branch, tag, or commit SHA (defaultmain).NUL_SKILLS_PATH— local checkout to use instead of fetching. Useful when iterating on skills locally.GITHUB_TOKEN/GH_TOKEN— used (if set) to lift GitHub API rate limits.
uv sync
uv run nul --help
uv run nul skills add --helpuv run pytestuv build
uv run twine check dist/*