Skip to main content

Northwestern University CLI

Project description

nul-cli

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-skills and then /plugin install <plugin>@nul-skillsnul-cli is 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

Installation via uv:

uv tool install nul-cli
nul --help

Run without installing:

uvx --from nul-cli nul --help

Installation via pip:

pip install nul-cli
nul --help

Usage

nul --help
nul skills --help

List available plugins (community catalog + the generated nul-cli skill):

nul skills list

Preview 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-tests

Install the generated nul-cli skill:

nul skills add

Install 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-tests

Upgrade installed skills (compares the recorded revision against the upstream commit SHA at each plugin's path):

nul skills upgrade

Community Catalog Source

The 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.json and each entry is a plugin with its own .claude-plugin/plugin.json manifest. These are Claude Code plugin marketplace conventions, kept verbatim so the same nul-skills repo 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-cli ignores 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 (default nulib-labs/nul-skills).
  • NUL_SKILLS_REF — branch, tag, or commit SHA (default main).
  • 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.

Development

uv sync
uv run nul --help
uv run nul skills add --help

Running Tests

uv run pytest

Building

uv build
uv run twine check dist/*

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nul_cli-0.1.0a1.tar.gz (16.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

nul_cli-0.1.0a1-py3-none-any.whl (15.2 kB view details)

Uploaded Python 3

File details

Details for the file nul_cli-0.1.0a1.tar.gz.

File metadata

  • Download URL: nul_cli-0.1.0a1.tar.gz
  • Upload date:
  • Size: 16.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for nul_cli-0.1.0a1.tar.gz
Algorithm Hash digest
SHA256 b6c2c238b1254f13123597e1e4169c8321b7fddd26e1f443f70c69b852f53ca4
MD5 13a9a90b2623ab185969de4d6f790a6b
BLAKE2b-256 5b5f673027179d6f7752e4e5f2da0da921a0de8ad5194faee55061f89a06ef33

See more details on using hashes here.

File details

Details for the file nul_cli-0.1.0a1-py3-none-any.whl.

File metadata

  • Download URL: nul_cli-0.1.0a1-py3-none-any.whl
  • Upload date:
  • Size: 15.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for nul_cli-0.1.0a1-py3-none-any.whl
Algorithm Hash digest
SHA256 d7da931d9444fbf000f9550042e1d93ba6ff61423fb1b93823cc30358115ad98
MD5 478d34874468eec011697d113cdfeab3
BLAKE2b-256 219fc9bb71487ab75302f3903c0ec22fe79f9e961b82a8b0aa47413d3ee5d7aa

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page