open-index/open-npm huggingface dataset:
npm package: @kunal-singh/commitlint-config
Description: Shared commitlint configuration (extends `@commitlint/config-conventional`).
Latest version: 0.1.1

# @kunal-singh/commitlint-config

Shared commitlint configuration (extends `@commitlint/config-conventional`).

## Usage

Install:

```sh
npm install -D @kunal-singh/commitlint-config @commitlint/cli @commitlint/config-conventional
```

In `commitlint.config.js`:

```js
import config from "@kunal-singh/commitlint-config";

export default config;
```

## Rules

Extends `@commitlint/config-conventional` with:

- Subject line max 72 chars
- Body line max 100 chars
- Scope and subject must be lower-case
npm package: @kunal-singh/create
Description: Scaffolds a new TypeScript project pre-configured with shared tooling from `@kunal-singh/`.
Latest version: 0.2.2

# @kunal-singh/create

Scaffolds a new TypeScript project pre-configured with shared tooling from `@kunal-singh/`.

## Usage

```sh
npm create @kunal-singh@latest <project-name> [preset]
```

The preset argument is optional — you will be prompted if omitted.

## Presets

| Preset    | Description                             |
| --------- | --------------------------------------- |
| `server`  | Node.js / backend services              |
| `library` | Publishable packages and shared modules |
| `react`   | React component libraries               |
| `nextjs`  | Next.js apps                            |

## What gets scaffolded

- `package.json` — with name, scripts (`typecheck`, `lint`, `format`, `prepare`), and dev dependencies
- `tsconfig.json` — extending the chosen preset
- `.eslintrc` / ESLint flat config — extending `@kunal-singh/eslint-config`
- `.prettierrc` — extending `@kunal-singh/prettier-config`
- `commitlint.config.js` — extending `@kunal-singh/commitlint-config`
- `lefthook.yml` — pre-commit (lint + format), commit-msg (commitlint), pre-push (branch name check)
- `scripts/check-branch-name.sh` — enforces `<type>/<issue>-<description>` branch naming

## Next steps

```sh
cd <project-name>
pnpm install
```
npm package: @kunal-singh/eslint-config
Description: Shared ESLint flat configs.
Latest version: 0.2.4

# @kunal-singh/eslint-config

Shared ESLint flat configs.

## Usage

Install:

```sh
npm install -D @kunal-singh/eslint-config eslint
```

In `eslint.config.js`:

```js
import base from "@kunal-singh/eslint-config";

export default [...base];
```

### Node.js servers

Type-aware rules (`no-floating-promises`, `no-misused-promises`) are enabled. Add `tsconfigRootDir` so the project service can locate your `tsconfig.json`:

```js
import server from "@kunal-singh/eslint-config/server";

export default [
  { ignores: ["**/*.config.js", "scripts/**", "dist/**"] },
  ...server,
  {
    languageOptions: {
      parserOptions: {
        tsconfigRootDir: import.meta.dirname,
      },
    },
  },
];
```

### React

```js
import react from "@kunal-singh/eslint-config/react";

export default [
  { ignores: ["**/*.config.js", "scripts/**", "dist/**"] },
  ...react,
  {
    languageOptions: {
      parserOptions: {
        tsconfigRootDir: import.meta.dirname,
      },
    },
  },
];
```

### Next.js

```js
import nextjs from "@kunal-singh/eslint-config/nextjs";

export default [
  { ignores: ["**/*.config.js", "scripts/**"] },
  ...nextjs,
  {
    languageOptions: {
      parserOptions: {
        tsconfigRootDir: import.meta.dirname,
      },
    },
  },
];
```

## Presets

| Export        | Use for                                                    |
| ------------- | ---------------------------------------------------------- |
| `.` (default) | Any TypeScript project                                     |
| `./server`    | Node.js servers (Node globals, type-aware promise rules)   |
| `./react`     | React libraries (React, hooks, jsx-a11y, type-aware rules) |
| `./nextjs`    | Next.js apps (extends react + Next.js recommended rules)   |

## Note on `tsconfigRootDir`

Type-aware presets (`server`, `react`, `nextjs`) include `projectService: true` to auto-discover your `tsconfig.json`. You must add `tsconfigRootDir: import.meta.dirname` in your consumer config so the project service anchors to your project root rather than the package inside `node_modules`.
npm package: @kunal-singh/prettier-config
Description: Shared Prettier configuration.
Latest version: 0.1.1

# @kunal-singh/prettier-config

Shared Prettier configuration.

## Usage

Install:

```sh
npm install -D @kunal-singh/prettier-config prettier
```

In `prettier.config.js`:

```js
import config from "@kunal-singh/prettier-config";

export default config;
```

Or reference it by name in `package.json` (note: this form does not support overrides):

```json
{
  "prettier": "@kunal-singh/prettier-config"
}
```
npm package: @kunal-singh/typescript-config
Description: Shared TypeScript compiler configurations.
Latest version: 0.2.3

# @kunal-singh/typescript-config

Shared TypeScript compiler configurations.

## Usage

Install:

```sh
npm install -D @kunal-singh/typescript-config
```

Extend in your `tsconfig.json`:

```json
{
  "extends": "@kunal-singh/typescript-config/base"
}
```

## Presets

| Preset    | Path                                     | Use for                     |
| --------- | ---------------------------------------- | --------------------------- |
| `base`    | `@kunal-singh/typescript-config/base`    | Any TypeScript project      |
| `server`  | `@kunal-singh/typescript-config/server`  | Node.js servers and scripts |
| `library` | `@kunal-singh/typescript-config/library` | Published packages          |
| `react`   | `@kunal-singh/typescript-config/react`   | React component libraries   |
| `nextjs`  | `@kunal-singh/typescript-config/nextjs`  | Next.js apps                |

## File selection

Presets provide compiler options only — they do not include `include` or `exclude`. Define these in your own `tsconfig.json`:

```json
{
  "extends": "@kunal-singh/typescript-config/server",
  "include": ["src"],
  "exclude": ["node_modules", "dist"]
}
```