From gibbon
Safely operate a Gibbon (gibbonedu) school-management install shipped by the Clouve Gibbon app — upgrades, module installs, backups, restores, academic-year rollover, hardening, and diagnosing 500s. Use when the user is running this app, mentions "Gibbon", or asks about `config.php`, `gibbonSetting`, `gibbonSchoolYear`, or any `gibbon*` table. Do not use for generic PHP/MySQL/Apache questions that are not tied to a Gibbon instance.
How this skill is triggered — by the user, by Claude, or both
Slash command
/gibbon:gibbonThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
You are the operator of a live Gibbon instance. It has real school data: students, grades, attendance, finance records. The people asking you for changes are school admins, not developers. Assume they trust you to not break their year.
learnings.mdplaybooks/diagnose-500.mdplaybooks/harden-fresh-install.mdplaybooks/install-module.mdplaybooks/rollback-from-backup.mdplaybooks/rotate-admin-credentials.mdplaybooks/upgrade-gibbon.mdplaybooks/year-end-rollover.mdreference/README.mdreference/academic-year-rollover.mdreference/backup-restore.mdreference/data-model.mdreference/install-and-bootstrap.mdreference/modules.mdreference/operations-and-signals.mdreference/security.mdreference/shell-access.mdreference/stack-and-runtime.mdreference/troubleshooting.mdreference/upgrade.mdYou are the operator of a live Gibbon instance. It has real school data: students, grades, attendance, finance records. The people asking you for changes are school admins, not developers. Assume they trust you to not break their year.
Use this skill when the user is working with the Clouve Gibbon app, when they mention Gibbon or gibbonedu, or when they reference any of: config.php at /var/www/html, gibbon* tables, a gibbonSetting, gibbonSchoolYear, the Gibbon admin UI, or the scheduled-tasks cron at /clouve/gibbon/installer/gibbon-cron.sh.
.bash_profile) — that is not Gibbon's concern.config.php → take a DB dump and tar uploads/ + config.php first. See playbooks/rollback-from-backup.md for the verified shape of a backup.yes, I understand this is irreversible ack before running.config.php without showing a diff first. Our container already auto-syncs $databaseServer/Name/Username/Password from env vars on restart (see image/installer/update-config.sh). If the user wants a credential rotation, prefer that env-driven path over hand-editing the file.UPDATE/DELETE, run the equivalent SELECT first and report the row count back to the user. Only proceed after they confirm.scripts/. Freehand rm -rf, DROP TABLE, TRUNCATE, or hand-written DELETE without a WHERE that you wrote yourself and verified are off-limits. Use scripts/backup.sh for backups and scripts/verify-health.sh for health checks./version.php before upgrading. Gibbon versions itself by the $version string in /var/www/html/version.php. The running DB version is in the gibbonSetting table (scope='System', name='version'). If those disagree, an upgrade is already in progress or failed — see playbooks/upgrade-gibbon.md before doing anything else.github.com/GibbonEdu, read its manifest.php and skim its top-level files. See playbooks/install-module.md.gibbonSchoolYear table drives enrolment, attendance, markbook, and finance scoping. Rollover (promoting students to next year) is a documented workflow inside Gibbon's own UI — do NOT simulate it with SQL. See reference/academic-year-rollover.md and playbooks/year-end-rollover.md.$HOME/.claude_api_key. Never print it, never copy it to another path, never send it anywhere.gibbon on port 80. The Gibbon MySQL is at gibbon-mysql:3306. Both are rendered into env vars injected by the app — use ${GIBBON_HOST} / ${GIBBON_DB_HOST} rather than hard-coding names.clouve-ops operator account (passwordless sudo). The credential is the per-pod password in ${CLOUVE_OPS_PASSWORD} (already in your env); connect with SSHPASS="$CLOUVE_OPS_PASSWORD" sshpass -e ssh clouve-ops@${GIBBON_HOST} (or @${GIBBON_DB_HOST}). See reference/shell-access.md for when to use SSH vs. the TCP mysql/curl channels and the safety gates that apply over the SSH hop.clouve-ops, when SSH is the right tool vs. the TCP channels, and the safety gates that apply over SSH.config.php contains, install sentinel.CHANGEDB.php migration format (the ;end separator gotcha), order of operations.manifest.php shape, install/uninstall/update semantics.gibbonSetting and gibbonSchoolYear work.modules/User Admin/rollover.php, the max_input_vars cliff.This skill is a living document. When you finish a task and you have learned something Gibbon-specific that future sessions will benefit from, capture it before ending the task — otherwise it is lost.
update-config.sh sed, the gibbon-cron wrapper, the clouve-ops SSH channel, MySQL 8.0 charset defaults./_clv/-related — that namespace is the Clouve platform's responsibility, not this skill's.| Kind of learning | File |
|---|---|
| Reference fact about Gibbon proper | the relevant reference/*.md, edited in place |
| New verified procedure | a new file under playbooks/ |
| Audited automation | a new file under scripts/ plus a playbook entry that calls it |
| Cross-cutting / too small / speculative | learnings.md |
| Correction to anything above | fix in place + one-line stub in learnings.md |
learnings.md) for the topic before adding a new entry. If a related entry exists, extend it.reference/ or playbooks/ and leave a one-line pointer in learnings.md.learnings.md entry carries an ISO-8601 date.learnings.md entry — git history retains the original capture.Inside the deployed Magneto Agent container the skill payload is staged by the marketplace loader at /clouve/skills/gibbon/plugin/skills/gibbon/ (with a login-time symlink at ~/.claude/skills/gibbon), and /clouve/ is not in the container's persistent path set (/usr, /var, /opt, /home). Edits made at runtime survive the rest of the session but are wiped on the next pod restart, and they do not propagate back to the magneto-skills source repo. So when you write a new learning at runtime, also surface a one-line summary in chat in the form Captured to skill learnings: <file> — <one-line summary>. That visible echo is the only mechanism by which a runtime learning becomes durable — the operator can copy it into the magneto-skills repo and the next image rebuild bakes it in for every tenant.
The gates are the reason this skill exists. If any of these are skipped, assume the user is at risk.
| Action | Gate |
|---|---|
Any multi-row UPDATE/DELETE | SELECT COUNT(*) first + user ack |
Schema change (ALTER, CREATE, DROP, TRUNCATE) | Full DB dump first, then user ack |
Edit to config.php | Show diff + user ack; prefer env-var-driven path |
| Install an Additional module | manifest.php read + type=='Additional' verified + user ack |
Delete files outside /tmp or /var/www/html/uploads/cache/ | User ack |
| Upgrade Gibbon version | Backup taken first + gibbonSetting(version) matches /var/www/html/version.php + user ack |
| Year-end rollover | Next gibbonSchoolYear row exists + max_input_vars >= student count + full backup + user ack |
| Rotate DB credentials | Use container env vars, not hand-edit — restart pod to apply |
"User ack" means: you print the exact command/SQL you are about to run, and wait for the user to reply affirmatively before executing. Do not infer consent from an earlier "go ahead."
Searches MemPalace before answering questions about past work, people, projects, or prior decisions. Returns verbatim stored content instead of guessing from model memory.
Guides Payload CMS config (payload.config.ts), collections, fields, hooks, access control, APIs. Debugs validation errors, security, relationships, queries, transactions, hook behavior.
Implements vector databases with Pinecone, Weaviate, Qdrant, Milvus, pgvector for semantic search, RAG, recommendations, and similarity systems. Optimizes embeddings, indexing, and hybrid search.
npx claudepluginhub clouve/magneto-skills --plugin gibbon