Agent skill

Sorted

by glebis in glebis/claude-skills

Automate getSorted.de (Sorted) for freelancer invoicing, expense tracking, and German tax submissions (VAT, ZM, annual returns).

MITAuto-check passedProductivity & Automation

Install Sorted

skills CLI
$ npx skills add glebis/claude-skills --skill sorted -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install glebis/claude-skills sorted --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/glebis/claude-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/sorted .claude/skills/sorted && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
sorted
GitHub stars
388
Token cost
~2k tokens
SKILL.md length
919 words
Files
1
Skills in repo
91
Repo updated
First seen
Licence
MIT

At a glance

Automate getSorted.de (Sorted) for freelancer invoicing, expense tracking, and German tax submissions (VAT, ZM, annual returns).

  • Works in 8 steps: Navigate: Income → click Add → Create… → Set client: Click Client details area on… → Set invoice date: Click the date next to… → …
  • Download invoice
  • SKILL.md covers Prerequisites, Commands, Sorted Navigation and Tax Report Types, plus 6 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Sorted is an agent skill from glebis/claude-skills. Automate getSorted.de (Sorted) for freelancer invoicing, expense tracking, and German tax submissions (VAT, ZM, annual returns). Uses real-browser automation via Chrome Beta + agent-browser. Triggers on "create invoice", "sorted invoice", "download invoice", "submit VAT", "tax report", "sorted expenses", "/sorted", or any getSorted.de interaction.

Its SKILL.md is about 2k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Productivity & Automation, covering Forms and invoices and Browser automation. The repository describes itself as: Collection of Claude Code skills for enhanced AI workflows. The licence is MIT.

When your agent uses it

  • Download invoice
  • Sorted expenses
  • Any getSorted.de interaction

Example prompts

  • “create invoice”
  • “sorted invoice”
  • “download invoice”
  • “/sorted”

Requirements

  • Python 3

Workflow steps

8 steps, taken from the first numbered list in SKILL.md.

  1. Navigate: Income → click Add → Create invoice
  2. Set client: Click Client details area on invoice preview
  3. Set invoice date: Click the date next to "Invoice date" (defaults to today)
  4. Set service date (REQUIRED): Click the empty area to the right of invoice date labeled "Service date"
  5. Set due date: Click "Select date" under "Due date" → pick from calendar
  6. Add line item: Click Add a line
  7. VAT: Automatically 0% for Kleinunternehmer accounts. Shows "Service not taxable in Germany" in notes
  8. Save: Click Save button. Title changes from "Add invoice" to "Edit invoice" on success

What it can do on your machine

Read from SKILL.md and the folder at commit 7524dff. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are python and bash).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Sorted loads about 2k tokens when it runs. Until then it costs about 89 tokens; SKILL.md has 919 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~89
When it runs · the whole SKILL.md, loaded when a task matches
~2k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from glebis/claude-skills at commit 7524dff, republished under its MIT licence (© glebis). 919 words, ~2,029 tokens.

