Superpowers Writing Skills logo

Superpowers Writing Skills

Community
christopherarter
superpowers-writing-skills

Creating, editing, or testing a Reasonix skill? Load first, before you deploy it.

Overview

Publisherchristopherarter
Repositorysuperpowers-reasonix
Skill namesuperpowers-writing-skills
Stars
101
Forks
7
Bundled files
1
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 1 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by christopherarter on GitHub. Read the source before you install it.

Installation

Install the Superpowers Writing Skills AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/christopherarter/superpowers-reasonix/tree/main/skills/superpowers-writing-skills
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/christopherarter/superpowers-reasonix.git /tmp/superpowers-reasonix
mkdir -p .claude/skills
cp -r /tmp/superpowers-reasonix/skills/superpowers-writing-skills .claude/skills/superpowers-writing-skills
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Superpowers Writing Skills in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Superpowers Writing Skills on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Superpowers Writing Skills is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Writing Skills (for Reasonix)

Overview

Writing skills IS TDD for process docs. Write test cases (pressure scenarios, subagents). Watch fail (baseline). Write skill. Watch pass (agent complies). Refactor (close loopholes).

Core principle: Didn't watch an agent fail without the skill? Don't know it teaches the right thing.

REQUIRED BACKGROUND: Know superpowers-test-driven-development first — defines RED-GREEN-REFACTOR. This adapts it to docs.

Platform spec: Full Reasonix skill/hook/MCP contract → extending-reasonix. This = authoring discipline; that = exhaustive spec.

What is a Skill?

Reusable playbook the model invokes via run_skill (user: /name); read_only_skill loads it in read-only sessions. Two kinds:

  • Inline — body folds into the turn as a tool result. Default.
  • Subagent (runAs: subagent) — body = a child's system prompt; runs isolated, returns only its final answer. Use only when work is context-heavy and only the conclusion matters.

ARE: reusable techniques, patterns, tools, reference guides. NOT: narratives of solving something once.

Reasonix Skill Anatomy (get these right)

Where skills live & how found

  • Discovery roots, highest priority first: project {.reasonix,.agents,.agent,.claude}/skills/ → [skills] paths in reasonix.toml → home ~/{.reasonix,...}/skills/ → built-ins.
  • First match by name wins (user review overrides built-in). Layout: <root>/skills/<name>/SKILL.md; flat <name>.md works too.

Name

Regex: ^[a-zA-Z0-9][a-zA-Z0-9._-]{0,63}$ — letters/digits/./_/-, ≤64 chars, alphanumeric start. Frontmatter name: overrides the dir stem.

Frontmatter — YAML, with Reasonix compatibility flattening

  • --- opens, next --- closes. Unclosed fence → WHOLE file is the body (no frontmatter). Always close it.
  • YAML is parsed with yaml.v3. Keys are lowercased (runAs=runas), scalar values become strings, sequences are comma-joined, and nested mappings are flattened to their child keys for legacy consumers. Block scalars (>/|) work. Invalid YAML yields an empty frontmatter map, so validate the file after editing.

Recognized keys:

KeyEffect
nameidentifier (must pass the regex)
descriptionone-liner for discovery; missing descriptions give a weak placeholder, so always write a useful trigger
runAssubagent → isolated child; else inline
modelsubagent only: child model (provider, bare model, or provider/model)
effortsubagent only: effort hint (high, max)
allowed-toolssubagent only: comma/list of literal registry tool names; scopes child's tools

Dynamic session-context catalog = 130 chars per line

The host supplies the current skill catalog in session context, with entries clipped to 130 chars incl. name and a shared 4000-char description budget. So:

  • Front-load triggers — tail gets cut. Keep it short: 22-char name → ~100 chars before truncation.
  • For manual-only worker skills, set invocation: manual; still supply a useful description.

references/ auto-fold (undocumented, load-bearing)

