@ericrisco/rsc 1.1.5 → 1.2.0

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 (73) hide show
  1. package/README.md +72 -14
  2. package/manifest.json +888 -231
  3. package/package.json +3 -2
  4. package/schema/ecc-originality.json +16 -0
  5. package/schema/ecc-originality.u64 +0 -0
  6. package/scripts/build-manifest.js +43 -3
  7. package/scripts/doctor.js +47 -1
  8. package/scripts/install-apply.js +148 -31
  9. package/scripts/lib/capabilities.js +21 -0
  10. package/scripts/lib/domains.js +3 -3
  11. package/scripts/lib/manifest-file.js +4 -1
  12. package/scripts/originality-check.js +137 -0
  13. package/scripts/rsc.js +122 -14
  14. package/skills/design/SKILL.md +3 -3
  15. package/skills/design/references/design-systems.md +1 -1
  16. package/skills/design/references/inspiration-sources.md +2 -2
  17. package/skills/design/references/motion-and-interaction.md +2 -2
  18. package/skills/design-dna/evals/cases.yaml +1 -1
  19. package/skills/design-loop/SKILL.md +3 -3
  20. package/skills/design-loop/evals/cases.yaml +3 -3
  21. package/skills/expo/SKILL.md +1 -1
  22. package/skills/motion-craft/SKILL.md +125 -0
  23. package/skills/motion-craft/evals/cases.yaml +38 -0
  24. package/skills/motion-craft/scripts/verify.sh +75 -0
  25. package/skills/react/SKILL.md +2 -2
  26. package/skills/react-native/SKILL.md +1 -1
  27. package/skills/swift-ios/SKILL.md +2 -2
  28. package/skills/ui-engineering/SKILL.md +114 -0
  29. package/skills/ui-engineering/evals/cases.yaml +38 -0
  30. package/skills/variant-explorer/SKILL.md +93 -0
  31. package/skills/variant-explorer/evals/cases.yaml +38 -0
  32. package/targets/agent-catalog.js +220 -0
  33. package/targets/agent-sources.json +48 -0
  34. package/targets/agents.js +61 -13
  35. package/targets/commands.js +212 -0
  36. package/targets/memory.js +276 -0
  37. package/targets/opencode-memory-plugin.js +65 -0
  38. package/targets/session-memory-adapter.mjs +117 -0
  39. package/targets/session-memory-core.mjs +477 -0
  40. package/targets/session-memory.mjs +27 -0
  41. package/skills/animate/SKILL.md +0 -851
  42. package/skills/animate/evals/cases.yaml +0 -36
  43. package/skills/animate/references/recipes.md +0 -324
  44. package/skills/animate-expo/SKILL.md +0 -281
  45. package/skills/animate-expo/evals/cases.yaml +0 -36
  46. package/skills/animate-expo/references/recipes.md +0 -385
  47. package/skills/animation-vocabulary/SKILL.md +0 -189
  48. package/skills/animation-vocabulary/evals/cases.yaml +0 -31
  49. package/skills/apple-design/SKILL.md +0 -301
  50. package/skills/apple-design/evals/cases.yaml +0 -33
  51. package/skills/ask-sonner/SKILL.md +0 -104
  52. package/skills/ask-sonner/evals/cases.yaml +0 -33
  53. package/skills/ask-sonner/references/api.md +0 -64
  54. package/skills/design-eng/SKILL.md +0 -88
  55. package/skills/design-eng/evals/cases.yaml +0 -36
  56. package/skills/find-animation-opportunities/SKILL.md +0 -150
  57. package/skills/find-animation-opportunities/evals/cases.yaml +0 -31
  58. package/skills/improve-animations/SKILL.md +0 -126
  59. package/skills/improve-animations/evals/cases.yaml +0 -31
  60. package/skills/improve-animations/references/audit.md +0 -115
  61. package/skills/improve-animations/references/plan-template.md +0 -73
  62. package/skills/pick-ui-library/SKILL.md +0 -101
  63. package/skills/pick-ui-library/evals/cases.yaml +0 -33
  64. package/skills/pick-ui-library/references/component-galleries.md +0 -59
  65. package/skills/prototype/SKILL.md +0 -113
  66. package/skills/prototype/evals/cases.yaml +0 -31
  67. package/skills/prototype/references/picker.md +0 -197
  68. package/skills/review-animations/SKILL.md +0 -188
  69. package/skills/review-animations/evals/cases.yaml +0 -34
  70. package/skills/review-animations/references/standards.md +0 -187
  71. package/skills/review-animations/scripts/verify.sh +0 -164
  72. package/skills/write-swift/SKILL.md +0 -413
  73. package/skills/write-swift/evals/cases.yaml +0 -36
