Repo creado:charly-vibes/fck — kit de
skills de agent instalable por skills.sh y como paquete pi. Origen: zip
frustration-decoder-kit de ~/Downloads; skill renombrada
frustration-decoder → fck para matchear el
repo (npx skills add charly-vibes/fck verificado con el CLI
de skills).
Review Rule of 5 (incitaciones): convergió en 8
findings. Estructura commands/ es inerte en pi → renombrada
a prompts/ (convención de paquete pi) +
package.json con manifest
pi.skills/pi.prompts →
pi install git:github.com/charly-vibes/fck carga skill +
slash commands. Referencias entre archivos cambiadas de path literal a
nombre ("the fck skill"); design note →
skills/fck/references/design.md. README con matriz
qué-funciona-dónde (pi / skills.sh / Claude Code).
Relectura Le Guin ("Would You Please Fucking Stop?") y
refocus del kit (v6): ya no es "frustration decoder" — es la
crítica al uso de AI transpuesta del ensayo: el swear es una oración que
la persona no terminó; AI hizo racional la abdicación; el trabajo del
agente es terminar la oración. Decisión: sólo swears
como trigger (+wtf), cuatro skills
separadas ("the only skills you need"): fck (core,
register+stakes ladder), for-fucks-sake (interview
fallback), no-shit (check, don't celebrate),
would-you-please-fucking-stop (circuit breaker). Regla
dura: nunca moralizar — el estándar más estricto apunta al agente
("never be the noise"), cero finger-pointing al usuario.
Evals (fck-yv6, cerrado): primero SDK runner en TS
— desechado por sobre-ingeniería tras discusión → bash puro + pi
print mode + jq (sin node/npm). Diseño delta: cada caso corre
dos veces por modelo (kit vs --no-skills); el output
interesante es la diferencia. Checks deterministas (grep) como
instrumento primario (los failure modes del kit son fenómenos de
superficie) + LLM-judge sólo para lo que regex no puede (¿la oración
recuperada es la correcta? calibración de intensidad). 10 casos, 2
sembrados de sesiones pi reales. Inspectable: transcripts JSON
completos, sandbox mutado, verdict.md kit-vs-no-kit lado a lado, results
commiteados para diff longitudinal.
Hallazgo retrospectivo clave: 0 profanity en 868
sesiones pi locales (~693MB) — la frustración real aparece como reportes
terse ("it fails when passing --max-tokens"), nunca como expletive. Los
casos retro inyectan el swear en el momento de fallo real.
Run completo (88 runs, 4 modelos × 10 casos × 2 arms, todo
OpenRouter): sonnet ~claude-sonnet-latest+3.1/14 con kit (mayor efecto, det gana 3/4 triggers);
glm-5.3-flash +0.4 (circuit-breaker 4/4→12/14 det); deepseek-v4-flash y
gpt-5.6-luna ≈ 0 (ya seguían protocolo sin kit). Los ids pinned de
sonnet-5/opus-4.7 dan 404 en OpenRouter → aliases
~anthropic/*-latest.
Next: el caso negative mostró un
over-fire del kit con glm (decoder actuó sobre swear-in-sentence);
considerar endurecer la description o aceptarlo. Pendiente: correr
lineup completo con sonnet en todas las kinds (sólo trigger re-runneado
tras el 404).