{"id":51840203,"url":"https://github.com/adbertram/cli-tools","last_synced_at":"2026-07-23T03:31:05.973Z","repository":{"id":364175403,"uuid":"1243943379","full_name":"adbertram/cli-tools","owner":"adbertram","description":"Service-specific Python CLI tools with shared auth, browser automation, runtime profiles, caching, and JSON-first output.","archived":false,"fork":false,"pushed_at":"2026-07-05T13:58:44.000Z","size":6095,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-07-05T15:22:16.358Z","etag":null,"topics":["api-client","automation","browser-automation","cli","developer-tools","python","typer"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/adbertram.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-05-19T20:20:31.000Z","updated_at":"2026-07-05T13:58:47.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/adbertram/cli-tools","commit_stats":null,"previous_names":["adbertram/cli-tools"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/adbertram/cli-tools","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adbertram%2Fcli-tools","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adbertram%2Fcli-tools/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adbertram%2Fcli-tools/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adbertram%2Fcli-tools/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/adbertram","download_url":"https://codeload.github.com/adbertram/cli-tools/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adbertram%2Fcli-tools/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35787350,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-07-20T02:08:10.276Z","status":"online","status_checked_at":"2026-07-23T02:00:06.683Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api-client","automation","browser-automation","cli","developer-tools","python","typer"],"created_at":"2026-07-23T03:31:05.910Z","updated_at":"2026-07-23T03:31:05.968Z","avatar_url":"https://github.com/adbertram.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# CLI Tools\n\nService-specific command-line tools designed for AI agents and still practical\nfor humans at a terminal.\n\nThis repo contains small Python CLIs for APIs, browser-backed services, local\napps, and automation targets. The tools are built around predictable command\nshapes, JSON-first output, clean stderr/stdout separation, shared auth helpers,\nand repo-local agent skill files so an agent can inspect command usage before it\nruns anything.\n\n## Why This Exists\n\nAI agents are much more reliable when service operations are exposed as narrow,\ndocumented commands instead of ad-hoc browser clicks or one-off scripts. These\nCLIs give agents a stable interface for common service tasks while keeping the\nsame commands available for direct interactive use.\n\nThis is not a collection of unrelated scripts. The repo defines a repeatable\nway to build Python CLI tools for agent use. Each tool adapts one service,\napplication, API, browser workflow, or existing command-line program into a\nsingle predictable command surface that agents can inspect, call, cache, and\nverify consistently.\n\n## What's Included\n\n- 83 active CLI packages.\n- Repo-local service skills in `_repo/skills/\u003ctool\u003e-cli/`.\n- Repo-local framework skills and expert agents for building and maintaining\n  the tools.\n- Generated `usage.json` command maps for agent command planning.\n- Shared auth, cache, profile, browser-session, and output helpers.\n- A Keychain-backed secret manager for CLI credentials.\n- One install command per tool.\n\n## Quick Start\n\nA fresh clone gives you the source, per-tool agent skills, and generated command\nmaps. It does not automatically install every CLI command or register those\nskills with your agent harness. Do both steps before asking an agent to use a\ntool.\n\n### Install a CLI\n\n```bash\ngit clone \u003crepo-url\u003e cli-tools\ncd cli-tools\n_repo/_scripts/install-cli-tool.sh \u003ctool-folder\u003e\n```\n\nThe installer uses `uv tool install --editable`, so install `uv` first if your\nmachine does not already have it. The installed command must also be on your\nshell `PATH`.\n\nExamples:\n\n```bash\n_repo/_scripts/install-cli-tool.sh airtable\n_repo/_scripts/install-cli-tool.sh amazon\n_repo/_scripts/install-cli-tool.sh wordpress\n```\n\nThen run the installed command:\n\n```bash\nairtable --help\namazon orders list --table\nwordpress posts list --limit 5\n```\n\nSome tools require service credentials or browser-authenticated profile state\nbefore data commands work. Start with the tool's `auth` commands and the\ntool-specific README when authentication is required.\n\n### Set Up Your Agent Harness\n\nPoint the agent at this repo's skills before asking it to use a CLI tool. The\nportable rule is:\n\n```text\nFor CLI service operations, load \u003ccli-tools-root\u003e/_repo/skills/\u003ctool\u003e-cli/SKILL.md\nand inspect \u003ccli-tools-root\u003e/_repo/skills/\u003ctool\u003e-cli/usage.json before running\nthe installed CLI command. Run CLI commands through Bash. For CLI-tool lifecycle\nwork, use \u003ccli-tools-root\u003e/_repo/skills/cli-tool/SKILL.md and the repo-owned\ncli-tool-expert agent.\n```\n\nUse that rule in the place your harness reads project instructions:\n\n- **Codex:** add it to `AGENTS.md` in this repo, your consuming project, or your\n  user-level Codex instructions.\n- **Claude Code:** add it to `CLAUDE.md` in this repo, your consuming project,\n  or your user-level Claude instructions.\n- **Other agent harnesses:** register `\u003ccli-tools-root\u003e/_repo/skills` as a\n  skill or knowledge root when supported. If the harness does not support skill\n  roots, paste the rule above into its system, developer, or project\n  instructions.\n\nOptional repo-owned expert-agent links for harnesses that support custom agents:\n\n```bash\nCLI_TOOLS_ROOT=\"$(pwd)\"\nmkdir -p \"$HOME/.codex/agents\" \"$HOME/.claude/agents\"\nln -sfn \"$CLI_TOOLS_ROOT/_repo/agents/cli-tool-expert.toml\" \\\n  \"$HOME/.codex/agents/cli-tool-expert.toml\"\nln -sfn \"$CLI_TOOLS_ROOT/_repo/agents/cli-tool-expert.md\" \\\n  \"$HOME/.claude/agents/cli-tool-expert.md\"\n```\n\nAfter setup, a good agent workflow is: identify the tool folder, load the\nmatching `_repo/skills/\u003ctool\u003e-cli/SKILL.md`, inspect `usage.json`, verify the\ninstalled command with `\u003ctool\u003e --help`, authenticate if needed, then run the\nrequested command.\n\n## Design Principles\n\n- Commands should be predictable and discoverable through `--help`.\n- JSON is the default data output for automation and piping.\n- Human status messages belong on stderr; stdout stays clean for data.\n- Browser-backed tools use shared profile/auth helpers from `cli-tools-shared`.\n- API-backed tools use the same profile, cache, auth, and output patterns.\n- Credentials belong in the CLI-tools secret manager or tool-owned profile\n  state, never in source files.\n- Agent-facing usage guidance lives next to the repo in `_repo/skills`.\n\n## Architecture\n\nThe repo is organized around a shared CLI framework, not around one-off command\nscripts. Each service folder is an installable Python package with a consistent\nentry point, command structure, output contract, and runtime state layout.\n\nAt a high level, a tool is usually one of these adapters:\n\n- **API adapter:** wraps a public or private HTTP API in stable CLI commands.\n- **Browser adapter:** wraps a browser-authenticated workflow behind a CLI.\n- **Local app/data adapter:** wraps local app data, SQLite stores, AppleScript,\n  or operating-system automation.\n- **CLI adapter:** wraps an existing command-line program with a more predictable\n  command shape and output contract for agents.\n\nThe common parts live in [`cli-tools-shared`](_repo/cli-tools-shared/). Tools\nreuse that package for the behaviors agents need to be consistent across\nservices:\n\n- command app construction and standard command conventions\n- JSON-first output and table output for interactive use\n- authentication profile layout under `~/.local/share/cli-tools/\u003ctool\u003e`\n- shared cache commands and cache behavior\n- browser session/profile handling for browser-backed tools\n- reusable auth verification and status checks\n\nThis means an agent does not need to relearn each integration from scratch. Once\nit knows the framework, it can expect familiar command groups such as `auth`,\n`cache`, `list`, and `get`, inspect the tool-specific `usage.json`, and then run\nthe service operation through one predictable interface.\n\n### Caching\n\nTools that read from APIs or browser-backed service surfaces use a common cache\npattern. Cacheable commands keep network and browser reads repeatable, reduce\nunnecessary service calls, and make agent workflows easier to debug. The exact\ncache keys and freshness rules are tool-specific, but the operational shape is\nconsistent: tools expose cache management commands, support fresh reads where\nneeded, and keep cached data out of stdout unless the command is returning data.\n\n### Browser Automation\n\nBrowser-backed tools use the shared browser/profile architecture instead of\ncustom browser code per service. The shared package owns the common lifecycle:\npersistent browser profiles, auth markers, session checks, storage-state\nhandling, and status verification. Individual tools provide the service-specific\nURLs and selectors needed to confirm authentication or collect data.\n\nThat separation keeps browser automation predictable for agents: the tool owns\nthe service workflow, while the shared package owns the browser session and auth\nplumbing.\n\n## Public Use Notice\n\nSome tools use official APIs. Others use browser automation, local app data, or\nundocumented service surfaces where no public API exists. These integrations are\nunofficial, may break when a service changes, and should be used only with\naccounts and data you are authorized to access.\n\n## Shared Building Blocks\n\n| Component | Purpose |\n| --- | --- |\n| [`cli-tools-shared`](_repo/cli-tools-shared/) | Shared command, browser-auth, cache, profile, and output helpers used by tool packages. |\n| [`secret-manager`](_repo/_secret-manager/) | CLI-tools Keychain helper for credentials that belong to CLI tooling. |\n| [`skills`](_repo/skills/) | Agent-facing CLI skill bundles. Each installable tool has a matching `\u003ctool\u003e-cli` skill with command guidance and a `usage.json` command tree. Framework support skills such as `cli-tool` and `cli-tool-secrets` also live here. |\n| [`agents`](_repo/agents/) | Repo-owned expert agent definitions for maintaining CLI tools across agent harnesses. |\n\n## Secret Manager\n\nCLI credentials belong in the repo-owned secret manager, not in source files,\nchecked-in `.env` files, shell history, or general agent instructions. The\nhelper is backed by a dedicated macOS Keychain file:\n\n```text\n~/.local/share/cli-tools/cli-tools.keychain-db\n```\n\nThe helper script is:\n\n```text\n_repo/_secret-manager/secrets.sh\n```\n\nSecrets are stored in the `cli-tools` Keychain service namespace. Canonical\nnames use this format:\n\n```text\n\u003ccli-tool\u003e-\u003ctype\u003e\n```\n\nUse the explicit `--tool` and `--type` form when storing new values so the helper\nbuilds the canonical name:\n\n```bash\nprintf '%s' \"$SECRET_VALUE\" | _repo/_secret-manager/secrets.sh set --tool \u003ccli-tool\u003e --type \u003ctype\u003e\n```\n\nCommon operations:\n\n```bash\n_repo/_secret-manager/secrets.sh set --tool \u003ccli-tool\u003e --type \u003ctype\u003e\n_repo/_secret-manager/secrets.sh get \u003ccli-tool\u003e-\u003ctype\u003e\n_repo/_secret-manager/secrets.sh has \u003ccli-tool\u003e-\u003ctype\u003e\n_repo/_secret-manager/secrets.sh list\n_repo/_secret-manager/secrets.sh delete \u003ccli-tool\u003e-\u003ctype\u003e\n```\n\nThe secret manager is for CLI tool code and CLI-tool skills only. It should not\nbe used as a general project secret store or by unrelated automation. Tool\nprofile files may reference secrets with `secret://...` placeholders; the\nruntime resolves those through this helper instead of storing sensitive values\nin the profile file.\n\nSee [`_repo/_secret-manager/README.md`](_repo/_secret-manager/README.md) for\nremote-host mode, Keychain access policy, and import/export behavior.\n\n## Agent Skills\n\nThis repo includes agent skill bundles for CLI operations under `_repo/skills`.\nFor a tool folder named `\u003ctool\u003e`, the matching service-operation skill is usually:\n\n```text\n_repo/skills/\u003ctool\u003e-cli/SKILL.md\n```\n\nEach skill tells an agent when to use the CLI, how to call it, and where to find\nthe tool's generated `usage.json` command reference. Agents should load the\nrepo-local skill before running service operations for that CLI. Skill bundles\nare documentation and orchestration guidance only; they do not replace the\ninstallable CLI package under `\u003ctool\u003e/`.\n\nTwo framework support skills also live in `_repo/skills`:\n\n- `_repo/skills/cli-tool/` is the framework skill for creating, testing,\n  updating, removing, and validating CLI tools in this repo.\n- `_repo/skills/cli-tool-secrets/` documents the CLI-tools secret-manager\n  workflow for reusable CLI credentials.\n\nThese support skills intentionally do not map to installable service commands.\nThey describe how to build and maintain the CLI framework itself.\n\n## Expert Agent\n\nThe CLI tool expert agent is repo-owned so it can evolve with the framework\ninstead of drifting in user-level agent folders:\n\n```text\n_repo/agents/cli-tool-expert.toml  # TOML agent format\n_repo/agents/cli-tool-expert.md    # Markdown agent format\n```\n\nUser-level harness folders should symlink to those repo files. That keeps normal\nagent invocation working while making the repo the source of truth:\n\n```text\n~/.codex/agents/cli-tool-expert.toml -\u003e \u003ccli-tools-root\u003e/_repo/agents/cli-tool-expert.toml\n~/.claude/agents/cli-tool-expert.md  -\u003e \u003ccli-tools-root\u003e/_repo/agents/cli-tool-expert.md\n```\n\n### `usage.json`\n\n`usage.json` is the structured command map for a CLI. It lets an agent inspect\nthe tool's command tree without guessing syntax from memory. Before running a\ncommand, the agent should use the matching skill and `usage.json` to confirm:\n\n- available command groups and subcommands\n- positional arguments and whether they are required\n- options, short aliases, defaults, and value types\n- examples from the live CLI help when available\n- `usage_instructions` that explain when to use each command and how to combine\n  important flags\n\nThe file is organized as a root object for the CLI, with nested command groups\nand leaf commands. `usage_instructions` should exist at the root, group, and\nleaf-command levels when the command needs decision guidance beyond the raw help\ntext.\n\n### Creating or Refreshing `usage.json`\n\nCreate or refresh `usage.json` whenever a CLI is added, command names change,\nflags are added or removed, defaults change, or examples in `--help` change.\n\n1. Install the CLI from the repo:\n\n   ```bash\n   _repo/_scripts/install-cli-tool.sh \u003ctool-folder\u003e\n   ```\n\n2. Read the live command help recursively:\n\n   ```bash\n   \u003ctool\u003e --help\n   \u003ctool\u003e \u003cgroup\u003e --help\n   \u003ctool\u003e \u003cgroup\u003e \u003ccommand\u003e --help\n   ```\n\n3. Write the command tree to:\n\n   ```text\n   _repo/skills/\u003ctool\u003e-cli/usage.json\n   ```\n\n4. Include the command structure, arguments, options, examples, and\n   `usage_instructions`. Keep command paths exactly as the CLI exposes them;\n   for example, document `auth profiles list`, not a flattened `profiles list`.\n\n5. Update `_repo/skills/\u003ctool\u003e-cli/SKILL.md` if the tool's purpose, major\n   command groups, trigger phrases, or required operating rules changed.\n\n6. Verify by checking that every documented command path still appears in live\n   help and that the skill references the current `usage.json`.\n\nMost service skills in `_repo/skills` must have a corresponding installable CLI\npackage. The explicit exceptions are framework support skills that maintain the\nrepo itself, currently `cli-tool` and `cli-tool-secrets`.\n\n## Tool Catalog\n\n### Affiliate \u0026 SEO\n\n| Tool | Command | What it does |\n| --- | --- | --- |\n| [`ahrefs`](ahrefs/) | `ahrefs` | A command-line interface for [Ahrefs](https://app.ahrefs.com) Site Audit using browser automation and internal APIs. |\n| [`amazon-associates`](amazon-associates/) | `amazon-associates` | A command-line interface for the official [Amazon Associates](https://affiliate-program.amazon.com/). |\n| [`awin`](awin/) | `awin` | CLI for the [Awin Publisher API](https://help.awin.com/apidocs). Lists publisher accounts and advertiser programmes you have access to. |\n| [`cj`](cj/) | `cj` | `cj` is a publisher-side command-line interface for [CJ Affiliate](https://www.cj.com/) (Commission Junction). It enables bulk discovery of CJ advertiser programs through the public REST/GraphQL API and bulk application to those programs through the publisher Marketplace UI. |\n| [`clickbank`](clickbank/) | `clickbank` | CLI for the documented ClickBank REST APIs at `https://api.clickbank.com/rest/1.3`. |\n| [`g2`](g2/) | `g2` | CLI for finding G2 products and mining negative reviews through the official G2 APIs at `https://data.g2.com`. |\n| [`impact`](impact/) | `impact` | Impact.com Publisher API CLI for MediaPartner accounts. |\n| [`keywords`](keywords/) | `keywords` | Query autocomplete suggestions from Google, YouTube, Bing, Amazon, and DuckDuckGo for keyword research and SEO analysis. |\n| [`moz`](moz/) | `moz` | A command-line interface for the [Moz API](https://api.moz.com/api/json/). Interact with Moz. |\n| [`partnerstack`](partnerstack/) | `partnerstack` | Command-line access to the [PartnerStack Partner API](https://docs.partnerstack.com/docs/partner-api). |\n| [`raptive`](raptive/) | `raptive` | A command-line interface for [Raptive](https://dashboard.raptive.com) using browser automation. Interact with Raptive. |\n\n### Commerce \u0026 Shipping\n\n| Tool | Command | What it does |\n| --- | --- | --- |\n| [`amazon`](amazon/) | `amazon` | Read-only Amazon order evidence lookup using a persistent browser session from `cli-tools-shared`. |\n| [`brickfreedom`](brickfreedom/) | `brickfreedom` | A command-line interface for [Brickfreedom](https://brickfreedom.com) using browser automation. Manage LEGO marketplace orders and tasks from the command line. |\n| [`bricklink`](bricklink/) | `bricklink` | A command-line interface for the [Bricklink API](https://www.bricklink.com/v3/api.page). Bricklink marketplace API. |\n| [`brickowl`](brickowl/) | `brickowl` | A command-line interface for the [Brick Owl API](https://api.brickowl.com/v1). Manage orders, inventory, catalog data, messages, refunds, coupons, and quotes for your Brick Owl LEGO marketplace store. |\n| [`cvs`](cvs/) | `cvs` | A command-line interface for the [Cvs API](https://www.cvs.com). CLI interface for CVS Health -- prescriptions, orders, and refills. |\n| [`doordash`](doordash/) | `doordash` | A command-line interface for [DoorDash](https://www.doordash.com) food ordering and delivery management. |\n| [`ebay`](ebay/) | `ebay` | A command-line interface for eBay APIs. Manage your eBay seller tools, marketplace categories, and account from the terminal. |\n| [`fedex`](fedex/) | `fedex` | A command-line interface for the [FedEx Pickup API](https://developer.fedex.com/api/en-us/catalog/pickup/v1/docs.html). Schedule, check availability, and cancel FedEx pickups. |\n| [`instacart`](instacart/) | `instacart` | A command-line interface for Instacart using browser session authentication. Manage orders, view carts, and access your Instacart account from the terminal. |\n| [`paypal`](paypal/) | `paypal` | Command-line interface for PayPal using the REST API. |\n| [`shippo`](shippo/) | `shippo` | A command-line interface for the [Shippo API](https://docs.goshippo.com/) - Create USPS shipping labels, get rates, and track packages. |\n| [`shopgoodwill`](shopgoodwill/) | `shopgoodwill` | A command-line interface for [ShopGoodwill.com](https://shopgoodwill.com), the online auction marketplace operated by Goodwill Industries. Search listings, view item details, and manage authentication directly from your terminal. |\n| [`shopsalvationarmy`](shopsalvationarmy/) | `shopsalvationarmy` | Complete reference for the `shopsalvationarmy` command-line interface for searching Shop The Salvation Army auctions. |\n| [`usps`](usps/) | `usps` | A command-line interface for the [USPS Tracking API](https://developer.usps.com/api/97). Query package tracking status for USPS shipments. |\n| [`venmo`](venmo/) | `venmo` | A command-line interface for retrieving Venmo transaction history. |\n\n### Content, Publishing \u0026 Media\n\n| Tool | Command | What it does |\n| --- | --- | --- |\n| [`buttondown`](buttondown/) | `buttondown` | Command-line access to the Buttondown REST API for subscribers, emails, and tags. |\n| [`descript`](descript/) | `descript` | CLI for managing Descript video projects via reverse-engineered internal API. Authenticates by extracting JWT tokens from the running Descript Electron app via Chrome DevTools Protocol. |\n| [`dev_to`](dev_to/) | `dev_to` | CLI for publishing and reading DEV Community posts through the official Forem API. |\n| [`elevenlabs`](elevenlabs/) | `elevenlabs` | A command-line interface for the [ElevenLabs API](https://elevenlabs.io/docs/api-reference). It supports API-key authentication, voice discovery, model inspection, subscription quota checks, pronunciation dictionaries, and text-to-speech audio generation. |\n| [`facebook`](facebook/) | `facebook` | A command-line tool for Facebook Marketplace, Messenger, and Groups via browser automation (playwright). |\n| [`google-lighthouse`](google-lighthouse/) | `google-lighthouse` | A standardized wrapper around Google's `lighthouse` CLI for running page audits and storing normalized audit summaries. |\n| [`hyvor`](hyvor/) | `hyvor` | A command-line interface for the [Hyvor Talk API](https://talk.hyvor.com/docs/api-console). Manage Hyvor Talk comments and discussions on your website. |\n| [`leanpub`](leanpub/) | `leanpub` | Command-line interface for the [Leanpub API](https://leanpub.com/help/api), focused on author revenue, royalties, and copies-sold stats. |\n| [`linkedin`](linkedin/) | `linkedin` | Create and manage LinkedIn member and page posts through LinkedIn's official OAuth APIs only. |\n| [`mailchimp`](mailchimp/) | `mailchimp` | A Python CLI tool for managing Mailchimp via the Marketing API v3.0. |\n| [`medium`](medium/) | `medium` | Browser-based draft creation for Medium through Medium's real web composer. |\n| [`photos-app`](photos-app/) | `photos-app` | Query and export photos from the macOS Photos library. Uses SQLite for fast metadata queries and AppleScript for exports (which handles iCloud downloads automatically). |\n| [`pinterest`](pinterest/) | `pinterest` | Command-line access to Pinterest API v5 for authenticated account, board, and pin reads. |\n| [`podio`](podio/) | `podio` | A command-line interface for the Podio API built with Python and Typer. Automate and manage your Podio workspace from the terminal. |\n| [`powerpoint-slide-recorder`](powerpoint-slide-recorder/) | `powerpoint-slide-recorder` | Record narrated PowerPoint slides. |\n| [`snagit`](snagit/) | `snagit` | A command-line interface for managing Snagit capture files (.snagx format). |\n| [`techsmith`](techsmith/) | `techsmith` | A command-line interface for [Techsmith](https://www.techsmith.com/resources/affiliate-partners/) using browser automation. Browser CLI for TechSmith affiliate workflows. |\n| [`tiktok`](tiktok/) | `tiktok` | A command-line interface for downloading TikTok video transcripts using yt-dlp. |\n| [`twelvelabs`](twelvelabs/) | `twelvelabs` | A command-line interface for the [TwelveLabs API](https://docs.twelvelabs.io) - video AI for video understanding, indexing, and text generation. |\n| [`udemy`](udemy/) | `udemy` | Command-line access to Udemy instructor courses. Course list/get commands use the Udemy Instructor API. Course management read/update commands use an authenticated browser session because Udemy does not provide an API for those manage pages. |\n| [`whisper`](whisper/) | `whisper` | A standardized command-line wrapper for [OpenAI Whisper](https://github.com/openai/whisper) speech-to-text transcription. |\n| [`wordpress`](wordpress/) | `wordpress` | A command-line interface for managing WordPress posts and media via the [WordPress REST API](https://developer.wordpress.org/rest-api/). Supports creating posts from manual content, DOCX files, or Markdown files with automatic image upload and link processing. |\n| [`x`](x/) | `x` | A command-line interface for the [X API](https://api.twitter.com). Post tweets to X.com. |\n| [`youtube`](youtube/) | `youtube` | Downloads public YouTube videos/transcripts with yt-dlp and manages authenticated channel videos through the YouTube Data API v3. |\n\n### Productivity \u0026 Workspace\n\n| Tool | Command | What it does |\n| --- | --- | --- |\n| [`airtable`](airtable/) | `airtable` | A command-line interface for the [Airtable API](https://airtable.com/developers/web/api/introduction). Manage Airtable records and fields from the command line. |\n| [`asana`](asana/) | `asana` | Command-line interface for the Asana API - manage projects, tasks, custom fields, and more. |\n| [`atlassian`](atlassian/) | `atlassian` | A command-line interface for [Atlassian](https://www.flexoffers.com/affiliate-programs/atlassian-affiliate-program/) using browser automation. CLI interface for Atlassian affiliate-program browser automation. |\n| [`claude-code-sessions`](claude-code-sessions/) | `claude-code-sessions` | A standardized command-line wrapper for [claude](). Query and analyze Claude Code session data from ~/.claude. |\n| [`cliclick`](cliclick/) | `cliclick` | A Python wrapper for [cliclick](https://github.com/BlueM/cliclick), the macOS command-line tool for emulating mouse and keyboard events. |\n| [`codex-sessions`](codex-sessions/) | `codex-sessions` | Query and analyze OpenAI Codex session transcripts stored under `~/.codex`. |\n| [`copilot`](copilot/) | `copilot` | Command-line interface for managing Microsoft Copilot Studio agents via the Dataverse API. |\n| [`dropbox`](dropbox/) | `dropbox` | A command-line interface for [Dropbox](https://www.dropbox.com). Manage files, folders, and account information directly from your terminal. |\n| [`gemini`](gemini/) | `gemini` | A command-line interface for the [Google Gemini API](https://ai.google.dev/gemini-api/docs). Supports video analysis, content generation, and file management. |\n| [`globiflow`](globiflow/) | `globiflow` | A command-line interface for [Globiflow](https://workflow-automation.podio.com) using browser automation. Globiflow workflow automation for Podio. |\n| [`google`](google/) | `google` | Command-line interface for Google Workspace APIs (Docs, Drive, Sheets, Gmail, Calendar, Chat), Google Analytics, Google Search Console, and Google Cloud. |\n| [`grammarly`](grammarly/) | `grammarly` | Command-line interface for the Grammarly Plagiarism Detection API. |\n| [`imessage`](imessage/) | `imessage` | CLI tool for interacting with iMessage on macOS. Uses SQLite for fast reads from the Messages database and AppleScript for sending messages. |\n| [`lastpass`](lastpass/) | `lastpass` | A standardized command-line wrapper for [lpass](https://github.com/lastpass/lastpass-cli) (LastPass CLI). |\n| [`manus`](manus/) | `manus` | Complete reference for the `manus` command-line interface for interacting with Manus AI services. |\n| [`mindmeister`](mindmeister/) | `mindmeister` | A command-line interface for the [MindMeister API](https://developers.mindmeister.com/docs) - manage mind maps from the terminal. |\n| [`msword`](msword/) | `msword` | Read Word documents, convert to Markdown, and extract comments with context. |\n| [`notifier`](notifier/) | `notifier` | A command-line wrapper for [terminal-notifier](https://github.com/julienXX/terminal-notifier) to send macOS desktop notifications. |\n| [`notion`](notion/) | `notion` | Complete reference for the `notion` command-line interface for querying and managing Notion databases and pages. |\n| [`onedrive`](onedrive/) | `onedrive` | A command-line interface for [OneDrive for Business](https://learn.microsoft.com/en-us/graph/onedrive-concept-overview) via Microsoft Graph API. |\n| [`reminders`](reminders/) | `reminders` | Command-line interface for managing macOS Reminders using the EventKit framework. |\n| [`slack`](slack/) | `slack` | A command-line interface for the [Slack API](https://docs.slack.dev). Manage channels, messages, users, files, notifications, and more from the terminal. |\n| [`things`](things/) | `things` | A command-line interface for Things 3 on macOS. Uses SQLite for fast reads and AppleScript for reliable writes. |\n\n### Infrastructure \u0026 Automation\n\n| Tool | Command | What it does |\n| --- | --- | --- |\n| [`cloudflare`](cloudflare/) | `cloudflare` | A command-line interface for the [Cloudflare API](https://developers.cloudflare.com/api/). Manage Cloudflare zones and cache. |\n| [`cryptocom`](cryptocom/) | `cryptocom` | Command-line access to the Crypto.com Exchange REST API for public market data and authenticated account data. |\n| [`freshbooks`](freshbooks/) | `freshbooks` | Complete reference for the `freshbooks` command-line interface for managing FreshBooks accounting data. |\n| [`n8n`](n8n/) | `n8n` | Manage n8n server - nodes, executions, credentials, data tables, and logs. |\n\n### Consumer Services \u0026 Devices\n\n| Tool | Command | What it does |\n| --- | --- | --- |\n| [`apple`](apple/) | `apple` | Read-only Apple purchase and subscription history lookup using the private `reportaproblem.apple.com/api/purchase/search` endpoint with a persisted Apple browser session. |\n| [`fitnesspal`](fitnesspal/) | `fitnesspal` | A read-only command-line interface for [MyFitnessPal](https://www.myfitnesspal.com/). View your diary, exercises, measurements, reports, food database, recipes, and saved meals. |\n| [`kick`](kick/) | `kick` | A command-line interface for [Kick.co](https://www.kick.co) - the self-driving bookkeeping platform. |\n| [`monarch`](monarch/) | `monarch` | A command-line interface for [Monarch Money](https://monarchmoney.com) personal finance. |\n| [`ring`](ring/) | `ring` | A command-line interface for [Ring](https://ring.com/) doorbells, cameras, chimes, and intercoms. Wraps the [`ring-doorbell`](https://python-ring-doorbell.readthedocs.io/) Python library -- same library that powers the Home Assistant integration. |\n| [`roomba`](roomba/) | `roomba` | A command-line interface to control iRobot Roomba vacuums using the [roombapy](https://github.com/pschmitt/roombapy) library. |\n\n## Operating Standards\n\nThese rules are intentionally short here; individual tools keep service-specific details in their own README files.\n\n- Data commands output JSON by default. Do not add redundant `--json` flags.\n- `get` commands return the resource object. `list` commands return the resource array.\n- stdout is for data only. stderr is for progress, warnings, and confirmations.\n- API-backed tools expose `auth login`, `auth status`, and `auth logout` when authentication is required.\n- Browser-backed tools should reuse shared browser/profile helpers instead of custom browser lifecycle code.\n- Credentials belong in the CLI-tools secret manager or the tool-owned profile/config path, never in source files.\n\n## User Profile Storage\n\nEach tool's user profile folder is `~/.local/share/cli-tools/\u003ctool\u003e`. Non-authentication configuration for the tool lives in `~/.local/share/cli-tools/\u003ctool\u003e/.env`.\n\nAuthentication-related data lives under `~/.local/share/cli-tools/\u003ctool\u003e/authentication_profiles/\u003cprofile\u003e/`, including the profile `.env`, OAuth tokens, API keys, browser session data, auth markers, and auth-tied cache/state.\n\n## Repository Layout\n\n```text\ncli-tools/\n  \u003ctool\u003e/                  # one installable CLI package\n    pyproject.toml\n    \u003ctool\u003e_cli/\n    README.md\n  _repo/cli-tools-shared/        # shared runtime library\n  _repo/_secret-manager/          # credential helper for CLI tooling\n  _repo/agents/                   # repo-owned expert agent definitions\n    cli-tool-expert.toml\n    cli-tool-expert.md\n  _repo/skills/                   # agent-facing skill bundles for CLI usage\n    cli-tool/\n    cli-tool-secrets/\n    \u003ctool\u003e-cli/\n      SKILL.md\n      usage.json\n```\n\n## Add or Refresh a Tool\n\n```bash\n_repo/_scripts/install-cli-tool.sh \u003ctool-folder\u003e\n```\n\nEach tool keeps its own package metadata, README, tests, and matching `_repo/skills/\u003ctool\u003e-cli/` agent skill. Use the shared runtime library for common auth, output, cache, and browser-session behavior.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadbertram%2Fcli-tools","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fadbertram%2Fcli-tools","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadbertram%2Fcli-tools/lists"}