/yas-pr
Assemble a pull request that follows this repo's PR template, then open it as a draft. Use when the user wants to open, create, submit, or raise a PR for the current branch.
$ npx -y skills add tmck-code/yet-another-statusline --skill yas-pr --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/yas-pr
Context preview
The summary Claude sees to decide when to auto-load this skill.
Assemble a pull request that follows this repo's PR template, then open it as a draft. Use when the user wants to open, create, submit, or raise a PR for the current branch.
SKILL.md
yas-pr.SKILL.mdname: yas-pr
description: Assemble a pull request that follows this repo's PR template, then open it as a draft. Use when the user wants to open, create, submit, or raise a PR for the current branch.
YAS PR
Fill in this repo's PR template from the current branch, then open a draft PR. Do not invent the template structure — read it from the repo so the two never drift.
Steps
1. **Sanity-check the branch and hooks.** Confirm the current branch is not `main` and has commits ahead of `origin/main`. If it's `main` or has no diff, stop and tell the user. Also check `git config --local --get core.hooksPath`; if it isn't `.github/hooks`, offer to run `make hooks` so the contributor gets pre-commit checks (don't enable it without their yes).
2. **Read the template.** Load `.github/pull_request_template.md`. This is the single source of truth for the section structure — mirror its headings exactly.
3. **Draft Context and Changes.** From `git diff main...HEAD` plus the conversation:
- **Context** — *why* the change is needed; the higher-level goal/problem. Link the related
issue/PRD (`.scratch/<feature>/...`) if one exists. If this PR bumps the version (step 8), reference the new version number here.
- **Changes** — *what* changed and *how* it works. Group related changes and give each group
its own `###` (H3) heading. Under each heading, break the distinct points out into bullet points rather than one long run-on sentence — a wall of text is hard to read. Present these as a draft for the user to edit; don't fabricate motivation you can't infer.
4. **Embed system info.** Run `make pr-info` and paste its output into the System info fenced block verbatim.
5. **Run tests.** Run `uv run pytest`. If green, tick the tests checkbox. If red, show the failures and ask the user whether to fix first or proceed. Optionally also run `uv run ruff check` and `uv run mypy .` and note results.
6. **Benchmark.** Run `make bench` (times this branch vs `main` via a throwaway git worktree). If `hyperfine` is not on PATH, `bench.py` prints an install hint and falls back to a Python timer — before letting it fall back, offer to install hyperfine (`apt`/`brew`/`cargo`) and ask the user; only fall back if they decline. Paste the paste-ready table into the Benchmark block. Tick "N/A — no performance-relevant change" instead only for docs/config-only PRs.
7. **Before/after screenshots.** For any visible rendering/layout/glyph change, fill the **Screenshots / recording** section by **delegating to the `pr-screenshotter` agent** (see its own file for what it does). Drop the table it returns **verbatim** into the Screenshots / recording section.
- Don't render or push images yourself — that's the agent's whole job; you just place the
table it returns.
- If the change isn't visible (logic/docs/config-only), skip this and tick the section's
"N/A — no visible change" escape honestly.
- The agent commits + pushes to the screenshots repo's `main`; flag that to the user when you
present the body, since it's an outward-facing side effect of this PR flow.
8. **Bump the version (only if the statusline's behaviour changed).** If the diff changes the statusline tool or its behaviour — anything a user would notice (rendering, layout, glyphs, config knobs, new stats, output format) — bump the version before creating the PR. Work out the next version from the current one (`uv version --short`) per semver, then run `VERSION=0.X.Y make version/bump`. This is an outward-facing action — it commits **and pushes** the bump (`plugin.json`, `pyproject.toml`, `uv.lock`) — so confirm the new number with the user before running it. Then reference the new version in the Context section.
- Skip the bump for developer-only changes that users never see: tests, the Makefile, hooks,
CI, dev deps, docs, OpenSpec specs, etc. When in doubt about whether a change is user-facing, ask rather than bumping blindly.
9. **Confirm, then create the draft.** Show the fully assembled body (Screenshots section already populated with the agent's table). After the user confirms, run `gh pr create --draft` with that body. Print the PR URL and tell the user to click "Ready for review" when done.
Notes
- Keep checkbox N/A escapes honest — only tick "N/A — no behaviour change" / "N/A — no visible
change" when that's actually true.
- `gh pr create --draft` is an outward-facing action: never run it before the user confirms the
body.
Read more
name: yas-pr description: Assemble a pull request that follows this repo's PR template, then open it as a draft. Use when the user wants to open, create, submit, or raise a PR for the current branch.
YAS PR
Fill in this repo's PR template from the current branch, then open a draft PR. Do not invent the template structure — read it from the repo so the two never drift.
Steps
1. **Sanity-check the branch and hooks.** Confirm the current branch is not `main` and has commits ahead of `origin/main`. If it's `main` or has no diff, stop and tell the user. Also check `git config --local --get core.hooksPath`; if it isn't `.github/hooks`, offer to run `make hooks` so the contributor gets pre-commit checks (don't enable it without their yes).
2. **Read the template.** Load `.github/pull_request_template.md`. This is the single source of truth for the section structure — mirror its headings exactly.
3. **Draft Context and Changes.** From `git diff main...HEAD` plus the conversation:
- **Context** — *why* the change is needed; the higher-level goal/problem. Link the related
issue/PRD (`.scratch/<feature>/...`) if one exists. If this PR bumps the version (step 8), reference the new version number here.
- **Changes** — *what* changed and *how* it works. Group related changes and give each group
its own `###` (H3) heading. Under each heading, break the distinct points out into bullet points rather than one long run-on sentence — a wall of text is hard to read. Present these as a draft for the user to edit; don't fabricate motivation you can't infer.
4. **Embed system info.** Run `make pr-info` and paste its output into the System info fenced block verbatim.
5. **Run tests.** Run `uv run pytest`. If green, tick the tests checkbox. If red, show the failures and ask the user whether to fix first or proceed. Optionally also run `uv run ruff check` and `uv run mypy .` and note results.
6. **Benchmark.** Run `make bench` (times this branch vs `main` via a throwaway git worktree). If `hyperfine` is not on PATH, `bench.py` prints an install hint and falls back to a Python timer — before letting it fall back, offer to install hyperfine (`apt`/`brew`/`cargo`) and ask the user; only fall back if they decline. Paste the paste-ready table into the Benchmark block. Tick "N/A — no performance-relevant change" instead only for docs/config-only PRs.
7. **Before/after screenshots.** For any visible rendering/layout/glyph change, fill the **Screenshots / recording** section by **delegating to the `pr-screenshotter` agent** (see its own file for what it does). Drop the table it returns **verbatim** into the Screenshots / recording section.
- Don't render or push images yourself — that's the agent's whole job; you just place the
table it returns.
- If the change isn't visible (logic/docs/config-only), skip this and tick the section's
"N/A — no visible change" escape honestly.
- The agent commits + pushes to the screenshots repo's `main`; flag that to the user when you
present the body, since it's an outward-facing side effect of this PR flow.
8. **Bump the version (only if the statusline's behaviour changed).** If the diff changes the statusline tool or its behaviour — anything a user would notice (rendering, layout, glyphs, config knobs, new stats, output format) — bump the version before creating the PR. Work out the next version from the current one (`uv version --short`) per semver, then run `VERSION=0.X.Y make version/bump`. This is an outward-facing action — it commits **and pushes** the bump (`plugin.json`, `pyproject.toml`, `uv.lock`) — so confirm the new number with the user before running it. Then reference the new version in the Context section.
- Skip the bump for developer-only changes that users never see: tests, the Makefile, hooks,
CI, dev deps, docs, OpenSpec specs, etc. When in doubt about whether a change is user-facing, ask rather than bumping blindly.
9. **Confirm, then create the draft.** Show the fully assembled body (Screenshots section already populated with the agent's table). After the user confirms, run `gh pr create --draft` with that body. Print the PR URL and tell the user to click "Ready for review" when done.
Notes
- Keep checkbox N/A escapes honest — only tick "N/A — no behaviour change" / "N/A — no visible
change" when that's actually true.
- `gh pr create --draft` is an outward-facing action: never run it before the user confirms the
body.
🌈 Check out the official landing page here: YAS! Yet Another Statusline Most common form is displaying the first few rows, which include the loaded plugins & skills. Extra sections appear below them as needed
Other skills on yas.
- /tmck-code-statusline
Edit the Claude Code statusline renderer safely. Use when touching claude/yas/**/*.py (the yas package), claude/statusline_command.py (the entry shim), claude/mon.py, or related tests under test/. Covers the layered renderer (GradientEngine / BorderRenderer / Renderer), the
Open skill - /yas-demo-text
Convert `make demo/img` statusline snapshots into ANSI-stripped plain text for diffing and PR embedding. Use when comparing statusline renders before/after a change, producing a text representation of a demo scenario, or preparing before/after statusline output for a pull
Open skill - /yas-pr-screenshots
Generate before/after PNG screenshots for a YAS branch's rendering changes, push them to the yas-pr-screenshots repo, and hand back a markdown before/after table for the PR description. Use when the user wants real image screenshots (not ANSI-stripped text) attached to a YAS
Open skill - /config
Reconfigure yet-another-statusline — re-runs the interactive install wizard (glyph mode, theme, labels, token soft-limit, and Python version) against the already-installed plugin and re-wires settings.json, without re-registering the marketplace or reinstalling the plugin. Use
Open skill - /init
Wire yet-another-statusline into Claude Code — writes statusLine.command to settings.json in CLAUDE_CONFIG_DIR (default ~/.claude/). Run once after plugin install, and again after every upgrade to update the versioned path.
Open skill - /uninstall
Unwire yet-another-statusline from Claude Code — removes statusLine.command from settings.json in CLAUDE_CONFIG_DIR (default ~/.claude/) and deletes the renderer's runtime state. Run before (or after) `claude plugin uninstall yas`, which only deletes the plugin cache and leaves
Open skill

