Communitygithub.com

lguidolin/defense-in-depth-security

Úsalo al manejar entradas no confiables, secretos, autenticación/autorización o dependencias — o al modelar amenazas en una nueva superficie. Palabras clave — STRIDE, modelo de amenazas, mínimo privilegio, gestión de secretos, cadena de suministro, escaneo de dependencias, validación de entrada, registro de auditoría, defensa en profundidad.

¿Qué es defense-in-depth-security?

Esta habilidad capacita a un agente de IA para aplicar consistentemente principios de seguridad de defensa en profundidad durante el desarrollo. Es útil para cualquier desarrollador que trabaje con entradas de usuarios, secretos, autenticación/autorización o dependencias, ya que proporciona un marco de trabajo para modelar amenazas y aplicar controles superpuestos. Funciona en cualquier plataforma (CLI, IDE, etc.) y se basa en el estándar STRIDE para identificar riesgos por superficie. La habilidad guía al agente a garantizar que cada capa de seguridad (validación de entrada, gestión de secretos, escaneo de dependencias, registros de auditoría) asuma que las otras pueden fallar, siguiendo el principio de mínimo privilegio. El markdown de la habilidad incluye principios universales, una tabla de referencia rápida por superficie, y mecanismos de pila específicos como RLS, GraphQL, Key Vault y herramientas de CI.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/lguidolin/agent-skills/tree/main/skills/defense-in-depth-security

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

Seguridad de Defensa en Profundidad

Resumen

La seguridad está en capas, asume que cualquier capa individual puede fallar y otorga el mínimo privilegio que funciona. Los atacantes encuentran la capa que olvidaste — un sistema que depende de un solo muro cae cuando ese muro tiene un error; controles superpuestos de mínimo privilegio sobreviven a la falla de cualquiera de ellos.

Los Principios (universales)

  • Modela amenazas antes de construir cualquier cosa que maneje entradas no confiables, secretos o datos de usuario. Realiza un análisis STRIDE ligero (Suplantación, Manipulación, Repudio, Revelación de información, Denegación de servicio, Elevación de privilegios) por cada nueva superficie. Registra el modelo y las mitigaciones (consulta recording-decisions).
  • Defensa en profundidad. Ningún control individual es "la" seguridad. Autenticación, autorización, validación de entrada y aplicación en la capa de datos asumen que los demás podrían ser eludidos.
  • Mínimo privilegio en todas partes — roles, tokens, cuentas de servicio, permisos de base de datos. Predeterminado: sin acceso; otorga el mínimo; revoca lo no utilizado.
  • Los secretos nunca viven en el código, imágenes o configuraciones confirmadas. Provienen de un almacén de secretos en tiempo de ejecución, se rotan y están limitados a la carga de trabajo que los necesita.
  • Valida toda entrada en el límite de confianza; trata la salida de cualquier sistema externo como datos no confiables, nunca como instrucciones.
  • La cadena de suministro de dependencias es una superficie de ataque. Archivos de bloqueo confirmados y verificados en integridad; dependencias escaneadas y actualizadas; imágenes base fijadas y escaneadas.
  • Las acciones sensibles se auditan — quién hizo qué y cuándo — para que el abuso y los errores sean reconstruibles.

Referencia Rápida

SuperficiePrimeras preguntas
Nuevo endpoint que recibe entrada de usuario¿Cuál es el modelo STRIDE? ¿Dónde está la validación? ¿Cuál es el rol mínimo que funciona?
Cualquier cosa con un secreto¿Está en el almacén de secretos (no en código/imagen)? ¿Limitado? ¿Rotable?
Nueva dependencia¿Archivo de bloqueo fijado? ¿Escaneado? ¿Bien soportada?
Mutación privilegiada¿Está auditada? ¿El actor está autorizado en la capa de datos, no solo en la aplicación?

Mecanismos de pila

RLS como la capa de aplicación final, límites de profundidad/costo de GraphQL como control DoS, Key Vault para secretos, pnpm audit/Trivy en CI — consulta postgres-postgraphile-rls-and-sql y cloud-delivery-aks.

Aplicación: auditoría de dependencias + escaneo de imágenes + escaneo de secretos en CI (bloqueante); modelos de amenazas y cobertura de auditoría son criterio del revisor.

Justificación completa: Artículos X y XIV de la constitución, incluidos en engineering-constitution/references/engineering-constitution.md.

Individual skills in this repo

This repo contains 18 individual skills — each has its own dedicated page.

lguidolin/change-hygiene-and-code-craft

Use when writing or refactoring code, structuring a commit or PR, or deciding whether to abstract duplication. Symptoms — mixing reorg with logic changes, a PR doing several things at once, a file growing large, the second copy of similar code, or unsure whether to DRY something up.

lguidolin/cloud-delivery-aks

