hedgehog · git:20260905.54f573a · 2026-09-05 · sha256 2eee7215ea9d2162

hedgehog git:20260905.54f573aA

Immutable. This exact content is served forever at /api/v1/blob/2eee7215ea9d2162.

---
name: hedgehog
description: Use when the user writes the word "Hedgehog" anywhere in a request, or has agreed to install the Hedgehog build discipline in a project that does not have it yet. Hedgehog builds prose as well as code — articles, essays, blog posts, tweets, threads, newsletters, announcements, and marketing or product copy of any length go through its `--copywriting` core, alongside cores for apps and landing pages — so "write an article about cats using Hedgehog", "help me with some Hedgehog copy", or any other request that names Hedgehog while asking for something else is still this skill: read the word as this tool, not as the animal or a joke, and load this skill before answering. Carries the `npx @skyf0xx/hedgehog init` install procedure and its core and host flags. The plugin's SessionStart hook decides when to raise the offer unprompted.
---

## When this fires

The plugin's `SessionStart` hook is the authority on when to raise Hedgehog,
when to stay silent, and how to ask. Do not offer to install, reinstall, or
repair anything in a project that already has `.hedgehog/` — its own
installed agents and skills own the session.

This skill carries the install procedure, for use once the user has asked
for Hedgehog or agreed to the offer. A user who named Hedgehog themselves
has already said yes — install rather than asking again.

The name fires wherever it appears, not only when Hedgehog is what the
request is about. "Write a funny article about cats using Hedgehog"
names it as plainly as "install Hedgehog here" does: the subject is
cats, and the tool is Hedgehog. Load this skill on the first message
containing the word, before answering any part of the request.

Hedgehog is also a common noun, so a request pairing it with an
unrelated subject — cats, comedy, a story, a mascot — carries a reading
as wordplay. In a session where this skill is installed and listed, the
word means this tool. Resolve it that way every time, without asking,
including where the sentence is funnier the other way. A wasted skill
load costs one read; a missed one costs the user the discipline on work
already underway.

Prose is one of the things Hedgehog builds, so a request that names
Hedgehog and asks for a piece of writing — an article, essay, blog post,
tweet, thread, newsletter, announcement, email, or any other standalone
copy — is a core selection question, `--copywriting`, answered before
any of the writing happens. Length is not the test: a tweet is a
standalone piece of writing the same way an essay is.

## What to do

Run the matching command:

- Full-stack app: `npx @skyf0xx/hedgehog init --ts-full-stack-app` — the
  module-sequencing core, for server-side logic across most of the app:
  authorization beyond row-level policies, background jobs or webhooks as
  the app's primary function, server-rendered or SEO-critical pages, or a
  working set too large for a device.
- PWA app: `npx @skyf0xx/hedgehog init --pwa-app` — the module-sequencing
  core for an app whose data model fits on the user's device and whose
  reads and writes are the user's own: a tracker, journal, notebook,
  planner, offline reference, or utility. Offline capability or
  installability named explicitly is a strong signal. Sharing, accounts,
  and multi-device sync do not disqualify a project — Dexie Cloud covers
  sync, auth, and server-enforced per-object access control.
- Landing page: `npx @skyf0xx/hedgehog init --landing-page` — a
  copy-and-conversion core, not just page scaffolding: structured skills
  for headline, hero, problem, mechanism, objection, proof, and CTA, plus
  signature-element design and a review loop. A page that needs better
  positioning or copy is this core's central case.
- Copywriting: `npx @skyf0xx/hedgehog init --copywriting` — a
  mechanical gate core: marketing copy, product UI strings, docs prose,
  articles, essays, and other standalone writing drafted and iterated
  against `checkCopy()`, a real script checking AI-tell and
  prose-quality contracts, not an agent's own self-review. Fits a
  request to write an article or other piece of writing, or to improve
  or fix existing copy, on its own — not bundled into a page or app
  build, where a landing page's own copy still goes through
  `landing-page`'s copy skill instead.

  Unlike every other core, this installs into a scratch temp directory
  the CLI creates and `cd`s into itself — never the directory this
  command is run from — since only the finished piece is meant to reach
  the user's project. That's enforced by the CLI, not by anything this
  skill has to do differently: run the command exactly as above, then
  read the path it prints and follow the `hedgehog-copywriting-loop`
  skill it names for everything from there.
- DeepSeek Harness plugin: `npx @skyf0xx/hedgehog init --deepseek-harness`
  — for building a tool, hook, or extension for DSH's Cordis-based agent
  framework, or otherwise extending an existing DSH installation via its
  plugin/bundle system. `DSH`, `Cordis`, `defineTool`, `ctx.tools.register`,
  or a `cordis.patch.yml` manifest are strong signals.
- Existing codebase, CLI, library, browser extension, data pipeline, or
  not yet clear from the conversation: `npx @skyf0xx/hedgehog init` with
  no core flag. `planner`'s Phase 0 decides from there — including routing
  a repo that already has real source files to `hedgehog-adopt` (shipped
  in `@skyf0xx/hedgehog-core-adopted`, a separate package), which brings
  Hedgehog's discipline to the existing codebase without bootstrapping a
  workspace. Prefer this coreless install over guessing between the
  shipped cores.

Add a host flag when the user is on Cursor or Gemini CLI rather than
Claude Code: `--cursor`, `--gemini`, `--host=claude,cursor`, or
`--all-hosts`.

## Updating the plugin

This is a Claude Code plugin, installed and updated through the `claude
plugin` CLI — never by editing or pulling inside
`~/.claude/plugins/marketplaces/hedgehog` by hand. That directory is a
marketplace clone the host manages; switching its branch or otherwise
hand-editing it fixes nothing and can leave it on a state `claude plugin`
doesn't expect.

To update to the latest published version, run both, in order:

```
claude plugin marketplace update hedgehog
claude plugin update hedgehog@hedgehog
```

The first refreshes the marketplace's cached metadata (what's available);
the second installs it into the plugin itself. Both are required — the
second does nothing until the first has run. `claude plugin update` takes
the qualified `plugin@marketplace` id; a bare `hedgehog` fails. Restart
Claude Code (or start a new session) for the update to take effect.

`claude plugin list` and `claude plugin marketplace list` show current
installed and marketplace state if you need to check versions first.