@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
|

|
|
130
130
|
|
|
131
|
-
En Claude Code quedan activados `skins`, `savvy-progress`
|
|
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:
|
|
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
|
-

|
|
253
253
|
|
|
254
|
-
|
|
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.
|
|
2
|
+
"version": "1.3.24",
|
|
3
3
|
"counts": {
|
|
4
|
-
"skills":
|
|
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
|
@@ -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
|
-
|
|
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])];
|
package/scripts/lib/domains.js
CHANGED
|
@@ -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) {
|