Skip to content

Install as a plugin ​

cully setup is the supported install. It also writes hooks, the skill and the MCP connection into each agent's user configuration. The repository additionally ships one plugin per agent, so you can add Cully's hooks and skill from the agent's plugin marketplace and let the agent update them.

Use one route per agent. A plugin and cully setup both register the same hooks, so running both makes each hook fire twice.

What a plugin contains ​

AgentHooksSkill/cully command
Claude CodeStop, SessionStart, SessionEnd, an asynchronous tool-event hook and the PreToolUse guardYesYes
CursorSession, response, stop and tool-event hooksYesYes
CodexSessionStart, an asynchronous tool-event hook and the PreToolUse guardYesNo: use /prompts:cully from cully setup

The hooks are the same ones setup installs. A test installs setup into a scratch home and fails if a plugin's hooks differ, and another test fails if a committed plugin file differs from its generator.

A plugin does not do three things, so keep these steps:

  • Install the CLI. Hooks run cully from your PATH, where setup writes an absolute path. Run the installer first.
  • Connect memory. A plugin cannot know your server URL. Run cully mcp add --agent AGENT --url URL, adding --oauth for a sign-in server.
  • Direct launches stay native. Plugin hooks run only inside cully run; starting claude, codex or cursor-agent directly runs no Cully hook.

Claude Code ​

text
/plugin marketplace add tavric-labs/cully
/plugin install cully@cully

Restart Claude Code, then run cully run claude for the terminal panel. Claude Code validates this plugin and marketplace in CI with claude plugin validate.

Codex ​

sh
codex plugin marketplace add tavric-labs/cully

Then install Cully from the Plugins directory in the Codex desktop app and start a new session. Codex runs plugin hooks only after you review and trust them, and OpenAI documents plugin hooks as supported for plugins you install yourself, not for its public directory. The manifest follows OpenAI's plugin documentation. It has not been installed in a live Codex here.

Cursor ​

The repository has a Cursor plugin and a marketplace manifest at .cursor-plugin/marketplace.json, in the format Cursor's plugin reference describes. That reference does not cover installing from a repository, and the plugin has not been installed in a live Cursor here. cully setup --agent cursor is the verified route.

Where the plugins are published ​

Plugin releases and directory submissions work as follows:

  • It runs the plugin drift tests, then attaches cully-plugin-claude.zip, cully-plugin-cursor.zip and cully-plugin-codex.zip to the GitHub release.
  • It adds the pinned install commands to the release notes, for example claude plugin marketplace add tavric-labs/cully@v0.19.0. The Claude Code and Codex marketplaces are this repository, so that is the publication.
  • One ongoing checklist tracks the steps that need a person for the latest release; releases do not create new submission issues. Anthropic's directory (a developer portal, paid claude.ai plan) and the Cursor Marketplace (a web form for the repository link) list a plugin only after a reviewed submission, and neither documents an API, so no workflow can submit for you. OpenAI documents Codex plugin hooks as not eligible for its public directory.
  • A separate CI job installs the Claude Code CLI and runs claude plugin validate on every change to a plugin, so a broken manifest cannot reach a release.

Each plugin folder has a README that says what the plugin does not do, as both directory checklists ask. The manifests omit version on purpose, so repository-marketplace users track the repository. Claude Code's strict validation, which Anthropic's portal also applies, asks for a version. Decide on one, and how to bump it each release, before you submit there.

The Cully MCP server is not part of any plugin or marketplace listing. You run it on your own infrastructure, so connecting memory stays a separate step: cully mcp add.

Develop the plugins ​

The files under plugins/ and the three marketplace manifests are generated by PluginFiles in internal/cully/plugins.go. After changing a hook, the skill or the /cully command, regenerate them:

sh
CULLY_UPDATE_PLUGINS=1 go test ./internal/cully -run PluginFiles

The manifests carry no version, so each agent tracks the repository instead of pinning an old release.

Built in the open. Apache 2.0 licensed.