System for managing collections of agent skills. Switch between skillsets seamlessly!
166
stars
606
commits
TypeScript
primary language
Sep 10, 2026
updated
CLI Client for installing and managing Nori Skillsets
The Nori Skillsets Client connects you to noriskillsets.dev, a registry of verified agent Skills and packaged agent configurations. Install complete Skillsets or individual Skills that have been reviewed for effectiveness, clarity, and proper implementation.
The client supports a wide range of coding agents (Claude Code, Cursor, Codex, Gemini CLI, GitHub Copilot, OpenCode, Goose, Kilo, Kimi CLI, Pi, OpenClaw, Droid). Each agent receives a translation of the same skillset into the format it expects on disk.
For complete documentation and to browse available Skillsets, visit:
A Skillset is a complete, unified configuration that defines how your coding agent behaves. Skillsets can include:
.mcp.json for Claude, config.toml for Codex, settings.json for Gemini, mcp.json for Cursor)Install the client:
npm install -g nori-skillsets
Run init to set up a skillsets folder at cwd/.nori/profiles and capture your existing configs. Note that this will set up in the folder that you run the command in, allowing you to scope skillsets by project.
nori-skillsets init
Download a skillset from noriskillsets.dev.
nori-skillsets download senior-swe
Switch to using the new skillset.
nori-skillsets switch senior-swe
Skillsets are stored in ~/.nori/profiles/ as your library of available configurations. When you switch to a Skillset, the client writes its contents into the relevant locations for each configured agent (e.g., .claude/ for Claude Code, .cursor/ for Cursor, .codex/ for Codex, .gemini/ for Gemini CLI). Configure which agents to target with nori-skillsets config.
Skillset Structure:
~/.nori/profiles/my-skillset/
├── AGENTS.md # Custom instructions (CLAUDE.md also supported)
├── nori.json # Skillset manifest (name, version, dependencies, requiredEnv)
├── skills/ # Skill definitions
│ ├── my-skill/
│ │ └── SKILL.md
│ └── another-skill/
│ └── SKILL.md
├── subagents/ # Subagent configurations
├── slashcommands/ # Custom slash commands
└── mcp/ # Canonical MCP server configs (one JSON file per server)
When you activate a Skillset:
This separation lets you maintain multiple Skillsets, target multiple agents at once, and switch between them without losing any configuration.
Create the skillset directory:
mkdir -p ~/.nori/profiles/my-skillset
Add an AGENTS.md file with your custom instructions:
# My Custom Skillset
Add your workflow preferences here:
- Testing requirements
- Git automation rules
- Code style guidelines
- Any repeating instructions
Activate your skillset:
nori-skillsets switch my-skillset
Manual changes made to an agent's installed directory (e.g., .claude/, .cursor/, .codex/) will be removed when switching skillsets. Manual changes should be made in the ~/.nori/profiles/<skillset-name>/ directory instead.
Agents name their tools differently — Claude Code has TaskCreate, Codex has update_plan. Rather than forking a skill per agent, mark the differences inline and Nori keeps only the part that applies to whichever agent it is installing for:
Track work with {{claude-code TaskCreate}}{{codex update_plan}}{{else your plan tool}} first.
For anything longer than a phrase, use the block form:
{{#claude-code}}
Multi-line guidance for Claude Code.
{{else codex}}
Multi-line guidance for Codex.
{{else}}
Guidance for everyone else.
{{/}}
The same file installed for Claude Code and for Codex produces two different results. Tags naming anything that is not a known agent are left alone, and fenced code blocks are never touched.
Run nori-skillsets syntax for the full reference, including comma lists, negation, and the {{skills_dir}}-style path placeholders.
Teams can set up private registries to share custom Skillsets across the organization. With private registries:
Contact us at noriagentic.com to set up a private registry for your team.
TypeScript
96.0%
Shell
2.0%
JavaScript
1.5%
System for managing collections of agent skills. Switch between skillsets seamlessly!
166
stars
606
commits
TypeScript
primary language
Sep 10, 2026
updated
CLI Client for installing and managing Nori Skillsets
The Nori Skillsets Client connects you to noriskillsets.dev, a registry of verified agent Skills and packaged agent configurations. Install complete Skillsets or individual Skills that have been reviewed for effectiveness, clarity, and proper implementation.
The client supports a wide range of coding agents (Claude Code, Cursor, Codex, Gemini CLI, GitHub Copilot, OpenCode, Goose, Kilo, Kimi CLI, Pi, OpenClaw, Droid). Each agent receives a translation of the same skillset into the format it expects on disk.
For complete documentation and to browse available Skillsets, visit:
A Skillset is a complete, unified configuration that defines how your coding agent behaves. Skillsets can include:
.mcp.json for Claude, config.toml for Codex, settings.json for Gemini, mcp.json for Cursor)Install the client:
npm install -g nori-skillsets
Run init to set up a skillsets folder at cwd/.nori/profiles and capture your existing configs. Note that this will set up in the folder that you run the command in, allowing you to scope skillsets by project.
nori-skillsets init
Download a skillset from noriskillsets.dev.
nori-skillsets download senior-swe
Switch to using the new skillset.
nori-skillsets switch senior-swe
Skillsets are stored in ~/.nori/profiles/ as your library of available configurations. When you switch to a Skillset, the client writes its contents into the relevant locations for each configured agent (e.g., .claude/ for Claude Code, .cursor/ for Cursor, .codex/ for Codex, .gemini/ for Gemini CLI). Configure which agents to target with nori-skillsets config.
Skillset Structure:
~/.nori/profiles/my-skillset/
├── AGENTS.md # Custom instructions (CLAUDE.md also supported)
├── nori.json # Skillset manifest (name, version, dependencies, requiredEnv)
├── skills/ # Skill definitions
│ ├── my-skill/
│ │ └── SKILL.md
│ └── another-skill/
│ └── SKILL.md
├── subagents/ # Subagent configurations
├── slashcommands/ # Custom slash commands
└── mcp/ # Canonical MCP server configs (one JSON file per server)
When you activate a Skillset:
This separation lets you maintain multiple Skillsets, target multiple agents at once, and switch between them without losing any configuration.
Create the skillset directory:
mkdir -p ~/.nori/profiles/my-skillset
Add an AGENTS.md file with your custom instructions:
# My Custom Skillset
Add your workflow preferences here:
- Testing requirements
- Git automation rules
- Code style guidelines
- Any repeating instructions
Activate your skillset:
nori-skillsets switch my-skillset
Manual changes made to an agent's installed directory (e.g., .claude/, .cursor/, .codex/) will be removed when switching skillsets. Manual changes should be made in the ~/.nori/profiles/<skillset-name>/ directory instead.
Agents name their tools differently — Claude Code has TaskCreate, Codex has update_plan. Rather than forking a skill per agent, mark the differences inline and Nori keeps only the part that applies to whichever agent it is installing for:
Track work with {{claude-code TaskCreate}}{{codex update_plan}}{{else your plan tool}} first.
For anything longer than a phrase, use the block form:
{{#claude-code}}
Multi-line guidance for Claude Code.
{{else codex}}
Multi-line guidance for Codex.
{{else}}
Guidance for everyone else.
{{/}}
The same file installed for Claude Code and for Codex produces two different results. Tags naming anything that is not a known agent are left alone, and fenced code blocks are never touched.
Run nori-skillsets syntax for the full reference, including comma lists, negation, and the {{skills_dir}}-style path placeholders.
Teams can set up private registries to share custom Skillsets across the organization. With private registries:
Contact us at noriagentic.com to set up a private registry for your team.
TypeScript
96.0%
Shell
2.0%
JavaScript
1.5%