AI Catalog

This documentation was generated with the assistance of AI. Please report any inaccuracies.

AI Catalog is a collection of Claude Code Skills — reusable, version-controlled playbooks for common software engineering workflows. Instead of re-explaining the same process to Claude in every project (how this team bootstraps a Java library, how a pull request should be reviewed, how release notes get written), each workflow is captured once as a SKILL.md file and invoked on demand with a slash command such as /iru-plan or /iru-pr-review.

Why this exists

Prompting an AI assistant to repeat a multi-step process consistently is hard: the steps drift between sessions, edge cases get forgotten, and every teammate ends up with a slightly different mental model of "how we do X". A skill fixes that by writing the procedure down once — what to check first, what to skip, what "done" looks like — so any repository that adopts it gets the same behavior every time it’s invoked.

Core concepts

A skill

Each skill lives in its own directory under .claude/skills/ and contains a single SKILL.md file with:

  • A short description used by Claude Code to decide when the skill is relevant.

  • Step-by-step instructions written for an agent to follow, including what to survey before acting, what to leave untouched, and how to report back.

Skills in this catalog range from small, single-purpose checks (iru-check-license, iru-java-test) to orchestrators that call other skills in sequence.

An agent

Several skills in this catalog spawn a sub-agent through the Agent tool, to run a sub-task in an isolated context (so its detailed output — a full test log, a static-analysis report, an entire nested skill run — doesn’t clutter the main conversation) or to search the codebase without derailing the current flow. This repository defines three custom agents under .claude/agents/ for its most-duplicated sub-agent shapes:

  • iru-gate-runner — runs a single verification/quality-gate skill (tests, coverage, code-quality/lint, license headers, doc-comment audits, security scans, a full build), optionally diffs it against a baseline, and reports back only a compact summary.

  • iru-isolated-skill-executor — runs one named skill end to end in a completely fresh context so an earlier exploration/planning transcript can’t bias it, while the caller keeps running afterward.

  • iru-change-summarizer — fans out over a git commit/tag range and returns only the user-facing changes.

Skills that need ad hoc context isolation beyond those three shapes still use Claude Code’s built-in agent types: the Explore agent (a fast, read-only search agent) is used explicitly by the iru-explore skill, and the general-purpose agent (Claude Code’s default when no specific type is named) covers one-off cases like bootstrapping the iru-setup-antora skill mid-run.

See Agents (built-in types) and Gate Runner, Isolated Skill Executor, Change Summarizer (custom agents) for detail on where and why each is used.

A CLAUDE.md file

CLAUDE.md is a plain markdown file that Claude Code loads automatically, without being invoked, at the start of every session — unlike a skill or agent, which only act when called on. It holds the persistent facts Claude would otherwise need re-explaining every session: build/test commands, coding conventions, architectural notes, and "always/never do X" rules specific to a project or a person.

Claude Code reads it from several locations at once (project root, a personal ~/.claude/CLAUDE.md, nested subdirectory files, and an enterprise-managed policy file, if any) and concatenates them rather than picking one — see The CLAUDE.md file for exact locations, precedence, and how to create or update one without letting it bloat the context window.

A plugin

A plugin is not a new kind of artifact alongside skills, agents, and CLAUDE.md — it’s a packaging and distribution mechanism for them. A plugin is a directory (with a .claude-plugin/plugin.json manifest) that can bundle any combination of skills, custom agents, slash commands, hooks, and MCP server configs into one installable, versioned unit, published to a marketplace (a private, organization-internal one or a public one) and installed into a repository with /plugin install instead of copying files by hand.

This repository does not currently package itself as a plugin — its skills are adopted by copying the .claude/skills/<name>/ directories directly — but Plugins and Packaging and distributing skills, agents, and CLAUDE.md cover when a plugin is worth the extra packaging step instead.

Further guides

Beyond this catalog’s own skills, the following pages cover the underlying artifacts (CLAUDE.md, skills, agents, plugins) more generally: how to create or update each one, how to write instructions for them that get good, consistent results without wasting context, and how they differ across AI coding assistants.

Guide Covers

The CLAUDE.md file

What CLAUDE.md is for, every location Claude Code loads one from, precedence between them, and how to create or update one (including /init) without bloating context.

Common workflows

A closer look at the three workflows a person runs most often — the typical development cycle starting from a ticket, filing a ticket before work begins, and generating a release — each with a fuller diagram than the one on this page.

Creating and updating skills and agents

Where skills and agents live, when to reach for one versus the other, and the fastest reliable way to draft a new one — asking Claude Code itself, grounded in existing examples.

Creating GitHub issues and Jira tickets

What information iru-create-github-issue/iru-create-jira-ticket ask for, how the drafted ticket is structured (including the estimated-difficulty assessment), and which skills run behind the scenes to produce it.

Extending the skills and agents catalog

Where this catalog’s pipelines are already built to grow by convention (the iru-code pipeline’s language/framework registry) versus where a single skill still hardcodes one stack (release generation, repository bootstrap) — and what’s involved in adding a new language, stack, tracker, or quality gate to each.

Plugins

What a plugin bundles, its manifest/directory layout, and how marketplaces (private or public) distribute one across repositories.

Authoring effective instructions

How to phrase instructions in a SKILL.md, agent definition, or CLAUDE.md — direct, concise, step structured — and how to keep the context window from filling with information that degrades results.

Packaging and distributing skills, agents, and CLAUDE.md

Copying files into .claude/ versus packaging as a plugin distributed via a marketplace: the tradeoffs and when each is the better fit.

Claude Code vs. GitHub Copilot vs. OpenAI Codex

How CLAUDE.md, skills, agents, and plugins map onto GitHub Copilot’s and OpenAI Codex’s equivalent files and features, and where the underlying models genuinely differ.

Skills reference

Name Group Purpose Detail page

iru-build-docs

Repository Maintenance

Build the existing Antora documentation site as-is, scaffolding it first via iru-setup-antora if needed.

Build Docs

iru-check-license

Repository Maintenance

Verify (and backfill) license headers on source/test files against the repository’s actual license.

Check License

iru-check-security

Repository Maintenance

Scan for accidentally committed secrets via detect-secrets, maintaining a .secrets.baseline.

Check Security

iru-code

Issue-to-PR Development Cycle

Execute implementation_plan.md end to end, one task group at a time, dispatching each to iru-code-one-task-group.

Code

iru-code-one-task-group

Issue-to-PR Development Cycle

Implement one plan task group, dispatching each task to its language’s <key>-code-one-task-group skill.

Code One Task Group

iru-create-github-issue

Ticket Intake

Draft and file a new GitHub issue, grounded in the codebase and confirmed with the user before creation.

Create GitHub Issue

iru-create-jira-ticket

Ticket Intake

