typescript

📁 paulrberg/dot-agents 📅 3 days ago
1
总安装量
1
周安装量
#41437
全站排名
安装命令
npx skills add https://github.com/paulrberg/dot-agents --skill typescript

Agent 安装分布

amp 1
opencode 1
kimi-cli 1
codex 1
gemini-cli 1

Skill 文档

TypeScript Skill

Rules

Note that these are not hard-and-fast rules. If there’s a good reason not to apply a rule, don’t apply it.

Alphabetical Order

Maintain alphabetical order for better readability and consistency:

  • Function parameters – Order by parameter name
  • Object literal fields – Sort by key name
  • Type definitions – Arrange fields alphabetically
  • Class properties – Order by property name

Example (type definitions):

// bad
type User = {
  name: string;
  age: number;
  email: string;
};

// good
type User = {
  age: number;
  email: string;
  name: string;
};

Biome

Use BiomeJS for linting and formatting JavaScript and TypeScript code. Look for a biome.jsonc file.

Exception: project already uses ESLint and Prettier.

dayjs for date and time calculations

Use the dayjs library for date calculations. Avoid using the native JavaScript Date object.

Example:

import dayjs from "dayjs";

const now = dayjs();
const tomorrow = now.add(1, "day");

No any type

Never use the any type.

No nested ternary operators

Avoid nested ternary operators. Use if/else statements or early returns instead.

Example:

// bad
const result = a ? b : c ? d : e;

// good
if (a) {
  return b;
}
if (c) {
  return d;
}
return e;

Never return a value in forEach callbacks

Example:

[].forEach(() => {
  return 1; // bad
});

[].forEach(() => {
  // good
});

Another example:

[].forEach((item) => console.log(item)); // bad

[].forEach((item) => {
  console.log(item); // good
});

Prefer type instead of interface

Use type instead of interface for declaring types.

Comment Dividers

Use centered comment dividers for major section breaks:

Format (80 chars total):

// -------------------------------------------------------------------------- //
//                                   TITLE                                    //
// -------------------------------------------------------------------------- //

Rules:

  • Total width: 80 characters
  • Title: UPPERCASE, centered with spaces
  • Border line: dashes - filling the space between // and //

When to use:

  • Major logical sections (imports, types, constants, main logic, exports)
  • Separating distinct feature areas
  • NOT for every function or small grouping

Example:

// -------------------------------------------------------------------------- //
//                                   IMPORTS                                  //
// -------------------------------------------------------------------------- //

import { Effect } from "effect";

// -------------------------------------------------------------------------- //
//                                    TYPES                                   //
// -------------------------------------------------------------------------- //

type Config = {
  name: string;
};