# Context skills

These are the skills Context agents run on: markdown `SKILL.md` files plus any attached templates, routines or scripts, that teach an AI coding host or chat assistant how to work through Context. Three MCPs are the entry points — the **Context iOS MCP** and the **Context Web MCP** install the harness (`rules`, `setup-context`, `daily-brief` and their third-party dependencies) automatically when you call `setup {workflow:'harness'}`; the **Context Blog MCP** installs the blog, site and Instagram workflows via its own `setup`. This page, `https://app.onecontext.me/skills`, is the canonical distribution point for all of them: every skill is a folder at `https://app.onecontext.me/skills/<key>/` (each file fetchable verbatim), `https://app.onecontext.me/skills/<key>.md` is the shortcut to its `SKILL.md` (`?version=N` pins a revision), `<key>.zip` downloads the folder, and [skills.json](https://app.onecontext.me/skills.json) is the machine-readable manifest.

Downloads: [all skills (.zip)](https://app.onecontext.me/skills.zip) · [this index as markdown](https://app.onecontext.me/skills.md)

## Start here

Set up a blog. 1) Connect Context — Web `https://app.onecontext.me/api/mcp` or iOS `https://mcp.onecontext.me/mcp`. 2) Connect Context Blog — `https://blog.onecontext.me/api/mcp` (Google sign-in; no key needed for interactive hosts). Claude Code: `claude mcp add --transport http context https://app.onecontext.me/api/mcp` and `claude mcp add --transport http context-blog https://blog.onecontext.me/api/mcp`. 3) Say: **Call the Context Blog tool `setup` with workflow 'blog' and follow its nextStep.** Your agent interviews you (brand, audience, hubs, cadence, channels, keys by name), charts a Meetly-style epic in Context (Blog / Instagram / Backlog / Daily Brief / Health / Performance), writes the tenant to the platform, and hands you the routine templates for your machine. If the epic already exists, setup says so and reuses it; say `redo` to re-run the interview and refresh the brand guides. Every draft waits for your approval in Context before it goes live.

