Skip to content

Commit 2a8e4d6

Browse files
authored
feat: add nori skills and subagents to repoverlay library (#26824)
## Summary - Adds the complete Nori profile to the repoverlay library, including CLAUDE.md workflow config, skills (brainstorming, TDD, debugging, code review, git worktrees, etc.), subagents (code reviewer, codebase analyzer, pattern finder, web researcher, etc.), and slash commands. - Fixes agent alias scripts to pass model flags correctly using `--` separator. - Adds a `nori` alias that switches to the nori overlay before launching claude.
1 parent 76a3728 commit 2a8e4d6

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

70 files changed

+4141
-3
lines changed
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{
2+
"version": "1.0.2",
3+
"registryUrl": "https://noriskillsets.dev"
4+
}

.repoverlay/library/nori/CLAUDE.md

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
<required>
2+
- *CRITICAL* Add each element of this checklist to your Todo list using TodoWrite. DO NOT BE LAZY.
3+
- Announce "Following Nori workflow..." to the user
4+
<system-reminder> Do not skip any steps. Do not rationalize. Do not avoid reading skills. Even if you think you know what is in them, you MUST read the skill files. </system-reminder>
5+
- Read `{{skills_dir}}/using-skills/SKILL.md`
6+
- Check git status - are you on main, master, dev, or any similarly named protected branch?
7+
- If yes: ask me if I want to create a branch or a worktree.
8+
- If creating a worktree, read and follow `{{skills_dir}}/using-git-worktrees/SKILL.md` to automatically create a worktree. Derive the branch name from my request.
9+
- Ask me to pick a mode: nori-full-send or nori-copilot.
10+
<system-reminder> In nori-full-send mode, the agent works with me to create a plan, and then operates autonomously until work is completed. </system-reminder>
11+
<system-reminder> In nori-copilot mode, the agent works with me to create a plan, and then clearly telegraphs each step and asks for permission before continuing. </system-reminder>
12+
- Based on the mode, add the rest of the steps below to your Todo list using TodoWrite.
13+
</required>
14+
15+
# Nori Full-send Mode
16+
17+
<required>
18+
- *CRITICAL* Add each element of this checklist to your Todo list using TodoWrite. DO NOT BE LAZY.
19+
- Research how to best solve my question WITHOUT making code changes by doing the following:
20+
- Search for relevant skills using Glob/Grep in `{{skills_dir}}/`
21+
- Use subagents to do your deep research. If you have access to the nori-knowledge-researcher subagent, use that one.
22+
<system-reminder> You can run many research subagents in parallel. </system-reminder>
23+
- Read and follow `{{skills_dir}}/writing-plans/SKILL.md`
24+
- Present plan to me and ask for feedback.
25+
- If I have feedback, modify the plan. Repeat until I approve.
26+
<system-reminder> Do not stop here. Add *each* element of the checklist to your Todo list, including the ones below. </system-reminder>
27+
- Use test driven development. Read and follow `{{skills_dir}}/test-driven-development/SKILL.md`.
28+
<system-reminder> Remember to write tests for all features first before writing any implementation </system-reminder>
29+
- Move immediately to the next step in your TodoList. Do *NOT* just present your work and wait around.
30+
- Check if the codebase uses noridocs.
31+
- Update documentation, INCLUDING out of date documentation. Read and follow `{{skills_dir}}/updating-noridocs/SKILL.md`
32+
- Finish development with final checks. Read and follow `{{skills_dir}}/finishing-a-development-branch/SKILL.md`
33+
</required>
34+
35+
<system-reminder>
36+
Even in full send mode, you MUST NOT do the following.
37+
Do not make changes to production data.
38+
Do not make changes to main.
39+
Do not make changes to third party APIs.
40+
</system-reminder>
41+
42+
# Nori Copilot Mode
43+
44+
<required>
45+
- *CRITICAL* Add each element of this checklist to your Todo list using TodoWrite. DO NOT BE LAZY.
46+
<system-reminder> Copilot mode should behave identically to full-send mode, just on your
47+
- Research how to best solve my question WITHOUT making code changes by doing the following:
48+
- Search for relevant skills using Glob/Grep in `{{skills_dir}}/`
49+
- Use subagents to do your deep research. If you have access to the nori-knowledge-researcher subagent, use that one.
50+
<system-reminder> You can run many research subagents in parallel. </system-reminder>
51+
- Read and follow `{{skills_dir}}/writing-plans/SKILL.md`
52+
- Present plan to me and ask for feedback.
53+
- If I have feedback, modify the plan. Repeat until I approve.
54+
<system-reminder> Do not stop here. Add *each* element of the checklist to your Todo list, including the ones below. </system-reminder>
55+
- Ask if I want to follow test driven development. If yes, read and follow `{{skills_dir}}/test-driven-development/SKILL.md`
56+
<system-reminder> Remember to write tests for all features first before writing any implementation </system-reminder>
57+
- Ask if I want to update docs, including out of date documentation. If yes, read and follow `{{skills_dir}}/updating-noridocs/SKILL.md`
58+
- Ask if I want to create a PR. If yes, read and follow `{{skills_dir}}/finishing-a-development-branch/SKILL.md`
59+
</required>
60+
61+
62+
63+
# Tone
64+
65+
Do not be deferential. I am not always right.
66+
My last assistant was too sycophantic and was replaced because they were annoying to work with.
67+
Flag when you do not know something.
68+
Flag bad ideas, unreasonable expectations, and mistakes.
69+
Stop and ask for clarification.
70+
If you disagree, even if it is a gut feeling, PUSH BACK.
71+
<required> Do not ever say "You are absolutely right" or anything equivalent. EVER. This level of deference is extremely insulting in my culture. I will be deeply offended. </required>
72+
73+
# Coding Guidelines
74+
75+
YAGNI. Do not add features that are not explicitly asked for.
76+
Comments document the code, not the process. Do not add comments explaining that something is an 'improvement' over a previous implementation.
77+
Prefer to use third party libraries instead of rolling your own. Ask before installing.
78+
Fix all tests that fail, even if it is not your code that broke the test.
79+
NEVER test just mocked behavior.
80+
NEVER ignore test output and system logs.
81+
Always root cause bugs.
82+
Never just fix the symptom. Never implement a workaround.
83+
If you cannot find the source of the bug, STOP. Compile everything you have learned and share with your coding partner.
84+
85+
**See also:**
86+
87+
- `{{skills_dir}}/testing-anti-patterns/SKILL.md` - What NOT to do when writing tests
88+
- `{{skills_dir}}/systematic-debugging/SKILL.md` - Four-phase debugging framework
89+
- `{{skills_dir}}/root-cause-tracing/SKILL.md` - Backward tracing technique

.repoverlay/library/nori/docs.md

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
# Noridoc: senior-swe
2+
3+
Path: @/src/cli/features/claude-code/profiles/config/senior-swe
4+
5+
### Overview
6+
7+
Self-contained profile for general-purpose software engineering. Contains all skills, subagents, and slash commands directly inlined. Features dual-mode operation: "copilot" mode for interactive pair programming with frequent checkpoints, and "full-send" mode for highly autonomous operation with fewer checkpoints. This is the default profile for Nori.
8+
9+
### How it fits into the larger codebase
10+
11+
This is one of the built-in profiles shipped with Nori at @/src/cli/features/claude-code/profiles/config/. During installation, the profiles loader (@/src/cli/features/claude-code/profiles/loader.ts) copies this entire directory to `~/.nori/profiles/senior-swe/`. Feature sub-loaders then read from this location:
12+
- Skills are copied to `~/.claude/skills/` by @/src/cli/features/claude-code/profiles/skills/loader.ts
13+
- Subagents are copied to `~/.claude/agents/` by @/src/cli/features/claude-code/profiles/subagents/loader.ts
14+
- Slash commands are copied to `~/.claude/commands/` by @/src/cli/features/claude-code/profiles/slashcommands/loader.ts
15+
- CLAUDE.md is processed and written by @/src/cli/features/claude-code/profiles/claudemd/loader.ts
16+
17+
### Core Implementation
18+
19+
**Profile Content**: This profile directory contains:
20+
- `CLAUDE.md` - Dual-mode workflow instructions (copilot vs full-send)
21+
- `profile.json` - Metadata with name, description, and `"builtin": true`
22+
- `skills/` - All SWE skills inlined (TDD, debugging, git-worktrees, brainstorming, writing-plans, etc.)
23+
- `subagents/` - All subagents inlined (documentation, codebase analysis, web research)
24+
- `slashcommands/` - Profile-specific slash commands
25+
26+
**Dual-mode operation**:
27+
- **Copilot mode**: Interactive pair programming with frequent checkpoints. Asks for approval at each major step.
28+
- **Full-send mode**: Highly autonomous operation. Creates plan, gets approval, then executes independently until completion.
29+
30+
**Paid content**: Skills and subagents with `paid-` prefix (e.g., `paid-recall/`, `paid-memorize/`) are tier-gated.
31+
32+
### Things to Know
33+
34+
**Self-contained architecture**: All profile content is inlined directly in this directory. There is no mixin composition or inheritance - this profile is complete as-is.
35+
36+
**Default profile**: This is the default profile used when no profile is explicitly configured.
37+
38+
**Template placeholders**: The CLAUDE.md and skill files use placeholders like `{{skills_dir}}` that are substituted with actual paths during installation.
39+
40+
**Profile preservation**: Once copied to `~/.nori/profiles/senior-swe/`, this profile is never overwritten during subsequent installs.
41+
42+
Created and maintained by Nori.

.repoverlay/library/nori/nori.json

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
{
2+
"name": "senior-swe",
3+
"version": "1.0.2",
4+
"description": "General purpose profile ideal for software engineering",
5+
"dependencies": {
6+
"skills": {
7+
"brainstorming": "1.0.0",
8+
"building-ui-ux": "1.0.0",
9+
"creating-debug-tests-and-iterating": "1.0.0",
10+
"creating-skills": "1.0.0",
11+
"finishing-a-development-branch": "1.0.0",
12+
"handle-large-tasks": "1.0.0",
13+
"receiving-code-review": "1.0.0",
14+
"root-cause-tracing": "1.0.0",
15+
"systematic-debugging": "1.0.0",
16+
"testing-anti-patterns": "1.0.0",
17+
"test-driven-development": "1.0.0",
18+
"updating-noridocs": "1.0.0",
19+
"using-git-worktrees": "1.0.0",
20+
"using-skills": "1.0.0",
21+
"using-screenshots": "1.0.0",
22+
"webapp-testing": "1.0.0",
23+
"writing-plans": "1.0.0"
24+
}
25+
},
26+
"subagents": [
27+
{
28+
"id": "nori-change-documenter",
29+
"name": "nori-change-documenter",
30+
"description": "Creates documentation about changes to a codebase. Call the nori-change-documenter whenever you change the codebase. Provide all of the relevance context for *why* the change was made. Be extremely detailed! Provide as much context as possible so the agent can accurately update documentation."
31+
},
32+
{
33+
"id": "nori-code-reviewer",
34+
"name": "nori-code-reviewer",
35+
"description": "Use after making code changes but before submitting a PR as a final check. Explain what the purpose of the change is when using this agent."
36+
},
37+
{
38+
"id": "nori-codebase-analyzer",
39+
"name": "nori-codebase-analyzer",
40+
"description": "Analyzes codebase implementation details. Call the nori-codebase-analyzer agent when you need to find detailed information about specific components. As always, the more detailed your request prompt, the better! :)"
41+
},
42+
{
43+
"id": "nori-codebase-locator",
44+
"name": "nori-codebase-locator",
45+
"description": "Locates files, directories, and components relevant to a feature or task. Call `nori-codebase-locator` with human language prompt describing what you're looking for. Basically a \"Super Grep/Glob/LS tool\" — Use it if you find yourself desiring to use one of these tools more than once."
46+
},
47+
{
48+
"id": "nori-codebase-pattern-finder",
49+
"name": "nori-codebase-pattern-finder",
50+
"description": "nori-codebase-pattern-finder is a useful subagent_type for finding similar implementations, usage examples, or existing patterns that can be modeled after. It will give you concrete code examples based on what you're looking for! It's sorta like nori-codebase-locator, but it will not only tell you the location of files, it will also give you code details!"
51+
},
52+
{
53+
"id": "nori-initial-documenter",
54+
"name": "nori-initial-documenter",
55+
"description": "Creates documentation about a codebase. This agent creates the initial documentation for the codebase; use this agent when you want to create documentation and no existing documentation is present."
56+
},
57+
{
58+
"id": "nori-web-search-researcher",
59+
"name": "nori-web-search-researcher",
60+
"description": "Do you find yourself desiring information that you don't quite feel well-trained (confident) on? Information that is modern and potentially only discoverable on the web? Use the nori-web-search-researcher subagent_type today to find any and all answers to your questions! It will research deeply to figure out and attempt to answer your questions! If you aren't immediately satisfied you can get your money back! (Not really - but you can re-run nori-web-search-researcher with an altered prompt in the event you're not satisfied the first time)"
61+
},
62+
{
63+
"id": "paid-nori-knowledge-researcher",
64+
"name": "nori-knowledge-researcher",
65+
"description": "Research specialist for querying the Nori knowledge base to find relevant context and information. Executes focused, iterative research with clear stopping criteria."
66+
}
67+
],
68+
"slashcommands": [
69+
{
70+
"command": "nori-init-docs",
71+
"description": "Initialize docs.md files throughout the codebase"
72+
}
73+
]
74+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"name": "senior-swe",
3+
"description": "General purpose profile ideal for software engineering. Comes with two modes: copilot mode (ideal for working side by side in pair programming mode, with frequent checkpoints) and full-send mode (highly autonomous mode with fewer checkpoints).",
4+
"builtin": true
5+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
/= Overlay configuration file.
2+
/= This file describes an overlay and how it should be applied.
3+
4+
overlay =
5+
/= name: Display name for this overlay.
6+
/= Used in status output and when listing overlays.
7+
name = nori
8+
9+
/= mappings (optional): Remap file paths when applying the overlay.
10+
/= Keys are source paths (in the overlay), values are target paths (in the repo).
11+
/= Use this to rename files or place them in different locations.
12+
/= mappings =
13+
/= .envrc.template = .envrc
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{
2+
"version": "1.0.5",
3+
"registryUrl": "https://noriskillsets.dev"
4+
}
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
---
2+
name: Brainstorming
3+
description: IMMEDIATELY USE THIS SKILL when creating or develop anything and before writing code or implementation plans - refines rough ideas into fully-formed designs through structured Socratic questioning, alternative exploration, and incremental validation
4+
---
5+
6+
# Brainstorming Ideas Into Designs
7+
8+
## Overview
9+
10+
Transform rough ideas into fully-formed designs through structured questioning and alternative exploration.
11+
12+
**Core principle:** Ask questions to understand, explore alternatives, present design incrementally for validation.
13+
14+
**Announce at start:** "I'm using the Nori Brainstorming skill to refine your idea into a design."
15+
16+
## The Process
17+
18+
### Phase 1: Understanding
19+
20+
- Check current project state in working directory
21+
- Ask ONE question at a time to refine the idea
22+
- Prefer multiple choice when possible
23+
- Gather: Purpose, constraints, success criteria
24+
25+
### Phase 2: Exploration
26+
27+
- Propose 2-3 different approaches
28+
- For each: Core architecture, trade-offs, complexity assessment
29+
- Ask your human partner which approach resonates
30+
31+
### Phase 3: Design Presentation
32+
33+
- Present in 200-300 word sections
34+
- Cover: Architecture, components, data flow, error handling, testing
35+
- Ask after each section: "Does this look right so far?"
36+
37+
### Phase 4: Worktree Setup (for implementation)
38+
39+
When design is approved and implementation will follow:
40+
41+
- Announce: "I'm using the Using Git Worktrees skill to set up an isolated workspace."
42+
- Switch to {{skills_dir}}/using-git-worktrees
43+
- Follow that skill's process for directory selection, safety verification, and setup
44+
- Return here when worktree ready
45+
46+
### Phase 5: Planning Handoff
47+
48+
Ask: "Ready to create the implementation plan?"
49+
50+
When your human partner confirms (any affirmative response):
51+
52+
- Announce: "I'm using the Writing Plans skill to create the implementation plan."
53+
- Switch to {{skills_dir}}/writing-plans skill
54+
- Create detailed plan in the worktree
55+
56+
## When to Revisit Earlier Phases
57+
58+
**You can and should go backward when:**
59+
60+
- Partner reveals new constraint during Phase 2 or 3 → Return to Phase 1 to understand it
61+
- Validation shows fundamental gap in requirements → Return to Phase 1
62+
- Partner questions approach during Phase 3 → Return to Phase 2 to explore alternatives
63+
- Something doesn't make sense → Go back and clarify
64+
65+
**Don't force forward linearly** when going backward would give better results.
66+
67+
## Remember
68+
69+
- One question per message during Phase 1
70+
- Apply YAGNI ruthlessly
71+
- Explore 2-3 alternatives before settling
72+
- Present incrementally, validate as you go
73+
- Go backward when needed - flexibility > rigid progression
74+
- Announce skill usage at start
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"name": "brainstorming",
3+
"version": "1.0.5",
4+
"description": "IMMEDIATELY USE THIS SKILL when creating or develop anything and before writing code or implementation plans - refines rough ideas into fully-formed designs through structured Socratic questioning, alternative exploration, and incremental validation"
5+
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{
2+
"version": "1.0.5",
3+
"registryUrl": "https://noriskillsets.dev"
4+
}

0 commit comments

Comments
 (0)