Skip to main content
skill CX Codex

banking-expert — Claude Code skill: core banking and compliance

Gives the agent a reference on core banking, KYC/AML, payments and banking regulation. Useful when accounts, transfers or customer checks come up.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add personamanagmentlayer/pcl --skill banking-expert -a claude-code
Open on GitHub

What banking-expert does

The skill loads when a task mentions finance, core banking, regulations or payments. It covers account management, transaction processing, loans and risk systems, plus regulation blocks on Basel III/IV, KYC, AML, GDPR, PSD2 and Dodd-Frank.

Python examples show how the pieces fit. An Account class with deposit, withdraw and transfer keeps balances in Decimal and rolls the debit back if the credit fails. KYCService folds identity, address, sanctions and PEP checks into one result with a risk level. AMLMonitoring flags large amounts, bursts of transactions and transfers to high-risk countries, then files a suspicious activity report.

Payments get their own section: ACH with routing number validation and SWIFT MT103. The skill is limited to Read, Write and Edit, so it will not run any of that code — worth knowing if you expect it to execute tests. The 10000 threshold in the monitoring example is an illustration, not a limit for your system.

What it helps with

  • split account operations into deposit, withdrawal and transfer with rollback
  • combine identity, address, sanctions and PEP checks into one verification result
  • flag suspicious transactions and file a report
  • work out which Basel III/IV and PSD2 requirements apply to a task
  • map the flow of an ACH payment or a SWIFT wire

Example prompts for the agent

  • Help me design a transfer service between accounts with rollback on a failed credit
  • Which KYC checks are needed before opening an account? Combine them into one result
  • Explain how AML monitoring flags large and high-velocity transactions

How to install banking-expert

1Skills CLI (Vercel)

npx skills add personamanagmentlayer/pcl --skill banking-expert -a claude-code

2Manually: put the files in place

~/.claude/skills/banking-expert/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/banking-expert/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about banking-expert

How do I install banking-expert in Claude?

Run npx skills add personamanagmentlayer/pcl --skill banking-expert -a claude-code. The skill file lands at ~/.claude/skills/banking-expert/SKILL.md.

What does banking-expert do?

It gives the agent a reference on banking systems, core banking, regulations and payment technology, with Python examples for accounts, KYC/AML and payments.

Which tools can the skill use?

Only Read, Write and Edit. The agent will not run the example code, so you verify the calculations yourself.

Source text

SKILL.md · Apache-2.0
---
name: banking-expert
version: 1.1.0
description: >-
  Expert-level banking systems, core banking, regulations, and banking technology. Use when
  the user mentions finance, core banking, regulations, or payments, or when the task
  involves Banking Systems or Key Technologies.
category: professional
tags: [banking, finance, core-banking, regulations, payments]
allowed-tools:
  - Read
  - Write
  - Edit
---

# Banking Expert

Expert guidance for banking systems, core banking platforms, regulatory compliance, and banking technology.

## Core Concepts

### Banking Systems

- Core banking systems (CBS)
- Account management
- Transaction processing
- Payment systems (ACH, SWIFT, SEPA)
- Loan management
- Risk management systems

### Regulations

- Basel III/IV capital requirements
- Know Your Customer (KYC)
- Anti-Money Laundering (AML)
- GDPR for banking
- PSD2 (Payment Services Directive)
- Dodd-Frank Act

### Key Technologies

- Real-time payment processing
- Mobile banking
- Open banking APIs
- Digital wallets
- Blockchain in banking
- AI for fraud detection

## Account Management

