Workflow Schema Tuning
breaking-brake/cc-wf-studio
Guides edits to cc-wf-studio's workflow schema so AI agents generate better workflows, treating schema text as prompt engineering rather than validation.
Scaffold a new MCP prompt template. An agent skill from cyanheads/pubmed-mcp-server.
$ npx skills add cyanheads/pubmed-mcp-server --skill add-prompt -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install cyanheads/pubmed-mcp-server add-prompt --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/cyanheads/pubmed-mcp-server.git skills-src && mkdir -p .claude/skills && cp -r skills-src/framework-skills/add-prompt .claude/skills/add-prompt && 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 "add-prompt" agent skill from https://github.com/cyanheads/pubmed-mcp-server/tree/main/framework-skills/add-prompt into .claude/skills/add-prompt/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "add-prompt", 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/cyanheads/pubmed-mcp-server/tree/main/framework-skills/add-promptType 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 cyanheads/pubmed-mcp-server --skill add-prompt -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install cyanheads/pubmed-mcp-server add-prompt --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/cyanheads/pubmed-mcp-server.git skills-src && mkdir -p .agents/skills && cp -r skills-src/framework-skills/add-prompt .agents/skills/add-prompt && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "add-prompt" agent skill from https://github.com/cyanheads/pubmed-mcp-server/tree/main/framework-skills/add-prompt into .agents/skills/add-prompt/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "add-prompt", 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 cyanheads/pubmed-mcp-server --skill add-prompt -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install cyanheads/pubmed-mcp-server add-prompt --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/cyanheads/pubmed-mcp-server.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/framework-skills/add-prompt .cursor/skills/add-prompt && 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 "add-prompt" agent skill from https://github.com/cyanheads/pubmed-mcp-server/tree/main/framework-skills/add-prompt into .cursor/skills/add-prompt/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "add-prompt", 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/cyanheads/pubmed-mcp-server.git --path framework-skills/add-prompt--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 cyanheads/pubmed-mcp-server --skill add-prompt -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install cyanheads/pubmed-mcp-server add-prompt --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/cyanheads/pubmed-mcp-server.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/framework-skills/add-prompt .gemini/skills/add-prompt && 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 "add-prompt" agent skill from https://github.com/cyanheads/pubmed-mcp-server/tree/main/framework-skills/add-prompt into .gemini/skills/add-prompt/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "add-prompt", 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 cyanheads/pubmed-mcp-server add-promptInstalls 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 cyanheads/pubmed-mcp-server --skill add-prompt -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/cyanheads/pubmed-mcp-server.git skills-src && mkdir -p .github/skills && cp -r skills-src/framework-skills/add-prompt .github/skills/add-prompt && 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 "add-prompt" agent skill from https://github.com/cyanheads/pubmed-mcp-server/tree/main/framework-skills/add-prompt into .github/skills/add-prompt/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "add-prompt", 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 cyanheads/pubmed-mcp-server --skill add-prompt -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install cyanheads/pubmed-mcp-server add-prompt --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/cyanheads/pubmed-mcp-server.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/framework-skills/add-prompt .opencode/skills/add-prompt && 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 "add-prompt" agent skill from https://github.com/cyanheads/pubmed-mcp-server/tree/main/framework-skills/add-prompt into .opencode/skills/add-prompt/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "add-prompt", 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.
add-promptScaffold a new MCP prompt template. An agent skill from cyanheads/pubmed-mcp-server.
Add Prompt is an agent skill from cyanheads/pubmed-mcp-server. Scaffold a new MCP prompt template. Use when the user asks to add a prompt, create a reusable message template, or define a prompt for LLM interactions.
Its SKILL.md is about 1.6k 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, covering Prompt engineering and MCP servers. It works with Model Context Protocol. The repository describes itself as: Search PubMed/Europe PMC, fetch articles and full text (PMC/EPMC/Unpaywall), citations, MeSH terms via MCP. STDIO or Streamable HTTP. The licence is Apache-2.0.
5 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 79145a6. 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:
bunFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From 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.
Add Prompt loads about 1.6k tokens when it runs. Until then it costs about 41 tokens; SKILL.md has 461 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 cyanheads/pubmed-mcp-server at commit 79145a6, republished under its Apache-2.0 licence (© cyanheads). 461 words, ~1,596 tokens.
.claude/skills/add-prompt/SKILL.md (or your agent's skills folder).Prompts use the prompt() builder from @cyanheads/mcp-ts-core. Each prompt lives in src/mcp-server/prompts/definitions/ with a .prompt.ts suffix. The standard registration pattern uses a definitions/index.ts barrel that collects all prompts into an allPromptDefinitions array for createApp(). Fresh scaffolds start with direct imports in src/index.ts — the barrel is introduced as definitions grow. Match the pattern already used by the project you're editing.
Prompts are pure message templates — no Context, no auth, no side effects. generate can be sync or async (returns PromptMessage[] | Promise<PromptMessage[]>).
src/mcp-server/prompts/definitions/{{prompt-name}}.prompt.tscreateApp() prompt list (directly in src/index.ts for fresh scaffolds, or via a barrel if the repo already has one)bun run devcheck to verifybun run rebuild && bun run start:stdio < /dev/null — the Core services constructed log record must list the new prompt in its prompts field (the message text shows only counts); if it doesn't, the prompt never reached createApp()/**
* @fileoverview {{PROMPT_DESCRIPTION}}
* @module mcp-server/prompts/definitions/{{PROMPT_NAME}}
*/
import { completable, prompt, z } from '@cyanheads/mcp-ts-core';
export const {{PROMPT_EXPORT}} = prompt('{{prompt_name}}', {
description: '{{PROMPT_DESCRIPTION}}',
// title is optional — human-readable display name surfaced in prompts/list.
// title: '{{PROMPT_DISPLAY_TITLE}}',
// args is optional — omit entirely for prompts with no parameters.
// When present, all fields need .describe(). Only JSON-Schema-serializable types allowed.
// Wrap any field with completable() to enable argument autocompletion.
args: z.object({
// All fields need .describe()
// language: completable(z.string().describe('Language'), async (partial) => matchingLanguages(partial)),
}),
generate: (args) => [
{
role: 'user',
content: {
type: 'text',
text: `{{PROMPT_TEMPLATE_TEXT}}`,
},
},
],
});generate: (args) => [
{
role: 'user',
content: {
type: 'text',
text: `Here is the ${args.type} to review:\n\n${args.content}`,
},
},
{
role: 'assistant',
content: {
type: 'text',
text: 'I will analyze this carefully. Let me start with...',
},
},
],// src/index.ts (fresh scaffold default)
import { createApp } from '@cyanheads/mcp-ts-core';
import { {{PROMPT_EXPORT}} } from './mcp-server/prompts/definitions/{{prompt-name}}.prompt.js';
await createApp({
tools: [/* existing tools */],
resources: [/* existing resources */],
prompts: [{{PROMPT_EXPORT}}],
});If the repo already uses src/mcp-server/prompts/definitions/index.ts, add the prompt to that barrel the way it holds the existing ones — it must end up in the array passed to createApp(). A bare export … from line registers nothing on its own. The standard barrel shape:
import { {{PROMPT_EXPORT}} } from './{{prompt-name}}.prompt.js';
export const allPromptDefinitions = [/* existing prompts */, {{PROMPT_EXPORT}}];Wrap any args field with completable() (re-exported from @cyanheads/mcp-ts-core) to enable argument autocompletion. The SDK auto-installs completion/complete handling and advertises the completions capability when any registered prompt has a completable argument — no other changes are needed.
import { completable, prompt, z } from '@cyanheads/mcp-ts-core';
export const codeReview = prompt('code_review', {
description: 'Review code for issues.',
title: 'Code Review',
args: z.object({
language: completable(
z.string().describe('Programming language'),
async (partial) => ['typescript', 'python', 'rust'].filter((l) => l.startsWith(partial)),
),
code: z.string().describe('Code to review'),
}),
generate: (args) => [
{ role: 'user', content: { type: 'text', text: `Review this ${args.language} code:\n${args.code}` } },
],
});completable() is transparent to the linter — it does not affect describe-on-fields or schema-serializable rules. All completable-wrapped fields still require .describe() on the underlying schema.
For an optional argument, wrap the inner schema and apply .optional() outside: completable(z.string().describe('…'), cb).optional(). The SDK unwraps .optional() before checking for a completer, so completable(z.string().optional(), cb) type-checks but never completes.
src/mcp-server/prompts/definitions/{{prompt-name}}.prompt.tsprompt() uses snake_casedescription field set (lint warns if absent, but devcheck won't hard-fail — verify it's present)title field set if a human-readable display name is needed in prompts/listargs fields have .describe() annotations — or args omitted entirely for no-parameter promptsargs fields use only JSON-Schema-serializable Zod types (no z.date(), z.transform(), z.bigint(), z.symbol(), z.custom(), etc.)completable(), the underlying schema still has .describe() on each wrapped field@fileoverview and @module header presentgenerate function present and returns at least one { role, content: { type: 'text', text } } messagecreateApp() prompt list (directly or via barrel)bun run devcheck passesbun run rebuild && bun run start:stdio < /dev/null; the Core services constructed record lists the new prompt in its prompts field© cyanheads, Apache-2.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 framework-skills/add-prompt of cyanheads/pubmed-mcp-server.
Open the folder on GitHubat commit 79145a6
Add Prompt 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 |
|---|---|---|---|---|---|---|
| Add Prompt this skillcyanheads/pubmed-mcp-server | 158 | — | ~1.6k | Automated safety check: Pass | Apache-2.0 | |
| Workflow Schema Tuningbreaking-brake/cc-wf-studio | 5.4k | — | ~1.3k | Automated safety check: Pass | Custom licence | |
| Cco Overheadegorfedorov/claude-context-optimizer | 114 | — | ~606 | Automated safety check: Pass | MIT | |
| MCP Developmentrohitg00/awesome-claude-code-toolkit | 2.7k | — | ~1.2k | Automated safety check: Pass | Apache-2.0 | |
| Spring AI MCP Server Patternsgiuseppe-trisciuoglio/developer-kit | 357 | — | ~2.7k | Automated safety check: Notes | MIT | |
| Agentforce GenerateSalesforceAIResearch/agentforce-adlc | 114 | 1 repos | ~7.4k | Automated safety check: Pass | Custom licence |
breaking-brake/cc-wf-studio
Guides edits to cc-wf-studio's workflow schema so AI agents generate better workflows, treating schema text as prompt engineering rather than validation.
egorfedorov/claude-context-optimizer
Audit the fixed context overhead every session starts with — system prompt, MCP tools, agents, CLAUDE.md, memory — measured from real transcript usage
rohitg00/awesome-claude-code-toolkit
MCP server development including tool design, resource endpoints, prompt templates, and transport configuration
giuseppe-trisciuoglio/developer-kit
Provides Spring Boot MCP server patterns that create Model Context Protocol servers with Spring AI by defining tool handlers, exposing resources, configuring prompt templates, and setting up…
SalesforceAIResearch/agentforce-adlc
Build, modify, audit, repair, optimize, debug, and deploy agents with Agentforce Agent Script.
aws-samples/amazon-bedrock-agents-healthcare-lifesciences
A skill your agent uses when a developer wants to build a new healthcare or life sciences agent, structure tools and system prompts for an HCLS workflow, or create a Strands agent with…
cyanheads/pubmed-mcp-server
Scaffold an MCP App tool + UI resource pair. An agent skill from cyanheads/pubmed-mcp-server.
cyanheads/pubmed-mcp-server
Scaffold a new MCP resource definition. An agent skill from cyanheads/pubmed-mcp-server.
cyanheads/pubmed-mcp-server
Scaffold a new service integration. An agent skill from cyanheads/pubmed-mcp-server.
cyanheads/pubmed-mcp-server
Scaffold a test file for an existing tool, resource, or service.
cyanheads/pubmed-mcp-server
Authentication, authorization, and multi-tenancy patterns for @cyanheads/mcp-ts-core.
cyanheads/pubmed-mcp-server
Stand up a persistent, self-refreshing local mirror of a bulk upstream dataset with the MirrorService (@cyanheads/mcp-ts-core/mirror).
Works with
Scaffold a new MCP prompt template. An agent skill from cyanheads/pubmed-mcp-server. Add Prompt is an agent skill from cyanheads/pubmed-mcp-server. Scaffold a new MCP prompt template.
Add Prompt fits situations like: the user asks to add a prompt; create a reusable message template; define a prompt for LLM interactions.
Run `npx skills add cyanheads/pubmed-mcp-server --skill add-prompt -a claude-code`. Or copy the skill folder (framework-skills/add-prompt in cyanheads/pubmed-mcp-server) into .claude/skills/add-prompt in your project. Claude Code loads it when a task matches its description.
Run `npx skills add cyanheads/pubmed-mcp-server --skill add-prompt -a codex`. Or copy the skill folder (framework-skills/add-prompt in cyanheads/pubmed-mcp-server) into .agents/skills/add-prompt 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 cyanheads/pubmed-mcp-server --skill add-prompt -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/add-prompt, .gemini/skills/add-prompt, .github/skills/add-prompt and .opencode/skills/add-prompt in your project.
Going by SKILL.md and its folder, Add Prompt needs the command-line tools its instructions call (bun).
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. 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.
Add Prompt is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.6k tokens (SKILL.md is roughly 6.4k 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 Add Prompt: Workflow Schema Tuning (breaking-brake/cc-wf-studio, 5.4k stars), Cco Overhead (egorfedorov/claude-context-optimizer, 114 stars), MCP Development (rohitg00/awesome-claude-code-toolkit, 2.7k stars) and Spring AI MCP Server Patterns (giuseppe-trisciuoglio/developer-kit, 357 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
cyanheads (a GitHub user) maintains it in cyanheads/pubmed-mcp-server, which has 158 GitHub stars. The repository holds 30 skills in this directory. The repository was last updated on October 9, 2026.
Source: cyanheads/pubmed-mcp-server on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.