← Back to Skills
Productivity

nb

bjesuiter By bjesuiter 👁 3 views ▲ 0 votes

Manage notes, bookmarks, and notebooks using the nb CLI.

GitHub
---
name: nb
description: Manage notes, bookmarks, and notebooks using the nb CLI. Create, list, search, and organize notes across multiple notebooks with Git-backed versioning.
author: Benjamin Jesuiter <[email protected]>
homepage: https://github.com/xwmx/nb
metadata:
  clawdbot:
    emoji: "📓"
    os: ["darwin", "linux"]
    requires:
      bins: ["nb"]
---

# nb - Command Line Note-Taking

> ⚠️ **IMPORTANT:** Never edit files in nb git repos (`~/.nb/*`) by hand! Always use the `nb` CLI to ensure proper indexing and Git commits.



A command line and local web note-taking, bookmarking, and archiving tool with plain text data storage, Git-backed versioning, and wiki-style linking.

## Quick Reference

### Notebooks

```bash
# List all notebooks
nb notebooks

# Switch to a notebook
nb use <notebook>

# Create a new notebook
nb notebooks add <name>

# Show current notebook
nb notebooks current
```

### Adding Notes

```bash
# Add a note with title
nb add -t "Title" -c "Content here"

# Add note to specific notebook
nb <notebook>: add -t "Title" -c "Content"

# Add note with tags
nb add -t "Title" --tags tag1,tag2

# Add note from file content
nb add <notebook>:filename.md
```

### Listing Notes

```bash
# List notes in current notebook
nb list

# List all notes (no limit)
nb list -a

# List notes in specific notebook
nb <notebook>: list

# List with excerpts
nb list -e

# List with tags shown
nb list --tags
```

### Showing Notes

```bash
# Show note by ID or title
nb show <id>
nb show "<title>"

# Show note from specific notebook
nb show <notebook>:<id>

# Print content (for piping)
nb show <id> --print
```

### Searching Notes

```bash
# Search across all notebooks
nb search "query"

# Search in specific notebook
nb <notebook>: search "query"

# Search with AND/OR/NOT
nb search "term1" --and "term2"
nb search "term1" --or "term2"
nb search "term1" --not "exclude"

# Search by tag
nb search --tag "tagname"
```

### Editing Notes

```bash
# Edit by ID
nb edit <id>

# Edit by title
nb edit "<title>"

# Append content
nb edit <id> -c "New content to append"

# Prepend content
nb edit <id> -c "Content at top" --prepend

# Overwrite content
nb edit <id> -c "Replace all" --overwrite
```

### Deleting Notes

```bash
# Delete by ID (will prompt)
nb delete <id>

# Force delete without prompt
nb delete <id> -f
```

### Moving/Renaming

```bash
# Move note to another notebook
nb move <id> <notebook>:

# Rename a note
nb move <id> new-filename.md
```

### Todos

```bash
# Add a todo
nb todo add "Task title"

# Add todo with due date
nb todo add "Task" --due "2026-01-15"

# List open todos
nb todos open

# List closed todos
nb todos closed

# Mark todo as done
nb todo do <id>

# Mark todo as not done
nb todo undo <id>
```

### Bookmarks

```bash
# Add a bookmark
nb bookmark <url>

# Add with comment
nb bookmark <url> -c "My comment"

# Add with tags
nb bookmark <url> --tags reference,dev

# List bookmarks
nb bookmark list

# Search bookmarks
nb bookmark search "query"
```

### Git Operations

```bash
# Sync with remote
nb sync

# Create checkpoint (commit)
nb git checkpoint "Message"

# Check dirty status
nb git dirty

# Run any git command
nb git status
nb git log --oneline -5
```

### Folders

```bash
# Add folder to notebook
nb folders add <folder-name>

# List folders
nb folders

# Add note to folder
nb add <folder>/<filename>.md
```

## Common Patterns

### Adding Note with Full Content

For longer notes, create a temp file and import:

```bash
# Write content to temp file first, then copy to nb
cp /tmp/note.md ~/.nb/<notebook>/
cd ~/.nb/<notebook> && git add . && git commit -m "Add note"
nb <notebook>: index rebuild
```

### Searching Across All

```bash
# Search everything
nb search "term" --all

# Search by type
nb search "term" --type bookmark
nb search "term" --type todo
```

## Data Location

Notes are stored in `~/.nb/<notebook>/` as markdown files with Git versioning.

```
~/.nb/
├── notebook-name-1/ # Your first notebook
├── notebook-name-2/ # Your second notebook
└── ...
```

## Tips

1. Use `nb <notebook>:` prefix to work with specific notebooks
2. IDs are numbers shown in `nb list`
3. Titles can be used instead of IDs (quoted if spaces)
4. All changes are automatically Git-committed
5. Use `nb sync` to push/pull from remote repos
productivity

Comments

Sign in to leave a comment

Loading comments...