@ericrisco/rsc 0.1.44 → 0.1.45

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.
Files changed (97) hide show
  1. package/README.md +1 -1
  2. package/manifest.json +110 -86
  3. package/package.json +1 -1
  4. package/scripts/lib/domains.js +1 -1
  5. package/scripts/skill-migration-brief.md +104 -0
  6. package/skills/ab-testing/SKILL.md +9 -41
  7. package/skills/accessibility/SKILL.md +5 -7
  8. package/skills/ads/SKILL.md +9 -24
  9. package/skills/agent-eval/SKILL.md +7 -33
  10. package/skills/agent-safety/SKILL.md +7 -14
  11. package/skills/ai-media/SKILL.md +4 -20
  12. package/skills/analytics/SKILL.md +8 -30
  13. package/skills/analyze/SKILL.md +24 -59
  14. package/skills/angular/SKILL.md +12 -25
  15. package/skills/api-connector-builder/SKILL.md +10 -27
  16. package/skills/api-design/SKILL.md +7 -14
  17. package/skills/article-writing/SKILL.md +1 -18
  18. package/skills/astro/SKILL.md +36 -54
  19. package/skills/author-skill/SKILL.md +41 -74
  20. package/skills/author-skill/evals/README.md +5 -5
  21. package/skills/author-skill/evals/cases.yaml +8 -8
  22. package/skills/author-skill/references/description-recipe.md +25 -26
  23. package/skills/author-skill/references/eval-authoring.md +1 -1
  24. package/skills/author-skill/references/rsc-conventions.md +1 -1
  25. package/skills/automation-flows/SKILL.md +6 -16
  26. package/skills/automation-strategy/SKILL.md +1 -9
  27. package/skills/aws-essentials/SKILL.md +6 -23
  28. package/skills/backups/SKILL.md +1 -7
  29. package/skills/bash-scripting/SKILL.md +5 -9
  30. package/skills/bookkeeping/SKILL.md +2 -10
  31. package/skills/brand-identity/SKILL.md +18 -44
  32. package/skills/brand-voice/SKILL.md +4 -31
  33. package/skills/building-agents/SKILL.md +20 -103
  34. package/skills/business-intelligence/SKILL.md +9 -23
  35. package/skills/calendar-scheduling/SKILL.md +11 -27
  36. package/skills/case-studies/SKILL.md +3 -8
  37. package/skills/chatbot/SKILL.md +6 -23
  38. package/skills/chrome-extension/SKILL.md +2 -2
  39. package/skills/clarify/SKILL.md +31 -72
  40. package/skills/clickhouse-analytics/SKILL.md +2 -8
  41. package/skills/client-onboarding/SKILL.md +17 -19
  42. package/skills/cloudflare/SKILL.md +3 -8
  43. package/skills/code-review/SKILL.md +10 -23
  44. package/skills/codebase-onboarding/SKILL.md +2 -7
  45. package/skills/cold-outreach/SKILL.md +9 -30
  46. package/skills/community/SKILL.md +4 -31
  47. package/skills/competitor-watch/SKILL.md +20 -35
  48. package/skills/compliance/SKILL.md +10 -37
  49. package/skills/compose-multiplatform/SKILL.md +1 -1
  50. package/skills/constitution/SKILL.md +8 -35
  51. package/skills/content-engine/SKILL.md +4 -16
  52. package/skills/context-budget/SKILL.md +3 -21
  53. package/skills/continuous-learning/SKILL.md +10 -40
  54. package/skills/contracts/SKILL.md +6 -17
  55. package/skills/coolify/SKILL.md +8 -14
  56. package/skills/cost-tracking/SKILL.md +3 -11
  57. package/skills/course-builder/SKILL.md +17 -45
  58. package/skills/course-storytelling/SKILL.md +26 -94
  59. package/skills/cpp/SKILL.md +26 -71
  60. package/skills/csharp-dotnet/SKILL.md +19 -38
  61. package/skills/customer-support/SKILL.md +14 -37
  62. package/skills/dashboard/SKILL.md +6 -26
  63. package/skills/data-cleaning/SKILL.md +37 -63
  64. package/skills/data-policy/SKILL.md +8 -21
  65. package/skills/data-scraper/SKILL.md +1 -7
  66. package/skills/debug/SKILL.md +10 -49
  67. package/skills/deployment/SKILL.md +38 -101
  68. package/skills/design/SKILL.md +34 -116
  69. package/skills/fable-operator/SKILL.md +1 -4
  70. package/skills/fastapi/SKILL.md +50 -82
  71. package/skills/flutter/SKILL.md +41 -89
  72. package/skills/go/SKILL.md +57 -105
  73. package/skills/harness/SKILL.md +52 -68
  74. package/skills/implement/SKILL.md +1 -1
  75. package/skills/init/SKILL.md +152 -168
  76. package/skills/marketing/SKILL.md +30 -80
  77. package/skills/nextjs/SKILL.md +42 -116
  78. package/skills/orient/SKILL.md +25 -20
  79. package/skills/parallel/SKILL.md +9 -75
  80. package/skills/plan/SKILL.md +92 -165
  81. package/skills/postgresdb/SKILL.md +52 -72
  82. package/skills/presentations/SKILL.md +49 -87
  83. package/skills/python/SKILL.md +23 -72
  84. package/skills/react/SKILL.md +19 -67
  85. package/skills/review/SKILL.md +22 -52
  86. package/skills/rust/SKILL.md +40 -115
  87. package/skills/sdd-init/SKILL.md +9 -14
  88. package/skills/secure-coding/SKILL.md +80 -109
  89. package/skills/ship/SKILL.md +25 -55
  90. package/skills/tasks/SKILL.md +37 -61
  91. package/skills/typescript/SKILL.md +22 -55
  92. package/skills/verify/SKILL.md +8 -32
  93. package/skills/viral-score/SKILL.md +122 -0
  94. package/skills/viral-score/evals/README.md +16 -0
  95. package/skills/viral-score/evals/cases.yaml +50 -0
  96. package/skills/vue-nuxt/SKILL.md +45 -106
  97. package/skills/worktrees/SKILL.md +24 -69
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: init
3
- description: "Use when starting from nothing or pointing the rsc-skills harness at an existing project — the front door / bootstrapper. It gauges the user's technical level FIRST (non-technical by default), sets an explanation/accompaniment dial, then discovers what they want to build OR govern (any software stack, OR a non-code harness: running a company/ops, research, personal knowledge, content). It detects greenfield vs brownfield, profiles the user into 02-DOCS, RECOMMENDS which rsc skills to install (printing the exact `npx @ericrisco/rsc add` commands), and hands off to the harness skill to scaffold 01-TOOLS + 02-DOCS. Triggers: 'empezar de cero', 'no sé por dónde empezar', 'start a new project', 'bootstrap', 'set up the harness', 'monta el proyecto', 'quiero montar una empresa/ops/wiki con esto', 'arranca', 'init'. NOT the scaffolder itself (that's the harness skill) and NOT a specific stack skill."
3
+ description: "Use when starting from nothing or pointing rsc at an existing project — the front door. Gauges technical level and the accompaniment dial first (non-technical by default), discovers what the user wants to build or govern (any stack, or a non-code harness: company/ops, research, knowledge, content), writes the profile to 02-DOCS, and installs the skills discovery justified. NOT the scaffolder (that is `harness`), NOT a stack skill."
4
4
  tags: [init, bootstrap, start, new, setup]
