@plazmodium/odin 0.3.2-beta → 0.3.4-beta

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 (73) hide show
  1. package/README.md +82 -11
  2. package/builtin/ODIN.md +1045 -0
  3. package/builtin/agent-definitions/README.md +170 -0
  4. package/builtin/agent-definitions/_shared-context.md +377 -0
  5. package/builtin/agent-definitions/architect.md +627 -0
  6. package/builtin/agent-definitions/builder.md +716 -0
  7. package/builtin/agent-definitions/discovery.md +293 -0
  8. package/builtin/agent-definitions/documenter.md +238 -0
  9. package/builtin/agent-definitions/guardian.md +1049 -0
  10. package/builtin/agent-definitions/integrator.md +363 -0
  11. package/builtin/agent-definitions/planning.md +236 -0
  12. package/builtin/agent-definitions/product.md +405 -0
  13. package/builtin/agent-definitions/release.md +430 -0
  14. package/builtin/agent-definitions/reviewer.md +447 -0
  15. package/builtin/agent-definitions/watcher.md +402 -0
  16. package/builtin/skills/api/graphql/SKILL.md +548 -0
  17. package/builtin/skills/api/grpc/SKILL.md +554 -0
  18. package/builtin/skills/api/rest-api/SKILL.md +469 -0
  19. package/builtin/skills/api/trpc/SKILL.md +503 -0
  20. package/builtin/skills/architecture/clean-architecture/SKILL.md +141 -0
  21. package/builtin/skills/architecture/domain-driven-design/SKILL.md +129 -0
  22. package/builtin/skills/architecture/event-driven/SKILL.md +145 -0
  23. package/builtin/skills/architecture/microservices/SKILL.md +143 -0
  24. package/builtin/skills/architecture/tla-precheck/SKILL.md +171 -0
  25. package/builtin/skills/backend/golang-gin/SKILL.md +141 -0
  26. package/builtin/skills/backend/nodejs-express/SKILL.md +277 -0
  27. package/builtin/skills/backend/nodejs-fastify/SKILL.md +152 -0
  28. package/builtin/skills/backend/python-django/SKILL.md +128 -0
  29. package/builtin/skills/backend/python-fastapi/SKILL.md +140 -0
  30. package/builtin/skills/database/mongodb/SKILL.md +132 -0
  31. package/builtin/skills/database/postgresql/SKILL.md +120 -0
  32. package/builtin/skills/database/prisma-orm/SKILL.md +366 -0
  33. package/builtin/skills/database/redis/SKILL.md +140 -0
  34. package/builtin/skills/database/supabase/SKILL.md +416 -0
  35. package/builtin/skills/devops/aws/SKILL.md +382 -0
  36. package/builtin/skills/devops/docker/SKILL.md +359 -0
  37. package/builtin/skills/devops/github-actions/SKILL.md +435 -0
  38. package/builtin/skills/devops/kubernetes/SKILL.md +459 -0
  39. package/builtin/skills/devops/terraform/SKILL.md +453 -0
  40. package/builtin/skills/frontend/alpine-dev/SKILL.md +27 -0
  41. package/builtin/skills/frontend/angular-dev/SKILL.md +28 -0
  42. package/builtin/skills/frontend/astro-dev/SKILL.md +28 -0
  43. package/builtin/skills/frontend/htmx-dev/SKILL.md +28 -0
  44. package/builtin/skills/frontend/nextjs-dev/SKILL.md +470 -0
  45. package/builtin/skills/frontend/react-patterns/SKILL.md +166 -0
  46. package/builtin/skills/frontend/svelte-dev/SKILL.md +28 -0
  47. package/builtin/skills/frontend/tailwindcss/SKILL.md +131 -0
  48. package/builtin/skills/frontend/vuejs-dev/SKILL.md +28 -0
  49. package/builtin/skills/generic-dev/SKILL.md +307 -0
  50. package/builtin/skills/testing/cypress/SKILL.md +372 -0
  51. package/builtin/skills/testing/jest/SKILL.md +176 -0
  52. package/builtin/skills/testing/playwright/SKILL.md +341 -0
  53. package/builtin/skills/testing/unit-tests-eval-sdd/SKILL.md +73 -0
  54. package/builtin/skills/testing/unit-tests-sdd/SKILL.md +83 -0
  55. package/builtin/skills/testing/vitest/SKILL.md +249 -0
  56. package/dist/adapters/skills/filesystem.d.ts.map +1 -1
  57. package/dist/adapters/skills/filesystem.js +2 -18
  58. package/dist/adapters/skills/filesystem.js.map +1 -1
  59. package/dist/builtin-assets.d.ts +8 -0
  60. package/dist/builtin-assets.d.ts.map +1 -0
  61. package/dist/builtin-assets.js +90 -0
  62. package/dist/builtin-assets.js.map +1 -0
  63. package/dist/init.js +69 -11
  64. package/dist/init.js.map +1 -1
  65. package/dist/schemas.d.ts +1 -1
  66. package/dist/server.js +1 -1
  67. package/dist/server.js.map +1 -1
  68. package/dist/tools/prepare-phase-context.d.ts.map +1 -1
  69. package/dist/tools/prepare-phase-context.js +5 -0
  70. package/dist/tools/prepare-phase-context.js.map +1 -1
  71. package/dist/types.d.ts +3 -0
  72. package/dist/types.d.ts.map +1 -1
  73. package/package.json +5 -3
