opencode-skills-collection 3.0.31 → 3.0.33
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/bundled-skills/.antigravity-install-manifest.json +14 -1
- package/bundled-skills/bilig-workpaper/SKILL.md +12 -3
- package/bundled-skills/bumblebee/SKILL.md +6 -2
- package/bundled-skills/bun-development/SKILL.md +5 -3
- package/bundled-skills/cloud-penetration-testing/SKILL.md +5 -3
- package/bundled-skills/container-security-hardening/SKILL.md +1001 -0
- package/bundled-skills/container-security-hardening/references/base-image-comparison.md +245 -0
- package/bundled-skills/container-security-hardening/references/kubernetes-pod-security.md +567 -0
- package/bundled-skills/container-security-hardening/references/seccomp-profile-template.json +337 -0
- package/bundled-skills/doc2math/SKILL.md +102 -0
- package/bundled-skills/docs/integrations/jetski-cortex.md +3 -3
- package/bundled-skills/docs/integrations/jetski-gemini-loader/README.md +1 -1
- package/bundled-skills/docs/maintainers/repo-growth-seo.md +3 -3
- package/bundled-skills/docs/maintainers/skills-update-guide.md +1 -1
- package/bundled-skills/docs/users/bundles.md +1 -1
- package/bundled-skills/docs/users/claude-code-skills.md +1 -1
- package/bundled-skills/docs/users/gemini-cli-skills.md +1 -1
- package/bundled-skills/docs/users/getting-started.md +6 -2
- package/bundled-skills/docs/users/kiro-integration.md +1 -1
- package/bundled-skills/docs/users/usage.md +4 -4
- package/bundled-skills/docs/users/visual-guide.md +4 -4
- package/bundled-skills/environment-setup-guide/SKILL.md +10 -6
- package/bundled-skills/evolution/SKILL.md +5 -3
- package/bundled-skills/github-actions-advanced/SKILL.md +1100 -0
- package/bundled-skills/gitops-workflow/SKILL.md +5 -3
- package/bundled-skills/ii-commons/SKILL.md +15 -1
- package/bundled-skills/lemmaly/SKILL.md +15 -6
- package/bundled-skills/linkerd-patterns/SKILL.md +5 -3
- package/bundled-skills/longbridge/SKILL.md +95 -0
- package/bundled-skills/mercury-mcp/SKILL.md +9 -1
- package/bundled-skills/moatmri/SKILL.md +84 -0
- package/bundled-skills/nextjs-seo-indexing/SKILL.md +263 -0
- package/bundled-skills/openclaw-github-repo-commander/scripts/repo-audit.sh +42 -0
- package/bundled-skills/photopea-embedded-editor/SKILL.md +7 -3
- package/bundled-skills/runaway-guard/SKILL.md +331 -0
- package/bundled-skills/schema-markup-generator/SKILL.md +319 -0
- package/bundled-skills/sendblue/sendblue-api/SKILL.md +6 -1
- package/bundled-skills/sendblue/sendblue-cli/SKILL.md +6 -1
- package/bundled-skills/sendblue/sendblue-notify/SKILL.md +6 -1
- package/bundled-skills/sendblue/textme/SKILL.md +4 -0
- package/bundled-skills/social-metadata-hardening/SKILL.md +230 -0
- package/bundled-skills/socialclaw/SKILL.md +6 -1
- package/bundled-skills/uv-package-manager/resources/implementation-playbook.md +5 -3
- package/bundled-skills/varlock/SKILL.md +10 -6
- package/bundled-skills/vibe-code-cleanup/SKILL.md +231 -0
- package/bundled-skills/vibecode-production-qa-validator/SKILL.md +237 -0
- package/bundled-skills/wordpress-centric-high-seo-optimized-blogwriting-skill/SKILL.md +229 -162
- package/bundled-skills/yield-intelligence/SKILL.md +121 -0
- package/bundled-skills/youtube-full/SKILL.md +144 -0
- package/package.json +1 -1
- package/skills_index.json +330 -28
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
# Base Image Comparison Reference
|
|
2
|
+
|
|
3
|
+
Quick decision guide for choosing the right container base image — balancing security, compatibility, size, and debuggability.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Quick Decision Matrix
|
|
8
|
+
|
|
9
|
+
| Runtime / Need | Best Choice | Fallback |
|
|
10
|
+
|---|---|---|
|
|
11
|
+
| Go / Rust — fully static binary | `scratch` | `gcr.io/distroless/static-debian12` |
|
|
12
|
+
| Go / Rust — with CGO or dynamic libs | `gcr.io/distroless/base-debian12` | `alpine:3.20` |
|
|
13
|
+
| Node.js app (production) | `gcr.io/distroless/nodejs20-debian12` | `node:20-slim` |
|
|
14
|
+
| Python app (production) | `gcr.io/distroless/python3-debian12` | `python:3.12-slim` |
|
|
15
|
+
| Java app (production) | `gcr.io/distroless/java21-debian12` | `eclipse-temurin:21-jre-alpine` |
|
|
16
|
+
| Shell scripts required | `alpine:3.20` | `debian:12-slim` |
|
|
17
|
+
| musl compatibility issue | `node:20-slim` (glibc) | `debian:12-slim` |
|
|
18
|
+
| Debugging in staging | distroless `:debug` variant | `ubuntu:24.04` (temporary) |
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## Size & CVE Comparison
|
|
23
|
+
|
|
24
|
+
> Approximate values as of mid-2025. Run `trivy image <name>` for current counts.
|
|
25
|
+
|
|
26
|
+
| Image | Compressed Size | Typical CVE Count | Shell | Package Manager | libc |
|
|
27
|
+
|---|---|---|---|---|---|
|
|
28
|
+
| `scratch` | 0 MB | 0 | No | No | None |
|
|
29
|
+
| `gcr.io/distroless/static-debian12` | ~2 MB | 0–2 | No | No | None |
|
|
30
|
+
| `gcr.io/distroless/base-debian12` | ~20 MB | 0–3 | No | No | glibc |
|
|
31
|
+
| `gcr.io/distroless/nodejs20-debian12` | ~55 MB | 0–5 | No | No | glibc |
|
|
32
|
+
| `gcr.io/distroless/python3-debian12` | ~50 MB | 0–5 | No | No | glibc |
|
|
33
|
+
| `gcr.io/distroless/java21-debian12` | ~220 MB | 0–5 | No | No | glibc |
|
|
34
|
+
| `alpine:3.20` | ~3.5 MB | 0–5 | Yes (ash) | Yes (apk) | musl |
|
|
35
|
+
| `node:20-alpine` | ~65 MB | 5–20 | Yes | Yes | musl |
|
|
36
|
+
| `python:3.12-alpine` | ~55 MB | 5–20 | Yes | Yes | musl |
|
|
37
|
+
| `node:20-slim` | ~90 MB | 15–40 | Yes | Yes (minimal apt) | glibc |
|
|
38
|
+
| `python:3.12-slim` | ~60 MB | 15–40 | Yes | Yes (minimal apt) | glibc |
|
|
39
|
+
| `eclipse-temurin:21-jre-alpine` | ~180 MB | 5–20 | Yes | Yes | musl |
|
|
40
|
+
| `node:20` (full) | ~370 MB | 80–200 | Yes | Yes (full apt) | glibc |
|
|
41
|
+
| `ubuntu:24.04` | ~30 MB | 20–60 | Yes | Yes (full apt) | glibc |
|
|
42
|
+
| `ubuntu:24.04` (full packages) | ~200 MB+ | 50–150 | Yes | Yes | glibc |
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## Detailed Trade-offs
|
|
47
|
+
|
|
48
|
+
### `scratch`
|
|
49
|
+
**Best for:** Go, Rust, or any fully static binary with `CGO_ENABLED=0`
|
|
50
|
+
|
|
51
|
+
- ✅ Zero attack surface — literally empty
|
|
52
|
+
- ✅ Smallest possible image
|
|
53
|
+
- ✅ No package manager to exploit
|
|
54
|
+
- ❌ No libc, no shell, no CA certs, no timezone data — must `COPY` them in
|
|
55
|
+
- ❌ Cannot exec into for debugging (no shell at all)
|
|
56
|
+
|
|
57
|
+
```dockerfile
|
|
58
|
+
FROM golang:1.22-alpine AS builder
|
|
59
|
+
WORKDIR /build
|
|
60
|
+
COPY go.* ./
|
|
61
|
+
RUN go mod download
|
|
62
|
+
COPY . .
|
|
63
|
+
RUN CGO_ENABLED=0 GOOS=linux go build \
|
|
64
|
+
-ldflags="-s -w -extldflags=-static" \
|
|
65
|
+
-o app .
|
|
66
|
+
|
|
67
|
+
FROM scratch
|
|
68
|
+
# Copy CA certs for HTTPS calls
|
|
69
|
+
COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/
|
|
70
|
+
# Copy timezone data if needed
|
|
71
|
+
COPY --from=builder /usr/share/zoneinfo /usr/share/zoneinfo
|
|
72
|
+
COPY --from=builder /build/app /app
|
|
73
|
+
USER 65532:65532
|
|
74
|
+
ENTRYPOINT ["/app"]
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
---
|
|
78
|
+
|
|
79
|
+
### `gcr.io/distroless` (Google)
|
|
80
|
+
**Best for:** Production Node.js, Python, Java, Go (with CGO)
|
|
81
|
+
|
|
82
|
+
- ✅ No shell, no package manager — dramatically reduced attack surface
|
|
83
|
+
- ✅ Includes CA certs and tzdata by default
|
|
84
|
+
- ✅ Built-in `nonroot` user (UID 65532)
|
|
85
|
+
- ✅ Based on Debian — glibc compatibility (no musl issues)
|
|
86
|
+
- ✅ Regularly patched by Google
|
|
87
|
+
- ❌ Cannot exec into with `docker exec -it` (no shell) — use `:debug` variant for staging
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
# Available distroless variants
|
|
91
|
+
gcr.io/distroless/static-debian12 # No libc — for fully static binaries
|
|
92
|
+
gcr.io/distroless/base-debian12 # glibc + openssl — for dynamic Go/Rust
|
|
93
|
+
gcr.io/distroless/nodejs20-debian12 # Node.js 20 runtime
|
|
94
|
+
gcr.io/distroless/nodejs22-debian12 # Node.js 22 runtime
|
|
95
|
+
gcr.io/distroless/python3-debian12 # Python 3 runtime
|
|
96
|
+
gcr.io/distroless/java21-debian12 # JRE 21
|
|
97
|
+
gcr.io/distroless/cc-debian12 # C/C++ runtime
|
|
98
|
+
|
|
99
|
+
# Debug variants — include busybox shell for staging only
|
|
100
|
+
gcr.io/distroless/nodejs20-debian12:debug
|
|
101
|
+
gcr.io/distroless/python3-debian12:debug
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
**Debugging a distroless container (staging only):**
|
|
105
|
+
```bash
|
|
106
|
+
# Use a sidecar debug container instead of modifying the production image
|
|
107
|
+
kubectl debug -it deploy/myapp \
|
|
108
|
+
--image=busybox \
|
|
109
|
+
--target=app \
|
|
110
|
+
--copy-to=debug-pod
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
---
|
|
114
|
+
|
|
115
|
+
### `alpine`
|
|
116
|
+
**Best for:** Images where a shell is required, or when image size is a primary concern
|
|
117
|
+
|
|
118
|
+
- ✅ Very small (~3.5 MB)
|
|
119
|
+
- ✅ Has shell (ash) and package manager (apk) — great for debugging
|
|
120
|
+
- ✅ Regularly patched, active community
|
|
121
|
+
- ⚠️ Uses **musl libc** — some Python C extensions, Node.js native modules, or glibc-dependent binaries may fail
|
|
122
|
+
- ❌ More CVEs than distroless (more packages)
|
|
123
|
+
|
|
124
|
+
**musl compatibility check:**
|
|
125
|
+
```bash
|
|
126
|
+
# Test your app on alpine before committing
|
|
127
|
+
docker run -it --rm -v $(pwd):/app node:20-alpine sh -c "cd /app && npm ci && npm test"
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
**Common musl issues:**
|
|
131
|
+
- `bcrypt`, `node-gyp`, `sharp`, `canvas` native modules → may need build tools
|
|
132
|
+
- Python with `numpy`, `scipy`, `pandas` → use `python:3.12-slim` instead
|
|
133
|
+
- Java apps → generally fine, but test thoroughly
|
|
134
|
+
|
|
135
|
+
---
|
|
136
|
+
|
|
137
|
+
### `slim` variants (Debian-based)
|
|
138
|
+
**Best for:** Apps with glibc dependencies that can't use distroless
|
|
139
|
+
|
|
140
|
+
- ✅ glibc compatibility — no musl issues
|
|
141
|
+
- ✅ Familiar `apt` ecosystem
|
|
142
|
+
- ✅ Smaller than full image (~60–90 MB vs 300–400 MB)
|
|
143
|
+
- ❌ More CVEs than distroless (has apt, shell, more system libraries)
|
|
144
|
+
- ❌ Larger than alpine
|
|
145
|
+
|
|
146
|
+
```dockerfile
|
|
147
|
+
FROM node:20-slim
|
|
148
|
+
# Install only what's needed and clean up in the same layer
|
|
149
|
+
RUN apt-get update && \
|
|
150
|
+
apt-get install -y --no-install-recommends \
|
|
151
|
+
libssl3 \
|
|
152
|
+
&& rm -rf /var/lib/apt/lists/*
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
---
|
|
156
|
+
|
|
157
|
+
### Full Images (`node:20`, `ubuntu:24.04`, `python:3.12`)
|
|
158
|
+
**Only for:** Development, CI build stages, or debugging — NEVER as production runtime
|
|
159
|
+
|
|
160
|
+
- ❌ Massive attack surface (50–200+ CVEs)
|
|
161
|
+
- ❌ Includes compilers, build tools, package managers — not needed at runtime
|
|
162
|
+
- ❌ Huge size increases pull time and storage costs
|
|
163
|
+
|
|
164
|
+
Use as a build stage only:
|
|
165
|
+
```dockerfile
|
|
166
|
+
FROM node:20 AS builder # Full image for building
|
|
167
|
+
FROM node:20-slim AS runtime # Slim image for production
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
---
|
|
171
|
+
|
|
172
|
+
## Keeping Base Images Updated
|
|
173
|
+
|
|
174
|
+
**The most common source of container CVEs is outdated base images.**
|
|
175
|
+
|
|
176
|
+
### Manual Check
|
|
177
|
+
```bash
|
|
178
|
+
# Pull latest and check digest
|
|
179
|
+
docker pull node:20-slim
|
|
180
|
+
docker inspect node:20-slim --format='{{index .RepoDigests 0}}'
|
|
181
|
+
|
|
182
|
+
# Check for CVEs in current base before updating
|
|
183
|
+
trivy image node:20-slim --severity HIGH,CRITICAL
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
### Automate with Renovate (Recommended)
|
|
187
|
+
```json
|
|
188
|
+
// .renovaterc.json
|
|
189
|
+
{
|
|
190
|
+
"extends": ["config:base"],
|
|
191
|
+
"dockerfile": {
|
|
192
|
+
"enabled": true,
|
|
193
|
+
"pinDigests": true
|
|
194
|
+
},
|
|
195
|
+
"packageRules": [
|
|
196
|
+
{
|
|
197
|
+
"matchDatasources": ["docker"],
|
|
198
|
+
"matchPackagePatterns": ["^gcr.io/distroless"],
|
|
199
|
+
"automerge": true,
|
|
200
|
+
"automergeType": "branch"
|
|
201
|
+
}
|
|
202
|
+
]
|
|
203
|
+
}
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
### Automate with Dependabot
|
|
207
|
+
```yaml
|
|
208
|
+
# .github/dependabot.yml
|
|
209
|
+
version: 2
|
|
210
|
+
updates:
|
|
211
|
+
- package-ecosystem: "docker"
|
|
212
|
+
directory: "/"
|
|
213
|
+
schedule:
|
|
214
|
+
interval: "weekly"
|
|
215
|
+
open-pull-requests-limit: 5
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
---
|
|
219
|
+
|
|
220
|
+
## Distroless Digest Pinning Reference
|
|
221
|
+
|
|
222
|
+
Always pin to digest. Check current digests at:
|
|
223
|
+
- `gcr.io/distroless/nodejs20-debian12` → `docker pull gcr.io/distroless/nodejs20-debian12 && docker inspect gcr.io/distroless/nodejs20-debian12 --format='{{index .RepoDigests 0}}'`
|
|
224
|
+
- Use [Google's distroless tags page](https://github.com/GoogleContainerTools/distroless/blob/main/README.md) for latest releases
|
|
225
|
+
|
|
226
|
+
---
|
|
227
|
+
|
|
228
|
+
## Image Size Reduction Checklist
|
|
229
|
+
|
|
230
|
+
When an image is too large:
|
|
231
|
+
|
|
232
|
+
- [ ] Switched to distroless or alpine runtime stage?
|
|
233
|
+
- [ ] Multi-stage build separating build from runtime?
|
|
234
|
+
- [ ] `npm ci --only=production` / `pip install --no-dev`?
|
|
235
|
+
- [ ] Build cache cleaned in same `RUN` layer (`rm -rf /var/lib/apt/lists/*`, `npm cache clean --force`)?
|
|
236
|
+
- [ ] `.dockerignore` excludes `node_modules`, `.git`, `tests/`, `docs/`?
|
|
237
|
+
- [ ] Using `--mount=type=cache` for package manager cache (BuildKit)?
|
|
238
|
+
- [ ] Only necessary files `COPY`-ed into runtime stage?
|
|
239
|
+
- [ ] No debug tools in production image?
|
|
240
|
+
|
|
241
|
+
```bash
|
|
242
|
+
# Analyze image layers to find what's taking space
|
|
243
|
+
docker history --no-trunc myapp:latest
|
|
244
|
+
dive myapp:latest # Interactive layer explorer: https://github.com/wagoodman/dive
|
|
245
|
+
```
|