| 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"} |
isentinel Preferences
Opinionated tooling and patterns for roblox-ts development.
Quick Summary
| 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 |
Package Manager (pnpm)
Use pnpm as the package manager. Can use bun as runtime for scripts.
@antfu/ni
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 |
TypeScript
Use @isentinel/tsconfig with the roblox preset. Strict mode plus additional
checks:
exactOptionalPropertyTypes
noUncheckedIndexedAccess
noPropertyAccessFromIndexSignature
noImplicitOverride
noImplicitReturns
noFallthroughCasesInSwitch
{
"extends": "@isentinel/tsconfig/roblox"
}
Linting
Use @isentinel/eslint-config. No Prettier - ESLint handles formatting.
import { isentinel } from "@isentinel/eslint-config";
export default isentinel();
Fix errors with nr lint --fix.
Error Handling
Prefer assertions over silent failing. Fail fast, fail loud.
See error-handling.md for patterns.
Test-Driven Development
Red → Green → Refactor:
- Write a failing test
- Write minimal code to pass
- Refactor with test protection
Simplicity Rules (in order)
- Passes all tests
- Expresses intent clearly
- Contains no duplication
- Has minimum elements
Three similar lines of code is better than a premature abstraction.
See testing.md for Jest-roblox setup.
References