Agent skill

GitHub Housekeeping

by kdeldycke in kdeldycke/dotfiles

Backfill and curate labels and milestones across a repository's whole issue and PR history.

BSD-2-ClauseAuto-check: notesProduct & Project Management

Install GitHub Housekeeping

skills CLI
$ npx skills add kdeldycke/dotfiles --skill github-housekeeping -a claude-code

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

GitHub CLI
$ gh skill install kdeldycke/dotfiles github-housekeeping --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/kdeldycke/dotfiles.git skills-src && mkdir -p .claude/skills && cp -r skills-src/dotfiles/.agents/skills/github-housekeeping .claude/skills/github-housekeeping && 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
github-housekeeping
GitHub stars
173
Token cost
~3.7k tokens
SKILL.md length
2,049 words
Files
1
Skills in repo
25
Repo updated
First seen
Licence
BSD-2-Clause

At a glance

Backfill and curate labels and milestones across a repository's whole issue and PR history.

  • Works in 4 steps: Already labeled items need nothing:… → Keyword heuristics derived from each… → Agent batches for the residual: parallel… → …
  • Tasks that involve Project management
  • SKILL.md covers Context and Instructions
  • Calls gh and git; reaches pypi.org

What it does

GitHub Housekeeping is an agent skill from kdeldycke/dotfiles. Backfill and curate labels and milestones across a repository's whole issue and PR history. Design the taxonomy, classify in bulk, detect AI slop, and reconstruct past releases.

Its SKILL.md is about 3.7k 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. Recommended model: Sonnet.

It sits in Product & Project Management, covering Project management. It works with GitHub. The repository describes itself as: 🍎 macOS dotfiles for Python developers. The licence is BSD-2-Clause.

When your agent uses it

  • Tasks that involve Project management

Example prompts

  • “/github-housekeeping”

Requirements

  • Compatibility (from SKILL.md): Designed for Claude Code. Recommended model: Sonnet.
  • Pre-approved tools (allowed-tools): Bash, Read, Write, Edit, Grep, Glob, WebFetch, Agent

Workflow steps

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

  1. Already labeled items need nothing: record them as settled.
  2. Keyword heuristics derived from each label's own description. Score title hits heavily (a title match with no rival label is high…
  3. Agent batches for the residual: parallel subagents, ~70 items each, given the taxonomy with calibration examples, item titles plus bodies…
  4. Fallback: anything dropped by an agent gets classified by hand so coverage stays total.

What it can do on your machine

Read from SKILL.md and the folder at commit 7947d0f. 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:

    • Bash
    • Read
    • Write
    • Edit
    • Grep
    • Glob
    • WebFetch
    • Agent

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • gh
    • git

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

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • pypi.org

    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. Recommended model: Sonnet.

    From compatibility in the SKILL.md frontmatter.

Context cost

GitHub Housekeeping loads about 3.7k tokens when it runs. Until then it costs about 49 tokens; SKILL.md has 2,049 words of instructions outside code blocks.

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

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: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NotePre-approves every shell command (allowed-tools: Bash)SKILL.md
    allowed-tools: Bash, Read, Write, Edit, Grep, Glob, WebFetch, Agent

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 kdeldycke/dotfiles at commit 7947d0f, republished under its BSD-2-Clause licence (© kdeldycke). 2,049 words, ~3,678 tokens.

