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,438 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: arm-templates
|
|
3
|
+
description: Deploy Azure resources with ARM templates and Bicep. Create modular deployments
|
|
4
|
+
and manage dependencies. Use when deploying Azure-native IaC.
|
|
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 OS/platform tooling and privileged access where
|
|
14
|
+
noted. Docs-only; helper scripts and templates not bundled.
|
|
15
|
+
metadata:
|
|
16
|
+
author: devops-skills
|
|
17
|
+
version: '1.0'
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
# ARM Templates & Bicep
|
|
21
|
+
|
|
22
|
+
Deploy Azure infrastructure with ARM templates and Bicep. Bicep is the recommended domain-specific language that compiles to ARM JSON, offering cleaner syntax, modules, and first-class tooling support.
|
|
23
|
+
|
|
24
|
+
## Prerequisites
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
# Install Azure CLI
|
|
28
|
+
curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash
|
|
29
|
+
|
|
30
|
+
# Install Bicep CLI (bundled with Azure CLI 2.20+)
|
|
31
|
+
az bicep install
|
|
32
|
+
az bicep upgrade
|
|
33
|
+
|
|
34
|
+
# Verify installation
|
|
35
|
+
az bicep version
|
|
36
|
+
|
|
37
|
+
# Login and set subscription
|
|
38
|
+
az login
|
|
39
|
+
az account set --subscription "my-subscription-id"
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Bicep Fundamentals
|
|
43
|
+
|
|
44
|
+
### Resource Group Deployment with Virtual Network
|
|
45
|
+
|
|
46
|
+
```bicep
|
|
47
|
+
// main.bicep
|
|
48
|
+
@description('Azure region for all resources')
|
|
49
|
+
param location string = resourceGroup().location
|
|
50
|
+
|
|
51
|
+
@description('Environment name used for resource naming')
|
|
52
|
+
@allowed(['dev', 'staging', 'prod'])
|
|
53
|
+
param environment string = 'dev'
|
|
54
|
+
|
|
55
|
+
@description('Base name for all resources')
|
|
56
|
+
param baseName string
|
|
57
|
+
|
|
58
|
+
var vnetName = '${baseName}-${environment}-vnet'
|
|
59
|
+
var nsgName = '${baseName}-${environment}-nsg'
|
|
60
|
+
|
|
61
|
+
resource nsg 'Microsoft.Network/networkSecurityGroups@2023-05-01' = {
|
|
62
|
+
name: nsgName
|
|
63
|
+
location: location
|
|
64
|
+
properties: {
|
|
65
|
+
securityRules: [
|
|
66
|
+
{
|
|
67
|
+
name: 'AllowHTTPS'
|
|
68
|
+
properties: {
|
|
69
|
+
priority: 100
|
|
70
|
+
direction: 'Inbound'
|
|
71
|
+
access: 'Allow'
|
|
72
|
+
protocol: 'Tcp'
|
|
73
|
+
sourcePortRange: '*'
|
|
74
|
+
destinationPortRange: '443'
|
|
75
|
+
sourceAddressPrefix: '*'
|
|
76
|
+
destinationAddressPrefix: '*'
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
{
|
|
80
|
+
name: 'DenyAllInbound'
|
|
81
|
+
properties: {
|
|
82
|
+
priority: 4096
|
|
83
|
+
direction: 'Inbound'
|
|
84
|
+
access: 'Deny'
|
|
85
|
+
protocol: '*'
|
|
86
|
+
sourcePortRange: '*'
|
|
87
|
+
destinationPortRange: '*'
|
|
88
|
+
sourceAddressPrefix: '*'
|
|
89
|
+
destinationAddressPrefix: '*'
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
]
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
resource vnet 'Microsoft.Network/virtualNetworks@2023-05-01' = {
|
|
97
|
+
name: vnetName
|
|
98
|
+
location: location
|
|
99
|
+
properties: {
|
|
100
|
+
addressSpace: {
|
|
101
|
+
addressPrefixes: [
|
|
102
|
+
'10.0.0.0/16'
|
|
103
|
+
]
|
|
104
|
+
}
|
|
105
|
+
subnets: [
|
|
106
|
+
{
|
|
107
|
+
name: 'web-subnet'
|
|
108
|
+
properties: {
|
|
109
|
+
addressPrefix: '10.0.1.0/24'
|
|
110
|
+
networkSecurityGroup: {
|
|
111
|
+
id: nsg.id
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
{
|
|
116
|
+
name: 'app-subnet'
|
|
117
|
+
properties: {
|
|
118
|
+
addressPrefix: '10.0.2.0/24'
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
{
|
|
122
|
+
name: 'data-subnet'
|
|
123
|
+
properties: {
|
|
124
|
+
addressPrefix: '10.0.3.0/24'
|
|
125
|
+
privateEndpointNetworkPolicies: 'Enabled'
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
]
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
output vnetId string = vnet.id
|
|
133
|
+
output webSubnetId string = vnet.properties.subnets[0].id
|
|
134
|
+
output appSubnetId string = vnet.properties.subnets[1].id
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
### VM Deployment with Managed Identity
|
|
138
|
+
|
|
139
|
+
```bicep
|
|
140
|
+
// vm.bicep
|
|
141
|
+
param location string = resourceGroup().location
|
|
142
|
+
param vmName string
|
|
143
|
+
param subnetId string
|
|
144
|
+
param adminUsername string = 'azureuser'
|
|
145
|
+
|
|
146
|
+
@secure()
|
|
147
|
+
param adminPublicKey string
|
|
148
|
+
|
|
149
|
+
resource nic 'Microsoft.Network/networkInterfaces@2023-05-01' = {
|
|
150
|
+
name: '${vmName}-nic'
|
|
151
|
+
location: location
|
|
152
|
+
properties: {
|
|
153
|
+
ipConfigurations: [
|
|
154
|
+
{
|
|
155
|
+
name: 'ipconfig1'
|
|
156
|
+
properties: {
|
|
157
|
+
privateIPAllocationMethod: 'Dynamic'
|
|
158
|
+
subnet: {
|
|
159
|
+
id: subnetId
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
]
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
resource vm 'Microsoft.Compute/virtualMachines@2023-07-01' = {
|
|
168
|
+
name: vmName
|
|
169
|
+
location: location
|
|
170
|
+
identity: {
|
|
171
|
+
type: 'SystemAssigned'
|
|
172
|
+
}
|
|
173
|
+
properties: {
|
|
174
|
+
hardwareProfile: {
|
|
175
|
+
vmSize: 'Standard_B2s'
|
|
176
|
+
}
|
|
177
|
+
osProfile: {
|
|
178
|
+
computerName: vmName
|
|
179
|
+
adminUsername: adminUsername
|
|
180
|
+
linuxConfiguration: {
|
|
181
|
+
disablePasswordAuthentication: true
|
|
182
|
+
ssh: {
|
|
183
|
+
publicKeys: [
|
|
184
|
+
{
|
|
185
|
+
path: '/home/${adminUsername}/.ssh/authorized_keys'
|
|
186
|
+
keyData: adminPublicKey
|
|
187
|
+
}
|
|
188
|
+
]
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
storageProfile: {
|
|
193
|
+
imageReference: {
|
|
194
|
+
publisher: 'Canonical'
|
|
195
|
+
offer: '0001-com-ubuntu-server-jammy'
|
|
196
|
+
sku: '22_04-lts-gen2'
|
|
197
|
+
version: 'latest'
|
|
198
|
+
}
|
|
199
|
+
osDisk: {
|
|
200
|
+
createOption: 'FromImage'
|
|
201
|
+
managedDisk: {
|
|
202
|
+
storageAccountType: 'Premium_LRS'
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
networkProfile: {
|
|
207
|
+
networkInterfaces: [
|
|
208
|
+
{
|
|
209
|
+
id: nic.id
|
|
210
|
+
}
|
|
211
|
+
]
|
|
212
|
+
}
|
|
213
|
+
diagnosticsProfile: {
|
|
214
|
+
bootDiagnostics: {
|
|
215
|
+
enabled: true
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
output vmPrincipalId string = vm.identity.principalId
|
|
222
|
+
output vmId string = vm.id
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
## Bicep Modules
|
|
226
|
+
|
|
227
|
+
### Module Definition
|
|
228
|
+
|
|
229
|
+
```bicep
|
|
230
|
+
// modules/storage.bicep
|
|
231
|
+
@description('Storage account name (3-24 chars, lowercase alphanumeric)')
|
|
232
|
+
param storageAccountName string
|
|
233
|
+
|
|
234
|
+
param location string = resourceGroup().location
|
|
235
|
+
param sku string = 'Standard_LRS'
|
|
236
|
+
|
|
237
|
+
@allowed(['Hot', 'Cool', 'Archive'])
|
|
238
|
+
param accessTier string = 'Hot'
|
|
239
|
+
|
|
240
|
+
resource storageAccount 'Microsoft.Storage/storageAccounts@2023-01-01' = {
|
|
241
|
+
name: storageAccountName
|
|
242
|
+
location: location
|
|
243
|
+
sku: {
|
|
244
|
+
name: sku
|
|
245
|
+
}
|
|
246
|
+
kind: 'StorageV2'
|
|
247
|
+
properties: {
|
|
248
|
+
accessTier: accessTier
|
|
249
|
+
supportsHttpsTrafficOnly: true
|
|
250
|
+
minimumTlsVersion: 'TLS1_2'
|
|
251
|
+
allowBlobPublicAccess: false
|
|
252
|
+
networkAcls: {
|
|
253
|
+
defaultAction: 'Deny'
|
|
254
|
+
bypass: 'AzureServices'
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
output storageAccountId string = storageAccount.id
|
|
260
|
+
output primaryBlobEndpoint string = storageAccount.properties.primaryEndpoints.blob
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
### Consuming Modules
|
|
264
|
+
|
|
265
|
+
```bicep
|
|
266
|
+
// main.bicep
|
|
267
|
+
param location string = resourceGroup().location
|
|
268
|
+
param environment string = 'prod'
|
|
269
|
+
|
|
270
|
+
module storage 'modules/storage.bicep' = {
|
|
271
|
+
name: 'storage-deployment'
|
|
272
|
+
params: {
|
|
273
|
+
storageAccountName: 'myapp${environment}sa'
|
|
274
|
+
location: location
|
|
275
|
+
sku: environment == 'prod' ? 'Standard_GRS' : 'Standard_LRS'
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
module vnet 'modules/network.bicep' = {
|
|
280
|
+
name: 'vnet-deployment'
|
|
281
|
+
params: {
|
|
282
|
+
location: location
|
|
283
|
+
environment: environment
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
// Reference module outputs
|
|
288
|
+
output storageBlobEndpoint string = storage.outputs.primaryBlobEndpoint
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
## ARM JSON Template Structure
|
|
292
|
+
|
|
293
|
+
```json
|
|
294
|
+
{
|
|
295
|
+
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
|
|
296
|
+
"contentVersion": "1.0.0.0",
|
|
297
|
+
"parameters": {
|
|
298
|
+
"storageAccountName": {
|
|
299
|
+
"type": "string",
|
|
300
|
+
"metadata": {
|
|
301
|
+
"description": "Name of the storage account"
|
|
302
|
+
}
|
|
303
|
+
},
|
|
304
|
+
"location": {
|
|
305
|
+
"type": "string",
|
|
306
|
+
"defaultValue": "[resourceGroup().location]"
|
|
307
|
+
}
|
|
308
|
+
},
|
|
309
|
+
"variables": {
|
|
310
|
+
"storageSku": "Standard_LRS"
|
|
311
|
+
},
|
|
312
|
+
"resources": [
|
|
313
|
+
{
|
|
314
|
+
"type": "Microsoft.Storage/storageAccounts",
|
|
315
|
+
"apiVersion": "2023-01-01",
|
|
316
|
+
"name": "[parameters('storageAccountName')]",
|
|
317
|
+
"location": "[parameters('location')]",
|
|
318
|
+
"sku": {
|
|
319
|
+
"name": "[variables('storageSku')]"
|
|
320
|
+
},
|
|
321
|
+
"kind": "StorageV2",
|
|
322
|
+
"properties": {
|
|
323
|
+
"supportsHttpsTrafficOnly": true,
|
|
324
|
+
"minimumTlsVersion": "TLS1_2"
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
],
|
|
328
|
+
"outputs": {
|
|
329
|
+
"storageId": {
|
|
330
|
+
"type": "string",
|
|
331
|
+
"value": "[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName'))]"
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
```
|
|
336
|
+
|
|
337
|
+
## Deployment Commands
|
|
338
|
+
|
|
339
|
+
```bash
|
|
340
|
+
# Validate a Bicep template before deployment
|
|
341
|
+
az deployment group validate \
|
|
342
|
+
--resource-group mygroup \
|
|
343
|
+
--template-file main.bicep \
|
|
344
|
+
--parameters environment='prod' baseName='myapp'
|
|
345
|
+
|
|
346
|
+
# Preview changes with What-If
|
|
347
|
+
az deployment group what-if \
|
|
348
|
+
--resource-group mygroup \
|
|
349
|
+
--template-file main.bicep \
|
|
350
|
+
--parameters environment='prod' baseName='myapp'
|
|
351
|
+
|
|
352
|
+
# Deploy Bicep to resource group
|
|
353
|
+
az deployment group create \
|
|
354
|
+
--resource-group mygroup \
|
|
355
|
+
--template-file main.bicep \
|
|
356
|
+
--parameters environment='prod' baseName='myapp' \
|
|
357
|
+
--name "deploy-$(date +%Y%m%d-%H%M%S)"
|
|
358
|
+
|
|
359
|
+
# Deploy ARM JSON with parameter file
|
|
360
|
+
az deployment group create \
|
|
361
|
+
--resource-group mygroup \
|
|
362
|
+
--template-file template.json \
|
|
363
|
+
--parameters @parameters.prod.json
|
|
364
|
+
|
|
365
|
+
# Subscription-level deployment (e.g., resource groups, policies)
|
|
366
|
+
az deployment sub create \
|
|
367
|
+
--location eastus \
|
|
368
|
+
--template-file subscription-level.bicep \
|
|
369
|
+
--parameters @params.json
|
|
370
|
+
|
|
371
|
+
# Management group deployment
|
|
372
|
+
az deployment mg create \
|
|
373
|
+
--management-group-id my-mg \
|
|
374
|
+
--location eastus \
|
|
375
|
+
--template-file mg-policy.bicep
|
|
376
|
+
|
|
377
|
+
# Export resource group to ARM JSON
|
|
378
|
+
az group export --name mygroup --output json > exported-template.json
|
|
379
|
+
|
|
380
|
+
# Decompile ARM JSON to Bicep
|
|
381
|
+
az bicep decompile --file exported-template.json
|
|
382
|
+
|
|
383
|
+
# Build Bicep to ARM JSON (for inspection)
|
|
384
|
+
az bicep build --file main.bicep --outfile main.json
|
|
385
|
+
|
|
386
|
+
# List deployments and their status
|
|
387
|
+
az deployment group list \
|
|
388
|
+
--resource-group mygroup \
|
|
389
|
+
--output table
|
|
390
|
+
|
|
391
|
+
# Delete a failed deployment
|
|
392
|
+
az deployment group delete \
|
|
393
|
+
--resource-group mygroup \
|
|
394
|
+
--name my-failed-deployment
|
|
395
|
+
```
|
|
396
|
+
|
|
397
|
+
## Parameter Files
|
|
398
|
+
|
|
399
|
+
```json
|
|
400
|
+
// parameters.prod.json
|
|
401
|
+
{
|
|
402
|
+
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
|
|
403
|
+
"contentVersion": "1.0.0.0",
|
|
404
|
+
"parameters": {
|
|
405
|
+
"environment": { "value": "prod" },
|
|
406
|
+
"baseName": { "value": "myapp" },
|
|
407
|
+
"adminPublicKey": {
|
|
408
|
+
"reference": {
|
|
409
|
+
"keyVault": {
|
|
410
|
+
"id": "/subscriptions/{sub-id}/resourceGroups/{rg}/providers/Microsoft.KeyVault/vaults/{vault}"
|
|
411
|
+
},
|
|
412
|
+
"secretName": "ssh-public-key"
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
}
|
|
417
|
+
```
|
|
418
|
+
|
|
419
|
+
|
|
420
|
+
## Contents
|
|
421
|
+
|
|
422
|
+
- [Linked and Nested Templates](references/details.md)
|
|
423
|
+
- [Troubleshooting](references/details.md)
|
|
424
|
+
- [Related Skills](references/details.md)
|
|
425
|
+
|
|
426
|
+
## When to Use
|
|
427
|
+
|
|
428
|
+
- You need Azure-native Infrastructure as Code without third-party tooling.
|
|
429
|
+
- Your organization standardizes on Azure and wants tight portal integration.
|
|
430
|
+
- You need What-If analysis before deploying changes.
|
|
431
|
+
- You are migrating existing ARM JSON templates to Bicep for maintainability.
|
|
432
|
+
- You need deployment scopes at resource group, subscription, management group, or tenant level.
|
|
433
|
+
|
|
434
|
+
## Limitations
|
|
435
|
+
|
|
436
|
+
- Infrastructure commands can disrupt services: confirm target host/scope and have backups/snapshots before mutating state.
|
|
437
|
+
- Docs-only import: upstream scripts and templates not bundled.
|
|
438
|
+
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# Details (moved from SKILL.md)
|
|
2
|
+
|
|
3
|
+
> Extended reference content for `arm-templates`, kept under `references/` so the entrypoint stays within the audit budget.
|
|
4
|
+
|
|
5
|
+
## Linked and Nested Templates
|
|
6
|
+
|
|
7
|
+
```bicep
|
|
8
|
+
// Deploy to a different resource group
|
|
9
|
+
module networkInSharedRg 'modules/network.bicep' = {
|
|
10
|
+
name: 'shared-network'
|
|
11
|
+
scope: resourceGroup('shared-networking-rg')
|
|
12
|
+
params: {
|
|
13
|
+
location: location
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
// Conditional deployment
|
|
18
|
+
param deployMonitoring bool = true
|
|
19
|
+
|
|
20
|
+
module monitoring 'modules/monitoring.bicep' = if (deployMonitoring) {
|
|
21
|
+
name: 'monitoring-deployment'
|
|
22
|
+
params: {
|
|
23
|
+
location: location
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
// Loop deployment
|
|
28
|
+
param storageAccounts array = [
|
|
29
|
+
{ name: 'logs', sku: 'Standard_LRS' }
|
|
30
|
+
{ name: 'data', sku: 'Standard_GRS' }
|
|
31
|
+
]
|
|
32
|
+
|
|
33
|
+
module storageLoop 'modules/storage.bicep' = [for account in storageAccounts: {
|
|
34
|
+
name: 'storage-${account.name}'
|
|
35
|
+
params: {
|
|
36
|
+
storageAccountName: '${baseName}${account.name}sa'
|
|
37
|
+
sku: account.sku
|
|
38
|
+
location: location
|
|
39
|
+
}
|
|
40
|
+
}]
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
## Troubleshooting
|
|
45
|
+
|
|
46
|
+
| Symptom | Cause | Fix |
|
|
47
|
+
|---------|-------|-----|
|
|
48
|
+
| `InvalidTemplate` error | Syntax error in ARM JSON or Bicep | Run `az bicep build` to check for compile errors |
|
|
49
|
+
| `ResourceNotFound` during deployment | Resource dependency not declared | Add `dependsOn` or use implicit references in Bicep |
|
|
50
|
+
| `DeploymentFailed` with quota error | Subscription quota exceeded | Request quota increase or use a different region |
|
|
51
|
+
| `AuthorizationFailed` | Insufficient RBAC permissions | Assign Contributor role on the target resource group |
|
|
52
|
+
| Parameter file secrets in source control | Secrets stored as plain text | Use Key Vault references in parameter files |
|
|
53
|
+
| Deployment takes very long | Large number of resources deployed serially | Use `dependsOn` carefully to allow parallel deployment |
|
|
54
|
+
| `What-If` shows unexpected deletions | Complete mode instead of Incremental | Use `--mode Incremental` (the default) to avoid deleting unmanaged resources |
|
|
55
|
+
| Bicep module not found | Incorrect relative path | Verify path is relative to the consuming file |
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
## Related Skills
|
|
59
|
+
|
|
60
|
+
- `terraform-azure` -- Multi-cloud IaC alternative with broader provider support.
|
|
61
|
+
- `azure-networking` -- VNet, NSG, and firewall configurations referenced in templates.
|
|
62
|
+
- `azure-vms` -- Virtual machine sizing and configuration details.
|
|
63
|
+
- `azure-aks` -- Kubernetes cluster definitions for Bicep/ARM.
|
|
64
|
+
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: artifact-yylo
|
|
3
|
+
description: Capture and retrieve durable YYLO Ledger artifact Records with intentional
|
|
4
|
+
profiles, payload modes, provenance, retention, and secret-safe immutable evidence.
|
|
5
|
+
category: project-management
|
|
6
|
+
risk: safe
|
|
7
|
+
source: https://github.com/yylo-dev/yylo-skills
|
|
8
|
+
source_repo: yylo-dev/yylo-skills
|
|
9
|
+
source_type: community
|
|
10
|
+
date_added: '2026-09-19'
|
|
11
|
+
license: MIT
|
|
12
|
+
license_source: https://github.com/yylo-dev/yylo-skills/blob/main/LICENSE
|
|
13
|
+
compatibility: Requires the `yy` CLI with the `artifact` record group installed. Captures
|
|
14
|
+
immutable, secret-safe evidence with provenance and retention; never publishes or
|
|
15
|
+
deploys.
|
|
16
|
+
argument-hint: '[artifact or evidence to capture/find/inspect]'
|
|
17
|
+
enable-shell-directives: true
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
# Use YYLO artifact Records
|
|
21
|
+
|
|
22
|
+
Treat Ledger as the source of truth for artifact identity and metadata. Use
|
|
23
|
+
`yy ledger` in a YYLO controller or `yylo-ledger` standalone. Inspect
|
|
24
|
+
`COMMAND artifact --help`; if unavailable, do not create store files manually.
|
|
25
|
+
A Ledger Artifact Record is durable evidence, not an npm/Python release artifact
|
|
26
|
+
and not an implicit request to publish or deploy.
|
|
27
|
+
|
|
28
|
+
## Classify before capture
|
|
29
|
+
|
|
30
|
+
Choose the profile matching the evidence:
|
|
31
|
+
|
|
32
|
+
- `stdout`: bounded process output;
|
|
33
|
+
- `model-output`: an agent/model response;
|
|
34
|
+
- `report`: a generated human- or machine-readable result;
|
|
35
|
+
- `receipt`: evidence binding an operation and its inputs/outcome.
|
|
36
|
+
|
|
37
|
+
Choose payload mode deliberately:
|
|
38
|
+
|
|
39
|
+
- `inline`: small immutable bytes embedded in the Record;
|
|
40
|
+
- `local`: immutable content-addressed bytes in Ledger storage;
|
|
41
|
+
- `external`: immutable external bytes with URI, digest, and size;
|
|
42
|
+
- `link`: URI reference without an immutable-byte guarantee.
|
|
43
|
+
|
|
44
|
+
Prefer immutable evidence when later verification depends on exact bytes. A link
|
|
45
|
+
must never be presented as content-addressed proof.
|
|
46
|
+
|
|
47
|
+
## Create explicitly
|
|
48
|
+
|
|
49
|
+
Use file/stdin transport and provide the media type:
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
yy ledger artifact create --title "Focused test report" --profile report \
|
|
53
|
+
--mode local --media-type application/json --file report.json
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
For external immutable content, provide the supported URI, SHA-256 digest, and
|
|
57
|
+
size shown by installed help. Never embed URI credentials. Ledger rejects unsafe
|
|
58
|
+
schemes, traversal, size/digest mismatches, oversized capture, and known secret
|
|
59
|
+
patterns.
|
|
60
|
+
|
|
61
|
+
Attach only supported, non-secret provenance such as actor, agent, model,
|
|
62
|
+
session, run, invocation, task, or workflow identity. Task/workflow provenance
|
|
63
|
+
uses immutable Record IDs. Select `temporary`, `standard`, or `permanent`
|
|
64
|
+
retention deliberately; retention metadata does not itself authorize deletion.
|
|
65
|
+
|
|
66
|
+
## Operational-document boundary
|
|
67
|
+
|
|
68
|
+
Store new PDRs, architecture and migration contracts, plans, reports, receipts,
|
|
69
|
+
and execution evidence as Artifact Records. Draft through a fresh external file,
|
|
70
|
+
capture it with an intentional profile and immutable payload mode, read it back,
|
|
71
|
+
and verify its ID, digest, size, provenance, retention, and history before
|
|
72
|
+
removing the draft. Use the `report` profile for human-readable PDRs/contracts
|
|
73
|
+
unless installed help provides a more specific approved profile.
|
|
74
|
+
|
|
75
|
+
Product `docs/` is only for documentation shipped as part of the product. Never
|
|
76
|
+
put operational evidence there to manufacture a task product diff. Preserve
|
|
77
|
+
legacy `.juno_task/specs` files, but do not create new ones as a fallback. If the
|
|
78
|
+
installed artifact API is unavailable, stop with the external draft intact and
|
|
79
|
+
request a Ledger upgrade; do not put it in task bodies, responses, product docs,
|
|
80
|
+
or manually managed controller paths.
|
|
81
|
+
|
|
82
|
+
## Find and verify
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
yy ledger artifact search --profile report --projection summary --limit 20 -f json
|
|
86
|
+
yy ledger artifact get RECORD_ID -f json
|
|
87
|
+
yy ledger artifact history RECORD_ID -f ndjson
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
Use bounded metadata/summary projections before requesting payload details.
|
|
91
|
+
Verify profile, mode, media type, digest, size, provenance, retention, revision,
|
|
92
|
+
and immutable ID before relying on evidence.
|
|
93
|
+
|
|
94
|
+
Artifact payloads are immutable evidence. Represent replacement with explicit
|
|
95
|
+
predecessor/successor relationships and the installed revision-safe update
|
|
96
|
+
contract; do not overwrite bytes or edit content objects. Archive is a lifecycle
|
|
97
|
+
transition, not deletion. Release, publication, external upload, retention
|
|
98
|
+
execution, and production mutation always require separate authority.
|
|
99
|
+
|
|
100
|
+
## Complete request
|
|
101
|
+
|
|
102
|
+
$ARGUMENTS
|
|
103
|
+
|
|
104
|
+
## When to Use
|
|
105
|
+
|
|
106
|
+
- You need to capture or retrieve durable YYLO Ledger artifact Records (stdout, model-output, report, receipt) with provenance, retention, and immutable payloads.
|
|
107
|
+
- New operational PDRs, contracts, plans, reports, and receipts belong here - not in product docs, task bodies, or new `.juno_task/specs` files.
|
|
108
|
+
|
|
109
|
+
## Limitations
|
|
110
|
+
|
|
111
|
+
- Payloads are immutable: represent replacement with predecessor/successor relations, never by overwriting bytes. Archive is a lifecycle transition, not deletion.
|
|
112
|
+
- Secret-safe only: never embed URI credentials; Ledger rejects unsafe schemes, traversal, size/digest mismatches, and known secret patterns.
|
|
113
|
+
- Retention metadata never authorizes deletion; release, publication, upload, and production mutation always need separate authority.
|
|
114
|
+
|
|
115
|
+
### Example
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
yy ledger artifact search --profile report --projection summary --limit 20 -f json
|
|
119
|
+
yy ledger artifact get RECORD_ID -f json
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
> Adapted from [yylo-dev/yylo-skills](https://github.com/yylo-dev/yylo-skills) (MIT) - v2.0.1; frontmatter, When to Use/Limitations, and safety boundaries added for upstream compliance.
|