A Claude Code plugin
NightForge is a set of Claude Code skills that sweep your projects while you're away. They pick up production errors, docs that no longer match the code, wasted CI minutes and starved code reviews. Every fix lands as a small pull request you review in the morning.
1. Add the marketplace
claude plugin marketplace add jfreal/nightforge
2. Install the plugin
claude plugin install nightforge@nightforge --scope user
3. Run a skill in Claude Code
/nightforge:codebase-cleanup
Each sweep runs as a scheduled task with its own small config card. When there's nothing new, the report is one line.
coderabbit-sweep finds PRs that hit CodeRabbit's rate limit and spends the next free review on the one that has waited longest.
error-sweep collects errors, dedupes them against the issue tracker, files an issue and opens a fix PR.
docs-sweep audits every repo that opts in and opens a draft PR wherever a page no longer matches its code.
Small PRs, each with evidence and test output. Nothing gets merged until you merge it.
Nine skills in one plugin. Once it's installed they're namespaced, so error-sweep runs as /nightforge:error-sweep.
Scheduled sweeps
Collects production errors, normalizes them to stable signatures, triages each against the real source, files an issue and opens a fix PR from an isolated worktree. Adapters for Netlify, Supabase, Azure Application Insights and GitHub.
Runs sync-docs across every local repo that carries its config. Where the docs drifted, it opens a draft PR. Clean repos get one line.
CodeRabbit's review allowance is shared across all your repos, and PRs that miss it are never retried. This is the retry. Label a PR to put it first in line.
A bot signs up as a new user and logs what it hit to a Notion board. This sweep turns each finding into a fix PR and tracks it through merge and deploy.
On demand
Reads the whole repo, logs every finding with path:line evidence and a size, then ships one branch and one PR per small fix. Bigger findings become issues.
Measures where your CI minutes actually go, down to each cache, then cuts them without cutting coverage. Run it with fix to get a PR.
Links source files to the doc pages that describe them, and flags pages whose sources changed, orphaned pages and lists that no longer match disk.
Writing
Strips the tells of AI-written prose and puts a voice back in.
Turns a rough bug report, request or PR into a short issue about the problem and the behavior you want.
Every sweep follows the same rules.
Sweeps open PRs, issues and drafts. Merging, deploying and touching production stay with you.
Small, separate PRs that are quick to review and easy to revert. Each carries its evidence and test output.
Each finding is re-checked against the current code. A finding that turns out wrong is recorded as rejected, not shipped.
When nothing new turned up, the report is a single line.
A dependency cache that "obviously" saved time made every CI run 71 seconds slower.
ci-cost-sweep came out of that measurement. Its one rule: measure, never assume.
The GitHub repo is its own plugin marketplace. Add it once, then install the plugin.
Installs for every repo you open in Claude Code.
claude plugin marketplace add jfreal/nightforge claude plugin install nightforge@nightforge --scope user
Commit this to the repo's .claude/settings.json. Then each teammate installs once with --scope project.
{
"extraKnownMarketplaces": {
"nightforge": {
"source": { "source": "github", "repo": "jfreal/nightforge" }
}
},
"enabledPlugins": { "nightforge@nightforge": true }
}.claude/skills/ instead. The README has the details.NightForge is plain Markdown skills plus a few dependency-free Python scripts. Nothing contacts an outside service when it's installed. A skill reaches out only when you run it, through CLIs you've already signed in to.