skills/codex/core-banking-integration/SKILL.md
<!-- AUTO-GENERATED by export-skills.py — DO NOT EDIT --> --- name: core-banking-integration description: Core banking system integration patterns for AI agents connecting to Temenos Transact, Thought Machine Vault, Mambu, and Finastra. Use when building agents that interact with core banking APIs for account management, payments, lending, and customer data. --- > **Platform Note:** This skill was designed for multi-agent execution. In Codex, treat sub-agent instructions as sequential steps to
npx skillsauth add frank-luongt/faos-skills-marketplace skills/codex/core-banking-integrationInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Platform Note: This skill was designed for multi-agent execution. In Codex, treat sub-agent instructions as sequential steps to complete thoroughly within a single agent context.
Connect AI agents to core banking platforms (Temenos Transact, Thought Machine Vault, Mambu, Finastra) for account management, payments, lending, and customer data access.
| Platform | Architecture | API Style | Strength | |---|---|---|---| | Temenos Transact | Monolithic/modular | REST + proprietary | Largest install base (3,000+ banks) | | Thought Machine Vault | Cloud-native, event-driven | gRPC + REST | Smart contracts for product config | | Mambu | Cloud-native SaaS | REST (composable) | Fastest time-to-market | | Finastra | Modular (FusionFabric) | REST (Open API) | Broadest product suite |
import requests
from typing import Optional
class TemenosClient:
def __init__(self, base_url: str, token: str):
self.base_url = base_url.rstrip("/")
self.headers = {
"Authorization": f"Bearer {token}",
"Content-Type": "application/json",
}
def get_account(self, account_id: str) -> dict:
"""Get account details from Temenos Transact."""
resp = requests.get(
f"{self.base_url}/api/v1/holdings/accounts/{account_id}",
headers=self.headers,
)
resp.raise_for_status()
return resp.json()
def get_transactions(self, account_id: str, from_date: str, to_date: str) -> list[dict]:
"""Get account transactions for a date range."""
resp = requests.get(
f"{self.base_url}/api/v1/holdings/accounts/{account_id}/transactions",
headers=self.headers,
params={"fromDate": from_date, "toDate": to_date},
)
resp.raise_for_status()
return resp.json().get("body", [])
def get_customer(self, customer_id: str) -> dict:
"""Get customer profile."""
resp = requests.get(
f"{self.base_url}/api/v1/party/customers/{customer_id}",
headers=self.headers,
)
resp.raise_for_status()
return resp.json()
import requests
class VaultClient:
def __init__(self, base_url: str, token: str):
self.base_url = base_url.rstrip("/")
self.headers = {
"X-Auth-Token": token,
"Content-Type": "application/json",
}
def get_account(self, account_id: str) -> dict:
"""Get account from Vault core."""
resp = requests.get(
f"{self.base_url}/v1/accounts/{account_id}",
headers=self.headers,
)
resp.raise_for_status()
return resp.json()
def get_balances(self, account_id: str) -> dict:
"""Get live account balances (Vault computes from postings)."""
resp = requests.get(
f"{self.base_url}/v1/balances/live",
headers=self.headers,
params={"account_ids": account_id},
)
resp.raise_for_status()
return resp.json()
def create_posting(self, debit_account: str, credit_account: str, amount: str, denomination: str) -> dict:
"""Create a posting instruction batch (payment/transfer)."""
payload = {
"posting_instruction_batch": {
"posting_instructions": [{
"custom_instruction": {
"postings": [
{"credit": False, "amount": amount, "denomination": denomination, "account_id": debit_account},
{"credit": True, "amount": amount, "denomination": denomination, "account_id": credit_account},
]
}
}]
}
}
resp = requests.post(
f"{self.base_url}/v1/posting-instruction-batches:asyncCreate",
headers=self.headers,
json=payload,
)
resp.raise_for_status()
return resp.json()
import requests
class MambuClient:
def __init__(self, base_url: str, api_key: str):
self.base_url = base_url.rstrip("/")
self.headers = {
"apiKey": api_key,
"Accept": "application/vnd.mambu.v2+json",
"Content-Type": "application/json",
}
def get_client(self, client_id: str) -> dict:
"""Get client (customer) details."""
resp = requests.get(f"{self.base_url}/api/clients/{client_id}", headers=self.headers)
resp.raise_for_status()
return resp.json()
def get_deposit_account(self, account_id: str) -> dict:
"""Get deposit account with balance."""
resp = requests.get(f"{self.base_url}/api/deposits/{account_id}", headers=self.headers)
resp.raise_for_status()
return resp.json()
def get_loan_account(self, loan_id: str) -> dict:
"""Get loan account with schedule."""
resp = requests.get(f"{self.base_url}/api/loans/{loan_id}", headers=self.headers)
resp.raise_for_status()
return resp.json()
def search_transactions(self, account_id: str, from_date: str, to_date: str) -> list[dict]:
"""Search transactions with filter criteria."""
payload = {
"filterCriteria": [
{"field": "parentAccountKey", "operator": "EQUALS", "value": account_id},
{"field": "creationDate", "operator": "BETWEEN", "value": from_date, "secondValue": to_date},
],
"sortingCriteria": {"field": "creationDate", "order": "DESC"},
}
resp = requests.post(f"{self.base_url}/api/deposits/transactions:search", headers=self.headers, json=payload)
resp.raise_for_status()
return resp.json()
import requests
class FinastraClient:
def __init__(self, base_url: str, token: str):
self.base_url = base_url.rstrip("/")
self.headers = {
"Authorization": f"Bearer {token}",
"Content-Type": "application/json",
}
def get_accounts(self, customer_id: str) -> list[dict]:
"""Get customer accounts from Finastra core."""
resp = requests.get(
f"{self.base_url}/retail-banking/accounts/v1/accounts",
headers=self.headers,
params={"customerId": customer_id},
)
resp.raise_for_status()
return resp.json().get("accounts", [])
def initiate_payment(self, debtor_account: str, creditor_account: str, amount: float, currency: str) -> dict:
"""Initiate a payment via Finastra Payment Hub."""
payload = {
"debtorAccount": {"identification": debtor_account},
"creditorAccount": {"identification": creditor_account},
"instructedAmount": {"amount": str(amount), "currency": currency},
}
resp = requests.post(
f"{self.base_url}/payments/v1/payment-initiations",
headers=self.headers,
json=payload,
)
resp.raise_for_status()
return resp.json()
# Wrap core banking calls as AI agent tools
def check_balance(account_id: str) -> str:
"""Check the current balance for a bank account.
Args:
account_id: The bank account identifier
"""
client = MambuClient(base_url=MAMBU_URL, api_key=MAMBU_KEY)
account = client.get_deposit_account(account_id)
balance = account.get("balances", {}).get("availableBalance", 0)
currency = account.get("currencyCode", "USD")
return f"Account {account_id} available balance: {currency} {balance:,.2f}"
def get_recent_transactions(account_id: str, days: int = 30) -> str:
"""Get recent transactions for a bank account.
Args:
account_id: The bank account identifier
days: Number of days to look back (default 30)
"""
from datetime import datetime, timedelta
to_date = datetime.now().strftime("%Y-%m-%d")
from_date = (datetime.now() - timedelta(days=days)).strftime("%Y-%m-%d")
client = MambuClient(base_url=MAMBU_URL, api_key=MAMBU_KEY)
txns = client.search_transactions(account_id, from_date, to_date)
return f"Found {len(txns)} transactions in the last {days} days."
development
<!-- AUTO-GENERATED by export-skills.py — DO NOT EDIT --> --- name: grpo-rl-training description: GRPO reinforcement learning training with TRL. Use when applying Group Relative Policy Optimization for reasoning and task-specific model training. --- # GRPO/RL Training with TRL Expert-level guidance for implementing Group Relative Policy Optimization (GRPO) using the Transformer Reinforcement Learning (TRL) library. This skill provides battle-tested patterns, critical insights, and production-r
tools
<!-- AUTO-GENERATED by export-skills.py — DO NOT EDIT --> --- name: graphql-architect description: Master modern GraphQL with federation, performance optimization, --- ## Use this skill when - Working on graphql architect tasks or workflows - Needing guidance, best practices, or checklists for graphql architect ## Do not use this skill when - The task is unrelated to graphql architect - You need a different domain or tool outside this scope ## Instructions - Clarify goals, constraints, and
development
<!-- AUTO-GENERATED by export-skills.py — DO NOT EDIT --> --- name: grafana-dashboards description: Create and manage production Grafana dashboards for real-time visualization of system and application metrics. Use when building monitoring dashboards, visualizing metrics, or creating operational observability interfaces. --- # Grafana Dashboards Create and manage production-ready Grafana dashboards for comprehensive system observability. ## Do not use this skill when - The task is unrelated
development
<!-- AUTO-GENERATED by export-skills.py — DO NOT EDIT --> --- name: gptq description: GPTQ post-training quantization for generative models. Use when quantizing large models to 4-bit with calibration-based weight compression. --- # GPTQ (Generative Pre-trained Transformer Quantization) Post-training quantization method that compresses LLMs to 4-bit with minimal accuracy loss using group-wise quantization. ## When to use GPTQ **Use GPTQ when:** - Need to fit large models (70B+) on limited GPU