-
-
Notifications
You must be signed in to change notification settings - Fork 0
Installation
TakaBooks is one source tree built into one bundle per platform. This page covers getting a bundle, then installing it in each LLM, then running the Python engine on your own machine. Where a screenshot would help and cannot be shown, the screen is described in words.
| For | You need |
|---|---|
| Any chat platform (Claude, ChatGPT, Gemini, Kimi, DeepSeek, …) | An account on that platform. Nothing to install. |
| The numbers |
Python 3.11 or newer on your own computer. The engine is standard library only — there is nothing to pip install, and nothing is downloaded at run time. Check with python3 --version (Windows: py -3 --version). Get Python from https://www.python.org/downloads/ if needed. |
| Cursor, Copilot, Codex, Windsurf | The repository checked out; they read AGENTS.md at its root. |
| The npm installer (optional) | Node 18 or newer, and a GitHub token (explained below). |
A chat platform without the engine can still classify entries, explain rules and prepare the exact commands for you to run; it cannot compute a figure. The core instruction tells it to say so and to ask for the engine's output back rather than do the arithmetic itself.
Go to https://github.com/bemoshiur/TakaBooks/releases/latest. Each release carries:
| Asset | For |
|---|---|
bd-bookkeeping-tax-skill-<version>.zip |
Claude (claude.ai upload, Claude Code, Claude API) and every other Agent Skills host (Codex CLI, ChatGPT Skills, Gemini CLI, Cursor, VS Code) |
takabooks-chatgpt-<version>.zip |
ChatGPT Custom GPT or Project: instructions.md, knowledge/, README-install.md
|
takabooks-gemini-<version>.zip |
Gemini Gem: gem-instructions.md, knowledge/, README-install.md
|
takabooks-complete-<version>.md |
Any other LLM — Kimi, DeepSeek, Llama, Mistral, local models: one paste-anywhere file |
AGENTS-<version>.md |
Coding agents: Cursor, Copilot, Codex, Windsurf, Gemini CLI |
SHA256SUMS.txt |
Checksums of every asset |
Verify a download before you trust it:
sha256sum -c SHA256SUMS.txt # macOS: shasum -a 256 -c SHA256SUMS.txtgit clone https://github.com/bemoshiur/TakaBooks.git
cd TakaBooks
python3 build/build.py # every bundle into dist/, plus AGENTS.md at the rootpython3 build/build.py --check verifies every platform limit without writing;
--target chatgpt (or claude-skill, gemini, universal, agents-md) builds one. The
build is deterministic — the same src/ bytes produce byte-identical dist/ bytes.
The package @bemoshiur/takabooks copies a built bundle to where a platform expects it:
npx @bemoshiur/takabooks install claude # → ~/.claude/skills/bd-bookkeeping-tax/
npx @bemoshiur/takabooks install chatgpt # → ./takabooks-chatgpt/
npx @bemoshiur/takabooks install gemini # → ./takabooks-gemini/
npx @bemoshiur/takabooks install universal # → ./takabooks-complete.md
npx @bemoshiur/takabooks install agents # → ./AGENTS.md
npx @bemoshiur/takabooks listOptions: --dest <path> (install elsewhere), --dist <path> (read bundles from a checkout's
dist/), --force / -f (replace an existing install — it deletes the destination first),
--dry-run / -n, --json, --quiet, --no-bangla, --help, --version. It never
clobbers an existing install without --force, and exits non-zero on any failure.
The catch: the package is published to GitHub Packages, not npmjs.com, and GitHub
Packages requires authentication even to install a public package. On a machine that has
never authenticated, npx @bemoshiur/takabooks returns 401. To use it, put two lines in
your ~/.npmrc:
@bemoshiur:registry=https://npm.pkg.github.com
//npm.pkg.github.com/:_authToken=${NODE_AUTH_TOKEN}
and export NODE_AUTH_TOKEN as a GitHub classic personal access token with the
read:packages scope (fine-grained tokens do not work with the npm registry). If that is
more friction than you want, use Option A — the release assets are the same files.
From a checkout, without any registry: node bin/takabooks.mjs install claude --dist ./dist.
The skill folder goes under skills/, personal or per project:
# personal — available in every project
unzip bd-bookkeeping-tax-skill-<version>.zip -d ~/.claude/skills/
# project — checked in with the repository
unzip bd-bookkeeping-tax-skill-<version>.zip -d .claude/skills/Either way you end up with …/skills/bd-bookkeeping-tax/SKILL.md plus references/,
scripts/, data/, templates/. The zip has the bd-bookkeeping-tax/ folder at its root,
which is why -d …/skills/ is the right target. A personal skill overrides a project skill
of the same name; an enterprise-managed one overrides both.
Then, in a project, start Claude Code and ask a Bangladeshi bookkeeping or tax question in Bangla, Banglish or English — the skill is loaded by its description when the question matches. The scripts run through Claude Code's shell; only their output enters the conversation, which is exactly the design.
Claude Code reads CLAUDE.md, not AGENTS.md. To give it the repository's coding-agent
instructions too, create a two-line CLAUDE.md at the repository root:
@AGENTS.mdScreen by screen:
- Open Settings (your initials or avatar, bottom-left on the web).
- Go to Features (the section that lists optional capabilities). Make sure code execution is enabled — skills need it.
- Find Skills and choose Upload skill (a button that opens a file picker).
- Pick
bd-bookkeeping-tax-skill-<version>.zip. The folder must be at the root of the zip; the release asset already is. - The skill appears in the list by name (
bd-bookkeeping-tax) with its description.
Skills uploaded on claude.ai are per-user: there is no organisation-wide management, and they do not sync to Claude Code or to the API. Install in each place separately.
Upload the same zip to the Skills endpoint (/v1/skills). bd-bookkeeping-tax/SKILL.md sits
at the top of a single enclosing folder, which is what the endpoint expects. Versions are
complete snapshots, not deltas — re-upload the whole file set every time. The API sandbox
has no network access and cannot install packages; TakaBooks needs neither.
Unzip takabooks-chatgpt-<version>.zip. Then, screen by screen:
- In ChatGPT, open Explore GPTs (left sidebar) and press Create (top right).
- Switch from the Create tab to the Configure tab — a form with Name, Description, Instructions, Conversation starters, Knowledge, Capabilities.
-
Instructions: paste the entire contents of
instructions.md. The field accepts 8,000 characters; the file is built to fit and the build fails rather than produce an over-long one. If the field shows a character counter, it should be under the limit with a little headroom. -
Knowledge: press Upload files and select every file in
knowledge/. A Custom GPT holds up to 20 knowledge files; the bundle ships fewer. Keep the file names — the instruction refers to them by name. - Capabilities: Code Interpreter is useful (the GPT can run the engine on files you upload in a chat), not required.
- Save (top right) → choose who can use it → Create.
The rates file is shipped as rates-AY<year>.md — Markdown with the TOML inside a fenced
block — because .toml is not on any published list of accepted upload types. Its values are
byte-identical to src/data/.
The engine scripts are not in the knowledge set: the GPT explains and classifies; the numbers
come from running the scripts locally, as knowledge/engine-usage.md describes.
Open a Project → Project instructions → paste instructions.md. Then Add files →
the knowledge/ files. A project holds fewer files than a Custom GPT (as few as five on the
Free plan), so on a small plan add, in this order: the rates file, 30-tax-overview.md, then
the reference you need for the task at hand.
Both read the open Agent Skills format, so use the Claude Skill bundle, not the ChatGPT one:
-
Codex CLI: unzip so that
~/.codex/skills/bd-bookkeeping-tax/SKILL.mdexists. - ChatGPT Skills: upload the same zip under Skills → Upload from your computer. Skills in ChatGPT are limited to Business, Enterprise, Healthcare and Edu plans, and an administrator may have to enable them first.
Unzip takabooks-gemini-<version>.zip. Then:
- Open Gemini → Gems (left sidebar) → New Gem (or Gem manager → New Gem).
- Give it a name. In Instructions, paste the whole of
gem-instructions.md. It is short on purpose — Gems drift away from their knowledge files under long instructions — and written in Google's Persona / Task / Context / Format shape. - Under Knowledge, press Add files (or Upload from computer / Add from Drive) and
add every file in
knowledge/. A Gem supports up to 10 source documents, which is why the bundle's files are merged; it ships exactly ten. The merge is at whole-file level, never a truncation, so everysourceURL andverifiedflag survives. - Save.
Tip for keeping rates current: Gemini reads the latest version of a Google Doc from Drive automatically, but re-uploads other file types by hand. If you publish the rates knowledge file as a Google Doc and add it from Drive, a rates update reaches every Gem that uses it without a re-upload.
takabooks-complete-<version>.md is one self-contained Markdown file: core instruction,
every reference, the rates table with the TOML in a fenced block, the engine commands with
their output shapes, and the glossary — with every cross-reference an in-document anchor.
Nothing outside the file exists.
-
Chat web apps (Kimi, DeepSeek, …): paste the whole file as the first message, or
upload it as a document if the app supports uploads. It opens with a
STOP — READ THIS FIRSTblock that the model sees before anything else. -
Ollama: put the file inside
SYSTEM """…"""in a Modelfile, or attach it as context in whichever front end you use. - LM Studio / Open WebUI: paste it into the system-prompt field and save it as a preset.
The file tells the model what to do when it cannot run Python — give the classification,
the account codes, the tax_tag and the rule in words, print the exact command, and ask for
the output back. Small local models (7–13B) follow short instructions better than long ones;
if yours drifts, use the universal file as an uploaded document and a shorter system prompt.
AGENTS.md at the repository root is the cross-agent standard those tools read; the nearest
AGENTS.md up the directory tree wins. It is generated by the build and carries the
non-negotiables (never invent a rate; integer paisa; stdlib only; src/ is the truth;
dist/ is generated), the layout, the commands, and the content rules. Nothing to install:
check out the repository and the tool finds it. For Claude Code, add the two-line
CLAUDE.md shown above.
Whichever platform you use, the numbers come from Python running locally.
git clone https://github.com/bemoshiur/TakaBooks.git # or unzip the skill bundle
cd TakaBooks
python3 src/engine/validate.py --help # prints usage → Python is fineIn the Claude Skill bundle the same scripts are at bd-bookkeeping-tax/scripts/ and the
rates file at bd-bookkeeping-tax/data/; scripts/USAGE.md lists every command.
Windows notes: use py -3 src\engine\validate.py --help if python3 is not on your PATH;
run in Windows Terminal or PowerShell so Bangla renders; the engine itself is unaffected by
what the console can display.
Then follow Getting Started.
| Platform | How to tell it worked |
|---|---|
| Claude Code |
ls ~/.claude/skills/bd-bookkeeping-tax/SKILL.md exists; a Bangla bookkeeping question makes Claude read the skill and run scripts/…
|
| claude.ai | The skill is listed under Settings → Features → Skills with the name bd-bookkeeping-tax
|
| ChatGPT | The Configure tab shows the instructions with no truncation warning and every knowledge file listed |
| Gemini | The Gem shows ten knowledge documents |
| Universal | The model's first reply to "what are your rules?" mentions that it never does arithmetic and names the rates file |
| Engine |
python3 src/engine/validate.py --help prints usage and exits 0 |
Bundles are versioned with the release tag. To update, download the new assets and repeat the
platform steps — every platform above replaces rather than merges, so re-upload the whole
set. Custom skills do not sync across surfaces; update each one. Your books/ directory is
yours and is never touched by an update.
- Getting Started · Engine Reference
- Troubleshooting — Python version errors, the npm 401, Bangla rendering
- Disclaimer
This wiki is generated from docs/wiki/ in the repository. Edits made here are overwritten by the next sync — open a pull request against docs/wiki/ instead.
এই উইকি রিপোজিটরির docs/wiki/ থেকে তৈরি — এখানে সম্পাদনা করলে তা পরবর্তী সিঙ্কে মুছে যাবে। পরিবর্তনের জন্য docs/wiki/-এ পুল রিকোয়েস্ট দিন।
Wiki pages quote tax figures only to make a worked example readable — they are illustrations, not the source of truth. Every figure TakaBooks actually uses lives in src/data/rates-AY<year>.toml with a source URL, an as_of date and a verified flag; check it there before you rely on a number you read here. Nothing here is professional advice — verify with a licensed ITP or CA, and against NBR, before you file. See the Disclaimer.
TakaBooks — maintained by Moshiur Rahman (@bemoshiur) · TICON SYSTEM LTD — https://ticonsys.com · MIT licensed · https://github.com/bemoshiur/TakaBooks
TakaBooks — টাকাবুকস
Get going
Keeping books
Tax data
Help
Elsewhere