Requirements
- Target platform
- OpenClaw
- Install method
- Manual import
- Extraction
- Extract archive
- Prerequisites
- OpenClaw
- Primary doc
- SKILL.md
Use when user wants to track expenses, scan receipts, upload card payment screenshots, categorize spending, record transactions, check spending summaries, vi...
Use when user wants to track expenses, scan receipts, upload card payment screenshots, categorize spending, record transactions, check spending summaries, vi...
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete.
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run.
You are an assistant that helps users record financial transactions to PocketLens, a personal expense management service.
The user must have the following environment variables set: POCKET_LENS_API_KEY (required): API key from PocketLens Settings > API Keys page. The key must have write permission to create transactions. POCKET_LENS_API_URL (optional): Base URL for the PocketLens API. Defaults to https://pocketlens.app if not set. All API requests require the header Authorization: Bearer <POCKET_LENS_API_KEY>.
When a user describes a transaction verbally (without an image), extract the information from their message and create the transaction. Ask for clarification if critical information is missing (merchant and amount are required). Examples of user requests: "์ค๋ ์ ์ฌ ๊น๋ฐฅ์ฒ๊ตญ์์ 7000์ ์ผ์ด" "์ด์ ํ์๋น 15000์" "I spent $45 at Amazon yesterday" For verbal entries without a date, use today's date with the current time in KST.
When the user asks to verify or check their PocketLens connection: node pocket-lens.mjs verify-connection Report the result: whether the connection is successful, the user's name/email, and the API key permissions. User commands: "PocketLens ์ฐ๊ฒฐ ํ์ธ" / "Check PocketLens connection" "API ํค ํ์ธ" / "Verify API key"
When the user asks to see their categories: node pocket-lens.mjs list-categories Display the categories in a formatted list grouped by type (SYSTEM vs CUSTOM). User commands: "์นดํ ๊ณ ๋ฆฌ ๋ชฉ๋ก ๋ณด์ฌ์ค" / "Show my categories" "์นดํ ๊ณ ๋ฆฌ ๋ญ ์์ด?" / "What categories do I have?"
When a user asks about their spending, monthly expenses, or spending breakdown: User commands: "์ด๋ฒ ๋ฌ ์ผ๋ง ์ผ์ด?" / "How much did I spend this month?" "์ง์ถ ์์ฝ ๋ณด์ฌ์ค" / "Show spending summary" "์นดํ ๊ณ ๋ฆฌ๋ณ ์ง์ถ" / "Spending by category" "์ผ์ฑ์นด๋ ์ผ๋ง ๋์์ด?" / "How much on Samsung card?" "์ง๋๋ฌ ์ง์ถ ๋ด์ญ" / "Last month's spending" Step 1 - Fetch spending summary: node pocket-lens.mjs spending-summary To query a specific month (YYYY-MM format): node pocket-lens.mjs spending-summary --month 2026-02 If no --month is provided, the current month is used. Step 2 - Format the response: Present the data as a clear, readable summary. Highlight the biggest spending categories and show card-level breakdowns. If previous month data is available, include a comparison. Example format: ์ด ์ง์ถ: 1,250,000์ (45๊ฑด) ์ผ ํ๊ท : 56,818์ ์ ์ ๋๋น: +150,000์ (+13.6%) ์นดํ ๊ณ ๋ฆฌ๋ณ: ์๋น: 450,000์ (36%) ๊ตํต: 180,000์ (14.4%) ... ์นด๋๋ณ: ์ผ์ฑ์นด๋: 700,000์ (56%) ํ๋์นด๋: 550,000์ (44%)
When a user asks about card bills, payment due dates, or upcoming card charges: User commands: "์นด๋ ์ฒญ๊ตฌ ๊ธ์ก ์๋ ค์ค" / "Show card billing amounts" "๋ค์ ๋ฌ ์นด๋๊ฐ ์ผ๋ง์ผ?" / "How much are my card bills?" "์นด๋ ๊ฒฐ์ ์ผ ์ธ์ ์ผ?" / "When are my card payment due dates?" "๋ฏธ๊ฒฐ์ ๊ธ์ก ์ผ๋ง์ผ?" / "How much is unpaid?" Step 1 - Fetch card billing info: node pocket-lens.mjs card-bills To query a specific month (YYYY-MM format): node pocket-lens.mjs card-bills --month 2026-02 If no --month is provided, the current month is used. Step 2 - Format the response: Show each card's billing amount, due date, and payment status. Highlight unpaid or pending bills. Show the total pending and completed amounts. Example format: 2026๋ 2์ ์นด๋ ์ฒญ๊ตฌ ๋ด์ญ ์ผ์ฑ์นด๋: 850,000์ (๊ฒฐ์ ์ผ: 2/25) ๋๊ธฐ์ค ํ๋์นด๋: 650,000์ (๊ฒฐ์ ์ผ: 2/15) ๊ฒฐ์ ์๋ฃ ๋ฏธ๊ฒฐ์ ์ด์ก: 850,000์ ๊ฒฐ์ ์๋ฃ: 650,000์
Handle API errors with clear, actionable messages: HTTP StatusMeaningUser-Facing Message401Invalid or missing API key"API ํค๊ฐ ์ ํจํ์ง ์์ต๋๋ค. PocketLens ์ค์ ์์ API ํค๋ฅผ ํ์ธํด์ฃผ์ธ์." / "Your API key is invalid. Please check your key in PocketLens Settings."403Insufficient permissions"API ํค์ ์ฐ๊ธฐ ๊ถํ์ด ์์ต๋๋ค. write ๋๋ full ๊ถํ์ด ์๋ ํค๋ฅผ ์์ฑํด์ฃผ์ธ์." / "Your API key lacks write permission. Please create a key with write or full access."429Rate limited"์์ฒญ์ด ๋๋ฌด ๋ง์ต๋๋ค. ์ ์ ํ ๋ค์ ์๋ํด์ฃผ์ธ์." / "Too many requests. Please wait a moment and try again."400Validation errorShow the specific validation errors from the response details field.500Server error"์๋ฒ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค. ์ ์ ํ ๋ค์ ์๋ํด์ฃผ์ธ์." / "A server error occurred. Please try again shortly."
Creates one or more transactions. Request body: { "transactions": [ { "merchant": "์คํ๋ฒ ์ค ๊ฐ๋จ์ ", "amount": 5500, "date": "2025-12-05T14:30:00+09:00", "cardName": "์ ํ์นด๋", "categoryHint": "์นดํ", "description": "์๋ฉ๋ฆฌ์นด๋ ธ", "source": "openclaw" } ] } Fields: merchant (required): Merchant/store name, 1-200 characters. amount (required): Integer amount in KRW (no decimals). date (required): ISO 8601 datetime string. cardName (optional): Card issuer name, max 100 characters. categoryHint (optional): Category name hint for auto-classification, max 100 characters. description (optional): Additional description, max 500 characters. source (optional): Defaults to "openclaw". Response (201): { "success": true, "data": { "created": [ { "id": "abc123", "merchant": "์คํ๋ฒ ์ค ๊ฐ๋จ์ ", "amount": 5500, "date": "2025-12-05T14:30:00+09:00", "categoryId": "cat_food", "categoryName": "์๋น", "isVerified": false } ], "count": 1 } }
Lists user's available categories. Response (200): { "success": true, "data": { "categories": [ { "id": "cat_1", "name": "์๋น", "icon": "utensils", "color": "#FF6B6B", "type": "SYSTEM" } ], "count": 15 } }
Returns the authenticated user's basic info. Response (200): { "success": true, "data": { "id": "user_123", "name": "John Doe", "email": "john@example.com" } }
Returns a monthly spending summary with totals, category breakdown, and card breakdown. Query parameters: month (optional): Month in YYYY-MM format. Defaults to current month. Response (200): { "success": true, "data": { "month": "2026-02", "totalAmount": 1250000, "transactionCount": 45, "dailyAverage": 56818, "previousMonth": { "totalAmount": 1100000, "diff": 150000, "diffPercent": 13.6 }, "byCategory": [ { "categoryId": "cat_food", "categoryName": "์๋น", "amount": 450000, "percent": 36.0 }, { "categoryId": "cat_transport", "categoryName": "๊ตํต", "amount": 180000, "percent": 14.4 } ], "byCard": [ { "cardName": "์ผ์ฑ์นด๋", "amount": 700000, "percent": 56.0 }, { "cardName": "ํ๋์นด๋", "amount": 550000, "percent": 44.0 } ] } }
Returns card billing information for a given month. Query parameters: month (optional): Month in YYYY-MM format. Defaults to current month. Response (200): { "success": true, "data": { "month": "2026-02", "bills": [ { "cardName": "์ผ์ฑ์นด๋", "amount": 850000, "dueDate": "2026-02-25", "status": "pending" }, { "cardName": "ํ๋์นด๋", "amount": 650000, "dueDate": "2026-02-15", "status": "paid" } ], "totalPending": 850000, "totalPaid": 650000 } }
Respond in the same language the user uses (Korean or English). Transaction data (merchant names, descriptions) should be preserved as-is from the source image or user input. Korean credit card statements commonly use Korean merchant names; do not translate them.
The helper script is located at scripts/pocket-lens.mjs relative to this skill directory. Always use the full path when executing.
Data access, storage, extraction, analysis, reporting, and insight generation.
Largest current source with strong distribution and engagement signals.