agentleFS
jamestexasjamestexas/agents/skills/repo-description-polish/SKILL.md

repo-description-polish

Skill2 starsChanged 6 months agoApache-2.0View on GitHub

Audit and polish the GitHub repo description — the pitch shown in search results, previews, and embeds. Proposes a stronger one from README + signals; applies via gh repo edit after approval. Sub-skill of repo-seo-curator.

The file

We split this skill into the rules it gives an agent

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

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈2

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 2

    Very specific

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

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Read in this priority order:

    line 84
  2. Distinctive:

    Tagline near top of CLAUDE.md / ARCHITECTURE.md: if present

    line 88
  3. Very specific:

    Verify by re-reading with gh repo view <owner/repo> --json description.

    line 145
  4. Very specific:

    One field per pass: Do not bundle description changes with topic or homepage changes — that's the parent repo-seo-curator's job to sequence.

    line 176

≈ “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
<!-- Author: jamestexas — drafted by claude-opus-4-7 (2026-05-16) -->

/repo-description-polish — GitHub Repo Description

Audit the GitHub repository description field and propose a polished replacement.

Arguments

$ARGUMENTS

  • <owner/repo> — one or more target repos. Defaults to the repo containing the current working directory.
  • --dry-run (default) — propose only.
  • --apply — present proposal, prompt for approval, then write via gh repo edit.

What this solves

The description is the single sentence that decides whether a stranger clicks. It shows in:

  • GitHub search results
  • GitHub repo cards and "related repos"
  • Hacker News, Slack, Discord link previews (OpenGraph)
  • Package registries when the repo is linked from a package
  • LLM-driven "what tools exist for X" recall

Bad descriptions are very common in the user's repos:

PRIVATE moat             🏰 M.O.A.T: Mixture of Adaptive Tokenizers
PRIVATE bread            🥖
PRIVATE smoge            🐉🤖
PRIVATE sushi            🍣
PUBLIC  gh-weekly        <no description>
PUBLIC  papers           <no description>
PUBLIC  x-ray            <no description>

Emoji-only and empty descriptions kill discoverability for both humans and LLMs.

What a good description looks like

✅ "Workerd-based hypervisor with a declarative Cap'n Proto manifest. Substrate-level
    identity, audit, and per-bundle credential scoping. Today's primary application:
    hosting MCP servers behind one HTTP face." (cloister)

✅ "Open-source data plane primitives: arena storage, schema contracts, filesystem
    projection, tree-sitter AST, LSP integration." (ley-line-open)

Pattern:

  1. Category noun first — what kind of thing is this? (hypervisor, library, protocol, CLI)
  2. Defining trait — what distinguishes it from peers in that category?
  3. (Optional) Primary use case — what does someone actually do with it?

Length target: 120–250 chars. GitHub truncates around 350 in some surfaces.

Hard rules

  • No emoji-only descriptions. They convey nothing in search results.
  • No starting emoji decoration unless the project has a strong logo association already. If unsure, drop it.
  • No promotional adjectives: blazing fast, next-gen, revolutionary, cutting-edge. Search engines deprioritize, humans skip, LLMs ignore.
  • No initialisms without expansion in the first sentence. "BREAD" alone is opaque; "BREAD (Bidirectional Recurrent Encoder for Anchored Diffusion)" is searchable.
  • Lead with the category noun, not the project name. GitHub already shows the name; you don't need to repeat it.

Workflow

Phase 1: Inventory

gh repo view <owner/repo> --json name,description,repositoryTopics,visibility,isFork,isArchived,homepageUrl,primaryLanguage

Skip with a printed reason if isFork or isArchived. Continue on private repos only if explicitly named (private repo descriptions still affect search inside an org).

Phase 2: Signal gathering

Read in this priority order:

  1. README first 1000 chars — the value prop is almost always there if it exists anywhere
  2. <h1> or first heading + first paragraph — often a usable seed
  3. Tagline near top of CLAUDE.md / ARCHITECTURE.md if present
  4. Package manifest description fields — package.json, Cargo.toml, pyproject.toml
  5. The repo name itself — what does the name suggest the project is?

Phase 3: Diagnose the current description

Classify the existing description into one of:

ClassExampleAction
empty<no description>Generate from scratch
emoji-only🥖Replace
vagueSome experimentsReplace with category noun + trait
marketingBlazing-fast revolutionary...Rewrite, strip adjectives
acronym-onlyBREADExpand and contextualize
workingWorkerd-based hypervisor...Leave alone
working but stalereferences removed featuresUpdate narrowly

For class working, skip the repo and report. Don't rewrite working content.

Phase 4: Proposal

Produce one proposal per repo:

## <owner/repo>

Current:  <description or "(empty)">
Class:    <empty|emoji-only|vague|marketing|acronym-only|working|working-but-stale>

Proposed: <new description>
Length:   <N> chars

Rationale:
  - <why this category noun>
  - <what trait makes it distinct>
  - <what was wrong with the old one>

Rejected alternatives:
  - "<other phrasing>" — too vague / too marketing / etc.

Phase 5: Approval

Print all proposals as one document. Then:

  • --dry-run (default): stop. Print a hint to re-run with --apply.
  • --apply: print "Apply these N description changes? (yes/no)" and wait. Only proceed on explicit affirmative.

Phase 6: Apply

gh repo edit "<owner>/<repo>" --description "<new text>"

Notes:

  • Escape inner double quotes if any (rare — descriptions shouldn't have them).
  • Verify by re-reading with gh repo view <owner/repo> --json description.

Phase 7: Report

Applied:
  agentic-research/mache           — was: "🗂️ The Universal..."
                                     now: "Graph-native code intelligence..."
  jamestexas/bread                 — was: "🥖"
                                     now: "BREAD (Bidirectional Recurrent..."
Skipped:
  agentic-research/cloister        — description already strong
  jamestexas/papers                — no README signal, needs human input

Examples

/repo-description-polish agentic-research/mache
→ dry-run proposal for mache

/repo-description-polish jamestexas/bread jamestexas/moat --apply
→ proposal for both, prompts for approval, writes via gh

/repo-description-polish
→ uses current working directory's repo

Important rules

  • Default to --dry-run. Descriptions are visible to anyone, including the org page.
  • One field per pass. Do not bundle description changes with topic or homepage changes — that's the parent repo-seo-curator's job to sequence.
  • If a description is already strong, skip the repo. Churn hurts SEO.
  • Don't touch forks or archived repos unless explicitly named.
  • For private repos, ask before writing. Even private descriptions are visible to org members in some surfaces; the user may want different copy than for public.

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.