mcpField
I
isentinel

isentinel

github.com/christopher-bussDevelopment862 installsUpdated 4w ago
Repository

About isentinel

isentinel is a set of opinionated tooling and development practices for roblox-ts projects, aimed at TypeScript developers. It specifies conventions for package management, strict typing, linting, and Jest-roblox testing.

Key features

  1. 01pnpm package management
  2. 02Strict roblox TypeScript configuration
  3. 03ESLint-based linting and formatting
  4. 04Jest-roblox test-driven development
  5. 05Conventional Commits and Git hooks

Use cases

  1. 01Standardizing roblox-ts project setup
  2. 02Applying stricter TypeScript checks
  3. 03Organizing linting and formatting
  4. 04Structuring Jest-roblox tests

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/christopher-buss/skills --skill isentinel

After installing, type/isentinelin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

references/
error-handling.md
linting.md
testing.md
tooling.md
typescript.md

Details

From the project README

isentinel Preferences

Opinionated tooling and patterns for roblox-ts development.

Quick Summary

CategoryPreference
Package Managerpnpm (bun as optional runtime)
LanguageTypeScript (strict + extra checks)
TypeScript Config@isentinel/tsconfig
Linting@isentinel/eslint-config (no Prettier)
TestingJest-roblox, TDD approach
Git Hookshusky + lint-staged
CommitsConventional 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):

CommandDescription
niInstall dependencies
ni <pkg>Add dependency
ni -D <pkg>Add dev dependency
nr <script>Run script
nuUpgrade dependencies
nun <pkg>Uninstall dependency
nciClean 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

TopicReference
Tooling detailstooling.md
TypeScript configtypescript.md
Linting ruleslinting.md
Testing (TDD)testing.md
Error handlingerror-handling.md

Comments

Markdown supported