smart-categorize — скилл для Claude Code: разбор транзакций
Раскладывает неразобранные транзакции по категориям: сначала прогоняет существующие правила, потом предлагает новые по названиям продавцов.
npx skills add openaccountant/skills --skill smart-categorize -a claude-codeЧто делает smart-categorize
Скилл ищет транзакции без категории, применяет к ним уже сохранённые правила сопоставления по описанию и сообщает, сколько строк удалось разобрать. Остаток он группирует по похожим названиям продавцов и предлагает категорию для каждой группы. Дальше вы подтверждаете или правите — без вашего согласия ничего не записывается.
Внутри два инструмента Wilson: transaction_search находит записи с пустой категорией, categorize применяет правила. Совпадение идёт по любой части описания и не зависит от регистра. Если транзакция подходит под несколько правил, побеждает то, что создано раньше. Уже проставленные категории скилл не перезаписывает, пока вы прямо не попросите.
Подтверждённые правила можно сохранить — Wilson держит их в таблице categorization_rules, поэтому они переживут сессию и подхватятся при следующем импорте. Без Wilson скилл описывает ручной путь в Excel или Google Sheets: лист с парами «шаблон — категория» и формулы вроде REGEXMATCH. Там есть подвох: VLOOKUP в Google Sheets не понимает подстановочные знаки, так что на точном совпадении далеко не уедешь.
Какие задачи решает
- найти транзакции без проставленной категории
- применить сохранённые правила к новому импорту
- сгруппировать неразобранные строки по названиям продавцов
- предложить категорию для каждой группы продавцов
- сохранить новые правила, чтобы не разбирать то же самое вручную
Примеры запросов агенту
- разбери неразобранные транзакции по категориям
- покажи, что осталось без категории, и предложи правила
- сохрани подтверждённые правила для будущих импортов
Как установить smart-categorize
1Через Skills CLI (Vercel)
npx skills add openaccountant/skills --skill smart-categorize -a claude-code2Вручную: положить файлы
~/.claude/skills/smart-categorize/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/smart-categorize/
1Через Skills CLI (Vercel)
npx skills add openaccountant/skills --skill smart-categorize -a codex2Вручную: положить файлы
.agents/skills/smart-categorize/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add openaccountant/skills --skill smart-categorize -a cursor2Вручную: положить файлы
.cursor/skills/smart-categorize/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install openaccountant/skills smart-categorize2Вручную: положить файлы
.github/skills/smart-categorize/SKILL.md1Через Skills CLI (Vercel)
npx skills add openaccountant/skills --skill smart-categorize -a gemini-cli2Командой платформы
gemini skills install https://github.com/openaccountant/skills --path shared/smart-categorizeВручную: положить файлы
.devin/skills/smart-categorize/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add openaccountant/skills --skill smart-categorize -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов
Вопросы о smart-categorize
Как установить smart-categorize в Claude?
Выполните npx skills add openaccountant/skills --skill smart-categorize -a claude-code. Скилл встанет в ~/.claude/skills/smart-categorize/SKILL.md.
Что делает smart-categorize?
Находит транзакции без категории, применяет существующие правила сопоставления по описанию, а для остатка предлагает категории по группам продавцов. Новые правила применяются только после вашего подтверждения.
Что нужно для работы скилла?
Он опирается на инструменты Wilson: transaction_search для поиска неразобранных транзакций и categorize для применения правил. Без Wilson остаётся ручной разбор в таблице.
Исходный текст
SKILL.md · MIT
---
name: smart-categorize
description: >
Auto-categorize uncategorized transactions using vendor pattern matching.
---
# Smart Categorize
## Overview
Automatically categorize uncategorized transactions by matching vendor/description patterns against known rules. Uses existing categorization rules first, then suggests new rules for unmatched transactions based on common vendor names.
## Wilson Tools Used
- `categorize` — apply pattern-based categorization rules to transactions
- `transaction_search` — find uncategorized transactions
## Workflow
1. Use `transaction_search` to find all transactions where `category` is null or empty.
2. Run `categorize` to apply existing categorization rules (pattern matching on description field).
3. Report how many transactions were categorized by existing rules.
4. For remaining uncategorized transactions, group by vendor/description similarity.
5. Suggest category assignments for each vendor group (e.g., "SPOTIFY" -> Entertainment, "SHELL OIL" -> Transportation).
6. Ask the user to confirm or adjust the suggested categories.
7. Apply confirmed categories and optionally save new categorization rules for future imports.
## Without Wilson
You can categorize transactions manually in a spreadsheet:
### Setting Up Category Rules in Excel/Sheets
1. Create a reference sheet called "Rules" with two columns: `Pattern` and `Category`.
2. Add your vendor patterns:
| Pattern | Category |
|---------|----------|
| AMAZON | Shopping |
| WHOLE FOODS | Groceries |
| SHELL | Transportation |
| NETFLIX | Entertainment |
| STARBUCKS | Dining |
3. In your transactions sheet, use a lookup formula in the Category column:
- **Excel**: `=IFERROR(INDEX(Rules!B:B,MATCH("*"&"AMAZON"&"*",Rules!A:A,0)),"Uncategorized")` — but this only works for exact matches.
- **Better approach with Excel**: Use a helper column with `=SUMPRODUCT` or VBA macro to do partial matching.
- **Google Sheets**: `=IFERROR(VLOOKUP("*"&A2&"*",Rules!A:B,2,FALSE),"Uncategorized")` does not support wildcards in VLOOKUP.
- **Practical Google Sheets approach**:
```
=IF(REGEXMATCH(A2,"(?i)amazon"),"Shopping",
IF(REGEXMATCH(A2,"(?i)whole foods|trader joe"),"Groceries",
IF(REGEXMATCH(A2,"(?i)shell|chevron|exxon"),"Transportation",
"Uncategorized")))
```
### Common Category Mapping
| Vendor Pattern | Suggested Category |
|---|---|
| AMAZON, TARGET, WALMART | Shopping |
| WHOLE FOODS, TRADER JOE, KROGER, SAFEWAY | Groceries |
| UBER EATS, DOORDASH, GRUBHUB | Dining |
| NETFLIX, SPOTIFY, HULU, DISNEY+ | Entertainment |
| SHELL, CHEVRON, BP, EXXON | Transportation |
| AT&T, VERIZON, T-MOBILE, COMCAST | Utilities |
| CVS, WALGREENS, PHARMACY | Healthcare |
| VENMO, ZELLE, PAYPAL (person-to-person) | Transfers |
## Important Notes
- Pattern matching is case-insensitive and matches against any part of the transaction description.
- Rules are applied in the order they were created. If a transaction matches multiple rules, the first match wins.
- Categorization does not overwrite transactions that already have a category unless you explicitly ask.
- Wilson stores rules in the `categorization_rules` table so they persist across sessions and apply to future imports automatically.
© openaccountant · MIT · openaccountant/skills