Token导航 LogoToken导航

Agent Skill · 前端设计

typescript-writing-code(TypeScript writing 代码)

用于辅助文档、README、Markdown、说明文和内容稿件的整理与改写。它适合让 Agent 提炼结构、补齐章节、统一术语、检查链接或把零散材料整理成可读文档。使用时应保留项目已有事实、命令和路径,不要把未确认的信息写成确定结论;涉及对外文案时,还需要控制语气,避免过度营销或夸大能力。

typescript-writing-code 是前端设计类 Agent Skill,可用宿主为 Codex、Claude、Cursor、Gemini CLI,通过GitHub 仓库获取,权限为需要联网;许可证信息还不明确,第三方扫描已通过,按安装量在前端设计类的 10,216 个 Skill 里排第 9,297。

总安装 220周安装 9GitHub Stars 2下载 71核验 2026-05-01

安装说明

本站只整理中文说明,不托管安装包,也不代用户安装。
GitHub
许可证
unknown

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:typescript-writing-code(TypeScript writing 代码)
来源仓库:https://github.com/ivantorresedge/molcajete.ai
仓库路径:skills/typescript-writing-code
安装命令:
npx skills add https://github.com/ivantorresedge/molcajete.ai --skill typescript-writing-code
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

skills.shnpx skills
npx skills add https://github.com/ivantorresedge/molcajete.ai --skill typescript-writing-code

这个 Skill 是做什么的

前端设计类 Skill 关注页面结构、视觉规范和组件写法,输出通常是可运行的界面代码。

辅助文档与内容稿件整理,支持 README、Markdown 等格式改写。可用于提炼结构、统一术语或检查链接完整性。需保留项目已有事实与路径信息,避免虚构未确认内容。涉及对外文案时应控制语气,避免过度营销表述。typescript-writing-code 属于前端设计类 Skill,可作为该场景下的辅助能力补充。

来源仓库内路径:skills/typescript-writing-code

上手步骤

4 步
  1. 1

    确认自己的宿主工具

    公开资料标注支持 Codex、Claude、Cursor、Gemini CLI;先确认自己用的是其中之一,再按对应工具的 Skills 目录放置。

  2. 2

    拿到安装命令

    可以直接复制的命令是 npx skills add https://github.com/ivantorresedge/molcajete.ai --skill typescript…;命令里的占位符换成自己的路径或密钥再执行。

  3. 3

    安装后重启宿主

    命令执行完要完全退出宿主工具再打开,让新装的 Skill 被重新扫描到,否则列表里可能看不到。

  4. 4

    按最小权限试用

    它需要需要联网,先在测试目录或测试账号里跑,确认没问题再放到正式项目。

常见问题

6 条

typescript-writing-code 怎么安装?

在终端执行 npx skills add https://github.com/ivantorresedge/molcajete.ai --skill typescript-writing-c…。装完完全退出宿主工具再打开,让它重新扫描本地 Skill。

typescript-writing-code 支持哪些 AI 工具?

公开资料标注支持 Codex、Claude、Cursor、Gemini CLI。其他工具只要能读取本地 Skill 目录,一般也能手动放进去,但要自己确认触发方式是否一致。

typescript-writing-code 需要什么权限?

权限级别是需要联网。该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

typescript-writing-code 是免费的吗?

公开资料没有标注明确许可证,收费和商用限制都无法确认。正式使用前请到来源仓库核对授权说明。

typescript-writing-code 用的人多吗?

公开数据是累计安装 220 次,近一周安装 9 次,下载 71 次,GitHub 2 星。这些数字来自第三方目录统计,只能当作热度参考,不代表质量或安全性。

typescript-writing-code 安全吗?

第三方扫描结果为通过,但这只覆盖已知的静态检查项,不能替代自己读一遍源码和安装命令。

值得选的地方和要先想清楚的地方

值得选的地方

  • 同时适配 4 种工具,换客户端不用重新找替代品。
  • 第三方扫描已通过,常见的高风险行为没有命中。

先想清楚的地方

  • 许可证没有明确标注,能不能商用、能不能再分发都不确定。
  • 第三方目录整理,版本更新和行为细节以来源仓库为准。

适不适合你

更适合

  • 已经在用 Codex,想直接扩展它能力的人。
  • 需要处理前端设计类任务、又不想每次都手写提示词的人。

不太适合

  • 需要明确授权才能用到公司项目里的场景。
  • 需要厂商级技术支持和 SLA 的生产系统。

前端设计类 Skill 对比

6 个同类
Skill总安装GitHub 星权限许可证扫描
frontend-design

前端设计 · Codex、Claude

8,823,360126,072只读MIT通过
vercel-composition-patterns

Vercel 组合模式 · Codex、Claude

3,858,81625,893需要联网MIT通过
vercel-react-native-skills

Vercel React native skills 前端 · Codex、Claude

2,468,66425,878只读MIT通过
adapt

adapt 搜索 · Codex、Claude

2,027,04023,125操作浏览器未明确通过
bolder

