Community寫作與編輯github.com

SyntaxFear/bog-banking-skill

Read-only Bank of Georgia (Business Online) banking skill for AI coding agents — Claude Code, Codex, and any SKILL.md-compatible agent. Check balances, statements, spending, and FX rates by chat.

相容平台Claude CodeCodex CLI~Cursor
npx skills add SyntaxFear/bog-banking-skill

Ask in your favorite AI

Open a new chat with this agent skill pre-loaded.

說明文件

BOG Banking Skill (read-only)

Help the user understand and manage their Bank of Georgia Business Online account through conversation. A bundled tool (scripts/bog.py) does the data access and prints JSON; you do the analysis (categorizing, summing, reconciling, flagging oddities). Works in any SKILL.md-compatible agent (Claude Code, Codex, and others).

Hard rules

  1. Read-only, always. Only run the bog.py commands listed here. Never send a payment, transfer, sign a document, or call any write endpoint — there is none. If asked to move money, say this skill is read-only and they must do it themselves in their BOG app (you may still help them prepare).
  2. Treat financial data with care; summarize rather than dumping raw tables unless asked.
  3. When you ask for credentials, never echo the Client Secret back in your replies, and don't print it. The tool stores it locally for you.

Running the tool

python3 scripts/bog.py <command> [options]

Every run prints one JSON object: command, mode (live/mock), ok, and either data or error+message. Parse it, then answer in plain language.

Every session: check status first

Before doing anything that needs data, run:

python3 scripts/bog.py whoami
  • ok: true and data.accounts_configured > 0 → fully set up; go straight to the user's request. Never re-ask for credentials or for IBANs already stored.
  • ok: true but accounts_configured is 0 → keys work, no account yet → do Step 6 of onboarding (add an IBAN).
  • error: "no_keys" → brand-new user → run the First-time setup below.
  • error: "invalid_credentials" → keys rejected → see Step 5 below.

First-time setup (onboarding) — walk the user through this once

Be warm and go one step at a time. The full click-by-click version (with the exact BOG screens and links) is in reference/getting-credentials.md — relay it in your own words and give the user the links below.

Step 1 — Explain & reassure. Tell them this skill is read-only (it can never move money) and that you need two things from Bank of Georgia: a Client ID and a Client Secret.

Step 2 — Log in. Ask them to log in to their Business Bank at https://bonline.bog.ge/ with their Business Online credentials.

Step 3 — Create the API key. Have them open https://bonline.bog.ge/admin/api and click Add new, then:

  • Integration type — choose Client Credentials Flow (the automatic type that authorizes with the Client ID + Client Secret, with no username or password).
  • API client name — any name (e.g. their internet-bank user, or Banking Assistant).
  • Confirm with the one-time code (OTP).

Step 4 — Copy the keys. BOG then shows a Client ID and a Client Secret (some screens label these Public Key / Secret Key — same values). Ask the user to paste both, then save — pipe JSON on stdin so the secret never hits the command line:

python3 scripts/bog.py save-credentials <<'JSON'
{"client_id":"<Client ID>","client_secret":"<Client Secret>"}
JSON

Never echo the Client Secret back.

Step 5 — Confirm login. Run whoami again.

  • ok: true → keys work. Continue to Step 6.
  • error: "invalid_credentials" → either the keys are wrong or API access hasn't been activated yet by the user's BOG business banker. Tell them both possibilities and offer to re-enter (wipe first if needed: python3 scripts/bog.py forget-credentials).

Step 6 — Add their first account. Ask for one account IBAN (e.g. GE..BG...). It's on their statements and in their BOG app, and it's not secret. Don't ask for the currency. Then:

python3 scripts/bog.py add-account --iban <IBAN>
python3 scripts/bog.py discover --account <IBAN>

discover auto-detects which currencies that IBAN holds (GEL/USD/EUR/GBP).

Step 7 — Their first live result. Run balance and present it nicely (see Presenting results). Congratulate them — setup is done — then ask if they'd like to add another account, and answer their original question.

