Agent skill

Lathe Voice

by devenjarvis in devenjarvis/lathe

Author a custom writing voice for Lathe tutorials, in session, then persist it via the CLI.

MITAuto-check passed

Install Lathe Voice

skills CLI
$ npx skills add devenjarvis/lathe --skill lathe-voice -a claude-code

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

GitHub CLI
$ gh skill install devenjarvis/lathe lathe-voice --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/devenjarvis/lathe.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/lathe-voice .claude/skills/lathe-voice && 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
lathe-voice
GitHub stars
1.7k
Token cost
~1.3k tokens
SKILL.md length
655 words
Files
1
Skills in repo
7
Repo updated
First seen
Licence
MIT

At a glance

Author a custom writing voice for Lathe tutorials, in session, then persist it via the CLI.

  • Works in 6 steps: Pick the name. Use the /lathe-voice… → Interview the user. Ask, briefly (one… → Draft the spec. Write it in the built-in… → …
  • SKILL.md covers What a voice is (and what it…, Refuse to author these…, Protocol and Boundaries
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Lathe Voice is an agent skill from devenjarvis/lathe. Author a custom writing voice for Lathe tutorials, in session, then persist it via the CLI. Use when the user invokes /lathe-voice (optionally with a name like "/lathe-voice terse") to craft a new tone/register preset that /lathe can generate in.

Its SKILL.md is about 1.3k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

The repository describes itself as: Generate hands-on, multi-part technical tutorials on demand, with LLM skills tuned to make content approachable. Then you work through them yourself, by hand ✋. The licence is MIT.

Example prompts

  • “/lathe-voice terse”
  • “/lathe-voice”

Workflow steps

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

  1. Pick the name. Use the /lathe-voice argument if given; otherwise
  2. Interview the user. Ask, briefly (one round, grouped — don't interrogate)
  3. Draft the spec. Write it in the built-in structure: frontmatter (name,
  4. Show it and confirm. Print the full draft to the user. Iterate until they
  5. Persist via the CLI. On approval, pipe the spec to
  6. Tell the user how to use it

What it can do on your machine

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

    No scripts in the folder and no shell commands in SKILL.md (its code samples are bash).

    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

Lathe Voice loads about 1.3k tokens when it runs. Until then it costs about 65 tokens; SKILL.md has 655 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~65
When it runs · the whole SKILL.md, loaded when a task matches
~1.3k

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); files beside SKILL.md are not scanned.

SKILL.md

The full file from devenjarvis/lathe at commit 1e7c9f6, republished under its MIT licence (© devenjarvis). 655 words, ~1,266 tokens.

Download SKILL.mdSave it as .claude/skills/lathe-voice/SKILL.md (or your agent's skills folder).
name
lathe-voice
description
Author a custom writing voice for Lathe tutorials, in session, then persist it via the CLI. Use when the user invokes /lathe-voice (optionally with a name like "/lathe-voice terse") to craft a new tone/register preset that /lathe can generate in.

Lathe — Author a Voice

Help the user craft a custom writing voice — a tone/register preset that /lathe and /lathe-extend can generate tutorials in — then persist it through the CLI. Triggered by /lathe-voice [name].

A voice controls tone and register only. It never changes accuracy, research, citation, verification, substance, pedagogy, or structure — those are fixed invariants in the lathe skill, and every voice is wrapped at read time with a preamble that says so. You are authoring how the prose sounds, nothing more.

What a voice is (and what it is not)

Look at the built-ins for the exact shape before you draft — they are the template:

bash
lathe voice show plainspoken     # the honest, non-anthropomorphic default
lathe voice show companion       # the warm, first-person original
lathe voice list                 # everything currently available

A voice spec is a small markdown file with name:/description: frontmatter and three working sections:

  • Stance and register — persona, point of view, sentence rhythm, how the reader is addressed, the first-person policy, humor.
  • Avoid — the tonal anti-patterns this voice rejects.
  • Calibration — before / after — two or three ❌/✅ pairs showing the voice's tone (not pedagogy; the pedagogy before/afters live in the lathe skill).

Refuse to author these (deception guardrail)

Decline, and explain why, if the request is to make a voice that:

  • Impersonates a real, named person ("write exactly like <specific living author/engineer>", or as a named public figure) or implies their endorsement. A register inspired by a tradition is fine ("plain, in the spirit of good systems writing"); writing as a specific real person is not.
  • Fabricates credentials or authority — a voice that claims real-world experience, institutions, or qualifications the author doesn't have, or that presents invented anecdotes as things that actually happened. (A voice may use first person as a stance, like companion, but it must not manufacture a fake résumé.)
  • Denies LLM authorship or is built to pass the tutorial off as human-written.
  • Is coercive or deceptive — manipulative urgency, dark patterns, dishonesty toward the reader.

These aren't negotiable: the wrap preamble and the lathe invariants would override such instructions at generation time anyway, so a voice that depends on them is dead on arrival. Steer the user to an honest version of what they want.

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

Protocol

  1. Pick the name. Use the /lathe-voice <name> argument if given; otherwise ask for a short, lowercase slug (e.g. terse, socratic, field-notes). It must not collide with a built-in (plainspoken, companion) — lathe voice add will reject that, so check lathe voice list first.

  2. Interview the user. Ask, briefly (one round, grouped — don't interrogate):

    • Register: formal ↔ casual? dense ↔ spacious? dry ↔ warm?
    • Person: first person ("I"), collaborative ("we"), or impersonal? If first person, is it a stance (opinions) or are they hoping for fabricated experience? (If the latter, redirect per the guardrail.)
    • Humor: none, dry/sparing, or playful? Never at the reader's expense.
    • Anti-patterns: what should this voice never sound like? (Pull concrete words/phrases to feed the Avoid list.)
  3. Draft the spec. Write it in the built-in structure: frontmatter (name, a one-line description), # <Title>, ## Stance and register, ## Avoid, and ## Calibration — before / after with two or three ❌/✅ tone pairs. Keep it tonal — don't restate accuracy/structure rules; those are invariants.

  4. Show it and confirm. Print the full draft to the user. Iterate until they approve. Don't persist anything unapproved.

  5. Persist via the CLI. On approval, pipe the spec to:

    bash
    lathe voice add <name> --file -

    (The skill writes no files itself — the CLI owns ~/.lathe/voices/. --file - reads the spec from stdin.) If it errors on a built-in collision, pick another name and retry.

  6. Tell the user how to use it:

    • Generate in it now: /lathe <topic> and name the voice ("…in the <name> voice"), or make it the default with lathe voice set-default <name>.
    • Inspect or remove it later: lathe voice show <name> / lathe voice rm <name>.

Boundaries

  • The only durable-state write is lathe voice add (and, if the user asks, lathe voice set-default / lathe voice rm). Never write to ~/.lathe/ directly.
  • Author tone only. If the user wants to change pedagogy, structure, or accuracy behavior, that's a change to the lathe skill, not a voice — say so.

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

Files

Just SKILL.md in .claude/skills/lathe-voice of devenjarvis/lathe.

Open the folder on GitHubat commit 1e7c9f6

Compare with similar skills

Lathe Voice 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.

Lathe Voice compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Lathe Voice this skilldevenjarvis/lathe1.7k—~1.3kAutomated safety check: PassMIT
Hermes Agent Skill AuthoringNousResearch/hermes-agent252k—~3.6kAutomated safety check: PassMIT
Configuring Oauth2 Authorization Flowmukul975/Anthropic-Cybersecurity-Skills34k—~1.7kAutomated safety check: PassApache-2.0
Authoring Skillsvercel/next.js143k—~1kAutomated safety check: PassMIT
Abp Authorizationabpframework/abp14k—~1.3kAutomated safety check: PassLGPL-3.0
Implementing GCP Binary Authorizationmukul975/Anthropic-Cybersecurity-Skills34k—~2kAutomated safety check: PassApache-2.0

Similar skills

  • Hermes Agent Skill Authoring

    NousResearch/hermes-agent

    Author in-repo SKILL.md files: frontmatter and structure. An agent skill from NousResearch/hermes-agent.

    252k GitHub stars~3.6k tokensUpdated yesterday
    Agent WorkflowsAuto-check passed
  • Configuring Oauth2 Authorization Flow

    mukul975/Anthropic-Cybersecurity-Skills

    Configures secure OAuth 2.0 authorization flows, including Authorization Code with PKCE, Client Credentials, and Device Authorization Grant, covering flow selection, PKCE implementation, token…

    34k GitHub stars~1.7k tokensUpdated 1 mo ago
    Backend & APIsAuto-check passed
  • Authoring Skills

    vercel/next.js

    Official

    How to create and maintain agent skills in .agents/skills/. An agent skill from vercel/next.js.

    143k GitHub stars~1k tokensUpdated today
    Agent WorkflowsAuto-check passed
  • Abp Authorization

    abpframework/abp

    ABP permission system - PermissionDefinitionProvider, [Authorize] attribute, CheckPolicyAsync, IsGrantedAsync, ICurrentUser, IPermissionManager, multi-tenancy side.

    14k GitHub stars~1.3k tokensUpdated yesterday
    Backend & APIsAuto-check passed
  • Implementing GCP Binary Authorization

    mukul975/Anthropic-Cybersecurity-Skills

    Implements GCP Binary Authorization end to end, including creating KMS-backed attestors, Container Analysis notes, deploy-time policies, and signing image attestations, so that only trusted…

    34k GitHub stars~2k tokensUpdated 1 mo ago
    DevOps & CloudAuto-check passed
  • Collectors Authoring

    netdata/netdata

    Author, modify, or review Netdata collectors across Go, IBM, C, Rust and external plugins.

    81k GitHub stars~1.9k tokensUpdated today
    DevOps & CloudAuto-check passed

More from devenjarvis/lathe

  • Lathe Ask

    devenjarvis/lathe

    Answer a reader's question about a specific part of a Lathe tutorial, in session.

    1.7k GitHub stars~532 tokensUpdated 2 mo ago
    Auto-check passed
  • Lathe Extend

    devenjarvis/lathe

    Write the next part of an existing Lathe tutorial, in session.

    1.7k GitHub stars~1.4k tokensUpdated 2 mo ago
    Auto-check passed
  • Lathe Tag

    devenjarvis/lathe

    Pick or backfill the search tags on a stored Lathe tutorial, in session.

    1.7k GitHub stars~466 tokensUpdated 2 mo ago
    Auto-check passed
  • Lathe Verify

    devenjarvis/lathe

    Verify that a stored Lathe tutorial actually works by following it end to end in a fresh scratch dir, in session.

    1.7k GitHub stars~844 tokensUpdated 2 mo ago
    Auto-check passed
  • Lathe Work

    devenjarvis/lathe

    Run the Lathe worker loop so the web UI's Ask / Verify / Add-a-part buttons drive work directly in this session instead of handing back a command to paste.

    1.7k GitHub stars~1.7k tokensUpdated 2 mo ago
    Auto-check passed
  • Lathe

    devenjarvis/lathe

    Generate hands-on technical tutorials for any topic on demand.

    1.7k GitHub stars~7.2k tokensUpdated 2 mo ago
    Auto-check passed

Questions about Lathe Voice

What does Lathe Voice do?

Author a custom writing voice for Lathe tutorials, in session, then persist it via the CLI. Lathe Voice is an agent skill from devenjarvis/lathe. Author a custom writing voice for Lathe tutorials, in session, then persist it via the CLI.

How do I install Lathe Voice in Claude Code?

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

How do I install Lathe Voice in Codex?

Run `npx skills add devenjarvis/lathe --skill lathe-voice -a codex`. Or copy the skill folder (.claude/skills/lathe-voice in devenjarvis/lathe) into .agents/skills/lathe-voice in your project. Codex loads it when a task matches its description.

Can I use Lathe Voice 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 devenjarvis/lathe --skill lathe-voice -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/lathe-voice, .gemini/skills/lathe-voice, .github/skills/lathe-voice and .opencode/skills/lathe-voice in your project.

What does Lathe Voice need to run?

SKILL.md names no scripts, command-line tools or credentials: Lathe Voice is instructions for the agent only.

Does Lathe Voice 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 Lathe Voice 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. Review the folder before installing.

What licence does Lathe Voice use?

Lathe Voice 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 Lathe Voice use?

About 1.3k tokens (SKILL.md is roughly 5.1k 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 Lathe Voice?

Skills that share tags, products or a category with Lathe Voice: Hermes Agent Skill Authoring (NousResearch/hermes-agent, 252k stars), Configuring Oauth2 Authorization Flow (mukul975/Anthropic-Cybersecurity-Skills, 34k stars), Authoring Skills (vercel/next.js, 143k stars) and Abp Authorization (abpframework/abp, 14k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Lathe Voice?

devenjarvis (a GitHub user) maintains it in devenjarvis/lathe, which has 1,686 GitHub stars. The repository holds 7 skills in this directory. The repository was last updated on August 3, 2026.

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