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.
npx skills add https://github.com/kennyzir/7deer_skills --skill 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.
The generated template imports @/components/CopyButton; copy the included component into that alias or change the import for the target project.
{
"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.
From the Skill directory:
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:
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.
{{gameNameJson}}{{gameSlugJson}}{{baseUrlJson}}{{rewardsJson}}{{activeCodesData}}{{expiredCodesData}}{{redemptionStepsData}}{{faqItemsData}}{{generatedDateJson}}{{currentMonthJson}}{{currentYearJson}}{{redemptionSection}}{{faqSchemaDefinition}}{{faqSchemaScript}}{{faqSection}}After generation:
baseUrl and no unrelated domain.{{...}} placeholder remains.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.
Take kennyzir/multi-game-codes-hub from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.