5
5
  recommends: [harness]
6
6
  profiles: [minimal, core, full]
@@ -9,213 +9,197 @@ origin: risco
9
9
 
10
10
  # init — the rsc-skills Front Door
11
11
 
12
- *The very first thing you run. It meets the user where they are — assuming non-technical until told otherwise — figures out what they actually want, recommends the right skills, and hands off to the `harness` skill to build the workspace.*
12
+ *The very first thing you run. It meets the user where they are — assuming non-technical until told
13
+ otherwise — figures out what they actually want, installs the right skills, and hands off to
14
+ `harness` to build the workspace.*
13
15
 
14
- It **profiles, discovers, and recommends**, then prints the exact install commands and the handoff. The boundary is fixed: **`init` writes ONLY the user-profile + decisions log under `02-DOCS/wiki/harness/` and the `CLAUDE.md` Knowledge-map link; ALL other `01-TOOLS/` + `02-DOCS/` scaffolding is the `harness` skill's job.** Think of `init` as the receptionist: it learns who you are and what you need, writes that down where every other skill can read it, and walks you to the right room.
16
+ Think of `init` as the receptionist: it learns who you are and what you need, writes that down where
17
+ every other skill can read it, and walks you to the right room. The boundary is fixed: **`init`
18
+ writes only the user-profile and decisions log under `02-DOCS/wiki/harness/`, plus the `CLAUDE.md`
19
+ Knowledge-map link.** Every other `01-TOOLS/` + `02-DOCS/` scaffold belongs to `harness`.
15
20
 
16
- It is **domain-agnostic**. The thing being built or governed may be:
21
+ It is **domain-agnostic**. The thing being built or governed may be software on any stack, or a
22
+ non-code harness — running a company, an ops desk, a research program, a knowledge base, a content
23
+ operation. No code required; the same structure governs it. Never assume "project" means "code".
17
24
 
18
- - **Software** — any stack (web, mobile, backend, agents, a CLI, a data pipeline).
19
- - **A non-code harness** — running a company / operations, a research program, a personal knowledge base, or a content operation that connects to tools (email, calendar, CRM, docs, payments). No code required; the same `01-TOOLS/` + `02-DOCS/` structure governs it (scaffolded by the `harness` skill, not here).
25
+ ## First contact: two values, set before anything else
20
26
 
21
- ## Non-technical-first + the accompaniment dial (read this first)
27
+ The whole harness behaves differently depending on these two. Nothing — no discovery, no
28
+ recommendation — happens before the profile exists and `CLAUDE.md` links it.
22
29
 
23
- This is the most important section. The whole harness behaves differently depending on two values set here. **Set them before doing anything else, on first contact, in this order.**
30
+ **Step 1 — Gauge technical level.** Literally the first thing you say, before any discovery, framed
31
+ so nobody feels small. Ask once, in their language:
24
32
 
