Agent skills
Eight skills that teach your agent to read the report, find where you lose, draft the fix and measure again. They work in any agent that reads Markdown.
How skills work
Each skill is a SKILL.md in the open Agent Skills format. It holds the procedure. The MCP server supplies the data.
- Report text is data. Quoted, never obeyed.
- No stale numbers. Checks
run_statusand_guidancefirst. - Asks before a run. One run per yes, since runs spend prompts.
- Asks before writing. Approval for each Contentstack create, update or publish.
- Keys stay secret. Never printed, logged or saved to a file.
What you need
- Growth or Enterprise. Free has no API or MCP access.
- A Read & write key in
CONTENTSTACK_CANOE_API_KEY. Create a key - The MCP server connected as
contentstack-canoe. Connect your client - For Fix it in Contentstack: the Contentstack MCP with
GROUPS=cma, as someone who can edit entries.
Install
Copy the folders into your personal skills directory:
curl -LO https://canoe.contentstack.com/skills/contentstack-canoe-skills.zip
unzip contentstack-canoe-skills.zip -d contentstack-canoe-skills
mkdir -p ~/.claude/skills
cp -R contentstack-canoe-skills/contentstack-canoe-* ~/.claude/skills/
For a team, commit them to the repo's .claude/skills/. Call one by name, like /contentstack-canoe-weekly-report.
Turn on Code execution and file creation in Settings, then Capabilities. On Team and Enterprise, an Owner also turns on Skills.
Open Customize, then Skills. Click +, then Create skill, then Upload a skill, once for each zip in the list below. On a paid plan, you can upload the one plugin zip under Customize, then Plugins, instead.
Connect the MCP server. Custom connectors with a key header work only for organizations in Anthropic's request-header beta. Not in it? Use it without a connector.
Claude Desktop uses the same account and skills. Type / in a chat to pick one.
Upload each skill with the Skills API. The upload path must start with the skill's folder name.
curl https://api.anthropic.com/v1/skills \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-F "files[]=@contentstack-canoe-weekly-report/SKILL.md;filename=contentstack-canoe-weekly-report/SKILL.md"
Skills run in a container with no network, so connect Contentstack Canoe through the MCP connector in the same request:
curl https://api.anthropic.com/v1/messages \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "anthropic-beta: code-execution-2025-08-25,mcp-client-2025-11-20" \
-H "content-type: application/json" \
-d @- <<EOF
{
"model": "claude-opus-5",
"max_tokens": 16000,
"container": {
"skills": [{ "type": "custom", "skill_id": "<SKILL_ID>", "version": "latest" }]
},
"mcp_servers": [{
"type": "url",
"url": "https://canoe.contentstack.com/api/mcp",
"name": "contentstack-canoe",
"authorization_token": "$CONTENTSTACK_CANOE_API_KEY"
}],
"tools": [
{ "type": "code_execution_20260521", "name": "code_execution" },
{
"type": "mcp_toolset",
"mcp_server_name": "contentstack-canoe",
"configs": { "trigger_geo_test_run": { "enabled": false } }
}
],
"messages": [{ "role": "user", "content": "Build this week's AI visibility brief for Tarnwell Cycles." }]
}
EOF
No person is there to confirm a run, so trigger_geo_test_run is off. Turn it on only for the re-measure skill, when your code asks a person first. See Anthropic's skills guide (opens in a new tab).
Put the folders in your repo. Tell the agent to read contentstack-canoe-<name>/SKILL.md before a task, or list each skill in your rules or AGENTS.md.
Some clients prefix tool names, like mcp__contentstack-canoe__list_projects. The skills use bare names and work either way.
Use it without a connector
Claude.ai connectors with a key header are a limited beta, and ChatGPT needs OAuth sign-in (coming soon). Until then, use the skills with a report file.
Upload the skills: Customize, Skills, +, Create skill, Upload a skill. Or upload the one plugin zip. Code execution must be on.
In a chat, attach the exported report JSON or the report PDF.
Type
/, pick a skill and ask, like “Weekly brief from this report.”
Create a Project. In its settings, paste the Project instructions.
Add the playbook and your report file as project files.
Start a chat in the project, like “Competitor gaps from the latest report.”
On ChatGPT Business and Enterprise, you can upload the skills instead.
Create a Read only key in Settings, then API keys.
Run the export script with Node.js 18 or later. It reads the latest report over the API and writes one JSON file of about 200 KB.
Terminalexport CONTENTSTACK_CANOE_API_KEY="sk_your_read_only_key" node contentstack-canoe-export.mjs --list node contentstack-canoe-export.mjs <monitor_id>Upload that file to Claude.ai or a ChatGPT Project, as in the other tabs.
- Never paste a key into a chat, a Project or a skill. If you did, revoke it.
- Prefer a file path or an upload. Exports use a Read only key.
- Never allow
trigger_geo_test_rununless you want runs. They spend prompts.
The skills
Weekly visibility brief
contentstack-canoe-weekly-report
Works todayRead only
A two-minute read: score and trend, visibility, rank, sentiment, per-engine scores and the buyer journey. Then what moved and the three recommendations to act on first.
Give me this week's AI visibility brief for Tarnwell Cycles.
Competitor gap analysis
contentstack-canoe-competitor-gaps
Works todayRead only
Which competitors win, on which engines, stages and exact questions, in the engines' own words, plus the sources behind each win.
Who is beating Tarnwell Cycles in AI answers, and on which questions? Show me what the engines said about Aldren.
Citation target list
contentstack-canoe-citation-targets
Works todayRead only
The third-party domains and pages the engines cite, ranked, with engines, stages and competitor overlap. For PR and review sites. Never scrapes contacts or sends anything.
Build a PR target list from the sites the engines cite when buyers ask about commuter e-bikes.
Content briefs from lost questions
contentstack-canoe-content-briefs
Works todayRead only
Briefs for the questions you lose: the buyer's phrasing, what winning answers say, the evidence, the page type and the sources worth earning.
Turn the questions we lose to Aldren and Solvik into content briefs.
Fix it in Contentstack
contentstack-canoe-fix-in-contentstack
Works today, partlyWrites on approval
With the Contentstack MCP: picks a recommendation, finds the entry, shows the change and updates or publishes only when you approve that step. Then offers a re-run.
Partly: Contentstack Canoe doesn't know which entry renders which page, so the agent searches your stack by URL or title.
Take the top recommendation and draft the fix in Contentstack. Don't publish until I say so.
Re-measure after a change
contentstack-canoe-remeasure
Works todaySpends prompts
Estimates the prompt cost, starts the run (trigger_geo_test_run) on your yes, polls run_status and reports what moved: score, visibility, rank, engines, competitors and sources.
We just published the Aldren comparison page. Re-run the monitor and tell me what changed.
Visibility alerts
contentstack-canoe-visibility-alerts
Works today, partlyRead only
Checks every monitor against your thresholds: score drops, rank slips, competitors climbing, citation share falling, top sources lost. Posts to a channel you've connected only when a line is crossed.
Partly: runs on your own scheduler. Native alerts and outbound webhooks are coming soon.
Every Monday at 9, check all our monitors and post anything that crossed a threshold to #ai-visibility.
Leadership summary
contentstack-canoe-exec-summary
Works todayRead only
One board-ready page: where you stand, the trend, how you compare with key competitors and the three things to do next.
Write a one-page AI visibility update for Thursday's leadership meeting.A weekly loop
The skills hand off to each other:
- Weekly visibility brief
- Competitor gap analysis
- Content briefs from lost questions
- Fix it in Contentstack
- Re-measure after a change
To run the fix step without a chat, use Agent OS. It only creates drafts.
Versions and updates
Version 1.0.0. Skills don't update themselves, so download all eight again (.zip, 47 KB) and replace your copies. Proprietary license, © 2026 Contentstack Inc.