Skip to content
Back to skills

Steno

ASecurity

Simple technical language for human readers — terse-prose register for non-author reviewers. Triggers: write/edit human-facing terse prose for review; user says "steno", "shorthand", "tighten this", "make this shorter".

  • 2 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 25, 2026
ai-agentsgosqldebugginggitapi

Works with

  • api

Security analysis

A100/100

Scanned September 25, 2026

npx -y skills add kborovik/spec-driven-dev --skill steno --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Steno?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Steno
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/kborovik-steno-spec-driven-dev/badge)](https://www.skillsdirectory.com/skills/kborovik-steno-spec-driven-dev)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: steno
description: |
  Simple technical language for human readers — terse-prose register for
  non-author reviewers.
  Triggers: write/edit human-facing terse prose for review; user says
  "steno", "shorthand", "tighten this", "make this shorter".
user-invocable: false
---

# steno — simple technical language

Audience: human reviewer scanning prose for facts — not a token-optimised model.
Anchor: simple technical language — clarity primary, compression subordinate; a word that aids the skim stays.
LLM-facing register → `telegraph` skill (same plugin).

## SCOPE

Human-facing terse prose for non-author reviewers — readers scan facts, benefit from compression w/o telegraph-symbol load.

Applies (not exhaustive):

- GitHub issues & PRs — titles, bodies (incl. PR desc refresh on merge).
- Commit-message bodies, incl. PR squash/merge release-note sections (subjects = per-skill fixed templates, preserve verbatim).
- READMEs & user-facing docs where compression aids scan.

Not:

- Code, snippets, backticked text.
- Conventional Commits title prefix (`type(area):`) — fixed format.
- Error strings, log lines.
- External-facing copy (marketing, landing pages).

## CORE — lead-first, one idea per sentence

Top criterion: fact appears in first sentence or bold-lead bullet of each block.
Skim fails → rewrite first clause to state the fact — not retain dense form, not cut further words.
Reviewer would slow on a symbol → use the word.

Every prose sentence or bullet body:

1. **Lead-first** — subject + verb open the sentence; topic-shift & qualifier clauses → tail.
   Subject past first clause → skim fails.
2. **One idea per sentence** — short sentences; break a long sentence before cutting words from it.
   One idea per line in lists.
3. **Visible subject-verb** — subject explicit or imperative (`Add X.` OK).
   No symbol-chain fragments: `auth → mw → handler` → `Auth middleware runs before the handler.`
4. **No hidden copulas** — elide `is`/`are` only when fragment unambiguous.
   Drop copula in `X — Y` only when Y reads as predicate, not apposition.
5. **≤ 1 participial phrase per sentence** — nesting kills first-clause readability.
6. **Expand an acronym on first use** — first mention spells the term, acronym in parens: `spec-driven development (SDD)`.
   Common web/protocol acronyms (`API`, `URL`, `JSON`, `HTTP`, `JWT`) exempt.
   Mirrors the define-term-on-first-use clarity rule.
7. **Cite rides the tail** — `§V.<n>` / `§T.<n>` / `#123` closes the sentence, never opens or carries it: `§V.<n> says spell out symbols` → `Spell out symbols per §V.<n>`.
   Subject + verb lead; the cite is reference, not subject.

Self-check every paragraph/bullet:

- First clause states the fact (subject + verb ≤ 8 words).
- Subject and verb both visible — symbol-chain fragments fail.
- Anti-test: cover everything after first clause; core fact still readable.

Shape defaults:

- Verb-headed fragments fine.
- **Bullets > paragraph** when listing > 2 items.
- **Definition list** for term/explanation pairs: `` - `--dry-run` — print actions, do not execute. ``
- **Headers + fragments** > full sentences in issue/PR bodies.
- `|`-table only for keyed fixed-schema data rows per table-use invariant; option comparison or concept set → bullet list.

## QUESTION SHAPE

Claude asks the operator to decide (AskUserQuestion prose, per decision-gate invariant):

1. **State the choice first** — one sentence naming the decision.
2. **List the options plainly** — one line each, mutually exclusive, no idiom.
3. **Recommend** — one sentence: the default and why.

Cite rides the tail (per CORE).
No prose `or keep going?` escape — a same-turn choice is a gate, not a sentence.

## SYMBOLS

Two raw symbols safe for GitHub readers:

```
|   or (in lists, not prose)
§   spec citation (`§V.<n>`, `§T.<n>`) — refs into SPEC.md only
```

Spell out everything else as words: `→` as "leads to" / "becomes" / "produces", `≥` as "at least", `≤` as "at most", `&` as "and".
No other symbols; a math operator beyond `|` and `§` → write the word.
Diverges from `telegraph` (the LLM-facing register keeps `→ ≥ ≤`): a human reader slows on a symbol, so the word wins.

## PRESERVE VERBATIM

- Code blocks, snippets, backticked text.
- Paths, URLs, `#123` issue/PR refs.
- Identifiers: function names, vars, env vars, flags.
- Numbers, versions, dates, SHAs.
- Error strings; SQL, regex, JSON, YAML.
- Quoted user-facing copy.
- `Resolves #N` / `Fixes #N` / `Closes #N` trailers — exact form.

## EXAMPLES

**Issue body** — Anti fails CORE rule 1 (lead-first): reader scans 14 words before the fact.

> When a user tries to log in with an email address that contains uppercase letters, the system fails to find their account because the lookup is being done in a case-sensitive manner, which is not the expected behavior for email addresses.

Good — first sentence states fact + condition; second states cause + fix direction:

> Login fails when email has uppercase letters. Lookup is case-sensitive — should be case-insensitive for emails.

**PR body** — Anti fails the skim test: 8 filler words precede the fact.

> This pull request basically just adds some additional logging to the auth middleware so that we can debug issues more easily in production environments. It also includes a small refactor of the token validation logic.

Good — first fragment states both items; each bullet opens with a verb:

> ## Summary
>
> Add auth middleware logging for production debugging. Refactor token validation.
>
> ## Changes
>
> - Log `userId`, `path`, `latency` on every authed request
> - Extract `validateToken()` from middleware into `auth/token.go`

## BOUNDARIES

Literal phrasing w/ the two raw symbols (per SCOPE); idiom adds parsing cost and ambiguity.
Within scope, not:

- idiom ("moves the needle", "low-hanging fruit", "boil the ocean").
- word-level metaphor ("earns its keep", "bite", "smell").
- colloquialism ("gotcha", "ish", "yeah", "kinda").
- culture-loaded shorthand (sports, military, film references).
- jargon-idiom ("load-bearing", "by-construction", "hand-rolled", "clean-slate", "prior-art", "carry-cost") — observed in spec prose; write the literal meaning.

Exclusions:

- Colloquial sentence structure — allowed where it aids reviewer flow; register applies at word level.
- Named domain operations (`backprop`, `telegraph-encode`, `socratic`, `steno`).
- Established tech vocab — closed allowlist only: `drift`, `bottleneck`, `leak`.
  A term off the list → plain word.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.