Draft and file a new Jira ticket via connected Jira MCP tools, the Jira counterpart to iru-create-github-issue.

Create Jira Ticket

iru-database-code-one-task

Database Development Tooling

Generate (and, if a matching MCP allows it, execute) the queries a single database plan task calls for.

Database Code One Task

iru-database-code-one-task-group

Database Development Tooling

Implement a bucket of database tasks sequentially, one task at a time — no baseline or bucket-wide validation.

Database Code One Task Group

iru-dotnet-code-one-task

.NET Development Tooling

Implement a single .NET plan task’s code and tests only — validation is handled by iru-dotnet-code-one-task-group.

.NET Code One Task

iru-dotnet-code-one-task-group

.NET Development Tooling

Implement a bucket of .NET tasks (in parallel where safe) and validate the whole bucket once.

.NET Code One Task Group

iru-dotnet-code-quality

.NET Development Tooling

Run StyleCop.Analyzers/CA Roslyn analyzers via a SARIF-logged build and summarize every issue found.

.NET Code Quality

iru-dotnet-coverage

.NET Development Tooling

Run Coverlet via dotnet test and report the exact measured coverage percentage for target class(es).

.NET Coverage

iru-dotnet-docfx

.NET Development Tooling

Audit and complete XML doc-comment coverage for given types, then attempt a DocFX build.

.NET DocFX

iru-dotnet-generate-all-tests

.NET Development Tooling

Find every .NET class with no tests or under 80% coverage and generate/extend tests until it clears the bar.

.NET Generate All Tests

iru-dotnet-test

.NET Development Tooling

Run the .NET test suite via dotnet test, scoped to a class/method/namespace/trait selector.

.NET Test

iru-explore

Issue-to-PR Development Cycle

Read-only research pass over the codebase, optionally grounded in a GitHub issue or Jira ticket.

Explore

iru-generate-skill-docs

Catalog Tooling

Regenerate this documentation site itself from the current set of skills and agents on disk.

Generate Skill Docs

iru-issue

Issue-to-PR Development Cycle

End-to-end kickoff for a tracked ticket: branch, explore, plan, implement, open PR, review.

Issue

iru-java-code-one-task

Java Development Tooling

Implement a single Java plan task’s code and tests only, against its bundled Java code agreements — validation is handled by iru-java-code-one-task-group.

Java Code One Task

iru-java-code-one-task-group

Java Development Tooling

Implement a bucket of Java tasks (in parallel where safe) and validate the whole bucket once.

Java Code One Task Group

iru-java-code-quality

Java Development Tooling

Run Checkstyle/PMD/SpotBugs and summarize every issue found, grouped by tool.

Java Code Quality

iru-java-coverage

Java Development Tooling

Run JaCoCo and report the exact measured coverage percentage for target class(es).

Java Coverage

iru-java-generate-all-tests

Java Development Tooling

Find every Java class with no tests or under 80% coverage and generate/extend tests until it clears the bar.

Java Generate All Tests

iru-java-javadoc

Java Development Tooling

Audit and complete Javadoc coverage for given classes, then verify it builds cleanly.

Java Javadoc

iru-java-springboot-code-one-task

Spring Boot Development Tooling

Implement one Spring Boot plan task — module resolved first, bundled best-practice reference, unit tests only.

Java Spring Boot Code One Task

iru-java-springboot-code-one-task-group

Spring Boot Development Tooling

Implement a bucket of Spring Boot tasks and validate it once — owns module boundaries and integration tests.

Java Spring Boot Code One Task Group

iru-java-springboot-performance-tests

Spring Boot Development Tooling

Generate JMeter load tests for a service’s main happy paths, correlating response time, CPU, and memory against concurrency.

Java Spring Boot Performance Tests

iru-java-test

Java Development Tooling

Run the JUnit suite via Surefire, scoped to a class/method/package/tag selector.

Java Test

iru-jira-custom-context

Ticket Intake

Extension point: gather organization-specific context for a Jira ticket, called by iru-create-jira-ticket.

Jira Custom Context

iru-knowledge-briefing

Knowledge Base Management

Summarize the most relevant agreements/pending tasks about a subject, scoped by person/meeting if given.

Knowledge Briefing

iru-knowledge-compact

Knowledge Base Management

Collapse duplicate pending tasks and close out agreements whose tracked issue is already done.

Knowledge Compact

iru-knowledge-complete

Knowledge Base Management

Mark one pending agreement/task completed: check off its agreement item and delete its pending file.

Knowledge Complete

iru-knowledge-process-inbox

Knowledge Base Management

File knowledge/inbox transcriptions into meetings, people profiles, agreements, and pending tasks.

Knowledge Process Inbox

iru-knowledge-setup

Knowledge Base Management

Bootstrap the knowledge/ directory structure (inbox, meetings, people, agreements, pending).

Knowledge Setup

iru-knowledge-to-issue

Knowledge Base Management

Convert a pending/not-completed agreement into a GitHub issue via iru-explore + iru-create-github-issue.

Knowledge to Issue

iru-knowledge-to-jira

Knowledge Base Management

Convert a pending/not-completed agreement into a Jira ticket via iru-explore + iru-create-jira-ticket.

Knowledge to Jira

iru-plan

Issue-to-PR Development Cycle

Write a concrete, reviewable implementation_plan.md, tagging each task’s language/framework.

Plan

iru-pr-description

Pull Request Lifecycle

Draft a PR description from the real diff, and optionally open/update the pull request.

PR Description

iru-pr-review

Pull Request Lifecycle

Review an open pull request against the linked ticket’s intent and this codebase’s conventions.

PR Review

iru-release

Repository Maintenance

Cut a release branch, bump versions, draft release notes/changelog, and open the release PR.

Release

iru-setup-antora

Repository Bootstrap

Scaffold a new Antora documentation site (antora.yml, playbook, starter pages) or fill gaps in an existing one.

Setup Antora

iru-setup-changelog

Repository Bootstrap

One-time bootstrap of CHANGELOG.md, backfilled from git tags/GitHub Releases.

Setup Changelog

iru-setup-java-github-workflows

Repository Bootstrap

Scaffold/update the develop.yml/main.yml/sync.yml GitHub Actions CI/CD pipeline.

Setup Java GitHub Workflows

iru-setup-java-gitignore

Repository Bootstrap

Create or refresh the root .gitignore for a Java project.

Setup Java Gitignore

iru-setup-java-library

Repository Bootstrap

Generate pom.xml and the standard Maven source layout for a new Java library.

Setup Java Library

iru-setup-java-library-repository

Repository Bootstrap

Orchestrator: bootstrap a brand-new Java library repository end to end in one pass.

Setup Java Library Repository

iru-setup-java-springboot

Spring Boot Service Bootstrap

Orchestrator: bootstrap a brand-new hexagonal Spring Boot service repository end to end in one pass.

