mcpField
A
api-pagination

api-pagination

github.com/aj-geddesDevelopment373491 installsUpdated 34w ago
Repository

About api-pagination

A skill for implementing pagination strategies that support efficient querying and navigation through large datasets. It is intended for developers building APIs and client interfaces that handle substantial result sets.

Key features

  1. 01Offset/limit, cursor, and keyset methods
  2. 02Search result pagination
  3. 03Response format guidance
  4. 04Performance and edge-case practices

Use cases

  1. 01Paginating large API collections
  2. 02Building search result navigation
  3. 03Implementing infinite-scroll interfaces
  4. 04Reducing query and client memory costs

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/aj-geddes/useful-ai-prompts --skill api-pagination

After installing, type/api-paginationin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

references/
cursor-based-pagination.md
keyset-pagination.md
offsetlimit-pagination.md
pagination-response-formats.md
python-pagination-sqlalchemy.md
search-pagination.md
scripts/
validate-api.sh
templates/
api-scaffold.yaml

Details

From the project README

API Pagination

Table of Contents

Overview

Implement scalable pagination strategies for handling large datasets with efficient querying, navigation, and performance optimization.

When to Use

  • Returning large collections of resources
  • Implementing search results pagination
  • Building infinite scroll interfaces
  • Optimizing large dataset queries
  • Managing memory in client applications
  • Improving API response times

Quick Start

Minimal working example:

// Node.js offset/limit implementation
app.get('/api/users', async (req, res) => {
  const page = parseInt(req.query.page) || 1;
  const limit = Math.min(parseInt(req.query.limit) || 20, 100); // Max 100
  const offset = (page - 1) * limit;

  try {
    const [users, total] = await Promise.all([
      User.find()
        .skip(offset)
        .limit(limit)
        .select('id email firstName lastName createdAt'),
      User.countDocuments()
    ]);

    const totalPages = Math.ceil(total / limit);

    res.json({
      data: users,
      pagination: {
        page,
        limit,
        total,
        totalPages,
        hasNext: page < totalPages,
// ... (see reference guides for full implementation)

Reference Guides

Detailed implementations in the references/ directory:

GuideContents
Offset/Limit PaginationOffset/Limit Pagination
Cursor-Based PaginationCursor-Based Pagination
Keyset PaginationKeyset Pagination
Search PaginationSearch Pagination
Pagination Response FormatsPagination Response Formats
Python Pagination (SQLAlchemy)Python Pagination (SQLAlchemy)

Best Practices

✅ DO
  • Use cursor pagination for large datasets
  • Set reasonable maximum limits (e.g., 100)
  • Include total count when feasible
  • Provide navigation links
  • Document pagination strategy
  • Use indexed fields for sorting
  • Cache pagination results when appropriate
  • Handle edge cases (empty results)
  • Implement consistent pagination formats
  • Use keyset for extremely large datasets
❌ DON'T
  • Use offset with billions of rows
  • Allow unlimited page sizes
  • Count rows for every request
  • Paginate without sorting
  • Change sort order mid-pagination
  • Use deep pagination without cursor
  • Skip pagination for large datasets
  • Expose database pagination directly
  • Mix pagination strategies
  • Ignore performance implications

Comments

Markdown supported