Agent skill

Human Writing

by kataras in kataras/jwt

A skill your agent uses when writing or editing any prose in this repository - the book's preface, its chapters and epilogue, the brand kit notes, the agent skill documents, the changelog, and the…

MITAuto-check passedDevelopment

Install Human Writing

skills CLI
$ npx skills add kataras/jwt --skill human-writing -a claude-code

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

GitHub CLI
$ gh skill install kataras/jwt human-writing --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/kataras/jwt.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skill/human-writing .claude/skills/human-writing && 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
human-writing
GitHub stars
212
Token cost
~1.9k tokens
SKILL.md length
1,073 words
Files
3 (incl. scripts)
Skills in repo
2
Repo updated
First seen
Licence
MIT

At a glance

A skill your agent uses when writing or editing any prose in this repository - the book's preface, its chapters and epilogue, the brand kit notes, the agent skill documents, the changelog, and the…

  • Works in 2 steps: Put the text in backticks. Inline code… → Rephrase so the word is not needed.
  • Editing any prose in this repository - the books preface
  • SKILL.md covers Scope, Scan before you write, and…, Em dashes: none in prose and The rules, plus 2 more sections
  • Runs PowerShell and Shell scripts from its folder; calls pwsh

What it does

Human Writing is an agent skill from kataras/jwt. Use when writing or editing any prose in this repository - the book's preface, its chapters and epilogue, the brand kit notes, the agent skill documents, the changelog, and the root README. Also use when editing a doc comment in a .go file here. Strips the tells of AI-drafted prose (em dashes as clause separators, "comprehensive", "robust", "leverage", "provides a flexible way to", contractions, templated Introduction and Conclusion sections) and rewrites in plain, direct, technical English. Triggers on…

Its SKILL.md is about 1.9k tokens, which your agent loads only when the skill is triggered. The skill folder holds 3 other files, including scripts (for example `scripts/scan-tells.sh`).

It sits in Development, covering Authentication, Humanizing AI text and Brand strategy and identity. It works with Go. The repository describes itself as: A fast and simple JWT implementation with Generics support for Go 1.27+. The licence is MIT.

When your agent uses it

  • Editing any prose in this repository - the books preface
  • Its chapters and epilogue
  • The brand kit notes
  • The agent skill documents

Example prompts

  • “comprehensive”
  • “robust”
  • “leverage”
  • “/human-writing”

Requirements

  • A Bash shell
  • PowerShell

Workflow steps

2 steps, taken from the first numbered list in SKILL.md.

  1. Put the text in backticks. Inline code is exempt, and a quoted error string usually
  2. Rephrase so the word is not needed.

What it can do on your machine

Read from SKILL.md and the folder at commit 87a77ff. 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

    Ships 2 files in scripts/ (PowerShell and Shell), which the agent can run.

    Shell commands in SKILL.md call:

    • pwsh

    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

Human Writing loads about 1.9k tokens when it runs. Until then it costs about 164 tokens; SKILL.md has 1,073 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~164
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); the scripts in this folder are not scanned.

SKILL.md

The full file from kataras/jwt at commit 87a77ff, republished under its MIT licence (© kataras). 1,073 words, ~1,938 tokens.

Download SKILL.mdSave it as .claude/skills/human-writing/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.
name
human-writing
description
Use when writing or editing any prose in this repository - the book's preface, its chapters and epilogue, the brand kit notes, the agent skill documents, the changelog, and the root README. Also use when editing a doc comment in a .go file here. Strips the tells of AI-drafted prose (em dashes as clause separators, "comprehensive", "robust", "leverage", "provides a flexible way to", contractions, templated Introduction and Conclusion sections) and rewrites in plain, direct, technical English. Triggers on "humanize", "human writing", "AI tells", "em dashes", "does this sound generated", "polish the book", or any edit to a .md file here.

Human writing, for the jwt repository

This repository is read by people deciding whether to trust a security library with their authentication. It has to sound like an engineer wrote it, because one did. Prose that reads as generated invites the question of whether the code was too.

This skill is the standard, and scripts/scan-tells.ps1 is the check.

Scope

Every tracked markdown file: book/**.md, brand/BRAND.md, skill/**/*.md including this one, and the root README.md and CHANGELOG.md. That is exactly the set the scanner's -Md mode walks, so if the two disagree, one of them has a bug.

Untracked files are out of scope whatever they contain. Local agent configuration is not published, so holding it to a standard no reader will ever see is wasted effort.

Doc comments in .go files are in scope for the standard but not for the scanner. The scanner skips Go entirely, because separating a doc comment from a string literal from a code sample inside a comment is more machinery than it is worth. Those are edited by hand, and the rules below still apply to them.

book/output/ is generated. Never edit it.

book/README.md, the preface, is the reference voice. When you are unsure how a sentence should sound, read it.