Download SKILL.mdSave it as .claude/skills/sorted/SKILL.md (or your agent's skills folder).
name
sorted
description
Automate getSorted.de (Sorted) for freelancer invoicing, expense tracking, and German tax submissions (VAT, ZM, annual returns). Uses real-browser automation via Chrome Beta + agent-browser. Triggers on "create invoice", "sorted invoice", "download invoice", "submit VAT", "tax report", "sorted expenses", "/sorted", or any getSorted.de interaction.

Sorted — Freelancer Tax & Invoicing Automation

Automates getSorted.de via real Chrome Beta browser for invoicing, expense tracking, and German tax report submissions.

Prerequisites

  • Chrome Beta with --remote-debugging-port=9222 (use /real-browser launch sequence)
  • Google account session persisted in ~/.chrome-beta-profile
  • agent-browser CLI installed

Commands

invoice create

Create a new invoice on Sorted.

Required params: client name, amount Optional: hours, rate, description, due date, service date, client type (business/person)

invoice download <invoice-number>

Download a properly formatted PDF from Sorted (not browser print).

invoice send <invoice-number> --email <email>

Send invoice via email directly from Sorted (paid plan only). On free plan, downloads PDF and sends via Telegram instead.

invoice list

List all invoices with status (paid/unpaid).

expense add

Add an expense entry.

tax status

Show current tax obligations, deadlines, and overdue reports.

tax preview <report-type> <period>

Preview a tax report before submission.

tax submit <report-type> <period>

Submit a tax report to Finanzamt via ELSTER (requires paid plan).

Sorted Navigation

App URL: https://app.getsorted.de/

SectionSidebar linkPurpose
DashboardSorted (logo)Overview: taxes owed, income, expenses
TaxesTaxesTax reports, deadlines, submissions
IncomeIncomeInvoice list, create/edit invoices
ExpensesExpensesExpense tracking, receipts
Tax consultantTax consultantAdvisor connection
Personal detailsProfile → Personal detailsFreelancer info, Steuernummer
Bank accountsProfile → Bank accounts (Beta)Connected banks
SubscriptionProfile → SubscriptionPlan management
ImportProfile → Import your dataBulk data import
SettingsProfile → SettingsApp preferences

Tax Report Types

ReportGerman nameFrequencyDescription
Advance VATUmsatzsteuer-Voranmeldung (UStVA)QuarterlyVAT collected on invoices
EU SummaryZusammenfassende Meldung (ZM)QuarterlyRevenue from EU customers
Annual ReturnsEÜR + EinkommensteuererklärungYearlyProfit/loss + income tax

Invoice Creation Flow

Step-by-step browser automation:
  1. Navigate: Income → click Add → Create invoice
  2. Set client: Click Client details area on invoice preview
    • Search existing clients or click Add new client
    • Choose Business or Private person
    • Fill: name, VAT/TIN, street, city, zip, country (autocomplete dropdown — type then click match), email (optional)
    • Click Save in dialog
  3. Set invoice date: Click the date next to "Invoice date" (defaults to today)
  4. Set service date (REQUIRED): Click the empty area to the right of invoice date labeled "Service date"
    • This is a date range picker — select start date, then end date
    • If same-day service, click the same date twice
    • Without service date, Save will fail silently — the field shows "Required" in red
    • The clickable element has class clickable and is positioned at ~x:734 y:413 on the invoice preview
    • If snapshot doesn't show it, use JS: find div with text "Service dateRequired" and click it
  5. Set due date: Click "Select date" under "Due date" → pick from calendar
  6. Add line item: Click Add a line
    • Fields: description (text), quantity (number), unit dropdown (h/pcs/etc), rate (number)
    • Click on collapsed values to re-edit them
  7. VAT: Automatically 0% for Kleinunternehmer accounts. Shows "Service not taxable in Germany" in notes
  8. Save: Click Save button. Title changes from "Add invoice" to "Edit invoice" on success
Gotchas
  • Service date is mandatory but easy to miss — it's not highlighted until you try to save
  • German number formatting: dots are thousands separators (1.000 = one thousand), commas are decimals
  • Collapsed fields: After saving, line item fields collapse to display-only. Click the displayed value to re-open the editable field
  • Invoice number: Auto-generated sequentially (e.g., 2025-03-21). Can be edited by clicking it
Show full SKILL.md (378 more words)Show less

Invoice PDF Download Flow

CRITICAL: Do NOT use Chrome CDP Page.printToPDF — it captures the entire page including sidebar and settings panel. Always use Sorted's native PDF.

Step-by-step:
  1. Open the invoice (click from Income list, or navigate after creating)
  2. Click Save and send button (top right, teal button)
  3. An "Email invoice" dialog appears with:
    • To field (email)
    • Subject (auto-filled)
    • Message textarea
    • Attachments section at the bottom showing the PDF filename
  4. Click the PDF link (e.g., ALL3 DOO BELGRADE-2025-03-21-20260506.pdf)
    • It's a generic element with cursor:pointer and onclick
    • The text matches pattern: {CLIENT_NAME}-{INVOICE_NUMBER}-{DATE}.pdf
  5. PDF downloads to ~/Downloads/
  6. Close the dialog (click Close or ×)
Email sending (paid plan)

On paid plans, the "Email invoice" dialog is fully functional:

  1. Fill To field with client email (@e49)
  2. Edit Subject if needed (auto-filled as "Gleb Kalinin sent you an invoice (#INVOICE-NUMBER)")
  3. Write a Message in the textarea
  4. Toggle "Send a copy to my email" checkbox (checked by default)
  5. Click Email invoice button (@e15) to send

On the free plan, the dialog shows "Sending invoices by email is not available in your plan" with a "Change my plan" link. The PDF download still works regardless.

Fallback: Telegram delivery (free plan)

When email sending is unavailable, download the PDF and send via Telethon (see "Sending Invoice After Download" section below).

PDF filename pattern
{CLIENT_NAME}-{INVOICE_NUMBER}-{YYYYMMDD}.pdf

Example: ALL3 DOO BELGRADE-2025-03-21-20260506.pdf

Client Management

Existing clients are stored and reusable. When creating an invoice:

  • The client picker shows all saved clients
  • Search by name in the search box
  • Edit/delete clients via small buttons next to each name
Client fields (Business)
  • Business name (required)
  • VAT number / TIN (optional)
  • Street & Number
  • City
  • Zip Code
  • Country (autocomplete — type and click match)
  • Email
Client fields (Private person)
  • First name, Last name
  • Address fields same as business

Sending Invoice After Download

After downloading the PDF, send via Telegram using Telethon:

python
from telethon.sync import TelegramClient
import json
from pathlib import Path

config = json.loads((Path.home() / '.telegram_dl' / 'config.json').read_text())
session = str(Path.home() / '.telegram_dl' / 'user')

with TelegramClient(session, config['api_id'], config['api_hash']) as client:
    client.send_file("username", "/path/to/invoice.pdf", caption="message")

Gleb's Sorted Account Details

  • Status: Kleinunternehmer (no VAT charged)
  • Finanzamt: Berlin - Wedding
  • VAT-ID: DE369692682
  • Tax Number: 2337201265
  • Bank: Revolut Bank UAB, Zweigniederlassung
  • IBAN: DE38 1001 0178 8157 1777 30
  • BIC/SWIFT: REVODEB2
  • Plan: Free (invoicing works, tax submission requires upgrade)

Browser Session Setup

Always use the /real-browser skill's launch sequence. Session name should be unique per run:

bash
SESSION=$(LC_ALL=C tr -dc 'a-z0-9' < /dev/urandom | head -c 6)
agent-browser --cdp 9222 --session "$SESSION" open "https://app.getsorted.de/"

Google login is persisted — no need to re-authenticate each time.

© glebis, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in sorted of glebis/claude-skills.

Open the folder on GitHubat commit 7524dff

Compare with similar skills

Sorted next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Sorted compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Sorted this skillglebis/claude-skills388—~2kAutomated safety check: PassMIT
Agent Browserquran/quran.com-frontend-next1.9k41 repos~3.3kAutomated safety check: PassNone
Browser Usecacity/VideoHub1673 repos~2.2kAutomated safety check: WarnMIT
Browse Nownowledge-co/community185—~619Automated safety check: PassNone
BrowserVibiumDev/vibium2.9k—~4.8kAutomated safety check: PassApache-2.0
Actionbookactionbook/actionbook1.6k—~1.5kAutomated safety check: PassApache-2.0

Similar skills

  • Agent Browser

    quran/quran.com-frontend-next

    Automates browser interactions for web testing, form filling, screenshots, and data extraction.

    1.9k GitHub starsUsed in 41 repos~3.3k tokens
    Productivity & AutomationAuto-check passed
  • Browser Use

    cacity/VideoHub

    Automates browser interactions for web testing, form filling, screenshots, and data extraction.

    167 GitHub starsUsed in 3 repos~2.2k tokens
    Productivity & AutomationAuto-check: warnings
  • Browse Now

    nowledge-co/community

    Control the user's actual browser through the browse-now CLI when a task needs authenticated pages, dynamic interaction, form filling, screenshots, or other browser automation that web search cannot…

    185 GitHub stars~619 tokensUpdated today
    Productivity & AutomationAuto-check passed
  • Browser

    VibiumDev/vibium

    Automate browsers with the Vibium CLI. An agent skill from VibiumDev/vibium.

    2.9k GitHub stars~4.8k tokensUpdated yesterday
    Productivity & AutomationAuto-check passed
  • Actionbook

    actionbook/actionbook

    Activate when the user needs to interact with any website — browser automation, web scraping, screenshots, form filling, UI testing, monitoring, or building AI agents.

    1.6k GitHub stars~1.5k tokensUpdated 1 mo ago
    Productivity & AutomationAuto-check passed
  • Browser Use

    letta-ai/letta-code

    Control a real browser to navigate pages, click, type, fill forms, inspect rendered UI, take screenshots, or record video.

    3.5k GitHub stars~3.3k tokensUpdated today
    Productivity & AutomationAuto-check passed

More from glebis/claude-skills

All 91 skills in this repo
  • Runs a human-first workflow for labeling PII spans in a transcript, then scores inter-annotator agreement and drafts an adjudicated gold set.

    388 GitHub stars~1.3k tokensUpdated 11 days ago
    Auto-check passed
  • Automates a dedicated, logged-in Chrome instance per profile without ever closing the user's own open tabs or browser windows.

    388 GitHub stars~973 tokensUpdated 11 days ago
    Auto-check passed
  • Deep Research

    glebis/claude-skills

    This skill should be used when conducting comprehensive research on any topic using the OpenAI Deep Research API.

    388 GitHub stars~2.6k tokensUpdated 11 days ago
    Auto-check: notes
  • Elimination Research

    glebis/claude-skills

    This skill should be used for elimination-style research where the user wants to choose from a shortlist of products, tools, services, vendors, or other options using explicit criteria, numeric…

    388 GitHub stars~1.6k tokensUpdated 11 days ago
    Auto-check passed
  • Narrated HTML Presentations

    glebis/claude-skills

    Generates a self-contained HTML presentation with article and slides modes, ElevenLabs voiceover narration and optional GPT Image 2 illustrations.

    388 GitHub stars~2.3k tokensUpdated 11 days ago
    Auto-check: notes
  • Writes fictional but realistic coaching or therapy session transcripts for evals, demos and few-shot examples, in several modalities and export formats.

    388 GitHub stars~2.9k tokensUpdated 11 days ago
    Auto-check passed

Questions about Sorted

What does Sorted do?

Automate getSorted.de (Sorted) for freelancer invoicing, expense tracking, and German tax submissions (VAT, ZM, annual returns). Sorted is an agent skill from glebis/claude-skills.de (Sorted) for freelancer invoicing, expense tracking, and German tax submissions (VAT, ZM, annual returns).

When should I use Sorted?

Sorted fits situations like: download invoice; sorted expenses; any getSorted.de interaction.

How do I install Sorted in Claude Code?

Run `npx skills add glebis/claude-skills --skill sorted -a claude-code`. Or copy the skill folder (sorted in glebis/claude-skills) into .claude/skills/sorted in your project. Claude Code loads it when a task matches its description.

How do I install Sorted in Codex?

Run `npx skills add glebis/claude-skills --skill sorted -a codex`. Or copy the skill folder (sorted in glebis/claude-skills) into .agents/skills/sorted in your project. Codex loads it when a task matches its description.

Can I use Sorted in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add glebis/claude-skills --skill sorted -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/sorted, .gemini/skills/sorted, .github/skills/sorted and .opencode/skills/sorted in your project.

What does Sorted need to run?

SKILL.md names no scripts, command-line tools or credentials: Sorted is instructions for the agent only. Our summary lists: Python 3.

Does Sorted access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Sorted safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Sorted use?

Sorted is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Sorted use?

About 2k tokens (SKILL.md is roughly 8.1k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Sorted?

Skills that share tags, products or a category with Sorted: Agent Browser (quran/quran.com-frontend-next, 1.9k stars), Browser Use (cacity/VideoHub, 167 stars), Browse Now (nowledge-co/community, 185 stars) and Browser (VibiumDev/vibium, 2.9k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Sorted?

glebis (a GitHub user) maintains it in glebis/claude-skills, which has 388 GitHub stars. The repository holds 91 skills in this directory. The repository was last updated on September 26, 2026.

Source: glebis/claude-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.