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-iff-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-iff-api)<a href="https://agentmods.dev/skills/pedroiff0/awesome-skills/suap-iff-api"><img src="https://agentmods.dev/badge/skills/pedroiff0/awesome-skills/suap-iff-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-iff-api"><img src="https://agentmods.dev/badge/skills/pedroiff0/awesome-skills/suap-iff-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.00102 | $0.01656 |
| Opus 5 | $0.00051 | $0.00828 |
| Sonnet 5 | $0.00020 | $0.00331 |
| Haiku 4.5 | $0.00010 | $0.00166 |
Grade A, and why
suap-iff-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 9d 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 "https://suap.iff.edu.br/api/v2/autenticacao/token/" \ How it starts
The opening of the file, as written. The whole thing — 98 lines — stays where its author put it; the contents beside it link to each section on GitHub.
SUAP IFF API (v2 / django-ninja)
When to use
- User has a SUAP IFF matricula + senha and wants data programmatically (boletim, períodos, dados do aluno, calendário).
- User references
suap.iff.edu.br/api/....
Key facts / pitfalls (learned the hard way)
- The SUAP instance is
https://suap.iff.edu.br— NOTsuap.ifrn.edu.br. They are different instances with different data. The IFRN docs/swagger describe the SAME django-ninja API shape, but the user's data lives on the IFF instance. - Real API v2 endpoints are under
/api/ensino/...(django-ninja), NOT/api/v2/edu/.... The/api/v2/...edu paths mostly 404. - The WAF blocks requests with no
User-Agent→ returns 403 Forbidden (nginx). ALWAYS send-H "User-Agent: Mozilla/5.0". - The auth endpoint does NOT use Basic Auth. Send
username+passwordin the JSON body. (Sending Basic Auth or auser_tokenbody first yields 422 "Field required".)
Step 1 — Get the token
curl -s -X POST "https://suap.iff.edu.br/api/v2/autenticacao/token/" \
-H "User-Agent: Mozilla/5.0" \
-H "Content-Type: application/json" \
-d '{"username": "<MATRICULA>", "password": "<SENHA>"}'
Returns HTTP 200 with:
{"username": "<MAT>", "refresh": "<JWT>", "access": "<JWT>"}
Save it (e.g. /tmp/suap_token.json). The access JWT is what you send as Bearer.
Step 2 — Use the token
Authorization: Bearer <access>
Endpoints that WORK for a regular student profile (tested, real data)
| Method | Path | Result |
|---|---|---|
| GET | /api/ensino/meus-periodos-letivos/ |
200, {"results":[{"ano_letivo":2026,"periodo_letivo":1}, ...], "count":N} |
| GET | /api/ensino/aluno-matriculado/?matricula=<MAT> |
200, nome, matricula, curso, campus, periodo_atual, nascimento, cpf, foto_base64 |
| GET | /api/ensino/meu-boletim/{ano_letivo}/{periodo_letivo}/ |
200 but count:0 when no grades are posted (matches the empty UI) |
Endpoints that do NOT return data for a regular student (tested)
| Path | Result | Note |
|---|---|---|
/api/ensino/meu-calendario-academico/{ano}/{periodo}/ |
404 on EVERY period | Not exposed for this profile — NOT a param error (schema wants integer ano + integer periodo_letivo) |
/api/ensino/meus-diarios/{ano}/{periodo}/ |
404 | Not exposed |
/api/ensino/meus-diarios-ead/ |
401 Unauthorized | Needs a different scope (OAuth2TokenAuth/TrustedAppAuth) |
/api/ensino/meus-dados-aluno/ |
500 | Server bug on the IFF instance (not auth) |
/api/ensino/meu-boletim/... |
200 count:0 |
Empty when UI is empty (confirmed by user) |
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.
- 9d ago First seen · 98 lines · 102 tokens per session scan A b27964ba7eb0
suap-iff-api is a skill published in the GitHub repository pedroiff0/awesome-skills (1 stars, last pushed 2d ago), licensed MIT. It adds 102 tokens to every session and 1,656 once invoked, about $0.0005 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-08-31.
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.
2d-materials-research
Use when researching 2D materials.
academic-conference-planning
Use when planning academic conferences.
2d-materials-best-practices
Use when applying 2d materials best practices.
2d-materials-fundamentals
Use when applying 2d materials fundamentals.