agentleFS
thoughtbotthoughtbot/rails-consultant/skills/explain/SKILL.md

explain

Skill26 starsChanged 8 months agoMITView on GitHub

Explain what a piece of code does — a specific file, class, or method in close detail, or a user-facing flow as a concise system overview. What it does and why, not whether it's good.

We split this skill into the rules it gives an agent

4 rules. 0 are common, 4 are distinctive, and 0 are very specific to this project.

  • 0

    Common

    Most of the 98 edited versions we read keep these.

  • 4

    Distinctive

    This author's own choices. Worth a look.

  • 0

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Don't narrate every line — skip the obvious.

    line 39
  2. Distinctive:

    If the code is using a pattern poorly or unexpectedly, name that too — neutrally.

    line 50
  3. Distinctive:

    Start with the Rails router.

    line 60
  4. Distinctive:

    After the diagram, add three sections in plain English:

    line 86

“Common” is measured: kept by at least 6 in 10 of the 98 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Behavior

Explain $ARGUMENTS. Do the research and deliver the explanation in one pass.

Determine the mode from the argument:

  • If the argument is a file path, class name, or method — this is a code explanation. Follow the Code Explanation section.
  • If the argument is a user action, feature, or flow description (e.g. "password reset", "checkout", "authentication") — this is a flow explanation. Follow the Flow Explanation section.

Code Explanation

Start by checking the git history for the file: git log --oneline -15 <file> and git log -1 -p <file> for the most recent change. Commit messages often reveal the "why" that the code itself doesn't — a bug that was fixed, a refactor that simplified something, a workaround for an external constraint. Note anything that reframes the code before diving into it.

Then read the code carefully and explain in this order:

1. What it does — in one paragraph

Plain English. No jargon, no code. Describe what this code accomplishes from the outside — what goes in, what comes out, what changes as a result. Write it the way you'd explain it to the client who asked for the feature.

2. How it does it — walking through the logic

Narrate the code path in plain English, step by step. For each meaningful chunk:

  • What is this step doing?
  • Why is it doing it here, in this order?
  • What would break if it wasn't here?

Don't narrate every line — skip the obvious. Focus on the parts that require interpretation.

3. Patterns and conventions in use

Name the Rails, Ruby, or design patterns this code is using — and why they appear here. Examples:

  • "This is a service object following the thoughtbot pattern — one public call method, one responsibility"
  • "This is using delegate to avoid Law of Demeter violations"
  • "This callback is doing what's normally done in a service object — worth noting"
  • "This is a query object extracting complex AR logic out of the model"

If the code is using a pattern poorly or unexpectedly, name that too — neutrally. This isn't a review, but understanding requires knowing when something is off-label.

4. What to watch out for

Any non-obvious behaviour, implicit dependencies, or things that would surprise someone maintaining this code. Not a critique — just "here's what you'd need to know to work safely in this area."


Flow Explanation

Start with the Rails router. Locate the route(s) that correspond to the described flow. From each entry point, trace the execution path through the codebase — controllers, service objects, models, callbacks, jobs, mailers. Follow both success and failure paths.

Then deliver the explanation in two parts: a diagram and a summary.

1. Diagram

Render a concise visual flowchart of the system using box-drawing characters. The diagram should show:

  • States and transitions — the lifecycle, not the method calls
  • Decision points — where the flow branches
  • Key actions — what happens at each step, described in plain English
  • Terminal states — where the flow ends

Conventions:

  • Box-drawing characters for structure: ┌─┐, │, ├──, └──, ▼, ◄
  • Decision points as plain text with branches: YES / NO
  • Actions as concise descriptions, not method signatures
  • Indent sub-steps under their parent action

The goal is to outline the system concisely — show how it behaves, not how the code is structured. A reader should be able to understand the full lifecycle from the diagram alone.

See the example in example.md for the expected style and level of detail.

2. Summary

After the diagram, add three sections in plain English:

Entry points — every way this flow can be triggered. For each, one sentence describing what triggers it and what it does.

Branching logic — the conditions that shape the flow. Feature flags, state checks, validations, guard clauses — anything that determines which path is taken.

Side effects — everything with consequences outside the immediate flow. Jobs, mailers, external API calls, broadcasts, cache writes, state transitions. The things you'd need to know about before touching this code.


Tone

Clear and direct. You're translating, not teaching and not judging. The goal is that they finish with a working mental model of what this code does and how to navigate it. Skip all hedging — if something is unclear in the code itself, say so plainly.

Download now (ZIP)

  • Other versions112 projects use a version of this.

    Word for word · 0

    None found.

    Edited · 0

    None found.

    Wrote their own version · 112

    1. Z3Prover/z3★ 13ksame name
    2. crbnos/carbon★ 2.8ksame name
    3. poshan0126/dotclaude★ 871same name
    4. VinkyDev/vibestart★ 278same name
    5. hsantanna88/clo-author★ 262same name
    6. hugosantanna/clo-author★ 262same name
    7. entireio/skills★ 223same name
    8. first-fluke/fullstack-starter★ 223same name
    9. sammcj/agentic-coding★ 164same name
    10. SerhiiKorniienko/bullshit-detector★ 151same name

    102 more not listed

    How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.

  • Used alongsideProjects with it also use debug-fix, root-cause and 9 more.

    Other files people use alongside this one.

    Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
    • zebbernSkill

      debug-fix

      Find and fix a bug or issue — from any source (GitHub issue, error message, user report, or observed behavior)

      Also in 3 projects that use this

    • Ingramradical235Skill

      root-cause

      Structured root cause analysis using WHERE (MECE decomposition) then WHY (causal structure diagrams) pipeline. Includes coin-flip detection, logical-leap detection, and vicious cycle intervention. Use when buffer enters YELLOW/RED, when metrics stall, or when Actions execute but don't produce results.

      Also in 5 projects that use this

    • Hugging FaceSkill

      self-review

      Use before opening a PR, or whenever asked to self-review a diffusers contribution. Applies the same rubric as the `@claude` CI (checks the diff against references/review-rules.md, traces call paths for dead code). Reports findings grouped by severity, flagging what to fix before submitting (blocking issues + dead code) vs what to leave for the actual review. Report-only — does not edit files.

      Also in 5 projects that use this

    • Itsokay-coSkill

      discover

      Automated pattern discovery — finds what correlates with your best and worst sleep nights. Scans workouts, meals, caffeine, tags, gut scores, and timing patterns. Use when the user wants to know what actually affects their sleep.

      Also in 5 projects that use this

    • neurofooSkill

      socratic

      Socratic questioning to examine beliefs, uncover assumptions, and develop deeper understanding. Use to challenge thinking, evaluate proposals, or teach without lecturing.

      Also in 3 projects that use this

    • MicrosoftSkill

      second-opinion

      Independent review of current work or a past session. USE WHEN a user wants a second opinion. DO NOT USE WHEN ordinary code review is wanted — use code-review.

      Also in 5 projects that use this

  • In this repository11 other files it gives its agents.

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.