From nolte-shared
Audits the repository's `README.md` against the canonical-language file under spec/project/readme-structure/ and, with per-item user approval, scaffolds or patches the file: H1 + tagline, CI badges, six required sections in order (Purpose, Usage, Structure, Related repositories, Status, License), the consumer-first ordering rule, the ≤200-line length budget, and link rules. Three operations: `audit` (read-only conformance report), `scaffold` (greenfield), `patch` (additive fix). Invoke when the user asks to apply, audit, scaffold, or patch the README against the spec; also handles equivalent German-language requests. Don't use for docs/ page content (`audience-doc-author`), MkDocs nav (`mkdocs-structure-apply`), Vale prose linting (`prose-vale-curator`), or the audience artefact (`audience-identify`). Supports resume on re-invocation per `spec/claude/resumable-work/`.
How this skill is triggered — by the user, by Claude, or both
Slash command
/nolte-shared:readme-structure-applyThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Operationalises `spec/project/readme-structure/<canonical_language>.md` inside the current repository. The skill audits the repository-root `README.md` against the spec's section skeleton, the consumer-first ordering rule, and the length / link / language requirements; with explicit per-item user consent it scaffolds a fresh README or patches a single finding at a time on an existing one.
Operationalises spec/project/readme-structure/<canonical_language>.md inside the current repository. The skill audits the repository-root README.md against the spec's section skeleton, the consumer-first ordering rule, and the length / link / language requirements; with explicit per-item user consent it scaffolds a fresh README or patches a single finding at a time on an existing one.
When the spec isn't present in the target repository, fall back to the copy shipped by the nolte-shared plugin (read it at runtime from the plugin install path). Never invent requirements that don't appear in the spec.
Per spec/claude/skill-vs-agent/ §Decision dimensions, this capability is a skill because:
prose-vale-curator) all surface in the conversation so the user can decide.audience-doc-author for the tagline / Purpose / Usage prose authoring once the section containers exist, dispatches prose-vale-curator to Vale-check the result, and routes to audience-identify when the README needs an ## Audiences section but the audience artefact doesn't exist yet; per spec/claude/skill-vs-agent/ §Hybrid pattern, the orchestrator is always a skill.mkdocs-structure-apply, project-structure-apply, docs-audience-tracks-apply; portfolio-wide consistency favours the same artefact type.Detect the user's language from their message and respond in it. The README itself is English-only per spec/project/readme-structure/ §File and language ("MUST be written in English, regardless of the primary working language of the maintainers"); never produce a README.de.md or similar. Multilingual content lives under docs/<lang>/.
Declared tools: Read, Write, Edit, Glob, Grep, Bash.
Read / Glob / Grep for repository inspection (README.md, .github/workflows/, LICENSE, pyproject.toml / package.json for proper-noun discovery, neighbouring portfolio repos for the related-repositories section).Write for scaffold (a fresh README.md doesn't exist yet) and Edit for patch (a section is added or fixed in an existing README).Bash is necessary for two read-only checks: counting README lines (the spec sets a ~200-line budget) and verifying CI badge URLs resolve to actual workflow files in .github/workflows/. No destructive bash.WebFetch / WebSearch: the spec is the only source of truth; primary-proper-noun links (Claude Code, Home Assistant, Vale) come from the user or are surfaced as # TODO markers rather than auto-fetched.Before doing anything:
git rev-parse --is-inside-work-tree).spec/project/readme-structure/<canonical_language>.md — either in the target repo or via the nolte-shared plugin. If neither is reachable, stop and ask the user which spec source to use.README.md absent at repo root → scaffold (default).README.md present → patch (or audit when the user explicitly asks for a read-only check)..claude-plugin/plugin.json, .github/workflows/_*.yml (callable workflows), custom_components/, styles/, pyproject.toml, package.json. The type informs the ## Structure section's content but doesn't change the section skeleton itself.README.md. If the file is dirty, report and ask whether to stash, commit, or abort — never overwrite uncommitted work.audit (read-only)Walk through the spec's Acceptance Criteria one item at a time, classify each finding as pass, missing, or drift. Group findings by spec area:
README.md at repo root, English-only, passes Vale (delegate the Vale check to prose-vale-curator rather than running Vale here — surface the count, not the alerts).# <repo-name> H1 matching the GitHub repo name, CI badges under the H1 for every merge-gating workflow, one-to-three-sentence tagline naming what the repo is and who it's for (no marketing language), primary proper nouns linked on first mention, tagline ≤ 280 characters.## Purpose, ## Usage (or ## Installation or ## Getting started), ## Structure (when layout non-obvious), ## Related repositories (when peers exist), ## Status, ## License (when LICENSE ships). Verify presence and order; report sections in wrong order as drift.Purpose, Usage) precede contributor sections (Structure, Status, License); dogfooding instructions live as ### sub-sections of ## Usage, never as top-level sections.LICENSE linked via relative path; cross-repo links use absolute https://github.com/<org>/<repo> URLs; CI badges point at the same repo's workflows, not copied-over from elsewhere.Audit is read-only — never autofix during audit.
scaffold (greenfield: README.md absent)For each step below, confirm with the user per section before writing.
README.md at repo root with the following structure:
# <repo-name> H1 — derived from the directory name or the name: field of .claude-plugin/plugin.json / pyproject.toml / package.json..github/workflows/ that gates merges to develop (detected via if: github.ref == 'refs/heads/develop' or branches: [develop]). One badge per line.# TODO markers: the deliverable shape and the intended consumer audience. The audience marker routes to audience-identify when the artefact exists, otherwise to the user.## Purpose — empty body with a placeholder paragraph ("Replace this with two to six bullets describing the problem this repository solves."); dispatch audience-doc-author for the body authoring as a follow-up.## Usage (default) or ## Installation / ## Getting started (when the repository type suggests one of the alternatives) — empty body with a placeholder pointing at the chosen install path, plus a ### Local development sub-section stub when the repo carries a Taskfile.yml.## Structure (only when the repo layout is non-obvious — Claude Code plugins, multi-component monorepos, HA integrations) — empty tree-style placeholder with # TODO markers for the per-entry comments.## Related repositories (only when neighbouring portfolio repos exist) — empty bullet list with # TODO markers for peer-link + description.## Status — single-line placeholder ("Early stage." or similar) with a # TODO marker.## License — [<SPDX identifier>](LICENSE) link plus copyright holder line, both derived from the LICENSE file's first few lines.audience-doc-author for the Purpose / Usage / Structure body authoring and to prose-vale-curator for the final Vale check.patch (additive: README.md present)For each missing or drift finding from a prior audit, propose the exact change and ask the user to approve it before writing. Don't bundle unrelated changes into a single approval step.
# TODO marker for the prose; route the user to audience-doc-author for the body..git/config remote.origin.url.github.com/<org>/<repo>/actions/workflows/<file>.yml and the workflow file must exist in .github/workflows/.LICENSE linked via absolute URL: propose the relative-link replacement.docs/ and route the user to mkdocs-structure-apply or audience-doc-author as appropriate.## Usage as a ### Local development sub-section.After every successful write, route the user to prose-vale-curator for the post-edit Vale check; never claim "Vale-clean" without dispatching the curator.
The skill returns to the user, in this order:
audit / scaffold / patch), absolute path to the target README.md, detected repository type.pass / missing / drift) and a one-line evidence snippet.scaffold / patch): list of changes, one line per change, with rationale linking back to the spec line.scaffold / patch): explicit user-decision point; nothing is written until the user confirms.audience-doc-author to fill in # TODO body markers, dispatch prose-vale-curator to Vale-check the result, route to audience-identify if the README needs an audience reference but the artefact doesn't exist, commit the edits, open the PR via pull-request-create.README.md, every other section's content must be carried over verbatim — a patch that truncates or omits existing prose is a data-loss bug, not a style issue.README.md has unstaged or staged-but-uncommitted changes when the skill starts, it stops and asks the user to stash, commit, or abort — never overwrite a dirty file; confirm the precondition check runs before any Write or Edit..github/workflows/; a badge pointing at a renamed or deleted workflow silently becomes a broken badge in the rendered README — always re-check workflow file existence after any badge addition.Per spec/claude/resumable-work/, this skill is resumable: true. State is persisted to .resume/readme-structure-apply/<run-id>.yml after every successful user-approval gate and after each named phase boundary. On re-invocation, scan that directory for files with status: in_progress whose inputs: snapshot matches the current invocation; if one matches, prompt the operator with Resume run <run_id> from phase <phase> (last checkpoint <last_checkpoint_at>)? [resume / start-new / discard]. The state-file envelope (schema_version, run_id, inputs, phase, decisions[], status, ...) and the fail-closed semantics on schema or YAML errors are load-bearing in the spec; don't duplicate those rules here.
# TODO markers. Body authoring is delegated to audience-doc-author.README.md (no README.de.md, no inline German prose). The spec's §File and language MUST is hard.# TODO marker and ask the user to provide the canonical upstream URL.spec/project/readme-structure/<canonical_language>.md; fall back to the copy shipped by the nolte-shared plugin only when the target repo lacks one.prose-vale-curator after a scaffold or patch; never claim "Vale-clean" without dispatching the curator.spec/project/readme-structure/ — the canonical authoritative spec this skill operationalisesspec/project/prose-style/ — the Vale rule set the resulting README must pass; this skill delegates the actual check to prose-vale-curatorspec/project/audience-identification/ — the audience artefact the README references for "intended consumers"spec/claude/skill-vs-agent/ — the skill-vs-agent decision dimensions that justify this artefact as a skill, not an agentGuides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.
npx claudepluginhub nolte/claude-shared --plugin nolte-media