Back to Skills
    🦞

    craft-cli

    Interact with Craft Documents via the `craft` CLI tool.

    By @nerveband
    View on GitHub
    SKILL.md
    # Craft CLI Skill
    
    Interact with Craft Documents via the `craft` CLI tool. Fast, token-efficient, LLM-ready.
    
    ## Installation
    
    The `craft` CLI binary should be installed at `/usr/local/bin/craft`.
    
    If not installed:
    ```bash
    curl -L https://github.com/nerveband/craft-cli/releases/download/v1.0.0/craft-darwin-arm64 -o craft
    chmod +x craft
    sudo mv craft /usr/local/bin/
    ```
    
    ## Configuration
    
    Two Craft spaces are available:
    
    ### wavedepth Space (Business)
    ```bash
    ~/clawd/skills/craft-cli/craft config set-api https://connect.craft.do/links/5VruASgpXo0/api/v1
    ```
    
    ### Personal Space
    ```bash
    ~/clawd/skills/craft-cli/craft config set-api https://connect.craft.do/links/HHRuPxZZTJ6/api/v1
    ```
    
    ### Quick Switch (Helper Script)
    ```bash
    # Switch to wavedepth space
    ~/clawd/skills/craft-cli/craft-helper.sh wavedepth
    
    # Switch to personal space
    ~/clawd/skills/craft-cli/craft-helper.sh personal
    
    # Check current space
    ~/clawd/skills/craft-cli/craft-helper.sh current
    ```
    
    **Check current configuration:**
    ```bash
    ~/clawd/skills/craft-cli/craft config get-api
    ```
    
    ## Commands
    
    ### List Documents
    ```bash
    # JSON format (default - LLM-friendly)
    ~/clawd/skills/craft-cli/craft list
    
    # Human-readable table
    ~/clawd/skills/craft-cli/craft list --format table
    
    # Markdown format
    ~/clawd/skills/craft-cli/craft list --format markdown
    ```
    
    ### Search Documents
    ```bash
    # Search for documents
    ~/clawd/skills/craft-cli/craft search "query terms"
    
    # With table output
    ~/clawd/skills/craft-cli/craft search "query" --format table
    ```
    
    ### Get Document
    ```bash
    # Get document by ID (JSON)
    ~/clawd/skills/craft-cli/craft get <document-id>
    
    # Save to file
    ~/clawd/skills/craft-cli/craft get <document-id> --output document.md
    
    # Different format
    ~/clawd/skills/craft-cli/craft get <document-id> --format markdown
    ```
    
    ### Create Document
    ```bash
    # Create with title only
    ~/clawd/skills/craft-cli/craft create --title "My New Document"
    
    # Create from file
    ~/clawd/skills/craft-cli/craft create --title "My Document" --file content.md
    
    # Create with inline markdown
    ~/clawd/skills/craft-cli/craft create --title "Quick Note" --markdown "# Hello\nThis is content"
    
    # Create as child of another document
    ~/clawd/skills/craft-cli/craft create --title "Child Doc" --parent <parent-id>
    ```
    
    ### Update Document
    ```bash
    # Update title
    ~/clawd/skills/craft-cli/craft update <document-id> --title "New Title"
    
    # Update from file
    ~/clawd/skills/craft-cli/craft update <document-id> --file updated-content.md
    
    # Update with inline markdown
    ~/clawd/skills/craft-cli/craft update <document-id> --markdown "# Updated\nNew content"
    
    # Update both title and content
    ~/clawd/skills/craft-cli/craft update <document-id> --title "New Title" --file content.md
    ```
    
    ### Delete Document
    ```bash
    ~/clawd/skills/craft-cli/craft delete <document-id>
    ```
    
    ### Info Commands
    ```bash
    # Show API info and recent documents
    ~/clawd/skills/craft-cli/craft info
    
    # List all available documents
    ~/clawd/skills/craft-cli/craft docs
    ```
    
    ### Version
    ```bash
    ~/clawd/skills/craft-cli/craft version
    ```
    
    ## Output Formats
    
    - **json** (default): Machine-readable JSON, ideal for LLMs and scripts
    - **table**: Human-readable table format
    - **markdown**: Markdown-formatted output
    
    Set default format in config or use `--format` flag per command.
    
    ## API URL Override
    
    Override the configured API URL for any command:
    ```bash
    ~/clawd/skills/craft-cli/craft list --api-url https://connect.craft.do/links/ANOTHER_LINK/api/v1
    ```
    
    ## Error Handling
    
    The CLI provides clear error messages with exit codes:
    
    - **Exit Code 0**: Success
    - **Exit Code 1**: User error (invalid input, missing arguments)
    - **Exit Code 2**: API error (server-side issues)
    - **Exit Code 3**: Configuration error
    
    Common errors:
    - `authentication failed. Check API URL` - Invalid/unauthorized API URL
    - `resource not found` - Document ID doesn't exist
    - `rate limit exceeded. Retry later` - Too many requests
    - `no API URL configured. Run 'craft config set-api <url>' first` - Missing config
    
    ## Usage Examples
    
    ### Workflow: List and Search
    ```bash
    # List all documents in wavedepth space
    ~/clawd/skills/craft-cli/craft config set-api https://connect.craft.do/links/5VruASgpXo0/api/v1
    ~/clawd/skills/craft-cli/craft list --format table
    
    # Search for specific documents
    ~/clawd/skills/craft-cli/craft search "proposal" --format table
    ```
    
    ### Workflow: Create and Update
    ```bash
    # Create a new document
    ~/clawd/skills/craft-cli/craft create --title "Project Notes" --markdown "# Initial notes\n\nStart here."
    
    # Get the document ID from output, then update
    ~/clawd/skills/craft-cli/craft update <doc-id> --title "Updated Project Notes"
    
    # Verify the update
    ~/clawd/skills/craft-cli/craft get <doc-id> --format markdown
    ```
    
    ### Workflow: Export Document
    ```bash
    # Get a specific document and save to file
    ~/clawd/skills/craft-cli/craft get <doc-id> --output exported-notes.md
    ```
    
    ### LLM Integration
    ```bash
    # Get all documents as JSON (pipe to processing)
    ~/clawd/skills/craft-cli/craft list | jq '.[] | {id, title}'
    
    # Search and extract specific fields
    ~/clawd/skills/craft-cli/craft search "meeting" | jq '.[].title'
    ```
    
    ## Tips
    
    1. **Default to JSON format** for LLM consumption (it's the default)
    2. **Use table format** when showing results to humans
    3. **Check configuration** before operations: `craft config get-api`
    4. **Switch spaces easily** with `craft config set-api <url>`
    5. **Override API URL** temporarily with `--api-url` flag instead of changing config
    
    ## GitHub Repository
    
    Source code and documentation: https://github.com/nerveband/craft-cli
    
    ## Version
    
    Current version: 1.6.0