{"id":"87547a7e-5867-4a37-9ac3-0b842fe99aa8","shortId":"D6rWPz","kind":"skill","title":"cc-skill-coding-standards","tagline":"Universal coding standards, best practices, and patterns for TypeScript, JavaScript, React, and Node.js development.","description":"# Coding Standards & Best Practices\n\nUniversal coding standards applicable across all projects.\n\n## Code Quality Principles\n\n### 1. Readability First\n- Code is read more than written\n- Clear variable and function names\n- Self-documenting code preferred over comments\n- Consistent formatting\n\n### 2. KISS (Keep It Simple, Stupid)\n- Simplest solution that works\n- Avoid over-engineering\n- No premature optimization\n- Easy to understand > clever code\n\n### 3. DRY (Don't Repeat Yourself)\n- Extract common logic into functions\n- Create reusable components\n- Share utilities across modules\n- Avoid copy-paste programming\n\n### 4. YAGNI (You Aren't Gonna Need It)\n- Don't build features before they're needed\n- Avoid speculative generality\n- Add complexity only when required\n- Start simple, refactor when needed\n\n## TypeScript/JavaScript Standards\n\n### Variable Naming\n\n```typescript\n// ✅ GOOD: Descriptive names\nconst marketSearchQuery = 'election'\nconst isUserAuthenticated = true\nconst totalRevenue = 1000\n\n// ❌ BAD: Unclear names\nconst q = 'election'\nconst flag = true\nconst x = 1000\n```\n\n### Function Naming\n\n```typescript\n// ✅ GOOD: Verb-noun pattern\nasync function fetchMarketData(marketId: string) { }\nfunction calculateSimilarity(a: number[], b: number[]) { }\nfunction isValidEmail(email: string): boolean { }\n\n// ❌ BAD: Unclear or noun-only\nasync function market(id: string) { }\nfunction similarity(a, b) { }\nfunction email(e) { }\n```\n\n### Immutability Pattern (CRITICAL)\n\n```typescript\n// ✅ ALWAYS use spread operator\nconst updatedUser = {\n  ...user,\n  name: 'New Name'\n}\n\nconst updatedArray = [...items, newItem]\n\n// ❌ NEVER mutate directly\nuser.name = 'New Name'  // BAD\nitems.push(newItem)     // BAD\n```\n\n### Error Handling\n\n```typescript\n// ✅ GOOD: Comprehensive error handling\nasync function fetchData(url: string) {\n  try {\n    const response = await fetch(url)\n\n    if (!response.ok) {\n      throw new Error(`HTTP ${response.status}: ${response.statusText}`)\n    }\n\n    return await response.json()\n  } catch (error) {\n    console.error('Fetch failed:', error)\n    throw new Error('Failed to fetch data')\n  }\n}\n\n// ❌ BAD: No error handling\nasync function fetchData(url) {\n  const response = await fetch(url)\n  return response.json()\n}\n```\n\n### Async/Await Best Practices\n\n```typescript\n// ✅ GOOD: Parallel execution when possible\nconst [users, markets, stats] = await Promise.all([\n  fetchUsers(),\n  fetchMarkets(),\n  fetchStats()\n])\n\n// ❌ BAD: Sequential when unnecessary\nconst users = await fetchUsers()\nconst markets = await fetchMarkets()\nconst stats = await fetchStats()\n```\n\n### Type Safety\n\n```typescript\n// ✅ GOOD: Proper types\ninterface Market {\n  id: string\n  name: string\n  status: 'active' | 'resolved' | 'closed'\n  created_at: Date\n}\n\nfunction getMarket(id: string): Promise<Market> {\n  // Implementation\n}\n\n// ❌ BAD: Using 'any'\nfunction getMarket(id: any): Promise<any> {\n  // Implementation\n}\n```\n\n## React Best Practices\n\n### Component Structure\n\n```typescript\n// ✅ GOOD: Functional component with types\ninterface ButtonProps {\n  children: React.ReactNode\n  onClick: () => void\n  disabled?: boolean\n  variant?: 'primary' | 'secondary'\n}\n\nexport function Button({\n  children,\n  onClick,\n  disabled = false,\n  variant = 'primary'\n}: ButtonProps) {\n  return (\n    <button\n      onClick={onClick}\n      disabled={disabled}\n      className={`btn btn-${variant}`}\n    >\n      {children}\n    </button>\n  )\n}\n\n// ❌ BAD: No types, unclear structure\nexport function Button(props) {\n  return <button onClick={props.onClick}>{props.children}</button>\n}\n```\n\n### Custom Hooks\n\n```typescript\n// ✅ GOOD: Reusable custom hook\nexport function useDebounce<T>(value: T, delay: number): T {\n  const [debouncedValue, setDebouncedValue] = useState<T>(value)\n\n  useEffect(() => {\n    const handler = setTimeout(() => {\n      setDebouncedValue(value)\n    }, delay)\n\n    return () => clearTimeout(handler)\n  }, [value, delay])\n\n  return debouncedValue\n}\n\n// Usage\nconst debouncedQuery = useDebounce(searchQuery, 500)\n```\n\n### State Management\n\n```typescript\n// ✅ GOOD: Proper state updates\nconst [count, setCount] = useState(0)\n\n// Functional update for state based on previous state\nsetCount(prev => prev + 1)\n\n// ❌ BAD: Direct state reference\nsetCount(count + 1)  // Can be stale in async scenarios\n```\n\n### Conditional Rendering\n\n```typescript\n// ✅ GOOD: Clear conditional rendering\n{isLoading && <Spinner />}\n{error && <ErrorMessage error={error} />}\n{data && <DataDisplay data={data} />}\n\n// ❌ BAD: Ternary hell\n{isLoading ? <Spinner /> : error ? <ErrorMessage error={error} /> : data ? <DataDisplay data={data} /> : null}\n```\n\n## API Design Standards\n\n### REST API Conventions\n\n```\nGET    /api/markets              # List all markets\nGET    /api/markets/:id          # Get specific market\nPOST   /api/markets              # Create new market\nPUT    /api/markets/:id          # Update market (full)\nPATCH  /api/markets/:id          # Update market (partial)\nDELETE /api/markets/:id          # Delete market\n\n# Query parameters for filtering\nGET /api/markets?status=active&limit=10&offset=0\n```\n\n### Response Format\n\n```typescript\n// ✅ GOOD: Consistent response structure\ninterface ApiResponse<T> {\n  success: boolean\n  data?: T\n  error?: string\n  meta?: {\n    total: number\n    page: number\n    limit: number\n  }\n}\n\n// Success response\nreturn NextResponse.json({\n  success: true,\n  data: markets,\n  meta: { total: 100, page: 1, limit: 10 }\n})\n\n// Error response\nreturn NextResponse.json({\n  success: false,\n  error: 'Invalid request'\n}, { status: 400 })\n```\n\n### Input Validation\n\n```typescript\nimport { z } from 'zod'\n\n// ✅ GOOD: Schema validation\nconst CreateMarketSchema = z.object({\n  name: z.string().min(1).max(200),\n  description: z.string().min(1).max(2000),\n  endDate: z.string().datetime(),\n  categories: z.array(z.string()).min(1)\n})\n\nexport async function POST(request: Request) {\n  const body = await request.json()\n\n  try {\n    const validated = CreateMarketSchema.parse(body)\n    // Proceed with validated data\n  } catch (error) {\n    if (error instanceof z.ZodError) {\n      return NextResponse.json({\n        success: false,\n        error: 'Validation failed',\n        details: error.errors\n      }, { status: 400 })\n    }\n  }\n}\n```\n\n## File Organization\n\n### Project Structure\n\n```\nsrc/\n├── app/                    # Next.js App Router\n│   ├── api/               # API routes\n│   ├── markets/           # Market pages\n│   └── (auth)/           # Auth pages (route groups)\n├── components/            # React components\n│   ├── ui/               # Generic UI components\n│   ├── forms/            # Form components\n│   └── layouts/          # Layout components\n├── hooks/                # Custom React hooks\n├── lib/                  # Utilities and configs\n│   ├── api/             # API clients\n│   ├── utils/           # Helper functions\n│   └── constants/       # Constants\n├── types/                # TypeScript types\n└── styles/              # Global styles\n```\n\n### File Naming\n\n```\ncomponents/Button.tsx          # PascalCase for components\nhooks/useAuth.ts              # camelCase with 'use' prefix\nlib/formatDate.ts             # camelCase for utilities\ntypes/market.types.ts         # camelCase with .types suffix\n```\n\n## Comments & Documentation\n\n### When to Comment\n\n```typescript\n// ✅ GOOD: Explain WHY, not WHAT\n// Use exponential backoff to avoid overwhelming the API during outages\nconst delay = Math.min(1000 * Math.pow(2, retryCount), 30000)\n\n// Deliberately using mutation here for performance with large arrays\nitems.push(newItem)\n\n// ❌ BAD: Stating the obvious\n// Increment counter by 1\ncount++\n\n// Set name to user's name\nname = user.name\n```\n\n### JSDoc for Public APIs\n\n```typescript\n/**\n * Searches markets using semantic similarity.\n *\n * @param query - Natural language search query\n * @param limit - Maximum number of results (default: 10)\n * @returns Array of markets sorted by similarity score\n * @throws {Error} If OpenAI API fails or Redis unavailable\n *\n * @example\n * ```typescript\n * const results = await searchMarkets('election', 5)\n * console.log(results[0].name) // \"Trump vs Biden\"\n * ```\n */\nexport async function searchMarkets(\n  query: string,\n  limit: number = 10\n): Promise<Market[]> {\n  // Implementation\n}\n```\n\n## Performance Best Practices\n\n### Memoization\n\n```typescript\nimport { useMemo, useCallback } from 'react'\n\n// ✅ GOOD: Memoize expensive computations\nconst sortedMarkets = useMemo(() => {\n  return markets.sort((a, b) => b.volume - a.volume)\n}, [markets])\n\n// ✅ GOOD: Memoize callbacks\nconst handleSearch = useCallback((query: string) => {\n  setSearchQuery(query)\n}, [])\n```\n\n### Lazy Loading\n\n```typescript\nimport { lazy, Suspense } from 'react'\n\n// ✅ GOOD: Lazy load heavy components\nconst HeavyChart = lazy(() => import('./HeavyChart'))\n\nexport function Dashboard() {\n  return (\n    <Suspense fallback={<Spinner />}>\n      <HeavyChart />\n    </Suspense>\n  )\n}\n```\n\n### Database Queries\n\n```typescript\n// ✅ GOOD: Select only needed columns\nconst { data } = await supabase\n  .from('markets')\n  .select('id, name, status')\n  .limit(10)\n\n// ❌ BAD: Select everything\nconst { data } = await supabase\n  .from('markets')\n  .select('*')\n```\n\n## Testing Standards\n\n### Test Structure (AAA Pattern)\n\n```typescript\ntest('calculates similarity correctly', () => {\n  // Arrange\n  const vector1 = [1, 0, 0]\n  const vector2 = [0, 1, 0]\n\n  // Act\n  const similarity = calculateCosineSimilarity(vector1, vector2)\n\n  // Assert\n  expect(similarity).toBe(0)\n})\n```\n\n### Test Naming\n\n```typescript\n// ✅ GOOD: Descriptive test names\ntest('returns empty array when no markets match query', () => { })\ntest('throws error when OpenAI API key is missing', () => { })\ntest('falls back to substring search when Redis unavailable', () => { })\n\n// ❌ BAD: Vague test names\ntest('works', () => { })\ntest('test search', () => { })\n```\n\n## Code Smell Detection\n\nWatch for these anti-patterns:\n\n### 1. Long Functions\n```typescript\n// ❌ BAD: Function > 50 lines\nfunction processMarketData() {\n  // 100 lines of code\n}\n\n// ✅ GOOD: Split into smaller functions\nfunction processMarketData() {\n  const validated = validateData()\n  const transformed = transformData(validated)\n  return saveData(transformed)\n}\n```\n\n### 2. Deep Nesting\n```typescript\n// ❌ BAD: 5+ levels of nesting\nif (user) {\n  if (user.isAdmin) {\n    if (market) {\n      if (market.isActive) {\n        if (hasPermission) {\n          // Do something\n        }\n      }\n    }\n  }\n}\n\n// ✅ GOOD: Early returns\nif (!user) return\nif (!user.isAdmin) return\nif (!market) return\nif (!market.isActive) return\nif (!hasPermission) return\n\n// Do something\n```\n\n### 3. Magic Numbers\n```typescript\n// ❌ BAD: Unexplained numbers\nif (retryCount > 3) { }\nsetTimeout(callback, 500)\n\n// ✅ GOOD: Named constants\nconst MAX_RETRIES = 3\nconst DEBOUNCE_DELAY_MS = 500\n\nif (retryCount > MAX_RETRIES) { }\nsetTimeout(callback, DEBOUNCE_DELAY_MS)\n```\n\n**Remember**: Code quality is not negotiable. Clear, maintainable code enables rapid development and confident refactoring.\n\n## When to Use\nThis skill is applicable to execute the workflow or actions described in the overview.\n\n## Limitations\n- Use this skill only when the task clearly matches the scope described above.\n- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.\n- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.","tags":["skill","coding","standards","antigravity","awesome","skills","sickn33","agent-skills","agentic-skills","ai-agent-skills","ai-agents","ai-coding"],"capabilities":["skill","source-sickn33","skill-cc-skill-coding-standards","topic-agent-skills","topic-agentic-skills","topic-ai-agent-skills","topic-ai-agents","topic-ai-coding","topic-ai-workflows","topic-antigravity","topic-antigravity-skills","topic-claude-code","topic-claude-code-skills","topic-codex-cli","topic-codex-skills"],"categories":["antigravity-awesome-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/sickn33/antigravity-awesome-skills/cc-skill-coding-standards","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add sickn33/antigravity-awesome-skills","source_repo":"https://github.com/sickn33/antigravity-awesome-skills","install_from":"skills.sh"}},"qualityScore":"0.700","qualityRationale":"deterministic score 0.70 from registry signals: · indexed on github topic:agent-skills · 34882 github stars · SKILL.md body (11,477 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-04-24T12:50:43.979Z","embedding":null,"createdAt":"2026-04-18T21:34:04.108Z","updatedAt":"2026-04-24T12:50:43.979Z","lastSeenAt":"2026-04-24T12:50:43.979Z","tsv":"'/api/markets':525,530,536,541,547,553,562 '/heavychart':937 '0':463,568,869,989,990,993,995,1006 '1':34,475,482,603,633,639,649,808,988,994,1059 '10':566,605,841,882,963 '100':601,1069 '1000':147,159,785 '2':57,787,1090 '200':635 '2000':641 '3':79,1131,1140,1150 '30000':789 '4':102 '400':616,685 '5':866,1095 '50':1065 '500':451,1143,1155 'a.volume':908 'aaa':978 'across':28,95 'act':996 'action':1192 'activ':334,564 'add':121 'alway':206 'anti':1057 'anti-pattern':1056 'api':518,522,695,696,727,728,779,821,854,1028 'apirespons':577 'app':691,693 'applic':27,1186 'aren':105 'arrang':985 'array':798,843,1017 'ask':1230 'assert':1002 'async':168,190,237,276,487,651,875 'async/await':287 'auth':701,702 'avoid':67,97,118,776 'await':245,257,282,300,311,315,319,658,863,954,969 'b':177,198,906 'b.volume':907 'back':1034 'backoff':774 'bad':148,184,226,229,272,305,346,398,476,505,801,964,1041,1063,1094,1135 'base':468 'best':9,22,288,356,887 'biden':873 'bodi':657,664 'boolean':183,373,579 'boundari':1238 'btn':394,395 'build':112 'button':379,388,405,408 'buttonprop':367,386 'calcul':982 'calculatecosinesimilar':999 'calculatesimilar':174 'callback':912,1142,1161 'camelcas':748,753,757 'catch':259,669 'categori':645 'cc':2 'cc-skill-coding-standard':1 'children':368,380,397 'clarif':1232 'classnam':393 'clear':43,493,1171,1205 'cleartimeout':440 'clever':77 'client':729 'close':336 'code':4,7,20,25,31,37,51,78,1050,1072,1166,1173 'column':951 'comment':54,761,765 'common':86 'complex':122 'compon':92,358,363,706,708,712,715,718,746,932 'components/button.tsx':743 'comprehens':234 'comput':899 'condit':489,494 'confid':1178 'config':726 'consist':55,573 'console.error':261 'console.log':867 'const':139,142,145,151,154,157,210,216,243,280,296,309,313,317,427,433,447,459,627,656,661,782,861,900,913,933,952,967,986,991,997,1080,1083,1147,1151 'constant':733,734,1146 'convent':523 'copi':99 'copy-past':98 'correct':984 'count':460,481,809 'counter':806 'creat':90,337,537 'createmarketschema':628 'createmarketschema.parse':663 'criteria':1241 'critic':204 'custom':412,417,720 'dashboard':940 'data':271,501,503,504,513,515,516,580,597,668,953,968 'databas':944 'datadisplay':502,514 'date':339 'datetim':644 'debounc':1152,1162 'debouncedqueri':448 'debouncedvalu':428,445 'deep':1091 'default':840 'delay':424,438,443,783,1153,1163 'delet':552,555 'deliber':790 'describ':1193,1209 'descript':137,636,1011 'design':519 'detail':682 'detect':1052 'develop':19,1176 'direct':222,477 'disabl':372,382,391,392 'document':50,762 'dri':80 'e':201 'earli':1112 'easi':74 'elect':141,153,865 'email':181,200 'empti':1016 'enabl':1174 'enddat':642 'engin':70 'environ':1221 'environment-specif':1220 'error':230,235,252,260,264,267,274,497,499,500,509,511,512,582,606,612,670,672,679,851,1025 'error.errors':683 'errormessag':498,510 'everyth':966 'exampl':859 'execut':293,1188 'expect':1003 'expens':898 'expert':1226 'explain':768 'exponenti':773 'export':377,403,419,650,874,938 'extract':85 'fail':263,268,681,855 'fall':1033 'fallback':943 'fals':383,611,678 'featur':113 'fetch':246,262,270,283 'fetchdata':239,278 'fetchmarket':303,316 'fetchmarketdata':170 'fetchstat':304,320 'fetchus':302,312 'file':686,741 'filter':560 'first':36 'flag':155 'form':713,714 'format':56,570 'full':545 'function':46,89,160,169,173,179,191,195,199,238,277,340,349,362,378,404,420,464,652,732,876,939,1061,1064,1067,1077,1078 'general':120 'generic':710 'get':524,529,532,561 'getmarket':341,350 'global':739 'gonna':107 'good':136,163,233,291,324,361,415,455,492,572,624,767,896,910,928,947,1010,1073,1111,1144 'group':705 'handl':231,236,275 'handler':434,441 'handlesearch':914 'haspermiss':1108,1127 'heavi':931 'heavychart':934 'hell':507 'helper':731 'hook':413,418,719,722 'hooks/useauth.ts':747 'http':253 'id':193,329,342,351,531,542,548,554,959 'immut':202 'implement':345,354,885 'import':620,891,923,936 'increment':805 'input':617,1235 'instanceof':673 'interfac':327,366,576 'invalid':613 'isload':496,508 'isuserauthent':143 'isvalidemail':180 'item':218 'items.push':227,799 'javascript':15 'jsdoc':818 'keep':59 'key':1029 'kiss':58 'languag':831 'larg':797 'layout':716,717 'lazi':920,924,929,935 'level':1096 'lib':723 'lib/formatdate.ts':752 'limit':565,589,604,835,880,962,1197 'line':1066,1070 'list':526 'load':921,930 'logic':87 'long':1060 'magic':1132 'maintain':1172 'manag':453 'market':192,298,314,328,528,534,539,544,550,556,598,698,699,824,845,884,909,957,972,1020,1104,1121 'market.isactive':1106,1124 'marketid':171 'markets.sort':904 'marketsearchqueri':140 'match':1021,1206 'math.min':784 'math.pow':786 'max':634,640,1148,1158 'maximum':836 'memoiz':889,897,911 'meta':584,599 'min':632,638,648 'miss':1031,1243 'modul':96 'ms':1154,1164 'mutat':221,792 'name':47,134,138,150,161,213,215,225,331,630,742,811,815,816,870,960,1008,1013,1044,1145 'natur':830 'need':108,117,130,950 'negoti':1170 'nest':1092,1098 'never':220 'new':214,224,251,266,538 'newitem':219,228,800 'next.js':692 'nextresponse.json':594,609,676 'node.js':18 'noun':166,188 'noun-on':187 'null':517 'number':176,178,425,586,588,590,837,881,1133,1137 'obvious':804 'offset':567 'onclick':370,381,389,390,409 'openai':853,1027 'oper':209 'optim':73 'organ':687 'outag':781 'output':1215 'over-engin':68 'overview':1196 'overwhelm':777 'page':587,602,700,703 'parallel':292 'param':828,834 'paramet':558 'partial':551 'pascalcas':744 'past':100 'patch':546 'pattern':12,167,203,979,1058 'perform':795,886 'permiss':1236 'possibl':295 'post':535,653 'practic':10,23,289,357,888 'prefer':52 'prefix':751 'prematur':72 'prev':473,474 'previous':470 'primari':375,385 'principl':33 'proceed':665 'processmarketdata':1068,1079 'program':101 'project':30,688 'promis':344,353,883 'promise.all':301 'prop':406 'proper':325,456 'props.children':411 'props.onclick':410 'public':820 'put':540 'q':152 'qualiti':32,1167 'queri':557,829,833,878,916,919,945,1022 'rapid':1175 're':116 'react':16,355,707,721,895,927 'react.reactnode':369 'read':39 'readabl':35 'redi':857,1039 'refactor':128,1179 'refer':479 'rememb':1165 'render':490,495 'repeat':83 'request':614,654,655 'request.json':659 'requir':125,1234 'resolv':335 'respons':244,281,569,574,592,607 'response.json':258,286 'response.ok':249 'response.status':254 'response.statustext':255 'rest':521 'result':839,862,868 'retri':1149,1159 'retrycount':788,1139,1157 'return':256,285,387,407,439,444,593,608,675,842,903,941,1015,1087,1113,1116,1119,1122,1125,1128 'reusabl':91,416 'review':1227 'rout':697,704 'router':694 'safeti':322,1237 'savedata':1088 'scenario':488 'schema':625 'scope':1208 'score':849 'search':823,832,1037,1049 'searchmarket':864,877 'searchqueri':450 'secondari':376 'select':948,958,965,973 'self':49 'self-docu':48 'semant':826 'sequenti':306 'set':810 'setcount':461,472,480 'setdebouncedvalu':429,436 'setsearchqueri':918 'settimeout':435,1141,1160 'share':93 'similar':196,827,848,983,998,1004 'simpl':61,127 'simplest':63 'skill':3,1184,1200 'skill-cc-skill-coding-standards' 'smaller':1076 'smell':1051 'solut':64 'someth':1110,1130 'sort':846 'sortedmarket':901 'source-sickn33' 'specif':533,1222 'specul':119 'split':1074 'spread':208 'src':690 'stale':485 'standard':5,8,21,26,132,520,975 'start':126 'stat':299,318 'state':452,457,467,471,478,802 'status':333,563,615,684,961 'stop':1228 'string':172,182,194,241,330,332,343,583,879,917 'structur':359,402,575,689,977 'stupid':62 'style':738,740 'substitut':1218 'substr':1036 'success':578,591,595,610,677,1240 'suffix':760 'supabas':955,970 'suspens':925,942 'task':1204 'ternari':506 'test':974,976,981,1007,1012,1014,1023,1032,1043,1045,1047,1048,1224 'throw':250,265,850,1024 'tobe':1005 'topic-agent-skills' 'topic-agentic-skills' 'topic-ai-agent-skills' 'topic-ai-agents' 'topic-ai-coding' 'topic-ai-workflows' 'topic-antigravity' 'topic-antigravity-skills' 'topic-claude-code' 'topic-claude-code-skills' 'topic-codex-cli' 'topic-codex-skills' 'total':585,600 'totalrevenu':146 'transform':1084,1089 'transformdata':1085 'treat':1213 'tri':242,660 'true':144,156,596 'trump':871 'type':321,326,365,400,735,737,759 'types/market.types.ts':756 'typescript':14,135,162,205,232,290,323,360,414,454,491,571,619,736,766,822,860,890,922,946,980,1009,1062,1093,1134 'typescript/javascript':131 'ui':709,711 'unavail':858,1040 'unclear':149,185,401 'understand':76 'unexplain':1136 'univers':6,24 'unnecessari':308 'updat':458,465,543,549 'updatedarray':217 'updatedus':211 'url':240,247,279,284 'usag':446 'use':207,347,750,772,791,825,1182,1198 'usecallback':893,915 'usedebounc':421,449 'useeffect':432 'usememo':892,902 'user':212,297,310,813,1100,1115 'user.isadmin':1102,1118 'user.name':223,817 'usest':430,462 'util':94,724,730,755 'vagu':1042 'valid':618,626,662,667,680,1081,1086,1223 'validatedata':1082 'valu':422,431,437,442 'variabl':44,133 'variant':374,384,396 'vector1':987,1000 'vector2':992,1001 'verb':165 'verb-noun':164 'void':371 'vs':872 'watch':1053 'work':66,1046 'workflow':1190 'written':42 'x':158 'yagni':103 'z':621 'z.array':646 'z.object':629 'z.string':631,637,643,647 'z.zoderror':674 'zod':623","prices":[{"id":"b726560f-a48a-4578-9fcc-bae415c1930c","listingId":"87547a7e-5867-4a37-9ac3-0b842fe99aa8","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"sickn33","category":"antigravity-awesome-skills","install_from":"skills.sh"},"createdAt":"2026-04-18T21:34:04.108Z"}],"sources":[{"listingId":"87547a7e-5867-4a37-9ac3-0b842fe99aa8","source":"github","sourceId":"sickn33/antigravity-awesome-skills/cc-skill-coding-standards","sourceUrl":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/cc-skill-coding-standards","isPrimary":false,"firstSeenAt":"2026-04-18T21:34:04.108Z","lastSeenAt":"2026-04-24T12:50:43.979Z"}],"details":{"listingId":"87547a7e-5867-4a37-9ac3-0b842fe99aa8","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"sickn33","slug":"cc-skill-coding-standards","github":{"repo":"sickn33/antigravity-awesome-skills","stars":34882,"topics":["agent-skills","agentic-skills","ai-agent-skills","ai-agents","ai-coding","ai-workflows","antigravity","antigravity-skills","claude-code","claude-code-skills","codex-cli","codex-skills","cursor","cursor-skills","developer-tools","gemini-cli","gemini-skills","kiro","mcp","skill-library"],"license":"mit","html_url":"https://github.com/sickn33/antigravity-awesome-skills","pushed_at":"2026-04-24T06:41:17Z","description":"Installable GitHub library of 1,400+ agentic skills for Claude Code, Cursor, Codex CLI, Gemini CLI, Antigravity, and more. Includes installer CLI, bundles, workflows, and official/community skill collections.","skill_md_sha":"898eca3dce27fc1d27b242c9fa4b47cf098b2114","skill_md_path":"skills/cc-skill-coding-standards/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/cc-skill-coding-standards"},"layout":"multi","source":"github","category":"antigravity-awesome-skills","frontmatter":{"name":"cc-skill-coding-standards","description":"Universal coding standards, best practices, and patterns for TypeScript, JavaScript, React, and Node.js development."},"skills_sh_url":"https://skills.sh/sickn33/antigravity-awesome-skills/cc-skill-coding-standards"},"updatedAt":"2026-04-24T12:50:43.979Z"}}