@damiangilgonzalez/harness 1.3.17 → 1.3.18

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
@@ -1,755 +1,210 @@
1
1
  <div align="center">
2
2
 
3
- <img src="https://raw.githubusercontent.com/ericrisco/rsc-harness/main/site/og.png" alt="rsc-harness — You decide what to build. rsc-harness builds your agent’s harness, following strict best practices instead of improvising a Frankenstein stack." width="960">
3
+ ![harness: un agente dentro de un arnés de cinco cintas (memoria, herramientas, conocimiento, reglas y método)](docs/img/readme/readme-00-portada.png)
4
4
 
5
- # `rsc-harness` — You decide what to build. It builds your agent's harness.
6
-
7
- > Este proyecto es un fork del trabajo original de Eric Risco: [github.com/ericrisco/rsc-harness](https://github.com/ericrisco/rsc-harness).
5
+ **Tú decides qué construir. harness construye el arnés de tu agente:**
6
+ le da el método, la memoria y los reflejos.
8
7
 
9
8
  [![npm](https://img.shields.io/npm/v/@damiangilgonzalez/harness?color=63d68a&labelColor=12161c&label=npm)](https://www.npmjs.com/package/@damiangilgonzalez/harness)
10
- [![downloads](https://img.shields.io/npm/dm/@damiangilgonzalez/harness?color=63d68a&labelColor=12161c&label=downloads)](https://www.npmjs.com/package/@damiangilgonzalez/harness)
11
- [![skills](https://img.shields.io/badge/skills-294-63d68a?labelColor=12161c)](#the-catalog)
12
- [![license](https://img.shields.io/badge/license-MIT-63d68a?labelColor=12161c)](LICENSE)
13
- [![stars](https://img.shields.io/github/stars/ericrisco/rsc-harness?color=63d68a&labelColor=12161c)](https://github.com/ericrisco/rsc-harness/stargazers)
14
-
15
- **You decide what to build. rsc-harness builds your agent’s harness.** Tell it whether you are
16
- shipping software, running operations, researching, creating content, or mixing them. Its wizard
17
- reads the project, applies strict best practices, and shows the exact harness plan before writing.
18
-
19
- Give this URL to your agent:
20
-
21
- ```text
22
- Read https://ericrisco.github.io/rsc-harness/ and set up rsc for this project.
23
- Ask me the onboarding questions, show me the exact plan, and wait for my acceptance before writing.
24
- ```
25
-
26
- Or start from the terminal:
27
9
 
28
10
  ```bash
29
11
  npx @damiangilgonzalez/harness@latest onboard
30
12
  ```
31
13
 
32
- <img src="https://raw.githubusercontent.com/ericrisco/rsc-harness/main/site/meta-harness.png" alt="rsc-harness wizard turns an outcome into a verified plan: memory, tools, knowledge and rules selected, deferred or excluded according to evidence." width="960">
33
-
34
14
  </div>
35
15
 
36
- ## Your agent needs a harness. It should not improvise one.
37
-
38
- A model is only the brain. Real work also needs project memory, tools, domain knowledge, rules and
39
- repeatable workflows. Add those pieces ad hoc and the result becomes a **Frankenstein harness**:
40
- duplicated instructions, unrelated skills, premature hooks, unnecessary MCPs and no clear owner.
16
+ ---
41
17
 
42
- Open standards already cover individual parts — [Agent Skills](https://agentskills.io/specification),
43
- [MCP](https://modelcontextprotocol.io/) and [AGENTS.md](https://agents.md/) — but they do not decide
44
- which complete harness this project needs. rsc-harness does that job through one guided flow:
18
+ ## Qué es
45
19
 
46
- 1. **You state the outcome.** No skill, hook or MCP vocabulary required.
47
- 2. **The wizard reads only the project root** and asks technical level, accompaniment, project kind,
48
- goal and assistants.
49
- 3. **A proportional plan explains every choice.** Selected, deferred and excluded pieces all have a
50
- reason. Nothing writes before you accept the exact plan.
51
- 4. **The result is verified.** Shared sources prevent duplication; knowledge loads progressively;
52
- local state stays local; deterministic checks prove the installed harness matches the plan.
53
- 5. **It grows from evidence.** A deferred capability is proposed later only when the project actually
54
- develops the need for it.
20
+ ![El modelo es el cerebro; el harness es todo lo demás: memoria, conocimiento, método, reglas y herramientas](docs/img/readme/readme-01-que-es.png)
55
21
 
56
- That is what “best practices” means here: a small, separated, project-bound and auditable harness —
57
- not a pile of whatever an agent happened to install.
22
+ El modelo es el cerebro. El harness es todo lo demás.
23
+ Si esas piezas se añaden a ratos, sale un harness **Frankenstein**: reglas duplicadas, skills que no
24
+ vienen a cuento y hooks antes de tiempo.
58
25
 
59
- ---
26
+ ![El mismo encargo sin harness y con harness](docs/img/readme/readme-02-antes-despues.png)
60
27
 
61
- ## 🤖 For agents: "install this harness"
28
+ Mismo modelo. Distinto resultado.
62
29
 
63
- If you're an AI coding agent (Claude Code, Cursor, Copilot, Codex, Gemini…) and your user
64
- asked you to **install rsc / this harness / these skills**, run this in the **root of the
65
- project they're equipping** — not inside a clone of this repo (see the note under *Install*):
30
+ ![Tira cómica: petición, preguntas, test primero y PR](docs/img/readme/readme-03-tira-comica.png)
66
31
 
67
- ```bash
68
- npx @damiangilgonzalez/harness@latest onboard
69
- ```
32
+ Pides algo, te pregunta lo que falta, escribe el test primero y te entrega una PR con evidencia.
70
33
 
71
- That launches the binding plain-language onboarding. It asks the user for technical level,
72
- accompaniment, project kind and goal **before it writes anything**, reads only the selected project
73
- root, and shows every selected or deferred skill, agent and hook with its reason. Relay those
74
- questions to the user; never invent or default their answers. The first pass writes nothing and
75
- prints a SHA-256 plan id. Only rerun with `--accept-plan <id>` after the user accepts that exact plan.
76
- If the project already has a skill of its own with a catalog name, the plan lists it under
77
- **Your own skills this plan replaces** — tell the user before accepting; renaming their folder and
78
- regenerating the plan keeps theirs.
34
+ ---
79
35
 
80
- For a non-interactive agent, collect the answers and preview the same plan explicitly:
36
+ ## Cómo trabajamos
81
37
 
82
- ```bash
83
- npx @damiangilgonzalez/harness@latest onboard --technical-level mixed --accompaniment L1 \
84
- --project-kind software --goal "small compound-interest website" \
85
- --software-scope small --target codex
86
- # After the user accepts the printed plan:
87
- npx @damiangilgonzalez/harness@latest onboard --technical-level mixed --accompaniment L1 \
88
- --project-kind software --goal "small compound-interest website" \
89
- --software-scope small --target codex --accept-plan PRINTED_SHA256_ID
90
- ```
38
+ ![Mapa de implementación: la cadena depende del tamaño de la tarea](docs/img/readme/readme-04-metodo.png)
91
39
 
92
- - **Choose assistants non-interactively:** add `--target claude` (comma-separate for several) to `onboard`.
93
- - **Two assistants already installed?** rsc asks instead of guessing. `--target` settles it in one word.
94
- - **Already installed, just refreshing skills + hooks:** `rsc sync` (or re-run the command above).
95
- - **Add one skill by id:** `rsc add <id>` · **browse the catalog:** `rsc consult "<what you want>"` or `rsc list`.
40
+ La cadena depende del **tamaño**. El agente la encadena solo; no hace falta escribir cada comando.
96
41
 
97
- From then on it's self-driving: `rsc-suggest` proposes the next skill as tasks appear, and in
98
- Claude Code a hook re-asserts the spec-first **new-feature gate** on every turn — so a feature
99
- request routes through `to-spec` (or `grill-with-docs`/`wayfinder` first, when the shape is still
100
- fuzzy) before any skill writes code.
42
+ | Tamaño | Cadena |
43
+ |---|---|
44
+ | Una línea (errata, config) | Hazlo sin más |
45
+ | Pequeño (una sesión, un ticket) | `superpowers:brainstorming` o `grill-with-docs` → `implement` |
46
+ | Grande (varias sesiones, muchas piezas) | `grill-with-docs` o `wayfinder` → `to-spec` → `to-tickets` → `implement-spec` |
47
+ | Siempre, al final | `code-review` → `pr` |
101
48
 
102
- ---
49
+ ![El trabajo grande paso a paso, con lo que deja cada paso](docs/img/readme/readme-05-cadena-grande.png)
103
50
 
104
- ## Why this exists
105
-
106
- An improvised harness tends to grow by accumulation: more files, more context and more rules, with
107
- no method deciding whether each piece belongs. rsc-harness keeps that construction disciplined:
108
-
109
- - **Granular by default.** The unit of installation is *one skill*. Install
110
- `fastapi` without ever pulling `go`. Nothing you don't use touches your context.
111
- - **Self-recommending.** Both the terminal (`rsc consult`) and the chat
112
- (`rsc-suggest`, an always-on detector) watch what you're doing and propose the
113
- *next* skill the moment a task needs it — a one-word confirm installs it.
114
- - **Not code-only.** First-class support for running a *company*: bookkeeping,
115
- invoicing, hiring, GDPR, pitch decks, SEO, a YouTube/TikTok/LinkedIn presence —
116
- each wired to a `docs/` knowledge loop that learns from your own results.
117
- - **Specialists follow the stack.** The four base agents stay small; installing a
118
- supported stack adds only its reviewer and build resolver. `rsc add go`, for
119
- example, adds the Go pair without pulling reviewers for every other language.
120
- - **A new local session continues the old one.** Claude Code, Codex, Gemini CLI
121
- and OpenCode load a bounded checkpoint for the current branch and worktree at
122
- session start. Cursor desktop uses an assisted read-before-action fallback.
123
- - **Honestly good.** Every skill was built by a research → spec → implement →
124
- *adversarial review* pipeline and had to clear an objective rubric
125
- (`scripts/skill-rubric.md`, written *before* any skill existed). The bar was
126
- real: skills that scored 8.0 were sent back and fixed, not waved through.
127
-
128
- `skills/<name>/` is the single source of truth. There are no bundles to argue
129
- over: you start with a tiny floor and grow one piece at a time.
51
+ Cada paso deja un documento: glosario, spec, ADR, tickets, rama y PR.
52
+ La fuente de verdad es lo escrito, no el chat.
130
53
 
131
- ---
54
+ ![implement-spec: un grafo de tickets resuelto por varios subagentes a la vez](docs/img/readme/readme-06-tickets-en-paralelo.png)
132
55
 
133
- ## New sessions pick up the latest local work
56
+ `implement-spec` coge los tickets libres y los reparte entre subagentes, cada uno en su worktree.
57
+ Todo confluye en una rama de integración.
134
58
 
135
- On supported local targets, rsc checkpoints observable repository state at safe
136
- boundaries: branch, worktree, HEAD, changed paths, commits and SDD ledger status.
137
- When a new session opens in the same checkout, that state is injected before the
138
- first agent action. A completed edit is preserved even if the previous client
139
- closed before its normal session-end event.
59
+ ![Revisar antes de fusionar: estándares del repo y lo que pedía la spec](docs/img/readme/readme-17-revision.png)
140
60
 
141
- - **Full:** Claude Code, Codex, Gemini CLI and OpenCode. Codex asks you to inspect
142
- and trust the project hook once with `/hooks`; until then `doctor` reports that
143
- trust is still required.
144
- - **Assisted:** Cursor desktop. Its start hook is fire-and-forget, so rsc also
145
- installs a local always-on rule that performs the read before acting.
146
- - **Never cloud:** Cursor Cloud, Codex Cloud, remote agents, cloud storage and
147
- synchronization are intentionally unsupported. The memory runtime makes no
148
- network request.
61
+ `code-review` revisa contra los estándares del repo y contra la spec. `pr` abre la PR con
62
+ resumen, evidencia y peligro de fusión.
149
63
 
150
- The journal never stores prompts, responses, tool output, file contents or
151
- secrets. It stays in a git-excluded project-local path, retains 30 days, and
152
- injects at most 4,096 bytes. Disable every memory surface for a project with
153
- `rsc memory off`; re-enable it with `rsc memory on`.
64
+ La guía completa del método, fase a fase: [`docs/skills/`](docs/skills/).
154
65
 
155
66
  ---
156
67
 
157
- ## Install
68
+ ## Instalar
158
69
 
159
- ```bash
160
- npx @damiangilgonzalez/harness@latest onboard
161
- ```
70
+ ![Instalar: un comando, cuatro preguntas y un plan que apruebas](docs/img/readme/readme-08-instalacion.png)
162
71
 
163
- Prefer the short `rsc` command? Install once, globally:
72
+ Cuatro preguntas (nivel técnico, acompañamiento, tipo de proyecto, objetivo) y un plan exacto.
73
+ Lee solo la raíz del proyecto y **no escribe nada antes de que aceptes**.
164
74
 
165
75
  ```bash
166
- npm install -g @damiangilgonzalez/harness # then just: rsc
76
+ npx @damiangilgonzalez/harness@latest onboard
167
77
  ```
168
78
 
169
- Run it inside any project and describe what you want. Working on the catalog
170
- itself? Clone and link:
79
+ ¿Usas un agente? Pega esto en el chat:
171
80
 
172
- ```bash
173
- git clone https://github.com/ericrisco/rsc-harness.git ~/rsc-skills
174
- cd ~/rsc-skills && npm install && npm link
81
+ ```text
82
+ Lee https://github.com/damiangilgonzalez1995/rsc-harness y prepara rsc para este proyecto.
83
+ Hazme las preguntas del onboarding, enséñame el plan exacto y espera a que lo acepte antes de escribir.
175
84
  ```
176
85
 
177
- > **Run it inside the project you're equipping — not inside this repo.** The
178
- > catalog's own `package.json` is named `@damiangilgonzalez/harness`, so `npx @damiangilgonzalez/harness`
179
- > *from within a `rsc-harness` clone* resolves to the local (unlinked) bin and
180
- > dies with `sh: rsc: command not found`. Working on the catalog itself? Use
181
- > `node scripts/rsc.js …`, the `npm link` above, or pin the published build with
182
- > `npx @damiangilgonzalez/harness@latest …`.
183
-
184
- The first run asks **how technical the conversation should be**, the accompaniment level, what the
185
- project is for, its goal and the assistants to target. It then presents the complete plan. A small
186
- website can defer SDD, agents and code guards; an operations harness does not receive them merely
187
- because it lives in a repository. Deferred components record the evidence that would make rsc
188
- recommend them later. `rsc reassess` reports that evidence but still cannot install anything
189
- without a newly accepted plan.
190
-
191
- Everything stays **in the project**, and the real skill files are written
192
- **once** to `.rsc/skills/<id>/`. Each assistant you pick gets a lightweight
193
- symlink back to that shared base — no copy is duplicated across IDEs. (If the
194
- filesystem can't symlink, it falls back to a real copy automatically.)
195
- On targets with file-based agents, the four base agents are installed too;
196
- stack specialists remain selective. Native command targets receive only entry
197
- points whose backing skill, agent or local-memory capability actually exists.
86
+ <details>
87
+ <summary>Para agentes: el mismo flujo sin modo interactivo</summary>
198
88
 
199
- ---
200
-
201
- ## 30-second tour
89
+ Pasa las preguntas a la persona; no inventes ni rellenes sus respuestas. La primera pasada
90
+ no escribe nada e imprime un id de plan; solo se repite con `--accept-plan` cuando la persona lo acepta.
202
91
 
203
- ```
204
- $ rsc onboard
205
- ██████╗ ███████╗ ██████╗ ← animated gradient wordmark
206
- ██╔══██╗██╔════╝██╔════╝
207
- ██████╔╝███████╗██║
208
- 294 skills · one CLI · zero bloat
209
-
210
- How technical should the conversation be?
211
- How much accompaniment do you want?
212
- What are you building or running?
213
- What do you want this project to achieve?
214
-
215
- RSC_ONBOARDING_PLAN
216
- Plan id: <sha256>
217
- Selected: …
218
- Deferred: …
219
- Accept this exact harness plan?
92
+ ```bash
93
+ npx @damiangilgonzalez/harness@latest onboard --technical-level mixed --accompaniment L1 \
94
+ --project-kind software --goal "small compound-interest website" \
95
+ --software-scope small --target claude
96
+ # Cuando la persona acepte el plan impreso:
97
+ npx @damiangilgonzalez/harness@latest onboard --technical-level mixed --accompaniment L1 \
98
+ --project-kind software --goal "small compound-interest website" \
99
+ --software-scope small --target claude --accept-plan PRINTED_SHA256_ID
220
100
  ```
221
101
 
222
- The terminal and chat adapters produce the same normalized answers and plan id. If project evidence
223
- changes between preview and acceptance, rsc returns `RSC_PLAN_CHANGED` and writes nothing. After an
224
- accepted application it verifies the receipt and managed state before printing `RSC_ONBOARDING_READY`.
225
- That verdict is not just about the receipt: it also requires the harness floor to exist —
226
- `01-TOOLS/_TEMPLATE/` and `docs/wiki/harness/`.
227
- If the floor is missing, the install applied but prints `RSC_ONBOARDING_INCOMPLETE` with each
228
- missing path and the action that creates it, because a plan that promised little used to be able to
229
- report success with three markdown files.
230
-
231
- ---
102
+ </details>
232
103
 
233
- ## The CLI
104
+ ![Cuatro perfiles concéntricos: minimal, core, ui y full](docs/img/readme/readme-10-perfiles.png)
234
105
 
235
- Fresh projects enter through `rsc onboard`. The direct `add` and `install --profile` forms below
236
- are maintenance controls for projects that already carry an `.rsc.json` declaration; they cannot
237
- bypass onboarding in a new folder.
106
+ Empiezas pequeño. El resto se carga bajo demanda: el harness te propone una skill cuando la tarea
107
+ la pide, con la evidencia que lo justifica.
238
108
 
239
109
  ```bash
240
- rsc onboard # binding plain-language onboarding (recommended)
241
- rsc reassess # check persisted deferral triggers; never installs by itself
242
- rsc add fastapi postgresdb # install specific skills, by name
243
- rsc add youtube-api remotion-video # …grow a channel, edit with Remotion
244
- rsc add fastapi --target claude,codex # install into several assistants at once
245
- rsc install --profile minimal # the base: orient + suggest + bro + unslop + show-me + eli5 + harness + init + teach
246
- rsc install --profile core # floor + the full SDD workflow
247
- rsc install --profile full # everything (all 294 skills)
248
- rsc install --profile full --without go
249
- rsc consult "I want to launch a SaaS" # recommend only, no install
250
- rsc registry refresh # write .rsc/skill-registry.{json,md}
251
- rsc list # installed skills, agents and commands
252
- rsc capabilities # installed/available surfaces + memory mode
253
- rsc doctor # health, missing backing, hooks and local memory; exits 1 when unhealthy
254
- rsc memory status # full / assisted / unsupported / degraded
255
- rsc memory save --session handoff # force a deterministic local checkpoint
256
- rsc memory resume # print this branch/worktree continuation
257
- rsc memory learn --text "…" --evidence "…" --confidence 0.8 --approve
258
- rsc memory off # disable hooks, commands and injection project-wide
259
- rsc sync --target claude,codex # refresh managed skills/hooks from the current package version
260
- rsc backups # list project-local snapshots
261
- rsc restore latest --dry-run # preview restoring the newest snapshot
262
- rsc restore <snapshot-id> # restore a project-local snapshot
263
- rsc upgrade --dry-run # show npm upgrade + sync commands
264
- rsc uninstall postgresdb --dry-run # preview a removal
110
+ rsc install --profile minimal # la base: orient + suggest + bro + unslop + show-me + eli5 + harness + init + teach
111
+ rsc install --profile core # la base + el método completo
112
+ rsc install --profile full # todo el catálogo
265
113
  ```
266
114
 
267
115
  ---
268
116
 
117
+ ## Qué se instala
269
118
 
270
- ## 👥 Sharing a harness with your team
119
+ ![Qué deja en tu proyecto: qué se sube a git y qué se queda en local](docs/img/readme/readme-09-que-se-instala.png)
271
120
 
272
- The harness travels by git, but not all of it — and the split is the point.
121
+ Las skills se escriben una vez en `.rsc/skills/` y cada asistente las enlaza.
122
+ Lo que se comparte va a git; el estado de la máquina, no.
273
123
 
274
- **Commit these:**
124
+ ![Los reflejos: gate, danger-guard, ship-guard, gitmoji-guard, memoria y limpieza de worktrees](docs/img/readme/readme-07-guardias.png)
275
125
 
276
- | | |
277
- | --- | --- |
278
- | `.rsc.json` | The decision: which assistants, which skills, **which catalog version**, the developer tier, which gates you disarmed |
279
- | `01-TOOLS/` · `docs/` | Your tooling and your wiki, if you use them |
280
- | Skills and agents you wrote by hand | They are yours. rsc does not claim them, does not count them as drift, and does not touch them |
126
+ Hooks que vigilan por ti: recuerdan la cadena, piden confirmación antes de un `rm -rf` o un
127
+ `git push --force` y paran antes de volver a `main` sin abrir la PR.
281
128
 
282
- **Do not commit these** — rsc adds them to `.gitignore` for you:
129
+ ![Plugins de serie: superpowers, skins, savvy-progress, filetree y cache-tax](docs/img/readme/readme-16-plugins.png)
283
130
 
284
- | | Why |
285
- | --- | --- |
286
- | `.rsc/` | Machine state: hook scripts, seals, logs and fallback session memory |
287
- | `docs/raw/worklog/.rsc-memory/` | Preferred session journal when a local wiki exists; protected with git's local exclude |
288
- | The skill entries rsc manages | Symlinks on macOS/Linux, real copies on Windows — two incompatible shapes of one thing |
131
+ En Claude Code quedan activados `skins`, `savvy-progress`, `filetree` y `cache-tax`
132
+ (mantiene caliente la caché, y eso gasta tokens). `superpowers` llega cuando el proyecto usa el método.
289
133
 
290
- Three files carry the harness through git: `.rsc.json` (what the team decided),
291
- `.claude/settings.json` (the wiring), and `.claude/rsc-bootstrap.mjs` — the small file that
292
- notices, in a clone, that the rest is not there yet. **Commit all three.** If your project
293
- ignores the assistant's directory wholesale, rsc adds the lines that keep those files versioned —
294
- verified against git, not against the pattern.
134
+ En cifras: 294 skills, 34 agentes y 43 entradas de comando, para 17 asistentes
135
+ (Claude Code, Codex, Cursor, Copilot, Gemini…). Detalle en la [referencia técnica](docs/referencia-tecnica.md).
295
136
 
296
- **And say it plainly, because committing it is the point:** `.claude/rsc-bootstrap.mjs` is code that
297
- runs on every session and every shell call, so a pull request that edits *that file* runs on the
298
- machine of whoever reviews the branch. That is true of `.claude/settings.json` already, and of any
299
- hook-based harness — but it is worth knowing before you agree to commit a third one. Review changes
300
- to it the way you would review a CI workflow.
301
-
302
- Whoever clones runs **one command** and ends up with the same harness — at the version the
303
- project pinned, which is the `catalogVersion` in its `.rsc.json`:
304
-
305
- ```bash
306
- npx @damiangilgonzalez/harness@<catalogVersion> sync
307
- ```
308
-
309
- **You do not have to know that, or find it.** Open the project and the assistant tells you, in
310
- the first message: what is missing, what would be installed, and the exact command, naming the
311
- pinned version. It asks; it does not install anything on its own and it does not hold up
312
- whatever you sat down to do. Say no and it stops asking on that machine.
313
-
314
- Not `@latest`, and the difference is the whole point of sharing: a teammate who clones in three
315
- months gets what you had, not what shipped since. Upgrading is something a person decides, writes
316
- into `.rsc.json`, and commits — and then it reaches everyone through git, like any other change.
137
+ ---
317
138
 
318
- When someone changes the harness and you `git pull`, `rsc doctor` tells you what no longer
319
- matches. **Nothing is ever written to your machine by a pull** — you are told, and you decide.
139
+ ## El día a día
320
140
 
321
- **Own skills.** A skill your team wrote lives in the repo and already works for whoever clones,
322
- with no command at all. rsc never installs, updates or overwrites it: its version is the commit.
323
- Installing a catalog skill of the same name is refused rather than silently winning, and `doctor`
324
- lists what is yours by reading the files themselves — no list to keep in `.rsc.json`, because a
325
- list somebody has to remember to update is a list that goes quietly stale. Declaring a skill under
326
- `ownSkills` still works and still reports when someone is missing it.
141
+ ![Un update y todos tus proyectos al día](docs/img/readme/readme-11-actualizar.png)
327
142
 
143
+ En un proyecto que ya tiene harness, el mismo comando ofrece *Update this project*.
144
+ Respeta lo que quitaste a mano y hace una copia antes de tocar nada.
328
145
 
329
- ## 🩹 Something's off? One command
146
+ ```bash
147
+ npx @damiangilgonzalez/harness@latest
148
+ ```
330
149
 
331
- Recognise any of these? They are all the same fix.
150
+ ![Compartir con el equipo: commit, clone y sync a la versión fijada](docs/img/readme/readme-12-equipo.png)
332
151
 
333
- | What you see | |
334
- | --- | --- |
335
- | `"target": "codex"` when you work in Claude Code | |
336
- | `This target has no hook injection` and you did not expect that | |
337
- | Skills appear that you never asked for | |
338
- | A hook seems to run several times per turn | |
339
- | Template lines showed up inside your hand-written `AGENTS.md` | |
152
+ Tres ficheros llevan el harness por git. **Súbelos los tres:**
153
+ `.rsc.json` (lo que decidió el equipo), `.claude/settings.json` (el cableado) y
154
+ `.claude/rsc-bootstrap.mjs` (el que detecta, en un clon, que falta lo demás).
340
155
 
341
- (A *fresh* clone is not in this table any more: nothing is broken there, the harness was simply
342
- never built on that machine, and the assistant now says so itself — see **sharing by git** above.)
156
+ Quien clona abre el proyecto y el asistente te lo dice en el primer mensaje: qué falta y el
157
+ comando exacto, con la versión fijada (el `catalogVersion` de `.rsc.json`). Pregunta; no instala solo.
343
158
 
344
159
  ```bash
345
- npx @damiangilgonzalez/harness@latest repair
160
+ npx @damiangilgonzalez/harness@<catalogVersion> sync
346
161
  ```
347
162
 
348
- Safe in any folder: with no rsc there, it says so and writes nothing. It shows what it
349
- found before touching anything, keeps a recoverable copy, and running it twice changes
350
- nothing the second time. Add `--dry-run` to see the whole pass without a single write.
163
+ Nunca `@latest` a escondidas: quien clone dentro de tres meses tendrá lo mismo que tú.
164
+ Un `git pull` no escribe nada en tu máquina; `rsc doctor` te dice qué ya no cuadra.
351
165
 
352
- **What it fixes on its own** — putting the harness back to what was already declared:
353
- dangling links from a clone, hooks wired several times, the 0.1 layout no assistant reads.
166
+ > `.claude/rsc-bootstrap.mjs` es código que se ejecuta en cada sesión. Revisa los cambios a ese
167
+ > fichero como revisarías un workflow de CI.
354
168
 
355
- **What it asks about** — anything that changes a decision: moving the harness to another
356
- assistant, or touching files you already committed.
169
+ **Skills propias.** Las que escribe tu equipo viven en el repo y funcionan al clonar.
170
+ rsc nunca las instala, actualiza ni sobrescribe: su versión es el commit.
357
171
 
358
- **What it never touches:** skills and agents you wrote by hand. rsc did not install them,
359
- so rsc does not repair, move or delete them — not even when rebuilding from scratch.
172
+ ![Memoria entre sesiones: cada sesión retoma donde lo dejó la anterior](docs/img/readme/readme-13-memoria.png)
360
173
 
361
- ## Update
174
+ Al cerrar, guarda rama, ficheros y commits; al abrir, te dice dónde lo dejaste.
175
+ Nunca guarda prompts, respuestas ni secretos, y no sale de tu máquina. `rsc memory off` lo apaga.
362
176
 
363
- `rsc` is an npm package, so updating is two steps — bump the package, then
364
- re-sync what's already wired into your project:
177
+ ![Una rama, una copia de trabajo](docs/img/readme/readme-18-worktrees.png)
365
178
 
366
- ```bash
367
- npm install -g @damiangilgonzalez/harness@latest # global install: pull the newest catalog
368
- rsc sync # refresh managed skills + hooks (auto-detects your assistant)
369
- ```
370
-
371
- Not sure what a bump touches? Preview the exact commands without writing anything:
179
+ Cada rama en su worktree, cortada siempre desde `origin`.
372
180
 
373
181
  ```bash
374
- rsc upgrade --dry-run # prints the npm install + rsc sync lines for your target
182
+ rsc worktrees new avisos
183
+ rsc worktrees reap --merged --confirm # borra los ya fusionados, nunca los que tienen cambios
375
184
  ```
376
185
 
377
- Running through `npx` (no global install)? There's nothing to upgrade —
378
- `npx @damiangilgonzalez/harness@latest` always fetches the latest published catalog; just run
379
- `rsc sync` afterwards if the project already has skills installed.
186
+ ![¿Algo raro? doctor y repair](docs/img/readme/readme-14-doctor.png)
380
187
 
381
- Every sync snapshots the project first, so a bad update is always reversible:
188
+ `doctor` diagnostica; `repair` devuelve el harness a lo declarado. Enseña lo que va a tocar,
189
+ guarda una copia y nunca toca las skills que escribiste a mano.
382
190
 
383
191
  ```bash
384
- rsc backups # list project-local snapshots
385
- rsc restore latest --dry-run # preview restoring the newest
386
- rsc restore <snapshot-id> # restore it
192
+ npx @damiangilgonzalez/harness doctor
193
+ npx @damiangilgonzalez/harness@latest repair --dry-run
387
194
  ```
388
195
 
389
196
  ---
390
197
 
391
- ## How recommendation works
392
-
393
- Two faces, one catalog (`manifest.json`):
394
-
395
- - **In the terminal** — `rsc` / `rsc consult` rank the catalog against your words
396
- (multilingual TF-IDF blended with exact tag/id weights and intent synonyms), merge that with what they
397
- detect in your repo, and expand via each skill's `recommends`.
398
- - **In the chat** — `rsc-suggest` is a tiny always-on skill. When a task would
399
- benefit from a skill you don't have, it names it and (one-word confirm) runs
400
- `rsc add <id>` for you. It's the floor — installed with every profile.
401
-
402
- Repo detection maps real signals to skills: `package.json` + `next` → `nextjs`;
403
- `go.mod` → `go`; `pyproject.toml` → `fastapi`; `*.sql`/`prisma/` → `postgresdb`;
404
- `Dockerfile`/`.github/` → `docker`/`github-actions`; and so on. An empty repo
405
- just asks in plain language.
406
-
407
- ---
408
-
409
- ## The catalog
410
-
411
- 294 skills, grouped by what you're trying to do. Click any skill to read its
412
- `SKILL.md`. It fires on its own when a task matches.
413
-
414
- ### 🧭 Core & control plane
415
- The front door and the workspace brain.
416
-
417
- [init](skills/init/) · [harness](skills/harness/) · [orient](skills/orient/) · [suggest](skills/suggest/) · [bro](skills/bro/) · [unslop](skills/unslop/) · [author-skill](skills/author-skill/)
418
-
419
- > **harness** is the Karpathy *chaos→knowledge* engine — a `01-TOOLS/` layer (one
420
- > folder per provider, each with a working `test_connection`) and a `docs/`
421
- > self-improving wiki. It governs software *or* a whole company. **orient** is the
422
- > always-on compass that keeps a non-technical human oriented after every step.
423
- > **bro** is installed with every profile and rewrites any answer in plain, natural
424
- > language when the user asks — without making its full body always-on.
425
-
426
- > #### 📦 The `docs/` brain is now 100% Open Knowledge Format (OKF v0.1) conformant
427
- >
428
- > Google Cloud published the [**Open Knowledge Format**](https://github.com/GoogleCloudPlatform/knowledge-catalog/tree/main/okf)
429
- > — a vendor-neutral standard for portable, agent-readable knowledge — built on the
430
- > same Karpathy *LLM-wiki* pattern our `docs/` engine has used from day one. We
431
- > independently converged on the same design, so adopting the standard cost almost
432
- > nothing. As of now, **every `docs/wiki/` is a valid, portable OKF bundle**:
433
- >
434
- > - **Markdown + YAML frontmatter**, `type` on every concept doc, OKF-standard
435
- > fields (`title`, `description`, `resource`, `tags`, `timestamp`).
436
- > - **Standard markdown links** (not wikilinks) form the knowledge graph — any OKF
437
- > consumer reads it, *and* it stays a native Obsidian vault (graph, backlinks,
438
- > Properties, Bases). Same files, no export step.
439
- > - **Reserved files** honored: `index.md` (no frontmatter) for navigation,
440
- > `log.md` (newest-first, ISO 8601) for history.
441
- >
442
- > Tarball a `wiki/` and any OKF tool — including Google's own viewer — can read it.
443
- > And the brain now **keeps your repo clean**: a loose file it ingests (a PDF at the
444
- > root, anything in `inbox/`) is *moved* into `raw/`, never left as clutter.
445
-
446
- ### 📐 Spec-Driven Development
447
- Take a fuzzy intent to a shipped, verified change — phase by phase. `npx @damiangilgonzalez/harness install --profile core`.
448
-
449
- [source-grounded-development](skills/source-grounded-development/) · [simplify-code](skills/simplify-code/)
450
-
451
- > The actual spec-first chain lives in the personal catalog below, phase by phase. This section keeps
452
- > the two skills that stay stack-agnostic in-phase regardless of which chain built the code:
453
- > grounding an implementation or review in current version-specific docs, and simplifying working
454
- > code without changing its behaviour.
455
-
456
- ### 💼 Run a business
457
-
458
- [finance-ops](skills/finance-ops/) · [invoicing](skills/invoicing/) · [bookkeeping](skills/bookkeeping/) · [pricing](skills/pricing/) · [sales-pipeline](skills/sales-pipeline/) · [lead-gen](skills/lead-gen/) · [cold-outreach](skills/cold-outreach/) · [proposals](skills/proposals/) · [contracts](skills/contracts/) · [customer-support](skills/customer-support/) · [client-onboarding](skills/client-onboarding/) · [retention](skills/retention/) · [hiring](skills/hiring/) · [people-ops](skills/people-ops/) · [inventory](skills/inventory/) · [logistics-ops](skills/logistics-ops/) · [procurement](skills/procurement/) · [meeting-notes](skills/meeting-notes/) · [sop-builder](skills/sop-builder/) · [project-ops](skills/project-ops/)
459
-
460
- ### 💸 Raise & model money
461
-
462
- [pitch-deck](skills/pitch-deck/) · [investor-materials](skills/investor-materials/) · [financial-model](skills/financial-model/) · [fundraising](skills/fundraising/) · [unit-economics](skills/unit-economics/) · [grants](skills/grants/)
463
-
464
- ### ⚖️ Legal, privacy & compliance
465
-
466
- [gdpr-privacy](skills/gdpr-privacy/) · [terms-conditions](skills/terms-conditions/) · [compliance](skills/compliance/) · [data-policy](skills/data-policy/) · [ip-trademark](skills/ip-trademark/)
467
-
468
- ### 📣 Market & brand
469
-
470
- [marketing](skills/marketing/) · [seo-geo](skills/seo-geo/) · [content-engine](skills/content-engine/) · [social-publisher](skills/social-publisher/) · [brand-voice](skills/brand-voice/) · [brand-identity](skills/brand-identity/) · [newsletter](skills/newsletter/) · [landing-copy](skills/landing-copy/) · [ads](skills/ads/) · [article-writing](skills/article-writing/) · [case-studies](skills/case-studies/) · [video-shorts](skills/video-shorts/) · [podcast](skills/podcast/) · [market-research](skills/market-research/) · [competitor-watch](skills/competitor-watch/) · [press-kit](skills/press-kit/) · [community](skills/community/) · [webinar](skills/webinar/) · [review-management](skills/review-management/)
471
-
472
- ### 🎬 Grow a channel
473
- Each with a `docs` feedback loop that learns from your own results. `remotion-video` edits programmatically — transitions, Whisper captions, silence removal.
474
-
475
- [youtube-api](skills/youtube-api/) · [youtube-strategy](skills/youtube-strategy/) · [youtube-ideation](skills/youtube-ideation/) · [youtube-thumbnails](skills/youtube-thumbnails/) · [youtube-packaging](skills/youtube-packaging/) · [remotion-video](skills/remotion-video/) · [tiktok-api](skills/tiktok-api/) · [instagram-api](skills/instagram-api/) · [shortform-strategy](skills/shortform-strategy/) · [shortform-ideation](skills/shortform-ideation/) · [shortform-packaging](skills/shortform-packaging/) · [shortform-editing](skills/shortform-editing/) · [viral-score](skills/viral-score/) · [linkedin-api](skills/linkedin-api/) · [linkedin-strategy](skills/linkedin-strategy/) · [linkedin-content](skills/linkedin-content/) · [linkedin-carousels](skills/linkedin-carousels/) · [linkedin-outreach](skills/linkedin-outreach/) · [medium-writing](skills/medium-writing/) · [medium-publishing](skills/medium-publishing/) · [medium-strategy](skills/medium-strategy/)
476
-
477
- ### 🔌 Connect & automate
478
-
479
- [stripe](skills/stripe/) · [email-connector](skills/email-connector/) · [google-workspace](skills/google-workspace/) · [notion-connector](skills/notion-connector/) · [whatsapp-telegram](skills/whatsapp-telegram/) · [automation-flows](skills/automation-flows/) · [api-connector-builder](skills/api-connector-builder/) · [webhooks](skills/webhooks/) · [data-scraper](skills/data-scraper/) · [spreadsheet-ops](skills/spreadsheet-ops/) · [calendar-scheduling](skills/calendar-scheduling/) · [document-processing](skills/document-processing/) · [e-signature](skills/e-signature/)
480
-
481
- ### ⚙️ Automation
482
-
483
- Operate the big automation platforms **programmatically or via MCP** — create and manage automations *dynamically*, not just design them on a canvas. `automation-strategy` decides whether / what / which platform; the platform skills drive the live REST API or MCP server (harness connectors ship for each). Complements `automation-flows` (visual design + importable workflow JSON).
484
-
485
- [automation-strategy](skills/automation-strategy/) · [n8n](skills/n8n/) · [make](skills/make/) · [zapier](skills/zapier/) · [power-automate](skills/power-automate/)
486
-
487
- ### 📊 Data & analytics
488
-
489
- [analytics](skills/analytics/) · [dashboard](skills/dashboard/) · [kpi-framework](skills/kpi-framework/) · [reporting](skills/reporting/) · [ab-testing](skills/ab-testing/) · [forecasting](skills/forecasting/) · [data-cleaning](skills/data-cleaning/) · [business-intelligence](skills/business-intelligence/)
490
-
491
- ### 🤖 AI — build it in
492
-
493
- [building-agents](skills/building-agents/) · [rag](skills/rag/) · [embeddings-search](skills/embeddings-search/) · [prompt-engineering](skills/prompt-engineering/) · [llm-pipeline](skills/llm-pipeline/) · [agent-eval](skills/agent-eval/) · [chatbot](skills/chatbot/) · [ai-media](skills/ai-media/) · [replicate-images](skills/replicate-images/) · [structured-extraction](skills/structured-extraction/) · [agent-safety](skills/agent-safety/) · [cost-tracking](skills/cost-tracking/)
494
-
495
- ### 🛰️ AI — run it on
496
-
497
- [replicate](skills/replicate/) · [runpod](skills/runpod/) · [modal](skills/modal/) · [huggingface](skills/huggingface/) · [ollama](skills/ollama/) · [together-fireworks](skills/together-fireworks/) · [fal](skills/fal/)
498
-
499
- ### 🎓 AI — train it
500
-
501
- Train and adapt open models end to end: classic ML, deep learning, NLP, fine-tuning (with Unsloth), building training datasets, choosing open-weight models by license/size, and serving them at throughput with vLLM. Facts that move monthly (versions, model licenses) are verified at author time and hedged.
502
-
503
- [machine-learning](skills/machine-learning/) · [deep-learning](skills/deep-learning/) · [nlp](skills/nlp/) · [finetuning](skills/finetuning/) · [training-data](skills/training-data/) · [unsloth](skills/unsloth/) · [open-weights](skills/open-weights/) · [vllm](skills/vllm/)
504
-
505
- ### 🗣️ Languages
506
-
507
- [typescript](skills/typescript/) · [python](skills/python/) · [java](skills/java/) · [csharp-dotnet](skills/csharp-dotnet/) · [php](skills/php/) · [ruby](skills/ruby/) · [cpp](skills/cpp/) · [elixir](skills/elixir/) · [bash-scripting](skills/bash-scripting/) · [sql](skills/sql/) · [go](skills/go/)
508
-
509
- ### 🏗️ Frameworks & app stacks
510
-
511
- [fastapi](skills/fastapi/) · [nextjs](skills/nextjs/) · [react](skills/react/) · [react-native](skills/react-native/) · [vue-nuxt](skills/vue-nuxt/) · [angular](skills/angular/) · [svelte](skills/svelte/) · [astro](skills/astro/) · [solid-js](skills/solid-js/) · [htmx](skills/htmx/) · [nodejs](skills/nodejs/) · [nestjs](skills/nestjs/) · [django](skills/django/) · [laravel](skills/laravel/) · [rails](skills/rails/) · [spring-boot](skills/spring-boot/) · [phoenix](skills/phoenix/) · [flutter](skills/flutter/) · [swift-ios](skills/swift-ios/) · [kotlin-android](skills/kotlin-android/) · [compose-multiplatform](skills/compose-multiplatform/) · [expo](skills/expo/) · [tauri](skills/tauri/) · [electron](skills/electron/) · [rust](skills/rust/) · [wordpress](skills/wordpress/) · [shopify](skills/shopify/) · [no-code-app](skills/no-code-app/) · [chrome-extension](skills/chrome-extension/) · [api-design](skills/api-design/)
512
-
513
- ### 🎮 Game development
514
-
515
- Three engines + engine-agnostic disciplines. Every engine skill pins the current version and bans deprecated APIs, so the agent stops emitting stale Godot-3 / legacy-Unity code.
516
-
517
- [godot](skills/godot/) · [unity](skills/unity/) · [unreal](skills/unreal/) · [game-design](skills/game-design/) · [game-storytelling](skills/game-storytelling/) · [level-design](skills/level-design/) · [gamedev-shaders](skills/gamedev-shaders/) · [gamedev-multiplayer](skills/gamedev-multiplayer/) · [gamedev-physics](skills/gamedev-physics/) · [gamedev-pathing](skills/gamedev-pathing/) · [gamedev-shipping](skills/gamedev-shipping/)
518
-
519
- ### 🗄️ Databases & data layer
520
-
521
- [postgresdb](skills/postgresdb/) · [mysql](skills/mysql/) · [mongodb](skills/mongodb/) · [redis](skills/redis/) · [supabase](skills/supabase/) · [neon](skills/neon/) · [planetscale](skills/planetscale/) · [sqlite-turso](skills/sqlite-turso/) · [prisma-orm](skills/prisma-orm/) · [drizzle-orm](skills/drizzle-orm/) · [firebase](skills/firebase/) · [dynamodb](skills/dynamodb/) · [vector-db](skills/vector-db/) · [clickhouse-analytics](skills/clickhouse-analytics/) · [duckdb](skills/duckdb/) · [db-migrations](skills/db-migrations/) · [backups](skills/backups/)
522
-
523
- ### ☁️ Ship & operate — platforms
524
-
525
- [vercel](skills/vercel/) · [netlify](skills/netlify/) · [cloudflare](skills/cloudflare/) · [railway](skills/railway/) · [render](skills/render/) · [fly-io](skills/fly-io/) · [coolify](skills/coolify/) · [hetzner](skills/hetzner/) · [digitalocean](skills/digitalocean/) · [aws-essentials](skills/aws-essentials/) · [gcp-essentials](skills/gcp-essentials/)
526
-
527
- ### 🛠️ Ship & operate — devops
528
-
529
- [docker](skills/docker/) · [github-actions](skills/github-actions/) · [git-workflow](skills/git-workflow/) · [domains-dns](skills/domains-dns/) · [monitoring](skills/monitoring/) · [email-deliverability](skills/email-deliverability/) · [scaling](skills/scaling/) · [deployment](skills/deployment/) · [deprecation](skills/deprecation/)
530
-
531
- ### 🔒 Ship & operate — quality & security
532
-
533
- [code-review](skills/code-review/) · [security-scan](skills/security-scan/) · [secure-coding](skills/secure-coding/) · [testing-py](skills/testing-py/) · [testing-web](skills/testing-web/) · [testing-go](skills/testing-go/) · [e2e-testing](skills/e2e-testing/) · [accessibility](skills/accessibility/) · [performance](skills/performance/) · [error-handling](skills/error-handling/) · [observability](skills/observability/)
534
-
535
- ### 🌀 Motion & interface craft
536
-
537
- [motion-craft](skills/motion-craft/) · [ui-engineering](skills/ui-engineering/) · [variant-explorer](skills/variant-explorer/)
538
-
539
- ### 🎨 Design & content craft
540
-
541
- [design-loop](skills/design-loop/) · [design](skills/design/) · [design-dna](skills/design-dna/) · [presentations](skills/presentations/) · [course-storytelling](skills/course-storytelling/) · [course-builder](skills/course-builder/) · [technical-writing](skills/technical-writing/) · [translation-l10n](skills/translation-l10n/)
542
-
543
- ### 🧠 Knowledge & meta
544
-
545
- [knowledge-ops](skills/knowledge-ops/) · [codebase-onboarding](skills/codebase-onboarding/) · [research-ops](skills/research-ops/) · [continuous-learning](skills/continuous-learning/) · [skill-scout](skills/skill-scout/) · [context-budget](skills/context-budget/) · [roast-me](skills/roast-me/) · [show-me](skills/show-me/) · [eli5](skills/eli5/) · [fable-operator](skills/fable-operator/)
546
-
547
- ### 🇪🇸 Personal catalog — spec-driven development (Spanish)
548
-
549
- The user's own 37-skill catalog, grouped by the phase of the cycle where each one is used.
550
- The full guide, in Spanish, with one page per phase and a version for teaching: [`docs/skills/`](docs/skills/).
551
- Bodies stay in Spanish; only each `description` was translated to English so Claude can still
552
- decide when to fire them.
553
-
554
- The source of truth is a written document, not a chat message. The chain, as the per-turn gate
555
- routes it:
556
-
557
- ![The philosophy: spec-driven development](docs/img/00-filosofia.svg)
558
-
559
- Always: `superpowers:test-driven-development` and `superpowers:verification-before-completion`.
560
- Bugs start at `superpowers:systematic-debugging`.
561
-
562
- #### 1 · Plan
563
-
564
- Everything before code. What comes out is a spec and a plan, not an idea.
565
-
566
- ![Plan phase flow](docs/img/01-planificar.svg)
567
-
568
- | Skill | What it does |
569
- |---|---|
570
- | [grill-with-docs](skills/grill-with-docs/) | Interrogates the plan and writes the glossary as it goes. The default way to ground an idea. |
571
- | [wayfinder](skills/wayfinder/) | Only when the work does not fit one session: a map of decision tickets. |
572
- | [to-spec](skills/to-spec/) | Turns the idea into a spec: what and why. `superpowers:brainstorming` is the alternative. |
573
- | [write-adr](skills/write-adr/) | Records every hard-to-reverse decision under `docs/adr/`. |
574
- | [research](skills/research/) | Investigates against primary sources and leaves the finding written and dated. |
575
- | [to-questionnaire](skills/to-questionnaire/) | Turns a decision you cannot make alone into a questionnaire for whoever can. |
576
- | [prototype](skills/prototype/) | A throwaway prototype to answer a design question. |
577
- | [to-tickets](skills/to-tickets/) | Splits the work into one-sitting tickets. Used after `wayfinder`. |
578
- | [claude-project-setup](skills/claude-project-setup/) | `CLAUDE.md`, rules, commands and agents. Once per repo. |
579
-
580
- `grilling`, `grill-me` and `domain-modeling` are installed but rarely called by hand: they run
581
- inside `grill-with-docs`.
582
- [grilling](skills/grilling/) · [grill-me](skills/grill-me/) · [domain-modeling](skills/domain-modeling/)
583
-
584
- #### 2 · Implement
585
-
586
- ![Implement phase flow](docs/img/02-implementar.svg)
587
-
588
- | Skill | What it does |
589
- |---|---|
590
- | [implement-spec](skills/implement-spec/) | Builds a whole spec from its `to-tickets` graph: parallel subagents in worktrees, one integration branch, `code-review` at the end. |
591
- | [implement](skills/implement/) | Builds one loose ticket from `to-tickets`. Ordinary work runs `superpowers:executing-plans` instead. |
592
-
593
- #### 3 · Interface
594
-
595
- When the work touches a screen. Sixteen overlapping skills; pick the one that matches the job.
596
-
597
- ![Interface chain flow](docs/img/03-interfaz.svg)
598
-
599
- | Skill | What it does |
600
- |---|---|
601
- | [flujo-interfaz](skills/flujo-interfaz/) | The router: which design skill leads and in what order the rest follow. Start here when the work touches a screen. |
602
- | [ingeniero-diseno-web](skills/ingeniero-diseno-web/) | Runs the whole job: art direction, a declared design system, checkpoints and a scored critique. |
603
- | [diseno-landing](skills/diseno-landing/) | A conversion landing end to end: structure, copy and a strict visual system. |
604
- | [sitios-calidad-premio](skills/sitios-calidad-premio/) | Cinematic sites: GSAP, one smooth-scroll engine, Three.js only with a purpose. |
605
- | [animar](skills/animar/) | Decides in order whether to animate, why, with what, which properties, curve and duration. |
606
- | [diseno-apple](skills/diseno-apple/) | Fluid, physical motion: springs, interruptibility, velocity hand-off, materials. |
607
- | [mejor-layout](skills/mejor-layout/) | Grouping, alignment, reading order, breakpoints, RTL. |
608
- | [mejor-tipografia](skills/mejor-tipografia/) | Scale, line height, variable fonts, wrapping, truncation, punctuation. |
609
- | [mejor-colores](skills/mejor-colores/) | Ramps, semantic tokens, measured contrast, dark mode. |
610
- | [mejor-accesibilidad](skills/mejor-accesibilidad/) | Native before ARIA, focus, keyboard, hit areas, forms. |
611
- | [mejor-ui](skills/mejor-ui/) | Concentric radii, optical alignment, surfaces, icon transitions. |
612
- | [mejor-redaccion](skills/mejor-redaccion/) | Voice and tone, verb buttons, errors that say how to fix them, empty states. |
613
- | [tastemaker](skills/tastemaker/) | UI that does not look AI-made: pixel-measured colour, generated palettes. |
614
- | [leyes-de-percepcion](skills/leyes-de-percepcion/) | Gestalt for interfaces: proximity, similarity, figure-ground, hierarchy. |
615
- | [leyes-de-retencion](skills/leyes-de-retencion/) | Why people abandon a flow: Hick, Fitts, Miller, Jakob, Doherty, peak-end. |
616
- | [vocabulario-animacion](skills/vocabulario-animacion/) | Reverse glossary: turns "that thing that bounces" into the exact term. |
617
- | [video-a-superprompt](skills/video-a-superprompt/) | Turns a reference video into a detailed recreation prompt. |
618
-
619
- #### 4 · Review and close
620
-
621
- ![Review and close flow](docs/img/04-revisar.svg)
622
-
623
- | The work | Order |
624
- |---|---|
625
- | Did not touch a screen | `code-review` → `pr` |
626
- | Touched a screen | `revision-de-cambios` → `revision-interfaz` → `code-review` → `pr` |
627
-
628
- | Skill | What it does |
629
- |---|---|
630
- | [code-review](skills/code-review/) | Two axes in parallel: the repo's standards and the spec. |
631
- | [revision-de-cambios](skills/revision-de-cambios/) | Reviews the change, reads the removed lines and classifies each finding. Only if it touched a screen. |
632
- | [revision-interfaz](skills/revision-interfaz/) | Runs the six `mejor-*` skills as one report with a verdict. Only if it touched a screen. |
633
- | [pr](skills/pr/) | Writes the PR body: a visual summary, before/after evidence, and the merge danger (one-way or two-way door, blast radius). |
634
- | [handoff](skills/handoff/) | Compacts the session into a handoff document. Optional. |
635
-
636
- #### 9 · Other
637
-
638
- | Skill | What it does |
639
- |---|---|
640
- | [teach](skills/teach/) | Teaching across sessions. |
641
- | [muscle-memory](skills/muscle-memory/) | A Python kata gym. |
642
- | [wait-what](skills/wait-what/) | Handbrake: stop and restate. |
643
- | [retro](skills/retro/) | Retrospective on a session: what to change in the agent's environment. You approve every change. |
644
- | [writing-for-agents](skills/writing-for-agents/) | How to write documents an agent consumes. |
645
-
646
- ---
647
-
648
- ## Multi-target
649
-
650
- `skills/<name>/` is the catalog source. On install the real files land **once**
651
- in the project at `.rsc/skills/<id>/`; each assistant you pick gets a symlink
652
- (or a converted file) back to that shared base — pick several and nothing is
653
- duplicated. The wizard asks which ones; `--target a,b` does it non-interactively.
654
-
655
- | Target | Skill destination (→ `.rsc/skills/<id>/`) | Always-on detector |
656
- | --- | --- | --- |
657
- | `claude` | `.claude/skills/<id>/` → symlink (copy on Windows) | SessionStart hook in `.claude/settings.json` |
658
- | `codex` | `.codex/rsc/<id>/` → symlink | block in `AGENTS.md` |
659
- | `copilot` | `.github/rsc/<id>/` → symlink | block in `.github/copilot-instructions.md` |
660
- | `cursor` | `.cursor/rules/<id>.mdc` (converted) | always-apply rule |
661
- | `gemini` | `.gemini/rsc/<id>/` → symlink | block in `GEMINI.md` |
662
- | `windsurf` | `.windsurf/rsc/<id>/` → symlink | rule in `.windsurf/rules/rsc-suggest.md` |
663
- | `cline` | `.clinerules/rsc/<id>/` → symlink | rule in `.clinerules/rsc-suggest.md` |
664
- | `antigravity` | `.antigravity/rsc/<id>/` → symlink | block in `.antigravity/AGENTS.md` |
665
- | `zed` | `.zed/rsc/<id>/` → symlink | block in `AGENTS.md` |
666
- | `continue` | `.continue/rsc/<id>/` → symlink | rule in `.continue/rules/rsc-suggest.md` |
667
- | `roo` | `.roo/rsc/<id>/` → symlink | rule in `.roo/rules/rsc-suggest.md` |
668
- | `amp` | `.amp/rsc/<id>/` → symlink | block in `AGENTS.md` |
669
- | `opencode` | `.opencode/rsc/<id>/` → symlink | block in `AGENTS.md` |
670
- | `jules` | `.jules/rsc/<id>/` → symlink | block in `AGENTS.md` |
671
- | `junie` | `.junie/rsc/<id>/` → symlink | block in `.junie/guidelines.md` |
672
- | `kiro` | `.kiro/rsc/<id>/` → symlink | doc in `.kiro/steering/rsc-suggest.md` |
673
- | `aider` | `.aider/rsc/<id>/` → symlink | block in `CONVENTIONS.md` |
674
-
675
- > `codex`, `zed`, `amp`, `opencode` and `jules` all share the one root
676
- > `AGENTS.md`; the block is idempotent, so picking several writes it once.
677
-
678
- The richer surfaces are intentionally narrower than skill support:
679
-
680
- | Targets | Stack agents | Native commands | Local session continuation |
681
- | --- | --- | --- | --- |
682
- | Claude Code | yes | agent + memory entries; skills already invoke natively | full |
683
- | Codex | yes | no separate project-command surface | full after `/hooks` trust |
684
- | Cursor desktop | yes | yes | assisted |
685
- | Gemini CLI, OpenCode | yes | yes | full |
686
- | GitHub Copilot | yes | yes | unsupported |
687
- | Junie, Kiro | yes | unsupported | unsupported |
688
- | Windsurf, Cline, Roo | unsupported | yes | unsupported |
689
- | Antigravity, Zed, Continue, Amp, Jules, Aider | unsupported | unsupported | unsupported |
690
-
691
- `manifest.json` is the generated public inventory: 34 agents (5 base + 29
692
- selective specialists) and 43 command entries (10 fixed + 33 stack aliases).
693
- Unsupported means rsc writes nothing for that surface; it does not emulate a
694
- provider feature with an unverified file.
695
-
696
- ---
697
-
698
- ## Skill format
198
+ ## Catálogo
699
199
 
700
- Each skill is a directory under `skills/<name>/` whose `SKILL.md` frontmatter
701
- drives both triggering and the installer's recommendations:
200
+ ![294 skills por dominio](docs/img/readme/readme-15-catalogo.png)
702
201
 
703
- ```yaml
704
- ---
705
- name: my-skill
706
- description: Use when [specific triggers]… Triggers: 'phrase', 'frase'. NOT x (that is sibling).
707
- tags: [keyword, keyword] # what the consult advisor searches over
708
- recommends: [sibling-skill] # what the system offers to install next
709
- profiles: [core, full] # optional: named-profile membership
710
- origin: risco
711
- ---
712
- ```
202
+ 294 skills en 25 dominios: software, negocio, contenido, datos e IA.
203
+ Cada una se activa sola cuando la tarea encaja.
713
204
 
714
- The full agent-skill spec lives at
715
- [agentskills.io/specification](https://agentskills.io/specification).
205
+ **[Ver el catálogo completo →](docs/catalogo.md)** · [Referencia técnica](docs/referencia-tecnica.md) ·
206
+ [Cómo funciona por dentro](docs/como-funciona/README.md)
716
207
 
717
208
  ---
718
209
 
719
- ## Repo layout & contributing
720
-
721
- `skills/<name>/` is the **single source of truth** — every skill is authored
722
- there, once. After editing any skill:
723
-
724
- ```bash
725
- npm run manifest # regenerate manifest.json from skills/*/SKILL.md
726
- npm run validate # ajv-validate frontmatter + check recommends integrity
727
- npm test # unit + integration tests
728
- bash scripts/eval-lint.sh # validate every skills/*/evals/cases.yaml
729
- ```
730
-
731
- `manifest.json` is generated, never hand-edited; CI runs `npm run manifest:check`
732
- and fails if it's stale or the skill count drifts. Adding a skill is: create
733
- `skills/<id>/SKILL.md` with `tags` + `recommends`, run `npm run manifest`, done —
734
- the rubric to hold it to is `scripts/skill-rubric.md`.
735
-
736
- This is a personal catalog. Bug reports welcome via GitHub issues; PRs fixing
737
- detector patterns, provider endpoints, or typos are appreciated.
738
-
739
- ## Third-party skills
740
-
741
- Most of this catalog is written here. These are not, and they keep their author's credit:
742
-
743
- | Skills | Source | License |
744
- | --- | --- | --- |
745
- | `design-eng` · `animate` · `animate-expo` · `review-animations` · `improve-animations` · `find-animation-opportunities` · `animation-vocabulary` · `apple-design` · `prototype` · `pick-ui-library` · `write-swift` · `ask-sonner` | [emilkowalski/skills](https://github.com/emilkowalski/skills) by Emil Kowalski, commit `d23d7f8` | MIT |
746
- | part of the AI-tell corpus in `design` | [Leonxlnx/taste-skill](https://github.com/Leonxlnx/taste-skill) | MIT |
747
-
748
- Adapted, not mirrored: each one carries rsc frontmatter, routing evals, hand-offs to its siblings
749
- and — where it declares a binding rule — a checker with a test. The craft bar in them is the
750
- original author's. If you want the source of the motion material rather than this adaptation, go to
751
- [animations.dev](https://animations.dev/).
752
-
753
- ## License
754
-
755
- MIT. See [LICENSE](LICENSE).
210
+ <sub>Deriva del trabajo de Eric Risco en [ericrisco/rsc-harness](https://github.com/ericrisco/rsc-harness).</sub>