Skip to content
Development
Skill

/aminet-scanner

Multi-layer virus scanning for Aminet packages. Signature-based detection, heuristic hunk analysis, boot block scanning, quarantine management, and scan orchestration. Use when scanning packages, checking virus status, or managing quarantine.

From plugin
gsd-skill-creator
71102 skills61 agents26 commands1 MCP

Claude Code

$ npx -y skills add Tibsfox/gsd-skill-creator --skill aminet-scanner --agent claude-code

SKILL.md

aminet-scanner.SKILL.md
name: aminet-scanner
description: "Multi-layer virus scanning for Aminet packages. Signature-based detection, heuristic hunk analysis, boot block scanning, quarantine management, and scan orchestration. Use when scanning packages, checking virus status, or managing quarantine."
metadata:
  extensions:
    gsd-skill-creator:
      triggers:
        intents:
          - "scan.*aminet|aminet.*scan"
          - "virus.*check|check.*virus"
          - "quarantine"
          - "heuristic.*scan"
        files:
          - "src/aminet/signature-scanner.ts"
          - "src/aminet/heuristic-scanner.ts"
          - "src/aminet/scan-orchestrator.ts"
          - "src/aminet/quarantine.ts"
          - "src/aminet/signature-db.ts"
        contexts:
          - "aminet virus scanning"
          - "package security"
        threshold: 0.7
      token_budget: "1.5%"
      version: 1
      enabled: true
      plan_origin: "242-aminet-integration"
      phase_origin: "242"

Aminet Scanner

Purpose

Provides multi-layer virus scanning for Aminet packages targeting the Amiga malware landscape. Combines signature-based detection (52 virus signatures in ClamAV .ndb format), heuristic analysis of hunk structures and boot blocks, quarantine management with atomic file isolation, and a scan orchestrator that coordinates all layers into unified scan reports with configurable depth levels.

Capabilities

  • 52 virus signatures across 3 JSON database files (boot block, file, hunk viruses)
  • Context-aware scanBuffer with hex pattern matching and wildcard bitmasks
  • Boot block and hunk type dispatch for targeted scanning
  • Sub-2-second scanning for 500KB files against 50 signatures
  • Last-wins deduplication for extensible signature JSON drop-in
  • 8 heuristic rules: 4 hunk-based, 4 boot block-based
  • Zero false positives on legitimate Amiga files
  • Worst-case verdict derivation across all findings
  • Quarantine with atomic file moves and metadata sidecars
  • Path traversal prevention on quarantine operations
  • Restore round-trip (quarantine and recover)
  • FS-UAE + CheckX emulated scanning with AbortController timeout
  • Community checksum cross-reference for known-good verification
  • Scan orchestrator coordinating signature + heuristic into unified ScanReport
  • Configurable depth: fast (signatures only), standard (sig + heuristic), thorough (sig + heuristic + emulated)
  • Batch processing with auto-quarantine for infected packages
  • YAML-based scan policy with Zod validation

Key Modules

| Module | Purpose | |--------|---------| | `src/aminet/signature-db.ts` | 52 virus signatures in 3 JSON files with last-wins deduplication | | `src/aminet/signature-scanner.ts` | Context-aware hex pattern matching with wildcard bitmasks | | `src/aminet/heuristic-scanner.ts` | 8 heuristic rules for hunk and boot block analysis | | `src/aminet/quarantine.ts` | Atomic file isolation with metadata sidecars and restore | | `src/aminet/scan-orchestrator.ts` | Coordinates all scan layers into unified ScanReport | | `src/aminet/emulated-scanner.ts` | FS-UAE + CheckX emulated scanning with timeout control |

Usage Examples

**Quick signature scan:**

import { scanBuffer } from './signature-scanner.js';

const result = scanBuffer(fileBuffer, { context: 'hunk' });
// result.verdict: 'clean' | 'suspicious' | 'infected'
// result.findings: matched signature details

**Full orchestrated scan:**

import { scanPackage } from './scan-orchestrator.js';

const report = await scanPackage(filePath, {
  depth: 'thorough', // fast | standard | thorough
  autoQuarantine: true,
  quarantineDir: './quarantine',
});
// report.verdict, report.signatureFindings, report.heuristicFindings

**Quarantine management:**

import { quarantineFile, restoreFile } from './quarantine.js';

await quarantineFile(infectedPath, { quarantineDir: './quarantine', reason: 'SCA virus' });
await restoreFile(quarantinedId, { quarantineDir: './quarantine', restoreDir: './restored' });

**Batch scan with auto-quarantine:**

import { batchScan } from './scan-orchestrator.js';

const results = await batchScan(filePaths, {
  depth: 'standard',
  autoQuarantine: true,
  quarantineDir: './quarantine',
});

Dependencies

  • Aminet hunk parser (`src/aminet/hunk-parser.ts`) for binary analysis
  • Aminet boot block parser (`src/aminet/bootblock-parser.ts`) for boot sector analysis
  • Node.js `node:fs` for file I/O and quarantine operations
  • FS-UAE emulator (optional, for thorough/emulated scanning)
  • Zod for scan policy YAML validation

Token Budget Rationale

1.5% budget reflects the 6 modules covering the complete multi-layer scanning pipeline. The signature database format, hex pattern matching with wildcards, heuristic rule engine, quarantine atomicity, and orchestrator coordination logic require comprehensive context for correct security operation and troubleshooting.

Read more
@tibsfox
Ships withgsd-skill-creator

An adaptive learning and coprocessor architecture for Claude Code, built as an extension to GSD (open-gsd)

71102 skills61 agents1 MCP
Get the whole plugin

Stars on GitHub

Momentum

stars in total
71
Star history of Tibsfox/gsd-skill-creator on GitHub, a chart by star-history.com

Other skills on gsd-skill-creator.

aminet-index

aminet-index

Manages Aminet INDEX infrastructure: fetch, parse, cache, and incremental update of ~84,000-entry package database. Use when…

aminet-mirror

aminet-mirror

Selective Aminet package mirroring: single-package fetch, integrity verification, mirror state tracking, bulk download, and sync…

More skills from other plugins.

brainstorming
Auto-invoked

brainstorming

You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…

@obra@obraInstall Skill
ask-matt

ask-matt

Ask which skill or flow fits your situation. A router over the skills in this repo.

skills11d309k
@mattpocock@mattpocockInstall Skill
accessibility
Auto-invoked

accessibility

Design, implement, and audit accessible UI to WCAG 2.2 Level AA across Web, iOS, and Android — semantic ARIA roles and labels,…

ecc13d293k
@affaan-m@affaan-mInstall Skill
compiler-commit

compiler-commit

Use when you want to verify compiler changes and commit with the correct convention. Runs tests, lint, and format, then commits…

react2d252k
@facebook@facebookInstall Skill

Questions about aminet-scanner.

Which coding agents can use aminet-scanner?
aminet-scanner installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.