@ericrisco/rsc 0.1.48 → 0.1.50
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 +19 -19
- package/package.json +1 -1
- package/scripts/skill-migration-brief.md +14 -6
- package/skills/accessibility/scripts/verify.sh +0 -0
- package/skills/domains-dns/SKILL.md +2 -17
- package/skills/drizzle-orm/SKILL.md +1 -4
- package/skills/duckdb/SKILL.md +12 -18
- package/skills/dynamodb/SKILL.md +27 -40
- package/skills/e-signature/SKILL.md +9 -9
- package/skills/electron/SKILL.md +12 -24
- package/skills/elixir/SKILL.md +6 -14
- package/skills/email-deliverability/SKILL.md +9 -29
- package/skills/embeddings-search/SKILL.md +10 -19
- package/skills/expo/SKILL.md +30 -45
- package/skills/fal/SKILL.md +2 -16
- package/skills/finance-ops/SKILL.md +5 -13
- package/skills/financial-model/SKILL.md +17 -35
- package/skills/finetuning/SKILL.md +7 -19
- package/skills/firebase/SKILL.md +19 -33
- package/skills/fly-io/SKILL.md +4 -13
- package/skills/fundraising/SKILL.md +5 -14
- package/skills/game-design/SKILL.md +9 -33
- package/skills/harness/SKILL.md +1 -0
- package/skills/observability/scripts/verify.sh +0 -0
- package/skills/suggest/SKILL.md +1 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: finetuning
|
|
3
|
-
description: "Use when adapting an open-weight model to a target
|
|
3
|
+
description: "Use when adapting an open-weight model to a target form or behavior — tone, output format, reasoning pattern — via LoRA/QLoRA or full fine-tuning with TRL SFTTrainer, then preference optimization (DPO/ORPO/KTO/GRPO), and for fine-tune vs prompt vs RAG. NOT adding facts to a model (that is rag); NOT the single-GPU Unsloth backend or GGUF export (that is unsloth)."
|
|
4
4
|
tags: [finetuning, lora, qlora, sft, dpo, grpo, peft, trl, preference-optimization]
|
|
5
5
|
recommends: [training-data, unsloth, open-weights, huggingface, vllm, rag]
|
|
6
6
|
origin: risco
|
|
@@ -33,8 +33,10 @@ row below is a real off-ramp.
|
|
|
33
33
|
|
|
34
34
|
Route out explicitly. Facts / freshness / citations → `../rag/SKILL.md`. Squeezing a prompt before
|
|
35
35
|
spending money → `prompt-engineering`. Picking *which* base model (size/license/task) → `open-weights`.
|
|
36
|
-
Building the JSONL/preference corpus → `training-data
|
|
37
|
-
|
|
36
|
+
Building the JSONL/preference corpus → `training-data` (LLM corpora, NOT tabular cleaning — that is
|
|
37
|
+
`data-cleaning`). A fast single-GPU run + GGUF export → `../unsloth/SKILL.md` (same LoRA/QLoRA
|
|
38
|
+
concepts, one optimized implementation; this skill stays backend-agnostic). Downloading the base or
|
|
39
|
+
pushing the adapter/merged model → `huggingface`. Serving the result → `../vllm/SKILL.md`.
|
|
38
40
|
|
|
39
41
|
> The cheapest fine-tune is the one you didn't need. Prompt + RAG solves most "make it behave"
|
|
40
42
|
> asks at zero training cost and updates instantly. Fine-tune when that ceiling is real, measured,
|
|
@@ -201,6 +203,8 @@ score). Judge the run on that, plus **eval loss**.
|
|
|
201
203
|
eval; keep the held-out set quarantined. (Corpus-side hygiene is `training-data`.)
|
|
202
204
|
- General LLM/agent eval harness and judging → `agent-eval`. Bring your task metric here.
|
|
203
205
|
|
|
206
|
+
The full tuning + forgetting + evaluation playbook is in `references/hyperparameters-and-eval.md`.
|
|
207
|
+
|
|
204
208
|
## When NOT to fine-tune (anti-patterns)
|
|
205
209
|
|
|
206
210
|
| Anti-pattern | Why it breaks | Do instead |
|
|
@@ -214,19 +218,6 @@ score). Judge the run on that, plus **eval loss**.
|
|
|
214
218
|
| A few dozen examples for full FT | Not enough signal; unstable | Curate ~hundreds–thousands (LIMA) or use LoRA |
|
|
215
219
|
| Fine-tune a model you can't legally deploy | License blocks your use case | Check the model card first → `open-weights` |
|
|
216
220
|
|
|
217
|
-
## Related skills
|
|
218
|
-
|
|
219
|
-
- **`../rag/SKILL.md`** — the fork of the decision gate: facts/freshness/citations live there;
|
|
220
|
-
form/behavior lives here. Most "make it behave" asks are RAG or prompting, not training.
|
|
221
|
-
- **`prompt-engineering`** — the cheaper lever to exhaust before spending a GPU.
|
|
222
|
-
- **`training-data`** — builds/validates the JSONL `messages` and preference-pair corpus you feed
|
|
223
|
-
here (LLM corpora, NOT tabular cleaning — that is `data-cleaning`).
|
|
224
|
-
- **`open-weights`** — chooses *which* base model by task/size/license; you consume that choice.
|
|
225
|
-
- **`../unsloth/SKILL.md`** — a fast single-GPU training backend + GGUF export; same LoRA/QLoRA
|
|
226
|
-
concepts, one optimized implementation. This skill stays backend-agnostic.
|
|
227
|
-
- **`huggingface`** — download the base, push the adapter/merged model, host inference (NOT training).
|
|
228
|
-
- **`../vllm/SKILL.md`** — serves the trained/merged model (adapter hot-swap, throughput flags).
|
|
229
|
-
|
|
230
221
|
## Checklist
|
|
231
222
|
|
|
232
223
|
- [ ] Ran the decision gate: confirmed this is a form/behavior need, not a facts need (else → rag).
|
|
@@ -239,6 +230,3 @@ score). Judge the run on that, plus **eval loss**.
|
|
|
239
230
|
- [ ] Trained 1–3 epochs; watched **eval** loss (not train) for the overfitting turn.
|
|
240
231
|
- [ ] Preference stage only if needed; correct method for the data (pairs→DPO/ORPO, votes→KTO, verifier→GRPO); tiny LR.
|
|
241
232
|
- [ ] Verified `trl`/`peft`/`transformers` current majors and import paths at author time.
|
|
242
|
-
|
|
243
|
-
See `references/methods.md` for full SFT→DPO/GRPO/ORPO/KTO scripts, dataset schemas, and adapter
|
|
244
|
-
merging; `references/hyperparameters-and-eval.md` for the tuning + forgetting + evaluation playbook.
|
package/skills/firebase/SKILL.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: firebase
|
|
3
|
-
description: "Use when building on Firebase —
|
|
3
|
+
description: "Use when building on Firebase — Firestore data modeling, Security Rules, Auth and custom claims, Cloud Functions, Storage, modular Web/Admin SDK imports — including symptoms like a database open to the internet, a query rejected by rules, or a doc stuck at ~1 write/sec. NOT managed-Postgres BaaS with SQL and RLS (that is supabase)."
|
|
4
4
|
tags: [firebase, firestore, security-rules, cloud-functions, auth]
|
|
5
5
|
recommends: [secure-coding, gcp-essentials, nextjs]
|
|
6
6
|
origin: risco
|
|
@@ -8,43 +8,29 @@ origin: risco
|
|
|
8
8
|
|
|
9
9
|
# Firebase — Firestore, Rules, Auth, Functions, Storage
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
relational/SQL habits into a NoSQL document store, and leaving the database open to the internet.
|
|
11
|
+
The Firebase product surface that sits on top of GCP, on the modular Web SDK (v12) and the Admin SDK.
|
|
12
|
+
The whole skill exists to stop two failure modes: dragging relational/SQL habits into a NoSQL
|
|
13
|
+
document store, and leaving the database open to the internet.
|
|
15
14
|
|
|
16
|
-
|
|
15
|
+
Two facts drive everything below:
|
|
17
16
|
|
|
18
|
-
- **It is a NoSQL document store.** No joins, no server-side `OR` across
|
|
19
|
-
composite index, no `SELECT *` across collections.
|
|
20
|
-
|
|
17
|
+
- **It is a NoSQL document store, shaped for the read path.** No joins, no server-side `OR` across
|
|
18
|
+
different fields without a composite index, no `SELECT *` across collections. Denormalize and
|
|
19
|
+
fan-out so a screen is one cheap query — reads are what you pay for and what users wait on.
|
|
21
20
|
- **Rules ARE the access control.** Firestore is reachable directly from untrusted clients. There is
|
|
22
21
|
no app server in the trust path by default — `firestore.rules` (CEL) is the only thing between a
|
|
23
22
|
browser and your data. App Check attests the request even came from your app before Rules evaluate.
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
- Cloud Functions (2nd gen): Firestore/HTTPS/callable/Auth-blocking triggers, secrets, idempotency.
|
|
36
|
-
- Cloud Storage uploads/downloads gated by Rules + signed URLs.
|
|
37
|
-
- Modular SDK imports for tree-shaking, `firebase.json` / `firestore.indexes.json`, Emulator Suite.
|
|
38
|
-
|
|
39
|
-
**When NOT to use:**
|
|
40
|
-
|
|
41
|
-
- Relational schema, SQL, EXPLAIN, indexing a SQL engine → `../postgresdb/SKILL.md`.
|
|
42
|
-
- Managed Postgres BaaS (SQL + Postgres RLS + PostgREST) → `supabase`. This is the most-confused
|
|
43
|
-
sibling: same "backend-as-a-service" shape, but a completely different data model and rules language.
|
|
44
|
-
- AWS document/key-value store with its own capacity model → `dynamodb`.
|
|
45
|
-
- Self-hosted Mongo document modeling → `mongodb`.
|
|
46
|
-
- Generic GCP project/IAM/billing not specific to a Firebase product → `gcp-essentials`.
|
|
47
|
-
- React/Next.js component or rendering work that merely calls Firebase → `react` / `../nextjs/SKILL.md`.
|
|
23
|
+
|
|
24
|
+
Not this skill:
|
|
25
|
+
|
|
26
|
+
| Instead of Firebase | Go to |
|
|
27
|
+
|---|---|
|
|
28
|
+
| Relational schema, SQL, EXPLAIN, indexing a SQL engine | `../postgresdb/SKILL.md` |
|
|
29
|
+
| Managed Postgres BaaS (SQL + Postgres RLS + PostgREST) — the most-confused sibling: same "backend-as-a-service" shape, completely different data model and rules language | `supabase` |
|
|
30
|
+
| AWS document/key-value store with its own capacity model | `dynamodb` |
|
|
31
|
+
| Self-hosted Mongo document modeling | `mongodb` |
|
|
32
|
+
| Generic GCP project/IAM/billing not specific to a Firebase product | `gcp-essentials` |
|
|
33
|
+
| React/Next.js component or rendering work that merely calls Firebase | `react` / `../nextjs/SKILL.md` |
|
|
48
34
|
|
|
49
35
|
## Data modeling
|
|
50
36
|
|
package/skills/fly-io/SKILL.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: fly-io
|
|
3
|
-
description: "Use when deploying or operating an app on Fly.io — writing fly.toml,
|
|
3
|
+
description: "Use when deploying or operating an app on Fly.io — writing fly.toml, placing Machines in regions near users, attaching Volumes, managing secrets, or picking a scaling lever (autostop/autostart, scale count, fly-replay). NOT choosing which host to deploy on (that is `deployment`), NOT a git-push PaaS with no regions model (that is `railway`)."
|
|
4
4
|
tags: [fly-io, deployment, machines, regions, scaling]
|
|
5
5
|
recommends: [docker, scaling, postgresdb, railway, domains-dns]
|
|
6
6
|
origin: risco
|
|
@@ -8,7 +8,7 @@ origin: risco
|
|
|
8
8
|
|
|
9
9
|
# Deploy on Fly.io
|
|
10
10
|
|
|
11
|
-
You are deploying an app to Fly.io: a `fly.toml`, Machines (Firecracker microVMs) placed in regions close to users, optional region-pinned Volumes, secrets, and the right scaling lever. Get the mental model right first, then the config follows.
|
|
11
|
+
You are deploying an app to Fly.io: a `fly.toml`, Machines (Firecracker microVMs) placed in regions close to users, optional region-pinned Volumes, secrets, and the right scaling lever. Get the mental model right first, then the config follows. If none of that placement control matters, ../railway/SKILL.md is the git-push PaaS with no Machines/regions model.
|
|
12
12
|
|
|
13
13
|
## Mental model
|
|
14
14
|
|
|
@@ -72,7 +72,7 @@ primary_region = "iad" # 3-letter region code: iad, ord, ams, syd, gr
|
|
|
72
72
|
initial_size = "1gb"
|
|
73
73
|
```
|
|
74
74
|
|
|
75
|
-
Full field surface (`[[services]]` vs `[http_service]`, health checks, `[[statics]]`, `[[files]]`, all VM sizes, `[restart]`, `[metrics]`) lives in `references/fly-toml.md` — read it when you need a key that is not above.
|
|
75
|
+
Full field surface (`[[services]]` vs `[http_service]`, health checks, `[[statics]]`, `[[files]]`, all VM sizes, `[restart]`, `[metrics]`) lives in `references/fly-toml.md` — read it when you need a key that is not above. Custom domains, certs and registrar-level DNS are ../domains-dns/SKILL.md.
|
|
76
76
|
|
|
77
77
|
## Regions: place Machines near users
|
|
78
78
|
|
|
@@ -162,7 +162,7 @@ Treat secret hygiene as non-negotiable — see ../secure-coding/SKILL.md.
|
|
|
162
162
|
|
|
163
163
|
Key distinction: **autostop ≠ autoscaler.** Autostop only toggles Machines that already exist; it never changes the count. The metrics autoscaler is what actually adds/removes Machines. Set `auto_stop_machines` and `auto_start_machines` **together** — configuring one without the other is undefined behavior.
|
|
164
164
|
|
|
165
|
-
`fly-replay` is the multi-region write-forwarding pattern: read-replicas serve local reads, a write replies with `fly-replay: region=<primary>` and the Proxy re-runs the request there. Full header forms and the primary/replica split are in `references/multi-region.md`.
|
|
165
|
+
`fly-replay` is the multi-region write-forwarding pattern: read-replicas serve local reads, a write replies with `fly-replay: region=<primary>` and the Proxy re-runs the request there. Full header forms and the primary/replica split are in `references/multi-region.md`. These are the Fly levers only; platform-agnostic scaling theory (queues, sharding, load shedding) is ../scaling/SKILL.md.
|
|
166
166
|
|
|
167
167
|
## Cost & HA
|
|
168
168
|
|
|
@@ -195,12 +195,3 @@ It prefers `fly config validate` when flyctl is on PATH, else does structural ch
|
|
|
195
195
|
| Treating Fly Postgres as managed | Fly Postgres is unmanaged; you operate it | Route to it here; operate it via ../postgresdb/SKILL.md |
|
|
196
196
|
| `min_machines_running` in a non-primary region | Ignored outside primary | Keep warm capacity via `scale count` there |
|
|
197
197
|
| `fly deploy` with no `release_command` for a schema change | New code hits an old schema mid-rollout | `release_command` runs the migration first |
|
|
198
|
-
|
|
199
|
-
## Related skills
|
|
200
|
-
|
|
201
|
-
- ../docker/SKILL.md — the Dockerfile/image build Fly consumes.
|
|
202
|
-
- ../scaling/SKILL.md — generic horizontal-scaling theory (queues, sharding, load shedding).
|
|
203
|
-
- ../postgresdb/SKILL.md — operating the Postgres engine itself; Fly Postgres is unmanaged.
|
|
204
|
-
- ../railway/SKILL.md — git-push PaaS with no Machines/regions model.
|
|
205
|
-
- ../domains-dns/SKILL.md — custom domains, certs, registrar-level DNS.
|
|
206
|
-
- ../secure-coding/SKILL.md — secret handling beyond `fly secrets`.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: fundraising
|
|
3
|
-
description: "Use when planning or running an equity
|
|
3
|
+
description: "Use when planning or running an equity round as a process: sizing the raise to a milestone, choosing post-money SAFE vs priced round, tiering investors by intro path, sequencing outreach for momentum, or reading a term sheet before signing. NOT the slide narrative (that is `pitch-deck`), NOT the cap-table or valuation math (that is `financial-model`)."
|
|
4
4
|
tags: [fundraising, seed, safe, term-sheet, investor-pipeline, venture-capital, round-strategy]
|
|
5
5
|
recommends: [pitch-deck, financial-model, investor-materials, cold-outreach, contracts, grants, unit-economics]
|
|
6
6
|
origin: risco
|
|
@@ -8,7 +8,7 @@ origin: risco
|
|
|
8
8
|
|
|
9
9
|
# Fundraising — The Operating System for an Equity Round
|
|
10
10
|
|
|
11
|
-
*Own the round as a PROCESS: size it, pick the instrument, build a tiered list around intro paths, run a concentrated sprint, read the term sheet
|
|
11
|
+
*Own the round as a PROCESS: size it, pick the instrument, build a tiered list around intro paths, run a concentrated sprint, read the term sheet.*
|
|
12
12
|
|
|
13
13
|
This skill thinks in **funnels** (how many investors at the top to land N term sheets), in **instruments** (post-money SAFE vs priced Series Seed), and in **leverage** (warm intros, parallel meetings, a first term sheet that creates real urgency). It consumes the deck, the model, and the collateral that siblings produce, and orchestrates them into a closed round. Scope: pre-seed through Series A priced rounds and SAFE rounds, founder-side.
|
|
14
14
|
|
|
@@ -119,9 +119,7 @@ Sprint shape
|
|
|
119
119
|
Close first term sheet → use it to compress the rest → sign
|
|
120
120
|
```
|
|
121
121
|
|
|
122
|
-
**The first term sheet changes everything** — it converts soft interest into urgency across the whole pipeline. Use it. But the honesty rule is absolute:
|
|
123
|
-
|
|
124
|
-
> **Manufacture FOMO from a visibly busy calendar and a real first term sheet — never from fabricated competing offers or invented deadlines.** Lying about a term sheet you don't have is how a raise dies when one investor calls another; the cost of getting caught is the round.
|
|
122
|
+
**The first term sheet changes everything** — it converts soft interest into urgency across the whole pipeline. Use it. But the honesty rule is absolute, because it is the one mistake with no recovery: **manufacture FOMO from a visibly busy calendar and a real first term sheet — never from fabricated competing offers or invented deadlines.** Lying about a term sheet you don't have is how a raise dies when one investor calls another; the cost of getting caught is the round.
|
|
125
123
|
|
|
126
124
|
Track **count-in-pipeline and stage conversion, not activity**. Benchmarks to instrument the funnel: outreach→meeting ~15%, first→second ~50%. Pipeline stages: `Sourced → Intro requested → First meeting → Partner/2nd → Diligence → Term sheet → Closed`. Week-by-week playbook and the honest-momentum mechanics → `references/process-playbook.md`.
|
|
127
125
|
|
|
@@ -140,9 +138,9 @@ A founder negotiates the few terms that **compound** — not the headline valuat
|
|
|
140
138
|
|
|
141
139
|
Median seed lead ownership runs ~12.6%. **Don't sign the first term sheet without a comparison** — a single offer with no comp gives away your only leverage. And the hard handoff: the term sheet is mostly non-binding, but **the binding SAFE / SPA / side letter is a legal document → `../contracts/SKILL.md` and a real lawyer.** You read the term sheet to negotiate; you do not draft the binding instrument here. Full term-by-term cheat sheet with bands and push-on guidance → `references/process-playbook.md`.
|
|
142
140
|
|
|
143
|
-
## Anti-patterns
|
|
141
|
+
## Anti-patterns
|
|
144
142
|
|
|
145
|
-
|
|
|
143
|
+
| Anti-pattern | Do instead |
|
|
146
144
|
| --- | --- |
|
|
147
145
|
| "Raise the max — more runway is always better." | More dilution for proof you don't have. Size to the next milestone (Step 1). |
|
|
148
146
|
| "I'll send a few emails and see who bites." | A serial trickle kills momentum. Concentrate 30–50 meetings in 2 weeks, parallel. |
|
|
@@ -153,10 +151,3 @@ Median seed lead ownership runs ~12.6%. **Don't sign the first term sheet withou
|
|
|
153
151
|
| "Cold outreach is the main channel." | Cold replies ~1–3%; warm converts ~30–50%. Build around intro paths, cold last. |
|
|
154
152
|
| "Tell investors we have a competing term sheet." | If untrue, the raise dies when they call each other. FOMO from real signals only. |
|
|
155
153
|
| "Push the valuation up, that's the win." | The terms that compound are pref, pool, board, dilution — not headline price alone. |
|
|
156
|
-
|
|
157
|
-
## Handoffs + references
|
|
158
|
-
|
|
159
|
-
- Story / slides → `../pitch-deck/SKILL.md` · numbers, cap-table, valuation → `../financial-model/SKILL.md` · one-pager, data room, updates → `../investor-materials/SKILL.md`.
|
|
160
|
-
- Cold message copy → `../cold-outreach/SKILL.md` · binding legal doc → `../contracts/SKILL.md` · non-dilutive → `../grants/SKILL.md` · LTV/CAC probe → `../unit-economics/SKILL.md`.
|
|
161
|
-
- `references/funnel-math.md` — work-backward funnel arithmetic, warm-intro priority ladder with per-path conversion bands, A/B/C tiering rubric, pipeline stage schema, worked $3M-seed top-of-funnel.
|
|
162
|
-
- `references/process-playbook.md` — 6–8 week sprint week-by-week, honest momentum/FOMO mechanics, SAFE-vs-priced decision table (cost/speed/dilution), post-money SAFE pile-up worked example, term-sheet-basics cheat sheet with 2025 bands.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: game-design
|
|
3
|
-
description: "Use when designing or repairing
|
|
3
|
+
description: "Use when designing or repairing what makes a game fun — verbs and mechanics, moment-to-moment/session/meta loops, progression, economy faucets and sinks, difficulty curves, dominant strategies, juice, prototyping and scope. NOT engine code (that is `godot`), NOT story (that is `game-storytelling`), NOT level layout (that is `level-design`)."
|
|
4
4
|
tags: [game-design, mechanics, core-loop, balancing, progression, playtesting, scope, fun]
|
|
5
5
|
recommends: [level-design, game-storytelling, godot, unity, unreal]
|
|
6
6
|
profiles: [full]
|
|
@@ -9,36 +9,19 @@ origin: risco
|
|
|
9
9
|
|
|
10
10
|
# Design games that are fun on purpose
|
|
11
11
|
|
|
12
|
-
Engine-agnostic game design: mechanics, loops, progression, economy, balance, feel, and the discipline of prototyping and scope. No engine APIs live here — when the design is settled, the implementation belongs to `godot
|
|
12
|
+
Engine-agnostic game design: mechanics, loops, progression, economy, balance, feel, and the discipline of prototyping and scope. No engine APIs live here — when the design is settled, the implementation belongs to [`godot`](../godot/SKILL.md), [`unity`](../unity/SKILL.md), or [`unreal`](../unreal/SKILL.md).
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
Two premises govern everything below. **Fun is discovered, not designed** — you cannot reason your way to a fun game on paper, you find it by building the smallest playable version and playing it, so every hour spent planning a mechanic you have not prototyped is an hour spent guessing. And **a game is the set of verbs it gives the player plus the loops those verbs live in** — art, story, and levels dress that skeleton; if the skeleton is not fun in greybox, nothing dresses it into fun.
|
|
15
15
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
> The design of a game is the set of **verbs** it gives the player plus the **loops** those verbs live in. Everything else — art, story, levels — dresses that skeleton. If the skeleton is not fun in greybox, nothing dresses it into fun.
|
|
19
|
-
|
|
20
|
-
## When to use / When NOT
|
|
21
|
-
|
|
22
|
-
**Use when:**
|
|
23
|
-
- Inventing or reworking mechanics and systems, or defining the player's verb set.
|
|
24
|
-
- Shaping the core loop, or layering moment-to-moment → session → meta.
|
|
25
|
-
- Planning progression, unlocks, pacing, or an in-game economy.
|
|
26
|
-
- Tuning a difficulty curve, hunting a dominant strategy, or setting up data-driven balance.
|
|
27
|
-
- Adding "juice" / game feel **as a design concept** (what feedback, why).
|
|
28
|
-
- Prototyping, planning a playtest, deciding what to measure, or cutting scope.
|
|
29
|
-
- The vague-but-critical ask: "why isn't my game fun / why doesn't it hook?"
|
|
30
|
-
|
|
31
|
-
**Do NOT use — route instead:**
|
|
16
|
+
Route elsewhere when the ask is not design:
|
|
32
17
|
|
|
33
18
|
| The ask | Route to | Why not here |
|
|
34
19
|
| --- | --- | --- |
|
|
35
|
-
| Write the movement/AI/shader/save code | `godot` / `unity` / `unreal` | This skill decides *what* to build; the engine skill builds it. |
|
|
36
|
-
| Author the story, dialogue, characters, lore | `game-storytelling` | Narrative design is its own craft; this skill owns systems and verbs. |
|
|
37
|
-
| Lay out a level, encounter, or world map | `level-design` | Spatial/encounter design applies the mechanics this skill defines. |
|
|
38
|
-
| Netcode, prediction, lag compensation | `gamedev-multiplayer` | A technical domain, not core design intent. |
|
|
39
|
-
| Ship / store page / build pipeline | `gamedev-shipping` | Release logistics, not design. |
|
|
40
|
-
|
|
41
|
-
(`godot`, `unity`, `unreal`, `game-storytelling`, `level-design` are linkable siblings; the rest are known ids you name but cannot link yet.)
|
|
20
|
+
| Write the movement/AI/shader/save code | [`godot`](../godot/SKILL.md) / [`unity`](../unity/SKILL.md) / [`unreal`](../unreal/SKILL.md) | This skill decides *what* to build; the engine skill builds it. |
|
|
21
|
+
| Author the story, dialogue, characters, lore | [`game-storytelling`](../game-storytelling/SKILL.md) | Narrative design is its own craft; this skill owns systems and verbs. |
|
|
22
|
+
| Lay out a level, encounter, or world map | [`level-design`](../level-design/SKILL.md) | Spatial/encounter design applies the mechanics this skill defines. |
|
|
23
|
+
| Netcode, prediction, lag compensation | [`gamedev-multiplayer`](../gamedev-multiplayer/SKILL.md) | A technical domain, not core design intent. |
|
|
24
|
+
| Ship / store page / build pipeline | [`gamedev-shipping`](../gamedev-shipping/SKILL.md) | Release logistics, not design. |
|
|
42
25
|
|
|
43
26
|
## Loops: moment-to-moment → session → meta
|
|
44
27
|
|
|
@@ -149,13 +132,6 @@ Playtest protocols, metrics/retention definitions, the prototyping ladder, and c
|
|
|
149
132
|
|
|
150
133
|
If the workspace has a `02-DOCS/` harness, record the design in `02-DOCS/wiki/design/` — a `game-design.md` one-pager (hook, core loop, verbs, pillars, MVP scope, what's out) plus an `economy.md` if there is a currency system. Write each as an OKF v0.1 wiki article per the harness [`wiki-article-template.md`](../harness/references/wiki-article-template.md): YAML frontmatter with a non-empty `type:` (use `type: design`), a `timestamp` in ISO 8601, and standard markdown links — never wikilinks. Index it in `02-DOCS/wiki/index.md`. This is **recorded, not gated** — skip silently if there is no harness.
|
|
151
134
|
|
|
152
|
-
## Related skills
|
|
153
|
-
|
|
154
|
-
- `../level-design/SKILL.md` — applies these mechanics in space: layout, pacing beats, encounter design.
|
|
155
|
-
- `../game-storytelling/SKILL.md` — narrative, dialogue, and how story wraps the systems you define here.
|
|
156
|
-
- `../godot/SKILL.md`, `../unity/SKILL.md`, `../unreal/SKILL.md` — implement the settled design; all engine APIs, feel/juice code, and data-driven tuning loaders live there.
|
|
157
|
-
- Known siblings to name but not yet link: `gamedev-multiplayer`, `gamedev-physics`, `gamedev-pathing`, `gamedev-shaders`, `gamedev-shipping`.
|
|
158
|
-
|
|
159
135
|
## Checklist
|
|
160
136
|
|
|
161
137
|
- [ ] The **core verb** is named and is fun in greybox with no goal attached.
|
package/skills/harness/SKILL.md
CHANGED
|
@@ -4,6 +4,7 @@ description: "Use to control, govern or maintain a workspace's harness — softw
|
|
|
4
4
|
tags: [harness, company, ops, docs, wiki, connect, tools, knowledge]
|
|
5
5
|
recommends: [init]
|
|
6
6
|
profiles: [minimal, core, full]
|
|
7
|
+
origin: risco
|
|
7
8
|
---
|
|
8
9
|
|
|
9
10
|
# Harness — the workspace control plane
|
|
File without changes
|
package/skills/suggest/SKILL.md
CHANGED