Skill: yushimohuang/quick-note-tool (version 1.0.0)

--- name: quick-note description: Fast note-taking and snippet storage. Use when user says "note:", "remember this", "save snippet", "quick note", or wants to save/read short text snippets. --- # Quick Note Fast note-taking and snippet storage with tags and search. ## File Location `notes/quick-notes.md` in workspace root ## Commands ### Create Note When user says: "note: X", "remember: X", "save this: X" **PowerShell (Windows):** ```powershell powershell -ExecutionPolicy Bypass -File skills/quick-note-1.0.0/scripts/note.ps1 add "Meeting at 3pm" --tags important,work ``` **Bash (Linux/Mac/WSL):** ```bash bash skills/quick-note-1.0.0/scripts/note.sh add "Meeting at 3pm" --tags important,work ``` Examples: ```bash bash skills/quick-note-1.0.0/scripts/note.sh add "Meeting at 3pm tomorrow" bash skills/quick-note-1.0.0/scripts/note.sh add "API key: xxx123" --tags important,api bash skills/quick-note-1.0.0/scripts/note.sh add "Code snippet: console.log('test')" --tags code ``` ### Search Notes When user says: "find note about X", "search notes for X" ```bash bash skills/quick-note-1.0.0/scripts/note.sh search "<keyword>" ``` ### List Recent Notes When user says: "show recent notes", "list notes" ```bash bash skills/quick-note-1.0.0/scripts/note.sh list [--limit 10] ``` ### List by Tag When user says: "show notes tagged X" ```bash bash skills/quick-note-1.0.0/scripts/note.sh tag "<tagname>" ``` ### Delete Note When user says: "delete note X", "remove note about X" ```bash bash skills/quick-note-1.0.0/scripts/note.sh delete "<note-id>" ``` ## Note Format ```markdown # Quick Notes ## [ID-001] 2026-03-10 10:30 **Tags:** important, meeting Meeting at 3pm tomorrow with team --- ## [ID-002] 2026-03-10 10:35 **Tags:** code, snippet ```javascript console.log('Hello World'); ``` --- ``` ## Response Format When showing a note: ``` 📝 **Note #ID-001** (2026-03-10 10:30) **Tags:** #important #meeting Meeting at 3pm tomorrow with team ``` When searching: ``` 🔍 Found 2 notes matching "api": 📝 #ID-003 (2026-03-10) API endpoint: https://api.example.com 📝 #ID-005 (2026-03-09) API key stored in .env file ```

path: README.md
content: # Quick Note Skill

Fast note-taking and snippet storage for OpenClaw.

## Features

- ✅ Quick save notes with one command
- ✅ Tag-based organization
- ✅ Search functionality
- ✅ Persistent storage in workspace
- ✅ Automatic ID and timestamp

## Installation

Already included in workspace skills.

## Usage

### Save a Note
```bash
bash skills/quick-note-1.0.0/scripts/note.sh add "Meeting at 3pm"
bash skills/quick-note-1.0.0/scripts/note.sh add "API key: xxx" --tags important,api
```

### Search Notes
```bash
bash skills/quick-note-1.0.0/scripts/note.sh search "meeting"
```

### List Recent
```bash
bash skills/quick-note-1.0.0/scripts/note.sh list
bash skills/quick-note-1.0.0/scripts/note.sh list 20
```

### By Tag
```bash
bash skills/quick-note-1.0.0/scripts/note.sh tag "important"
```

## License

MIT


path: scripts/note.sh
content: #!/bin/bash
# Quick Note - Fast note-taking script
# Version: 1.0.0

NOTES_DIR="$(cd "$(dirname "$0")/../../.." && pwd)"
NOTES_FILE="$NOTES_DIR/notes/quick-notes.md"

# Ensure notes directory exists
mkdir -p "$NOTES_DIR/notes"

# Initialize file if not exists
if [ ! -f "$NOTES_FILE" ]; then
    echo "# Quick Notes" > "$NOTES_FILE"
    echo "" >> "$NOTES_FILE"
fi

# Generate note ID
generate_id() {
    local count=$(grep -c "^## \[" "$NOTES_FILE" 2>/dev/null || echo "0")
    printf "ID-%03d" $((count + 1))
}

# Get current timestamp
get_timestamp() {
    date "+%Y-%m-%d %H:%M"
}

# Add note
add_note() {
    local content="$1"
    local tags="$2"
    local id=$(generate_id)
    local timestamp=$(get_timestamp)
    
    {
        echo ""
        echo "## [$id] $timestamp"
        if [ -n "$tags" ]; then
            echo "**Tags:** $tags"
        fi
        echo "$content"
        echo ""
        echo "---"
        echo ""
    } >> "$NOTES_FILE"
    
    echo "✅ Note saved: $id"
    if [ -n "$tags" ]; then
        echo "   Tags: $tags"
    fi
}

# Search notes
search_notes() {
    local keyword="$1"
    echo "🔍 Searching for: $keyword"
    echo ""
    grep -A 3 -B 1 -i "$keyword" "$NOTES_FILE" | head -50
}

# List recent notes
list_notes() {
    local limit="${1:-10}"
    echo "📋 Recent Notes (last $limit):"
    echo ""
    grep "^## \[" "$NOTES_FILE" | tail -n "$limit"
}

# List by tag
list_by_tag() {
    local tag="$1"
    echo "🏷️  Notes tagged: $tag"
    echo ""
    grep -A 5 -B 1 "$tag" "$NOTES_FILE" | head -50
}

# Delete note (by ID)
delete_note() {
    local id="$1"
    if grep -q "\[$id\]" "$NOTES_FILE"; then
        # Create backup
        cp "$NOTES_FILE" "$NOTES_FILE.bak"
        # Remove note block (simplified - removes line with ID)
        sed -i.bak "/\[$id\]/,/---/d" "$NOTES_FILE"
        echo "✅ Note $id deleted (backup: quick-notes.md.bak)"
    else
        echo "❌ Note $id not found"
    fi
}

# Show help
show_help() {
    echo "Quick Note - Fast note-taking"
    echo ""
    echo "Usage:"
    echo "  note.sh add \"<content>\" [--tags tag1,tag2]"
    echo "  note.sh search \"<keyword>\""
    echo "  note.sh list [limit]"
    echo "  note.sh tag \"<tagname>\""
    echo "  note.sh delete \"<id>\""
    echo ""
}

# Main command handler
case "$1" in
    add)
        shift
        content=""
        tags=""
        while [ $# -gt 0 ]; do
            case "$1" in
                --tags)
                    tags="$2"
                    shift 2
                    ;;
                *)
                    content="$content $1"
                    shift
                    ;;
            esac
        done
        content=$(echo "$content" | sed 's/^ *//')
        add_note "$content" "$tags"
        ;;
    search)
        search_notes "$2"
        ;;
    list)
        list_notes "${2:-10}"
        ;;
    tag)
        list_by_tag "$2"
        ;;
    delete)
        delete_note "$2"
        ;;
    *)
        show_help
        ;;
esac


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (HIGH)