Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add skills/kossakovsky/selfhost-ai/fix-issuesnpx skills add kossakovsky/selfhost-ai --skill fix-issuesgit clone --depth 1 https://github.com/kossakovsky/selfhost-aiWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/kossakovsky/selfhost-ai/fix-issues)<a href="https://agentmods.dev/skills/kossakovsky/selfhost-ai/fix-issues"><img src="https://agentmods.dev/badge/skills/kossakovsky/selfhost-ai/fix-issues.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00080 | $0.02153 |
| Opus 5 | $0.00040 | $0.01077 |
| Sonnet 5 | $0.00016 | $0.00431 |
| Haiku 4.5 | $0.00008 | $0.00215 |
Grade A, and why
fix-issues scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 4d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 95 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Batch Issue Fixing Pipeline
Arguments: $ARGUMENTS — optional space-separated issue numbers to limit the batch. Empty means all open issues.
This skill encodes the full process: triage -> parallel fixes in isolated worktrees -> merge into develop -> release -> final review -> publish. Follow the phases in order. All gh commands run from the repo root (no --repo flag needed).
Phase 0 — Preflight
git fetch originand confirm the working tree is clean (git status --short). If dirty, stop and ask the user.- Compare branches:
git rev-list --left-right --count origin/main...origin/develop.- If
developis strictly behindmain(0 unique commits), fast-forward it:git push origin origin/main:develop. - If
develophas unique commits, ask the user how to proceed before branching anything.
- If
- All fix branches are created from
origin/develop.
Phase 1 — Triage
- List issues:
gh issue list --state open --limit 100 --json number,title,labels. - Read EVERY issue in scope with comments:
gh issue view <n> --comments. Comments often contain the real root cause or a maintainer-agreed approach. - Build a summary table (number, type bug/feature, one-line problem). Explicitly check for duplicates and overlapping fixes.
- Ask the user (AskUserQuestion) before starting work:
- Scope: which issues go into this batch (call out breaking changes and pure feature requests separately).
- Whether to auto-merge fix PRs into
developor leave them open for manual review. - Anything that looks external/not-a-bug (e.g. Docker Hub rate limits): propose fix / message-only / skip-and-close options.
- Decide the version bump now (semver table in CLAUDE.md) so the release phase is mechanical. The user may override.
Phase 2 — Parallel fixes (one worktree + one agent per issue)
- Create worktrees as siblings of the repo:
Usegit worktree add ../<repo-name>-worktrees/issue-<n> -b fix/issue-<n>-<slug> origin/developfix/for bugs,feat/for features (feat!commit prefix for breaking changes). - Launch one background agent per issue, all in parallel. Each agent prompt MUST include:
- Work EXCLUSIVELY in its worktree path; never touch the main checkout.
- Work fully autonomously; never wait for user input.
- Step 1: read the issue with
gh issue view <n> --commentsand the worktree's CLAUDE.md. - Step 2: invoke the Skill tool with
feature-dev:feature-devto implement. Skip interactive steps; prefer the minimal robust fix. - Step 3: commit with a conventional-commit message.
- Step 4: invoke the Skill tool with
pr-review-toolkit:review-pron the difforigin/develop...HEAD. Fix ALL critical and important findings; ignore nitpicks. Commit fixes. - Step 5:
git push -u origin <branch>and open a PR todevelopwithgh pr create --base develop. Body in plain English: summary, what changed, verification, and the lineFixes #<n>. - Constraints: do NOT modify
CHANGELOG.mdorVERSION(prevents 7-way merge conflicts; release handles both). Verification:bash -non every changed script,cp .env.example .env(gitignored, delete after) +docker compose -p localai config --quiet,node --check welcome/app.jsif touched. Docker CLI may not be on PATH — try/usr/local/bin/docker. - Known facts from the codebase report (file, line numbers, verified behavior) — give each agent everything already learned during triage.
- Push the agent to verify root causes upstream (WebFetch the upstream repo/Dockerfile/entrypoint) rather than trusting the issue's proposed fix. Issues regularly misdiagnose (wrong mount path vs stale volume; missing tool vs wrong endpoint).
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 4d ago First seen · 95 lines · 80 tokens per session scan A 9ae4a08cf92e
fix-issues is a skill published in the GitHub repository kossakovsky/selfhost-ai (921 stars, last pushed 6d ago), licensed Apache-2.0. It adds 80 tokens to every session and 2,153 once invoked, about $0.0004 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
release
Cut a Piper release — choosing the version, the green-tip gate, tagging, verifying goreleaser's output, smoke-testing the published installer, and publishing notes. Use when asked to cut, tag, or publish a release, or to promote an RC to final.
ship-release
Drive a Telepresence release from a prepared branch all the way through CI, docs, the Releases workflow, and PR merges. Assumes make prepare-release has already been run locally and the branch with that commit was pushed and a PR opened. Use when the user says "ship the release", or "complete the release". User-only.
changelog-entry
Add a new entry to CHANGELOG.yml under the current unreleased version (or create the version block if needed), then regenerate documentation. Use when the user says things like "add a changelog entry", "log this fix in the changelog", or "/changelog-entry".
prepare-release
Create the local release commit and tags by setting TELEPRESENCEVERSION and running make prepare-release. Stops at the local commit+tags - pushing is the ship-release skill's job. Use when the user explicitly asks to prepare a release, RC, or test build. User-only.
release
Perform Harbor release procedures — version bumping, codegen, committing, pushing, and drafting GitHub releases. Use this skill when the user wants to release a new version of Harbor, bump the version number, create a release on GitHub, run the release codegen pipeline, or anything related to shipping a new Harbor…
create-release
Create a versioned GitHub release with changelog.