
Product
Introducing Repository Access Permissions and Custom Roles
Socket now supports Custom Roles and Repository Access Permissions so organizations can control who can access specific repositories and actions.
@howells/lint
Advanced tools
@howells/lintPinned Biome and Ultracite presets for Howells projects.
The goal is not to invent a second lint philosophy. The goal is to:
@biomejs/biome versionultracite version@manypkg/cli version for monorepo consistency checkspnpm add -D @howells/lint
Choose the closest preset instead of starting from a generic base and patching it locally:
@howells/lint/biome/core@howells/lint/biome/react@howells/lint/biome/nextThese presets already:
ignoreUnknown on so mixed repos do not need defensive local configNode or non-React TypeScript package:
{
"extends": ["@howells/lint/biome/core"]
}
React package:
{
"extends": ["@howells/lint/biome/react"]
}
Next.js app:
{
"extends": ["@howells/lint/biome/next"]
}
Installers only need @howells/lint as a direct dependency. Use the package binaries instead of adding @biomejs/biome, ultracite, or @manypkg/cli separately:
howells-biome proxies to the pinned Biome binaryhowells-ultracite proxies to the pinned Ultracite binaryhowells-lint defaults to biome check .howells-lint-strict runs the high-signal Biome security, correctness, and suspicious lint ruleshowells-format defaults to biome check . --writehowells-workspace-check validates root workspace hygiene, then runs manypkg checkhowells-workspace-fix defaults to manypkg fixExample scripts:
{
"scripts": {
"lint": "howells-lint .",
"lint:fix": "howells-format .",
"lint:strict": "howells-lint-strict ."
}
}
Keep lint non-mutating. Put all --write behavior in lint:fix or format so CI and local checks have the same semantics.
Monorepo root scripts should compose package linting with workspace validation:
{
"scripts": {
"lint": "turbo run lint && howells-workspace-check",
"lint:fix": "turbo run lint:fix && howells-workspace-fix",
"lint:strict": "turbo run lint:strict"
}
}
howells-workspace-check expects workspace roots to declare packageManager: "pnpm@...", require Node 20+ in engines.node, and keep pnpm-workspace.yaml present when using workspace package directories.
CI should call pnpm lint or pnpm check so these root checks are not bypassed by a direct turbo lint command.
Prefer explicit script targets over config churn when the only difference is scope:
{
"scripts": {
"lint": "howells-lint apps/web packages/ui",
"lint:fix": "howells-format apps/web packages/ui"
}
}
base, shared, or custom Biome wrappers.biome-ignore comments for truly isolated exceptions over broad config overrides.lint scripts read-only; use lint:fix for formatting and safe writes.howells-lint . over raw biome check or long target lists unless a package has a real scope constraint.Add this to .claude/settings.json so files are formatted on edit and linted on session end:
{
"hooks": {
"PostToolUse": [
{
"matcher": "Edit|Write",
"hooks": [
{
"type": "command",
"command": "jq -r '.tool_input.file_path' | { read file_path; case \"$file_path\" in *.js|*.ts|*.jsx|*.tsx|*.json|*.jsonc|*.css|*.graphql) howells-format \"$file_path\" 2>/dev/null || true ;; esac; }"
}
]
}
],
"Stop": [
{
"hooks": [
{
"type": "command",
"command": "git diff --name-only --diff-filter=d HEAD | grep -E '\\.(js|ts|jsx|tsx|json|jsonc|css|graphql)$' | xargs howells-format 2>/dev/null || true"
}
]
}
]
}
}
This package wraps:
FAQs
Pinned Biome, Oxlint/Oxfmt, Ultracite, and React Doctor presets for Howells projects.
The npm package @howells/lint receives a total of 89 weekly downloads. As such, @howells/lint popularity was classified as not popular.
We found that @howells/lint demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Product
Socket now supports Custom Roles and Repository Access Permissions so organizations can control who can access specific repositories and actions.

Product
Socket MCP now lets AI assistants review org alerts, investigate threats using the Socket threat feed, and inspect package files in addition to dependency scoring.

Product
Socket Firewall blocks malicious VS Code and Open VSX extensions before install, protecting developers from compromised editor marketplaces.