aminet-browser

$npx mdskill add Tibsfox/gsd-skill-creator/aminet-browser

Search, browse, and manage Aminet package collections.

  • Find Amiga software via full-text search with relevance scoring.
  • Depends on Aminet INDEX data and YAML collection files.
  • Uses weighted substring matching for search relevance.
  • Returns package details, category trees, or collection CRUD results.

SKILL.md

.github/skills/aminet-browserView on GitHub ↗
---
name: aminet-browser
description: "Aminet search and browse: full-text search, category tree navigation, architecture filtering, package detail, and curated collections. Use when searching, browsing, or managing package collections."
metadata:
  extensions:
    gsd-skill-creator:
      triggers:
        intents:
          - "aminet.*search"
          - "aminet.*browse"
          - "aminet.*collection"
          - "package.*detail"
        files:
          - "src/aminet/search.ts"
          - "src/aminet/category-browser.ts"
          - "src/aminet/package-detail.ts"
          - "src/aminet/collection.ts"
          - "src/aminet/collection-manager.ts"
        contexts:
          - "aminet search"
          - "package browsing"
          - "aminet collections"
        threshold: 0.7
      token_budget: "1.0%"
      version: 1
      enabled: true
      plan_origin: "242-aminet-integration"
      phase_origin: "242"
---

# Aminet Browser

## Purpose

Provides search, browse, and collection management for the Aminet package archive. Supports full-text search with relevance scoring, hierarchical category tree navigation, architecture and OS version filtering, unified package detail views combining INDEX + readme + mirror state, and curated YAML-based collections with CRUD operations.

## Capabilities

- Full-text search with case-insensitive substring matching
- Relevance scoring: name=3x, description=2x, author=1x weighting
- Hierarchical category tree construction from INDEX entries
- Architecture filtering (m68k-amigaos, ppc-amigaos, etc.)
- OS version filtering for compatibility checks
- Unified package detail merging INDEX + readme + mirror state
- Collection manifest with Zod-validated YAML schema
- Import/export collections as YAML files
- 5 starter collections bundled
- Collection manager with DI-first pattern (collectionsDir param)
- Atomic write-then-rename for collection persistence
- Slugified filenames for cross-platform safety
- getCollectionPaths for bulk download integration

## Key Modules

| Module | Purpose |
|--------|---------|
| `src/aminet/search.ts` | Full-text search with relevance scoring (name=3, desc=2, author=1) |
| `src/aminet/category-browser.ts` | Category tree construction, architecture and OS version filtering |
| `src/aminet/package-detail.ts` | Unified package detail merging INDEX + readme + mirror state |
| `src/aminet/collection.ts` | Collection manifest Zod schema, YAML import/export, starter collections |
| `src/aminet/collection-manager.ts` | CRUD operations with atomic persistence, slugified filenames |

## Usage Examples

**Search packages:**
```typescript
import { searchPackages } from './search.js';

const results = searchPackages(indexEntries, 'deluxe paint');
// Sorted by relevance score, name matches weighted 3x
```

**Browse by category:**
```typescript
import { buildCategoryTree, listPackages } from './category-browser.js';

const tree = buildCategoryTree(indexEntries);
const gfxPackages = listPackages(indexEntries, 'gfx/edit');
```

**Get package detail:**
```typescript
import { buildPackageDetail } from './package-detail.js';

const detail = buildPackageDetail(indexEntry, readmeData, mirrorState);
// Unified view with all metadata sources
```

**Manage collections:**
```typescript
import { CollectionManager } from './collection-manager.js';

const mgr = new CollectionManager({ collectionsDir: './collections' });
await mgr.create({ name: 'My Games', packages: ['game/misc/Lemmings.lha'] });
const paths = mgr.getCollectionPaths('my-games');
```

## Dependencies

- Aminet INDEX data (from aminet-index skill)
- Node.js `node:fs` for collection persistence
- Zod for schema validation
- js-yaml for YAML serialization

