autoworkflow 3.1.5 → 3.6.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.
- package/.claude/commands/analyze.md +19 -0
- package/.claude/commands/audit.md +26 -0
- package/.claude/commands/build.md +39 -0
- package/.claude/commands/commit.md +25 -0
- package/.claude/commands/fix.md +23 -0
- package/.claude/commands/plan.md +18 -0
- package/.claude/commands/suggest.md +23 -0
- package/.claude/commands/verify.md +18 -0
- package/.claude/hooks/post-bash-router.sh +20 -0
- package/.claude/hooks/post-commit.sh +140 -0
- package/.claude/hooks/post-edit.sh +190 -17
- package/.claude/hooks/pre-edit.sh +221 -0
- package/.claude/hooks/session-check.sh +90 -0
- package/.claude/settings.json +56 -6
- package/.claude/settings.local.json +5 -1
- package/.claude/skills/actix.md +337 -0
- package/.claude/skills/alembic.md +504 -0
- package/.claude/skills/angular.md +237 -0
- package/.claude/skills/api-design.md +187 -0
- package/.claude/skills/aspnet-core.md +377 -0
- package/.claude/skills/astro.md +245 -0
- package/.claude/skills/auth-clerk.md +327 -0
- package/.claude/skills/auth-firebase.md +367 -0
- package/.claude/skills/auth-nextauth.md +359 -0
- package/.claude/skills/auth-supabase.md +368 -0
- package/.claude/skills/axum.md +386 -0
- package/.claude/skills/blazor.md +456 -0
- package/.claude/skills/chi.md +348 -0
- package/.claude/skills/code-review.md +133 -0
- package/.claude/skills/csharp.md +296 -0
- package/.claude/skills/css-modules.md +325 -0
- package/.claude/skills/cypress.md +343 -0
- package/.claude/skills/debugging.md +133 -0
- package/.claude/skills/diesel.md +392 -0
- package/.claude/skills/django.md +301 -0
- package/.claude/skills/docker.md +319 -0
- package/.claude/skills/doctrine.md +473 -0
- package/.claude/skills/documentation.md +182 -0
- package/.claude/skills/dotnet.md +409 -0
- package/.claude/skills/drizzle.md +293 -0
- package/.claude/skills/echo.md +321 -0
- package/.claude/skills/eloquent.md +256 -0
- package/.claude/skills/emotion.md +426 -0
- package/.claude/skills/entity-framework.md +370 -0
- package/.claude/skills/express.md +316 -0
- package/.claude/skills/fastapi.md +329 -0
- package/.claude/skills/fastify.md +299 -0
- package/.claude/skills/fiber.md +315 -0
- package/.claude/skills/flask.md +322 -0
- package/.claude/skills/gin.md +342 -0
- package/.claude/skills/git.md +116 -0
- package/.claude/skills/github-actions.md +353 -0
- package/.claude/skills/go.md +377 -0
- package/.claude/skills/gorm.md +409 -0
- package/.claude/skills/graphql.md +478 -0
- package/.claude/skills/hibernate.md +379 -0
- package/.claude/skills/hono.md +306 -0
- package/.claude/skills/java.md +400 -0
- package/.claude/skills/jest.md +313 -0
- package/.claude/skills/jpa.md +282 -0
- package/.claude/skills/kotlin.md +347 -0
- package/.claude/skills/kubernetes.md +363 -0
- package/.claude/skills/laravel.md +414 -0
- package/.claude/skills/mcp-browser.md +320 -0
- package/.claude/skills/mcp-database.md +219 -0
- package/.claude/skills/mcp-fetch.md +241 -0
- package/.claude/skills/mcp-filesystem.md +204 -0
- package/.claude/skills/mcp-github.md +217 -0
- package/.claude/skills/mcp-memory.md +240 -0
- package/.claude/skills/mcp-search.md +218 -0
- package/.claude/skills/mcp-slack.md +262 -0
- package/.claude/skills/micronaut.md +388 -0
- package/.claude/skills/mongodb.md +319 -0
- package/.claude/skills/mongoose.md +355 -0
- package/.claude/skills/mysql.md +281 -0
- package/.claude/skills/nestjs.md +335 -0
- package/.claude/skills/nextjs-app-router.md +260 -0
- package/.claude/skills/nextjs-pages.md +172 -0
- package/.claude/skills/nuxt.md +202 -0
- package/.claude/skills/openapi.md +489 -0
- package/.claude/skills/performance.md +199 -0
- package/.claude/skills/php.md +398 -0
- package/.claude/skills/playwright.md +371 -0
- package/.claude/skills/postgresql.md +257 -0
- package/.claude/skills/prisma.md +293 -0
- package/.claude/skills/pydantic.md +304 -0
- package/.claude/skills/pytest.md +313 -0
- package/.claude/skills/python.md +272 -0
- package/.claude/skills/quarkus.md +377 -0
- package/.claude/skills/react.md +230 -0
- package/.claude/skills/redis.md +391 -0
- package/.claude/skills/refactoring.md +143 -0
- package/.claude/skills/remix.md +246 -0
- package/.claude/skills/rest-api.md +490 -0
- package/.claude/skills/rocket.md +366 -0
- package/.claude/skills/rust.md +341 -0
- package/.claude/skills/sass.md +380 -0
- package/.claude/skills/sea-orm.md +382 -0
- package/.claude/skills/security.md +167 -0
- package/.claude/skills/sequelize.md +395 -0
- package/.claude/skills/spring-boot.md +416 -0
- package/.claude/skills/sqlalchemy.md +269 -0
- package/.claude/skills/sqlx-rust.md +408 -0
- package/.claude/skills/state-jotai.md +346 -0
- package/.claude/skills/state-mobx.md +353 -0
- package/.claude/skills/state-pinia.md +431 -0
- package/.claude/skills/state-redux.md +337 -0
- package/.claude/skills/state-tanstack-query.md +434 -0
- package/.claude/skills/state-zustand.md +340 -0
- package/.claude/skills/styled-components.md +403 -0
- package/.claude/skills/svelte.md +238 -0
- package/.claude/skills/sveltekit.md +207 -0
- package/.claude/skills/symfony.md +437 -0
- package/.claude/skills/tailwind.md +279 -0
- package/.claude/skills/terraform.md +394 -0
- package/.claude/skills/testing-library.md +371 -0
- package/.claude/skills/trpc.md +426 -0
- package/.claude/skills/typeorm.md +368 -0
- package/.claude/skills/vitest.md +330 -0
- package/.claude/skills/vue.md +202 -0
- package/.claude/skills/warp.md +365 -0
- package/README.md +163 -52
- package/package.json +1 -1
- package/system/triggers.md +256 -17
|
@@ -0,0 +1,363 @@
|
|
|
1
|
+
# Kubernetes Skill
|
|
2
|
+
|
|
3
|
+
## Complete Deployment
|
|
4
|
+
\`\`\`yaml
|
|
5
|
+
apiVersion: apps/v1
|
|
6
|
+
kind: Deployment
|
|
7
|
+
metadata:
|
|
8
|
+
name: myapp
|
|
9
|
+
labels:
|
|
10
|
+
app: myapp
|
|
11
|
+
spec:
|
|
12
|
+
replicas: 3
|
|
13
|
+
selector:
|
|
14
|
+
matchLabels:
|
|
15
|
+
app: myapp
|
|
16
|
+
strategy:
|
|
17
|
+
type: RollingUpdate
|
|
18
|
+
rollingUpdate:
|
|
19
|
+
maxSurge: 1
|
|
20
|
+
maxUnavailable: 0
|
|
21
|
+
template:
|
|
22
|
+
metadata:
|
|
23
|
+
labels:
|
|
24
|
+
app: myapp
|
|
25
|
+
spec:
|
|
26
|
+
containers:
|
|
27
|
+
- name: myapp
|
|
28
|
+
image: myapp:v1.0.0
|
|
29
|
+
ports:
|
|
30
|
+
- containerPort: 3000
|
|
31
|
+
env:
|
|
32
|
+
- name: NODE_ENV
|
|
33
|
+
value: "production"
|
|
34
|
+
- name: DATABASE_URL
|
|
35
|
+
valueFrom:
|
|
36
|
+
secretKeyRef:
|
|
37
|
+
name: myapp-secrets
|
|
38
|
+
key: database-url
|
|
39
|
+
envFrom:
|
|
40
|
+
- configMapRef:
|
|
41
|
+
name: myapp-config
|
|
42
|
+
resources:
|
|
43
|
+
requests:
|
|
44
|
+
memory: "128Mi"
|
|
45
|
+
cpu: "100m"
|
|
46
|
+
limits:
|
|
47
|
+
memory: "256Mi"
|
|
48
|
+
cpu: "500m"
|
|
49
|
+
livenessProbe:
|
|
50
|
+
httpGet:
|
|
51
|
+
path: /health
|
|
52
|
+
port: 3000
|
|
53
|
+
initialDelaySeconds: 10
|
|
54
|
+
periodSeconds: 10
|
|
55
|
+
readinessProbe:
|
|
56
|
+
httpGet:
|
|
57
|
+
path: /ready
|
|
58
|
+
port: 3000
|
|
59
|
+
initialDelaySeconds: 5
|
|
60
|
+
periodSeconds: 5
|
|
61
|
+
volumeMounts:
|
|
62
|
+
- name: config-volume
|
|
63
|
+
mountPath: /app/config
|
|
64
|
+
readOnly: true
|
|
65
|
+
volumes:
|
|
66
|
+
- name: config-volume
|
|
67
|
+
configMap:
|
|
68
|
+
name: myapp-files
|
|
69
|
+
imagePullSecrets:
|
|
70
|
+
- name: regcred
|
|
71
|
+
\`\`\`
|
|
72
|
+
|
|
73
|
+
## Service (ClusterIP & LoadBalancer)
|
|
74
|
+
\`\`\`yaml
|
|
75
|
+
# Internal service (ClusterIP - default)
|
|
76
|
+
apiVersion: v1
|
|
77
|
+
kind: Service
|
|
78
|
+
metadata:
|
|
79
|
+
name: myapp
|
|
80
|
+
spec:
|
|
81
|
+
selector:
|
|
82
|
+
app: myapp
|
|
83
|
+
ports:
|
|
84
|
+
- port: 80
|
|
85
|
+
targetPort: 3000
|
|
86
|
+
type: ClusterIP
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
# External service (LoadBalancer)
|
|
90
|
+
apiVersion: v1
|
|
91
|
+
kind: Service
|
|
92
|
+
metadata:
|
|
93
|
+
name: myapp-public
|
|
94
|
+
spec:
|
|
95
|
+
selector:
|
|
96
|
+
app: myapp
|
|
97
|
+
ports:
|
|
98
|
+
- port: 80
|
|
99
|
+
targetPort: 3000
|
|
100
|
+
type: LoadBalancer
|
|
101
|
+
\`\`\`
|
|
102
|
+
|
|
103
|
+
## Ingress (NGINX)
|
|
104
|
+
\`\`\`yaml
|
|
105
|
+
apiVersion: networking.k8s.io/v1
|
|
106
|
+
kind: Ingress
|
|
107
|
+
metadata:
|
|
108
|
+
name: myapp-ingress
|
|
109
|
+
annotations:
|
|
110
|
+
nginx.ingress.kubernetes.io/ssl-redirect: "true"
|
|
111
|
+
nginx.ingress.kubernetes.io/proxy-body-size: "50m"
|
|
112
|
+
cert-manager.io/cluster-issuer: "letsencrypt-prod"
|
|
113
|
+
spec:
|
|
114
|
+
ingressClassName: nginx
|
|
115
|
+
tls:
|
|
116
|
+
- hosts:
|
|
117
|
+
- myapp.example.com
|
|
118
|
+
secretName: myapp-tls
|
|
119
|
+
rules:
|
|
120
|
+
- host: myapp.example.com
|
|
121
|
+
http:
|
|
122
|
+
paths:
|
|
123
|
+
- path: /
|
|
124
|
+
pathType: Prefix
|
|
125
|
+
backend:
|
|
126
|
+
service:
|
|
127
|
+
name: myapp
|
|
128
|
+
port:
|
|
129
|
+
number: 80
|
|
130
|
+
- path: /api
|
|
131
|
+
pathType: Prefix
|
|
132
|
+
backend:
|
|
133
|
+
service:
|
|
134
|
+
name: myapp-api
|
|
135
|
+
port:
|
|
136
|
+
number: 80
|
|
137
|
+
\`\`\`
|
|
138
|
+
|
|
139
|
+
## ConfigMap
|
|
140
|
+
\`\`\`yaml
|
|
141
|
+
apiVersion: v1
|
|
142
|
+
kind: ConfigMap
|
|
143
|
+
metadata:
|
|
144
|
+
name: myapp-config
|
|
145
|
+
data:
|
|
146
|
+
LOG_LEVEL: "info"
|
|
147
|
+
API_TIMEOUT: "30000"
|
|
148
|
+
FEATURE_FLAGS: "new-dashboard,dark-mode"
|
|
149
|
+
|
|
150
|
+
---
|
|
151
|
+
# ConfigMap from file
|
|
152
|
+
apiVersion: v1
|
|
153
|
+
kind: ConfigMap
|
|
154
|
+
metadata:
|
|
155
|
+
name: myapp-files
|
|
156
|
+
data:
|
|
157
|
+
config.json: |
|
|
158
|
+
{
|
|
159
|
+
"cache": {
|
|
160
|
+
"ttl": 3600,
|
|
161
|
+
"maxSize": 1000
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
\`\`\`
|
|
165
|
+
|
|
166
|
+
## Secrets
|
|
167
|
+
\`\`\`yaml
|
|
168
|
+
apiVersion: v1
|
|
169
|
+
kind: Secret
|
|
170
|
+
metadata:
|
|
171
|
+
name: myapp-secrets
|
|
172
|
+
type: Opaque
|
|
173
|
+
stringData:
|
|
174
|
+
database-url: "postgresql://user:password@db:5432/myapp"
|
|
175
|
+
api-key: "sk-xxxxxxxxxxxx"
|
|
176
|
+
|
|
177
|
+
---
|
|
178
|
+
# Docker registry credentials
|
|
179
|
+
apiVersion: v1
|
|
180
|
+
kind: Secret
|
|
181
|
+
metadata:
|
|
182
|
+
name: regcred
|
|
183
|
+
type: kubernetes.io/dockerconfigjson
|
|
184
|
+
data:
|
|
185
|
+
.dockerconfigjson: <base64-encoded-docker-config>
|
|
186
|
+
\`\`\`
|
|
187
|
+
|
|
188
|
+
## Horizontal Pod Autoscaler
|
|
189
|
+
\`\`\`yaml
|
|
190
|
+
apiVersion: autoscaling/v2
|
|
191
|
+
kind: HorizontalPodAutoscaler
|
|
192
|
+
metadata:
|
|
193
|
+
name: myapp-hpa
|
|
194
|
+
spec:
|
|
195
|
+
scaleTargetRef:
|
|
196
|
+
apiVersion: apps/v1
|
|
197
|
+
kind: Deployment
|
|
198
|
+
name: myapp
|
|
199
|
+
minReplicas: 2
|
|
200
|
+
maxReplicas: 10
|
|
201
|
+
metrics:
|
|
202
|
+
- type: Resource
|
|
203
|
+
resource:
|
|
204
|
+
name: cpu
|
|
205
|
+
target:
|
|
206
|
+
type: Utilization
|
|
207
|
+
averageUtilization: 70
|
|
208
|
+
- type: Resource
|
|
209
|
+
resource:
|
|
210
|
+
name: memory
|
|
211
|
+
target:
|
|
212
|
+
type: Utilization
|
|
213
|
+
averageUtilization: 80
|
|
214
|
+
behavior:
|
|
215
|
+
scaleDown:
|
|
216
|
+
stabilizationWindowSeconds: 300
|
|
217
|
+
\`\`\`
|
|
218
|
+
|
|
219
|
+
## PersistentVolumeClaim
|
|
220
|
+
\`\`\`yaml
|
|
221
|
+
apiVersion: v1
|
|
222
|
+
kind: PersistentVolumeClaim
|
|
223
|
+
metadata:
|
|
224
|
+
name: myapp-data
|
|
225
|
+
spec:
|
|
226
|
+
accessModes:
|
|
227
|
+
- ReadWriteOnce
|
|
228
|
+
resources:
|
|
229
|
+
requests:
|
|
230
|
+
storage: 10Gi
|
|
231
|
+
storageClassName: standard
|
|
232
|
+
\`\`\`
|
|
233
|
+
|
|
234
|
+
## CronJob
|
|
235
|
+
\`\`\`yaml
|
|
236
|
+
apiVersion: batch/v1
|
|
237
|
+
kind: CronJob
|
|
238
|
+
metadata:
|
|
239
|
+
name: myapp-cleanup
|
|
240
|
+
spec:
|
|
241
|
+
schedule: "0 2 * * *" # 2 AM daily
|
|
242
|
+
jobTemplate:
|
|
243
|
+
spec:
|
|
244
|
+
template:
|
|
245
|
+
spec:
|
|
246
|
+
containers:
|
|
247
|
+
- name: cleanup
|
|
248
|
+
image: myapp:v1.0.0
|
|
249
|
+
command: ["node", "scripts/cleanup.js"]
|
|
250
|
+
envFrom:
|
|
251
|
+
- secretRef:
|
|
252
|
+
name: myapp-secrets
|
|
253
|
+
restartPolicy: OnFailure
|
|
254
|
+
\`\`\`
|
|
255
|
+
|
|
256
|
+
## kubectl Commands
|
|
257
|
+
\`\`\`bash
|
|
258
|
+
# Apply manifests
|
|
259
|
+
kubectl apply -f deployment.yaml
|
|
260
|
+
kubectl apply -f k8s/ # Apply all in directory
|
|
261
|
+
kubectl apply -k overlays/production/ # Kustomize
|
|
262
|
+
|
|
263
|
+
# Get resources
|
|
264
|
+
kubectl get pods
|
|
265
|
+
kubectl get pods -o wide # More details
|
|
266
|
+
kubectl get all -n myapp # All resources in namespace
|
|
267
|
+
kubectl get pods -l app=myapp # By label
|
|
268
|
+
|
|
269
|
+
# Describe & Debug
|
|
270
|
+
kubectl describe pod myapp-xxx
|
|
271
|
+
kubectl logs myapp-xxx
|
|
272
|
+
kubectl logs -f myapp-xxx # Follow
|
|
273
|
+
kubectl logs myapp-xxx -c container-name # Specific container
|
|
274
|
+
kubectl logs --previous myapp-xxx # Previous instance
|
|
275
|
+
|
|
276
|
+
# Exec into pod
|
|
277
|
+
kubectl exec -it myapp-xxx -- sh
|
|
278
|
+
kubectl exec -it myapp-xxx -c container-name -- sh
|
|
279
|
+
|
|
280
|
+
# Port forward
|
|
281
|
+
kubectl port-forward svc/myapp 3000:80
|
|
282
|
+
kubectl port-forward pod/myapp-xxx 3000:3000
|
|
283
|
+
|
|
284
|
+
# Scale
|
|
285
|
+
kubectl scale deployment myapp --replicas=5
|
|
286
|
+
|
|
287
|
+
# Rollout
|
|
288
|
+
kubectl rollout status deployment/myapp
|
|
289
|
+
kubectl rollout history deployment/myapp
|
|
290
|
+
kubectl rollout undo deployment/myapp
|
|
291
|
+
kubectl rollout restart deployment/myapp
|
|
292
|
+
|
|
293
|
+
# Config & Secrets
|
|
294
|
+
kubectl create secret generic myapp-secrets --from-literal=key=value
|
|
295
|
+
kubectl create configmap myapp-config --from-file=config.json
|
|
296
|
+
|
|
297
|
+
# Delete
|
|
298
|
+
kubectl delete pod myapp-xxx
|
|
299
|
+
kubectl delete -f deployment.yaml
|
|
300
|
+
\`\`\`
|
|
301
|
+
|
|
302
|
+
## Namespace Setup
|
|
303
|
+
\`\`\`yaml
|
|
304
|
+
apiVersion: v1
|
|
305
|
+
kind: Namespace
|
|
306
|
+
metadata:
|
|
307
|
+
name: myapp
|
|
308
|
+
labels:
|
|
309
|
+
name: myapp
|
|
310
|
+
|
|
311
|
+
---
|
|
312
|
+
# Resource Quota
|
|
313
|
+
apiVersion: v1
|
|
314
|
+
kind: ResourceQuota
|
|
315
|
+
metadata:
|
|
316
|
+
name: myapp-quota
|
|
317
|
+
namespace: myapp
|
|
318
|
+
spec:
|
|
319
|
+
hard:
|
|
320
|
+
requests.cpu: "10"
|
|
321
|
+
requests.memory: 20Gi
|
|
322
|
+
limits.cpu: "20"
|
|
323
|
+
limits.memory: 40Gi
|
|
324
|
+
pods: "50"
|
|
325
|
+
\`\`\`
|
|
326
|
+
|
|
327
|
+
## Kustomize Structure
|
|
328
|
+
\`\`\`
|
|
329
|
+
k8s/
|
|
330
|
+
├── base/
|
|
331
|
+
│ ├── kustomization.yaml
|
|
332
|
+
│ ├── deployment.yaml
|
|
333
|
+
│ ├── service.yaml
|
|
334
|
+
│ └── configmap.yaml
|
|
335
|
+
└── overlays/
|
|
336
|
+
├── development/
|
|
337
|
+
│ ├── kustomization.yaml
|
|
338
|
+
│ └── replicas-patch.yaml
|
|
339
|
+
└── production/
|
|
340
|
+
├── kustomization.yaml
|
|
341
|
+
├── replicas-patch.yaml
|
|
342
|
+
└── resources-patch.yaml
|
|
343
|
+
\`\`\`
|
|
344
|
+
|
|
345
|
+
## ❌ DON'T
|
|
346
|
+
- Use \`:latest\` tag in production
|
|
347
|
+
- Store secrets in plain ConfigMaps
|
|
348
|
+
- Skip resource limits
|
|
349
|
+
- Run containers as root
|
|
350
|
+
- Forget liveness/readiness probes
|
|
351
|
+
- Use NodePort for production traffic
|
|
352
|
+
- Commit secrets to version control
|
|
353
|
+
|
|
354
|
+
## ✅ DO
|
|
355
|
+
- Use specific image tags
|
|
356
|
+
- Set resource requests AND limits
|
|
357
|
+
- Use namespaces for isolation
|
|
358
|
+
- Configure health probes
|
|
359
|
+
- Use Secrets for sensitive data
|
|
360
|
+
- Enable HPA for scaling
|
|
361
|
+
- Use Ingress for external traffic
|
|
362
|
+
- Apply network policies
|
|
363
|
+
- Use Kustomize or Helm for environments
|