Claude Code plugin
The plugin wraps the MCP server in ergonomic slash commands and adds one thing agents can't get from tools alone: an automatic summary of what changed, delivered the moment a session starts.
Install
Run these from Claude Code's prompt. The plugin brings the MCP server with it, so there's nothing else to wire up — on install you're prompted for your AgentsWorklog URL and an agent token.
# add the AgentsWorklog plugin marketplace /plugin marketplace add Walnut-Tree-Studios/AgentsWorklog # install the plugin (named "activity") /plugin install activity
Configure & troubleshoot
Change either install prompt any time with /plugin → reconfigure
activity, then /reload-plugins. The two values
are stored differently: the URL is a plain option in
~/.claude/settings.json (hand-editable), while the
token is declared sensitive, so Claude Code keeps it in your OS secure
storage — an awl_api_token pasted into
settings.json by hand is ignored, and the server
keeps sending the old keychain copy (a classic source of stubborn
401s after rotating a token).
// ~/.claude/settings.json — the URL is a plain, hand-editable option. // The token is sensitive: it lives in your OS secure storage, NOT here. { "pluginConfigs": { "activity@agentsworklog": { "options": { "awl_api_url": "https://app.agentsworklog.com" } } } }
After any change, run /reload-plugins (or restart the session) —
the MCP server only reads these values when it launches.
awl_api_url must be your instance's canonical origin, exactly. A legacy
or alias domain answers with a redirect, and the Authorization header is
dropped when the request is redirected — so every call fails 401 Unauthorized
even though the token is valid.
If Claude Code's permission layer gates or re-prompts on the worklog tools (common in auto permission mode), allowlist the server so coordination calls run without friction. The reads are safe to auto-approve:
// ~/.claude/settings.json — let the worklog tools run without prompting { "permissions": { "allow": ["mcp__plugin_activity_activity-monitor"] } }
That entry covers the plugin-installed server. For a manually configured server the prefix is
the server name you declared — mcp__activity-monitor. To allow only
reads, list individual tools instead (e.g.
mcp__plugin_activity_activity-monitor__activity_check).
Teams & cloud sessions
User-level install only covers your own machine. To give every teammate — and every cloud-executed session (the claude.ai coding tool / claude.ai/code, which run in a sandbox with no local plugin config and no OS keychain) — the plugin automatically, commit project-scoped enablement to the repo:
// .claude/settings.json — committed to the repo, so every teammate and // every cloud session installs the plugin automatically { "enabledPlugins": { "activity@agentsworklog": true }, "extraKnownMarketplaces": { "agentsworklog": { "source": { "source": "url", "url": "https://app.agentsworklog.com/marketplace.json" } } } }
Each teammate then mints their own agent token (tokens are one-per-user) and pastes
it at the install prompt. For cloud sessions, where there's no prompt and no keychain, set
AWL_API_URL and AWL_API_TOKEN as
environment secrets in the cloud environment's configuration — the
environment variables take precedence over plugin config. If the environment restricts
network egress, allowlist your instance's domain.
Slash commands
The plugin adds a set of /activity:* commands so you (or the agent) can
drive the worklog without remembering tool names. Notables are managed under the same namespace —
there is no separate /notable:* namespace.
| Command | Does |
|---|---|
/activity:check | Check whether planned work overlaps active sessions before you start. |
/activity:start | Register an Activity Log for the work you're about to start. |
/activity:update | Update scope, risk, PR link, or heartbeat on your log. |
/activity:complete | Mark your log complete — merged or abandoned. |
/activity:overview | Show current activity: active sessions, Notables, Draft PRs, feed URL. |
/activity:notables | List active Notables (filters: --area, --importance, --since). |
/activity:create-notable | Raise a new Notable. |
/activity:live-url | Print the live activity-feed URL for this repository. |
/activity:init | Install or update the coordination block in AGENTS.md / CLAUDE.md. |
The session-start hook
When a session begins, the plugin calls session_summary and prints a brief
orientation instead of making the agent re-read every open PR. The summary covers:
- High and critical Notables — only these surface in the summary.
- Blocking and active work currently in flight.
- Recently merged PRs that may have moved the ground under you.
- Any Draft-PR reminders for active work without a PR link.
# session start · acme/web AgentsWorklog — 2 notables, 1 high-risk activity, 2 PRs merged since yesterday ▲ notable Payments v2 migration in progress don't touch src/billing/** until PR #479 lands (migration · expires 5d) ▲ notable src/auth/** is security-sensitive — second reviewer required ⚠ active "Refactor auth middleware" risk: high → Draft PR #482 ✓ merged #479 chore/payments-sdk · #476 fix/webhook-retry
The summary exists to save reading, not to issue orders. It points the agent at the Draft PRs, docs, and Notables worth checking — the agent decides what to do with that, and verifies before acting.
The commit gate
The plugin ships one intentional block. When a command would land code —
git commit or git push — but no Activity Log is
registered for the current branch, the plugin stops the commit and asks you to register one first.
It's the single guard-rail that keeps coordination honest; everything else the plugin does is
advisory. Register a log (/activity:start) and commits flow normally.