Download SKILL.mdSave it as .claude/skills/github-housekeeping/SKILL.md (or your agent's skills folder).
name
github-housekeeping
description
Backfill and curate labels and milestones across a repository's whole issue and PR history. Design the taxonomy, classify in bulk, detect AI slop, and reconstruct past releases.
allowed-tools
Bash, Read, Write, Edit, Grep, Glob, WebFetch, Agent
compatibility
Designed for Claude Code. Recommended model: Sonnet.
argument-hint
[audit|labels|milestones|slop]

Context

!gh label list --limit 50 2>/dev/null || echo "NO_GH_ACCESS" !gh api "repos/{owner}/{repo}/milestones?state=all&per_page=100" --jq 'length' 2>/dev/null

Instructions

You bring a repository's issue-tracker metadata up to date: a small label taxonomy applied to every issue and PR (open and closed), and one milestone per published release with every shipped PR assigned to the release it landed in. The method scales to thousands of historical items because classification runs against a local cache, mutations are paced and resumable, and every decision carries provenance a human can review.

Argument handling
  • audit (default when $ARGUMENTS is empty): measure coverage gaps (unlabeled items, milestone-less items, missing milestones), report counts, and propose a plan. No mutations.
  • labels: design or load the taxonomy, classify the backlog, review, then apply.
  • milestones: create/repair milestones from release history, then assign every shipped PR and resolved issue.
  • slop: sweep for AI-generated junk using the closed-without-comment signal, review, then label.
Ground rules for mass mutations
  • Plan first, mutate second. Build the full plan offline, dump it to a reviewable markdown file, and get explicit approval before touching the repository. Reputational labels always go through a human.
  • Pace writes. One gh edit every 2 seconds, sequential, never parallel. Split long runs into time-budgeted chunks (stay under shell timeouts) that mark each item done in the local cache as they go, so an interrupted run resumes exactly where it stopped.
  • Verify live after applying. Re-query with the search API (no:milestone, -label:"x" filters) rather than trusting the local cache. Items created mid-run will not be in your plan: sweep for stragglers at the end.
  • Sync the cache after every manual intervention. When the maintainer applies or corrects something by hand, fold it back into the cache and plan before continuing.
Label taxonomy design

Always propose repomatic's bundled defaults as the starting point, whatever the repository already carries. Render them before discussing anything else:

shell-session
$ repomatic init labels --output-dir {scratch_dir}

The labels.toml it writes holds the whole shipped set: a default profile every repository gets, plus an awesome profile applied only to awesome-* repos. Nothing committed to the repository is authoritative: that file is ephemeral, regenerated into a scratch directory right before sync-labels reads it, and a repo's own labels.extra / labels.extra-files entries are folded in only at sync time, so read pyproject.toml too for the effective taxonomy.

Present the design as a diff between that effective set and the live gh label list above:

  • Live label matching a default: map it. The defaults carry rename-from lists migrating GitHub's stock names (bug, documentation, invalid, wontfix, …) to their emoji equivalents in place, preserving issue and PR associations. Never delete-and-recreate to rename.
  • Live label with no default: propose it as a [[tool.repomatic.labels.extra]] entry in pyproject.toml (with rename-from when it is a spelling variant of a default), or propose retiring it. A label kept outside the config is not what sync-labels applies, so it drifts back on the next run.
  • Default with no live label: it lands on the next sync, so classify the backlog against it now instead of waiting.

Depart from the defaults only for a domain axis they cannot express, and land the departure in the config (labels.extra, or labels.extra-files for a multi-profile set) so it survives. Designing a taxonomy from scratch is the last resort, for maintainers who explicitly want off the shared set.

The sections below name labels by their default (🪫 AI slop, 🚫 wont do/fix, 🐛 bug, …): substitute the repository's own names wherever it has departed.

Retiring a label is a migration, not a deletion

sync-labels only creates and updates. Dropping a label from the configuration never removes it from the repository, it just stops managing it, so the label stays live on every issue and pull request still carrying it. A repository reorganizing its taxonomy (folding per-item labels into an ecosystem group, renaming a family) therefore accumulates orphans that no longer appear in any config and that only a maintainer can clear. lint-repo lists them in its undeclared-labels warning, which never fails the run.

Prefer a rename to a create-and-delete, because GitHub keeps every issue and pull request attached across a rename while a deletion drops the association outright. rename-from is how that is declared, and it is strictly one-to-one: labelmaker renames only when the target does not exist and exactly one listed source does. Two live sources is an unconditional error, and a target that already exists falls to on-rename-clash, which [defaults] pins to error so the clash surfaces instead of passing silently.

Two consequences worth knowing before writing the field:

  • An N-to-1 merge cannot be automated. Name the single source carrying the most history, let the rename move it wholesale, and hand-migrate the remainder. Listing every source instead errors and migrates nothing.
  • Order matters against the sync. Once a sync has created the new label, a rename into it can only clash. So declare rename-from in the same change that introduces the label, never after; a fold whose target is already live has missed the window and is left with a manual migration.

Check what is actually attached before planning any of this:

shell-session
$ gh issue list --label "{label}" --state all --limit 200
$ gh pr list --label "{label}" --state all --limit 200

An orphan with nothing on it is a plain deletion, and much of a taxonomy change usually turns out to be exactly that.

Local cache

Fetch the complete inventory once into SQLite (a {repo}-github.sqlite file at the repo root, gitignored) instead of hammering the API per item:

  • Page through issues and PRs with GraphQL (100 per page): number, type, title, body, state, stateReason, timestamps, mergedAt, author, labels, url.
  • A label_plan working table holds one row per (item, proposed label) with confidence (high/medium/low), method (how it was decided), and a one-line rationale. Every item must end with at least one row: full coverage is a hard invariant.
  • Enrich lazily with extra tables as heuristics demand: who closed each item (ClosedEvent.actor), what closed it (ClosedEvent.closer PR), merge commit SHAs.
Bulk label classification

Hybrid pipeline, cheapest signal first:

  1. Already labeled items need nothing: record them as settled.
  2. Keyword heuristics derived from each label's own description. Score title hits heavily (a title match with no rival label is high confidence) and cap body-match contributions so long bodies cannot fake a signal. This confidently resolves roughly half of a typical backlog for free.
  3. Agent batches for the residual: parallel subagents, ~70 items each, given the taxonomy with calibration examples, item titles plus bodies truncated to ~500 chars, and the heuristic's best guess as a hint. Demand strict machine-parseable output (number|label|confidence|rationale, one line per item, every item exactly once) and validate on merge: unknown labels, missing items, and unparseable lines get retried or fall through.
  4. Fallback: anything dropped by an agent gets classified by hand so coverage stays total.

Review gates before applying: all low-confidence calls, plus every proposed 🪫 AI slop/🚫 wont do/fix, go in a "needs review first" section of the plan, open items sorted first. Offer to open candidate batches in the browser (xargs open < urls.txt) so the maintainer can eyeball them quickly.

Show full SKILL.md (903 more words)Show less
AI-slop detection

Any two signals warrant 🪫 AI slop, the same bar /awesome-triage applies; one alone never does, because the label is reputational.

The first signal is behavioral rather than textual: a maintainer closing an item with zero comments is a drive-by rejection. It counts only past a date cutoff, calibrated against the earliest item this repository has already confirmed as AI junk. Absent one, start from late 2025 and move it earlier only on evidence.

The second comes from the content tells: the item "fixes" an API that does not exist in the codebase, near-identical PRs from different throwaway accounts claiming the same fabricated bug, raw coding-agent output pasted as the title, unfilled PR templates on non-trivial changes, generic "comprehensive analysis" boilerplate.

  • Zero-comment close past the cutoff and at least one content tell: propose 🪫 AI slop.
  • Zero-comment close on its own, or anything created before the cutoff: propose 🚫 wont do/fix. The close is documented; an AI attribution is not.
  • Exemptions beat any signal count: items authored or closed as part of routine process (release checklists match the zero-comment close!), and anything from trusted co-maintainers.

When /awesome-triage is present (it ships to awesome-* repositories only), its catalog widens where a second signal may come from: surface tells in its §3, and contributor and repository provenance in its §9 (account age, profile completeness, commit cadence, AI bot co-authors, solo-contributor humanness), each with a gh api one-liner. Where that skill is absent, the tells above are the whole pool.

Hygiene for confirmed junk: 🪫 AI slop and 🚫 wont do/fix items carry only that label (strip component labels) and no milestone (nothing shipped).

Milestones

One closed milestone per published release, named exactly like the GitHub release it collects: the tag, v prefix included (v8.4.2). Descriptions keep the bare version, which names the release rather than the tag.

  • Due date = actual release date, sourced from the package index: https://pypi.org/pypi/{pkg}/json, min upload_time_iso_8601 across that version's files. Where the repository publishes no package, or a version predates its index history, fall back to the GitHub release's own publishedAt (gh release view v8.4.2 --json publishedAt): publication stamps it once, and immutable releases keep a published release from being re-cut, so it stays a faithful record. GitHub floors due_on to the date. Backfill milestones for ancient releases the tracker predates.
  • Pre-releases fold into the final milestone: no v8.0.0a1/v8.0.0rc1 milestones; the v8.0.0 description notes "Covers the whole 8.0.0 release cycle including the 8.0.0a1 and 8.0.0rc1 pre-releases."
  • Yanked releases keep their milestone, with the description recording PyPI's own yank reason: "🛑 Yanked from PyPI: {reason}." Same wording and same reason as the changelog's [!CAUTION] admonition for that release; the emoji stands in for the alert, which does not render in a milestone description.
  • Planned-but-never-released milestones (a v8.5 that never shipped) get deleted, not closed.
  • Only unreleased milestones (v9.0.0, the next dev version) stay open and dateless.
Release archaeology: which milestone does a PR belong to?

Waterfall for every merged PR, most authoritative source first:

  1. Changelog references: parse {pr}N`` (or #N) mentions under each ## Version X heading. The changelog is maintainer-curated truth.
  2. Git tag containment: git describe --tags --contains --exclude '*.x' {merge_commit} on a full clone, stripping the ~N/^N suffix. Fold prerelease tags into their final release.
  3. Date fallback (no merge commit recorded, or tags too coarse for old history): first release published at or after mergedAt.
  4. Merged after the latest release: the open dev milestone.

Systematic corrections the raw waterfall gets wrong:

  • Release vX.Y.Z PRs merge after their own tag ships, so containment lands them one release late. Trust the version in the title.
  • Branch-sync PRs near release boundaries: when a live milestone is already set, it usually encodes maintainer intent better than containment. Trust live.
  • Changelog-vs-live conflicts get individual review: wording like "completing the partial fix from {pr}N" proves N shipped earlier than the section citing it.
  • Closed-unmerged PRs get no milestone: nothing shipped.

Then propagate to issues:

  • A closed issue whose ClosedEvent.closer is a merged PR inherits that PR's milestone (and, when it has none of its own, that PR's labels).
  • Issues closed as DUPLICATE inherit the milestone of their canonical issue, so stumbling on the duplicate still tells you which release addressed it. GitHub's MarkedAsDuplicateEvent is rarely populated: fall back to reading the closing comments for "duplicate of #N".
  • Issues closed by hand with no linkable PR are left alone: inventing a milestone would be guesswork.
GitHub API techniques
  • Batch reads with GraphQL aliases: 40-50 items per query via i123: issue(number: 123) {...}. timelineItems(itemTypes: [CLOSED_EVENT], last: 1) yields both actor (who closed) and closer (the PR/commit that closed it).
  • REST pagination: put ?state=all&per_page=100 in the path; --paginate concatenates JSON arrays that break naive json.load.
  • gh pr edit --milestone <name> cannot resolve closed milestones. Assign by number instead: gh api -X PATCH repos/{owner}/{repo}/issues/{n} -F milestone={milestone_number} (works for PRs too: they are issues in the REST API).
  • Labels are fine by name: gh issue|pr edit N --add-label "x" --remove-label "y", several flags per call to make one atomic edit per item.
  • Search API for verification: gh api -X GET search/issues -f q="repo:{owner}/{repo} is:pr no:milestone" and -label:"x" negations give instant gap counts.
Wrap-up

Report what changed with counts per label/milestone, what was left alone and why (closed-unmerged PRs, unlinkable issues), and flag the review file for anything applied at low confidence. Regenerate the plan markdown so it reflects the applied state, and keep the SQLite cache: the next housekeeping run starts from it.

© kdeldycke, BSD-2-Clause. 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 dotfiles/.agents/skills/github-housekeeping of kdeldycke/dotfiles.

Open the folder on GitHubat commit 7947d0f

Compare with similar skills

GitHub Housekeeping 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.

GitHub Housekeeping compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
GitHub Housekeeping this skillkdeldycke/dotfiles173—~3.7kAutomated safety check: NotesBSD-2-Clause
CCPM Project Managementautomazeio/ccpm8.4k—~1.1kAutomated safety check: PassMIT
Project Managerpwrdrvr/openclaw-codex-app-server265—~1.5kAutomated safety check: PassMIT
Find Project Anomaliespenpot/penpot61k—~1.2kAutomated safety check: PassMPL-2.0
PublishQ00/ouroboros6.2k—~2.7kAutomated safety check: PassMIT
Gh Read Inspectoreclipse-rdf4j/rdf4j420—~950Automated safety check: PassBSD-3-Clause

Similar skills

  • 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
  • Project Manager

    pwrdrvr/openclaw-codex-app-server

    Manage GitHub issues and the GitHub Project board for the current repository, while keeping the local tracker in sync.

    265 GitHub stars~1.5k tokensUpdated 1 mo ago
    Product & Project ManagementAuto-check passed
  • Check a GitHub milestone against the Main project board, report the five anomaly types to tmp/<MILESTONE-ANOMALIES.md, and fix missing milestone assignments on request.

    61k GitHub stars~1.2k tokensUpdated today
    Product & Project ManagementAuto-check passed
  • Publish

    Q00/ouroboros

    Publish Seed specification as GitHub Issues for team-based project management

    6.2k GitHub stars~2.7k tokensUpdated today
    Product & Project ManagementAuto-check passed
  • Gh Read Inspector

    eclipse-rdf4j/rdf4j

    Retrieve GitHub issues, pull requests, and milestones with read-only, whitelisted gh commands only.

    420 GitHub stars~950 tokensUpdated today
    Product & Project ManagementAuto-check passed
  • Manages GitHub issues and project boards with swarm coordination: issue creation and triage, issue-to-task conversion, progress tracking and stale issue cleanup.

    816 GitHub starsUsed in 6 repos~7.1k tokens
    Product & Project ManagementAuto-check passed

More from kdeldycke/dotfiles

All 25 skills in this repo
  • Agent Config Self Tune

    kdeldycke/dotfiles

    Audit and tune the configuration of coding agents across Claude Code and pi - settings files (settings.json, settings.local.json), permission rules, instruction files (CLAUDE.md, AGENTS.md), skill…

    173 GitHub stars~3.4k tokensUpdated 3 days ago
    Auto-check: notes
  • Audit Repo Issues

    kdeldycke/dotfiles

    Analyze a GitHub repository's issues and PRs to find unaddressed feature requests, dismissed ideas, maintenance signals, and opportunities relevant to the current project.

    173 GitHub stars~2.5k tokensUpdated 3 days ago
    Auto-check passed
  • Brand Assets

    kdeldycke/dotfiles

    Create project logo and banner SVGs, then export them to light and dark PNG variants.

    173 GitHub stars~4.7k tokensUpdated 3 days ago
    Auto-check passed
  • Fill Web Form

    kdeldycke/dotfiles

    Fill a web form using data extracted from local documents (PDFs, images, spreadsheets).

    173 GitHub stars~2.3k tokensUpdated 3 days ago
    Auto-check passed
  • Rename With Dates

    kdeldycke/dotfiles

    Rename documents and files (PDFs, images, screenshots, etc.) by reading their content to extract the effective/publication date, then renaming them with a "YYYY-MM-DD - Clear descriptive title.ext"…

    173 GitHub stars~3.5k tokensUpdated 3 days ago
    Auto-check passed
  • Repomatic Test Matrix

    kdeldycke/dotfiles

    Choose what a repository's CI test matrix covers. An agent skill from kdeldycke/dotfiles.

    173 GitHub stars~2.2k tokensUpdated 3 days ago
    Auto-check: notes

Works with

Questions about GitHub Housekeeping

What does GitHub Housekeeping do?

Backfill and curate labels and milestones across a repository's whole issue and PR history. GitHub Housekeeping is an agent skill from kdeldycke/dotfiles. Backfill and curate labels and milestones across a repository's whole issue and PR history.

When should I use GitHub Housekeeping?

GitHub Housekeeping fits situations like: tasks that involve Project management.

How do I install GitHub Housekeeping in Claude Code?

Run `npx skills add kdeldycke/dotfiles --skill github-housekeeping -a claude-code`. Or copy the skill folder (dotfiles/.agents/skills/github-housekeeping in kdeldycke/dotfiles) into .claude/skills/github-housekeeping in your project. Claude Code loads it when a task matches its description.

How do I install GitHub Housekeeping in Codex?

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

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

What does GitHub Housekeeping need to run?

Going by SKILL.md and its folder, GitHub Housekeeping needs the command-line tools its instructions call (gh and git). Its frontmatter pre-approves these tools: Bash, Read, Write, Edit, Grep, Glob, WebFetch, Agent. Compatibility (from SKILL.md): Designed for Claude Code. Recommended model: Sonnet..

Does GitHub Housekeeping access the network?

SKILL.md names 1 domain. In commands or code: pypi.org; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.

Is GitHub Housekeeping safe to install?

Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.

What licence does GitHub Housekeeping use?

GitHub Housekeeping is published under the BSD-2-Clause licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does GitHub Housekeeping use?

About 3.7k tokens (SKILL.md is roughly 15k 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 GitHub Housekeeping?

Skills that share tags, products or a category with GitHub Housekeeping: CCPM Project Management (automazeio/ccpm, 8.4k stars), Project Manager (pwrdrvr/openclaw-codex-app-server, 265 stars), Find Project Anomalies (penpot/penpot, 61k stars) and Publish (Q00/ouroboros, 6.2k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains GitHub Housekeeping?

kdeldycke (a GitHub user) maintains it in kdeldycke/dotfiles, which has 173 GitHub stars. The repository holds 25 skills in this directory. The repository was last updated on October 4, 2026.

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