Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
personamanagmentlayer avatar

Banking Expert

  • 761 installs
  • 41 repo stars
  • Updated March 30, 2026
  • personamanagmentlayer/pcl

banking-expert is a Claude Code skill at version 1.0.0 that provides expert guidance for implementing banking features—accounts, transfers, KYC, ledgers, and regulatory constraints—in fintech and enterprise finance softw

About

banking-expert is a Backend & APIs skill at version 1.0.0 from personamanagmentlayer/pcl that delivers domain-correct guidance for banking systems, core banking platforms, and regulatory compliance. The skill covers account management, transaction processing, payment systems including ACH, SWIFT, and SEPA, loan management, and risk systems alongside Basel III/IV, KYC, and AML requirements. Developers reach for banking-expert when building fintech APIs, ledger services, or enterprise finance modules where incorrect regulatory or payment-rail assumptions create costly rework. It uses Read, Write, and Edit tools to apply banking patterns directly into codebases during active backend feature work.

  • Banking domain vocabulary
  • KYC and compliance awareness
  • Ledger and transfer patterns
  • Regulatory constraint guidance
  • Fintech integration best practices

Banking Expert by the numbers

  • 761 all-time installs (skills.sh)
  • +4 installs in the week ending Aug 4, 2026 (Skillselion tracking)
  • Ranked #186 of 1,106 Finance & Trading skills by installs in the Skillselion catalog
  • Data as of Aug 4, 2026 (Skillselion catalog sync)
npx skills add https://github.com/personamanagmentlayer/pcl --skill banking-expert

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs761
repo stars41
Last updatedMarch 30, 2026
Repositorypersonamanagmentlayer/pcl

How do you implement core banking features correctly?

Implement banking features—accounts, transfers, KYC, ledgers, and regulatory constraints—with domain-correct guidance while building fintech or enterprise finance software.

Who is it for?

Backend engineers building fintech APIs, core banking modules, or enterprise finance systems who need regulatory and payment-rail accuracy.

Skip if: Developers building non-financial apps or seeking legal advice instead of software implementation patterns.

When should I use this skill?

User is implementing banking accounts, transfers, KYC, ledgers, payment rails, or regulatory compliance in fintech or enterprise finance code.

What you get

Banking domain models, ledger schemas, KYC/AML flows, payment rail integrations, and compliance-aware API designs

  • Banking API designs
  • Ledger schemas
  • KYC/AML flow implementations

By the numbers

  • Skill version 1.0.0
  • Covers ACH, SWIFT, and SEPA payment systems

Files

SKILL.mdMarkdownGitHub ↗

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

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

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

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

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/

Related skills

FAQ

What banking domains does banking-expert cover?

banking-expert version 1.0.0 covers core banking systems, account management, transaction processing, ACH/SWIFT/SEPA payment rails, loan management, risk systems, and regulations including Basel III/IV, KYC, and AML.

Is banking-expert legal advice?

banking-expert provides software implementation guidance for banking features and regulatory constraints in code. Developers still need qualified legal and compliance review for production financial systems.

Finance & Tradingfinancepayments

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.