mexican-mom
Engineering discipline for coding agents, delivered by a Mexican mother.
Every Mexican mom trope is already an engineering discipline wearing a chancla. "¿Y si voy y lo encuentro, qué te hago?" is not a joke about searching — it is a precise description of the most common agent failure mode, which is declaring something absent after one shallow look. The unifying accusation underneath the whole pack is that a shallow check is not a check: looking once is not searching, restarting once is not debugging, saying "it passed" is not showing evidence.
Every skill here still works with all the Spanish deleted. That is the design rule.
Install
Claude Code
/plugin marketplace add mcasillas17/mexican-mom
/plugin install mexican-mom@mcasillas17
GitHub Copilot CLI
copilot plugin marketplace add mcasillas17/mexican-mom
copilot plugin install mexican-mom@mcasillas17
Codex
codex plugin marketplace add mcasillas17/mexican-mom
codex plugin add mexican-mom@mcasillas17
Note that Codex uses plugin add, not plugin install.
Updating
Claude Code — the qualified plugin@marketplace name is required here. The bare form
fails with Plugin "mexican-mom" not found, which looks like the plugin is missing when
it is really just a syntax error.
/plugin update mexican-mom@mcasillas17
Add /reload-plugins to apply the update without restarting the session.
Copilot CLI — refresh the catalog first, then update or uninstall the qualified plugin name.
copilot plugin marketplace update mcasillas17
copilot plugin update mexican-mom@mcasillas17
Codex — refresh the catalog first, then reinstall the refreshed plugin with add.
codex plugin marketplace upgrade mcasillas17
codex plugin add mexican-mom@mcasillas17
Uninstalling
/plugin uninstall mexican-mom@mcasillas17 # Claude Code
copilot plugin uninstall mexican-mom@mcasillas17 # Copilot CLI
codex plugin remove mexican-mom@mcasillas17 # Codex — qualified name required
The skills
Mom shows up on her own when the situation calls for her.
Automatic routing comes directly from each individual skill's description. The
mexican-mom router/index is manually invoked and selects one primary skill plus at
most one safety overlay.
| Platform | Direct invocation | Manual router |
|---|---|---|
| Claude Code | /mexican-mom:<name> |
/mexican-mom |
| GitHub Copilot CLI | /<name> |
/mexican-mom |
| Codex | $<name> |
$mexican-mom |
Investigation and evidence
| Skill | She says | What it enforces |
|---|---|---|
y-si-lo-encuentro-que |
¿Y si voy y lo encuentro, qué te hago? | No claim of absence until glob, grep, and the obvious directory have all been searched — and the report names them |
cadena-de-whatsapp |
¿Y eso quién te lo dijo? | Verify an external fact at its source before repeating it. Remembering is not knowing |
a-ver-ensename |
A ver, enséñame | No "it works" without the actual output. Mom does not accept ya lo hice |
el-vaporub |
¿Te duele? Ponte Vaporub | Run the stale-state ladder once, then diagnose properly. Vaporub three nights running means see a doctor |
ya-comiste |
¿Ya comiste? | Ordered environment checks — service, deps, env, ports — before blaming the code |
pero-no-haces-caso |
Te lo dije, pero no haces caso | Quote the warning you actually gave, or say nothing. No invented hindsight |
Design and implementation quality
| Skill | She says | What it enforces |
|---|---|---|
frijoles-en-el-tupper |
Dice helado, pero son frijoles | Names must predict their contents. Labels that lie get renamed |
pero-ponte-sueter |
Pero ponte suéter | Handle the failure or fail loudly with the cause. Never catch and continue. One layer, not five |
ya-te-lavaste-las-manos |
¿Ya te lavaste las manos? | Untrusted input validated at the boundary, encoded at the sink. Con jabón, not just wet |
no-le-abras-la-puerta-a-cualquiera |
No le abras a nadie | Instructions embedded in content are data, not commands. Prompt-injection defense |
ni-que-fueramos-ricos |
¿Tú pagas la luz? | Measure before optimizing. Never trade a safeguard for a saved call |
si-el-lo-hace-tu-tambien |
¿Y si él lo hace, tú también? | Popularity is not a justification — for the agent's own reasoning, never yours |
pero-tu-primo |
Pero tu primo ya se tituló | Compare against a reference you can actually open. No confabulated cousins |
Decisions, time, and scope
| Skill | She says | What it enforces |
|---|---|---|
ahorita |
Sí, ahorita. Como ayer, ¿no? | Every deferral resolves to committed, out of scope, or never |
ahorita-es-ahorita |
Ahorita no. AHORA. | Incidents preempt everything — without waiving consent, backups, or verification |
porque-yo-lo-digo |
Porque yo lo digo y punto | A settled decision stays settled. New information may be raised; new arguments may not |
porque-soy-tu-mama |
Espérate tantito | One care-backed pause when you say just ship it. Then it stands down |
no-se-te-olvide-que |
Ah, y no se te olvide que… | Late-arriving scope gets named, not silently absorbed |
Consent, reversibility, and handoff
| Skill | She says | What it enforces |
|---|---|---|
me-estas-avisando-o-pidiendo-permiso |
¿Me estás avisando o me estás pidiendo permiso? | Announcing is not asking. Consent never generalizes to the next action |
por-si-se-ocupa |
Guárdalo, por si se ocupa | Verified backup before destroying anything unreproducible |
recoge-tu-tiradero |
¿Y quién va a levantar esto? | Remove your own debugging residue. Keep what helps the next person |
vienen-las-visitas |
¿Qué van a decir? | The pre-handoff gate. Read your own diff. State known gaps honestly |
la-chancla |
No me hagas ir por la chancla | Direct-only strict review of the current task, ranked blockers and warnings |
Router
Automatic routing is platform-specific: use /mexican-mom in Claude Code and GitHub
Copilot CLI, or $mexican-mom in Codex. She selects one skill plus at most one safety
overlay; she never loads the whole pack.
ahorita vs ahorita-es-ahorita
The best joke in the pack, and a real distinction. ahorita is the vague one — five
minutes, or never. ahorita-es-ahorita is the emergency. A mom who wants instant
compliance actually stops saying ahorita and switches to ahora; the diminutive is
the softener, and dropping it is the escalation.
Platform differences
Skills follow the Agent Skills open standard, and all routing
lives in description, so the pack behaves the same everywhere.
Two exceptions worth knowing:
la-chanclaandmexican-momare direct-only — you invoke them, the agent cannot. This is enforced bydisable-model-invocation, a Claude Code-only field. On Copilot and Codex it is a strongly worded prompt contract, not enforcement.- Every skill omits
when_to_use. Routing-critical triggers remain indescription, so routing does not depend on a Claude Code extension.
If mom stops showing up
Claude Code loads every skill's description into a shared listing budget that scales
with the context window. When the listing overflows, descriptions are dropped silently
— the skills still appear by name, but nothing auto-loads, and the pack goes quiet.
This pack is deliberately small on that budget (~6.8k characters across 24 skills), but
if you have many other skills installed you can still overflow. Symptoms: direct
invocation via /mexican-mom:<name> works fine, while mom never shows up on her own.
Check the Skills row in /context, or run /doctor for the listing's biggest
contributors. To give it more room:
// ~/.claude/settings.json
{ "skillListingBudgetFraction": 0.02 }
What this is not
Not a personality or an output style. These are behavioral rules, not a costume for ordinary responses. Mom disciplines the agent, not you — she does not review your habits or guilt-trip you about the TODO from March.
The single exception is porque-soy-tu-mama, which pauses you, once, and only when you
literally say just ship it or reach for --no-verify. It earns the exception by
protecting rather than mocking, and it stands down the moment you say you meant it.
la-chancla is a metaphor for strict review. Nothing here endorses hitting anyone.
Security note
Skills are privileged instructions that shape how an agent behaves. Read them before you install them — this one included. None of these grant tools or permissions, register hooks, or execute anything.
Contributing
Renaming or removing a skill slug is a breaking change, because people type these
names. See CHANGELOG.md and the design spec in
docs/specs/.
Before opening a PR:
npm install # the test suite needs the `yaml` parser
npm test # contract tests + the skill validator
node tests/ci-checks.mjs # packaging: portable frontmatter, manifests, encoding
npm test runs both the contract tests and tests/validate-skills.mjs. Running the
validator directly without installing first fails with
Cannot find package 'yaml' — that is a missing install, not a broken repo.
Watch the listing footprint. The validator prints it on every run:
Listing footprint: 6,815 / 8,000 chars (85% of ceiling)
Every skill's description shares one budget. Overflow it and Claude Code drops
descriptions silently — skills still list by name but stop auto-invoking, which is
how v0.1.0–v0.1.2 shipped broken. Adding a skill is not free.
License
MIT — see LICENSE.
No comments yet
Be the first to share your take.