@@ -0,0 +1,459 @@
1
+ ---
2
+ name: kubernetes
3
+ description: Kubernetes container orchestration for deploying, scaling, and managing containerized applications
4
+ category: devops
5
+ version: "1.28+"
6
+ depends_on:
7
+ - docker
8
+ compatible_with:
9
+ - terraform
10
+ - github-actions
11
+ - aws
12
+ ---
13
+
14
+ # Kubernetes Container Orchestration
15
+
16
+ ## Instructions
17
+
18
+ 1. **Assess the deployment need**: Single service, microservices, or complex application.
19
+ 2. **Follow Kubernetes best practices**:
20
+ - Use namespaces for isolation
21
+ - Set resource limits
22
+ - Use liveness and readiness probes
23
+ - Implement proper RBAC
24
+ 3. **Provide complete manifests**: Include all necessary resources.
25
+ 4. **Guide on production patterns**: High availability, scaling, monitoring.
26
+
27
+ ## Core Resources
28
+
29
+ ### Deployment
30
+
31
+ ```yaml
32
+ apiVersion: apps/v1
33
+ kind: Deployment
34
+ metadata:
35
+ name: myapp
36
+ namespace: production
37
+ labels:
38
+ app: myapp
39
+ spec:
40
+ replicas: 3
41
+ selector:
42
+ matchLabels:
43
+ app: myapp
44
+ template:
45
+ metadata:
46
+ labels:
47
+ app: myapp
48
+ spec:
49
+ containers:
50
+ - name: myapp
51
+ image: myregistry/myapp:v1.0.0
52
+ ports:
53
+ - containerPort: 3000
54
+ resources:
55
+ requests:
56
+ cpu: "100m"
57
+ memory: "128Mi"
58
+ limits:
59
+ cpu: "500m"
60
+ memory: "512Mi"
61
+ livenessProbe:
62
+ httpGet:
63
+ path: /health
64
+ port: 3000
65
+ initialDelaySeconds: 30
66
+ periodSeconds: 10
67
+ readinessProbe:
68
+ httpGet:
69
+ path: /ready
70
+ port: 3000
71
+ initialDelaySeconds: 5
72
+ periodSeconds: 5
73
+ env:
74
+ - name: NODE_ENV
75
+ value: "production"
76
+ - name: DATABASE_URL
77
+ valueFrom:
78
+ secretKeyRef:
79
+ name: myapp-secrets
80
+ key: database-url
81
+ volumeMounts:
82
+ - name: config
83
+ mountPath: /app/config
84
+ volumes:
85
+ - name: config
86
+ configMap:
87
+ name: myapp-config
88
+ ```
89
+
90
+ ### Service
91
+
92
+ ```yaml
93
+ apiVersion: v1
94
+ kind: Service
95
+ metadata:
96
+ name: myapp
97
+ namespace: production
98
+ spec:
99
+ selector:
100
+ app: myapp
101
+ ports:
102
+ - port: 80
103
+ targetPort: 3000
104
+ type: ClusterIP
105
+ ---
106
+ # External LoadBalancer
107
+ apiVersion: v1
108
+ kind: Service
109
+ metadata:
110
+ name: myapp-external
111
+ spec:
112
+ selector:
113
+ app: myapp
114
+ ports:
115
+ - port: 80
116
+ targetPort: 3000
117
+ type: LoadBalancer
118
+ ```
119
+
120
+ ### Ingress
121
+
122
+ ```yaml
123
+ apiVersion: networking.k8s.io/v1
124
+ kind: Ingress
125
+ metadata:
126
+ name: myapp-ingress
127
+ namespace: production
128
+ annotations:
129
+ nginx.ingress.kubernetes.io/rewrite-target: /
130
+ cert-manager.io/cluster-issuer: letsencrypt-prod
131
+ spec:
132
+ ingressClassName: nginx
133
+ tls:
134
+ - hosts:
135
+ - myapp.example.com
136
+ secretName: myapp-tls
137
+ rules:
138
+ - host: myapp.example.com
139
+ http:
140
+ paths:
141
+ - path: /
142
+ pathType: Prefix
143
+ backend:
144
+ service:
145
+ name: myapp
146
+ port:
147
+ number: 80
148
+ ```
149
+
150
+ ### ConfigMap
151
+
152
+ ```yaml
153
+ apiVersion: v1
154
+ kind: ConfigMap
155
+ metadata:
156
+ name: myapp-config
157
+ namespace: production
158
+ data:
159
+ config.json: |
160
+ {
161
+ "logLevel": "info",
162
+ "features": {
163
+ "newUI": true
164
+ }
165
+ }
166
+ APP_SETTING: "value"
167
+ ```
168
+
169
+ ### Secret
170
+
171
+ ```yaml
172
+ apiVersion: v1
173
+ kind: Secret
174
+ metadata:
175
+ name: myapp-secrets
176
+ namespace: production
177
+ type: Opaque
178
+ stringData:
179
+ database-url: "postgres://user:password@host:5432/db"
180
+ api-key: "secret-api-key"
181
+ ```
182
+
183
+ ## Scaling
184
+
185
+ ### Horizontal Pod Autoscaler
186
+
187
+ ```yaml
188
+ apiVersion: autoscaling/v2
189
+ kind: HorizontalPodAutoscaler
190
+ metadata:
191
+ name: myapp-hpa
192
+ spec:
193
+ scaleTargetRef:
194
+ apiVersion: apps/v1
195
+ kind: Deployment
196
+ name: myapp
197
+ minReplicas: 2
198
+ maxReplicas: 10
199
+ metrics:
200
+ - type: Resource
201
+ resource:
202
+ name: cpu
203
+ target:
204
+ type: Utilization
205
+ averageUtilization: 70
206
+ - type: Resource
207
+ resource:
208
+ name: memory
209
+ target:
210
+ type: Utilization
211
+ averageUtilization: 80
212
+ ```
213
+
214
+ ### Vertical Pod Autoscaler
215
+
216
+ ```yaml
217
+ apiVersion: autoscaling.k8s.io/v1
218
+ kind: VerticalPodAutoscaler
219
+ metadata:
220
+ name: myapp-vpa
221
+ spec:
222
+ targetRef:
223
+ apiVersion: apps/v1
224
+ kind: Deployment
225
+ name: myapp
226
+ updatePolicy:
227
+ updateMode: "Auto"
228
+ resourcePolicy:
229
+ containerPolicies:
230
+ - containerName: myapp
231
+ minAllowed:
232
+ cpu: 100m
233
+ memory: 128Mi
234
+ maxAllowed:
235
+ cpu: 2
236
+ memory: 2Gi
237
+ ```
238
+
239
+ ## Persistent Storage
240
+
241
+ ```yaml
242
+ apiVersion: v1
243
+ kind: PersistentVolumeClaim
244
+ metadata:
245
+ name: myapp-data
246
+ spec:
247
+ accessModes:
248
+ - ReadWriteOnce
249
+ storageClassName: standard
250
+ resources:
251
+ requests:
252
+ storage: 10Gi
253
+ ---
254
+ # In Deployment
255
+ volumes:
256
+ - name: data
257
+ persistentVolumeClaim:
258
+ claimName: myapp-data
259
+ ```
260
+
261
+ ## Jobs and CronJobs
262
+
263
+ ```yaml
264
+ # One-time Job
265
+ apiVersion: batch/v1
266
+ kind: Job
267
+ metadata:
268
+ name: db-migration
269
+ spec:
270
+ template:
271
+ spec:
272
+ containers:
273
+ - name: migrate
274
+ image: myapp:latest
275
+ command: ["npm", "run", "migrate"]
276
+ restartPolicy: Never
277
+ backoffLimit: 3
278
+ ---
279
+ # CronJob
280
+ apiVersion: batch/v1
281
+ kind: CronJob
282
+ metadata:
283
+ name: cleanup
284
+ spec:
285
+ schedule: "0 2 * * *" # 2 AM daily
286
+ jobTemplate:
287
+ spec:
288
+ template:
289
+ spec:
290
+ containers:
291
+ - name: cleanup
292
+ image: myapp:latest
293
+ command: ["npm", "run", "cleanup"]
294
+ restartPolicy: OnFailure
295
+ ```
296
+
297
+ ## Common Commands
298
+
299
+ ```bash
300
+ # Apply manifests
301
+ kubectl apply -f deployment.yaml
302
+ kubectl apply -f ./k8s/ # Apply directory
303
+
304
+ # Get resources
305
+ kubectl get pods -n production
306
+ kubectl get pods -l app=myapp
307
+ kubectl get all -n production
308
+
309
+ # Describe (debugging)
310
+ kubectl describe pod myapp-xxx -n production
311
+ kubectl describe deployment myapp
312
+
313
+ # Logs
314
+ kubectl logs myapp-xxx -n production
315
+ kubectl logs -f myapp-xxx # Follow
316
+ kubectl logs myapp-xxx -c container-name # Specific container
317
+ kubectl logs --previous myapp-xxx # Previous crash
318
+
319
+ # Shell into pod
320
+ kubectl exec -it myapp-xxx -- sh
321
+
322
+ # Port forward
323
+ kubectl port-forward svc/myapp 8080:80
324
+
325
+ # Scale
326
+ kubectl scale deployment myapp --replicas=5
327
+
328
+ # Rollout
329
+ kubectl rollout status deployment/myapp
330
+ kubectl rollout history deployment/myapp
331
+ kubectl rollout undo deployment/myapp
332
+ kubectl rollout restart deployment/myapp
333
+
334
+ # Context
335
+ kubectl config get-contexts
336
+ kubectl config use-context my-cluster
337
+ ```
338
+
339
+ ## Namespaces
340
+
341
+ ```yaml
342
+ apiVersion: v1
343
+ kind: Namespace
344
+ metadata:
345
+ name: production
346
+ labels:
347
+ env: production
348
+ ---
349
+ # Resource quota per namespace
350
+ apiVersion: v1
351
+ kind: ResourceQuota
352
+ metadata:
353
+ name: compute-quota
354
+ namespace: production
355
+ spec:
356
+ hard:
357
+ requests.cpu: "10"
358
+ requests.memory: 20Gi
359
+ limits.cpu: "20"
360
+ limits.memory: 40Gi
361
+ pods: "50"
362
+ ```
363
+
364
+ ## RBAC
365
+
366
+ ```yaml
367
+ # Service Account
368
+ apiVersion: v1
369
+ kind: ServiceAccount
370
+ metadata:
371
+ name: myapp-sa
372
+ namespace: production
373
+ ---
374
+ # Role
375
+ apiVersion: rbac.authorization.k8s.io/v1
376
+ kind: Role
377
+ metadata:
378
+ name: myapp-role
379
+ namespace: production
380
+ rules:
381
+ - apiGroups: [""]
382
+ resources: ["configmaps", "secrets"]
383
+ verbs: ["get", "list"]
384
+ ---
385
+ # RoleBinding
386
+ apiVersion: rbac.authorization.k8s.io/v1
387
+ kind: RoleBinding
388
+ metadata:
389
+ name: myapp-rolebinding
390
+ namespace: production
391
+ subjects:
392
+ - kind: ServiceAccount
393
+ name: myapp-sa
394
+ roleRef:
395
+ kind: Role
396
+ name: myapp-role
397
+ apiGroup: rbac.authorization.k8s.io
398
+ ```
399
+
400
+ ## Best Practices
401
+
402
+ - **Always set resource requests/limits** - Prevents resource starvation
403
+ - **Use namespaces** - Isolate environments and teams
404
+ - **Implement health probes** - Liveness for restart, readiness for traffic
405
+ - **Use ConfigMaps/Secrets** - Don't bake config into images
406
+ - **Set pod disruption budgets** - Maintain availability during updates
407
+ - **Use labels consistently** - app, version, environment, team
408
+ - **Enable RBAC** - Least privilege principle
409
+ - **Use network policies** - Restrict pod-to-pod communication
410
+
411
+ ## Pod Disruption Budget
412
+
413
+ ```yaml
414
+ apiVersion: policy/v1
415
+ kind: PodDisruptionBudget
416
+ metadata:
417
+ name: myapp-pdb
418
+ spec:
419
+ minAvailable: 2 # Or maxUnavailable: 1
420
+ selector:
421
+ matchLabels:
422
+ app: myapp
423
+ ```
424
+
425
+ ## Network Policy
426
+
427
+ ```yaml
428
+ apiVersion: networking.k8s.io/v1
429
+ kind: NetworkPolicy
430
+ metadata:
431
+ name: myapp-network-policy
432
+ spec:
433
+ podSelector:
434
+ matchLabels:
435
+ app: myapp
436
+ policyTypes:
437
+ - Ingress
438
+ - Egress
439
+ ingress:
440
+ - from:
441
+ - podSelector:
442
+ matchLabels:
443
+ app: frontend
444
+ ports:
445
+ - port: 3000
446
+ egress:
447
+ - to:
448
+ - podSelector:
449
+ matchLabels:
450
+ app: database
451
+ ports:
452
+ - port: 5432
453
+ ```
454
+
455
+ ## References
456
+
457
+ - Kubernetes Documentation: https://kubernetes.io/docs/
458
+ - kubectl Cheat Sheet: https://kubernetes.io/docs/reference/kubectl/cheatsheet/
459
+ - Best Practices: https://kubernetes.io/docs/concepts/configuration/overview/