Skill: [blog-agent](https://app.onecontext.me/skills/blog-agent/) · Full guide: [How to set up and automate your blog](https://app.onecontext.me/guides/blog) ([markdown](https://app.onecontext.me/guides/blog.md)).

## Skills

| skill | kind | version | description | depends | served by | licence | link |
|---|---|---|---|---|---|---|---|
| [daily-brief](https://app.onecontext.me/skills/daily-brief/) | harness | 2 | Daily heartbeat for any recurring agent workflow tracked in Context: once a day, post one comment on the workflow's designated Daily Brief issue saying what published, what awaits approval, what failed and what is next, and rebuild the epic's `## Runs` block (schedule · next slots · routine health · last 7 briefs) so the owner sees it on the epic. A missing brief is the outage alert. | [rules](#rules) | Context iOS MCP · Context Web MCP — `setup {workflow:'harness'}` | MIT | [SKILL.md](https://app.onecontext.me/skills/daily-brief.md) · [.zip](https://app.onecontext.me/skills/daily-brief.zip) |
| [rules](https://app.onecontext.me/skills/rules/) | harness | 1 | The Context harness — the execution discipline any agent follows when a task needs a plan and runs through Context. Load first; every other Context skill inherits these rules. | — | Context iOS MCP · Context Web MCP — `setup {workflow:'harness'}` | MIT | [SKILL.md](https://app.onecontext.me/skills/rules.md) · [.zip](https://app.onecontext.me/skills/rules.zip) |
| [setup-context](https://app.onecontext.me/skills/setup-context/) | harness | 1 | Chart a piece of work as a Context map (an epic plus linked tickets) on Context, then work it to done with review gates. Use when the user asks to get started, to plan or track work in Context, or when a task needs a plan. | [rules](#rules), [wayfinder](#wayfinder), [grill-me](#grill-me) | Context iOS MCP · Context Web MCP — `setup {workflow:'harness'}` | MIT | [SKILL.md](https://app.onecontext.me/skills/setup-context.md) · [.zip](https://app.onecontext.me/skills/setup-context.zip) |
| [grill-me](https://app.onecontext.me/skills/grill-me/) | third-party | 1 | Grill the user relentlessly about a plan, decision, or idea. Use when the user wants to stress-test their thinking, or uses any 'grill' trigger phrases. | — | installed as a dependency by either | MIT ([source](https://github.com/mattpocock/skills/blob/6654f6b60cd9d5be8b54c6fafe44346dabeb3b76/skills/productivity/grilling/SKILL.md)) | [SKILL.md](https://app.onecontext.me/skills/grill-me.md) · [.zip](https://app.onecontext.me/skills/grill-me.zip) |
| [wayfinder](https://app.onecontext.me/skills/wayfinder/) | third-party | 1 | Plan a huge chunk of work (more than one agent session can hold) as a shared map of decision tickets on your issue tracker, and resolve them one at a time until the way to the destination is clear. | — | installed as a dependency by either | MIT ([source](https://github.com/mattpocock/skills/blob/6654f6b60cd9d5be8b54c6fafe44346dabeb3b76/skills/engineering/wayfinder/SKILL.md)) | [SKILL.md](https://app.onecontext.me/skills/wayfinder.md) · [.zip](https://app.onecontext.me/skills/wayfinder.zip) |
| [blog-agent](https://app.onecontext.me/skills/blog-agent/) | blog | 6 | Set up blog" for any agent connected to Context + the Context Blog MCP: detect an existing tenant epic and reuse it (redo = re-interview + updated brand guides), or interview the owner (grill-me / wayfinder), fetch the facts, chart a tenant epic with brand, audience and design documents, one parent issue per channel with every piece as its child, one Backlog, the standing issues, then install and verify the routines on this machine (daily brief first) and raise one combined map + spec review. Blog · site · Instagram, once or recurring, Artifact · Review · Hosted. | [rules-blog](#rules-blog), [rules](#rules), [setup-context](#setup-context), [wayfinder](#wayfinder), [grill-me](#grill-me), [daily-brief](#daily-brief), [blog-drafter](#blog-drafter), [blog-checker](#blog-checker), [blog-publisher](#blog-publisher), [instagram-drafter](#instagram-drafter), [instagram-publisher](#instagram-publisher), [site-builder](#site-builder), [blog-assessment](#blog-assessment) | Context Blog MCP — `setup {workflow:'blog'}` | MIT | [SKILL.md](https://app.onecontext.me/skills/blog-agent.md) · [.zip](https://app.onecontext.me/skills/blog-agent.zip) |
| [blog-assessment](https://app.onecontext.me/skills/blog-assessment/) | blog | 1 | Weekly assessment for a Context Blog tenant: read the stats the Blog MCP holds (traffic, AI-referral share, Search Console, indexing), run the agent-side AI-visibility probe with the host's keys (OpenRouter, optional Perplexity / SerpApi — by NAME, cost-capped), ingest the results, and post one report sub-issue under the tenant's Performance Report lane with citations found / missing and topic actions for the Topic Lane. | [rules-blog](#rules-blog), [rules](#rules) | Context Blog MCP — `setup {workflow:'blog'}` | MIT | [SKILL.md](https://app.onecontext.me/skills/blog-assessment.md) · [.zip](https://app.onecontext.me/skills/blog-assessment.zip) |
| [blog-checker](https://app.onecontext.me/skills/blog-checker/) | blog | 3 | Independent quality gate between the maker and the human for Context Blog content: run the MACHINE checks through the Blog MCP (content_lint, preview_render), do the JUDGEMENT checks and the fact-check yourself, record a pass / bounce / escalate verdict on the Context issue (review doc + rendered preview + models), and raise the reviewRequest only on pass. | [rules-blog](#rules-blog), [rules](#rules) | Context Blog MCP — `setup {workflow:'blog'}` | MIT | [SKILL.md](https://app.onecontext.me/skills/blog-checker.md) · [.zip](https://app.onecontext.me/skills/blog-checker.zip) |
| [blog-drafter](https://app.onecontext.me/skills/blog-drafter/) | blog | 5 | Nightly maker for Context Blog: keep the tenant's draft buffer at or above the floor, take the next hub-bound topic from the slotted publish issues under the tenant's `Blog` parent or graduate one from the `Backlog`, research it with cited sources, draft through the Blog MCP `article_upsert` (lint-gated, fix and retry, two bounces then escalate), hand the draft to `blog-checker` in a separate call, spawn the locale variants as linked issues, and leave the publish issue carrying draft + verdict + preview + models behind one blocking reviewRequest. Never publishes. | [rules-blog](#rules-blog), [rules](#rules), [blog-checker](#blog-checker) | Context Blog MCP — `setup {workflow:'blog'}` | MIT | [SKILL.md](https://app.onecontext.me/skills/blog-drafter.md) · [.zip](https://app.onecontext.me/skills/blog-drafter.zip) |
| [blog-publisher](https://app.onecontext.me/skills/blog-publisher/) | blog | 2 | Every 3 hours, publish exactly the Context Blog pieces the owner approved: Context issue `done`, `due` ≤ now &lt; `due` + 3 h, no live link yet — through the Blog MCP (`article_set_status` forward, then `publish {assert_context_done: true, context_issue_id}`), post the live link on the issue, cascade to the checked locale variants, re-slot missed windows, and stay idempotent. Refuses anything that is not `done`. | [rules-blog](#rules-blog), [rules](#rules) | Context Blog MCP — `setup {workflow:'blog'}` | MIT | [SKILL.md](https://app.onecontext.me/skills/blog-publisher.md) · [.zip](https://app.onecontext.me/skills/blog-publisher.zip) |
| [instagram-drafter](https://app.onecontext.me/skills/instagram-drafter/) | blog | 2 | Maker for Context Blog Instagram carousels and posters: take the next `channel:instagram` publish issue of the tenant epic, write the caption and the slide copy from its linked blog topic in the tenant's voice, render the slides from the paper-cards template with headless Chrome, upload them as tenant assets, `instagram_post_upsert`, attach slides + caption + models to the Context issue, hand it to `blog-checker`, and leave one blocking reviewRequest. Degrades to copy-only when the host has no renderer. Never publishes, never schedules. | [rules-blog](#rules-blog), [rules](#rules), [blog-checker](#blog-checker) | Context Blog MCP — `setup {workflow:'instagram'}` | MIT | [SKILL.md](https://app.onecontext.me/skills/instagram-drafter.md) · [.zip](https://app.onecontext.me/skills/instagram-drafter.zip) |
| [instagram-publisher](https://app.onecontext.me/skills/instagram-publisher/) | blog | 2 | Every 3 hours, post exactly the Instagram carousels the owner approved: Context issue `done`, `due` ≤ now &lt; `due` + 3 h, no live link yet — upload the slides to Postiz with `POSTIZ_API_KEY` (by name, host only), schedule the post on the tenant's Instagram channel found by name, `publish` the instagram_post on the Blog MCP, and post the Postiz id, then the permalink, on the issue. Dedupe guard before any call; idempotent; refuses anything that is not `done`; degrades to owner self-publish without a key. | [rules-blog](#rules-blog), [rules](#rules) | Context Blog MCP — `setup {workflow:'instagram'}` | MIT | [SKILL.md](https://app.onecontext.me/skills/instagram-publisher.md) · [.zip](https://app.onecontext.me/skills/instagram-publisher.zip) |
| [rules-blog](https://app.onecontext.me/skills/rules-blog/) | blog | 3 | Rules for every Context Blog workflow, layered on the Context harness: the three forks (what · how often · output tier), the label vocabulary, the checker and publish gates, key names only, daily brief first, and which server does what. Every blog, site and Instagram skill inherits this. | [rules](#rules) | Context Blog MCP — `setup {workflow:'blog'|'site'|'instagram'}` | MIT | [SKILL.md](https://app.onecontext.me/skills/rules-blog.md) · [.zip](https://app.onecontext.me/skills/rules-blog.zip) |
| [site-builder](https://app.onecontext.me/skills/site-builder/) | blog | 1 | One-time site / landing page for a Context Blog tenant: fix the page goal, audience, sections (hero, how it works, tiers, proof, CTA) and design tokens in a short interview, draft straight into the Blog MCP page shape, `page_upsert` honouring the lint (dry run first), `preview_render`, hand the draft to `blog-checker` in a separate call, leave the Context issue behind one `gate:artifact` review, and `publish` only after the owner approved it there. Never publishes unapproved; never a second CTA. | [rules-blog](#rules-blog), [rules](#rules), [blog-checker](#blog-checker), [grill-me](#grill-me) | Context Blog MCP — `setup {workflow:'site'}` | MIT | [SKILL.md](https://app.onecontext.me/skills/site-builder.md) · [.zip](https://app.onecontext.me/skills/site-builder.zip) |

## Install

Unzip (or copy the folder) so `SKILL.md` lands at: **Claude Code** `.claude/skills/<key>/SKILL.md` · **Codex** `.agents/skills/<key>/SKILL.md` · **Cursor** `.cursor/rules/<key>.mdc` · **ChatGPT / claude.ai** `add the file to your skills`.