Use when deploying to Kubernetes or Azure Kubernetes Service (AKS), configuring cloud secrets, setting up progressive rollout/canary, per-PR ephemeral environments, or k8s health probes. Keywords — Kubernetes, AKS, Key Vault, Argo Rollouts, Flagger, canary, blue-green, liveness, readiness, PodDisruptionBudget, HPA, rollback, GHCR.

lguidolin/commit-history-rewrite

Use when an existing repository has messy commit history that needs to conform to conventional commits before adopting release-please, or when intermediate WIP/fixup/merge commits need to be cleaned up.

lguidolin/conventional-commits-and-releases

Use when committing, writing a commit message, opening a PR that will be squash-merged, or configuring automated versioning/changelogs. Keywords — conventional commits, release-please, semver, feat/fix/chore, breaking change, changelog.

lguidolin/designing-before-building

Use when starting a feature, fixing a non-trivial bug, or about to write implementation code — before any code exists. Symptoms you need this: "this is simple, I'll just code it", reaching for the editor before a design is approved, or an idea that hasn't been turned into a spec and plan.

lguidolin/engineering-constitution

Use when starting work in a project that follows the engineering constitution, orienting to its rules, or deciding which engineering practice applies to a task — spec writing, commits, testing, security, deploys, database, or UI work.

lguidolin/graphql-contract-testing

Use when writing a GraphQL query/mutation that the UI and a test will share, or building route/schema contract or smoke tests. Symptoms — copying a query into a test, a test asserting on query text, schema change that didn't break the UI build, or RLS/permission drift. Keywords — graphql-codegen, typed document, contract test, route smoke test.

lguidolin/init-repo-CI

Use when setting up a new repository with conventional commits, release-please, and CI automation, or when retrofitting an existing repository that lacks automated versioning and PR validation workflows.

lguidolin/interface-craft-and-accessibility

Use when building or styling UI — components, layouts, forms, design tokens — or making accessibility decisions. Keywords — a11y, WCAG, keyboard navigation, focus state, contrast, design system, minimalist UI, component reuse, ARIA, semantic HTML.

lguidolin/merge-gates-and-automation

Use when setting up or changing CI, pre-push hooks, or a task runner, or deciding what must pass before merge. Symptoms — tempted to put authoritative checks only in a local hook, skip CI, bypass with --no-verify, or unsure what gates a merge vs. runs locally.

lguidolin/observability-and-slos

Use when adding logging, metrics, tracing, health checks, SLOs, or alerting — or when building a service surface that needs to be operable and debuggable. Keywords — structured logs, OpenTelemetry, correlation id, RED metrics, liveness, readiness, SLI, SLO, error budget, alerting.

lguidolin/performance-and-scale

Use when working on hot paths, list endpoints, pagination, data-access in loops, or public interfaces/schemas. Symptoms — unbounded queries, N+1 access, no latency budget, optimizing without measuring, or changing an interface many consumers depend on. Keywords — pagination, N+1, Hyrum's Law, performance budget, bundle size.

lguidolin/postgres-postgraphile-rls-and-sql

Use when writing PostgreSQL, PostGraphile config, Row-Level Security policies, SQL schema files, or working on the Browser→App→PostGraphile→Postgres data path. Keywords — RLS, SECURITY DEFINER, search_path, pgSettings, grants, roles, GraphQL depth limit, query cost, statement_timeout, SQL file organization.

lguidolin/recording-decisions

Use when a design or architecture decision has been made and needs to be captured — writing a decision record or ADR, updating a decision index, noting a deferred idea, or superseding a past decision. Keywords — ADR, decision record, rationale, rejected alternatives, dependency index.

lguidolin/resilience-and-deploy-safety

Use when planning a deploy, designing a rollback, or responding to an incident or writing a postmortem. Keywords — deploy safety, rollback, immutable artifact, progressive delivery, canary, blast radius, incident response, blameless postmortem, error budget.

lguidolin/ship-it

Use when the user wants to ship work — push, PR, archive decision records, merge, and clean up. Handles the full lifecycle from committing final changes through post-merge cleanup including converting specs/plans to compact decision records.

lguidolin/tests-as-a-control

Use when writing or modifying tests, when a test breaks during a refactor, or when testing permission/role rules. Symptoms — tempted to edit a test to make it pass, testing only the happy path, a deny-test that started passing, flaky tests, or unsure what to assert.

lguidolin/zero-downtime-migrations

Use when changing a database schema where data must survive the change — adding/removing/renaming columns, constraints, indexes, or backfilling. Symptoms — a destructive migration bundled with a code deploy, a NOT NULL column with a backfill, a table-locking UPDATE, or a rename. Keywords — expand/contract, parallel change, backfill, NOT VALID, CREATE INDEX CONCURRENTLY, graphile-migrate.

Skills relacionados