# Skill MCP Demo

> The example skill shipped with skill-mcp — shows the SKILL.md shape, a bundled reference file, and a declared runnable script.

- Skill: `chrischall/skill-mcp-demo` (Agent Skill, multi-file: 3 files)
- Install (CLI): `npx skillmds@latest add chrischall/skill-mcp-demo`
- Raw SKILL.md: https://api.skillmd.com/api/skills/chrischall/skill-mcp-demo/raw
- Safety review: pending (external: skill-scanner PASS, skillspector CAUTION)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: chrischall (https://skillmd.com/u/chrischall)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/chrischall/skill-mcp-demo

---


# skill-mcp demo

This skill exists so `skill-mcp` does something useful the first time it runs,
and so the shape of a skill it can serve is visible in one file.

## What a skill is

A directory holding `SKILL.md` — YAML frontmatter (`name`, `description`, and
optionally the `mcp-host:` block below) followed by instructions — plus any
files the instructions refer to. Read `references/declaration.md` with
`skill_file` for the declaration block's fields.

## Declaring a runnable script

Only a script named in `mcp-host.run` may be executed, and only through
`skill_run`. This skill declares one:

- `scripts/report.js` — prints what the fence handed it: its argv, its working
  directory, and the NAMES of the environment variables it received.

Run it to see the fence from the inside:

```
skill_run(name: "skill-mcp-demo", script: "scripts/report.js", args: ["hello"], confirm: true)
```

## What the fence does and does not do

It decides **which** code runs and **what it is handed**. It does not make the
code safe — a declared script is still arbitrary code, bounded by whatever the
host running this server bounds it with.

