# LNbits Wallet Manager Skill for OpenClaw

Enable your OpenClaw assistant to safely and effectively manage an LNbits Lightning Network wallet.

## Features

- **Check Balance**: Get your current wallet balance in Satoshis.
- **Create Invoice**: Generate Bolt11 invoices to receive funds, with automatic QR code generation.
- **Pay Invoice**: Safely pay Bolt11 invoices after confirmation and balance checks.
- **Decode Invoice**: Inspect Bolt11 invoices to verify amount and memo.
- **Generate QR Code**: Create a QR code image from any Bolt11 invoice string.
- **Create Wallet**: Easily set up a new LNbits wallet on the demo server.

## 🛑 Critical Protocols for Safe Usage 🛑

To ensure secure and responsible handling of your LNbits wallet, this skill enforces strict protocols:

1.  **NEVER Expose Secrets**: The assistant is programmed to **NEVER** display Admin Keys, User IDs, or Wallet IDs in chat. Credentials are handled via environment variables.
2.  **Explicit Payment Confirmation**: The assistant **MUST** ask for "Yes/No" confirmation before sending any payment.
    *   **Confirmation Format**: "I am about to send **[Amount] sats** to **[Memo/Destination]**. Proceed? (y/n)"
3.  **Balance Check Before Pay**: The assistant will always check your wallet balance before attempting to pay an invoice to prevent failed transactions.
4.  **Invoice + QR Output**: When generating an invoice, the assistant will **ALWAYS** provide:
    *   The `payment_request` text string for easy copying.
    *   An `IMAGE:` link to the generated QR code file on a single line, allowing direct display of the QR code.

## Installation

This skill requires the `qrcode[pil]` Python library.

1.  **Install ClawHub CLI**:
    ```bash
    npm i -g clawhub
    ```
2.  **Install the Skill**:
    ```bash
    clawhub install lnbits
    ```

## Configuration

The skill uses environment variables for LNbits API credentials. It's recommended to add these to your OpenClaw configuration or your agent's `.env` file.

-   `LNBITS_BASE_URL`: The base URL of your LNbits instance (e.g., `https://legend.lnbits.com` or your self-hosted URL).
-   `LNBITS_API_KEY`: Your LNbits wallet's Admin Key.

Example `.env` entries:
```dotenv
export LNBITS_BASE_URL=https://legend.lnbits.com
export LNBITS_API_KEY=YOUR_ADMIN_KEY_HERE
```

## Usage Examples

Here's how you can use the `lnbits` skill with your OpenClaw assistant:

### 0. Setup / Create Wallet

If you don't have an LNbits wallet, you can create one (defaults to the demo server for ease of setup):

```
(User): Create a new lnbits wallet named "My OpenClaw Wallet"
```
The create command prints your new `adminkey` and `base_url` in the terminal output. Copy those from the command output and save them securely in your environment variables (e.g. `.env`). The assistant will not repeat or display the adminkey in chat.

### 1. Check Balance

Ask your assistant for the current balance:

```
(User): What's my lnbits balance?
```

### 2. Create Invoice (Receive Funds)

Generate an invoice for receiving funds:

```
(User): Create an invoice for 5000 sats for "Coffee"
```

The assistant will provide the Bolt11 invoice string and a QR code image.

### 2b. Generate QR Code from Existing Invoice

If you have a Bolt11 string and need a QR code:

```
(User): Generate a QR code for this invoice: lnbc1u1p...
```

### 3. Pay Invoice (Send Funds)

To pay an invoice, the assistant will first decode it and then ask for confirmation:

```
(User): Pay this invoice: lnbc1u1p...
```
The assistant will then prompt: "I am about to send **[Amount] sats** to **[Memo/Dest]**. Proceed? (y/n)"

## Error Handling

The skill is designed to catch and summarize API errors from LNbits, providing clear feedback to the user without exposing raw technical details or stack traces.

---

**Developed for OpenClaw - The AI Orchestration Layer**