Setup Java Spring Boot

iru-setup-java-springboot-apis

Spring Boot Service Bootstrap

Set up the apis/ contract tree and the OpenAPI/protobuf/GraphQL/AVRO/AsyncAPI generators that read it.

Setup Java Spring Boot APIs

iru-setup-java-springboot-github-workflows

Spring Boot Service Bootstrap

Scaffold the build.yml/deploy.yml/undeploy.yml workflows, with keyless OIDC cloud authentication.

Setup Java Spring Boot GitHub Workflows

iru-setup-java-springboot-modules

Spring Boot Service Bootstrap

Scaffold the hexagonal source tree: domain ports, adapters, use cases, profiles, and an ArchUnit test.

Setup Java Spring Boot Modules

iru-setup-java-springboot-platform

Spring Boot Service Bootstrap

Generate the OpenTofu infrastructure-as-code deploying the service to AWS or Google Cloud.

Setup Java Spring Boot Platform

iru-setup-java-springboot-pom

Spring Boot Service Bootstrap

Generate the multi-module Maven reactor — a root pom holding every version, plus one pom per module.

Setup Java Spring Boot Poms

iru-setup-java-springboot-testcontainers

Spring Boot Service Bootstrap

Write one compose.yaml and the Testcontainers harness that launches it, shared by local runs and CI.

Setup Java Spring Boot Testcontainers

iru-setup-readme

Repository Bootstrap

Create or refresh the root README.md from what actually exists in the repository.

Setup Readme

iru-update-docs

Repository Maintenance

Bring the Antora documentation module up to date with changes already made to the code.

Update Docs

iru-update-java-springboot-documentation

Spring Boot Service Bootstrap

Create or refresh a Spring Boot service’s own documentation pages, derived from its actual code.

Update Java Spring Boot Documentation

Agents reference

This repository defines three custom agents, all grouped under Sub-Agent Infrastructure; the built-in agent types it also relies on (Explore, general-purpose) have no SKILL.md-style file of their own and are instead described together in Agents.

Name Purpose Detail page

iru-change-summarizer

Fan out over a git commit/tag range and return only the user-facing changes.

Change Summarizer

iru-gate-runner

Run a single verification/quality-gate skill and report back only a compact summary, optionally vs. a baseline.

Gate Runner

iru-isolated-skill-executor

Run one named skill end to end in a fresh context, so the caller can keep running afterward.

Isolated Skill Executor

Purpose groups

Repository Bootstrap

Scaffolding a brand-new repository’s build, docs, CI/CD, and top-level files from nothing, so a new Java library starts out matching the same conventions as every other repository in the catalog.

Reach for this group when standing up a brand-new repository — a one-time pass, not something you’d run again once the repository already exists. iru-setup-java-library-repository is the single entry point that runs the rest in order; each one also works standalone to fill a single gap in a repository that already has some of this in place (e.g. just /iru-setup-antora to add docs to a repository that already has a pom.xml).

Spring Boot Service Bootstrap

Standing up a brand-new Spring Boot service — as opposed to a library — with Domain-Driven Design and hexagonal (ports and adapters) architecture imposed from the first commit: a Maven multi-module reactor, a contract-first API layer, reproducible integration tests, infrastructure-as-code, CI/CD, and a documentation page set derived from the code.

Reach for this group when starting a deployable microservice, and reach for Repository Bootstrap instead when starting a publishable library — the two differ in more than scale. A library is signed and published to Maven Central; a service is built into a container image, deployed to a cloud with OpenTofu, and can be torn down again.

iru-setup-java-springboot is the single entry point and the only member that asks the user anything: it interviews once, writes the answers to a springboot-stack.yml manifest, and every other member reads that manifest back. Each also runs standalone against an existing service to fill one gap — adding a database adapter, a new API contract, or another deployment environment.

The architecture this group imposes is deliberately not configurable. Dependencies point inward only — domain depends on nothing, application sees only domain, each infrastructure and api adapter sees only domain (plus application for the inbound side), and boot is the composition root that wires everything. That direction is enforced twice over: by maven-enforcer-plugin bannedDependencies rules at module granularity, and by an ArchUnit test at package granularity. Every dependency version is declared in the root pom.xml and nowhere else, and Java 21 is the enforced minimum.

Ticket Intake

Turning a rough idea, bug report, or request into a well-formed, tracked ticket — a GitHub issue or a Jira ticket — before the Issue-to-PR Development Cycle picks it up.

Reach for one of these when the work doesn’t have a ticket yet. Neither is required — a ticket can always be filed by hand, or /iru-issue//iru-plan can work from a free-form description instead — but both skills ground the draft in the actual codebase (via iru-explore) and ask for the same context (purpose, links, files, related tickets, due date, importance) so what lands in the tracker is immediately actionable, plus an agent-assessed estimated difficulty folded into the draft.

  • iru-create-github-issue — drafts and files a GitHub issue via gh issue create, matched against this repository’s actual label set.

  • iru-create-jira-ticket — drafts and files a Jira ticket via connected Jira MCP tools, resolving the target project and issue type against the real Jira configuration; supports an optional epic assignment and delegates to iru-jira-custom-context for organization-specific context.

  • iru-jira-custom-context — extension point called by iru-create-jira-ticket to gather whatever organization-specific context (a required custom field, team ownership, customer/account, environment, compliance classification) a given Jira workflow needs, beyond the universal questions the caller already asks. Not useful standalone — it exists to be edited in place and invoked by that caller.

Issue-to-PR Development Cycle

Taking a piece of work from "described" — a tracked ticket (a GitHub issue or a Jira ticket), or a task you describe yourself — to an implemented, open pull request.

