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.

every cold start
with agent-plus
$ 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
⏱ 0:42
with agent-plus
$ 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.
⏱ 0.04s
▸ One line. Drops you straight into the wizard.
$curl -fsSL youragentplus.xyz/install.sh | sh
▸ Or audit-first from GitHub source
$curl -fsSL https://github.com/osouthgate/agent-plus/releases/latest/download/install.sh | sh

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.

repo-analyze

The ~67-grep + ~60-ls cold-start dance, every time you open an unfamiliar repo. One JSON blob. 127 calls → 1.

$ repo-analyze --pretty
diff-summary

5–20 Read calls to triage a PR ("test? source? config? did the public API change?"). One structured envelope with role + risk per file.

$ diff-summary --staged
skill-plus

"I keep typing this by hand." Mine the session log, scaffold a real skill, audit it, promote it to your marketplace.

$ skill-plus scan | scaffold
skill-feedback

Was that skill any good? Agent self-rates after each use. JSONL on disk. Bundle into a GitHub issue when something's broken.

$ skill-feedback log report submit
agent-plus-meta

Workspace bootstrap, env-var readiness, identity cache, marketplace lifecycle. The wizard that knows which machine you're on.

$ agent-plus-meta init envcheck refresh

+ 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.

your session log (3 weeks)
skill-plus scan
[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
$ skill-plus scan
 3 patterns mined

railway logs --service ×14 (3 sessions)
psql -h staging × 9 (2 sessions)
gh pr view --json × 6 (4 sessions)
# 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.

a mined candidate (raw)
three files. one runs.
candidate.json
{
  "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.
three files. one runs.
.claude/skills/railway-logs/
├── 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.

without the skill (every time)
with the railway-logs skill
$ 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]
⏱ 2:04
with the railway-logs skill
$ 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.
⏱ 0.03s

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
        └────────────────────────────────────────────────────┘
osouthgate/agent-plus
This repo. The 5 universal primitives.
agent-plus-meta marketplace install
<user>/agent-plus-skills
Anyone can publish their own collection. The reference marketplace ships 10 service wrappers — github, vercel, supabase, railway, linear, openrouter, langfuse, hermes, coolify, hcloud.

Reference marketplace

10 service wrappers, ready to install.

Talk to your stack from Claude Code. Coolify, Railway, Vercel, Supabase, Linear, GitHub, and more.

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
↺   next session: scan finds more → propose → scaffold → better skills

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

Something is cooking.

One email when we ship the next thing.

No newsletter. No upsell. No spam. One launch email when there's something worth your inbox.

Email-only. Stored in Netlify Forms. Unsubscribe at any time.