Commit Graph

244 Commits

Author SHA1 Message Date
tobin
ffdae9a187 Align mcp-server-dev skills with claude.com/docs connector guidance
- build-mcp-server: load llms-full.txt for Claude-specific context;
  add Phase 6 (test in Claude, review checklist, submit, ship plugin)
- references/auth.md: add Claude auth-type table, callback URL,
  not-supported list
- references/tool-design.md: add Anthropic Directory hard requirements
  (annotations, name length, read/write split, prompt-injection rule)
- build-mcp-app: add Claude host specifics (prefersBorder,
  safeAreaInsets, CSP) and submission asset specs; testing via
  custom connector
- build-mcpb: note remote servers are the recommended directory path
2026-04-15 01:31:23 +00:00
Bryan Thompson
3ffb4b4ca8 Add adlc plugin (#1394) 2026-04-13 19:41:08 +01:00
Bryan Thompson
656b617198 Add base44 plugin (#1389)
Official Base44 plugin — full-stack app development with CLI project management
and JavaScript/TypeScript SDK skills. MIT licensed, skills-only (no MCP server).

Partner escalation from #plugin-partner-escalations.
Already merged on -internal (PR #1466, 2026-04-07).
2026-04-13 17:24:33 +01:00
Bryan Thompson
7ed523140f Add spotify-ads-api plugin (#1351)
Partner escalation from #plugin-partner-escalations (Lucas Smedley).
Spotify Ads Manager — skills-only plugin for managing ad campaigns
via Claude Code. Already published in community marketplace.

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 23:39:06 +01:00
Tobin South
9fc974ef8b Remove hosted slack plugin stub (#1305)
Co-authored-by: Claude <noreply@anthropic.com>
2026-04-10 23:02:18 +01:00
Bryan Thompson
9a6b30ebb4 Rename sanity-plugin → sanity (#1236)
Developer requested slug change from sanity-plugin to sanity.

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 14:55:24 -07:00
Bryan Thompson
d4e6f609d8 Add amplitude plugin (#1289) 2026-04-10 22:52:48 +01:00
Bryan Thompson
95f807ee6c Add cloudflare plugin (#1290) 2026-04-10 22:52:42 +01:00
Bryan Thompson
23a9a10ff7 Add azure-cosmos-db-assistant plugin (#1291) 2026-04-10 22:52:30 +01:00
Bryan Thompson
5c6c90c1bd Remove SHA pin from sonarqube-agent-plugins entry (#1311)
Allow SonarSource to ship updates without requiring SHA bump PRs.
The plugin tracks the default branch (main) going forward.

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 22:52:19 +01:00
Bryan Thompson
76f1e09f07 Add pydantic-ai plugin (#1202) 2026-04-10 22:51:53 +01:00
Noah Zweben
d19dab67e8 Add Apache 2.0 LICENSE to session-report plugin (#1306)
Co-authored-by: Claude <noreply@anthropic.com>
2026-04-10 20:46:37 +01:00
Noah Zweben
58578a456a fix(telegram): prevent zombie pollers from blocking new sessions with 409 Conflict (#1349)
* fix(telegram): prevent zombie pollers from blocking new sessions

The MCP server runs as a grandchild of the CLI (via `bun run start` →
shell → `bun server.ts`). When the CLI is killed uncleanly (SIGKILL,
crash, terminal close), the grandchild survives as an orphan and keeps
long-polling getUpdates indefinitely. Telegram allows only one consumer
per token, so every subsequent session sees 409 Conflict and the
existing retry loop spins forever.

Three layered mitigations:

- PID lockfile (STATE_DIR/bot.pid): on startup, SIGTERM any stale holder
  before claiming the slot, so a fresh session always wins.
- Orphan watchdog: every 5s check for parent reparenting (POSIX ppid
  change) or a dead stdin pipe, and self-terminate. Covers cases where
  the existing stdin end/close events never fire through the wrapper.
- 409 retry cap: give up after 8 attempts (~28s) instead of looping
  forever, and bail immediately if shutdown has begun.

Also adds a SIGHUP handler and removes the pidfile on clean shutdown
(only if still owned by this process).

* chore(telegram): bump version to 0.0.5

---------

Co-authored-by: Claude <noreply@anthropic.com>
2026-04-10 12:01:01 -07:00
Thariq Shihipar
1057d02c53 Merge pull request #1333 from anthropics/thariq/session-report-timeline
session-report: add per-day timeline and collapse cache-breaks
2026-04-09 21:45:42 -07:00
Thariq Shihipar
9dc3809e74 Add per-day session timeline and collapse cache-breaks list
- analyze-sessions.mjs: track per-session start/end/tokens and emit
  by_day[] in JSON output (date, dow, tokens, peak concurrency,
  per-session spans). Hoist shared token-sum in commit loop.
- template.html: new "session timeline by day" section — horizontal
  day pills (% of total + session count) drive a lane-packed gantt of
  concurrent sessions, colored by project, with hover details and
  ←/→ keyboard nav. Extract drillList() helper and use it for both
  top-prompts and cache-breaks (5 visible + "show more" toggle).
2026-04-09 21:32:34 -07:00
Bryan Thompson
6e43e87fc8 Add box plugin (box/box-for-ai) — first-party skills plugin for Box Platform integrations. (#1286)
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 22:11:31 +01:00
Bryan Thompson
b32879bf76 Add SAP CAP MCP Server plugin (cds-mcp) (#1328)
URL-source plugin pointing to cap-js/mcp-server which already has
.claude-plugin/plugin.json and .mcp.json at repo root.

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 20:30:37 +01:00
Tobin South
98c01d3fbf Add zoom-plugin to official marketplace (#1313)
Promotes zoom-plugin from community-internal (PR #1567, merged
2026-04-07) to official. Uses url source pointing at
github.com/zoom/zoom-plugin without a SHA pin to track upstream.

Ref: DIR-77, DIR-79
2026-04-08 23:42:03 +01:00
Tobin South
ce0166dde2 Add expo plugin to official marketplace (#1312)
Promotes expo from community to official. Uses git-subdir source
(expo/skills @ plugins/expo, ref main) without a SHA pin so it
tracks upstream. Description cleaned to remove the reviewer-note
preamble that leaked into the community entry.

Ref: DIR-77, DIR-79
2026-04-08 14:31:55 -07:00
Thariq Shihipar
62f2063abc Merge pull request #1293 from anthropics/thariq/session-report-plugin
Add session-report plugin
2026-04-08 09:35:14 -07:00
Thariq Shihipar
66ca8fc540 Sort session-report plugin into marketplace order 2026-04-08 09:31:35 -07:00
Thariq Shihipar
147ddf8ee3 Add session-report plugin
Generates an explorable HTML report of Claude Code session usage from
local ~/.claude/projects transcripts: total tokens, cache efficiency,
per-project/subagent/skill breakdowns, most expensive prompts with
transcript context, and cache breaks. Terminal-styled, single-file
output with sortable tables and expandable drill-downs.
2026-04-07 17:40:13 -07:00
Sarah Deaton
104d39be10 Merge pull request #885 from anthropics/sarah/restore-reload-plugins-readme
Restore /reload-plugins step in telegram/discord READMEs
2026-04-03 11:44:30 -07:00
Bryan Thompson
decc737a56 Add sonarqube-agent-plugins plugin (#1085)
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 10:13:39 -05:00
Bryan Thompson
0484869680 remove(plugin-json): zoominfo — Cowork-only plugin (#1204)
ZoomInfo submitted with platform "Claude Cowork" on their form (2/24/2026)
and is correctly listed on knowledge-work-plugins. This entry was swept
into -official via staging merge PR #730 but should not be on the Claude
Code plugin marketplace.

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 08:06:01 -05:00
Bryan Thompson
b091cb4179 Merge pull request #1188 from anthropics/tobinsouth-patch-1
Removing posthog pin
2026-03-31 17:15:14 -05:00
Tobin South
a54e5292a6 Removing posthog pin 2026-03-31 22:04:18 +01:00
Bryan Thompson
52e95f6756 Add mongodb plugin (#1095)
Official MongoDB plugin (MCP Server + Skills) from mongodb/agent-skills.
Partner escalation — submitted via PR #158, Forge, and Slack.
Already merged on -internal (PR #667).
2026-03-31 01:04:48 +01:00
Bryan Thompson
9ed16511d1 Add UI5 plugins from SAP (ui5 + ui5-typescript-conversion) (#1086)
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-31 01:04:27 +01:00
Bryan Thompson
92e3c1ce6e Update postman plugin to latest version (#1080)
Bumps pinned SHA from 0714280 (Feb 20) to 40b11ac (Mar 26).
New commit adds private network search support.

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-31 01:03:09 +01:00
Kenneth Lien
31e7200b33 Merge pull request #1055 from anthropics/kenneth/imessage-permission-selfchat-only
imessage: restrict permission relay to self-chat, fix echo filter & tapback noise
2026-03-30 14:08:48 -07:00
Tobin South
9d468adfb8 math-olympiad: housekeeping (#1172)
* math-olympiad: add LICENSE, marketplace entry, and prettier formatting

- Add Apache 2.0 LICENSE file
- Register plugin in marketplace.json
- Run prettier (prose-wrap=always, 80 cols) over all plugin markdown
- Simplify model tier naming in reference docs

🏠 Remote-Dev: homespace

* Update .claude-plugin/marketplace.json
2026-03-30 20:56:21 +01:00
Dickson Tsai
183a6ca35d Merge pull request #1115 from anthropics/dickson/bash-prefix-hooks
fix: invoke .sh hooks via bash prefix (fixes #993)
2026-03-28 22:21:14 -07:00
Dickson Tsai
986deab6a1 fix: invoke .sh hooks via bash prefix; add version for cache invalidation
Fixes #993 (Permission denied on hook scripts) without relying on
client-side +x preservation.

The hook executor spawns commands via /bin/sh -c, which requires +x
to execute a script directly. Prefixing with bash reads the script
as data — mode bits are irrelevant. This works on all Claude Code
versions, whereas the client-side chmod fix (claude-cli #24666) only
shipped in v2.1.86.

All 3 scripts declare #!/bin/bash and use bashisms ([[ ]], =~), so
bash (not sh) is the correct interpreter.

The version field forces a fresh cache path (1.0.0/ instead of
unknown/), ensuring the new hooks.json reaches users with stale
caches.
2026-03-28 08:40:34 -07:00
russell-coleman
548bfa8375 Merge pull request #1008 from anthropics/russell/imessage-conversational-format
feat(imessage): conversational format for chat_messages
2026-03-27 14:24:14 -07:00
Russell Coleman
a1ffbcc771 feat(imessage): add IMESSAGE_DB_PATH env var for testing
Mirrors the existing IMESSAGE_STATE_DIR override. Lets a mock sqlite
chat.db stand in for ~/Library/Messages/chat.db so chat_messages can be
tested without macOS + Full Disk Access + real iMessage history.
2026-03-27 13:45:56 -07:00
Noah Zweben
451c481b2b Update flint plugin sha to f3d56e3 (#1077)
Co-authored-by: Claude <noreply@anthropic.com>
2026-03-27 09:51:27 -07:00
Kenneth Lien
22bd61d01f imessage: bump to 0.1.0 2026-03-26 23:43:51 -07:00
Kenneth Lien
60c3fc36ed imessage: drop SMS/RCS by default, opt-in via IMESSAGE_ALLOW_SMS
SMS sender IDs are spoofable; iMessage is Apple-ID-authenticated and
end-to-end encrypted. The plugin previously treated both identically,
so a forged SMS from the owner's own number would match SELF, bypass
the access gate, and inherit owner-level trust — including permission
approval.

handleInbound now drops anything with service != 'iMessage' unless
IMESSAGE_ALLOW_SMS=true. Default is the safe path; users who want SMS
can opt in after reading the warning in README.
2026-03-26 23:41:39 -07:00
Kenneth Lien
c4274521de imessage: trim comment cruft 2026-03-26 23:16:27 -07:00
Kenneth Lien
8dfc279258 imessage: harden echo filter normalization
The self-chat echo filter matches outbound text against what chat.db
stores on round-trip. Three divergence sources caused false negatives
and duplicate bubbles:

- Signature suffix: "\nSent by Claude" is appended on send, but the
  \n may not round-trip identically through attributedBody
- Emoji variation selectors (U+FE00-FE0F) and ZWJ (U+200D): chat.db
  can add or drop these on emoji characters
- Smart quotes: macOS auto-substitutes straight quotes on the way in

Strip/normalize all three in echoKey() before the existing whitespace
collapse.

Fixes #1024
2026-03-26 23:12:19 -07:00
Kenneth Lien
c29338f276 imessage: drop whitespace-only messages from tapbacks/receipts
Tapback reactions and read receipts synced from linked devices arrive
as chat.db rows with whitespace-only text. The existing empty-check
used falsy comparison which doesn't catch ' ' or invisible chars,
causing unsolicited replies to reaction taps.

Fixes #1041
2026-03-26 23:11:49 -07:00
Kenneth Lien
03a685d5f6 imessage: restrict permission relay to self-chat only
Permission prompts were being broadcast to all allowlisted contacts plus
every DM resolvable from the SELF address set. Two compounding bugs:

1. SELF was polluted by chat.last_addressed_handle, which on machines
   with SMS history returns short codes, business handles, and other
   contacts' numbers — not just the owner's addresses. One reporter's
   query returned 50 addresses (2 actually theirs) resolving to 148 DM
   chats, all of which received permission prompts.

2. Even with a clean SELF, the handler sent to allowFrom + SELF, so
   every allowlisted contact received the prompt and could reply to
   approve tool execution on the owner's machine.

Fix:
- Build SELF from message.account WHERE is_from_me=1 only
- Send permission prompts to self-chat only, not allowFrom
- Accept permission replies from self-chat only

Fixes #1048
Fixes #1010
2026-03-26 23:11:29 -07:00
Dickson Tsai
72b9754680 Merge pull request #1031 from anthropics/dickson/add-terraform-plugin
Add terraform plugin files
2026-03-26 14:14:40 -07:00
Dickson Tsai
ba3a4e0702 Add terraform plugin files to match marketplace.json entry 2026-03-26 12:33:36 -07:00
Russell Coleman
28f7434384 feat(imessage): conversational format for chat_messages
Reformat chat_messages output from flat per-message lines to grouped
conversation threads. Each thread gets a header labelling it DM or Group
with its participant list, date-separator lines when the calendar day
rolls over, and [HH:MM] local-time stamps instead of full ISO.

chat_guid is now optional — omit to dump every allowlisted chat at once
for a quick multi-thread overview. Default limit raised 20→100 per chat,
capped at 500.

New queries: qChatParticipants (handle list per chat) and qChatInfo
(display_name + style to distinguish DM/group). renderMsg replaced by
conversationHeader + renderConversation.
2026-03-25 16:50:00 -07:00
Noah Zweben
b10b583de2 Add flint plugin to marketplace (#974) 2026-03-24 23:43:42 +00:00
Kenneth Lien
79caa0d824 Merge pull request #957 from anthropics/kenneth/fix-imessage-lockfile
Fix imessage startup: regenerate bun.lock without internal registry URLs
2026-03-23 23:53:32 -07:00
Kenneth Lien
12e9c01d5f Regenerate imessage bun.lock without artifactory URLs
The lockfile had 94 artifactory.infra.ant.dev URLs baked in from
generation behind a private registry. External users hit 401s on
'bun install' and the server never starts. Regenerated against
registry.npmjs.org to match the .npmrc.
2026-03-23 23:45:03 -07:00
Kenneth Lien
7074ac045b Merge pull request #737 from anthropics/add-imessage-channel
Add imessage channel plugin
2026-03-23 23:13:45 -07:00