Install any skill in seconds. Free to start, no credit card required.
Get Started Free →sundial-org/actual-budget
Query and manage personal finances via the official Actual Budget Node.js API.
Passed 21 of 21 test cases with the skill, and 15 of 21 without it.
and 7 more in the full report
6 fixed16 passed either way0 still failing0 broke
Tokens, turns and time describe resource use, not a dollar price.
One of 5 test cases the skill fixed. Same model, same prompt, with and without the skill.
Instead of fetching all accounts with `getAccounts()` and searching the returned array for name 'Main Checking', what built-in helper method should be used?
| Checked | Without skill | With skill |
|---|---|---|
| Uses getIDByName with 'accounts' as the entity type parameter. | Missed | Passed |
The instructions your model reads when the skill loads.
Official Node.js API for Actual Budget. Runs headless — works on local budget data synced from your server.
npm install @actual-app/api
| Variable | Required | Description |
|---|---|---|
ACTUAL_SERVER_URL | Yes | Server URL (e.g., https://actual.example.com) |
ACTUAL_PASSWORD | Yes | Server password |
ACTUAL_SYNC_ID | Yes | Budget Sync ID (Settings → Advanced → Sync ID) |
ACTUAL_DATA_DIR | No | Local cache directory for budget data (defaults to cwd) |
ACTUAL_ENCRYPTION_PASSWORD | No | E2E encryption password, if enabled |
NODE_TLS_REJECT_UNAUTHORIZED | No | Set to 0 for self-signed certs |
const api = require('@actual-app/api');
await api.init({
dataDir: process.env.ACTUAL_DATA_DIR || '/tmp/actual-cache',
serverURL: process.env.ACTUAL_SERVER_URL,
password: process.env.ACTUAL_PASSWORD,
});
await api.downloadBudget(
process.env.ACTUAL_SYNC_ID,
process.env.ACTUAL_ENCRYPTION_PASSWORD ? { password: process.env.ACTUAL_ENCRYPTION_PASSWORD } : undefined
);
// ... do work ...
await api.shutdown();
test cases passed, vs 15 / 21 without
More skills from the same source and nearby in the registry, with their headline benchmark lift.