skills / skillcreatorai / ai-agent-skills / javascript-typescript 
javascript-typescript 
$ npx skills add https://github.com/skillcreatorai/ai-agent-skills --skill javascript-typescript SKILL.md 
JavaScript/TypeScript Development 
TypeScript Configuration 

{ "compilerOptions" : { "target" : "ES2022" , "module" : "ESNext" , "moduleResolution" : "bundler" , "strict" : true , "noUncheckedIndexedAccess" : true , "noImplicitOverride" : true , "skipLibCheck" : true , "declaration" : true , "outDir" : "./dist" } , "include" : [ "src/**/*" ] , "exclude" : [ "node_modules" , "dist" ] } 
Type Patterns 
Utility Types 

// Pick specific properties type UserPreview = Pick < User , 'id' | 'name' > ; // Omit properties type CreateUser = Omit < User , 'id' | 'createdAt' > ; // Make all properties optional type PartialUser = Partial < User > ; // Make all properties required type RequiredUser = Required < User > ; // Extract union types type Status = 'pending' | 'active' | 'inactive' ; type ActiveStatus = Extract < Status , 'active' | 'pending' > ; 
Discriminated Unions 

type Result < T > = | { success : true ; data : T } | { success : false ; error : Error } ; function handleResult < T > ( result : Result < T > ) { if ( result . success ) { console . log ( result . data ) ; // T } else { console . error ( result . error ) ; // Error } } 
Generic Constraints 

interface HasId { id : string | number ; } function findById < T extends HasId > ( items : T [ ] , id : T [ 'id' ] ) : T | undefined { return items . find ( item => item . id === id ) ; } 
Modern JavaScript 
Destructuring & Spread 

const { name , ... rest } = user ; const merged = { ... defaults , ... options } ; const [ first , ... others ] = items ; 
Optional Chaining & Nullish Coalescing 

const city = user ?. address ?. city ?? 'Unknown' ; const count = data ?. items ?. length ?? 0 ; 
Array Methods 

const adults = users . filter ( u => u . age >= 18 ) ; const names = users . map ( u => u . name ) ; const total = items . reduce ( ( sum , item ) => sum + item . price , 0 ) ; const hasAdmin = users . some ( u => u . role === 'admin' ) ; const allActive = users . every ( u => u . active ) ; 
React Patterns 

// Props with children interface CardProps { title : string ; children : React . ReactNode ; } // Event handlers interface ButtonProps { onClick : ( event : React . MouseEvent < HTMLButtonElement > ) => void ; } // Custom hooks function useLocalStorage < T > ( key : string , initial : T ) { const [ value , setValue ] = useState < T > ( ( ) => { const stored = localStorage . getItem ( key ) ; return stored ? JSON . parse ( stored ) : initial ; } ) ; useEffect ( ( ) => { localStorage . setItem ( key , JSON . stringify ( value ) ) ; } , [ key , value ] ) ; return [ value , setValue ] as const ; } 
Node.js Patterns 

// ES Modules import { readFile } from 'node:fs/promises' ; import { join } from 'node:path' ; // Error handling process . on ( 'unhandledRejection' , ( reason ) => { console . error ( 'Unhandled Rejection:' , reason ) ; process . exit ( 1 ) ; } ) ; Weekly Installs 106 Repository skillcreatorai/ai-agent-skills First Seen Jan 18, 2026 Security Audits Gen Agent Trust Hub Pass Socket Pass Snyk Pass Installed on opencode 78 claude-code 75 gemini-cli 72 codex 69 github-copilot 59 antigravity 58