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: validates JSON and renders a page.
- 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: client-side copy control with a fallback.
- resources/components/CodeTable.tsx: optional reusable code table.
- resources/schemas/faq_schema.ts: FAQ, breadcrumb, and item-list schema helpers.
- 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:
activeCodesandexpiredCodes: arrays; each entry supports onlycode,reward,expiryDate, andconditions.codeandrewardare 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-emptyquestionandanswerstrings. 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:
bashpython3 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:
bashpython3 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:
- Confirm the output contains the target
baseUrland no unrelated domain. - Confirm no
{{...}}placeholder remains. - Copy or adapt the required component imports.
- Run the target Next.js project's typecheck, lint, and build.
- 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.


