agentic-team-templates 0.3.0

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 (103) hide show
  1. package/README.md +280 -0
  2. package/bin/cli.js +5 -0
  3. package/package.json +47 -0
  4. package/src/index.js +521 -0
  5. package/templates/_shared/code-quality.md +162 -0
  6. package/templates/_shared/communication.md +114 -0
  7. package/templates/_shared/core-principles.md +62 -0
  8. package/templates/_shared/git-workflow.md +165 -0
  9. package/templates/_shared/security-fundamentals.md +173 -0
  10. package/templates/blockchain/.cursorrules/defi-patterns.md +520 -0
  11. package/templates/blockchain/.cursorrules/gas-optimization.md +339 -0
  12. package/templates/blockchain/.cursorrules/overview.md +130 -0
  13. package/templates/blockchain/.cursorrules/security.md +318 -0
  14. package/templates/blockchain/.cursorrules/smart-contracts.md +364 -0
  15. package/templates/blockchain/.cursorrules/testing.md +415 -0
  16. package/templates/blockchain/.cursorrules/web3-integration.md +538 -0
  17. package/templates/blockchain/CLAUDE.md +389 -0
  18. package/templates/cli-tools/.cursorrules/architecture.md +412 -0
  19. package/templates/cli-tools/.cursorrules/arguments.md +406 -0
  20. package/templates/cli-tools/.cursorrules/distribution.md +546 -0
  21. package/templates/cli-tools/.cursorrules/error-handling.md +455 -0
  22. package/templates/cli-tools/.cursorrules/overview.md +136 -0
  23. package/templates/cli-tools/.cursorrules/testing.md +537 -0
  24. package/templates/cli-tools/.cursorrules/user-experience.md +545 -0
  25. package/templates/cli-tools/CLAUDE.md +356 -0
  26. package/templates/data-engineering/.cursorrules/data-modeling.md +367 -0
  27. package/templates/data-engineering/.cursorrules/data-quality.md +455 -0
  28. package/templates/data-engineering/.cursorrules/overview.md +85 -0
  29. package/templates/data-engineering/.cursorrules/performance.md +339 -0
  30. package/templates/data-engineering/.cursorrules/pipeline-design.md +280 -0
  31. package/templates/data-engineering/.cursorrules/security.md +460 -0
  32. package/templates/data-engineering/.cursorrules/testing.md +452 -0
  33. package/templates/data-engineering/CLAUDE.md +974 -0
  34. package/templates/devops-sre/.cursorrules/capacity-planning.md +653 -0
  35. package/templates/devops-sre/.cursorrules/change-management.md +584 -0
  36. package/templates/devops-sre/.cursorrules/chaos-engineering.md +651 -0
  37. package/templates/devops-sre/.cursorrules/disaster-recovery.md +641 -0
  38. package/templates/devops-sre/.cursorrules/incident-management.md +565 -0
  39. package/templates/devops-sre/.cursorrules/observability.md +714 -0
  40. package/templates/devops-sre/.cursorrules/overview.md +230 -0
  41. package/templates/devops-sre/.cursorrules/postmortems.md +588 -0
  42. package/templates/devops-sre/.cursorrules/runbooks.md +760 -0
  43. package/templates/devops-sre/.cursorrules/slo-sli.md +617 -0
  44. package/templates/devops-sre/.cursorrules/toil-reduction.md +567 -0
  45. package/templates/devops-sre/CLAUDE.md +1007 -0
  46. package/templates/documentation/.cursorrules/adr.md +277 -0
  47. package/templates/documentation/.cursorrules/api-documentation.md +411 -0
  48. package/templates/documentation/.cursorrules/code-comments.md +253 -0
  49. package/templates/documentation/.cursorrules/maintenance.md +260 -0
  50. package/templates/documentation/.cursorrules/overview.md +82 -0
  51. package/templates/documentation/.cursorrules/readme-standards.md +306 -0
  52. package/templates/documentation/CLAUDE.md +120 -0
  53. package/templates/fullstack/.cursorrules/api-contracts.md +331 -0
  54. package/templates/fullstack/.cursorrules/architecture.md +298 -0
  55. package/templates/fullstack/.cursorrules/overview.md +109 -0
  56. package/templates/fullstack/.cursorrules/shared-types.md +348 -0
  57. package/templates/fullstack/.cursorrules/testing.md +386 -0
  58. package/templates/fullstack/CLAUDE.md +349 -0
  59. package/templates/ml-ai/.cursorrules/data-engineering.md +483 -0
  60. package/templates/ml-ai/.cursorrules/deployment.md +601 -0
  61. package/templates/ml-ai/.cursorrules/model-development.md +538 -0
  62. package/templates/ml-ai/.cursorrules/monitoring.md +658 -0
  63. package/templates/ml-ai/.cursorrules/overview.md +131 -0
  64. package/templates/ml-ai/.cursorrules/security.md +637 -0
  65. package/templates/ml-ai/.cursorrules/testing.md +678 -0
  66. package/templates/ml-ai/CLAUDE.md +1136 -0
  67. package/templates/mobile/.cursorrules/navigation.md +246 -0
  68. package/templates/mobile/.cursorrules/offline-first.md +302 -0
  69. package/templates/mobile/.cursorrules/overview.md +71 -0
  70. package/templates/mobile/.cursorrules/performance.md +345 -0
  71. package/templates/mobile/.cursorrules/testing.md +339 -0
  72. package/templates/mobile/CLAUDE.md +233 -0
  73. package/templates/platform-engineering/.cursorrules/ci-cd.md +778 -0
  74. package/templates/platform-engineering/.cursorrules/developer-experience.md +632 -0
  75. package/templates/platform-engineering/.cursorrules/infrastructure-as-code.md +600 -0
  76. package/templates/platform-engineering/.cursorrules/kubernetes.md +710 -0
  77. package/templates/platform-engineering/.cursorrules/observability.md +747 -0
  78. package/templates/platform-engineering/.cursorrules/overview.md +215 -0
  79. package/templates/platform-engineering/.cursorrules/security.md +855 -0
  80. package/templates/platform-engineering/.cursorrules/testing.md +878 -0
  81. package/templates/platform-engineering/CLAUDE.md +850 -0
  82. package/templates/utility-agent/.cursorrules/action-control.md +284 -0
  83. package/templates/utility-agent/.cursorrules/context-management.md +186 -0
  84. package/templates/utility-agent/.cursorrules/hallucination-prevention.md +253 -0
  85. package/templates/utility-agent/.cursorrules/overview.md +78 -0
  86. package/templates/utility-agent/.cursorrules/token-optimization.md +369 -0
  87. package/templates/utility-agent/CLAUDE.md +513 -0
  88. package/templates/web-backend/.cursorrules/api-design.md +255 -0
  89. package/templates/web-backend/.cursorrules/authentication.md +309 -0
  90. package/templates/web-backend/.cursorrules/database-patterns.md +298 -0
  91. package/templates/web-backend/.cursorrules/error-handling.md +366 -0
  92. package/templates/web-backend/.cursorrules/overview.md +69 -0
  93. package/templates/web-backend/.cursorrules/security.md +358 -0
  94. package/templates/web-backend/.cursorrules/testing.md +395 -0
  95. package/templates/web-backend/CLAUDE.md +366 -0
  96. package/templates/web-frontend/.cursorrules/accessibility.md +296 -0
  97. package/templates/web-frontend/.cursorrules/component-patterns.md +204 -0
  98. package/templates/web-frontend/.cursorrules/overview.md +72 -0
  99. package/templates/web-frontend/.cursorrules/performance.md +325 -0
  100. package/templates/web-frontend/.cursorrules/state-management.md +227 -0
  101. package/templates/web-frontend/.cursorrules/styling.md +271 -0
  102. package/templates/web-frontend/.cursorrules/testing.md +311 -0
  103. package/templates/web-frontend/CLAUDE.md +399 -0