Every references/*.md sibling is appended to the body at load time, sorted by filename, each under ## Reference: <name>. Put depth material there — ships inline, no read_file. scripts/, assets/, references/, dot-dirs never scanned as nested skills. Subagent skill: references join the child's prompt — budget accordingly. Invoke bundled scripts through their interpreter in prose (bash scripts/tool.sh, node scripts/tool.js), never by bare path: packaging can strip executable bits.

Tool names are snake_case

Use literal names from the current Reasonix tool registry. Common names include read_file, write_file, edit_file, multi_edit, ls, glob, grep, bash, web_fetch, web_search, todo_write, run_skill, read_only_skill, use_capability, task, and explore. The current upstream boot code still mentions read_skill, but its constructor is absent from the skill package at the verified commit; do not author a new dependency on it until upstream resolves that mismatch. TitleCase Read/Edit/Bash don't exist; a typo in allowed-tools is silently dropped (subagent just lacks that tool).

Subagent Skills (authoring rules)

Body = child's system prompt, not a message to the parent. Write it as persona + procedure + output format; state the arguments/task string is its entire context.

  • Only input = arguments string. No history. Tell it exactly what its task input contains.
  • Check the active subagent tool policy before relying on nested delegation. Read-only skill runs can allow bounded read-only nested delegation. Fold required discipline (e.g. TDD) into the body or a references/ file when the child cannot load it.
  • No mid-run back-and-forth; returns one final message. Design "ask the controller" as a reported status (e.g. NEEDS_CONTEXT), not a question.
  • Scope allowed-tools to minimum. Empty = inherit all parent tools (minus meta-tools).

When to Create a Skill

Create when: technique wasn't obvious; you'd reuse it across projects; applies broadly; others benefit.

Don't create for: one-offs; standard documented practices; project conventions (→ AGENTS.md/REASONIX.md); mechanical constraints a hook/lint enforces (automate those — save skills for judgment calls).

Claude/Agent Search Optimization (CSO)

Critical: future agents must FIND your skill via the description.

Description = WHEN to use, not the step-by-step workflow

State the triggering condition. Name the single core action if you want — never enumerate the multi-step procedure. Its only job: get the skill discovered and loaded.

Why: spell out steps and the model follows the description, skips the body. "review between tasks" produced ONE review when the skill specified two; trimmed to the trigger, the model read the body and did both.

House style — validated, not dogma: on the floor model (deepseek-flash) a flat "Use when X" discovers less reliably than a forceful imperative naming the situation as a question + the one key move. So every description reads <trigger>? <STOP / Load first>[ — <one core action>]; the benchmark (bench/) proves it fires the right skill (12/12). Match that voice everywhere; no bare "Use when" lines.

yaml
# ❌ BAD: enumerates the workflow — the model follows this instead of the body
description: Dispatch a subagent per task, review between tasks, then merge
# ❌ BAD: flat trigger — weaker discovery on the floor model
description: Use when implementing a feature or bugfix
# ✅ GOOD: forceful trigger + the single core action (this repo's voice)
description: Writing or fixing any code? Load first — write the failing test before the code.

Keyword coverage & naming

  • Use words the model would search for: error messages ("race condition", "ENOTEMPTY"), symptoms ("flaky", "hanging"), tools (command/library names).
  • Voice: direct imperative/question ("Writing code? Load first…"), not third-person prose — it's injected into the system prompt as an instruction to act on.
  • Name by what you DO or the core insight, verb-first / gerund: condition-based-waiting > async-test-helpers; superpowers-writing-plans > plan-authoring.

Cross-referencing other skills

Reference by bare name + explicit marker: **REQUIRED SUB-SKILL:** use the superpowers-test-driven-development skill. Don't read_file another SKILL.md, don't @-link it — use run_skill so scope resolution and auto-fold work.

The Iron Law (Same as TDD)

NO SKILL WITHOUT A FAILING TEST FIRST

Applies to NEW skills AND EDITS. Wrote the skill before testing? Delete it. Start over. No exceptions for "simple additions" or "just a docs update."

RED-GREEN-REFACTOR for Skills (with Reasonix subagents)

RED — baseline. Dispatch a subagent (task, explore, or a throwaway subagent skill) with a pressure scenario, without your skill in context. Record verbatim: choices, rationalizations, which pressures triggered violations. Must see it fail first.

GREEN — minimal skill. Write a skill addressing those specific rationalizations. No content for hypothetical cases. Re-run the same scenarios with the skill loaded; agent should now comply.

REFACTOR — close loopholes. New rationalization? Add an explicit counter. Re-test until bulletproof.

See the Testing Skills With Subagents reference (auto-included below) for pressure types and methodology.

Bulletproofing Against Rationalization (for discipline skills)

  • Close every loophole explicitly. Not "delete it" but "delete it. Start over. Don't keep it as reference. Don't adapt it. Delete means delete."
  • Address spirit-vs-letter early: "Violating the letter of the rules is violating the spirit." Kills a whole class of rationalizations.
  • Build a rationalization table from baseline testing — every excuse the agent made, with the reality.
  • Create a Red Flags list for self-check before violating.

Flowchart Usage

Small inline dot flowchart ONLY for non-obvious decision points, loops where you might stop too early, or "A vs B" choices. Never for reference (tables), code (code blocks), or linear steps (numbered lists).

Anti-Patterns

  • ❌ Narrative example ("In session 2025-10-03 we found…") — too specific, not reusable
  • ❌ Multi-language dilution — one excellent example beats five mediocre
  • ❌ Code inside flowcharts — can't copy-paste
  • ❌ Generic labels (step1, helper2) — labels must carry meaning
  • ❌ Enumerating the multi-step workflow in description — #1 discovery bug (single core action fine; the step sequence is not)
  • ❌ Bloated bodies for a weak target model — on the floor model every extra paragraph competes with the rules; cut narrative and examples, fold discipline into terse tables, let the benchmark (not obra fidelity) decide what stays

STOP: Before Moving to the Next Skill

After writing ANY skill, STOP and finish its test+deploy cycle. Don't batch-create untested skills. Untested skill = untested code.

Skill Creation Checklist (TDD Adapted)

todo_write each item.

RED: [ ] pressure scenarios (3+ combined for discipline skills) · [ ] run WITHOUT skill, record baseline verbatim · [ ] identify rationalization patterns

GREEN: [ ] valid name (regex) · [ ] fence closed; name + description present · [ ] description trigger-first (single core action OK, never the full workflow), fits ~130-char line · [ ] imperative house voice · [ ] search keywords · [ ] addresses baseline failures · [ ] one excellent example · [ ] correct snake_case tools · [ ] run WITH skill, verify compliance

REFACTOR: [ ] counters for new rationalizations · [ ] rationalization table · [ ] red-flags list · [ ] re-test until bulletproof

Subagent skills: [ ] body = system prompt · [ ] states task is its entire context · [ ] allowed-tools minimal, valid names · [ ] check current delegation policy · [ ] no mid-run questions

Deploy: [ ] confirm discovery (appears in skill list / index) · [ ] invoke /name or run_skill to confirm it loads · [ ] commit to git

The Bottom Line

Creating skills IS TDD for process docs. Same Iron Law (no skill without a failing test first), same cycle (RED → GREEN → REFACTOR), same payoff (better quality, bulletproof results).

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Superpowers Writing Skills AI skill do?

Creating, editing, or testing a Reasonix skill? Load first, before you deploy it.

Why use Superpowers Writing Skills on TypingMind?

Because you install it once and use it with any model. Superpowers Writing Skills is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Superpowers Writing Skills in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/christopherarter/superpowers-reasonix/tree/main/skills/superpowers-writing-skills. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Superpowers Writing Skills?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Superpowers Writing Skills?

As many as you like. As long as a model supports skills, you can use Superpowers Writing Skills with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Superpowers Writing Skills AI skill free?

Yes. It is published on GitHub by christopherarter under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