agentsclimarketplace

Readme craft

Skill motiful/readme-craft

Layout-first README generation for AI agents — organize by how readers scan, not by what you want to say. 3-tier layout strategy with 45-point quality audit.

Install
npx -y skills add motiful/readme-craft

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Generate and improve README files using a 3-tier layout strategy, GitHub-native formatting patterns, badge guidance, and a state-driven workflow. Use when the user says "write a README", "generate a README", "create a README", "improve this README", "review my README", "make my README better", "add badges", or "fix my README layout".

The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.

SKILL.md

26.8 KB, as published. Nobody here has run it

readme-craft

A GitHub-native, layout-first README generation and improvement skill for AI agents. Produces structured, scannable READMEs with a 3-tier information hierarchy designed for how GitHub READMEs are actually consumed.

This skill is a standalone utility. It does NOT depend on skill-forge or any other skill. Higher-level tools (like skill-forge) may optionally delegate to readme-craft for layout and badge decisions.

Execution Procedure

def readme_craft(project_path, user_request):
    # STEP 0: Dependencies
    run("scripts/setup.sh")                                    # exit non-zero → STOP

    # STEP 1: Scan
    state = scan_project(project_path)                         # see Scan section
    # state = {has_readme, has_logo, has_codebase, has_skill_md, ...}

    # STEP 2: Gather
    if state.has_codebase:
        info = derive_from_code(state)                         # see Gather section
    else:
        info = ask_user("name, one-liner, features, license")
    info += ask_targeted_questions(state, max=4)               # only when scan can't decide

    # STEP 3: README Content
    if state.has_readme and user_said("start fresh"):
        facts = extract_facts(state.readme)                    # carry forward, discard structure
        state.has_readme = False

    if state.has_readme:
        plan = evaluate(state.readme, "3-Tier Layout + Quality Checklist")  # see 3-Tier section
        if state.has_skill_md: assert_distinct_operations(plan, "Quick Start")
        confirm_plan_with_user(plan)                           # HITL — or apply if "just fix it"
        readme = apply_improvements(state.readme, plan)        # see Tone & Voice section
    else:
        template = "assets/skill-readme.md" if state.has_skill_md else "assets/universal-readme.md"
        readme = fill_template(template, info)

    # STEP 4: Logo
    if state.has_logo:
        readme = insert_picture_element(readme, state.logo)    # see Dark/Light Mode Logo section
    else:
        candidates = run(f'node scripts/generate-logo.mjs --candidates 5 --name "{info.name}"')
        present_paths_to_user(candidates)                      # HITL — user picks
        selected = wait_for_user_selection()                   # references/logo-generation.md
        copy_to(".github/logo-light.svg", generate_dark(".github/logo-dark.svg"))
        if wordmark_spells_name(selected): omit_h1()

    # STEP 5: Formatting & Badges
    readme = apply_3tier_layout(readme)                        # see The 3-Tier Layout Strategy
    readme = apply_github_formatting(readme)                   # references/github-formatting.md
    readme = select_and_apply_badges(readme, state)            # see Badge Selection + references/badges.md
    if state.has_git_remote:
        star_count = gh_api_star_count(state.remote)           # gh api repos/{owner}/{repo} --jq .stargazers_count
        if star_count >= 100:
            if ask_user(f"This repo has {star_count}⭐ — add a star history chart?"):  # HITL
                readme = insert_star_history(readme, state.remote)  # references/badges.md § Star History
    readme = apply_tone_voice(readme)                          # see Tone & Voice section

    # STEP 6: Quality Check
    # Pass 1: structural
    findings = run_checklist(readme, "dimensions 1-5")         # references/quality-checklist.md
    report_to_user(findings)
    readme = fix(readme, findings)
    assert run_checklist(readme, "dimensions 1-5").all_pass

    # Pass 2: reader lens
    reader_findings = run_checklist(readme, "dimension 6")     # different mindset — stranger perspective
    readme = fix(readme, reader_findings)

    # STEP 7: GitHub Metadata
    validate_or_create_metadata(state)                         # references/github-metadata.md
    assert metadata_file_valid(state)                          # GATE — .github/repo-meta.yml must exist with valid description + topics
    if state.has_git_remote:
        apply_metadata_to_remote(state)                        # gh repo edit --description + --add-topic

    # STEP 8: Deliver
    readme = add_footer(readme, state)                         # "Crafted with Readme Craft"
    readme = remove_sections_user_declined(readme)
    present_final(readme)

    # STEP 9: Comparison (when improving an existing README)
    if state.has_readme and state.original_readme:
        generate_comparison(state.original_readme, readme)     # references/comparison-screenshots.md