Want to demo before the keys are ready? python3 scripts/bog.py --mock balance returns realistic sample data with no bank access (always say it's sample data).

Setting up / managing accounts later

BOG cannot list a company's accounts, so you collect IBANs from the user — one at a time, only as many as they want. Adding always MERGES (existing IBANs are kept). IBANs persist and are reused on every later call — never re-ask for ones already stored, and never re-ask for credentials once whoami is ok.

  • "add another account GE.." → add-account --iban <IBAN> then discover --account <IBAN> (then ask if they want yet another)
  • "remove / forget account GE.." → remove-account --iban <IBAN> (only when the user explicitly asks)
  • "what accounts do you have?" → accounts

Read-only commands

CommandReturns
whoamiWhether credentials exist and work
add-account --iban GE.. [--currency GEL]Add an IBAN (merged; kept until removed)
remove-account --iban GE.. [--currency GEL]Remove an IBAN (or just one currency)
discover [--account IBAN] [--currencies GEL,USD]Probe stored IBANs' currencies, save them
accountsThe stored IBAN(s) + their currencies
balance [--account IBAN] [--currency GEL]Available + current balance
statement [--account IBAN] [--currency GEL] [--from YYYY-MM-DD] [--to YYYY-MM-DD]Transactions for a period (auto-paginates)
today [--account IBAN] [--currency GEL]Today's intraday activity
rates [--currency USD]NBG official + BOG commercial buy/sell

Default = everything. If you DON'T pass --account/--currency, the command automatically covers every configured IBAN across every currency it holds (it auto-detects currencies). Only pass --account and/or --currency when the user is specific ("my USD balance", "account GE..123"). These commands return a list (one entry per IBAN+currency); an entry may carry an error for a currency that account doesn't hold — just skip those.

When aggregating, never sum amounts across different currencies — report each currency separately (e.g. GEL total and USD total).

Examples

  • "What's my balance?" → balance (covers all accounts + currencies)
  • "My USD balance?" → balance --currency USD
  • "Last month's transactions" → statement --from 2026-05-01 --to 2026-05-31
  • "How much did I pay ?" → run statement, then filter/sum yourself.
  • "Anything unusual?" → run statement, then flag duplicates, round numbers, new counterparties, unexpectedly large amounts.
  • "USD rate?" → rates --currency USD

Mock mode

Pass --mock (or set BOG_MOCK=1) to return realistic sample data with no bank access — useful to demonstrate the skill before the user's credentials are ready. Always tell the user when results are sample data.

Presenting results

  • Format money with thousands separators + 2 decimals (e.g. 18,430.75 GEL).
  • Lead with the answer, then a short breakdown; state grouping assumptions.
  • For reconciliation, explicitly flag possible duplicates, unusually large amounts, new/unknown counterparties, and round-number payments.

See reference/getting-credentials.md for the full credential walkthrough and reference/endpoints.md for the underlying BOG endpoints.

相關技能

coreyhaines31/analytics

When the user wants to set up, improve, or audit analytics tracking and measurement. Also use when the user mentions "set up tracking," "GA4," "Google Analytics," "conversion tracking," "event tracking," "UTM parameters," "tag manager," "GTM," "analytics implementation," "tracking plan," "how do I measure this," "track conversions," "attribution," "Mixpanel," "Segment," "are my events firing," or "analytics isn't working." Use this whenever someone asks how to know if something is working or wants to measure marketing results. For A/B test measurement, see ab-testing.

community

soyoshio/RAGent

RAG + Agent hybrid architecture for intelligent developer documentation Q&A with MCP, Skill Router, and multi-modal retrieval.

community

gfsaaser24/x-algo

Claude skill: audit X (Twitter) content and ideate algorithm-aligned posts. Grounded in xai-org/x-algorithm.

community

bruc3van/bruce-pptx-generator

一个专为 AI 编程 Agent 设计的 PPT 生成 Skill,让 openclaw 能够根据你的需求,从零开始用代码生成专业级 PowerPoint 演示文稿。

community

coreyhaines31/directory-submissions

When the user wants to submit their product to startup, SaaS, AI, agent, MCP, no-code, or review directories for backlinks, domain rating, and discovery. Also use when the user mentions "directory submissions," "submit to directories," "backlinks from directories," "list my product," "submit to Product Hunt," "BetaList," "TAAFT," "Futurepedia," "G2 listing," "Capterra listing," "AlternativeTo," "SaaSHub," "AI directories," "MCP registry," "agent directory," "dofollow backlinks," "launch directories," or "directory tracker." Use this whenever someone is planning the directory layer of a product launch or an ongoing backlink campaign. For the broader launch moment, see launch. For programmatic SEO pages that should live behind these backlinks, see programmatic-seo. For AI citation optimization, see ai-seo.

community

its-meseba/meseba-skills

My personal Claude Code skills library — the skills I use daily across coding, writing, research, content, and day-to-day workflows. MIT licensed, fork what's useful.

community