@@ -0,0 +1,632 @@
1
+ # Developer Experience
2
+
3
+ Guidelines for building internal developer platforms that developers love to use.
4
+
5
+ ## Core Principles
6
+
7
+ 1. **Developers Are Your Customers** - Understand their needs, measure satisfaction
8
+ 2. **Golden Paths, Not Golden Cages** - Opinionated defaults with escape hatches
9
+ 3. **Self-Service First** - Reduce time-to-value without tickets
10
+ 4. **Documentation Is Product** - If it's not documented, it doesn't exist
11
+ 5. **Fast Feedback Loops** - Minutes, not hours or days
12
+
13
+ ## Internal Developer Platform (IDP)
14
+
15
+ ### Platform Capabilities Matrix
16
+
17
+ | Capability | Self-Service Level | Time to Complete |
18
+ |------------|-------------------|------------------|
19
+ | Create new service | Fully automated | < 5 minutes |
20
+ | Deploy to staging | Fully automated | < 10 minutes |
21
+ | Deploy to production | Approval-gated | < 15 minutes |
22
+ | Provision database | Fully automated | < 5 minutes |
23
+ | Request cloud resources | Template-based | < 30 minutes |
24
+ | View service health | Always available | Instant |
25
+ | Access logs/traces | Always available | Instant |
26
+ | Rotate secrets | Self-service | < 2 minutes |
27
+
28
+ ### Service Scaffolding (Backstage)
29
+
30
+ ```yaml
31
+ # backstage/templates/microservice/template.yaml
32
+ apiVersion: scaffolder.backstage.io/v1beta3
33
+ kind: Template
34
+ metadata:
35
+ name: microservice-template
36
+ title: Production Microservice
37
+ description: |
38
+ Create a production-ready microservice with all platform integrations:
39
+ - CI/CD pipeline
40
+ - Kubernetes manifests
41
+ - Observability (metrics, logs, traces)
42
+ - Documentation scaffold
43
+ tags:
44
+ - recommended
45
+ - nodejs
46
+ - python
47
+ - go
48
+ spec:
49
+ owner: platform-team
50
+ type: service
51
+
52
+ parameters:
53
+ - title: Service Information
54
+ required:
55
+ - name
56
+ - owner
57
+ - language
58
+ properties:
59
+ name:
60
+ title: Service Name
61
+ type: string
62
+ description: Lowercase, alphanumeric, hyphens allowed
63
+ pattern: '^[a-z][a-z0-9-]*[a-z0-9]$'
64
+ maxLength: 63
65
+ ui:autofocus: true
66
+
67
+ description:
68
+ title: Description
69
+ type: string
70
+ description: What does this service do?
71
+
72
+ owner:
73
+ title: Owner
74
+ type: string
75
+ description: Team that owns this service
76
+ ui:field: OwnerPicker
77
+ ui:options:
78
+ catalogFilter:
79
+ kind: Group
80
+
81
+ language:
82
+ title: Language
83
+ type: string
84
+ enum:
85
+ - nodejs
86
+ - python
87
+ - go
88
+ enumNames:
89
+ - Node.js (TypeScript)
90
+ - Python
91
+ - Go
92
+
93
+ - title: Infrastructure
94
+ properties:
95
+ needsDatabase:
96
+ title: Needs Database
97
+ type: boolean
98
+ default: false
99
+
100
+ databaseType:
101
+ title: Database Type
102
+ type: string
103
+ enum: [postgresql, mysql]
104
+ ui:widget: select
105
+ dependencies:
106
+ needsDatabase:
107
+ oneOf:
108
+ - const: true
109
+
110
+ needsCache:
111
+ title: Needs Cache
112
+ type: boolean
113
+ default: false
114
+
115
+ needsQueue:
116
+ title: Needs Message Queue
117
+ type: boolean
118
+ default: false
119
+
120
+ - title: Repository
121
+ required:
122
+ - repoUrl
123
+ properties:
124
+ repoUrl:
125
+ title: Repository Location
126
+ type: string
127
+ ui:field: RepoUrlPicker
128
+ ui:options:
129
+ allowedHosts:
130
+ - github.com
131
+ allowedOwners:
132
+ - company
133
+
134
+ steps:
135
+ - id: fetch-base
136
+ name: Fetch Base Template
137
+ action: fetch:template
138
+ input:
139
+ url: ./skeleton/${{ parameters.language }}
140
+ values:
141
+ name: ${{ parameters.name }}
142
+ description: ${{ parameters.description }}
143
+ owner: ${{ parameters.owner }}
144
+ needsDatabase: ${{ parameters.needsDatabase }}
145
+ databaseType: ${{ parameters.databaseType }}
146
+ needsCache: ${{ parameters.needsCache }}
147
+ needsQueue: ${{ parameters.needsQueue }}
148
+
149
+ - id: fetch-kubernetes
150
+ name: Fetch Kubernetes Manifests
151
+ action: fetch:template
152
+ input:
153
+ url: ./kubernetes
154
+ targetPath: ./kubernetes
155
+ values:
156
+ name: ${{ parameters.name }}
157
+ owner: ${{ parameters.owner }}
158
+
159
+ - id: fetch-docs
160
+ name: Fetch Documentation Template
161
+ action: fetch:template
162
+ input:
163
+ url: ./docs
164
+ targetPath: ./docs
165
+ values:
166
+ name: ${{ parameters.name }}
167
+ description: ${{ parameters.description }}
168
+
169
+ - id: publish
170
+ name: Publish to GitHub
171
+ action: publish:github
172
+ input:
173
+ allowedHosts: ['github.com']
174
+ repoUrl: ${{ parameters.repoUrl }}
175
+ defaultBranch: main
176
+ protectDefaultBranch: true
177
+ requiredApprovingReviewCount: 1
178
+
179
+ - id: create-argocd-app
180
+ name: Create Argo CD Application
181
+ action: argocd:create-resources
182
+ input:
183
+ appName: ${{ parameters.name }}
184
+ projectName: default
185
+ repoUrl: ${{ steps.publish.output.remoteUrl }}
186
+ path: kubernetes/overlays/dev
187
+
188
+ - id: register
189
+ name: Register in Catalog
190
+ action: catalog:register
191
+ input:
192
+ repoContentsUrl: ${{ steps.publish.output.repoContentsUrl }}
193
+ catalogInfoPath: /catalog-info.yaml
194
+
195
+ output:
196
+ links:
197
+ - title: Repository
198
+ url: ${{ steps.publish.output.remoteUrl }}
199
+ - title: Open in Catalog
200
+ icon: catalog
201
+ entityRef: ${{ steps.register.output.entityRef }}
202
+ - title: View in Argo CD
203
+ url: https://argocd.example.com/applications/${{ parameters.name }}
204
+ ```
205
+
206
+ ### Service Catalog Entry
207
+
208
+ ```yaml
209
+ # catalog-info.yaml
210
+ apiVersion: backstage.io/v1alpha1
211
+ kind: Component
212
+ metadata:
213
+ name: api-server
214
+ description: Main API server for the platform
215
+ annotations:
216
+ github.com/project-slug: company/api-server
217
+ argocd/app-name: api-server
218
+ prometheus.io/alert: api-server
219
+ pagerduty.com/service-id: P123ABC
220
+ sonarqube.org/project-key: company_api-server
221
+ tags:
222
+ - nodejs
223
+ - typescript
224
+ - api
225
+ links:
226
+ - url: https://api.example.com
227
+ title: Production URL
228
+ - url: https://grafana.example.com/d/api-server
229
+ title: Grafana Dashboard
230
+ - url: https://runbooks.example.com/api-server
231
+ title: Runbook
232
+ spec:
233
+ type: service
234
+ lifecycle: production
235
+ owner: platform-team
236
+ system: core-platform
237
+
238
+ dependsOn:
239
+ - resource:default/postgres-main
240
+ - resource:default/redis-cache
241
+
242
+ providesApis:
243
+ - api-server-rest
244
+
245
+ consumesApis:
246
+ - auth-service-api
247
+ - notification-service-api
248
+ ```
249
+
250
+ ## Golden Paths
251
+
252
+ ### What Makes a Good Golden Path
253
+
254
+ 1. **Low Friction** - Works out of the box
255
+ 2. **Well Documented** - Clear guides and examples
256
+ 3. **Best Practices Built-In** - Security, observability, reliability
257
+ 4. **Escape Hatches** - Can deviate when justified
258
+ 5. **Maintained** - Kept up to date with dependencies
259
+
260
+ ### Example Golden Path: New Service
261
+
262
+ ```
263
+ ┌─────────────────────────────────────────────────────────────────┐
264
+ │ 1. Create Service (5 min) │
265
+ │ ┌──────────────────────────────────────────────────────────┐ │
266
+ │ │ Backstage Template → GitHub Repo → Argo CD App │ │
267
+ │ └──────────────────────────────────────────────────────────┘ │
268
+ │ ↓ │
269
+ │ 2. First Deploy to Dev (10 min) │
270
+ │ ┌──────────────────────────────────────────────────────────┐ │
271
+ │ │ git push → CI Pipeline → Container Build → Deploy │ │
272
+ │ └──────────────────────────────────────────────────────────┘ │
273
+ │ ↓ │
274
+ │ 3. Verify (2 min) │
275
+ │ ┌──────────────────────────────────────────────────────────┐ │
276
+ │ │ Health Check → Logs in Grafana → Traces in Tempo │ │
277
+ │ └──────────────────────────────────────────────────────────┘ │
278
+ │ ↓ │
279
+ │ 4. Production Ready (varies) │
280
+ │ ┌──────────────────────────────────────────────────────────┐ │
281
+ │ │ Tests → Security Scan → Staging → Approval → Production │ │
282
+ │ └──────────────────────────────────────────────────────────┘ │
283
+ └─────────────────────────────────────────────────────────────────┘
284
+ ```
285
+
286
+ ### Database Golden Path
287
+
288
+ ```yaml
289
+ # Self-service database provisioning via Crossplane
290
+ apiVersion: database.example.com/v1alpha1
291
+ kind: PostgreSQLInstance
292
+ metadata:
293
+ name: api-server-db
294
+ namespace: production
295
+ spec:
296
+ # Pre-defined size classes
297
+ sizeClass: small # small, medium, large, xlarge
298
+
299
+ # Automatic configuration
300
+ version: "15"
301
+ highAvailability: true
302
+
303
+ # Backup policy (automatic)
304
+ backupRetentionDays: 30
305
+
306
+ # Connection pooling (automatic)
307
+ enablePgBouncer: true
308
+
309
+ # Monitoring (automatic)
310
+ enableMetrics: true
311
+
312
+ # Owner for access
313
+ ownerRef:
314
+ kind: Component
315
+ name: api-server
316
+
317
+ ---
318
+ # Size class definitions (managed by platform team)
319
+ # small: 1 vCPU, 2GB RAM, 20GB storage
320
+ # medium: 2 vCPU, 4GB RAM, 50GB storage
321
+ # large: 4 vCPU, 8GB RAM, 100GB storage
322
+ # xlarge: 8 vCPU, 16GB RAM, 200GB storage
323
+ ```
324
+
325
+ ## Documentation Standards
326
+
327
+ ### Service Documentation Template
328
+
329
+ ```markdown
330
+ # Service Name
331
+
332
+ ## Overview
333
+ Brief description of what this service does and why it exists.
334
+
335
+ ## Quick Start
336
+ \`\`\`bash
337
+ # Clone and run locally
338
+ git clone https://github.com/company/service-name
339
+ cd service-name
340
+ make dev
341
+ \`\`\`
342
+
343
+ ## API Reference
344
+ Link to OpenAPI spec or API documentation.
345
+
346
+ ## Architecture
347
+ High-level architecture diagram and key design decisions.
348
+
349
+ ## Configuration
350
+ | Variable | Description | Default | Required |
351
+ |----------|-------------|---------|----------|
352
+ | DATABASE_URL | PostgreSQL connection string | - | Yes |
353
+ | LOG_LEVEL | Logging verbosity | info | No |
354
+
355
+ ## Runbook
356
+
357
+ ### Common Issues
358
+
359
+ #### Service won't start
360
+ 1. Check database connectivity
361
+ 2. Verify environment variables
362
+ 3. Check resource limits
363
+
364
+ #### High latency
365
+ 1. Check database query times
366
+ 2. Review recent deployments
367
+ 3. Check downstream services
368
+
369
+ ### Escalation
370
+ - **L1**: #team-platform-support
371
+ - **L2**: @platform-oncall
372
+ - **L3**: Page platform-engineering
373
+
374
+ ## SLOs
375
+ | Metric | Target | Current |
376
+ |--------|--------|---------|
377
+ | Availability | 99.9% | [Dashboard](link) |
378
+ | P99 Latency | < 500ms | [Dashboard](link) |
379
+
380
+ ## Links
381
+ - [Grafana Dashboard](link)
382
+ - [Argo CD](link)
383
+ - [PagerDuty](link)
384
+ - [Runbook](link)
385
+ ```
386
+
387
+ ### ADR (Architecture Decision Record) Template
388
+
389
+ ```markdown
390
+ # ADR-001: Use PostgreSQL for Primary Database
391
+
392
+ ## Status
393
+ Accepted
394
+
395
+ ## Context
396
+ We need a primary database for storing application data. Key requirements:
397
+ - ACID compliance
398
+ - Strong consistency
399
+ - JSON support for semi-structured data
400
+ - Mature ecosystem and tooling
401
+
402
+ ## Decision
403
+ We will use PostgreSQL as our primary database.
404
+
405
+ ## Consequences
406
+
407
+ ### Positive
408
+ - Mature, well-understood technology
409
+ - Excellent JSON/JSONB support
410
+ - Strong community and tooling
411
+ - Team has existing expertise
412
+
413
+ ### Negative
414
+ - Horizontal scaling requires additional tooling (Citus, read replicas)
415
+ - Not ideal for time-series data at scale
416
+
417
+ ### Neutral
418
+ - Need to manage connection pooling (PgBouncer)
419
+ - Regular maintenance (vacuuming, index management)
420
+
421
+ ## Alternatives Considered
422
+
423
+ ### MySQL
424
+ - Rejected: Weaker JSON support, less feature-rich
425
+
426
+ ### MongoDB
427
+ - Rejected: Consistency concerns, team lacks expertise
428
+
429
+ ### CockroachDB
430
+ - Rejected: Higher operational complexity for our scale
431
+ ```
432
+
433
+ ## Developer Portal Features
434
+
435
+ ### Self-Service Capabilities
436
+
437
+ ```yaml
438
+ # Backstage plugins for self-service
439
+ plugins:
440
+ # Service scaffolding
441
+ - '@backstage/plugin-scaffolder'
442
+
443
+ # Kubernetes visibility
444
+ - '@backstage/plugin-kubernetes'
445
+
446
+ # CI/CD visibility
447
+ - '@backstage/plugin-github-actions'
448
+ - '@roadiehq/backstage-plugin-argo-cd'
449
+
450
+ # Observability
451
+ - '@backstage/plugin-grafana'
452
+ - '@backstage/plugin-pagerduty'
453
+
454
+ # Documentation
455
+ - '@backstage/plugin-techdocs'
456
+
457
+ # API catalog
458
+ - '@backstage/plugin-api-docs'
459
+
460
+ # Cost visibility
461
+ - '@backstage/plugin-cost-insights'
462
+
463
+ # Security
464
+ - '@backstage/plugin-sonarqube'
465
+ ```
466
+
467
+ ### Developer Metrics Dashboard
468
+
469
+ ```yaml
470
+ # Track platform adoption and satisfaction
471
+ metrics:
472
+ adoption:
473
+ - services_using_golden_path
474
+ - services_with_complete_docs
475
+ - services_with_slos_defined
476
+ - services_with_runbooks
477
+
478
+ efficiency:
479
+ - time_to_first_deploy
480
+ - deployment_frequency
481
+ - lead_time_for_changes
482
+ - mttr (mean time to recovery)
483
+
484
+ satisfaction:
485
+ - developer_nps_score
486
+ - platform_support_ticket_volume
487
+ - time_to_resolve_support_tickets
488
+ ```
489
+
490
+ ## Environment Management
491
+
492
+ ### Preview Environments
493
+
494
+ ```yaml
495
+ # Automatic preview environments for PRs
496
+ apiVersion: argoproj.io/v1alpha1
497
+ kind: ApplicationSet
498
+ metadata:
499
+ name: preview-environments
500
+ spec:
501
+ generators:
502
+ - pullRequest:
503
+ github:
504
+ owner: company
505
+ repo: api-server
506
+ tokenRef:
507
+ secretName: github-token
508
+ key: token
509
+ requeueAfterSeconds: 60
510
+
511
+ template:
512
+ metadata:
513
+ name: 'api-server-pr-{{number}}'
514
+ labels:
515
+ environment: preview
516
+ pr: '{{number}}'
517
+ spec:
518
+ project: preview
519
+ source:
520
+ repoURL: https://github.com/company/api-server.git
521
+ targetRevision: '{{head_sha}}'
522
+ path: kubernetes/overlays/preview
523
+ helm:
524
+ parameters:
525
+ - name: ingress.host
526
+ value: 'pr-{{number}}.preview.example.com'
527
+ destination:
528
+ server: https://kubernetes.default.svc
529
+ namespace: 'preview-{{number}}'
530
+ syncPolicy:
531
+ automated:
532
+ prune: true
533
+ selfHeal: true
534
+ ```
535
+
536
+ ### Environment Promotion
537
+
538
+ ```yaml
539
+ # Promote between environments
540
+ # dev -> staging -> production
541
+ apiVersion: batch/v1
542
+ kind: Job
543
+ metadata:
544
+ name: promote-to-staging
545
+ spec:
546
+ template:
547
+ spec:
548
+ containers:
549
+ - name: promote
550
+ image: company/gitops-promoter:latest
551
+ args:
552
+ - promote
553
+ - --from=dev
554
+ - --to=staging
555
+ - --service=api-server
556
+ - --version=$(cat /workspace/version.txt)
557
+ restartPolicy: Never
558
+ ```
559
+
560
+ ## Support Model
561
+
562
+ ### Tiered Support
563
+
564
+ ```
565
+ ┌─────────────────────────────────────────────────────────────┐
566
+ │ L0: Self-Service │
567
+ │ ├── Documentation │
568
+ │ ├── Runbooks │
569
+ │ ├── FAQs │
570
+ │ └── Automated troubleshooting │
571
+ ├─────────────────────────────────────────────────────────────┤
572
+ │ L1: Community Support │
573
+ │ ├── #platform-help Slack channel │
574
+ │ ├── Office hours (weekly) │
575
+ │ └── Response time: 4 hours │
576
+ ├─────────────────────────────────────────────────────────────┤
577
+ │ L2: Platform Team │
578
+ │ ├── Escalated tickets │
579
+ │ ├── Complex issues │
580
+ │ └── Response time: 1 hour │
581
+ ├─────────────────────────────────────────────────────────────┤
582
+ │ L3: Platform Engineering │
583
+ │ ├── Critical incidents │
584
+ │ ├── Platform bugs │
585
+ │ └── Response time: 15 minutes (PagerDuty) │
586
+ └─────────────────────────────────────────────────────────────┘
587
+ ```
588
+
589
+ ### Feedback Loops
590
+
591
+ ```yaml
592
+ # Quarterly developer surveys
593
+ survey:
594
+ questions:
595
+ - "How easy is it to deploy a new service? (1-10)"
596
+ - "How easy is it to debug production issues? (1-10)"
597
+ - "How well does documentation help you? (1-10)"
598
+ - "What's your biggest pain point?"
599
+ - "What should we build next?"
600
+
601
+ actions:
602
+ - review_results_monthly
603
+ - prioritize_top_pain_points
604
+ - communicate_roadmap_changes
605
+ - follow_up_on_feedback
606
+ ```
607
+
608
+ ## Common Pitfalls
609
+
610
+ ### 1. Building Without User Research
611
+
612
+ ❌ **Wrong**: Build what you think developers need
613
+
614
+ ✅ **Right**: Interview developers, watch them work, measure pain points
615
+
616
+ ### 2. One-Size-Fits-All
617
+
618
+ ❌ **Wrong**: Force every team into identical workflows
619
+
620
+ ✅ **Right**: Provide golden paths with documented escape hatches
621
+
622
+ ### 3. Documentation Rot
623
+
624
+ ❌ **Wrong**: Documentation that's always out of date
625
+
626
+ ✅ **Right**: Docs-as-code, tested documentation, ownership assignment
627
+
628
+ ### 4. Invisible Platform
629
+
630
+ ❌ **Wrong**: Developers don't know what the platform offers
631
+
632
+ ✅ **Right**: Regular communication, demos, office hours, changelog