When to Use

Activate this skill when the user says any of:

  • "Write a README for this project"
  • "Generate a README"
  • "Create a README from scratch"
  • "Improve this README"
  • "Review my README"
  • "Make my README better"
  • "Add badges to my README"
  • "Fix my README layout"
  • Any request involving README creation, evaluation, or improvement

Scan

Scan the project to understand current state:

  • Check for existing README
  • Check for existing logo files in .github/ first, then repo root (logo-light.svg, logo-dark.svg, logo.svg, logo.png). Canonical location: .github/
  • Read package.json, Cargo.toml, pyproject.toml, go.mod, SKILL.md frontmatter, or equivalent for name, version, description, license, dependencies
  • Read existing docs (CONTRIBUTING.md, CHANGELOG.md, LICENSE) if present
  • Read the entry point and key source files to understand what the project does
  • Read CI config (.github/workflows/, .gitlab-ci.yml) to determine build/test commands
  • List directory structure (top 2 levels)

Record findings as project state: {has_readme, has_logo, has_codebase, has_skill_md, ...}

Gather

  • has_codebase → derive name, description, features, install commands from code
    • Derive the one-liner from package description + source code understanding
    • Derive features from exports, CLI commands, API surface, or SKILL.md capabilities
    • Derive install commands from package manager config or skill registration patterns
    • Derive quick-start from examples/ directory, tests, main entry point, or install command. For general projects: install command + minimal code snippet or one CLI invocation. For skill projects (has_skill_md): list distinct operations from SKILL.md workflow modes — one canonical trigger phrase + outcome per operation. Phrasing variations of the same operation go in Usage, not Quick Start
  • !has_codebase → ask user for: project name, one-liner, key features, license
  • Either way: ask up to 4 targeted questions only when the scan cannot safely decide:
    • should social proof appear in the README
    • should deep content move to docs/
    • should a diagram be added
    • should an existing voice or visual style be preserved strictly

What a README Is — and Is Not

A README is a storefront, not a documentation site. In the Diátaxis framework (tutorials, how-to guides, reference, explanation), a README does not belong to any single type. It borrows elements from several:

  • Explanation → Why / The Problem
  • How-to → Quick Start, Install, Usage
  • Reference → Tier 3 supporting content (inline or linked to docs/)

But a README has a mission that none of the four types cover: convince. The Features section exists to sell — to make a reader believe this project is worth their time in the fewest possible words. Features answer "what do I get?", not "how does it work internally?" or "why was it designed this way?"

The structural principle behind the 3-tier system is progressive disclosure: reveal only what each visitor needs at their current level of commitment. Tier 1 is for the uncommitted (pitch), Tier 2 is for the evaluating (proof), Tier 3 is for the committed (reference). Every placement decision — "does this belong above the fold or at the bottom?" — is a progressive disclosure decision. Scrolling is the disclosure mechanism, not collapsing.

ConceptQuestion it answersExample
Features / Highlights"What do I get?""Scans your codebase and auto-generates a README"
How It Works"How does it run internally?""Config → Gather → Create → Validate → Publish"
Why / The Problem"Why do I need this?""Your skill is trapped in one project and can't be shared"

When Features and How It Works are mixed together, the README writes out a pipeline instead of selling capabilities.


The 3-Tier Layout Strategy