package/README.md CHANGED
@@ -1,12 +1,12 @@
1
1
  <div align="center">
2
2
 
3
- <img src="https://raw.githubusercontent.com/ericrisco/rsc-harness/main/site/og.png" alt="rsc — your agent needs a memory (02-DOCS/, or it invents what it cannot remember), arms (01-TOOLS/, or it never touches your database), a trade (276 skills, or it guesses how the job is done), and reflexes (deterministic hooks, or it forgets the rule mid-session). One meta-harness for 17 coding assistants." width="960">
3
+ <img src="https://raw.githubusercontent.com/ericrisco/rsc-harness/main/site/og.png" alt="rsc — your agent needs a memory (02-DOCS/, or it invents what it cannot remember), arms (01-TOOLS/, or it never touches your database), a trade (272 skills, or it guesses how the job is done), and reflexes (deterministic hooks, or it forgets the rule mid-session). One meta-harness for 17 coding assistants." width="960">
4
4
 
5
- # `rsc` — 276 agent skills, one CLI, zero bloat
5
+ # `rsc` — 272 skills, 33 agents, one CLI
6
6
 
7
7
  [![npm](https://img.shields.io/npm/v/@ericrisco/rsc?color=63d68a&labelColor=12161c&label=npm)](https://www.npmjs.com/package/@ericrisco/rsc)
8
8
  [![downloads](https://img.shields.io/npm/dm/@ericrisco/rsc?color=63d68a&labelColor=12161c&label=downloads)](https://www.npmjs.com/package/@ericrisco/rsc)
9
- [![skills](https://img.shields.io/badge/skills-281-63d68a?labelColor=12161c)](#the-catalog)
9
+ [![skills](https://img.shields.io/badge/skills-272-63d68a?labelColor=12161c)](#the-catalog)
10
10
  [![license](https://img.shields.io/badge/license-MIT-63d68a?labelColor=12161c)](LICENSE)
11
11
  [![stars](https://img.shields.io/github/stars/ericrisco/rsc-harness?color=63d68a&labelColor=12161c)](https://github.com/ericrisco/rsc-harness/stargazers)
12
12
 
@@ -17,7 +17,7 @@ skills that fit — one at a time — into every assistant you pick, and keeps t
17
17
  equipped as you work.
18
18
 
19
19
  From *"document my company"* to *"ship a FastAPI service"* to *"grow my YouTube
20
- channel"* — **281 skills across 23 domains**, every one researched against live
20
+ channel"* — **272 skills across 23 domains**, every one researched against live
21
21
  2025-2026 sources and **adversarially scored ≥ 8.5/10** before it shipped.
22
22
 
23
23
  ```bash
@@ -26,7 +26,7 @@ npx @ericrisco/rsc # plain-language wizard — no jargon, installs wh
26
26
 
27
27
  <br>
28
28
 
29
- <img src="https://raw.githubusercontent.com/ericrisco/rsc-harness/main/site/meta-harness.png" alt="rsc — the model (Claude, GPT, Gemini) is the brain your coding agent rents, and you already have that. Claude Code, Codex and opencode sit in the middle. Below them the rsc meta-harness adds everything the model lacks: memory (02-DOCS/) so it stops inventing, arms (01-TOOLS/) so it can execute, a trade (281 skills) so it stops guessing, and reflexes (deterministic hooks) so it cannot forget the rule mid-session." width="960">
29
+ <img src="https://raw.githubusercontent.com/ericrisco/rsc-harness/main/site/meta-harness.png" alt="rsc — the model (Claude, GPT, Gemini) is the brain your coding agent rents, and you already have that. Claude Code, Codex and opencode sit in the middle. Below them the rsc meta-harness adds everything the model lacks: memory (02-DOCS/) so it stops inventing, arms (01-TOOLS/) so it can execute, a trade (272 skills) so it stops guessing, and reflexes (deterministic hooks) so it cannot forget the rule mid-session." width="960">
30
30
 
31
31
  **The model is the only part your agent already has.** `rsc` is the meta-harness that adds
32
32
  the rest: a **memory** so it stops inventing, **arms** so it can execute, a **trade** so it stops
@@ -75,6 +75,12 @@ one is the opposite bet:
75
75
  - **Not code-only.** First-class support for running a *company*: bookkeeping,
76
76
  invoicing, hiring, GDPR, pitch decks, SEO, a YouTube/TikTok/LinkedIn presence —
77
77
  each wired to a `02-DOCS/` knowledge loop that learns from your own results.
78
+ - **Specialists follow the stack.** The four base agents stay small; installing a
79
+ supported stack adds only its reviewer and build resolver. `rsc add go`, for
80
+ example, adds the Go pair without pulling reviewers for every other language.
81
+ - **A new local session continues the old one.** Claude Code, Codex, Gemini CLI
82
+ and OpenCode load a bounded checkpoint for the current branch and worktree at
83
+ session start. Cursor desktop uses an assisted read-before-action fallback.
78
84
  - **Honestly good.** Every skill was built by a research → spec → implement →
79
85
  *adversarial review* pipeline and had to clear an objective rubric
80
86
  (`scripts/skill-rubric.md`, written *before* any skill existed). The bar was
@@ -85,6 +91,30 @@ over: you start with a tiny floor and grow one piece at a time.
85
91
 
86
92
  ---
87
93
 
94
+ ## New sessions pick up the latest local work
95
+
96
+ On supported local targets, rsc checkpoints observable repository state at safe
97
+ boundaries: branch, worktree, HEAD, changed paths, commits and SDD ledger status.
98
+ When a new session opens in the same checkout, that state is injected before the
99
+ first agent action. A completed edit is preserved even if the previous client
100
+ closed before its normal session-end event.
101
+
102
+ - **Full:** Claude Code, Codex, Gemini CLI and OpenCode. Codex asks you to inspect
103
+ and trust the project hook once with `/hooks`; until then `doctor` reports that
104
+ trust is still required.
105
+ - **Assisted:** Cursor desktop. Its start hook is fire-and-forget, so rsc also
106
+ installs a local always-on rule that performs the read before acting.
107
+ - **Never cloud:** Cursor Cloud, Codex Cloud, remote agents, cloud storage and
108
+ synchronization are intentionally unsupported. The memory runtime makes no
109
+ network request.
110
+
111
+ The journal never stores prompts, responses, tool output, file contents or
112
+ secrets. It stays in a git-excluded project-local path, retains 30 days, and
113
+ injects at most 4,096 bytes. Disable every memory surface for a project with
114
+ `rsc memory off`; re-enable it with `rsc memory on`.
115
+
116
+ ---
117
+
88
118
  ## Install
89
119
 
90
120
  ```bash
@@ -130,6 +160,9 @@ Everything stays **in the project**, and the real skill files are written
130
160
  **once** to `.rsc/skills/<id>/`. Each assistant you pick gets a lightweight
131
161
  symlink back to that shared base — no copy is duplicated across IDEs. (If the
132
162
  filesystem can't symlink, it falls back to a real copy automatically.)
163
+ On targets with file-based agents, the four base agents are installed too;
164
+ stack specialists remain selective. Native command targets receive only entry
165
+ points whose backing skill, agent or local-memory capability actually exists.
133
166
 
134
167
  ---
135
168
 
@@ -140,7 +173,7 @@ $ rsc
140
173
  ██████╗ ███████╗ ██████╗ ← animated gradient wordmark
141
174
  ██╔══██╗██╔════╝██╔════╝
142
175
  ██████╔╝███████╗██║
143
- 281 skills · one CLI · zero bloat
176
+ 272 skills · one CLI · zero bloat
144
177
 
145
178
  What do you want to do? ↑↓ move · enter select
146
179
  ❯ Base install — the essentials (8 skills)
@@ -188,12 +221,18 @@ rsc add youtube-api remotion-video # …grow a channel, edit with Remotion
188
221
  rsc add fastapi --target claude,codex # install into several assistants at once
189
222
  rsc install --profile minimal # the base: orient + suggest + bro + unslop + show-me + eli5 + harness + init
190
223
  rsc install --profile core # floor + the full SDD workflow
191
- rsc install --profile full # everything (all 281 skills)
224
+ rsc install --profile full # everything (all 272 skills)
192
225
  rsc install --profile full --without go
193
226
  rsc consult "I want to launch a SaaS" # recommend only, no install
194
227
  rsc registry refresh # write .rsc/skill-registry.{json,md}
195
- rsc list # what rsc has installed
196
- rsc doctor # health check (state, hook, counts)
228
+ rsc list # installed skills, agents and commands
229
+ rsc capabilities # installed/available surfaces + memory mode
230
+ rsc doctor # health, missing backing, hooks and local memory
231
+ rsc memory status # full / assisted / unsupported / degraded
232
+ rsc memory save --session handoff # force a deterministic local checkpoint
233
+ rsc memory resume # print this branch/worktree continuation
234
+ rsc memory learn --text "…" --evidence "…" --confidence 0.8 --approve
235
+ rsc memory off # disable hooks, commands and injection project-wide
197
236
  rsc sync --target claude,codex # refresh managed skills/hooks from the current package version
198
237
  rsc backups # list project-local snapshots
199
238
  rsc restore latest --dry-run # preview restoring the newest snapshot
@@ -221,7 +260,8 @@ The harness travels by git, but not all of it — and the split is the point.
221
260
 
222
261
  | | Why |
223
262
  | --- | --- |
224
- | `.rsc/` | Machine state: hook scripts, seals, logs |
263
+ | `.rsc/` | Machine state: hook scripts, seals, logs and fallback session memory |
264
+ | `02-DOCS/raw/worklog/.rsc-memory/` | Preferred session journal when a local wiki exists; protected with git's local exclude |
225
265
  | The skill entries rsc manages | Symlinks on macOS/Linux, real copies on Windows — two incompatible shapes of one thing |
226
266
 
227
267
  Whoever clones runs **one command** and ends up with the same harness:
@@ -323,7 +363,7 @@ just asks in plain language.
323
363
 
324
364
  ## The catalog
325
365
 
326
- 281 skills, grouped by what you're trying to do. Click any skill to read its
366
+ 272 skills, grouped by what you're trying to do. Click any skill to read its
327
367
  `SKILL.md`. It fires on its own when a task matches.
328
368
 
329
369
  ### 🧭 Core & control plane
@@ -414,11 +454,11 @@ Train and adapt open models end to end: classic ML, deep learning, NLP, fine-tun
414
454
 
415
455
  ### 🗣️ Languages
416
456
 
417
- [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/) · [write-swift](skills/write-swift/)
457
+ [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/)
418
458
 
419
459
  ### 🏗️ Frameworks & app stacks
420
460
 
421
- [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/) · [pick-ui-library](skills/pick-ui-library/) · [ask-sonner](skills/ask-sonner/)
461
+ [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/)
422
462
 
423
463
  ### 🎮 Game development
424
464
 
@@ -444,7 +484,7 @@ Three engines + engine-agnostic disciplines. Every engine skill pins the current
444
484
 
445
485
  ### 🌀 Motion & interface craft
446
486
 
447
- [design-eng](skills/design-eng/) · [animate](skills/animate/) · [animate-expo](skills/animate-expo/) · [review-animations](skills/review-animations/) · [improve-animations](skills/improve-animations/) · [find-animation-opportunities](skills/find-animation-opportunities/) · [animation-vocabulary](skills/animation-vocabulary/) · [apple-design](skills/apple-design/) · [prototype](skills/prototype/)
487
+ [motion-craft](skills/motion-craft/) · [ui-engineering](skills/ui-engineering/) · [variant-explorer](skills/variant-explorer/)
448
488
 
449
489
  ### 🎨 Design & content craft
450
490
 
@@ -486,6 +526,24 @@ duplicated. The wizard asks which ones; `--target a,b` does it non-interactively
486
526
  > `codex`, `zed`, `amp`, `opencode` and `jules` all share the one root
487
527
  > `AGENTS.md`; the block is idempotent, so picking several writes it once.
488
528
 
529
+ The richer surfaces are intentionally narrower than skill support:
530
+
531
+ | Targets | Stack agents | Native commands | Local session continuation |
532
+ | --- | --- | --- | --- |
533
+ | Claude Code | yes | agent + memory entries; skills already invoke natively | full |
534
+ | Codex | yes | no separate project-command surface | full after `/hooks` trust |
535
+ | Cursor desktop | yes | yes | assisted |
536
+ | Gemini CLI, OpenCode | yes | yes | full |
537
+ | GitHub Copilot | yes | yes | unsupported |
538
+ | Junie, Kiro | yes | unsupported | unsupported |
539
+ | Windsurf, Cline, Roo | unsupported | yes | unsupported |
540
+ | Antigravity, Zed, Continue, Amp, Jules, Aider | unsupported | unsupported | unsupported |
541
+
542
+ `manifest.json` is the generated public inventory: 33 agents (4 base + 29
543
+ selective specialists) and 53 command entries (20 fixed + 33 stack aliases).
544
+ Unsupported means rsc writes nothing for that surface; it does not emulate a
545
+ provider feature with an unverified file.
546
+
489
547
  ---
490
548
 
491
549
  ## Skill format