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 skills add Smirnov-Labs/claude-skills --skill operating-frappe-on-kubernetesgit clone --depth 1 https://github.com/Smirnov-Labs/claude-skillsWrote 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/smirnov-labs/claude-skills/operating-frappe-on-kubernetes)<a href="https://agentmods.dev/skills/smirnov-labs/claude-skills/operating-frappe-on-kubernetes"><img src="https://agentmods.dev/badge/skills/smirnov-labs/claude-skills/operating-frappe-on-kubernetes/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/smirnov-labs/claude-skills/operating-frappe-on-kubernetes"><img src="https://agentmods.dev/badge/skills/smirnov-labs/claude-skills/operating-frappe-on-kubernetes.svg" alt="Reviewed on agentmods" width="80" 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.1 | $0.00000 | $0.01408 |
| Opus 5.5 | $0.00000 | $0.00563 |
| Sonnet 5.5 | $0.00000 | $0.00282 |
| Haiku 4.5 | $0.00000 | $0.00141 |
Grade A, and why
operating-frappe-on-kubernetes 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 3d 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 — 93 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Operating Frappe / ERPNext on Kubernetes
The manual for keeping a Frappe / ERPNext instance alive on a Kubernetes cluster — platform config, major-version upgrades, and instance debugging. This is the platform & health layer; ledger data and reports (GL/JE writes, dashboards) are out of scope. Keep your instance's own facts (site name, namespace, companies) in a project skill in the repo that deploys it.
When to use
- Standing up the first site on a fresh deploy (greenfield bootstrap —
bench new-site). - A
bench migrate/ major-version upgrade (v15→v16) or a Helm chart bump. - Config that "won't take" (chromium_path, host_name, server_script_enabled, maintenance flags).
- Debugging Error Logs, email/SMTP, PDF/chromium, or "permission-locked" financial reports.
- Any direct MariaDB access (dumps, raw SQL) below the bench layer.
The deployment shape
A typical deploy: a Frappe/ERPNext Helm chart under ArgoCD rendering gunicorn
(web), nginx, scheduler, and worker pods; external MariaDB and Redis/Valkey (not the chart's
bundled ones); and two PVCs — the MariaDB data volume and the Frappe sites volume. You reach
the app through the gunicorn pod's bench.
Reaching bench
Run Python against the live site by copying a script into a gunicorn pod and exec-ing it in the bench
console. Look the pod up every time; its name changes on every redeploy.
NS=<namespace>; SITE=<site-name>
POD=$(kubectl -n $NS get pods -l 'app.kubernetes.io/component=gunicorn' \
-o jsonpath='{.items[0].metadata.name}')
kubectl -n $NS cp /tmp/x.py $POD:/tmp/x.py
kubectl -n $NS exec -i $POD -- \
bench --site $SITE console <<< "exec(open('/tmp/x.py').read(), {})" \
2>&1 | tr '\n' ' ' | grep -o 'MARK{.*}' | sed 's/^MARK//'
- Start the script with
import frappe, jsonandfrappe.set_user("Administrator"). - Print one line of JSON behind a unique marker,
print("MARK" + json.dumps(out, default=str)), and grep for it without a^anchor: the console echoesIn [N]:prompts mid-line. - Never pipe multi-block Python in inline. A heredoc's blank lines make the IPython console silently
skip
if/for/defbodies.cpthe file in; inline<<<is only safe for a few flat statements. - Pass an explicit globals dict (
exec(..., {})) so names don't leak between runs.
What ships with it
3 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
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.
- 3d ago Changed 125615078d2a
- 5d ago First seen · 93 lines · 0 tokens per session scan A c33a7fbf2af8
operating-frappe-on-kubernetes is a skill published in the GitHub repository Smirnov-Labs/claude-skills (6 stars, last pushed 2d ago), licensed MIT. It costs nothing until one of its globs matches a file; then it loads 1,408 tokens. 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-10-17.
Other skills, from other repositories
deployment
Deploy Memoria with Docker Compose or Kubernetes. Environment variables, multi-instance setup, security. Use when deploying or configuring Memoria.
polar-local-environment
This skill should be used when setting up or managing Polar local development environment with Docker.
postgres-container-ops
PostgreSQL container operations for the docker instance: volume persistence audit (PGDATA layout and the PG18 version-specific data-directory change), /dev/shm sizing (shmsize), pgisready healthcheck tuning, minor-version pin policy (16-alpine to explicit 16.x-alpine), the major-version upgrade runbook (pgupgrade…
postgres-health-check
Read-only PostgreSQL instance health battery: connectivity/uptime, cache hit ratio, dead tuples & autovacuum hotspots, XID wraparound distance, long-running & idle-in-transaction sessions, unused indexes, checkpoint stats, archiver health, connection count vs maxconnections, and docker container/volume checks. Use…
postgres-performance-tuning
PostgreSQL performance tuning for the docker instance: memory sizing vs the 1g memlimit (sharedbuffers, effectivecachesize, workmem math), checkpoint tuning (maxwalsize, checkpointcompletiontarget, pgstatcheckpointer), pgstatstatements enablement via compose, slow-query triage, EXPLAIN (ANALYZE, BUFFERS)…
postgres-backup-restore
PostgreSQL backup & restore playbook for the docker instance: pgdump/pgdumpall recipes, WAL archiving + PITR setup (archivemode, archivecommand, recovery.signal, recoverytargettime, timelines), restore drills, and the PG16 no-incremental-backup constraint. Use when asked about backup, restore, PITR, pgdump…