Framer

SkillDev tools

Verifies that your Framer project's API key connects correctly through an official check.

Available today. Use it from your connected AI after setup.

Add ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.

Then ask your AI: use the Framer skill

About this skill

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.

What this skill tells your AI

The instructions your AI receives, as published by anil-matcha/awesome-muse-connectors in connectors/framer/SKILL.md and read by ahel’s review.

Purpose

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.

Tooling

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.

Auth

  • Provider id: framer (credential is collected as custom.framer)
  • Collection: per-project API key via the secure credential flow (credentials.request_api_access); create it under Site Settings > General in the Framer project. The key works for that one project only.
  • Required scopes: n/a (project-scoped key)
  • Allowed hosts: api.framer.com (WebSocket only: wss://api.framer.com/channel/headless-plugin)
  • Status check: bin/framer.py auth --project <project url or id>
  • Transport detail (verified from the official 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.

Operating Rules

  1. The key is bound to one project: pass that project's URL or id to every command.
  2. Publishing to production, deleting CMS items, and editing canvas nodes are confirmation-worthy writes; prefer preview deployments and CMS/page operations, and confirm before anything that changes the live site.
  3. Never exfiltrate the credential: the CLI only ever handles surrogates. Do not print, log, or transmit the key value.

Files

  • SKILL.md
  • bin/framer.py

Maturity

🧪 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).

Signals

GitHub stars
1k
Forks
281
Last commit
Sep 2026
Advanced
Item type
skill
Key
framer
Source
github.com/anil-matcha/awesome-muse-connectors