This is the primary differentiator of readme-craft. Every README must organize content into three tiers based on how visitors consume information.

This strategy is optimized for GitHub README rendering. Elements like <picture> and similar GitHub-specific patterns may not render on other platforms (GitLab, npm, crates.io). Adapt as needed.

Tier 1: Above the Fold (~250px)

The first screen a visitor sees. This is the 3-second pitch. Visitors who are not interested will leave after this.

Baseline elements (in order):

  1. Logo — centered, 80-120px height. Use existing if found, generate if not (see Step 4). Use <picture> for dark/light mode (see below).
  2. Project name<h1>, centered.
  3. One-liner — a value proposition, not a technical description. Answer "why should I care?", not "what technology is this?" Example: ✓ "Stop writing validation logic by hand" vs ✗ "A TypeScript library for form validation."
  4. Badges — up to 6, on 1-2 lines. Trust signals: license, version, build status, downloads. Fewer is fine when fewer apply.
  5. Quick action links — inline links to the most relevant next actions (for example Quick Start, Usage, Install, Docs, Demo, Report Bug).

Additional brief elements (a platform compatibility line, a short tagline, a small demo gif) are fine as long as Tier 1 stays within ~250px and reads as a single visual block.

Rules:

  • The constraint is height and density, not element count. Stay within ~250px.
  • No walls of text above the fold.
  • Logo must be compact (not a full-width banner).
  • The one-liner must answer "why should I care?" not "what technology is this?"
  • No installation instructions in Tier 1.

Markdown pattern (standard):

<div align="center">
  <picture>
    <source media="(prefers-color-scheme: dark)" srcset=".github/logo-dark.svg">
    <source media="(prefers-color-scheme: light)" srcset=".github/logo-light.svg">
    <img alt="project-name" src=".github/logo-light.svg" width="120">
  </picture>

  <h1>project-name</h1>
  <p>One-liner value proposition</p>
</div>

<div align="center">

[![License: MIT][license-shield]][license-url]
[![Version][version-shield]][version-url]
[![Build][build-shield]][build-url]

</div>

<div align="center">
  <a href="#quick-start">Quick Start</a> &middot;
  <a href="https://docs-url">Docs</a> &middot;
  <a href="https://demo-url">Demo</a>
</div>

Alternate pattern (wordmark logos):

When a wide wordmark (400-500px) serves as both logo and project name, the standard <p> inside <div> can feel cramped. Use a > blockquote after the closing </div> instead — it adds visual separation between the wordmark and the one-liner.

<div align="center">
  <picture>
    <source media="(prefers-color-scheme: dark)" srcset=".github/logo-dark.svg">
    <source media="(prefers-color-scheme: light)" srcset=".github/logo-light.svg">
    <img alt="project-name" src=".github/logo-light.svg" width="440">
  </picture>
</div>

<!-- badges and quick links divs here -->

> One-liner value proposition

Use the standard <p> pattern by default. Switch to blockquote only when the wordmark is wide enough to make the centered <p> feel visually crowded.

Tier 2: Scan Quickly

The next 2-3 screens. A visitor who passed Tier 1 wants to evaluate whether this project is worth adopting.

Showcase Image — For tools that produce visual transformations, place a before/after or hero image immediately after Tier 1's --- separator, before the first ## heading (or as the first element of Tier 2). This is a "show don't tell" proof that's more convincing than any text description. Skip ONLY when: project has no visual transformation (CLI tools, libraries, pure APIs).

