with one click
new-command
Scaffold a new Discord slash command following project patterns
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
Scaffold a new Discord slash command following project patterns
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
Use after implementing any new feature or modifying existing features โ audits and updates all related docs, landing pages, help categories, steering docs, changelog, and i18n before declaring work complete
Scaffold a new landing site page following i18n patterns (shared component + EN/VI wrappers + translation keys)
SPEC methodology workflow - bridging product requirements and technical implementation. Use when users want to create, plan, discuss, or manage feature specifications. Triggers on /spec commands or requests like "create a spec for X", "plan feature Y", "discuss requirements".
| name | new-command |
| description | Scaffold a new Discord slash command following project patterns |
Create a new Discord slash command in src/commands/slash/.
The user will provide:
All commands in this project follow this structure:
import {
ChatInputCommandInteraction,
EmbedBuilder,
SlashCommandBuilder,
} from "discord.js";
import Reply from "../../util/decorator/reply";
export default {
data: new SlashCommandBuilder()
.setName("command-name")
.setDescription("Command description"),
async execute(interaction: ChatInputCommandInteraction) {
const embed = new EmbedBuilder().setColor("Random").setTimestamp();
// Command logic here
return Reply.embed(interaction, embed);
},
};
src/commands/slash/{name}.tsChatInputCommandInteraction (not CommandInteraction)Reply utility from ../../util/decorator/reply for responsesEmbedBuilder for rich responsesawait interaction.deferReply() then Reply.embedEdit()(true) to getString() / getInteger() for required options to get non-null typesif (!(interaction.channel as TextChannel)?.nsfw).addSubcommand()src/loaders/commands.ts auto-discovers it