```python
from decimal import Decimal
from datetime import datetime
from enum import Enum

class AccountType(Enum):
    CHECKING = "checking"
    SAVINGS = "savings"
    CREDIT = "credit"
    LOAN = "loan"

class Account:
    def __init__(self, account_number: str, account_type: AccountType,
                 customer_id: str, balance: Decimal = Decimal('0')):
        self.account_number = account_number
        self.type = account_type
        self.customer_id = customer_id
        self.balance = balance
        self.status = "ACTIVE"
        self.created_at = datetime.now()

    def deposit(self, amount: Decimal) -> dict:
        """Deposit funds with validation"""
        if amount <= 0:
            raise ValueError("Amount must be positive")

        self.balance += amount

        return {
            "transaction_id": self.generate_transaction_id(),
            "type": "DEPOSIT",
            "amount": amount,
            "balance": self.balance,
            "timestamp": datetime.now()
        }

    def withdraw(self, amount: Decimal) -> dict:
        """Withdraw funds with balance check"""
        if amount <= 0:
            raise ValueError("Amount must be positive")

        if self.balance < amount:
            raise ValueError("Insufficient funds")

        self.balance -= amount

        return {
            "transaction_id": self.generate_transaction_id(),
            "type": "WITHDRAWAL",
            "amount": amount,
            "balance": self.balance,
            "timestamp": datetime.now()
        }

    def transfer(self, to_account: 'Account', amount: Decimal) -> dict:
        """Transfer funds between accounts"""
        # Withdraw from source
        withdrawal = self.withdraw(amount)

        try:
            # Deposit to destination
            deposit = to_account.deposit(amount)

            return {
                "transaction_id": self.generate_transaction_id(),
                "type": "TRANSFER",
                "from_account": self.account_number,
                "to_account": to_account.account_number,
                "amount": amount,
                "timestamp": datetime.now()
            }
        except Exception as e:
            # Rollback on failure
            self.deposit(amount)
            raise e
```

## KYC/AML Compliance

```python
class KYCService:
    def verify_customer(self, customer_data: dict) -> dict:
        """Perform KYC verification"""
        verification_results = {
            "identity_verified": False,
            "address_verified": False,
            "sanctions_clear": False,
            "pep_check_clear": False,
            "risk_level": "HIGH"
        }

        # Identity verification
        verification_results["identity_verified"] = self.verify_identity(
            customer_data["id_document"]
        )

        # Address verification
        verification_results["address_verified"] = self.verify_address(
            customer_data["proof_of_address"]
        )

        # Sanctions screening
        verification_results["sanctions_clear"] = self.screen_sanctions(
            customer_data["name"],
            customer_data["date_of_birth"]
        )

        # PEP (Politically Exposed Person) check
        verification_results["pep_check_clear"] = self.check_pep(
            customer_data["name"]
        )

        # Calculate risk level
        verification_results["risk_level"] = self.calculate_risk_level(
            verification_results
        )

        return verification_results

class AMLMonitoring:
    def monitor_transaction(self, transaction: dict) -> dict:
        """Monitor transaction for suspicious activity"""
        flags = []

        # Large transaction
        if transaction["amount"] > 10000:
            flags.append("LARGE_TRANSACTION")

        # Rapid succession of transactions
        if self.check_velocity(transaction["account_id"]):
            flags.append("HIGH_VELOCITY")

        # Unusual pattern
        if self.check_pattern(transaction):
            flags.append("UNUSUAL_PATTERN")

        # International transfer to high-risk country
        if transaction.get("international") and \
           self.is_high_risk_country(transaction.get("destination")):
            flags.append("HIGH_RISK_COUNTRY")

        if flags:
            self.file_suspicious_activity_report(transaction, flags)

        return {
            "flagged": len(flags) > 0,
            "flags": flags,
            "risk_score": self.calculate_aml_risk_score(flags)
        }
```

## Payment Processing

```python
class PaymentProcessor:
    def process_ach_payment(self, payment: dict) -> dict:
        """Process ACH payment"""
        # Validate routing and account numbers
        if not self.validate_routing_number(payment["routing_number"]):
            raise ValueError("Invalid routing number")

        # Create ACH file
        ach_batch = self.create_ach_batch([payment])

        # Submit to ACH network
        submission_result = self.submit_to_ach_network(ach_batch)

        return {
            "payment_id": payment["id"],
            "status": "PENDING",
            "expected_settlement": self.calculate_settlement_date(),
            "trace_number": submission_result["trace_number"]
        }

    def process_wire_transfer(self, wire: dict) -> dict:
        """Process SWIFT wire transfer"""
        # Generate SWIFT message
        swift_message = self.create_swift_mt103(wire)

        # Send via SWIFT network
        result = self.send_swift_message(swift_message)

        return {
            "wire_id": wire["id"],
            "status": "SENT",
            "swift_reference": result["reference"],
            "fee": self.calculate_wire_fee(wire["amount"])
        }
```