This is the group to reach for on a day-to-day basis: picking up a ticket or an ad hoc task and carrying it through branch creation, research, planning, and implementation without re-explaining that process each time. iru-issue is the single entry point for the full pipeline; iru-explore and iru-plan are also commonly run individually (/iru-explore, /iru-plan) ahead of, or instead of, the full /iru-issue flow. iru-code itself doesn’t implement anything directly — it dispatches each of iru-plan’s dependency-aware task groups, in order, to `iru-code-one-task-group, which resolves each task’s language and delegates to whichever Java, .NET, or Database Development Tooling group skill matches, and brackets the whole run with quality and security baselines (Repository Maintenance).

  • iru-issue — orchestrator: branch, explore, plan, implement, open PR, review — for a tracked ticket.

  • iru-explore — read-only research pass over the codebase, optionally grounded in a GitHub issue or Jira ticket.

  • iru-plan — writes a concrete, reviewable implementation_plan.md, grouping tasks by dependency and tagging each with the language/framework key a downstream <key>-code-one-task-group skill should handle it with.

  • iru-code — executes implementation_plan.md end to end, one task group at a time, via iru-code-one-task-group, and gates completion on quality/security baselines.

  • iru-code-one-task-group — implements one task group, resolving each task’s language and dispatching to its matching <key>-code-one-task-group skill (e.g. iru-java-code-one-task-group, iru-dotnet-code-one-task-group, iru-database-code-one-task-group) — or a best-effort direct implementation if none matches.

Java Development Tooling

Implementing a single plan task end to end, plus the point-in-time checks (tests, coverage, lint, Javadoc) a person or another skill can run against a Maven/Java project any time — each reporting real, measured results rather than an estimate.

iru-code-one-task-group dispatches every task-group bucket tagged (or defaulted to) java to iru-java-code-one-task-group, which captures one quality baseline for the bucket, runs iru-java-code-one-task once per task (in parallel when the group allows it), then validates the whole bucket once via the other four skills in this group. Reach for those four directly, any time, while iterating on code day to day — before committing, before opening a PR, or just to check where a class currently stands. You rarely need to invoke any of them yourself during the Issue-to-PR Development Cycle.

  • iru-java-code-one-task-group — implements a bucket of Java tasks (in parallel where safe) and validates the whole bucket once: license headers, Javadoc, tests, coverage, and a quality regression check.

  • iru-java-code-one-task — implements a single task’s code and tests only; called once per task by iru-java-code-one-task-group. It ships its own reference/ library of this catalog’s general Java code agreements — var type inference and final wherever possible (classes and methods included), the public-to-private declaration order every type follows with overloads kept contiguous, immutability and narrow visibility, exception and null conventions, full Javadoc, and JUnit test conventions — read by progressive disclosure so a one-method change doesn’t pay for all of it. The rules are the default for new code: a file that consistently does otherwise wins, and the divergence is reported instead of silently converted.

  • iru-java-test — runs the JUnit suite via Surefire, scoped to a class/method/package/tag selector.

  • iru-java-coverage — runs JaCoCo and reports the exact measured coverage percentage for target class(es).

  • iru-java-code-quality — runs Checkstyle/PMD/SpotBugs and summarizes every issue found, grouped by tool.

  • iru-java-generate-all-tests — finds every class with no test class or under 80% line coverage (via iru-java-coverage) and generates/extends tests until it clears the bar, across the whole codebase in one pass.

  • iru-java-javadoc — audits and completes Javadoc coverage for given classes, then verifies it builds cleanly.

Spring Boot Development Tooling

The java-springboot language/framework backend for the iru-code pipeline — the pair of skills that implement plan tasks in a DDD/hexagonal Spring Boot service, as opposed to the plain Java/Maven backend above — plus the standalone Spring Boot checks a person runs on demand against such a service. Registered by convention — Plan derives the java-springboot key from the *-code-one-task directory name, and Code One Task Group dispatches that key’s tasks to the group skill — so no orchestrator mentions Spring Boot anywhere in its own instructions.

This group pairs with Spring Boot Service Bootstrap: that group creates the service, this one implements work in it. Both assume the same module layout, and the split of responsibility between the two skills here exists for one concrete reason — integration tests run once per task group, never once per task, because a task-level run would start the same Testcontainers stack repeatedly.

You rarely invoke either directly; the Issue-to-PR Development Cycle reaches them through iru-code.

  • iru-java-springboot-code-one-task-group — implements a bucket of Spring Boot tasks (in parallel where safe) and validates the whole bucket once, reusing the same language-level skills as the plain-Java group skill (iru-java-test, iru-java-coverage, iru-java-code-quality, iru-java-javadoc). It owns the two stages the per-task skill deliberately omits: the module-boundary checks (maven-enforcer-plugin banned-dependencies plus the ArchUnit test, run early because they fail in seconds) and the Testcontainers-backed integration tests (run last, because they cost minutes). Its 80% coverage gate is measured from unit tests alone — integration tests raise the aggregate afterwards and that delta is reported, but it never satisfies the gate, so the coverage verdict holds even on a machine with no Docker.

  • iru-java-springboot-code-one-task — implements a single task’s code and unit tests only, resolving which hexagonal module the code belongs in before writing anything. Like iru-java-code-one-task it ships its own reference/ library, here covering the architecture rather than the language — hexagonal architecture and module boundaries, DDD tactical patterns, SOLID, the distributed patterns (CQRS, transactional outbox, saga, eventual consistency, listen-to-yourself), and this catalog’s Java code style — read by progressive disclosure so a small task doesn’t pay for all of it.

  • iru-java-springboot-performance-tests — generates an Apache JMeter suite under performance/ covering only the happy paths of the service’s main use cases, in three scenarios (low flat concurrency, high flat concurrency, and a symmetric scale-up/scale-down ramp). Unlike the two skills above it is never reached through iru-code: it is run by a person, after real endpoints exist, and it deliberately sits outside the Maven reactor so mvn verify never triggers a load test.

.NET Development Tooling

The .NET/C# counterpart to Java Development Tooling — implementing a single plan task end to end, plus the equivalent point-in-time checks (tests, coverage, Roslyn analyzers, XML doc comments) against a .NET project.

Same shape as the Java group, one tool chain over: iru-code-one-task-group dispatches every task-group bucket tagged dotnet to iru-dotnet-code-one-task-group, which captures one quality baseline for the bucket, runs iru-dotnet-code-one-task once per task (in parallel when the group allows it), then validates the whole bucket once via the other four skills here. Reach for those four directly any time while iterating day to day; iru-code rarely needs them invoked directly during the Issue-to-PR Development Cycle.

  • iru-dotnet-code-one-task-group — implements a bucket of .NET tasks (in parallel where safe) and validates the whole bucket once: license headers, XML doc comments, tests, coverage, and a quality regression check.

  • iru-dotnet-code-one-task — implements a single task’s code and tests only; called once per task by iru-dotnet-code-one-task-group.

  • iru-dotnet-test — runs the test suite via dotnet test, scoped to a class/method/namespace/trait selector.

  • iru-dotnet-coverage — runs Coverlet via dotnet test and reports the exact measured coverage percentage for target class(es).

  • iru-dotnet-code-quality — runs StyleCop.Analyzers/CA Roslyn analyzers via a SARIF-logged build and summarizes every issue found.

  • iru-dotnet-docfx — audits and completes XML doc-comment coverage for given types, then attempts a DocFX build.

  • iru-dotnet-generate-all-tests — finds every class with no test class or under 80% line coverage (via iru-dotnet-coverage) and generates/extends tests until it clears the bar, across the whole codebase in one pass.

Database Development Tooling

The database counterpart to Java Development Tooling and .NET Development Tooling — implementing a bucket of database tasks (schema migrations, seed data, index changes) from a plan.

iru-code-one-task-group dispatches every task-group bucket tagged database to iru-database-code-one-task-group, which calls iru-database-code-one-task once per task. Unlike its Java/.NET counterparts, this pairing is deliberately simpler: tasks are always implemented one at a time, in the plan’s order, regardless of the bucket’s Parallelizable verdict (database changes commonly carry a real ordering dependency even when a plan doesn’t flag one explicitly), and there is no pre-change quality baseline or bucket-wide validation pass — each task is trusted to handle its own correctness. iru-database-code-one-task generates the queries a task calls for (grounded in the real schema via iru-explore), executes only the read-only/idempotent ones when a matching database MCP is connected, and records everything in database-report.md.

  • iru-database-code-one-task-group — implements a bucket of database tasks sequentially, one at a time, then checks off completed tasks and notifies the user — no quality baseline or bucket-wide validation pass.

  • iru-database-code-one-task — generates the queries a single task calls for, executes the read-only ones via a connected database MCP if one exists, and records both in database-report.md; called once per task by iru-database-code-one-task-group.

Pull Request Lifecycle

Everything after code exists but before it’s merged: describing the change and getting it reviewed, on whichever platform hosts the repository (GitHub, Bitbucket, Azure DevOps, or TFS).

Used automatically as the last leg of iru-issue’s pipeline once `iru-code finishes, but just as useful standalone — e.g. after making changes outside the /iru-issue flow and wanting a PR description drafted, or a second, convention-aware review pass before asking a teammate for one.

  • iru-pr-description — drafts a PR description from the real diff, and optionally opens/updates the pull request.

  • iru-pr-review — reviews an open pull request against the linked ticket’s intent and this codebase’s conventions.

