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.
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.
| 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 |
Search packages:
import { searchPackages } from './search.js';
const results = searchPackages(indexEntries, 'deluxe paint');
// Sorted by relevance score, name matches weighted 3x
Browse by category:
import { buildCategoryTree, listPackages } from './category-browser.js';
const tree = buildCategoryTree(indexEntries);
const gfxPackages = listPackages(indexEntries, 'gfx/edit');
Get package detail:
import { buildPackageDetail } from './package-detail.js';
const detail = buildPackageDetail(indexEntry, readmeData, mirrorState);
// Unified view with all metadata sources
Manage collections:
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');
node:fs for collection persistence1.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.
Search for places (restaurants, cafes, etc.) via Google Places API proxy on localhost.
Interact with GitHub using the `gh` CLI. Use `gh issue`, `gh pr`, `gh run`, and `gh api` for issues, PRs, CI runs, and advanced queries.
Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.
Start voice calls via the OpenClaw voice-call plugin.
Notion API for creating and managing pages, databases, and blocks.
Gemini CLI for one-shot Q&A, summaries, and generation.
Category:developer