sorted/SKILL.md
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.
npx skillsauth add glebis/claude-skills sortedInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Automates getSorted.de via real Chrome Beta browser for invoicing, expense tracking, and German tax report submissions.
--remote-debugging-port=9222 (use /real-browser launch sequence)~/.chrome-beta-profileagent-browser CLI installedinvoice createCreate 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 listList all invoices with status (paid/unpaid).
expense addAdd an expense entry.
tax statusShow 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).
App URL: https://app.getsorted.de/
| Section | Sidebar link | Purpose | |---------|-------------|---------| | Dashboard | Sorted (logo) | Overview: taxes owed, income, expenses | | Taxes | Taxes | Tax reports, deadlines, submissions | | Income | Income | Invoice list, create/edit invoices | | Expenses | Expenses | Expense tracking, receipts | | Tax consultant | Tax consultant | Advisor connection | | Personal details | Profile → Personal details | Freelancer info, Steuernummer | | Bank accounts | Profile → Bank accounts (Beta) | Connected banks | | Subscription | Profile → Subscription | Plan management | | Import | Profile → Import your data | Bulk data import | | Settings | Profile → Settings | App preferences |
| Report | German name | Frequency | Description | |--------|------------|-----------|-------------| | Advance VAT | Umsatzsteuer-Voranmeldung (UStVA) | Quarterly | VAT collected on invoices | | EU Summary | Zusammenfassende Meldung (ZM) | Quarterly | Revenue from EU customers | | Annual Returns | EÜR + Einkommensteuererklärung | Yearly | Profit/loss + income tax |
Income → click Add → Create invoiceClient details area on invoice preview
Add new clientBusiness or Private personSave in dialogclickable and is positioned at ~x:734 y:413 on the invoice previewAdd a line
Save button. Title changes from "Add invoice" to "Edit invoice" on successCRITICAL: Do NOT use Chrome CDP Page.printToPDF — it captures the entire page including sidebar and settings panel. Always use Sorted's native PDF.
Save and send button (top right, teal button)ALL3 DOO BELGRADE-2025-03-21-20260506.pdf)
generic element with cursor:pointer and onclick{CLIENT_NAME}-{INVOICE_NUMBER}-{DATE}.pdf~/Downloads/Close or ×)On paid plans, the "Email invoice" dialog is fully functional:
To field with client email (@e49)Subject if needed (auto-filled as "Gleb Kalinin sent you an invoice (#INVOICE-NUMBER)")Message in the textareaEmail invoice button (@e15) to sendOn 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.
When email sending is unavailable, download the PDF and send via Telethon (see "Sending Invoice After Download" section below).
{CLIENT_NAME}-{INVOICE_NUMBER}-{YYYYMMDD}.pdf
Example: ALL3 DOO BELGRADE-2025-03-21-20260506.pdf
Existing clients are stored and reusable. When creating an invoice:
After downloading the PDF, send via Telegram using Telethon:
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")
Always use the /real-browser skill's launch sequence. Session name should be unique per run:
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.
development
This skill should be used when designing, running, validating, or auditing statistical experiments on personal or observational time-series data (health metrics, speech/text corpora, behavioral logs, diaries, n-of-1 self-tracking). It enforces pre-registration, exact permutation tests, FDR discipline, data-validation gates, adversarial code review, and cross-validation with external models. Triggers on "design an experiment", "test this hypothesis on my data", "is this correlation real", "audit these findings", "pre-register", "validate this dataset", or any n-of-1 / quantified-self analysis request.
development
Create Tufte-inspired data reports and infographic dashboards as standalone HTML files. Uses EB Garamond for text, Monaspace Argon for numbers, Chart.js for interactive charts, and inline SVG sparklines. Produces publication-quality reports with 2-column narrative+data layouts, status dashboards, scroll animations, and responsive mobile support. Use this skill whenever the user wants to create a data report, activity dashboard, infographic, personal analytics page, health tracker visualization, or any document that combines narrative text with interactive charts and tables. Also triggers for "make a report like Tufte", "create an infographic", "build a dashboard", "visualize my data", or requests for beautiful data-driven documents.
documentation
Cut a software release and maintain a tiered compatibility policy. Use when the user wants to release, ship a version, bump the version, tag a release, write a changelog, or update COMPATIBILITY. Config-driven via release.config.json; bumps version files, runs a readiness gate, updates COMPATIBILITY.md tiers and deprecations, tags (→ release workflow), and reports closed issues. Teaches the underlying standards as it runs.
development
Sync and manage bilingual (EN/RU) library content for agency-docs. Use when adding, updating, or reviewing library articles. Handles translation, sync checks, and Russian stylistic review.