Scan before you write, and again after

powershell
pwsh skill/human-writing/scripts/scan-tells.ps1 book/03-claims.md
pwsh skill/human-writing/scripts/scan-tells.ps1 -Md              # the whole corpus
pwsh skill/human-writing/scripts/scan-tells.ps1 -Md -Summary     # counts per rule
pwsh skill/human-writing/scripts/scan-tells.ps1 -Wrap book/      # long lines
sh
skill/human-writing/scripts/scan-tells.sh --md --summary         # no pwsh needed

The scanner is fence aware. It never reports anything inside a fenced code block, and it blanks inline code spans, link targets and bare URLs before matching, so an identifier or a URL containing a double dash is not a finding. Exit code is 1 while findings remain.

Zero findings is the bar for every file here. There are no correct-in-context em dashes in this repository.

The scanner is the only gate. No CI job runs it and no hook runs it: the hooks in this repository sync artefacts, they do not lint prose. So finish every writing session with a repository-wide pass, whatever single file you came to edit, and treat findings you did not write as yours to fix.

Em dashes: none in prose

An em dash between clauses is the strongest single tell in this corpus. There is always a better mark. Pick by the job the dash was doing. The examples below are in code spans so that this document passes its own scanner, which is the point of the escape hatch at the bottom of this page:

Job the dash was doingReplacementExample
Interrupting appositive, a pair of dashes mid-sentenceA colon, or two sentencesthree failures — a nil key, a short nonce, a bad kid — each panicked becomes three failures panicked: a nil key, a short nonce and a bad kid
Trailing explanationA period and a new sentenceVerify the token — the signature proves the key. becomes Verify the token. The signature proves the key.
Definition or expansionA colon`exp` — the expiry claim becomes `exp` is the expiry claim
Subordinate asideParenthesesthe header (which is signed) cannot be edited
A simple pauseA comma

Never substitute mechanically. Choose per sentence.

The en dash is fine in a numeric range (16–48 px). It is not a clause separator either.

Show full SKILL.md (552 more words)Show less

The rules

Second person, and no contractions. Write you, not we and not the developer. Write do not, never don't. Full sentences with a subject and a verb.

No emoji, anywhere.

No admonition syntax. Not > [!NOTE], not :::warning. Where you want a callout, write a paragraph whose first phrase is bold, the way this list does.

Banned shapes. These are the ones an assistant produces by default:

  • A ## Conclusion that restates what was just said. End on the last real point, or on a ## Summary that adds the shape of the argument rather than repeating it.
  • provides a robust and flexible way to
  • This guide will walk you through
  • By leveraging
  • allows developers to, enables you to, makes it easy to
  • Negative parallelism: not only X but also Y, X is not just Y, it is Z
  • Participial tails: , ensuring the token is valid, , allowing you to rotate keys
  • Let's dive in, deep dive
  • It is worth noting that. If it is, note it and skip the preamble.

Word swaps.

Instead ofWrite
comprehensivefull, or drop it
robustreliable, or drop it
seamless, seamlesslydrop it
leverageuse
utilizeuse
crucial, vitalimportant, or say what breaks without it
powerfulsay what it actually does
performantfast, or give the number

Technical adjectives that carry information stay. Constant-time comparison is a fact about how the code runs, and zero-dependency is a fact about go.mod.

One concrete specific per claim. A number, a default, a flag name, an error name, a line of output. Verification is fast is worth nothing. Verification costs 18 allocations and about 2.5 microseconds on this machine can be checked, and argued with.

Concede a trade-off now and then. Every design choice here cost something. Saying so is what makes the rest of the page believable. Enrich verifying its input costs eight allocations; the small-size brand cut drops a whole tooth; Merge splices raw JSON and can therefore emit a duplicate key. Say it.

Vary the rhythm. Three sentences of the same length in a row is the sound of generated text. Follow a long one with a short one.

Editing rather than rewriting

Edit surgically. Text that already complies is left alone, and no edit changes the meaning of a sentence to make it easier to phrase.

In a .go file you are editing comments only. Never touch code to fix prose. A doc comment must still begin with the name of the thing it documents, which is a Go convention the standard here does not override:

go
// Verify checks a token's signature and its standard claims.

not

go
// This function checks a token's signature.

Godoc has no emphasis syntax. **bold** in a doc comment renders as literal asterisks, and ## Heading renders as literal text, because a heading needs a space after a single #. This package once carried over a thousand ** markers that all rendered as punctuation.

When the scanner is wrong

It will be, occasionally. A quoted error string containing a banned word, a rule name, a literal example of the thing being warned against. Two ways out, in order of preference:

  1. Put the text in backticks. Inline code is exempt, and a quoted error string usually should be code anyway.
  2. Rephrase so the word is not needed.