25
- ### Step 1 — Gauge technical level (the VERY FIRST question)
33
+ > "Antes de nada, para hablarte como te resulte más cómodo: ¿te manejas con código y términos
34
+ > técnicos, o prefieres que te lo explique todo en cristiano? No hay respuesta mala — solo me ayuda
35
+ > a no aburrirte ni perderte."
26
36
 
27
- The system **always starts assuming the user is non-technical.** The very first thing you say, before any discovery, gauges their technical level — framed kindly, never making anyone feel small. Ask once, in their language. For a Spanish speaker:
37
+ > "First, so I talk to you the right way: are you comfortable with code and technical terms, or
38
+ > would you rather I explain everything in plain language? There's no wrong answer — it just helps
39
+ > me not bore you or lose you."
28
40
 
29
- > "Antes de nada, para hablarte como te resulte más cómodo: ¿te manejas con código y términos técnicos, o prefieres que te lo explique todo en cristiano? No hay respuesta mala — solo me ayuda a no aburrirte ni perderte."
41
+ Record `technical_level: non-technical | mixed | technical`. Until they say otherwise, assume
42
+ non-technical: plain language, analogies over acronyms.
30
43
 
31
- For an English speaker:
44
+ **Step 2 — Set the accompaniment dial.** Present it and let them pick; describe the options, do not
45
+ just list letters.
32
46
 
