CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

openfinance-bank-adapter

Technical guide for adding a new Open Finance bank integration adapter (e.g., Itaú, Banco Inter, Mercado Pago) in FinanceHub (.NET 10), implementing IBankConnector, OAuth2/mTLS authentication, rate limiting, and publishing TransactionIngested events via MassTransit Outbox.

Quality

75%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Passed

No findings from the security scan

Fix and improve this skill with Tessl

tessl review fix ./.agents/skills/openfinance-bank-adapter/SKILL.md
SKILL.md
Quality
Evals
Security

Quality

Content

63%Weight 40%Scale 1-5

Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.

A well-structured, project-specific implementation guide with a clear step sequence and a verification checklist, but it is not fully executable as written: placeholder class names, undefined methods (FetchTokenAsync, ToDomain), an inconsistent mapping extension, and complete absence of the promised MassTransit Outbox publishing code. Everything lives inline in SKILL.md with no reference files, which is acceptable but not ideally split for a guide of this size.

Suggestions

Replace the '<BankName>' template placeholders with one fully worked, copy-paste-ready example (e.g., Itau) plus a one-line note to substitute the bank name, so the code is valid C#.

Close the implementation gaps: define FetchTokenAsync, reconcile the ToDomain() vs ToIntegrationEvent() mapping call, and add the MassTransit Outbox publishing code that the description promises (the skill's headline event flow currently has no code).

Split bulk material into reference files — e.g., references/interface.md for the full IBankConnector API and DTO definitions, and references/auth-handler.md for the boilerplate DelegatingHandler — keeping SKILL.md as a lean overview with clearly signaled links.

DimensionReasoningScore

Conciseness

The body is dense with project-specific material (file paths, class names, config sections, framework-specific resilience settings) that Claude cannot know, and avoids explaining general concepts. It is not score 5 because of redundancy between Section 1's architecture rules ('Certificates: Client mTLS X.509 certificates are loaded via FinanceHub.Shared.Certificates', 'Precision: Monetary amounts...') and the later step sections that restate the same points, and the full 25-line interface listing could be trimmed to signatures.

4 / 5

Actionability

Concrete C# code appears in every step, but it is templated rather than executable: 'public sealed class <BankName>Options' and similar '<BankName>' placeholders are not valid C#, 'FetchTokenAsync' is invoked but never defined, Step 5 calls 't.ToDomain()' while Step 4 defines 'ToIntegrationEvent', and the headline capability from the description — publishing TransactionIngested via the MassTransit Outbox — has no code at all. This matches anchor 3 ('incomplete; pseudocode instead of executable code; missing key details') better than anchor 4, whose gaps would be minor.

3 / 5

Workflow Clarity

Steps 1–5 are clearly sequenced (options → auth handler → resilience pipeline → mapping → connector) and the 'Verification Checklist' section provides checkpoints ('Verify certificate thumbprint loading', 'Run dotnet build and dotnet test'). It is not score 5 because there are no feedback loops (no guidance on what to do when a check fails) and intermediate wiring (Program.cs DI registration, consumer/outbox setup) is absent from the sequence.

4 / 5

Progressive Disclosure

No bundle files exist (no references/, scripts/, or assets/), so all ~230 lines — including the full IBankConnector API listing, boilerplate auth handler code, and DTO scaffolding — live inline in SKILL.md. Section headers are clear, but the skill exceeds the 'under 50 lines' simple-skill exception and contains reference-style material that belongs in separate files, matching anchor 3 ('content that should be separate is inline') rather than anchor 4, whose example appropriately splits bulk content into referenced files.

3 / 5

Total

14

/

20

Passed

Description

75%Weight 40%Scale 1-5

Based on the skill's description, can an agent find and select it at the right time? Clear, specific descriptions lead to better discovery.

A dense, highly specific description that names concrete technologies, banks, and architectural components with comprehensive action coverage and minimal conflict risk. Its main weakness is the complete absence of a 'when to use' trigger clause, which caps completeness at 3 and leaves users without explicit invocation guidance.

Suggestions

Add an explicit trigger clause, e.g., 'Use when adding a new bank or fintech connector (e.g., Itaú, Banco Inter, Mercado Pago, Nubank) to FinanceHub, or when the user mentions Open Finance / Open Banking Brasil integrations.'

Include the synonym 'Open Banking' alongside 'Open Finance', since users commonly say the former when referring to Open Finance Brasil integrations.

Consider mentioning when NOT to use it (e.g., modifying an existing adapter vs. adding a new one) to sharpen trigger precision.

DimensionReasoningScore

Specificity

The description enumerates multiple concrete actions spanning the full implementation scope: 'adding a new Open Finance bank integration adapter', 'implementing IBankConnector, OAuth2/mTLS authentication, rate limiting, and publishing TransactionIngested events via MassTransit Outbox'. This matches the anchor for comprehensive coverage of specific concrete actions; it is not score 4 because coverage spans every major phase (scaffolding, interface, security, resilience, messaging) rather than leaving minor gaps.

5 / 5

Completeness

The 'what' is clear and detailed ('Technical guide for adding a new Open Finance bank integration adapter...'), but there is no 'Use when...' clause or equivalent explicit trigger guidance anywhere in the description. Per the judging guidelines, a missing explicit 'when' caps completeness at 3 even with a clear 'what'.

3 / 5

Trigger Term Quality

Strong natural keywords include 'bank integration adapter', concrete bank names users would actually say ('Itaú, Banco Inter, Mercado Pago'), plus 'OAuth2/mTLS', 'rate limiting', '.NET 10'. It falls short of anchor 5 because common synonyms and variations are missing — e.g., 'Open Banking' (the more colloquial name for Open Finance Brasil), 'new connector', or 'ingestion'.

4 / 5

Distinctiveness Conflict Risk

The description stakes out a clear niche with project-specific identifiers ('FinanceHub (.NET 10)', 'IBankConnector', 'TransactionIngested', named Brazilian banks) that no other plausible skill would share. It is not score 4 because the overlap risk with generic 'integration' or 'messaging' skills is minimal, not merely minor.

5 / 5

Total

17

/

20

Passed

Validation

100%

Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.

Validation — 16 / 16 Passed

Validation for skill structure

No warnings or errors.

Repository

JoseMD12/finance-hub

Path

.agents/skills/openfinance-bank-adapter/SKILL.md

Reviewed

Table of Contents

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.