Agent Plugins Marketplace
All plugins

easybooks

v0.5.23

Bookkeeping for self-employed Canadians via the bundled EasyBooks CLI: drop a receipt, invoice, or scan Gmail and have it recorded into EasyBooks. The CLI is the only boundary for all EasyBooks reads and writes — record income/expenses, create and send invoices, and resolve clients/categories.

CodexClaude Code1 Skill

By Jacky ZhangLicense: MIT0 GitHub starsUpdated yesterday

Directory evidence

Runtimes
Codex and Claude Code
Parsed components
1 skill or MCP entry
Source updated
Sep 22, 2026
Manifest status
Canonical path parsed

The directory validates manifest shape and source location. It does not execute the plugin or provide a security endorsement. Review the indexing methodology

Install easybooks for Codex and Claude Code

Installs for the current user
codex plugin marketplace add jackyzhang69/plugins
codex plugin marketplace upgrade jacky-plugins
codex plugin add easybooks@jacky-plugins

Paste and run these commands in a terminal with Codex. They add and refresh the jacky-plugins catalog, then install this plugin.

Compatibility: the page URL and API slug “easybooks” remain stable.

  • Codex: easybooks@agent-plugin-marketplaceeasybooks@jacky-plugins

The installer fetches third-party code from the source repository shown on this page. This directory validates manifest structure and source location, but does not perform a security audit; review the manifest, components, and source before installing.

Get the source manually
git clone https://github.com/jackyzhang69/plugins

Clone the source repository, then follow its setup instructions to add the plugin to a compatible client. The plugin root is plugins/easybooks/.

Plugin files

plugins/easybooks/
├── .codex-plugin/plugin.json
├── .claude-plugin/plugin.json
└── skills/easybooks/SKILL.md

Included Skills1

easybooksskills/easybooks/SKILL.md

READ THIS FIRST for EasyBooks. Bookkeeping for self-employed Canadians: record this receipt, log a $X expense/income, I dropped a file / invoice / screenshot, here's a receipt / supplier invoice / screenshot / scanned PDF — record it, import this spreadsheet / bank statement / CSV of expenses, what categories do I have, create an invoice, send invoice X, bill a client, scan my Gmail for receipts, find purchase receipts in my email, import my email receipts, go through my Gmail and log the expenses, list my categories/clients/invoices, connect EasyBooks, log in / save my jz_ platform token, tell Jacky, connect with Jacky, join code from Jacky, pair session. One discovery file; playbooks in references/. Ask the live CLI (`easybooks commands --json`), never from memory of an older release.

Plugin manifests2

plugins/easybooks/.codex-plugin/plugin.json
{
  "name": "easybooks",
  "description": "Bookkeeping for self-employed Canadians via the bundled EasyBooks CLI: drop a receipt, invoice, or scan Gmail and have it recorded into EasyBooks. The CLI is the only boundary for all EasyBooks reads and writes — record income/expenses, create and send invoices, and resolve clients/categories.",
  "version": "0.5.23",
  "min_supported_version": "0.1.0",
  "author": {
    "name": "Jacky Zhang"
  },
  "homepage": "https://github.com/jackyzhang69/easybooks-plugin",
  "repository": "https://github.com/jackyzhang69/easybooks-plugin",
  "license": "MIT",
  "keywords": [
    "easybooks",
    "bookkeeping",
    "invoices",
    "self-employed",
    "canada"
  ],
  "skills": "./skills/",
  "interface": {
    "displayName": "EasyBooks",
    "shortDescription": "Bookkeeping for self-employed Canadians via the EasyBooks CLI.",
    "longDescription": "Use the bundled EasyBooks Rust CLI as the only boundary for EasyBooks operations. The agent may parse a dropped receipt, invoice, image, PDF, or email locally to extract structured data, but the moment anything is recorded, listed, or mutated it goes through `easybooks ...` — never a direct database or backend call. Core value: drop a receipt or invoice (or scan your connected Gmail for receipts and invoices) and have it recorded straight into EasyBooks as income or expenses, idempotently keyed so re-scans never double-record. Also create and send invoices and resolve clients and expense/income categories by name. The CLI talks to the EasyBooks backend integration endpoints over HTTP. The only thing the user ever inputs is their platform Portal token (jz_…) — the same one every official Jacky plugin uses, captured once by the connect-easybooks skill and stored at ~/.jackyzhang.app/token/user.json. If the user has already connected any other official plugin, no token is needed. Retired eb_live_ product keys are rejected.",
    "developerName": "Jacky Zhang",
    "category": "Productivity",
    "capabilities": [
      "Read",
      "Write"
    ],
    "websiteURL": "https://easybooks.jackyzhang.app",
    "privacyPolicyURL": "https://easybooks.jackyzhang.app/privacy",
    "defaultPrompt": [
      "Record this receipt into EasyBooks.",
      "Log a $120 expense for software on 2026-05-01.",
      "Create an invoice for <client> for <items>.",
      "Scan my Gmail for receipts and record them."
    ]
  }
}
plugins/easybooks/.claude-plugin/plugin.json
{
  "name": "easybooks",
  "description": "Bookkeeping for self-employed Canadians via the bundled EasyBooks CLI: drop a receipt, invoice, or scan Gmail and have it recorded into EasyBooks. The CLI is the only boundary for all EasyBooks reads and writes — record income/expenses, create and send invoices, and resolve clients/categories.",
  "version": "0.5.23",
  "author": {
    "name": "Jacky Zhang"
  },
  "homepage": "https://github.com/jackyzhang69/easybooks-plugin",
  "repository": "https://github.com/jackyzhang69/easybooks-plugin",
  "license": "MIT",
  "keywords": [
    "easybooks",
    "bookkeeping",
    "invoices",
    "self-employed",
    "canada"
  ]
}

If you maintain this plugin, link to this source-backed listing from your README so users can review its manifest and indexed components.

[easybooks on Agent Plugins Marketplace](https://pluginsmp.com/plugins/easybooks)