一键导入
isentinel
Opinionated preferences for roblox-ts development. Use when setting up new roblox-ts projects or when coding style/tooling decisions arise.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Opinionated preferences for roblox-ts development. Use when setting up new roblox-ts projects or when coding style/tooling decisions arise.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Testing Roblox/Luau code with Jest Roblox. Use when writing tests, mocking functions, asserting values, or configuring test suites in Luau with Jest Roblox. NOT JavaScript Jest — uses .never instead of .not, jest.fn() returns two values, 0 is truthy.
Use when writing TypeScript code for Roblox using roblox-ts, especially when unsure if a JavaScript API exists or how to handle Luau interop
| name | isentinel |
| description | Opinionated preferences for roblox-ts development. Use when setting up new roblox-ts projects or when coding style/tooling decisions arise. |
| metadata | {"author":"Christopher Buss","version":"2026.1.29"} |
Opinionated tooling and patterns for roblox-ts development.
| Category | Preference |
|---|---|
| Package Manager | pnpm (bun as optional runtime) |
| Language | TypeScript (strict + extra checks) |
| TypeScript Config | @isentinel/tsconfig |
| Linting | @isentinel/eslint-config (no Prettier) |
| Testing | Jest-roblox, TDD approach |
| Git Hooks | husky + lint-staged |
| Commits | Conventional Commits |
Use pnpm as the package manager. Can use bun as runtime for scripts.
Use @antfu/ni for unified package manager commands (It auto-detects the
package manager (pnpm/npm/yarn/bun) based on lockfile):
| Command | Description |
|---|---|
ni | Install dependencies |
ni <pkg> | Add dependency |
ni -D <pkg> | Add dev dependency |
nr <script> | Run script |
nu | Upgrade dependencies |
nun <pkg> | Uninstall dependency |
nci | Clean install |
nlx <pkg> | Execute package |
Use @isentinel/tsconfig with the roblox preset. Strict mode plus additional
checks:
exactOptionalPropertyTypesnoUncheckedIndexedAccessnoPropertyAccessFromIndexSignaturenoImplicitOverridenoImplicitReturnsnoFallthroughCasesInSwitch{
"extends": "@isentinel/tsconfig/roblox"
}
Use @isentinel/eslint-config. No Prettier - ESLint handles formatting.
// eslint.config.ts
import { isentinel } from "@isentinel/eslint-config";
export default isentinel();
Fix errors with nr lint --fix.
Prefer assertions over silent failing. Fail fast, fail loud.
See error-handling.md for patterns.
Red → Green → Refactor:
Three similar lines of code is better than a premature abstraction.
See testing.md for Jest-roblox setup.
| Topic | Reference |
|---|---|
| Tooling details | tooling.md |
| TypeScript config | typescript.md |
| Linting rules | linting.md |
| Testing (TDD) | testing.md |
| Error handling | error-handling.md |