Repository Maintenance

Keeping an already-bootstrapped repository correct and current, well after its initial setup.

Intended for whoever maintains the repository over time rather than someone mid-feature: cutting releases, keeping docs from drifting after unrelated code changes, periodically verifying license headers, and scanning for accidentally committed secrets.

  • iru-release — cuts a release branch, bumps versions, drafts release notes/changelog, and opens the release PR.

  • iru-update-docs — brings the Antora documentation module up to date with changes already made to the code.

  • iru-build-docs — builds the existing Antora documentation site as-is (no content edits), scaffolding it first via iru-setup-antora if it doesn’t exist yet.

  • iru-check-license — verifies (and backfills) license headers against the repository’s actual license.

  • iru-check-security — scans for accidentally committed secrets via detect-secrets, maintaining a .secrets.baseline so repeat runs surface only what’s new.

Knowledge Base Management

Turning meeting transcriptions and their attached documents into a durable, queryable knowledge base at knowledge/ — filed meeting summaries, per-person profiles, tracked agreements, and open pending tasks — and closing the loop as those tasks get done.

Reach for this group in a repository used to track meetings and decisions rather than just code. iru-knowledge-setup is a one-time bootstrap; iru-knowledge-process-inbox is run every time new transcriptions/documents land in knowledge/inbox; iru-knowledge-complete is run whenever a tracked agreement item actually gets done; iru-knowledge-briefing is run any time someone needs to catch up on a subject; iru-knowledge-compact is run as periodic housekeeping when the base has drifted. Most of these are standalone entry points run at a different point in the knowledge base’s lifecycle, and iru-knowledge-briefing is read-only, never editing what the others produce. Two carry dependencies worth knowing: iru-knowledge-process-inbox finishes by invoking iru-knowledge-compact once per run, so a batch of freshly filed meetings is immediately reconciled against what earlier meetings already produced; and iru-knowledge-compact in turn delegates each completed item it finds to iru-knowledge-complete rather than editing those files itself. Because this catalog’s skills are adopted individually, iru-knowledge-compact may not be installed alongside iru-knowledge-process-inbox — that’s handled as a skipped step, not an error. iru-knowledge-to-issue and iru-knowledge-to-jira reach furthest outside the group: run whenever a pending/not-completed agreement needs to become tracked work, each reaches out to iru-explore plus iru-create-github-issue or iru-create-jira-ticket respectively to ground and file the resulting issue/ ticket, then annotates (but doesn’t complete) the agreement it came from — pick whichever matches the tracker the work should land on.

  • iru-knowledge-setup — creates the knowledge/ directory and its five subdirectories (inbox, meetings, people, agreements, pending), each seeded with a .gitkeep.

  • iru-knowledge-process-inbox — files every transcription/document in knowledge/inbox into a per-meeting summary, updated people profiles, and tracked agreements/pending tasks.

  • iru-knowledge-briefing — read-only: searches knowledge/people/meetings/agreements/pending for a given subject (optionally scoped by person or meeting) and reports back a summary — no file in knowledge/ is edited.

  • iru-knowledge-complete — checks off a completed agreement item and removes its pending file, given the task’s id.

  • iru-knowledge-compact — only ever reduces the base: collapses duplicate pending tasks across meetings (keeping the one that already carries a tracker issue), closes out agreements whose GitHub issue/Jira ticket reads as completed, and repairs drift between knowledge/pending and knowledge/agreements — always after confirming the full plan.

  • iru-knowledge-to-issue — resolves a pending/not-completed agreement, gathers its meeting and codebase context, then hands it to iru-create-github-issue to draft and file a GitHub issue for it.

  • iru-knowledge-to-jira — the Jira counterpart: resolves a pending/not-completed agreement, gathers its meeting and codebase context, then hands it to iru-create-jira-ticket to draft and file a Jira ticket for it.

Catalog Tooling

Maintaining this catalog’s own documentation rather than a consumer repository’s.

Only relevant if you’re working in this ai-catalog repository itself, to keep its generated pages current after a skill or agent is added, removed, or changed — not something a repository that merely adopted one of these skills would ever need to run.

  • iru-generate-skill-docs — regenerates this documentation site itself from the current set of skills and agents on disk.

Sub-Agent Infrastructure

The custom agents this catalog’s skills delegate to for its most-duplicated sub-agent shapes, cutting across every group above rather than belonging to any single workflow.

Not something invoked directly the way a skill is — an agent is only ever reached indirectly, through a skill’s own instructions naming it in an Agent() call. See Creating and updating skills and agents for how agents differ from skills in how they’re triggered.

  • iru-gate-runner — runs a single verification/quality-gate skill and reports back only a compact summary, optionally diffed against a baseline. Used throughout iru-code, iru-code-one-task-group, iru-java-code-one-task-group, and iru-dotnet-code-one-task-group.

  • iru-isolated-skill-executor — runs one named skill end to end in a fresh context so the caller can keep running afterward. Used by iru-issue to delegate the entire iru-code run for a ticket, by iru-code itself to delegate each task group to iru-code-one-task-group, by iru-java-code-one-task-group and iru-dotnet-code-one-task-group to delegate each task in a bucket to iru-java-code-one-task/iru-dotnet-code-one-task, and by iru-setup-java-library-repository to delegate each of the six bootstrap skills it orchestrates.

  • iru-change-summarizer — fans out over a git commit/tag range and returns only the user-facing changes. Used by iru-setup-changelog to summarize one release at a time when backfilling a long tag history, and by iru-release to summarize the single range since the previous release.

