@ericrisco/rsc 0.1.6 → 0.1.7

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/manifest.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.1.6",
2
+ "version": "0.1.7",
3
3
  "counts": {
4
4
  "skills": 231
5
5
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ericrisco/rsc",
3
- "version": "0.1.6",
3
+ "version": "0.1.7",
4
4
  "description": "Eric Risco's agent-skills catalog as a granular, self-recommending CLI installer.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -23,12 +23,18 @@ into them rather than reinventing them.
23
23
  ## Before you write a line of code
24
24
 
25
25
  Run this short gate. Skipping it is the most common way an implement session goes sideways.
26
-
27
- 1. **Read the inputs.** Open the spec (`02-DOCS/wiki/sdd/specs/<slug>.md`), the plan
28
- (`02-DOCS/wiki/sdd/plans/<slug>.md`, which holds the task list), and the constitution
29
- (`02-DOCS/wiki/sdd/constitution.md`). If any is missing, you are not ready to implement — route
30
- back: no plan `plan`; no task list inside the plan → `tasks`; unresolved `analyze` findings →
31
- resolve them first. Do not start coding to "discover the plan as you go".
26
+ **This gate is a hard refuse, not a checklist to feel good about:** if it fails you stop and route
27
+ back you do not write feature code anyway.
28
+
29
+ 1. **The spec + plan must exist AND be approved.** Open the spec (`02-DOCS/wiki/sdd/specs/<slug>.md`),
30
+ the plan (`02-DOCS/wiki/sdd/plans/<slug>.md`, which holds the task list), and the constitution
31
+ (`02-DOCS/wiki/sdd/constitution.md`). If any is missing, **you are not allowed to implement**
32
+ route back: no spec → `specify`; no plan → `plan`; no task list inside the plan → `tasks`;
33
+ unresolved `analyze` findings → resolve them first. If a spec/plan exists but the user has not
34
+ actually seen and **approved** it, get that approval first. Never "start coding to discover the
35
+ plan as you go", and never accept "just build it, skip the spec" on a non-trivial feature — name
36
+ the gate in one friendly line and route to `specify`. (Only a true one-line, low-risk change
37
+ earns a skip, and you say so.)
32
38
  2. **Read the SDD runtime config.** Open `02-DOCS/wiki/sdd/config.yaml`. If it is missing on
33
39
  non-trivial work, stop and route to `sdd-init`. Use `testing.strict_tdd`,
34
40
  `testing.commands.apply`, `testing.commands.verify`, `sdd.review_budget` and
@@ -70,6 +70,8 @@ constitution ─(once per project)─┐
70
70
 
71
71
  When a request lands, do not start typing code. Place it on the map first, then invoke the phase skill that owns it.
72
72
 
73
+ > **The new-feature gate (hard).** The moment the user is thinking about a new feature or change — "add…", "build…", "it should also…", "quiero añadir…" — it goes to `specify` first, *even if a stack skill (nextjs/fastapi/flutter/react…) also fired and could just build it*. **No feature code is written — by any skill — until a spec AND a plan exist and the user has approved them.** A stack skill about to build an unspec'd, non-trivial feature must stop and route here. The only exception is a genuinely one-line, low-risk change; name it and skip.
74
+
73
75
  1. **No `02-DOCS/wiki/sdd/config.yaml` and this is non-trivial?** → `sdd-init`.
74
76
  2. **No constitution yet AND this project will grow?** → `constitution` once, then come back to the chain.
75
77
  3. **Ambiguous / architectural / risky change before spec?** → optional proposal artifact via `specify`.
@@ -13,6 +13,15 @@ This is the **specify** phase of the rsc-sdd chain: `constitution` → **`specif
13
13
 
14
14
  A spec is a contract about behaviour and outcomes, readable by a non-technical stakeholder and precise enough that a `plan` can be derived from it. The output is one file: `02-DOCS/wiki/sdd/specs/<slug>.md`, indexed in the root `CLAUDE.md` Knowledge map.
15
15
 
16
+ ## Detect the moment — and hold the gate
17
+
18
+ The instant the user is **thinking about a new feature or change** — "I want to add…", "can we build…", "it should also…", "wouldn't it be nice if…", "necesito que haga…", "quiero añadir…" — this phase owns it, *even if a stack skill (nextjs/fastapi/flutter…) also fired and is itching to build it*. Catch it here first.
19
+
20
+ **The hard gate (non-negotiable for any non-trivial feature):**
21
+ > No feature code gets written until (1) this spec exists and the user has **approved** it, and (2) `plan` has produced a technical plan + task list. If the user tries to jump straight to "just build it", do not. Name the gate in one friendly line, capture the spec, and walk the chain. The only bypass is a genuinely one-line, low-risk change (typo/copy/config) — say so out loud and skip.
22
+
23
+ You are not slowing them down; you are making the intent reviewable *before* code exists, which is cheaper than discovering the misunderstanding in a PR. End every spec by handing to `clarify`/`plan` — never to `implement`.
24
+
16
25
  ## The one rule that defines this skill
17
26
 
18
27
  **No implementation leaks.** The moment the spec names a framework, a table schema, a library, an endpoint shape, a file path, or an algorithm, it has stopped being a spec. Those decisions belong to `plan` and the stack skills. Specify describes the *observable behaviour and the reason for it*; the system that delivers it is deliberately left open.