Per template (singularity-forge f3d84cd11). Project-specific manifest + prompts/project.md capture: post-rename namespace com.centralcloud.oncall (io.heckel.ntfy fully gone), centrally-configured-from-server design, strict-opt-in SMS relay, greenfield (no backwards compat with upstream ntfy). Legacy docs (AGENTS.md, README.md, TESTING.md) kept; .agents/ canonical going forward. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1.4 KiB
1.4 KiB
| name | description | user-invocable | model-invocable | side-effects | permission-profile | triggers | |||
|---|---|---|---|---|---|---|---|---|---|
| forge-command-surface | Use when changing SF slash commands, browser command parity, or headless command dispatch. | true | true | code-edits | normal |
|
forge-command-surface
When to Use
This skill applies when:
- Adding or modifying SF slash commands (
/mode,/tasks,/skills, etc.) - Changing command handlers in
src/resources/extensions/sf/commands/handlers/ - Updating command catalog descriptions
- Ensuring web/TUI/headless command parity
- Modifying command dispatch routing
Instructions
- Check existing handlers — Look in
commands/handlers/core.jsandcommands/handlers/ops.jsfor the pattern - Update catalog — Add to
commands/catalog.jsTOP_LEVEL_SUBCOMMANDS - Update help text — Add to
showHelp()incommands/handlers/core.js - Wire dispatch — Add routing in
handleCoreCommand()orhandleOpsCommand() - Test — Verify with
node --checkand manual test
Verification
- Command appears in
/help - Command appears in
/help all - Handler file passes
node --check - No
/sfprefix in user-facing strings
Examples
// Adding a new command
if (trimmed === "mycommand" || trimmed.startsWith("mycommand ")) {
await handleMyCommand(trimmed.replace(/^mycommand\s*/, "").trim(), ctx);
return true;
}