MCP Server Builder
anthropics/skills
Guides the design and implementation of Model Context Protocol servers in TypeScript or Python, from tool naming and error messages to evaluation.
Manage Gram's local development services (server, worker, dashboard, streams, etc.) with pitchfork — start/stop/restart daemons, check health, and query their logs.
$ npx skills add speakeasy-api/gram --skill pitchfork -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install speakeasy-api/gram pitchfork --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/speakeasy-api/gram.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/pitchfork .claude/skills/pitchfork && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "pitchfork" agent skill from https://github.com/speakeasy-api/gram/tree/main/.agents/skills/pitchfork into .claude/skills/pitchfork/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pitchfork", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/speakeasy-api/gram/tree/main/.agents/skills/pitchforkType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add speakeasy-api/gram --skill pitchfork -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install speakeasy-api/gram pitchfork --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/speakeasy-api/gram.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/pitchfork .agents/skills/pitchfork && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "pitchfork" agent skill from https://github.com/speakeasy-api/gram/tree/main/.agents/skills/pitchfork into .agents/skills/pitchfork/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pitchfork", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add speakeasy-api/gram --skill pitchfork -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install speakeasy-api/gram pitchfork --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/speakeasy-api/gram.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/pitchfork .cursor/skills/pitchfork && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "pitchfork" agent skill from https://github.com/speakeasy-api/gram/tree/main/.agents/skills/pitchfork into .cursor/skills/pitchfork/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pitchfork", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/speakeasy-api/gram.git --path .agents/skills/pitchfork--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add speakeasy-api/gram --skill pitchfork -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install speakeasy-api/gram pitchfork --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/speakeasy-api/gram.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/pitchfork .gemini/skills/pitchfork && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "pitchfork" agent skill from https://github.com/speakeasy-api/gram/tree/main/.agents/skills/pitchfork into .gemini/skills/pitchfork/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pitchfork", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install speakeasy-api/gram pitchforkInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add speakeasy-api/gram --skill pitchfork -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/speakeasy-api/gram.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/pitchfork .github/skills/pitchfork && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "pitchfork" agent skill from https://github.com/speakeasy-api/gram/tree/main/.agents/skills/pitchfork into .github/skills/pitchfork/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pitchfork", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add speakeasy-api/gram --skill pitchfork -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install speakeasy-api/gram pitchfork --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/speakeasy-api/gram.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/pitchfork .opencode/skills/pitchfork && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "pitchfork" agent skill from https://github.com/speakeasy-api/gram/tree/main/.agents/skills/pitchfork into .opencode/skills/pitchfork/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pitchfork", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
pitchforkManage Gram's local development services (server, worker, dashboard, streams, etc.) with pitchfork — start/stop/restart daemons, check health, and query their logs.
Pitchfork is an agent skill from speakeasy-api/gram. Manage Gram's local development services (server, worker, dashboard, streams, etc.) with pitchfork — start/stop/restart daemons, check health, and query their logs. Activate whenever you need to bring up the local dev stack, restart a service after a code change, check whether a service is running or why it failed, or read/search service logs — even if the user just says "start the server", "is the worker running?", or "check the logs".
Its SKILL.md is about 1.4k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Agent Workflows. The repository describes itself as: Securely scale AI usage across your organization. A single stack to Connect, Secure, Observe and Distribute agents, MCPs, and Skills within your company. The licence is AGPL-3.0.
3 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit ad78247. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
miseFrom the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
pitchfork.jdx.devFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Pitchfork loads about 1.4k tokens when it runs. Until then it costs about 113 tokens; SKILL.md has 472 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from speakeasy-api/gram at commit ad78247, republished under its AGPL-3.0 licence (© speakeasy-api). 472 words, ~1,407 tokens.
.claude/skills/pitchfork/SKILL.md (or your agent's skills folder).Pitchfork is a daemon manager. All Gram local services are declared in pitchfork.toml at the repo root and run under a pitchfork supervisor. Each daemon's run command is a mise task (mise run start:<name>) and its readiness is polled via mise run check:daemon --name <name>, so start only returns once the service is actually healthy.
pitchfork MCP tools are available (pitchfork_status, pitchfork_logs, pitchfork_start, pitchfork_stop, pitchfork_restart), use them. They return structured output and skip pager/formatting concerns entirely.pitchfork CLI directly (commands below).mise run start / mise run stop bring the whole stack up/down. Use these for whole-stack operations even when the MCP/CLI are available, because mise run start also starts the supervisor and cleans up stale daemon entries. If the pitchfork binary itself is missing, run mise install first (mise provides it).Declared in pitchfork.toml. Names are shown namespaced by project (e.g. gram/server) in pitchfork list, but commands accept the short name (server).
| Daemon | What it is |
|---|---|
server | Main Gram API server |
worker | Temporal worker |
dashboard | Dashboard frontend dev server (depends on server) |
streams | Go Pub/Sub consumers (gram streams) |
pystreams-multi | Python Pub/Sub consumers |
assistant-runtime | Assistant runtime |
dev-idp, dev-idp-dashboard, mock-oidc | Local identity providers (login is credential-less) |
admin | Admin app (depends on mock-oidc) |
tunnel-gateway | Tunnel gateway |
mise run start # supervisor start + stop + clean + start --all-local
mise run stop # pitchfork stop --all-localmise run start cleanly stops and restarts everything. If services fail because Docker infra (Postgres, ClickHouse, etc.) isn't up, run ./zero --agent for full environment setup instead.
pitchfork start is idempotent — it does nothing if the daemon is already running. After changing Go/backend code you must restart the affected daemon to pick up the change:
pitchfork start server worker # start if not running (waits for ready)
pitchfork restart server # stop + start (use after code changes)
pitchfork start server --force # same as restart
pitchfork stop serverIf commands fail because the supervisor isn't running, start it with pitchfork supervisor start.
pitchfork list # all daemons + status (running/available/errored/...)
pitchfork list --json # machine-readable
pitchfork list --status errored --status failed # only broken daemons
pitchfork status server # detail for one daemon, includes error/exit infoavailable means defined in config but not started. errored includes the exit reason — follow up with logs.
The MCP pitchfork_status tool returns a JSON array covering all daemons (equivalent to pitchfork list --json); there is no per-daemon MCP detail call, so use pitchfork status <name> on the CLI when you need one daemon's full detail.
This is the primary debugging tool. Logs persist across restarts and are timestamped.
pitchfork logs server -n 100 # last 100 lines
pitchfork logs server worker -n 50 # multiple daemons interleaved
pitchfork logs server --since 5min # relative time window
pitchfork logs server --since '10:30' --until '11:00'
pitchfork logs server --grep error --grep panic # OR'd, case-insensitive
pitchfork logs server --regex 'level=(warn|error)'Tips for agent use:
--no-pager --raw when piping or capturing output.--tail/--follow — it blocks forever. Prefer bounded queries (-n, --since) and poll if needed.pitchfork logs <name> --since 1min shows just the fresh boot output.pitchfork_logs tool only supports "last N lines" (default 50); drop to the CLI when you need time windows or grep filters.[start:server] ERROR ... exited with non-zero status appear on every normal stop/restart — they are supervisor noise, not crashes. Look at the surrounding lines (clean shutdown sequence vs. panic/fatal) before concluding a service crashed.© speakeasy-api, AGPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .agents/skills/pitchfork of speakeasy-api/gram.
Open the folder on GitHubat commit ad78247
Pitchfork next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Pitchfork this skillspeakeasy-api/gram | 272 | — | ~1.4k | Automated safety check: Pass | AGPL-3.0 | |
| MCP Server Builderanthropics/skills | 180k | 64 repos | ~2.3k | Automated safety check: Pass | Apache-2.0 | |
| MCP Server BuildershareAI-lab/learn-claude-code | 78k | 5 repos | ~1.2k | Automated safety check: Pass | MIT | |
| Brainstormingxpinjection/test-driven-spring-boot | 112 | 54 repos | ~2.6k | Automated safety check: Pass | MIT | |
| MCP Integration for Pluginsanthropics/claude-plugins-official | 38k | 11 repos | ~3.1k | Automated safety check: Pass | Apache-2.0 | |
| MCP Server Builder with mcp-usemcp-use/mcp-use | 11k | — | ~923 | Automated safety check: Pass | Apache-2.0 |
anthropics/skills
Guides the design and implementation of Model Context Protocol servers in TypeScript or Python, from tool naming and error messages to evaluation.
shareAI-lab/learn-claude-code
Walks through building MCP servers in Python or TypeScript that expose tools, resources and prompts to Claude, with templates, registration and testing.
xpinjection/test-driven-spring-boot
You MUST use this before any creative work - creating features, building components, adding functionality, or modifying behavior.
anthropics/claude-plugins-official
Explains how to bundle Model Context Protocol servers in a Claude Code plugin, covering config files, stdio, SSE, HTTP and WebSocket server types, and authentication.
mcp-use/mcp-use
Builds, modifies, debugs, migrates and verifies TypeScript MCP servers and MCP Apps with the mcp-use framework, treating the installed package's types as the source of truth.
cloudflare/skills
Build, debug, or review Cloudflare Agents SDK applications using the agents package.
speakeasy-api/gram
A skill your agent uses when automating the Gram dashboard in a browser, capturing screenshots, inspecting pages.
speakeasy-api/gram
A skill your agent uses when adding, changing, restyling, reviewing, validating, or previewing a Gram/Speakeasy transactional email, in Go or in LMX/MJML — a template<name.go, a TemplateKey…
speakeasy-api/gram
A skill your agent uses when adding, changing, or styling UI in client/admin (the Gram admin dashboard) that touches shadcn/ui — a button, dialog, table, sidebar, badge, select, tabs, tooltip, card…
speakeasy-api/gram
A skill your agent uses when adding, editing, reviewing, testing, or locating a reviewed skill distributed with the Platform MCP plugin; triggers include "Platform MCP skill", "platformmcpskills"…
speakeasy-api/gram
A skill your agent uses when changing or reviewing Gram ClickHouse schemas, migrations, queries, inserts, access principals, bootstrap SQL, Cloud compatibility, partial migration failures, or…
speakeasy-api/gram
A skill your agent uses when gating a feature behind a flag, dogfooding or gradually rolling out a change, choosing between productfeatures and PostHog feature flags, adding or checking a product…
Categories
Manage Gram's local development services (server, worker, dashboard, streams, etc.) with pitchfork — start/stop/restart daemons, check health, and query their logs. Pitchfork is an agent skill from speakeasy-api/gram.) with pitchfork — start/stop/restart daemons, check health, and query their logs.
Pitchfork fits situations like: agent Workflows work in your project.
Run `npx skills add speakeasy-api/gram --skill pitchfork -a claude-code`. Or copy the skill folder (.agents/skills/pitchfork in speakeasy-api/gram) into .claude/skills/pitchfork in your project. Claude Code loads it when a task matches its description.
Run `npx skills add speakeasy-api/gram --skill pitchfork -a codex`. Or copy the skill folder (.agents/skills/pitchfork in speakeasy-api/gram) into .agents/skills/pitchfork in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add speakeasy-api/gram --skill pitchfork -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/pitchfork, .gemini/skills/pitchfork, .github/skills/pitchfork and .opencode/skills/pitchfork in your project.
Going by SKILL.md and its folder, Pitchfork needs the command-line tools its instructions call (mise). Our summary lists: Python 3; Docker.
SKILL.md names 1 domain. As links in the text: pitchfork.jdx.dev. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Pitchfork is published under the AGPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.4k tokens (SKILL.md is roughly 5.6k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Pitchfork: MCP Server Builder (anthropics/skills, 180k stars), MCP Server Builder (shareAI-lab/learn-claude-code, 78k stars), Brainstorming (xpinjection/test-driven-spring-boot, 112 stars) and MCP Integration for Plugins (anthropics/claude-plugins-official, 38k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
speakeasy-api (a GitHub organization) maintains it in speakeasy-api/gram, which has 272 GitHub stars. The repository holds 39 skills in this directory. The repository was last updated on October 8, 2026.
Source: speakeasy-api/gram on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.