Dependency graph

An edge means "invokes" (a solid line, via the Skill tool) or "spawns" (a dotted line, via the Agent tool). code-review is an external skill this catalog does not define — iru-pr-review uses it only when it happens to be available in the current session.

flowchart LR subgraph Bootstrap["Repository Bootstrap"] SJLR["iru-setup-java-library-repository"] SJL["iru-setup-java-library"] AS["iru-setup-antora"] SJG["iru-setup-java-gitignore"] SJW["iru-setup-java-github-workflows"] SC["iru-setup-changelog"] SR["iru-setup-readme"] end subgraph SBoot["Spring Boot Service Bootstrap"] SB["iru-setup-java-springboot"] SBP["iru-setup-java-springboot-pom"] SBM["iru-setup-java-springboot-modules"] SBA["iru-setup-java-springboot-apis"] SBT["iru-setup-java-springboot-testcontainers"] SBPL["iru-setup-java-springboot-platform"] SBW["iru-setup-java-springboot-github-workflows"] SBD["iru-update-java-springboot-documentation"] end subgraph Intake["Ticket Intake"] CGI["iru-create-github-issue"] CJT["iru-create-jira-ticket"] CJCC["iru-jira-custom-context"] end subgraph Cycle["Issue-to-PR Development Cycle"] ISSUE["iru-issue"] EXPLORE["iru-explore"] PLAN["iru-plan"] CODE["iru-code"] COTG["iru-code-one-task-group"] end subgraph Java["Java Development Tooling"] JCOTG["iru-java-code-one-task-group"] JCOT["iru-java-code-one-task"] JT["iru-java-test"] JC["iru-java-coverage"] JCQ["iru-java-code-quality"] JJ["iru-java-javadoc"] JGAT["iru-java-generate-all-tests"] end subgraph SBootDev["Spring Boot Development Tooling"] SBCOTG["iru-java-springboot-code-one-task-group"] SBCOT["iru-java-springboot-code-one-task"] SBPERF["iru-java-springboot-performance-tests"] end subgraph Dotnet[".NET Development Tooling"] DCOTG["iru-dotnet-code-one-task-group"] DCOT["iru-dotnet-code-one-task"] DT["iru-dotnet-test"] DC["iru-dotnet-coverage"] DCQ["iru-dotnet-code-quality"] DDF["iru-dotnet-docfx"] DGAT["iru-dotnet-generate-all-tests"] end subgraph Database["Database Development Tooling"] DBCOTG["iru-database-code-one-task-group"] DBCOT["iru-database-code-one-task"] end subgraph PRLife["Pull Request Lifecycle"] PRD["iru-pr-description"] PRR["iru-pr-review"] end subgraph Maintenance["Repository Maintenance"] REL["iru-release"] UD["iru-update-docs"] BD["iru-build-docs"] CL["iru-check-license"] CSEC["iru-check-security"] end subgraph Tooling["Catalog Tooling"] GSD["iru-generate-skill-docs"] end subgraph Knowledge["Knowledge Base Management"] KS["iru-knowledge-setup"] KPI["iru-knowledge-process-inbox"] KB["iru-knowledge-briefing"] KC["iru-knowledge-complete"] KCP["iru-knowledge-compact"] KTI["iru-knowledge-to-issue"] KTJ["iru-knowledge-to-jira"] end SJLR -.-> SJL SJLR -.-> AS SJLR -.-> SJG SJLR -.-> SJW SJLR -.-> SC SJLR -.-> SR SB -.-> SBP SB -.-> SBM SB -.-> SBA SB -.-> SBT SB -.-> SBPL SB -.-> SBW SB -.-> SBD SB --> SJG SB --> SC SB --> SR SBD -.->|only if no Antora module yet| AS CGI --> EXPLORE CJT --> EXPLORE CJT --> CJCC ISSUE --> EXPLORE ISSUE --> PLAN ISSUE -.-> CODE ISSUE --> PRD ISSUE --> PRR PLAN --> EXPLORE PRR --> EXPLORE KTI --> EXPLORE KTI --> CGI KTJ --> EXPLORE KTJ --> CJT KPI -->|"once per run, if any\nagreement was created"| KCP KCP -->|per completed item| KC CODE -.-> COTG CODE -.-> JCQ CODE -.-> DCQ CODE -.-> CSEC CODE --> UD CODE -->|"quality regressed,\nJira-origin plan,\nuser opts to file"| CJT COTG --> JCOTG COTG --> SBCOTG COTG --> DCOTG COTG --> DBCOTG SBPERF -->|"to find the service's\nmain use cases"| EXPLORE SBCOTG -.-> SBCOT SBCOTG -.-> JCQ SBCOTG -.-> CL SBCOTG -.-> JJ SBCOTG -.-> JT SBCOTG -.-> JC DBCOTG --> DBCOT DBCOT --> EXPLORE JCOTG -.-> JCOT JCOTG -.-> JCQ JCOTG -.-> CL JCOTG -.-> JJ JCOTG -.-> JT JCOTG -.-> JC JGAT --> JC JGAT --> JT DCOTG -.-> DCOT DCOTG -.-> DCQ DCOTG -.-> CL DCOTG -.-> DDF DCOTG -.-> DT DCOTG -.-> DC DGAT --> DC DGAT --> DT REL --> SR REL --> PRD UD -.->|only if no Antora module yet| AS BD -.->|only if no Antora module yet| AS GSD -.->|only if no Antora module yet| AS PRR -.->|external, not in this catalog| CR[["code-review"]] EXPLORE -.uses.-> AGT_EXPLORE(("Explore\nagent")) AS -.uses.-> AGT_EXPLORE SR -.uses.-> AGT_EXPLORE JGAT -.uses.-> AGT_EXPLORE DGAT -.uses.-> AGT_EXPLORE SBD -.uses.-> AGT_EXPLORE CODE -.spawns.-> AGT_GATE(("iru-gate-runner\nagent")) COTG -.spawns.-> AGT_GATE JCOTG -.spawns.-> AGT_GATE DCOTG -.spawns.-> AGT_GATE JGAT -.spawns.-> AGT_GATE DGAT -.spawns.-> AGT_GATE SB -.spawns.-> AGT_GATE SBP -.spawns.-> AGT_GATE SBM -.spawns.-> AGT_GATE SBA -.spawns.-> AGT_GATE SBT -.spawns.-> AGT_GATE SBW -.spawns.-> AGT_GATE SBCOTG -.spawns.-> AGT_GATE SBPERF -.spawns.-> AGT_GATE SBPERF -.uses.-> AGT_EXPLORE ISSUE -.spawns.-> AGT_ISE(("iru-isolated-skill-executor\nagent")) CODE -.spawns.-> AGT_ISE JCOTG -.spawns.-> AGT_ISE DCOTG -.spawns.-> AGT_ISE SJLR -.spawns.-> AGT_ISE SB -.spawns.-> AGT_ISE SBCOTG -.spawns.-> AGT_ISE SC -.spawns.-> AGT_CS(("iru-change-summarizer\nagent")) REL -.spawns.-> AGT_CS GSD -.spawns.-> AGT_GP(("general-purpose\nagent")) UD -.spawns.-> AGT_GP PRD -.spawns.-> AGT_GP JGAT -.spawns.-> AGT_GP DGAT -.spawns.-> AGT_GP SBD -.spawns.-> AGT_GP

