用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/ffsshhttiikk/opencode-agents-skills --skill devsecops命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
正在显示 SKILL.md
基于 SOC 职业分类
| name | devsecops |
| description | Security integration in DevOps practices |
| license | MIT |
| compatibility | opencode |
| metadata | {"audience":"developer, security-engineer, devops-engineer","category":"security"} |
stages:
- secret-scan
- dependency-scan
- static-analysis
- build-scan
- image-scan
- deploy-scan
secret-scan:
stage: secret-scan
script:
- gitlab-sast
allow_failure: false
dependency-scan:
stage: dependency-scan
script:
- npm audit --audit-level=high
- snyk test
- trivy fs --security-checks vuln
allow_failure: false
static-analysis:
stage: static-analysis
script:
- semgrep --config=auto --json .
- sonarqube-scanner
allow_failure: true
image-scan:
stage: image-scan
script:
- trivy image --severity HIGH,CRITICAL myapp:$CI_COMMIT_SHA
- dockle myapp:$CI_COMMIT_SHA
allow_failure: false
# OPA Gatekeeper policy
package kubernetes.admission
deny[msg] {
input.request.kind.kind == "Deployment"
not input.request.object.spec.template.spec.containers[_].securityContext.runAsNonRoot
msg = "Containers must run as non-root"
}
deny[msg] {
input.request.kind.kind == "Pod"
input.request.object.spec.containers[_].securityContext.privileged
msg = "Containers must not be privileged"
}
# CycloneDX in CI/CD
syft app:latest -o cyclonedx-json > sbom.json
# Trivy SBOM
trivy sbom app:latest --format cyclonedx
# SPDX
syft app:latest -o spdx-json
# HashiCorp Vault integration
apiVersion: v1
kind: Secret
metadata:
name: vault-secrets
type: Opaque
stringData:
secret.properties: |
DB_PASSWORD=$(vault kv get -field=password secret/database)
API_KEY=$(vault kv get -field=api_key secret/api)
| Language | Tools |
|---|---|
| Python | Bandit, Safety, Semgrep |
| Java | SpotBugs, SonarQube |
| JavaScript | ESLint, Semgrep |
| Go | Gosec, Staticcheck |
| All | Semgrep, SonarQube |
dast:
stage: dynamic-analysis
script:
- zap-baseline.py -t $STAGING_URL -r zap_report.html
- nuclei -u $STAGING_URL
allow_failure: true