bolder 分析 · Codex、Claude

2,004,28823,130只读未明确通过
typescript-writing-code

TypeScript writing 代码 · 本页

2202需要联网未明确通过

按安装量取同分类前几名;数字来自第三方目录统计,只作热度参考,不代表质量结论。

SKILL.md 原文

TypeScript Writing Code

Quick reference for writing production-quality TypeScript code. Each section summarizes the key rules — reference files provide full examples and edge cases.

Strict TypeScript Configuration

This project enforces maximum type safety through tsconfig.base.json. Zero any tolerance — no exceptions.

Key Flags

  • strict: true — Enables all strict type-checking options as a group.
  • noImplicitAny: true — Every value must have an explicit or inferable type. No implicit any.
  • strictNullChecks: true — null and undefined are distinct types. Must be handled explicitly.
  • noUncheckedIndexedAccess: true — Array/object index access returns T | undefined. Always check before using.
  • noUnusedLocals: true — Unused variables are compile errors, not warnings.
  • noUnusedParameters: true — Unused function parameters are compile errors.
  • noImplicitReturns: true — Every code path in a function must return a value.
  • isolatedModules: true — Required for Vite/esbuild compatibility. Prevents features that need full-program analysis.

Zero any Policy

// ❌ Wrong — using `any`
function parse(data: any): User {
  return data as User;
}

// ✅ Correct — using `unknown` with narrowing
function parse(data: unknown): User {
  if (!isUser(data)) {
    throw new Error("Invalid user data");
  }
  return data;
}

Safe Indexed Access

With noUncheckedIndexedAccess, array and record access returns T | undefined:

const items = ["a", "b", "c"];
const first = items[0]; // string | undefined — must check

if (first !== undefined) {
  console.log(first.toUpperCase()); // safe
}

const map: Record<string, number> = { a: 1 };
const value = map["b"]; // number | undefined — must check

Catch Blocks

Always type catch variables as unknown:

try {
  await fetchData();
} catch (error: unknown) {
  if (error instanceof Error) {
    console.error(error.message);
  }
  throw error;
}

See references/strict-config.md for the full tsconfig.base.json, flag explanations, and anti-patterns.

Type Safety Patterns

Use TypeScript's type system to catch bugs at compile time, not runtime.

Type Guards

// typeof guard
function formatValue(value: string | number): string {
  if (typeof value === "string") {
    return value.toUpperCase();
  }
  return value.toFixed(2);
}

// Custom type guard with `is` predicate
function isUser(value: unknown): value is User {
  return (
    typeof value === "object" &&
    value !== null &&
    "id" in value &&
    "email" in value
  );
}

Discriminated Unions

Tag union members with a literal type field. Use exhaustive switch for safety:

type Result<T> =
  | { kind: "success"; data: T }
  | { kind: "error"; error: string };

function handle<T>(result: Result<T>): void {
  switch (result.kind) {
    case "success":
      console.log(result.data);
      break;
    case "error":
      console.error(result.error);
      break;
    default: {
      const _exhaustive: never = result;
      throw new Error(`Unhandled case: ${_exhaustive}`);
    }
  }
}

Branded Types

Use branded types for nominal typing when primitive types are too loose:

type UserId = string & { readonly __brand: "UserId" };
type OrderId = string & { readonly __brand: "OrderId" };

function createUserId(id: string): UserId {
  return id as UserId;
}

function getUser(id: UserId): User { /* ... */ }

// getUser(orderId) — compile error, even though both are strings

See references/type-safety.md for generics, utility types, assertion functions, and anti-patterns.

ESM Module Patterns

This project uses ESM ("type": "module") throughout. All packages set "type": "module" in package.json.

Import Rules

  • Named exports preferred — Default exports make refactoring harder and tree-shaking less predictable.
  • import type for types — Biome enforces useImportType and useExportType. Type-only imports are erased at runtime.
  • node: prefix for built-ins — Always use node:path, node:fs, node:crypto.
// ✅ Correct
import { useState, useEffect } from "react";
import type { ReactNode } from "react";
import path from "node:path";

// ❌ Wrong — missing type keyword
import { ReactNode } from "react"; // Biome error: useImportType

Barrel Files

Use barrel files (index.ts) for clean public APIs, but keep them thin:

// components/index.ts
export { Button } from "./Button";
export { Input } from "./Input";
export type { ButtonProps, InputProps } from "./types";

Dynamic Imports

Use dynamic import() for code splitting in routes and heavy modules:

const AdminPanel = lazy(() => import("./pages/AdminPanel"));

See references/esm-modules.md for build output, circular dependency detection, and package.json exports.

Error Handling

Handle errors explicitly. Use result types for expected failures, exceptions for unexpected ones.

Result Type Pattern

type Result<T, E = string> =
  | { ok: true; data: T }
  | { ok: false; error: E };

function createSuccess<T>(data: T): Result<T, never> {
  return { ok: true, data };
}

function createError<E>(error: E): Result<never, E> {
  return { ok: false, error };
}

