@ericrisco/rsc 1.0.10 → 1.0.11
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 +15 -13
- package/manifest.json +133 -2
- package/package.json +3 -3
- package/scripts/consult.js +75 -42
- package/scripts/lib/default-skill-floor.js +11 -0
- package/scripts/lib/domains.js +3 -3
- package/scripts/lib/recommend.js +1 -0
- package/scripts/lib/text-rank.js +112 -0
- package/scripts/lib/ui.js +3 -3
- package/scripts/routing-audit.js +163 -0
- package/scripts/rsc.js +11 -10
- package/skills/author-skill/references/rsc-conventions.md +1 -1
- package/skills/bro/SKILL.md +68 -0
- package/skills/bro/evals/README.md +22 -0
- package/skills/bro/evals/cases.yaml +58 -0
- package/skills/decision-challenge/SKILL.md +113 -0
- package/skills/decision-challenge/evals/README.md +3 -0
- package/skills/decision-challenge/evals/cases.yaml +42 -0
- package/skills/deprecation/SKILL.md +123 -0
- package/skills/deprecation/evals/README.md +3 -0
- package/skills/deprecation/evals/cases.yaml +42 -0
- package/skills/idea-refinement/SKILL.md +121 -0
- package/skills/idea-refinement/evals/README.md +3 -0
- package/skills/idea-refinement/evals/cases.yaml +42 -0
- package/skills/observability/SKILL.md +6 -0
- package/skills/observability/evals/cases.yaml +2 -0
- package/skills/performance/SKILL.md +13 -0
- package/skills/performance/evals/cases.yaml +2 -0
- package/skills/simplify-code/SKILL.md +101 -0
- package/skills/simplify-code/evals/README.md +3 -0
- package/skills/simplify-code/evals/cases.yaml +42 -0
- package/skills/source-grounded-development/SKILL.md +108 -0
- package/skills/source-grounded-development/evals/README.md +3 -0
- package/skills/source-grounded-development/evals/cases.yaml +42 -0
- package/skills/suggest/evals/cases.yaml +1 -1
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: source-grounded-development
|
|
3
|
+
description: "Use when implementation or review depends on current version-specific framework, SDK, protocol or platform behaviour and memory is unsafe. Detects exact local versions, verifies primary sources, tests applicability and marks unknowns. NOT a standalone cited memo (`research-ops`), NOT diagnosis of a reproduced failure (`debug`)."
|
|
4
|
+
tags: [official-docs, primary-sources, version-detection, implementation, verification]
|
|
5
|
+
recommends: [research-ops, decision-records, debug, technical-writing]
|
|
6
|
+
profiles: [core, full]
|
|
7
|
+
origin: risco
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# source-grounded-development — make current facts part of the change
|
|
11
|
+
|
|
12
|
+
Use this when correctness depends on what a framework, SDK, API, standard or hosted platform **does now for the exact version in this repository**. The deliverable is still code, a review or an implementation decision; sources are the evidence behind it, not a separate essay.
|
|
13
|
+
|
|
14
|
+
This is narrower than `../research-ops/SKILL.md`: research-ops answers an open question with a cited memo. Here, the question exists because a concrete change cannot safely proceed from memory.
|
|
15
|
+
|
|
16
|
+
## The loop
|
|
17
|
+
|
|
18
|
+
```text
|
|
19
|
+
DETECT → QUESTION → SOURCE → APPLY → PROVE → REPORT
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
### 1. DETECT the actual version and environment
|
|
23
|
+
|
|
24
|
+
Read the repository before the web:
|
|
25
|
+
|
|
26
|
+
- lockfiles and manifests, not only a README;
|
|
27
|
+
- runtime and compiler configuration;
|
|
28
|
+
- generated client/server versions;
|
|
29
|
+
- deployment target and enabled compatibility flags;
|
|
30
|
+
- existing wrapper code that may override documented defaults.
|
|
31
|
+
|
|
32
|
+
Record an evidence line such as: `Next 16.2.1 from pnpm-lock.yaml; Node 24 from .nvmrc; App Router; deployed to Vercel.` If versions conflict, stop treating the docs as applicable until the conflict is resolved.
|
|
33
|
+
|
|
34
|
+
### 2. QUESTION only the claims that can change the implementation
|
|
35
|
+
|
|
36
|
+
Build a small claim ledger. Each row is one decision-sensitive statement:
|
|
37
|
+
|
|
38
|
+
```text
|
|
39
|
+
claim | exact component/version | evidence needed | source | applicability | status
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
Examples: whether a callback is invoked on retry, the default cookie policy, an API’s idempotency semantics, a deprecated option’s replacement, or a browser feature’s support boundary. Do not cite obvious local code or generic programming facts just to make the list longer.
|
|
43
|
+
|
|
44
|
+
### 3. SOURCE by authority and freshness
|
|
45
|
+
|
|
46
|
+
Prefer, in order:
|
|
47
|
+
|
|
48
|
+
1. the repository and installed type definitions for local truth;
|
|
49
|
+
2. official versioned documentation and migration/release notes;
|
|
50
|
+
3. specifications, RFCs or provider API references;
|
|
51
|
+
4. upstream source or tests when documentation is ambiguous;
|
|
52
|
+
5. reputable secondary material only as a lead, never as the final authority for a disputed behaviour.
|
|
53
|
+
|
|
54
|
+
Use the current page that matches the detected version. A search snippet, an undated blog, a forum answer or remembered API shape is not proof. When two primary sources disagree, show the disagreement and test the behaviour; do not average them into false certainty.
|
|
55
|
+
|
|
56
|
+
### 4. APPLY the source to this repository
|
|
57
|
+
|
|
58
|
+
For every useful source, state why it applies here:
|
|
59
|
+
|
|
60
|
+
- same major/minor version or a documented compatibility range;
|
|
61
|
+
- same runtime, router, transport, deployment mode or feature flag;
|
|
62
|
+
- no local wrapper/configuration that changes the default;
|
|
63
|
+
- publication or update date appropriate to a fast-moving claim.
|
|
64
|
+
|
|
65
|
+
Then make the smallest implementation decision that the evidence supports. Do not turn examples from docs into architecture by cargo cult. Examples demonstrate an API; the repository still determines ownership, boundaries and error policy.
|
|
66
|
+
|
|
67
|
+
### 5. PROVE behaviour locally
|
|
68
|
+
|
|
69
|
+
Documentation tells you intended behaviour. A local test proves the integration:
|
|
70
|
+
|
|
71
|
+
- add or run a focused contract/regression test;
|
|
72
|
+
- compile against installed types;
|
|
73
|
+
- exercise a minimal reproduction when defaults or runtime order matter;
|
|
74
|
+
- run the stack’s normal verification gate after the focused proof.
|
|
75
|
+
|
|
76
|
+
If local evidence contradicts the source, preserve the reproduction and investigate version/config drift. Do not silently choose whichever result is more convenient.
|
|
77
|
+
|
|
78
|
+
### 6. REPORT without polluting the code
|
|
79
|
+
|
|
80
|
+
End with:
|
|
81
|
+
|
|
82
|
+
- versions and environment detected;
|
|
83
|
+
- material claims verified and their primary links;
|
|
84
|
+
- implementation choices those claims changed;
|
|
85
|
+
- local evidence run;
|
|
86
|
+
- assumptions still **UNVERIFIED**, with the consequence if wrong.
|
|
87
|
+
|
|
88
|
+
Put source links in the final report, PR description or a durable decision record when the rationale must outlive the task. Do not scatter documentation URLs through source comments unless the code’s invariant genuinely cannot be understood without that external contract.
|
|
89
|
+
|
|
90
|
+
## Stop conditions
|
|
91
|
+
|
|
92
|
+
Stop searching when every decision-sensitive claim is verified, contradicted or explicitly marked unverified and the local proof is green. Search breadth is not quality. A fifth article repeating the official reference adds no evidence.
|
|
93
|
+
|
|
94
|
+
Do not use this skill as a reason to delay reversible work indefinitely. If a primary source is unavailable, name the uncertainty, choose the safest reversible option, add a proof/guard, and state what would trigger revisiting it.
|
|
95
|
+
|
|
96
|
+
## Anti-patterns
|
|
97
|
+
|
|
98
|
+
| Smell | Correction |
|
|
99
|
+
|---|---|
|
|
100
|
+
| A reproduced bug is replaced by a docs tour | `debug` owns diagnosis; use this only for the disputed versioned claim. |
|
|
101
|
+
| A broad open question is forced into implementation | Route the cited memo to `research-ops`. |
|
|
102
|
+
| A lasting architecture choice disappears into a task summary | Preserve it in `decision-records` with this ledger as evidence. |
|
|
103
|
+
| A search result or secondary article is presented as official | Follow it to the primary source or mark the claim unverified. |
|
|
104
|
+
| “Latest docs” are read before the lockfile | Detect the local version and mode first; then choose applicable docs. |
|
|
105
|
+
|
|
106
|
+
## Orientación (siempre)
|
|
107
|
+
|
|
108
|
+
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?”.)
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
# Evals — source-grounded-development
|
|
2
|
+
|
|
3
|
+
The routing cases separate version-sensitive implementation evidence from general research, debugging, ADRs, docs and security review. The capability rubric requires the full local-version → primary-source → applicability → local-proof chain and treats unverified deployment assumptions as visible risk.
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
skill: source-grounded-development
|
|
2
|
+
|
|
3
|
+
should_trigger:
|
|
4
|
+
- prompt: "Before changing sessions, verify the installed Express and express-session versions against their official production guidance."
|
|
5
|
+
why: "A concrete implementation depends on current version-specific framework behaviour."
|
|
6
|
+
- prompt: "No te fíes de memoria: mira el lockfile y la documentación oficial de Stripe para comprobar la semántica de reintentos."
|
|
7
|
+
why: "Spanish request for local version detection and primary-source verification."
|
|
8
|
+
- prompt: "This SDK changed between majors; prove which callback contract applies to the version in this repo."
|
|
9
|
+
why: "A version boundary changes implementation correctness."
|
|
10
|
+
- prompt: "Comprova amb fonts primàries si aquesta opció està deprecada en la versió instal·lada i quin reemplaçament toca."
|
|
11
|
+
why: "Catalan request for official deprecation evidence tied to the installed version."
|
|
12
|
+
- prompt: "Implement the browser API only after checking its current specification and support boundary, then test the fallback."
|
|
13
|
+
why: "Protocol/browser behaviour requires primary evidence plus local proof."
|
|
14
|
+
- prompt: "Review this integration and cite the official pages behind every provider-specific claim that affects the verdict."
|
|
15
|
+
why: "A review depends on current provider contracts rather than recalled assumptions."
|
|
16
|
+
|
|
17
|
+
should_not_trigger:
|
|
18
|
+
- prompt: "Research whether passkeys improve consumer login conversion and deliver a cited memo."
|
|
19
|
+
route_to: research-ops
|
|
20
|
+
why: "The artifact is a standalone research memo, not an implementation grounded in an installed version."
|
|
21
|
+
- prompt: "The checkout test fails on every third retry; reproduce it and find the root cause."
|
|
22
|
+
route_to: debug
|
|
23
|
+
why: "A concrete failure needs diagnosis; documentation may support but does not own the workflow."
|
|
24
|
+
- prompt: "Record why we selected Kafka over SQS and preserve the rejected alternatives."
|
|
25
|
+
route_to: decision-records
|
|
26
|
+
why: "Durable decision rationale is an ADR."
|
|
27
|
+
- prompt: "Write the public setup guide for our SDK users."
|
|
28
|
+
route_to: technical-writing
|
|
29
|
+
why: "The deliverable is documentation, not source-grounded implementation."
|
|
30
|
+
- prompt: "Audit this webhook handler for SSRF and secret leakage."
|
|
31
|
+
route_to: secure-coding
|
|
32
|
+
why: "Security threat/control review owns the task."
|
|
33
|
+
|
|
34
|
+
capability:
|
|
35
|
+
- scenario: "Implement production session cookies for an application whose framework and session-library versions are pinned but whose deployment proxy behaviour is unclear."
|
|
36
|
+
must_include:
|
|
37
|
+
- "Reads lockfiles, runtime configuration, deployment target, and local wrappers before choosing documentation."
|
|
38
|
+
- "Creates a bounded claim ledger covering cookie defaults, proxy trust, secure transport, secret handling, and session-store production requirements."
|
|
39
|
+
- "Uses version-matching official docs, release/migration notes, specifications, or upstream source; secondary sources are not treated as final authority."
|
|
40
|
+
- "Explains why each material source applies to this runtime and flags deployment facts that remain unverified."
|
|
41
|
+
- "Adds or runs focused local proof plus the repository's normal verification gate instead of trusting documentation alone."
|
|
42
|
+
- "Reports citations in the result or decision record without filling ordinary source comments with URLs."
|
|
@@ -59,7 +59,7 @@ capability:
|
|
|
59
59
|
- "Checks what is already installed (npx @ericrisco/rsc list) and never proposes a skill the user already has"
|
|
60
60
|
- "Makes at most one suggestion and does not interrupt the flow for nice-to-haves"
|
|
61
61
|
|
|
62
|
-
- scenario: "Mid-conversation, after base install, the user says 'quiero montar una pagina web para vender cursos online'. `init`, `harness`, `orient`, and `
|
|
62
|
+
- scenario: "Mid-conversation, after base install, the user says 'quiero montar una pagina web para vender cursos online'. `init`, `harness`, `orient`, `suggest`, and `bro` are already installed; `nextjs` is not. Show how rsc-suggest behaves."
|
|
63
63
|
must_include:
|
|
64
64
|
- "Treats the message as in-agent capability intent, not as a CLI-only consult task"
|
|
65
65
|
- "Runs `npx @ericrisco/rsc catalog --available` to see the not-installed skills (already excludes installed `init`/`harness`)"
|