Required sections (in order):

  1. Why / The Problem — 2-4 sentences. What pain point does this solve? A strong Problem section lets readers self-qualify: "If [your situation], you need this." If the project serves multiple user segments (e.g., "haven't started yet" vs "already deployed"), address each briefly rather than blending into one generic statement.
  2. Features / Highlights — bullet list, benefit-oriented. Each item answers "what does the user get?", not "how does it work internally?" Write in benefit-oriented language ("scans your codebase and auto-generates a README"), not mechanism-oriented language ("uses AST parsing to extract function signatures"). If you find yourself describing pipeline stages or internal steps, move that to How It Works in Tier 3.
    • Scope: 3-6 items for focused projects; scale to 7-10 for feature-rich projects. The goal is comprehensive coverage — do not cherry-pick a few capabilities and silently drop the rest. When the project has many features, group related capabilities into single items or use sub-descriptions rather than omitting.
    • Ordering: Most important and most innovative capabilities first. Lead with what makes this project unique, not with table-stakes features every similar tool has.
    • Comprehensiveness check: Read through all source files, reference docs, and config to inventory every user-facing capability. Then confirm every major capability appears in the Features list — either as its own item or clearly covered within another item.
  3. When to Use — include for tools and skills. Skip ONLY when: the Usage section already covers activation context. Clarify what situation should prompt the reader to reach for this project. If there's a specific activation model ("use after X, not during Y") or a "not for" boundary, state it here. Can be combined into Usage if short.
  4. Quick Start — the fastest path to a working example. 1-3 commands + minimal code (5-15 lines).
  5. Install — primary installation method inline. Alternative methods: short → inline below primary; long → docs/install-alternatives.md with teaser.
  6. Usage — basic example + 1-2 common use cases. Advanced examples: short → inline; long → docs/ with teaser.

Rules:

  • Each section must fit on one screen or less.
  • Use code blocks aggressively — they scan faster than prose.
  • Bullet lists over paragraphs.
  • If a section exceeds one screen, move detail into a linked doc (docs/).

For AI agent skills, "Usage" (trigger phrases) may come before "Install" to prioritize understanding over commitment. The skill template reflects this ordering.

Tier 3: Supporting Content

Sections below Tier 2 that serve committed users. Position at the bottom of README provides natural progressive disclosure — scrolling is the disclosure mechanism, not collapsing.

The Checkout Test — the operational criterion for every section:

If this section disappeared from the README, would a potential user be less likely to git clone or npm install the project?

  • Yes → keeps the section inline in README
  • No → section moves to docs/ with a teaser link

Three content types pass the Checkout Test:

  1. Feasibility gates — "Can I use this?" (Prerequisites, primary Install, License)
  2. Value proposition — "Should I use this?" (Why, Features, Quick Start, When to Use)
  3. Trust signals — "Can I trust this?" (Badges, social proof)

Everything else is post-decision content: "how to use it better" or "how it works internally." Removing it would not change whether someone tries the project.

Section-by-section reference:

