keeptrack

Keeptrack plugins: Claude, Codex, Cursor (and chat apps)

One plugin folder serves every tool: board/kit/ in rain-ventures-ai/keeptrack. It holds keeptrack.py (the command-line tool), skills/keeptrack/SKILL.md (daily use and board-status audits), skills/keeptrack-notes/SKILL.md (meeting transcript and notes import), skills/keeptrack-email/SKILL.md (mailbox-to-contact reconciliation), skills/onboard-keeptrack/SKILL.md (guided CRM/task import) and one small manifest for each tool. The specialist skills are also copied into every board repo by the kit, so they can be discovered before or after opening the board repo.

Claude Code: first choose where the session runs

Inside a board repo, no plugin is needed. The repo already contains CLAUDE.md, .claude/skills/board/ and board/keeptrack.py.

Official Claude documentation: cloud sessions can have multiple repos, but do not load installed or repo-declared plugins: https://code.claude.com/docs/en/desktop#install-plugins

Install for another local project

Check first with claude plugin list (or /plugin): if keeptrack@keeptrack is there, skip this.

claude plugin marketplace add rain-ventures-ai/keeptrack
claude plugin install keeptrack@keeptrack

Or in a session: /plugin marketplace add rain-ventures-ai/keeptrack, then /plugin install keeptrack@keeptrack.

Keep it updated: /plugin → Marketplaces → keeptrack → Enable auto-update. Claude Code updates the plugin when version in .claude-plugin/plugin.json changes (0.<kit version>.<patch>), so bump it with each release. To update by hand: claude plugin marketplace update keeptrack.

Settings form (~/.claude/settings.json):

{
  "extraKnownMarketplaces": { "keeptrack": { "source": { "source": "github", "repo": "rain-ventures-ai/keeptrack" }, "autoUpdate": true } },
  "enabledPlugins": { "keeptrack@keeptrack": true }
}

The plugin gives the skill keeptrack:keeptrack, keeptrack.py at ${CLAUDE_PLUGIN_ROOT}/keeptrack.py, and a hook (hooks/auto-heartbeat.sh) that sends a quiet heartbeat while a task claim is active. Its directory icon is .claude-plugin/icon.png.

Claude Desktop and Cowork (no terminal)

First look in Customize → Plugins: if keeptrack is already installed, just check it is switched on. If the rain-ventures-ai/keeptrack marketplace is already listed, install keeptrack from it. Otherwise: Customize → Plugins → Add → Add marketplace, type rain-ventures-ai/keeptrack, then install keeptrack. A Team or Enterprise admin can add the marketplace for the whole organisation. Then say, for example, “Who do I need to follow up with today?” or “Help me write a LinkedIn message to the CEO of Acme”.

The plugin is not used by the Code tab of the Claude phone or desktop app, or by claude.ai/code: those are Claude Code cloud (above). Ordinary Claude chat on claude.ai or the phone app cannot run keeptrack.py; it uses the Relay connector (below).

Not yet checked: whether the Cowork sandbox lets keeptrack.py reach api.github.com. If it cannot, use Claude Code on the web or in the Claude app’s Code tab, in a session on the board repo: it saves with no token.

Codex (CLI, IDE extension, app)

codex plugin marketplace add rain-ventures-ai/keeptrack

Then install keeptrack from the plugin browser (/plugins). The marketplace file is .agents/plugins/marketplace.json; the plugin manifest is board/kit/.codex-plugin/plugin.json. Codex also reads plain skills from .agents/skills/ in a repo or ~/.agents/skills/. The skill finds keeptrack.py two folders above its SKILL.md (../../keeptrack.py), so copy both with this layout:

.agents/
  keeptrack.py                 <- board/kit/keeptrack.py
  CARDS.md                     <- board/kit/CARDS.md
  skills/
    keeptrack/
      SKILL.md                 <- board/kit/skills/keeptrack/SKILL.md

That is .agents/skills/keeptrack/ for the skill and .agents/keeptrack.py for the CLI (not .agents/skills/keeptrack.py). The same shape works under ~/.agents/. Use BOARD_AGENT=codex and your own BOARD_SESSION. Codex has no heartbeat hook: while it holds a claim it runs keeptrack.py heartbeat itself at least every 15 minutes.

Cursor

In Agent chat: /add-plugin https://github.com/rain-ventures-ai/keeptrack. A team admin can import the repo under Dashboard → Settings → Plugins → Team Marketplaces. The manifests are .cursor-plugin/marketplace.json and board/kit/.cursor-plugin/plugin.json. Use BOARD_AGENT=cursor.

ChatGPT, Grok and Claude chat (no shell)

These apps cannot run keeptrack.py. They reach a board through the Relay connector, a small remote MCP server the owner hosts (connector/README.md in rain-ventures-ai/keeptrack-relay, a private repo: ask the board owner). It runs the board’s own keeptrack.py for every read and write, puts new cards in Backlog, and lets only an app the owner marks approve move a card to To do (and starts the dispatcher, or edits cards already approved). Each app gets its own URL, https://<host>/mcp/<client token>. That URL is a secret: anyone who has it can act as that app, so rotate it if it leaks.

Set-up for every place an assistant runs (chat apps, Claude Code projects and terminals, Codex, Grok Bot, routines): relay/ENVIRONMENTS.md in keeptrack-relay (private). Without the connector, use 🤖 Copy for AI on a person in the web board: paste it into the app, get the draft, and log it on the board yourself.

Each project: which board?

In a project that is not the board repo, run (or ask the agent to run):

python3 <plugin>/keeptrack.py use your-name/my-keeptrack --user your-name --token-env KEEPTRACK_TOKEN
python3 <plugin>/keeptrack.py where

What it runs, sends and changes

Facts from the code, so you can decide what to allow. File names are in rain-ventures-ai/keeptrack.

What leaves your machine (the command-line tool, board/kit/keeptrack.py).

What leaves the browser (the web board, board/board.js).

Programs it starts.

Program When
git To find the board repo and branch from the clone, to read and write board files in a clone, the git-push fallback, and the kit checks above
gh gh api and gh auth token, when BOARD_TOKEN is not set and gh is installed
python3 on an automation’s check.py or tests Only for an automation pack you installed (automation tick, setup, test). It runs with a private temporary home, bounded output and a time limit, and on Linux without network access (unshare -rn) unless its manifest asks for network and you granted it at install
unshare -rn true To test whether that network isolation is available (Linux)

What the hooks see and do (board/kit/hooks/, and board/kit/templates/settings.json in a board repo).

What it writes on your machine.

Limits