typescript-import-style

Merge-friendly import formatting (one-per-line, alphabetical). Auto-loads when writing TypeScript/JavaScript imports to minimize merge conflicts in parallel development. Enforces consistent grouping and sorting.

9 stars

Best use case

typescript-import-style is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Merge-friendly import formatting (one-per-line, alphabetical). Auto-loads when writing TypeScript/JavaScript imports to minimize merge conflicts in parallel development. Enforces consistent grouping and sorting.

Teams using typescript-import-style should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/typescript-import-style/SKILL.md --create-dirs "https://raw.githubusercontent.com/jpoutrin/product-forge/main/plugins/typescript-experts/skills/typescript-import-style/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/typescript-import-style/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How typescript-import-style Compares

Feature / Agenttypescript-import-styleStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Merge-friendly import formatting (one-per-line, alphabetical). Auto-loads when writing TypeScript/JavaScript imports to minimize merge conflicts in parallel development. Enforces consistent grouping and sorting.

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# TypeScript Import Style Guidelines (Merge Conflict Reduction)

Import formatting and ordering rules to minimize merge conflicts when multiple developers or parallel agents modify the same file.

## CRITICAL: One Import Per Line

When importing multiple items from a module, put EACH import on its own line:

```typescript
// CORRECT - merge-friendly (each on separate line)
import {
  alpha,
  beta,
  gamma,
} from 'some-module';

// WRONG - causes merge conflicts
import { alpha, beta, gamma } from 'some-module';
```

This is enforced by Prettier with `printWidth: 80`. With one-per-line, Git can merge imports from parallel changes without conflicts.

## Import Order (Top to Bottom)

1. **Node.js built-ins** (e.g., `import fs from 'fs'`, `import path from 'path'`)
2. **External packages** (e.g., `import React from 'react'`, `import express from 'express'`)
3. **Internal aliases** (e.g., `import { util } from '@/utils'`)
4. **Parent directory imports** (e.g., `import { Parent } from '../Parent'`)
5. **Sibling imports** (e.g., `import { Sibling } from './Sibling'`)
6. **Index imports** (e.g., `import { thing } from './index'`)
7. **Type-only imports** (e.g., `import type { MyType } from './types'`)

## Within Each Group

- Sort imports alphabetically by module path (case-insensitive)
- Sort named imports alphabetically within braces
- Sort export statements alphabetically

## Spacing

- Add one blank line between import groups
- No blank lines within a group

## Complete Example

```typescript
// Node.js built-ins
import fs from 'fs';
import path from 'path';

// External packages
import express from 'express';
import React from 'react';

// Internal aliases
import { config } from '@/config';
import { logger } from '@/utils';

// Parent imports
import { BaseService } from '../BaseService';

// Sibling imports (one per line when multiple)
import {
  helperA,
  helperB,
  helperC,
} from './helpers';
import { utils } from './utils';

// Type imports (one per line when multiple)
import type { Config } from '@/types';
import type {
  Request,
  Response,
} from 'express';
```

## Named Exports

Sort named exports alphabetically, one per line when multiple:

```typescript
// CORRECT
export {
  alpha,
  beta,
  gamma,
};

// WRONG
export { gamma, alpha, beta };
```

## Why This Matters

Sorted, one-per-line imports reduce merge conflicts because:

- New imports are inserted at predictable positions (alphabetically)
- Parallel tasks adding imports to the same file won't conflict
- Git can auto-merge changes on different lines
- Consistent structure makes diffs cleaner and reviews easier

## Tooling (Auto-enforced)

These rules are enforced by:

- **eslint-plugin-simple-import-sort**: Sorts imports/exports alphabetically
- **Prettier with `printWidth: 80`**: Forces line wrapping for multiple imports

Run `eslint --fix && prettier --write` before committing.

## ESLint Configuration

```javascript
// .eslintrc.js or eslint.config.js
module.exports = {
  plugins: ['simple-import-sort'],
  rules: {
    'simple-import-sort/imports': 'error',
    'simple-import-sort/exports': 'error',
  },
};
```

## Prettier Configuration

```json
{
  "printWidth": 80,
  "singleQuote": true,
  "trailingComma": "all"
}
```

## Re-export Patterns

When re-exporting from index files, follow the same one-per-line rule:

```typescript
// CORRECT
export {
  ComponentA,
  ComponentB,
  ComponentC,
} from './components';

export type {
  TypeA,
  TypeB,
} from './types';

// WRONG
export { ComponentA, ComponentB, ComponentC } from './components';
```

## Dynamic Imports

Dynamic imports follow the same alphabetical ordering when multiple exist:

```typescript
// Alphabetical order by module path
const moduleA = await import('./moduleA');
const moduleB = await import('./moduleB');
const utils = await import('./utils');
```

Related Skills

python-style

9
from jpoutrin/product-forge

Python coding style enforcement (PEP standards, type hints, docstrings, modern patterns). Auto-loads when writing or reviewing Python code.

typescript-style

9
from jpoutrin/product-forge

TypeScript coding style enforcement (ESLint, type safety, React patterns). Auto-loads when writing or reviewing TypeScript/JavaScript code.

typescript-code-review

9
from jpoutrin/product-forge

TypeScript and React code review guidelines (type safety, React patterns, performance). Auto-loads when reviewing TypeScript/React code.

zod

9
from jpoutrin/product-forge

Zod schema validation patterns and type inference. Auto-loads when validating schemas, parsing data, validating forms, checking types at runtime, or using z.object/z.string/z.infer in TypeScript.

setup-mcp-auth

9
from jpoutrin/product-forge

Configure authentication for an existing FastMCP server

fastmcp

9
from jpoutrin/product-forge

FastMCP TypeScript framework patterns for MCP servers. Auto-loads when building MCP servers, creating tools/resources/prompts, implementing authentication, configuring transports, or working with FastMCP in TypeScript.

add-mcp-tool

9
from jpoutrin/product-forge

Add a new tool to an existing FastMCP server with guided configuration

add-mcp-resource

9
from jpoutrin/product-forge

Add a new resource or resource template to an existing FastMCP server

plan-with-team

9
from jpoutrin/product-forge

Validate plan file ownership

privacy-compliance

9
from jpoutrin/product-forge

GDPR, CCPA, and privacy compliance guidance for data protection. Use when handling personal data, implementing consent management, or ensuring regulatory compliance across jurisdictions.

oauth

9
from jpoutrin/product-forge

OAuth 2.0 and OpenID Connect implementation patterns. Use when implementing authentication, authorization flows, or integrating with OAuth providers like Google, GitHub, or custom identity providers.

mcp-security

9
from jpoutrin/product-forge

Use when securing MCP servers, preventing prompt injection, implementing authorization, validating user input, or building secure multi-agent pipelines. Provides 5-layer defense architecture patterns.