@martinffx/atelier 2.0.0 → 3.0.1

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 (81) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/README.md +94 -253
  3. package/package.json +1 -1
  4. package/skills/{spec-orchestrator → atelier-orchestrator}/SKILL.md +3 -3
  5. package/skills/atelier-setup/SKILL.md +80 -0
  6. package/skills/code-review/references/reviewers.md +3 -3
  7. package/skills/code-review/references/rq.md +6 -6
  8. package/skills/spec-brainstorm/SKILL.md +5 -5
  9. package/skills/spec-implement/SKILL.md +2 -3
  10. package/skills/spec-plan/SKILL.md +21 -29
  11. package/skills/spec-plan/references/plan_template.md +77 -0
  12. package/skills/python-architecture/SKILL.md +0 -148
  13. package/skills/python-architecture/references/data-modeling.md +0 -558
  14. package/skills/python-architecture/references/ddd.md +0 -569
  15. package/skills/python-architecture/references/functional-core.md +0 -337
  16. package/skills/python-build-tools/SKILL.md +0 -153
  17. package/skills/python-build-tools/references/basedpyright.md +0 -321
  18. package/skills/python-build-tools/references/ruff.md +0 -225
  19. package/skills/python-build-tools/references/uv.md +0 -257
  20. package/skills/python-fastapi/SKILL.md +0 -184
  21. package/skills/python-fastapi/references/api-design.md +0 -563
  22. package/skills/python-fastapi/references/dependencies.md +0 -479
  23. package/skills/python-fastapi/references/middleware.md +0 -475
  24. package/skills/python-fastapi/references/validation.md +0 -497
  25. package/skills/python-modern-python/SKILL.md +0 -201
  26. package/skills/python-modern-python/references/async.md +0 -76
  27. package/skills/python-modern-python/references/pattern-matching.md +0 -89
  28. package/skills/python-modern-python/references/typing.md +0 -96
  29. package/skills/python-monorepo/SKILL.md +0 -146
  30. package/skills/python-monorepo/references/docker.md +0 -515
  31. package/skills/python-monorepo/references/namespace-packages.md +0 -426
  32. package/skills/python-monorepo/references/workspace-config.md +0 -341
  33. package/skills/python-sqlalchemy/SKILL.md +0 -119
  34. package/skills/python-sqlalchemy/references/async.md +0 -51
  35. package/skills/python-sqlalchemy/references/models.md +0 -67
  36. package/skills/python-sqlalchemy/references/queries.md +0 -57
  37. package/skills/python-temporal/SKILL.md +0 -128
  38. package/skills/python-temporal/references/patterns.md +0 -87
  39. package/skills/python-temporal/references/testing.md +0 -54
  40. package/skills/python-testing/SKILL.md +0 -161
  41. package/skills/python-testing/references/boundaries.md +0 -449
  42. package/skills/python-testing/references/mocking.md +0 -449
  43. package/skills/python-testing/references/pytest.md +0 -524
  44. package/skills/typescript-api-design/SKILL.md +0 -396
  45. package/skills/typescript-api-design/references/error-responses.md +0 -469
  46. package/skills/typescript-build-tools/SKILL.md +0 -447
  47. package/skills/typescript-build-tools/references/biome.md +0 -436
  48. package/skills/typescript-build-tools/references/bun.md +0 -432
  49. package/skills/typescript-build-tools/references/turborepo.md +0 -426
  50. package/skills/typescript-build-tools/references/vitest.md +0 -518
  51. package/skills/typescript-drizzle-orm/SKILL.md +0 -398
  52. package/skills/typescript-drizzle-orm/references/cloudflare.md +0 -392
  53. package/skills/typescript-drizzle-orm/references/entity-pattern.md +0 -412
  54. package/skills/typescript-drizzle-orm/references/postgresql.md +0 -191
  55. package/skills/typescript-drizzle-orm/references/repository-pattern.md +0 -479
  56. package/skills/typescript-drizzle-orm/references/sqlite.md +0 -291
  57. package/skills/typescript-dynamodb-toolbox/SKILL.md +0 -370
  58. package/skills/typescript-dynamodb-toolbox/references/entity-layer.md +0 -574
  59. package/skills/typescript-dynamodb-toolbox/references/error-handling.md +0 -495
  60. package/skills/typescript-dynamodb-toolbox/references/modeling.md +0 -332
  61. package/skills/typescript-dynamodb-toolbox/references/repository-layer.md +0 -631
  62. package/skills/typescript-dynamodb-toolbox/references/testing.md +0 -718
  63. package/skills/typescript-dynamodb-toolbox/references/transactions.md +0 -423
  64. package/skills/typescript-effect-ts/SKILL.md +0 -341
  65. package/skills/typescript-effect-ts/references/core.md +0 -412
  66. package/skills/typescript-effect-ts/references/error-handling.md +0 -468
  67. package/skills/typescript-effect-ts/references/resources.md +0 -476
  68. package/skills/typescript-effect-ts/references/schema.md +0 -536
  69. package/skills/typescript-effect-ts/references/services.md +0 -461
  70. package/skills/typescript-fastify/SKILL.md +0 -405
  71. package/skills/typescript-fastify/references/plugins.md +0 -329
  72. package/skills/typescript-fastify/references/typeid.md +0 -315
  73. package/skills/typescript-functional-patterns/SKILL.md +0 -402
  74. package/skills/typescript-functional-patterns/references/adts.md +0 -497
  75. package/skills/typescript-functional-patterns/references/branded-types.md +0 -542
  76. package/skills/typescript-functional-patterns/references/migration-guide.md +0 -695
  77. package/skills/typescript-functional-patterns/references/option-result.md +0 -585
  78. package/skills/typescript-testing/SKILL.md +0 -353
  79. package/skills/typescript-testing/references/mocking.md +0 -675
  80. package/skills/typescript-testing/references/msw.md +0 -852
  81. package/skills/typescript-testing/references/snapshot-testing.md +0 -774
