Check a Framer project's Server API connection: verify the per-project API key with the official handshake. Trigger phrases: framer, framer api, framer project.
npx skills add https://github.com/Anil-matcha/awesome-muse-connectors --skill framer
Verify a Framer project's Server API connection. Framer's Server API is WebSocket/SDK-only (there is no REST surface): the official framer-api npm package opens a long-lived connection to wss://api.framer.com/channel/headless-plugin with the header Authorization: Token <api_key>, keyed to one project. This connector's CLI performs that same official handshake as a connection check, so auth proves the API key and project pair work.
All commands go through bin/framer.py:
bin/framer.py auth --project "https://framer.com/projects/Sites--aabbccddeeff00112233"
# verify the API key against a project (accepts a project URL or a bare project id)
A successful auth prints the handshake result (session id, mode, active branch). Deeper operations (pages, CMS collections and items, canvas nodes, asset uploads, preview deploys, production deploys, redirects) run through the official framer-api npm package (npm i framer-api), not through this CLI: the plugin RPC protocol behind the socket is not reimplemented here.
framer (credential is collected as custom.framer)credentials.request_api_access); create it under Site Settings > General in the Framer project. The key works for that one project only.api.framer.com (WebSocket only: wss://api.framer.com/channel/headless-plugin)bin/framer.py auth --project <project url or id>framer-api package source, v5.0.0): the API key travels as the Authorization: Token <api_key> header on the WebSocket upgrade request, with the project id as a query parameter; there is no Bearer prefix and no REST endpoint to call.🧪 Draft: host and auth transport pinned from the official framer-api package source (v5.0.0); the handshake client is new code and has not been run against Framer's servers yet. Full page/CMS/publish operations are intentionally out of scope for the CLI (see Purpose).
Take anil-matcha/framer from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.
The instructions reference npm.
Without those the skill loads but fails at the first command.