返回 Skill 列表
extension
分类: 开发与工程无需 API Key

isentinel

对于roblox-ts开发的有主见的偏好。在设置新的roblox-ts项目或出现编码风格/工具选择时使用。

person作者: jakexiaohubgithub

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.

// eslint.config.ts
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:

  1. Write a failing test
  2. Write minimal code to pass
  3. Refactor with test protection

Simplicity Rules (in order)

  1. Passes all tests
  2. Expresses intent clearly
  3. Contains no duplication
  4. Has minimum elements

Three similar lines of code is better than a premature abstraction.

See testing.md for Jest-roblox setup.


References

| Topic | Reference | | ----------------- | ------------------------------------------------- | | Tooling details | tooling.md | | TypeScript config | typescript.md | | Linting rules | linting.md | | Testing (TDD) | testing.md | | Error handling | error-handling.md |