← Back to list

typescript-dev
by aiskillstore
Security-audited skills for Claude, Codex & Claude Code. One-click install, quality verified.
⭐ 102🍴 3📅 Jan 23, 2026
SKILL.md
name: typescript-dev description: TypeScript development best practices, code quality tools, and documentation templates. Activated when working with .ts, .tsx files or TypeScript projects. allowed-tools: ['Read', 'Glob', 'Grep', 'Bash']
TypeScript Development Expert
This skill supports TypeScript project development.
🎯 Core Rules
Package Management
- Required: Use
pnpmas package manager - Do not use
npmoryarn
Type Safety
- tsconfig.json:
strict: truerequired - Null Handling: Leverage optional chaining
?.and nullish coalescing?? - Imports: Use ES modules, avoid
require() - NO ANY: Do not use
anytype in production code
Best Practices
- Type Inference: Let TypeScript infer when obvious
- Generics: Use for reusable components
- Union Types: Prefer union types over enums for string literals
- Utility Types: Leverage built-in types (Partial, Pick, Omit)
Documentation
- Required: Use TSDoc format for documentation comments
- Public APIs only: Document exported functions, classes, and interfaces
- Self-documenting code: Prefer clear naming over excessive comments
- Document when necessary: Add TSDoc only when the code intent isn't obvious from the signature
🛠️ Code Quality Tools
Development Workflow
# Format code
pnpm run format
# Run linter
pnpm run lint
# Type check
pnpm tsc --noEmit
# Run tests with coverage
pnpm test -- --coverage
🎯 Quality Checklist
Check these during code review:
- Public APIs have TSDoc comments (when intent isn't clear from signature)
- No
anytype usage - Proper error handling
- Test coverage above 80%
- Type inference properly leveraged
- Utility Types utilized
- Optional chaining (
?.) and Nullish coalescing (??) used - ES modules used (avoid
require())
🚀 Common Patterns
Error Handling
// Good: Clear error types
class ValidationError extends Error {
constructor(message: string, public field: string) {
super(message);
this.name = 'ValidationError';
}
}
// Good: Result type pattern
type Result<T, E = Error> =
| { success: true; data: T }
| { success: false; error: E };
Async/Await
// Good: With error handling
async function fetchUserData(id: string): Promise<Result<UserData>> {
try {
const response = await fetch(`/api/users/${id}`);
const data = await response.json();
return { success: true, data };
} catch (error) {
return { success: false, error: error as Error };
}
}
Type Guards
// Good: Custom type guard
function isUserProfile(value: unknown): value is UserProfile {
return (
typeof value === 'object' &&
value !== null &&
'id' in value &&
'username' in value
);
}
💡 Performance Tips
-
Avoid unnecessary re-renders (React)
- Use
React.memofor expensive components - Use
useMemo/useCallbackappropriately
- Use
-
Lazy Loading
- Dynamic imports for code splitting
React.lazy()for components
-
Type-only imports
import type { UserProfile } from './types';
🔍 Common Anti-patterns to Avoid
❌ Don't:
// Using any type
function process(data: any) { }
// Implicit any
function getValue(obj, key) { }
// Excessive type assertions
const user = data as User;
✅ Do:
// Proper type definitions
function process(data: UserData) { }
// Explicit types
function getValue<T>(obj: T, key: keyof T) { }
// Use type guards
if (isUser(data)) {
// data is User here
}
Score
Total Score
60/100
Based on repository quality metrics
✓SKILL.md
SKILL.mdファイルが含まれている
+20
○LICENSE
ライセンスが設定されている
0/10
○説明文
100文字以上の説明がある
0/10
✓人気
GitHub Stars 100以上
+5
✓最近の活動
1ヶ月以内に更新
+10
○フォーク
10回以上フォークされている
0/5
✓Issue管理
オープンIssueが50未満
+5
✓言語
プログラミング言語が設定されている
+5
✓タグ
1つ以上のタグが設定されている
+5
Reviews
💬
Reviews coming soon
