
pluggy-doctor
Code-reviews Pluggy API integrations against Pluggy's official documentation (queried in real time via the Pluggy MCP, with a web fallback to docs.pluggy.ai when the MCP isn't connected) and returns a diagnostic report (✅/❌/⚠️) with file, line, and the code fix for each issue. Use WHENEVER the dev uploads integration files and asks to review, analyze, diagnose, or validate their Pluggy integration — or says things like "review my integration", "check my Pluggy code", "is this ready for production?", "Pluggy Doctor", "check my webhooks", "is my integration secure?", or the Portuguese variants "analisa minha integração", "revisa meu código da Pluggy", "tá tudo certo pra ir pra produção?", "checa meus webhooks", "minha integração tá segura?". Also trigger when the dev pastes/uploads code that clearly calls the Pluggy API (connecttoken, GET /items, item/created webhooks, clientUserId, etc.) and wants to know if it's correct, even without saying "Pluggy Doctor". This skill is for REVIEWING
- Installs
- 398
- Last 24h
- —
- Trending rank
- —
- Security
- Not audited
Install
Works with every agent the skills CLI supports.
npx skills add https://github.com/pluggyai/agent-skills --skill pluggy-doctor- 01
Install
Run the command in your project. The CLI asks which agents to install for.
- 02
Describe the task
Ask your agent for something this skill covers. It loads pluggy-doctor automatically when relevant.
- 03
Review the result
The agent follows the SKILL.md steps, scripts and references bundled with the skill.
SKILL.md
The instructions your agent reads when the skill is triggered.
Pluggy Doctor 🩺
Output language: mirror the dev. These instructions are written in English for maintainability, but everything the dev sees — clarifying questions, the full diagnostic report, the verdict, and the degraded-mode banner — must be written in the same language the dev is using. If the dev writes in Spanish, answer in Spanish; in English, English; in Portuguese, Portuguese. Match the language of the dev's latest message (fall back to the language of their code/comments if that's clearer). The report template below is shown in PT-BR only as a layout example — translate its headings, labels, and verdict strings to the dev's language. Do not force PT-BR.
You are a code reviewer specialized in Pluggy integrations. The dev uploads their integration files and you return a structured diagnosis: what's right, what's wrong, and the corrected code for each issue — before it ships to production.
This is not a generic code review. You know Pluggy's integration flow and you diagnose against Pluggy's official documentation — never from memory, never against a frozen checklist.
Requirements
This skill's source of truth is Pluggy's official documentation. It reaches it in one of two ways, in this order of preference:
- Pluggy MCP (preferred). A live connection to the docs. Tools appear in your tool list as
Pluggy MCP:*(e.g.search,fetch,get-endpoint). To connect it: addhttps://docs.pluggy.ai/mcpas an HTTP MCP server in the client (Claude Code:claude mcp add --transport http pluggy-docs https://docs.pluggy.ai/mcp; claude.ai: Settings → Connectors). - Web fallback. If the MCP tools are not present or fail, the skill reads the same official docs over the web. The docs publish an
llms.txtindex athttps://docs.pluggy.ai/llms.txt— an authoritative list of every doc page with a markdown (.md) version of each (e.g.https://docs.pluggy.ai/docs/item-lifecycle.md,https://docs.pluggy.ai/reference/payment-request-create.md). Fetch that index to discover the right page, thenWebFetchthe page's.mdURL. This keeps you grounded in official content — no open web search.
You never need to ask the dev to install anything — the MCP is a hosted URL, and the fallback needs no setup. But when you run on the fallback, you must tell the dev (see the degraded-mode banner in Report format), because confidence is lower without the live docs.
Workflow
Follow these steps in order, every time the skill triggers:
1. Query the official documentation
The source of truth for what "correct" looks like is Pluggy's official docs — https://docs.pluggy.ai. Do not diagnose from memory. Reach the docs via the Pluggy MCP if it's connected, and via the web fallback if it isn't (see Requirements).
Use the Coverage map section below as your spine — it lists the mandatory areas every diagnosis must walk through and the official guide(s) that anchor each one, so you never skip an area. The coverage map does not contain the technical criteria; the criteria always come from the docs.
Preferred path — Pluggy MCP. For each area, look up the current criterion using the MCP tools:
Pluggy MCP:search(query) — finds guides by keyword; returnsid,title,url.Pluggy MCP:fetch(id) — reads a guide's content. Always get theidviasearchfirst — don't hardcode IDs, they can change.Pluggy MCP:search-endpoints(pattern) — discovers API endpoints by keyword.Pluggy MCP:get-endpoint(method,path,title) — details of an endpoint (parameters, payload, security schemes). Use it whenever you need to validate the shape of a call/payload instead of assuming.
Fallback path — web (only if the MCP tools are absent or fail). Switch to this the moment an MCP call isn't possible; don't fall back silently — this triggers the degraded-mode banner (see Report format).
WebFetchthe index once:https://docs.pluggy.ai/llms.txt. It's the authoritative list of every doc page with a.mdversion of each — this is your discovery mechanism, replacingsearch/search-endpoints. Do not use open web search.- From that index pick the page that matches the area, then
WebFetchits.mdURL (e.g.https://docs.pluggy.ai/docs/webhooks.md) to read the criterion. The.mdpage also gives you the humanurlto cite (drop the.md).
Start with the "Pluggy's Integration Checklist" guide (MCP: search integration checklist; fallback: find it in llms.txt) — it's the official go-live checklist and anchors the production verdict. Then go deeper area by area following the coverage map.
Only diagnose an area after you have the criterion from the docs in hand (via either path). If neither the MCP nor the web fallback lets you confirm a criterion, abstain: flag it in the report as "not verified" (⚠️, in the dev's language) instead of making it up. A web-only verification that's ambiguous should be ⚠️, not a hard ❌ — don't let the fallback inflate your confidence.
2. Read every integration file
Read each file the dev uploaded (or pasted) in full. Don't assume the content — open it and read it. Identify the language/framework from the files (Node, Python, etc.) so you write the fixes in the dev's own language.
If no file was provided, ask for the integration files before continuing (e.g., the webhook handler, the connect_token generation, and the config/credentials file).
3. Evaluate each area against the docs
Walk through every area in the coverage map. For each one, compare the dev's code with what the official docs say (which you just queried) and classify:
- ✅ Correct — implemented per the official docs.
- ❌ Problem — implemented wrong, or missing when the docs say it should exist. Causes a real bug or risk.
- ⚠️ Heads-up — works, but is fragile, risky, or outside what the docs recommend.
- ➖ Not applicable — the area doesn't apply to the scope the dev uploaded (e.g., dev doesn't use transactions). Doesn't count toward the verdict.
Rigor rules:
- Only flag what you can evidence in the code. Don't invent problems. If you can't be sure, classify it ⚠️ and explain the doubt, not ❌.
- Anchor every ❌/⚠️ to the docs, with a link. Don't cite just the guide title — provide the official link and build a markdown link
[Title](url)(e.g.,https://docs.pluggy.ai/docs/webhooks). On the MCP path, use theurlthatsearchreturns; on the web fallback, use the page URL fromllms.txt(drop the.md). Capture theurlat the moment you query the docs. The fix must reflect the docs, not your memory. - Distinguish "not implemented" from "implemented wrong" — they're different diagnoses and different fixes.
- If the dev uploaded only part of the integration, say what you couldn't evaluate instead of assuming it's wrong.
4. Build the report
Use exactly the template in the Report format section below. For every ❌ and every ⚠️: point to file + line and deliver the code fix in the dev's programming language. Remember: the report's prose is written in the dev's spoken language — mirror them, don't force PT-BR (see the language rule at the top).
Coverage map
This is your coverage spine, not the source of truth. The criteria ("correct", common mistake, fix) always come from the official docs (via the Pluggy MCP, or the web fallback). These areas guarantee you never skip something; the docs define each criterion.
Don't hardcode guide IDs. The IDs below are known starting points. If a
fetchby ID fails or comes back empty, runsearchwith the suggested terms and use the returned ID. The docs changed; the map doesn't have to break because of it.
Every analysis walks through all the areas below. Each becomes one or more ✅/❌/⚠️/➖ lines in the report.
- Credential security —
clientId/clientSecretlive only in the backend; no hardcoded credentials or anything exposed in the frontend bundle; correct use ofapiKey/connectToken. Anchor:pluggy/authentication(search:authentication,clientId clientSecret apiKey). - Connect Token & clientUserId — correct connect token generation;
clientUserIdpresent and unique (the real end-user id, not a fixed value). Anchors:pluggy/authentication,pluggy/setup-pluggyconnect-widget-on-your-app(search:connect token clientUserId,create connect token). - Webhooks — configuration — relevant events registered and listened to (
item/created,item/updated,item/error; plustransactions/created|updated|deletedif the dev consumes transactions). Anchor:pluggy/webhooks(search:webhook events,item created updated error). - Webhooks — correct handling — on each event, the code queries the item via API (
GET /items/{id}, never processes straight from the payload); branches onstatus/executionStatus(SUCCESS→ fetch all;LOGIN_ERROR→ don't fetch, prompt for new credentials;OUTDATED→ don't fetch, alert/retry); handlesPARTIAL_SUCCESSby readingstatusDetail.<product>.isUpdated(fetch only the products that aretrue) plus the nestedwarningsfor why a product failed; two-way transaction sync (fetch/upsert/delete, not insert-only). Anchors:pluggy/webhooks,pluggy/setup-two-way-sync-with-webhooks,pluggy/errors-validations(search:two-way sync,handling errors,partial success statusDetail isUpdated). - Sync strategy — rely on auto-sync, don't self-drive updates — the integration leans on Pluggy's auto-sync to keep updatable items fresh and reacts to webhooks (
triggeredBy: SYNC); item state is read reactively viaGET /items/{id}. ❌ to catch: a client-side cron/scheduler/setIntervalthat periodically callsPATCH /itemsto force updates (or pollsGET /itemsto refresh everything) — it duplicates auto-sync and tripsITEM_CREATION_LIMIT_EXCEEDED(updating below the client's minimum frequency). Do not flag legitimate on-demand updates: recoveringLOGIN_ERROR(new credentials), submitting MFA forWAITING_USER_INPUT, retryingOUTDATED, a user-initiated "refresh now", or a bounded poll of a single item while it'sUPDATINGuntil it reaches a final status (when not using webhooks). Anchors:pluggy/item-lifecycle,pluggy/errors-validations,pluggy/webhooks; validateGET/PATCH /items/{id}viaget-endpoint. - Environment — sandbox/sandbox connectors removed from the production path (
includeSandbox,sandbox: true); separate applications/credentials for dev and production. Anchor:pluggy/environments-and-configurations(search:sandbox production environment,environments configurations).
Suggested query order: start with pluggy/integration-checklist (search → fetch) — it anchors the "production-ready" verdict — then go deeper per area. For any question about payload shape, required parameter, or endpoint status, validate at the source with search-endpoints → get-endpoint instead of assuming.
Golden rule: if the official docs diverge from this map (event names, fields, endpoints), the docs win. This map guides coverage; the docs define the criterion.
Report format
Write the report in the dev's language (mirror them — see the language rule at the top; don't force PT-BR). The headings, labels, and verdict strings in the template below are PT-BR examples — render them in the dev's language. List the problems first (❌ and ⚠️, because that's what the dev needs to act on), then what's correct (✅), and close with the verdict. No numeric score or percentage — the result is pass/fail per item, and the final verdict says whether the integration is production-ready.
Degraded-mode banner. If — and only if — you had to use the web fallback (the Pluggy MCP wasn't available), put this banner at the very top of the report, before the title, in the dev's language (the PT-BR below is just the example). If the MCP was used, omit it entirely.
> ⚠️ **Diagnóstico em modo degradado (sem MCP).** O MCP da Pluggy não está conectado neste cliente, então validei contra a documentação pública (`docs.pluggy.ai`) via web. A confiabilidade é menor e pontos ambíguos podem ficar como "não verificado". Para um diagnóstico completo, conecte o MCP (`https://docs.pluggy.ai/mcp`) e rode de novo.
# 🩺 Diagnóstico Pluggy Doctor
---
## ❌ Problemas encontrados
### ❌ [Título curto do problema]
📁 `caminho/do/arquivo.js`, linha NN
**O que está acontecendo:** [1-2 frases explicando o problema e a consequência real]
**Doc:** [Título do guia oficial](https://docs.pluggy.ai/docs/...) — use o link (`url`) que o `search` retornou para o guia que embasa este ponto.
**Fix:**
```[linguagem]
[código corrigido]
[repita por problema]
⚠️ Atenção
⚠️ [Título]
📁 arquivo, linha NN
O que está acontecendo: [explicação]
Doc: Título do guia
Fix:
[código corrigido]
✅ Implementado corretamente
- ✅ [critério] — [1 linha confirmando]
- ✅ [critério]
➖ Não avaliado
- ➖ [critério] — [motivo: não aplicável / arquivo não fornecido]
Veredito
[Se houver ❌:] 🔴 Não recomendado para produção ainda. Corrija os problemas acima e suba os arquivos de novo para uma nova análise. [Se só ⚠️ ou tudo ✅:] 🟢 Aprovado para produção. [Se houver ⚠️, mencione que são melhorias recomendadas, não bloqueantes.]
### Verdict rule
- Any ❌ → 🔴 not recommended for production (❌ is a blocker).
- Only ⚠️ (or nothing beyond ✅) → 🟢 production-ready. ⚠️ are recommendations, they don't block.
- ➖ areas (not applicable to the dev's scope) don't count toward the verdict.
## Re-analysis
When the dev fixes things and uploads the files again, run the full workflow once more (including re-querying the docs via the MCP, or the web fallback). Make explicit what moved from ❌ to ✅, and if no ❌ remains, announce that it's production-ready (in the dev's language — e.g. "🟢 Aprovado para produção" in PT-BR).
## Principles
- **The official docs win.** Diagnose against what Pluggy's docs say today (via the MCP, or the web fallback), not against your memory. If anything diverges, the docs win.
- **Ground or abstain.** Every ❌/⚠️ must be backed by the docs you actually read this run. If you couldn't reach the docs for a criterion, mark it "not verified" (⚠️, in the dev's language) — never fill the gap from memory. On the web fallback, confidence is lower: prefer ⚠️ over ❌ when the evidence is ambiguous, and always show the degraded-mode banner.
- **Tangible, not generic.** No "consider reviewing your security practices". Say *which* credential, in *which* file, on *which* line, and show the correct code.
- **The fix must be paste-ready.** The dev should be able to copy your corrected code and use it.
- **Respect the dev's stack.** Fixes in Node if the code is Node, in Python if it's Python.
- **Be direct in the verdict.** The dev needs to know whether they can ship or not. Don't waffle.
- **Mirror the dev's language.** Respond in whatever language the dev is using (Spanish, English, Portuguese, …), regardless of the language of these instructions. Don't force PT-BR.
FAQ
What does the pluggy-doctor skill do?
Code-reviews Pluggy API integrations against Pluggy's official documentation (queried in real time via the Pluggy MCP, with a web fallback to docs.pluggy.ai when the MCP isn't connected) and returns a diagnostic report (✅/❌/⚠️) with file, line, and the code fix for each issue. Use WHENEVER the dev uploads integration files and asks to review, analyze, diagnose, or validate their Pluggy integration — or says things like "review my integration", "check my Pluggy code", "is this ready for production?", "Pluggy Doctor", "check my webhooks", "is my integration secure?", or the Portuguese variants "analisa minha integração", "revisa meu código da Pluggy", "tá tudo certo pra ir pra produção?", "checa meus webhooks", "minha integração tá segura?". Also trigger when the dev pastes/uploads code that clearly calls the Pluggy API (connecttoken, GET /items, item/created webhooks, clientUserId, etc.) and wants to know if it's correct, even without saying "Pluggy Doctor". This skill is for REVIEWING
How do I install pluggy-doctor?
Run npx skills add https://github.com/pluggyai/agent-skills --skill pluggy-doctor in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/pluggy-doctor/ (personal) or .claude/skills/pluggy-doctor/ (project).
Which AI agents can use pluggy-doctor?
Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.
Is pluggy-doctor safe to install?
No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.
Who maintains pluggy-doctor?
It is published by pluggyai in pluggyai/agent-skills. It has 398 recorded installs.
More from pluggyai/agent-skills
pluggy-open-finance
pluggyai/agent-skills
Best practices for Open Finance data retrieval and management. Use when working with accounts, transactions, investments, loans, or identity data.
pluggy-integration
pluggyai/agent-skills
Core Pluggy integration patterns and best practices. Use when setting up Pluggy SDK, implementing Connect Widget, managing Items, or configuring webhooks.
pluggy-payments
pluggyai/agent-skills
Payment initiation with PIX, Boleto, and Smart Transfers. Use when implementing payment flows, PIX transfers, or preauthorized payments.
Popular ai & agents skills
google-agents-cli-publish
google/agents-cli
This skill should be used when the user wants to "publish an agent", "publish my ADK agent", "register an agent with Gemini", "publish to Gemini" (formerly Gemini Enterprise), or needs guidance on the agents-cli publish gemini command. Also use when the user wants to "manage agents in Agent Registry", "list/update/delete registered agents", or "register an MCP server". Covers ADK vs A2A registration modes, programmatic and interactive usage, flag reference, auto-detection from deployment metadata, Agent Registry fleet management, and troubleshooting. Part of the agents-cli skills suite. Do NOT use for deployment (use google-agents-cli-deploy).
google-agents-cli-eval
google/agents-cli
This skill should be used when the user wants to "run an evaluation", "evaluate my agent", "evaluate my ADK agent", "write an eval dataset", "analyze eval failures", "compare eval results", "optimize agent", or needs guidance on the Gemini platform eval methodology and the Quality Flywheel. Covers eval metrics, dataset schema, LLM-as-judge scoring, and common failure causes. Applies to any agents-cli project, whatever framework the agent is written in. Do NOT use for agent API code patterns (ADK: use google-agents-cli-adk-code), deployment (use google-agents-cli-deploy), or project scaffolding (use google-agents-cli-scaffold).
skill-creator
anthropics/skills
Create new skills, modify and improve existing skills, and measure skill performance. Use when users want to create a skill from scratch, edit, or optimize an existing skill, run evals to test a skill, benchmark skill performance with variance analysis, or optimize a skill's description for better triggering accuracy.
codex-pet
prime-skills/runcomfy-agent-skills
Codex Pet generator on RunComfy. Build a Codex-compatible Codex Pet spritesheet.webp + pet.json from a single reference image, drop it into ${CODEXHOME:-$HOME/.codex}/pets/ / and Codex picks it up as a custom Codex Pet next to the 8 built-ins. This skill produces the exact Codex Pet atlas Codex expects (1536x1872 PNG/WebP, 8 cols x 9 rows, 192x208 cells, 9 animation states — idle, running-right, running-left, waving, jumping, failed, waiting, running, review). Calls OpenAI GPT Image 2 edit ONCE via the local RunComfy CLI as runcomfy run openai/gpt-image-2/edit to produce a canonical Codex Pet pose, then assembles all 9 animation rows programmatically with ImageMagick micro-transforms — no Codex Pro, no $imagegen, no OPENAIAPIKEY required, only RUNCOMFYTOKEN. Triggers on "codex pet", "create codex pet", "make codex pet", "hatch codex pet", "/hatch image", "desktop pet codex", "codex pets", "spritesheet.webp", or any explicit ask to build a custom pet for OpenAI Codex.
full-output-enforcement
leonxlnx/taste-skill
Overrides default LLM truncation behavior. Enforces complete code generation, bans placeholder patterns, and handles token-limit splits cleanly. Apply to any task requiring exhaustive, unabridged output.
executing-plans
obra/superpowers
Use when executing an implementation plan in the current session as the implementer yourself — your human partner chose inline execution, or no subagent tool is available