Vercel Composition Patterns
supabase/supabase
React composition patterns that scale. An agent skill from supabase/supabase.
A skill your agent uses when the user asks for a shared plan, a task needs at least three substantive execution steps, or a loose TODO is pending.
$ npx skills add JetBrains/thinkrail --skill todos -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install JetBrains/thinkrail todos --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/JetBrains/thinkrail.git skills-src && mkdir -p .claude/skills && cp -r skills-src/packages/pi-todos/skills/todos .claude/skills/todos && rm -rf skills-srcUse ~/.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/
Install the "todos" agent skill from https://github.com/JetBrains/thinkrail/tree/main/packages/pi-todos/skills/todos into .claude/skills/todos/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "todos", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/JetBrains/thinkrail/tree/main/packages/pi-todos/skills/todosType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add JetBrains/thinkrail --skill todos -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install JetBrains/thinkrail todos --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/JetBrains/thinkrail.git skills-src && mkdir -p .agents/skills && cp -r skills-src/packages/pi-todos/skills/todos .agents/skills/todos && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "todos" agent skill from https://github.com/JetBrains/thinkrail/tree/main/packages/pi-todos/skills/todos into .agents/skills/todos/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "todos", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add JetBrains/thinkrail --skill todos -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install JetBrains/thinkrail todos --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/JetBrains/thinkrail.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/packages/pi-todos/skills/todos .cursor/skills/todos && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "todos" agent skill from https://github.com/JetBrains/thinkrail/tree/main/packages/pi-todos/skills/todos into .cursor/skills/todos/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "todos", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/JetBrains/thinkrail.git --path packages/pi-todos/skills/todos--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add JetBrains/thinkrail --skill todos -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install JetBrains/thinkrail todos --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/JetBrains/thinkrail.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/packages/pi-todos/skills/todos .gemini/skills/todos && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "todos" agent skill from https://github.com/JetBrains/thinkrail/tree/main/packages/pi-todos/skills/todos into .gemini/skills/todos/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "todos", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install JetBrains/thinkrail todosInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add JetBrains/thinkrail --skill todos -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/JetBrains/thinkrail.git skills-src && mkdir -p .github/skills && cp -r skills-src/packages/pi-todos/skills/todos .github/skills/todos && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "todos" agent skill from https://github.com/JetBrains/thinkrail/tree/main/packages/pi-todos/skills/todos into .github/skills/todos/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "todos", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add JetBrains/thinkrail --skill todos -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install JetBrains/thinkrail todos --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/JetBrains/thinkrail.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/packages/pi-todos/skills/todos .opencode/skills/todos && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "todos" agent skill from https://github.com/JetBrains/thinkrail/tree/main/packages/pi-todos/skills/todos into .opencode/skills/todos/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "todos", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
todosA skill your agent uses when the user asks for a shared plan, a task needs at least three substantive execution steps, or a loose TODO is pending.
Todos is an agent skill from JetBrains/thinkrail, published by the product's own GitHub organization. Use when the user asks for a shared plan, a task needs at least three substantive execution steps, or a loose TODO is pending. Without an explicit plan request, not for one-shot answers or checks, or one- to two-step work that is not already in the list.
Its SKILL.md is about 3.2k 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. 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.
4 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 68bb837. It shows what the files ask for, not the result of running them.
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.
Shell commands in SKILL.md call:
gitbunFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use git, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Todos loads about 3.2k tokens when it runs. Until then it costs about 65 tokens; SKILL.md has 2,035 words of instructions outside code blocks.
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.
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.
The full file from JetBrains/thinkrail at commit 68bb837, republished under its Apache-2.0 licence (© JetBrains). 2,035 words, ~3,245 tokens.
.claude/skills/todos/SKILL.md (or your agent's skills folder).pending → in_progress → done), and an optional note. The note is agent-facing working
detail — the human's default plan view shows titles + status and keeps notes behind a disclosure —
so it's where your own tracking, reminders, and the done-criterion live (e.g. "login e2e green"),
never a place the user must read to follow along. A task's own status is never stored — it derives from its steps.todo_add (no
group, no after). Loose is pre-work — raw kernels and half-formed asks, never a step you are
about to execute. todo_list renders them last, after every group, on purpose: an item added
mid-task queues after your current work. So finish (or resume) the task you're on before you pick
up a loose item — don't jump to a freshly-added item and abandon a step you had in progress.todo_add with group:, one call per step),
flip its first step to in_progress, then todo_remove the raw loose item. Size doesn't matter: a
pending loose item is already in the plan, so even a 1–2-step one becomes a small group. Don't
rewrite or drop a loose item for any other reason.todo_list) to stay in sync, don't trust your memory of it.| Size of the ask | Shape in the plan |
|---|---|
| 1–2 execution steps, including a one-shot answer, check, or edit | no list unless the user asks for one |
| 3–7 substantive steps | one group |
| more than ~10 steps | those are tasks, not steps — split into several groups |
Steps are verifiable and ≈ commit-sized: "easy to check off as you go", not "phase 1".
A step is a substantive, human-meaningful outcome — not your bookkeeping. The plan is the user's
status window, so every step must be something the user cares to see done. Process/meta chatter that
only keeps you oriented is not a step: "make a plan", "read the files", "think about the approach",
"review my changes" — don't mint items for these. Keep the plan to the real, checkable outcomes; put
any working memory you need in the step's note (agent-facing), not as its own item.
Each field answers one question, in one shape — don't let them blur: the title is what the step
does (imperative, about the change/outcome, not the process); the note is your private working
detail; the summary is what changed and why (it must NOT restate the title — add the decision
or constraint the title can't show); the verification is how it was proven, in the normalized
shape check → result (or the honest "not verified").
todo_write with one group per task. Clarifying questions may come first when their answers
change the plan. Publish the plan before execution, then refine it only when the work materially
changes.in_progress when you start it, done when you finish. Starting a new step
auto-returns any other in_progress step to pending — so finish (mark done) before moving on,
or the previous step visibly falls back to open.note, tell the user, and move on to the next group.todo_list before choosing each next item, after user input, and before completion.
New loose items are appended at the end — take them up (promoted) after the in-progress step. If
an item you planned is gone, the user dropped it: skip it and do not re-add it.done they name the task's next step; when nothing is
in_progress they remind you to flip the step you're on. Act on those nudges.todo_add with group:, one per step, or
several calls for several steps). An ordinary 1–2-step chat ask gets that group only when the user
explicitly requested a plan; otherwise finish the in-progress task, then handle it directly. When
that short ask is already a pending loose item, promote it into its own group instead. Never mix a new ask's steps into the current group. A step discovered
inside the current task slots in with todo_add after: <current step id>; an anchor on a loose
item is rejected. Do not rebuild the plan with todo_write for that.todo_list once more before the final handoff. If open
steps remain, either do them or clearly say what is left and why.The user reviews your work from the summary + the diff. The diff shows what; the summary must carry everything the diff cannot show — intent, decisions, and honesty about verification. Write it for the reviewer, not for yourself.
todo_update call that sets status: done. summary is Markdown, written structured
(a short lead sentence + a bullet list when it has parts), covering what changed and why —
especially decisions that are NOT visible in the diff (a rejected alternative, a constraint you worked
around) — not one run-on paragraph. Research/analysis/verification-only steps that produced no code
changes need neither.verification as one or more checks in
the normalized shape check → result — the exact check you ran and its outcome ("bun test src/todos
→ 34 pass", "typecheck → green") — or the honest "not verified". It renders as Markdown on the
plan page, so when you ran several checks write them as a bullet list (one - check → result per
line), not one run-on line crammed with ; separators; a single check stays one line. The UI shows it
as a status badge on the review card, so a vague or missing line is visible at a glance. Never write "tests pass" for tests you didn't run. And never make a
check pass by weakening it — if you changed, skipped, or deleted a test as part of the step, the
summary must say so explicitly: a reviewer who finds it themselves stops trusting every other
summary.commitSubject. The host commits that step's delta on the
user's branch and uses this line as the commit subject verbatim, so write it as a commit message,
not a plan step: one imperative line about the change, and in this repository's existing
style — run git log --oneline -20 and match what you see (Conventional Commits ⇒
type(scope): subject; a prose-subject repo ⇒ prose). It must be pushable as-is: no todo:
prefix, no item ids, no tool attribution. Omit it and the host falls back to the step title, which
reads as a plan step in git log — so don't rely on that.todo_plan_summary
(the todo_update result nudges you at exactly that moment): a handoff note across all tasks, not a
step list. It is cumulative — it covers EVERYTHING done across the whole plan, not the last step
alone. When the plan gained new work and finished again, a summary from the earlier completion is
still there (the done-flip nudge surfaces it): extend that text — carry every earlier point forward
and add the new work — never rewrite it down to only the most recent step. Include what was verified
end-to-end and anything left undone or deferred — an omission here reads as "nothing left", so say it
if something is. The plan view renders this as Markdown, so
write it structured, not one dense paragraph: a lead sentence, then a short bulleted breakdown (e.g.
what shipped / what was verified / what's left), using **bold**, lists, and code where they aid
scanning. The per-item summary renders as Markdown too — a tight sentence or two, bulleted only
when it genuinely has parts. Keep both scannable, never a wall of text.in_progress, make the fix, and mark it done with a fresh summary and a
fresh commitSubject describing the fix — the fix, not the original work (the user re-reviews
only the new delta, and the revision lands as its own commit). Re-opening clears the previous
values, so supply both again. Never open a new item for a fix — the revision must attach to the step
it revises.todo_update → done. Never delete a done item — it's the
user's history. todo_remove is only for when the user explicitly asks to drop something, or for
the raw loose item you just promoted into a group.todo_update / todo_add (they touch one item) for
a single change — cheaper than restating the whole plan. todo_write reconciles (it's not a
destructive replace): it matches your written steps to the existing ones by group + step title and
keeps their status/summary/id, so a re-plan is safe and lossless — reach for it when you're genuinely
restructuring, not to nudge one item. Status advances only via todo_update; a status you put in
todo_write on a step that already exists is ignored.todo_write never touches loose items and keeps done
items; but keep your steps' titles
stable across a re-plan — a reworded title reads as a new step, so the old one's progress won't carry.)todo_list — read the current plan (the source of truth; re-read to catch the user's edits).todo_add — add one step (into a group, after an existing step, or loose when both are omitted;
leaves the rest untouched).todo_update — progress one step (in_progress on start, done when finished — with a summary
when the step changed code; done stays).todo_remove — delete one item (only when the user asks, or the raw loose item you just promoted).todo_write — lay out or reconcile the plan (groups only — one per task; matches steps by title and
keeps their progress; prefer todo_add/todo_update for a single change).todo_plan_summary — after the last item is done: a short overall summary of what the plan
accomplished.© 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
Just SKILL.md in packages/pi-todos/skills/todos of JetBrains/thinkrail.
Open the folder on GitHubat commit 68bb837
Todos 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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Todos this skillJetBrains/thinkrail | 513 | — | ~3.2k | Automated safety check: Pass | Apache-2.0 | |
| Vercel Composition Patternssupabase/supabase | 111k | 58 repos | ~726 | Automated safety check: Pass | MIT | |
| Finishing a Development Branchobra/superpowers | 297k | 5 repos | ~1.9k | Automated safety check: Pass | MIT | |
| Typescript Advanced Typesrolling-scopes/rsschool-app | 10k | 25 repos | ~4.2k | Automated safety check: Pass | MPL-2.0 | |
| PR Babysitteropeninterpreter/openinterpreter | 69k | 3 repos | ~4.2k | Automated safety check: Pass | Apache-2.0 | |
| Code Review ChecklistshareAI-lab/learn-claude-code | 78k | 5 repos | ~1.1k | Automated safety check: Pass | MIT |
supabase/supabase
React composition patterns that scale. An agent skill from supabase/supabase.
obra/superpowers
Walks the last step of a branch: confirm tests pass, detect the git environment, ask how to integrate, carry out your choice and clean up the worktree.
rolling-scopes/rsschool-app
Master TypeScript's advanced type system including generics, conditional types, mapped types, template literals, and utility types for building type-safe applications.
openinterpreter/openinterpreter
Watches an open GitHub pull request until it merges, handling review comments, diagnosing CI failures and retrying flaky checks along the way.
shareAI-lab/learn-claude-code
Reviews code against a five-part checklist covering security, correctness, performance, maintainability and testing, and reports findings in a fixed format.
onyx-dot-app/onyx
Iteratively improves a PR (GitHub), MR (GitLab), or shelved changelist (Perforce) until Greptile gives it a 5/5 confidence score with zero unresolved comments.
JetBrains/thinkrail
A skill your agent uses when asked to create the initial spec graph for an existing codebase that has source code but no specs.
JetBrains/thinkrail
A skill your agent uses when the workspace is empty, has no code, and the user brings a raw project idea.
JetBrains/thinkrail
A skill your agent uses when composing an askuserquestion round inside a workflow, or when a workflow skill names it at a question step.
JetBrains/thinkrail
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.
JetBrains/thinkrail
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.
JetBrains/thinkrail
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…
Categories
A skill your agent uses when the user asks for a shared plan, a task needs at least three substantive execution steps, or a loose TODO is pending. Todos is an agent skill from JetBrains/thinkrail, published by the product's own GitHub organization. Use when the user asks for a shared plan, a task needs at least three substantive execution steps, or a loose TODO is pending.
Todos fits situations like: the user asks for a shared plan; A task needs at least three substantive execution steps; A loose TODO is pending.
Run `npx skills add JetBrains/thinkrail --skill todos -a claude-code`. Or copy the skill folder (packages/pi-todos/skills/todos in JetBrains/thinkrail) into .claude/skills/todos in your project. Claude Code loads it when a task matches its description.
Run `npx skills add JetBrains/thinkrail --skill todos -a codex`. Or copy the skill folder (packages/pi-todos/skills/todos in JetBrains/thinkrail) into .agents/skills/todos in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add JetBrains/thinkrail --skill todos -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/todos, .gemini/skills/todos, .github/skills/todos and .opencode/skills/todos in your project.
Going by SKILL.md and its folder, Todos needs the command-line tools its instructions call (git and bun).
SKILL.md contains no URLs. Its commands use git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
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.
Todos 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.
About 3.2k tokens (SKILL.md is roughly 13k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Todos: Vercel Composition Patterns (supabase/supabase, 111k stars), Finishing a Development Branch (obra/superpowers, 297k stars), Typescript Advanced Types (rolling-scopes/rsschool-app, 10k stars) and PR Babysitter (openinterpreter/openinterpreter, 69k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
JetBrains (a GitHub organization, an official publisher) maintains it in JetBrains/thinkrail, which has 513 GitHub stars. The repository holds 11 skills in this directory. The repository was last updated on October 9, 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.