You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: .ruler/AGENTS.md
+49-47Lines changed: 49 additions & 47 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -50,8 +50,12 @@ commands:
50
50
### getting started
51
51
52
52
```bash
53
-
# Setup — once per checkout, and again after dependency changes
54
-
pnpm install && pnpm build.core
53
+
pnpm i
54
+
```
55
+
56
+
```bash
57
+
pnpm build.core # for a fresh start
58
+
pnpm build.full # for a fresh start and you are working on the docs (the docs run the optimizer)
55
59
```
56
60
### Iterating
57
61
@@ -73,7 +77,7 @@ pnpm playwright test e2e/qwik-e2e/tests/events.e2e.ts --browser=chromium --confi
73
77
74
78
For Qwik e2e tests, use `--browser=chromium` with `e2e/qwik-e2e/playwright.config.ts`.
75
79
76
-
Run`pnpm build.full` only when you are touching the optimizer rust code.
80
+
Re-run`pnpm build.full` when you are touching the optimizer rust code.
77
81
78
82
### When making a PR
79
83
@@ -118,27 +122,10 @@ Follow that bias:
118
122
- Keep new durable lessons in the most specific skill or reference that future agents are likely to
119
123
load. Do not add package-specific details to these always-on rules unless they affect most tasks.
120
124
- Write those notes **prescriptively** — the invariants to keep, the traps that cause false passes,
121
-
where things live, and how to verify — rather than describing how the code currently works (the
122
-
source already does that). Omit "don't do X" prohibitions for anything a test already enforces; the
125
+
where things live, and how to verify — rather than describing how the code currently works. Omit "don't do X" prohibitions for anything a test already enforces; the
123
126
suite is the guardrail, so reserve notes for what it can't self-enforce.
124
127
- When updating guidance, load the `qwik-guidance-maintenance` skill.
125
128
126
-
### Code Style
127
-
128
-
Prettier and ESLint define style. Keep semicolons, single quotes, two-space indentation, trailing
129
-
commas where configured, and always use braces for control flow.
130
-
131
-
Naming conventions:
132
-
133
-
| Pattern | Usage |
134
-
| --- | --- |
135
-
|`use*`| Hooks called in component/task scope |
136
-
|`*$`| QRL boundary extracted by the optimizer |
137
-
|`create*`| Factory functions |
138
-
|`*.unit.ts(x)`| Vitest unit files |
139
-
|`*.spec.ts(x)`| Vitest spec files |
140
-
|`*.e2e.ts`| Playwright e2e files |
141
-
142
129
### Skill Selection
143
130
144
131
Load the relevant skill before non-trivial work in that area:
@@ -162,22 +149,21 @@ the skill list unambiguous outside the repo-local `.ruler` tree.
162
149
163
150
When a change affects published packages, add a changeset under `.changeset/`.
164
151
165
-
- Use `patch` for bug fixes, `minor` for new features and `major` for API removal. A `major` may also include a new feature, but it must remove or break a public API.
152
+
- Use `patch` for bug fixes: focus on the issue rather than the solution.
153
+
-`minor` for new features: explain the new feature.
154
+
-`major` for API removal: may also include a new feature, but it must remove or break a public API.
166
155
- Enforce 1 changeset per change.
167
156
- Write the changeset summary in lowercase (e.g. `fix:`)
168
-
- 1 sentence focused on the bug fix or feature. Don't include implementation details.
157
+
- 1 short sentence (10-ish words) focused on the bug fix or feature. Don't include implementation details.
169
158
170
159
### Code Quality
171
160
172
-
Write code that junior developers and AI agents can understand during review and future changes.
173
161
174
162
#### Sanity
175
163
176
-
- Prefer local semantic helpers over broad rewrites when they make state, ordering, or ownership
177
-
clearer.
178
-
- Do not leave debug logging, temporary names, "fixup" code, or unexplained broad fallbacks in the
179
-
final diff.
180
-
- Only add explanatory comments where absolutely necessary, only to warn and crucial information that is not self-explanatory. Write comments for humans: keep your comments constrained to 1 short sentence or 2 maximum; be mindful of character count; focus on explaning the crux of the issue rather than implementation details.
164
+
- Remember to keep your code DRY.
165
+
- Do not leave debug logging or temporary names in the final diff.
166
+
- Only add comments for crucial information that is not self-explanatory. Keep your comments constrained to 1 short sentence (10-ish words) maximum. Focus on explaning the why/issue rather than implementation details.
181
167
- Write one changeset per patch/minor/major change. Keep the changeset message constrained to 1 short sentence or 2 maximum, focused on the bug fix, feature or breaking changes. Don't explain the internals or implementation details.
182
168
183
169
#### Naming
@@ -218,27 +204,21 @@ Before finishing, read the changed code as if you are new to the package:
218
204
219
205
If the answer is no, simplify the code before calling the task complete.
220
206
221
-
### No Hydration Terminology
222
-
223
-
Never describe Qwik or any part of how Qwik works as hydration. Qwik does not hydrate. Qwik is
224
-
resumable: the server serializes application state and listeners into the HTML, and the client
225
-
resumes execution exactly where the server left off, without re-running component code or
226
-
rebuilding the framework state.
207
+
### Code Style
227
208
228
-
- Do not call any Qwik mechanism "hydration", "hydrating", "rehydration", "partial hydration",
229
-
"progressive hydration", "selective hydration", or "island hydration".
230
-
- Do not describe Qwik components, containers, or apps as "hydrated" or "needing to hydrate".
231
-
- Use the Qwik terminilogy instead: "javascript streaming", "JIT preloading", "resumability", "resume", "resuming", "serialization", "deserialization", and "lazy execution".
232
-
- Describe client startup as Qwik resuming from serialized state, not as Qwik booting, mounting,
233
-
or hydrating the app.
209
+
Prettier and ESLint define style. Keep semicolons, single quotes, two-space indentation, trailing
210
+
commas where configured, and always use braces for control flow.
234
211
235
-
#### Allowed Mentions
212
+
Naming conventions:
236
213
237
-
The word "hydration" may appear only when explicitly contrasting Qwik with hydration-based
238
-
frameworks, and the sentence must make clear that hydration is what other frameworks do and what
239
-
Qwik avoids. For example: "Unlike frameworks that hydrate on the client, Qwik resumes from
240
-
serialized state." Never use hydration vocabulary, even casually or by analogy, to explain what
241
-
Qwik itself does.
214
+
| Pattern | Usage |
215
+
| --- | --- |
216
+
|`use*`| Hooks called in component/task scope |
217
+
|`*$`| QRL boundary extracted by the optimizer |
218
+
|`create*`| Factory functions |
219
+
|`*.unit.ts(x)`| Vitest unit files |
220
+
|`*.spec.ts(x)`| Vitest spec files |
221
+
|`*.e2e.ts`| Playwright e2e files |
242
222
243
223
### Security And Supply Chain
244
224
@@ -340,3 +320,25 @@ is resolved.
340
320
task.
341
321
- Do not commit `.only` tests.
342
322
- Do not skip tests for behavior changes; use the closest focused test first.
323
+
324
+
### No Hydration Terminology
325
+
326
+
Never describe Qwik or any part of how Qwik works as hydration. Qwik does not hydrate. Qwik is
327
+
resumable: the server serializes application state and listeners into the HTML, and the client
328
+
resumes execution exactly where the server left off, without re-running component code or
329
+
rebuilding the framework state.
330
+
331
+
- Do not call any Qwik mechanism "hydration", "hydrating", "rehydration", "partial hydration",
332
+
"progressive hydration", "selective hydration", or "island hydration".
333
+
- Do not describe Qwik components, containers, or apps as "hydrated" or "needing to hydrate".
334
+
- Use the Qwik terminilogy instead: "javascript streaming", "JIT preloading", "resumability", "resume", "resuming", "serialization", "deserialization", and "lazy execution".
335
+
- Describe client startup as Qwik resuming from serialized state, not as Qwik booting, mounting,
336
+
or hydrating the app.
337
+
338
+
#### Allowed Mentions
339
+
340
+
The word "hydration" may appear only when explicitly contrasting Qwik with hydration-based
341
+
frameworks, and the sentence must make clear that hydration is what other frameworks do and what
342
+
Qwik avoids. For example: "Unlike frameworks that hydrate on the client, Qwik resumes from
343
+
serialized state." Never use hydration vocabulary, even casually or by analogy, to explain what
Copy file name to clipboardExpand all lines: AGENTS.md
+49-47Lines changed: 49 additions & 47 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -55,8 +55,12 @@ commands:
55
55
### getting started
56
56
57
57
```bash
58
-
# Setup — once per checkout, and again after dependency changes
59
-
pnpm install && pnpm build.core
58
+
pnpm i
59
+
```
60
+
61
+
```bash
62
+
pnpm build.core # for a fresh start
63
+
pnpm build.full # for a fresh start and you are working on the docs (the docs run the optimizer)
60
64
```
61
65
### Iterating
62
66
@@ -78,7 +82,7 @@ pnpm playwright test e2e/qwik-e2e/tests/events.e2e.ts --browser=chromium --confi
78
82
79
83
For Qwik e2e tests, use `--browser=chromium` with `e2e/qwik-e2e/playwright.config.ts`.
80
84
81
-
Run`pnpm build.full` only when you are touching the optimizer rust code.
85
+
Re-run`pnpm build.full` when you are touching the optimizer rust code.
82
86
83
87
### When making a PR
84
88
@@ -123,27 +127,10 @@ Follow that bias:
123
127
- Keep new durable lessons in the most specific skill or reference that future agents are likely to
124
128
load. Do not add package-specific details to these always-on rules unless they affect most tasks.
125
129
- Write those notes **prescriptively** — the invariants to keep, the traps that cause false passes,
126
-
where things live, and how to verify — rather than describing how the code currently works (the
127
-
source already does that). Omit "don't do X" prohibitions for anything a test already enforces; the
130
+
where things live, and how to verify — rather than describing how the code currently works. Omit "don't do X" prohibitions for anything a test already enforces; the
128
131
suite is the guardrail, so reserve notes for what it can't self-enforce.
129
132
- When updating guidance, load the `qwik-guidance-maintenance` skill.
130
133
131
-
### Code Style
132
-
133
-
Prettier and ESLint define style. Keep semicolons, single quotes, two-space indentation, trailing
134
-
commas where configured, and always use braces for control flow.
135
-
136
-
Naming conventions:
137
-
138
-
| Pattern | Usage |
139
-
| --- | --- |
140
-
|`use*`| Hooks called in component/task scope |
141
-
|`*$`| QRL boundary extracted by the optimizer |
142
-
|`create*`| Factory functions |
143
-
|`*.unit.ts(x)`| Vitest unit files |
144
-
|`*.spec.ts(x)`| Vitest spec files |
145
-
|`*.e2e.ts`| Playwright e2e files |
146
-
147
134
### Skill Selection
148
135
149
136
Load the relevant skill before non-trivial work in that area:
@@ -167,22 +154,21 @@ the skill list unambiguous outside the repo-local `.ruler` tree.
167
154
168
155
When a change affects published packages, add a changeset under `.changeset/`.
169
156
170
-
- Use `patch` for bug fixes, `minor` for new features and `major` for API removal. A `major` may also include a new feature, but it must remove or break a public API.
157
+
- Use `patch` for bug fixes: focus on the issue rather than the solution.
158
+
-`minor` for new features: explain the new feature.
159
+
-`major` for API removal: may also include a new feature, but it must remove or break a public API.
171
160
- Enforce 1 changeset per change.
172
161
- Write the changeset summary in lowercase (e.g. `fix:`)
173
-
- 1 sentence focused on the bug fix or feature. Don't include implementation details.
162
+
- 1 short sentence (10-ish words) focused on the bug fix or feature. Don't include implementation details.
174
163
175
164
### Code Quality
176
165
177
-
Write code that junior developers and AI agents can understand during review and future changes.
178
166
179
167
#### Sanity
180
168
181
-
- Prefer local semantic helpers over broad rewrites when they make state, ordering, or ownership
182
-
clearer.
183
-
- Do not leave debug logging, temporary names, "fixup" code, or unexplained broad fallbacks in the
184
-
final diff.
185
-
- Only add explanatory comments where absolutely necessary, only to warn and crucial information that is not self-explanatory. Write comments for humans: keep your comments constrained to 1 short sentence or 2 maximum; be mindful of character count; focus on explaning the crux of the issue rather than implementation details.
169
+
- Remember to keep your code DRY.
170
+
- Do not leave debug logging or temporary names in the final diff.
171
+
- Only add comments for crucial information that is not self-explanatory. Keep your comments constrained to 1 short sentence (10-ish words) maximum. Focus on explaning the why/issue rather than implementation details.
186
172
- Write one changeset per patch/minor/major change. Keep the changeset message constrained to 1 short sentence or 2 maximum, focused on the bug fix, feature or breaking changes. Don't explain the internals or implementation details.
187
173
188
174
#### Naming
@@ -223,27 +209,21 @@ Before finishing, read the changed code as if you are new to the package:
223
209
224
210
If the answer is no, simplify the code before calling the task complete.
225
211
226
-
### No Hydration Terminology
227
-
228
-
Never describe Qwik or any part of how Qwik works as hydration. Qwik does not hydrate. Qwik is
229
-
resumable: the server serializes application state and listeners into the HTML, and the client
230
-
resumes execution exactly where the server left off, without re-running component code or
231
-
rebuilding the framework state.
212
+
### Code Style
232
213
233
-
- Do not call any Qwik mechanism "hydration", "hydrating", "rehydration", "partial hydration",
234
-
"progressive hydration", "selective hydration", or "island hydration".
235
-
- Do not describe Qwik components, containers, or apps as "hydrated" or "needing to hydrate".
236
-
- Use the Qwik terminilogy instead: "javascript streaming", "JIT preloading", "resumability", "resume", "resuming", "serialization", "deserialization", and "lazy execution".
237
-
- Describe client startup as Qwik resuming from serialized state, not as Qwik booting, mounting,
238
-
or hydrating the app.
214
+
Prettier and ESLint define style. Keep semicolons, single quotes, two-space indentation, trailing
215
+
commas where configured, and always use braces for control flow.
239
216
240
-
#### Allowed Mentions
217
+
Naming conventions:
241
218
242
-
The word "hydration" may appear only when explicitly contrasting Qwik with hydration-based
243
-
frameworks, and the sentence must make clear that hydration is what other frameworks do and what
244
-
Qwik avoids. For example: "Unlike frameworks that hydrate on the client, Qwik resumes from
245
-
serialized state." Never use hydration vocabulary, even casually or by analogy, to explain what
246
-
Qwik itself does.
219
+
| Pattern | Usage |
220
+
| --- | --- |
221
+
|`use*`| Hooks called in component/task scope |
222
+
|`*$`| QRL boundary extracted by the optimizer |
223
+
|`create*`| Factory functions |
224
+
|`*.unit.ts(x)`| Vitest unit files |
225
+
|`*.spec.ts(x)`| Vitest spec files |
226
+
|`*.e2e.ts`| Playwright e2e files |
247
227
248
228
### Security And Supply Chain
249
229
@@ -346,6 +326,28 @@ is resolved.
346
326
- Do not commit `.only` tests.
347
327
- Do not skip tests for behavior changes; use the closest focused test first.
348
328
329
+
### No Hydration Terminology
330
+
331
+
Never describe Qwik or any part of how Qwik works as hydration. Qwik does not hydrate. Qwik is
332
+
resumable: the server serializes application state and listeners into the HTML, and the client
333
+
resumes execution exactly where the server left off, without re-running component code or
334
+
rebuilding the framework state.
335
+
336
+
- Do not call any Qwik mechanism "hydration", "hydrating", "rehydration", "partial hydration",
337
+
"progressive hydration", "selective hydration", or "island hydration".
338
+
- Do not describe Qwik components, containers, or apps as "hydrated" or "needing to hydrate".
339
+
- Use the Qwik terminilogy instead: "javascript streaming", "JIT preloading", "resumability", "resume", "resuming", "serialization", "deserialization", and "lazy execution".
340
+
- Describe client startup as Qwik resuming from serialized state, not as Qwik booting, mounting,
341
+
or hydrating the app.
342
+
343
+
#### Allowed Mentions
344
+
345
+
The word "hydration" may appear only when explicitly contrasting Qwik with hydration-based
346
+
frameworks, and the sentence must make clear that hydration is what other frameworks do and what
347
+
Qwik avoids. For example: "Unlike frameworks that hydrate on the client, Qwik resumes from
348
+
serialized state." Never use hydration vocabulary, even casually or by analogy, to explain what
0 commit comments