Common workflows

These sections walk through how the catalog’s skills compose for a few recurring jobs. Each is a real, supported path through the graph above — not every skill in the catalog appears in one, since some (the Java and .NET Development Tooling skills, iru-check-license) are more often invoked as building blocks of a larger flow than run standalone by a person.

Setting up a new repository

iru-setup-java-library-repository collects the project’s identity and CI/CD parameters once, then orchestrates six other skills in a fixed order so nothing is asked twice:

flowchart TD A["/iru-setup-java-library-repository"] --> B["iru-setup-java-library\n(pom.xml + source layout)"] B --> C["iru-setup-antora\n(docs site)"] C --> D["iru-setup-java-gitignore\n(.gitignore)"] D --> E["iru-setup-java-github-workflows\n(CI/CD)"] E --> F["iru-setup-changelog\n(CHANGELOG.md)"] F --> G["iru-setup-readme\n(README.md, last — sees everything above)"]

Any of these six can also be run standalone against an existing repository to fill a single gap (e.g. just /iru-setup-antora to add docs to a repository that already has a pom.xml).

Setting up a new Spring Boot service

iru-setup-java-springboot is the service-shaped counterpart to the flow above. It interviews the user once — project identity, target cloud, reactive or blocking, and every technology choice — resolving versions and dependency ids against the live Spring Initializr API, records everything in springboot-stack.yml, and then runs seven sub-skills in a fixed order that each read that manifest back:

flowchart TD A["/iru-setup-java-springboot"] --> B["Interview + Initializr API\n(versions, dependency ids, reference pom)"] B --> C["springboot-stack.yml\n(the manifest every sub-skill reads)"] C --> D["iru-setup-java-springboot-pom\n(reactor: root pom holds every version)"] D -- root pom not written --> STOP["Stop — no reactor to attach to"] D --> E["iru-setup-java-springboot-modules\n(ports, adapters, profiles, ArchUnit)"] E --> F["iru-setup-java-springboot-apis\n(apis/ contracts + code generation)"] F --> G["iru-setup-java-springboot-testcontainers\n(compose.yaml + integration-test harness)"] G --> H["iru-setup-java-springboot-platform\n(OpenTofu for AWS or Google Cloud)"] H --> I["iru-setup-java-springboot-github-workflows\n(build, deploy, undeploy)"] I --> J["iru-update-java-springboot-documentation\n(Antora site, last — derives from finished code)"]

The order carries real constraints rather than being a preference: poms before modules (a module needs its parent), modules before APIs (generated sources need somewhere to land), APIs before the container stack (it must know whether a schema registry is needed), and everything before the workflows and documentation, both of which survey what is actually on disk. Only the first step is fatal if it stops — every later sub-skill that stops is recorded in the final report and the run continues.

Two decision points are worth knowing about before starting. The concurrency model (blocking, reactive, or both) is asked early because it decides which starter every other technology resolves to, and "both" is flagged as the hardest to reason about. The deployment platform (AWS or Google Cloud) determines the whole OpenTofu layout and the recommended dynamic-configuration mechanism, so it can’t be deferred either.

Filing a ticket before work begins

iru-create-github-issue and iru-create-jira-ticket turn a rough idea into a tracked, actionable ticket, ready for a later, separate /iru-issue invocation. See guides/common-workflows.adoc#filing-a-ticket for a more detailed walkthrough.

flowchart LR A["/iru-create-github-issue\nor /iru-create-jira-ticket"] --> B["iru-explore\n(ground the draft in the codebase)"] B --> C["Ask purpose + additional context\n(URLs, files, related tickets,\nepic — Jira only — due date, importance)"] C --> C2["iru-jira-custom-context\n(Jira only: org-specific context)"] C2 --> D["Draft (+ estimated difficulty)\n+ confirm + file\n(gh issue create /\nJira MCP tools)"] D --> E(["/iru-issue &lt;id-or-key&gt;\n(separate, later invocation)"])

Both skills work the same way up to filing; which one to use depends on which tracker the repository/team uses. Neither is required — /iru-issue and /iru-plan work fine against a ticket filed by hand, or against no ticket at all (a free-form description). Only iru-create-jira-ticket supports an epic assignment and delegates to iru-jira-custom-context for organization-specific context — there is no GitHub equivalent for either.

Typical development cycle, starting from a ticket

iru-issue is the single entry point for taking a tracked ticket — a GitHub issue or a Jira ticket — to an open, reviewed pull request. See guides/common-workflows.adoc#typical-development-cycle for a more detailed walkthrough — this is the main workflow for day-to-day work in this catalog.

flowchart LR A["/iru-issue &lt;ticket-id&gt;"] --> B["iru-explore\n(understand the ticket)"] B --> C["iru-plan\n(write implementation_plan.md,\ngroup tasks by dependency,\ntag each with a language/framework)"] C --> D{Hand off to /iru-code?} D -- yes --> E["iru-code\n(dispatch each task group to\niru-code-one-task-group, via a sub-agent)"] D -- no --> H[Stop for manual review] E --> EA["Attach archived plan\nback onto the ticket\n(GitHub comment / Jira attachment)"] EA --> F["iru-pr-description\n(open PR as a draft)"] F --> G["iru-pr-review\n(review the new PR)"]

iru-code itself doesn’t implement anything directly: for every task group it dispatches to iru-code-one-task-group, which resolves each task’s language and delegates to whichever iru-java-code-one-task-group or iru-dotnet-code-one-task-group skill matches — each of which captures one quality baseline for the whole bucket, implements its tasks (in parallel when the group allows it), and validates the bucket once via its own group’s tests/coverage/quality/doc skills, instead of once per task. A bucket tagged database instead goes to iru-database-code-one-task-group, which is deliberately simpler — always sequential, with no baseline or bucket-wide validation of its own. The whole run is bracketed with project-wide quality (iru-java-code-quality/iru-dotnet-code-quality) and security (iru-check-security) baselines — if quality regresses, follow-up issues can be filed on whichever tracker the plan itself originated from (GitHub via gh issue create, or Jira via iru-create-jira-ticket) — updating documentation via iru-update-docs once both pass, and archiving the plan under a filename that embeds the originating ticket id (see Code). iru-issue then attaches that archived plan back onto the ticket before opening the PR, so a later iru-explore of the same ticket finds it as precedent. iru-explore and iru-plan can also be run individually (/iru-explore, /iru-plan) ahead of, or instead of, the full /iru-issue flow, and either a GitHub issue or a Jira ticket works the same way throughout — for a Jira ticket, iru-explore also pulls in its epic, linked tickets, and any attached prior implementation plans for extra context.

