Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add pedroiff0/awesome-skills --skill suap-apigit clone --depth 1 https://github.com/pedroiff0/awesome-skillsWrote 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/pedroiff0/awesome-skills/suap-api)<a href="https://agentmods.dev/skills/pedroiff0/awesome-skills/suap-api"><img src="https://agentmods.dev/badge/skills/pedroiff0/awesome-skills/suap-api/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/pedroiff0/awesome-skills/suap-api"><img src="https://agentmods.dev/badge/skills/pedroiff0/awesome-skills/suap-api.svg" alt="Reviewed on agentmods" width="80" 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.00154 | $0.02072 |
| Opus 5 | $0.00077 | $0.01036 |
| Sonnet 5 | $0.00031 | $0.00414 |
| Haiku 4.5 | $0.00015 | $0.00207 |
Grade A, and why
suap-api scanned grade A 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 6d ago.
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.
Makes network callslowCapability
Not a fault in itself. Listed so you know the mod talks to something, and to what.
curl -s -X POST "{base}/api/v2/autenticacao/token/" \ How it starts
The opening of the file, as written. The whole thing — 69 lines — stays where its author put it; the contents beside it link to each section on GitHub.
SUAP API (v2) access
SUAP is the unified admin system used by many Brazilian federal institutes. IFRN developed it; other institutes (IFF, IFS, ...) run their own instances, each with its own base URL (e.g. https://suap.iff.edu.br, https://suap.ifrn.edu.br). The API is django-ninja (Swagger UI at /api/docs/). The API surface and auth behaviour differ slightly per instance — always verify against that instance's live /api/openapi.json.
Auth flow (the critical part)
Token endpoint: POST {base}/api/v2/autenticacao/token/.
Gotcha 1 — WAF blocks a missing User-Agent. Without a User-Agent header the nginx/WAF returns 403 Forbidden immediately (looks like a hard block, but it's just the UA). Always send User-Agent: Mozilla/5.0.
Gotcha 2 — body is username/password, NOT Basic Auth. The IFRN suapi example and some docs suggest Basic Auth, but the IFF instance returns 422 ("missing user_token") for Basic Auth and 400 ("username is required", "password is required") when those keys are absent. Working request:
curl -s -X POST "{base}/api/v2/autenticacao/token/" \
-H "User-Agent: Mozilla/5.0" \
-H "Content-Type: application/json" \
-d '{"username": "<matricula>", "password": "<senha>"}'
Response (HTTP 200): {"username": "...", "refresh": "<JWT>", "access": "<JWT>"}. Use the access JWT as the Bearer token: Authorization: Bearer <access>.
Discovering the real endpoints
Old docs/examples use paths like /api/v2/edu/alunos/{mat}/ — these return 404 on the IFF instance. The actual student endpoints live under /api/ensino/.... To get the authoritative, current path list for an instance, fetch its OpenAPI spec (the spec URL hides inside the /api/docs/ HTML as /api/openapi.json):
curl -s "{base}/api/openapi.json" -o openapi.json
Then inspect paths for keywords (boletim, periodo, aluno, historico, nota, disciplina) and read components.securitySchemes (it's JWTAuth/bearer). Loop over each candidate path with the Bearer token to see what actually returns data.
What ships with it
3 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
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.
- 6d ago First seen · 69 lines · 154 tokens per session scan A 991d7574d023
suap-api is a skill published in the GitHub repository pedroiff0/awesome-skills (1 stars, last pushed 2d ago), licensed MIT. It adds 154 tokens to every session and 2,072 once invoked, about $0.0008 per session on Opus 5. A static security scan graded it A with 1 finding (makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-03.
Other skills, from other repositories
svix-sending-webhooks
Everything for working with Svix webhooks: first-time setup (API key, SDK install, first message), Dispatch (sending webhooks to your customers), Ingest (receiving third-party webhooks), Applications, Channels, customer UIDs, idempotency, App Portal embedding, operational webhooks, the Svix CLI, and — only when the…
receiving-webhooks
General guidelines for building a robust webhook receiver/handler: verifying signatures, raw-body access, replay protection, async processing, retries and endpoint auto-disabling. Use whenever you write, review, or debug a handler that consumes incoming webhooks from any provider.
mnemosyne-maintenance
Use when: upgrading Mnemosyne, diagnosing slow/hung consolidation (mnemosynesleep), fixing missing embeddings, or troubleshooting import/version mismatches.
docs-from-code
Generates and updates README.md and API reference docs by reading your codebase's functions, routes, types, schemas, and architecture. Uses graphify to build a knowledge graph first, then writes accurate docs from it. Use when asked to write docs, generate a README, document an API, update stale docs, create an API…
api-to-example
Turns REST API documentation into a runnable curl, fetch, or code example with required headers, request body, and placeholders for secrets. Use when the user wants to generate a request from API docs, an endpoint, or a Swagger/OpenAPI spec — "give me a curl for this", "show a fetch example", "how do I call this API".
content-modelling
Design CMS content models — content types, fields, editorial workflows, governance rules, and COPE (Create Once, Publish Everywhere) patterns — for structured, multi-channel publishing. Use when the user asks to design a content model, define content types in a CMS, structure fields for editorial content, plan a…