aminet-browser
Aminet search and browse: full-text search, category tree navigation, architecture filtering, package detail, and curated…
Persist progress for long-running jobs (batched LLM calls, large ingestions, multi-hour syncs) so that a context reset, crash, or interrupt doesn't lose work. Use whenever a job iterates over N items and completing item K matters independently. Provides a resumable.mjs library
Claude Code
$ npx -y skills add Tibsfox/gsd-skill-creator --skill checkpoint-resume-long-job --agent claude-code
Codex
$ npx skills add Tibsfox/gsd-skill-creator --skill checkpoint-resume-long-job -a codex -y
Cursor
$ npx skills add Tibsfox/gsd-skill-creator --skill checkpoint-resume-long-job -a cursor -y
Gemini CLI
$ npx skills add Tibsfox/gsd-skill-creator --skill checkpoint-resume-long-job -a gemini-cli -y
GitHub Copilot
$ npx skills add Tibsfox/gsd-skill-creator --skill checkpoint-resume-long-job -a github-copilot -y
OpenCode
$ npx skills add Tibsfox/gsd-skill-creator --skill checkpoint-resume-long-job -a opencode -y
Windsurf
$ npx skills add Tibsfox/gsd-skill-creator --skill checkpoint-resume-long-job -a windsurf -y
name: checkpoint-resume-long-job description: "Persist progress for long-running jobs (batched LLM calls, large ingestions, multi-hour syncs) so that a context reset, crash, or interrupt doesn't lose work. Use whenever a job iterates over N items and completing item K matters independently. Provides a resumable.mjs library pattern plus the skill's invocation heuristics." format: 2025-10-02 version: 1.0.0 status: ACTIVE updated: 2026-04-17 triggers: - a job iterates over N items and completing item K matters independently
Any job that takes longer than 5 minutes and iterates over N independent items should checkpoint its progress. Context can reset, processes can crash, users can Ctrl-C. A re-run shouldn't redo completed work.
Activate when a job:
The simplest checkpoint is a file listing completed item IDs. On job start: read the file; on each item completion: append its ID; on job restart: skip any ID in the file.
import { processBatches } from './tools/checkpoint-resume/resumable.mjs';
await processBatches({
items: [...1713 lessons...],
keyFn: l => l.id,
checkpointFile: '.planning/sessions/tiebreaker-checkpoint.jsonl',
batchSize: 5,
async handler(batch) {
// your per-batch work
return batch.map(l => ({ id: l.id, status: 'done' }));
},
onProgress({ completed, total, skipped }) {
console.error(`${completed + skipped}/${total} (${skipped} resumed)`);
},
});On first run, processes all items and appends IDs to the checkpoint file. On resume, reads the file and skips already-processed items.
| Format | When | |--------|------| | Append-only JSONL | Most jobs. One line = one completed item. Easy to read, easy to resume. | | Database column | When items already live in a DB — add `processed_at TIMESTAMP` and `WHERE processed_at IS NULL` at start. | | Snapshot file | When checkpoint state is a complex structure (progress trees, partial outputs). Write a whole-state JSON every N items. |
Prefer append-only JSONL. Crash-safe by design.
Checkpointing adds file I/O per item. Usually negligible compared to the work itself. The cost of NOT checkpointing, however, is:
the checkpoint.
`.planning/sessions/` or a project-local cache dir.
resume manually, they need to know where to look.
Before starting any long job, ask:
If answers are "yes, no, independent" → use checkpointing.
Situation: 681 lessons to classify via `claude -p`, 5 per batch, ~30 sec per batch. Total: ~70 minutes. No checkpointing was in place.
Worst-case loss: 136 wasted LLM calls at batch 137 if context broke. Actual loss: 0 — but only because the run happened to complete first time.
Fix: wrap the batch loop in `processBatches()` from `resumable.mjs`. On resume, only unprocessed lessons get classified.
An adaptive learning and coprocessor architecture for Claude Code, built as an extension to GSD (open-gsd)
Aminet search and browse: full-text search, category tree navigation, architecture filtering, package detail, and curated…
FS-UAE emulator configuration and launch: hardware profiles, ROM management, WHDLoad integration, config generation, and state…
Manages Aminet INDEX infrastructure: fetch, parse, cache, and incremental update of ~84,000-entry package database. Use when…
Aminet package installation: LhA/LZX extraction, Amiga filesystem mapping, dependency detection, install tracking, and scan gate…
Selective Aminet package mirroring: single-package fetch, integrity verification, mirror state tracking, bulk download, and sync…
Multi-layer virus scanning for Aminet packages. Signature-based detection, heuristic hunk analysis, boot block scanning,…
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.