agentleFS
XenoneqqXenoneqq/claudified-workflow/skills/humanify/SKILL.md

humanify

Skill1 starsChanged 50 days agoMITView on GitHub

Turn any text into what a person would actually write and want to read: short, simple and plain. Works on text you hand over, or on something you ask for in the same prompt, such as "write a summary of my changes and humanify it". Covers review comments, PR descriptions, messages, issue text, commit bodies, summaries of changes or findings, and anything else short. Not for docs; humanify-docs covers those. Use when: "humanify", "/humanify", "humanify this", "and humanify it", "make it readable", "make this shorter", "keep it simple", "too long", "make it brief", "draft a comment", "draft a message", "write it like a human", or the user hands over text that reads like AI. Every rule here yields to what the user asks for.

2 other projects use a version of this.

Adopted by

Most recently taken up by

  • Other versions2 projects use a version of this.

    Word for word · 0

    None found.

    Edited · 0

    None found.

    Wrote their own version · 2

    1. dekoza/oh-my-slop★ 4same name
    2. keithmackay/humanify★ 0same name

    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.

  • In this repository6 other files it gives its agents.

The file

We split this skill into the rules it gives an agent

9 rules. About 0 are common, 8 are distinctive, and 1 is very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈8

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 1

    Very specific

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

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    When the prompt asks for content and humanify together, gather what the content needs first (the diff, the files, the conversation), then …

    line 11
  2. Distinctive:

    Write for someone reading it cold.

    line 20
  3. Distinctive:

    Keep only what the user asked for.

    line 22
  4. Distinctive:

    Keep every fact the reader needs to act.

    line 26
  5. Distinctive:

    No preamble, no closing summary, no "hope this helps".

    line 27
  6. Very specific:

    If the text follows a repo template, or a shape from draft-pr or draft-issue, keep its sections and shorten inside them.

    line 39
  7. Distinctive:

    No em dashes or en dashes.

    line 43
  8. Distinctive:

    No sentence broken across lines.

    line 44
  9. Distinctive:

    No emoji, no horizontal rules, no headings in short text.

    line 45

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “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

humanify

Take whatever the user has, a draft, a pile of findings, or something they ask you to write first, and turn it into text a person would actually write and want to read.

When the prompt asks for content and humanify together, gather what the content needs first (the diff, the files, the conversation), then write it by these rules straight away. Do not write a long version and cut it down.

The result replaces the source text if it came from a file. Otherwise it is the text itself and nothing else.

The rules below are defaults. What the user asks for wins.

Rules

  • KISS. Say the one thing, then stop. Cut anything the reader can act without.
  • Write for someone reading it cold. Plain words, short sentences, active voice.
  • Fit the length to the kind of text (table below).
  • Keep only what the user asked for. "The 3 issues" means exactly 3, not 3 plus nits.
  • Phrase review items as something to check or a question, not a verdict. "Could you check X? ... Maybe Y?"
  • For a problem, say what it is, how to see it in one line, and optionally a fix in one line. No walkthrough of the mechanism.
  • For a change, say what it does for the reader, not how it is wired.
  • Keep every fact the reader needs to act. Invent nothing.
  • No preamble, no closing summary, no "hope this helps".
Kind of textLength
Review comment1-3 sentences, under a file:line label
MessageA few lines
PR descriptionA short paragraph, plus a list only when needed
Issue textThe problem, how to see it, what should happen
Commit bodyA few short bullets, or nothing
Summary of changes or findingsA sentence or two, then one line per item if there are several
Anything elseAs short as it can be while still saying everything the reader needs

If the text follows a repo template, or a shape from draft-pr or draft-issue, keep its sections and shorten inside them.

Formatting

  • No em dashes or en dashes. Use a comma, a colon, a full stop or a plain hyphen.
  • No sentence broken across lines. One paragraph is one line.
  • No emoji, no horizontal rules, no headings in short text.
  • Bold only as a label, such as the file:line on a review comment.
  • Identifiers in backticks.
  • A code block only when the snippet is shorter than describing it.

Example

The user asks for "the 3 issues, as review comments". The draft:

## Review summary

Thanks for the PR! Overall this is a really solid refactor of the gesture state handling — the new parking logic is much easier to follow than the old flag soup. That said, I found a few issues worth addressing before we merge. I've grouped them by severity below.

### Critical: `end()` can skip `onStart` while the handler is parked

**File:** `NativeGestureManager.cpp`, line 325

When a handler is parked (i.e. it has been activated but is waiting for a double tap to fail), calling `activate()` followed by `end()` causes the following sequence:

1. `activate()` sees the handler is parked and returns early without transitioning.
2. `end()` does not check the parked state at all.
3. The state machine therefore moves straight from BEGAN to END.
4. Because ACTIVE is never reached, `onStart` is never called.
5. And since the handler is no longer BEGAN, the double tap can no longer cancel it, which defeats the purpose of parking.

This could cause subtle bugs in anything that relies on `onStart` running before `onEnd`, for example animations that set up state in `onStart`.

**Suggested fix:** Keep the handler parked when it is `held`, record the lift with something like a `liftedWhileHeld` flag, and replay the end once the double tap fails.

### Major: `cancelAll()` skips handlers

**File:** `GestureHandlerOrchestrator.cpp`, line 141

`cancelAll()` loops over `awaitingHandlers` with an iterator, but `cancel()` erases the handler from that same vector. After the first erase the iterator points one element too far, so every second handler is skipped and stays awaiting forever. It's easy to reproduce with two pans that both wait for the same tap.

**Suggested fix:** Copy the vector before looping, or loop with the return value of `erase()`.

### Minor: pointer count read after erase

**File:** `NativeGestureManager.cpp`, line 512

In `onTouchesUp`, `pointers_.size()` is read after the pointer is erased. When both fingers of a pinch lift in the same event, `numberOfPointers` reaches 0 on the first pointer, so the handler ends twice.

**Suggested fix:** Read the count before erasing.

### Nits

- `isHeld` might read better as `held()` to match the other accessors.
- `resetParking()` could be `const`.
- It would be great to add a test for the parked path!

Let me know if you have any questions — happy to pair on any of this.

The result:

**NativeGestureManager.cpp:325**
Could you check `activate()` followed by `end()` while the handler is parked? `end()` takes it BEGAN to END with no `onStart`, and the double tap can't cancel it anymore. Maybe keep it parked with `liftedWhileHeld` when it's `held`?

**GestureHandlerOrchestrator.cpp:141**
Could you check `cancelAll()` with two pans waiting on the same tap? `cancel()` erases from `awaitingHandlers` mid-loop, so the second one is skipped and stays awaiting. Maybe copy the vector first?

**NativeGestureManager.cpp:512**
Could you check a pinch where both fingers lift in the same event? `pointers_.size()` is read after the erase, so the handler ends twice. Maybe read the count before erasing?

The severity headings, the step-by-step walkthrough, the nits and the sign-off are gone. Each comment keeps the problem, how to see it and a fix.

Download now (ZIP)

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.