Official agent skill

Writing Workflow Skills

by JetBrains in JetBrains/thinkrail

A skill your agent uses when adding a new workflow skill to pi-thinkrail-workflow, changing an existing workflow skill's role, trigger, handoff, or structure, or checking a workflow skill against…

OfficialApache-2.0Auto-check passedDevelopment

Install Writing Workflow Skills

skills CLI
$ npx skills add JetBrains/thinkrail --skill writing-workflow-skills -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install JetBrains/thinkrail writing-workflow-skills --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/JetBrains/thinkrail.git skills-src && mkdir -p .claude/skills && cp -r skills-src/packages/pi-thinkrail-workflow/skills/writing-workflow-skills .claude/skills/writing-workflow-skills && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
writing-workflow-skills
GitHub stars
514
Token cost
~1.9k tokens
SKILL.md length
1,072 words
Files
1
Skills in repo
11
Repo updated
First seen
Licence
Apache-2.0

At a glance

A skill your agent uses when adding a new workflow skill to pi-thinkrail-workflow, changing an existing workflow skill's role, trigger, handoff, or structure, or checking a workflow skill against…

  • Adding a new workflow skill to pi-thinkrail-workflow
  • SKILL.md covers Design (before writing), Write, Register (rule 12) and Verify by use (rule 14 —…, plus 2 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md
  • Changing an existing workflow skills role

What it does

Writing Workflow Skills is an agent skill from JetBrains/thinkrail, published by the product's own GitHub organization. Use when adding a new workflow skill to pi-thinkrail-workflow, changing an existing workflow skill's role, trigger, handoff, or structure, or checking a workflow skill against the workflow system's rules. Not for authoring general-purpose skills outside this package.

Its SKILL.md is about 1.9k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Development, covering Spec-driven development. The repository describes itself as: Vibe code with pi in a lightweight, real IDE that customises itself around the way you work — The Vibe You Need. The licence is Apache-2.0.

When your agent uses it

  • Adding a new workflow skill to pi-thinkrail-workflow
  • Changing an existing workflow skills role
  • Checking a workflow skill against the workflow systems rules

Example prompts

  • “/writing-workflow-skills”

What it can do on your machine

Read from SKILL.md and the folder at commit 7b1797a. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md.

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Writing Workflow Skills loads about 1.9k tokens when it runs. Until then it costs about 73 tokens; SKILL.md has 1,072 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~73
When it runs · the whole SKILL.md, loaded when a task matches
~1.9k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from JetBrains/thinkrail at commit 7b1797a, republished under its Apache-2.0 licence (© JetBrains). 1,072 words, ~1,881 tokens.

Download SKILL.mdSave it as .claude/skills/writing-workflow-skills/SKILL.md (or your agent's skills folder).
name
writing-workflow-skills
description
Use when adding a new workflow skill to pi-thinkrail-workflow, changing an existing workflow skill's role, trigger, handoff, or structure, or checking a workflow skill against the workflow system's rules. Not for authoring general-purpose skills outside this package.

Writing Workflow Skills

The authoring checklist for workflow skills in packages/pi-thinkrail-workflow. It carries the what to do; every why — the concept model, the three roles, the meta-rules cited as "(rule N)" below — lives once in the workflow-system spec beside this directory, skills/SPEC.md. Read that spec first; where this checklist and that spec disagree, the spec wins.

Workspace guard. This checklist edits packages/pi-thinkrail-workflow in the thinkrail repo. If that package is not in the current workspace (a ThinkRail-managed project, where these skills are a read-only staged cache), the family cannot be extended from here: say so in one line and stop — the terminal state for foreign workspaces.

Design (before writing)

  • Read skills/SPEC.md: concept model, the three roles, meta-rules 1–15.
  • Scope the skill to one externally reachable workflow — or, for a concept, one topic (rule 1). Internal forks, branches, stages, and shared tails are sibling docs, planned with the choice rules in the doc (or spine) before the fork; a doc is promoted to its own skill when it needs independent addressability (an external caller, a genuine self-trigger, or a direct entry point such as a /skill: command seed) — never for shape or size alone.
  • Pick the role (rule 2): router (classification rules + handoffs, nothing else), worker (one phase's steps), or concept (one topic's reusable rules/mental model — no steps, no handoffs).
  • For a concept: confirm a second skill needs it (rule 3) — reference detail with a single consumer stays a sibling file, not a concept skill.
  • Pick the ending (rule 6): a router ends by naming what runs next; a worker ends with a fixed successor, back to its caller, or a declared terminal state — an internally forking worker ends by naming the sibling doc that continues the flow, with the terminal state declared in the doc where the flow ends; a concept has no ending at all — it writes no ending section, control simply returns to its reader. Know the exact wording before writing the body.
  • If the change reshapes the system itself — a new role, a new meta-rule, a changed entry model or topology — stop: update skills/SPEC.md first, then come back here (rule 13).

Write

  • Name the skill verb-first, active voice, kebab-case (rule 15): a gerund for process skills, the topic for a concept — name the work or the insight, never the artifact or a role. Directory name = frontmatter name.
  • Create skills/<name>/SKILL.md with frontmatter name + description. Nothing else changes — package.json's pi.skills already points at ./skills.
  • description = triggering conditions only, "Use when …" (plus a "Not for …" negative trigger if the boundary is confusable) — never a summary of the steps (rule 5). Skills are reached by routing; a self-trigger description is for unmistakable triggers only (rule 4).
  • Keep every file under ~150 lines (rule 3) — the SKILL.md spine and each sibling doc. Internal workflow nodes (branches, stages, shared tails) and heavy reference material live in sibling docs inside skills/<name>/, named in the exact step that hands to them; the spine carries the doc map, and each internal-node doc opens with a one-line contract (entry state, what it saves, where control goes next).
  • Say each thing once (rule 7): cross-reference other skills by name; never inline another skill's steps, never force-load its files.
  • Put gates where discipline matters, matching the form to the failure (rule 11): prohibitions + red flags for discipline violations, positive recipes for output shape.
  • Durable output goes to the spec graph (rule 8). If the workflow needs ephemeral working files — resume state, scratch plans — declare them (rule 9): name their shape in the skill and put them in the workspace's gitignored .thinkrail/context/ (the home for every temp doc), consume/delete them when the work lands, and promote anything durable to specs before cleanup.
  • End the body by naming the ending chosen in Design (rule 6) — a concept skips this: no ending section.
Show full SKILL.md (441 more words)Show less

Register (rule 12)

  • Add one routing line in the router that owns the new skill: the root router (skills/choosing-a-workflow/SKILL.md) by default, or the nearest sub-router when the skill is a branch under an already-routed workflow (fractal routing). Exception (rule 4): a skill outside any router's work classification — self-trigger-only skills and concept skills — skips the router line; that's a designed property of the skill, never a size call, and it is instead named in skills/SPEC.md's family table as outside the routing table.
  • Add or update the skill's row in skills/SPEC.md's Workflow family table, including its Routed from entry (which router routes to it — or that it sits outside the routing table).
  • Nothing else should have changed shape — if it did, revisit rule 13 in Design.

Verify by use (rule 14 — currently suspended)

  • Rule 14 is a known limitation today, not a done-gate (see skills/SPEC.md). When practical, still run a real request through the new or changed skill and watch it flow: the router (or the description) triggers it, the body is followed, the ending fires as designed. For a concept: a referencing skill (or its self-trigger) loads it and its rules are applied.
  • Either way, keep the family-table row honest: unverified by use until a run has been observed; update the row when one has.

Red flags — stop and fix

  • The description mentions any step of the workflow.
  • The name is noun-first or names an artifact/role instead of the work (rule 15).
  • The body of a router or worker ends without naming a successor or terminal state.
  • A concept skill contains steps, routing, a handoff, or an ending section.
  • The same rules are copied into two skills instead of extracted into a concept (rule 7).
  • A step restates another skill's (or skills/SPEC.md's) content instead of pointing at it.
  • An internal node that nothing outside the skill reaches was made its own skill (or given frontmatter) — internal nodes are sibling docs, not skills (rule 1).
  • "Too small to need a router line / family-table row." Every skill registers (rule 12); skipping the router line is only for self-trigger-only skills and concept skills per rule 4 — size is never the reason.
  • Calling a skill verified without a real request observed flowing through it — rule 14 is suspended as a done-gate, but an unobserved skill is still unverified by use, never "verified".

Done (terminal state)

This checklist ends here — no successor skill. Done means: skills/<name>/SKILL.md exists and passes the checks above, and the router line and family-table row are in place — the row honestly marked unverified by use until a real request has been observed flowing through the skill (rule 14, currently suspended as a done-gate).

© JetBrains, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in packages/pi-thinkrail-workflow/skills/writing-workflow-skills of JetBrains/thinkrail.

Open the folder on GitHubat commit 7b1797a

Compare with similar skills

Writing Workflow Skills next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Writing Workflow Skills compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Writing Workflow Skills this skillJetBrains/thinkrail514—~1.9kAutomated safety check: PassApache-2.0
OpenSpec Bulk Change ArchiverFission-AI/OpenSpec72k2 repos~5.6kAutomated safety check: PassMIT
Speckit ConstitutionWeihanLi/WeihanLi.Common24212 repos~2.1kAutomated safety check: PassApache-2.0
Speckit Plankunstmusik/blue15419 repos~2.1kAutomated safety check: PassGPL-3.0
Speckit Specifykunstmusik/blue15419 repos~4.7kAutomated safety check: PassGPL-3.0
Review Spdzhu1090093659/spec_driven_develop987—~1.5kAutomated safety check: PassMIT

Similar skills

  • Archives several completed OpenSpec changes in one operation, checking the codebase to resolve spec conflicts rather than archiving blindly.

    72k GitHub starsUsed in 2 repos~5.6k tokens
    DevelopmentAuto-check passed
  • Speckit Constitution

    WeihanLi/WeihanLi.Common

    Create or update the project constitution from interactive or provided principle inputs, ensuring all dependent templates stay in sync.

    242 GitHub starsUsed in 12 repos~2.1k tokens
    DevelopmentAuto-check passed
  • Speckit Plan

    kunstmusik/blue

    Execute the implementation planning workflow using the plan template to generate design artifacts.

    154 GitHub starsUsed in 19 repos~2.1k tokens
    DevelopmentAuto-check passed
  • Speckit Specify

    kunstmusik/blue

    Create or update the feature specification from a natural language feature description.

    154 GitHub starsUsed in 19 repos~4.7k tokens
    DevelopmentAuto-check passed
  • Review Spd

    zhu1090093659/spec_driven_develop

    Findings-first code review workflow for AI coding agents. An agent skill from zhu1090093659/spec_driven_develop.

    987 GitHub stars~1.5k tokensUpdated 2 mo ago
    DevelopmentAuto-check passed
  • Speckit Tasks

    kunstmusik/blue

    Generate an actionable, dependency-ordered tasks.md for the feature based on available design artifacts.

    154 GitHub starsUsed in 19 repos~3k tokens
    DevelopmentAuto-check passed

More from JetBrains/thinkrail

All 11 skills in this repo
  • Importing A Codebase

    JetBrains/thinkrail

    Official

    A skill your agent uses when asked to create the initial spec graph for an existing codebase that has source code but no specs.

    514 GitHub stars~1.6k tokensUpdated today
    Auto-check passed
  • Starting A New Project

    JetBrains/thinkrail

    Official

    A skill your agent uses when the workspace is empty, has no code, and the user brings a raw project idea.

    514 GitHub stars~1.4k tokensUpdated today
    Auto-check passed
  • Asking User Questions

    JetBrains/thinkrail

    Official

    A skill your agent uses when composing an askuserquestion round inside a workflow, or when a workflow skill names it at a question step.

    514 GitHub stars~1.9k tokensUpdated today
    Auto-check passed
  • Setting Up A Project

    JetBrains/thinkrail

    Official

    A skill your agent uses when asked to set up, onboard, initialize, or spec a project with no spec graph, or when invoked by the app's Set-up-project card.

    514 GitHub stars~500 tokensUpdated today
    Auto-check passed
  • Shipping A PR

    JetBrains/thinkrail

    Official

    A skill your agent uses when finished work needs to ship as a pull request, or when creating, syncing, updating metadata, checking status, monitoring CI, or addressing review comments on a PR.

    514 GitHub stars~1.1k tokensUpdated today
    Auto-check passed
  • Spec Graph

    JetBrains/thinkrail

    Official

    A skill your agent uses when locating, reading, creating, updating, or validating project specs, or when work is governed by or may alter a documented boundary, contract, invariant, behavior, or…

    514 GitHub stars~1.4k tokensUpdated today
    Auto-check passed

Categories

Questions about Writing Workflow Skills

What does Writing Workflow Skills do?

A skill your agent uses when adding a new workflow skill to pi-thinkrail-workflow, changing an existing workflow skill's role, trigger, handoff, or structure, or checking a workflow skill against…. Writing Workflow Skills is an agent skill from JetBrains/thinkrail, published by the product's own GitHub organization. Use when adding a new workflow skill to pi-thinkrail-workflow, changing an existing workflow skill's role, trigger, handoff, or structure, or checking a workflow skill against the workflow system's rules.

When should I use Writing Workflow Skills?

Writing Workflow Skills fits situations like: adding a new workflow skill to pi-thinkrail-workflow; changing an existing workflow skills role; checking a workflow skill against the workflow systems rules.

How do I install Writing Workflow Skills in Claude Code?

Run `npx skills add JetBrains/thinkrail --skill writing-workflow-skills -a claude-code`. Or copy the skill folder (packages/pi-thinkrail-workflow/skills/writing-workflow-skills in JetBrains/thinkrail) into .claude/skills/writing-workflow-skills in your project. Claude Code loads it when a task matches its description.

How do I install Writing Workflow Skills in Codex?

Run `npx skills add JetBrains/thinkrail --skill writing-workflow-skills -a codex`. Or copy the skill folder (packages/pi-thinkrail-workflow/skills/writing-workflow-skills in JetBrains/thinkrail) into .agents/skills/writing-workflow-skills in your project. Codex loads it when a task matches its description.

Can I use Writing Workflow Skills in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add JetBrains/thinkrail --skill writing-workflow-skills -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/writing-workflow-skills, .gemini/skills/writing-workflow-skills, .github/skills/writing-workflow-skills and .opencode/skills/writing-workflow-skills in your project.

What does Writing Workflow Skills need to run?

SKILL.md names no scripts, command-line tools or credentials: Writing Workflow Skills is instructions for the agent only.

Does Writing Workflow Skills access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Writing Workflow Skills safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Writing Workflow Skills use?

Writing Workflow Skills is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Writing Workflow Skills use?

About 1.9k tokens (SKILL.md is roughly 7.5k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Writing Workflow Skills?

Skills that share tags, products or a category with Writing Workflow Skills: OpenSpec Bulk Change Archiver (Fission-AI/OpenSpec, 72k stars), Speckit Constitution (WeihanLi/WeihanLi.Common, 242 stars), Speckit Plan (kunstmusik/blue, 154 stars) and Speckit Specify (kunstmusik/blue, 154 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Writing Workflow Skills?

JetBrains (a GitHub organization, an official publisher) maintains it in JetBrains/thinkrail, which has 514 GitHub stars. The repository holds 11 skills in this directory. The repository was last updated on October 11, 2026.

Source: JetBrains/thinkrail on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.