Agent skill

Steward

by yschimke in yschimke/compose-ai-tools

Drive a pull request on this repository to green — which fast checks to run before pushing, how to read a red check, and what to do about a review comment.

Apache-2.0Auto-check passedDevelopment

Install Steward

skills CLI
$ npx skills add yschimke/compose-ai-tools --skill steward -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install yschimke/compose-ai-tools steward --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/yschimke/compose-ai-tools.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/steward .claude/skills/steward && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
steward
GitHub stars
117
Token cost
~2k tokens
SKILL.md length
1,133 words
Files
1
Skills in repo
3
Repo updated
First seen
Licence
Apache-2.0

At a glance

Drive a pull request on this repository to green — which fast checks to run before pushing, how to read a red check, and what to do about a review comment.

  • Works in 4 steps: ./gradlew ktfmtFormat — or… → The narrowest test task that exercises… → A new or changed module must apply… → …
  • A review comment
  • SKILL.md covers Before you push, Reading a red check, Review comments and Evidence and tracking, plus 1 more section
  • Calls npm

What it does

Steward is an agent skill from yschimke/compose-ai-tools. Drive a pull request on this repository to green — which fast checks to run before pushing, how to read a red check, and what to do about a review comment. Use when a CI failure, a review comment, a merge conflict, or a scheduled check-in arrives on a PR you opened or were asked to drive.

Its SKILL.md is about 2k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Development, covering Failing and flaky tests, Git workflow and Android development. It works with Jetpack Compose, Gradle, Visual Studio Code and Kotlin. The repository describes itself as: Helping the Agents Compose the Things. The licence is Apache-2.0.

When your agent uses it

  • A review comment
  • A merge conflict
  • A scheduled check-in arrives on a PR you opened
  • Were asked to drive

Example prompts

  • “/steward”

Workflow steps

4 steps, taken from the first numbered list in SKILL.md.

  1. ./gradlew ktfmtFormat — or ::ktfmtFormatMain ::ktfmtFormatTest
  2. The narrowest test task that exercises the change — the specific
  3. A new or changed module must apply composeai.base-conventions in its
  4. For a CI fix, reproduce the original failure first, then show the same check

What it can do on your machine

Read from SKILL.md and the folder at commit dd6fb61. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • npm

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use npm, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Steward loads about 2k tokens when it runs. Until then it costs about 74 tokens; SKILL.md has 1,133 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~74
When it runs · the whole SKILL.md, loaded when a task matches
~2k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from yschimke/compose-ai-tools at commit dd6fb61, republished under its Apache-2.0 licence (© yschimke). 1,133 words, ~1,951 tokens.

