angular-architect
Generates Angular 17+ standalone components, configures advanced routing with lazy loading and guards, implements NgRx state…
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,
Claude Code
$ npx -y skills add Jeffallan/claude-skills --skill typescript-pro --agent claude-code
Codex
$ npx skills add Jeffallan/claude-skills --skill typescript-pro -a codex -y
Cursor
$ npx skills add Jeffallan/claude-skills --skill typescript-pro -a cursor -y
Gemini CLI
$ npx skills add Jeffallan/claude-skills --skill typescript-pro -a gemini-cli -y
GitHub Copilot
$ npx skills add Jeffallan/claude-skills --skill typescript-pro -a github-copilot -y
OpenCode
$ npx skills add Jeffallan/claude-skills --skill typescript-pro -a opencode -y
Windsurf
$ npx skills add Jeffallan/claude-skills --skill typescript-pro -a windsurf -y
name: typescript-pro description: 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. license: MIT metadata: author: https://github.com/Jeffallan company: https://synergetic.solutions version: "1.1.0" domain: language triggers: TypeScript, generics, type safety, conditional types, mapped types, tRPC, tsconfig, type guards, discriminated unions role: specialist scope: implementation output-format: code related-skills: fullstack-guardian, api-designer
1. **Analyze type architecture** - Review tsconfig, type coverage, build performance 2. **Design type-first APIs** - Create branded types, generics, utility types 3. **Implement with type safety** - Write type guards, discriminated unions, conditional types; run `tsc --noEmit` to catch type errors before proceeding 4. **Optimize build** - Configure project references, incremental compilation, tree shaking; re-run `tsc --noEmit` to confirm zero errors after changes 5. **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
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 |
// 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) { /* ... */ }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}`);
}
}
}// 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];{
"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
}
}When implementing TypeScript features, provide: 1. Type definitions (interfaces, types, generics) 2. Implementation with type guards 3. tsconfig configuration if needed 4. Brief explanation of type design decisions
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
Maintained by [@jeffallan](https://github.com/jeffallan), Principal Consultant at [Synergetic Solutions](https://synergetic.solutions)
[Documentation](https://jeffallan.github.io/claude-skills/skills/language/typescript-pro/)
67 Specialized Skills for Full-Stack Developers. Transform Claude Code into your expert pair programmer.
Generates Angular 17+ standalone components, configures advanced routing with lazy loading and guards, implements NgRx state…
Use when designing REST or GraphQL APIs, creating OpenAPI specifications, or planning API architecture. Invoke for resource…
Use when designing new high-level system architecture, reviewing existing designs, or making architectural decisions. Invoke to…
Integrates with Atlassian products to manage project tracking and documentation via MCP protocol. Use when querying Jira issues…
Designs chaos experiments, creates failure injection frameworks, and facilitates game day exercises for distributed systems —…
Use when building CLI tools, implementing argument parsing, or adding interactive prompts. Invoke for parsing flags and…
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.