tidy
Triggered by "tidy up", "clean up transactions", "categorize uncategorized", "organize my transactions"
Best use case
tidy is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Triggered by "tidy up", "clean up transactions", "categorize uncategorized", "organize my transactions"
Teams using tidy should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/tidy/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How tidy Compares
| Feature / Agent | tidy | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Triggered by "tidy up", "clean up transactions", "categorize uncategorized", "organize my transactions"
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
Related Guides
Best AI Skills for Claude
Explore the best AI skills for Claude and Claude Code across coding, research, workflow automation, documentation, and agent operations.
ChatGPT vs Claude for Agent Skills
Compare ChatGPT and Claude for AI agent skills across coding, writing, research, and reusable workflow execution.
SKILL.md Source
# Tidy Up Uncategorized Transactions
Batch-categorize uncategorized transactions by clustering similar ones and applying categories in bulk.
## Workflow
1. **Fetch uncategorized transactions.** Call the `query` MCP tool:
```json
{ "detail": true, "is_uncategorized": true, "period": "last_90d", "limit": 200, "sort": "-amount" }
```
If `$ARGUMENTS` contains a time period (e.g. "this month", "last 30 days"), use that instead of `last_90d`.
2. **Research unknown transactions.** For transactions you can't identify from the description alone:
- **Web search first** (if available): Search for the merchant name, any phone numbers or domains in the description, or the raw description itself. This often reveals the business behind cryptic processor names.
- **Search the user's email** (if available): Search for the party/merchant name to find order confirmations or receipts. If that doesn't match, search for the exact dollar amount (e.g. "$47.23") to find receipts that way.
3. **Cluster by pattern.** Group the results by normalized description or party name. For each cluster, note the count and total amount.
4. **Suggest categorization.** For each cluster, propose:
- A **category** (pick from the user's existing categories)
- A **party** name (the clean merchant/counterparty name)
5. **Present to the user.** Show a table or list of clusters with:
- Pattern / merchant name
- Count of transactions
- Total amount
- Suggested category
- Whether you recommend creating a rule
Ask the user to approve, modify, or skip each cluster.
6. **Prefer rules over one-off annotations.** If a cluster has more than one transaction, or the merchant is likely to appear again (subscriptions, regular stores, utilities, etc.), create a rule rather than annotating individual transactions. Rules automatically categorize future transactions too.
- Preview first: `admin { "entity": "rule", "action": "preview", ... }`
- Show the preview (how many existing transactions would match)
- If user confirms, create: `admin { "entity": "rule", "action": "create", ... }`
7. **Annotate the rest.** For truly one-off transactions where a rule wouldn't help, apply directly:
```json
{ "action": "categorize", "filter": { "search": "<pattern>" }, "category_name": "<approved_category>" }
```
Also set the party if one was approved:
```json
{ "action": "set_party", "filter": { "search": "<pattern>" }, "party_name": "<approved_party>" }
```
8. **Summarize.** Report how many transactions were categorized, how many rules were created, and how many uncategorized transactions remain.
## Tone
Stick to the facts. Present findings and suggestions without judgement — no commentary on spending habits. Just clear, plain-language observations and actionable options.Related Skills
tiktok-automation
Automate TikTok tasks via Rube MCP (Composio): upload/publish videos, post photos, manage content, and view user profiles/stats. Always search tools first for current schemas.
theme-factory
Toolkit for styling artifacts with a theme. These artifacts can be slides, docs, reportings, HTML landing pages, etc. There are 10 pre-set themes with colors/fonts that you can apply to any artifact that has been creating, or can generate a new theme on-the-fly.
telegram-automation
Automate Telegram tasks via Rube MCP (Composio): send messages, manage chats, share photos/documents, and handle bot commands. Always search tools first for current schemas.
tailored-resume-generator
Analyzes job descriptions and generates tailored resumes that highlight relevant experience, skills, and achievements to maximize interview chances
supabase-automation
Automate Supabase database queries, table management, project administration, storage, edge functions, and SQL execution via Rube MCP (Composio). Always search tools first for current schemas.
stripe-automation
Automate Stripe tasks via Rube MCP (Composio): customers, charges, subscriptions, invoices, products, refunds. Always search tools first for current schemas.
square-automation
Automate Square tasks via Rube MCP (Composio): payments, orders, invoices, locations. Always search tools first for current schemas.
slack-message-formatter
Format messages for Slack with pixel-perfect accuracy. Converts Markdown to rich HTML (for copy-paste into Slack) or Slack mrkdwn (for API/webhook). Use when the user asks to write a Slack message, announcement, or notification, format something "for Slack", preview how content looks in Slack, or send a message via Slack webhook. Also trigger when user mentions Slack formatting, mrkdwn, or wants to share Markdown content in Slack channels.
slack-gif-creator
Toolkit for creating animated GIFs optimized for Slack, with validators for size constraints and composable animation primitives. This skill applies when users request animated GIFs or emoji animations for Slack from descriptions like "make me a GIF for Slack of X doing Y".
slack-automation
Automate Slack messaging, channel management, search, reactions, and threads via Rube MCP (Composio). Send messages, search conversations, manage channels/users, and react to messages programmatically.
skill-share
A skill that creates new Claude skills and automatically shares them on Slack using Rube for seamless team collaboration and skill discovery.
skill-creator
Guide for creating effective skills. This skill should be used when users want to create a new skill (or update an existing skill) that extends Claude's capabilities with specialized knowledge, workflows, or tool integrations.