@damiangilgonzalez/harness 1.3.22 → 1.3.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -107,7 +107,7 @@ Empiezas pequeño. El resto se carga bajo demanda: el harness te propone una ski
107
107
  la pide, con la evidencia que lo justifica.
108
108
 
109
109
  ```bash
110
- rsc install --profile minimal # la base: orient + suggest + bro + unslop + show-me + eli5 + harness + init + teach + tunel-ngrok + hardening
110
+ rsc install --profile minimal # la base: orient + suggest + bro + unslop + show-me + eli5 + harness + init + teach + tunel-ngrok + hardening + no-me-rayes
111
111
  rsc install --profile core # la base + el método completo
112
112
  rsc install --profile full # todo el catálogo
113
113
  ```
@@ -128,10 +128,10 @@ Hooks que vigilan por ti: recuerdan la cadena, piden confirmación antes de un `
128
128
 
129
129
  ![Plugins de serie: superpowers, skins, savvy-progress y cache-tax](docs/img/readme/readme-16-plugins.png)
130
130
 
131
- En Claude Code quedan activados `skins`, `savvy-progress` y `cache-tax`
132
- (mantiene caliente la caché, y eso gasta tokens). `superpowers` llega cuando el proyecto usa el método.
131
+ En Claude Code quedan activados `skins`, `savvy-progress`, `context-bar`, `prompt-enhancer`, `modelo-justo`,
132
+ `where-am-i` y `cache-tax` (este mantiene caliente la caché, y eso gasta tokens). `superpowers` llega cuando el proyecto usa el método.
133
133
 
134
- En cifras: 296 skills, 34 agentes y 43 entradas de comando, para 17 asistentes
134
+ En cifras: 297 skills, 34 agentes y 43 entradas de comando, para 17 asistentes
135
135
  (Claude Code, Codex, Cursor, Copilot, Gemini…). Detalle en la [referencia técnica](docs/referencia-tecnica.md).
136
136
 
137
137
  ---
@@ -249,9 +249,9 @@ Guía completa: [la memoria del harness](docs/como-funciona/memoria.md).
249
249
 
250
250
  ## Catálogo
251
251
 
252
- ![296 skills por dominio](docs/img/readme/readme-15-catalogo.png)
252
+ ![297 skills por dominio](docs/img/readme/readme-15-catalogo.png)
253
253
 
254
- 296 skills en 25 dominios: software, negocio, contenido, datos e IA.
254
+ 297 skills en 25 dominios: software, negocio, contenido, datos e IA.
255
255
  Cada una se activa sola cuando la tarea encaja.
256
256
 
257
257
  **[Ver el catálogo completo →](docs/catalogo.md)** · [Referencia técnica](docs/referencia-tecnica.md) ·
package/manifest.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
- "version": "1.3.22",
2
+ "version": "1.3.24",
3
3
  "counts": {
4
- "skills": 296,
4
+ "skills": 297,
5
5
  "agents": 34,
6
6
  "commands": 43,
7
7
  "fixedCommands": 10
@@ -3532,6 +3532,30 @@
3532
3532
  ],
3533
3533
  "profiles": []
3534
3534
  },
3535
+ {
3536
+ "id": "no-me-rayes",
3537
+ "description": "Use on EVERY reply and progress update, especially after tool work or a long task: the assistant must report in short bullet points what is done, what it is doing now, what blocks it, and a final summary, each marked with its own emoji. Cuts the wall-of-text answers some models give. NOT rewriting a text to sound human (that is `bro`), NOT a plain-language explanation (that is `eli5`), NOT a session handoff document (that is `handoff`).",
3538
+ "tags": [
3539
+ "no-me-rayes",
3540
+ "concise",
3541
+ "bullets",
3542
+ "status-report",
3543
+ "progress",
3544
+ "emojis",
3545
+ "short-answers"
3546
+ ],
3547
+ "recommends": [
3548
+ "bro",
3549
+ "eli5",
3550
+ "handoff"
3551
+ ],
3552
+ "profiles": [
3553
+ "minimal",
3554
+ "core",
3555
+ "ui",
3556
+ "full"
3557
+ ]
3558
+ },
3535
3559
  {
3536
3560
  "id": "nodejs",
3537
3561
  "description": "Use when building or operating a plain Node.js / Express 5 backend service: project layout, async correctness, central error middleware, fail-fast config, graceful shutdown on SIGTERM. NOT DI modules/providers/guards (that is `nestjs`), NOT the type system or tsconfig (that is `typescript`), NOT REST contract design (that is `api-design`).",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@damiangilgonzalez/harness",
3
- "version": "1.3.22",
3
+ "version": "1.3.24",
4
4
  "description": "A guided harness builder that turns your goal into a minimal, verified AI-agent setup using strict best practices.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -3,8 +3,10 @@
3
3
  //
4
4
  // `orient` and `suggest` are runtime always-on. `bro` is installed by default
5
5
  // but remains conditionally loaded: its description routes human-language asks
6
- // without paying for its body on unrelated turns.
7
- export const DEFAULT_SKILL_FLOOR = Object.freeze(['orient', 'suggest', 'bro']);
6
+ // without paying for its body on unrelated turns. `tunel-ngrok` y `hardening` son
7
+ // obligatorias por decisión del usuario: van al suelo para que también lleguen con
8
+ // el update a los proyectos que ya existían, no solo a las instalaciones nuevas.
9
+ export const DEFAULT_SKILL_FLOOR = Object.freeze(['orient', 'suggest', 'bro', 'tunel-ngrok', 'hardening', 'no-me-rayes']);
8
10
 
9
11
  export function withDefaultSkillFloor(skillIds = []) {
10
12
  return [...new Set([...DEFAULT_SKILL_FLOOR, ...skillIds])];
@@ -27,7 +27,7 @@ export const DOMAINS = [
27
27
  { title: 'Motion & interface craft', ids: ['motion-craft', 'ui-engineering', 'variant-explorer'] },
28
28
  { title: 'Design & content craft', ids: ['design-loop', 'design', 'design-dna', 'presentations', 'course-storytelling', 'course-builder', 'technical-writing', 'translation-l10n'] },
29
29
  { title: 'Knowledge & meta', ids: ['knowledge-ops', 'codebase-onboarding', 'research-ops', 'continuous-learning', 'skill-scout', 'context-budget', 'roast-me', 'show-me', 'eli5', 'fable-operator'] },
30
- { title: 'Personal catalog — workflow (Spanish)', ids: ['grill-me', 'grill-with-docs', 'grilling', 'wayfinder', 'to-spec', 'to-tickets', 'to-questionnaire', 'implement', 'implement-spec', 'pr', 'retro', 'revision-de-cambios', 'code-review', 'research', 'prototype', 'domain-modeling', 'handoff', 'write-adr', 'wait-what', 'writing-for-agents', 'claude-project-setup', 'muscle-memory', 'teach', 'tunel-ngrok', 'hardening'] },
30
+ { title: 'Personal catalog — workflow (Spanish)', ids: ['grill-me', 'grill-with-docs', 'grilling', 'wayfinder', 'to-spec', 'to-tickets', 'to-questionnaire', 'implement', 'implement-spec', 'pr', 'retro', 'revision-de-cambios', 'code-review', 'research', 'prototype', 'domain-modeling', 'handoff', 'write-adr', 'wait-what', 'writing-for-agents', 'claude-project-setup', 'muscle-memory', 'teach', 'tunel-ngrok', 'hardening', 'no-me-rayes'] },
31
31
  { title: 'Personal catalog — interface design (Spanish)', ids: ['flujo-interfaz', 'animar', 'diseno-apple', 'diseno-landing', 'ingeniero-diseno-web', 'leyes-de-percepcion', 'leyes-de-retencion', 'mejor-accesibilidad', 'mejor-colores', 'mejor-layout', 'mejor-redaccion', 'mejor-tipografia', 'mejor-ui', 'sitios-calidad-premio', 'tastemaker', 'video-a-superprompt', 'vocabulario-animacion', 'revision-interfaz'] },
32
32
  ];
33
33
 
@@ -0,0 +1,60 @@
1
+ ---
2
+ name: no-me-rayes
3
+ description: "Use on EVERY reply and progress update, especially after tool work or a long task: the assistant must report in short bullet points what is done, what it is doing now, what blocks it, and a final summary, each marked with its own emoji. Cuts the wall-of-text answers some models give. NOT rewriting a text to sound human (that is `bro`), NOT a plain-language explanation (that is `eli5`), NOT a session handoff document (that is `handoff`)."
4
+ tags: [no-me-rayes, concise, bullets, status-report, progress, emojis, short-answers]
5
+ recommends: [bro, eli5, handoff]
6
+ profiles: [minimal, core, ui, full]
7
+ origin: damiangil
8
+ ---
9
+
10
+ # No me rayes
11
+
12
+ Hay modelos que hablan demasiado. El usuario no quiere párrafos: quiere ver de un vistazo qué pasó. Esta skill se aplica **siempre**, en cada respuesta que cuente trabajo, y la forma no se negocia.
13
+
14
+ ## Formato obligatorio
15
+
16
+ Cada bloque lleva su emoji y sus viñetas. Una viñeta, una idea, una línea.
17
+
18
+ ```
19
+ ✅ Hecho
20
+ - Creé `skills/no-me-rayes/SKILL.md`
21
+ - Pasé los tests de la base
22
+
23
+ 🔄 Ahora
24
+ - Regenerando el manifest
25
+
26
+ ⛔ Bloqueos
27
+ - Falta el token de ngrok en `.env`
28
+
29
+ 📌 Resumen
30
+ - La skill ya está en la base; falta regenerar el manifest
31
+ - Necesito el token para seguir con el túnel
32
+ ```
33
+
34
+ | Bloque | Emoji | Qué va dentro |
35
+ | --- | --- | --- |
36
+ | Hecho | ✅ | Lo que ya está terminado y comprobado. |
37
+ | Ahora | 🔄 | Lo que haces en este momento. Una cosa, no tu plan entero. |
38
+ | Bloqueos | ⛔ | Lo que te frena y qué necesitas del usuario para seguir. |
39
+ | Resumen | 📌 | Dos o tres viñetas con lo esencial, para quien solo lea esto. |
40
+
41
+ ## Reglas
42
+
43
+ 1. **Viñetas, nunca párrafos.** Ninguna viñeta pasa de una línea. Si no cabe, se parte en dos viñetas.
44
+ 2. **Solo los bloques que tengan algo.** Si no hay bloqueos, no escribas «Bloqueos: ninguno»: omite el bloque. `📌 Resumen` va siempre al final.
45
+ 3. **Resumen al cerrar un trabajo largo.** Tras varios pasos o herramientas, `📌 Resumen` es lo que el usuario lee de verdad: que se entienda sin subir.
46
+ 4. **Lo hecho es lo comprobado.** No pongas ✅ a algo que no has ejecutado o verificado; va en 🔄 o se dice que no se probó.
47
+ 5. **El bloqueo lleva su salida.** Cada ⛔ dice qué hace falta y de quién, no solo que algo falla.
48
+ 6. **Sin relleno.** Nada de «Claro, voy a…», ni de repetir lo que ya se vio en la herramienta, ni de cerrar con un párrafo de cortesía.
49
+ 7. **Código, rutas y comandos van exactos**, entre comillas inversas; no se resumen ni se parafrasean.
50
+ 8. **Una pregunta de una frase o una respuesta de una línea** no necesita los bloques: responde en una línea. Los bloques son para contar trabajo.
51
+
52
+ ## Cómo convive con el resto
53
+
54
+ - **`orient`** cierra cada turno con su bloque-brújula (📍 ✅ 🧭 ➡️). Esta skill manda sobre **el cuerpo** de la respuesta; la brújula va después, sin repetir lo que ya dijo `✅ Hecho`.
55
+ - **`bro`** reescribe un texto para que suene humano; **`eli5`** explica sin jerga. Si el usuario los pide, mandan ellos sobre el contenido; el formato de viñetas se mantiene.
56
+ - **`handoff`** genera un documento de traspaso para otro agente; esto es el parte del turno, no ese documento.
57
+
58
+ ## Hecho cuando
59
+
60
+ La respuesta se entiende leyendo solo los emojis y la primera palabra de cada viñeta.
@@ -0,0 +1,33 @@
1
+ skill: no-me-rayes
2
+
3
+ should_trigger:
4
+ - prompt: "Hablas demasiado, dime solo qué has hecho."
5
+ why: "Disparador directo de no-me-rayes."
6
+ - prompt: "No me rayes con párrafos, ponlo en viñetas."
7
+ why: "Disparador directo de no-me-rayes."
8
+ - prompt: "Dame un parte de cómo va la tarea: qué está hecho, qué haces ahora y qué te bloquea."
9
+ why: "Disparador directo de no-me-rayes."
10
+ - prompt: "Acabas de tocar siete archivos. Resúmelo en viñetas con emojis."
11
+ why: "Disparador directo de no-me-rayes."
12
+ - prompt: "Your answers are too long; give me done, doing and blocked as short bullets."
13
+ why: "Disparador directo de no-me-rayes."
14
+
15
+ should_not_trigger:
16
+ - prompt: "Reescribe este correo para que suene más natural y humano."
17
+ route_to: "bro"
18
+ why: "Reescribir un texto para que suene humano es el trabajo de bro, no de no-me-rayes."
19
+ - prompt: "Explícame qué es un túnel como si tuviera cinco años."
20
+ route_to: "eli5"
21
+ why: "Explicar sin jerga es el trabajo de eli5, no de no-me-rayes."
22
+ - prompt: "Prepara un documento de traspaso para que otro agente continúe esta conversación."
23
+ route_to: "handoff"
24
+ why: "El documento de traspaso entre agentes es el trabajo de handoff, no de no-me-rayes."
25
+ - prompt: "Haz una retrospectiva de esta sesión y dime qué cambiar en el entorno del agente."
26
+ route_to: "retro"
27
+ why: "La retrospectiva de una sesión es el trabajo de retro, no de no-me-rayes."
28
+
29
+ capability:
30
+ - scenario: "El agente acaba de hacer varios cambios y debe contárselo al usuario."
31
+ must_include:
32
+ - "✅"
33
+ - "📌"
package/targets/claude.js CHANGED
@@ -10,11 +10,17 @@ const HERE = dirname(fileURLToPath(import.meta.url));
10
10
  const SHELL_TOOLS = 'Bash|PowerShell';
11
11
 
12
12
  // Mods de la terminal de Claude Code que el harness deja activados en cada proyecto.
13
+ // Los cuatro `@harness-mods` viven en este mismo repo (`mods/plugins/`, catálogo de los mods en
14
+ // la raíz del repo): context-bar, prompt-enhancer, modelo-justo y where-am-i.
13
15
  // `cache-tax` mantiene caliente la caché del prompt en las pausas, y eso gasta tokens.
14
16
  export const CLAUDE_CODE_MODS = Object.freeze([
15
17
  { id: 'skins@hellosverre-mods', marketplace: 'hellosverre-mods', repo: 'hellosverre/claude-skins' },
16
18
  { id: 'savvy-progress@claude-kit', marketplace: 'claude-kit', repo: 'johnnyvizz/claude-kit' },
17
19
  { id: 'cache-tax@claude-code-mods', marketplace: 'claude-code-mods', repo: 'karanb192/claude-code-mods' },
20
+ { id: 'context-bar@harness-mods', marketplace: 'harness-mods', repo: 'damiangilgonzalez1995/rsc-harness' },
21
+ { id: 'prompt-enhancer@harness-mods', marketplace: 'harness-mods', repo: 'damiangilgonzalez1995/rsc-harness' },
22
+ { id: 'modelo-justo@harness-mods', marketplace: 'harness-mods', repo: 'damiangilgonzalez1995/rsc-harness' },
23
+ { id: 'where-am-i@harness-mods', marketplace: 'harness-mods', repo: 'damiangilgonzalez1995/rsc-harness' },
18
24
  ]);
19
25
 
20
26
  export function writeSkill(id, fromDir, toPath) {