Do not add an exemption to the scanner for one line. A rule with holes in it stops being a rule people trust.

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

Files

SKILL.md and 2 other files (scripts) in skill/human-writing of kataras/jwt.

  • SKILL.md
  • scripts/scan-tells.ps1
  • scripts/scan-tells.sh

Open the folder on GitHubat commit 87a77ff

Compare with similar skills

Human Writing 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.

Human Writing compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Human Writing this skillkataras/jwt212—~1.9kAutomated safety check: PassMIT
Golang Documentationunxed/f42413 repos~3.5kAutomated safety check: PassMIT
Releasejrswab/axe896—~1.4kAutomated safety check: PassApache-2.0
Simple Englishmoeru-ai/airi50k2 repos~4.6kAutomated safety check: PassMIT
Beautify GitHub Readmeoil-oil/beautify-github-readme1.8k—~4.1kAutomated safety check: PassMIT
Go-Redis Release Preparationredis/go-redis22k—~1.1kAutomated safety check: PassBSD-2-Clause

Similar skills

  • Comprehensive documentation guide for Golang projects, covering godoc comments, README, CONTRIBUTING, CHANGELOG, Go Playground, Example tests, API docs, and llms.txt.

    241 GitHub starsUsed in 3 repos~3.5k tokens
    DevelopmentAuto-check passed
  • Release

    jrswab/axe

    Prepare code for release (version bumps, changelog, README updates) and create an annotated tag to trigger the GoReleaser workflow.

    896 GitHub stars~1.4k tokensUpdated 4 days ago
    DevelopmentAuto-check passed
  • Simple English

    moeru-ai/airi

    Write or rewrite technical text with the rules of ASD-STE100 Simplified Technical English so it is clear, unambiguous, and free of AI slop.

    50k GitHub starsUsed in 2 repos~4.6k tokens
    DevelopmentAuto-check passed
  • Beautify GitHub Readme

    oil-oil/beautify-github-readme

    Redesign GitHub README homepages or create project-native pure SVG, hybrid SVG-composed PNG/WebP, and opt-in animated GIF assets.

    1.8k GitHub stars~4.1k tokensUpdated 5 days ago
    DevelopmentAuto-check passed
  • Official

    Prepares a go-redis release locally: picks the next semver, gathers merged PRs, writes the RELEASE-NOTES entry and bumps versions, without publishing.

    22k GitHub stars~1.1k tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Redesign GitHub README homepages or create standalone GitHub-safe SVG and animated GIF assets around a repository's real theme.

    106 GitHub starsUsed in 1 repo~3.2k tokens
    DevelopmentAuto-check passed

More from kataras/jwt

  • JWT

    kataras/jwt

    Development guide for the jwt JSON Web Token library for Go (github.com/kataras/jwt).

    212 GitHub stars~1.5k tokensUpdated 26 days ago
    Auto-check passed

Works with

Questions about Human Writing

What does Human Writing do?

A skill your agent uses when writing or editing any prose in this repository - the book's preface, its chapters and epilogue, the brand kit notes, the agent skill documents, the changelog, and the…. Human Writing is an agent skill from kataras/jwt. Use when writing or editing any prose in this repository - the book's preface, its chapters and epilogue, the brand kit notes, the agent skill documents, the changelog, and the root README.

When should I use Human Writing?

Human Writing fits situations like: editing any prose in this repository - the books preface; its chapters and epilogue; the brand kit notes; the agent skill documents.

How do I install Human Writing in Claude Code?

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

How do I install Human Writing in Codex?

Run `npx skills add kataras/jwt --skill human-writing -a codex`. Or copy the skill folder (skill/human-writing in kataras/jwt) into .agents/skills/human-writing in your project. Codex loads it when a task matches its description.

Can I use Human Writing 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 kataras/jwt --skill human-writing -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/human-writing, .gemini/skills/human-writing, .github/skills/human-writing and .opencode/skills/human-writing in your project.

What does Human Writing need to run?

Going by SKILL.md and its folder, Human Writing needs PowerShell and a shell for the scripts in its folder and the command-line tools its instructions call (pwsh). Our summary lists: A Bash shell; PowerShell.

Does Human Writing 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 Human Writing 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. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Human Writing use?

Human Writing is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Human Writing use?

About 1.9k tokens (SKILL.md is roughly 7.8k 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 Human Writing?

Skills that share tags, products or a category with Human Writing: Golang Documentation (unxed/f4, 241 stars), Release (jrswab/axe, 896 stars), Simple English (moeru-ai/airi, 50k stars) and Beautify GitHub Readme (oil-oil/beautify-github-readme, 1.8k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Human Writing?

kataras (a GitHub user) maintains it in kataras/jwt, which has 212 GitHub stars. The repository holds 2 skills in this directory. The repository was last updated on September 13, 2026.

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