multi-game-codes-hub · git:20260907.251ccd0 · 2026-09-07 · sha256 3ca5e3e4efcbeba0

multi-game-codes-hub git:20260907.251ccd0A

Immutable. This exact content is served forever at /api/v1/blob/3ca5e3e4efcbeba0.

---
name: multi-game-codes-hub
description: Generate a Next.js Roblox codes page from validated JSON using a reusable TSX template. Use when creating or regenerating a single game's active/expired codes page with metadata, copy controls, optional supplied redemption/FAQ content, and breadcrumb schema.
metadata:
  keywords: roblox codes, promo codes, game codes, nextjs page generator, faq schema
---

# Multi-Game Codes Hub

Generate one Next.js codes page from explicit game data. The included generator renders a TSX template; it does not discover, monitor, translate, or validate codes against Roblox.

## Implemented resources

- [resources/generate_code_page.py](resources/generate_code_page.py): validates JSON and renders a page.
- [resources/templates/codes_page.tsx](resources/templates/codes_page.tsx): Next.js page template for active/expired codes, metadata, breadcrumbs, and optional supplied redemption/FAQ content.
- [resources/components/CopyButton.tsx](resources/components/CopyButton.tsx): client-side copy control with a fallback.
- [resources/components/CodeTable.tsx](resources/components/CodeTable.tsx): optional reusable code table.
- [resources/schemas/faq_schema.ts](resources/schemas/faq_schema.ts): FAQ, breadcrumb, and item-list schema helpers.
- [USAGE.md](USAGE.md): concise CLI reference.

The generated template imports `@/components/CopyButton`; copy the included component into that alias or change the import for the target project.

## Input contract

```json
{
  "gameName": "Your Bizarre Adventure",
  "gameSlug": "yba",
  "baseUrl": "https://example.com",
  "activeCodes": [
    {
      "code": "CODE123",
      "reward": "50 Spins",
      "expiryDate": "2026-04-30",
      "conditions": "Optional"
    }
  ],
  "expiredCodes": [
    {
      "code": "OLDCODE",
      "reward": "25 Spins"
    }
  ],
  "redemptionSteps": [
    "Open the game's menu.",
    "Enter a supplied code in the code field."
  ],
  "faq": [
    {
      "question": "Where is the code field?",
      "answer": "The supplied source says it is in the game menu."
    }
  ]
}
```

Required top-level fields:

- `gameName`: non-empty string.
- `gameSlug`: lowercase letters/digits separated by single hyphens.
- `baseUrl`: absolute HTTP(S) site URL without credentials, query, or fragment. A trailing slash is normalized away.

Optional top-level fields:

- `activeCodes` and `expiredCodes`: arrays; each entry supports only `code`, `reward`, `expiryDate`, and `conditions`. `code` and `reward` are required non-empty strings.
- `redemptionSteps`: array of non-empty strings. The section is omitted when the array is absent or empty.
- `faq`: array of objects containing only non-empty `question` and `answer` strings. The FAQ section and FAQ schema are omitted when absent or empty.

Unknown top-level, code-entry, or FAQ-entry fields are errors; the generator never silently ignores input.

`baseUrl` drives canonical and breadcrumb URLs. Never reuse an example domain for a real site.

## Generate a page

From the Skill directory:

```bash
python3 resources/generate_code_page.py \
  --input resources/examples/yba_codes.json \
  --output /tmp/yba-codes-page.tsx
```

The default template is resolved relative to this Skill, so the command also works when the script is invoked from another current working directory. `--input`, `--output`, and an explicitly supplied `--template` retain normal CLI semantics: relative paths resolve from the caller's current directory and absolute paths remain absolute.

To use a custom template:

```bash
python3 resources/generate_code_page.py \
  --input ./game.json \
  --output ./page.tsx \
  --template ./custom-codes-page.tsx
```

Generation uses the current UTC month, year, and date. It fails before writing output if the JSON is invalid, required values are missing, URLs are invalid, or any `{{templateVariable}}` remains unresolved.

## Template variables

- `{{gameNameJson}}`
- `{{gameSlugJson}}`
- `{{baseUrlJson}}`
- `{{rewardsJson}}`
- `{{activeCodesData}}`
- `{{expiredCodesData}}`
- `{{redemptionStepsData}}`
- `{{faqItemsData}}`
- `{{generatedDateJson}}`
- `{{currentMonthJson}}`
- `{{currentYearJson}}`
- `{{redemptionSection}}`
- `{{faqSchemaDefinition}}`
- `{{faqSchemaScript}}`
- `{{faqSection}}`

## Verification

After generation:

1. Confirm the output contains the target `baseUrl` and no unrelated domain.
2. Confirm no `{{...}}` placeholder remains.
3. Copy or adapt the required component imports.
4. Run the target Next.js project's typecheck, lint, and build.
5. Review codes and any supplied redemption/FAQ content against a cited primary source; the generator does not verify factual accuracy.

## Roadmap and boundaries

Discord/Twitter monitoring, automatic code validity checks, automatic expiry updates, multilingual generation, community submissions, and deployment automation are not implemented. Treat them as roadmap items only; do not invoke nonexistent scripts such as `discord_code_monitor.py`, `code_validator.py`, `update_codes.py`, or `generate_multilingual.py`.