Agent skill

Janitor Swipe

by khendzel in khendzel/skills-janitor

Tinder for your Claude Code skills. An agent skill from khendzel/skills-janitor.

MITAuto-check passed

Install Janitor Swipe

skills CLI
$ npx skills add khendzel/skills-janitor --skill janitor-swipe -a claude-code

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

GitHub CLI
$ gh skill install khendzel/skills-janitor janitor-swipe --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/khendzel/skills-janitor.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/janitor-swipe .claude/skills/janitor-swipe && 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
janitor-swipe
GitHub stars
123
Used in
1 other repo
Token cost
~1.5k tokens
SKILL.md length
694 words
Files
1
Skills in repo
5
Repo updated
First seen
Licence
MIT

At a glance

Tinder for your Claude Code skills. An agent skill from khendzel/skills-janitor.

  • Works in 3 steps: Tell the user to run it via ! → Explain the card and controls → Scope-aware deletion (the critical…
  • The user wants to bulk-clean their skill collection
  • SKILL.md covers Overview, Prerequisites, Instructions and Output, plus 3 more sections
  • Calls bash

What it does

Janitor Swipe is an agent skill from khendzel/skills-janitor. Tinder for your Claude Code skills. Reviews a sorted deck of every installed skill and lets you swipe keep / delete / skip on each one. Use when the user wants to bulk-clean their skill collection, triage unused skills, or do interactive skill cleanup. Trigger with '/janitor-swipe'.

Its SKILL.md is about 1.5k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts. Compatibility notes: Designed for Claude Code. The TUI itself requires an interactive terminal (the user runs it with the '!' prefix); requires bash 3.2+ and a terminal of at…

It works with Bash. The repository describes itself as: Tinder for your Claude Code skills, subagents and MCP servers. Swipe away what wastes context, scan for prompt injection, get honest token costs. Fixes what it finds and actually… The licence is MIT.

When your agent uses it

  • The user wants to bulk-clean their skill collection
  • Triage unused skills
  • Do interactive skill cleanup
  • With /janitor-swipe

Example prompts

  • “/janitor-swipe”
  • “/janitor-swipe”

Requirements

  • Compatibility (from SKILL.md): Designed for Claude Code. The TUI itself requires an interactive terminal (the user runs it with the '!' prefix); requires bash 3.2+ and a terminal of at least 50x22.
  • Pre-approved tools (allowed-tools): Read, Bash(bash:*)

Workflow steps

3 steps, taken from the step headings in SKILL.md.

  1. Tell the user to run it via !
  2. Explain the card and controls
  3. Scope-aware deletion (the critical correctness point)

What it can do on your machine

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

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • Read
    • Bash(bash:*)

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • bash

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

  • Network

    No URLs in SKILL.md.

    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.

  • Compatibility

    Designed for Claude Code. The TUI itself requires an interactive terminal (the user runs it with the '!' prefix); requires bash 3.2+ and a terminal of at least 50x22.

    From compatibility in the SKILL.md frontmatter.

Context cost

Janitor Swipe loads about 1.5k tokens when it runs. Until then it costs about 74 tokens; SKILL.md has 694 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
~1.5k

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 khendzel/skills-janitor at commit 4b42f39, republished under its MIT licence (© khendzel). 694 words, ~1,482 tokens.

Download SKILL.mdSave it as .claude/skills/janitor-swipe/SKILL.md (or your agent's skills folder).
name
janitor-swipe
description
Tinder for your Claude Code skills. Reviews a sorted deck of every installed skill and lets you swipe keep / delete / skip on each one. Use when the user wants to bulk-clean their skill collection, triage unused skills, or do interactive skill cleanup. Trigger with '/janitor-swipe'.
allowed-tools
Read, Bash(bash:*)
compatibility
Designed for Claude Code. The TUI itself requires an interactive terminal (the user runs it with the '!' prefix); requires bash 3.2+ and a terminal of at least 50x22.
argument-hint
[--deck <file>] [--apply <decisions.json>]
version
1.7.0
author
Krzysztof Hendzel <krzysztoff.hendzel@gmail.com>
license
MIT
tags
skills, triage, tui, cleanup, context-window

Janitor Swipe — interactive skill triage

A bash TUI that puts every installed skill into a sorted deck and lets the user swipe keep / delete / skip on each card.

Overview

The deck is sorted "most likely waste first" — heavy, never-used skills appear at the top, so most users hit ← delete a few times and quit before reviewing the whole list. The swipe is scope-aware and honest about what it can delete: user-scope skills are actually removed (after confirmation), plugin skills are flagged for review instead.

Prerequisites

  • Claude Code with the skills-janitor plugin installed (provides scripts/swipe.sh and swipe-build-deck.sh)
  • bash 3.2+ (the stock macOS bash works; no external dependencies)
  • An interactive terminal at least 50 columns x 22 rows — the TUI reads single keypresses

Instructions

Step 1: Tell the user to run it via !

Inside Claude Code, the Bash tool's stdin is non-interactive, so the keypress reader can't work. The user must invoke it via the ! prefix so the command runs in their actual shell:

!bash ~/.claude/skills/skills-janitor/scripts/swipe.sh

When the user asks for /janitor-swipe, tell them to run that command in their terminal. Do NOT try to run it yourself via the Bash tool — it will error with "needs an interactive terminal".

Step 2: Explain the card and controls

Each card shows:

  • Skill name + position in deck (e.g. [3 / 47])
  • Context cost split: X always · Y on trigger (description tokens are permanent; body loads only when the skill fires)
  • Usage count and last invoked date
  • Scope (user, project, plugin · <plugin-name>, etc.)
  • 3-line truncated description
  • Verdict label (e.g. "Unused + heavy on trigger — prime delete candidate")

Controls:

  • ← / h / d — stage for delete
  • → / l / k — keep
  • ↓ / j / s / space — skip
  • u — undo (back up one card, clear its decision)
  • i — inspect (show full SKILL.md description)
  • q / Esc — quit (still shows summary for decisions made so far)
Step 3: Scope-aware deletion (the critical correctness point)
ScopeWhat happens on swipe left
user, project, codex-user, codex-projectPath is staged for rm -rf (or unlink if symlink)
plugin, plugin-sourceNOT deleted — flagged under "Plugins to review" at the apply screen, with a hint to run /plugin uninstall <plugin> if enough skills from that plugin were swiped
mcp-user, mcp-project (v1.7)Server entry is removed from its config file (~/.claude.json / .mcp.json) with a timestamped .bak backup — reversible
mcp-pluginNOT edited — flagged for plugin review like plugin skills

MCP server cards show real call counts from session transcripts instead of token guesses (schemas live server-side). An unused connected server ranks high — its tool schemas load into context for nothing.

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

Output

After the last card (or q), an apply screen shows keep/skip/delete counts, the deletion list with paths, the "frees X always-loaded + Y on-trigger" token summary, the plugin review breakdown, and a prompt:

  • y — apply deletions immediately (logged to ~/.skills-janitor/log.jsonl with path and frontmatter snapshot)
  • N — cancel
  • save — write decisions to ~/.skills-janitor/swipe-<timestamp>.json for later application via swipe.sh --apply <file>

Error Handling

  1. Error: "Swipe needs an interactive terminal" Solution: The command was run through the Bash tool. Have the user run it with the ! prefix in their own terminal.

  2. Error: "Swipe needs at least 50 columns / 22 rows" Solution: The terminal window is too small — resize and retry.

  3. Error: No skills to swipe Solution: Nothing is installed (exits 0 with a message) — suggest /janitor-discover to find skills.

  4. Error: The user wants a non-interactive view instead Solution: Point them at /janitor-report or /janitor-value for the same data in list form.

Edge cases handled by the script: Ctrl-C mid-swipe restores the terminal; symlinks are unlinked, never followed; old saved decks without the v1.5 token-split fields still load.

Examples

Example 1: Standard triage

Input: "/janitor-swipe" or "help me clean up my skills interactively"

Output: Explain the flow in two sentences, then give the exact command to run: !bash ~/.claude/skills/skills-janitor/scripts/swipe.sh — and offer to review the results afterwards.

Example 2: Resume saved decisions

Input: "I saved my swipe decisions yesterday — apply them."

Output: !bash ~/.claude/skills/skills-janitor/scripts/swipe.sh --apply ~/.skills-janitor/swipe-<timestamp>.json (list the files in ~/.skills-janitor/ to find the right one).

Resources

  • TUI script (plugin-relative): {baseDir}/../../scripts/swipe.sh; deck builder: {baseDir}/../../scripts/swipe-build-deck.sh
  • Deletion log: ~/.skills-janitor/log.jsonl
  • /janitor-report — same data as a non-interactive list
  • /janitor-value — the token + usage data underneath the swipe deck
  • /janitor-fix --prune — automated broken-symlink cleanup, no interactive review

© khendzel, MIT. 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 skills/janitor-swipe of khendzel/skills-janitor.

Open the folder on GitHubat commit 4b42f39

Used in 1 other repository

We found 1 copy of this SKILL.md (exact, near-identical or edited) in other folders, from 1 other GitHub owner. This page covers the copy in khendzel/skills-janitor, which our catalogue first saw on October 7, 2026.

Compare with similar skills

Janitor Swipe 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.

Janitor Swipe compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Janitor Swipe this skillkhendzel/skills-janitor1231 repos~1.5kAutomated safety check: PassMIT
Hook Development for Claude Code Pluginsanthropics/claude-plugins-official38k10 repos~4.1kAutomated safety check: NotesApache-2.0
Plugin Settings Patternanthropics/claude-plugins-official38k7 repos~3kAutomated safety check: PassApache-2.0
Mole Bug Patternstw93/Mole70k—~2kAutomated safety check: PassGPL-3.0
Neat-Freak Knowledge CloseoutKKKKhazix/khazix-skills21k—~1.9kAutomated safety check: PassMIT
E2Ecallstack/react-native-pager-view3.4k1 repos~2.1kAutomated safety check: PassMIT

Similar skills

  • Hook Development for Claude Code Plugins

    anthropics/claude-plugins-official

    Official

    Explains how to write Claude Code plugin hooks, both prompt-based checks and bash commands, for events such as PreToolUse, Stop and SessionStart.

    38k GitHub starsUsed in 10 repos~4.1k tokens
    Agent WorkflowsAuto-check: notes
  • Plugin Settings Pattern

    anthropics/claude-plugins-official

    Official

    Shows how Claude Code plugins keep per-project settings and state in .claude/plugin-name.local.md files with YAML frontmatter and a markdown body.

    38k GitHub starsUsed in 7 repos~3k tokens
    Agent WorkflowsAuto-check passed
  • A catalog of recurring bug shapes in the Mole Mac cleaner, used to review safety-sensitive diffs for deletion safety, unbounded commands, shell traps and weak tests.

    70k GitHub stars~2k tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Neat-Freak Knowledge Closeout

    KKKKhazix/khazix-skills

    Brings project docs, agent rule files, authorized memory and leftover workspace files back in line with what the code and runtime actually do at the end of a work session.

    21k GitHub stars~1.9k tokensUpdated 8 days ago
    Agent WorkflowsAuto-check passed
  • E2E

    callstack/react-native-pager-view

    Agentic end-to-end tests with e2e, the e2e runner. An agent skill from callstack/react-native-pager-view.

    3.4k GitHub starsUsed in 1 repo~2.1k tokens
    Testing & QAAuto-check passed
  • Runs a spec-driven workflow from PRD to epic to GitHub issues to parallel agents, with status, standup and blocked-work reports from bundled scripts.

    8.4k GitHub stars~1.1k tokensUpdated 6 mo ago
    Product & Project ManagementAuto-check passed

More from khendzel/skills-janitor

  • Janitor Fix

    khendzel/skills-janitor

    Automatically fix skill problems (safe preview first). An agent skill from khendzel/skills-janitor.

    123 GitHub starsUsed in 1 repo~1.1k tokens
    Auto-check passed
  • Janitor Report

    khendzel/skills-janitor

    Full health check of all your skills in one report. An agent skill from khendzel/skills-janitor.

    123 GitHub starsUsed in 1 repo~1.4k tokens
    Auto-check passed
  • Janitor Value

    khendzel/skills-janitor

    Show whether each skill is earning its context-window cost — combined tokens-used view sorted by waste.

    123 GitHub starsUsed in 1 repo~1.4k tokens
    Auto-check passed
  • Janitor Discover

    khendzel/skills-janitor

    Find new skills on GitHub or check a specific skill before installing.

    123 GitHub stars~1.6k tokensUpdated 9 days ago
    Auto-check passed

Works with

Questions about Janitor Swipe

What does Janitor Swipe do?

Tinder for your Claude Code skills. An agent skill from khendzel/skills-janitor. Janitor Swipe is an agent skill from khendzel/skills-janitor. Tinder for your Claude Code skills.

When should I use Janitor Swipe?

Janitor Swipe fits situations like: the user wants to bulk-clean their skill collection; triage unused skills; do interactive skill cleanup; with /janitor-swipe.

How do I install Janitor Swipe in Claude Code?

Run `npx skills add khendzel/skills-janitor --skill janitor-swipe -a claude-code`. Or copy the skill folder (skills/janitor-swipe in khendzel/skills-janitor) into .claude/skills/janitor-swipe in your project. Claude Code loads it when a task matches its description.

How do I install Janitor Swipe in Codex?

Run `npx skills add khendzel/skills-janitor --skill janitor-swipe -a codex`. Or copy the skill folder (skills/janitor-swipe in khendzel/skills-janitor) into .agents/skills/janitor-swipe in your project. Codex loads it when a task matches its description.

Can I use Janitor Swipe 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 khendzel/skills-janitor --skill janitor-swipe -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/janitor-swipe, .gemini/skills/janitor-swipe, .github/skills/janitor-swipe and .opencode/skills/janitor-swipe in your project.

What does Janitor Swipe need to run?

Going by SKILL.md and its folder, Janitor Swipe needs the command-line tools its instructions call (bash). Its frontmatter pre-approves these tools: Read, Bash(bash:*). Compatibility (from SKILL.md): Designed for Claude Code. The TUI itself requires an interactive terminal (the user runs it with the '!' prefix); requires bash 3.2+ and a terminal of at least 50x22..

Does Janitor Swipe access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Janitor Swipe 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 Janitor Swipe use?

Janitor Swipe is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Janitor Swipe use?

About 1.5k tokens (SKILL.md is roughly 5.9k 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 Janitor Swipe?

Skills that share tags, products or a category with Janitor Swipe: Hook Development for Claude Code Plugins (anthropics/claude-plugins-official, 38k stars), Plugin Settings Pattern (anthropics/claude-plugins-official, 38k stars), Mole Bug Patterns (tw93/Mole, 70k stars) and Neat-Freak Knowledge Closeout (KKKKhazix/khazix-skills, 21k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Janitor Swipe?

khendzel (a GitHub user) maintains it in khendzel/skills-janitor, which has 123 GitHub stars. The repository holds 5 skills in this directory. The repository was last updated on September 30, 2026.

Source: khendzel/skills-janitor on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.