agentsclimarketplace

Janitor

Skill jsolly/agent-skills/skills/janitor

Use when the user says `/janitor`, or wants to drain the open **issues and PRs** you or Dependabot created across all `~/code` repos. One idempotent pass — scan every child repo, keep only self- and Dependabot-authored items (never third-party), and for each either **merge the PR** or **implement the issue**. PRs: get them green (update-branch / rebase, conflict + lockfile resolution, flaky retry) and — for dependency bumps — read the changelog and adapt the repo to breaking changes before merging (majors get the full migration-guide upgrade), and for your own PRs fix the failing checks from the PR's stated intent and merge when green. Issues: implement the requested change in a worktree, `/ship` it (review fleet + CI) as a PR closing the issue, and merge when green + review-clean. Escalate only what it can't safely adapt or implement. A bare `/janitor` arms its own 5-minute loop (`/janitor once` for a single pass) and stops that loop itself once the backlog is drained. NOT for reviewing, implementing, or merging third-party / fork contributions.From its SKILL.md

Install
npx -y skills add jsolly/agent-skills --skill janitor

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
  • 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

5.8 KB, ~1.2k tokens by cl100k_base, as published. Nobody here has run it

Janitor

A background maintainer for authorized open issues and PRs across every git repo under ~/code. One invocation is one idempotent pass: PR → make correct, green, and merge; issue → implement, /ship, and merge when green + review-clean. GitHub labels, comments, linked PRs, and checks are the durable state between passes. This skill is narrow standing authorization bounded by the author, green, review-fleet, and HOLD gates.

Invocation modes

  • Bare /janitor: if already inside an active /loop iteration, run one pass and exit. Otherwise invoke the loop skill with 5m /janitor; let its first iteration run the first pass and do not also run one inline.
  • /janitor once: run one pass without arming a loop.
  • Drain termination: stop the loop when zero actionable authorized items remain, including when every remaining item is HELD for a human. Keep looping while any item can advance next pass.
  • Schedule footer: every pass report (and the initial arming confirmation) includes last-run and next-run times in the machine's local clock, the armed interval, and whether the loop is unbounded-until-drain or a fixed pass count (references/reporting-and-loop.md).
  • Read references/reporting-and-loop.md for exact loop, launchd, drain, and reporting decisions.

Required progressive loading

  1. Before any mutation, read references/invariants-and-holds.md.
  2. For every authorized PR, read references/pr-drain.md.
  3. For every Dependabot PR, also read references/dependabot-upgrades.md.
  4. For every authorized issue, read references/issue-triage.md.
  5. Before concurrency decisions or ending the pass, read references/reporting-and-loop.md.
  6. Read references/gotchas.md only when a pass hits a recurring GitHub-state, mergeability, lockfile, or lifecycle failure that the route playbook does not resolve.

Do not preload route-specific playbooks for item types the pass did not find.

One-pass orchestration

  1. Resolve SELF with gh api user --jq .login.
  2. Scan only primary checkouts (~/code/*/ whose .git is a directory). Resolve each canonical slug from that repo's own remote and deduplicate by slug; never construct an owner from a path.
  3. Enumerate open PRs and issues per slug. Immediately exclude drafts and every author other than SELF or Dependabot. Third-party and fork items are read-only.
  4. Route PRs through references/pr-drain.md:
    • Dependabot bumps also load references/dependabot-upgrades.md; every major must be researched, adapted, validated, labeled janitor-prepped, and only then armed or merged.
    • Self PRs recover intent from title, body, linked issue, and diff; fix genuine failures from that context, push only to the PR head, and merge only when required checks are green.
  5. Route issues through references/issue-triage.md: check for linked/in-flight work, triage, claim with janitor-implementing, implement in a worktree, run the repo gate, and invoke /ship with Closes #<n>. A /ship stop is a HOLD, never a bypass invitation.
  6. Parallelize independent deep work in separate worktrees; never overlap whole janitor passes.
  7. Emit the terse pass report (including the schedule footer: last/next local times, cadence, bound) and make the loop stop/continue decision. Do not babysit post-merge production deploys in this pass (fleet alerting owns those) — this is not a ban on watching PR CI; green required checks before merge still apply.

Hard stops

  • Never mutate, approve, implement, close, or merge a third-party item.
  • Never merge with red or pending required checks; never weaken, skip, or bypass a gate.
  • Never merge or arm an unprepped Dependabot major.
  • Never author issue work outside /ship, and never merge it without clean review + green CI.
  • Never push to main, force-push, use --admin/--no-verify, or edit in a primary checkout.
  • Never touch a draft or WIP/DO-NOT-MERGE self PR.
  • When correctness needs judgment or cannot be validated, follow the universal JANITOR HOLD: contract and disarm auto-merge. Later passes may maintain held PRs but never land them.

Reference index

  • references/invariants-and-holds.md — PR/issue policy envelopes, hard invariants, universal HOLD.
  • references/pr-drain.md — discovery, classification, self PRs, merge states/mechanics, deploy stance.
  • references/dependabot-upgrades.md — changelog review, majors, migration tools, prep persistence.
  • references/issue-triage.md — idempotency, claim, worktree implementation, /ship, escalation.
  • references/reporting-and-loop.md — bounding, output contract (incl. schedule footer), loop arming/termination, wiring.
  • references/gotchas.md — recurring fleet, GitHub-state, mergeability, and lifecycle failures.

What ships with it: 6 files

41.4 KB alongside SKILL.md

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.