proagents 1.6.20 → 1.6.21

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 (121) hide show
  1. package/.proagents/custom-commands.yaml +0 -1
  2. package/.proagents/docs/command-details.md +1 -2
  3. package/.proagents/getting-started/ai-training-setup.md +0 -1
  4. package/.proagents/performance/README.md +59 -0
  5. package/.proagents/performance/bundle-analysis.md +375 -0
  6. package/.proagents/performance/load-testing.md +563 -0
  7. package/.proagents/performance/runtime-metrics.md +489 -0
  8. package/.proagents/performance/web-vitals.md +425 -0
  9. package/.proagents/proagents.config.yaml +0 -1
  10. package/.proagents/workflow-modes/entry-modes.md +1 -6
  11. package/lib/commands/init.js +57 -8
  12. package/package.json +1 -1
  13. package/.proagents/api-versioning/README.md +0 -257
  14. package/.proagents/api-versioning/changelog-template.md +0 -225
  15. package/.proagents/api-versioning/deprecation-workflow.md +0 -470
  16. package/.proagents/api-versioning/versioning-strategy.md +0 -291
  17. package/.proagents/automation/README.md +0 -38
  18. package/.proagents/automation/ai-behavior-rules.md +0 -339
  19. package/.proagents/automation/ai-prompt-injection.md +0 -331
  20. package/.proagents/automation/auto-decisions.md +0 -535
  21. package/.proagents/automation/decision-defaults.yaml +0 -317
  22. package/.proagents/cache/README.md +0 -110
  23. package/.proagents/cache/analysis-metadata.json +0 -76
  24. package/.proagents/cache/conventions.json +0 -125
  25. package/.proagents/cache/dependencies.json +0 -85
  26. package/.proagents/cache/features.json +0 -115
  27. package/.proagents/cache/patterns.json +0 -105
  28. package/.proagents/cache/schemas/conventions-schema.json +0 -138
  29. package/.proagents/cache/schemas/dependencies-schema.json +0 -95
  30. package/.proagents/cache/schemas/features-schema.json +0 -104
  31. package/.proagents/cache/schemas/metadata-schema.json +0 -83
  32. package/.proagents/cache/schemas/patterns-schema.json +0 -136
  33. package/.proagents/cache/schemas/structure-schema.json +0 -72
  34. package/.proagents/cache/structure.json +0 -109
  35. package/.proagents/checklists/README.md +0 -261
  36. package/.proagents/checklists/code-quality.md +0 -137
  37. package/.proagents/checklists/code-review.md +0 -148
  38. package/.proagents/checklists/pr-checklist.md +0 -78
  39. package/.proagents/checklists/pre-deployment.md +0 -132
  40. package/.proagents/checklists/pre-implementation.md +0 -80
  41. package/.proagents/checklists/testing.md +0 -120
  42. package/.proagents/checkpoints.json +0 -13
  43. package/.proagents/cicd/README.md +0 -338
  44. package/.proagents/cicd/azure-devops.md +0 -267
  45. package/.proagents/cicd/github-actions.md +0 -375
  46. package/.proagents/cicd/gitlab-ci.md +0 -278
  47. package/.proagents/cicd/jenkins.md +0 -317
  48. package/.proagents/collaboration/README.md +0 -143
  49. package/.proagents/collaboration/roles.md +0 -248
  50. package/.proagents/collaboration/sessions.md +0 -390
  51. package/.proagents/collaboration/sync.md +0 -358
  52. package/.proagents/cost/README.md +0 -48
  53. package/.proagents/cost/cost-template.md +0 -283
  54. package/.proagents/cost/estimation-framework.md +0 -287
  55. package/.proagents/database/README.md +0 -72
  56. package/.proagents/database/examples/001-create-users.sql +0 -129
  57. package/.proagents/database/examples/002-add-preferences.sql +0 -94
  58. package/.proagents/database/examples/003-add-index.sql +0 -105
  59. package/.proagents/database/examples/004-rename-column.sql +0 -122
  60. package/.proagents/database/examples/005-add-foreign-key.sql +0 -142
  61. package/.proagents/database/examples/006-data-migration.sql +0 -196
  62. package/.proagents/database/examples/007-drop-column.sql +0 -163
  63. package/.proagents/database/examples/README.md +0 -89
  64. package/.proagents/database/migration-workflow.md +0 -478
  65. package/.proagents/database/rollback-scripts.md +0 -487
  66. package/.proagents/database/safety-checks.md +0 -447
  67. package/.proagents/git/README.md +0 -68
  68. package/.proagents/git/branch-strategy.md +0 -164
  69. package/.proagents/git/commit-conventions.md +0 -241
  70. package/.proagents/git/pr-workflow.md +0 -286
  71. package/.proagents/git/rollback-procedures.md +0 -416
  72. package/.proagents/ide-integration/README.md +0 -124
  73. package/.proagents/ide-integration/cline-config.md +0 -429
  74. package/.proagents/ide-integration/continue-config.md +0 -380
  75. package/.proagents/ide-integration/cursor-rules.md +0 -280
  76. package/.proagents/ide-integration/github-copilot.md +0 -384
  77. package/.proagents/ide-integration/windsurf-rules.md +0 -314
  78. package/.proagents/integrations/README.md +0 -97
  79. package/.proagents/integrations/pm/README.md +0 -344
  80. package/.proagents/learning/README.md +0 -136
  81. package/.proagents/learning/adaptation.md +0 -305
  82. package/.proagents/learning/data-collection.md +0 -283
  83. package/.proagents/learning/implementation-guide.md +0 -865
  84. package/.proagents/learning/reports.md +0 -306
  85. package/.proagents/mcp/README.md +0 -133
  86. package/.proagents/mcp/context-providers.md +0 -442
  87. package/.proagents/mcp/server-config.md +0 -306
  88. package/.proagents/mcp/tools-definition.md +0 -513
  89. package/.proagents/pm-integration/README.md +0 -151
  90. package/.proagents/pm-integration/asana.md +0 -346
  91. package/.proagents/pm-integration/github-issues.md +0 -308
  92. package/.proagents/pm-integration/gitlab-issues.md +0 -482
  93. package/.proagents/pm-integration/jira.md +0 -364
  94. package/.proagents/pm-integration/linear.md +0 -409
  95. package/.proagents/pm-integration/notion.md +0 -275
  96. package/.proagents/pm-integration/sync-config.md +0 -533
  97. package/.proagents/pm-integration/trello.md +0 -159
  98. package/.proagents/rules/README.md +0 -179
  99. package/.proagents/rules/custom-rules-template.yaml +0 -286
  100. package/.proagents/rules/custom-rules.md +0 -754
  101. package/.proagents/rules/validation-rules-template.yaml +0 -517
  102. package/.proagents/runbooks/README.md +0 -219
  103. package/.proagents/runbooks/dependency-vulnerability.md +0 -505
  104. package/.proagents/runbooks/incident-response.md +0 -451
  105. package/.proagents/runbooks/performance-degradation.md +0 -584
  106. package/.proagents/runbooks/production-debugging.md +0 -489
  107. package/.proagents/sprints/README.md +0 -58
  108. package/.proagents/team/README.md +0 -256
  109. package/.proagents/team/code-ownership.md +0 -306
  110. package/.proagents/team/communication-templates.md +0 -441
  111. package/.proagents/team/handoff-protocol.md +0 -380
  112. package/.proagents/team/ide-setup/README.md +0 -103
  113. package/.proagents/team/ide-setup/cursor.md +0 -276
  114. package/.proagents/team/ide-setup/jetbrains.md +0 -330
  115. package/.proagents/team/ide-setup/neovim.md +0 -640
  116. package/.proagents/team/ide-setup/vscode.md +0 -348
  117. package/.proagents/team/onboarding.md +0 -278
  118. package/.proagents/time-tracking.json +0 -19
  119. package/.proagents/troubleshooting/README.md +0 -730
  120. package/.proagents/troubleshooting/ai-issues.md +0 -601
  121. package/.proagents/troubleshooting/workflow-issues.md +0 -571
