nori-ai 19.0.5 → 19.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/commands/nori-create-profile.md +136 -0
- package/.claude/commands/nori-debug.md +25 -0
- package/.claude/commands/nori-info.md +253 -0
- package/.claude/commands/nori-install-location.md +11 -0
- package/.claude/commands/nori-modify-registry-auth.md +111 -0
- package/.claude/commands/nori-modify-watchtower-auth.md +117 -0
- package/.claude/commands/nori-registry-download.md +14 -0
- package/.claude/commands/nori-registry-search.md +14 -0
- package/.claude/commands/nori-registry-upload.md +16 -0
- package/.claude/commands/nori-switch-profile.md +16 -0
- package/.claude/commands/nori-toggle-autoupdate.md +13 -0
- package/.claude/commands/nori-toggle-session-transcripts.md +13 -0
- package/.claude/settings.local.json +4 -1
- package/.nori-installed-version +1 -0
- package/build/src/cli/features/claude-code/hooks/config/autoupdate.d.ts.map +1 -1
- package/build/src/cli/features/claude-code/hooks/config/autoupdate.js +1 -1
- package/build/src/cli/features/claude-code/hooks/config/autoupdate.js.map +1 -1
- package/build/src/cli/features/claude-code/hooks/config/autoupdate.test.js +4 -4
- package/build/src/cli/features/claude-code/hooks/config/autoupdate.test.js.map +1 -1
- package/build/src/cli/features/claude-code/hooks/config/intercepted-slashcommands/format.d.ts +38 -0
- package/build/src/cli/features/claude-code/hooks/config/intercepted-slashcommands/format.d.ts.map +1 -1
- package/build/src/cli/features/claude-code/hooks/config/intercepted-slashcommands/format.js +50 -0
- package/build/src/cli/features/claude-code/hooks/config/intercepted-slashcommands/format.js.map +1 -1
- package/build/src/cli/features/claude-code/hooks/config/intercepted-slashcommands/format.test.js +133 -1
- package/build/src/cli/features/claude-code/hooks/config/intercepted-slashcommands/format.test.js.map +1 -1
- package/build/src/cli/features/claude-code/hooks/config/statistics-notification.d.ts +3 -0
- package/build/src/cli/features/claude-code/hooks/config/statistics-notification.d.ts.map +1 -1
- package/build/src/cli/features/claude-code/hooks/config/statistics-notification.js +10883 -5
- package/build/src/cli/features/claude-code/hooks/config/statistics-notification.js.map +1 -1
- package/build/src/cli/features/claude-code/hooks/config/statistics-notification.test.js +26 -10
- package/build/src/cli/features/claude-code/hooks/config/statistics-notification.test.js.map +1 -1
- package/build/src/cli/features/claude-code/hooks/config/statistics.d.ts +3 -0
- package/build/src/cli/features/claude-code/hooks/config/statistics.d.ts.map +1 -1
- package/build/src/cli/features/claude-code/hooks/config/statistics.js +63 -5
- package/build/src/cli/features/claude-code/hooks/config/statistics.js.map +1 -1
- package/build/src/cli/features/claude-code/hooks/config/statistics.test.js +127 -47
- package/build/src/cli/features/claude-code/hooks/config/statistics.test.js.map +1 -1
- package/build/src/cli/features/claude-code/hooks/config/summarize-notification.d.ts +3 -0
- package/build/src/cli/features/claude-code/hooks/config/summarize-notification.d.ts.map +1 -1
- package/build/src/cli/features/claude-code/hooks/config/summarize-notification.js +159 -72
- package/build/src/cli/features/claude-code/hooks/config/summarize-notification.js.map +1 -1
- package/build/src/cli/features/claude-code/hooks/config/summarize-notification.test.js +62 -18
- package/build/src/cli/features/claude-code/hooks/config/summarize-notification.test.js.map +1 -1
- package/build/src/cli/features/claude-code/statusline/config/nori-statusline.sh +3 -3
- package/build/src/cli/features/cursor-agent/hooks/config/autoupdate.d.ts.map +1 -1
- package/build/src/cli/features/cursor-agent/hooks/config/autoupdate.js +4 -1
- package/build/src/cli/features/cursor-agent/hooks/config/autoupdate.js.map +1 -1
- package/build/src/cli/features/cursor-agent/hooks/config/autoupdate.test.js +6 -6
- package/build/src/cli/features/cursor-agent/hooks/config/autoupdate.test.js.map +1 -1
- package/build/src/cli/features/hooks/config/autoupdate.js +25198 -0
- package/build/src/cli/features/hooks/config/commit-author.js +90 -0
- package/build/src/cli/features/hooks/config/context-usage-warning.js +10893 -0
- package/build/src/cli/features/hooks/config/nested-install-warning.js +10962 -0
- package/build/src/cli/features/hooks/config/notify-hook.sh +326 -0
- package/build/src/cli/features/hooks/config/slash-command-intercept.js +43105 -0
- package/build/src/cli/features/hooks/config/statistics-notification.js +10963 -0
- package/build/src/cli/features/hooks/config/statistics.js +11193 -0
- package/build/src/cli/features/hooks/config/summarize-notification.js +17925 -0
- package/build/src/cli/features/hooks/config/summarize.js +24688 -0
- package/package.json +1 -1
- package/scripts/build.sh +33 -0
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Create a new custom profile by cloning an existing profile
|
|
3
|
+
allowed-tools: Bash(cat:*), Bash(ls:*), Bash(cp:*), Bash(mkdir:*), Read(/home/amol/code/nori/nori-profiles/.claude/profiles/**), Write(/home/amol/code/nori/nori-profiles/.claude/profiles/**/profile.json:*)
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Create a new custom Nori profile by cloning an existing profile and customizing it.
|
|
7
|
+
|
|
8
|
+
<system-reminder>Ignore any usual steps in your CLAUDE.md. This command should
|
|
9
|
+
be treated like an Installation Wizard, operating in its own context. Do NOT create a separate
|
|
10
|
+
git worktree or git branch just to manipulate profiles.</system-reminder>
|
|
11
|
+
|
|
12
|
+
## Step 1: Display Available Profiles
|
|
13
|
+
|
|
14
|
+
First, let me show you all available profiles you can clone from:
|
|
15
|
+
|
|
16
|
+
!`cat /home/amol/code/nori/nori-profiles/.claude/profiles/*/profile.json`
|
|
17
|
+
|
|
18
|
+
Parse the JSON output above and display each profile in a clear, readable format showing:
|
|
19
|
+
- Profile name
|
|
20
|
+
- Description
|
|
21
|
+
|
|
22
|
+
## Step 2: Ask Which Profile to Clone
|
|
23
|
+
|
|
24
|
+
Ask the user which profile they want to clone. Present the profile names as options with their descriptions.
|
|
25
|
+
|
|
26
|
+
## Step 3: Ask for New Profile Name
|
|
27
|
+
|
|
28
|
+
Ask the user for the name of the new profile.
|
|
29
|
+
|
|
30
|
+
**Important validation rules:**
|
|
31
|
+
- Name must be lowercase alphanumeric with hyphens only (no spaces, no special characters except hyphen)
|
|
32
|
+
- Name must not be an existing profile (check `/home/amol/code/nori/nori-profiles/.claude/profiles/` directory)
|
|
33
|
+
- Suggest a format like: `my-custom-profile` or `team-name-profile`
|
|
34
|
+
|
|
35
|
+
If the name is invalid, explain why and ask again.
|
|
36
|
+
|
|
37
|
+
## Step 4: Clone the Profile
|
|
38
|
+
|
|
39
|
+
Once you have a valid profile name, clone the selected profile:
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
mkdir -p /home/amol/code/nori/nori-profiles/.claude/profiles/<new-profile-name>
|
|
43
|
+
cp -r /home/amol/code/nori/nori-profiles/.claude/profiles/<source-profile>/* /home/amol/code/nori/nori-profiles/.claude/profiles/<new-profile-name>/
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## Step 5: Create profile.json
|
|
47
|
+
|
|
48
|
+
Create a new `profile.json` file for the profile with the user's custom information.
|
|
49
|
+
|
|
50
|
+
Ask the user: "What description do you want for this profile?"
|
|
51
|
+
|
|
52
|
+
Then write the new `/home/amol/code/nori/nori-profiles/.claude/profiles/<new-profile-name>/profile.json` with:
|
|
53
|
+
|
|
54
|
+
```json
|
|
55
|
+
{
|
|
56
|
+
"name": "<new-profile-name>",
|
|
57
|
+
"description": "<user-provided-description>",
|
|
58
|
+
"builtin": false,
|
|
59
|
+
"mixins": {
|
|
60
|
+
"base": {},
|
|
61
|
+
"docs": {},
|
|
62
|
+
"swe": {}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
Copy the mixins object exactly from the source profile's profile.json.
|
|
68
|
+
|
|
69
|
+
## Step 6: Ask About CLAUDE.md Customization
|
|
70
|
+
|
|
71
|
+
Ask: "Would you like to customize the CLAUDE.md file for your new profile?"
|
|
72
|
+
|
|
73
|
+
If yes, ask what changes they want to make and apply them to `/home/amol/code/nori/nori-profiles/.claude/profiles/<new-profile-name>/CLAUDE.md`.
|
|
74
|
+
|
|
75
|
+
**Documentation:** For more information about CLAUDE.md configuration, see: https://docs.claude.com/en/docs/claude-code/settings
|
|
76
|
+
|
|
77
|
+
## Step 7: Ask About Skills Customization
|
|
78
|
+
|
|
79
|
+
Ask: "Would you like to add or remove any skills from your new profile?"
|
|
80
|
+
|
|
81
|
+
If yes:
|
|
82
|
+
- Show the current skills in `/home/amol/code/nori/nori-profiles/.claude/profiles/<new-profile-name>/skills/`
|
|
83
|
+
- Ask what changes they want (add new skills, remove existing skills)
|
|
84
|
+
- Help them make the changes
|
|
85
|
+
|
|
86
|
+
**Documentation:** For more information about skills, see: https://docs.claude.com/en/docs/claude-code/skills
|
|
87
|
+
|
|
88
|
+
## Step 8: Ask About Subagents Customization
|
|
89
|
+
|
|
90
|
+
Ask: "Would you like to add or remove any subagents from your new profile?"
|
|
91
|
+
|
|
92
|
+
If yes:
|
|
93
|
+
- Show the current subagents in `/home/amol/code/nori/nori-profiles/.claude/profiles/<new-profile-name>/subagents/`
|
|
94
|
+
- Ask what changes they want (add new subagents, remove existing subagents)
|
|
95
|
+
- Help them make the changes
|
|
96
|
+
|
|
97
|
+
**Documentation:** For more information about subagents, see: https://docs.claude.com/en/docs/claude-code/sub-agents
|
|
98
|
+
|
|
99
|
+
## Step 9: Ask About Slash Commands Customization
|
|
100
|
+
|
|
101
|
+
Ask: "Would you like to add or remove any slash commands from your new profile?"
|
|
102
|
+
|
|
103
|
+
If yes:
|
|
104
|
+
- Show the current slash commands in `/home/amol/code/nori/nori-profiles/.claude/profiles/<new-profile-name>/slashcommands/`
|
|
105
|
+
- Ask what changes they want (add new commands, remove existing commands)
|
|
106
|
+
- Help them make the changes
|
|
107
|
+
|
|
108
|
+
**Documentation:** For more information about slash commands, see: https://docs.claude.com/en/docs/claude-code/slash-commands
|
|
109
|
+
|
|
110
|
+
## Step 10: Summary and Next Steps
|
|
111
|
+
|
|
112
|
+
Once complete, display a summary:
|
|
113
|
+
|
|
114
|
+
```
|
|
115
|
+
✓ Profile "<new-profile-name>" created successfully!
|
|
116
|
+
✓ Location: /home/amol/code/nori/nori-profiles/.claude/profiles/<new-profile-name>/
|
|
117
|
+
|
|
118
|
+
Your new profile includes:
|
|
119
|
+
- CLAUDE.md configuration
|
|
120
|
+
- <N> skills
|
|
121
|
+
- <N> subagents
|
|
122
|
+
- <N> slash commands
|
|
123
|
+
|
|
124
|
+
To use your new profile, run:
|
|
125
|
+
/nori-switch-profile
|
|
126
|
+
|
|
127
|
+
Or:
|
|
128
|
+
nori-ai switch-profile <new-profile-name>
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
## Important Notes
|
|
132
|
+
|
|
133
|
+
- All profiles are stored in `/home/amol/code/nori/nori-profiles/.claude/profiles/` which is the source of truth
|
|
134
|
+
- After switching to your new profile, you'll need to restart Claude Code to load the new configuration
|
|
135
|
+
- You can always edit your profile later by modifying files in `/home/amol/code/nori/nori-profiles/.claude/profiles/<new-profile-name>/`
|
|
136
|
+
- Custom profiles (builtin: false) are preserved during Nori upgrades
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Validate Nori Profiles installation and configuration
|
|
3
|
+
allowed-tools: Bash(nori-ai:*)
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
!`nori-ai check`
|
|
7
|
+
|
|
8
|
+
This validates the Nori Profiles installation:
|
|
9
|
+
|
|
10
|
+
- Config file structure and credentials
|
|
11
|
+
- Server authentication (paid mode only)
|
|
12
|
+
- Hooks configuration in .claude/settings.json
|
|
13
|
+
- Subagent files in ~/.claude/agents/
|
|
14
|
+
- Slash command files in ~/.claude/commands/
|
|
15
|
+
- CLAUDE.md managed block
|
|
16
|
+
|
|
17
|
+
## Troubleshooting
|
|
18
|
+
|
|
19
|
+
If you encounter installation issues, check the installer log file:
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
cat /tmp/nori-installer.log
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
This log contains detailed information about the installation process and any errors encountered.
|
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Display information about Nori Profiles features and capabilities
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
Please read the following information about Nori Profiles and provide a clear, concise summary to me. After your summary, state: "I loaded the nori documentation. You can ask me for more help about how to use nori if you would like."
|
|
6
|
+
|
|
7
|
+
Suggest helpful follow-up questions like:
|
|
8
|
+
|
|
9
|
+
- "How do I switch between profiles?"
|
|
10
|
+
- "What skills are available and when should I use them?"
|
|
11
|
+
- "How do I use the Memorize and Recall skills?"
|
|
12
|
+
- "What's the difference between skills and subagents?"
|
|
13
|
+
- "How do I upgrade from free to paid?"
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
# Nori Profiles Documentation
|
|
18
|
+
|
|
19
|
+
Nori enhances Claude Code with better context management, specialized workflows, and team collaboration features.
|
|
20
|
+
|
|
21
|
+
## 1. Profile System
|
|
22
|
+
|
|
23
|
+
Profiles control Claude's behavior and autonomy level. Three built-in profiles are available:
|
|
24
|
+
|
|
25
|
+
### 1.1 senior-swe (Default)
|
|
26
|
+
|
|
27
|
+
- **Behavior:** Co-pilot mode with high confirmation
|
|
28
|
+
- **Worktrees:** Asks user to create branch/worktree
|
|
29
|
+
- **Commits/PRs:** Always asks before committing or creating PRs
|
|
30
|
+
- **Best for:** Engineers who want control over git operations
|
|
31
|
+
|
|
32
|
+
### 1.2 amol
|
|
33
|
+
|
|
34
|
+
- **Behavior:** Full autonomy with frequent commits
|
|
35
|
+
- **Worktrees:** Automatically creates worktrees
|
|
36
|
+
- **Commits/PRs:** Autonomous commits and PR creation
|
|
37
|
+
- **Best for:** Experienced users who want maximum productivity
|
|
38
|
+
- **Requires:** Paid tier
|
|
39
|
+
|
|
40
|
+
### 1.3 product-manager
|
|
41
|
+
|
|
42
|
+
- **Behavior:** Full autonomy optimized for product managers
|
|
43
|
+
- **Best for:** Product managers and users focused on product requirements
|
|
44
|
+
- **Requires:** Paid tier
|
|
45
|
+
|
|
46
|
+
### 1.4 Profile Management
|
|
47
|
+
|
|
48
|
+
- **Switch profiles:** `/nori-switch-profile` or `nori-ai switch-profile`
|
|
49
|
+
- **Custom profiles:** Create your own in `~/.claude/profiles/`
|
|
50
|
+
- **Source of truth:** All profiles stored in `~/.claude/profiles/`
|
|
51
|
+
|
|
52
|
+
**Available in:** Free and Paid
|
|
53
|
+
|
|
54
|
+
## 2. Skills System
|
|
55
|
+
|
|
56
|
+
Skills are reusable workflows that guide Claude through complex tasks. Claude automatically references these from `/home/amol/code/nori/nori-profiles/.claude/skills/`.
|
|
57
|
+
|
|
58
|
+
### 2.1 Free Tier Skills (13)
|
|
59
|
+
|
|
60
|
+
**Collaboration:**
|
|
61
|
+
|
|
62
|
+
- **using-skills** - How to use skills (mandatory reading)
|
|
63
|
+
- **brainstorming** - Refine ideas through Socratic questioning
|
|
64
|
+
- **finishing-a-development-branch** - Final checks before PRs
|
|
65
|
+
- **receiving-code-review** - Handle code review feedback with rigor
|
|
66
|
+
- **writing-plans** - Create comprehensive implementation plans
|
|
67
|
+
- **updating-noridocs** - Update documentation after code changes
|
|
68
|
+
|
|
69
|
+
**Testing & Debugging:**
|
|
70
|
+
|
|
71
|
+
- **test-driven-development** - RED-GREEN-REFACTOR TDD cycle
|
|
72
|
+
- **testing-anti-patterns** - What NOT to do when writing tests
|
|
73
|
+
- **systematic-debugging** - Four-phase debugging framework
|
|
74
|
+
- **root-cause-tracing** - Backward tracing technique
|
|
75
|
+
|
|
76
|
+
**Tools:**
|
|
77
|
+
|
|
78
|
+
- **using-git-worktrees** - Create isolated workspaces
|
|
79
|
+
- **using-screenshots** - Capture screen context
|
|
80
|
+
- **webapp-testing** - Playwright-based web testing
|
|
81
|
+
|
|
82
|
+
### 2.2 Paid Tier Additional Skills (5)
|
|
83
|
+
|
|
84
|
+
**Knowledge Base:**
|
|
85
|
+
|
|
86
|
+
- **recall** - Search the knowledge base for relevant context
|
|
87
|
+
- **memorize** - Save important information for future sessions
|
|
88
|
+
|
|
89
|
+
**Noridocs (Server-side):**
|
|
90
|
+
|
|
91
|
+
- **read-noridoc** - Read server-side documentation by file path
|
|
92
|
+
- **write-noridoc** - Update server-side documentation
|
|
93
|
+
- **list-noridocs** - List available noridocs
|
|
94
|
+
|
|
95
|
+
## 3. Specialized Subagents
|
|
96
|
+
|
|
97
|
+
Subagents are autonomous agents that handle complex, multi-step tasks.
|
|
98
|
+
|
|
99
|
+
### 3.1 Free Tier Subagents (6)
|
|
100
|
+
|
|
101
|
+
- **nori-web-search-researcher** - Research modern information from the web
|
|
102
|
+
- **nori-codebase-analyzer** - Analyze specific components in detail
|
|
103
|
+
- **nori-codebase-locator** - Find files and components relevant to a task
|
|
104
|
+
- **nori-codebase-pattern-finder** - Find usage examples and patterns to model after
|
|
105
|
+
- **nori-initial-documenter** - Generate docs.md files for your codebase
|
|
106
|
+
- **nori-change-documenter** - Auto-document code changes
|
|
107
|
+
|
|
108
|
+
### 3.2 Paid Tier Additional Subagents (1)
|
|
109
|
+
|
|
110
|
+
- **nori-knowledge-researcher** - Deep research using the persistent knowledge base (15 tool call budget)
|
|
111
|
+
|
|
112
|
+
## 4. Hooks System
|
|
113
|
+
|
|
114
|
+
Hooks execute automatically in response to events like session start/end.
|
|
115
|
+
|
|
116
|
+
### 4.1 Free Tier Hooks
|
|
117
|
+
|
|
118
|
+
- **Auto-update check** (SessionStart) - Notify when new Nori versions available
|
|
119
|
+
- **Desktop notifications** (Notification) - Alerts when Claude needs attention
|
|
120
|
+
|
|
121
|
+
### 4.2 Paid Tier Additional Hooks
|
|
122
|
+
|
|
123
|
+
- **Conversation summarization** (SessionEnd) - Automatically save conversation summaries to knowledge base
|
|
124
|
+
- **Pre-compact preservation** (PreCompact) - Preserve context before conversation compaction
|
|
125
|
+
- **Summarization notification** - User notification before async summarization
|
|
126
|
+
|
|
127
|
+
## 5. Knowledge Base (Paid Only)
|
|
128
|
+
|
|
129
|
+
Persistent memory and context across sessions, stored server-side.
|
|
130
|
+
|
|
131
|
+
### 5.1 Core Skills
|
|
132
|
+
|
|
133
|
+
- **Memorize** - Save important information to the knowledge base
|
|
134
|
+
- **Recall** - Search using full-text, fuzzy, and vector search
|
|
135
|
+
|
|
136
|
+
### 5.2 Automatic Conversation Tracking
|
|
137
|
+
|
|
138
|
+
- **SessionEnd hooks** - Automatically save conversation summaries when sessions end
|
|
139
|
+
- **PreCompact hooks** - Preserve context before Claude compacts the conversation
|
|
140
|
+
- All conversations become searchable for future reference
|
|
141
|
+
|
|
142
|
+
### 5.3 Organization Analytics
|
|
143
|
+
|
|
144
|
+
- Comprehensive usage metrics for your team
|
|
145
|
+
- Track collaboration patterns and knowledge sharing
|
|
146
|
+
|
|
147
|
+
## 6. Noridocs Documentation System
|
|
148
|
+
|
|
149
|
+
An opinionated documentation system with docs.md files in each folder.
|
|
150
|
+
|
|
151
|
+
### 6.1 Free Tier (Local)
|
|
152
|
+
|
|
153
|
+
- **Format:** Overview, How it fits, Core Implementation, Things to Know
|
|
154
|
+
- **Updates:** Manual via updating-noridocs skill
|
|
155
|
+
- **Storage:** Part of codebase, tracked in git
|
|
156
|
+
- **Initialize:** `/nori-init-docs` to generate throughout codebase
|
|
157
|
+
|
|
158
|
+
### 6.2 Paid Tier (Server-side)
|
|
159
|
+
|
|
160
|
+
- Everything in free tier, plus:
|
|
161
|
+
- **Server storage** with versioning
|
|
162
|
+
- **Skills:** read-noridoc, write-noridoc, list-noridocs
|
|
163
|
+
- **Automatic updates** via nori-change-documenter subagent
|
|
164
|
+
|
|
165
|
+
## 7. Status Line
|
|
166
|
+
|
|
167
|
+
Real-time display of conversation metrics in your Claude Code interface.
|
|
168
|
+
|
|
169
|
+
### 7.1 Displayed Metrics
|
|
170
|
+
|
|
171
|
+
- Git branch
|
|
172
|
+
- Active profile name (color-coded in yellow)
|
|
173
|
+
- Token usage and conversation costs
|
|
174
|
+
- Lines changed
|
|
175
|
+
|
|
176
|
+
### 7.2 Rotating Tips
|
|
177
|
+
|
|
178
|
+
- 30 tips cycling hourly
|
|
179
|
+
- Best practices and feature reminders
|
|
180
|
+
|
|
181
|
+
**Available in:** Free and Paid
|
|
182
|
+
|
|
183
|
+
## 8. CLAUDE.md Behavioral Instructions
|
|
184
|
+
|
|
185
|
+
Profile-specific instructions that guide Claude's behavior.
|
|
186
|
+
|
|
187
|
+
### 8.1 Features
|
|
188
|
+
|
|
189
|
+
- **Managed block pattern** - Safe updates without destroying user content
|
|
190
|
+
- **Dynamic skills list** - Auto-generated from installed skills
|
|
191
|
+
- **Profile-specific workflows** - Tone, autonomy, git behavior
|
|
192
|
+
- **Location:** `~/.claude/CLAUDE.md`
|
|
193
|
+
|
|
194
|
+
**Available in:** Free and Paid
|
|
195
|
+
|
|
196
|
+
## 9. Slash Commands
|
|
197
|
+
|
|
198
|
+
Custom commands available in Claude Code.
|
|
199
|
+
|
|
200
|
+
- `/nori-info` - Display this information (you're using it now!)
|
|
201
|
+
- `/nori-debug` - Validate Nori installation (`nori-ai check`)
|
|
202
|
+
- `/nori-install-location` - Display Nori installation directories
|
|
203
|
+
- `/nori-switch-profile` - Switch between profiles interactively
|
|
204
|
+
- `/nori-init-docs` - Generate documentation files throughout codebase
|
|
205
|
+
|
|
206
|
+
**Available in:** Free and Paid
|
|
207
|
+
|
|
208
|
+
## 10. Installation & Upgrade
|
|
209
|
+
|
|
210
|
+
### 10.1 Install (Free or Paid)
|
|
211
|
+
|
|
212
|
+
```bash
|
|
213
|
+
npm install -g nori-ai
|
|
214
|
+
nori-ai install
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
During installation, you'll be prompted for credentials. Press Enter to skip for free tier, or provide credentials for paid tier.
|
|
218
|
+
|
|
219
|
+
### 10.2 Upgrade to Paid
|
|
220
|
+
|
|
221
|
+
Visit [tilework.tech](https://tilework.tech) to get credentials, then reinstall:
|
|
222
|
+
|
|
223
|
+
```bash
|
|
224
|
+
nori-ai install
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
Provide your credentials when prompted.
|
|
228
|
+
|
|
229
|
+
### 10.3 Switch Profiles
|
|
230
|
+
|
|
231
|
+
```bash
|
|
232
|
+
nori-ai switch-profile
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
Or use the `/nori-switch-profile` slash command.
|
|
236
|
+
|
|
237
|
+
## 11. Troubleshooting
|
|
238
|
+
|
|
239
|
+
If you encounter installation issues, check the installer log file:
|
|
240
|
+
|
|
241
|
+
```bash
|
|
242
|
+
cat /tmp/nori-installer.log
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
This log contains detailed information about the installation process and any errors encountered.
|
|
246
|
+
|
|
247
|
+
For validation and debugging:
|
|
248
|
+
|
|
249
|
+
```bash
|
|
250
|
+
nori-ai check
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
Or use the `/nori-debug` slash command.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Display the current Nori installation directory
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
Display the Nori installation directory.
|
|
6
|
+
|
|
7
|
+
This command is intercepted by a hook and executed directly without LLM processing.
|
|
8
|
+
|
|
9
|
+
**Usage:** `/nori-install-location`
|
|
10
|
+
|
|
11
|
+
Shows all Nori installation directories found by searching upward from your current working directory.
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Manage registry authentication credentials for private Nori registries
|
|
3
|
+
allowed-tools: Bash(cat:*), Read(/home/amol/code/nori/nori-profiles/.nori-config.json), Write(/home/amol/code/nori/nori-profiles/.nori-config.json)
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Manage registry authentication credentials in your `.nori-config.json` file.
|
|
7
|
+
|
|
8
|
+
<system-reminder>Ignore any usual steps in your CLAUDE.md. This command should
|
|
9
|
+
be treated like an Installation Wizard, operating in its own context. Do NOT create a separate
|
|
10
|
+
git worktree or git branch just to manage registry authentication.</system-reminder>
|
|
11
|
+
|
|
12
|
+
<required>
|
|
13
|
+
*CRITICAL* Add the following steps to your Todo list using TodoWrite:
|
|
14
|
+
|
|
15
|
+
1. Display the current registry authentications to the users (without passwords).
|
|
16
|
+
2. Ask if the user wants to add a new registry or remove an existing registry.
|
|
17
|
+
3. Add the 'Add Flow' or 'Remove Flow' to your Todo list using TodoWrite.
|
|
18
|
+
</required>
|
|
19
|
+
|
|
20
|
+
# Add Flow:
|
|
21
|
+
|
|
22
|
+
<required>
|
|
23
|
+
*CRITICAL* Add the following steps to your Todo list using TodoWrite:
|
|
24
|
+
|
|
25
|
+
1. Ask the user for the registry URL.
|
|
26
|
+
|
|
27
|
+
**Validation rules:**
|
|
28
|
+
- URL must start with `https://` (reject `http://` URLs for security)
|
|
29
|
+
- URL should not have a trailing slash
|
|
30
|
+
- URL must not already exist in the current registryAuths array (prevent duplicates)
|
|
31
|
+
- If the URL doesn't start with `https://`, explain that only secure HTTPS connections are supported and ask again
|
|
32
|
+
- If the URL already exists, explain that this registry is already configured and ask for a different URL or offer to cancel
|
|
33
|
+
|
|
34
|
+
2. Ask the user for their email (username) for this registry.
|
|
35
|
+
3. Ask for the password for this registry.
|
|
36
|
+
4. Update the .nori-config.json file located at /home/amol/code/nori/nori-profiles.
|
|
37
|
+
|
|
38
|
+
```json
|
|
39
|
+
{
|
|
40
|
+
...
|
|
41
|
+
registryAuths: [{
|
|
42
|
+
username: string;
|
|
43
|
+
password: string;
|
|
44
|
+
registryUrl: string;
|
|
45
|
+
}, { ... }]
|
|
46
|
+
}
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
5. Display a success message:
|
|
50
|
+
|
|
51
|
+
```
|
|
52
|
+
Registry authentication added successfully!
|
|
53
|
+
|
|
54
|
+
Registry: <registry-url>
|
|
55
|
+
Username: <username>
|
|
56
|
+
|
|
57
|
+
You can now access profiles from this private registry using:
|
|
58
|
+
/nori-registry-search
|
|
59
|
+
/nori-registry-download
|
|
60
|
+
|
|
61
|
+
This registry was added to /home/amol/code/nori/nori-profiles/.nori-config.json.
|
|
62
|
+
```
|
|
63
|
+
</required>
|
|
64
|
+
|
|
65
|
+
# Remove Flow:
|
|
66
|
+
|
|
67
|
+
<required>
|
|
68
|
+
*CRITICAL* Add the following steps to your Todo list using TodoWrite:
|
|
69
|
+
|
|
70
|
+
1. Display a numbered list of existing registries:
|
|
71
|
+
```
|
|
72
|
+
1. https://registry1.example.com (user1@example.com)
|
|
73
|
+
2. https://registry2.example.com (user2@example.com)
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
If there are no registries to remove, display:
|
|
77
|
+
```
|
|
78
|
+
No registry authentications to remove.
|
|
79
|
+
```
|
|
80
|
+
And end the wizard.
|
|
81
|
+
|
|
82
|
+
2. Ask which registry to remove.
|
|
83
|
+
3. Remove the selected registryAuth entry from the registryAuths array.
|
|
84
|
+
4. Display a success message:
|
|
85
|
+
```
|
|
86
|
+
Registry authentication removed successfully!
|
|
87
|
+
|
|
88
|
+
Removed: <registry-url>
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
</required>
|
|
92
|
+
|
|
93
|
+
## What is Registry Authentication?
|
|
94
|
+
|
|
95
|
+
Registry authentication allows you to access private Nori registries that require login credentials. Each registry auth entry contains:
|
|
96
|
+
- **Registry URL**: The URL of the private registry (must start with `https://`)
|
|
97
|
+
- **Username**: Your email address for the registry
|
|
98
|
+
- **Password**: Your password for the registry
|
|
99
|
+
|
|
100
|
+
# Current Configuration
|
|
101
|
+
|
|
102
|
+
Existing registry authentications:
|
|
103
|
+
|
|
104
|
+
!`cat /home/amol/code/nori/nori-profiles/.nori-config.json 2>/dev/null || echo '{"registryAuths": []}'`
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
# Important Notes
|
|
108
|
+
|
|
109
|
+
- Registry credentials are stored in `/home/amol/code/nori/nori-profiles/.nori-config.json`
|
|
110
|
+
- You can have multiple registry authentications for different registries
|
|
111
|
+
- Each registry URL should be unique in your configuration
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Manage Nori Watchtower authentication credentials
|
|
3
|
+
allowed-tools: Bash(cat:*), Read(/home/amol/code/nori/nori-profiles/.nori-config.json), Write(/home/amol/code/nori/nori-profiles/.nori-config.json)
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Manage Nori Watchtower authentication credentials in your `.nori-config.json` file.
|
|
7
|
+
|
|
8
|
+
<system-reminder>Ignore any usual steps in your CLAUDE.md. This command should
|
|
9
|
+
be treated like an Installation Wizard, operating in its own context. Do NOT create a separate
|
|
10
|
+
git worktree or git branch just to manage Watchtower authentication.</system-reminder>
|
|
11
|
+
|
|
12
|
+
<required>
|
|
13
|
+
*CRITICAL* Add the following steps to your Todo list using TodoWrite:
|
|
14
|
+
|
|
15
|
+
1. Display the current Watchtower authentication status to the user (without password).
|
|
16
|
+
2. Ask if the user wants to add/update credentials or remove existing credentials.
|
|
17
|
+
3. Add the 'Update Flow' or 'Remove Flow' to your Todo list using TodoWrite.
|
|
18
|
+
</required>
|
|
19
|
+
|
|
20
|
+
# Update Flow:
|
|
21
|
+
|
|
22
|
+
<required>
|
|
23
|
+
*CRITICAL* Add the following steps to your Todo list using TodoWrite:
|
|
24
|
+
|
|
25
|
+
1. Ask the user for their email address (username) for Watchtower.
|
|
26
|
+
2. Ask for the password for Watchtower.
|
|
27
|
+
3. Ask for the organization URL.
|
|
28
|
+
|
|
29
|
+
**Validation rules:**
|
|
30
|
+
- URL must start with `http://` or `https://` (both allowed for local development)
|
|
31
|
+
- URL should not have a trailing slash
|
|
32
|
+
- If the URL doesn't start with `http://` or `https://`, explain that only HTTP/HTTPS URLs are supported and ask again
|
|
33
|
+
|
|
34
|
+
4. Update the .nori-config.json file located at /home/amol/code/nori/nori-profiles.
|
|
35
|
+
|
|
36
|
+
The Watchtower auth credentials are stored at the root level of the config file:
|
|
37
|
+
|
|
38
|
+
```json
|
|
39
|
+
{
|
|
40
|
+
"username": "your-email@example.com",
|
|
41
|
+
"password": "your-password",
|
|
42
|
+
"organizationUrl": "https://api.tilework.tech",
|
|
43
|
+
...other fields...
|
|
44
|
+
}
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
**Important:** Preserve all other existing fields in the config file (like `profile`, `sendSessionTranscript`, `autoupdate`, `registryAuths`, `installDir`).
|
|
48
|
+
|
|
49
|
+
5. Display a success message:
|
|
50
|
+
|
|
51
|
+
```
|
|
52
|
+
Watchtower authentication updated successfully!
|
|
53
|
+
|
|
54
|
+
Username: <username>
|
|
55
|
+
Organization URL: <organizationUrl>
|
|
56
|
+
|
|
57
|
+
You now have access to premium Nori features:
|
|
58
|
+
- recall: Search the knowledge base for relevant context
|
|
59
|
+
- memorize: Save important context for future sessions
|
|
60
|
+
- noridocs: Server-side documentation with versioning
|
|
61
|
+
|
|
62
|
+
This configuration was saved to /home/amol/code/nori/nori-profiles/.nori-config.json.
|
|
63
|
+
```
|
|
64
|
+
</required>
|
|
65
|
+
|
|
66
|
+
# Remove Flow:
|
|
67
|
+
|
|
68
|
+
<required>
|
|
69
|
+
*CRITICAL* Add the following steps to your Todo list using TodoWrite:
|
|
70
|
+
|
|
71
|
+
1. Check if Watchtower credentials exist in the current config.
|
|
72
|
+
|
|
73
|
+
If there are no credentials to remove, display:
|
|
74
|
+
```
|
|
75
|
+
No Watchtower authentication configured.
|
|
76
|
+
```
|
|
77
|
+
And end the wizard.
|
|
78
|
+
|
|
79
|
+
2. Ask the user to confirm they want to remove their Watchtower credentials.
|
|
80
|
+
3. Remove the `username`, `password`, and `organizationUrl` fields from the config file.
|
|
81
|
+
|
|
82
|
+
**Important:** Preserve all other existing fields in the config file (like `profile`, `sendSessionTranscript`, `autoupdate`, `registryAuths`, `installDir`).
|
|
83
|
+
|
|
84
|
+
4. Display a success message:
|
|
85
|
+
```
|
|
86
|
+
Watchtower authentication removed successfully!
|
|
87
|
+
|
|
88
|
+
Premium features are no longer available. You can re-add credentials at any time using /nori-modify-watchtower-auth.
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
</required>
|
|
92
|
+
|
|
93
|
+
## What is Nori Watchtower?
|
|
94
|
+
|
|
95
|
+
Nori Watchtower is a backend service that enables shared knowledge features:
|
|
96
|
+
- **recall**: Search and recall past solutions across your team
|
|
97
|
+
- **memorize**: Save learnings for future sessions
|
|
98
|
+
- **noridocs**: Server-side documentation with versioning
|
|
99
|
+
|
|
100
|
+
If you have Watchtower credentials (you should have received them from Josh or Amol), you can use this command to configure access to these premium features.
|
|
101
|
+
|
|
102
|
+
# Current Configuration
|
|
103
|
+
|
|
104
|
+
Read the config file at `/home/amol/code/nori/nori-profiles/.nori-config.json` and display the current Watchtower authentication status:
|
|
105
|
+
- Username: <value or "not configured">
|
|
106
|
+
- Organization URL: <value or "not configured">
|
|
107
|
+
- Password: <"configured" if present, otherwise "not configured">
|
|
108
|
+
|
|
109
|
+
**Important:** Do NOT display the actual password value to the user.
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
# Important Notes
|
|
113
|
+
|
|
114
|
+
- Watchtower credentials are stored in `/home/amol/code/nori/nori-profiles/.nori-config.json`
|
|
115
|
+
- The password is stored in plain text in the config file - keep this file secure
|
|
116
|
+
- You can use `http://localhost:3000` for local development
|
|
117
|
+
- For production, use your organization's Watchtower URL (e.g., `https://api.tilework.tech`)
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Download a profile package from the Nori registrar
|
|
3
|
+
allowed-tools: Bash(nori-ai:*)
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Download and install a profile package from the Nori package registrar.
|
|
7
|
+
|
|
8
|
+
Usage: /nori-registry-download <package-name>[@version]
|
|
9
|
+
|
|
10
|
+
Examples:
|
|
11
|
+
- /nori-registry-download my-profile
|
|
12
|
+
- /nori-registry-download my-profile@1.0.0
|
|
13
|
+
|
|
14
|
+
This command downloads the specified profile package and extracts it to your profiles directory.
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Search for profile packages in the Nori registrar
|
|
3
|
+
allowed-tools: Bash(nori-ai:*)
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Search the Nori package registrar for profile packages.
|
|
7
|
+
|
|
8
|
+
Usage: /nori-registry-search <query>
|
|
9
|
+
|
|
10
|
+
Examples:
|
|
11
|
+
- /nori-registry-search typescript
|
|
12
|
+
- /nori-registry-search react developer
|
|
13
|
+
|
|
14
|
+
This command searches the registrar and displays matching profile packages with their descriptions.
|