getbrevo/brevo
v1.0.0MIT
Brevo skills for AI agents, connected to the Brevo MCP server. Installed skills are used first and can be checked against the latest version.
Changelog
All notable changes to this project are listed here. Versions follow
semantic versioning; each skill also has its own version in its
skill.json.
1.0.0 (unreleased)
Documentation
- The README leads with the skills, an example prompt for each, and the two most common installs; the other agents are folded away. It links to the releases, the changelog and the issue tracker, and a test fails when a skill has no README row.
- More plugin keywords, and a maintainer checklist for the repository description and topics
in
docs/publishing.md.
Changed
- Skills no longer trigger a redundant
get_brevo_guidecall when they are already loaded (installed, plugin or upload). The note on every single-skill tool, the server instructions and theget_brevo_guidedescription now say: use the loaded skill, otherwise call the tool. The new shared blockshared/skill-source.mdtells the agent where the skill comes from and how to install it once (plugin,npx skills add,brevo skill install). list_brevo_guidestakes an optionalinstalledmap (skill name to the version in itsSKILL.mdmetadata) and returns a status per guide:current,stale(with an update hint:brevo skill update, orget_brevo_guideplus a plugin refresh or ZIP upload),ahead,unknownornot_installed. Each guide in the manifests now carries its skill version. The server only reports; it fetches and writes nothing.shared/skill-source.mdalso holds six working rules every step follows (steps in order, only the skill's tools, confirm before a write, read once, report only what a tool returned, the user's language).yarn validatenow fails a non-synced skill that has tools and does not include it,yarn new-skilladds the include, and AGENTS.md and CONTRIBUTING explain it.- The plugin description and the
list_brevo_guidesandget_brevo_guidedescriptions mention keeping skills current and point to the repository. - Publishing no longer copies the whole folder: only the generated skills, the plugin
manifests,
catalog.json,brevo-skills.jsonandCHANGELOG.mdare written to the public repository, plus the skills table of its README (between theskills-tablemarkers, byscripts/readme-table.mjs). Nothing else in the public repository is touched or deleted. - The server instructions tell an agent with no shell and no plugin to read the release's
catalog.json, download<name>-<version>.zipand check it againstSHA256SUMS, and to callget_brevo_guideif it can't fetch or check it. Only servers that have guides get this line. docs/publishing.md: the manual evals step before a release, and where fixes go.- Publishing follows the server release instead of a
skills-vtag: after the production deploy the publish job compares the built skills with the published copy and pushes nothing when no skill changed. The release isv<version>frombrevo-skills.json, andyarn check-versionsnow fails a pull request that changes the skills without bumping it. email-test-send1.0.2 andemail-brand-kit1.0.1: includeshared/skill-source.md.email-brand-kit1.0.2: status set tobetafor now.
0.1.0 (unreleased)
Added
email-brand-kit(public 1.0.0): reads the account's brand kit (logo, colours, fonts, social links) and turns it into email styles; sets it up from the user's website or changes one part, only after the user approves a before/after. The shared rules blockshared/email-cache.mdkeeps what a conversation has already read; evals added.- Grok:
.grok-plugin/marketplace.json, and the MCP server declared in its manifest (Grok reads.mcp.jsonor the manifest, notmcp.json). Cursor declares the server inline too. yarn new-skill: scaffolds a skill (skill.jsonas a draft, aSKILL.mdskeleton with the shared includes, one example eval case), refuses an existing or invalid name, and validates the result..claude/skills/add-brevo-skillguides contributors using Claude Code through the same steps; it isn't part of the shipped plugin.brevo-cli(public): synced fromgetbrevo/brevo-cli.brevo-cli1.1.0: synced the agent-neutral skill text from getbrevo/brevo-cli#138 (brevo skill:cli install --agent codex|gemini|all);min_cli_version2.5.0.brevo-cli1.2.0: synced the skill text from getbrevo/brevo-cli#150 (brevo skill install,brevo skill check, install for Claude Code, Codex and Gemini CLI);min_cli_version2.6.0.email-test-send1.0.0 (beta): send a test of one email template to addresses the user chooses. Itstool_notescarry the empty-recipient-list warning fortemplates_send_test_template.email-test-send1.0.1: no longer targets Gemini. The google server does not exposetemplates_get_smtp_templateortemplates_send_test_template, so its guide named tools an agent there cannot call. It comes back when those tools are on that server.mcpadapter: server instructions, skill resources and prompts, and tool notes for each platform server of the Brevo MCP server (dist/mcp/), packaged by the release as the MCP text ZIP that the server's own update workflow pulls. Each skill is also a guide for the server'sget_brevo_guidetool, pointed to from the instructions and from the description of every tool that belongs to a single skill, since tools are the one MCP feature every client supports.catalog.jsonfor installers: files, sha256,defaultandmin_cli_versionper skill.- MCP server instructions tell agents with a shell to install the skills locally with
brevo skill install, and agents without one to callget_brevo_guide. - A PR that changes a skill must bump its version (
yarn check-versions). Skills are text only. - Packages for Claude Code, Agent Plugins (ChatGPT, Codex), Cursor, Grok, Gemini CLI, Antigravity, and condensed instructions for APIs.
requiresinskill.json: a skill that needs a terminal (shell) gets the Agent Skillscompatibilityfield and is left out of chat-only targets (upload ZIPs, instructions).- Public-repo standards: security policy, issue and PR templates, Dependabot, actions pinned to SHAs, a release environment with required reviewers, and build provenance on release artifacts once the repository is public.
- Checks: skill validation, generated files in sync, manifest schemas, public safety, and the MCP tool contract.
- Security scan of the skill text with NVIDIA SkillSpector (
yarn scan, pinned to one commit): warn-only on pull requests, a manual full audit that fails on findings. - A CI guard that refuses edits to a synced skill outside its
skill.json, pointing at the source repo instead. - Release notice on Slack: every release posts which skills changed and the exact ZIPs (with
sha256) to upload by hand in claude.ai and ChatGPT, through a Slack Workflow Builder
trigger held in a secret (
scripts/release-notice.mjs,notifyjob). Dispatching the release workflow with atagre-sends it.
Security
sync-skill: a source ref must start with a letter or digit and is passed togit fetchafter--, so a ref can't be read as a git option (the workflow input check matches).- The scan script installs SkillSpector's dependencies from a hash-pinned list
(
scripts/skillspector-requirements.txt) and the scanner itself with--no-deps, so no unpinned package is fetched when the scanner is bootstrapped.
Changed
- The skills that drive the Brevo MCP server (
brevo,email-test-sendandemail-template-from-html) are held out of this release until their tools are on the server; they come back in a follow-up change. Onlybrevo-cliships. Adraftskill is still validated but ships nowhere (not inskills/, the manifests, the catalog, the router's routes table ordist/mcp). catalog.jsoncarriesmcp(serverNameand the endpoint per platform) frombrevo-skills.json, so an installer can register the Brevo MCP server. The hash contract (sha256,source_sha256) is documented for installers indocs/architecture.md.- Generated
SKILL.mdfrontmatter carriesmetadata.author: brevonext tometadata.version(replacingpublisher): the fieldsnpx skillsand skills.sh read.