typescript-pro
Skill4 starsChanged 26 days agoMITView on GitHub
Implements advanced TypeScript type systems, creates custom type guards, utility types, and branded types, and configures tRPC for end-to-end type safety. Use when building TypeScript applications requiring advanced generics, conditional or mapped types, discriminated unions, monorepo setup, or full-stack type safety with tRPC.
We split this skill into the rules it gives an agent
10 rules. 0 are common, 4 are distinctive, and 6 are very specific to this project.
0
Common
Most of the 24 edited versions we read keep these.
4
Distinctive
This author's own choices. Worth a look.
6
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 21
Design type-first APIs: - Create branded types, generics, utility types
- Very specific: line 22
Implement with type safety: - Write type guards, discriminated unions, conditional types.
- Distinctive: line 117
Use type-first API design
- Very specific: line 119
Use satisfies operator for type validation
- Distinctive: line 120
Create discriminated unions for state machines
- Very specific: line 121
Use Annotated pattern with type predicates
- Very specific: line 126
Use explicit any without justification
- Very specific: line 130
Use as assertions without necessity
- Very specific: line 133
Use enums (prefer const objects with as const)
- Distinctive: line 137
When implementing TypeScript features, provide:
“Common” is measured: kept by at least 6 in 10 of the 24 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
TypeScript Pro
Core Workflow
- Analyze type architecture - Review tsconfig, type coverage, build performance
- Design type-first APIs - Create branded types, generics, utility types
- Implement with type safety - Write type guards, discriminated unions, conditional types; run
tsc --noEmitto catch type errors before proceeding - Optimize build - Configure project references, incremental compilation, tree shaking; re-run
tsc --noEmitto confirm zero errors after changes - Test types - Confirm type coverage with a tool like
type-coverage; validate that all public APIs have explicit return types; iterate on steps 3–4 until all checks pass
Reference Guide
Load detailed guidance based on context:
| Topic | Reference | Load When |
| Advanced Types | references/advanced-types.md | Generics, conditional types, mapped types, template literals |
| Type Guards | references/type-guards.md | Type narrowing, discriminated unions, assertion functions |
| Utility Types | references/utility-types.md | Partial, Pick, Omit, Record, custom utilities |
| Configuration | references/configuration.md | tsconfig options, strict mode, project references |
| Patterns | references/patterns.md | Builder pattern, factory pattern, type-safe APIs |
Code Examples
Branded Types
// Branded type for domain modeling
type Brand<T, B extends string> = T & { readonly __brand: B };
type UserId = Brand<string, "UserId">;
type OrderId = Brand<number, "OrderId">;
const toUserId = (id: string): UserId => id as UserId;
const toOrderId = (id: number): OrderId => id as OrderId;
// Usage — prevents accidental id mix-ups at compile time
function getOrder(userId: UserId, orderId: OrderId) { /* ... */ }Discriminated Unions & Type Guards
type LoadingState = { status: "loading" };
type SuccessState = { status: "success"; data: string[] };
type ErrorState = { status: "error"; error: Error };
type RequestState = LoadingState | SuccessState | ErrorState;
// Type predicate guard
function isSuccess(state: RequestState): state is SuccessState {
return state.status === "success";
}
// Exhaustive switch with discriminated union
function renderState(state: RequestState): string {
switch (state.status) {
case "loading": return "Loading…";
case "success": return state.data.join(", ");
case "error": return state.error.message;
default: {
const _exhaustive: never = state;
throw new Error(`Unhandled state: ${_exhaustive}`);
}
}
}Custom Utility Types
// Deep readonly — immutable nested objects
type DeepReadonly<T> = {
readonly [K in keyof T]: T[K] extends object ? DeepReadonly<T[K]> : T[K];
};
// Require exactly one of a set of keys
type RequireExactlyOne<T, Keys extends keyof T = keyof T> =
Pick<T, Exclude<keyof T, Keys>> &
{ [K in Keys]-?: Required<Pick<T, K>> & Partial<Record<Exclude<Keys, K>, never>> }[Keys];Recommended tsconfig.json
{
"compilerOptions": {
"target": "ES2022",
"module": "NodeNext",
"moduleResolution": "NodeNext",
"strict": true,
"noUncheckedIndexedAccess": true,
"noImplicitOverride": true,
"exactOptionalPropertyTypes": true,
"isolatedModules": true,
"declaration": true,
"declarationMap": true,
"incremental": true,
"skipLibCheck": false
}
}Constraints
MUST DO
- Enable strict mode with all compiler flags
- Use type-first API design
- Implement branded types for domain modeling
- Use
satisfiesoperator for type validation - Create discriminated unions for state machines
- Use
Annotatedpattern with type predicates - Generate declaration files for libraries
- Optimize for type inference
MUST NOT DO
- Use explicit
anywithout justification - Skip type coverage for public APIs
- Mix type-only and value imports
- Disable strict null checks
- Use
asassertions without necessity - Ignore compiler performance warnings
- Skip declaration file generation
- Use enums (prefer const objects with
as const)
Output Templates
When implementing TypeScript features, provide:
- Type definitions (interfaces, types, generics)
- Implementation with type guards
- tsconfig configuration if needed
- Brief explanation of type design decisions
Knowledge Reference
TypeScript 5.0+, generics, conditional types, mapped types, template literal types, discriminated unions, type guards, branded types, tRPC, project references, incremental compilation, declaration files, const assertions, satisfies operator
Other versions29 projects use a version of this.
Word for word · 4
- rcdelfin/agentkit★ 2100% same
- musaJawad004/heron★ 1100% same
- james-paul25/claude-skill★ 0100% same
- LucasGS520/Claude-Skills★ 0100% same
Edited · 13
- Jeffallan/claude-skills★ 12k96% same
- zebbern/claude-code-guide★ 4.7k65% same
- sampleXbro/agentsmesh★ 2463% same
- PIXARTSeu/Synapse★ 9100% same
- thesaifalitai/claude-setup★ 865% same
- megastep/codex-skills★ 455% same
- zacklecon/claude-skills★ 365% same
- liushikuan63/Qoder-Optimization★ 299% same
- weininghui/skills★ 161% same
- gloomyweather/opencode-setup★ 096% same
3 more not listed
Wrote their own version · 12
- kumaran-is/claude-code-onboarding★ 35same name
- jshsakura/awesome-opencode-skills★ 30same name
- Fandry96/k3-agentic-skills★ 27same name
- belokonm/claude-supercode-skills★ 11same name
- xfstudio/skills★ 9same name
- 4gentic/obelus★ 8same name
- nicolasestrem/antigravity-gemini-skills★ 8same name
- marttp/my_agent_skills_I_use★ 4same name
- ai4brands-design/claude-skills★ 2same name
- mcabreradev/hermes-sdd-agency★ 1same name
2 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
Used alongsideProjects with it also use ui-ux-pro-max and frontend-design.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
StrayDragonSkillui-ux-pro-max
UI/UX design intelligence. 50 styles, 21 palettes, 50 font pairings, 20 charts, 8 stacks (React, Next.js, Vue, Svelte, SwiftUI, React Native, Flutter, Tailwind). Actions: plan, build, create, design, implement, review, fix, improve, optimize, enhance, refactor, check UI/UX code. Projects: website, landing page, dashboard, admin panel, e-commerce, SaaS, portfolio, blog, mobile app, .html, .tsx, .vue, .svelte. Elements: button, modal, navbar, sidebar, card, table, form, chart. Styles: glassmorphism, claymorphism, minimalism, brutalism, neumorphism, bento grid, dark mode, responsive, skeuomorphism, flat design. Topics: color palette, accessibility, animation, layout, typography, font pairing, spacing, hover, shadow, gradient.
Also in 3 projects that use this
BlockSkillfrontend-design
Create distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
Also in 3 projects that use this
In this repository4 other files it gives its agents.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