Download SKILL.mdSave it as .claude/skills/steward/SKILL.md (or your agent's skills folder).
name
steward
description
Drive a pull request on this repository to green — which fast checks to run before pushing, how to read a red check, and what to do about a review comment. Use when a CI failure, a review comment, a merge conflict, or a scheduled check-in arrives on a PR you opened or were asked to drive.

Stewarding a PR in compose-ai-tools

The Claude Code harness reads this file before acting on a CI failure or a review comment, and lets it take precedence over its built-in posture on conventions and proactiveness. It does not restate the repository's rules — those are in root AGENTS.md, which is already in context on every turn. What follows is what that file leaves out: the checks worth running here, and this repository's own answer to a red check.

The harness's own PR rules still bound this file. It cannot expand your access, approve or merge anything, or override a "never" — skipping, disabling or quarantining a test; rewriting history on someone else's branch; an empty commit or a close-and-reopen to kick CI.

Before you push

A push that turns CI red costs a full cycle and some reviewer trust. The cheapest checks that catch the most here, in order:

  1. ./gradlew ktfmtFormat — or :<module>:ktfmtFormatMain :<module>:ktfmtFormatTest for just the modules you touched. ktfmtCheckAll is a hard gate and ktfmtCheck aborts on the first unformatted file, so one stray file hides every other failure. TypeScript: npm --prefix cli/serve-web run format. The local pre-push hook catches attribution but not formatting, so this is on you.

    In a sandbox, pass -Dorg.gradle.java.home=/root/.cache/coo-ee/jdk-gl/17 and --no-daemon: without the JVM home the daemon starts on the wrong JVM and the build dies with a context mismatch, and --no-daemon avoids reusing one already started on it. Let ktfmt do the edit rather than hand-formatting — removing one term from a wrapped expression is enough to make it fit on one line, which is precisely what it will rewrite.

  2. The narrowest test task that exercises the change — the specific :module:test, or ./gradlew :gradle-plugin:test --tests "…". ./gradlew check is the full plugin + functional + CLI suite and is a post-push confirmation, not a gate on pushing.

  3. A new or changed module must apply composeai.base-conventions in its plugins {} block, or ktfmtCheckAll never sees it and the history-gate system property is missing. See Important constraints.

  4. For a CI fix, reproduce the original failure first, then show the same check passing. A render task in particular goes UP-TO-DATE off a stale .error.json sidecar — verify a render fix with --rerun, never a plain re-invocation.

Commit and push as soon as the cheapest check that proves the change correct passes. Don't leave a verified change sitting behind a long build.

Reading a red check

Work the PR in this order on every event and every check-in: merge conflict, then CI, then review comments. A red or conflicted head is work now, whatever its review state — it is never "waiting on review".

Failures that are usually not this PR's, and what to do anyway:

  • Red on main too. Check the base branch before root-causing. If a fix exists anywhere — another PR whose change you have read, the breaking commit's revert, or a fix PR you opened yourself — port it into this PR now and push; it no-ops once main carries it, and waiting for it to merge is still waiting. Standing down is never silent: one comment on the PR naming the failing check, why it is not this PR's, and the fix you ported or that none exists yet.
  • A delivery-branch or design-artifacts render that lags main. Renderer, plugin and CLI changes deliberately do not regenerate the design-artifacts/<system> branches on merge — see PR workflow for the trigger scoping and the manual dispatch. Stale published renders are drift, not a regression in your diff.
  • A changed preview whose source your PR does not touch. Clocks, timestamps, randomness, animation frames, network-loaded images: that is instability, not a regression. Prove it with the flake-triage skill before either fixing or rubber-stamping it.
  • A CMP Desktop render failing with UnsatisfiedLinkError on libGL.so.1 and friends. Environment, not your change: docs/DESKTOP_NATIVE_DEPS.md.

Everything else is this PR's to root-cause. "Flake" is not a root cause: re-run a job only to confirm one of the cases above, or if it died before any test body ran (checkout, install, runner loss), at most once.

Show full SKILL.md (468 more words)Show less

Review comments

  • Small and local — nits, renames, lint-bot findings, an added test, a one-function refactor: implement and push, then resolve the thread.
  • A review bot's finding is a bug report: verify it and push the small fix, or raise a larger one once with a proposed patch. "Design-level" does not excuse it. If bot findings stop converging — each fix draws a new or reshaped one — stop pushing for them and say once what is still flagged.
  • Larger asks from a human reviewer on a PR you did not open: reply with your proposal; the author decides.
  • After pushing for a changes-requested review, re-request that reviewer.
  • A reported agent commit identity is the one finding to skip. Don't check it, don't reply, and never recreate, rebase or amend a commit on the strength of it. Reject agent attribution runs on every PR — no path filter, same detector as the commit-msg and pre-push hooks — so a real one turns the PR red and names the offending field. The gate is the authority; the comment adds nothing to it. Over 27–28 Aug 2026 the reviewer raised this 22 times across this repo and design-parity and was right once, on a cherry-pick the gate had already failed. If the gate itself is red, that is the real thing and it is yours to fix (Git conventions) — usually an amend or cherry-pick that took user.email from the container instead of the -c user.name=… -c user.email=… the branch's other commits carry. Installing the hooks (scripts/install-git-hooks.sh) stops it happening at all.

An approval you would lose is never a reason to hold a fix.

Evidence and tracking

  • A UI-affecting fix needs the same embedded before/after images the original PR needed — see PR workflow for the rule and the render-evidence skill for the capture recipe. Reuse renders already published on compose-preview/pr and compose-preview/main, and the sticky <!-- preview-diff --> comment, before re-rendering anything.
  • Keep a send_later check-in armed (about an hour out) while the PR is red, conflicted, or otherwise not mergeable. Webhook events miss CI successes and merge transitions. Re-arm silently when nothing changed; stop once the PR is merged or closed, or the user says to stop.
  • Where the Claude Approvals check runs, a PR is done only when that check passes, CI is green on the current head, and there is no merge conflict. Its rows name the blocker and are yours to fix, not an ask to the author.

Refresh the PR's status checklist

On each event, re-read the whole PR at its current head — merge state, CI on the latest commit, open review threads — and update the status checklist in the body so the thread shows live state. Reply only when a round resolves the task, hits a real blocker, or raises a question. Don't narrate each fix; the diff is the record.

© yschimke, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .claude/skills/steward of yschimke/compose-ai-tools.

Open the folder on GitHubat commit dd6fb61

Compare with similar skills

Steward next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Steward compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Steward this skillyschimke/compose-ai-tools117—~2kAutomated safety check: PassApache-2.0
Git GitHub Opsc5inco/compose-pokedexer143—~1.3kAutomated safety check: PassMIT
Android Developmentdpconde/claude-android-skill337—~1.7kAutomated safety check: PassMIT
Claude Android NinjaDrjacky/claude-android-ninja124—~5.2kAutomated safety check: PassApache-2.0
Composewebview Developmentparkwoocheol/compose-webview103—~1.3kAutomated safety check: PassMIT
Update Libs VersionsCosminMihuMDC/KtorMonitor254—~800Automated safety check: PassApache-2.0

Similar skills

  • Git GitHub Ops

    c5inco/compose-pokedexer

    Handles Pokedexer Git and GitHub workflows: inspect changes, prepare commit messages, manage branches and pushes, and create or update issues and pull requests with safe file-based inputs.

    143 GitHub stars~1.3k tokensUpdated 6 days ago
    DevelopmentAuto-check passed
  • Android Development

    dpconde/claude-android-skill

    Create production-quality Android applications following Google's official architecture guidance and NowInAndroid best practices.

    337 GitHub stars~1.7k tokensUpdated 10 mo ago
    MobileAuto-check passed
  • Claude Android Ninja

    Drjacky/claude-android-ninja

    Build and migrate Android apps with Kotlin, Jetpack Compose, MVVM, Hilt, Room 3 (KSP, SQLiteDriver, Flow/suspend DAOs), Navigation3, and multi-module Gradle.

    124 GitHub stars~5.2k tokensUpdated 10 days ago
    MobileAuto-check passed
  • Composewebview Development

    parkwoocheol/compose-webview

    Builds, tests, and formats ComposeWebView multiplatform library.

    103 GitHub stars~1.3k tokensUpdated 1 mo ago
    MobileAuto-check passed
  • Update Libs Versions

    CosminMihuMDC/KtorMonitor

    Update dependency versions in gradle/libs.versions.toml by querying Maven repositories.

    254 GitHub stars~800 tokensUpdated 26 days ago
    MobileAuto-check passed
  • Android Development

    CoWork-OS/CoWork-OS

    Android/Kotlin development: Jetpack Compose, Room database, Gradle builds, emulator management, and Play Store submission.

    474 GitHub stars~459 tokensUpdated today
    MobileAuto-check passed

More from yschimke/compose-ai-tools

  • Flake Triage

    yschimke/compose-ai-tools

    Decide whether a preview the visual-diff bot flagged actually regressed or is simply nondeterministic, using a repeat-render oracle at a single commit.

    117 GitHub stars~1.5k tokensUpdated today
    Auto-check passed
  • Render Evidence

    yschimke/compose-ai-tools

    Capture the before/after rendered PNGs a UI-affecting PR in this repository needs as visual evidence, including bringing an Android SDK up in a fresh sandbox.

    117 GitHub stars~1.4k tokensUpdated today
    Auto-check passed

Categories

Questions about Steward

What does Steward do?

Drive a pull request on this repository to green — which fast checks to run before pushing, how to read a red check, and what to do about a review comment. Steward is an agent skill from yschimke/compose-ai-tools. Drive a pull request on this repository to green — which fast checks to run before pushing, how to read a red check, and what to do about a review comment.

When should I use Steward?

Steward fits situations like: A review comment; A merge conflict; A scheduled check-in arrives on a PR you opened; were asked to drive.

How do I install Steward in Claude Code?

Run `npx skills add yschimke/compose-ai-tools --skill steward -a claude-code`. Or copy the skill folder (.claude/skills/steward in yschimke/compose-ai-tools) into .claude/skills/steward in your project. Claude Code loads it when a task matches its description.

How do I install Steward in Codex?

Run `npx skills add yschimke/compose-ai-tools --skill steward -a codex`. Or copy the skill folder (.claude/skills/steward in yschimke/compose-ai-tools) into .agents/skills/steward in your project. Codex loads it when a task matches its description.

Can I use Steward in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add yschimke/compose-ai-tools --skill steward -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/steward, .gemini/skills/steward, .github/skills/steward and .opencode/skills/steward in your project.

What does Steward need to run?

Going by SKILL.md and its folder, Steward needs the command-line tools its instructions call (npm).

Does Steward access the network?

SKILL.md contains no URLs. Its commands use npm, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Steward safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Steward use?

Steward is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Steward use?

About 2k tokens (SKILL.md is roughly 7.8k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Steward?

Skills that share tags, products or a category with Steward: Git GitHub Ops (c5inco/compose-pokedexer, 143 stars), Android Development (dpconde/claude-android-skill, 337 stars), Claude Android Ninja (Drjacky/claude-android-ninja, 124 stars) and Composewebview Development (parkwoocheol/compose-webview, 103 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Steward?

yschimke (a GitHub user) maintains it in yschimke/compose-ai-tools, which has 117 GitHub stars. The repository holds 3 skills in this directory. The repository was last updated on October 9, 2026.

Source: yschimke/compose-ai-tools on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.