Generating a release

iru-release must be run from develop and drives the whole version bump itself, delegating only the README and PR description. See guides/common-workflows.adoc#generating-a-release for a more detailed walkthrough.

flowchart LR A["/iru-release"] --> B["Pick release + next SNAPSHOT version"] B --> C["Bump pom.xml, docs/antora.yml, Antora version snippets"] C --> D["iru-setup-readme\n(refresh README.md)"] D --> E["Write whats-new.adoc + CHANGELOG.md"] E --> F["Commit, push release_x.y.z"] F --> G["iru-pr-description\n(fill in the release PR)"]

Updating an existing repository with new functionality

There is no single orchestrator for this — it’s a set of independent skills, each scoped to one artifact, run after code has already changed:

flowchart TD Code["Code change already made\n(uncommitted or on a branch)"] --> UD["iru-update-docs\n(Antora pages)"] Code --> RM["iru-setup-readme\n(README.md, if it already exists: proposes a diff)"] Code --> CLI["iru-check-license\n(license headers on touched files)"] Code --> CSEC["iru-check-security\n(scan for secrets before committing)"] UD -.->|only if no Antora module exists yet| AS["iru-setup-antora"]

iru-setup-changelog is deliberately not part of this flow: it only bootstraps a changelog that doesn’t exist yet and stops immediately if CHANGELOG.md is already present (see Setup Changelog). Keeping an existing changelog current on each release is `iru-release’s job, not a standalone update skill’s.

Managing a knowledge base of meetings

A separate, standalone lifecycle from the code-focused workflows above: turning meeting transcriptions into a durable record and closing the loop as tracked agreements get done. iru-knowledge-setup runs once; iru-knowledge-process-inbox, iru-knowledge-briefing, iru-knowledge-complete, and iru-knowledge-compact each run repeatedly, on their own schedule. The one internal hand-off is at the end of a filing run: iru-knowledge-process-inbox invokes iru-knowledge-compact once it has filed every meeting in the inbox, so an item a new meeting re-raised gets collapsed into the task an earlier meeting already produced instead of accumulating as a near-duplicate — and iru-knowledge-compact hands each already-finished item to iru-knowledge-complete. iru-knowledge-compact also runs standalone as periodic housekeeping, and confirms its full plan before deleting or editing anything. iru-knowledge-to-issue and iru-knowledge-to-jira also run repeatedly, but reach into the Issue-to-PR Development Cycle and Ticket Intake groups (via iru-explore plus iru-create-github-issue/iru-create-jira-ticket respectively) to turn a pending agreement into tracked work on whichever tracker fits, without itself completing that agreement:

flowchart TD A["/iru-knowledge-setup\n(once, before first use)"] --> B["knowledge/inbox, meetings,\npeople, agreements, pending"] B --> C["New transcriptions/documents\nland in knowledge/inbox"] C --> D["/iru-knowledge-process-inbox\n(run repeatedly)"] D --> E["knowledge/meetings/meeting-&lt;timestamp&gt;/\n+ knowledge/people/*.md\n+ knowledge/agreements/*.md\n+ knowledge/pending/*.md"] E --> Cp["/iru-knowledge-compact\n(final step of every process-inbox run,\nalso standalone housekeeping)"] Cp --> Cq{"User confirms\nthe proposed plan?"} Cq -- no --> E Cq -- yes --> Cr["Duplicate pending tasks merged into\nthe tracked/earliest survivor,\nfinished agreement items checked off,\ndrift between the two dirs repaired"] Cr --> E E -.-> Br["/iru-knowledge-briefing &lt;subject&gt;\n(run any time, read-only,\nno effect on E)"] E --> F{"Pending task\nactually completed?"} F -- yes --> G["/iru-knowledge-complete &lt;task-id&gt;\n(run repeatedly)"] Cr -.->|per completed item| G G --> H["Agreement item checked off,\npending file removed"] F -- not yet --> I{"Needs to become\ntracked work?"} I -- GitHub --> J["/iru-knowledge-to-issue\n(iru-explore + iru-create-github-issue)"] I -- Jira --> J2["/iru-knowledge-to-jira\n(iru-explore + iru-create-jira-ticket)"] J --> K["Issue URL appended to the\npending file + agreement item\n(agreement stays unchecked)"] J2 --> K2["Ticket key/URL appended to the\npending file + agreement item\n(agreement stays unchecked)"] K --> E K2 --> E I -- no --> E

Keeping this documentation current

This documentation site can be created or updated in two ways:

  • Preferred — run the iru-generate-skill-docs skill (/iru-generate-skill-docs). It (re)generates this page — the reference table, purpose groups, dependency graph, and common workflows above — plus one detail page per skill/agent under skills/ and agents/, directly from whatever .claude/skills/*/SKILL.md files and agent definitions actually exist in the repository. It’s idempotent, so it’s safe to re-run any time a skill or agent is added, removed, or changed; see Keeping this documentation current above.

  • Manual edits. This page and the detail pages are plain AsciiDoc files under docs/modules/ROOT/pages/, and can be edited directly like any other Antora content. This is fine for wording or structural fixes, but anything describing what a skill or agent actually does should instead go through the skill above — hand-written content there will be overwritten the next time it runs.

This page and every detail page under Catalog Tooling are themselves generated — by iru-generate-skill-docs, from whatever skills/agents actually exist under .claude/skills/ (and .claude/agents/, if any) at the time it runs:

flowchart LR A["/iru-generate-skill-docs"] --> B["Discover every SKILL.md\n+ agent usage on disk"] B --> C["Build the dependency graph\n+ purpose groups + workflows"] C --> D["Write index.adoc, skills/*.adoc,\nagents/*.adoc, nav.adoc"] D --> E["npx antora — verify the\nsite still builds"]

Re-run it (/iru-generate-skill-docs) after adding, removing, or materially changing a skill or agent, so this page and the detail pages it links to don’t drift from what’s actually on disk.

Each skill’s own detail page (linked from the table above) covers its exact inputs, outputs, and execution flow. Each skill is also self-contained under its own .claude/skills/<name>/SKILL.md — copy the ones you need into another repository’s .claude/skills/ directory to adopt them there.