Game Library plugin: Starter pipeline (with design brief)

The cover-forward Game Library at /my-library/, showing box art with status badges.

We built the same plugin six ways

As part of our WordCamp US 2026 talk we built out the same plugin with the latest Frontier Sol 5.6 and Fable 5 model at xHigh. We pitted it against our Starter pipeline and our full Principal WP Pipeline running Opus 4.8.

As with each plugin we started with the same prompt:

Build an invite-only WordPress plugin for video-game collectors. Registered users search IGDB to add games to their library. Games can have one of four statuses (playing / finished / backlog / wishlist). They can curate a front-end library at /my-library/, follow each other, and see an activity feed.

This post is part of a series

We build the same plugin with Sol 5.6 xHigh, Fable 5 xHigh, our starter pipeline and our full pipeline. Here are the results.

Starter pipeline

Frontier models

See it in action

Highlights

Try it yourself

Boots a fresh WordPress in your browser with the plugin activated and demo content loaded. Nothing is saved, refresh to start over.

Boot takes about 20 seconds · runs in your browser

How the pipeline built this

The Principal WP starter pipeline built this plugin across several stages. At two stages the pipeline asked us questions which you can find below along with the options offered, and the answer chosen for each.

Requirements Phase Questions

Registration: how does someone become an invited member?

The ticket called the community invite-only but never said how invitations are issued or redeemed, and that answer determines a large part of what the plugin has to build. No default was offered here. The pick had to match how the community was meant to grow.

  • Closed registration: no public sign-up form, and an administrator creates each account by hand.
  • A global invite code: a sign-up form that accepts an admin-set code, or a managed list of codes.
  • Per-member invite links: every existing member can generate a limited number of single-use links to share, and the plugin tracks who invited whom. (your answer)
Visibility: who can see a member’s library and activity?

The community is gated at registration, but the ticket never said who can see a member’s library and activity once they are in.

  • Closed community: nothing is public, and any logged-in member can view any other member’s library and activity. (was the default)
  • Follower-gated: nothing is public, and a member’s library is visible only to their approved followers.
  • Partially public: a member’s library is viewable by anyone, and only actions like adding or following require login.
  • A per-member toggle: each member sets their own library public or private. Private stays visible to logged-in members only; public is visible to everyone, including logged-out visitors. (your answer, overriding the default)

You replaced the single site-wide rule with a per-member choice that blends the closed and public options.

Following: is a follow instant, or does it need approval?

Follow each other was stated without saying whether a follow is instant or needs the other person to accept.

  • One-directional: any member can follow any other instantly, with no approval. (your answer, the default)
  • Mutual follow: a follow sends a request the other member must accept first.
Activity feed: whose activity does the feed show?

The ticket named an activity feed but not whose activity it shows.

  • Only activity from members the viewer follows; logged actions are game added and status changed. (was the default)
  • Sitewide activity from every member, regardless of who the viewer follows.
  • Additional actions beyond game added and status changed, such as a new follow.
  • A toggle between two audiences, Following for members the viewer follows and Everyone for sitewide activity; logged actions are game added and status changed. (your answer, overriding the default)

You gave the feed two audiences the viewer switches between. The default proposed only the follower-only view.

Add flow: when does a member set a game’s status?

Games can hold one of four statuses, but the ticket never said whether a member sets the status while adding a game or changes a default afterward.

  • The member picks one of the four statuses at the moment of adding, with no implicit default. (your answer, the default)
  • Adding assigns a default status automatically, which the member changes later from their library.
Game database credentials: where do the API keys live, and what shows when a call fails?

Searching the game database needs API credentials that have to live somewhere, and a lookup can fail. The ticket did not say whether an administrator configures the credentials through a screen or in code, or what shows when a call fails.

  • An admin settings screen holds the credentials and shows a notice when a lookup fails. (was the default)
  • Credentials are set in code only, with no settings screen and no admin notice on failure.
  • Both: a settings screen and code-level configuration constants, where the constants take precedence and make the screen fields read-only when present, with an admin notice shown on a failed lookup. (your answer, overriding the default)

You pre-approved the dual mechanism, with instruction to keep both paths even if a reviewer flags the overlap.

Visual polish: how designed does the library and feed need to be?

This feature is built around a member’s collection and shown to other members. The ticket set no visual bar, and a plain list or a designed layout would both be functionally complete.

  • A polished, componentized layout using the theme’s design tokens: a cover-art card grid for the library and a designed activity feed. (your answer, the default)
  • A minimal, utilitarian layout: plain list markup with default theme styling.
Scale: how big does this need to get?

How much pagination and indexing attention is warranted depends on how large the data gets.

  • Small: under 10,000 total rows after a year, and under 10,000 visits a month. Straightforward pagination, with queries still indexed and bounded as a matter of course. (your answer, the default)
  • Medium: 10,000 to a million rows.
  • Large: over a million rows.

Research Phase Questions

Feed privacy: does the sitewide feed respect a private library?

The per-member visibility toggle and the feed’s Following and Everyone toggle were settled separately. Research raised how they interact but did not settle it. Should the sitewide Everyone feed include a member whose library is private?

  • The Everyone feed respects per-member privacy: a private-library member’s activity is hidden from the sitewide feed and from anyone who could not otherwise see that library. (your answer, the default)
  • The Everyone feed shows all activity regardless of library privacy, including actions from private libraries.

You made visibility govern both the library page and the feed. A follower still sees a followed member’s activity in the Following view, because following is an explicit relationship, but a private library stays hidden from logged-out visitors and from the sitewide audience.

A note on IGDB and the live demo

Game data and cover art come from IGDB.com. The live demo mocks the IGDB API so it works with no credentials; a real install needs your own IGDB (Twitch) client ID and secret.