@@ -1,375 +0,0 @@
1
- # GitHub Actions Templates
2
-
3
- Ready-to-use GitHub Actions workflows for CI/CD.
4
-
5
- ---
6
-
7
- ## Complete CI Workflow
8
-
9
- ```yaml
10
- # .github/workflows/ci.yml
11
- name: CI
12
-
13
- on:
14
- push:
15
- branches: [main, develop]
16
- pull_request:
17
- branches: [main, develop]
18
-
19
- env:
20
- NODE_VERSION: '20'
21
-
22
- jobs:
23
- # Lint and type check
24
- lint:
25
- runs-on: ubuntu-latest
26
- steps:
27
- - uses: actions/checkout@v4
28
-
29
- - name: Setup Node.js
30
- uses: actions/setup-node@v4
31
- with:
32
- node-version: ${{ env.NODE_VERSION }}
33
- cache: 'npm'
34
-
35
- - name: Install dependencies
36
- run: npm ci
37
-
38
- - name: Run ESLint
39
- run: npm run lint
40
-
41
- - name: Run TypeScript check
42
- run: npm run type-check
43
-
44
- # Unit and integration tests
45
- test:
46
- runs-on: ubuntu-latest
47
- steps:
48
- - uses: actions/checkout@v4
49
-
50
- - name: Setup Node.js
51
- uses: actions/setup-node@v4
52
- with:
53
- node-version: ${{ env.NODE_VERSION }}
54
- cache: 'npm'
55
-
56
- - name: Install dependencies
57
- run: npm ci
58
-
59
- - name: Run tests
60
- run: npm test -- --coverage
61
-
62
- - name: Upload coverage
63
- uses: codecov/codecov-action@v3
64
- with:
65
- files: ./coverage/lcov.info
66
- fail_ci_if_error: true
67
-
68
- # Security scanning
69
- security:
70
- runs-on: ubuntu-latest
71
- steps:
72
- - uses: actions/checkout@v4
73
-
74
- - name: Run security audit
75
- run: npm audit --audit-level=high
76
-
77
- - name: Run Snyk scan
78
- uses: snyk/actions/node@master
79
- env:
80
- SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}
81
-
82
- # Build
83
- build:
84
- needs: [lint, test, security]
85
- runs-on: ubuntu-latest
86
- steps:
87
- - uses: actions/checkout@v4
88
-
89
- - name: Setup Node.js
90
- uses: actions/setup-node@v4
91
- with:
92
- node-version: ${{ env.NODE_VERSION }}
93
- cache: 'npm'
94
-
95
- - name: Install dependencies
96
- run: npm ci
97
-
98
- - name: Build
99
- run: npm run build
100
-
101
- - name: Upload build artifacts
102
- uses: actions/upload-artifact@v4
103
- with:
104
- name: build
105
- path: dist/
106
- retention-days: 7
107
- ```
108
-
109
- ---
110
-
111
- ## Deployment Workflow
112
-
113
- ```yaml
114
- # .github/workflows/deploy.yml
115
- name: Deploy
116
-
117
- on:
118
- push:
119
- branches: [main]
120
- workflow_dispatch:
121
- inputs:
122
- environment:
123
- description: 'Environment to deploy'
124
- required: true
125
- default: 'staging'
126
- type: choice
127
- options:
128
- - staging
129
- - production
130
-
131
- jobs:
132
- deploy-staging:
133
- if: github.ref == 'refs/heads/main' || github.event.inputs.environment == 'staging'
134
- runs-on: ubuntu-latest
135
- environment: staging
136
- steps:
137
- - uses: actions/checkout@v4
138
-
139
- - name: Download build
140
- uses: actions/download-artifact@v4
141
- with:
142
- name: build
143
- path: dist/
144
-
145
- - name: Deploy to staging
146
- run: |
147
- # Your deployment command
148
- npx proagents deploy --env staging
149
- env:
150
- DEPLOY_TOKEN: ${{ secrets.STAGING_DEPLOY_TOKEN }}
151
-
152
- - name: Run smoke tests
153
- run: npm run test:smoke -- --env staging
154
-
155
- deploy-production:
156
- if: github.event.inputs.environment == 'production'
157
- needs: [deploy-staging]
158
- runs-on: ubuntu-latest
159
- environment: production
160
- steps:
161
- - uses: actions/checkout@v4
162
-
163
- - name: Download build
164
- uses: actions/download-artifact@v4
165
- with:
166
- name: build
167
- path: dist/
168
-
169
- - name: Deploy to production
170
- run: |
171
- npx proagents deploy --env production
172
- env:
173
- DEPLOY_TOKEN: ${{ secrets.PROD_DEPLOY_TOKEN }}
174
-
175
- - name: Notify deployment
176
- uses: slackapi/slack-github-action@v1
177
- with:
178
- payload: |
179
- {
180
- "text": "✅ Deployed to production: ${{ github.sha }}"
181
- }
182
- env:
183
- SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK }}
184
- ```
185
-
186
- ---
187
-
188
- ## PR Workflow
189
-
190
- ```yaml
191
- # .github/workflows/pr.yml
192
- name: PR Checks
193
-
194
- on:
195
- pull_request:
196
- types: [opened, synchronize, reopened]
197
-
198
- jobs:
199
- pr-checks:
200
- runs-on: ubuntu-latest
201
- steps:
202
- - uses: actions/checkout@v4
203
- with:
204
- fetch-depth: 0
205
-
206
- - name: Setup Node.js
207
- uses: actions/setup-node@v4
208
- with:
209
- node-version: '20'
210
- cache: 'npm'
211
-
212
- - name: Install dependencies
213
- run: npm ci
214
-
215
- - name: Check PR title
216
- uses: amannn/action-semantic-pull-request@v5
217
- env:
218
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
219
-
220
- - name: Run affected tests
221
- run: |
222
- # Only test changed files
223
- npm run test -- --changedSince=origin/main
224
-
225
- - name: Check bundle size
226
- uses: preactjs/compressed-size-action@v2
227
- with:
228
- repo-token: ${{ secrets.GITHUB_TOKEN }}
229
-
230
- - name: Add coverage comment
231
- uses: marocchino/sticky-pull-request-comment@v2
232
- with:
233
- message: |
234
- ## Coverage Report
235
- ${{ steps.coverage.outputs.summary }}
236
- ```
237
-
238
- ---
239
-
240
- ## Scheduled Jobs
241
-
242
- ```yaml
243
- # .github/workflows/scheduled.yml
244
- name: Scheduled Jobs
245
-
246
- on:
247
- schedule:
248
- # Daily at 6 AM UTC
249
- - cron: '0 6 * * *'
250
-
251
- jobs:
252
- dependency-update:
253
- runs-on: ubuntu-latest
254
- steps:
255
- - uses: actions/checkout@v4
256
-
257
- - name: Check for updates
258
- run: npx proagents deps check --ci
259
-
260
- - name: Create PR for updates
261
- if: steps.check.outputs.has_updates == 'true'
262
- run: npx proagents deps update --create-pr
263
-
264
- security-scan:
265
- runs-on: ubuntu-latest
266
- steps:
267
- - uses: actions/checkout@v4
268
-
269
- - name: Run security scan
270
- run: npx proagents security scan --ci
271
-
272
- - name: Create issue on findings
273
- if: failure()
274
- uses: actions/github-script@v7
275
- with:
276
- script: |
277
- github.rest.issues.create({
278
- owner: context.repo.owner,
279
- repo: context.repo.repo,
280
- title: 'Security vulnerabilities detected',
281
- body: 'Please review the security scan results.',
282
- labels: ['security', 'automated']
283
- })
284
- ```
285
-
286
- ---
287
-
288
- ## Reusable Workflows
289
-
290
- ```yaml
291
- # .github/workflows/reusable-test.yml
292
- name: Reusable Test Workflow
293
-
294
- on:
295
- workflow_call:
296
- inputs:
297
- node-version:
298
- required: false
299
- type: string
300
- default: '20'
301
- secrets:
302
- npm-token:
303
- required: false
304
-
305
- jobs:
306
- test:
307
- runs-on: ubuntu-latest
308
- steps:
309
- - uses: actions/checkout@v4
310
-
311
- - name: Setup Node.js
312
- uses: actions/setup-node@v4
313
- with:
314
- node-version: ${{ inputs.node-version }}
315
- cache: 'npm'
316
- registry-url: 'https://registry.npmjs.org'
317
-
318
- - name: Install dependencies
319
- run: npm ci
320
- env:
321
- NODE_AUTH_TOKEN: ${{ secrets.npm-token }}
322
-
323
- - name: Run tests
324
- run: npm test
325
- ```
326
-
327
- ### Using Reusable Workflow
328
-
329
- ```yaml
330
- # .github/workflows/ci.yml
331
- jobs:
332
- test:
333
- uses: ./.github/workflows/reusable-test.yml
334
- with:
335
- node-version: '20'
336
- secrets:
337
- npm-token: ${{ secrets.NPM_TOKEN }}
338
- ```
339
-
340
- ---
341
-
342
- ## Matrix Builds
343
-
344
- ```yaml
345
- jobs:
346
- test:
347
- runs-on: ${{ matrix.os }}
348
- strategy:
349
- matrix:
350
- os: [ubuntu-latest, macos-latest, windows-latest]
351
- node: [18, 20, 22]
352
- fail-fast: false
353
-
354
- steps:
355
- - uses: actions/checkout@v4
356
-
357
- - name: Setup Node.js ${{ matrix.node }}
358
- uses: actions/setup-node@v4
359
- with:
360
- node-version: ${{ matrix.node }}
361
-
362
- - run: npm ci
363
- - run: npm test
364
- ```
365
-
366
- ---
367
-
368
- ## Best Practices
369
-
370
- 1. **Cache Dependencies**: Use `actions/cache` or built-in caching
371
- 2. **Parallel Jobs**: Run independent jobs in parallel
372
- 3. **Fail Fast**: Use `fail-fast: false` for matrix builds
373
- 4. **Environment Protection**: Use environments for deployments
374
- 5. **Reusable Workflows**: DRY with reusable workflows
375
- 6. **Secrets Management**: Never hardcode secrets
@@ -1,278 +0,0 @@
1
- # GitLab CI Templates
2
-
3
- Ready-to-use GitLab CI/CD pipeline configurations.
4
-
5
- ---
6
-
7
- ## Complete Pipeline
8
-
9
- ```yaml
10
- # .gitlab-ci.yml
11
- stages:
12
- - validate
13
- - test
14
- - security
15
- - build
16
- - deploy
17
-
18
- variables:
19
- NODE_VERSION: "20"
20
- npm_config_cache: "$CI_PROJECT_DIR/.npm"
21
-
22
- # Cache configuration
23
- .node_cache: &node_cache
24
- cache:
25
- key:
26
- files:
27
- - package-lock.json
28
- paths:
29
- - .npm/
30
- - node_modules/
31
- policy: pull-push
32
-
33
- # Base template
34
- .node_template: &node_template
35
- image: node:${NODE_VERSION}
36
- <<: *node_cache
37
- before_script:
38
- - npm ci --cache .npm --prefer-offline
39
-
40
- # ============ VALIDATE STAGE ============
41
- lint:
42
- stage: validate
43
- <<: *node_template
44
- script:
45
- - npm run lint
46
- rules:
47
- - if: $CI_PIPELINE_SOURCE == "merge_request_event"
48
- - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
49
-
50
- typecheck:
51
- stage: validate
52
- <<: *node_template
53
- script:
54
- - npm run type-check
55
- rules:
56
- - if: $CI_PIPELINE_SOURCE == "merge_request_event"
57
- - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
58
-
59
- # ============ TEST STAGE ============
60
- unit_tests:
61
- stage: test
62
- <<: *node_template
63
- script:
64
- - npm run test:unit -- --coverage
65
- coverage: '/Lines\s*:\s*(\d+\.?\d*)%/'
66
- artifacts:
67
- reports:
68
- coverage_report:
69
- coverage_format: cobertura
70
- path: coverage/cobertura-coverage.xml
71
- junit: junit.xml
72
- paths:
73
- - coverage/
74
- expire_in: 1 week
75
-
76
- integration_tests:
77
- stage: test
78
- <<: *node_template
79
- services:
80
- - postgres:15
81
- - redis:7
82
- variables:
83
- POSTGRES_DB: test_db
84
- POSTGRES_USER: test
85
- POSTGRES_PASSWORD: test
86
- DATABASE_URL: "postgresql://test:test@postgres:5432/test_db"
87
- REDIS_URL: "redis://redis:6379"
88
- script:
89
- - npm run test:integration
90
-
91
- # ============ SECURITY STAGE ============
92
- dependency_scan:
93
- stage: security
94
- <<: *node_template
95
- script:
96
- - npm audit --audit-level=high
97
- allow_failure: true
98
-
99
- sast:
100
- stage: security
101
- image:
102
- name: "semgrep/semgrep"
103
- entrypoint: [""]
104
- script:
105
- - semgrep --config auto --json -o semgrep-report.json .
106
- artifacts:
107
- reports:
108
- sast: semgrep-report.json
109
-
110
- secret_detection:
111
- stage: security
112
- image: trufflesecurity/trufflehog:latest
113
- script:
114
- - trufflehog git file://. --only-verified
115
-
116
- # ============ BUILD STAGE ============
117
- build:
118
- stage: build
119
- <<: *node_template
120
- script:
121
- - npm run build
122
- artifacts:
123
- paths:
124
- - dist/
125
- expire_in: 1 week
126
- rules:
127
- - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
128
- - if: $CI_PIPELINE_SOURCE == "merge_request_event"
129
-
130
- docker_build:
131
- stage: build
132
- image: docker:24
133
- services:
134
- - docker:24-dind
135
- variables:
136
- DOCKER_TLS_CERTDIR: "/certs"
137
- script:
138
- - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
139
- - docker build -t $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA .
140
- - docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
141
- rules:
142
- - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
143
-
144
- # ============ DEPLOY STAGE ============
145
- deploy_staging:
146
- stage: deploy
147
- image: alpine:latest
148
- environment:
149
- name: staging
150
- url: https://staging.example.com
151
- script:
152
- - apk add --no-cache curl
153
- - curl -X POST $DEPLOY_WEBHOOK_STAGING
154
- rules:
155
- - if: $CI_COMMIT_BRANCH == "develop"
156
-
157
- deploy_production:
158
- stage: deploy
159
- image: alpine:latest
160
- environment:
161
- name: production
162
- url: https://example.com
163
- script:
164
- - apk add --no-cache curl
165
- - curl -X POST $DEPLOY_WEBHOOK_PRODUCTION
166
- rules:
167
- - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
168
- when: manual
169
- needs:
170
- - build
171
- - unit_tests
172
- - integration_tests
173
- ```
174
-
175
- ---
176
-
177
- ## Merge Request Pipeline
178
-
179
- ```yaml
180
- # Optimized for merge requests
181
- workflow:
182
- rules:
183
- - if: $CI_PIPELINE_SOURCE == "merge_request_event"
184
- - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
185
-
186
- mr_checks:
187
- stage: validate
188
- script:
189
- - |
190
- # Check MR title format
191
- if [[ ! "$CI_MERGE_REQUEST_TITLE" =~ ^(feat|fix|docs|style|refactor|test|chore)\(.+\):.+ ]]; then
192
- echo "MR title must follow conventional commits format"
193
- exit 1
194
- fi
195
- rules:
196
- - if: $CI_PIPELINE_SOURCE == "merge_request_event"
197
- ```
198
-
199
- ---
200
-
201
- ## Environment-Specific Variables
202
-
203
- ```yaml
204
- # Per-environment configuration
205
- .staging_vars: &staging_vars
206
- variables:
207
- ENVIRONMENT: staging
208
- API_URL: https://api-staging.example.com
209
-
210
- .production_vars: &production_vars
211
- variables:
212
- ENVIRONMENT: production
213
- API_URL: https://api.example.com
214
-
215
- deploy_staging:
216
- <<: *staging_vars
217
- # ... rest of config
218
-
219
- deploy_production:
220
- <<: *production_vars
221
- # ... rest of config
222
- ```
223
-
224
- ---
225
-
226
- ## Scheduled Pipelines
227
-
228
- ```yaml
229
- # Scheduled jobs
230
- dependency_update:
231
- stage: validate
232
- script:
233
- - npx proagents deps check --ci
234
- - npx proagents deps update --create-mr
235
- rules:
236
- - if: $CI_PIPELINE_SOURCE == "schedule"
237
- variables:
238
- SCHEDULE_TYPE: "dependency_update"
239
-
240
- nightly_security_scan:
241
- stage: security
242
- script:
243
- - npm audit
244
- - npx snyk test
245
- rules:
246
- - if: $CI_PIPELINE_SOURCE == "schedule"
247
- variables:
248
- SCHEDULE_TYPE: "security_scan"
249
- ```
250
-
251
- ---
252
-
253
- ## Include External Templates
254
-
255
- ```yaml
256
- include:
257
- # GitLab templates
258
- - template: Security/SAST.gitlab-ci.yml
259
- - template: Security/Dependency-Scanning.gitlab-ci.yml
260
-
261
- # Local templates
262
- - local: .gitlab/ci/test.yml
263
- - local: .gitlab/ci/deploy.yml
264
-
265
- # Remote templates
266
- - remote: https://example.com/ci-templates/node.yml
267
- ```
268
-
269
- ---
270
-
271
- ## Best Practices
272
-
273
- 1. **Use Caching**: Cache npm dependencies
274
- 2. **Parallel Jobs**: Run independent jobs in parallel
275
- 3. **Use Artifacts**: Pass data between stages
276
- 4. **Environment Protection**: Use protected environments
277
- 5. **Include Templates**: DRY with includes
278
- 6. **Rules Over Only/Except**: Use `rules:` for conditional jobs