@@ -1,436 +0,0 @@
1
- # Biome Configuration Guide
2
-
3
- Detailed Biome rules and configuration patterns for TypeScript projects.
4
-
5
- ## Configuration Hierarchy
6
-
7
- Biome searches for configuration in this order:
8
- 1. `biome.json` in current directory
9
- 2. `biome.jsonc` in current directory
10
- 3. Parent directories (up to root)
11
-
12
- ## Formatter Options
13
-
14
- ### Indentation Style
15
-
16
- ```json
17
- {
18
- "formatter": {
19
- "indentStyle": "tab", // "tab" or "space"
20
- "indentWidth": 2, // 2 or 4
21
- "lineWidth": 100 // 80, 100, or 120
22
- }
23
- }
24
- ```
25
-
26
- ### JavaScript/TypeScript Specific
27
-
28
- ```json
29
- {
30
- "javascript": {
31
- "formatter": {
32
- "quoteStyle": "double", // "double" or "single"
33
- "trailingCommas": "es5", // "all", "es5", or "none"
34
- "semicolons": "always", // "always" or "asNeeded"
35
- "arrowParentheses": "always", // "always" or "asNeeded"
36
- "bracketSameLine": false,
37
- "bracketSpacing": true
38
- }
39
- }
40
- }
41
- ```
42
-
43
- ## Linter Rules
44
-
45
- ### Recommended (Default)
46
-
47
- ```json
48
- {
49
- "linter": {
50
- "enabled": true,
51
- "rules": {
52
- "recommended": true
53
- }
54
- }
55
- }
56
- ```
57
-
58
- ### Strict Configuration
59
-
60
- ```json
61
- {
62
- "linter": {
63
- "enabled": true,
64
- "rules": {
65
- "recommended": true,
66
- "complexity": {
67
- "noForEach": "error",
68
- "noUselessFragments": "error",
69
- "useLiteralKeys": "error"
70
- },
71
- "correctness": {
72
- "noUnusedImports": "error",
73
- "noUnusedVariables": "error",
74
- "useHookAtTopLevel": "error"
75
- },
76
- "performance": {
77
- "noDelete": "error",
78
- "noAccumulatingSpread": "warn"
79
- },
80
- "style": {
81
- "noNonNullAssertion": "warn",
82
- "useNodejsImportProtocol": "error",
83
- "useImportType": "error",
84
- "useExportType": "error"
85
- },
86
- "suspicious": {
87
- "noExplicitAny": "warn",
88
- "noConfusingVoidType": "error"
89
- }
90
- }
91
- }
92
- }
93
- ```
94
-
95
- ### Rule Explanations
96
-
97
- | Rule | Why | Example |
98
- |------|-----|---------|
99
- | `noForEach` | Prefer `for...of` - better performance, supports `break`/`continue` | ❌ `arr.forEach(x => ...)` ✅ `for (const x of arr)` |
100
- | `noDelete` | Use `Map.delete()` or object destructuring - `delete` is slow | ❌ `delete obj.key` ✅ `const { key, ...rest } = obj` |
101
- | `useNodejsImportProtocol` | Use `node:fs` instead of `fs` - explicit, avoids bundler issues | ❌ `import fs from 'fs'` ✅ `import fs from 'node:fs'` |
102
- | `noNonNullAssertion` | Avoid `!` assertions - use proper null checks | ❌ `user!.name` ✅ `user?.name` |
103
- | `noExplicitAny` | Use `unknown` and narrow types - better type safety | ❌ `data: any` ✅ `data: unknown` |
104
- | `noUnusedImports` | Clean imports - reduces bundle size | ❌ `import { unused } from 'lib'` |
105
- | `useImportType` | Use `import type` for types - helps tree-shaking | ❌ `import { User } from './types'` ✅ `import type { User } from './types'` |
106
- | `noAccumulatingSpread` | Avoid spread in loops - O(n²) complexity | ❌ `arr = [...arr, x]` in loop ✅ `arr.push(x)` |
107
- | `useLiteralKeys` | Use literals instead of computed properties | ❌ `{ ['key']: value }` ✅ `{ key: value }` |
108
-
109
- ## File Ignoring
110
-
111
- ### Via biome.json
112
-
113
- ```json
114
- {
115
- "files": {
116
- "ignore": [
117
- "dist",
118
- "node_modules",
119
- "*.gen.ts",
120
- "drizzle/**",
121
- "coverage/**"
122
- ],
123
- "ignoreUnknown": true
124
- }
125
- }
126
- ```
127
-
128
- ### Via .biomeignore
129
-
130
- ```
131
- # Generated files
132
- dist/
133
- coverage/
134
- *.gen.ts
135
-
136
- # Dependencies
137
- node_modules/
138
-
139
- # Drizzle migrations
140
- drizzle/
141
- ```
142
-
143
- ## Organize Imports
144
-
145
- ```json
146
- {
147
- "organizeImports": {
148
- "enabled": true
149
- }
150
- }
151
- ```
152
-
153
- This automatically groups and sorts imports:
154
-
155
- ```typescript
156
- // Before
157
- import { useState } from 'react'
158
- import fs from 'node:fs'
159
- import { User } from './types'
160
- import path from 'node:path'
161
-
162
- // After (organized)
163
- import fs from 'node:fs'
164
- import path from 'node:path'
165
-
166
- import { useState } from 'react'
167
-
168
- import { User } from './types'
169
- ```
170
-
171
- ## VCS Integration
172
-
173
- ```json
174
- {
175
- "vcs": {
176
- "enabled": true,
177
- "clientKind": "git",
178
- "useIgnoreFile": true,
179
- "defaultBranch": "main"
180
- }
181
- }
182
- ```
183
-
184
- Benefits:
185
- - Respects `.gitignore` patterns
186
- - Only formats tracked files
187
- - Integrates with git workflows
188
-
189
- ## Shareable Config (Monorepo)
190
-
191
- ### packages/config-biome/package.json
192
-
193
- ```json
194
- {
195
- "name": "@myorg/biome-config",
196
- "version": "1.0.0",
197
- "main": "biome.json",
198
- "files": ["biome.json"]
199
- }
200
- ```
201
-
202
- ### packages/config-biome/biome.json
203
-
204
- ```json
205
- {
206
- "$schema": "https://biomejs.dev/schemas/2.0.0/schema.json",
207
- "formatter": {
208
- "indentStyle": "tab",
209
- "lineWidth": 100
210
- },
211
- "javascript": {
212
- "formatter": {
213
- "quoteStyle": "double",
214
- "trailingCommas": "es5"
215
- }
216
- },
217
- "linter": {
218
- "enabled": true,
219
- "rules": {
220
- "recommended": true,
221
- "complexity": {
222
- "noForEach": "error"
223
- },
224
- "performance": {
225
- "noDelete": "error"
226
- },
227
- "style": {
228
- "useNodejsImportProtocol": "error"
229
- }
230
- }
231
- },
232
- "organizeImports": {
233
- "enabled": true
234
- }
235
- }
236
- ```
237
-
238
- ### apps/api/biome.json
239
-
240
- ```json
241
- {
242
- "$schema": "https://biomejs.dev/schemas/2.0.0/schema.json",
243
- "extends": ["@myorg/biome-config"],
244
- "files": {
245
- "ignore": ["dist/**"]
246
- }
247
- }
248
- ```
249
-
250
- ## Using with ESLint
251
-
252
- Biome can coexist with ESLint for type-aware rules that Biome doesn't support:
253
-
254
- ```json
255
- // biome.json - handle formatting and most linting
256
- {
257
- "linter": {
258
- "enabled": true,
259
- "rules": {
260
- "recommended": true
261
- }
262
- }
263
- }
264
- ```
265
-
266
- ```javascript
267
- // eslint.config.js - type-aware rules only
268
- import tseslint from 'typescript-eslint'
269
- import boundaries from 'eslint-plugin-boundaries'
270
-
271
- export default tseslint.config({
272
- plugins: {
273
- boundaries,
274
- },
275
- rules: {
276
- // Type-aware rules Biome can't do
277
- '@typescript-eslint/no-floating-promises': 'error',
278
- '@typescript-eslint/no-misused-promises': 'error',
279
- // Architectural boundaries
280
- 'boundaries/element-types': 'error',
281
- },
282
- })
283
- ```
284
-
285
- ### Dual Linting Scripts
286
-
287
- ```json
288
- {
289
- "scripts": {
290
- "lint": "biome check ./src && eslint ./src --max-warnings 0",
291
- "lint:fix": "biome check --write ./src && eslint --fix ./src"
292
- }
293
- }
294
- ```
295
-
296
- ## CLI Commands
297
-
298
- ```bash
299
- # Check all files (lint + format check)
300
- biome check .
301
-
302
- # Fix all files (lint + format)
303
- biome check --write .
304
-
305
- # Format only
306
- biome format --write .
307
-
308
- # Lint only
309
- biome lint .
310
-
311
- # Check specific files
312
- biome check src/
313
-
314
- # CI mode (fail on any issue)
315
- biome ci .
316
-
317
- # Show what would be changed (dry run)
318
- biome check --write --dry-run .
319
- ```
320
-
321
- ## Migration from ESLint/Prettier
322
-
323
- ```bash
324
- # Generate Biome config from existing configs
325
- biome migrate --write
326
-
327
- # Migrate ESLint config
328
- biome migrate eslint --write
329
-
330
- # Migrate Prettier config
331
- biome migrate prettier --write
332
- ```
333
-
334
- After migration:
335
- 1. Review generated `biome.json`
336
- 2. Test on a few files
337
- 3. Remove ESLint/Prettier configs
338
- 4. Uninstall old packages: `bun remove eslint prettier @typescript-eslint/parser @typescript-eslint/eslint-plugin`
339
-
340
- ## Editor Integration
341
-
342
- ### VSCode
343
-
344
- Install the Biome extension:
345
-
346
- ```bash
347
- code --install-extension biomejs.biome
348
- ```
349
-
350
- Settings (`.vscode/settings.json`):
351
-
352
- ```json
353
- {
354
- "[typescript]": {
355
- "editor.defaultFormatter": "biomejs.biome",
356
- "editor.formatOnSave": true,
357
- "editor.codeActionsOnSave": {
358
- "quickfix.biome": "explicit",
359
- "source.organizeImports.biome": "explicit"
360
- }
361
- },
362
- "[typescriptreact]": {
363
- "editor.defaultFormatter": "biomejs.biome",
364
- "editor.formatOnSave": true
365
- }
366
- }
367
- ```
368
-
369
- ### Recommended Extensions
370
-
371
- For VSCode workspace, add to `.vscode/extensions.json`:
372
-
373
- ```json
374
- {
375
- "recommendations": [
376
- "biomejs.biome"
377
- ],
378
- "unwantedRecommendations": [
379
- "dbaeumer.vscode-eslint",
380
- "esbenp.prettier-vscode"
381
- ]
382
- }
383
- ```
384
-
385
- ## Pre-commit Hooks
386
-
387
- ### Using Husky + lint-staged
388
-
389
- ```bash
390
- bun add -D husky lint-staged
391
- ```
392
-
393
- `.husky/pre-commit`:
394
-
395
- ```bash
396
- #!/usr/bin/env sh
397
- . "$(dirname -- "$0")/_/husky.sh"
398
-
399
- bun run lint-staged
400
- ```
401
-
402
- `package.json`:
403
-
404
- ```json
405
- {
406
- "lint-staged": {
407
- "*.{ts,tsx}": [
408
- "biome check --write --no-errors-on-unmatched"
409
- ]
410
- }
411
- }
412
- ```
413
-
414
- ## Performance
415
-
416
- Biome is significantly faster than ESLint + Prettier:
417
-
418
- | Tool | Speed (10k files) |
419
- |------|-------------------|
420
- | ESLint + Prettier | ~45s |
421
- | Biome | ~1.5s |
422
-
423
- ## Best Practices
424
-
425
- 1. **Use tabs** for accessibility - users can set their preferred width
426
- 2. **Set line width to 100** - balances readability and screen space
427
- 3. **Use double quotes** - consistent with JSON, less escaping in HTML
428
- 4. **Enable organize imports** - cleaner diffs, easier to read
429
- 5. **Enable VCS integration** - respects .gitignore
430
- 6. **Use recommended rules** as baseline
431
- 7. **Add strict rules gradually** - `noForEach`, `noDelete`, `useNodejsImportProtocol`
432
- 8. **Share config in monorepos** via workspace package
433
- 9. **Use ESLint alongside** for type-aware rules only
434
- 10. **Run `biome ci`** in CI - fails on any issue
435
- 11. **Configure editor integration** - format on save
436
- 12. **Use pre-commit hooks** - catch issues before commit