@sylix/coworker 2.0.11 → 2.0.12

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 (169) hide show
  1. package/dist/commands/slash/config.d.ts.map +1 -1
  2. package/dist/commands/slash/config.js +22 -4
  3. package/dist/commands/slash/config.js.map +1 -1
  4. package/dist/core/CoWorkerAgent.d.ts.map +1 -1
  5. package/dist/core/CoWorkerAgent.js +6 -3
  6. package/dist/core/CoWorkerAgent.js.map +1 -1
  7. package/dist/skills/defaults/accessibility/screen-reader-testing.md +545 -0
  8. package/dist/skills/defaults/accessibility/wcag-audit-patterns.md +555 -0
  9. package/dist/skills/defaults/ai-ml/rag.md +276 -0
  10. package/dist/skills/defaults/backend-development/api-design-principles.md +528 -0
  11. package/dist/skills/defaults/backend-development/api-design.md +285 -0
  12. package/dist/skills/defaults/backend-development/architecture-patterns.md +494 -0
  13. package/dist/skills/defaults/backend-development/async-python.md +237 -0
  14. package/dist/skills/defaults/backend-development/auth-implementation-patterns.md +638 -0
  15. package/dist/skills/defaults/backend-development/bazel-build-optimization.md +387 -0
  16. package/dist/skills/defaults/backend-development/billing-automation/SKILL.md +566 -0
  17. package/dist/skills/defaults/backend-development/code-review-excellence.md +538 -0
  18. package/dist/skills/defaults/backend-development/cqrs-implementation.md +554 -0
  19. package/dist/skills/defaults/backend-development/database-design.md +305 -0
  20. package/dist/skills/defaults/backend-development/debugging-strategies.md +536 -0
  21. package/dist/skills/defaults/backend-development/e2e-testing-patterns.md +544 -0
  22. package/dist/skills/defaults/backend-development/error-handling-patterns.md +641 -0
  23. package/dist/skills/defaults/backend-development/fastapi-templates.md +559 -0
  24. package/dist/skills/defaults/backend-development/fastapi.md +309 -0
  25. package/dist/skills/defaults/backend-development/git-advanced-workflows.md +405 -0
  26. package/dist/skills/defaults/backend-development/microservices-patterns.md +595 -0
  27. package/dist/skills/defaults/backend-development/microservices.md +284 -0
  28. package/dist/skills/defaults/backend-development/monorepo-management.md +623 -0
  29. package/dist/skills/defaults/backend-development/nodejs-backend-patterns.md +1048 -0
  30. package/dist/skills/defaults/backend-development/nx-workspace-patterns.md +457 -0
  31. package/dist/skills/defaults/backend-development/paypal-integration/SKILL.md +478 -0
  32. package/dist/skills/defaults/backend-development/pci-compliance/SKILL.md +480 -0
  33. package/dist/skills/defaults/backend-development/python-anti-patterns.md +349 -0
  34. package/dist/skills/defaults/backend-development/python-background-jobs.md +364 -0
  35. package/dist/skills/defaults/backend-development/python-code-style.md +360 -0
  36. package/dist/skills/defaults/backend-development/python-configuration.md +368 -0
  37. package/dist/skills/defaults/backend-development/python-design-patterns.md +296 -0
  38. package/dist/skills/defaults/backend-development/python-error-handling.md +323 -0
  39. package/dist/skills/defaults/backend-development/python-packaging.md +887 -0
  40. package/dist/skills/defaults/backend-development/python-performance-optimization.md +874 -0
  41. package/dist/skills/defaults/backend-development/python-project-structure.md +252 -0
  42. package/dist/skills/defaults/backend-development/python-resilience.md +376 -0
  43. package/dist/skills/defaults/backend-development/python-resource-management.md +421 -0
  44. package/dist/skills/defaults/backend-development/python-type-safety.md +428 -0
  45. package/dist/skills/defaults/backend-development/sql-optimization-patterns.md +509 -0
  46. package/dist/skills/defaults/backend-development/stripe-integration/SKILL.md +522 -0
  47. package/dist/skills/defaults/backend-development/turborepo-caching.md +376 -0
  48. package/dist/skills/defaults/blockchain/defi-protocol-templates.md +430 -0
  49. package/dist/skills/defaults/blockchain/nft-standards.md +364 -0
  50. package/dist/skills/defaults/blockchain/solidity-security.md +514 -0
  51. package/dist/skills/defaults/blockchain/web3-testing.md +360 -0
  52. package/dist/skills/defaults/business/competitive-landscape/SKILL.md +527 -0
  53. package/dist/skills/defaults/business/market-sizing-analysis/SKILL.md +451 -0
  54. package/dist/skills/defaults/business/startup-financial-modeling/SKILL.md +494 -0
  55. package/dist/skills/defaults/business/startup-metrics-framework/SKILL.md +564 -0
  56. package/dist/skills/defaults/business/team-composition-analysis.md +437 -0
  57. package/dist/skills/defaults/compliance/employment-contract-templates/SKILL.md +527 -0
  58. package/dist/skills/defaults/compliance/gdpr-data-handling/SKILL.md +630 -0
  59. package/dist/skills/defaults/data-engineering/airflow-dag-patterns.md +436 -0
  60. package/dist/skills/defaults/data-engineering/airflow.md +519 -0
  61. package/dist/skills/defaults/data-engineering/data-quality.md +583 -0
  62. package/dist/skills/defaults/data-engineering/dbt-transformation-patterns.md +482 -0
  63. package/dist/skills/defaults/data-engineering/dbt.md +556 -0
  64. package/dist/skills/defaults/data-engineering/ml-pipeline-workflow/SKILL.md +247 -0
  65. package/dist/skills/defaults/data-engineering/spark-optimization.md +348 -0
  66. package/dist/skills/defaults/data-engineering/spark.md +411 -0
  67. package/dist/skills/defaults/database/postgresql.md +202 -0
  68. package/dist/skills/defaults/debugging/systematic-debugging.md +249 -0
  69. package/dist/skills/defaults/devops/architecture-decision-records.md +448 -0
  70. package/dist/skills/defaults/devops/changelog-automation.md +580 -0
  71. package/dist/skills/defaults/devops/cicd.md +314 -0
  72. package/dist/skills/defaults/devops/cloud.md +263 -0
  73. package/dist/skills/defaults/devops/code-review-excellence.md +299 -0
  74. package/dist/skills/defaults/devops/cost-optimization.md +295 -0
  75. package/dist/skills/defaults/devops/deployment-pipeline-design.md +356 -0
  76. package/dist/skills/defaults/devops/docker.md +281 -0
  77. package/dist/skills/defaults/devops/git-workflows.md +205 -0
  78. package/dist/skills/defaults/devops/github-actions.md +311 -0
  79. package/dist/skills/defaults/devops/gitlab-ci-patterns.md +266 -0
  80. package/dist/skills/defaults/devops/hybrid-cloud-networking.md +241 -0
  81. package/dist/skills/defaults/devops/istio-traffic-management.md +327 -0
  82. package/dist/skills/defaults/devops/kubernetes.md +339 -0
  83. package/dist/skills/defaults/devops/linkerd-patterns.md +311 -0
  84. package/dist/skills/defaults/devops/multi-cloud-architecture.md +181 -0
  85. package/dist/skills/defaults/devops/observability.md +243 -0
  86. package/dist/skills/defaults/devops/openapi-spec-generation.md +1024 -0
  87. package/dist/skills/defaults/devops/postmortem-writing.md +396 -0
  88. package/dist/skills/defaults/devops/prometheus-configuration.md +265 -0
  89. package/dist/skills/defaults/devops/secrets-management.md +341 -0
  90. package/dist/skills/defaults/devops/service-mesh-observability.md +385 -0
  91. package/dist/skills/defaults/devops/terraform-module-library.md +244 -0
  92. package/dist/skills/defaults/finance/backtesting-frameworks/SKILL.md +663 -0
  93. package/dist/skills/defaults/finance/risk-metrics-calculation/SKILL.md +557 -0
  94. package/dist/skills/defaults/frontend/accessibility-compliance.md +420 -0
  95. package/dist/skills/defaults/frontend/design-system-patterns.md +337 -0
  96. package/dist/skills/defaults/frontend/interaction-design.md +327 -0
  97. package/dist/skills/defaults/frontend/javascript.md +311 -0
  98. package/dist/skills/defaults/frontend/modern-javascript-patterns.md +927 -0
  99. package/dist/skills/defaults/frontend/react-native-design.md +440 -0
  100. package/dist/skills/defaults/frontend/react.md +345 -0
  101. package/dist/skills/defaults/frontend/responsive-design.md +472 -0
  102. package/dist/skills/defaults/frontend/tailwind-design-system.md +337 -0
  103. package/dist/skills/defaults/frontend/typescript-advanced-types.md +724 -0
  104. package/dist/skills/defaults/frontend/typescript.md +334 -0
  105. package/dist/skills/defaults/frontend/visual-design-foundations.md +326 -0
  106. package/dist/skills/defaults/frontend/web-component-design.md +279 -0
  107. package/dist/skills/defaults/game-development/godot-gdscript-patterns.md +188 -0
  108. package/dist/skills/defaults/game-development/unity-ecs-patterns.md +594 -0
  109. package/dist/skills/defaults/kubernetes/gitops-workflow.md +285 -0
  110. package/dist/skills/defaults/kubernetes/gitops.md +280 -0
  111. package/dist/skills/defaults/kubernetes/helm-chart-scaffolding.md +553 -0
  112. package/dist/skills/defaults/kubernetes/helm.md +343 -0
  113. package/dist/skills/defaults/kubernetes/k8s-manifest-generator.md +501 -0
  114. package/dist/skills/defaults/kubernetes/k8s-security-policies.md +342 -0
  115. package/dist/skills/defaults/kubernetes/manifests.md +330 -0
  116. package/dist/skills/defaults/kubernetes/security.md +337 -0
  117. package/dist/skills/defaults/llm-application/embedding-strategies.md +608 -0
  118. package/dist/skills/defaults/llm-application/hybrid-search-implementation.md +570 -0
  119. package/dist/skills/defaults/llm-application/hybrid-search.md +570 -0
  120. package/dist/skills/defaults/llm-application/langchain-architecture.md +666 -0
  121. package/dist/skills/defaults/llm-application/langchain.md +259 -0
  122. package/dist/skills/defaults/llm-application/llm-evaluation.md +695 -0
  123. package/dist/skills/defaults/llm-application/prompt-engineering-patterns.md +449 -0
  124. package/dist/skills/defaults/llm-application/prompt-engineering.md +219 -0
  125. package/dist/skills/defaults/llm-application/rag-implementation.md +434 -0
  126. package/dist/skills/defaults/llm-application/similarity-search-patterns.md +560 -0
  127. package/dist/skills/defaults/llm-application/similarity-search.md +560 -0
  128. package/dist/skills/defaults/llm-application/vector-index-tuning.md +523 -0
  129. package/dist/skills/defaults/mobile/mobile-android-design.md +440 -0
  130. package/dist/skills/defaults/mobile/mobile-ios-design.md +266 -0
  131. package/dist/skills/defaults/monitoring/distributed-tracing.md +436 -0
  132. package/dist/skills/defaults/monitoring/grafana-dashboards.md +370 -0
  133. package/dist/skills/defaults/monitoring/prometheus-configuration.md +379 -0
  134. package/dist/skills/defaults/monitoring/slo-implementation.md +323 -0
  135. package/dist/skills/defaults/refactoring/code-refactoring.md +349 -0
  136. package/dist/skills/defaults/security/anti-reversing-techniques/SKILL.md +559 -0
  137. package/dist/skills/defaults/security/auditor.md +168 -0
  138. package/dist/skills/defaults/security/binary-analysis-patterns/SKILL.md +438 -0
  139. package/dist/skills/defaults/security/memory-forensics/SKILL.md +483 -0
  140. package/dist/skills/defaults/security/mtls-configuration.md +349 -0
  141. package/dist/skills/defaults/security/protocol-reverse-engineering/SKILL.md +520 -0
  142. package/dist/skills/defaults/security/sast-configuration.md +182 -0
  143. package/dist/skills/defaults/security/security.md +313 -0
  144. package/dist/skills/defaults/security/stride-analysis.md +273 -0
  145. package/dist/skills/defaults/security/threat-mitigation-mapping.md +290 -0
  146. package/dist/skills/defaults/systems/bash-defensive-patterns/SKILL.md +539 -0
  147. package/dist/skills/defaults/systems/bats-testing-patterns/SKILL.md +631 -0
  148. package/dist/skills/defaults/systems/go-concurrency-patterns.md +657 -0
  149. package/dist/skills/defaults/systems/memory-safety-patterns.md +605 -0
  150. package/dist/skills/defaults/systems/rust-async-patterns.md +519 -0
  151. package/dist/skills/defaults/systems/shellcheck-configuration/SKILL.md +456 -0
  152. package/dist/skills/defaults/team-collaboration/multi-reviewer-patterns.md +126 -0
  153. package/dist/skills/defaults/team-collaboration/parallel-feature-development.md +151 -0
  154. package/dist/skills/defaults/testing/javascript-testing-patterns.md +1021 -0
  155. package/dist/skills/defaults/testing/python-testing-patterns.md +351 -0
  156. package/dist/skills/defaults/testing/testing.md +332 -0
  157. package/dist/skills/defaults/workflows/context-driven-development.md +384 -0
  158. package/dist/skills/defaults/workflows/track-management.md +592 -0
  159. package/dist/skills/defaults/workflows/workflow-patterns.md +622 -0
  160. package/dist/skills/index.d.ts +11 -0
  161. package/dist/skills/index.d.ts.map +1 -0
  162. package/dist/skills/index.js +129 -0
  163. package/dist/skills/index.js.map +1 -0
  164. package/dist/utils/character.js +4 -4
  165. package/dist/utils/character.js.map +1 -1
  166. package/dist/utils/inputbar.d.ts.map +1 -1
  167. package/dist/utils/inputbar.js +7 -0
  168. package/dist/utils/inputbar.js.map +1 -1
  169. package/package.json +1 -1
@@ -0,0 +1,457 @@
1
+ ---
2
+ name: nx-workspace-patterns
3
+ description: Configure and optimize Nx monorepo workspaces. Use when setting up Nx, configuring project boundaries, optimizing build caching, or implementing affected commands.
4
+ ---
5
+
6
+ # Nx Workspace Patterns
7
+
8
+ Production patterns for Nx monorepo management.
9
+
10
+ ## When to Use This Skill
11
+
12
+ - Setting up new Nx workspaces
13
+ - Configuring project boundaries
14
+ - Optimizing CI with affected commands
15
+ - Implementing remote caching
16
+ - Managing dependencies between projects
17
+ - Migrating to Nx
18
+
19
+ ## Core Concepts
20
+
21
+ ### 1. Nx Architecture
22
+
23
+ ```
24
+ workspace/
25
+ ├── apps/ # Deployable applications
26
+ │ ├── web/
27
+ │ └── api/
28
+ ├── libs/ # Shared libraries
29
+ │ ├── shared/
30
+ │ │ ├── ui/
31
+ │ │ └── utils/
32
+ │ └── feature/
33
+ │ ├── auth/
34
+ │ └── dashboard/
35
+ ├── tools/ # Custom executors/generators
36
+ ├── nx.json # Nx configuration
37
+ └── workspace.json # Project configuration
38
+ ```
39
+
40
+ ### 2. Library Types
41
+
42
+ | Type | Purpose | Example |
43
+ | --------------- | -------------------------------- | ------------------- |
44
+ | **feature** | Smart components, business logic | `feature-auth` |
45
+ | **ui** | Presentational components | `ui-buttons` |
46
+ | **data-access** | API calls, state management | `data-access-users` |
47
+ | **util** | Pure functions, helpers | `util-formatting` |
48
+ | **shell** | App bootstrapping | `shell-web` |
49
+
50
+ ## Templates
51
+
52
+ ### Template 1: nx.json Configuration
53
+
54
+ ```json
55
+ {
56
+ "$schema": "./node_modules/nx/schemas/nx-schema.json",
57
+ "npmScope": "myorg",
58
+ "affected": {
59
+ "defaultBase": "main"
60
+ },
61
+ "tasksRunnerOptions": {
62
+ "default": {
63
+ "runner": "nx/tasks-runners/default",
64
+ "options": {
65
+ "cacheableOperations": [
66
+ "build",
67
+ "lint",
68
+ "test",
69
+ "e2e",
70
+ "build-storybook"
71
+ ],
72
+ "parallel": 3
73
+ }
74
+ }
75
+ },
76
+ "targetDefaults": {
77
+ "build": {
78
+ "dependsOn": ["^build"],
79
+ "inputs": ["production", "^production"],
80
+ "cache": true
81
+ },
82
+ "test": {
83
+ "inputs": ["default", "^production", "{workspaceRoot}/jest.preset.js"],
84
+ "cache": true
85
+ },
86
+ "lint": {
87
+ "inputs": ["default", "{workspaceRoot}/.eslintrc.json"],
88
+ "cache": true
89
+ },
90
+ "e2e": {
91
+ "inputs": ["default", "^production"],
92
+ "cache": true
93
+ }
94
+ },
95
+ "namedInputs": {
96
+ "default": ["{projectRoot}/**/*", "sharedGlobals"],
97
+ "production": [
98
+ "default",
99
+ "!{projectRoot}/**/?(*.)+(spec|test).[jt]s?(x)?(.snap)",
100
+ "!{projectRoot}/tsconfig.spec.json",
101
+ "!{projectRoot}/jest.config.[jt]s",
102
+ "!{projectRoot}/.eslintrc.json"
103
+ ],
104
+ "sharedGlobals": [
105
+ "{workspaceRoot}/babel.config.json",
106
+ "{workspaceRoot}/tsconfig.base.json"
107
+ ]
108
+ },
109
+ "generators": {
110
+ "@nx/react": {
111
+ "application": {
112
+ "style": "css",
113
+ "linter": "eslint",
114
+ "bundler": "webpack"
115
+ },
116
+ "library": {
117
+ "style": "css",
118
+ "linter": "eslint"
119
+ },
120
+ "component": {
121
+ "style": "css"
122
+ }
123
+ }
124
+ }
125
+ }
126
+ ```
127
+
128
+ ### Template 2: Project Configuration
129
+
130
+ ```json
131
+ // apps/web/project.json
132
+ {
133
+ "name": "web",
134
+ "$schema": "../../node_modules/nx/schemas/project-schema.json",
135
+ "sourceRoot": "apps/web/src",
136
+ "projectType": "application",
137
+ "tags": ["type:app", "scope:web"],
138
+ "targets": {
139
+ "build": {
140
+ "executor": "@nx/webpack:webpack",
141
+ "outputs": ["{options.outputPath}"],
142
+ "defaultConfiguration": "production",
143
+ "options": {
144
+ "compiler": "babel",
145
+ "outputPath": "dist/apps/web",
146
+ "index": "apps/web/src/index.html",
147
+ "main": "apps/web/src/main.tsx",
148
+ "tsConfig": "apps/web/tsconfig.app.json",
149
+ "assets": ["apps/web/src/assets"],
150
+ "styles": ["apps/web/src/styles.css"]
151
+ },
152
+ "configurations": {
153
+ "development": {
154
+ "extractLicenses": false,
155
+ "optimization": false,
156
+ "sourceMap": true
157
+ },
158
+ "production": {
159
+ "optimization": true,
160
+ "outputHashing": "all",
161
+ "sourceMap": false,
162
+ "extractLicenses": true
163
+ }
164
+ }
165
+ },
166
+ "serve": {
167
+ "executor": "@nx/webpack:dev-server",
168
+ "defaultConfiguration": "development",
169
+ "options": {
170
+ "buildTarget": "web:build"
171
+ },
172
+ "configurations": {
173
+ "development": {
174
+ "buildTarget": "web:build:development"
175
+ },
176
+ "production": {
177
+ "buildTarget": "web:build:production"
178
+ }
179
+ }
180
+ },
181
+ "test": {
182
+ "executor": "@nx/jest:jest",
183
+ "outputs": ["{workspaceRoot}/coverage/{projectRoot}"],
184
+ "options": {
185
+ "jestConfig": "apps/web/jest.config.ts",
186
+ "passWithNoTests": true
187
+ }
188
+ },
189
+ "lint": {
190
+ "executor": "@nx/eslint:lint",
191
+ "outputs": ["{options.outputFile}"],
192
+ "options": {
193
+ "lintFilePatterns": ["apps/web/**/*.{ts,tsx,js,jsx}"]
194
+ }
195
+ }
196
+ }
197
+ }
198
+ ```
199
+
200
+ ### Template 3: Module Boundary Rules
201
+
202
+ ```json
203
+ // .eslintrc.json
204
+ {
205
+ "root": true,
206
+ "ignorePatterns": ["**/*"],
207
+ "plugins": ["@nx"],
208
+ "overrides": [
209
+ {
210
+ "files": ["*.ts", "*.tsx", "*.js", "*.jsx"],
211
+ "rules": {
212
+ "@nx/enforce-module-boundaries": [
213
+ "error",
214
+ {
215
+ "enforceBuildableLibDependency": true,
216
+ "allow": [],
217
+ "depConstraints": [
218
+ {
219
+ "sourceTag": "type:app",
220
+ "onlyDependOnLibsWithTags": [
221
+ "type:feature",
222
+ "type:ui",
223
+ "type:data-access",
224
+ "type:util"
225
+ ]
226
+ },
227
+ {
228
+ "sourceTag": "type:feature",
229
+ "onlyDependOnLibsWithTags": [
230
+ "type:ui",
231
+ "type:data-access",
232
+ "type:util"
233
+ ]
234
+ },
235
+ {
236
+ "sourceTag": "type:ui",
237
+ "onlyDependOnLibsWithTags": ["type:ui", "type:util"]
238
+ },
239
+ {
240
+ "sourceTag": "type:data-access",
241
+ "onlyDependOnLibsWithTags": ["type:data-access", "type:util"]
242
+ },
243
+ {
244
+ "sourceTag": "type:util",
245
+ "onlyDependOnLibsWithTags": ["type:util"]
246
+ },
247
+ {
248
+ "sourceTag": "scope:web",
249
+ "onlyDependOnLibsWithTags": ["scope:web", "scope:shared"]
250
+ },
251
+ {
252
+ "sourceTag": "scope:api",
253
+ "onlyDependOnLibsWithTags": ["scope:api", "scope:shared"]
254
+ },
255
+ {
256
+ "sourceTag": "scope:shared",
257
+ "onlyDependOnLibsWithTags": ["scope:shared"]
258
+ }
259
+ ]
260
+ }
261
+ ]
262
+ }
263
+ }
264
+ ]
265
+ }
266
+ ```
267
+
268
+ ### Template 4: Custom Generator
269
+
270
+ ```typescript
271
+ // tools/generators/feature-lib/index.ts
272
+ import {
273
+ Tree,
274
+ formatFiles,
275
+ generateFiles,
276
+ joinPathFragments,
277
+ names,
278
+ readProjectConfiguration,
279
+ } from "@nx/devkit";
280
+ import { libraryGenerator } from "@nx/react";
281
+
282
+ interface FeatureLibraryGeneratorSchema {
283
+ name: string;
284
+ scope: string;
285
+ directory?: string;
286
+ }
287
+
288
+ export default async function featureLibraryGenerator(
289
+ tree: Tree,
290
+ options: FeatureLibraryGeneratorSchema,
291
+ ) {
292
+ const { name, scope, directory } = options;
293
+ const projectDirectory = directory
294
+ ? `${directory}/${name}`
295
+ : `libs/${scope}/feature-${name}`;
296
+
297
+ // Generate base library
298
+ await libraryGenerator(tree, {
299
+ name: `feature-${name}`,
300
+ directory: projectDirectory,
301
+ tags: `type:feature,scope:${scope}`,
302
+ style: "css",
303
+ skipTsConfig: false,
304
+ skipFormat: true,
305
+ unitTestRunner: "jest",
306
+ linter: "eslint",
307
+ });
308
+
309
+ // Add custom files
310
+ const projectConfig = readProjectConfiguration(
311
+ tree,
312
+ `${scope}-feature-${name}`,
313
+ );
314
+ const projectNames = names(name);
315
+
316
+ generateFiles(
317
+ tree,
318
+ joinPathFragments(__dirname, "files"),
319
+ projectConfig.sourceRoot,
320
+ {
321
+ ...projectNames,
322
+ scope,
323
+ tmpl: "",
324
+ },
325
+ );
326
+
327
+ await formatFiles(tree);
328
+ }
329
+ ```
330
+
331
+ ### Template 5: CI Configuration with Affected
332
+
333
+ ```yaml
334
+ # .github/workflows/ci.yml
335
+ name: CI
336
+
337
+ on:
338
+ push:
339
+ branches: [main]
340
+ pull_request:
341
+ branches: [main]
342
+
343
+ env:
344
+ NX_CLOUD_ACCESS_TOKEN: ${{ secrets.NX_CLOUD_ACCESS_TOKEN }}
345
+
346
+ jobs:
347
+ main:
348
+ runs-on: ubuntu-latest
349
+ steps:
350
+ - uses: actions/checkout@v4
351
+ with:
352
+ fetch-depth: 0
353
+
354
+ - uses: actions/setup-node@v4
355
+ with:
356
+ node-version: 20
357
+ cache: "npm"
358
+
359
+ - name: Install dependencies
360
+ run: npm ci
361
+
362
+ - name: Derive SHAs for affected commands
363
+ uses: nrwl/nx-set-shas@v4
364
+
365
+ - name: Run affected lint
366
+ run: npx nx affected -t lint --parallel=3
367
+
368
+ - name: Run affected test
369
+ run: npx nx affected -t test --parallel=3 --configuration=ci
370
+
371
+ - name: Run affected build
372
+ run: npx nx affected -t build --parallel=3
373
+
374
+ - name: Run affected e2e
375
+ run: npx nx affected -t e2e --parallel=1
376
+ ```
377
+
378
+ ### Template 6: Remote Caching Setup
379
+
380
+ ```typescript
381
+ // nx.json with Nx Cloud
382
+ {
383
+ "tasksRunnerOptions": {
384
+ "default": {
385
+ "runner": "nx-cloud",
386
+ "options": {
387
+ "cacheableOperations": ["build", "lint", "test", "e2e"],
388
+ "accessToken": "your-nx-cloud-token",
389
+ "parallel": 3,
390
+ "cacheDirectory": ".nx/cache"
391
+ }
392
+ }
393
+ },
394
+ "nxCloudAccessToken": "your-nx-cloud-token"
395
+ }
396
+
397
+ // Self-hosted cache with S3
398
+ {
399
+ "tasksRunnerOptions": {
400
+ "default": {
401
+ "runner": "@nx-aws-cache/nx-aws-cache",
402
+ "options": {
403
+ "cacheableOperations": ["build", "lint", "test"],
404
+ "awsRegion": "us-east-1",
405
+ "awsBucket": "my-nx-cache-bucket",
406
+ "awsProfile": "default"
407
+ }
408
+ }
409
+ }
410
+ }
411
+ ```
412
+
413
+ ## Common Commands
414
+
415
+ ```bash
416
+ # Generate new library
417
+ nx g @nx/react:lib feature-auth --directory=libs/web --tags=type:feature,scope:web
418
+
419
+ # Run affected tests
420
+ nx affected -t test --base=main
421
+
422
+ # View dependency graph
423
+ nx graph
424
+
425
+ # Run specific project
426
+ nx build web --configuration=production
427
+
428
+ # Reset cache
429
+ nx reset
430
+
431
+ # Run migrations
432
+ nx migrate latest
433
+ nx migrate --run-migrations
434
+ ```
435
+
436
+ ## Best Practices
437
+
438
+ ### Do's
439
+
440
+ - **Use tags consistently** - Enforce with module boundaries
441
+ - **Enable caching early** - Significant CI savings
442
+ - **Keep libs focused** - Single responsibility
443
+ - **Use generators** - Ensure consistency
444
+ - **Document boundaries** - Help new developers
445
+
446
+ ### Don'ts
447
+
448
+ - **Don't create circular deps** - Graph should be acyclic
449
+ - **Don't skip affected** - Test only what changed
450
+ - **Don't ignore boundaries** - Tech debt accumulates
451
+ - **Don't over-granularize** - Balance lib count
452
+
453
+ ## Resources
454
+
455
+ - [Nx Documentation](https://nx.dev/getting-started/intro)
456
+ - [Module Boundaries](https://nx.dev/core-features/enforce-module-boundaries)
457
+ - [Nx Cloud](https://nx.app/)