## Interest Calculation

```python
class InterestCalculator:
    @staticmethod
    def calculate_simple_interest(principal: Decimal, rate: Decimal,
                                  days: int) -> Decimal:
        """Calculate simple interest"""
        return principal * rate * days / 365

    @staticmethod
    def calculate_compound_interest(principal: Decimal, annual_rate: Decimal,
                                   years: int, compounds_per_year: int = 12) -> Decimal:
        """Calculate compound interest"""
        rate_per_period = annual_rate / compounds_per_year
        num_periods = years * compounds_per_year

        return principal * ((1 + rate_per_period) ** num_periods - 1)

    @staticmethod
    def calculate_loan_payment(principal: Decimal, annual_rate: Decimal,
                              months: int) -> Decimal:
        """Calculate monthly loan payment"""
        monthly_rate = annual_rate / 12

        payment = principal * (monthly_rate * (1 + monthly_rate) ** months) / \
                  ((1 + monthly_rate) ** months - 1)

        return payment.quantize(Decimal('0.01'))
```

## Best Practices

- Implement two-factor authentication
- Use encryption for sensitive data (at rest and in transit)
- Maintain complete audit trails
- Implement real-time fraud detection
- Ensure ACID compliance for transactions
- Regular security audits and penetration testing
- Implement rate limiting on APIs
- Use tokenization for sensitive data
- Maintain disaster recovery and business continuity plans
- Regular regulatory compliance reviews

## Anti-Patterns

❌ Storing sensitive data unencrypted
❌ No transaction logging/audit trail
❌ Synchronous payment processing
❌ Ignoring regulatory compliance
❌ No fraud detection mechanisms
❌ Using floats for money calculations
❌ No backup and recovery procedures

## Resources

- Basel Committee: https://www.bis.org/bcbs/
- SWIFT Standards: https://www.swift.com/standards
- PSD2: https://ec.europa.eu/info/law/payment-services-psd-2
- FFIEC: https://www.ffiec.gov/

© personamanagmentlayer · Apache-2.0 · personamanagmentlayer/pcl

Similar skills

All skills for Finance and business →

From the same set15

finance-expert A skill for any task that touches an amount of money: balances, refunds, payouts, reconciliation, reporting. It carries a money model and double-entry rules. CX Codex +1 6,400installs telecommunications-expert A skill that gives your agent telecom expertise: OSS/BSS, 5G, SDN/NFV, standards and charging. Useful when you design a system or work out billing logic. CX Codex +1 1,900installs trading-expert Equips your agent to build algorithmic trading logic, write Python strategies, and run backtests. Useful when designing execution algorithms or risk metrics. CX Codex +1 963installs insurance-expert Gives your agent insurance domain knowledge: underwriting, claims processing, actuarial analysis, risk assessment and fraud detection. CX Codex +1 714installs data-science-expert A skill for analytics, statistics and visualization that kicks in when a task mentions pandas, NumPy or exploratory data analysis. CX Codex +1 573installs gcp-expert A skill that hands your agent working GCP examples: Cloud Functions, BigQuery, Firestore, Pub/Sub and gcloud commands. Useful when the code targets Google Cloud. CX Codex +1 547installs argocd-expert A skill that turns your agent into an ArgoCD operator: GitOps deploys, app sync, AppProject and ApplicationSet. Useful when your deployment lives in Git. CX Codex +1 509installs automotive-expert A skill that gives your agent automotive domain knowledge: connected vehicles, telemetry, ADAS, OBD-II diagnostics. Useful when the project touches fleet software or in-vehicle systems. CX Codex +1 467installs

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor