actions
CLAUDE.md7 starsChanged 8 months agoMITView on GitHub
This repo holds composite GitHub Actions reused across MCP-family repos. Before adding a new action, confirm the logic is (or will be) needed in more than one caller repo — single-repo logic should stay in that repo's workflow. Each action lives in its own directory. If a feature has multiple related entry points (e.g. deploy + cleanup), group them under a common parent: or for multi-action groups: Caller references: - modelcontextprotocol/actions/<action-name>@main - modelcontextprotocol/actions/<group-name>/<sub-action>@main Required fields Every action.yml must include: -…
- Reads credentials
The file
We split this CLAUDE.md into the rules it gives an agent
7 rules. About 0 are common, 5 are distinctive, and 2 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈5
Distinctive · estimate
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 4
Before adding a new action, confirm the logic is (or will be) needed in more than one caller repo — single-repo logic should stay in that …
- Very specific: line 37
Every action.yml must include:
- Distinctive: line 80
Document in the README if a checkout is required on the caller side.
- Very specific: line 90
If the action posts comments, creates issues, or otherwise calls the GitHub API, accept a github-token input with default ${{ github.token …
- Distinctive: line 129
Follow the table with a subsection per secret documenting:
- Distinctive: line 137
If no secrets are needed, state that explicitly.
- Distinctive: line 144
Add a row to the root README.md table with the action path and a one-line description.
≈ “Common” is an estimate: at least 1 in 5 of the 26,980 CLAUDE.md files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Adding new actions to this repo
This repo holds composite GitHub Actions reused across MCP-family repos. Before adding a new action, confirm the logic is (or will be) needed in more than one caller repo — single-repo logic should stay in that repo's workflow.
Directory layout
Each action lives in its own directory. If a feature has multiple related entry points (e.g. deploy + cleanup), group them under a common parent:
<action-name>/
README.md # usage docs, inputs/outputs, caller requirements
action.yml # the composite actionor for multi-action groups:
<group-name>/
README.md # covers all actions in the group
<sub-action>/
action.yml
<sub-action>/
action.ymlCaller references:
modelcontextprotocol/actions/<action-name>@mainmodelcontextprotocol/actions/<group-name>/<sub-action>@main
Composite action conventions
Required fields
Every action.yml must include:
name— human-readable namedescription— one or two sentences on what it doesinputs— withdescriptionandrequiredfor each; usedefaultfor optional inputsruns.using: composite
Every run: step needs an explicit shell:
Composite actions do not inherit a default shell. Omitting shell: fails at
runtime, not validation time.
- name: Do something
shell: bash
run: |
echo "..."Pass inputs to scripts via env:, not interpolation
Direct interpolation of ${{ inputs.* }} into run: or script: bodies is
an injection vector. Pass values through env: and read them as environment
variables or process.env.*:
- shell: bash
env:
MY_INPUT: ${{ inputs.my-input }}
run: |
echo "${MY_INPUT}"
- uses: actions/github-script@v8
env:
MY_INPUT: ${{ inputs.my-input }}
with:
script: |
const val = process.env.MY_INPUT;Do not actions/checkout inside a composite action
The caller has already checked out; the composite runs in that workspace. Document in the README if a checkout is required on the caller side.
Secrets are always caller-provided
Composite actions cannot access secrets.* directly. Define inputs for any
credentials and document in the README which secrets the caller must configure
and pass through.
github-token input
If the action posts comments, creates issues, or otherwise calls the GitHub
API, accept a github-token input with default ${{ github.token }}. This
lets callers override with a PAT if needed:
github-token:
description: GitHub token for API calls
required: false
default: ${{ github.token }}Outputs
Expose anything a caller might want to reference downstream. Wire outputs from
steps to the action's outputs: block:
outputs:
url:
description: Deployment URL
value: ${{ steps.deploy.outputs.url }}README requirements
Each action (or group) must have a README.md covering:
- What it does — one paragraph per action
- Prerequisites — external resources that must exist (CF project, etc.)
Required secrets — a dedicated section starting with a table with concrete secret names and wiring. Prescribe exact names so callers can copy-paste without deciding:
| Repo secret name | Action input | Value | |---|---|---| | `FOO_API_TOKEN` | `api-token` | ... |Follow the table with a subsection per secret documenting:
- Where to get it — exact navigation path in the external dashboard/UI (e.g. "Cloudflare → My Profile → API Tokens → Create Token")
- Minimum permission scope — the least privilege that makes the action work
The usage example must reference the same concrete secret names.
If no secrets are needed, state that explicitly.
- Caller requirements —
permissions:, fork-PR guards, concurrency - Usage — a minimal but complete caller workflow example
- Inputs/outputs — tables with name, required, default, description
Registering the action
Add a row to the root README.md table with the action path and
a one-line description.
Validation
- Parse check:
python3 -c "import yaml; yaml.safe_load(open('path/action.yml'))" - Structure: verify every
run:step hasshell: - Full verification requires a live caller workflow — open a PR in a consuming
repo that references
@<your-branch>and confirm end-to-end behavior before merging
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