Discriminated Union Errors

type ApiError =
  | { kind: "not_found"; resource: string }
  | { kind: "validation"; fields: Record<string, string> }
  | { kind: "unauthorized" };

function handleApiError(error: ApiError): string {
  switch (error.kind) {
    case "not_found":
      return `${error.resource} not found`;
    case "validation":
      return Object.values(error.fields).join(", ");
    case "unauthorized":
      return "Please sign in";
  }
}

Try-Catch Rules

// ✅ Correct — catch unknown, narrow, add context
try {
  await api.createUser(data);
} catch (error: unknown) {
  if (error instanceof ApiError) {
    throw new Error(`Failed to create user: ${error.message}`);
  }
  throw error; // Re-throw unexpected errors
}

// ❌ Wrong — catch any, swallow error
try {
  await api.createUser(data);
} catch (e: any) {
  console.log(e.message); // unsafe access
}

See references/error-handling.md for async patterns, retry logic, and when to throw vs return errors.

Biome (Linter & Formatter)

This project uses Biome (v2.3.11) for both linting and formatting. It replaces ESLint and Prettier entirely.

Key Rules

RuleLevelEffect
noExplicitAnyerrorCannot use any type anywhere
noUnusedVariableserrorAll variables must be used
noUnusedImportserrorAll imports must be used
useConsterrorUse const when variable is never reassigned
useImportTypeerrorUse import type for type-only imports
useExportTypeerrorUse export type for type-only exports
noNonNullAssertionwarnAvoid ! postfix operator
a11y recommendedonAccessibility rules for JSX

Formatter Settings

  • Double quotes, semicolons always, trailing commas
  • 2-space indent, 100-character line width
  • Organize imports automatically

Commands

# Check (lint + format check)
biome check .

# Fix (lint fix + format)
biome check --write .

# CI mode (fails on any issue)
biome ci .

Critical Rule

Never add biome-ignore comments. Fix the underlying issue instead of suppressing it. This is a hard project rule — no exceptions.

See references/biome.md for the full biome.json config, VS Code integration, and common fix patterns.

Naming Conventions & Code Quality

Naming Rules

ContextConventionExample
Variables, functionscamelCaseuserName, fetchUser()
Types, interfaces, classesPascalCaseUserProfile, AuthService
ConstantsUPPER_SNAKE_CASEMAX_RETRIES, API_BASE_URL
Fileskebab-caseuser-profile.tsx, auth-service.ts
Component filesPascalCaseUserProfile.tsx, AuthGuard.tsx
Test filesMatch sourceUserProfile.test.tsx
Enum membersPascalCaseUserRole.Admin

Code Quality Rules

  • Zero warnings policy — Treat warnings as errors. Fix them, don't ignore them.
  • No @ts-ignore — Use @ts-expect-error with a comment explaining why, only as a last resort.
  • No type assertions as escape hatches — as unknown as T is a code smell. Refactor instead.
  • Prefer const assertions — Use as const for literal types instead of explicit type annotations.
  • JSDoc for exports — Document exported functions and types with JSDoc. Focus on the "why", not the "what".
/**
 * Encrypts PII fields before database storage.
 * Uses AES-256-GCM with a per-record IV for uniqueness.
 */
export function encryptField(plaintext: string, key: Buffer): EncryptedField {
  // ...
}

Post-Change Verification (MANDATORY)

After every TypeScript code change, run this 4-step verification. No exceptions.

The 4 Steps

# 1. Type-check
pnpm run type-check
# or per-app: pnpm --filter patient type-check

# 2. Lint
pnpm run lint
# or per-app: pnpm --filter patient lint

# 3. Format
pnpm run format
# or per-app: pnpm --filter patient format

# 4. Test
pnpm run test
# or per-app: pnpm --filter patient test

One-Command Verification

# Run all checks for a specific app
pnpm --filter patient validate

Rules

  • All 4 steps must pass before considering a change complete.
  • Fix issues immediately — Don't defer lint warnings or type errors.
  • Never suppress to pass — No @ts-ignore, no biome-ignore, no any casts.

See references/post-change-protocol.md for the full verification workflow, common failures, and troubleshooting.

Reference Files

FileDescription
references/strict-config.mdFull tsconfig.base.json, strict flags, zero-any patterns, anti-patterns
references/type-safety.mdType guards, discriminated unions, branded types, generics, utility types
references/esm-modules.mdESM fundamentals, import/export rules, barrel files, build output
references/error-handling.mdResult types, discriminated union errors, async patterns, retry logic
references/biome.mdFull biome.json config, rules reference, VS Code integration
references/post-change-protocol.md4-step verification workflow, troubleshooting, common failures

平台分布

Codex

33.51%
按下载量换算24

Claude

32.74%
按下载量换算23

Cursor

17.41%
按下载量换算12

Gemini CLI

9.19%
按下载量换算7

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

通过

权限和风险

需要联网

该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。目前只有一个公开来源,建议同时核对源仓库。

继续浏览同类 Skills