33
- > "First, so I talk to you the right way: are you comfortable with code and technical terms, or would you rather I explain everything in plain language? There's no wrong answer — it just helps me not bore you or lose you."
34
-
35
- Until they say otherwise, **default to non-technical framing**: plain language, no jargon, analogies over acronyms. Record the answer as `technical_level: non-technical | mixed | technical`.
36
-
37
- ### Step 2 — Set the accompaniment / explanation dial
38
-
39
- Immediately after, present the dial and let them pick. Describe each option clearly — do not just list letters:
40
-
41
- - **L0 — "Modo cavernícola"**: mínimas palabras. Hago las cosas y ya, casi sin explicar. Para quien quiere resultados y cero ruido.
42
- - **L1 — "Breve"**: una línea de *por qué* en cada paso. Sabes lo que hago sin que te cuente la vida.
43
- - **L2 — "Explica decisiones"**: justifico cada decisión relevante a medida que avanzo. Para quien quiere entender el porqué de lo importante.
44
- - **L3 — "Acompañamiento total"**: te lo explico TODO, te hago muchas preguntas para entender bien tu contexto, y razono cada decisión. Ideal si no eres técnico y quieres aprender mientras montamos esto.
45
-
46
- Record as `accompaniment_level: L0 | L1 | L2 | L3`. If the user is non-technical and gives no preference, **default to L3**. If technical and silent, default to L1.
47
-
48
- ### Step 3 — Persist BEFORE anything else
49
-
50
- Before discovery, before any recommendation, write the profile to `02-DOCS` and link it from the root `CLAUDE.md`. This is non-negotiable: every other skill reads these values to decide how much to explain and how many questions to ask.
51
-
52
- - `02-DOCS/wiki/harness/user-profile.md` — the living profile (technical level, accompaniment level, goals, context, constraints). Format in `references/accompaniment-and-profile.md`.
53
- - `02-DOCS/wiki/harness/decisions.md` — an **append-only** decisions log. Every significant decision gets one entry, never edited or deleted. Format in `references/accompaniment-and-profile.md`.
54
- - Root `CLAUDE.md` → a SHORT `## Knowledge map` pointer: the read-first entries (this `user-profile.md` and the `decisions.md` log) plus a "full index → `02-DOCS/wiki/index.md`" line. Keep this pointer tiny — it loads on every turn; ALL other index entries live in `02-DOCS/wiki/index.md`, not here. Create `CLAUDE.md` if absent (additive only — never delete existing sections).
55
-
56
- If `02-DOCS/` does not yet exist (greenfield), create `02-DOCS/wiki/harness/` now — just enough to hold these two files. That, plus the `CLAUDE.md` Knowledge-map link, is everything `init` writes; ALL other `01-TOOLS/` + `02-DOCS/` scaffolding is the `harness` skill's job.
57
-
58
- ### Step 4 — Propose the developer model (the implementation subagent)
59
-
60
- rsc installs a **`developer`** subagent (the fan-out / implementation worker) for every assistant that supports file-based agents (Claude Code, Cursor, OpenCode, Gemini, Copilot, Junie, Kiro, Codex). It runs at the **balanced** tier by default — **Sonnet** on Anthropic tools (the provider's mid model elsewhere) — and **never** the cheapest `light` model, which is too weak to build with. Offer the choice once, calibrated to the dial:
61
-
62
- - *"La implementación la hará un sub-agente `developer`. ¿Qué modelo? **balanced / Sonnet** (rápido y económico — recomendado) o **heavy / Opus** (máxima calidad, más caro)."* Never offer `light`/Haiku.
63
-
64
- Record it to `.rsc/developer.json` (`{ "tier": "balanced" }` or `"heavy"`) and re-run the install/sync so the agent files adopt it. If you skip the question (e.g. L0), default to `balanced`. The default is also written at install time, so the developer agent is always set even when onboarding never asks — "propose at onboarding, and also when it isn't set."
65
-
66
- ### Opt-out marker — `.rsc/.no-harness`
67
-
68
- A freshly-installed session auto-starts `init` while `02-DOCS/wiki/harness/user-profile.md` is absent (the `suggest` Onboarding gate + claude's SessionStart hook). If the user does not want a harness in this repo (e.g. they installed only code skills), write an empty `.rsc/.no-harness` — this permanently silences the auto-start here even before a profile exists. Completing first contact (which writes `user-profile.md`) also silences it. The marker is project-local; commit it so the "no harness here" decision is shared by the team.
69
-
70
- ### How every skill adapts to the dial
71
-
72
- Every rsc skill MUST read `user-profile.md` at the start of a session and adapt:
73
-
74
- | Level | Verbosity | Questions it asks | Jargon |
75
- | --- | --- | --- | --- |
76
- | L0 | One line of output, results only | None beyond hard blockers | Avoided |
77
- | L1 | One *why* line per step | Only when genuinely ambiguous | Minimal, defined inline |
78
- | L2 | Justify each relevant decision | Asks before each significant decision | OK if defined once |
79
- | L3 | Explain everything, narrate reasoning | Many — contextualizes every choice | Always translated to plain language |
80
-
81
- `technical_level` is an orthogonal modifier: even at L0, a non-technical user gets plain-language phrasing; even at L3, a technical user gets to skip the 101 explanations. Full rules and the exact file formats → `references/accompaniment-and-profile.md`.
82
-
83
- ## The "siempre 3 opciones" decision pattern
84
-
85
- For **any** significant decision — deploy target, database, framework, hosting, tooling, which CRM, where to keep documents — never decide silently and never dump ten options. Run this pattern:
86
-
87
- 1. **Gather requirements first.** Ask the questions that actually drive the choice. For a deploy target: expected number of users, concurrent users, budget, data region / residency rules, the team's comfort operating servers, and scaling needs. Match the number and depth of questions to the accompaniment level (L0: ask only blockers; L3: ask all, explaining why each matters).
88
- 2. **Present EXACTLY 3 options** with honest trade-offs — what each is good at, what it costs, what it demands of them.
89
- 3. **Recommend one**, matched to their answers AND their level, and say why in language they understand.
90
- 4. **Log the decision** to `02-DOCS/wiki/harness/decisions.md` (append-only) once they pick.
91
-
92
- Canonical deploy example (tailor the third option to the case):
93
-
94
- 1. **Hetzner VPS + Coolify** — cheapest, total control, but you self-manage the server (updates, backups, uptime).
95
- 2. **Vercel** — zero-ops, fully managed, scales itself; gets expensive at scale and locks you into its model.
96
- 3. **A third matched to the case** — Fly.io (run close to users, simple containers), Railway (managed, gentle learning curve), or a managed cloud (AWS/GCP) when compliance or an existing org demands it.
97
-
98
- Full pattern, the requirements-gathering checklists per decision type, and the worked deploy example → `references/recommend-skills.md`.
47
+ | Level | What they get |
48
+ | --- | --- |
49
+ | L0 — cavernícola | Results, almost no explanation. One line of output; no questions beyond hard blockers. |
50
+ | L1 — breve | One line of *why* per step; questions only when genuinely ambiguous. |
51
+ | L2 — explica decisiones | Each relevant decision justified; asks before each significant one. |
52
+ | L3 — acompañamiento total | Explains everything, reasons out loud, asks a lot. Ideal for learning while building. |
53
+
54
+ Non-technical and silent → default **L3**. Technical and silent → **L1**. `technical_level` is an
55
+ orthogonal modifier: even at L0 a non-technical user gets plain phrasing; even at L3 a technical one
56
+ skips the 101s. Every rsc skill reads these two values and obeys them — L0 means *do it and stop
57
+ talking*. Full rules and file formats → `references/accompaniment-and-profile.md`.
58
+
59
+ **Step 3 — Persist immediately.** Before discovery, before any recommendation:
60
+
61
+ - `02-DOCS/wiki/harness/user-profile.md` — the living profile (levels, goals, context, constraints).
62
+ - `02-DOCS/wiki/harness/decisions.md` — append-only. Entries are never edited or deleted.
63
+ - Root `CLAUDE.md` → a **short** `## Knowledge map` pointer: those two read-first entries plus a
64
+ "full index → `02-DOCS/wiki/index.md`" line. Keep it tiny; it loads on every turn, and every other
65
+ index entry belongs in the wiki index. Create `CLAUDE.md` if absent, additive only — never delete
66
+ user content.
67
+
68
+ Greenfield? Create just `02-DOCS/wiki/harness/` to hold those two files. That plus the link is
69
+ everything `init` writes.
70
+
71
+ **Step 4 — Propose the developer model.** rsc installs a `developer` subagent (the implementation
72
+ worker) for every assistant supporting file-based agents. It runs at the **balanced** tier by
73
+ default — Sonnet on Anthropic tools, the provider's mid model elsewhere — and never the cheapest
74
+ `light` model, which is too weak to build with. Offer once, calibrated to the dial:
75
+
76
+ > *"La implementación la hará un sub-agente `developer`. ¿Qué modelo? **balanced / Sonnet** (rápido y
77
+ > económico — recomendado) o **heavy / Opus** (máxima calidad, más caro)."*
78
+
79
+ Record to `.rsc/developer.json` and re-run install/sync so the agent files adopt it. Skipped (e.g.
80
+ at L0) → `balanced`, which install also writes by default.
81
+
82
+ **Opt-out.** A fresh session auto-starts `init` while `user-profile.md` is absent. If the user does
83
+ not want a harness in this repo, write an empty `.rsc/.no-harness` — that silences the auto-start
84
+ permanently, even before a profile exists. Completing first contact silences it too. Commit the
85
+ marker so the decision is shared by the team.
86
+
87
+ ## Significant decisions: requirements first, then exactly three options
88
+
89
+ For **any** significant decision — deploy target, database, framework, hosting, which CRM, where
90
+ documents live — never decide silently and never dump ten options.
91
+
92
+ 1. **Gather the requirements that actually drive the choice.** For a deploy target: expected users,
93
+ concurrency, budget, data residency, the team's comfort operating servers, scaling needs. Match
94
+ the number of questions to the dial.
95
+ 2. **Present exactly three options** with honest trade-offs: what each is good at, what it costs,
96
+ what it demands of them.
97
+ 3. **Recommend one**, matched to their answers and their level, and say why in language they follow.
98
+ 4. **Log it** to `decisions.md` once they pick.
99
+
100
+ Canonical deploy example — Hetzner VPS + Coolify (cheapest, total control, you self-manage), Vercel
101
+ (zero-ops, scales itself, expensive at scale), and a third matched to the case (Fly.io, Railway, or
102
+ a managed cloud when compliance demands it). Requirements checklists per decision type and the
103
+ worked example → `references/recommend-skills.md`.
99
104
 
100
105
  ## The flow
101
106
 
102
- Run these phases in order. Phase 1 is mandatory and comes before everything.
103
-
104
107
  ```text
105
- PROFILE → DISCOVER → RECOMMEND → HANDOFF
108
+ PROFILE → DISCOVER → INSTALL → GROUND → HANDOFF
106
109
  ```
107
110
 
108
111
  ### Phase 1 — PROFILE
109
112
 
110
- Gauge technical level (Step 1), set the accompaniment dial (Step 2), and persist the profile + Knowledge-map link (Step 3) — all per the section above. Do not proceed until `user-profile.md` exists and `CLAUDE.md` links it.
113
+ Steps 1-3 above. Do not proceed until `user-profile.md` exists and `CLAUDE.md` links it. The
114
+ framing of every later question depends on it, which is why it cannot wait until after discovery.
111
115
 
112
116
  ### Phase 2 — DISCOVER
113
117
 
114
- Figure out two things: **the state of the ground** and **what they want**.
115
-
116
- **Greenfield vs brownfield** — detect, don't ask blindly:
117
-
118
- - **Brownfield** if the workspace has subproject manifests (`package.json`, `pyproject.toml`, `pubspec.yaml`, `go.mod`, `Cargo.toml`), source files, legacy `XX-*` folders, or an existing `01-TOOLS/` / `02-DOCS/`. Detect the stack and current state the way `harness` SCAN does (read-only walk; ignore `node_modules/`, `.venv/`, `.next/`, `.git/`, `dist/`, `build/`, `__pycache__/`, `.dart_tool/`). Summarize what you found and confirm with the user.
119
- - **Greenfield** if the workspace is empty or has only stray notes. Then it's a brand-new idea — interview from zero.
120
-
121
- **What they want to build OR govern** — establish the domain. Is it software (which surfaces: backend, frontend, mobile, agents)? Or a non-code harness (company/ops, research, personal knowledge, content)? Then capture goals, audience, constraints, and any tools/providers already in play.
118
+ Establish **the state of the ground** and **what they want**.
122
119
 
123
- Record everything to `02-DOCS/wiki/harness/` as you go. Use the greenfield and brownfield questionnaires (for software AND non-code harnesses) in `references/discovery.md`. Ask in batches sized to the accompaniment level — never dump every question at once.
120
+ Detect greenfield vs brownfield; don't ask blindly. **Brownfield** if the workspace has subproject
121
+ manifests (`package.json`, `pyproject.toml`, `pubspec.yaml`, `go.mod`, `Cargo.toml`), source files,
122
+ legacy `XX-*` folders, or an existing `01-TOOLS/` / `02-DOCS/`. Detect the stack the way `harness`
123
+ SCAN does — a read-only walk ignoring `node_modules/`, `.venv/`, `.next/`, `.git/`, `dist/`,
124
+ `build/`, `__pycache__/`, `.dart_tool/`. Summarize what you found and confirm it. **Greenfield** if
125
+ the workspace is empty or holds only stray notes: interview from zero.
124
126
 
125
- ### Phase 3 — DETECT & INSTALL
127
+ Then the domain. Software (backend, frontend, mobile, agents) or a non-code harness (company/ops,
128
+ research, knowledge, content)? Capture goals, audience, constraints, and any tools already in play.
129
+ Record to `02-DOCS/wiki/harness/` as you go. Questionnaires for both cases →
130
+ `references/discovery.md`. Ask in batches sized to the dial; never dump every question at once.
126
131
 
127
- Map what you learned to individual rsc skills. **You have a terminal — install them yourself.** After a one-word confirm, run `npx @ericrisco/rsc add <ids>` via Bash. (If you genuinely cannot run a shell, print the exact command and tell the user to paste it in another terminal tab.) Then tell them the **new skills activate in a fresh session/tab** — see the install note below the table. Skill map:
132
+ ### Phase 3 — INSTALL
128
133
 
129
- | Need | Skills | Why (one line, matched to level) |
130
- | --- | --- | --- |
131
- | Always | `harness` | The control plane that scaffolds and governs the workspace (`suggest` comes with it as the floor). |
132
- | Software backend | `fastapi` / `go`, `postgresdb` | The server, the database, the API. |
133
- | Software frontend | `nextjs` / `flutter`, `design` | The web/mobile UI people see. |
134
- | Marketing / landing / decks / teaching | `marketing`, `presentations`, `course-storytelling` | The words and slides. |
135
- | AI agents | `building-agents` | Agent loops, tools, RAG. |
136
- | Security & shipping / ops (incl. non-code company harness connecting tools) | `secure-coding`, `deployment` | Ship it safely and wire up external tools. |
134
+ Map what you learned to skills. **You have a terminal — install them yourself** after a one-word
135
+ confirm: `npx @ericrisco/rsc add <ids>`. Only if you genuinely cannot run a shell, hand the exact
136
+ command over for another tab. Never install without the confirm; it changes their environment.
137
137
 
138
- Show the shortlist with a one-line *why* per skill (language matched to the user's level), get a one-word confirm, then install:
139
-
140
- ```text
141
- npx @ericrisco/rsc add <skill> [<skill> ...]
142
- ```
143
-
144
- > **After installing, say this (matched to their IDE):** "Listo, instaladas. Para que se activen, abre una **pestaña/sesión nueva** de Claude Code (o recarga Cursor/Codex/Gemini) en esta carpeta — las skills se cargan al arrancar la sesión." If you couldn't run the command yourself, give it to them to run in another terminal tab, then the same new-session note.
145
-
146
- Install only skills their answers justify — same discipline as "no speculative tools". Full skill map, sample printouts per scenario, and the requirements-first decision pattern → `references/recommend-skills.md`.
147
-
148
- ### Phase 3.5 — GROUND THE PROJECT (git · live docs · skill audit)
149
-
150
- Three quick, enforced setup checks once the skills are installed. The SessionStart hook nudges each
151
- of these too; doing them here means the user starts clean.
152
-
153
- 1. **Version control is required.** If the workspace has no `.git/`, offer `git init` (recommended —
154
- the SDD chain and the ship guard assume git). If the user declines, write an empty `.rsc/.no-git`
155
- so the decision is persisted and neither you nor the hook asks again. Log the decision.
156
- 2. **Offer Context7 (live library docs).** For a software project, offer to wire the Context7 MCP
157
- once: `claude mcp add --transport http context7 https://mcp.context7.com/mcp`. If they don't want
158
- it, write `.rsc/.no-context7`. (It gives version-correct docs instead of guessing from memory.)
159
- 3. **Run a skill audit.** After installing, run `npx @ericrisco/rsc audit`. It inventories the skills
160
- installed for this project and on the machine, and flags possible overlap or skills with no
161
- footprint here — so the project starts with the right set, not a pile. It re-runs on a cadence via
162
- the SessionStart nudge. Summarize the result at the user's accompaniment level.
163
- 4. **Danger guard follows `technical_level`.** When you record `technical_level: non-technical` (or
164
- `mixed`, or while no profile exists yet), a `PreToolUse` guard (`.rsc/danger-guard.mjs`) **blocks**
165
- irreversible foot-gun commands (`rm -rf`, `git push --force`, `git reset --hard`, `DROP`/`TRUNCATE`,
166
- `DELETE`/`UPDATE` with no `WHERE`, `dd` to a device, `curl | bash`, …) and asks for a safer
167
- alternative. A fully `technical` user is never guarded. It only turns off if the **user explicitly
168
- asks** to allow dangerous commands — then write `.rsc/.no-danger-guard`. Mention this protection
169
- exists when you set a non-technical level so the user is not surprised by a block.
138
+ | Need | Skills |
139
+ | --- | --- |
140
+ | Always | `harness` — the control plane that scaffolds and governs the workspace |
141
+ | Software backend | `fastapi` / `go`, `postgresdb` |
142
+ | Software frontend | `nextjs` / `flutter`, `design` |
143
+ | Marketing / landing / decks / teaching | `marketing`, `presentations`, `course-storytelling` |
144
+ | AI agents | `building-agents` |
145
+ | Shipping, security, wiring external tools | `secure-coding`, `deployment` |
170
146
 
171
- ### Phase 4 — HANDOFF
147
+ Show the shortlist with a one-line *why* per skill in their language, confirm, install. Recommend
148
+ only what discovery justified — no "you'll probably want agents too".
172
149
 
173
- Tell the user to install `harness` (`npx @ericrisco/rsc add harness`) and then run the **`harness`** skill to actually scaffold the `01-TOOLS/` + `02-DOCS/` workspace. `init` stops here — it has set the profile, recorded the discovery, and recommended the skills. `harness` reads the profile and builds the structure.
150
+ Then flag activation, matched to their IDE: *"Listo, instaladas. Para que se activen, abre una
151
+ pestaña/sesión nueva de Claude Code (o recarga Cursor/Codex/Gemini) en esta carpeta — las skills se
152
+ cargan al arrancar la sesión."* Full skill map and sample printouts → `references/recommend-skills.md`.
174
153
 
175
- > "Tu perfil y lo que hemos hablado ya están guardados. Cuando hayas instalado las skills de arriba (`npx @ericrisco/rsc add …`), ejecuta `harness` y monto el esqueleto del proyecto (`01-TOOLS/` + `02-DOCS/`) leyendo todo lo que acabamos de decidir."
154
+ ### Phase 4 — GROUND
176
155
 
177
- ## Iron rules (non-negotiable)
156
+ Four checks once the skills are in. The SessionStart hook nudges each of these too; doing them here
157
+ means the user starts clean.
178
158
 
179
- 1. **Profile first, always.** Technical-level question is the literal first thing. Nothing — no discovery, no recommendation — happens before `user-profile.md` exists and `CLAUDE.md` links it.
180
- 2. **Non-technical by default.** Plain language until told otherwise. Never assume the user reads code.
181
- 3. **The dial governs verbosity AND question count.** Read it, obey it, in this skill and every skill downstream. L0 means *do it and stop talking*; L3 means *explain everything and ask*.
182
- 4. **Three options, requirements first.** For any significant decision: gather the driving requirements, present exactly 3 options with honest trade-offs, recommend one, log it.
183
- 5. **Install with consent, then flag the new session.** You have a terminal: after a one-word confirm, run `npx @ericrisco/rsc add …` yourself. Newly installed skills load at the START of a session, so tell the user to open a **new tab/session** (or reload) for them to activate. If you cannot run a shell, hand them the exact command for another tab — never install without a confirm.
184
- 6. **No speculative skills.** Recommend a skill only if the discovery justified it. No "you'll probably want agents too".
185
- 7. **Persist as you learn.** Goals, context, constraints, decisions go to `02-DOCS/wiki/harness/` continuously — `user-profile.md` for state, `decisions.md` append-only for choices.
186
- 8. **`init` writes only the profile + the link.** It writes ONLY the user-profile + decisions log under `02-DOCS/wiki/harness/` and the `CLAUDE.md` Knowledge-map link. ALL other `01-TOOLS/` + `02-DOCS/` scaffolding is the `harness` skill's job. Hand off; do not do its job.
187
- 9. **Additive to `CLAUDE.md`.** Create it if absent; otherwise add/update only the `## Knowledge map` section. Never delete user content.
188
- 10. **Domain-agnostic.** Software and non-code harnesses get the same first-class treatment. Never assume "project" means "code".
159
+ 1. **Version control.** No `.git/` → offer `git init`; the SDD chain and the ship guard assume it.
160
+ Declined → write `.rsc/.no-git` so neither you nor the hook asks again, and log the decision.
161
+ 2. **Context7 (live library docs).** For software, offer to wire it once:
162
+ `claude mcp add --transport http context7 https://mcp.context7.com/mcp`. It gives version-correct
163
+ docs instead of guessing from memory. Declined → `.rsc/.no-context7`.
164
+ 3. **Skill audit.** Run `npx @ericrisco/rsc audit`. It inventories what is installed here and on the
165
+ machine and flags overlap or skills with no footprint, so the project starts with the right set
166
+ rather than a pile. Summarize at their level.
167
+ 4. **Tell them about the danger guard.** A `technical_level` of `non-technical` or `mixed` (and the
168
+ state before any profile exists) turns on a `PreToolUse` guard that blocks irreversible commands —
169
+ `rm -rf`, `git push --force`, `git reset --hard`, `DROP`/`TRUNCATE`, `DELETE`/`UPDATE` with no
170
+ `WHERE`, `dd` to a device, `curl | bash` — and asks for a safer alternative. A fully `technical`
171
+ user is never guarded. It turns off only if the user explicitly asks: `.rsc/.no-danger-guard`.
172
+ Mention it when you set a non-technical level, so a later block is not a surprise.
189
173
 
190
- ## Rationalizations — STOP
174
+ ### Phase 5 — HANDOFF
191
175
 
192
- These thoughts mean the skill is about to break its own rules. Recognize and abort:
176
+ `init` stops here. It has set the profile, recorded the discovery, and installed the skills.
193
177
 
194
- | Excuse | Reality |
195
- | --- | --- |
196
- | "They sound technical, I'll skip the level question" | No. The level question is the first thing, always. Ask it. |
197
- | "I'll just pick Vercel, it's obviously best" | No. Gather requirements, present 3, recommend with reasons, log it. |
198
- | "I'll recommend every skill to be safe" | No. Recommend only what discovery justified. |
199
- | "I'll scaffold 01-TOOLS now while I'm here" | No. That's the `harness` skill. `init` profiles and hands off. |
200
- | "The profile can wait until after discovery" | No. Profile first — every later question's framing depends on it. |
201
- | "This is a company, not code, so the harness doesn't apply" | No. Domain-agnostic. A non-code harness uses the same structure. |
202
- | "I'll install the skills for them" | No. A skill can't install. Print the `npx @ericrisco/rsc add` commands. |
203
- | "They said 'ok', that's enough to pick the database" | No. A significant decision needs the 3-option pattern and a log entry. |
178
+ > "Tu perfil y lo que hemos hablado ya están guardados. Ahora ejecuta `harness` y monto el esqueleto
179
+ > del proyecto (`01-TOOLS/` + `02-DOCS/`) leyendo todo lo que acabamos de decidir."
204
180
 
205
- ## Project grounding (02-DOCS + CLAUDE.md)
181
+ Do not scaffold while you are here, however tempting — `harness` reads this same profile and owns
182
+ that job.
206
183
 
207
- This skill's `02-DOCS` record is the **user profile** at `02-DOCS/wiki/harness/user-profile.md` plus the append-only **decisions log** at `02-DOCS/wiki/harness/decisions.md`. Both are written in Phase 1 and updated throughout. Because they are the read-first entries, both stay in the SHORT `## Knowledge map` pointer in the root `CLAUDE.md` (created if absent, additive only) — alongside a "full index → `02-DOCS/wiki/index.md`" line where every OTHER index entry lives. Every rsc skill reads the profile first and adapts its verbosity and question count to `accompaniment_level` and `technical_level`. Those two files plus the Knowledge-map link are everything `init` writes; ALL other `01-TOOLS/` + `02-DOCS/` scaffolding is the `harness` skill's job, and it reads this same profile.
184
+ ## Project grounding
208
185
 
209
- Verify the profile and the Knowledge-map link exist with `scripts/verify.sh` (read-only; warns, never fails).
186
+ `init`'s record is the profile plus the append-only decisions log, both written in Phase 1 and
187
+ updated throughout, and both kept in the short `## Knowledge map` pointer because they are the
188
+ read-first entries. `scripts/verify.sh` checks the profile and the link exist (read-only; warns,
189
+ never fails).
210
190
 
211
191
  ## See Also
212
192
 
213
- - `harness` — the scaffolder this skill hands off to; builds `01-TOOLS/` + `02-DOCS/` from the profile (the SCAN→AUDIT→CONSENT→APPLY→VERIFY engine).
214
- - `deployment` — invoked at runtime when the deploy decision (the "siempre 3 opciones" canonical example) is made; Hetzner+Coolify, Vercel, Fly.io and friends.
215
- - `secure-coding` — input validation, authn/z, secret handling; recommended whenever software is being shipped.
216
- - Stack skills (`fastapi`, `go`, `nextjs`, `flutter`, `building-agents`, …) are **recommended at runtime** by Phase 3 based on discovery — not hardwired here.
217
- - References: `references/accompaniment-and-profile.md`, `references/discovery.md`, `references/recommend-skills.md`.
193
+ - `harness` — the scaffolder this hands off to; builds `01-TOOLS/` + `02-DOCS/` from the profile.
194
+ - `deployment` — invoked when the deploy decision above is actually made.
195
+ - `secure-coding` — recommended whenever software is being shipped.
196
+ - Stack skills (`fastapi`, `go`, `nextjs`, `flutter`, `building-agents`…) are recommended at runtime
197
+ by Phase 3 from discovery, never hardwired here.
198
+ - References: `references/accompaniment-and-profile.md`, `references/discovery.md`,
199
+ `references/recommend-skills.md`.
218
200
 
219
201
  ## Orientación (siempre)
220
202
 
221
- Cierra cada turno con el **bloque-brújula** (📍 dónde estás · ✅ qué hiciste · 🧭 por qué · ➡️ siguiente, terminando en pregunta), calibrado al dial de `02-DOCS/wiki/harness/user-profile.md`. **Nunca termines en seco.** Protocolo completo: skill `orient` → `skills/orient/references/orientation-contract.md`. (Defiere a `suggest` el "¿instalo la skill que falta?".)
203
+ Cierra cada turno con el **bloque-brújula** (📍 dónde estás · ✅ qué hiciste · 🧭 por qué · ➡️ siguiente,
204
+ terminando en pregunta), calibrado al dial de `02-DOCS/wiki/harness/user-profile.md`. Nunca termines
205
+ en seco. Protocolo completo: skill `orient` → `skills/orient/references/orientation-contract.md`.