Skip to main content

ea-plugin-cli

Encre Agent Plugin Market Unified CLI

PyPI | Changelog

GitHub PyPI Python License

The single toolchain that takes a plugin from scaffold to the central registry. After publishing, the registry CI merges catalog entries into the ea-cwh index package, which the market backend renders locally.

🤖 What is ea-plugin-cli?

encre-plugin covers the full plugin lifecycle for the Encre Agent plugin market:

  • Scaffold — generate a ready-to-publish ea-plugin-<name> package skeleton
  • Build — enforce central-registry policy, compile a wheel, digest every artifact
  • Verify — smoke-test the wheel in an isolated venv (install, import, manifest probe)
  • Publish — upload to PyPI, then open the central-registry catalog PR automatically

Installation

Ready to run: python build.py cli compiles a single-file executable for the
current platform (build/cli/encre-plugin[.exe] — no pip install required; it
shells out to a host Python found on PATH for build/venv/twine and
auto-installs any missing components on first use)

Or as a module: pip install ea-plugin-cli   # development: pip install -e cli/

⭐ Commands

Command Purpose
encre-plugin init <name> Scaffold ea-plugin-<name> (pyproject + ea.plugins entry point + create_plugin factory + ui/ directory)
encre-plugin build [pkg_dir] Run central-registry policy checks → python -m build (wheel + sdist) → sha256 per artifact → write dist/ea-build-info.json (draft catalog entry)
encre-plugin vendor Official batch build: walk core/ea_tools/* (accepts the ea-tool-/ea-skill- namespaces and the system-default tier), build + digest each package with the same policy, stage catalog.d/<name>.json and wheels into dist/vendor/ (staging only — no upload, no PR). Invoked by python build.py vendor
encre-plugin verify [pkg_dir] Install the wheel into a throwaway venv, import the entry-point factory and probe the manifest
encre-plugin publish [pkg_dir] twine upload to PyPI, then open a central-registry PR: the entry lands in the registry checkout's catalog.d/, git branch is cut from origin/main, committed, pushed, gh pr create
encre-plugin catalog regen Merge the registry's catalog.d/*.json → validate → write the ea-cwh catalog.json
encre-plugin catalog check <file> Validate a single catalog.json

📦 publish ↔ Central Registry

  • --registry-dir <dir> — use an existing registry checkout; when omitted, the CLI clones https://github.com/mf2023/ea-cwh.git into a local cache (%LOCALAPPDATA% / ~/.cache → encre-plugin-cli/registry) and hard-syncs it to origin/main every run
  • --registry-url <git url> — override the default remote (point at a fork or a local bare repository to rehearse the whole flow)
  • --no-upload — skip the twine upload, run the registry-PR half only
  • --dry-run — print the files that would be uploaded and the catalog entry; no remote action
  • The PR branch carries exactly one file (catalog.d/<name>.json): the branch is cut from origin/main before the entry is written, so no dirty worktree state can leak into the PR
  • Transition note: verify needs encre-harness to be importable inside the probe venv; for local development either pip install -e harness/ or use --no-deps plus a PYTHONPATH pointing at the source trees

🛡️ Central Registry Policy (enforced at build time)

# Rule
1 The PyPI distribution name must start with a reserved prefix — ea-plugin- (community) or ea-tool- / ea-skill- (vendor namespaces)
2 Must declare [project.entry-points."ea.plugins"]; one wheel carries exactly one plugin
3 Manifest name/version/description/author/license must be non-empty, manifest.version must match the pyproject version, and tier must be user (vendor builds may also ship system-default)
4 Must declare min_ea_version or engines["encre"]
5 Packages that declare UI (provides_ui / contributes.ui) must ship it pre-compiled under ui/ and include it as package data — the install side never executes builds

🔧 Environment Variables

  • PyPI credentials: TWINE_USERNAME / TWINE_PASSWORD (CI uses trusted publishing and needs neither)
  • The automatic PR requires the registry checkout to have git remote add origin and a logged-in gh CLI

🌏 Community & License

📄 License

Apache License 2.0

This project uses the Apache License 2.0.

Metadata

Release files for ea-plugin-cli 0.20261001.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ea-plugin-cli 0.20261001.3
File Size Uploaded
ea_plugin_cli-0.20261001.3.tar.gz 18.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for ea-plugin-cli 0.20261001.3
File Interpreter ABI Platform
ea_plugin_cli-0.20261001.3-py3-none-any.whl Python 3 none any Details

Total release size: 36.0 kB

Release files / ea_plugin_cli-0.20261001.3.tar.gz

Download URL ea_plugin_cli-0.20261001.3.tar.gz
Size 18.2 kB
Tags Source
SHA-256 checksum
How to use checksums
7cc00be017661220dda19023221a8cc2f70e7a192c73a113b6181df7a35955b1
BLAKE2b-256 checksum
How to use checksums
3821f28448f21dc32ce0aee720d5ff9fd3fdadc4d912bdcc741e571d651302c6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / ea_plugin_cli-0.20261001.3-py3-none-any.whl

Download URL ea_plugin_cli-0.20261001.3-py3-none-any.whl
Size 17.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b0e8a4ccda482299e77bc05496ed55e9e19168b14f8c2e3ebe67168d28536c9b
BLAKE2b-256 checksum
How to use checksums
688bcc8b2f2098a46b478a4e96c95335e6dc8663b10b9151a9e3040f20e5fed6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release history Release notifications | RSS feed

This release

0.20261001.3 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page