Skip to content
Development
Skill

/aminet-index

Manages 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.

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

Claude Code

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

SKILL.md

aminet-index.SKILL.md
name: aminet-index
description: "Manages 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."
metadata:
  extensions:
    gsd-skill-creator:
      triggers:
        intents:
          - "aminet.*index"
          - "aminet.*update"
          - "index.*fetch"
          - "readme.*parse"
        files:
          - "src/aminet/index-fetcher.ts"
          - "src/aminet/index-parser.ts"
          - "src/aminet/index-freshness.ts"
          - "src/aminet/readme-parser.ts"
        contexts:
          - "aminet index management"
          - "package database"
        threshold: 0.7
      token_budget: "1.5%"
      version: 1
      enabled: true
      plan_origin: "242-aminet-integration"
      phase_origin: "242"

Aminet Index

Purpose

Manages the complete lifecycle of the Aminet INDEX database: fetching INDEX.gz from mirrors, parsing ~84,000 package entries into structured data, caching results for offline use, checking freshness against 24-hour thresholds, and performing incremental updates via RECENT file diffing. Also handles .readme metadata extraction for individual package detail views.

Capabilities

  • Fetch INDEX.gz from Aminet mirrors with gzip decompression
  • Parse ~84,000 INDEX entries using token-based regex in ~114ms
  • ISO-8859-1 decoding via TextDecoder for correct character handling
  • JSON cache with INDEX + INDEX.meta.json sidecar for offline access
  • K=1x and M=1000x size suffix normalization
  • 24-hour freshness detection with configurable thresholds
  • RECENT-based incremental merge by fullPath for efficient updates
  • Parse .readme files extracting raw headers (lowercase keys, multi-value split on comma+semicolon)
  • Barrel file exporting complete public API

Key Modules

| Module | Purpose | |--------|---------| | `src/aminet/index-fetcher.ts` | Fetches INDEX.gz from Aminet mirrors with gzip decompression | | `src/aminet/index-parser.ts` | Parses INDEX entries into structured PackageEntry objects | | `src/aminet/readme-parser.ts` | Extracts metadata from .readme files with header parsing | | `src/aminet/index-freshness.ts` | Checks INDEX age against 24h threshold, triggers RECENT-based incremental merge |

Usage Examples

**Fetch and parse the INDEX:**

import { fetchIndex } from './index-fetcher.js';
import { parseIndex } from './index-parser.js';

const raw = await fetchIndex({ mirrorUrl: 'https://aminet.net' });
const entries = parseIndex(raw);
// entries: PackageEntry[] with ~84,000 items

**Check freshness and update incrementally:**

import { checkFreshness } from './index-freshness.js';

const result = await checkFreshness({ cacheDir: './cache', maxAgeMs: 86400000 });
if (!result.fresh) {
  // Fetch RECENT, merge new entries by fullPath
}

**Parse a .readme file:**

import { parseReadme } from './readme-parser.js';

const metadata = parseReadme(readmeText);
// metadata.short, metadata.author, metadata.uploader, metadata.type, etc.

Dependencies

  • Node.js `node:zlib` for gzip decompression
  • Node.js `node:fs` for cache persistence
  • Aminet mirror network for INDEX.gz and RECENT files

Token Budget Rationale

1.5% budget reflects the 4 modules covering INDEX fetch, parse, freshness, and readme extraction. The ~84,000-entry parsing logic with ISO-8859-1 handling, size suffix normalization, and incremental merge via RECENT requires comprehensive context for correct 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-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.

skills10d309k
@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,…

ecc12d293k
@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…

react1d252k
@facebook@facebookInstall Skill

Questions about aminet-index.

Which coding agents can use aminet-index?
aminet-index 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.