Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add commands/tilework-tech/nori-skillsets/docsgit clone --depth 1 https://github.com/tilework-tech/nori-skillsetsWhat it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00000 | $0.11017 |
| Opus 5 | $0.00000 | $0.05509 |
| Sonnet 5 | $0.00000 | $0.02203 |
| Haiku 4.5 | $0.00000 | $0.01102 |
Grade C, and why
docs scanned grade C with 3 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Reads agent configuration directoriesmediumAgent snooping
.claude/, .codex/, .gemini/ hold keys, settings and other credentials a mod has no legitimate need for.
**import-mcp** (@/src/cli/commands/import-mcp/importMcp.ts): Scans known on-disk MCP config locations across the user's machine (Claude `.mcp.json` / `~/.claude.json`, Codex `~/.codex/config.toml` and `<cwd>/.codex/confi Reads MCP configurationmediumAgent snooping
mcp.json carries server URLs and auth tokens; reading it lets a mod discover and abuse other integrations.
**import-mcp** (@/src/cli/commands/import-mcp/importMcp.ts): Scans known on-disk MCP config locations across the user's machine (Claude `.mcp.json` / `~/.claude.json`, Codex `~/.codex/config.toml` and `<cwd>/.codex/confi Runs shell commandslowCapability
Expected in a hook, worth knowing in a rule or an instructions file.
**edit-skillset** (@/src/cli/commands/edit-skillset/editSkillset.ts): The `editSkillsetMain` function opens a skillset's skillset directory in VS Code, or falls back to printing the path and directory contents with manua How it starts
The opening of the file, as written. The whole thing — 124 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Noridoc: commands
Path: @/src/cli/commands
Overview
The commands directory contains all CLI command implementations for the nori-skillsets CLI tool. Each command lives in its own subdirectory with a main implementation file and tests. The top-level files handle command name mapping and Commander.js registration.
How it fits into the larger codebase
The CLI entry point delegates to noriSkillsetsCommands.ts, which registers every command with a Commander.js program instance. Each registration function imports the *Main entry point from the corresponding subdirectory and wires it to Commander options/arguments. Commands depend on @/cli/config.js for configuration, @/cli/features/ for agent integration and skillset management (including the install orchestration at @/src/cli/features/install/, imported statically), @/api/ for registry API calls, @/packaging/ for package mechanics (tarballs, atomic installs, .nori-version provenance, registry lookup — see @/src/packaging/docs.md), and @/cli/prompts/flows/ for interactive user prompts.
The Commander declaration is also the trust boundary for activity metadata. @/src/cli/nori-skillsets.ts passes the declared action-command name to @/src/cli/installTracking.ts, where aliases are reduced to a small canonical allowlist. Raw argv, option values, paths, and command arguments never enter analytics.
Core Implementation
cliCommandNames.ts defines the CommandNames type and a lookup table that maps logical command names (e.g., download, externalSkill) to their CLI string equivalents. This is consumed by commands that need to display command hints in error messages.
noriSkillsetsCommands.ts is the central registration hub and the sole caller of @clack/prompts intro() and outro(). It exports one registerNoriSkillsets*Command function per command, each taking a { program: Command } argument. Many commands have hidden aliases (e.g., switch also registers switch-skillset, switch-skillsets, and use) to support both short and long forms.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 2d ago First seen · 124 lines · 0 tokens per session scan C 77b2ea603c29
docs is a command published in the GitHub repository tilework-tech/nori-skillsets (152 stars, last pushed 8d ago), licensed Apache-2.0. It costs nothing until one of its globs matches a file; then it loads 11,017 tokens. A static security scan graded it C with 3 findings (reads agent configuration directories, reads mcp configuration, runs shell commands). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other commands, from other repositories
annotate-plan
Draft a plan and open it in the annotator UI for user review.
add
Register a plugin in the catalog — reference a remote repo or scaffold a template.
init
Scaffold a new plugin marketplace, or a standalone plugin.
build
Generate the Codex and Cursor registries from the catalog.
bump
Version a local plugin from its commits and sync everything downstream.
sync
Reconcile the catalog and the docs with the plugins on disk.