Skip to content
Merged
Show file tree
Hide file tree
Changes from 11 commits
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
d3f02f6
feat(plugins): add Cursor marketplace and per-platform plugin dirs on v2
Ketcap Sep 15, 2026
e593a54
feat(plugins): rename install id to make and pin Claude ref v2
Ketcap Sep 15, 2026
d10921b
fix(plugins): drop unknown allowedTools, add privacyPolicyUrl
Ketcap Sep 29, 2026
b3718b6
fix(plugins): use local plugin source and move docs command into plugin
Ketcap Sep 29, 2026
288c9b7
fix(plugins): ship real skills/assets in Claude plugin, drop marketpl…
Ketcap Sep 29, 2026
93f09b4
fix(plugins): resync Claude plugin skills copy with skills/
Ketcap Sep 30, 2026
2319a0f
fix(plugins): restore Codex plugin description and prompts, use /open…
Ketcap Sep 30, 2026
86877b4
chore: remove landing page and GitHub Pages deployment
Ketcap Sep 30, 2026
6b5f61a
docs: per-platform install instructions, point download links at main
Ketcap Sep 30, 2026
bb24259
feat(plugins): add support, terms and documentation URLs to Claude pl…
Ketcap Sep 30, 2026
a77094d
fix(plugins): use https support and documentation URLs
Ketcap Sep 30, 2026
9a06f94
fix(plugins): drop Cursor pluginRoot to avoid doubled path, rename en…
Ketcap Oct 1, 2026
fc822f7
feat(skills): remove make-api-shell in favor of upcoming Endpoints
Ketcap Oct 1, 2026
0de3904
refactor(plugins): make Codex plugin the skills source and generate a…
Ketcap Oct 2, 2026
cfdc50a
docs(plugins): use agreed Claude plugin description
Ketcap Oct 2, 2026
ee8bb78
docs(plugins): use agreed description for Cursor and Codex plugins
Ketcap Oct 2, 2026
abc85d3
fix(plugins): point documentationUrl at the MCP server docs
Ketcap Oct 2, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .agents/plugins/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
},
"plugins": [
{
"name": "make-skills",
"name": "make",
"interface": {
"displayName": "Make Skills"
},
Expand Down
15 changes: 7 additions & 8 deletions .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
{
"$schema": "https://json.schemastore.org/claude-code-marketplace.json",
"name": "make-marketplace",
"description": "Design, build, and deploy Make.com automation scenarios using expert skills — directly from Claude Code",
"owner": {
Expand All @@ -8,14 +9,11 @@
},
"plugins": [
{
"name": "make-skills",
"description": "Expert skills for exploring, building, running and debugging Make scenarios, plus reusable API-call shells",
"name": "make",
"displayName": "Make",
"description": "Expert skills for Make scenario building, exploration, operations, and tool reference",
Comment thread
Ketcap marked this conversation as resolved.
Outdated
"version": "0.1.7",
"source": {
"source": "github",
"repo": "integromat/make-skills",
"ref": "latest"
},
"source": "./plugins/make-skills-claude",
"author": {
"name": "Make",
"url": "https://www.make.com"
Expand All @@ -33,7 +31,8 @@
],
"homepage": "https://www.make.com",
"repository": "https://github.com/integromat/make-skills",
"license": "MIT"
"license": "MIT",
"strict": true
}
]
}
18 changes: 18 additions & 0 deletions .cursor-plugin/marketplace.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{
"name": "make-marketplace",
"owner": {
"name": "Make",
"email": "support@make.com"
},
"metadata": {
"description": "Design, build, and deploy Make.com automation scenarios using expert skills in Cursor",
"pluginRoot": "plugins"
},
"plugins": [
{
"name": "make",
"source": "plugins/make-skills-cursor",
"description": "Expert skills for Make scenario building, exploration, operations, and tool reference"
}
]
}
32 changes: 3 additions & 29 deletions .github/workflows/build-release-assets.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name: Build release assets

# On a published Release: attach zips, deploy Pages from the tag, then fast-forward
# On a published Release: attach zips, then fast-forward
# the `latest` branch to the tag last — so `latest` only advances once assets have
# built. Fires because release-please publishes the Release as a GitHub App (the
# default GITHUB_TOKEN would not trigger this event).
Expand All @@ -11,7 +11,7 @@ on:
workflow_dispatch:
inputs:
tag:
description: Existing release tag to (re)build, deploy, and fast-forward latest to
description: Existing release tag to (re)build and fast-forward latest to
required: true

jobs:
Expand All @@ -34,34 +34,8 @@ jobs:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: gh release upload "$TAG" dist/*.zip --clobber

deploy-pages:
runs-on: ubuntu-latest
permissions:
contents: read
pages: write
id-token: write
# Shared with static.yml so Pages deployments never overlap.
concurrency:
group: pages
cancel-in-progress: false
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
env:
TAG: ${{ github.event.release.tag_name || inputs.tag }}
steps:
- uses: actions/checkout@v4
with:
ref: ${{ env.TAG }}
- uses: actions/configure-pages@v5
- uses: actions/upload-pages-artifact@v3
with:
path: '.'
- id: deployment
uses: actions/deploy-pages@v5

fast-forward-latest:
needs: [build-assets, deploy-pages]
needs: [build-assets]
runs-on: ubuntu-latest
env:
TAG: ${{ github.event.release.tag_name || inputs.tag }}
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/manifest-check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,3 +22,4 @@ jobs:
with:
node-version: 24
- run: node scripts/check-skill-manifests.mjs
- run: node scripts/sync-claude-plugin.mjs --check
39 changes: 0 additions & 39 deletions .github/workflows/static.yml

This file was deleted.

22 changes: 13 additions & 9 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,19 @@ This file provides guidance to Claude Code when working with this repository.

The skills connect to the remote Make MCP server:

- **`make`** — Make's scenario-management MCP server at `https://mcp.make.com/v2`. Tools are named `{subject}_{action}` (`environment_get`, `scenario_get`, `module_spec`, …) and the surface is gated by one all-or-nothing scope bundle. Authenticated via OAuth.
- **`make`** — Make's scenario-management MCP server (platform endpoints: `https://mcp.make.com/claude`, `/cursor`, `/openai`). Tools are named `{subject}_{action}` (`environment_get`, `scenario_get`, `module_spec`, …) and the surface is gated by one all-or-nothing scope bundle. Authenticated via OAuth.

## Repository Structure

```
.claude-plugin/
plugin.json # Plugin manifest (name, version, description)
marketplace.json # Marketplace metadata
.mcp.json # MCP server configuration (remote Make server)
marketplace.json # Claude Code marketplace manifest (repo root)
.cursor-plugin/
marketplace.json # Cursor Team Marketplace manifest (repo root)
plugins/
make-skills-claude/ # Claude Code plugin (.claude-plugin/, .mcp.json)
make-skills-cursor/ # Cursor plugin (.cursor-plugin/, mcp.json)
make-skills-codex/ # OpenAI Codex plugin (.codex-plugin/, .mcp.json)
skills/
make-scenario-reference/ # Shared conventions — load first
SKILL.md
Expand All @@ -43,7 +47,7 @@ Five auto-activated skills, split by use case:
- **make-scenario-explore** — `environment_get` → `scenario_list` → `scenario_get` → `scenario_module_get`, and how to read the structural fields for a non-technical user.
- **make-scenario-building** — the build and edit workflows (`app_find` → `module_spec` → connections → `module_field_resolve` → `scenario_create` / `scenario_patch`), the decisions the tools leave to the model, and on-demand references for everything past a straight line.
- **make-scenario-operations** — `scenario_run` by trigger kind, activation, the execution list → get → inspect → module-get chain, webhook learning and inspection.
- **make-api-shell** — a three-module on-demand scenario (`StartSubscenario` → *Make an API Call* → `ReturnData`) or its `http:MakeRequest` fallback, built once per provider and connection and run through `scenario_run`.
- **make-api-shell** — a three-module on-demand scenario (`StartSubscenario` → _Make an API Call_ → `ReturnData`) or its `http:MakeRequest` fallback, built once per provider and connection and run through `scenario_run`.

## Writing skills for this surface

Expand All @@ -63,17 +67,17 @@ Five auto-activated skills, split by use case:

### Modifying MCP configuration

Edit `.mcp.json`. The `make` server uses HTTP transport to Make's hosted endpoint at `https://mcp.make.com/v2`.
Edit each plugin's MCP config under `plugins/` — Claude: `make-skills-claude/.mcp.json` (`https://mcp.make.com/claude`), Cursor: `make-skills-cursor/mcp.json` (`/cursor`), Codex: `make-skills-codex/.mcp.json` (`/openai`).

### Branching & releasing (trunk-based)

`main` is the GitHub default branch, the trunk, and the working branch — all PRs land there directly. A separate **`latest`** branch is fast-forwarded to each released tag and stays reserved for that — don't push to it directly.

The Claude Code plugin marketplace pins plugin *content* to `latest` (`.claude-plugin/marketplace.json`'s `source: { source: "github", repo: "integromat/make-skills", ref: "latest" }`), so that channel only ever installs released code; marketplace metadata (name/description/version) still comes from `main` HEAD, which is cosmetic.
Each platform has its own plugin under `plugins/` (Claude, Cursor, Codex) and its own marketplace manifest at the repo root. The Claude marketplace uses a local `./plugins/make-skills-claude` source (real copies of `skills/` and `assets/`, kept in sync by `node scripts/sync-claude-plugin.mjs`; CI runs it with `--check`), so installs track the branch the marketplace is added from. Cursor and Codex plugins symlink `skills/` and `assets/`. All channels, plus `npx skills add` and the raw `dist/` download links, resolve `main` HEAD, so they can pick up reviewed-but-unreleased commits between releases — an accepted gap.

- **Work:** open PRs against **`main`**, squash merge. PR titles are linted as Conventional Commits by the org `validate-pr.yml` (mono-generated), which release-please relies on.
- **Release cut:** release-please runs on `main` (org-managed `.github/workflows/release-please.yml`, generated from mono `libs/github-resources/src/repositories/make-skills.ts` via stock `releasePleaseWorkflow: true`). It opens/updates a **Release PR** that bumps the version across `package.json`, `package-lock.json`, both `plugin.json` files, `marketplace.json`, and each published `skills/*/SKILL.md` frontmatter (via the `# x-release-please-version` annotation), and regenerates `CHANGELOG.md`.
- **Promote:** merge the Release PR. release-please (authenticating as a GitHub App) creates the tag + GitHub Release, which fires `.github/workflows/build-release-assets.yml`. That workflow, in order: (1) `build.sh` → uploads zips as Release assets, (2) deploys GitHub Pages from the tag, (3) **fast-forwards `latest` to the tag** (App token; creates the branch on the first release).
- **Release cut:** release-please runs on `main` (org-managed `.github/workflows/release-please.yml`, generated from mono `libs/github-resources/src/repositories/make-skills.ts` via stock `releasePleaseWorkflow: true`). It opens/updates a **Release PR** that bumps the version across `package.json`, `package-lock.json`, the Claude, Cursor, and Codex plugin manifests, `marketplace.json`, and each published `skills/*/SKILL.md` frontmatter (via the `# x-release-please-version` annotation), and regenerates `CHANGELOG.md`.
- **Promote:** merge the Release PR. release-please (authenticating as a GitHub App) creates the tag + GitHub Release, which fires `.github/workflows/build-release-assets.yml`. That workflow, in order: (1) `build.sh` → uploads zips as Release assets, (2) **fast-forwards `latest` to the tag** (App token; creates the branch on the first release).

The version-bump targets beyond `package.json` live in `actions-toolkit.config.mjs` (`releasePlease.extraFiles`). Stable-alias zips (`dist/<name>.zip`) are committed so raw download links work before the first release; versioned zips are built ad-hoc in CI and attached to the Release. Download links resolve via `https://github.com/integromat/make-skills/releases/latest/download/<name>.zip` (a GitHub Release API alias, unrelated to the `latest` git branch).

Expand Down
81 changes: 45 additions & 36 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,20 +18,44 @@ Give your AI coding agent deep Make expertise — for building, explaining, runn

## Installation

There are two pieces, and both are needed: the **skills** (the expertise) and the **MCP server** (the tools the skills drive).
Two pieces, both needed: the **skills** (the expertise) and the **MCP server** (the tools the skills drive).

### 1. Install the skills
### Option A: Plugin (recommended)

Download the skills, then either upload them to your agent (Claude Cowork, Claude Chat, and similar) or unzip them into its skills directory:
**Claude Code**

```bash
/plugin marketplace add integromat/make-skills
/plugin install make@make-marketplace
```

**Cursor** — Team Marketplace: import `integromat/make-skills` and install `make`. The plugin registers the MCP server (`/cursor`).

**Codex**

```bash
codex plugin marketplace add integromat/make-skills
```

Then open the plugin directory, select the **Make** marketplace, and install `make`. If the MCP server is not registered automatically, add it manually:

```bash
codex mcp add make --url https://mcp.make.com/openai
codex mcp login make
```

### Option B: Download the skills

Upload the zips to your agent (Claude Cowork, Claude Chat, and similar) or unzip them into its skills directory:

| Skill | Download |
| ------------------------ | --------------------------------------------------------------------------------------------------------- |
| Bundle of all the skills | [Download](https://raw.githubusercontent.com/integromat/make-skills/v2/dist/make-skills.zip) |
| Scenario Reference | [Download](https://raw.githubusercontent.com/integromat/make-skills/v2/dist/make-scenario-reference.zip) |
| Scenario Explore | [Download](https://raw.githubusercontent.com/integromat/make-skills/v2/dist/make-scenario-explore.zip) |
| Scenario Building | [Download](https://raw.githubusercontent.com/integromat/make-skills/v2/dist/make-scenario-building.zip) |
| Scenario Operations | [Download](https://raw.githubusercontent.com/integromat/make-skills/v2/dist/make-scenario-operations.zip) |
| API Shell | [Download](https://raw.githubusercontent.com/integromat/make-skills/v2/dist/make-api-shell.zip) |
| Bundle of all the skills | [Download](https://raw.githubusercontent.com/integromat/make-skills/main/dist/make-skills.zip) |
| Scenario Reference | [Download](https://raw.githubusercontent.com/integromat/make-skills/main/dist/make-scenario-reference.zip) |
| Scenario Explore | [Download](https://raw.githubusercontent.com/integromat/make-skills/main/dist/make-scenario-explore.zip) |
| Scenario Building | [Download](https://raw.githubusercontent.com/integromat/make-skills/main/dist/make-scenario-building.zip) |
| Scenario Operations | [Download](https://raw.githubusercontent.com/integromat/make-skills/main/dist/make-scenario-operations.zip) |
| API Shell | [Download](https://raw.githubusercontent.com/integromat/make-skills/main/dist/make-api-shell.zip) |

Skills directories, for agents that read skills from disk:

Expand All @@ -44,39 +68,24 @@ Skills directories, for agents that read skills from disk:
| Cline | `.cline/skills/` |
| Generic | `.agents/skills/` |

### 2. Add the MCP server
### Add the MCP server manually

The skills target Make's scenario-management MCP server at `https://mcp.make.com/v2`, over HTTP.
Skip this if a plugin registered it. Each platform has its own endpoint, over HTTP:

**Codex**
| Platform | MCP URL |
| ------------ | ----------------------------- |
| Claude Code | `https://mcp.make.com/claude` |
| Cursor | `https://mcp.make.com/cursor` |
| OpenAI Codex | `https://mcp.make.com/openai` |

```bash
codex mcp add make --url https://mcp.make.com/v2
codex mcp login make
claude mcp add --transport http make https://mcp.make.com/claude
claude mcp list
```

**Claude Code**

```bash
claude mcp add --transport http make https://mcp.make.com/v2
```

**Any agent with a JSON MCP config**

Add the server to the agent's MCP configuration file:

```json
{
"mcpServers": {
"make": {
"type": "http",
"url": "https://mcp.make.com/v2"
}
}
}
```
For any other agent, add the matching URL to its JSON MCP config.

On first use, you'll authenticate through Make's OAuth consent screen. The server asks for one bundle of permissions and works only when every one of them is granted — if a tool answers with a permission error, reconnect and grant everything it asks for.
On first use, authenticate through Make's OAuth consent screen. The server asks for one bundle of permissions and works only when every one of them is granted — if a tool answers with a permission error, reconnect and grant everything it asks for.

## Troubleshooting

Expand All @@ -88,7 +97,7 @@ On first use, you'll authenticate through Make's OAuth consent screen. The serve

## Contributing

Open pull requests against **`main`** — that's the trunk. Use squash merges and Conventional Commit PR titles (`feat:`, `fix:`, `docs:`, …), since release-please relies on them. A separate `latest` branch is fast-forwarded to each released tag, so `main` can carry reviewed-but-unreleased commits.
Open pull requests against **`main`** — that's the trunk. Use squash merges and Conventional Commit PR titles (`feat:`, `fix:`, `docs:`, …), since release-please relies on them. A separate `latest` branch is fast-forwarded to each released tag. The Claude Code marketplace entry uses a local `./plugins/make-skills-claude` source, so installs track the branch the marketplace is added from. Codex and `npx skills add` still resolve `main` HEAD directly. For Cursor Team Marketplace, import this repo and track branch **`main`** (branch is not set in `.cursor-plugin/marketplace.json`).

## License

Expand Down
4 changes: 3 additions & 1 deletion actions-toolkit.config.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,12 @@ const config = {
releasePlease: {
releaseType: 'node',
extraFiles: [
{ type: 'json', path: '.claude-plugin/plugin.json', jsonpath: '$.version' },
{ type: 'json', path: 'plugins/make-skills-claude/.claude-plugin/plugin.json', jsonpath: '$.version' },
{ type: 'json', path: 'plugins/make-skills-cursor/.cursor-plugin/plugin.json', jsonpath: '$.version' },
{ type: 'json', path: 'plugins/make-skills-codex/.codex-plugin/plugin.json', jsonpath: '$.version' },
{ type: 'json', path: '.claude-plugin/marketplace.json', jsonpath: '$.plugins[0].version' },
...publish.map((skill) => ({ type: 'generic', path: `skills/${skill}/SKILL.md` })),
...publish.map((skill) => ({ type: 'generic', path: `plugins/make-skills-claude/skills/${skill}/SKILL.md` })),
],
},
};
Expand Down
8 changes: 5 additions & 3 deletions build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,10 @@ command -v jq >/dev/null 2>&1 || {
exit 1
}

node "$REPO_ROOT/scripts/sync-claude-plugin.mjs"

DIST_DIR="$REPO_ROOT/dist"
VERSION=$(jq -r '.version' "$REPO_ROOT/.claude-plugin/plugin.json")
VERSION=$(jq -r '.version' "$REPO_ROOT/plugins/make-skills-claude/.claude-plugin/plugin.json")

# Skills to publish — single source of truth
# (read loop rather than mapfile for portability with macOS bash 3.2)
Expand Down Expand Up @@ -73,12 +75,12 @@ TMPDIR=$(mktemp -d "${TMPDIR:-/tmp}/make-skills.XXXXXX")
_CLEANUP_DIRS+=("$TMPDIR")
BUNDLE="$TMPDIR/make-skills"
mkdir -p "$BUNDLE"
cp -r "$REPO_ROOT/.claude-plugin" "$BUNDLE/.claude-plugin"
cp -r "$REPO_ROOT/plugins/make-skills-claude/.claude-plugin" "$BUNDLE/.claude-plugin"
mkdir -p "$BUNDLE/skills"
for skill in "${SKILLS[@]}"; do
cp -r "$REPO_ROOT/skills/$skill" "$BUNDLE/skills/$skill"
done
cp "$REPO_ROOT/.mcp.json" "$BUNDLE/.mcp.json"
cp "$REPO_ROOT/plugins/make-skills-claude/.mcp.json" "$BUNDLE/.mcp.json"
cp "$REPO_ROOT/README.md" "$BUNDLE/README.md"
cp "$REPO_ROOT/LICENSE" "$BUNDLE/LICENSE"
cp "$REPO_ROOT/CLAUDE.md" "$BUNDLE/CLAUDE.md"
Expand Down
Loading
Loading