## Token Budget Rationale

1.0% budget reflects the 5 modules covering search, browse, detail, and collection management. The search scoring algorithm and collection YAML round-trip are well-contained and require moderate context for correct usage.

More from Tibsfox/gsd-skill-creator

SkillDescription
3d-interaction-designDesign heuristics for three-dimensional interaction — input modalities (6DoF controllers, gaze, gesture, voice), selection and manipulation techniques (ray-cast, virtual hand, go-go, world-in-miniature), navigation (teleport, continuous, redirected walking), and feedback loops (haptic, audio, visual). Covers Fitts' law in 3D, discoverability vs affordance, safe-zone design, and comfort/simulator sickness mitigation. Use when designing VR/AR interactions, immersive walkthroughs, or any input system where the user's body is the controller.
accessibility-patternsProvides web accessibility best practices for semantic HTML, ARIA, keyboard navigation, color contrast, and screen reader patterns. Use when building UI components, reviewing accessibility, or when user mentions 'a11y', 'accessibility', 'ARIA', 'screen reader', 'keyboard navigation', 'WCAG'.
active-listeningActive listening techniques for effective communication. Covers attending behaviors, paraphrasing, reflective listening, clarifying questions, empathic response, barriers to listening, listening in conflict, and cross-cultural listening. Use when building listening skills, improving understanding in conversation, mediating disputes, or analyzing communication breakdowns.
adversarial-pr-reviewAdversarial spec-compliance PR review — cross-references diffs against approved specs, verifies runtime claims against source, detects competing PRs, audits scope/convention compliance. Use before merging.
agile-methodsAgile and Lean software development methodologies for iterative, adaptive project execution. Covers Scrum (roles, ceremonies, artifacts), Kanban (WIP limits, flow metrics), XP (TDD, pair programming, CI), SAFe overview, Lean Software Development (Poppendieck's 7 principles), user stories (INVEST criteria), estimation via story points and velocity, and the Agile Manifesto's values and principles. Includes Cynefin framework for methodology selection and GSD's relationship to Agile as a structured Lean variant.
algebraic-reasoningSymbolic manipulation, equation solving, and algebraic structures for mathematical reasoning. Covers distributive law, factoring, completing the square, linear through polynomial equation solving, systems of equations (substitution, elimination, Gaussian elimination, matrix methods), algebraic structures (groups, rings, fields), modular arithmetic, polynomial theory, and inequalities. Use when solving equations, simplifying expressions, working with algebraic structures, or performing symbolic manipulation.
algorithmic-awarenessUnderstanding how algorithmic systems shape what users see, know, and do -- from recommendation feeds to search ranking to credit scoring to hiring software. Covers the mechanics of recommendation systems, algorithmic bias and its sources, personalization's effects on information diets, opacity and accountability, AI limitations (hallucination, confident wrongness), and the human-in-the-loop question. Use when a learner needs to think critically about why particular content reached them.
algorithms-data-structuresAlgorithms and data structures from first principles through advanced analysis. Covers sorting (bubble, insertion, selection, merge, quick, heap, radix), searching (linear, binary, BFS, DFS, Dijkstra, A*), fundamental data structures (arrays, linked lists, stacks, queues, hash tables, trees, heaps, graphs, tries), complexity analysis (Big-O, Big-Omega, Big-Theta, amortized), recurrence relations, and algorithm design paradigms (divide-and-conquer, greedy, dynamic programming, backtracking). Use when analyzing, selecting, implementing, or comparing algorithms and data structures.
aminet-emulatorFS-UAE emulator configuration and launch: hardware profiles, ROM management, WHDLoad integration, config generation, and state snapshots. Use when configuring emulation, managing ROMs, or launching Amiga software.
aminet-indexManages Aminet INDEX infrastructure: fetch, parse, cache, and incremental update of ~84,000-entry package database. Use when managing INDEX data, checking freshness, or parsing .readme files.