# Install the deed.page agent skill in Claude Code, Codex, Cursor, and Hermes

There are two ways to give an agent deed.page. The MCP server at `https://deed.page/mcp` adds publishing as tools. The deed.page skill is a single `SKILL.md` file that tells the agent which `curl` command to run when someone says "publish this", "host this report", or "give me a link". The skill needs no connector setup. It runs in any agent that can read skill files and has a shell.

The skill is MIT-licensed and public at [github.com/f-o-x11/deed-page-skill](https://github.com/f-o-x11/deed-page-skill). Every command below was run on October 21, 2026, against production. The test sites were deleted afterwards.

## Install with one command

The [skills.sh](https://www.skills.sh/f-o-x11/deed-page-skill) installer reads the repo and copies the skill into the folder your agent loads skills from. Run it from your project directory:

    npx skills add f-o-x11/deed-page-skill -a claude-code

That writes `./.claude/skills/deed-page/SKILL.md`. Choose a different agent with `-a`:

    npx skills add f-o-x11/deed-page-skill -a cursor      # ./.agents/skills/deed-page
    npx skills add f-o-x11/deed-page-skill -a codex -g    # ~/.agents/skills/deed-page

`-g` installs it for every project instead of just the current one. `-a hermes-agent` targets Hermes Agent. Leave out `-a` and the installer asks which agents you use. Before it copies anything, the installer prints a security summary for the skill. The file it installs is the same one that lives in the repo.

## Install without npx

If you would rather not run an installer, the skill is just one file. Copying it by hand works the same way:

    git clone --depth 1 https://github.com/f-o-x11/deed-page-skill /tmp/deed-page-skill
    mkdir -p ~/.claude/skills && cp -r /tmp/deed-page-skill/skills/deed-page ~/.claude/skills/

deed.page also serves a longer version of the skill at `https://deed.page/skill.md`. It covers the full API, including versions, merge uploads, and domains. The install command for it is listed in `https://deed.page/.well-known/skills/index.json`:

    mkdir -p ~/.claude/skills/deed-page && curl -fsSL https://deed.page/skill.md -o ~/.claude/skills/deed-page/SKILL.md

Pick one of the two. The repo version is short and covers publishing. The served version is the full reference.

## What the agent runs

Once the skill is installed, asking the agent to "put this report online" makes it pick a slug with a random suffix and send one request:

    SLUG="report-$(head -c4 /dev/urandom | od -An -tx1 | tr -d ' \n')"
    curl -sS -T report.html "https://deed.page/v1/sites?slug=$SLUG&ref=skill-gh" \
      -H "X-Client: Claude Code"

The response holds the live URL and, on that first publish only, a token:

    {"ok":true,"url":"https://report-4fcfd126.deed.page/","slug":"report-4fcfd126",
     "version":"v1","permanent":true,"plan":"free","token":"deed_tok_..."}

The skill tells the agent to answer with `url` and keep the token in `DEEDPAGE_TOKEN` for the session. deed.page stores only a SHA-256 of that token, so it is the one key that can update or delete the site. `?ref=skill-gh` records that the publish came from the skill and does not change the result. `X-Client` names the agent.

For a folder, the skill sends a tarball with the same token:

    tar -C ./site -czf /tmp/site.tar.gz .
    curl -sS -T /tmp/site.tar.gz "https://deed.page/v1/sites?slug=$SLUG&ref=skill-gh" \
      -H "X-Client: Claude Code" -H "Authorization: Bearer $DEEDPAGE_TOKEN"

That returned `"version":"v2"` with both files live. When the user asks for a delete, the agent sends `curl -sS -X DELETE "https://deed.page/v1/sites/$SLUG" -H "Authorization: Bearer $DEEDPAGE_TOKEN"`, which returns `{"ok":true,"deleted":"<slug>"}`.

## The same token works over MCP

Skill and MCP aren't an either/or choice. The skill's token also works on the MCP server, so an agent can publish with `curl` and later manage that site through tools. Here is a raw MCP call that publishes v3 of the same slug:

    curl -sS https://deed.page/mcp \
      -H 'content-type: application/json' \
      -H 'accept: application/json, text/event-stream' \
      -H "Authorization: Bearer $DEEDPAGE_TOKEN" \
      -d '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"publish_site",
           "arguments":{"slug":"'"$SLUG"'","files":{"index.html":"<h1>v3 via MCP</h1>"}}}}'

The result came back with `"version": "v3"`, and the site served the new page. `tools/list` currently returns 24 tools. Besides publishing, they cover versions and restore, custom domains, analytics, passwords, webhooks, token rotation, and `set_listing` for the opt-in gallery at [deed.page/explore](https://deed.page/explore). Every publish response carries `"listing":{"listed":false}` until the agent opts in with `listed: true` plus a category, title, and description.

## Skill or MCP?

- **Use the skill** when the agent has a shell and you want zero setup: no connector to register and no config file. It also fits agents that support skills but not remote MCP servers.
- **Use MCP** when the agent has no shell, as with many chat clients, or when you want typed tools for versions, domains, and analytics without the agent having to compose `curl` calls. The [MCP walkthrough](https://deed.page/blog/mcp-publish-walkthrough) shows how to connect it.
- **Use both** with one token. Publishing works the same way over either path.

## Limits

The skill uses the same Free plan as any other client: 25 sites, 25 MB per site, 60 publishes an hour, and 4 MB per request. There's no signup. Free sites are public, so the skill tells the agent never to publish secrets. If your agent also needs an email address of its own, Cooper Email ([cooperemail.com](https://cooperemail.com)) comes from the same team at Avatar 8 LLC.

---

*Originally published on [deed.page](https://deed.page/blog/install-the-deed-page-skill).*