SectionPasses Checkout Test?CategoryPlacement
Why / ProblemYesValue propositionTier 2 inline
FeaturesYesValue propositionTier 2 inline
Quick StartYesValue propositionTier 2 inline
When to Use / Not-forYesValue propositionTier 2 inline
Install (primary)YesFeasibility gateTier 2 inline
PrerequisitesYesFeasibility gateinline
LicenseYesFeasibility gateinline
Install (alternatives)NoPost-decision (exploring options)teaser + docs/
How It WorksNoPost-decision (curiosity)teaser + docs/
Configuration (full)NoPost-decision ("configurable" helps; full table doesn't)teaser + docs/
API ReferenceNoPost-decisionteaser + docs/
Project StructureNoPost-decision (contributor info)teaser + docs/
DevelopmentNoPost-decision (contributor info)teaser + docs/
ContributingNoPost-decision (contributor info)inline or CONTRIBUTING.md
Changelog / RoadmapNoPost-decision (existing users)teaser + docs/ or link
AcknowledgmentsNoPost-decision (courtesy, usually very short)inline

No <details>. Zero. If content is worth including, show it inline. If it's too long for README, move it to docs/ as a complete, self-contained document. No folding, no collapsing.

Teaser + link pattern — substantive summary, not "learn more":

## How It Works

skill-forge validates structure, security, and claims in a single pass
by reading every file in your skill repo.

→ [Architecture deep dive](docs/how-it-works.md)

HITL: readme-craft proposes moves ("suggest moving How It Works to docs/how-it-works.md"). The user confirms before execution. Never auto-move content out of README.

Rules:

  • Non-decision sections → docs/ with teaser. Exception: very short sections (< 5 lines, e.g., Acknowledgments, License) stay inline.
  • Teaser = 1-3 substantive sentences + → [Title](docs/X.md) link. The teaser IS the summary for anyone who doesn't click.
  • Contributing: inline or CONTRIBUTING.md — not docs/.
  • Add a back-to-top link for READMEs exceeding 300 lines.
  • Use reference-style link definitions at the bottom of the file for badge URLs.

Badge Selection

Choose badges based on the project's ecosystem and maturity. Up to 6 badges; fewer is fine when fewer apply.

Priority order (pick from top, stop at 6):

PriorityBadgeWhen to Include
1LicenseAlways
2Version / ReleaseAlways (npm, PyPI, crates.io, or GitHub release)
3Build / CI statusIf CI is configured
4DownloadsIf published to a package registry
5CoverageIf coverage reporting is set up
6Platform / ecosystemIf relevant (e.g., Agent Skills compatible, Node.js version)

Badge sources:

  • shields.io — the standard for most badges
  • GitHub Actions badge URLs — for CI status
  • Custom badges — only if shields.io does not cover the case

Format: Use reference-style links at the bottom of the README to keep the source markdown clean.

[![License: MIT][license-shield]][license-url]

<!-- at bottom of file -->
[license-shield]: https://img.shields.io/github/license/org/repo.svg
[license-url]: https://github.com/org/repo/blob/main/LICENSE

For copy-paste badge patterns organized by ecosystem, see references/badges.md.


Dark/Light Mode Logo

GitHub supports theme-aware images via the <picture> element. Always include this pattern when the project has a logo.

The pattern:

<picture>
  <source media="(prefers-color-scheme: dark)" srcset=".github/logo-dark.svg">
  <source media="(prefers-color-scheme: light)" srcset=".github/logo-light.svg">
  <img alt="project-name" src=".github/logo-light.svg" width="120">
</picture>

Rules:

  • Prefer SVG for logos (scales cleanly, small file size).
  • The <img> fallback uses the light variant (GitHub default theme).
  • Store logos in .github/ (per skill-forge asset placement convention: logo and screenshots are repo infrastructure, not skill runtime content).
  • If the project only has one logo, use the same path for both srcset values and the src — still include the <picture> wrapper so a dark variant can be added later without restructuring.
  • Width 80-120px for inline logos (icon/symbol marks). Wordmark logos (text-rendered SVGs like figlet/cfonts output) may use 400-500px width since they serve as both logo and project name. Never use full-width banners in Tier 1.
  • If no logo exists yet, generate one (see Step 4). Every delivered README includes a logo.

Fallback wordmarks:

  • If the project has no logo, generate logo candidates using --candidates N mode instead of silently picking one preset.
  • Present absolute file paths to the user for preview. Let them choose.
  • Use --random mode only when the user explicitly says "surprise me" or "just pick one".
  • For a visual gallery of all available presets and palettes, see docs/logo-gallery.md.
  • Prefer visually single-line wordmarks for README headers. If a preset reads like stacked block art or creates a double-title feel, switch to an inline treatment.
  • If the generated wordmark already renders the project name clearly, omit the duplicated <h1> by default unless the user explicitly wants both.
  • For preset selection rules and examples, see references/logo-generation.md and references/logo-examples.md.

GitHub-Native Formatting Decisions

Use GitHub-specific formatting when it improves comprehension, not because it exists.

For syntax patterns and deeper rules, see references/github-formatting.md.

Default patterns:

  • Relative links for docs/, sibling markdown files, and split reference material
  • Teaser + docs/ link for long non-decision content
  • Tables for structured data
  • Minimal HTML where Markdown is not enough (e.g., <picture> for dark/light logos)

Optional patterns:

  • Mermaid diagrams for architecture, flow, sequence, timeline, or dependency relationships
  • Task lists for roadmap or status
  • Footnotes for citations and side notes
  • Math expressions for technical projects that genuinely need formulas
  • Social proof elements such as contributor widgets or star counts

Rules:

  • Do not move decision-making content (Tier 2 sections) to docs/ — it must stay inline.
  • Use relative links when splitting a long README into docs/ or separate markdown files.
  • Add diagrams only when they explain faster than prose.
  • Add social proof only when the repo is public, the numbers are real, and the user wants it.
  • Prefer clarity over visual novelty.

docs/ Content Standard

docs/ exists to serve README. When a non-decision section is moved out of README, the full content goes to a docs/ file. readme-craft creates these files as part of README improvement — it does not manage or reorganize existing project documentation.

Boundary: docs/ is a human-facing layer. It must NOT be referenced by SKILL.md, references/, or any agent-facing instruction file. For skill repos: agent-relevant content belongs in SKILL.md + references/; docs/ is for humans who want depth beyond what README shows.

Naming: kebab-case by topic (how-it-works.md, configuration.md). Keep docs/ flat. Every file should be self-contained — readable without the README.

Scale: Most small projects need 0 docs. Don't create docs/ preemptively. Only create files when moving content out of README. If a project has no non-decision sections longer than ~15 lines, it doesn't need docs/.


Tone & Voice

When writing README content, follow these guidelines:

  • Address the reader as "you" — not "the user" or "one."
  • Refer to the software in third person — "readme-craft generates..." not "we generate..."
  • Value proposition over technical description — lead with what the reader gains, not what the software is.
  • Professional but direct — no exclamation marks, no emoji, no hype words ("revolutionary", "blazing fast").
  • Concise — if a sentence doesn't add information, cut it.

When improving an existing README, these guidelines are recommendations, not overrides. Preserve the author's existing voice unless they explicitly ask for a tone change.


Example Provenance

When including an Example section in a README:

  • If the example comes from a real run, keep paths, commands, and outputs specific.
  • If the example is a sample flow, say so explicitly.
  • Never present unverified repo URLs, release pages, docs links, or install commands as if they already exist.

Quality Checklist

Run the checklist in references/quality-checklist.md before delivering any README. Report failures to the user.

The checklist covers 6 dimensions: Structure (7), Content (13), Formatting (10), User Perspective (5), Completeness (6), Reader Lens (4) — 45 checks total. Dimensions 1-5 are structural; dimension 6 requires a mindset shift to first-time reader perspective.


References

This skill uses the following template and analysis files:

FilePurpose
assets/universal-readme.mdBase template for any OSS project. Contains all three tiers with placeholder markup.
assets/skill-readme.mdExtended template for AI agent skills. Adds Agent Skills badge, trigger phrases, npx skills add install, and "What's Inside" section.
references/badges.mdCopy-paste badge patterns for shields.io, organized by category (license, version, CI, downloads, coverage, platform, Agent Skills).
references/github-formatting.mdGitHub-native formatting patterns, overflow strategy, and rules for diagrams, footnotes, math, task lists, and social proof.
references/logo-generation.mdREADME fallback logo guidance: positioning, preset selection, runtime requirements, and when to use the local wordmark generator.
references/logo-examples.mdShort example mappings from project feel to recommended logo presets.
references/quality-checklist.md45-point quality checklist across 6 dimensions: structure, content, formatting, user perspective, completeness, reader lens.
references/gradient-palettes.md2026-curated gradient palette reference with 45 named gradients for logo and badge color selection.
references/comparison-screenshots.mdBefore/after comparison PNG generation via Playwright for README case studies.
references/github-metadata.mdGitHub repository metadata: About/description rules (≤350 chars), topic 3-tier selection, .github/repo-meta.yml format, gh repo edit workflow.
docs/logo-gallery.mdVisual gallery of all logo presets with rendered SVG previews, palette table, and selection guidance.

When generating a README, always start from the appropriate asset template file. Read it, fill its placeholders, then adjust sections based on the project's needs.

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.