/** * Skill Security Scanner — skills externas são NÃO CONFIÁVEIS por padrão. * * Varredura estática do conteúdo da skill por: * - prompt injection (ex.: "ignore suas instruções", "system prompt") * - instruções perigosas (rm -rf, desabilitar segurança, exfiltrar dados) * - scripts inesperados (bash/curl/powershell com destinos suspeitos) * - permissões excessivas declaradas no frontmatter * - dependências de rede/filesystem suspeitas * * Classificação: LOW / MEDIUM / HIGH / CRITICAL. Nunca conceder permissões * desnecessárias. */ import type { RiskLevel, SkillScanResult } from '../types.js'; import type { TrustTier } from './policy.js'; export type { TrustTier }; export interface TrustDecision { verdict: 'allow' | 'warn' | 'block'; reason: string; } /** Decide se um SkillScanResult deve ser permitido/avisado/bloqueado para o trust tier dado. */ export declare function decideByTrustTier(result: SkillScanResult, tier: TrustTier): TrustDecision; export interface ScannerRule { id: string; severity: RiskLevel; regex: RegExp; message: string; } export declare class SkillScanner { /** * Escaneia o conteúdo de uma skill (SKILL.md) e retorna resultado. * `allowlist` são regras ignoradas (ex.: skills internas curadas). * * Match em contexto de negação (skill ENSINANDO a evitar o padrão, ex. * "nunca hardcode senhas") é tratado como informação, não instrução. */ scan(skillName: string, content: string, opts?: { path?: string; allowlist?: string[]; trustTier?: TrustTier; }): SkillScanResult; /** Escaneia uma skill no disco. */ scanFile(skillName: string, file: string, allowlist?: string[], trustTier?: TrustTier): SkillScanResult; /** * Escaneia todas as skills resolvíveis do diretório base. Trust tier é * inferido pela origem: `skills/generated/` → generated, `skills/` (curada * pelo framework) → builtin, `.agents/skills/` (skills locais do projeto * consumidor, potencialmente de terceiros) → community. */ scanDirectory(baseDir: string, allowlist?: string[]): SkillScanResult[]; } //# sourceMappingURL=skill-scanner.d.ts.map