{
  "site": {
    "title": "Agent Skills",
    "tagline": "As skills que operam na minha máquina, prontas para a sua.",
    "base_url": "https://skills.bassi.engineer",
    "author": "André Bassi",
    "author_url": "https://bassi.engineer"
  },
  "categories": {
    "workflow": {
      "label": "Fluxo de trabalho",
      "hint": "como o agente conduz o trabalho"
    },
    "infra": {
      "label": "Infraestrutura",
      "hint": "máquina, build e rede"
    },
    "docs": {
      "label": "Documentação",
      "hint": "o que fica escrito depois"
    }
  },
  "generated_at": "2026-08-29T16:39:51+00:00",
  "skills": [
    {
      "name": "tailcat",
      "description": "Túnel ponto a ponto cifrado com WireGuard sem conta, sem daemon e sem root — o tailcat da Tailscale (netcat sobre o data plane, sem o control plane). Instalação por go install medida nesta máquina, o fluxo servidor/token/cliente, expor porta, SSH sem auth, SOCKS5, exit node, chave efêmera contra chave salva e o caminho REAL das chaves no macOS (o README erra). Use quando o usuário pedir tailcat, um túnel rápido entre duas máquinas sem VPN, expor uma porta local para alguém, mandar arquivo ou stdin para outra máquina, SSH sem abrir porta, ou quando citar addrblob, token tc..., DERP ou tailcat.dev.",
      "summary": "netcat sobre o data plane da Tailscale. Um lado sobe servidor e recebe um token; o outro usa o token e o túnel fecha, cifrado ponta a ponta. Sem conta, sem root, sem mexer em rota nem DNS — é biblioteca em espaço de usuário.",
      "lines": 192,
      "bytes": 15290,
      "files": [
        "SKILL.md",
        "Taskfile.yaml",
        "scripts/01-install.sh",
        "scripts/02-smoke-test.sh"
      ],
      "digest": "679079d1269c",
      "category": "infra",
      "featured": true
    },
    {
      "name": "wait-on-long-jobs",
      "description": "Como esperar por trabalho demorado — deploy do Ansible, build no robô, run do GitHub Actions, apply do Terraform, pipeline do GLPI — sem queimar turno em laço de sleep. Traz a ordem de escolha (notificação da própria ferramenta > Monitor com until > ScheduleWakeup), os dois comandos que o guardrail bloqueia, e o custo medido de fazer errado. Use quando um comando passar de ~2 minutos, quando for esperar deploy, build, CI, provisionamento ou robô voltar a ficar online, ou quando aparecer a vontade de rodar sleep, pgrep em laço ou for i in $(seq …).",
      "summary": "O trabalho demorado (deploy, build, CI, apply, robô offline) não se espera com laço de sleep. O harness já avisa quando termina; um laço só duplica o que ele faz e consome turno, contexto e paciência do dono.",
      "lines": 57,
      "bytes": 3296,
      "files": [
        "SKILL.md"
      ],
      "digest": "dc3ed3f5a918",
      "category": "workflow",
      "featured": true
    },
    {
      "name": "llms-txt",
      "description": "Padrão fixo do arquivo llms.txt — esqueleto obrigatório de seções, as sete regras não negociáveis (URL absoluta em tudo, número medido e nunca estimado, mais detalhado que o README, sem marketing), comandos de coleta dos fatos com a stack no ar, a seção obrigatória no README e a verificação antes de commitar. Use quando o usuário pedir llms.txt ou llms.gtxt.",
      "summary": "Sempre que eu pedir um llms.txt (ou escrever \"llms.gtxt\", que é o mesmo pedido), vale isto, textualmente:",
      "lines": 185,
      "bytes": 8996,
      "files": [
        "SKILL.md"
      ],
      "digest": "d20e1e44e850",
      "category": "docs",
      "featured": true
    },
    {
      "name": "aiox-sdd",
      "description": "Framework AIOX de Spec-Driven Development — fluxo obrigatorio analyst, pm, architect, sm, dev, qa, devops, com a estrutura fixa docs/prd.md, docs/architecture.md e docs/stories/{epic}.{story}.{nome}.md, os formatos completos de PRD, Architecture e Story, as regras de executor versus quality gate e o fluxo de implementacao story a story. Use quando o usuario pedir para criar ou fazer um SDD, PRD, product requirements, arquitetura, design do sistema, stories, fragmentar em stories, iniciar novo projeto com specs, seguir ou usar o AIOX, ou quando disser implementa num projeto que tenha docs/prd.md e docs/stories/.",
      "summary": "Quando o usuario pedir para criar um SDD, PRD, arquitetura, stories, ou iniciar um novo projeto com specs, SEMPRE seguir o framework AIOX.",
      "lines": 166,
      "bytes": 7487,
      "files": [
        "SKILL.md"
      ],
      "digest": "04e0f76efdc5",
      "category": "workflow",
      "featured": false
    },
    {
      "name": "nix-linux-builder",
      "description": "Builder Linux sob demanda para o Nix no Mac — VM aarch64-linux que sobe só quando um build precisa dela e é derrubada depois, com a espera de prontidão que evita falhar no primeiro uso. Traz o setup já feito (trusted-users, /etc/nix/machines, alias de SSH, chaves) e as cinco armadilhas medidas. Use quando um build Nix falhar por arquitetura, quando o usuário pedir para compilar para Linux/ARM/robô/servidor a partir do Mac, disser sobe o builder, desce o builder, o nix não compila pra linux, ou perguntar por que nix build reclama de system aarch64-linux.",
      "summary": "O Mac é aarch64-darwin. Qualquer derivação para aarch64-linux (robô, Jetson, Raspberry, servidor ARM) ou x86_64-linux precisa de um builder Linux — o Nix não emula sozinho.",
      "lines": 251,
      "bytes": 10111,
      "files": [
        "SKILL.md"
      ],
      "digest": "ef37272f17e7",
      "category": "infra",
      "featured": false
    },
    {
      "name": "postmortem-report",
      "description": "Geração de postmortem e relatório em PDF — as sete seções obrigatórias, a pergunta de idioma, e a regra de usar Chrome headless (nunca weasyprint ou wkhtmltopdf) com o script gerar-pdf.sh. Use depois de uma investigação, quando o usuário pedir postmortem, relatório em PDF, ou documentar um incidente.",
      "summary": "After EVERY investigation, ask via AskUserQuestion: 1. Generate PDF postmortem? (Yes/No) 2. Language for report? (English/Portuguese)",
      "lines": 38,
      "bytes": 1395,
      "files": [
        "SKILL.md"
      ],
      "digest": "bd2e8a0a8ec8",
      "category": "docs",
      "featured": false
    },
    {
      "name": "simulate-on-edge",
      "description": "Simular percurso ou estado entra pelo ponto mais próximo de quem desenha, não pela ponta mais distante — endpoint de lote autenticado em vez de mover GPS de celular por sete elos que falham calados, o critério para saber se o atalho é honesto, e a proibição de afrouxar limite de produção para caber a simulação. Use quando o usuário pedir para simular percurso, viagem, trajeto, dado de teste na tela, ou testar como algo aparece para o usuário.",
      "summary": "Quando a pergunta for \"como isso aparece na tela\", os dados de teste entram pelo ponto mais próximo de quem desenha — não pela ponta mais distante da cadeia.",
      "lines": 112,
      "bytes": 5358,
      "files": [
        "SKILL.md"
      ],
      "digest": "c68b88552b88",
      "category": "workflow",
      "featured": false
    },
    {
      "name": "lid-nosleep",
      "description": "Liga e desliga o bloqueio de sono do macOS (pmset disablesleep) para que o YubiKey nao perca energia com a tampa fechada e o PIN do cartao OpenPGP nao zere — janela padrao de 2 horas, revert automatico e guarda de boot, sem senha via sudoers de escopo minimo. Use quando o usuario disser: liga o no-sleep, desliga o no-sleep, nao deixa dormir, nao dorme com a tampa fechada, segura acordado, trava o sono, modo tampa fechada, vou fechar o laptop, vou fechar a tampa, fechei o laptop e pediu a senha de novo, libera o sono, volta a dormir, pode dormir de novo, cansei de digitar o PIN, o yubikey esta pedindo PIN toda hora, ta ligado o no-sleep, quanto falta da janela, ou perguntar por que o gpg pede o PIN depois do wake.",
      "summary": "Não pede senha: o /etc/sudoers.d/lid-nosleep libera só os dois pmset exatos. Instalação (uma vez, essa sim pede a senha):",
      "lines": 106,
      "bytes": 9779,
      "files": [
        "SKILL.md",
        "scripts/install-sudoers.sh",
        "scripts/lid-nosleep.sh"
      ],
      "digest": "dc8a112da1a4",
      "category": "infra",
      "featured": false
    },
    {
      "name": "caveman",
      "description": ">",
      "summary": "Respond terse like smart caveman. All technical substance stay. Only fluff die.",
      "lines": 67,
      "bytes": 4724,
      "files": [
        "LICENSE",
        "SKILL.md"
      ],
      "digest": "7745f7d63769",
      "category": "workflow",
      "featured": false,
      "author": "Julius Brussee",
      "license": "MIT",
      "source": "https://github.com/JuliusBrussee/caveman"
    }
  ]
}