Monitor CI
nrwl/nx
Monitor Nx Cloud CI pipeline and handle self-healing fixes. An agent skill from nrwl/nx.
Audit a Sidequest board for completed, stale, duplicate, or superseded tickets, then safely close clear cases.
$ npx skills add Eigenwise/eigenwise-toolshed --skill groom -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install Eigenwise/eigenwise-toolshed groom --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/Eigenwise/eigenwise-toolshed.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/sidequest/skills/groom .claude/skills/groom && rm -rf skills-srcUse ~/.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/
Install the "groom" agent skill from https://github.com/Eigenwise/eigenwise-toolshed/tree/main/plugins/sidequest/skills/groom into .claude/skills/groom/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "groom", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/Eigenwise/eigenwise-toolshed/tree/main/plugins/sidequest/skills/groomType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add Eigenwise/eigenwise-toolshed --skill groom -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install Eigenwise/eigenwise-toolshed groom --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Eigenwise/eigenwise-toolshed.git skills-src && mkdir -p .agents/skills && cp -r skills-src/plugins/sidequest/skills/groom .agents/skills/groom && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "groom" agent skill from https://github.com/Eigenwise/eigenwise-toolshed/tree/main/plugins/sidequest/skills/groom into .agents/skills/groom/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "groom", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Eigenwise/eigenwise-toolshed --skill groom -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install Eigenwise/eigenwise-toolshed groom --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Eigenwise/eigenwise-toolshed.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/plugins/sidequest/skills/groom .cursor/skills/groom && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "groom" agent skill from https://github.com/Eigenwise/eigenwise-toolshed/tree/main/plugins/sidequest/skills/groom into .cursor/skills/groom/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "groom", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/Eigenwise/eigenwise-toolshed.git --path plugins/sidequest/skills/groom--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add Eigenwise/eigenwise-toolshed --skill groom -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install Eigenwise/eigenwise-toolshed groom --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Eigenwise/eigenwise-toolshed.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/plugins/sidequest/skills/groom .gemini/skills/groom && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "groom" agent skill from https://github.com/Eigenwise/eigenwise-toolshed/tree/main/plugins/sidequest/skills/groom into .gemini/skills/groom/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "groom", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install Eigenwise/eigenwise-toolshed groomInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add Eigenwise/eigenwise-toolshed --skill groom -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/Eigenwise/eigenwise-toolshed.git skills-src && mkdir -p .github/skills && cp -r skills-src/plugins/sidequest/skills/groom .github/skills/groom && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "groom" agent skill from https://github.com/Eigenwise/eigenwise-toolshed/tree/main/plugins/sidequest/skills/groom into .github/skills/groom/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "groom", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Eigenwise/eigenwise-toolshed --skill groom -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install Eigenwise/eigenwise-toolshed groom --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Eigenwise/eigenwise-toolshed.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/plugins/sidequest/skills/groom .opencode/skills/groom && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "groom" agent skill from https://github.com/Eigenwise/eigenwise-toolshed/tree/main/plugins/sidequest/skills/groom into .opencode/skills/groom/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "groom", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
groomAudit a Sidequest board for completed, stale, duplicate, or superseded tickets, then safely close clear cases.
Groom is an agent skill from Eigenwise/eigenwise-toolshed. Audit a Sidequest board for completed, stale, duplicate, or superseded tickets, then safely close clear cases. Use for board grooming, cleanup, or ticket audits.
Its SKILL.md is about 3.4k 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 DevOps & Cloud. The repository describes itself as: Six Claude Code plugins for the work that keeps coming back: repo maps, conditional rules, ticketed parallel work, extra subscription models, local usage metrics, and guided setup. The licence is MIT.
6 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 92c16cd. It shows what the files ask for, not the result of running them.
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.
Shell commands in SKILL.md call:
gitFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use git, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Groom loads about 3.4k tokens when it runs. Until then it costs about 42 tokens; SKILL.md has 1,564 words of instructions outside code blocks.
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.
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.
The full file from Eigenwise/eigenwise-toolshed at commit 92c16cd, republished under its MIT licence (© Eigenwise). 1,564 words, ~3,389 tokens.
.claude/skills/groom/SKILL.md (or your agent's skills folder).A grooming pass is a periodic reality check on the board, not a one-off cleanup. Tickets drift: a fix lands but the ticket stays open, a decision supersedes an old plan, an agent claims something and goes idle, two tickets describe the same work from different sessions, or a real chunk of work landed in the repo with no ticket ever filed for it. This skill runs that check end to end: sweep, categorize, act on what's safe, ask about what isn't, apply the answers, report.
Reference pass this is modeled on: the 2026-07-07 temporal-RL grooming pass — 17 tickets closed
with evidence-bearing notes, several dead claims released, and new frontier tickets filed with
depends-on links for the work that had already been decided but never ticketed. That's the shape a good
pass takes: mostly mechanical cleanup, a handful of real judgment calls surfaced to the user, nothing
silently dropped.
sidequest rm a ticket. Closing means an evidence-bearing sidequest groom-close <ref> --reason <evidence>, not deletion. This explicit control-plane operation is for board grooming only; routed executor done cannot close released repository work.
If a ticket is genuinely bogus (duplicate, never should have existed), close it with a comment
explaining why — the record stays, just off the active board.pulse <ref> reports
claim.reclaimable (observed_stop, idle, or abandoned), and claims sweep releases exactly
those. If it is null, leave the claim alone even if you don't recognize the --by — another session
may genuinely be mid-work. Never pass --force to release or
claim during a grooming pass; force overrides a live claim, which is exactly what this guardrail
forbids.done (or gets marked superseded) with a
comment that cites something concrete — a commit hash, a file path, a doc section, or a quoted decision
from another ticket's thread. "Looks done" is not evidence; git log --oneline -- <path> turning up the
actual commit is.Pull the full board and the recent project history in parallel:
sidequest list --json # every open ticket, this project
sidequest list --status doing --json # claims in flight, with claim.by / claim.at
sidequest list --archived --json # already-archived, for duplicate-checking only
sidequest profile hygiene --json # deterministic profile promotion, drift, and retirement proposals
git log --oneline -30 # what actually landed recentlyFor each open ticket, read its thread before judging it — a prior agent may have already left the evidence you need:
sidequest comments <ref>Then cross-check each ticket against reality: does the repo already contain the change it describes
(git log --oneline -- <path>, git log --grep "<keyword>", read the file itself)? Does a newer ticket
or a doc override its plan? Is its claim stale?
Also sweep the other direction — work with no ticket: skim recent commits and any docs/changelogs for changes that don't trace back to an open or done ticket. That's a gap, not a cleanup, and it's filed, not fixed, in this pass (see Step 3).
Sort every ticket (and every untracked chunk of repo work you found) into one bucket:
doing, held by an agent, and pulse reports claim.reclaimable (its
executor was observed to stop, or it went idle past a backstop). Evidence: that verdict plus the
absence of recent activity. A claim that is merely old is not this bucket.Keep a running list per bucket as you go — you'll need it for both the act step and the report.
Keep the profile hygiene result as a separate proposal list. The command already did the detection in plain code: identical canonical local rows become promotion candidates; large or foreign-base local layers become repoint or fork/promotion candidates; unreferenced user or migrated profiles become retirement candidates. Don't reproduce those checks with an LLM and don't auto-apply any of them.
Everything in (a)–(e) gets acted on now, each with a real command and, for closures, a cited comment:
# (a) done but open — close with the evidence
sidequest comment SQ-12 -m "Already shipped: see commit a1b2c3d (2026-07-05), which added the retry
path this ticket asked for. Closing as done."
sidequest groom-close SQ-12 --reason "Already shipped in commit a1b2c3d; see the preceding evidence comment."
# (b) superseded — close, point at what replaced it
sidequest comment SQ-9 -m "Superseded by SQ-40's design: the plan changed from per-request retries to
a single backoff queue (see SQ-40 comment thread, 2026-07-06). This ticket's original approach won't be
built."
sidequest groom-close SQ-9 --reason "Superseded by SQ-40's design; see the preceding evidence comment."
# (c) dead claim — release, don't force, only when pulse says reclaimable
sidequest release SQ-21 --by <you> --status todo
sidequest comment SQ-21 -m "Claim by agent-xyz was reclaimable (observed_stop): its executor stopped
while holding the claim, with no commit or comment since. Released back to todo."
# (d) duplicate — close the newer/thinner one, point at the survivor
sidequest comment SQ-33 -m "Duplicate of SQ-31 (same ask: retry queue for the ingest worker, filed a day
earlier). Closing this one; work continues on SQ-31."
sidequest groom-close SQ-33 --reason "Duplicate of SQ-31; see the preceding evidence comment."
# (e) missing ticket — file it, with complexity + why, link it if it depends on something
sidequest add -t "Backfill retry metrics dashboard" --complexity 5 \
--why "one Grafana panel + one counter in the retry path; scoped, known pattern" \
-d "Work exists in commit a1b2c3d but was never ticketed. Filing after the fact so it's tracked."
sidequest link SQ-50 depends-on SQ-31A ticket in (a), (b) or (d) may still hold a submitted candidate that was never integrated. Two different closures apply, and picking the wrong one gets refused rather than guessed at:
# the candidate DID land (its commit is reachable from the integration target recorded for this ticket)
# plain grooming records it as delivered, no extra flag needed
sidequest groom-close SQ-14 --reason "Candidate a1b2c3d reached this ticket's prepared integration target; see the evidence comment."
# the candidate never landed and no longer merges — record it abandoned, never as a delivery
sidequest groom-close SQ-15 --abandon-submission \
--reason "Candidate f00dfeed forked 61 commits back, no longer merges, and main already fixed this in
9bd41f2; see the evidence comment."--abandon-submission is refused while the candidate is still reachable from the integration target
recorded for that ticket. A later board-target or checkout change does not retarget it, so never merge work
into another branch just to satisfy this guard. Its evidence has to say why the candidate is dead: the fork
depth, that it no longer merges, and where the behavior now comes from instead. "Stale" on its own is not
evidence.
Normalize priorities while you're in each ticket if one is obviously miscalibrated against what you now know (e.g. a "todo/low" ticket for something that turned out urgent, or vice versa) — but only when the evidence you already gathered supports the change; don't relitigate priority calls that aren't part of what you found.
Don't guess on bucket (f), and don't apply a profile hygiene proposal without approval. Group both into a
small number of AskUserQuestion rounds (2-4 questions per round is plenty). Use one question per unclear
ticket, tightly related cluster, or profile proposal. Profile questions name every affected board/profile,
the local-row count and ratio, foreign-base count, and the proposed promotion, repoint, fork, or retirement.
If a promotion group has more than one taxonomy fingerprint, say it needs separate profiles because the
existing promotion command will reject unlike effective taxonomies.
Ticket questions use options like keep / close / re-scope:
"SQ-17 — is this still relevant?"keep as-is, close (superseded/done/dropped), re-scope (needs new complexity/description),
plus a free-text option if the tool supports one.Profile questions use apply proposal / keep local / choose another profile or name. A repoint question
must mention that accepted cleanup removes the listed local rows after selecting the matching profile. A
retirement question names the profile source and confirms that active and archived boards have zero pointers.
Present real findings, not a vague "not sure about this one" — the point of asking is that you already did the legwork and the last mile is a judgment call only the user can make (priorities, whether a feature is still wanted, whether a plan changed for reasons not visible in the repo).
For each answered question, act immediately using the same evidence-comment discipline as Step 3 — the user's answer is the evidence now, so cite it:
sidequest comment SQ-17 -m "Per grooming pass 2026-07-07: user confirmed this is superseded by the new
plan (dropped in favor of X). Closing."
sidequest groom-close SQ-17 --reason "User confirmed this is superseded by the new plan; see the preceding comment."Apply accepted profile proposals with the existing lifecycle commands. Pick the profile id/name from the user's answer, preview repoints, and pass every board from the proposal to promotion:
sidequest profile promote <new-profile> --from-project <source> --project <board-a> --project <board-b>
sidequest profile repoint <from-profile> <to-profile> --dry-run --json
sidequest profile repoint <from-profile> <to-profile>
sidequest profile retire <profile>Only use bulk repoint when every board in its preview was part of the accepted proposal. For one-board
cleanup, select the profile with profile use, then reset each localRowId listed by the proposal. Re-run
sidequest profile hygiene --json after applying the accepted profile choices and report any remaining
proposal. This is a single verification read, not a polling loop.
If the answer is "keep", leave the ticket untouched but note in the report that it was reviewed and confirmed. If "re-scope", update the description/complexity per what the user said and say so in a comment on the ticket.
Close the pass with a short report back to the user (chat, not a ticket comment) covering:
await still pending, a question the user didn't answer, or a
bucket-(f) item you couldn't even turn into a good question yet.Keep the report plain and specific — refs, commit hashes, file paths — not a vague "cleaned things up."
doing ticket with signs of
life — leave it. Grooming is for drift, not for interrupting live work.--project the
same way any other sidequest command does if they want another board.© Eigenwise, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in plugins/sidequest/skills/groom of Eigenwise/eigenwise-toolshed.
Open the folder on GitHubat commit 92c16cd
Groom 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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Groom this skillEigenwise/eigenwise-toolshed | 277 | — | ~3.4k | Automated safety check: Pass | MIT | |
| Monitor CInrwl/nx | 29k | 6 repos | ~4.7k | Automated safety check: Pass | MIT | |
| Terraform and OpenTofu Guideagentscope-ai/QwenPaw | 35k | 6 repos | ~4.2k | Automated safety check: Pass | Apache-2.0 | |
| Vercel Optimize Auditvercel-labs/agent-skills | 32k | 9 repos | ~4.3k | Automated safety check: Pass | None | |
| Openclaw Live Updateropenclaw/openclaw | 392k | — | ~3.7k | Automated safety check: Pass | MIT | |
| Analyze GitHub Action Logswithastro/astro | 63k | 1 repos | ~1.3k | Automated safety check: Pass | Custom licence |
nrwl/nx
Monitor Nx Cloud CI pipeline and handle self-healing fixes. An agent skill from nrwl/nx.
agentscope-ai/QwenPaw
Guidance for writing and testing Terraform and OpenTofu code: module structure, naming, test approaches, CI/CD workflows, state handling and security scanning.
vercel-labs/agent-skills
Runs a metrics-first audit of a deployed Vercel project, gating investigations on real signals to produce ranked, citation-backed cost and performance recommendations.
openclaw/openclaw
Maintain the canonical live OpenClaw main checkout, macOS LaunchAgent-managed Gateway, local macOS app, exact-head main CI, and recurring full release validation.
withastro/astro
Analyze recent GitHub Actions workflow runs to identify patterns, mistakes, and improvements.
kubesphere/kubesphere
Creates and queries KubeSphere users, workspaces and projects and assigns built-in roles, defaulting to least privilege and never deleting anything.
Eigenwise/eigenwise-toolshed
Create or edit a live-rules instruction in the project's atomic rule set.
Eigenwise/eigenwise-toolshed
Create a self-maintaining codebase map in .claude/.codebase-info/.
Eigenwise/eigenwise-toolshed
Set up a Claude Code workspace for a new or existing project, informed by hindsight from the user's whole session history.
Eigenwise/eigenwise-toolshed
Inspect, audit, enable, or disable project live-rules. An agent skill from Eigenwise/eigenwise-toolshed.
Eigenwise/eigenwise-toolshed
Run a read-only health check for Quartermaster and installed Toolshed plugins.
Eigenwise/eigenwise-toolshed
Opt the current project into local Claude Code usage telemetry, or verify its setup.
Categories
Audit a Sidequest board for completed, stale, duplicate, or superseded tickets, then safely close clear cases. Groom is an agent skill from Eigenwise/eigenwise-toolshed. Audit a Sidequest board for completed, stale, duplicate, or superseded tickets, then safely close clear cases.
Groom fits situations like: devOps & Cloud work in your project.
Run `npx skills add Eigenwise/eigenwise-toolshed --skill groom -a claude-code`. Or copy the skill folder (plugins/sidequest/skills/groom in Eigenwise/eigenwise-toolshed) into .claude/skills/groom in your project. Claude Code loads it when a task matches its description.
Run `npx skills add Eigenwise/eigenwise-toolshed --skill groom -a codex`. Or copy the skill folder (plugins/sidequest/skills/groom in Eigenwise/eigenwise-toolshed) into .agents/skills/groom in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add Eigenwise/eigenwise-toolshed --skill groom -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/groom, .gemini/skills/groom, .github/skills/groom and .opencode/skills/groom in your project.
Going by SKILL.md and its folder, Groom needs the command-line tools its instructions call (git).
SKILL.md contains no URLs. Its commands use git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
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.
Groom is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.4k tokens (SKILL.md is roughly 14k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Groom: Monitor CI (nrwl/nx, 29k stars), Terraform and OpenTofu Guide (agentscope-ai/QwenPaw, 35k stars), Vercel Optimize Audit (vercel-labs/agent-skills, 32k stars) and Openclaw Live Updater (openclaw/openclaw, 392k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
Eigenwise (a GitHub user) maintains it in Eigenwise/eigenwise-toolshed, which has 277 GitHub stars. The repository holds 14 skills in this directory. The repository was last updated on October 7, 2026.
Source: Eigenwise/eigenwise-toolshed on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.