Setup Readme
| This documentation was generated with the assistance of AI. Please report any inaccuracies. |
Create or refresh a repository’s root README.md by exploring what actually exists — build files, CI
workflows, quality-tool config, documentation, license, and source code — and composing only the sections that
real material supports.
Purpose
iru-setup-readme never invents version numbers, badge URLs, dashboard links, or example code that don’t
correspond to something actually present in the repository. It gathers project identity (repository/host,
description, license, build tool, current and latest-released versions), taking the stack from iru-explore’s
`Project type: line — reused from earlier in the conversation when available, otherwise obtained by invoking
iru-explore itself, so the manifest to project-type table lives in exactly one place; only when iru-explore
isn’t installed does it fall back to a minimal one-manifest check. Beyond the library and app stacks (Java/Maven,
Gradle/Kotlin, Vite+React, Angular, Hilla, Expo, Ionic, Android, Swift, plain TypeScript), it tailors sections
for macOS desktop apps (SwiftUI/AppKit), Windows desktop apps (WPF/WinUI 3/Windows Forms), Spring Boot (Java or Kotlin, Maven or Gradle KTS), Quarkus, Laravel, WordPress plugins and themes,
PrestaShop modules, plain Composer packages, NestJS, Next.js, FastAPI, Django, plain Python packages, command-line tools (Rust clap/Ratatui, Go Cobra/Bubble Tea, Swift ArgumentParser, .NET System.CommandLine) and plain Rust crates and Go modules. Identity is read from the file that owns it for
each stack: springboot-stack.yml/quarkus-stack.yml, gradle.properties, config/app.php (Laravel), the
WordPress plugin/theme headers, the PrestaShop module class, pyproject.toml ([project].name/version, requires-python, with framework versions from uv.lock), project.yml/Project.swift (macOS apps, adding the deployment target, UI framework and App Sandbox status rows), Directory.Build.props and the app *.csproj/Package.appxmanifest (Windows apps: <Version>, target framework, UI stack, Windows App SDK version, MSIX identity), or git tags. For Rust and Go it reads Cargo.toml ([package], , rust-version, publish) or go.mod (module path, go and toolchain lines, cmd/<bin>/); Swift and .NET command-line tools use Package.swift and Directory.Build.props/global.json.
Command-line tools (cli-tool (rust|go|swift|dotnet)) get their own treatment: status-table rows for the toolchain floor, argument parser, terminal-UI library and release targets; crates.io/docs.rs, pkg.go.dev, NuGet and GitHub-release badges (each only after a live check); a link to the generated CLI reference page; and an install section listing only the channels the release workflow really wires (Homebrew tap, cargo install, go install, Scoop/WinGet, dotnet tool install -g, or the release archive with SHA256SUMS and gh attestation verify) plus build from source. Plain rust/go projects get only identity, badges, docs links and a cargo add/go get snippet.
Desktop apps (macos-app, windows-app) get no dependency snippet: when a release workflow exists the README gets an "Install" subsection matched to what it publishes (a notarized DMG or Mac App Store link; a Windows zip, MSIX/.appinstaller, winget install or Microsoft Store link — store URLs as placeholders), followed by "Build and run locally" steps (xcodegen/xcodebuild/swift test for macOS; dotnet build/dotnet run/dotnet test --filter "TestCategory!=UI" and the .NET 10 SDK prerequisite for Windows).
Badges are only emitted for resources that exist: CI status, SonarCloud/SonarQube, npm, Maven Central, Swift
Package Index, Packagist, PyPI (Python libraries only) and WordPress.org (all only after a live check that the package or slug is published),
static PHP/Python/WordPress/PrestaShop requirement badges (plus FastAPI/Django framework badges), and a GHCR container-image badge taken from the workflow’s
actual images: value. The project status table grows extra rows (platforms, SDKs, Kotlin, PHP, Swift tools,
Node engine, TypeScript, framework, Distribution) only for the stacks they apply to. Documentation links cover the
Antora site, Maven/Gradle site report, Sonar dashboard, generated API docs (TypeDoc, Compodoc, Storybook, Dokka
including Spring Boot’s /api/kdoc/, phpDocumentor, DocC (Swift/macOS apps, from the workflow’s api/ copy step), DocFX (.NET/Windows desktop apps, when docfx.json exists), Sphinx, generated REST/gRPC/AsyncAPI docs and OpenAPI schemas for FastAPI/Django), a static-export
live site, registry/store pages and CHANGELOG.md.
Libraries get an Installation section (Maven, Gradle with an optional version-catalog form, npm plus pnpm/yarn
when the lockfile shows it, SwiftPM, Python via uv add/pip install when live on PyPI, Composer). Services, web apps, plugins and modules get a Getting
Started section instead, built only from commands the repository really defines: Spring Boot (bootRun/
spring-boot:run, the local profile, Actuator health, bootBuildImage), Quarkus (dev mode, Dev UI, packaged
jar, native, container image), Laravel (composer run setup/dev, optional Sail), WordPress (WordPress.org,
GitHub Release zip, WPackagist, wp-env), PrestaShop (module zip upload), NestJS, Next.js, FastAPI (uv sync, uv run fastapi dev, Swagger UI at /docs) and Django (manage.py migrate/runserver, admin, schema docs), plus a pull snippet
for a released GHCR image. The "how it works" section for a service is a curl against a real route; it is
omitted entirely when there is no meaningful source yet. A WordPress readme.txt is read for facts but never
written.
The skill announces whether it is creating the README from scratch or updating an existing one. If
README.md already exists, it warns the user, preserves any hand-written section it can’t regenerate (e.g.
"Contributing"), flags where the file contradicts this run’s choices (stale Sonar badges under sonar: none, a
github.io link under pages: no), and shows the proposed content as a diff before writing. A generator’s stock
README (Laravel, create-next-app, nest new, quarkus create) is recognised as boilerplate, so Replace is
recommended over Update. The user picks Update (merged draft, hand-written sections kept), Keep as is (file
untouched; the report lists each mismatch), or Replace (only generated sections written). Under ci: no /
pages: no it omits CI badges and never links a github.io site that nothing publishes, pointing at the docs/
sources and the local Antora build command instead.
Plugin
Shipped by the iru-core plugin of the ai-catalog marketplace (install with /plugin install iru-core@ai-catalog; see Plugins).
Invocation
/iru-setup-readme
/iru-setup-readme sonar: none
/iru-setup-readme
sonar: none
ci: no
pages: no
on-existing: update
Inputs
| Argument | Required | Description | Default |
|---|---|---|---|
|
No |
|
Detected from the repository’s own Sonar config. |
|
No |
|
Detected from the workflows present. |
|
No |
|
Detected from whether a workflow publishes to |
|
No |
|
|
other |
No |
Ignored (e.g. |
N/A |
(all other inputs) |
No |
Everything else is derived by exploring the repository directly
( |
Not applicable. |
Outputs
-
README.mdat the repository root — newly created, or updated or replaced after the user’s choice. -
If
README.mddidn’t previously exist: it is written directly, no approval step needed. -
If
README.mdalready existed: the full proposed content (or diff) is shown first, together with the hand-written sections that were preserved and any contradiction with this run’ssonar/ci/pageschoices. The file is only written on Update or Replace (from the user oron-existing); under Replace the preserved hand-written sections are dropped; under Keep as is it is left untouched. Any partial-apply request is handled by revising the draft in free text before writing. -
A closing report that starts by restating the mode (created from scratch, or updated / kept as is / replaced and whether that came from the user or
on-existing; under Keep as is, each mismatch with this run’s choices), naming which sections were included versus omitted and why (e.g. no Installation section because no build/package config was found), any fact that had to be inferred rather than confirmed, and a reminder to double-check the "How It Works"/example section specifically since it depends on this skill’s reading of the current API.
Execution flow
Dependencies
Invokes
-
Explore — Step 2, only when no
iru-explorereport with aProject type:line is already available in the conversation: invoked with no ticket argument to obtain the project type, build tool, and framework instead of re-deriving them from manifests. Wheniru-exploreisn’t installed, a minimal one-manifest check stands in.
Invoked by
-
Setup Java Library Repository — Step 8, the last of its six delegated skills, runs
iru-setup-readmewith the resolved shared args (sonar,ci,pages, andon-existingwhen it was supplied). -
Setup TypeScript Repository — Step 10, root README.md, via the
iru-isolated-skill-executoragent. -
Setup Android Repository — Step 9, last in its chain, runs
iru-setup-readmeviairu-isolated-skill-executorwith the resolved shared args (sonar,ci,pages, andon-existingwhen it was supplied). -
Setup Swift Repository — Step 10, last in its chain, runs
iru-setup-readmeviairu-isolated-skill-executorwith the resolved shared args (sonar,ci,pages, andon-existingwhen it was supplied). -
Setup Java Spring Boot — Step 9, README.md.
-
Setup PHP Repository — Step 10, root README.md, via the
iru-isolated-skill-executoragent. -
Setup Quarkus Repository — Step 8, root README.md, via the
iru-isolated-skill-executoragent. -
Setup KMP Repository — Step 9, last in its chain, runs
iru-setup-readmeviairu-isolated-skill-executorwith the resolved shared args (sonar,ci,pages, andon-existingwhen it was supplied). -
Setup CLI Repository — Step 9, last in its chain, runs
iru-setup-readmeviairu-isolated-skill-executorwith the resolved shared args (sonar,ci,pages, andon-existingwhen it was supplied).
Related agents
-
Explore(see Agents) — used in Step 7 to locate the main source entry points before reading them directly, rather than reading the whole source tree — the same agent theiru-exploreskill itself uses for this kind of broad structural search.
Source
SKILL.md on GitHub — the file this page was generated from.