SKILL·C9EF41

crit-story

tomasz-tomczyk
Updated Today
1,196
97
1,196
View on GitHub
Metageneral

About

The crit-story skill authors structured code review narratives by clustering diff hunks into thematic chapters. It only activates when explicitly invoked via commands like `/skill:crit-story` or direct requests for crit stories, not from generic review requests. The skill follows a guided workflow that includes reading diffs, writing JSON stories with prologues and chapters, and continuing interactive review loops.

Quick Install

Claude Code

Recommended
Primary
npx skills add tomasz-tomczyk/crit -a claude-code
Plugin CommandAlternative
/plugin add https://github.com/tomasz-tomczyk/crit
Git CloneAlternative
git clone https://github.com/tomasz-tomczyk/crit.git ~/.claude/skills/crit-story

Copy and paste this command in Claude Code to install this skill

Documentation

Author a Crit story

Author the story in-session, then continue the interactive Crit review loop. Do not run bare crit story unless the user asks for the agent_cmd path.

1. Read the guide and diff

crit story --guide
crit story --prep /tmp/crit-story-prep.txt

The guide prints the user's resolved authoring instructions followed by --- and the JSON schema. Follow it rather than assuming this skill contains the current guide. Read the prep file for the full diff and its (file_path, old_start) hunk identifiers.

2. Author and ingest

Use the file-edit tool to write /tmp/crit-story.json. Cluster hunks by theme, not by file, following the guide. Emit only prologue, chapters, and support; Crit fills in metadata and coverage.

crit story --story-file /tmp/crit-story.json

Inspect the JSON coverage report on every attempt. Exit 1 means rejection: fix duplicate or missing hunk assignments and re-ingest. A drift error means the diff changed; fetch fresh prep and re-author. Exit 0 with auto_repaired: true means omissions were back-filled into support.

3. Reconnect and await Finish Review

Ingest opens the browser and exits; it does not wait for the human. Run bare crit through OMO's asynchronous monitor:

display(await tool.monitor({
  description: "Crit story review feedback",
  command: "crit",
  filter: "https?://|approved:",
  persistent: true
}));

Call monitor directly if eval is unavailable. Save the returned bash_id. The persistent watch avoids the default five-minute review deadline. Relay the review URL verbatim. End the turn while waiting if no independent work remains; command completion wakes the session.

Do not poll, hold an eval cell open, read feedback before the command exits, or ask the user to type a reply to signal Finish Review.

4. Address feedback and repeat

Read stdout and follow the finish prompt; check stderr for approval. Retrieve omitted output with bash_output using the saved bash_id. If approved, stop. Otherwise read every unresolved comment and its replies, including review-level comments. Use quote and anchor rather than stale line numbers when edits have moved the content.

Address comments against the actual source files. Do not regenerate or edit the saved story JSON unless the user explicitly asks.

crit comment --reply-to <id> --author 'OMO' '<what changed>'
crit comment --json --file /tmp/crit-story-replies.json --author 'OMO'

Write bulk reply JSON with the file-edit tool; each entry has reply_to and body. Do not use --resolve unless explicitly requested. For mid-round re-entry, use crit comments --json.

Run the next-round command printed on stdout with the same monitor pattern. Tell the user only that you replied in Crit and the changes are ready for review. Do not repeat your replies or list the comments in chat. Await command completion, and repeat this step until approved. Do not call crit push or crit share unless the user asks.

GitHub Repository

tomasz-tomczyk/crit
Path: integrations/omo/skills/crit-story
0
agentic-codingai-agentsai-toolsclicode-reviewdeveloper-tools
FAQ

Frequently asked questions

What is the crit-story skill?

crit-story is a Claude Skill by tomasz-tomczyk. Skills package instructions and resources that Claude loads on demand, so Claude can perform crit-story-related tasks without extra prompting.

How do I install crit-story?

Use the install commands on this page: add crit-story to Claude Code as a plugin, or clone its repository into your skills directory, then restart Claude so it picks up the skill.

What category does crit-story belong to?

crit-story is in the Meta category.

Is crit-story free to use?

Yes. crit-story is listed on AIMCP and free to install.

Related Skills

content-collections
Meta

This skill provides a production-tested setup for Content Collections, a TypeScript-first tool that transforms Markdown/MDX files into type-safe data collections with Zod validation. Use it when building blogs, documentation sites, or content-heavy Vite + React applications to ensure type safety and automatic content validation. It covers everything from Vite plugin configuration and MDX compilation to deployment optimization and schema validation.

View skill
polymarket
Meta

This skill enables developers to build applications with the Polymarket prediction markets platform, including API integration for trading and market data. It also provides real-time data streaming via WebSocket to monitor live trades and market activity. Use it for implementing trading strategies or creating tools that process live market updates.

View skill
creating-opencode-plugins
Meta

This skill helps developers create OpenCode plugins that hook into 25+ event types like commands, files, and LSP operations. It provides the plugin structure, event API specifications, and implementation patterns for JavaScript/TypeScript modules. Use it when you need to intercept, monitor, or extend the OpenCode AI assistant's lifecycle with custom event-driven logic.

View skill
sglang
Meta

SGLang is a high-performance LLM serving framework that specializes in fast, structured generation for JSON, regex, and agentic workflows using its RadixAttention prefix caching. It delivers significantly faster inference, especially for tasks with repeated prefixes, making it ideal for complex, structured outputs and multi-turn conversations. Choose SGLang over alternatives like vLLM when you need constrained decoding or are building applications with extensive prefix sharing.

View skill