opencode-skills-collection 4.0.67 → 4.0.69
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 +281 -1
- package/bundled-skills/access-review/SKILL.md +394 -0
- package/bundled-skills/access-review/references/details.md +121 -0
- package/bundled-skills/agent-evals/SKILL.md +420 -0
- package/bundled-skills/agent-observability/SKILL.md +346 -0
- package/bundled-skills/agent-observability/references/details.md +786 -0
- package/bundled-skills/ai-agent-security/SKILL.md +393 -0
- package/bundled-skills/ai-agent-security/references/details.md +912 -0
- package/bundled-skills/ai-coding-agent-guardrails/SKILL.md +442 -0
- package/bundled-skills/ai-coding-agent-guardrails/references/details.md +753 -0
- package/bundled-skills/ai-inference-service-mesh/SKILL.md +449 -0
- package/bundled-skills/ai-pipeline-orchestration/SKILL.md +287 -0
- package/bundled-skills/ai-red-teaming/SKILL.md +409 -0
- package/bundled-skills/ai-security-hardening/SKILL.md +343 -0
- package/bundled-skills/ai-sre-incident-response/SKILL.md +336 -0
- package/bundled-skills/alerting-oncall/SKILL.md +458 -0
- package/bundled-skills/alerting-oncall/references/details.md +84 -0
- package/bundled-skills/anti-slop-design/SKILL.md +393 -0
- package/bundled-skills/antigravity-maintainer-batch-release/SKILL.md +1 -0
- package/bundled-skills/apk-redteam-pipeline/SKILL.md +446 -0
- package/bundled-skills/argocd-gitops/SKILL.md +469 -0
- package/bundled-skills/arm-templates/SKILL.md +438 -0
- package/bundled-skills/arm-templates/references/details.md +64 -0
- package/bundled-skills/artifact-yylo/SKILL.md +122 -0
- package/bundled-skills/asset-inventory/SKILL.md +412 -0
- package/bundled-skills/asset-inventory/references/details.md +127 -0
- package/bundled-skills/audit-logging/SKILL.md +476 -0
- package/bundled-skills/aws-cloudtrail/SKILL.md +486 -0
- package/bundled-skills/aws-cost-optimization/SKILL.md +331 -0
- package/bundled-skills/aws-ec2/SKILL.md +426 -0
- package/bundled-skills/aws-ecs-fargate/SKILL.md +388 -0
- package/bundled-skills/aws-iam/SKILL.md +463 -0
- package/bundled-skills/aws-lambda/SKILL.md +428 -0
- package/bundled-skills/aws-rds/SKILL.md +380 -0
- package/bundled-skills/aws-s3/SKILL.md +434 -0
- package/bundled-skills/aws-secrets-manager/SKILL.md +486 -0
- package/bundled-skills/aws-vpc/SKILL.md +436 -0
- package/bundled-skills/azure-ai-document-intelligence-ts/SKILL.md +1 -1
- package/bundled-skills/azure-aks/SKILL.md +423 -0
- package/bundled-skills/azure-devops/SKILL.md +457 -0
- package/bundled-skills/azure-functions-devsec/SKILL.md +436 -0
- package/bundled-skills/azure-keyvault/SKILL.md +455 -0
- package/bundled-skills/azure-keyvault/references/details.md +83 -0
- package/bundled-skills/azure-monitor-audit/SKILL.md +379 -0
- package/bundled-skills/azure-networking/SKILL.md +448 -0
- package/bundled-skills/azure-networking/references/details.md +135 -0
- package/bundled-skills/azure-sql/SKILL.md +413 -0
- package/bundled-skills/azure-sql/references/details.md +113 -0
- package/bundled-skills/azure-vms/SKILL.md +402 -0
- package/bundled-skills/azure-vms/references/details.md +134 -0
- package/bundled-skills/backup-recovery/SKILL.md +388 -0
- package/bundled-skills/bb-methodology/SKILL.md +451 -0
- package/bundled-skills/bb-methodology/references/details.md +120 -0
- package/bundled-skills/block-storage/SKILL.md +371 -0
- package/bundled-skills/blue-green-deploy/SKILL.md +453 -0
- package/bundled-skills/blue-green-deploy/references/details.md +90 -0
- package/bundled-skills/bug-bounty/SKILL.md +447 -0
- package/bundled-skills/bug-bounty/references/details.md +1316 -0
- package/bundled-skills/bugcrowd-reporting/SKILL.md +351 -0
- package/bundled-skills/business-continuity/SKILL.md +463 -0
- package/bundled-skills/career-ops/SKILL.md +186 -0
- package/bundled-skills/cdn-setup/SKILL.md +374 -0
- package/bundled-skills/change-management/SKILL.md +438 -0
- package/bundled-skills/change-management/references/details.md +105 -0
- package/bundled-skills/circleci/SKILL.md +475 -0
- package/bundled-skills/cis-benchmarks/SKILL.md +150 -0
- package/bundled-skills/cloudflare-pages/SKILL.md +318 -0
- package/bundled-skills/cloudflare-r2/SKILL.md +353 -0
- package/bundled-skills/cloudflare-workers/SKILL.md +415 -0
- package/bundled-skills/cloudflare-zero-trust/SKILL.md +361 -0
- package/bundled-skills/cloudformation/SKILL.md +461 -0
- package/bundled-skills/constraint-driven-development/SKILL.md +335 -0
- package/bundled-skills/constraint-driven-development/references/floor-guard.md +99 -0
- package/bundled-skills/container-hardening/SKILL.md +126 -0
- package/bundled-skills/container-registries/SKILL.md +435 -0
- package/bundled-skills/container-scanning/SKILL.md +416 -0
- package/bundled-skills/convex-backend/SKILL.md +338 -0
- package/bundled-skills/dast-scanning/SKILL.md +437 -0
- package/bundled-skills/database-backups/SKILL.md +425 -0
- package/bundled-skills/datadog/SKILL.md +487 -0
- package/bundled-skills/dependency-scanning/SKILL.md +457 -0
- package/bundled-skills/devcontainers-nix/SKILL.md +416 -0
- package/bundled-skills/disaster-recovery/SKILL.md +374 -0
- package/bundled-skills/disaster-recovery/references/details.md +219 -0
- package/bundled-skills/dns-management/SKILL.md +375 -0
- package/bundled-skills/docker-compose/SKILL.md +482 -0
- package/bundled-skills/docker-management/SKILL.md +426 -0
- package/bundled-skills/ebpf-observability/SKILL.md +436 -0
- package/bundled-skills/ebpf-observability/references/details.md +542 -0
- package/bundled-skills/elk-stack/SKILL.md +487 -0
- package/bundled-skills/enterprise-vpn-attack/SKILL.md +395 -0
- package/bundled-skills/evidence-hygiene/SKILL.md +404 -0
- package/bundled-skills/feature-flags/SKILL.md +426 -0
- package/bundled-skills/feature-flags/references/details.md +86 -0
- package/bundled-skills/fedramp-compliance/SKILL.md +453 -0
- package/bundled-skills/firebase-app-platform/SKILL.md +381 -0
- package/bundled-skills/firewall-config/SKILL.md +479 -0
- package/bundled-skills/gcp-audit-logs/SKILL.md +452 -0
- package/bundled-skills/gcp-audit-logs/references/details.md +56 -0
- package/bundled-skills/gcp-cloud-functions/SKILL.md +284 -0
- package/bundled-skills/gcp-cloud-sql/SKILL.md +277 -0
- package/bundled-skills/gcp-compute/SKILL.md +319 -0
- package/bundled-skills/gcp-gke/SKILL.md +307 -0
- package/bundled-skills/gcp-networking/SKILL.md +293 -0
- package/bundled-skills/gcp-secret-manager/SKILL.md +421 -0
- package/bundled-skills/gcp-secret-manager/references/details.md +131 -0
- package/bundled-skills/gdpr-compliance/SKILL.md +451 -0
- package/bundled-skills/gdpr-compliance/references/details.md +145 -0
- package/bundled-skills/geo-audit/SKILL.md +368 -0
- package/bundled-skills/geo-brand-mentions/SKILL.md +68 -0
- package/bundled-skills/geo-brand-mentions/references/details.md +471 -0
- package/bundled-skills/geo-citability/SKILL.md +350 -0
- package/bundled-skills/geo-compare/SKILL.md +340 -0
- package/bundled-skills/geo-content/SKILL.md +383 -0
- package/bundled-skills/geo-crawlers/SKILL.md +408 -0
- package/bundled-skills/geo-llmstxt/SKILL.md +464 -0
- package/bundled-skills/geo-platform-optimizer/SKILL.md +314 -0
- package/bundled-skills/geo-proposal/SKILL.md +378 -0
- package/bundled-skills/geo-prospect/SKILL.md +225 -0
- package/bundled-skills/geo-report/SKILL.md +436 -0
- package/bundled-skills/geo-report-pdf/SKILL.md +157 -0
- package/bundled-skills/geo-schema/SKILL.md +408 -0
- package/bundled-skills/geo-technical/SKILL.md +78 -0
- package/bundled-skills/geo-technical/references/details.md +543 -0
- package/bundled-skills/git-workflow/SKILL.md +460 -0
- package/bundled-skills/github-actions/SKILL.md +368 -0
- package/bundled-skills/gitlab-ci/SKILL.md +340 -0
- package/bundled-skills/google-no-code/SKILL.md +136 -0
- package/bundled-skills/gpu-kubernetes-operations/SKILL.md +468 -0
- package/bundled-skills/gpu-server-management/SKILL.md +236 -0
- package/bundled-skills/hashicorp-vault/SKILL.md +408 -0
- package/bundled-skills/helm-charts/SKILL.md +469 -0
- package/bundled-skills/hipaa-compliance/SKILL.md +451 -0
- package/bundled-skills/hunt-aspnet/SKILL.md +321 -0
- package/bundled-skills/hunt-ato/SKILL.md +184 -0
- package/bundled-skills/hunt-auth-bypass/SKILL.md +426 -0
- package/bundled-skills/hunt-auth-bypass/references/details.md +80 -0
- package/bundled-skills/hunt-brute-force/SKILL.md +341 -0
- package/bundled-skills/hunt-business-logic/SKILL.md +281 -0
- package/bundled-skills/hunt-cache-poison/SKILL.md +382 -0
- package/bundled-skills/hunt-captcha-bypass/SKILL.md +136 -0
- package/bundled-skills/hunt-cicd/SKILL.md +311 -0
- package/bundled-skills/hunt-clickjacking/SKILL.md +110 -0
- package/bundled-skills/hunt-cors/SKILL.md +335 -0
- package/bundled-skills/hunt-dom/SKILL.md +323 -0
- package/bundled-skills/hunt-exceptional-conditions/SKILL.md +111 -0
- package/bundled-skills/hunt-file-upload/SKILL.md +202 -0
- package/bundled-skills/hunt-fintech-graphql/SKILL.md +289 -0
- package/bundled-skills/hunt-forgot-password/SKILL.md +114 -0
- package/bundled-skills/hunt-grpc/SKILL.md +317 -0
- package/bundled-skills/hunt-host-header/SKILL.md +309 -0
- package/bundled-skills/hunt-html-injection/SKILL.md +106 -0
- package/bundled-skills/hunt-http-smuggling/SKILL.md +129 -0
- package/bundled-skills/hunt-http-smuggling/references/phase2h-smuggling-cachepoison.md +177 -0
- package/bundled-skills/hunt-idor/SKILL.md +434 -0
- package/bundled-skills/hunt-jwt-crypto/SKILL.md +221 -0
- package/bundled-skills/hunt-k8s/SKILL.md +337 -0
- package/bundled-skills/hunt-laravel/SKILL.md +255 -0
- package/bundled-skills/hunt-ldap/SKILL.md +351 -0
- package/bundled-skills/hunt-lfi/SKILL.md +311 -0
- package/bundled-skills/hunt-llm-ai/SKILL.md +289 -0
- package/bundled-skills/hunt-mfa-bypass/SKILL.md +177 -0
- package/bundled-skills/hunt-misc/SKILL.md +378 -0
- package/bundled-skills/hunt-nextjs/SKILL.md +299 -0
- package/bundled-skills/hunt-nodejs/SKILL.md +263 -0
- package/bundled-skills/hunt-nosqli/SKILL.md +210 -0
- package/bundled-skills/hunt-ntlm-info/SKILL.md +314 -0
- package/bundled-skills/hunt-oauth/SKILL.md +459 -0
- package/bundled-skills/hunt-open-redirect/SKILL.md +223 -0
- package/bundled-skills/hunt-race-condition/SKILL.md +381 -0
- package/bundled-skills/hunt-race-condition/references/details.md +159 -0
- package/bundled-skills/hunt-rag-vector/SKILL.md +212 -0
- package/bundled-skills/hunt-rce/SKILL.md +444 -0
- package/bundled-skills/hunt-rce/references/details.md +110 -0
- package/bundled-skills/hunt-saml/SKILL.md +156 -0
- package/bundled-skills/hunt-session/SKILL.md +342 -0
- package/bundled-skills/hunt-shadow-api/SKILL.md +198 -0
- package/bundled-skills/hunt-source-leak/SKILL.md +345 -0
- package/bundled-skills/hunt-spa-api/SKILL.md +163 -0
- package/bundled-skills/hunt-springboot/SKILL.md +285 -0
- package/bundled-skills/hunt-sqli/SKILL.md +466 -0
- package/bundled-skills/hunt-ssrf/SKILL.md +396 -0
- package/bundled-skills/hunt-ssrf/references/details.md +179 -0
- package/bundled-skills/hunt-ssti/SKILL.md +163 -0
- package/bundled-skills/hunt-subdomain/SKILL.md +379 -0
- package/bundled-skills/hunt-tls-network/SKILL.md +399 -0
- package/bundled-skills/hunt-xxe/SKILL.md +466 -0
- package/bundled-skills/i-have-adhd/SKILL.md +170 -0
- package/bundled-skills/idea-evaluator/SKILL.md +75 -0
- package/bundled-skills/idea-evaluator/idea-evaluator-con/SKILL.md +64 -0
- package/bundled-skills/idea-evaluator/idea-evaluator-pro/SKILL.md +64 -0
- package/bundled-skills/identity-access-management/SKILL.md +382 -0
- package/bundled-skills/identity-access-management/references/details.md +524 -0
- package/bundled-skills/incident-management/SKILL.md +484 -0
- package/bundled-skills/incident-response/SKILL.md +448 -0
- package/bundled-skills/incident-response/references/details.md +113 -0
- package/bundled-skills/interview-me/SKILL.md +248 -0
- package/bundled-skills/iso27001-compliance/SKILL.md +460 -0
- package/bundled-skills/jenkins/SKILL.md +462 -0
- package/bundled-skills/jev-use/SKILL.md +158 -0
- package/bundled-skills/kubernetes-hardening/SKILL.md +154 -0
- package/bundled-skills/kubernetes-ops/SKILL.md +449 -0
- package/bundled-skills/kubernetes-ops/references/details.md +108 -0
- package/bundled-skills/kustomize/SKILL.md +478 -0
- package/bundled-skills/ledger-tasks-yylo/SKILL.md +219 -0
- package/bundled-skills/linux-administration/SKILL.md +367 -0
- package/bundled-skills/linux-hardening/SKILL.md +154 -0
- package/bundled-skills/llm-app-security/SKILL.md +389 -0
- package/bundled-skills/llm-app-security/references/details.md +674 -0
- package/bundled-skills/llm-caching/SKILL.md +334 -0
- package/bundled-skills/llm-cost-optimization/SKILL.md +311 -0
- package/bundled-skills/llm-fine-tuning/SKILL.md +329 -0
- package/bundled-skills/llm-gateway/SKILL.md +282 -0
- package/bundled-skills/llm-inference-scaling/SKILL.md +286 -0
- package/bundled-skills/llmops-platform-engineering/SKILL.md +472 -0
- package/bundled-skills/load-balancing/SKILL.md +403 -0
- package/bundled-skills/loki-logging/SKILL.md +479 -0
- package/bundled-skills/loki-mode/examples/todo-app-generated/backend/package-lock.json +4 -4
- package/bundled-skills/loki-mode/examples/todo-app-generated/backend/package.json +1 -1
- package/bundled-skills/m365-entra-attack/SKILL.md +423 -0
- package/bundled-skills/mac-mini-llm-lab/SKILL.md +350 -0
- package/bundled-skills/mcp-server-security/SKILL.md +356 -0
- package/bundled-skills/mcp-server-security/references/details.md +745 -0
- package/bundled-skills/mdm-device-management/SKILL.md +404 -0
- package/bundled-skills/mdm-device-management/references/details.md +410 -0
- package/bundled-skills/meme-coin-audit/SKILL.md +402 -0
- package/bundled-skills/mid-engagement-ir-detection/SKILL.md +377 -0
- package/bundled-skills/model-registry-governance/SKILL.md +452 -0
- package/bundled-skills/model-serving-kubernetes/SKILL.md +339 -0
- package/bundled-skills/model-supply-chain-security/SKILL.md +427 -0
- package/bundled-skills/mongodb/SKILL.md +436 -0
- package/bundled-skills/multi-tenant-llm-hosting/SKILL.md +435 -0
- package/bundled-skills/multi-tenant-llm-hosting/references/details.md +211 -0
- package/bundled-skills/mysql/SKILL.md +390 -0
- package/bundled-skills/new-relic/SKILL.md +472 -0
- package/bundled-skills/nfs-storage/SKILL.md +356 -0
- package/bundled-skills/object-storage/SKILL.md +378 -0
- package/bundled-skills/offensive-osint/SKILL.md +443 -0
- package/bundled-skills/okta-attack/SKILL.md +436 -0
- package/bundled-skills/ollama-stack/SKILL.md +379 -0
- package/bundled-skills/openclaw-deployment-hardening/SKILL.md +135 -0
- package/bundled-skills/openclaw-local-mac-mini/SKILL.md +426 -0
- package/bundled-skills/openclaw-local-mac-mini/references/details.md +221 -0
- package/bundled-skills/openclaw-security-hardening/SKILL.md +135 -0
- package/bundled-skills/openshift/SKILL.md +485 -0
- package/bundled-skills/opentelemetry/SKILL.md +438 -0
- package/bundled-skills/opentelemetry/references/details.md +78 -0
- package/bundled-skills/opentofu-migration/SKILL.md +349 -0
- package/bundled-skills/osint-methodology/SKILL.md +460 -0
- package/bundled-skills/osint-methodology/references/details.md +1350 -0
- package/bundled-skills/pci-dss-compliance/SKILL.md +446 -0
- package/bundled-skills/penetration-testing/SKILL.md +152 -0
- package/bundled-skills/performance-tuning/SKILL.md +381 -0
- package/bundled-skills/plan-ledger-tasks-yylo/SKILL.md +52 -0
- package/bundled-skills/planetscale/SKILL.md +297 -0
- package/bundled-skills/platform-engineering/SKILL.md +348 -0
- package/bundled-skills/platform-engineering/references/details.md +944 -0
- package/bundled-skills/podman/SKILL.md +405 -0
- package/bundled-skills/policy-as-code/SKILL.md +434 -0
- package/bundled-skills/policy-as-code/references/details.md +204 -0
- package/bundled-skills/postgresql-devsec/SKILL.md +378 -0
- package/bundled-skills/prometheus-grafana/SKILL.md +469 -0
- package/bundled-skills/prompt-injection-defense/SKILL.md +483 -0
- package/bundled-skills/rag-infrastructure/SKILL.md +269 -0
- package/bundled-skills/rag-observability-evals/SKILL.md +444 -0
- package/bundled-skills/rag-observability-evals/references/details.md +92 -0
- package/bundled-skills/ralph-loop-yylo/SKILL.md +55 -0
- package/bundled-skills/ralph-loop-yylo/references/first_check.md +18 -0
- package/bundled-skills/ralph-loop-yylo/references/implement.md +60 -0
- package/bundled-skills/recon-scope-triage/SKILL.md +128 -0
- package/bundled-skills/redis/SKILL.md +421 -0
- package/bundled-skills/redteam-report-template/SKILL.md +370 -0
- package/bundled-skills/report-writing/SKILL.md +426 -0
- package/bundled-skills/report-writing/references/details.md +187 -0
- package/bundled-skills/resumable-implementation-contracts/SKILL.md +254 -0
- package/bundled-skills/reverse-proxy/SKILL.md +420 -0
- package/bundled-skills/runbook-creation/SKILL.md +438 -0
- package/bundled-skills/runbook-creation/references/details.md +71 -0
- package/bundled-skills/saas-security-posture/SKILL.md +415 -0
- package/bundled-skills/sast-scanning/SKILL.md +444 -0
- package/bundled-skills/sbom-supply-chain/SKILL.md +433 -0
- package/bundled-skills/security-arsenal/SKILL.md +446 -0
- package/bundled-skills/security-arsenal/references/details.md +540 -0
- package/bundled-skills/security-automation/SKILL.md +146 -0
- package/bundled-skills/semantic-versioning/SKILL.md +434 -0
- package/bundled-skills/semantic-versioning/references/details.md +83 -0
- package/bundled-skills/service-mesh/SKILL.md +422 -0
- package/bundled-skills/soc2-compliance/SKILL.md +409 -0
- package/bundled-skills/sops-encryption/SKILL.md +124 -0
- package/bundled-skills/sre-dashboards/SKILL.md +143 -0
- package/bundled-skills/ssh-configuration/SKILL.md +324 -0
- package/bundled-skills/ssl-tls-management/SKILL.md +428 -0
- package/bundled-skills/ssl-tls-management/references/details.md +99 -0
- package/bundled-skills/startup-it-troubleshooting/SKILL.md +415 -0
- package/bundled-skills/supply-chain-attack-recon/SKILL.md +453 -0
- package/bundled-skills/supply-chain-attack-recon/references/details.md +258 -0
- package/bundled-skills/systemd-services/SKILL.md +379 -0
- package/bundled-skills/terraform-aws/SKILL.md +125 -0
- package/bundled-skills/terraform-azure/SKILL.md +415 -0
- package/bundled-skills/terraform-azure/references/details.md +231 -0
- package/bundled-skills/terraform-gcp/SKILL.md +369 -0
- package/bundled-skills/threat-modeling/SKILL.md +487 -0
- package/bundled-skills/understand-project-yylo/SKILL.md +62 -0
- package/bundled-skills/user-management/SKILL.md +383 -0
- package/bundled-skills/using-agent-skills/SKILL.md +220 -0
- package/bundled-skills/vector-database-ops/SKILL.md +300 -0
- package/bundled-skills/vendor-management/SKILL.md +439 -0
- package/bundled-skills/vendor-management/references/details.md +109 -0
- package/bundled-skills/vercel-deployments/SKILL.md +296 -0
- package/bundled-skills/vllm-server/SKILL.md +236 -0
- package/bundled-skills/vmware-vcenter-attack/SKILL.md +412 -0
- package/bundled-skills/vpn-setup/SKILL.md +452 -0
- package/bundled-skills/vulnerability-scanning/SKILL.md +448 -0
- package/bundled-skills/waf-setup/SKILL.md +354 -0
- package/bundled-skills/waf-setup/references/details.md +211 -0
- package/bundled-skills/weather-model-data-fetching/SKILL.md +277 -0
- package/bundled-skills/weather-observation-fetching/SKILL.md +246 -0
- package/bundled-skills/web2-recon/SKILL.md +440 -0
- package/bundled-skills/web2-recon/references/details.md +319 -0
- package/bundled-skills/web3-audit/SKILL.md +445 -0
- package/bundled-skills/web3-audit/references/details.md +224 -0
- package/bundled-skills/wiki-yylo/SKILL.md +114 -0
- package/bundled-skills/windows-hardening/SKILL.md +454 -0
- package/bundled-skills/windows-hardening/references/details.md +204 -0
- package/bundled-skills/windows-server/SKILL.md +318 -0
- package/bundled-skills/workflow-yylo/SKILL.md +107 -0
- package/bundled-skills/zero-trust/SKILL.md +461 -0
- package/package.json +1 -1
- package/skills_index.json +6924 -0
|
@@ -0,0 +1,462 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: jenkins
|
|
3
|
+
description: Create and manage Jenkins CI/CD pipelines, configure agents, manage plugins,
|
|
4
|
+
and automate builds.
|
|
5
|
+
category: devops
|
|
6
|
+
risk: critical
|
|
7
|
+
source: https://github.com/BagelHole/DevOps-Security-Agent-Skills
|
|
8
|
+
source_repo: BagelHole/DevOps-Security-Agent-Skills
|
|
9
|
+
source_type: community
|
|
10
|
+
date_added: '2026-09-20'
|
|
11
|
+
license: MIT
|
|
12
|
+
license_source: https://github.com/BagelHole/DevOps-Security-Agent-Skills/blob/main/LICENSE
|
|
13
|
+
compatibility: Requires the relevant platform CLIs (kubectl, helm, terraform, git,
|
|
14
|
+
CI runners) and authorized access to the target environment. Docs-only; helper scripts
|
|
15
|
+
and templates not bundled.
|
|
16
|
+
metadata:
|
|
17
|
+
author: devops-skills
|
|
18
|
+
version: '1.0'
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
# Jenkins
|
|
22
|
+
|
|
23
|
+
Build, test, and deploy applications using Jenkins, the leading open-source automation server.
|
|
24
|
+
|
|
25
|
+
## When to Use This Skill
|
|
26
|
+
|
|
27
|
+
Use this skill when:
|
|
28
|
+
- Setting up Jenkins pipelines (declarative or scripted)
|
|
29
|
+
- Configuring Jenkins agents and executors
|
|
30
|
+
- Managing Jenkins plugins and security
|
|
31
|
+
- Creating shared libraries for pipeline reuse
|
|
32
|
+
- Integrating Jenkins with external tools
|
|
33
|
+
|
|
34
|
+
## Prerequisites
|
|
35
|
+
|
|
36
|
+
- Jenkins server (2.x or later)
|
|
37
|
+
- Admin access to Jenkins
|
|
38
|
+
- Java 11+ on Jenkins server
|
|
39
|
+
- Basic Groovy understanding for pipelines
|
|
40
|
+
|
|
41
|
+
## Declarative Pipeline
|
|
42
|
+
|
|
43
|
+
Create `Jenkinsfile` in repository root:
|
|
44
|
+
|
|
45
|
+
```groovy
|
|
46
|
+
pipeline {
|
|
47
|
+
agent any
|
|
48
|
+
|
|
49
|
+
environment {
|
|
50
|
+
DOCKER_REGISTRY = 'registry.example.com'
|
|
51
|
+
APP_NAME = 'myapp'
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
stages {
|
|
55
|
+
stage('Build') {
|
|
56
|
+
steps {
|
|
57
|
+
sh 'npm ci'
|
|
58
|
+
sh 'npm run build'
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
stage('Test') {
|
|
63
|
+
steps {
|
|
64
|
+
sh 'npm test'
|
|
65
|
+
}
|
|
66
|
+
post {
|
|
67
|
+
always {
|
|
68
|
+
junit 'test-results/*.xml'
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
stage('Deploy') {
|
|
74
|
+
when {
|
|
75
|
+
branch 'main'
|
|
76
|
+
}
|
|
77
|
+
steps {
|
|
78
|
+
sh './deploy.sh'
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
post {
|
|
84
|
+
failure {
|
|
85
|
+
mail to: 'team@example.com',
|
|
86
|
+
subject: "Pipeline Failed: ${env.JOB_NAME}",
|
|
87
|
+
body: "Check console output at ${env.BUILD_URL}"
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
## Agent Configuration
|
|
94
|
+
|
|
95
|
+
### Docker Agent
|
|
96
|
+
|
|
97
|
+
```groovy
|
|
98
|
+
pipeline {
|
|
99
|
+
agent {
|
|
100
|
+
docker {
|
|
101
|
+
image 'node:20'
|
|
102
|
+
args '-v /tmp:/tmp'
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
stages {
|
|
106
|
+
stage('Build') {
|
|
107
|
+
steps {
|
|
108
|
+
sh 'npm ci && npm run build'
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
### Kubernetes Agent
|
|
116
|
+
|
|
117
|
+
```groovy
|
|
118
|
+
pipeline {
|
|
119
|
+
agent {
|
|
120
|
+
kubernetes {
|
|
121
|
+
yaml '''
|
|
122
|
+
apiVersion: v1
|
|
123
|
+
kind: Pod
|
|
124
|
+
spec:
|
|
125
|
+
containers:
|
|
126
|
+
- name: node
|
|
127
|
+
image: node:20
|
|
128
|
+
command:
|
|
129
|
+
- sleep
|
|
130
|
+
args:
|
|
131
|
+
- infinity
|
|
132
|
+
- name: docker
|
|
133
|
+
image: docker:24-dind
|
|
134
|
+
securityContext:
|
|
135
|
+
privileged: true
|
|
136
|
+
'''
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
stages {
|
|
140
|
+
stage('Build') {
|
|
141
|
+
steps {
|
|
142
|
+
container('node') {
|
|
143
|
+
sh 'npm ci && npm run build'
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
### Labeled Agents
|
|
152
|
+
|
|
153
|
+
```groovy
|
|
154
|
+
pipeline {
|
|
155
|
+
agent { label 'linux && docker' }
|
|
156
|
+
stages {
|
|
157
|
+
stage('Build') {
|
|
158
|
+
steps {
|
|
159
|
+
sh 'make build'
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
## Parameters
|
|
167
|
+
|
|
168
|
+
```groovy
|
|
169
|
+
pipeline {
|
|
170
|
+
agent any
|
|
171
|
+
|
|
172
|
+
parameters {
|
|
173
|
+
string(name: 'BRANCH', defaultValue: 'main', description: 'Branch to build')
|
|
174
|
+
choice(name: 'ENVIRONMENT', choices: ['dev', 'staging', 'prod'], description: 'Target environment')
|
|
175
|
+
booleanParam(name: 'RUN_TESTS', defaultValue: true, description: 'Run tests?')
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
stages {
|
|
179
|
+
stage('Deploy') {
|
|
180
|
+
when {
|
|
181
|
+
expression { params.ENVIRONMENT == 'prod' }
|
|
182
|
+
}
|
|
183
|
+
steps {
|
|
184
|
+
sh "deploy.sh ${params.ENVIRONMENT}"
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
## Credentials
|
|
192
|
+
|
|
193
|
+
### Using Credentials
|
|
194
|
+
|
|
195
|
+
```groovy
|
|
196
|
+
pipeline {
|
|
197
|
+
agent any
|
|
198
|
+
|
|
199
|
+
environment {
|
|
200
|
+
AWS_CREDS = credentials('aws-credentials')
|
|
201
|
+
DOCKER_CREDS = credentials('docker-hub')
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
stages {
|
|
205
|
+
stage('Deploy') {
|
|
206
|
+
steps {
|
|
207
|
+
withCredentials([
|
|
208
|
+
usernamePassword(
|
|
209
|
+
credentialsId: 'github-token',
|
|
210
|
+
usernameVariable: 'GH_USER',
|
|
211
|
+
passwordVariable: 'GH_TOKEN'
|
|
212
|
+
)
|
|
213
|
+
]) {
|
|
214
|
+
sh 'git push https://${GH_USER}:${GH_TOKEN}@github.com/repo.git'
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
## Parallel Stages
|
|
223
|
+
|
|
224
|
+
```groovy
|
|
225
|
+
pipeline {
|
|
226
|
+
agent any
|
|
227
|
+
|
|
228
|
+
stages {
|
|
229
|
+
stage('Tests') {
|
|
230
|
+
parallel {
|
|
231
|
+
stage('Unit Tests') {
|
|
232
|
+
steps {
|
|
233
|
+
sh 'npm run test:unit'
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
stage('Integration Tests') {
|
|
237
|
+
steps {
|
|
238
|
+
sh 'npm run test:integration'
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
stage('E2E Tests') {
|
|
242
|
+
steps {
|
|
243
|
+
sh 'npm run test:e2e'
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
## Shared Libraries
|
|
253
|
+
|
|
254
|
+
### Library Structure
|
|
255
|
+
|
|
256
|
+
```
|
|
257
|
+
vars/
|
|
258
|
+
├── buildApp.groovy
|
|
259
|
+
├── deployApp.groovy
|
|
260
|
+
└── notifySlack.groovy
|
|
261
|
+
src/
|
|
262
|
+
└── com/example/
|
|
263
|
+
└── Pipeline.groovy
|
|
264
|
+
resources/
|
|
265
|
+
└── templates/
|
|
266
|
+
└── deployment.yaml
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
### Define Shared Step
|
|
270
|
+
|
|
271
|
+
```groovy
|
|
272
|
+
// vars/buildApp.groovy
|
|
273
|
+
def call(Map config = [:]) {
|
|
274
|
+
def nodeVersion = config.nodeVersion ?: '20'
|
|
275
|
+
|
|
276
|
+
docker.image("node:${nodeVersion}").inside {
|
|
277
|
+
sh 'npm ci'
|
|
278
|
+
sh 'npm run build'
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
### Use Shared Library
|
|
284
|
+
|
|
285
|
+
```groovy
|
|
286
|
+
@Library('my-shared-library') _
|
|
287
|
+
|
|
288
|
+
pipeline {
|
|
289
|
+
agent any
|
|
290
|
+
|
|
291
|
+
stages {
|
|
292
|
+
stage('Build') {
|
|
293
|
+
steps {
|
|
294
|
+
buildApp(nodeVersion: '20')
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
stage('Deploy') {
|
|
298
|
+
steps {
|
|
299
|
+
deployApp(environment: 'staging')
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
post {
|
|
305
|
+
failure {
|
|
306
|
+
notifySlack(channel: '#builds', status: 'FAILED')
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
```
|
|
311
|
+
|
|
312
|
+
## Scripted Pipeline
|
|
313
|
+
|
|
314
|
+
```groovy
|
|
315
|
+
node('linux') {
|
|
316
|
+
try {
|
|
317
|
+
stage('Checkout') {
|
|
318
|
+
checkout scm
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
stage('Build') {
|
|
322
|
+
docker.image('node:20').inside {
|
|
323
|
+
sh 'npm ci'
|
|
324
|
+
sh 'npm run build'
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
stage('Test') {
|
|
329
|
+
sh 'npm test'
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
if (env.BRANCH_NAME == 'main') {
|
|
333
|
+
stage('Deploy') {
|
|
334
|
+
sh './deploy.sh'
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
} catch (e) {
|
|
338
|
+
currentBuild.result = 'FAILURE'
|
|
339
|
+
throw e
|
|
340
|
+
} finally {
|
|
341
|
+
cleanWs()
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
```
|
|
345
|
+
|
|
346
|
+
## Plugin Management
|
|
347
|
+
|
|
348
|
+
### Essential Plugins
|
|
349
|
+
|
|
350
|
+
```groovy
|
|
351
|
+
// Install via Jenkins CLI or init.groovy.d
|
|
352
|
+
def plugins = [
|
|
353
|
+
'workflow-aggregator', // Pipeline
|
|
354
|
+
'git', // Git integration
|
|
355
|
+
'docker-workflow', // Docker Pipeline
|
|
356
|
+
'kubernetes', // Kubernetes agent
|
|
357
|
+
'credentials-binding', // Credentials
|
|
358
|
+
'blueocean', // Blue Ocean UI
|
|
359
|
+
'job-dsl', // Job DSL
|
|
360
|
+
'configuration-as-code' // JCasC
|
|
361
|
+
]
|
|
362
|
+
```
|
|
363
|
+
|
|
364
|
+
### Configuration as Code
|
|
365
|
+
|
|
366
|
+
```yaml
|
|
367
|
+
# jenkins.yaml
|
|
368
|
+
jenkins:
|
|
369
|
+
systemMessage: "Jenkins configured via JCasC"
|
|
370
|
+
numExecutors: 2
|
|
371
|
+
|
|
372
|
+
securityRealm:
|
|
373
|
+
local:
|
|
374
|
+
users:
|
|
375
|
+
- id: admin
|
|
376
|
+
password: ${ADMIN_PASSWORD}
|
|
377
|
+
|
|
378
|
+
authorizationStrategy:
|
|
379
|
+
globalMatrix:
|
|
380
|
+
permissions:
|
|
381
|
+
- "Overall/Administer:admin"
|
|
382
|
+
- "Overall/Read:authenticated"
|
|
383
|
+
|
|
384
|
+
credentials:
|
|
385
|
+
system:
|
|
386
|
+
domainCredentials:
|
|
387
|
+
- credentials:
|
|
388
|
+
- usernamePassword:
|
|
389
|
+
id: "docker-hub"
|
|
390
|
+
username: "user"
|
|
391
|
+
password: ${DOCKER_PASSWORD}
|
|
392
|
+
```
|
|
393
|
+
|
|
394
|
+
## Multibranch Pipeline
|
|
395
|
+
|
|
396
|
+
```groovy
|
|
397
|
+
// Automatically discovers branches with Jenkinsfile
|
|
398
|
+
// Configure in Jenkins UI: New Item > Multibranch Pipeline
|
|
399
|
+
|
|
400
|
+
// Branch-specific behavior in Jenkinsfile
|
|
401
|
+
pipeline {
|
|
402
|
+
agent any
|
|
403
|
+
|
|
404
|
+
stages {
|
|
405
|
+
stage('Deploy') {
|
|
406
|
+
when {
|
|
407
|
+
anyOf {
|
|
408
|
+
branch 'main'
|
|
409
|
+
branch 'release/*'
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
steps {
|
|
413
|
+
sh './deploy.sh'
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
}
|
|
417
|
+
}
|
|
418
|
+
```
|
|
419
|
+
|
|
420
|
+
## Common Issues
|
|
421
|
+
|
|
422
|
+
### Issue: Pipeline Syntax Errors
|
|
423
|
+
**Problem**: Jenkinsfile fails to parse
|
|
424
|
+
**Solution**: Use Pipeline Syntax generator in Jenkins UI, validate with `jenkins-cli`
|
|
425
|
+
|
|
426
|
+
### Issue: Agent Not Connecting
|
|
427
|
+
**Problem**: Build agents disconnect
|
|
428
|
+
**Solution**: Check agent logs, verify network connectivity, increase timeout settings
|
|
429
|
+
|
|
430
|
+
### Issue: Out of Memory
|
|
431
|
+
**Problem**: Jenkins crashes or builds fail with OOM
|
|
432
|
+
**Solution**: Increase heap size in `JAVA_OPTS`, clean up old builds
|
|
433
|
+
|
|
434
|
+
## Best Practices
|
|
435
|
+
|
|
436
|
+
- Use declarative pipelines for most use cases
|
|
437
|
+
- Implement shared libraries for reusable code
|
|
438
|
+
- Store Jenkinsfile in source control
|
|
439
|
+
- Use credentials plugin for secrets management
|
|
440
|
+
- Implement proper cleanup in post blocks
|
|
441
|
+
- Configure build retention policies
|
|
442
|
+
- Use Blue Ocean for modern UI experience
|
|
443
|
+
|
|
444
|
+
## Related Skills
|
|
445
|
+
|
|
446
|
+
- github-actions (`github-actions`) - GitHub native CI/CD
|
|
447
|
+
- kubernetes-ops (`kubernetes-ops`) - K8s deployment target
|
|
448
|
+
- docker-management (`docker-management`) - Container builds
|
|
449
|
+
|
|
450
|
+
## Limitations
|
|
451
|
+
|
|
452
|
+
- Guidance executes against real environments: confirm target, blast radius, and rollback plan before applying anything.
|
|
453
|
+
- Never deploy to production without explicit approval. Docs-only import: upstream scripts and templates not bundled.
|
|
454
|
+
|
|
455
|
+
### Example
|
|
456
|
+
|
|
457
|
+
```bash
|
|
458
|
+
git status && git diff --stat
|
|
459
|
+
kubectl diff -f manifest.yaml
|
|
460
|
+
```
|
|
461
|
+
|
|
462
|
+
> Adapted from [BagelHole/DevOps-Security-Agent-Skills](https://github.com/BagelHole/DevOps-Security-Agent-Skills) (MIT); frontmatter, When to Use/Limitations, and safety boundaries added for upstream compliance. Docs-only import: helper scripts and templates not bundled.
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: jev-use
|
|
3
|
+
description: "Route enumerable judgment steps - did it work, which option, how risky, is this safe to run - to the Jev judgment model through the jev_judge and jev_gate MCP tools, batched into one call per state."
|
|
4
|
+
category: agent-orchestration
|
|
5
|
+
risk: safe
|
|
6
|
+
source: community
|
|
7
|
+
source_repo: shitianfang/jev-use
|
|
8
|
+
source_type: community
|
|
9
|
+
date_added: "2026-09-19"
|
|
10
|
+
author: shitianfang
|
|
11
|
+
tags: [agent-orchestration, mcp, routing, judgment, escalation]
|
|
12
|
+
tools: [claude, codex]
|
|
13
|
+
license: "MIT"
|
|
14
|
+
license_source: "https://github.com/shitianfang/jev-use/blob/main/LICENSE"
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
# Jev Use
|
|
18
|
+
|
|
19
|
+
## Overview
|
|
20
|
+
|
|
21
|
+
Splits an agent loop by whether a step must produce text. Steps that only produce a decision - is the build done, which of these 30 elements to click, is this shell command safe, keep or drop this message - are handed to Jev, TypeSafe's judgment model, which answers typed yes/no, pick-one and score questions about a state in one forward pass instead of generating tokens. The agent stays the planner and the writer; Jev takes the quick calls.
|
|
22
|
+
|
|
23
|
+
Everything Jev should not decide comes back under a typed escalation contract, so the handoff is explicit in both directions rather than a guess.
|
|
24
|
+
|
|
25
|
+
## When to Use This Skill
|
|
26
|
+
|
|
27
|
+
- Use when the next step is a judgment over context you already have ("did X succeed?", "which option?", "how bad is this?") rather than something to write.
|
|
28
|
+
- Use when you are about to check the same state several times in a row, so the questions can be batched into one call.
|
|
29
|
+
- Use when you want a risk check on a proposed tool call before running it.
|
|
30
|
+
- Do not use when the step must produce new content - text, code, free-form tool arguments - or when the options cannot be enumerated. Those are structurally the model's own work.
|
|
31
|
+
|
|
32
|
+
## How It Works
|
|
33
|
+
|
|
34
|
+
### Step 1: Install and wire the server
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
npx -y jev-use install
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
`install` wires the stdio MCP server into Claude Code, Codex and pi through each harness's own CLI - whichever it finds - and `npx -y jev-use doctor` verifies backend resolution with one live round trip. Set a provider credential in the environment the agent runs in (`TYPESAFE_API_KEY`, `OPENROUTER_API_KEY` or `AI_GATEWAY_API_KEY`, auto-detected in that order), or set `JEV_BACKEND=mock` to run keyless with no network calls.
|
|
41
|
+
|
|
42
|
+
### Step 2: Route each step before working on it
|
|
43
|
+
|
|
44
|
+
| The step is... | Route |
|
|
45
|
+
| ----------------------------------------------------------- | -------------------- |
|
|
46
|
+
| Producing new content: text, code, free-form tool args | You |
|
|
47
|
+
| A judgment, but the options can't be enumerated | You |
|
|
48
|
+
| A yes/no or "did it work?" over context you already have | `jev_judge` (`noul`) |
|
|
49
|
+
| Picking the next action from options you can list | `jev_judge` (`choice`) |
|
|
50
|
+
| Rating quality/severity/urgency on levels you can describe | `jev_judge` (`score`) |
|
|
51
|
+
| "Is this action safe to run?" before something risky | `jev_gate` |
|
|
52
|
+
|
|
53
|
+
### Step 3: Batch every question about one state into one call
|
|
54
|
+
|
|
55
|
+
`jev_judge` takes a single `state` string plus a `questions[]` array. Latency is flat in question count, and the cost of the shared state amortizes across the batch, so 13 batched questions cost far less than 13 separate calls. Never call it once per question.
|
|
56
|
+
|
|
57
|
+
### Step 4: Honor the escalation contract
|
|
58
|
+
|
|
59
|
+
Each verdict carries `{id, type, answer, confidence, escalate}`, plus `reason` and `hint` exactly when `escalate` is true. An escalated verdict is handed back to you - it is a normal verdict with a hint, never an exception:
|
|
60
|
+
|
|
61
|
+
| `reason` | When | What it means for you |
|
|
62
|
+
| ------------- | --------- | ---------------------------------------------------------------- |
|
|
63
|
+
| `writing` | pre-call | The step must produce new text or code - structurally yours. |
|
|
64
|
+
| `open_ended` | pre-call | Not expressible as `noul`/`choice`/`score`; nothing to enumerate. |
|
|
65
|
+
| `oversized` | pre-call | The state exceeds the size limit - shrink it or take the questions over. |
|
|
66
|
+
| `unsure` | post-call | The answer is too flat to act on; it stays in `answer` as a prior. |
|
|
67
|
+
| `unreachable` | on failure| Jev could not be reached - proceed as if it did not exist. |
|
|
68
|
+
|
|
69
|
+
The two pre-call reasons come from a deterministic router, so a step that was never Jev's does not spend a request.
|
|
70
|
+
|
|
71
|
+
## Examples
|
|
72
|
+
|
|
73
|
+
### Example 1: One state, three questions, one call
|
|
74
|
+
|
|
75
|
+
```jsonc
|
|
76
|
+
// jev_judge input
|
|
77
|
+
{
|
|
78
|
+
"state": "CI run #142: build ok, 214 tests passed, 0 failed; 1 test quarantined as flaky last week",
|
|
79
|
+
"questions": [
|
|
80
|
+
{ "id": "passed", "type": "noul", "question": "Did the run fully succeed?" },
|
|
81
|
+
{ "id": "next", "type": "choice", "question": "Next action?",
|
|
82
|
+
"options": { "merge": "everything green", "rerun": "looks flaky", "hold": "needs attention" } },
|
|
83
|
+
{ "id": "risk", "type": "score", "question": "How risky is merging now?",
|
|
84
|
+
"levels": ["routine", "worth a look", "incident"] }
|
|
85
|
+
]
|
|
86
|
+
}
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
```jsonc
|
|
90
|
+
// result (shape exact, values illustrative)
|
|
91
|
+
{
|
|
92
|
+
"verdicts": [
|
|
93
|
+
{ "id": "passed", "type": "noul", "answer": 0.97, "confidence": 0.94, "escalate": false },
|
|
94
|
+
{ "id": "next", "type": "choice", "answer": "merge", "confidence": 0.34, "escalate": true,
|
|
95
|
+
"reason": "unsure",
|
|
96
|
+
"hint": "Treat the answer as a prior, not a decision - reason it out yourself." },
|
|
97
|
+
{ "id": "risk", "type": "score", "answer": 0.8, "confidence": 0.81, "escalate": false,
|
|
98
|
+
"legend": { "0": "routine", "1": "worth a look", "2": "incident" } }
|
|
99
|
+
],
|
|
100
|
+
"escalated": true
|
|
101
|
+
}
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
Two verdicts are usable immediately. The third came back escalated with `reason: "unsure"`, so that one question - and only that one - returns to you, with Jev's answer kept as a hint.
|
|
105
|
+
|
|
106
|
+
A `score` answer is the expected position on your own levels: `0.8` means "between *routine* and *worth a look*, closer to the latter", and `legend` maps the indices back to your words.
|
|
107
|
+
|
|
108
|
+
### Example 2: Risk check before a tool call
|
|
109
|
+
|
|
110
|
+
```jsonc
|
|
111
|
+
// jev_gate input
|
|
112
|
+
{
|
|
113
|
+
"state": "Cleaning up build output in the project checkout after a failed release build",
|
|
114
|
+
"tool": "Bash",
|
|
115
|
+
"input": { "command": "rm -rf ./dist" }
|
|
116
|
+
}
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
```jsonc
|
|
120
|
+
// result
|
|
121
|
+
{ "decision": "deny", "confidence": 0.88, "hint": "..." }
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
`jev_gate` returns `allow`, `deny` or `escalate` for one proposed action. `allow` is silence: it falls through to the harness's normal permission flow, so the gate can never grant anything - it can only deny or ask. If Jev is unreachable the gate steps aside rather than granting.
|
|
125
|
+
|
|
126
|
+
## Best Practices
|
|
127
|
+
|
|
128
|
+
- ✅ **Do:** Collect every question you have about one state and send them in a single `jev_judge` call.
|
|
129
|
+
- ✅ **Do:** Put the relevant facts - tool output, file excerpts, task intent - into `state`. Jev sees nothing else about your session.
|
|
130
|
+
- ✅ **Do:** Read `escalate` on every verdict before acting on `answer`.
|
|
131
|
+
- ✅ **Do:** Describe `options` and `levels` in your own words; a `label -> meaning` map sharpens a `choice`.
|
|
132
|
+
- ❌ **Don't:** Call `jev_judge` once per question.
|
|
133
|
+
- ❌ **Don't:** Route trivia. If you already know the answer, just act - a call you did not need is still a call.
|
|
134
|
+
- ❌ **Don't:** Treat an `unsure` answer as a decision, or treat `allow` from `jev_gate` as authorization.
|
|
135
|
+
|
|
136
|
+
## Limitations
|
|
137
|
+
|
|
138
|
+
- Jev judges only what is in `state`; it has no view of your conversation, repository or tool history, so a thin `state` produces a thin judgment.
|
|
139
|
+
- State has a size ceiling (roughly 30k tokens). Beyond it the request escalates as `oversized` instead of being judged.
|
|
140
|
+
- Confidence is not uniform across backends: the default escalation threshold is `0.75`, but through the Vercel gateway no confidence field is returned and a top-minus-runner-up margin is used instead, with a default threshold of `0.4`.
|
|
141
|
+
- The advantage is narrower than an unconfigured comparison suggests. The project publishes its losing runs in [bench/RESULTS.md](https://github.com/shitianfang/jev-use/blob/main/bench/RESULTS.md): against enum-constrained baselines the latency lead is about 3x, not the 14x an unconstrained comparison shows. The benchmarks in [bench/examples/](https://github.com/shitianfang/jev-use/tree/main/bench/examples) are re-runnable scripts, so check the claim on your own workload.
|
|
142
|
+
- This skill does not replace environment-specific validation, testing, or expert review.
|
|
143
|
+
|
|
144
|
+
## Security & Safety Notes
|
|
145
|
+
|
|
146
|
+
- **Data egress:** whatever you put in `state` is sent to the provider you configure. Keep secrets, credentials and customer data out of it, or set `JEV_BACKEND=mock`, which judges locally with no key and no network call.
|
|
147
|
+
- **Credentials:** the provider key is read from the environment (`TYPESAFE_API_KEY`, `OPENROUTER_API_KEY`, `AI_GATEWAY_API_KEY`). Never paste a key into a `state` string, a prompt, or a committed file.
|
|
148
|
+
- **`jev_gate` is not a permission system.** It can deny or ask; it cannot grant. Keep your harness's own approval rules in place, and expect the gate to step aside if the backend is down.
|
|
149
|
+
- `npx -y jev-use install` edits local harness configuration through each harness's own CLI. Run it on a machine you control and re-run `npx -y jev-use doctor` afterwards to see what resolved.
|
|
150
|
+
|
|
151
|
+
## Common Pitfalls
|
|
152
|
+
|
|
153
|
+
- **Problem:** Verdicts come back consistently `unsure`.
|
|
154
|
+
**Solution:** The state is usually missing the fact the question depends on. Put the concrete tool output or file excerpt into `state` instead of a summary of it, and give `options`/`levels` distinguishable meanings.
|
|
155
|
+
- **Problem:** The call escalates with `reason: "oversized"`.
|
|
156
|
+
**Solution:** Trim `state` to the evidence the questions actually need, or split one oversized state into two smaller judged states.
|
|
157
|
+
- **Problem:** The step never reaches Jev and returns `writing` or `open_ended`.
|
|
158
|
+
**Solution:** That is the router working. The step was structurally yours; do it yourself rather than rephrasing it to get past the check.
|