Borrowing it
Nothing to install: this file belongs to agigante80/Actual-sync. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/agigante80/Actual-sync/main/.claude/skills/owasp-api-security/SKILL.mdgit clone --depth 1 https://github.com/agigante80/Actual-syncWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/agigante80/actual-sync/owasp-api-security)<a href="https://agentmods.dev/skills/agigante80/actual-sync/owasp-api-security"><img src="https://agentmods.dev/badge/skills/agigante80/actual-sync/owasp-api-security.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00048 | $0.05385 |
| Opus 5 | $0.00024 | $0.02693 |
| Sonnet 5 | $0.00010 | $0.01077 |
| Haiku 4.5 | $0.00005 | $0.00539 |
Grade B, and why
owasp-api-security scanned grade B with 1 finding against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured yesterday.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Cloud metadata endpointmediumServer-side request forgery
One request to 169.254.169.254 can return temporary IAM credentials.
server: 'http://169.254.169.254/latest/meta-data/' // cloud metadata SSRF target Downgraded: this mod is about security review, or the phrase is quoted, so it is likely naming the pattern rather than instructing it.
How it starts
The opening of the file, as written. The whole thing — 437 lines — stays where its author put it; the contents beside it link to each section on GitHub.
OWASP API Security Testing
Comprehensive security testing knowledge base for REST APIs, aligned with OWASP API Security Top 10:2023 and OWASP ASVS 5.0, adapted to Actual-sync's real stack.
Stack the examples target
Actual-sync exposes one Express HTTP surface from src/services/healthCheck.js:
- Server: Express app started via
http.createServer(this.app)on a configurable port. Tests start the real server and hit it with Node's built-inhttpmodule — notfastify.inject(), notsupertest. Seesrc/__tests__/healthCheck.test.jsfor the idiom. - Auth: HTTP Basic auth (or Bearer token) via
dashboardAuth(), realm"Dashboard". Unauthenticated/invalid Basic →401with aWWW-Authenticate: Basic realm="Dashboard"header. There is one admin credential pair (dashboardConfig.auth.username/password), not per-user sessions. - Protected surface (behind
dashboardAuth()):/dashboardand/api/dashboard/*(status,servers,orphaned-servers,schedules,metrics,history,accounts, plus POSTsync,dismiss-error,reset-history,test-notification). - Public surface (no auth by design):
/health,/ready,/metrics,/metrics/prometheus,/icon.png, and the WebSocket log stream/ws/logs. - Validation: AJV against
config/config.schema.jsonat startup; request-body validation is hand-rolled in the route handlers. There is no Zod. - DB: better-sqlite3 with
?-parameterized prepared statements (services/syncHistory.js). - Rate limiting:
express-rate-limit(60 req/min/IP,/icon.pngexempt). - Logging: the custom logger in
src/lib/logger.jsauto-redacts secrets before writing — error responses must redact too (they are a separate egress path).
When to Use This Skill
- Writing security tests for the dashboard API endpoints
- Reviewing
/api/dashboard/*routes for OWASP vulnerabilities - Generating injection/fuzzing payloads for test suites
- Auditing the single-admin auth gate (
dashboardAuth()) - Validating that responses never leak secrets (passwords, tokens,
encryptionPassword) or stack traces - Assessing rate limiting and resource-exhaustion protections
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- yesterday First seen · 437 lines · 48 tokens per session scan B cb111034e3d6
owasp-api-security is a skill published in the GitHub repository agigante80/Actual-sync (12 stars, last pushed 3d ago), licensed MIT. It adds 48 tokens to every session and 5,385 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it B with 1 finding (cloud metadata endpoint). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-04.
Other skills, from other repositories
api-documenter
Master API documentation with OpenAPI 3.1, AI-powered tools, and modern developer experience practices. Create interactive docs, generate SDKs, and build comprehensive developer portals. Use PROACTIVELY for API documentation or developer portal creation.
api-patterns
API design principles and decision-making. REST vs GraphQL vs tRPC selection, response formats, versioning, pagination.
gws-events-subscribe
Google Workspace Events: Subscribe to Workspace events and stream them as NDJSON.
gws-script
Manage Google Apps Script projects.
api-testing-observability-api-mock
You are an API mocking expert specializing in realistic mock services for development, testing, and demos. Design mocks that simulate real API behavior and enable parallel development.
api-design-principles
Master REST and GraphQL API design principles to build intuitive, scalable, and maintainable APIs that delight developers. Use when designing new APIs, reviewing API specifications, or establishing API design standards.