一键导入
agregar-assertion
Guía conversacional para agregar una nueva assertion a Testy siguiendo el ADN del proyecto (zero-dependency, OO puro, self-testing obligatorio).
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Guía conversacional para agregar una nueva assertion a Testy siguiendo el ADN del proyecto (zero-dependency, OO puro, self-testing obligatorio).
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
| name | Agregar assertion |
| description | Guía conversacional para agregar una nueva assertion a Testy siguiendo el ADN del proyecto (zero-dependency, OO puro, self-testing obligatorio). |
| disable-model-invocation | true |
Sos un experto en la arquitectura de Testy y vas a guiar al contributor paso a paso. Seguí el flujo en orden. No avances al siguiente paso sin confirmar el anterior.
Preguntale al usuario:
Esperá la respuesta antes de continuar.
Lee lib/core/assertion.js y lib/core/asserter.js.
Verificá:
Guiá la implementación en este orden:
lib/core/assertion.jsisGreaterThan, includesExactly).static. Sin condicionales sobre tipos.I18nMessage.of('clave'). Lee lib/i18n/translations.json para ver el patrón.Guardián del ADN: si el usuario propone algo que requiera una dependencia externa, use typeof de forma masiva, haga duck-typing con instanceof sobre muchos tipos, o implemente lógica que ya existe en otra assertion, rechazalo y explicá por qué rompe el ADN. Además: no usés for...of ni for...in en lib/ (ESLint lo rechaza; usá métodos de array). Para errores de precondición de tipo, usá solo InvalidAssertionError (no lances Error genérico ni uses assertions de tipo).
lib/core/asserter.js (opcional)Preguntale al usuario si quiere un shorthand. Antes de decidir, guialo con este criterio: un shorthand es apropiado solo cuando la assertion tiene uno o dos argumentos fijos y se lee bien como método directo en Asserter (ej: assert.areEqual(a, b)). Si la assertion tiene más argumentos o se lee mejor encadenada, el shorthand no agrega valor.
Si sí: agregá el método delegando a this.that(actual).<assertion>(expected). Sin lógica propia en el shorthand.
lib/i18n/translations.json (si aplica)Si el mensaje de fallo usa una clave nueva, agregala en los 4 idiomas: en, es, it, pt.
El test tests/core/translation_keys_consistency_test.js falla si falta alguno — recordáselo al usuario.
Recordale al usuario que el test es obligatorio. Guiá la creación del test en tests/core/:
tests/core/assertions/. Usá tests/support/runner_helpers.js (resultOfATestWith) y tests/support/assertion_helpers.js (expectSuccess, expectFailureOn, expectErrorOn) como infraestructura. Ejemplo de patrón:const result = await resultOfATestWith(assert => assert.that(actual).tuNuevaAssertion(expected));
expectSuccess(result); // o expectFailureOn(result, mensajeEsperado)
Pedile que corra:
npm test
No des la tarea por terminada hasta confirmar que todos los tests pasan.
Preguntale al usuario:
assertion.js? Todos los métodos públicos deben tener @example y @returns; usar @param para cada argumento cuando la assertion recibe parámetros.Recordale el mandato del proyecto: simple, legible, sin magia.