Conversation
- Updated all Claude Code plugin skills to use nmem CLI commands - Updated Codex prompts to use nmem CLI instead of MCP tools - Added uvx support as recommended installation method with auto uv install - Updated save-thread to use new 'nmem t save' command for auto session import - Bumped plugin version to 0.5.0 - Removed MCP server configuration from plugin.json Changes: - Claude Code plugin: 3 skills + README + plugin.json - Codex prompts: 2 prompts + README + install.sh Key improvements: - Simpler installation (uvx or pip instead of MCP setup) - Auto-detection of sessions with 'nmem t save' - Idempotent session saving (safe to re-run) - Better cross-platform support
📝 WalkthroughWalkthroughThe PR replaces MCP/MCP-based workflows with an nmem CLI-centered workflow: documentation, examples, skill guides, and plugin metadata were updated to use nmem commands (search, m add, t save), installation options (uvx, pip/pipx), and adjusted troubleshooting and verification steps. Changes
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Poem
🚥 Pre-merge checks | ✅ 3✅ Passed checks (3 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing touches
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 Fix all issues with AI agents
In @nowledge-mem-codex-prompts/install.sh:
- Around line 140-153: The interactive check currently uses [ -t 0 ] which fails
when the script is piped; change the condition that begins the interactive
prompt block to test stdout instead (use [ -t 1 ]), so the prompt around the
install_uv flow is shown when the user's terminal is interactive even if stdin
is redirected; update the if that wraps the read prompt to use [ -t 1 ] (or [ -t
1 ] || [ -t 0 ] if you want a fallback) so the echo/read/install_uv branch
behaves correctly.
In @nowledge-mem-codex-prompts/README.md:
- Around line 48-52: The line claiming "Always uses the latest version" is
inaccurate because uvx caches packages; update that bullet to clarify that uvx
uses a cached version by default and will only fetch the newest release when
explicitly refreshed — e.g., change the bullet to something like "Uses a cached
uvx package by default; run `uvx --refresh nmem` to update to the latest
version" so readers know to use the `uvx --refresh nmem` command to get recent
updates.
🧹 Nitpick comments (11)
nowledge-mem-codex-prompts/install.sh (1)
92-104: PATH export may not persist beyond the script.Line 98 exports PATH for the current session, but this won't persist after the script exits. The uv installer typically adds PATH configuration to shell rc files (like
.bashrc,.zshrc), but users may need to restart their shell or source the rc file for the change to take effect.Consider adding a note to inform users they might need to restart their terminal or run
source ~/.bashrc(or equivalent) after installation.📝 Suggested improvement
install_uv() { echo "📦 Installing uv (Python package manager)..." if curl -LsSf https://astral.sh/uv/install.sh | sh; then echo "✅ uv installed successfully" + echo "ℹ️ You may need to restart your terminal or run: source ~/.bashrc" # Add to PATH for current session export PATH="$HOME/.cargo/bin:$PATH" return 0 else echo "❌ Failed to install uv" return 1 fi }nowledge-mem-claude-code-plugin/skills/distill-memory/SKILL.md (1)
73-73: Optional: Consider using a heading instead of bold text.Line 73 uses bold text for "Option 1 (Recommended): Use uvx" which triggers a markdown linting warning (MD036). While this is intentional formatting, using a proper heading (e.g.,
### Option 1 (Recommended): Use uvx) would be more semantically correct and satisfy the linter.This is a style preference and doesn't affect functionality.
📝 Suggested improvement
If `nmem` is not available: -**Option 1 (Recommended): Use uvx** +### Option 1 (Recommended): Use uvx + ```bash # Install uv curl -LsSf https://astral.sh/uv/install.sh | sh # Run nmem (no installation needed) uvx nmem --version-Option 2: Install with pip
+### Option 2: Install with pip
+pip install nmem nmem --version</details> </blockquote></details> <details> <summary>nowledge-mem-codex-prompts/README.md (2)</summary><blockquote> `54-54`: **Optional: Consider using a heading for Option 2.** Similar to the markdown linting warning (MD036), line 54 uses bold text for the option header. Using a proper heading (e.g., `### Option 2: pip/pipx (Traditional Installation)`) would be more semantically correct. This is a style preference matching the suggestion for Option 1 (line 36). --- `82-82`: **Consider adding server troubleshooting details.** Line 82 advises ensuring Nowledge Mem is running but doesn't provide steps to verify or start the server. Users encountering connection issues might benefit from additional guidance. <details> <summary>💡 Suggested enhancement</summary> ```diff -- **"Cannot connect to server"** → Ensure Nowledge Mem is running at `http://localhost:14242` +- **"Cannot connect to server"** → Ensure Nowledge Mem is running at `http://localhost:14242`. Check with `curl -s http://localhost:14242/health` or start the Nowledge Mem Desktop appnowledge-mem-codex-prompts/save_session.md (1)
22-32: Optional: Optimize the session listing script.The script works correctly but could be optimized:
cwd=$(pwd)on line 24 is executed repeatedly for each file, but the value doesn't change. Moving it outside the loop would improve performance.- The complex pipeline (lines 27-30) with multiple
jqandheadcalls could be simplified.These are minor performance optimizations and don't affect correctness.
♻️ Suggested optimization
+# Get current working directory once +cwd=$(pwd) + # List available sessions for current directory -find ~/.codex/sessions -name "rollout-*.jsonl" -exec sh -c ' - cwd=$(pwd) +find ~/.codex/sessions -name "rollout-*.jsonl" -exec sh -c ' + cwd="$2" meta=$(head -n1 "$1" | jq -r "select(.payload.cwd == \"$cwd\") | .payload") if [ -n "$meta" ]; then id=$(echo "$meta" | jq -r ".id") ts=$(echo "$meta" | jq -r ".timestamp") preview=$(head -n20 "$1" | jq -r "select(.type == \"event_msg\" and .payload.type == \"user_message\" and .payload.kind == \"plain\") | .payload.message" | head -n1 | cut -c1-80) echo "$id | $ts | ${preview:-<no preview>}" fi -' _ {} \; | sort -r +' _ {} "$cwd" \; | sort -rnowledge-mem-claude-code-plugin/skills/save-thread/SKILL.md (2)
3-3: Consider shortening the frontmatter description.The description field in the YAML frontmatter is quite verbose (~170 characters) and includes implementation details. Frontmatter descriptions are typically concise summaries. Consider simplifying to just the core purpose while keeping the detailed instructions in the body.
♻️ Proposed simplification
-description: Save complete conversation as checkpoint. Only when user explicitly requests ("save session", "checkpoint this"). Use nmem t save to automatically import Claude Code sessions. +description: Save complete conversation as checkpoint. Only when user explicitly requests ("save session", "checkpoint this").
60-75: Use proper markdown headings instead of bold emphasis.The static analysis tool correctly identifies that bold text is being used where headings would be more appropriate. Using proper headings improves document structure, navigation, and accessibility.
♻️ Proposed fix for markdown structure
-If `nmem` is not available: - -**Option 1 (Recommended): Use uvx** +### If `nmem` is not available + +#### Option 1 (Recommended): Use uvx ```bash # Install uv curl -LsSf https://astral.sh/uv/install.sh | sh @@ -67,7 +67,7 @@ uvx nmem t save --from claude-code-Option 2: Install with pip
+#### Option 2: Install with pippip install nmem nmem t save --from claude-codenowledge-mem-claude-code-plugin/skills/search-memory/SKILL.md (3)
32-72: Consider adding example JSON output for clarity.The CLI usage and filter documentation are well-structured and the command syntax is correct. However, the JSON Response section (line 56) mentions parsing the
memoriesarray andscorefield without showing what the actual JSON structure looks like.Consider adding a brief JSON output example after line 57 to help users understand the response structure:
**JSON Response:** Parse `memories` array, check `score` field for relevance Example output: ```json { "memories": [ { "id": "abc123", "content": "...", "score": 0.85, "title": "...", "importance": 0.9 } ] }Otherwise, the command examples and filter documentation look great! --- `80-95`: **Use proper markdown headings instead of bold emphasis.** Same issue as in `save-thread/SKILL.md` - bold text is used where headings would be more appropriate. This affects document structure and accessibility. <details> <summary>♻️ Proposed fix for markdown structure</summary> ```diff -If `nmem` is not available: - -**Option 1 (Recommended): Use uvx** +### If `nmem` is not available + +#### Option 1 (Recommended): Use uvx ```bash # Install uv curl -LsSf https://astral.sh/uv/install.sh | sh @@ -88,7 +88,7 @@ uvx nmem --version-Option 2: Install with pip
+#### Option 2: Install with pippip install nmem nmem --version
60-60: Consider making "Examples" a proper heading.The static analysis also flags line 60 where "Examples:" uses bold emphasis. For consistency with the suggested troubleshooting changes, this should also be a proper heading.
♻️ Proposed fix
-**Examples:** - +### Examples + ```bash
nowledge-mem-claude-code-plugin/README.md (1)
61-61: Use proper markdown headings for better document structure.Static analysis correctly identifies 10 locations where bold emphasis is used instead of proper headings. This affects document structure, navigation, and accessibility. Since the same pattern appears in the SKILL.md files, consider applying consistent heading levels across all documentation.
♻️ Locations to update
Installation section:
- Line 61:
**Option 1: uvx (Recommended - No Installation Required)**→#### Option 1: uvx (Recommended - No Installation Required)- Line 77:
**Option 2: pip/pipx (Traditional Installation)**→#### Option 2: pip/pipx (Traditional Installation)CLI Commands - Memory Operations:
- Line 249:
**Search Memories**→#### Search Memories- Line 256:
**Add Memory**→#### Add Memory- Line 263:
**Update Memory**→#### Update Memory- Line 269:
**List Memories**→#### List MemoriesCLI Commands - Thread Operations:
- Line 277:
**Save Session**→#### Save Session- Line 295:
**Create Thread (Manual)**→#### Create Thread (Manual)- Line 304:
**Search Threads**→#### Search Threads- Line 310:
**Show Thread**→#### Show ThreadAlso applies to: 77-77, 249-249, 256-256, 263-263, 269-269, 277-277, 295-295, 304-304, 310-310
📜 Review details
Configuration used: defaults
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (9)
nowledge-mem-claude-code-plugin/README.mdnowledge-mem-claude-code-plugin/plugin.jsonnowledge-mem-claude-code-plugin/skills/distill-memory/SKILL.mdnowledge-mem-claude-code-plugin/skills/save-thread/SKILL.mdnowledge-mem-claude-code-plugin/skills/search-memory/SKILL.mdnowledge-mem-codex-prompts/README.mdnowledge-mem-codex-prompts/distill.mdnowledge-mem-codex-prompts/install.shnowledge-mem-codex-prompts/save_session.md
🧰 Additional context used
🪛 LanguageTool
nowledge-mem-claude-code-plugin/README.md
[grammar] ~133-~133: Ensure spelling is correct
Context: ... Verify that nmem can connect to your Nowledge Mem server: bash nmem status Y...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
🪛 markdownlint-cli2 (0.18.1)
nowledge-mem-codex-prompts/README.md
36-36: Emphasis used instead of a heading
(MD036, no-emphasis-as-heading)
54-54: Emphasis used instead of a heading
(MD036, no-emphasis-as-heading)
nowledge-mem-claude-code-plugin/README.md
61-61: Emphasis used instead of a heading
(MD036, no-emphasis-as-heading)
77-77: Emphasis used instead of a heading
(MD036, no-emphasis-as-heading)
249-249: Emphasis used instead of a heading
(MD036, no-emphasis-as-heading)
256-256: Emphasis used instead of a heading
(MD036, no-emphasis-as-heading)
263-263: Emphasis used instead of a heading
(MD036, no-emphasis-as-heading)
269-269: Emphasis used instead of a heading
(MD036, no-emphasis-as-heading)
277-277: Emphasis used instead of a heading
(MD036, no-emphasis-as-heading)
295-295: Emphasis used instead of a heading
(MD036, no-emphasis-as-heading)
304-304: Emphasis used instead of a heading
(MD036, no-emphasis-as-heading)
310-310: Emphasis used instead of a heading
(MD036, no-emphasis-as-heading)
nowledge-mem-claude-code-plugin/skills/save-thread/SKILL.md
61-61: Emphasis used instead of a heading
(MD036, no-emphasis-as-heading)
nowledge-mem-claude-code-plugin/skills/distill-memory/SKILL.md
77-77: Emphasis used instead of a heading
(MD036, no-emphasis-as-heading)
nowledge-mem-claude-code-plugin/skills/search-memory/SKILL.md
61-61: Emphasis used instead of a heading
(MD036, no-emphasis-as-heading)
🔇 Additional comments (13)
nowledge-mem-claude-code-plugin/skills/distill-memory/SKILL.md (1)
33-59: LGTM! Clear and actionable examples.The nmem CLI usage is well-documented with concrete examples showing proper title formatting, importance scoring, and the --json flag for programmatic use. The examples effectively demonstrate the concepts mentioned in the skill description.
nowledge-mem-codex-prompts/distill.md (2)
52-57: LGTM! Clear importance guidelines.The importance scoring guidelines are well-defined and consistent with the examples provided earlier in the file. The three-tier system (high/medium/lower) provides clear guidance for users.
46-50: The--jsonflag position in line 49 is correct.The
--jsonflag is a global flag that appears before the subcommand, as shown consistently throughout the codebase documentation (e.g.,nmem --json m search,nmem --json t show). This is the proper CLI pattern where global flags precede subcommands, while subcommand-specific flags (like--title,--importance) follow the subcommand. The example in distill.md line 49 (nmem --json m add "Content here" --title "Title" --importance 0.8) is correct and requires no changes.nowledge-mem-codex-prompts/README.md (1)
72-75: LGTM! Helpful platform-specific guidance.The notes clearly explain the different installation scenarios across platforms and the default connection behavior. This helps users understand their setup requirements.
nowledge-mem-codex-prompts/save_session.md (3)
5-15: LGTM! Clear basic usage examples.The basic usage section provides straightforward examples of saving sessions with and without summaries. The commands are clear and easy to follow.
41-60: LGTM! Clear workflow and practical example.The step-by-step workflow provides excellent guidance, and the concrete example demonstrates the expected usage pattern. The note about what confirmation to expect (Thread ID, message count, status) is particularly helpful.
62-62: LGTM! Important idempotency guarantee.This note provides valuable reassurance to users that they can safely re-run the command without creating duplicates. This is an important behavior to document.
nowledge-mem-claude-code-plugin/skills/save-thread/SKILL.md (1)
17-43: LGTM!The CLI usage examples and options documentation are clear and well-structured. The command syntax is correct, and the behavioral notes effectively communicate the idempotent nature and auto-detection features.
nowledge-mem-claude-code-plugin/plugin.json (1)
1-25: LGTM!The plugin metadata updates are appropriate:
- Version bump to 0.5.0 correctly reflects a minor architectural change
- Description accurately communicates the CLI-based approach
- The "cli" keyword addition improves discoverability
- JSON structure is valid
nowledge-mem-claude-code-plugin/README.md (4)
57-98: LGTM! Clear installation guidance.The installation section provides multiple options (uvx, pip, pipx) with clear benefits for each approach. The commands are correct and consistent with the SKILL.md files. The platform-specific notes (lines 95-98) are particularly helpful.
130-176: LGTM! Well-structured quick start guide.The quick start section provides a logical flow (verify → search → save → build) with clear examples. The commands are consistent with the SKILL.md files, and the skill references are accurate.
Note: The grammar warning about "Nowledge" on line 133 is a false positive - it's the product name.
178-242: LGTM! Accurate skills documentation.The skills reference section accurately describes each skill's behavior and commands. The CLI commands are consistent with the corresponding SKILL.md files:
- Search Memory commands match
search-memory/SKILL.md- Save Thread commands match
save-thread/SKILL.md- Feature descriptions (idempotent behavior, auto-detection) are accurate
244-315: LGTM! Comprehensive CLI reference.The CLI commands documentation is thorough and accurate:
- All command syntax appears correct
- Options and flags are consistent with the SKILL.md files
- Thread operations (save, create, search, show) are well-documented
- Memory operations (search, add, update, list) match the usage examples
- Add commands/ directory with CLI-based slash commands (save, sum, search) - Add AGENTS.md example for autonomous memory operations - Update docs with skill-compatible apps (Cursor Nightly, Alma) - Fix install.sh interactive detection for piped scripts - Clarify uvx caching behavior in READMEs - Add source_thread documentation to distill-memory skill
There was a problem hiding this comment.
Actionable comments posted: 0
🧹 Nitpick comments (1)
nowledge-mem-codex-prompts/install.sh (1)
92-104: Document PATH persistence requirement.The PATH modification at line 98 only affects the current shell session. Users will need to restart their shell or source their profile file for
uvxto be available in subsequent sessions.📝 Suggested improvement
Add a note after successful installation:
install_uv() { echo "📦 Installing uv (Python package manager)..." if curl -LsSf https://astral.sh/uv/install.sh | sh; then echo "✅ uv installed successfully" + echo "ℹ️ Note: You may need to restart your shell or run 'source ~/.bashrc' (or ~/.zshrc)" # Add to PATH for current session export PATH="$HOME/.cargo/bin:$PATH" return 0 else echo "❌ Failed to install uv" return 1 fi }
📜 Review details
Configuration used: defaults
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (9)
.gitignoreexamples/AGENTS.mdnowledge-mem-claude-code-plugin/README.mdnowledge-mem-claude-code-plugin/commands/save.mdnowledge-mem-claude-code-plugin/commands/search.mdnowledge-mem-claude-code-plugin/commands/sum.mdnowledge-mem-claude-code-plugin/skills/distill-memory/SKILL.mdnowledge-mem-codex-prompts/README.mdnowledge-mem-codex-prompts/install.sh
✅ Files skipped from review due to trivial changes (4)
- nowledge-mem-claude-code-plugin/commands/save.md
- nowledge-mem-claude-code-plugin/commands/search.md
- .gitignore
- nowledge-mem-claude-code-plugin/commands/sum.md
🧰 Additional context used
🪛 LanguageTool
nowledge-mem-claude-code-plugin/README.md
[grammar] ~133-~133: Ensure spelling is correct
Context: ... Verify that nmem can connect to your Nowledge Mem server: bash nmem status Y...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
examples/AGENTS.md
[grammar] ~1-~1: Ensure spelling is correct
Context: ## Nowledge Mem Integration Add this section to yo...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~3-~3: Ensure spelling is correct
Context: ...o autonomously manage knowledge through Nowledge Mem. ### Memory Operations **Memory C...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~140-~140: Ensure spelling is correct
Context: ...wledge-community ``` ### Resources - [Nowledge Mem CLI Docs](https://mem.nowledge.co/d...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
🪛 markdownlint-cli2 (0.18.1)
nowledge-mem-claude-code-plugin/skills/distill-memory/SKILL.md
36-36: Emphasis used instead of a heading
(MD036, no-emphasis-as-heading)
54-54: Emphasis used instead of a heading
(MD036, no-emphasis-as-heading)
🔇 Additional comments (7)
nowledge-mem-claude-code-plugin/skills/distill-memory/SKILL.md (2)
91-106: LGTM!The troubleshooting section provides clear, actionable guidance with both uvx (recommended) and pip installation options. The structure is well-organized and user-friendly.
62-79: Document the JSON output format or verify the jq extraction path.The
--source-threadparameter is confirmed to exist, but the JSON response structure fromnmem --json t save --from claude-codeis not explicitly documented. The command assumes.results[0].thread_idas the extraction path, but the documentation only states the command "returns the thread ID" without showing the actual JSON schema. Either add an example of the JSON output to the documentation, or test and confirm that the jq extraction path is correct.examples/AGENTS.md (2)
59-92: Excellent autonomous agent example!The memory-keeper agent provides a practical, well-structured example for Claude Code users. The agent definition includes clear triggers, process steps, and concrete command examples that align with the broader nmem CLI workflow.
98-109: The JSON structure shown is correct according to Claude Code official documentation. The nested"hooks"keys are intentional: the outer"hooks"is the configuration section, and the inner"hooks"array within each event handler contains the actual hook definitions. SessionEnd does not require a"matcher"field (unlike PreToolUse/PostToolUse), which is why it's omitted here. The configuration is valid as shown.nowledge-mem-codex-prompts/install.sh (1)
140-160: LGTM! Proper interactive detection.The interactive mode detection using
[ -t 1 ]correctly handles both direct execution and piped installation scenarios (e.g.,curl | sh). The fallback to non-interactive instructions ensures a good user experience in all contexts.nowledge-mem-codex-prompts/README.md (1)
31-76: Excellent installation documentation!The nmem CLI setup section provides comprehensive, user-friendly guidance with:
- Clear distinction between uvx (recommended) and traditional installation
- Practical benefits explanation for each option
- Platform-specific notes
- Verification steps
This aligns well with the broader PR migration goals.
nowledge-mem-claude-code-plugin/README.md (1)
278-349: Comprehensive CLI command documentation.The CLI commands section provides excellent reference material with:
- Clear syntax examples for all operations
- Helpful parameter descriptions
- Practical usage examples
- Important behavioral notes (e.g., idempotent saves)
This will significantly help users understand and use the nmem CLI effectively.
Changes:
Key improvements:
Summary by CodeRabbit
New Features
Documentation
Chores
✏️ Tip: You can customize this high-level summary in your review settings.