Cut tokens. Kill context bloat. Run 20× faster.
Drop-in plugins for Claude Code that turn 127-tool-call dances into 1-tool-call answers.
The agent calls real stdlib Python scripts. No SDK, no config, no LLM in the loop.
The fifth plugin reads your session log and scaffolds new skills from the patterns you already type.
$ grep -r "package" . $ ls src/ $ cat README.md $ grep -rn "import" src/ $ cat package.json $ grep "next" package.json $ ls components/ $ grep -r "tailwind" . $ cat tsconfig.json $ ls app/ $ cat pnpm-lock.yaml | head $ grep -r "from 'react'" src/ $ cat docker-compose.yml $ ls public/ ... 113 more
$ repo-analyze ✓ 127 tool calls → 1 framework: Next.js styling: TailwindCSS package mgr: pnpm runtime: Docker # everything the agent needed, # in one call. ready to work.
$curl -fsSL youragentplus.xyz/install.sh | sh
$curl -fsSL https://github.com/osouthgate/agent-plus/releases/latest/download/install.sh | sh
PS>powershell -c "irm youragentplus.xyz/install.ps1 | iex"
PS>powershell -c "irm https://github.com/osouthgate/agent-plus/releases/latest/download/install.ps1 | iex"
Both auto-track the latest release. Read the script before running → · What happens when you install → · View on GitHub →
After the script finishes, register with Claude Code so Claude can call the plugins directly:claude plugin marketplace add osouthgate/agent-plus && claude plugin install repo-analyze@agent-plus diff-summary@agent-plus skill-plus@agent-plus skill-feedback@agent-plus agent-plus-meta@agent-plus
Then run /reload-plugins in Claude and ask: "what is this repo?"
Five universal primitives
The framework is five plugins.
Five killer commands.
Each one collapses a specific dance the agent does over and over. Mined from real Claude Code session transcripts, not guessed at.
The ~67-grep + ~60-ls cold-start dance, every time you open an unfamiliar repo. One JSON blob. 127 calls → 1.
5–20 Read calls to triage a PR ("test? source? config? did the public API change?"). One structured envelope with role + risk per file.
"I keep typing this by hand." Mine the session log, scaffold a real skill, audit it, promote it to your marketplace.
Was that skill any good? Agent self-rates after each use. JSONL on disk. Bundle into a GitHub issue when something's broken.
Workspace bootstrap, env-var readiness, identity cache, marketplace lifecycle. The wizard that knows which machine you're on.
+ your own service wrappers. 10 in the marketplace ↓
See it run
repo-analyze on a fresh checkout.
Real flow. Real timings. The agent stops re-discovering what it already discovered last session.
No LLM in the loop. Stdlib Python. Deterministic shape, every time.
It learns from how you actually work.
Three commands you typed 30+ times this week — ready to scaffold.
skill-plus scan reads your session transcripts and surfaces what's worth a real skill. No guessing.
[apr 22 10:32] railway logs --service api [apr 22 10:48] railway logs --service worker [apr 23 11:15] railway logs --service api [apr 23 14:08] railway logs --service api [apr 24 14:31] psql -h staging [apr 25 15:12] railway logs --service worker [apr 25 15:48] gh pr view --json [apr 26 16:02] psql -h staging [apr 28 16:55] gh pr view --json [apr 30 13:38] railway logs --service api ... noise. patterns hidden in 1,400 lines.
$ skill-plus scan ✓ 3 patterns mined
# ready to scaffold →
Then it turns those patterns into deterministic scripts.
Three files in your repo. One of them runs.
Stdlib Python, pre-wired argparse, envelope contract, secret redaction. You fill in the killer-command body.
{
"key": "railway logs --service",
"count": 14,
"sessions": 3,
"first_seen": "2026-04-22",
"last_seen": "2026-05-01",
"args_seen": [
"--service api",
"--service worker",
"--service migrate"
]
}
# useless on its own.
# just data about a habit.
├── SKILL.md ├── bin/railway-logs ← stdlib python └── README.md ──── bin/railway-logs (excerpt) ──── def cmd_logs(args): out = railway.logs(svc=args.service) if args.errors: out = [l for l in out if l.level == "error"] print(json.dumps(out)) # real script. no LLM loop. # every future session uses it.
Then you use it. Every session.
One clean call where 14 used to be.
Same skill, every service, forever. No token cost beyond the call.
$ railway list | grep api $ railway service api $ railway logs [1,402 lines, every level, no time filter, no service grouping...] $ # need errors, last hour $ railway logs --tail 1000 \ | grep -iE "err|exception" \ | head -50 [still messy, no timestamps, repeat for worker + migrate]
$ railway-logs --service api --errors --since 1h ✓ 3 errors in api (last 1h) 10:42 ECONNREFUSED at db.connect() 10:48 TimeoutError at /api/users/:id 11:03 429 RateLimit from openai # one call. same skill, every service.
The marketplace convention
Anyone can publish their own.
<user>/agent-plus-skills on GitHub. Borrowed from Homebrew taps and the GitHub Actions marketplace. No central registry to run.
┌─────────────────────────────────────┐ │ osouthgate/agent-plus (this repo) │ The 5 universal primitives └────────────────┬────────────────────┘ │ agent-plus-meta marketplace install │ ▼ ┌────────────────────────────────────────────────────┐ │ <user>/agent-plus-skills (anyone can publish) │ github-remote, vercel-remote, supabase-remote, │ railway-ops, linear-remote, openrouter-remote, │ langfuse-remote, hermes-remote, coolify-remote, │ hcloud-remote (the reference marketplace) │ + your own at <your-handle>/agent-plus-skills └────────────────────────────────────────────────────┘
Reference marketplace
10 service wrappers, ready to install.
Talk to your stack from Claude Code. Coolify, Railway, Vercel, Supabase, Linear, GitHub, and more.
Is this PR green? Tail the failing job. Wait for the run on a branch. PR triage in one call.
Is prod up? Latest deployment, env vars, domains, tail the logs, trigger a deploy.
Run SQL, apply seed files, audit RLS, find unprotected tables, regenerate types.
What's happening on Railway? Why's staging broken? Recent errors. Service overview.
Add this to Linear. Create issues, list, move statuses. Turn a doc into an issue.
Deploy to Coolify, set env vars, change domains, enable HTTPS, redeploy.
What's my balance? Cheapest model with vision? Free model with tools? Manage keys.
Send traces, export prompts, migrate between instances, monitor a user, fetch a trace.
List Hermes crons, pause one, trigger sync, swap models, chat with the remote Hermes.
SSH into the VPS, reboot, take a snapshot before risky work, list snapshots, server status.
The full picture
How it works.
Click any stage to see what runs.
install.sh + claude plugin install 5 plugins registered — takes about 30 seconds
One command installs all five primitives and registers them with Claude Code.
curl -fsSL https://github.com/osouthgate/agent-plus/releases/latest/download/install.sh | sh
Or register each plugin individually:
for p in agent-plus-meta repo-analyze diff-summary skill-feedback skill-plus; do
claude plugin install "${p}@agent-plus"
done
/reload-plugins
agent-plus-meta init workspace bootstrap — idempotent, safe to re-run any time
Detects your state (new / returning / skill author) and runs the right first command. Creates .agent-plus/. Run it again on any machine.
agent-plus-meta init
agent-plus-meta init --non-interactive --auto # JSON envelope for automation
agent-plus-meta doctor # verify everything is wired up
parallel discovery
repo-analyze what the repo IS
Replaces ~67 grep + ~60 ls cold-start calls. Tech stack, frameworks, entrypoints — one JSON blob, permanent across sessions.
repo-analyze --pretty
repo-analyze --pretty | jq '.frameworks'
skill-plus scan what you DO
Mines your Claude Code session log for repeated patterns. No session data yet? Use inquire to probe a tool directly.
skill-plus scan --pretty
skill-plus inquire gh # probe before you have session data
skill-plus propose skill candidates surface from your patterns
Ranks candidates by repetition count and session coverage. Each candidate gets a short UUID you reference in scaffold.
skill-plus propose
skill-plus list # see all candidates with IDs
skill-plus scaffold <name> --from-candidate <id> SKILL.md + runnable bin written — zero boilerplate
Writes three files: SKILL.md (discovery contract), bin/<name> (stdlib Python, ~200 lines of boilerplate pre-wired), README.md (auto-generated). You fill in the body.
skill-plus scaffold deploy-check --from-candidate 8ad12e3f
skill-plus scaffold --audit # audit SKILL.md of existing skill
"run my deploy check" Claude invokes the bin — no LLM in the loop, data grows each session
Claude reads SKILL.md to discover the skill, then invokes the bin directly. Deterministic output. Every use adds session data that improves the next scan cycle.
skill-feedback log deploy-check --rating 5 --outcome good
diff-summary --base main # PR triage works in the same loop
Every Claude Code session adds tool-call data. scan re-mines after each session and surfaces new candidates as your patterns evolve.
skill-plus scan
skill-plus propose # see what emerged since last session
Claude self-rates every skill use. Aggregated locally as JSONL. Bundle into a GitHub issue to share feedback with the skill author.
skill-feedback log <skill> --rating <1-5> --outcome <good|bad>
skill-feedback report
skill-feedback submit # bundle → GitHub issue
Push to <user>/agent-plus-skills on GitHub. Anyone discovers and installs with one command. No central registry to run.
skill-plus promote deploy-check
agent-plus-meta marketplace search
agent-plus-meta marketplace install deploy-check@osouthgate