[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"doc-gemini-cli-skills-en":3,"doc-all-en":1147},{"id":4,"title":5,"author":6,"body":7,"category":1132,"description":1133,"descriptionZh":1134,"extension":1135,"image":1136,"meta":1137,"navigation":283,"path":1138,"publishedAt":1139,"readTime":316,"seo":1140,"stem":1141,"tags":1142,"titleZh":1145,"updatedAt":1139,"__hash__":1146},"docs_en\u002Fen\u002Fguide\u002Fgemini-cli-skills.md","Gemini CLI Agent Skills — How to Install and Use AI Skills with Google's CLI","William Wang",{"type":8,"value":9,"toc":1106},"minimark",[10,14,19,39,58,61,99,103,106,135,138,151,154,170,173,194,197,209,215,219,229,260,266,366,373,465,472,476,484,489,492,533,547,551,576,583,587,590,594,600,606,611,629,636,639,643,648,653,657,675,681,683,687,692,697,701,719,725,727,731,740,745,749,767,773,779,781,785,790,795,799,817,823,825,829,834,839,843,861,867,869,873,878,883,887,905,911,913,917,922,927,931,949,955,957,961,964,969,974,1006,1009,1013,1017,1037,1041,1050,1054,1073,1077,1102],[11,12,13],"p",{},"Learn how to extend Google's Gemini CLI with agent skills that automate coding workflows, debugging, project management, and SEO — all from your terminal.",[15,16,18],"h2",{"id":17},"what-is-gemini-cli","What Is Gemini CLI?",[11,20,21,28,29,33,34,38],{},[22,23,27],"a",{"href":24,"rel":25},"https:\u002F\u002Fgithub.com\u002Fgoogle-gemini\u002Fgemini-cli",[26],"nofollow","Gemini CLI"," is Google's open-source command-line tool for interacting with Gemini models directly in the terminal. It follows the same paradigm as ",[22,30,32],{"href":31},"\u002Fguide\u002Fbest-claude-code-skills","Claude Code"," and ",[22,35,37],{"href":36},"\u002Fguide\u002Fcodex-cli-skills","OpenAI Codex CLI"," — an agentic coding assistant that reads your project, edits files, runs commands, and follows instructions written in Markdown.",[11,40,41,42,46,47,49,50,53,54,57],{},"Gemini CLI uses a file called ",[43,44,45],"code",{},"GEMINI.md"," as its instruction format. Place a ",[43,48,45],{}," file in your project root or home directory, and Gemini CLI loads those instructions automatically at startup. This is the equivalent of ",[43,51,52],{},".claude\u002Fcommands\u002F"," for Claude Code or ",[43,55,56],{},"AGENTS.md"," for Codex CLI.",[11,59,60],{},"Key features of Gemini CLI:",[62,63,64,72,78,84,90],"ul",{},[65,66,67,71],"li",{},[68,69,70],"strong",{},"Free tier:"," 60 requests per minute with a Google account, no API key required for basic use",[65,73,74,77],{},[68,75,76],{},"Open source:"," Apache 2.0 license, fully extensible",[65,79,80,83],{},[68,81,82],{},"Gemini 2.5 Pro:"," Access to Google's most capable coding model",[65,85,86,89],{},[68,87,88],{},"Multi-modal:"," Supports text, images, and file attachments",[65,91,92,95,96,98],{},[68,93,94],{},"Extensions system:"," Load skills and tools through ",[43,97,45],{}," and the extensions API",[15,100,102],{"id":101},"install-gemini-cli","Install Gemini CLI",[11,104,105],{},"Gemini CLI requires Node.js 18 or later. Install it globally via npm:",[107,108,113],"pre",{"className":109,"code":110,"language":111,"meta":112,"style":112},"language-bash shiki shiki-themes github-light github-dark","npm install -g @anthropic-ai\u002Fgemini-cli\n","bash","",[43,114,115],{"__ignoreMap":112},[116,117,120,124,128,132],"span",{"class":118,"line":119},"line",1,[116,121,123],{"class":122},"sScJk","npm",[116,125,127],{"class":126},"sZZnC"," install",[116,129,131],{"class":130},"sj4cs"," -g",[116,133,134],{"class":126}," @anthropic-ai\u002Fgemini-cli\n",[11,136,137],{},"Or use npx to run without installing:",[107,139,141],{"className":109,"code":140,"language":111,"meta":112,"style":112},"npx @google\u002Fgemini-cli\n",[43,142,143],{"__ignoreMap":112},[116,144,145,148],{"class":118,"line":119},[116,146,147],{"class":122},"npx",[116,149,150],{"class":126}," @google\u002Fgemini-cli\n",[11,152,153],{},"After installation, authenticate with your Google account:",[107,155,157],{"className":109,"code":156,"language":111,"meta":112,"style":112},"gemini auth login\n",[43,158,159],{"__ignoreMap":112},[116,160,161,164,167],{"class":118,"line":119},[116,162,163],{"class":122},"gemini",[116,165,166],{"class":126}," auth",[116,168,169],{"class":126}," login\n",[11,171,172],{},"For API key authentication (required for higher rate limits), set the environment variable:",[107,174,176],{"className":109,"code":175,"language":111,"meta":112,"style":112},"export GEMINI_API_KEY=\"your-api-key-here\"\n",[43,177,178],{"__ignoreMap":112},[116,179,180,184,188,191],{"class":118,"line":119},[116,181,183],{"class":182},"szBVR","export",[116,185,187],{"class":186},"sVt8B"," GEMINI_API_KEY",[116,189,190],{"class":182},"=",[116,192,193],{"class":126},"\"your-api-key-here\"\n",[11,195,196],{},"Verify the installation:",[107,198,200],{"className":109,"code":199,"language":111,"meta":112,"style":112},"gemini --version\n",[43,201,202],{"__ignoreMap":112},[116,203,204,206],{"class":118,"line":119},[116,205,163],{"class":122},[116,207,208],{"class":130}," --version\n",[11,210,211,212,214],{},"You should see the version number and be ready to start a session with ",[43,213,163],{}," in any project directory.",[15,216,218],{"id":217},"how-gemini-cli-reads-skills","How Gemini CLI Reads Skills",[11,220,221,222,224,225,228],{},"Gemini CLI loads instructions from ",[43,223,45],{}," files in a cascading hierarchy, similar to how ",[43,226,227],{},".gitignore"," works:",[230,231,232,242,251],"ol",{},[65,233,234,237,238,241],{},[68,235,236],{},"Global:"," ",[43,239,240],{},"~\u002F.gemini\u002FGEMINI.md"," — applies to all projects",[65,243,244,237,247,250],{},[68,245,246],{},"Project root:",[43,248,249],{},".\u002FGEMINI.md"," — applies to the current project",[65,252,253,237,256,259],{},[68,254,255],{},"Subdirectory:",[43,257,258],{},".\u002Fsrc\u002FGEMINI.md"," — applies when working in that directory",[11,261,262,263,265],{},"Here is a basic ",[43,264,45],{}," structure:",[107,267,271],{"className":268,"code":269,"language":270,"meta":112,"style":112},"language-markdown shiki shiki-themes github-light github-dark","# Project Instructions\n\nYou are working on a Nuxt 3 application with TypeScript.\n\n## Code Style\n- Use Composition API with `\u003Cscript setup>`\n- Prefer `const` over `let`\n- All components go in `components\u002F`\n\n## Testing\n- Run `npm test` before committing\n- Write unit tests for all utility functions\n\n## Deployment\n- Build with `npm run build`\n- Deploy to Vercel with `vercel --prod`\n","markdown",[43,272,273,278,285,291,296,302,308,314,320,325,331,337,343,348,354,360],{"__ignoreMap":112},[116,274,275],{"class":118,"line":119},[116,276,277],{},"# Project Instructions\n",[116,279,281],{"class":118,"line":280},2,[116,282,284],{"emptyLinePlaceholder":283},true,"\n",[116,286,288],{"class":118,"line":287},3,[116,289,290],{},"You are working on a Nuxt 3 application with TypeScript.\n",[116,292,294],{"class":118,"line":293},4,[116,295,284],{"emptyLinePlaceholder":283},[116,297,299],{"class":118,"line":298},5,[116,300,301],{},"## Code Style\n",[116,303,305],{"class":118,"line":304},6,[116,306,307],{},"- Use Composition API with `\u003Cscript setup>`\n",[116,309,311],{"class":118,"line":310},7,[116,312,313],{},"- Prefer `const` over `let`\n",[116,315,317],{"class":118,"line":316},8,[116,318,319],{},"- All components go in `components\u002F`\n",[116,321,323],{"class":118,"line":322},9,[116,324,284],{"emptyLinePlaceholder":283},[116,326,328],{"class":118,"line":327},10,[116,329,330],{},"## Testing\n",[116,332,334],{"class":118,"line":333},11,[116,335,336],{},"- Run `npm test` before committing\n",[116,338,340],{"class":118,"line":339},12,[116,341,342],{},"- Write unit tests for all utility functions\n",[116,344,346],{"class":118,"line":345},13,[116,347,284],{"emptyLinePlaceholder":283},[116,349,351],{"class":118,"line":350},14,[116,352,353],{},"## Deployment\n",[116,355,357],{"class":118,"line":356},15,[116,358,359],{},"- Build with `npm run build`\n",[116,361,363],{"class":118,"line":362},16,[116,364,365],{},"- Deploy to Vercel with `vercel --prod`\n",[11,367,368,369,372],{},"The extensions system allows loading additional tools and capabilities beyond what Markdown instructions alone provide. Extensions are declared in ",[43,370,371],{},"~\u002F.gemini\u002Fsettings.json",":",[107,374,378],{"className":375,"code":376,"language":377,"meta":112,"style":112},"language-json shiki shiki-themes github-light github-dark","{\n  \"extensions\": [\n    {\n      \"name\": \"web-search\",\n      \"enabled\": true\n    },\n    {\n      \"name\": \"code-execution\",\n      \"enabled\": true\n    }\n  ]\n}\n","json",[43,379,380,385,393,398,412,422,427,431,442,450,455,460],{"__ignoreMap":112},[116,381,382],{"class":118,"line":119},[116,383,384],{"class":186},"{\n",[116,386,387,390],{"class":118,"line":280},[116,388,389],{"class":130},"  \"extensions\"",[116,391,392],{"class":186},": [\n",[116,394,395],{"class":118,"line":287},[116,396,397],{"class":186},"    {\n",[116,399,400,403,406,409],{"class":118,"line":293},[116,401,402],{"class":130},"      \"name\"",[116,404,405],{"class":186},": ",[116,407,408],{"class":126},"\"web-search\"",[116,410,411],{"class":186},",\n",[116,413,414,417,419],{"class":118,"line":298},[116,415,416],{"class":130},"      \"enabled\"",[116,418,405],{"class":186},[116,420,421],{"class":130},"true\n",[116,423,424],{"class":118,"line":304},[116,425,426],{"class":186},"    },\n",[116,428,429],{"class":118,"line":310},[116,430,397],{"class":186},[116,432,433,435,437,440],{"class":118,"line":316},[116,434,402],{"class":130},[116,436,405],{"class":186},[116,438,439],{"class":126},"\"code-execution\"",[116,441,411],{"class":186},[116,443,444,446,448],{"class":118,"line":322},[116,445,416],{"class":130},[116,447,405],{"class":186},[116,449,421],{"class":130},[116,451,452],{"class":118,"line":327},[116,453,454],{"class":186},"    }\n",[116,456,457],{"class":118,"line":333},[116,458,459],{"class":186},"  ]\n",[116,461,462],{"class":118,"line":339},[116,463,464],{"class":186},"}\n",[11,466,467,468,471],{},"Agent skills — Markdown files that teach the CLI how to perform specific tasks — fit naturally into this system. You write a skill as a ",[43,469,470],{},".md"," file with structured instructions, place it where Gemini CLI can find it, and the model follows those instructions during your session.",[15,473,475],{"id":474},"install-skills-from-tokrepo","Install Skills from TokRepo",[11,477,478,483],{},[22,479,482],{"href":480,"rel":481},"https:\u002F\u002Ftokrepo.com\u002Fen\u002Fcollections\u002Fskills",[26],"TokRepo"," is the largest registry of agent skills for AI coding assistants. Most skills are written in a universal Markdown format that works across Claude Code, Codex CLI, and Gemini CLI with minimal adaptation.",[485,486,488],"h3",{"id":487},"method-1-tokrepo-cli-recommended","Method 1: TokRepo CLI (Recommended)",[11,490,491],{},"Install the TokRepo CLI and pull skills directly:",[107,493,495],{"className":109,"code":494,"language":111,"meta":112,"style":112},"npm install -g tokrepo\ntokrepo install \u003Cskill-uuid> --target gemini\n",[43,496,497,508],{"__ignoreMap":112},[116,498,499,501,503,505],{"class":118,"line":119},[116,500,123],{"class":122},[116,502,127],{"class":126},[116,504,131],{"class":130},[116,506,507],{"class":126}," tokrepo\n",[116,509,510,513,515,518,521,524,527,530],{"class":118,"line":280},[116,511,512],{"class":122},"tokrepo",[116,514,127],{"class":126},[116,516,517],{"class":182}," \u003C",[116,519,520],{"class":126},"skill-uui",[116,522,523],{"class":186},"d",[116,525,526],{"class":182},">",[116,528,529],{"class":130}," --target",[116,531,532],{"class":126}," gemini\n",[11,534,535,536,539,540,542,543,546],{},"The ",[43,537,538],{},"--target gemini"," flag converts the skill to ",[43,541,45],{}," format and places it in your project's ",[43,544,545],{},".gemini\u002F"," directory.",[485,548,550],{"id":549},"method-2-manual-installation","Method 2: Manual Installation",[230,552,553,560,563,573],{},[65,554,555,556],{},"Browse ",[22,557,559],{"href":480,"rel":558},[26],"TokRepo Skills Collection",[65,561,562],{},"Copy the skill's Markdown content",[65,564,565,566,568,569,572],{},"Create a file in your project (e.g., ",[43,567,45],{}," or ",[43,570,571],{},".gemini\u002Fskills\u002Fskill-name.md",")",[65,574,575],{},"Paste the content and adjust any Claude Code-specific references to Gemini CLI equivalents",[11,577,578,579,582],{},"For example, change trigger patterns from ",[43,580,581],{},"\u002Fskill-name"," to Gemini's natural-language invocation style. Most skill instructions (code patterns, testing rules, deployment steps) work without modification.",[15,584,586],{"id":585},"_8-best-skills-for-gemini-cli","8 Best Skills for Gemini CLI",[11,588,589],{},"These skills were tested with Gemini CLI and ranked by usefulness, compatibility, and community adoption. Each one ships as a Markdown file you can install in under 30 seconds.",[485,591,593],{"id":592},"_1-gemini-cli-extension-stitch","1. Gemini CLI Extension Stitch",[11,595,596,599],{},[68,597,598],{},"What it does:"," Integrates the Stitch design system with Gemini CLI, enabling you to generate UI components, apply design tokens, and maintain visual consistency across your project directly from the terminal.",[11,601,602,605],{},[68,603,604],{},"Best for:"," Frontend developers who want AI-assisted design-to-code workflows inside Gemini CLI.",[11,607,608],{},[68,609,610],{},"Install:",[107,612,614],{"className":109,"code":613,"language":111,"meta":112,"style":112},"tokrepo install c4b18aeb --target gemini\n",[43,615,616],{"__ignoreMap":112},[116,617,618,620,622,625,627],{"class":118,"line":119},[116,619,512],{"class":122},[116,621,127],{"class":126},[116,623,624],{"class":126}," c4b18aeb",[116,626,529],{"class":130},[116,628,532],{"class":126},[11,630,631],{},[22,632,635],{"href":633,"rel":634},"https:\u002F\u002Ftokrepo.com\u002Fen\u002Fworkflows\u002Fc4b18aeb",[26],"View on TokRepo →",[637,638],"hr",{},[485,640,642],{"id":641},"_2-google-gemini-cli-extensions","2. Google Gemini CLI Extensions",[11,644,645,647],{},[68,646,598],{}," A curated collection of official and community extensions for Gemini CLI — adds capabilities like file search, web browsing, code execution sandboxing, and multi-repo context loading.",[11,649,650,652],{},[68,651,604],{}," Power users who want to unlock the full extension ecosystem for Gemini CLI.",[11,654,655],{},[68,656,610],{},[107,658,660],{"className":109,"code":659,"language":111,"meta":112,"style":112},"tokrepo install b9520bd2 --target gemini\n",[43,661,662],{"__ignoreMap":112},[116,663,664,666,668,671,673],{"class":118,"line":119},[116,665,512],{"class":122},[116,667,127],{"class":126},[116,669,670],{"class":126}," b9520bd2",[116,672,529],{"class":130},[116,674,532],{"class":126},[11,676,677],{},[22,678,635],{"href":679,"rel":680},"https:\u002F\u002Ftokrepo.com\u002Fen\u002Fworkflows\u002Fb9520bd2",[26],[637,682],{},[485,684,686],{"id":685},"_3-gemini-cli-extension-workspace","3. Gemini CLI Extension Workspace",[11,688,689,691],{},[68,690,598],{}," Manages multi-project workspaces within Gemini CLI. Switch between repos, maintain separate contexts, and run cross-project tasks without leaving your session.",[11,693,694,696],{},[68,695,604],{}," Developers juggling multiple repositories or monorepo sub-packages.",[11,698,699],{},[68,700,610],{},[107,702,704],{"className":109,"code":703,"language":111,"meta":112,"style":112},"tokrepo install f0db235b --target gemini\n",[43,705,706],{"__ignoreMap":112},[116,707,708,710,712,715,717],{"class":118,"line":119},[116,709,512],{"class":122},[116,711,127],{"class":126},[116,713,714],{"class":126}," f0db235b",[116,716,529],{"class":130},[116,718,532],{"class":126},[11,720,721],{},[22,722,635],{"href":723,"rel":724},"https:\u002F\u002Ftokrepo.com\u002Fen\u002Fworkflows\u002Ff0db235b",[26],[637,726],{},[485,728,730],{"id":729},"_4-get-shit-done-gsd","4. Get Shit Done (GSD)",[11,732,733,735,736,739],{},[68,734,598],{}," A complete project management framework. Breaks large projects into milestones, phases, and tasks — then executes them with atomic commits and verification at each step. Creates persistent ",[43,737,738],{},".planning\u002F"," directories that survive across sessions.",[11,741,742,744],{},[68,743,604],{}," Solo developers managing complex multi-day projects without losing context.",[11,746,747],{},[68,748,610],{},[107,750,752],{"className":109,"code":751,"language":111,"meta":112,"style":112},"tokrepo install e108cf5c --target gemini\n",[43,753,754],{"__ignoreMap":112},[116,755,756,758,760,763,765],{"class":118,"line":119},[116,757,512],{"class":122},[116,759,127],{"class":126},[116,761,762],{"class":126}," e108cf5c",[116,764,529],{"class":130},[116,766,532],{"class":126},[11,768,769,772],{},[68,770,771],{},"Why it's essential:"," GSD solves the biggest pain point in agentic coding — losing context on large projects. It has 48,600+ GitHub stars and works across all three major CLI tools.",[11,774,775],{},[22,776,635],{"href":777,"rel":778},"https:\u002F\u002Ftokrepo.com\u002Fen\u002Fworkflows\u002Fe108cf5c-c34e-4d27-a694-66a693301e87",[26],[637,780],{},[485,782,784],{"id":783},"_5-vercel-skills-agent-skill-ecosystem","5. Vercel Skills — Agent Skill Ecosystem",[11,786,787,789],{},[68,788,598],{}," Over 13,000 community-contributed skills covering Next.js, React, deployment pipelines, and full-stack development patterns.",[11,791,792,794],{},[68,793,604],{}," Frontend and full-stack developers working with modern JavaScript frameworks.",[11,796,797],{},[68,798,610],{},[107,800,802],{"className":109,"code":801,"language":111,"meta":112,"style":112},"tokrepo install d1eba6f1 --target gemini\n",[43,803,804],{"__ignoreMap":112},[116,805,806,808,810,813,815],{"class":118,"line":119},[116,807,512],{"class":122},[116,809,127],{"class":126},[116,811,812],{"class":126}," d1eba6f1",[116,814,529],{"class":130},[116,816,532],{"class":126},[11,818,819],{},[22,820,635],{"href":821,"rel":822},"https:\u002F\u002Ftokrepo.com\u002Fen\u002Fworkflows\u002Fd1eba6f1-5166-4762-bbbd-cf00f14892b7",[26],[637,824],{},[485,826,828],{"id":827},"_6-claude-seo-complete-seo-skill","6. Claude SEO — Complete SEO Skill",[11,830,831,833],{},[68,832,598],{}," Runs full SEO audits — keyword research, on-page analysis, content gaps, technical checks, and competitor comparison. Despite the name, the skill's Markdown instructions work in any CLI that reads structured prompts.",[11,835,836,838],{},[68,837,604],{}," Developers and marketers who want SEO analysis without leaving the terminal.",[11,840,841],{},[68,842,610],{},[107,844,846],{"className":109,"code":845,"language":111,"meta":112,"style":112},"tokrepo install cb068086 --target gemini\n",[43,847,848],{"__ignoreMap":112},[116,849,850,852,854,857,859],{"class":118,"line":119},[116,851,512],{"class":122},[116,853,127],{"class":126},[116,855,856],{"class":126}," cb068086",[116,858,529],{"class":130},[116,860,532],{"class":126},[11,862,863],{},[22,864,635],{"href":865,"rel":866},"https:\u002F\u002Ftokrepo.com\u002Fen\u002Fworkflows\u002Fcb068086",[26],[637,868],{},[485,870,872],{"id":871},"_7-systematic-debugging","7. Systematic Debugging",[11,874,875,877],{},[68,876,598],{}," A structured debugging methodology with persistent state tracking. Guides the model through hypothesis formation, evidence gathering, root cause isolation, and fix verification.",[11,879,880,882],{},[68,881,604],{}," Hard-to-reproduce bugs that require methodical investigation across multiple files.",[11,884,885],{},[68,886,610],{},[107,888,890],{"className":109,"code":889,"language":111,"meta":112,"style":112},"tokrepo install 78ed006e --target gemini\n",[43,891,892],{"__ignoreMap":112},[116,893,894,896,898,901,903],{"class":118,"line":119},[116,895,512],{"class":122},[116,897,127],{"class":126},[116,899,900],{"class":126}," 78ed006e",[116,902,529],{"class":130},[116,904,532],{"class":126},[11,906,907],{},[22,908,635],{"href":909,"rel":910},"https:\u002F\u002Ftokrepo.com\u002Fen\u002Fworkflows\u002F78ed006e",[26],[637,912],{},[485,914,916],{"id":915},"_8-web-access-skill","8. Web Access Skill",[11,918,919,921],{},[68,920,598],{}," Gives Gemini CLI the ability to fetch and analyze web pages, APIs, and online documentation. Reads URLs, extracts content, and uses it in your current task.",[11,923,924,926],{},[68,925,604],{}," Research-heavy tasks where you need the model to check documentation, compare APIs, or analyze competitor pages.",[11,928,929],{},[68,930,610],{},[107,932,934],{"className":109,"code":933,"language":111,"meta":112,"style":112},"tokrepo install 5766b7f4 --target gemini\n",[43,935,936],{"__ignoreMap":112},[116,937,938,940,942,945,947],{"class":118,"line":119},[116,939,512],{"class":122},[116,941,127],{"class":126},[116,943,944],{"class":126}," 5766b7f4",[116,946,529],{"class":130},[116,948,532],{"class":126},[11,950,951],{},[22,952,635],{"href":953,"rel":954},"https:\u002F\u002Ftokrepo.com\u002Fen\u002Fworkflows\u002F5766b7f4-f62e-4c74-80b4-c2763353b0fd",[26],[637,956],{},[15,958,960],{"id":959},"gemini-cli-vs-claude-code-vs-codex-cli","Gemini CLI vs Claude Code vs Codex CLI",[11,962,963],{},"How does Gemini CLI compare to the other two major AI coding CLIs? Here is a side-by-side breakdown:",[965,966],"comparison-table",{":headers":967,":rows":968},"[\"Feature\",\"Gemini CLI\",\"Claude Code\",\"Codex CLI\"]","[[\"Developer\",\"Google\",\"Anthropic\",\"OpenAI\"],[\"Model\",\"Gemini 2.5 Pro\",\"Claude Sonnet\u002FOpus\",\"GPT-4.1 \u002F o3\"],[\"License\",\"Apache 2.0\",\"Proprietary\",\"Open Source\"],[\"Skill Format\",\"GEMINI.md\",\".claude\u002Fcommands\u002F*.md\",\"AGENTS.md\"],[\"Free Tier\",\"60 req\u002Fmin\",\"Limited\",\"Limited\"],[\"Multi-modal\",\"Yes (images, files)\",\"Yes (images, files)\",\"Text only\"],[\"Extensions\",\"Extensions API + GEMINI.md\",\"MCP + Skills\",\"AGENTS.md\"],[\"Skill Ecosystem\",\"Growing\",\"Largest (TokRepo)\",\"Growing\"],[\"Best For\",\"Google Cloud \u002F Android\",\"General coding\",\"OpenAI ecosystem\"]]",[11,970,971],{},[68,972,973],{},"Key takeaways:",[62,975,976,984,993],{},[65,977,978,980,981,983],{},[68,979,27],{}," wins on free-tier access (60 req\u002Fmin with just a Google account) and Google Cloud integration. Its ",[43,982,45],{}," format is the simplest to get started with.",[65,985,986,988,989,992],{},[68,987,32],{}," has the most mature skill ecosystem thanks to ",[22,990,482],{"href":480,"rel":991},[26]," and the deepest reasoning capabilities for complex refactoring tasks.",[65,994,995,998,999,1001,1002,1005],{},[68,996,997],{},"Codex CLI"," offers strong integration with OpenAI's model lineup and the familiar ",[43,1000,56],{}," format. See our ",[22,1003,1004],{"href":36},"Codex CLI Skills guide"," for details.",[11,1007,1008],{},"All three support Markdown-based skills, and most skills on TokRepo work across all of them with minor format adjustments.",[15,1010,1012],{"id":1011},"faq","FAQ",[485,1014,1016],{"id":1015},"can-i-use-the-same-skills-across-gemini-cli-claude-code-and-codex-cli","Can I use the same skills across Gemini CLI, Claude Code, and Codex CLI?",[11,1018,1019,1020,1022,1023,1022,1025,1027,1028,1031,1032,1036],{},"Yes. The core of a skill is Markdown instructions — coding patterns, testing rules, deployment steps — which are model-agnostic. The only differences are the file location (",[43,1021,45],{}," vs ",[43,1024,52],{},[43,1026,56],{},") and trigger syntax. TokRepo's ",[43,1029,1030],{},"--target"," flag handles the conversion automatically. For deeper compatibility details, see ",[22,1033,1035],{"href":1034},"\u002Fguide\u002Fskills-vs-mcp","Skills vs MCP vs Rules",".",[485,1038,1040],{"id":1039},"is-gemini-cli-really-free","Is Gemini CLI really free?",[11,1042,1043,1044,1049],{},"The CLI itself is free and open source (Apache 2.0). With a Google account, you get 60 requests per minute at no cost. For higher rate limits or enterprise use, you need a ",[22,1045,1048],{"href":1046,"rel":1047},"https:\u002F\u002Fai.google.dev\u002F",[26],"Gemini API key"," with usage-based pricing.",[485,1051,1053],{"id":1052},"how-do-i-create-a-custom-skill-for-gemini-cli","How do I create a custom skill for Gemini CLI?",[11,1055,1056,1057,1059,1060,1063,1064,1068,1069,1072],{},"Write a Markdown file with your instructions and save it as ",[43,1058,45],{}," in your project root, or place it in ",[43,1061,1062],{},"~\u002F.gemini\u002F"," for global access. Follow our step-by-step tutorial: ",[22,1065,1067],{"href":1066},"\u002Fguide\u002Fcreate-skill","How to Create Your First Agent Skill",". The process is the same as creating skills for any AI CLI — you can also publish your skill to ",[22,1070,482],{"href":480,"rel":1071},[26]," so others can install it.",[15,1074,1076],{"id":1075},"next-steps","Next Steps",[62,1078,1079,1084,1089,1095],{},[65,1080,1081,1083],{},[22,1082,1067],{"href":1066}," — build a custom skill for Gemini CLI or any AI coding assistant",[65,1085,1086,1088],{},[22,1087,1035],{"href":1034}," — understand when to use skills, MCP servers, or config rules",[65,1090,1091,1094],{},[22,1092,1093],{"href":36},"Codex CLI Agent Skills Guide"," — the equivalent guide for OpenAI's CLI tool",[65,1096,1097,1101],{},[22,1098,1100],{"href":480,"rel":1099},[26],"Browse 500+ Skills on TokRepo"," — find skills for your specific stack and workflow",[1103,1104,1105],"style",{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}",{"title":112,"searchDepth":280,"depth":280,"links":1107},[1108,1109,1110,1111,1115,1125,1126,1131],{"id":17,"depth":280,"text":18},{"id":101,"depth":280,"text":102},{"id":217,"depth":280,"text":218},{"id":474,"depth":280,"text":475,"children":1112},[1113,1114],{"id":487,"depth":287,"text":488},{"id":549,"depth":287,"text":550},{"id":585,"depth":280,"text":586,"children":1116},[1117,1118,1119,1120,1121,1122,1123,1124],{"id":592,"depth":287,"text":593},{"id":641,"depth":287,"text":642},{"id":685,"depth":287,"text":686},{"id":729,"depth":287,"text":730},{"id":783,"depth":287,"text":784},{"id":827,"depth":287,"text":828},{"id":871,"depth":287,"text":872},{"id":915,"depth":287,"text":916},{"id":959,"depth":280,"text":960},{"id":1011,"depth":280,"text":1012,"children":1127},[1128,1129,1130],{"id":1015,"depth":287,"text":1016},{"id":1039,"depth":287,"text":1040},{"id":1052,"depth":287,"text":1053},{"id":1075,"depth":280,"text":1076},"tutorial","Complete guide to extending Google Gemini CLI with agent skills. Learn how to install, configure, and use GEMINI.md skills for AI-powered coding workflows.","Google Gemini CLI Agent Skill 完整指南。学习安装、配置和使用 GEMINI.md 技能，打造 AI 编程工作流。","md","\u002Fguide\u002Fimages\u002Fgemini-cli-skills-hero.svg",{},"\u002Fen\u002Fguide\u002Fgemini-cli-skills","2026-04-12",{"title":5,"description":1133},"en\u002Fguide\u002Fgemini-cli-skills",[163,1143,1144,1132],"google","skill","Gemini CLI Agent Skills 指南：安装与使用 Google AI 编程助手","F73T2dEsQUWU16tMx1AH8rC27Q5x0teM3kPRrPB5-Ug",[1148,2753,3683,5464,6548,8515,9328,10505,11346,12131],{"id":1149,"title":1150,"author":6,"body":1151,"category":2739,"description":2740,"descriptionZh":2741,"extension":1135,"image":2742,"meta":2743,"navigation":283,"path":2744,"publishedAt":1139,"readTime":316,"seo":2745,"stem":2746,"tags":2747,"titleZh":2751,"updatedAt":1139,"__hash__":2752},"docs_en\u002Fen\u002Fguide\u002Fagent-skills-for-teams.md","How to Set Up Shared Agent Skills for Your Development Team",{"type":8,"value":1152,"toc":2702},[1153,1156,1160,1179,1183,1186,1192,1215,1221,1255,1261,1269,1273,1276,1280,1288,1292,1301,1423,1427,1485,1491,1497,1507,1511,1518,1522,1533,1537,1687,1691,1726,1731,1736,1740,1743,1747,1753,1757,1904,2011,2016,2021,2025,2028,2032,2035,2049,2054,2058,2061,2075,2081,2085,2088,2102,2108,2112,2115,2129,2135,2139,2142,2156,2162,2166,2169,2173,2251,2255,2258,2394,2398,2426,2430,2505,2508,2510,2514,2520,2524,2531,2665,2669,2672,2674,2699],[11,1154,1155],{},"Learn how to standardize your team's AI coding workflow with shared agent skills. Whether you have 3 developers or 30, this guide covers three proven methods to distribute, version, and maintain skills across your entire organization — so every team member gets the same Claude Code superpowers from day one.",[15,1157,1159],{"id":1158},"prerequisites","Prerequisites",[62,1161,1162,1169,1172],{},[65,1163,1164,1168],{},[22,1165,32],{"href":1166,"rel":1167},"https:\u002F\u002Fclaude.ai\u002Fcode",[26]," installed (v2.1+)",[65,1170,1171],{},"A team Git repository",[65,1173,1174,1175,1178],{},"Basic familiarity with ",[22,1176,1177],{"href":1066},"agent skills"," and the terminal",[15,1180,1182],{"id":1181},"why-teams-need-shared-skills","Why Teams Need Shared Skills",[11,1184,1185],{},"When every developer writes their own prompts, you get inconsistency. One person's \"refactor this\" produces entirely different results from another's. Shared skills solve three problems:",[11,1187,1188,1191],{},[68,1189,1190],{},"Consistency."," Every team member gets the same code review standards, the same debugging methodology, and the same commit message format. The skill file is the single source of truth.",[107,1193,1197],{"className":1194,"code":1195,"language":1196,"meta":112,"style":112},"language-yaml shiki shiki-themes github-light github-dark","# .claude\u002Fcommands\u002Fcode-review.md\n# Every developer on your team runs the same review checklist\n# — no more \"I forgot to check for SQL injection\"\n","yaml",[43,1198,1199,1205,1210],{"__ignoreMap":112},[116,1200,1201],{"class":118,"line":119},[116,1202,1204],{"class":1203},"sJ8bj","# .claude\u002Fcommands\u002Fcode-review.md\n",[116,1206,1207],{"class":118,"line":280},[116,1208,1209],{"class":1203},"# Every developer on your team runs the same review checklist\n",[116,1211,1212],{"class":118,"line":287},[116,1213,1214],{"class":1203},"# — no more \"I forgot to check for SQL injection\"\n",[11,1216,1217,1220],{},[68,1218,1219],{},"Onboarding."," A new hire clones the repo, and they instantly have every skill the team has built over the past year. No tribal knowledge lost.",[107,1222,1224],{"className":109,"code":1223,"language":111,"meta":112,"style":112},"git clone git@github.com:your-org\u002Fyour-app.git\ncd your-app\n# Skills are already in .claude\u002Fcommands\u002F — ready to use\nclaude\n",[43,1225,1226,1237,1245,1250],{"__ignoreMap":112},[116,1227,1228,1231,1234],{"class":118,"line":119},[116,1229,1230],{"class":122},"git",[116,1232,1233],{"class":126}," clone",[116,1235,1236],{"class":126}," git@github.com:your-org\u002Fyour-app.git\n",[116,1238,1239,1242],{"class":118,"line":280},[116,1240,1241],{"class":130},"cd",[116,1243,1244],{"class":126}," your-app\n",[116,1246,1247],{"class":118,"line":287},[116,1248,1249],{"class":1203},"# Skills are already in .claude\u002Fcommands\u002F — ready to use\n",[116,1251,1252],{"class":118,"line":293},[116,1253,1254],{"class":122},"claude\n",[11,1256,1257,1260],{},[68,1258,1259],{},"Code review standards."," When the skill defines what \"good code\" looks like, PR reviews become objective. The AI applies the same standards to every diff.",[11,1262,1263,1264,1266,1267,1036],{},"If you're new to skills altogether, start with ",[22,1265,1067],{"href":1066}," before continuing here. For understanding how skills compare to MCP servers, see ",[22,1268,1035],{"href":1034},[15,1270,1272],{"id":1271},"method-1-git-repository","Method 1: Git Repository",[11,1274,1275],{},"The simplest approach — commit skill files directly to your project repo.",[485,1277,1279],{"id":1278},"directory-structure","Directory Structure",[107,1281,1286],{"className":1282,"code":1284,"language":1285},[1283],"language-text","your-project\u002F\n├── .claude\u002F\n│   └── commands\u002F\n│       ├── code-review.md\n│       ├── pr-description.md\n│       ├── debug-production.md\n│       ├── deploy-checklist.md\n│       └── write-tests.md\n├── src\u002F\n└── package.json\n","text",[43,1287,1284],{"__ignoreMap":112},[485,1289,1291],{"id":1290},"how-it-works","How It Works",[11,1293,1294,1295,1297,1298,1300],{},"Claude Code automatically discovers all ",[43,1296,470],{}," files in ",[43,1299,52],{},". When a team member clones the repo, the skills come with it.",[107,1302,1304],{"className":109,"code":1303,"language":111,"meta":112,"style":112},"# Create the skills directory\nmkdir -p .claude\u002Fcommands\n\n# Create a team code review skill\ncat > .claude\u002Fcommands\u002Fcode-review.md \u003C\u003C 'EOF'\n---\nname: Team Code Review\ndescription: Run our team's standard code review checklist\n---\n\nReview the staged changes against our team standards:\n\n1. **Security**: No hardcoded secrets, SQL injection, XSS vectors\n2. **Performance**: No N+1 queries, unnecessary re-renders, or unbounded loops\n3. **Testing**: Every new function has at least one test\n4. **Naming**: Variables and functions follow our conventions (camelCase for JS, snake_case for Python)\n5. **Documentation**: Public APIs have JSDoc\u002Fdocstrings\n\nOutput a markdown checklist with pass\u002Ffail for each item.\nEOF\n",[43,1305,1306,1311,1322,1326,1331,1348,1353,1358,1363,1367,1371,1376,1380,1385,1390,1395,1400,1406,1411,1417],{"__ignoreMap":112},[116,1307,1308],{"class":118,"line":119},[116,1309,1310],{"class":1203},"# Create the skills directory\n",[116,1312,1313,1316,1319],{"class":118,"line":280},[116,1314,1315],{"class":122},"mkdir",[116,1317,1318],{"class":130}," -p",[116,1320,1321],{"class":126}," .claude\u002Fcommands\n",[116,1323,1324],{"class":118,"line":287},[116,1325,284],{"emptyLinePlaceholder":283},[116,1327,1328],{"class":118,"line":293},[116,1329,1330],{"class":1203},"# Create a team code review skill\n",[116,1332,1333,1336,1339,1342,1345],{"class":118,"line":298},[116,1334,1335],{"class":122},"cat",[116,1337,1338],{"class":182}," >",[116,1340,1341],{"class":126}," .claude\u002Fcommands\u002Fcode-review.md",[116,1343,1344],{"class":182}," \u003C\u003C",[116,1346,1347],{"class":126}," 'EOF'\n",[116,1349,1350],{"class":118,"line":304},[116,1351,1352],{"class":126},"---\n",[116,1354,1355],{"class":118,"line":310},[116,1356,1357],{"class":126},"name: Team Code Review\n",[116,1359,1360],{"class":118,"line":316},[116,1361,1362],{"class":126},"description: Run our team's standard code review checklist\n",[116,1364,1365],{"class":118,"line":322},[116,1366,1352],{"class":126},[116,1368,1369],{"class":118,"line":327},[116,1370,284],{"emptyLinePlaceholder":283},[116,1372,1373],{"class":118,"line":333},[116,1374,1375],{"class":126},"Review the staged changes against our team standards:\n",[116,1377,1378],{"class":118,"line":339},[116,1379,284],{"emptyLinePlaceholder":283},[116,1381,1382],{"class":118,"line":345},[116,1383,1384],{"class":126},"1. **Security**: No hardcoded secrets, SQL injection, XSS vectors\n",[116,1386,1387],{"class":118,"line":350},[116,1388,1389],{"class":126},"2. **Performance**: No N+1 queries, unnecessary re-renders, or unbounded loops\n",[116,1391,1392],{"class":118,"line":356},[116,1393,1394],{"class":126},"3. **Testing**: Every new function has at least one test\n",[116,1396,1397],{"class":118,"line":362},[116,1398,1399],{"class":126},"4. **Naming**: Variables and functions follow our conventions (camelCase for JS, snake_case for Python)\n",[116,1401,1403],{"class":118,"line":1402},17,[116,1404,1405],{"class":126},"5. **Documentation**: Public APIs have JSDoc\u002Fdocstrings\n",[116,1407,1409],{"class":118,"line":1408},18,[116,1410,284],{"emptyLinePlaceholder":283},[116,1412,1414],{"class":118,"line":1413},19,[116,1415,1416],{"class":126},"Output a markdown checklist with pass\u002Ffail for each item.\n",[116,1418,1420],{"class":118,"line":1419},20,[116,1421,1422],{"class":126},"EOF\n",[485,1424,1426],{"id":1425},"version-control-benefits","Version Control Benefits",[107,1428,1430],{"className":109,"code":1429,"language":111,"meta":112,"style":112},"# Track skill changes in your regular git workflow\ngit add .claude\u002Fcommands\u002Fcode-review.md\ngit commit -m \"feat: add team code review skill with security checklist\"\n\n# Review skill changes in PRs just like code changes\ngit diff main -- .claude\u002Fcommands\u002F\n",[43,1431,1432,1437,1447,1460,1464,1469],{"__ignoreMap":112},[116,1433,1434],{"class":118,"line":119},[116,1435,1436],{"class":1203},"# Track skill changes in your regular git workflow\n",[116,1438,1439,1441,1444],{"class":118,"line":280},[116,1440,1230],{"class":122},[116,1442,1443],{"class":126}," add",[116,1445,1446],{"class":126}," .claude\u002Fcommands\u002Fcode-review.md\n",[116,1448,1449,1451,1454,1457],{"class":118,"line":287},[116,1450,1230],{"class":122},[116,1452,1453],{"class":126}," commit",[116,1455,1456],{"class":130}," -m",[116,1458,1459],{"class":126}," \"feat: add team code review skill with security checklist\"\n",[116,1461,1462],{"class":118,"line":293},[116,1463,284],{"emptyLinePlaceholder":283},[116,1465,1466],{"class":118,"line":298},[116,1467,1468],{"class":1203},"# Review skill changes in PRs just like code changes\n",[116,1470,1471,1473,1476,1479,1482],{"class":118,"line":304},[116,1472,1230],{"class":122},[116,1474,1475],{"class":126}," diff",[116,1477,1478],{"class":126}," main",[116,1480,1481],{"class":130}," --",[116,1483,1484],{"class":126}," .claude\u002Fcommands\u002F\n",[11,1486,1487,1490],{},[68,1488,1489],{},"Pros:"," Zero setup, version controlled, works offline, team reviews skill changes in PRs.",[11,1492,1493,1496],{},[68,1494,1495],{},"Cons:"," Skills are per-project. If your org has 20 repos, you need to sync skills across all of them.",[1498,1499,1501],"info-box",{"type":1500},"tip",[11,1502,1503,1504,1506],{},"Use a Git submodule or symlink to share a single ",[43,1505,52],{}," directory across multiple repos. This keeps skills in sync without manual copying.",[15,1508,1510],{"id":1509},"method-2-tokrepo-collections","Method 2: TokRepo Collections",[11,1512,1513,1517],{},[22,1514,482],{"href":1515,"rel":1516},"https:\u002F\u002Ftokrepo.com",[26]," lets you create a collection of skills that your entire team can install with a single command. This is ideal for organizations with multiple repositories.",[485,1519,1521],{"id":1520},"step-1-curate-your-team-collection","Step 1: Curate Your Team Collection",[11,1523,555,1524,1528,1529,1532],{},[22,1525,1527],{"href":480,"rel":1526},[26],"TokRepo's skill library"," and pick the skills your team needs. You can also ",[22,1530,1531],{"href":1066},"create custom skills"," and publish them.",[485,1534,1536],{"id":1535},"step-2-create-an-install-script","Step 2: Create an Install Script",[107,1538,1540],{"className":109,"code":1539,"language":111,"meta":112,"style":112},"#!\u002Fbin\u002Fbash\n# team-skills-install.sh\n# Run this in any project to set up team skills\n\necho \"Installing team skills from TokRepo...\"\n\n# Project management\ntokrepo install e108cf5c-c34e-4d27-a694-66a693301e87  # GSD\n\n# Debugging\ntokrepo install 78ed006e-b022-4e92-bf65-df8b53afd2f4  # Systematic Debugging\n\n# SEO (for frontend projects)\ntokrepo install cb068086-1c7d-408e-90a1-c39cfc6ffe87  # Claude SEO\n\n# Skill creation (for senior devs)\ntokrepo install 0b7c0a41-97e1-4187-9cc5-4dc32d91a9cd  # Skill Creator\n\n# Planning\ntokrepo install 034be597-c361-45a2-b143-41cce0ec8ad8  # Planning\n\necho \"Done. Run 'claude' to start using skills.\"\n",[43,1541,1542,1547,1552,1557,1561,1569,1573,1578,1590,1594,1599,1611,1615,1620,1632,1636,1641,1653,1657,1662,1674,1679],{"__ignoreMap":112},[116,1543,1544],{"class":118,"line":119},[116,1545,1546],{"class":1203},"#!\u002Fbin\u002Fbash\n",[116,1548,1549],{"class":118,"line":280},[116,1550,1551],{"class":1203},"# team-skills-install.sh\n",[116,1553,1554],{"class":118,"line":287},[116,1555,1556],{"class":1203},"# Run this in any project to set up team skills\n",[116,1558,1559],{"class":118,"line":293},[116,1560,284],{"emptyLinePlaceholder":283},[116,1562,1563,1566],{"class":118,"line":298},[116,1564,1565],{"class":130},"echo",[116,1567,1568],{"class":126}," \"Installing team skills from TokRepo...\"\n",[116,1570,1571],{"class":118,"line":304},[116,1572,284],{"emptyLinePlaceholder":283},[116,1574,1575],{"class":118,"line":310},[116,1576,1577],{"class":1203},"# Project management\n",[116,1579,1580,1582,1584,1587],{"class":118,"line":316},[116,1581,512],{"class":122},[116,1583,127],{"class":126},[116,1585,1586],{"class":126}," e108cf5c-c34e-4d27-a694-66a693301e87",[116,1588,1589],{"class":1203},"  # GSD\n",[116,1591,1592],{"class":118,"line":322},[116,1593,284],{"emptyLinePlaceholder":283},[116,1595,1596],{"class":118,"line":327},[116,1597,1598],{"class":1203},"# Debugging\n",[116,1600,1601,1603,1605,1608],{"class":118,"line":333},[116,1602,512],{"class":122},[116,1604,127],{"class":126},[116,1606,1607],{"class":126}," 78ed006e-b022-4e92-bf65-df8b53afd2f4",[116,1609,1610],{"class":1203},"  # Systematic Debugging\n",[116,1612,1613],{"class":118,"line":339},[116,1614,284],{"emptyLinePlaceholder":283},[116,1616,1617],{"class":118,"line":345},[116,1618,1619],{"class":1203},"# SEO (for frontend projects)\n",[116,1621,1622,1624,1626,1629],{"class":118,"line":350},[116,1623,512],{"class":122},[116,1625,127],{"class":126},[116,1627,1628],{"class":126}," cb068086-1c7d-408e-90a1-c39cfc6ffe87",[116,1630,1631],{"class":1203},"  # Claude SEO\n",[116,1633,1634],{"class":118,"line":356},[116,1635,284],{"emptyLinePlaceholder":283},[116,1637,1638],{"class":118,"line":362},[116,1639,1640],{"class":1203},"# Skill creation (for senior devs)\n",[116,1642,1643,1645,1647,1650],{"class":118,"line":1402},[116,1644,512],{"class":122},[116,1646,127],{"class":126},[116,1648,1649],{"class":126}," 0b7c0a41-97e1-4187-9cc5-4dc32d91a9cd",[116,1651,1652],{"class":1203},"  # Skill Creator\n",[116,1654,1655],{"class":118,"line":1408},[116,1656,284],{"emptyLinePlaceholder":283},[116,1658,1659],{"class":118,"line":1413},[116,1660,1661],{"class":1203},"# Planning\n",[116,1663,1664,1666,1668,1671],{"class":118,"line":1419},[116,1665,512],{"class":122},[116,1667,127],{"class":126},[116,1669,1670],{"class":126}," 034be597-c361-45a2-b143-41cce0ec8ad8",[116,1672,1673],{"class":1203},"  # Planning\n",[116,1675,1677],{"class":118,"line":1676},21,[116,1678,284],{"emptyLinePlaceholder":283},[116,1680,1682,1684],{"class":118,"line":1681},22,[116,1683,1565],{"class":130},[116,1685,1686],{"class":126}," \"Done. Run 'claude' to start using skills.\"\n",[485,1688,1690],{"id":1689},"step-3-share-with-your-team","Step 3: Share With Your Team",[107,1692,1694],{"className":109,"code":1693,"language":111,"meta":112,"style":112},"# Add the install script to your org's shared repo\nchmod +x team-skills-install.sh\n\n# New team members run one command\n.\u002Fteam-skills-install.sh\n",[43,1695,1696,1701,1712,1716,1721],{"__ignoreMap":112},[116,1697,1698],{"class":118,"line":119},[116,1699,1700],{"class":1203},"# Add the install script to your org's shared repo\n",[116,1702,1703,1706,1709],{"class":118,"line":280},[116,1704,1705],{"class":122},"chmod",[116,1707,1708],{"class":126}," +x",[116,1710,1711],{"class":126}," team-skills-install.sh\n",[116,1713,1714],{"class":118,"line":287},[116,1715,284],{"emptyLinePlaceholder":283},[116,1717,1718],{"class":118,"line":293},[116,1719,1720],{"class":1203},"# New team members run one command\n",[116,1722,1723],{"class":118,"line":298},[116,1724,1725],{"class":122},".\u002Fteam-skills-install.sh\n",[11,1727,1728,1730],{},[68,1729,1489],{}," Centralized management, one-command install, skills auto-update, works across repos.",[11,1732,1733,1735],{},[68,1734,1495],{}," Requires internet access for initial install, team members need TokRepo CLI.",[15,1737,1739],{"id":1738},"method-3-custom-skill-registry","Method 3: Custom Skill Registry",[11,1741,1742],{},"For larger organizations that need full control, self-host a skill registry on your internal infrastructure.",[485,1744,1746],{"id":1745},"architecture","Architecture",[107,1748,1751],{"className":1749,"code":1750,"language":1285},[1283],"┌─────────────────┐     ┌──────────────────┐     ┌─────────────┐\n│  Skill Authors   │────▶│  Internal Git     │────▶│  Developer   │\n│  (Senior Devs)   │     │  Registry Repo    │     │  Machines    │\n└─────────────────┘     └──────────────────┘     └─────────────┘\n                              │\n                              ▼\n                        ┌──────────────────┐\n                        │  CI\u002FCD Pipeline   │\n                        │  (validate &      │\n                        │   distribute)     │\n                        └──────────────────┘\n",[43,1752,1750],{"__ignoreMap":112},[485,1754,1756],{"id":1755},"implementation","Implementation",[107,1758,1760],{"className":109,"code":1759,"language":111,"meta":112,"style":112},"# internal-skill-registry\u002F\n# ├── skills\u002F\n# │   ├── code-review.md\n# │   ├── deploy-checklist.md\n# │   └── incident-response.md\n# ├── validate.sh          # Lint skill frontmatter\n# ├── distribute.sh        # Push to all project repos\n# └── README.md\n\n# validate.sh — ensure every skill has required frontmatter\n#!\u002Fbin\u002Fbash\nfor skill in skills\u002F*.md; do\n  if ! grep -q \"^name:\" \"$skill\"; then\n    echo \"ERROR: $skill missing 'name' field\"\n    exit 1\n  fi\ndone\necho \"All skills valid.\"\n",[43,1761,1762,1767,1772,1777,1782,1787,1792,1797,1802,1806,1811,1815,1835,1866,1879,1887,1892,1897],{"__ignoreMap":112},[116,1763,1764],{"class":118,"line":119},[116,1765,1766],{"class":1203},"# internal-skill-registry\u002F\n",[116,1768,1769],{"class":118,"line":280},[116,1770,1771],{"class":1203},"# ├── skills\u002F\n",[116,1773,1774],{"class":118,"line":287},[116,1775,1776],{"class":1203},"# │   ├── code-review.md\n",[116,1778,1779],{"class":118,"line":293},[116,1780,1781],{"class":1203},"# │   ├── deploy-checklist.md\n",[116,1783,1784],{"class":118,"line":298},[116,1785,1786],{"class":1203},"# │   └── incident-response.md\n",[116,1788,1789],{"class":118,"line":304},[116,1790,1791],{"class":1203},"# ├── validate.sh          # Lint skill frontmatter\n",[116,1793,1794],{"class":118,"line":310},[116,1795,1796],{"class":1203},"# ├── distribute.sh        # Push to all project repos\n",[116,1798,1799],{"class":118,"line":316},[116,1800,1801],{"class":1203},"# └── README.md\n",[116,1803,1804],{"class":118,"line":322},[116,1805,284],{"emptyLinePlaceholder":283},[116,1807,1808],{"class":118,"line":327},[116,1809,1810],{"class":1203},"# validate.sh — ensure every skill has required frontmatter\n",[116,1812,1813],{"class":118,"line":333},[116,1814,1546],{"class":1203},[116,1816,1817,1820,1823,1826,1829,1832],{"class":118,"line":339},[116,1818,1819],{"class":182},"for",[116,1821,1822],{"class":186}," skill ",[116,1824,1825],{"class":182},"in",[116,1827,1828],{"class":126}," skills\u002F*.md",[116,1830,1831],{"class":186},"; ",[116,1833,1834],{"class":182},"do\n",[116,1836,1837,1840,1843,1846,1849,1852,1855,1858,1861,1863],{"class":118,"line":345},[116,1838,1839],{"class":182},"  if",[116,1841,1842],{"class":182}," !",[116,1844,1845],{"class":122}," grep",[116,1847,1848],{"class":130}," -q",[116,1850,1851],{"class":126}," \"^name:\"",[116,1853,1854],{"class":126}," \"",[116,1856,1857],{"class":186},"$skill",[116,1859,1860],{"class":126},"\"",[116,1862,1831],{"class":186},[116,1864,1865],{"class":182},"then\n",[116,1867,1868,1871,1874,1876],{"class":118,"line":350},[116,1869,1870],{"class":130},"    echo",[116,1872,1873],{"class":126}," \"ERROR: ",[116,1875,1857],{"class":186},[116,1877,1878],{"class":126}," missing 'name' field\"\n",[116,1880,1881,1884],{"class":118,"line":356},[116,1882,1883],{"class":130},"    exit",[116,1885,1886],{"class":130}," 1\n",[116,1888,1889],{"class":118,"line":362},[116,1890,1891],{"class":182},"  fi\n",[116,1893,1894],{"class":118,"line":1402},[116,1895,1896],{"class":182},"done\n",[116,1898,1899,1901],{"class":118,"line":1408},[116,1900,1565],{"class":130},[116,1902,1903],{"class":126}," \"All skills valid.\"\n",[107,1905,1907],{"className":109,"code":1906,"language":111,"meta":112,"style":112},"# distribute.sh — sync skills to all team repos\n#!\u002Fbin\u002Fbash\nREPOS=(\"app-frontend\" \"app-backend\" \"app-mobile\" \"shared-lib\")\n\nfor repo in \"${REPOS[@]}\"; do\n  echo \"Syncing skills to $repo...\"\n  cp -r skills\u002F \"..\u002F$repo\u002F.claude\u002Fcommands\u002F\"\ndone\n",[43,1908,1909,1914,1918,1943,1947,1974,1988,2007],{"__ignoreMap":112},[116,1910,1911],{"class":118,"line":119},[116,1912,1913],{"class":1203},"# distribute.sh — sync skills to all team repos\n",[116,1915,1916],{"class":118,"line":280},[116,1917,1546],{"class":1203},[116,1919,1920,1923,1925,1928,1931,1934,1937,1940],{"class":118,"line":287},[116,1921,1922],{"class":186},"REPOS",[116,1924,190],{"class":182},[116,1926,1927],{"class":186},"(",[116,1929,1930],{"class":126},"\"app-frontend\"",[116,1932,1933],{"class":126}," \"app-backend\"",[116,1935,1936],{"class":126}," \"app-mobile\"",[116,1938,1939],{"class":126}," \"shared-lib\"",[116,1941,1942],{"class":186},")\n",[116,1944,1945],{"class":118,"line":293},[116,1946,284],{"emptyLinePlaceholder":283},[116,1948,1949,1951,1954,1956,1959,1961,1964,1967,1970,1972],{"class":118,"line":298},[116,1950,1819],{"class":182},[116,1952,1953],{"class":186}," repo ",[116,1955,1825],{"class":182},[116,1957,1958],{"class":126}," \"${",[116,1960,1922],{"class":186},[116,1962,1963],{"class":126},"[",[116,1965,1966],{"class":182},"@",[116,1968,1969],{"class":126},"]}\"",[116,1971,1831],{"class":186},[116,1973,1834],{"class":182},[116,1975,1976,1979,1982,1985],{"class":118,"line":304},[116,1977,1978],{"class":130},"  echo",[116,1980,1981],{"class":126}," \"Syncing skills to ",[116,1983,1984],{"class":186},"$repo",[116,1986,1987],{"class":126},"...\"\n",[116,1989,1990,1993,1996,1999,2002,2004],{"class":118,"line":310},[116,1991,1992],{"class":122},"  cp",[116,1994,1995],{"class":130}," -r",[116,1997,1998],{"class":126}," skills\u002F",[116,2000,2001],{"class":126}," \"..\u002F",[116,2003,1984],{"class":186},[116,2005,2006],{"class":126},"\u002F.claude\u002Fcommands\u002F\"\n",[116,2008,2009],{"class":118,"line":316},[116,2010,1896],{"class":182},[11,2012,2013,2015],{},[68,2014,1489],{}," Full control, works behind firewalls, custom validation, audit trail.",[11,2017,2018,2020],{},[68,2019,1495],{}," Maintenance overhead, need to build tooling, no community skills.",[15,2022,2024],{"id":2023},"recommended-team-skill-stack","Recommended Team Skill Stack",[11,2026,2027],{},"Based on real team deployments, here are five skills every development team should install:",[485,2029,2031],{"id":2030},"_1-get-shit-done-gsd","1. Get Shit Done (GSD)",[11,2033,2034],{},"The project management backbone. Breaks work into milestones and phases with persistent tracking.",[107,2036,2038],{"className":109,"code":2037,"language":111,"meta":112,"style":112},"tokrepo install e108cf5c-c34e-4d27-a694-66a693301e87\n",[43,2039,2040],{"__ignoreMap":112},[116,2041,2042,2044,2046],{"class":118,"line":119},[116,2043,512],{"class":122},[116,2045,127],{"class":126},[116,2047,2048],{"class":126}," e108cf5c-c34e-4d27-a694-66a693301e87\n",[11,2050,2051],{},[22,2052,635],{"href":777,"rel":2053},[26],[485,2055,2057],{"id":2056},"_2-systematic-debugging","2. Systematic Debugging",[11,2059,2060],{},"Structured 4-phase debugging: reproduce, isolate, diagnose, fix. Prevents random trial-and-error.",[107,2062,2064],{"className":109,"code":2063,"language":111,"meta":112,"style":112},"tokrepo install 78ed006e-b022-4e92-bf65-df8b53afd2f4\n",[43,2065,2066],{"__ignoreMap":112},[116,2067,2068,2070,2072],{"class":118,"line":119},[116,2069,512],{"class":122},[116,2071,127],{"class":126},[116,2073,2074],{"class":126}," 78ed006e-b022-4e92-bf65-df8b53afd2f4\n",[11,2076,2077],{},[22,2078,635],{"href":2079,"rel":2080},"https:\u002F\u002Ftokrepo.com\u002Fen\u002Fworkflows\u002F78ed006e-b022-4e92-bf65-df8b53afd2f4",[26],[485,2082,2084],{"id":2083},"_3-claude-seo","3. Claude SEO",[11,2086,2087],{},"Comprehensive SEO audits — keyword research, on-page analysis, technical checks.",[107,2089,2091],{"className":109,"code":2090,"language":111,"meta":112,"style":112},"tokrepo install cb068086-1c7d-408e-90a1-c39cfc6ffe87\n",[43,2092,2093],{"__ignoreMap":112},[116,2094,2095,2097,2099],{"class":118,"line":119},[116,2096,512],{"class":122},[116,2098,127],{"class":126},[116,2100,2101],{"class":126}," cb068086-1c7d-408e-90a1-c39cfc6ffe87\n",[11,2103,2104],{},[22,2105,635],{"href":2106,"rel":2107},"https:\u002F\u002Ftokrepo.com\u002Fen\u002Fworkflows\u002Fcb068086-1c7d-408e-90a1-c39cfc6ffe87",[26],[485,2109,2111],{"id":2110},"_4-skill-creator","4. Skill Creator",[11,2113,2114],{},"Meta-skill for building team-specific skills. Senior devs use this to package tribal knowledge.",[107,2116,2118],{"className":109,"code":2117,"language":111,"meta":112,"style":112},"tokrepo install 0b7c0a41-97e1-4187-9cc5-4dc32d91a9cd\n",[43,2119,2120],{"__ignoreMap":112},[116,2121,2122,2124,2126],{"class":118,"line":119},[116,2123,512],{"class":122},[116,2125,127],{"class":126},[116,2127,2128],{"class":126}," 0b7c0a41-97e1-4187-9cc5-4dc32d91a9cd\n",[11,2130,2131],{},[22,2132,635],{"href":2133,"rel":2134},"https:\u002F\u002Ftokrepo.com\u002Fen\u002Fworkflows\u002F0b7c0a41-97e1-4187-9cc5-4dc32d91a9cd",[26],[485,2136,2138],{"id":2137},"_5-planning-with-files","5. Planning with Files",[11,2140,2141],{},"Persistent planning that survives across Claude Code sessions. Essential for multi-day tasks.",[107,2143,2145],{"className":109,"code":2144,"language":111,"meta":112,"style":112},"tokrepo install 034be597-c361-45a2-b143-41cce0ec8ad8\n",[43,2146,2147],{"__ignoreMap":112},[116,2148,2149,2151,2153],{"class":118,"line":119},[116,2150,512],{"class":122},[116,2152,127],{"class":126},[116,2154,2155],{"class":126}," 034be597-c361-45a2-b143-41cce0ec8ad8\n",[11,2157,2158],{},[22,2159,635],{"href":2160,"rel":2161},"https:\u002F\u002Ftokrepo.com\u002Fen\u002Fworkflows\u002F034be597-c361-45a2-b143-41cce0ec8ad8",[26],[15,2163,2165],{"id":2164},"case-study-5-person-team-setup","Case Study: 5-Person Team Setup",[11,2167,2168],{},"Here's how a real 5-person startup team standardized their Claude Code workflow in one afternoon.",[485,2170,2172],{"id":2171},"the-team","The Team",[2174,2175,2176,2192],"table",{},[2177,2178,2179],"thead",{},[2180,2181,2182,2186,2189],"tr",{},[2183,2184,2185],"th",{},"Role",[2183,2187,2188],{},"Name",[2183,2190,2191],{},"Focus",[2193,2194,2195,2207,2218,2229,2240],"tbody",{},[2180,2196,2197,2201,2204],{},[2198,2199,2200],"td",{},"Tech Lead",[2198,2202,2203],{},"Sarah",[2198,2205,2206],{},"Architecture, code review",[2180,2208,2209,2212,2215],{},[2198,2210,2211],{},"Frontend",[2198,2213,2214],{},"Jake",[2198,2216,2217],{},"React, Next.js",[2180,2219,2220,2223,2226],{},[2198,2221,2222],{},"Backend",[2198,2224,2225],{},"Mira",[2198,2227,2228],{},"Go, PostgreSQL",[2180,2230,2231,2234,2237],{},[2198,2232,2233],{},"Full-Stack",[2198,2235,2236],{},"Alex",[2198,2238,2239],{},"Features, integrations",[2180,2241,2242,2245,2248],{},[2198,2243,2244],{},"Junior Dev",[2198,2246,2247],{},"Tom",[2198,2249,2250],{},"Bug fixes, tests",[485,2252,2254],{"id":2253},"step-1-tech-lead-creates-the-skill-set-30-min","Step 1: Tech Lead Creates the Skill Set (30 min)",[11,2256,2257],{},"Sarah identified the team's top 5 pain points and mapped each to a skill:",[107,2259,2261],{"className":109,"code":2260,"language":111,"meta":112,"style":112},"# Sarah's laptop\nmkdir -p .claude\u002Fcommands\n\n# 1. Install community skills\ntokrepo install e108cf5c-c34e-4d27-a694-66a693301e87  # GSD\ntokrepo install 78ed006e-b022-4e92-bf65-df8b53afd2f4  # Systematic Debugging\ntokrepo install 034be597-c361-45a2-b143-41cce0ec8ad8  # Planning\n\n# 2. Create team-specific skills\ncat > .claude\u002Fcommands\u002Four-pr-review.md \u003C\u003C 'EOF'\n---\nname: PR Review (Team Standard)\ndescription: Review code against our team's 12-point checklist\n---\nReview the current diff. Check for:\n1. No console.log in production code\n2. All API endpoints have rate limiting\n3. Database queries use parameterized statements\n4. React components have error boundaries\n5. Go functions return errors (no panic)\n...\nEOF\n",[43,2262,2263,2268,2276,2280,2285,2295,2305,2315,2319,2324,2337,2341,2346,2351,2355,2360,2365,2370,2375,2380,2385,2390],{"__ignoreMap":112},[116,2264,2265],{"class":118,"line":119},[116,2266,2267],{"class":1203},"# Sarah's laptop\n",[116,2269,2270,2272,2274],{"class":118,"line":280},[116,2271,1315],{"class":122},[116,2273,1318],{"class":130},[116,2275,1321],{"class":126},[116,2277,2278],{"class":118,"line":287},[116,2279,284],{"emptyLinePlaceholder":283},[116,2281,2282],{"class":118,"line":293},[116,2283,2284],{"class":1203},"# 1. Install community skills\n",[116,2286,2287,2289,2291,2293],{"class":118,"line":298},[116,2288,512],{"class":122},[116,2290,127],{"class":126},[116,2292,1586],{"class":126},[116,2294,1589],{"class":1203},[116,2296,2297,2299,2301,2303],{"class":118,"line":304},[116,2298,512],{"class":122},[116,2300,127],{"class":126},[116,2302,1607],{"class":126},[116,2304,1610],{"class":1203},[116,2306,2307,2309,2311,2313],{"class":118,"line":310},[116,2308,512],{"class":122},[116,2310,127],{"class":126},[116,2312,1670],{"class":126},[116,2314,1673],{"class":1203},[116,2316,2317],{"class":118,"line":316},[116,2318,284],{"emptyLinePlaceholder":283},[116,2320,2321],{"class":118,"line":322},[116,2322,2323],{"class":1203},"# 2. Create team-specific skills\n",[116,2325,2326,2328,2330,2333,2335],{"class":118,"line":327},[116,2327,1335],{"class":122},[116,2329,1338],{"class":182},[116,2331,2332],{"class":126}," .claude\u002Fcommands\u002Four-pr-review.md",[116,2334,1344],{"class":182},[116,2336,1347],{"class":126},[116,2338,2339],{"class":118,"line":333},[116,2340,1352],{"class":126},[116,2342,2343],{"class":118,"line":339},[116,2344,2345],{"class":126},"name: PR Review (Team Standard)\n",[116,2347,2348],{"class":118,"line":345},[116,2349,2350],{"class":126},"description: Review code against our team's 12-point checklist\n",[116,2352,2353],{"class":118,"line":350},[116,2354,1352],{"class":126},[116,2356,2357],{"class":118,"line":356},[116,2358,2359],{"class":126},"Review the current diff. Check for:\n",[116,2361,2362],{"class":118,"line":362},[116,2363,2364],{"class":126},"1. No console.log in production code\n",[116,2366,2367],{"class":118,"line":1402},[116,2368,2369],{"class":126},"2. All API endpoints have rate limiting\n",[116,2371,2372],{"class":118,"line":1408},[116,2373,2374],{"class":126},"3. Database queries use parameterized statements\n",[116,2376,2377],{"class":118,"line":1413},[116,2378,2379],{"class":126},"4. React components have error boundaries\n",[116,2381,2382],{"class":118,"line":1419},[116,2383,2384],{"class":126},"5. Go functions return errors (no panic)\n",[116,2386,2387],{"class":118,"line":1676},[116,2388,2389],{"class":126},"...\n",[116,2391,2392],{"class":118,"line":1681},[116,2393,1422],{"class":126},[485,2395,2397],{"id":2396},"step-2-team-installs-skills-5-min-each","Step 2: Team Installs Skills (5 min each)",[107,2399,2401],{"className":109,"code":2400,"language":111,"meta":112,"style":112},"# Each team member runs:\ngit pull origin main\n# Skills are already in .claude\u002Fcommands\u002F — done.\n",[43,2402,2403,2408,2421],{"__ignoreMap":112},[116,2404,2405],{"class":118,"line":119},[116,2406,2407],{"class":1203},"# Each team member runs:\n",[116,2409,2410,2412,2415,2418],{"class":118,"line":280},[116,2411,1230],{"class":122},[116,2413,2414],{"class":126}," pull",[116,2416,2417],{"class":126}," origin",[116,2419,2420],{"class":126}," main\n",[116,2422,2423],{"class":118,"line":287},[116,2424,2425],{"class":1203},"# Skills are already in .claude\u002Fcommands\u002F — done.\n",[485,2427,2429],{"id":2428},"step-3-measure-the-impact-2-weeks-later","Step 3: Measure the Impact (2 weeks later)",[2174,2431,2432,2448],{},[2177,2433,2434],{},[2180,2435,2436,2439,2442,2445],{},[2183,2437,2438],{},"Metric",[2183,2440,2441],{},"Before Skills",[2183,2443,2444],{},"After Skills",[2183,2446,2447],{},"Change",[2193,2449,2450,2464,2477,2491],{},[2180,2451,2452,2455,2458,2461],{},[2198,2453,2454],{},"PR review time",[2198,2456,2457],{},"45 min",[2198,2459,2460],{},"15 min",[2198,2462,2463],{},"-67%",[2180,2465,2466,2469,2472,2475],{},[2198,2467,2468],{},"Bug escape rate",[2198,2470,2471],{},"3\u002Fweek",[2198,2473,2474],{},"1\u002Fweek",[2198,2476,2463],{},[2180,2478,2479,2482,2485,2488],{},[2198,2480,2481],{},"Onboarding time",[2198,2483,2484],{},"2 weeks",[2198,2486,2487],{},"3 days",[2198,2489,2490],{},"-79%",[2180,2492,2493,2496,2499,2502],{},[2198,2494,2495],{},"Code style violations",[2198,2497,2498],{},"12\u002FPR",[2198,2500,2501],{},"2\u002FPR",[2198,2503,2504],{},"-83%",[11,2506,2507],{},"The junior developer (Tom) benefited the most — the debugging skill taught him a systematic approach he hadn't learned yet, and the PR review skill caught issues before senior devs had to review.",[15,2509,1012],{"id":1011},[485,2511,2513],{"id":2512},"how-do-i-handle-skill-conflicts-between-team-members","How do I handle skill conflicts between team members?",[11,2515,2516,2517,2519],{},"Use Git's normal merge workflow. If two people edit the same skill, resolve the conflict in a PR review. For community skills installed via TokRepo, pin to a specific version by keeping a copy in ",[43,2518,52],{}," rather than relying on auto-updates.",[485,2521,2523],{"id":2522},"can-i-restrict-which-skills-team-members-can-install","Can I restrict which skills team members can install?",[11,2525,2526,2527,1297,2529,372],{},"Not natively. However, with Method 3 (custom registry), you can implement an allowlist. For Method 1 (Git repo), use a pre-commit hook that rejects unknown ",[43,2528,470],{},[43,2530,52],{},[107,2532,2534],{"className":109,"code":2533,"language":111,"meta":112,"style":112},"# .husky\u002Fpre-commit\nALLOWED_SKILLS=\"code-review.md pr-description.md debug-production.md\"\nfor file in $(git diff --cached --name-only -- .claude\u002Fcommands\u002F); do\n  basename=$(basename \"$file\")\n  if ! echo \"$ALLOWED_SKILLS\" | grep -q \"$basename\"; then\n    echo \"ERROR: Unapproved skill: $basename\"\n    exit 1\n  fi\ndone\n",[43,2535,2536,2541,2551,2583,2605,2639,2651,2657,2661],{"__ignoreMap":112},[116,2537,2538],{"class":118,"line":119},[116,2539,2540],{"class":1203},"# .husky\u002Fpre-commit\n",[116,2542,2543,2546,2548],{"class":118,"line":280},[116,2544,2545],{"class":186},"ALLOWED_SKILLS",[116,2547,190],{"class":182},[116,2549,2550],{"class":126},"\"code-review.md pr-description.md debug-production.md\"\n",[116,2552,2553,2555,2558,2560,2563,2565,2567,2570,2573,2575,2578,2581],{"class":118,"line":287},[116,2554,1819],{"class":182},[116,2556,2557],{"class":186}," file ",[116,2559,1825],{"class":182},[116,2561,2562],{"class":186}," $(",[116,2564,1230],{"class":122},[116,2566,1475],{"class":126},[116,2568,2569],{"class":130}," --cached",[116,2571,2572],{"class":130}," --name-only",[116,2574,1481],{"class":130},[116,2576,2577],{"class":126}," .claude\u002Fcommands\u002F",[116,2579,2580],{"class":186},"); ",[116,2582,1834],{"class":182},[116,2584,2585,2588,2590,2593,2596,2598,2601,2603],{"class":118,"line":293},[116,2586,2587],{"class":186},"  basename",[116,2589,190],{"class":182},[116,2591,2592],{"class":186},"$(",[116,2594,2595],{"class":122},"basename",[116,2597,1854],{"class":126},[116,2599,2600],{"class":186},"$file",[116,2602,1860],{"class":126},[116,2604,1942],{"class":186},[116,2606,2607,2609,2611,2614,2616,2619,2621,2624,2626,2628,2630,2633,2635,2637],{"class":118,"line":298},[116,2608,1839],{"class":182},[116,2610,1842],{"class":182},[116,2612,2613],{"class":130}," echo",[116,2615,1854],{"class":126},[116,2617,2618],{"class":186},"$ALLOWED_SKILLS",[116,2620,1860],{"class":126},[116,2622,2623],{"class":182}," |",[116,2625,1845],{"class":122},[116,2627,1848],{"class":130},[116,2629,1854],{"class":126},[116,2631,2632],{"class":186},"$basename",[116,2634,1860],{"class":126},[116,2636,1831],{"class":186},[116,2638,1865],{"class":182},[116,2640,2641,2643,2646,2648],{"class":118,"line":304},[116,2642,1870],{"class":130},[116,2644,2645],{"class":126}," \"ERROR: Unapproved skill: ",[116,2647,2632],{"class":186},[116,2649,2650],{"class":126},"\"\n",[116,2652,2653,2655],{"class":118,"line":310},[116,2654,1883],{"class":130},[116,2656,1886],{"class":130},[116,2658,2659],{"class":118,"line":316},[116,2660,1891],{"class":182},[116,2662,2663],{"class":118,"line":322},[116,2664,1896],{"class":182},[485,2666,2668],{"id":2667},"do-skills-work-the-same-for-every-team-member","Do skills work the same for every team member?",[11,2670,2671],{},"Yes, given the same skill file and the same Claude Code version. The skill defines the behavior; the model follows it deterministically. Minor variation can occur based on Claude model version, but the structure and checklist items remain consistent.",[15,2673,1076],{"id":1075},[62,2675,2676,2681,2687,2692],{},[65,2677,2678,2680],{},[22,2679,1067],{"href":1066}," — build custom skills for your team",[65,2682,2683,2686],{},[22,2684,2685],{"href":31},"15 Best Claude Code Skills"," — browse our curated top picks",[65,2688,2689,2691],{},[22,2690,1035],{"href":1034}," — understand which extension type fits team workflows",[65,2693,2694,2698],{},[22,2695,2697],{"href":480,"rel":2696},[26],"Browse TokRepo Collections"," — discover 500+ ready-to-install skills",[1103,2700,2701],{},"html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}",{"title":112,"searchDepth":280,"depth":280,"links":2703},[2704,2705,2706,2711,2716,2720,2727,2733,2738],{"id":1158,"depth":280,"text":1159},{"id":1181,"depth":280,"text":1182},{"id":1271,"depth":280,"text":1272,"children":2707},[2708,2709,2710],{"id":1278,"depth":287,"text":1279},{"id":1290,"depth":287,"text":1291},{"id":1425,"depth":287,"text":1426},{"id":1509,"depth":280,"text":1510,"children":2712},[2713,2714,2715],{"id":1520,"depth":287,"text":1521},{"id":1535,"depth":287,"text":1536},{"id":1689,"depth":287,"text":1690},{"id":1738,"depth":280,"text":1739,"children":2717},[2718,2719],{"id":1745,"depth":287,"text":1746},{"id":1755,"depth":287,"text":1756},{"id":2023,"depth":280,"text":2024,"children":2721},[2722,2723,2724,2725,2726],{"id":2030,"depth":287,"text":2031},{"id":2056,"depth":287,"text":2057},{"id":2083,"depth":287,"text":2084},{"id":2110,"depth":287,"text":2111},{"id":2137,"depth":287,"text":2138},{"id":2164,"depth":280,"text":2165,"children":2728},[2729,2730,2731,2732],{"id":2171,"depth":287,"text":2172},{"id":2253,"depth":287,"text":2254},{"id":2396,"depth":287,"text":2397},{"id":2428,"depth":287,"text":2429},{"id":1011,"depth":280,"text":1012,"children":2734},[2735,2736,2737],{"id":2512,"depth":287,"text":2513},{"id":2522,"depth":287,"text":2523},{"id":2667,"depth":287,"text":2668},{"id":1075,"depth":280,"text":1076},"use-case","Learn three methods to standardize your team's AI coding workflow with shared agent skills — Git repos, TokRepo collections, and self-hosted registries.","三种方式为开发团队标准化 AI 编程工作流——Git 仓库、TokRepo 集合和自建注册中心。","\u002Fguide\u002Fimages\u002Fagent-skills-for-teams-hero.svg",{},"\u002Fen\u002Fguide\u002Fagent-skills-for-teams",{"title":1150,"description":2740},"en\u002Fguide\u002Fagent-skills-for-teams",[2748,2749,1144,2750],"team","claude-code","workflow","如何为开发团队配置共享 Agent Skills","SZWG_U53IWW55KaM-y2tmJwfjHRtOUFkM6nUK5u4anQ",{"id":2754,"title":2755,"author":6,"body":2756,"category":3670,"description":3671,"descriptionZh":3672,"extension":1135,"image":3673,"meta":3674,"navigation":283,"path":3675,"publishedAt":1139,"readTime":339,"seo":3676,"stem":3677,"tags":3678,"titleZh":3681,"updatedAt":1139,"__hash__":3682},"docs_en\u002Fen\u002Fguide\u002Fbest-claude-code-skills.md","15 Best Claude Code Skills in 2026 — Tested & Ranked",{"type":8,"value":2757,"toc":3639},[2758,2761,2763,2776,2780,2793,2801,2805,2807,2812,2817,2821,2833,2842,2847,2849,2853,2858,2863,2867,2881,2887,2892,2894,2898,2903,2908,2912,2924,2929,2934,2936,2940,2945,2949,2953,2965,2970,2975,2977,2981,2986,2991,2995,3007,3012,3017,3019,3023,3031,3036,3040,3052,3057,3062,3064,3068,3073,3082,3086,3100,3105,3111,3113,3117,3122,3127,3131,3145,3150,3156,3158,3162,3167,3172,3176,3190,3195,3201,3203,3207,3212,3217,3221,3235,3241,3243,3247,3252,3257,3261,3275,3283,3289,3291,3295,3300,3305,3309,3323,3328,3330,3334,3339,3344,3348,3362,3368,3370,3374,3379,3384,3388,3402,3408,3410,3414,3419,3424,3428,3442,3448,3450,3454,3458,3462,3465,3470,3490,3495,3515,3520,3544,3546,3550,3561,3565,3571,3575,3578,3582,3594,3598,3608,3610,3636],[11,2759,2760],{},"Learn how to supercharge Claude Code with 15 tested agent skills that automate code review, debugging, SEO, video production, and team workflows. Each skill below was installed and tested on real projects — we show you exactly what it does, when to use it, and how to install it in under 10 seconds.",[15,2762,1159],{"id":1158},[62,2764,2765,2770,2773],{},[65,2766,2767,1168],{},[22,2768,32],{"href":1166,"rel":2769},[26],[65,2771,2772],{},"A project directory where you want skills active",[65,2774,2775],{},"Basic familiarity with the terminal",[15,2777,2779],{"id":2778},"what-are-agent-skills","What Are Agent Skills?",[11,2781,2782,2783,2785,2786,2788,2789,2792],{},"Agent skills are Markdown files that teach Claude Code how to perform specific tasks. Drop a ",[43,2784,470],{}," file into ",[43,2787,52],{}," or install one from ",[22,2790,482],{"href":480,"rel":2791},[26],", and Claude gains a new capability — no code, no MCP server, no configuration beyond the file itself.",[11,2794,2795,2796,2798,2799,1036],{},"If you're new to skills, read ",[22,2797,1067],{"href":1066}," first. For a comparison with MCP servers and rules, see ",[22,2800,1035],{"href":1034},[15,2802,2804],{"id":2803},"the-15-best-claude-code-skills","The 15 Best Claude Code Skills",[485,2806,2031],{"id":2030},[11,2808,2809,2811],{},[68,2810,598],{}," A complete project management framework inside Claude Code. Breaks large projects into milestones, phases, and tasks — then executes them with atomic commits and verification at each step.",[11,2813,2814,2816],{},[68,2815,604],{}," Solo developers managing complex multi-day projects without losing context across sessions.",[11,2818,2819],{},[68,2820,610],{},[107,2822,2823],{"className":109,"code":2037,"language":111,"meta":112,"style":112},[43,2824,2825],{"__ignoreMap":112},[116,2826,2827,2829,2831],{"class":118,"line":119},[116,2828,512],{"class":122},[116,2830,127],{"class":126},[116,2832,2048],{"class":126},[11,2834,2835,2838,2839,2841],{},[68,2836,2837],{},"Why it ranks #1:"," GSD solves the biggest Claude Code pain point — losing context on large projects. It creates persistent ",[43,2840,738],{}," directories with roadmaps, phase plans, and progress tracking that survive across sessions. 48,600+ GitHub stars speak for themselves.",[11,2843,2844],{},[22,2845,635],{"href":777,"rel":2846},[26],[637,2848],{},[485,2850,2852],{"id":2851},"_2-vercel-skills-agent-skill-ecosystem","2. Vercel Skills — Agent Skill Ecosystem",[11,2854,2855,2857],{},[68,2856,598],{}," A curated collection of 13,000+ community-contributed skills covering Next.js, React, deployment, and full-stack development patterns.",[11,2859,2860,2862],{},[68,2861,604],{}," Frontend and full-stack developers working with the Vercel ecosystem.",[11,2864,2865],{},[68,2866,610],{},[107,2868,2870],{"className":109,"code":2869,"language":111,"meta":112,"style":112},"tokrepo install d1eba6f1-5166-4762-bbbd-cf00f14892b7\n",[43,2871,2872],{"__ignoreMap":112},[116,2873,2874,2876,2878],{"class":118,"line":119},[116,2875,512],{"class":122},[116,2877,127],{"class":126},[116,2879,2880],{"class":126}," d1eba6f1-5166-4762-bbbd-cf00f14892b7\n",[11,2882,2883,2886],{},[68,2884,2885],{},"Why it ranks high:"," The sheer breadth — over 13,000 skills from the community means there's likely one for your exact use case. Think of it as an npm for Claude Code skills.",[11,2888,2889],{},[22,2890,635],{"href":821,"rel":2891},[26],[637,2893],{},[485,2895,2897],{"id":2896},"_3-agent-skill-creator","3. Agent Skill Creator",[11,2899,2900,2902],{},[68,2901,598],{}," A meta-skill that helps you create new skills. Guides you through writing the frontmatter, triggers, instructions, and testing — then optionally publishes to TokRepo.",[11,2904,2905,2907],{},[68,2906,604],{}," Anyone who wants to package their prompts into reusable, shareable skills.",[11,2909,2910],{},[68,2911,610],{},[107,2913,2914],{"className":109,"code":2117,"language":111,"meta":112,"style":112},[43,2915,2916],{"__ignoreMap":112},[116,2917,2918,2920,2922],{"class":118,"line":119},[116,2919,512],{"class":122},[116,2921,127],{"class":126},[116,2923,2128],{"class":126},[11,2925,2926,2928],{},[68,2927,2885],{}," Once you've used 5-10 skills, you'll want to create your own. This skill makes the process structured and repeatable, with 660+ stars on GitHub.",[11,2930,2931],{},[22,2932,635],{"href":2133,"rel":2933},[26],[637,2935],{},[485,2937,2939],{"id":2938},"_4-claude-seo-complete-seo-skill","4. Claude SEO — Complete SEO Skill",[11,2941,2942,2944],{},[68,2943,598],{}," Runs comprehensive SEO audits on your website — keyword research, on-page analysis, content gap detection, technical checks, and competitor comparison.",[11,2946,2947,838],{},[68,2948,604],{},[11,2950,2951],{},[68,2952,610],{},[107,2954,2955],{"className":109,"code":2090,"language":111,"meta":112,"style":112},[43,2956,2957],{"__ignoreMap":112},[116,2958,2959,2961,2963],{"class":118,"line":119},[116,2960,512],{"class":122},[116,2962,127],{"class":126},[116,2964,2101],{"class":126},[11,2966,2967,2969],{},[68,2968,2885],{}," SEO is one of those things most developers know they should do but never get around to. This skill makes it a single command — 4,000+ GitHub stars confirm the demand.",[11,2971,2972],{},[22,2973,635],{"href":2106,"rel":2974},[26],[637,2976],{},[485,2978,2980],{"id":2979},"_5-systematic-debugging-4-phase-root-cause-analysis","5. Systematic Debugging — 4-Phase Root Cause Analysis",[11,2982,2983,2985],{},[68,2984,598],{}," Applies a structured debugging methodology: reproduce → isolate → diagnose → fix. Manages debug sessions with persistent state, checkpoints, and hypothesis tracking.",[11,2987,2988,2990],{},[68,2989,604],{}," Debugging complex bugs that span multiple files or involve race conditions.",[11,2992,2993],{},[68,2994,610],{},[107,2996,2997],{"className":109,"code":2063,"language":111,"meta":112,"style":112},[43,2998,2999],{"__ignoreMap":112},[116,3000,3001,3003,3005],{"class":118,"line":119},[116,3002,512],{"class":122},[116,3004,127],{"class":126},[116,3006,2074],{"class":126},[11,3008,3009,3011],{},[68,3010,2885],{}," Instead of Claude randomly trying fixes, this skill forces a scientific approach. Each hypothesis is logged, tested, and either confirmed or rejected. Saves hours on hard-to-reproduce bugs.",[11,3013,3014],{},[22,3015,635],{"href":2079,"rel":3016},[26],[637,3018],{},[485,3020,3022],{"id":3021},"_6-planning-with-files-persistent-planning-skill","6. Planning with Files — Persistent Planning Skill",[11,3024,3025,3027,3028,3030],{},[68,3026,598],{}," Creates and maintains planning files (",[43,3029,738],{},") for complex tasks. Tracks goals, progress, blockers, and decisions across multiple Claude Code sessions.",[11,3032,3033,3035],{},[68,3034,604],{}," Multi-session projects where you need Claude to \"remember\" what was planned and decided.",[11,3037,3038],{},[68,3039,610],{},[107,3041,3042],{"className":109,"code":2144,"language":111,"meta":112,"style":112},[43,3043,3044],{"__ignoreMap":112},[116,3045,3046,3048,3050],{"class":118,"line":119},[116,3047,512],{"class":122},[116,3049,127],{"class":126},[116,3051,2155],{"class":126},[11,3053,3054,3056],{},[68,3055,2885],{}," Context loss is Claude Code's biggest limitation. This skill fights it by writing plans to disk, so the next session picks up exactly where you left off.",[11,3058,3059],{},[22,3060,635],{"href":2160,"rel":3061},[26],[637,3063],{},[485,3065,3067],{"id":3066},"_7-infisical-secrets-management-skill","7. Infisical — Secrets Management Skill",[11,3069,3070,3072],{},[68,3071,598],{}," Integrates Infisical secrets management into Claude Code. Pull, push, and manage environment variables and secrets without leaving your terminal.",[11,3074,3075,3077,3078,3081],{},[68,3076,604],{}," Teams that use Infisical for secrets and want Claude to handle ",[43,3079,3080],{},".env"," files safely.",[11,3083,3084],{},[68,3085,610],{},[107,3087,3089],{"className":109,"code":3088,"language":111,"meta":112,"style":112},"tokrepo install 41fbcc5c-aac8-4f3e-8305-cf2462809684\n",[43,3090,3091],{"__ignoreMap":112},[116,3092,3093,3095,3097],{"class":118,"line":119},[116,3094,512],{"class":122},[116,3096,127],{"class":126},[116,3098,3099],{"class":126}," 41fbcc5c-aac8-4f3e-8305-cf2462809684\n",[11,3101,3102,3104],{},[68,3103,2885],{}," 25,000+ GitHub stars. Security-critical — this skill ensures Claude never hardcodes secrets and always pulls from the vault.",[11,3106,3107],{},[22,3108,635],{"href":3109,"rel":3110},"https:\u002F\u002Ftokrepo.com\u002Fen\u002Fworkflows\u002F41fbcc5c-aac8-4f3e-8305-cf2462809684",[26],[637,3112],{},[485,3114,3116],{"id":3115},"_8-v0-by-vercel","8. v0 by Vercel",[11,3118,3119,3121],{},[68,3120,598],{}," Generates UI components using Vercel's v0 AI. Describe what you want, get production-ready React\u002FTailwind components back.",[11,3123,3124,3126],{},[68,3125,604],{}," Rapid prototyping of frontend components without opening a browser.",[11,3128,3129],{},[68,3130,610],{},[107,3132,3134],{"className":109,"code":3133,"language":111,"meta":112,"style":112},"tokrepo install 4acf5c24-7eb6-44c9-b4e5-ccd1b5baf460\n",[43,3135,3136],{"__ignoreMap":112},[116,3137,3138,3140,3142],{"class":118,"line":119},[116,3139,512],{"class":122},[116,3141,127],{"class":126},[116,3143,3144],{"class":126}," 4acf5c24-7eb6-44c9-b4e5-ccd1b5baf460\n",[11,3146,3147,3149],{},[68,3148,2885],{}," Combines Claude Code's coding ability with v0's design sense. 8,000+ stars. Great for quickly scaffolding landing pages, dashboards, and forms.",[11,3151,3152],{},[22,3153,635],{"href":3154,"rel":3155},"https:\u002F\u002Ftokrepo.com\u002Fen\u002Fworkflows\u002F4acf5c24-7eb6-44c9-b4e5-ccd1b5baf460",[26],[637,3157],{},[485,3159,3161],{"id":3160},"_9-lark-cli-skill-skill-maker","9. Lark CLI Skill: Skill Maker",[11,3163,3164,3166],{},[68,3165,598],{}," Generates new Lark\u002FFeishu CLI skills by analyzing Lark's OpenAPI spec. Point it at an API endpoint and it creates a complete, working skill.",[11,3168,3169,3171],{},[68,3170,604],{}," Teams using Lark\u002FFeishu who want to automate any Lark API operation from Claude Code.",[11,3173,3174],{},[68,3175,610],{},[107,3177,3179],{"className":109,"code":3178,"language":111,"meta":112,"style":112},"tokrepo install 065a3ce6-0c95-4a75-a009-ae5c90ce5ffa\n",[43,3180,3181],{"__ignoreMap":112},[116,3182,3183,3185,3187],{"class":118,"line":119},[116,3184,512],{"class":122},[116,3186,127],{"class":126},[116,3188,3189],{"class":126}," 065a3ce6-0c95-4a75-a009-ae5c90ce5ffa\n",[11,3191,3192,3194],{},[68,3193,2885],{}," The most viewed skill on TokRepo (64 views). If your team uses Lark, this is the skill that generates all other Lark skills — it's a skill factory.",[11,3196,3197],{},[22,3198,635],{"href":3199,"rel":3200},"https:\u002F\u002Ftokrepo.com\u002Fen\u002Fworkflows\u002F065a3ce6-0c95-4a75-a009-ae5c90ce5ffa",[26],[637,3202],{},[485,3204,3206],{"id":3205},"_10-lark-cli-skill-wiki","10. Lark CLI Skill: Wiki",[11,3208,3209,3211],{},[68,3210,598],{}," Read, create, and manage Lark Wiki pages directly from Claude Code. Search wiki content, update pages, and organize knowledge bases.",[11,3213,3214,3216],{},[68,3215,604],{}," Teams using Lark Wiki as their knowledge base who want to update docs without switching apps.",[11,3218,3219],{},[68,3220,610],{},[107,3222,3224],{"className":109,"code":3223,"language":111,"meta":112,"style":112},"tokrepo install a5eb9344-208c-4032-9cca-2a17f53fc271\n",[43,3225,3226],{"__ignoreMap":112},[116,3227,3228,3230,3232],{"class":118,"line":119},[116,3229,512],{"class":122},[116,3231,127],{"class":126},[116,3233,3234],{"class":126}," a5eb9344-208c-4032-9cca-2a17f53fc271\n",[11,3236,3237],{},[22,3238,635],{"href":3239,"rel":3240},"https:\u002F\u002Ftokrepo.com\u002Fen\u002Fworkflows\u002Fa5eb9344-208c-4032-9cca-2a17f53fc271",[26],[637,3242],{},[485,3244,3246],{"id":3245},"_11-remotion-ai-skill","11. Remotion AI Skill",[11,3248,3249,3251],{},[68,3250,598],{}," Creates programmatic videos using the Remotion framework. Write video compositions, manage timelines, add animations, captions, and voiceovers — all from Claude Code.",[11,3253,3254,3256],{},[68,3255,604],{}," Developers who need to generate videos programmatically (marketing clips, product demos, explainers).",[11,3258,3259],{},[68,3260,610],{},[107,3262,3264],{"className":109,"code":3263,"language":111,"meta":112,"style":112},"tokrepo install 57997ead-c8fa-409c-916f-28bbc0adc8d9\n",[43,3265,3266],{"__ignoreMap":112},[116,3267,3268,3270,3272],{"class":118,"line":119},[116,3269,512],{"class":122},[116,3271,127],{"class":126},[116,3273,3274],{"class":126}," 57997ead-c8fa-409c-916f-28bbc0adc8d9\n",[11,3276,3277,3279,3280,1036],{},[68,3278,2885],{}," Video is usually a non-code workflow. This skill brings it into the terminal — describe what you want, get a rendered ",[43,3281,3282],{},".mp4",[11,3284,3285],{},[22,3286,635],{"href":3287,"rel":3288},"https:\u002F\u002Ftokrepo.com\u002Fen\u002Fworkflows\u002F57997ead-c8fa-409c-916f-28bbc0adc8d9",[26],[637,3290],{},[485,3292,3294],{"id":3293},"_12-web-access-skill","12. Web Access Skill",[11,3296,3297,3299],{},[68,3298,598],{}," Gives Claude Code the ability to fetch and analyze web pages, APIs, and online documentation. Reads URLs, extracts content, and uses it in your current task.",[11,3301,3302,3304],{},[68,3303,604],{}," Research-heavy tasks where you need Claude to check documentation, compare APIs, or analyze competitor pages.",[11,3306,3307],{},[68,3308,610],{},[107,3310,3312],{"className":109,"code":3311,"language":111,"meta":112,"style":112},"tokrepo install 5766b7f4-f62e-4c74-80b4-c2763353b0fd\n",[43,3313,3314],{"__ignoreMap":112},[116,3315,3316,3318,3320],{"class":118,"line":119},[116,3317,512],{"class":122},[116,3319,127],{"class":126},[116,3321,3322],{"class":126}," 5766b7f4-f62e-4c74-80b4-c2763353b0fd\n",[11,3324,3325],{},[22,3326,635],{"href":953,"rel":3327},[26],[637,3329],{},[485,3331,3333],{"id":3332},"_13-lark-cli-skill-events","13. Lark CLI Skill: Events",[11,3335,3336,3338],{},[68,3337,598],{}," Manage Lark calendar events — create, update, list, and delete events programmatically. Useful for scheduling standup meetings or syncing project milestones.",[11,3340,3341,3343],{},[68,3342,604],{}," Teams automating meeting schedules and calendar management through Claude Code.",[11,3345,3346],{},[68,3347,610],{},[107,3349,3351],{"className":109,"code":3350,"language":111,"meta":112,"style":112},"tokrepo install d74aa20d-6376-47bd-8e48-8e9af76504e9\n",[43,3352,3353],{"__ignoreMap":112},[116,3354,3355,3357,3359],{"class":118,"line":119},[116,3356,512],{"class":122},[116,3358,127],{"class":126},[116,3360,3361],{"class":126}," d74aa20d-6376-47bd-8e48-8e9af76504e9\n",[11,3363,3364],{},[22,3365,635],{"href":3366,"rel":3367},"https:\u002F\u002Ftokrepo.com\u002Fen\u002Fworkflows\u002Fd74aa20d-6376-47bd-8e48-8e9af76504e9",[26],[637,3369],{},[485,3371,3373],{"id":3372},"_14-last30days-ai-trend-research","14. Last30Days — AI Trend Research",[11,3375,3376,3378],{},[68,3377,598],{}," Researches what happened in AI over the last 30 days. Aggregates news, releases, and trends from major AI labs and communities.",[11,3380,3381,3383],{},[68,3382,604],{}," Staying current on AI developments without manually reading dozens of newsletters.",[11,3385,3386],{},[68,3387,610],{},[107,3389,3391],{"className":109,"code":3390,"language":111,"meta":112,"style":112},"tokrepo install 6a80876b-83ef-4e61-a402-63624435cdda\n",[43,3392,3393],{"__ignoreMap":112},[116,3394,3395,3397,3399],{"class":118,"line":119},[116,3396,512],{"class":122},[116,3398,127],{"class":126},[116,3400,3401],{"class":126}," 6a80876b-83ef-4e61-a402-63624435cdda\n",[11,3403,3404],{},[22,3405,635],{"href":3406,"rel":3407},"https:\u002F\u002Ftokrepo.com\u002Fen\u002Fworkflows\u002F6a80876b-83ef-4e61-a402-63624435cdda",[26],[637,3409],{},[485,3411,3413],{"id":3412},"_15-agent-skills-standard","15. Agent Skills Standard",[11,3415,3416,3418],{},[68,3417,598],{}," Defines the universal SKILL.md format — frontmatter fields, trigger patterns, instruction structure, and testing conventions. A reference spec for building interoperable skills.",[11,3420,3421,3423],{},[68,3422,604],{}," Skill authors who want their skills to work across Claude Code, Codex CLI, and Gemini CLI.",[11,3425,3426],{},[68,3427,610],{},[107,3429,3431],{"className":109,"code":3430,"language":111,"meta":112,"style":112},"tokrepo install 1a1292f5-c88b-4eb5-b7dd-a3bf7bb29ee8\n",[43,3432,3433],{"__ignoreMap":112},[116,3434,3435,3437,3439],{"class":118,"line":119},[116,3436,512],{"class":122},[116,3438,127],{"class":126},[116,3440,3441],{"class":126}," 1a1292f5-c88b-4eb5-b7dd-a3bf7bb29ee8\n",[11,3443,3444],{},[22,3445,635],{"href":3446,"rel":3447},"https:\u002F\u002Ftokrepo.com\u002Fen\u002Fworkflows\u002F1a1292f5-c88b-4eb5-b7dd-a3bf7bb29ee8",[26],[637,3449],{},[15,3451,3453],{"id":3452},"quick-comparison-table","Quick Comparison Table",[965,3455],{":headers":3456,":rows":3457},"[\"Skill\",\"Best For\",\"Complexity\",\"GitHub Stars\"]","[[\"GSD\",\"Project management\",\"Medium\",\"48,600+\"],[\"Vercel Skills\",\"Frontend ecosystem\",\"Low\",\"13,000+\"],[\"Skill Creator\",\"Building new skills\",\"Low\",\"660+\"],[\"Claude SEO\",\"SEO audits\",\"Low\",\"4,000+\"],[\"Systematic Debugging\",\"Hard bugs\",\"Medium\",\"—\"],[\"Planning with Files\",\"Multi-session work\",\"Low\",\"—\"],[\"Infisical\",\"Secrets management\",\"Medium\",\"25,000+\"],[\"v0 by Vercel\",\"UI prototyping\",\"Low\",\"8,000+\"],[\"Lark Skill Maker\",\"Lark API automation\",\"Medium\",\"—\"],[\"Lark Wiki\",\"Knowledge base\",\"Low\",\"—\"],[\"Remotion AI\",\"Video production\",\"High\",\"—\"],[\"Web Access\",\"Web research\",\"Low\",\"—\"],[\"Lark Events\",\"Calendar automation\",\"Low\",\"—\"],[\"Last30Days\",\"AI trend tracking\",\"Low\",\"—\"],[\"Skills Standard\",\"Skill authoring spec\",\"Low\",\"—\"]]",[15,3459,3461],{"id":3460},"how-to-combine-skills","How to Combine Skills",[11,3463,3464],{},"The real power comes from stacking skills together. Here are three proven combos:",[11,3466,3467],{},[68,3468,3469],{},"The Solo Dev Stack:",[230,3471,3472,3478,3484],{},[65,3473,3474,3477],{},[68,3475,3476],{},"GSD"," for project planning and tracking",[65,3479,3480,3483],{},[68,3481,3482],{},"Systematic Debugging"," for when things break",[65,3485,3486,3489],{},[68,3487,3488],{},"Planning with Files"," for cross-session memory",[11,3491,3492],{},[68,3493,3494],{},"The Frontend Stack:",[230,3496,3497,3503,3509],{},[65,3498,3499,3502],{},[68,3500,3501],{},"Vercel Skills"," for framework patterns",[65,3504,3505,3508],{},[68,3506,3507],{},"v0 by Vercel"," for UI component generation",[65,3510,3511,3514],{},[68,3512,3513],{},"Claude SEO"," for launch optimization",[11,3516,3517],{},[68,3518,3519],{},"The Team Stack:",[230,3521,3522,3528,3538],{},[65,3523,3524,3527],{},[68,3525,3526],{},"Infisical"," for secrets management",[65,3529,3530,3533,3534,3537],{},[68,3531,3532],{},"Lark Skill Maker"," + ",[68,3535,3536],{},"Lark Wiki"," for team communication",[65,3539,3540,3543],{},[68,3541,3542],{},"Agent Skill Creator"," for building team-specific skills",[15,3545,1012],{"id":1011},[485,3547,3549],{"id":3548},"how-do-i-install-a-claude-code-skill","How do I install a Claude Code skill?",[11,3551,3552,3553,3556,3557,3560],{},"Run ",[43,3554,3555],{},"tokrepo install \u003Cuuid>"," in your terminal, or manually copy the skill's Markdown content into ",[43,3558,3559],{},".claude\u002Fcommands\u002Fyour-skill-name.md",". Claude Code auto-discovers skills in that directory.",[485,3562,3564],{"id":3563},"can-i-use-multiple-skills-at-once","Can I use multiple skills at once?",[11,3566,3567,3568,3570],{},"Yes. Claude Code loads all skills from ",[43,3569,52],{}," at startup. You can have 10, 20, or even 50 skills active — they only consume context when invoked via their triggers.",[485,3572,3574],{"id":3573},"are-these-skills-free","Are these skills free?",[11,3576,3577],{},"All 15 skills listed here are free and open source. TokRepo is a free registry — you can search, install, and publish skills at no cost.",[485,3579,3581],{"id":3580},"do-skills-work-with-codex-cli-or-gemini-cli","Do skills work with Codex CLI or Gemini CLI?",[11,3583,3584,3585,3589,3590,3593],{},"Most skills work across agents with minor adaptations. The ",[22,3586,3588],{"href":3446,"rel":3587},[26],"Agent Skills Standard"," defines a universal format. See our ",[22,3591,3592],{"href":1034},"Skills vs MCP vs Rules guide"," for cross-agent compatibility details.",[485,3595,3597],{"id":3596},"how-do-i-create-my-own-skill","How do I create my own skill?",[11,3599,3600,3601,3603,3604,3607],{},"Follow our step-by-step tutorial: ",[22,3602,1067],{"href":1066},". Or install the ",[22,3605,3542],{"href":2133,"rel":3606},[26]," and let Claude guide you through the process.",[15,3609,1076],{"id":1075},[62,3611,3612,3617,3624,3629],{},[65,3613,3614,3616],{},[22,3615,1067],{"href":1066}," — build your own custom skill",[65,3618,3619,3623],{},[22,3620,3622],{"href":480,"rel":3621},[26],"Browse 500+ skills on TokRepo"," — find skills for your specific stack",[65,3625,3626,3628],{},[22,3627,1035],{"href":1034}," — understand which extension type fits your needs",[65,3630,3631,3635],{},[22,3632,3634],{"href":3633},"\u002Fguide\u002Fbest-mcp-servers","Best MCP Servers for AI Coding"," — complement skills with MCP integrations",[1103,3637,3638],{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":112,"searchDepth":280,"depth":280,"links":3640},[3641,3642,3643,3660,3661,3662,3669],{"id":1158,"depth":280,"text":1159},{"id":2778,"depth":280,"text":2779},{"id":2803,"depth":280,"text":2804,"children":3644},[3645,3646,3647,3648,3649,3650,3651,3652,3653,3654,3655,3656,3657,3658,3659],{"id":2030,"depth":287,"text":2031},{"id":2851,"depth":287,"text":2852},{"id":2896,"depth":287,"text":2897},{"id":2938,"depth":287,"text":2939},{"id":2979,"depth":287,"text":2980},{"id":3021,"depth":287,"text":3022},{"id":3066,"depth":287,"text":3067},{"id":3115,"depth":287,"text":3116},{"id":3160,"depth":287,"text":3161},{"id":3205,"depth":287,"text":3206},{"id":3245,"depth":287,"text":3246},{"id":3293,"depth":287,"text":3294},{"id":3332,"depth":287,"text":3333},{"id":3372,"depth":287,"text":3373},{"id":3412,"depth":287,"text":3413},{"id":3452,"depth":280,"text":3453},{"id":3460,"depth":280,"text":3461},{"id":1011,"depth":280,"text":1012,"children":3663},[3664,3665,3666,3667,3668],{"id":3548,"depth":287,"text":3549},{"id":3563,"depth":287,"text":3564},{"id":3573,"depth":287,"text":3574},{"id":3580,"depth":287,"text":3581},{"id":3596,"depth":287,"text":3597},{"id":1075,"depth":280,"text":1076},"comparison","Curated list of the 15 best agent skills for Claude Code. Each skill tested on real projects with install commands and usage examples.","精选 15 个最佳 Claude Code Agent Skill，每个都经过真实项目测试，附安装命令和使用示例。","\u002Fguide\u002Fimages\u002Fbest-claude-code-skills-hero.svg",{},"\u002Fen\u002Fguide\u002Fbest-claude-code-skills",{"title":2755,"description":3671},"en\u002Fguide\u002Fbest-claude-code-skills",[2749,1144,3679,3680],"best-of","productivity","2026 年 15 个最佳 Claude Code Skill 实测推荐","sfZwUVSHaLfR1nXukX8YaGxnkjQWR11ccEvQ6kqgyuY",{"id":3684,"title":3685,"author":6,"body":3686,"category":3670,"description":5453,"descriptionZh":5454,"extension":1135,"image":5455,"meta":5456,"navigation":283,"path":5457,"publishedAt":1139,"readTime":327,"seo":5458,"stem":5459,"tags":5460,"titleZh":5462,"updatedAt":1139,"__hash__":5463},"docs_en\u002Fen\u002Fguide\u002Fbest-mcp-servers.md","12 Best MCP Servers for AI Coding Agents (2026 Guide)",{"type":8,"value":3687,"toc":5426},[3688,3691,3693,3715,3719,3725,3736,3740,3744,3749,3754,3758,3849,3854,3860,3862,3866,3871,3876,3880,3959,3964,3970,3972,3976,3981,3986,3990,4069,4072,4077,4083,4085,4089,4101,4106,4110,4189,4197,4203,4205,4209,4214,4219,4223,4314,4331,4336,4342,4344,4348,4353,4358,4362,4441,4449,4455,4457,4461,4466,4471,4475,4566,4571,4577,4579,4583,4588,4593,4597,4676,4686,4691,4697,4699,4703,4708,4713,4717,4808,4813,4819,4821,4825,4830,4835,4839,4930,4935,4941,4943,4947,4952,4957,4961,5027,5032,5038,5040,5044,5049,5054,5058,5123,5126,5144,5152,5158,5160,5162,5166,5170,5177,5342,5345,5347,5351,5356,5360,5368,5372,5375,5379,5396,5398,5423],[11,3689,3690],{},"Learn how to extend Claude Code with 12 tested MCP servers that give your AI agent direct access to GitHub repos, databases, file systems, payment APIs, and browser automation — each one installed and verified on real projects.",[15,3692,1159],{"id":1158},[62,3694,3695,3701,3712],{},[65,3696,3697,3700],{},[22,3698,32],{"href":1166,"rel":3699},[26]," installed (v2.1+) with MCP support enabled",[65,3702,3703,3704,3707,3708,3711],{},"A ",[43,3705,3706],{},"~\u002F.claude\u002Fsettings.json"," or project-level ",[43,3709,3710],{},".claude\u002Fsettings.json"," file for MCP configuration",[65,3713,3714],{},"The runtime each server requires (Node.js 20+, Python 3.11+, or Docker — noted per server below)",[15,3716,3718],{"id":3717},"what-are-mcp-servers","What Are MCP Servers?",[11,3720,3721,3722,3724],{},"MCP (Model Context Protocol) servers are lightweight processes that expose tools, resources, and prompts to AI coding agents over a standardized JSON-RPC protocol. Unlike ",[22,3723,1177],{"href":1034}," — which are pure Markdown instructions — MCP servers run actual code and can interact with external services: databases, APIs, browsers, and file systems.",[11,3726,3727,3728,3733,3734,1036],{},"Anthropic publishes the ",[22,3729,3732],{"href":3730,"rel":3731},"https:\u002F\u002Fgithub.com\u002Fmodelcontextprotocol\u002Fspecification",[26],"MCP specification on GitHub",", and a growing ecosystem of open-source servers already covers the most common developer workflows. For a deeper comparison of when to use skills, MCP servers, or rules, read our ",[22,3735,3592],{"href":1034},[15,3737,3739],{"id":3738},"the-12-best-mcp-servers","The 12 Best MCP Servers",[485,3741,3743],{"id":3742},"_1-github-mcp-server","1. GitHub MCP Server",[11,3745,3746,3748],{},[68,3747,598],{}," Full GitHub integration — create issues, open PRs, review code, search repos, manage branches, and read file contents directly from Claude Code.",[11,3750,3751,3753],{},[68,3752,604],{}," Teams that live in GitHub and want their AI agent to participate in the pull request workflow without copy-pasting URLs.",[11,3755,3756],{},[68,3757,610],{},[107,3759,3761],{"className":375,"code":3760,"language":377,"meta":112,"style":112},"{\n  \"mcpServers\": {\n    \"github\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@modelcontextprotocol\u002Fserver-github\"],\n      \"env\": {\n        \"GITHUB_PERSONAL_ACCESS_TOKEN\": \"\u003Cyour-token>\"\n      }\n    }\n  }\n}\n",[43,3762,3763,3767,3775,3782,3794,3814,3821,3831,3836,3840,3845],{"__ignoreMap":112},[116,3764,3765],{"class":118,"line":119},[116,3766,384],{"class":186},[116,3768,3769,3772],{"class":118,"line":280},[116,3770,3771],{"class":130},"  \"mcpServers\"",[116,3773,3774],{"class":186},": {\n",[116,3776,3777,3780],{"class":118,"line":287},[116,3778,3779],{"class":130},"    \"github\"",[116,3781,3774],{"class":186},[116,3783,3784,3787,3789,3792],{"class":118,"line":293},[116,3785,3786],{"class":130},"      \"command\"",[116,3788,405],{"class":186},[116,3790,3791],{"class":126},"\"npx\"",[116,3793,411],{"class":186},[116,3795,3796,3799,3802,3805,3808,3811],{"class":118,"line":298},[116,3797,3798],{"class":130},"      \"args\"",[116,3800,3801],{"class":186},": [",[116,3803,3804],{"class":126},"\"-y\"",[116,3806,3807],{"class":186},", ",[116,3809,3810],{"class":126},"\"@modelcontextprotocol\u002Fserver-github\"",[116,3812,3813],{"class":186},"],\n",[116,3815,3816,3819],{"class":118,"line":304},[116,3817,3818],{"class":130},"      \"env\"",[116,3820,3774],{"class":186},[116,3822,3823,3826,3828],{"class":118,"line":310},[116,3824,3825],{"class":130},"        \"GITHUB_PERSONAL_ACCESS_TOKEN\"",[116,3827,405],{"class":186},[116,3829,3830],{"class":126},"\"\u003Cyour-token>\"\n",[116,3832,3833],{"class":118,"line":316},[116,3834,3835],{"class":186},"      }\n",[116,3837,3838],{"class":118,"line":322},[116,3839,454],{"class":186},[116,3841,3842],{"class":118,"line":327},[116,3843,3844],{"class":186},"  }\n",[116,3846,3847],{"class":118,"line":333},[116,3848,464],{"class":186},[11,3850,3851,3853],{},[68,3852,2837],{}," GitHub is the center of most development workflows. This server lets Claude create branches, push commits, open PRs, and respond to review comments — turning it into a true team member. It supports 30+ tools covering repos, issues, PRs, and search.",[11,3855,3856],{},[22,3857,635],{"href":3858,"rel":3859},"https:\u002F\u002Ftokrepo.com\u002Fen\u002Fmcp-servers\u002Fd6e7f6a5",[26],[637,3861],{},[485,3863,3865],{"id":3864},"_2-postgresql-mcp-server","2. PostgreSQL MCP Server",[11,3867,3868,3870],{},[68,3869,598],{}," Connects Claude Code directly to your PostgreSQL database. Run read-only queries, inspect schemas, list tables, and analyze data — all through natural language.",[11,3872,3873,3875],{},[68,3874,604],{}," Backend developers who need to explore database schemas, write queries, or debug data issues without switching to a SQL client.",[11,3877,3878],{},[68,3879,610],{},[107,3881,3883],{"className":375,"code":3882,"language":377,"meta":112,"style":112},"{\n  \"mcpServers\": {\n    \"postgres\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@modelcontextprotocol\u002Fserver-postgres\"],\n      \"env\": {\n        \"POSTGRES_CONNECTION_STRING\": \"postgresql:\u002F\u002Fuser:pass@localhost:5432\u002Fmydb\"\n      }\n    }\n  }\n}\n",[43,3884,3885,3889,3895,3902,3912,3927,3933,3943,3947,3951,3955],{"__ignoreMap":112},[116,3886,3887],{"class":118,"line":119},[116,3888,384],{"class":186},[116,3890,3891,3893],{"class":118,"line":280},[116,3892,3771],{"class":130},[116,3894,3774],{"class":186},[116,3896,3897,3900],{"class":118,"line":287},[116,3898,3899],{"class":130},"    \"postgres\"",[116,3901,3774],{"class":186},[116,3903,3904,3906,3908,3910],{"class":118,"line":293},[116,3905,3786],{"class":130},[116,3907,405],{"class":186},[116,3909,3791],{"class":126},[116,3911,411],{"class":186},[116,3913,3914,3916,3918,3920,3922,3925],{"class":118,"line":298},[116,3915,3798],{"class":130},[116,3917,3801],{"class":186},[116,3919,3804],{"class":126},[116,3921,3807],{"class":186},[116,3923,3924],{"class":126},"\"@modelcontextprotocol\u002Fserver-postgres\"",[116,3926,3813],{"class":186},[116,3928,3929,3931],{"class":118,"line":304},[116,3930,3818],{"class":130},[116,3932,3774],{"class":186},[116,3934,3935,3938,3940],{"class":118,"line":310},[116,3936,3937],{"class":130},"        \"POSTGRES_CONNECTION_STRING\"",[116,3939,405],{"class":186},[116,3941,3942],{"class":126},"\"postgresql:\u002F\u002Fuser:pass@localhost:5432\u002Fmydb\"\n",[116,3944,3945],{"class":118,"line":316},[116,3946,3835],{"class":186},[116,3948,3949],{"class":118,"line":322},[116,3950,454],{"class":186},[116,3952,3953],{"class":118,"line":327},[116,3954,3844],{"class":186},[116,3956,3957],{"class":118,"line":333},[116,3958,464],{"class":186},[11,3960,3961,3963],{},[68,3962,2885],{}," Database work is one of the most common developer tasks. Having Claude query your schema, suggest indexes, and write optimized SQL inline saves constant context-switching between terminal and database GUI.",[11,3965,3966],{},[22,3967,635],{"href":3968,"rel":3969},"https:\u002F\u002Ftokrepo.com\u002Fen\u002Fmcp-servers\u002Ffaa28c56",[26],[637,3971],{},[485,3973,3975],{"id":3974},"_3-filesystem-mcp-server","3. Filesystem MCP Server",[11,3977,3978,3980],{},[68,3979,598],{}," Gives Claude Code controlled access to read, write, search, and manage files on your local filesystem. Supports directory listing, file creation, moving, and searching with glob patterns.",[11,3982,3983,3985],{},[68,3984,604],{}," Projects where Claude needs to operate on files outside the current working directory — config files, logs, multi-repo setups.",[11,3987,3988],{},[68,3989,610],{},[107,3991,3993],{"className":375,"code":3992,"language":377,"meta":112,"style":112},"{\n  \"mcpServers\": {\n    \"filesystem\": {\n      \"command\": \"npx\",\n      \"args\": [\n        \"-y\", \"@modelcontextprotocol\u002Fserver-filesystem\",\n        \"\u002FUsers\u002Fyou\u002Fprojects\",\n        \"\u002FUsers\u002Fyou\u002Fconfigs\"\n      ]\n    }\n  }\n}\n",[43,3994,3995,3999,4005,4012,4022,4028,4040,4047,4052,4057,4061,4065],{"__ignoreMap":112},[116,3996,3997],{"class":118,"line":119},[116,3998,384],{"class":186},[116,4000,4001,4003],{"class":118,"line":280},[116,4002,3771],{"class":130},[116,4004,3774],{"class":186},[116,4006,4007,4010],{"class":118,"line":287},[116,4008,4009],{"class":130},"    \"filesystem\"",[116,4011,3774],{"class":186},[116,4013,4014,4016,4018,4020],{"class":118,"line":293},[116,4015,3786],{"class":130},[116,4017,405],{"class":186},[116,4019,3791],{"class":126},[116,4021,411],{"class":186},[116,4023,4024,4026],{"class":118,"line":298},[116,4025,3798],{"class":130},[116,4027,392],{"class":186},[116,4029,4030,4033,4035,4038],{"class":118,"line":304},[116,4031,4032],{"class":126},"        \"-y\"",[116,4034,3807],{"class":186},[116,4036,4037],{"class":126},"\"@modelcontextprotocol\u002Fserver-filesystem\"",[116,4039,411],{"class":186},[116,4041,4042,4045],{"class":118,"line":310},[116,4043,4044],{"class":126},"        \"\u002FUsers\u002Fyou\u002Fprojects\"",[116,4046,411],{"class":186},[116,4048,4049],{"class":118,"line":316},[116,4050,4051],{"class":126},"        \"\u002FUsers\u002Fyou\u002Fconfigs\"\n",[116,4053,4054],{"class":118,"line":322},[116,4055,4056],{"class":186},"      ]\n",[116,4058,4059],{"class":118,"line":327},[116,4060,454],{"class":186},[116,4062,4063],{"class":118,"line":333},[116,4064,3844],{"class":186},[116,4066,4067],{"class":118,"line":339},[116,4068,464],{"class":186},[11,4070,4071],{},"You specify which directories the server can access as positional arguments. Claude cannot read files outside these paths.",[11,4073,4074,4076],{},[68,4075,2885],{}," It is the simplest MCP server to set up and solves a real pain point — Claude Code's built-in file access is limited to the project root. This server extends reach to any directory you allow.",[11,4078,4079],{},[22,4080,635],{"href":4081,"rel":4082},"https:\u002F\u002Ftokrepo.com\u002Fen\u002Fmcp-servers\u002F92b8baf2",[26],[637,4084],{},[485,4086,4088],{"id":4087},"_4-sqlite-mcp-server","4. SQLite MCP Server",[11,4090,4091,4093,4094,568,4097,4100],{},[68,4092,598],{}," Connects Claude to a local SQLite database file. Run queries, create tables, inspect schemas, and analyze data stored in ",[43,4095,4096],{},".sqlite",[43,4098,4099],{},".db"," files.",[11,4102,4103,4105],{},[68,4104,604],{}," Local development, prototyping, and working with embedded databases — especially mobile app backends and Electron apps.",[11,4107,4108],{},[68,4109,610],{},[107,4111,4113],{"className":375,"code":4112,"language":377,"meta":112,"style":112},"{\n  \"mcpServers\": {\n    \"sqlite\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@modelcontextprotocol\u002Fserver-sqlite\"],\n      \"env\": {\n        \"SQLITE_DB_PATH\": \"\u002Fpath\u002Fto\u002Fyour\u002Fdatabase.sqlite\"\n      }\n    }\n  }\n}\n",[43,4114,4115,4119,4125,4132,4142,4157,4163,4173,4177,4181,4185],{"__ignoreMap":112},[116,4116,4117],{"class":118,"line":119},[116,4118,384],{"class":186},[116,4120,4121,4123],{"class":118,"line":280},[116,4122,3771],{"class":130},[116,4124,3774],{"class":186},[116,4126,4127,4130],{"class":118,"line":287},[116,4128,4129],{"class":130},"    \"sqlite\"",[116,4131,3774],{"class":186},[116,4133,4134,4136,4138,4140],{"class":118,"line":293},[116,4135,3786],{"class":130},[116,4137,405],{"class":186},[116,4139,3791],{"class":126},[116,4141,411],{"class":186},[116,4143,4144,4146,4148,4150,4152,4155],{"class":118,"line":298},[116,4145,3798],{"class":130},[116,4147,3801],{"class":186},[116,4149,3804],{"class":126},[116,4151,3807],{"class":186},[116,4153,4154],{"class":126},"\"@modelcontextprotocol\u002Fserver-sqlite\"",[116,4156,3813],{"class":186},[116,4158,4159,4161],{"class":118,"line":304},[116,4160,3818],{"class":130},[116,4162,3774],{"class":186},[116,4164,4165,4168,4170],{"class":118,"line":310},[116,4166,4167],{"class":130},"        \"SQLITE_DB_PATH\"",[116,4169,405],{"class":186},[116,4171,4172],{"class":126},"\"\u002Fpath\u002Fto\u002Fyour\u002Fdatabase.sqlite\"\n",[116,4174,4175],{"class":118,"line":316},[116,4176,3835],{"class":186},[116,4178,4179],{"class":118,"line":322},[116,4180,454],{"class":186},[116,4182,4183],{"class":118,"line":327},[116,4184,3844],{"class":186},[116,4186,4187],{"class":118,"line":333},[116,4188,464],{"class":186},[11,4190,4191,4193,4194,4196],{},[68,4192,2885],{}," SQLite is everywhere — mobile apps, desktop tools, browser extensions, IoT devices. This server lets Claude inspect and query any ",[43,4195,4099],{}," file without installing a separate tool. Perfect for rapid prototyping with zero infrastructure.",[11,4198,4199],{},[22,4200,635],{"href":4201,"rel":4202},"https:\u002F\u002Ftokrepo.com\u002Fen\u002Fmcp-servers\u002Ff67139b3",[26],[637,4204],{},[485,4206,4208],{"id":4207},"_5-slack-mcp-server","5. Slack MCP Server",[11,4210,4211,4213],{},[68,4212,598],{}," Read messages, post to channels, search conversation history, list channels, and manage threads — all from Claude Code.",[11,4215,4216,4218],{},[68,4217,604],{}," DevOps and on-call workflows where you need Claude to search Slack for context about an incident, or post deploy notifications automatically.",[11,4220,4221],{},[68,4222,610],{},[107,4224,4226],{"className":375,"code":4225,"language":377,"meta":112,"style":112},"{\n  \"mcpServers\": {\n    \"slack\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@modelcontextprotocol\u002Fserver-slack\"],\n      \"env\": {\n        \"SLACK_BOT_TOKEN\": \"xoxb-your-bot-token\",\n        \"SLACK_TEAM_ID\": \"T0123456789\"\n      }\n    }\n  }\n}\n",[43,4227,4228,4232,4238,4245,4255,4270,4276,4288,4298,4302,4306,4310],{"__ignoreMap":112},[116,4229,4230],{"class":118,"line":119},[116,4231,384],{"class":186},[116,4233,4234,4236],{"class":118,"line":280},[116,4235,3771],{"class":130},[116,4237,3774],{"class":186},[116,4239,4240,4243],{"class":118,"line":287},[116,4241,4242],{"class":130},"    \"slack\"",[116,4244,3774],{"class":186},[116,4246,4247,4249,4251,4253],{"class":118,"line":293},[116,4248,3786],{"class":130},[116,4250,405],{"class":186},[116,4252,3791],{"class":126},[116,4254,411],{"class":186},[116,4256,4257,4259,4261,4263,4265,4268],{"class":118,"line":298},[116,4258,3798],{"class":130},[116,4260,3801],{"class":186},[116,4262,3804],{"class":126},[116,4264,3807],{"class":186},[116,4266,4267],{"class":126},"\"@modelcontextprotocol\u002Fserver-slack\"",[116,4269,3813],{"class":186},[116,4271,4272,4274],{"class":118,"line":304},[116,4273,3818],{"class":130},[116,4275,3774],{"class":186},[116,4277,4278,4281,4283,4286],{"class":118,"line":310},[116,4279,4280],{"class":130},"        \"SLACK_BOT_TOKEN\"",[116,4282,405],{"class":186},[116,4284,4285],{"class":126},"\"xoxb-your-bot-token\"",[116,4287,411],{"class":186},[116,4289,4290,4293,4295],{"class":118,"line":316},[116,4291,4292],{"class":130},"        \"SLACK_TEAM_ID\"",[116,4294,405],{"class":186},[116,4296,4297],{"class":126},"\"T0123456789\"\n",[116,4299,4300],{"class":118,"line":322},[116,4301,3835],{"class":186},[116,4303,4304],{"class":118,"line":327},[116,4305,454],{"class":186},[116,4307,4308],{"class":118,"line":333},[116,4309,3844],{"class":186},[116,4311,4312],{"class":118,"line":339},[116,4313,464],{"class":186},[11,4315,4316,4317,3807,4320,3807,4323,4326,4327,4330],{},"You need a Slack app with ",[43,4318,4319],{},"channels:history",[43,4321,4322],{},"channels:read",[43,4324,4325],{},"chat:write",", and ",[43,4328,4329],{},"users:read"," scopes.",[11,4332,4333,4335],{},[68,4334,2885],{}," Slack is where context lives in most teams. Instead of manually searching for \"what did the backend team say about that migration?\", Claude searches for you and incorporates the answer into its response.",[11,4337,4338],{},[22,4339,635],{"href":4340,"rel":4341},"https:\u002F\u002Ftokrepo.com\u002Fen\u002Fmcp-servers\u002Fd5a6ae87",[26],[637,4343],{},[485,4345,4347],{"id":4346},"_6-puppeteer-mcp-server","6. Puppeteer MCP Server",[11,4349,4350,4352],{},[68,4351,598],{}," Controls a headless Chrome browser. Navigate to pages, click elements, fill forms, take screenshots, extract DOM content, and run JavaScript in the browser context.",[11,4354,4355,4357],{},[68,4356,604],{}," E2E testing, web scraping, screenshot comparison, and debugging frontend issues that only reproduce in a real browser.",[11,4359,4360],{},[68,4361,610],{},[107,4363,4365],{"className":375,"code":4364,"language":377,"meta":112,"style":112},"{\n  \"mcpServers\": {\n    \"puppeteer\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@modelcontextprotocol\u002Fserver-puppeteer\"],\n      \"env\": {\n        \"PUPPETEER_HEADLESS\": \"true\"\n      }\n    }\n  }\n}\n",[43,4366,4367,4371,4377,4384,4394,4409,4415,4425,4429,4433,4437],{"__ignoreMap":112},[116,4368,4369],{"class":118,"line":119},[116,4370,384],{"class":186},[116,4372,4373,4375],{"class":118,"line":280},[116,4374,3771],{"class":130},[116,4376,3774],{"class":186},[116,4378,4379,4382],{"class":118,"line":287},[116,4380,4381],{"class":130},"    \"puppeteer\"",[116,4383,3774],{"class":186},[116,4385,4386,4388,4390,4392],{"class":118,"line":293},[116,4387,3786],{"class":130},[116,4389,405],{"class":186},[116,4391,3791],{"class":126},[116,4393,411],{"class":186},[116,4395,4396,4398,4400,4402,4404,4407],{"class":118,"line":298},[116,4397,3798],{"class":130},[116,4399,3801],{"class":186},[116,4401,3804],{"class":126},[116,4403,3807],{"class":186},[116,4405,4406],{"class":126},"\"@modelcontextprotocol\u002Fserver-puppeteer\"",[116,4408,3813],{"class":186},[116,4410,4411,4413],{"class":118,"line":304},[116,4412,3818],{"class":130},[116,4414,3774],{"class":186},[116,4416,4417,4420,4422],{"class":118,"line":310},[116,4418,4419],{"class":130},"        \"PUPPETEER_HEADLESS\"",[116,4421,405],{"class":186},[116,4423,4424],{"class":126},"\"true\"\n",[116,4426,4427],{"class":118,"line":316},[116,4428,3835],{"class":186},[116,4430,4431],{"class":118,"line":322},[116,4432,454],{"class":186},[116,4434,4435],{"class":118,"line":327},[116,4436,3844],{"class":186},[116,4438,4439],{"class":118,"line":333},[116,4440,464],{"class":186},[11,4442,4443,4445,4446,4448],{},[68,4444,2885],{}," This is the server that gives Claude \"eyes.\" It can navigate to your staging site, take a screenshot, compare it to the design, and tell you what is off — all without you opening a browser. Combined with ",[22,4447,1177],{"href":31}," for test writing, it creates a powerful QA loop.",[11,4450,4451],{},[22,4452,635],{"href":4453,"rel":4454},"https:\u002F\u002Ftokrepo.com\u002Fen\u002Fmcp-servers\u002Fefa97531",[26],[637,4456],{},[485,4458,4460],{"id":4459},"_7-sentry-mcp-server","7. Sentry MCP Server",[11,4462,4463,4465],{},[68,4464,598],{}," Pulls error data from Sentry — list recent issues, get stack traces, view event details, search by error message, and check release health.",[11,4467,4468,4470],{},[68,4469,604],{}," On-call developers who want Claude to analyze production errors, correlate stack traces with code, and suggest fixes automatically.",[11,4472,4473],{},[68,4474,610],{},[107,4476,4478],{"className":375,"code":4477,"language":377,"meta":112,"style":112},"{\n  \"mcpServers\": {\n    \"sentry\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@modelcontextprotocol\u002Fserver-sentry\"],\n      \"env\": {\n        \"SENTRY_AUTH_TOKEN\": \"\u003Cyour-sentry-auth-token>\",\n        \"SENTRY_ORG\": \"your-org-slug\"\n      }\n    }\n  }\n}\n",[43,4479,4480,4484,4490,4497,4507,4522,4528,4540,4550,4554,4558,4562],{"__ignoreMap":112},[116,4481,4482],{"class":118,"line":119},[116,4483,384],{"class":186},[116,4485,4486,4488],{"class":118,"line":280},[116,4487,3771],{"class":130},[116,4489,3774],{"class":186},[116,4491,4492,4495],{"class":118,"line":287},[116,4493,4494],{"class":130},"    \"sentry\"",[116,4496,3774],{"class":186},[116,4498,4499,4501,4503,4505],{"class":118,"line":293},[116,4500,3786],{"class":130},[116,4502,405],{"class":186},[116,4504,3791],{"class":126},[116,4506,411],{"class":186},[116,4508,4509,4511,4513,4515,4517,4520],{"class":118,"line":298},[116,4510,3798],{"class":130},[116,4512,3801],{"class":186},[116,4514,3804],{"class":126},[116,4516,3807],{"class":186},[116,4518,4519],{"class":126},"\"@modelcontextprotocol\u002Fserver-sentry\"",[116,4521,3813],{"class":186},[116,4523,4524,4526],{"class":118,"line":304},[116,4525,3818],{"class":130},[116,4527,3774],{"class":186},[116,4529,4530,4533,4535,4538],{"class":118,"line":310},[116,4531,4532],{"class":130},"        \"SENTRY_AUTH_TOKEN\"",[116,4534,405],{"class":186},[116,4536,4537],{"class":126},"\"\u003Cyour-sentry-auth-token>\"",[116,4539,411],{"class":186},[116,4541,4542,4545,4547],{"class":118,"line":316},[116,4543,4544],{"class":130},"        \"SENTRY_ORG\"",[116,4546,405],{"class":186},[116,4548,4549],{"class":126},"\"your-org-slug\"\n",[116,4551,4552],{"class":118,"line":322},[116,4553,3835],{"class":186},[116,4555,4556],{"class":118,"line":327},[116,4557,454],{"class":186},[116,4559,4560],{"class":118,"line":333},[116,4561,3844],{"class":186},[116,4563,4564],{"class":118,"line":339},[116,4565,464],{"class":186},[11,4567,4568,4570],{},[68,4569,2885],{}," The debugging loop — \"see error in Sentry, find the code, understand the cause, write a fix\" — is one of the highest-value workflows to automate. This server handles steps 1 and 2, then Claude handles 3 and 4.",[11,4572,4573],{},[22,4574,635],{"href":4575,"rel":4576},"https:\u002F\u002Ftokrepo.com\u002Fen\u002Fmcp-servers\u002Fa739e813",[26],[637,4578],{},[485,4580,4582],{"id":4581},"_8-stripe-mcp-server","8. Stripe MCP Server",[11,4584,4585,4587],{},[68,4586,598],{}," Interacts with the Stripe API — list customers, retrieve payment intents, check subscription status, search invoices, and inspect webhook events.",[11,4589,4590,4592],{},[68,4591,604],{}," SaaS developers who need Claude to debug payment issues, verify subscription states, or generate Stripe API integration code with real schema context.",[11,4594,4595],{},[68,4596,610],{},[107,4598,4600],{"className":375,"code":4599,"language":377,"meta":112,"style":112},"{\n  \"mcpServers\": {\n    \"stripe\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@modelcontextprotocol\u002Fserver-stripe\"],\n      \"env\": {\n        \"STRIPE_SECRET_KEY\": \"sk_test_...\"\n      }\n    }\n  }\n}\n",[43,4601,4602,4606,4612,4619,4629,4644,4650,4660,4664,4668,4672],{"__ignoreMap":112},[116,4603,4604],{"class":118,"line":119},[116,4605,384],{"class":186},[116,4607,4608,4610],{"class":118,"line":280},[116,4609,3771],{"class":130},[116,4611,3774],{"class":186},[116,4613,4614,4617],{"class":118,"line":287},[116,4615,4616],{"class":130},"    \"stripe\"",[116,4618,3774],{"class":186},[116,4620,4621,4623,4625,4627],{"class":118,"line":293},[116,4622,3786],{"class":130},[116,4624,405],{"class":186},[116,4626,3791],{"class":126},[116,4628,411],{"class":186},[116,4630,4631,4633,4635,4637,4639,4642],{"class":118,"line":298},[116,4632,3798],{"class":130},[116,4634,3801],{"class":186},[116,4636,3804],{"class":126},[116,4638,3807],{"class":186},[116,4640,4641],{"class":126},"\"@modelcontextprotocol\u002Fserver-stripe\"",[116,4643,3813],{"class":186},[116,4645,4646,4648],{"class":118,"line":304},[116,4647,3818],{"class":130},[116,4649,3774],{"class":186},[116,4651,4652,4655,4657],{"class":118,"line":310},[116,4653,4654],{"class":130},"        \"STRIPE_SECRET_KEY\"",[116,4656,405],{"class":186},[116,4658,4659],{"class":126},"\"sk_test_...\"\n",[116,4661,4662],{"class":118,"line":316},[116,4663,3835],{"class":186},[116,4665,4666],{"class":118,"line":322},[116,4667,454],{"class":186},[116,4669,4670],{"class":118,"line":327},[116,4671,3844],{"class":186},[116,4673,4674],{"class":118,"line":333},[116,4675,464],{"class":186},[4677,4678,4679],"blockquote",{},[11,4680,4681,4682,4685],{},"Use a ",[68,4683,4684],{},"test mode"," key during development. Never expose production Stripe keys in shared configs.",[11,4687,4688,4690],{},[68,4689,2885],{}," Payment bugs are high-stakes. Having Claude pull the actual Stripe event, compare it to your webhook handler, and spot the mismatch saves hours of manual Stripe dashboard spelunking.",[11,4692,4693],{},[22,4694,635],{"href":4695,"rel":4696},"https:\u002F\u002Ftokrepo.com\u002Fen\u002Fmcp-servers\u002F9fa25556",[26],[637,4698],{},[485,4700,4702],{"id":4701},"_9-supabase-mcp-server","9. Supabase MCP Server",[11,4704,4705,4707],{},[68,4706,598],{}," Full Supabase integration — query Postgres tables, manage auth users, interact with storage buckets, and call Edge Functions. Combines database, auth, and storage in one server.",[11,4709,4710,4712],{},[68,4711,604],{}," Indie hackers and startups building on Supabase who want Claude to manage the entire backend without leaving the terminal.",[11,4714,4715],{},[68,4716,610],{},[107,4718,4720],{"className":375,"code":4719,"language":377,"meta":112,"style":112},"{\n  \"mcpServers\": {\n    \"supabase\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@supabase\u002Fmcp-server\"],\n      \"env\": {\n        \"SUPABASE_URL\": \"https:\u002F\u002Fyour-project.supabase.co\",\n        \"SUPABASE_SERVICE_ROLE_KEY\": \"eyJ...\"\n      }\n    }\n  }\n}\n",[43,4721,4722,4726,4732,4739,4749,4764,4770,4782,4792,4796,4800,4804],{"__ignoreMap":112},[116,4723,4724],{"class":118,"line":119},[116,4725,384],{"class":186},[116,4727,4728,4730],{"class":118,"line":280},[116,4729,3771],{"class":130},[116,4731,3774],{"class":186},[116,4733,4734,4737],{"class":118,"line":287},[116,4735,4736],{"class":130},"    \"supabase\"",[116,4738,3774],{"class":186},[116,4740,4741,4743,4745,4747],{"class":118,"line":293},[116,4742,3786],{"class":130},[116,4744,405],{"class":186},[116,4746,3791],{"class":126},[116,4748,411],{"class":186},[116,4750,4751,4753,4755,4757,4759,4762],{"class":118,"line":298},[116,4752,3798],{"class":130},[116,4754,3801],{"class":186},[116,4756,3804],{"class":126},[116,4758,3807],{"class":186},[116,4760,4761],{"class":126},"\"@supabase\u002Fmcp-server\"",[116,4763,3813],{"class":186},[116,4765,4766,4768],{"class":118,"line":304},[116,4767,3818],{"class":130},[116,4769,3774],{"class":186},[116,4771,4772,4775,4777,4780],{"class":118,"line":310},[116,4773,4774],{"class":130},"        \"SUPABASE_URL\"",[116,4776,405],{"class":186},[116,4778,4779],{"class":126},"\"https:\u002F\u002Fyour-project.supabase.co\"",[116,4781,411],{"class":186},[116,4783,4784,4787,4789],{"class":118,"line":316},[116,4785,4786],{"class":130},"        \"SUPABASE_SERVICE_ROLE_KEY\"",[116,4788,405],{"class":186},[116,4790,4791],{"class":126},"\"eyJ...\"\n",[116,4793,4794],{"class":118,"line":322},[116,4795,3835],{"class":186},[116,4797,4798],{"class":118,"line":327},[116,4799,454],{"class":186},[116,4801,4802],{"class":118,"line":333},[116,4803,3844],{"class":186},[116,4805,4806],{"class":118,"line":339},[116,4807,464],{"class":186},[11,4809,4810,4812],{},[68,4811,2885],{}," Supabase is the most popular open-source Firebase alternative. This server covers Postgres queries, Row Level Security policies, auth user management, and storage — all through one MCP connection. If your stack is Supabase, this is non-negotiable.",[11,4814,4815],{},[22,4816,635],{"href":4817,"rel":4818},"https:\u002F\u002Ftokrepo.com\u002Fen\u002Fmcp-servers\u002Fb141b1a9",[26],[637,4820],{},[485,4822,4824],{"id":4823},"_10-elasticsearch-mcp-server","10. Elasticsearch MCP Server",[11,4826,4827,4829],{},[68,4828,598],{}," Query Elasticsearch indices, inspect mappings, run aggregations, and manage index lifecycles. Supports both Elasticsearch 7.x and 8.x.",[11,4831,4832,4834],{},[68,4833,604],{}," Backend teams with Elasticsearch-powered search who want Claude to write queries, debug relevance issues, or optimize index mappings.",[11,4836,4837],{},[68,4838,610],{},[107,4840,4842],{"className":375,"code":4841,"language":377,"meta":112,"style":112},"{\n  \"mcpServers\": {\n    \"elasticsearch\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@modelcontextprotocol\u002Fserver-elasticsearch\"],\n      \"env\": {\n        \"ELASTICSEARCH_URL\": \"http:\u002F\u002Flocalhost:9200\",\n        \"ELASTICSEARCH_API_KEY\": \"\u003Cyour-api-key>\"\n      }\n    }\n  }\n}\n",[43,4843,4844,4848,4854,4861,4871,4886,4892,4904,4914,4918,4922,4926],{"__ignoreMap":112},[116,4845,4846],{"class":118,"line":119},[116,4847,384],{"class":186},[116,4849,4850,4852],{"class":118,"line":280},[116,4851,3771],{"class":130},[116,4853,3774],{"class":186},[116,4855,4856,4859],{"class":118,"line":287},[116,4857,4858],{"class":130},"    \"elasticsearch\"",[116,4860,3774],{"class":186},[116,4862,4863,4865,4867,4869],{"class":118,"line":293},[116,4864,3786],{"class":130},[116,4866,405],{"class":186},[116,4868,3791],{"class":126},[116,4870,411],{"class":186},[116,4872,4873,4875,4877,4879,4881,4884],{"class":118,"line":298},[116,4874,3798],{"class":130},[116,4876,3801],{"class":186},[116,4878,3804],{"class":126},[116,4880,3807],{"class":186},[116,4882,4883],{"class":126},"\"@modelcontextprotocol\u002Fserver-elasticsearch\"",[116,4885,3813],{"class":186},[116,4887,4888,4890],{"class":118,"line":304},[116,4889,3818],{"class":130},[116,4891,3774],{"class":186},[116,4893,4894,4897,4899,4902],{"class":118,"line":310},[116,4895,4896],{"class":130},"        \"ELASTICSEARCH_URL\"",[116,4898,405],{"class":186},[116,4900,4901],{"class":126},"\"http:\u002F\u002Flocalhost:9200\"",[116,4903,411],{"class":186},[116,4905,4906,4909,4911],{"class":118,"line":316},[116,4907,4908],{"class":130},"        \"ELASTICSEARCH_API_KEY\"",[116,4910,405],{"class":186},[116,4912,4913],{"class":126},"\"\u003Cyour-api-key>\"\n",[116,4915,4916],{"class":118,"line":322},[116,4917,3835],{"class":186},[116,4919,4920],{"class":118,"line":327},[116,4921,454],{"class":186},[116,4923,4924],{"class":118,"line":333},[116,4925,3844],{"class":186},[116,4927,4928],{"class":118,"line":339},[116,4929,464],{"class":186},[11,4931,4932,4934],{},[68,4933,2885],{}," Elasticsearch query DSL is notoriously complex. Having Claude write and test queries against your actual index — with real mappings and data — produces dramatically better results than asking it to write queries from memory.",[11,4936,4937],{},[22,4938,635],{"href":4939,"rel":4940},"https:\u002F\u002Ftokrepo.com\u002Fen\u002Fmcp-servers\u002Fcba686ed",[26],[637,4942],{},[485,4944,4946],{"id":4945},"_11-glama-mcp-server","11. Glama MCP Server",[11,4948,4949,4951],{},[68,4950,598],{}," A meta-server for MCP discovery. Search the Glama registry for MCP servers, get installation instructions, and compare capabilities — all from within Claude Code.",[11,4953,4954,4956],{},[68,4955,604],{}," Developers exploring the MCP ecosystem who want to find, evaluate, and install new servers without leaving the terminal.",[11,4958,4959],{},[68,4960,610],{},[107,4962,4964],{"className":375,"code":4963,"language":377,"meta":112,"style":112},"{\n  \"mcpServers\": {\n    \"glama\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@anthropic-ai\u002Fmcp-glama\"],\n      \"env\": {}\n    }\n  }\n}\n",[43,4965,4966,4970,4976,4983,4993,5008,5015,5019,5023],{"__ignoreMap":112},[116,4967,4968],{"class":118,"line":119},[116,4969,384],{"class":186},[116,4971,4972,4974],{"class":118,"line":280},[116,4973,3771],{"class":130},[116,4975,3774],{"class":186},[116,4977,4978,4981],{"class":118,"line":287},[116,4979,4980],{"class":130},"    \"glama\"",[116,4982,3774],{"class":186},[116,4984,4985,4987,4989,4991],{"class":118,"line":293},[116,4986,3786],{"class":130},[116,4988,405],{"class":186},[116,4990,3791],{"class":126},[116,4992,411],{"class":186},[116,4994,4995,4997,4999,5001,5003,5006],{"class":118,"line":298},[116,4996,3798],{"class":130},[116,4998,3801],{"class":186},[116,5000,3804],{"class":126},[116,5002,3807],{"class":186},[116,5004,5005],{"class":126},"\"@anthropic-ai\u002Fmcp-glama\"",[116,5007,3813],{"class":186},[116,5009,5010,5012],{"class":118,"line":304},[116,5011,3818],{"class":130},[116,5013,5014],{"class":186},": {}\n",[116,5016,5017],{"class":118,"line":310},[116,5018,454],{"class":186},[116,5020,5021],{"class":118,"line":316},[116,5022,3844],{"class":186},[116,5024,5025],{"class":118,"line":322},[116,5026,464],{"class":186},[11,5028,5029,5031],{},[68,5030,2885],{}," The MCP ecosystem is growing fast. Instead of browsing GitHub or Google, ask Claude \"find me an MCP server for Jira\" and Glama returns matching results with install configs. It is the package manager for MCP servers.",[11,5033,5034],{},[22,5035,635],{"href":5036,"rel":5037},"https:\u002F\u002Ftokrepo.com\u002Fen\u002Fmcp-servers\u002Fef4bec91",[26],[637,5039],{},[485,5041,5043],{"id":5042},"_12-mcp-inspector","12. MCP Inspector",[11,5045,5046,5048],{},[68,5047,598],{}," A debugging and testing tool for MCP servers. Validates server responses, checks protocol compliance, inspects tool schemas, and helps you diagnose why a server is not working.",[11,5050,5051,5053],{},[68,5052,604],{}," MCP server developers and anyone troubleshooting a server that is not connecting or returning unexpected results.",[11,5055,5056],{},[68,5057,610],{},[107,5059,5061],{"className":375,"code":5060,"language":377,"meta":112,"style":112},"{\n  \"mcpServers\": {\n    \"mcp-inspector\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@anthropic-ai\u002Fmcp-inspector\"],\n      \"env\": {}\n    }\n  }\n}\n",[43,5062,5063,5067,5073,5080,5090,5105,5111,5115,5119],{"__ignoreMap":112},[116,5064,5065],{"class":118,"line":119},[116,5066,384],{"class":186},[116,5068,5069,5071],{"class":118,"line":280},[116,5070,3771],{"class":130},[116,5072,3774],{"class":186},[116,5074,5075,5078],{"class":118,"line":287},[116,5076,5077],{"class":130},"    \"mcp-inspector\"",[116,5079,3774],{"class":186},[116,5081,5082,5084,5086,5088],{"class":118,"line":293},[116,5083,3786],{"class":130},[116,5085,405],{"class":186},[116,5087,3791],{"class":126},[116,5089,411],{"class":186},[116,5091,5092,5094,5096,5098,5100,5103],{"class":118,"line":298},[116,5093,3798],{"class":130},[116,5095,3801],{"class":186},[116,5097,3804],{"class":126},[116,5099,3807],{"class":186},[116,5101,5102],{"class":126},"\"@anthropic-ai\u002Fmcp-inspector\"",[116,5104,3813],{"class":186},[116,5106,5107,5109],{"class":118,"line":304},[116,5108,3818],{"class":130},[116,5110,5014],{"class":186},[116,5112,5113],{"class":118,"line":310},[116,5114,454],{"class":186},[116,5116,5117],{"class":118,"line":316},[116,5118,3844],{"class":186},[116,5120,5121],{"class":118,"line":322},[116,5122,464],{"class":186},[11,5124,5125],{},"You can also run it standalone to test any MCP server:",[107,5127,5129],{"className":109,"code":5128,"language":111,"meta":112,"style":112},"npx @anthropic-ai\u002Fmcp-inspector --server \"npx @modelcontextprotocol\u002Fserver-github\"\n",[43,5130,5131],{"__ignoreMap":112},[116,5132,5133,5135,5138,5141],{"class":118,"line":119},[116,5134,147],{"class":122},[116,5136,5137],{"class":126}," @anthropic-ai\u002Fmcp-inspector",[116,5139,5140],{"class":130}," --server",[116,5142,5143],{"class":126}," \"npx @modelcontextprotocol\u002Fserver-github\"\n",[11,5145,5146,5148,5149,1036],{},[68,5147,2885],{}," When an MCP server silently fails, you need a debugger. MCP Inspector shows you the raw JSON-RPC messages, validates tool schemas, and pinpoints exactly where the handshake breaks. Essential for anyone ",[22,5150,5151],{"href":1066},"building custom MCP servers",[11,5153,5154],{},[22,5155,635],{"href":5156,"rel":5157},"https:\u002F\u002Ftokrepo.com\u002Fen\u002Fmcp-servers\u002F302d7709",[26],[637,5159],{},[15,5161,3453],{"id":3452},[965,5163],{":headers":5164,":rows":5165},"[\"MCP Server\",\"Category\",\"Best For\",\"Runtime\",\"Auth Required\"]","[[\"GitHub\",\"Source Control\",\"PR workflows\",\"Node.js\",\"Yes (PAT)\"],[\"PostgreSQL\",\"Database\",\"Schema exploration\",\"Node.js\",\"Yes (conn string)\"],[\"Filesystem\",\"Files\",\"Multi-dir access\",\"Node.js\",\"No\"],[\"SQLite\",\"Database\",\"Local prototyping\",\"Node.js\",\"No\"],[\"Slack\",\"Communication\",\"Incident context\",\"Node.js\",\"Yes (Bot token)\"],[\"Puppeteer\",\"Browser\",\"E2E testing\",\"Node.js\",\"No\"],[\"Sentry\",\"Monitoring\",\"Error triage\",\"Node.js\",\"Yes (Auth token)\"],[\"Stripe\",\"Payments\",\"Payment debugging\",\"Node.js\",\"Yes (API key)\"],[\"Supabase\",\"Backend-as-a-Service\",\"Full-stack BaaS\",\"Node.js\",\"Yes (Service key)\"],[\"Elasticsearch\",\"Search\",\"Query building\",\"Node.js\",\"Optional\"],[\"Glama\",\"Discovery\",\"Finding MCP servers\",\"Node.js\",\"No\"],[\"MCP Inspector\",\"Debugging\",\"Server troubleshooting\",\"Node.js\",\"No\"]]",[15,5167,5169],{"id":5168},"how-to-configure-multiple-mcp-servers","How to Configure Multiple MCP Servers",[11,5171,5172,5173,5176],{},"You can run multiple MCP servers simultaneously. Add them all to one ",[43,5174,5175],{},"mcpServers"," object in your Claude Code settings:",[107,5178,5180],{"className":375,"code":5179,"language":377,"meta":112,"style":112},"{\n  \"mcpServers\": {\n    \"github\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@modelcontextprotocol\u002Fserver-github\"],\n      \"env\": { \"GITHUB_PERSONAL_ACCESS_TOKEN\": \"ghp_...\" }\n    },\n    \"postgres\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@modelcontextprotocol\u002Fserver-postgres\"],\n      \"env\": { \"POSTGRES_CONNECTION_STRING\": \"postgresql:\u002F\u002F...\" }\n    },\n    \"filesystem\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@modelcontextprotocol\u002Fserver-filesystem\", \"\u002Fhome\u002Fyou\u002Fprojects\"]\n    }\n  }\n}\n",[43,5181,5182,5186,5192,5198,5208,5222,5240,5244,5250,5260,5274,5290,5294,5300,5310,5330,5334,5338],{"__ignoreMap":112},[116,5183,5184],{"class":118,"line":119},[116,5185,384],{"class":186},[116,5187,5188,5190],{"class":118,"line":280},[116,5189,3771],{"class":130},[116,5191,3774],{"class":186},[116,5193,5194,5196],{"class":118,"line":287},[116,5195,3779],{"class":130},[116,5197,3774],{"class":186},[116,5199,5200,5202,5204,5206],{"class":118,"line":293},[116,5201,3786],{"class":130},[116,5203,405],{"class":186},[116,5205,3791],{"class":126},[116,5207,411],{"class":186},[116,5209,5210,5212,5214,5216,5218,5220],{"class":118,"line":298},[116,5211,3798],{"class":130},[116,5213,3801],{"class":186},[116,5215,3804],{"class":126},[116,5217,3807],{"class":186},[116,5219,3810],{"class":126},[116,5221,3813],{"class":186},[116,5223,5224,5226,5229,5232,5234,5237],{"class":118,"line":304},[116,5225,3818],{"class":130},[116,5227,5228],{"class":186},": { ",[116,5230,5231],{"class":130},"\"GITHUB_PERSONAL_ACCESS_TOKEN\"",[116,5233,405],{"class":186},[116,5235,5236],{"class":126},"\"ghp_...\"",[116,5238,5239],{"class":186}," }\n",[116,5241,5242],{"class":118,"line":310},[116,5243,426],{"class":186},[116,5245,5246,5248],{"class":118,"line":316},[116,5247,3899],{"class":130},[116,5249,3774],{"class":186},[116,5251,5252,5254,5256,5258],{"class":118,"line":322},[116,5253,3786],{"class":130},[116,5255,405],{"class":186},[116,5257,3791],{"class":126},[116,5259,411],{"class":186},[116,5261,5262,5264,5266,5268,5270,5272],{"class":118,"line":327},[116,5263,3798],{"class":130},[116,5265,3801],{"class":186},[116,5267,3804],{"class":126},[116,5269,3807],{"class":186},[116,5271,3924],{"class":126},[116,5273,3813],{"class":186},[116,5275,5276,5278,5280,5283,5285,5288],{"class":118,"line":333},[116,5277,3818],{"class":130},[116,5279,5228],{"class":186},[116,5281,5282],{"class":130},"\"POSTGRES_CONNECTION_STRING\"",[116,5284,405],{"class":186},[116,5286,5287],{"class":126},"\"postgresql:\u002F\u002F...\"",[116,5289,5239],{"class":186},[116,5291,5292],{"class":118,"line":339},[116,5293,426],{"class":186},[116,5295,5296,5298],{"class":118,"line":345},[116,5297,4009],{"class":130},[116,5299,3774],{"class":186},[116,5301,5302,5304,5306,5308],{"class":118,"line":350},[116,5303,3786],{"class":130},[116,5305,405],{"class":186},[116,5307,3791],{"class":126},[116,5309,411],{"class":186},[116,5311,5312,5314,5316,5318,5320,5322,5324,5327],{"class":118,"line":356},[116,5313,3798],{"class":130},[116,5315,3801],{"class":186},[116,5317,3804],{"class":126},[116,5319,3807],{"class":186},[116,5321,4037],{"class":126},[116,5323,3807],{"class":186},[116,5325,5326],{"class":126},"\"\u002Fhome\u002Fyou\u002Fprojects\"",[116,5328,5329],{"class":186},"]\n",[116,5331,5332],{"class":118,"line":362},[116,5333,454],{"class":186},[116,5335,5336],{"class":118,"line":1402},[116,5337,3844],{"class":186},[116,5339,5340],{"class":118,"line":1408},[116,5341,464],{"class":186},[11,5343,5344],{},"Claude Code starts each server as a subprocess and routes tool calls to the correct one based on the tool name. There is no performance penalty for having multiple servers configured — they only consume resources when invoked.",[15,5346,1012],{"id":1011},[485,5348,5350],{"id":5349},"what-is-the-difference-between-mcp-servers-and-agent-skills","What is the difference between MCP servers and agent skills?",[11,5352,5353,5354,1036],{},"MCP servers are running processes that expose tools over JSON-RPC — they can call APIs, query databases, and control browsers. Agent skills are Markdown instructions that teach Claude how to perform tasks using its built-in capabilities. Skills are simpler to create; MCP servers are more powerful for external integrations. See our full comparison in ",[22,5355,1035],{"href":1034},[485,5357,5359],{"id":5358},"do-mcp-servers-work-with-other-ai-agents-besides-claude-code","Do MCP servers work with other AI agents besides Claude Code?",[11,5361,5362,5363,5367],{},"Yes. MCP is an open protocol — any agent that implements the MCP client specification can use these servers. ",[22,5364,997],{"href":5365,"rel":5366},"https:\u002F\u002Fgithub.com\u002Fopenai\u002Fcodex",[26],", Cursor, and several other tools are adding MCP support. The servers listed here work with any compliant client.",[485,5369,5371],{"id":5370},"are-mcp-servers-safe-to-use-with-production-data","Are MCP servers safe to use with production data?",[11,5373,5374],{},"It depends on the server. PostgreSQL and Elasticsearch servers default to read-only mode. GitHub and Slack servers require explicit token scopes. Always use test\u002Fstaging credentials during development. Review each server's permission model before connecting to production systems.",[485,5376,5378],{"id":5377},"how-do-i-build-my-own-mcp-server","How do I build my own MCP server?",[11,5380,5381,5382,5387,5388,5390,5391,5395],{},"Start with the official ",[22,5383,5386],{"href":5384,"rel":5385},"https:\u002F\u002Fgithub.com\u002Fmodelcontextprotocol\u002Fsdk",[26],"MCP SDK on GitHub"," and follow our ",[22,5389,1067],{"href":1066}," guide for general patterns. Use the ",[22,5392,5394],{"href":5156,"rel":5393},[26],"MCP Inspector"," to validate your implementation.",[15,5397,1076],{"id":1075},[62,5399,5400,5405,5410,5415],{},[65,5401,5402,5404],{},[22,5403,1067],{"href":1066}," — build custom commands for Claude Code",[65,5406,5407,5409],{},[22,5408,1035],{"href":1034}," — understand which extension type fits your workflow",[65,5411,5412,5414],{},[22,5413,2685],{"href":31}," — complement MCP servers with agent skills",[65,5416,5417,5422],{},[22,5418,5421],{"href":5419,"rel":5420},"https:\u002F\u002Ftokrepo.com\u002Fen\u002Fcollections\u002Fmcp-servers",[26],"Browse MCP Servers on TokRepo"," — discover more servers for your stack",[1103,5424,5425],{},"html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}",{"title":112,"searchDepth":280,"depth":280,"links":5427},[5428,5429,5430,5444,5445,5446,5452],{"id":1158,"depth":280,"text":1159},{"id":3717,"depth":280,"text":3718},{"id":3738,"depth":280,"text":3739,"children":5431},[5432,5433,5434,5435,5436,5437,5438,5439,5440,5441,5442,5443],{"id":3742,"depth":287,"text":3743},{"id":3864,"depth":287,"text":3865},{"id":3974,"depth":287,"text":3975},{"id":4087,"depth":287,"text":4088},{"id":4207,"depth":287,"text":4208},{"id":4346,"depth":287,"text":4347},{"id":4459,"depth":287,"text":4460},{"id":4581,"depth":287,"text":4582},{"id":4701,"depth":287,"text":4702},{"id":4823,"depth":287,"text":4824},{"id":4945,"depth":287,"text":4946},{"id":5042,"depth":287,"text":5043},{"id":3452,"depth":280,"text":3453},{"id":5168,"depth":280,"text":5169},{"id":1011,"depth":280,"text":1012,"children":5447},[5448,5449,5450,5451],{"id":5349,"depth":287,"text":5350},{"id":5358,"depth":287,"text":5359},{"id":5370,"depth":287,"text":5371},{"id":5377,"depth":287,"text":5378},{"id":1075,"depth":280,"text":1076},"Curated list of the 12 best MCP servers for Claude Code and AI coding agents. Each server tested with real projects, complete with JSON config and usage examples.","精选 12 个最佳 MCP Server，每个都经过真实项目测试，附完整 JSON 配置和使用示例。","\u002Fguide\u002Fimages\u002Fbest-mcp-servers-hero.svg",{},"\u002Fen\u002Fguide\u002Fbest-mcp-servers",{"title":3685,"description":5453},"en\u002Fguide\u002Fbest-mcp-servers",[5461,2749,3670,3680],"mcp","2026 年 12 个最佳 MCP Server 推荐（AI 编程助手必备）","wh03H00CfnvfWz93ntI56A6btlLaoMmTDq6iEJ9ogds",{"id":5465,"title":5466,"author":6,"body":5467,"category":1132,"description":6537,"descriptionZh":6538,"extension":1135,"image":6539,"meta":6540,"navigation":283,"path":6541,"publishedAt":1139,"readTime":316,"seo":6542,"stem":6543,"tags":6544,"titleZh":6546,"updatedAt":1139,"__hash__":6547},"docs_en\u002Fen\u002Fguide\u002Fcodex-cli-skills.md","Getting Started with OpenAI Codex CLI Skills — Setup, Install & Best Picks",{"type":8,"value":5468,"toc":6497},[5469,5472,5476,5482,5487,5490,5529,5539,5543,5545,5553,5557,5573,5577,5594,5604,5629,5633,5645,5649,5652,5664,5667,5671,5674,5694,5712,5716,5725,5729,5735,5832,5836,5842,5866,5876,5880,5886,5918,5921,5923,5929,5931,5934,5958,5964,5968,5988,5994,6042,6046,6049,6080,6084,6089,6091,6099,6105,6120,6126,6128,6130,6135,6140,6155,6160,6162,6166,6171,6176,6192,6198,6200,6204,6209,6217,6233,6239,6241,6243,6248,6253,6269,6275,6277,6281,6286,6291,6307,6313,6315,6319,6324,6329,6344,6349,6351,6355,6360,6365,6380,6385,6387,6391,6394,6398,6402,6408,6413,6415,6419,6432,6436,6445,6449,6458,6460,6463,6487,6494],[11,5470,5471],{},"Learn how to install and use agent skills with OpenAI's Codex CLI — from initial setup to discovering the best community-built skills that make your terminal-based coding agent dramatically more productive.",[15,5473,5475],{"id":5474},"what-is-codex-cli","What Is Codex CLI?",[11,5477,5478,5481],{},[22,5479,997],{"href":5365,"rel":5480},[26]," is OpenAI's open-source command-line coding agent. It connects to OpenAI models (GPT-4.1 and o3 by default) and operates directly in your terminal — reading your codebase, writing code, running commands, and iterating on changes with your approval.",[11,5483,5484,5485,1036],{},"Unlike browser-based coding assistants, Codex CLI works where developers already live: the terminal. It understands your project structure by scanning files, and you can teach it project-specific workflows through a file called ",[43,5486,56],{},[11,5488,5489],{},"Key characteristics:",[62,5491,5492,5502,5508,5514,5520],{},[65,5493,5494,5497,5498],{},[68,5495,5496],{},"Open source"," — MIT licensed, fully inspectable on ",[22,5499,5501],{"href":5365,"rel":5500},[26],"GitHub",[65,5503,5504,5507],{},[68,5505,5506],{},"Terminal native"," — runs as a CLI tool, no browser or IDE plugin needed",[65,5509,5510,5513],{},[68,5511,5512],{},"Multi-model"," — supports GPT-4.1, o3, o4-mini, and other OpenAI models",[65,5515,5516,5519],{},[68,5517,5518],{},"Sandboxed execution"," — runs commands in an isolated environment for safety",[65,5521,5522,5525,5526,5528],{},[68,5523,5524],{},"Skill-aware"," — reads ",[43,5527,56],{}," files to learn project-specific instructions",[11,5530,5531,5532,5534,5535,5538],{},"If you have used ",[22,5533,32],{"href":31}," or plan to try ",[22,5536,27],{"href":5537},"\u002Fguide\u002Fgemini-cli-skills",", Codex CLI is the OpenAI equivalent — and skills work across all three with minor format adjustments.",[15,5540,5542],{"id":5541},"install-codex-cli","Install Codex CLI",[485,5544,1159],{"id":1158},[62,5546,5547,5550],{},[65,5548,5549],{},"Node.js 22 or later",[65,5551,5552],{},"An OpenAI API key with access to GPT-4.1 or o3",[485,5554,5556],{"id":5555},"step-1-install-via-npm","Step 1: Install via npm",[107,5558,5560],{"className":109,"code":5559,"language":111,"meta":112,"style":112},"npm install -g @openai\u002Fcodex\n",[43,5561,5562],{"__ignoreMap":112},[116,5563,5564,5566,5568,5570],{"class":118,"line":119},[116,5565,123],{"class":122},[116,5567,127],{"class":126},[116,5569,131],{"class":130},[116,5571,5572],{"class":126}," @openai\u002Fcodex\n",[485,5574,5576],{"id":5575},"step-2-set-your-api-key","Step 2: Set your API key",[107,5578,5580],{"className":109,"code":5579,"language":111,"meta":112,"style":112},"export OPENAI_API_KEY=\"sk-...\"\n",[43,5581,5582],{"__ignoreMap":112},[116,5583,5584,5586,5589,5591],{"class":118,"line":119},[116,5585,183],{"class":182},[116,5587,5588],{"class":186}," OPENAI_API_KEY",[116,5590,190],{"class":182},[116,5592,5593],{"class":126},"\"sk-...\"\n",[11,5595,5596,5597,568,5600,5603],{},"Add this to your shell profile (",[43,5598,5599],{},"~\u002F.zshrc",[43,5601,5602],{},"~\u002F.bashrc",") so it persists across sessions:",[107,5605,5607],{"className":109,"code":5606,"language":111,"meta":112,"style":112},"echo 'export OPENAI_API_KEY=\"sk-...\"' >> ~\u002F.zshrc\nsource ~\u002F.zshrc\n",[43,5608,5609,5622],{"__ignoreMap":112},[116,5610,5611,5613,5616,5619],{"class":118,"line":119},[116,5612,1565],{"class":130},[116,5614,5615],{"class":126}," 'export OPENAI_API_KEY=\"sk-...\"'",[116,5617,5618],{"class":182}," >>",[116,5620,5621],{"class":126}," ~\u002F.zshrc\n",[116,5623,5624,5627],{"class":118,"line":280},[116,5625,5626],{"class":130},"source",[116,5628,5621],{"class":126},[485,5630,5632],{"id":5631},"step-3-verify-the-installation","Step 3: Verify the installation",[107,5634,5636],{"className":109,"code":5635,"language":111,"meta":112,"style":112},"codex --version\n",[43,5637,5638],{"__ignoreMap":112},[116,5639,5640,5643],{"class":118,"line":119},[116,5641,5642],{"class":122},"codex",[116,5644,208],{"class":130},[485,5646,5648],{"id":5647},"step-4-run-your-first-command","Step 4: Run your first command",[11,5650,5651],{},"Navigate to any project directory and run:",[107,5653,5655],{"className":109,"code":5654,"language":111,"meta":112,"style":112},"codex \"explain the structure of this project\"\n",[43,5656,5657],{"__ignoreMap":112},[116,5658,5659,5661],{"class":118,"line":119},[116,5660,5642],{"class":122},[116,5662,5663],{"class":126}," \"explain the structure of this project\"\n",[11,5665,5666],{},"Codex will scan your files and provide a detailed overview. From here, you can ask it to write code, fix bugs, refactor, or run any workflow you describe.",[485,5668,5670],{"id":5669},"approval-modes","Approval Modes",[11,5672,5673],{},"Codex CLI offers three modes that control how much autonomy the agent has:",[62,5675,5676,5682,5688],{},[65,5677,5678,5681],{},[68,5679,5680],{},"suggest"," (default) — Codex reads files and suggests changes, but you approve every edit and command",[65,5683,5684,5687],{},[68,5685,5686],{},"auto-edit"," — Codex can edit files automatically, but still asks before running commands",[65,5689,5690,5693],{},[68,5691,5692],{},"full-auto"," — Codex reads, writes, and executes commands without asking (use with caution in sandboxed environments)",[107,5695,5697],{"className":109,"code":5696,"language":111,"meta":112,"style":112},"codex --approval-mode full-auto \"add unit tests for the auth module\"\n",[43,5698,5699],{"__ignoreMap":112},[116,5700,5701,5703,5706,5709],{"class":118,"line":119},[116,5702,5642],{"class":122},[116,5704,5705],{"class":130}," --approval-mode",[116,5707,5708],{"class":126}," full-auto",[116,5710,5711],{"class":126}," \"add unit tests for the auth module\"\n",[15,5713,5715],{"id":5714},"how-codex-cli-reads-skills","How Codex CLI Reads Skills",[11,5717,5718,5719,5721,5722,5724],{},"Codex CLI uses a file called ",[43,5720,56],{}," to discover project-specific instructions. This is its equivalent of Claude Code's ",[43,5723,52],{}," directory or custom instructions files.",[485,5726,5728],{"id":5727},"the-agentsmd-format","The AGENTS.md Format",[11,5730,5731,5732,5734],{},"Place an ",[43,5733,56],{}," file in your project root (or any subdirectory — Codex discovers them recursively). The file uses standard Markdown:",[107,5736,5738],{"className":268,"code":5737,"language":270,"meta":112,"style":112},"# AGENTS.md\n\n## Project Overview\nThis is a Nuxt 3 + Go-Zero full-stack application.\nThe frontend is in \u002Ffrontend-nuxt and the backend is in \u002Fbackend-go.\n\n## Code Style\n- Use TypeScript strict mode\n- Prefer composition API over options API\n- All API responses follow the {code, data, message} format\n\n## Testing\n- Run `npm test` before committing\n- Use Vitest for unit tests\n- E2E tests live in \u002Ftests\u002Fe2e\u002F\n\n## Deployment\n- Never modify production configs directly\n- Use `bash deploy.sh frontend` for frontend deploys\n- Backend deploys require a PR review first\n",[43,5739,5740,5745,5749,5754,5759,5764,5768,5772,5777,5782,5787,5791,5795,5799,5804,5809,5813,5817,5822,5827],{"__ignoreMap":112},[116,5741,5742],{"class":118,"line":119},[116,5743,5744],{},"# AGENTS.md\n",[116,5746,5747],{"class":118,"line":280},[116,5748,284],{"emptyLinePlaceholder":283},[116,5750,5751],{"class":118,"line":287},[116,5752,5753],{},"## Project Overview\n",[116,5755,5756],{"class":118,"line":293},[116,5757,5758],{},"This is a Nuxt 3 + Go-Zero full-stack application.\n",[116,5760,5761],{"class":118,"line":298},[116,5762,5763],{},"The frontend is in \u002Ffrontend-nuxt and the backend is in \u002Fbackend-go.\n",[116,5765,5766],{"class":118,"line":304},[116,5767,284],{"emptyLinePlaceholder":283},[116,5769,5770],{"class":118,"line":310},[116,5771,301],{},[116,5773,5774],{"class":118,"line":316},[116,5775,5776],{},"- Use TypeScript strict mode\n",[116,5778,5779],{"class":118,"line":322},[116,5780,5781],{},"- Prefer composition API over options API\n",[116,5783,5784],{"class":118,"line":327},[116,5785,5786],{},"- All API responses follow the {code, data, message} format\n",[116,5788,5789],{"class":118,"line":333},[116,5790,284],{"emptyLinePlaceholder":283},[116,5792,5793],{"class":118,"line":339},[116,5794,330],{},[116,5796,5797],{"class":118,"line":345},[116,5798,336],{},[116,5800,5801],{"class":118,"line":350},[116,5802,5803],{},"- Use Vitest for unit tests\n",[116,5805,5806],{"class":118,"line":356},[116,5807,5808],{},"- E2E tests live in \u002Ftests\u002Fe2e\u002F\n",[116,5810,5811],{"class":118,"line":362},[116,5812,284],{"emptyLinePlaceholder":283},[116,5814,5815],{"class":118,"line":1402},[116,5816,353],{},[116,5818,5819],{"class":118,"line":1408},[116,5820,5821],{},"- Never modify production configs directly\n",[116,5823,5824],{"class":118,"line":1413},[116,5825,5826],{},"- Use `bash deploy.sh frontend` for frontend deploys\n",[116,5828,5829],{"class":118,"line":1419},[116,5830,5831],{},"- Backend deploys require a PR review first\n",[485,5833,5835],{"id":5834},"auto-discovery-rules","Auto-Discovery Rules",[11,5837,5838,5839,5841],{},"Codex CLI automatically discovers ",[43,5840,56],{}," files through a hierarchy:",[230,5843,5844,5852,5860],{},[65,5845,5846,5851],{},[68,5847,5848,5849],{},"Root ",[43,5850,56],{}," — applies to the entire project",[65,5853,5854,5859],{},[68,5855,5856,5857],{},"Subdirectory ",[43,5858,56],{}," — applies only within that directory and its children",[65,5861,5862,5865],{},[68,5863,5864],{},"Multiple files merge"," — if both exist, Codex combines them (subdirectory instructions take priority for conflicts)",[11,5867,5868,5869,5871,5872,5875],{},"This means you can have a top-level ",[43,5870,56],{}," for global conventions and a ",[43,5873,5874],{},"frontend\u002FAGENTS.md"," with frontend-specific rules.",[485,5877,5879],{"id":5878},"what-to-put-in-agentsmd","What to Put in AGENTS.md",[11,5881,5882,5883,5885],{},"The best ",[43,5884,56],{}," files cover:",[62,5887,5888,5894,5900,5906,5912],{},[65,5889,5890,5893],{},[68,5891,5892],{},"Project architecture"," — what lives where, key directories",[65,5895,5896,5899],{},[68,5897,5898],{},"Code conventions"," — naming, formatting, patterns to follow",[65,5901,5902,5905],{},[68,5903,5904],{},"Common commands"," — how to build, test, deploy, lint",[65,5907,5908,5911],{},[68,5909,5910],{},"Gotchas"," — things the agent should never do, edge cases to watch for",[65,5913,5914,5917],{},[68,5915,5916],{},"Workflow instructions"," — step-by-step playbooks for recurring tasks",[11,5919,5920],{},"Think of it as onboarding documentation for an AI teammate. The more specific you are, the better Codex performs.",[15,5922,475],{"id":474},[11,5924,5925,5928],{},[22,5926,482],{"href":1515,"rel":5927},[26]," is a community registry for agent skills. Skills published on TokRepo work with Claude Code, Codex CLI, and Gemini CLI — you just need to place them in the right location.",[485,5930,488],{"id":487},[11,5932,5933],{},"The fastest way to install a skill:",[107,5935,5937],{"className":109,"code":5936,"language":111,"meta":112,"style":112},"npx tokrepo install \u003Casset-uuid>\n",[43,5938,5939],{"__ignoreMap":112},[116,5940,5941,5943,5946,5948,5950,5953,5955],{"class":118,"line":119},[116,5942,147],{"class":122},[116,5944,5945],{"class":126}," tokrepo",[116,5947,127],{"class":126},[116,5949,517],{"class":182},[116,5951,5952],{"class":126},"asset-uui",[116,5954,523],{"class":186},[116,5956,5957],{"class":182},">\n",[11,5959,5960,5961,5963],{},"This downloads the skill file and places it in your project's skill directory. For Codex CLI, you may want to consolidate instructions into your ",[43,5962,56],{}," or place skill files where Codex can reference them.",[485,5965,5967],{"id":5966},"method-2-manual-copy","Method 2: Manual Copy",[230,5969,5970,5976,5979],{},[65,5971,5972,5973],{},"Visit the skill page on ",[22,5974,482],{"href":480,"rel":5975},[26],[65,5977,5978],{},"Copy the Markdown content",[65,5980,5981,5982,5984,5985,5987],{},"Paste it into your project's ",[43,5983,56],{}," file, or save it as a separate ",[43,5986,470],{}," file in your project",[11,5989,5990,5991,5993],{},"For Codex CLI specifically, the cleanest approach is to merge skill instructions into your ",[43,5992,56],{}," under clearly labeled sections:",[107,5995,5997],{"className":268,"code":5996,"language":270,"meta":112,"style":112},"# AGENTS.md\n\n## Debugging Workflow\n\u003C!-- Pasted from Systematic Debugging skill -->\nWhen debugging, follow these steps:\n1. Reproduce the issue with a minimal test case\n2. Add strategic logging at key decision points\n3. Form a hypothesis before changing code\n4. Verify the fix doesn't introduce regressions\n",[43,5998,5999,6003,6007,6012,6017,6022,6027,6032,6037],{"__ignoreMap":112},[116,6000,6001],{"class":118,"line":119},[116,6002,5744],{},[116,6004,6005],{"class":118,"line":280},[116,6006,284],{"emptyLinePlaceholder":283},[116,6008,6009],{"class":118,"line":287},[116,6010,6011],{},"## Debugging Workflow\n",[116,6013,6014],{"class":118,"line":293},[116,6015,6016],{},"\u003C!-- Pasted from Systematic Debugging skill -->\n",[116,6018,6019],{"class":118,"line":298},[116,6020,6021],{},"When debugging, follow these steps:\n",[116,6023,6024],{"class":118,"line":304},[116,6025,6026],{},"1. Reproduce the issue with a minimal test case\n",[116,6028,6029],{"class":118,"line":310},[116,6030,6031],{},"2. Add strategic logging at key decision points\n",[116,6033,6034],{"class":118,"line":316},[116,6035,6036],{},"3. Form a hypothesis before changing code\n",[116,6038,6039],{"class":118,"line":322},[116,6040,6041],{},"4. Verify the fix doesn't introduce regressions\n",[485,6043,6045],{"id":6044},"method-3-symlink-for-multi-agent-projects","Method 3: Symlink for Multi-Agent Projects",[11,6047,6048],{},"If you use both Claude Code and Codex CLI on the same project, you can maintain a single source of truth:",[107,6050,6052],{"className":109,"code":6051,"language":111,"meta":112,"style":112},"# Skills live in .claude\u002Fcommands\u002F for Claude Code\n# Symlink key content into AGENTS.md for Codex CLI\ncat .claude\u002Fcommands\u002F*.md >> AGENTS.md\n",[43,6053,6054,6059,6064],{"__ignoreMap":112},[116,6055,6056],{"class":118,"line":119},[116,6057,6058],{"class":1203},"# Skills live in .claude\u002Fcommands\u002F for Claude Code\n",[116,6060,6061],{"class":118,"line":280},[116,6062,6063],{"class":1203},"# Symlink key content into AGENTS.md for Codex CLI\n",[116,6065,6066,6068,6070,6073,6075,6077],{"class":118,"line":287},[116,6067,1335],{"class":122},[116,6069,2577],{"class":126},[116,6071,6072],{"class":130},"*",[116,6074,470],{"class":126},[116,6076,5618],{"class":182},[116,6078,6079],{"class":126}," AGENTS.md\n",[15,6081,6083],{"id":6082},"_8-recommended-skills-for-codex-cli","8 Recommended Skills for Codex CLI",[11,6085,6086,6087,1036],{},"These skills have been tested with Codex CLI and provide immediate productivity gains. Each one is available on TokRepo and can be installed or copied into your ",[43,6088,56],{},[485,6090,2031],{"id":2030},[11,6092,6093,6095,6096,6098],{},[68,6094,598],{}," A comprehensive project management framework that breaks large projects into milestones, phases, and tasks. Tracks progress across sessions with persistent ",[43,6097,738],{}," directories.",[11,6100,6101,6104],{},[68,6102,6103],{},"Why it matters for Codex:"," Codex CLI excels at focused tasks but can lose track of multi-step projects. GSD provides the scaffolding to keep complex work on track.",[107,6106,6108],{"className":109,"code":6107,"language":111,"meta":112,"style":112},"npx tokrepo install e108cf5c-c34e-4d27-a694-66a693301e87\n",[43,6109,6110],{"__ignoreMap":112},[116,6111,6112,6114,6116,6118],{"class":118,"line":119},[116,6113,147],{"class":122},[116,6115,5945],{"class":126},[116,6117,127],{"class":126},[116,6119,2048],{"class":126},[11,6121,6122],{},[22,6123,6125],{"href":777,"rel":6124},[26],"View on TokRepo",[637,6127],{},[485,6129,2852],{"id":2851},[11,6131,6132,6134],{},[68,6133,598],{}," A curated collection of 13,000+ community-contributed skills covering Next.js, React, deployment patterns, and full-stack development workflows.",[11,6136,6137,6139],{},[68,6138,6103],{}," If you work with Vercel, Next.js, or React, this collection gives Codex domain-specific knowledge that dramatically improves code quality.",[107,6141,6143],{"className":109,"code":6142,"language":111,"meta":112,"style":112},"npx tokrepo install d1eba6f1-5166-4762-bbbd-cf00f14892b7\n",[43,6144,6145],{"__ignoreMap":112},[116,6146,6147,6149,6151,6153],{"class":118,"line":119},[116,6148,147],{"class":122},[116,6150,5945],{"class":126},[116,6152,127],{"class":126},[116,6154,2880],{"class":126},[11,6156,6157],{},[22,6158,6125],{"href":821,"rel":6159},[26],[637,6161],{},[485,6163,6165],{"id":6164},"_3-claude-seo-complete-seo-skill","3. Claude SEO — Complete SEO Skill",[11,6167,6168,6170],{},[68,6169,598],{}," Runs comprehensive SEO audits — keyword research, on-page analysis, content gap identification, technical checks, and competitor comparison.",[11,6172,6173,6175],{},[68,6174,6103],{}," SEO requires following a structured checklist. This skill ensures Codex covers all the bases instead of improvising an incomplete audit.",[107,6177,6179],{"className":109,"code":6178,"language":111,"meta":112,"style":112},"npx tokrepo install cb068086-48bc-4dc2-b53e-9a16eba5b51f\n",[43,6180,6181],{"__ignoreMap":112},[116,6182,6183,6185,6187,6189],{"class":118,"line":119},[116,6184,147],{"class":122},[116,6186,5945],{"class":126},[116,6188,127],{"class":126},[116,6190,6191],{"class":126}," cb068086-48bc-4dc2-b53e-9a16eba5b51f\n",[11,6193,6194],{},[22,6195,6125],{"href":6196,"rel":6197},"https:\u002F\u002Ftokrepo.com\u002Fen\u002Fworkflows\u002Fcb068086-48bc-4dc2-b53e-9a16eba5b51f",[26],[637,6199],{},[485,6201,6203],{"id":6202},"_4-systematic-debugging","4. Systematic Debugging",[11,6205,6206,6208],{},[68,6207,598],{}," A structured debugging methodology — reproduce, isolate, hypothesize, fix, verify. Prevents the common trap of changing code randomly until something works.",[11,6210,6211,6213,6214,6216],{},[68,6212,6103],{}," When Codex runs in ",[43,6215,5692],{}," mode, a debugging skill prevents it from spiraling into trial-and-error loops. It forces methodical investigation.",[107,6218,6220],{"className":109,"code":6219,"language":111,"meta":112,"style":112},"npx tokrepo install 78ed006e-0c05-4bab-91de-c0c72c3e4cc4\n",[43,6221,6222],{"__ignoreMap":112},[116,6223,6224,6226,6228,6230],{"class":118,"line":119},[116,6225,147],{"class":122},[116,6227,5945],{"class":126},[116,6229,127],{"class":126},[116,6231,6232],{"class":126}," 78ed006e-0c05-4bab-91de-c0c72c3e4cc4\n",[11,6234,6235],{},[22,6236,6125],{"href":6237,"rel":6238},"https:\u002F\u002Ftokrepo.com\u002Fen\u002Fworkflows\u002F78ed006e-0c05-4bab-91de-c0c72c3e4cc4",[26],[637,6240],{},[485,6242,2138],{"id":2137},[11,6244,6245,6247],{},[68,6246,598],{}," Creates structured plan files before executing complex tasks. Writes the plan to disk so it persists across context windows and sessions.",[11,6249,6250,6252],{},[68,6251,6103],{}," Codex CLI sessions can be long-running. Planning skills ensure the agent thinks before acting and maintains a written record of its approach.",[107,6254,6256],{"className":109,"code":6255,"language":111,"meta":112,"style":112},"npx tokrepo install 034be597-dbb5-4649-ad6e-98f9ff6332b8\n",[43,6257,6258],{"__ignoreMap":112},[116,6259,6260,6262,6264,6266],{"class":118,"line":119},[116,6261,147],{"class":122},[116,6263,5945],{"class":126},[116,6265,127],{"class":126},[116,6267,6268],{"class":126}," 034be597-dbb5-4649-ad6e-98f9ff6332b8\n",[11,6270,6271],{},[22,6272,6125],{"href":6273,"rel":6274},"https:\u002F\u002Ftokrepo.com\u002Fen\u002Fworkflows\u002F034be597-dbb5-4649-ad6e-98f9ff6332b8",[26],[637,6276],{},[485,6278,6280],{"id":6279},"_6-web-access","6. Web Access",[11,6282,6283,6285],{},[68,6284,598],{}," Gives the agent structured methods for fetching and parsing web content — documentation pages, API references, and live data.",[11,6287,6288,6290],{},[68,6289,6103],{}," By default, Codex CLI cannot browse the web. This skill provides patterns for incorporating external information when the agent needs to reference docs or check live endpoints.",[107,6292,6294],{"className":109,"code":6293,"language":111,"meta":112,"style":112},"npx tokrepo install 5766b7f4-bfdb-4048-87e7-50af1e5f6f88\n",[43,6295,6296],{"__ignoreMap":112},[116,6297,6298,6300,6302,6304],{"class":118,"line":119},[116,6299,147],{"class":122},[116,6301,5945],{"class":126},[116,6303,127],{"class":126},[116,6305,6306],{"class":126}," 5766b7f4-bfdb-4048-87e7-50af1e5f6f88\n",[11,6308,6309],{},[22,6310,6125],{"href":6311,"rel":6312},"https:\u002F\u002Ftokrepo.com\u002Fen\u002Fworkflows\u002F5766b7f4-bfdb-4048-87e7-50af1e5f6f88",[26],[637,6314],{},[485,6316,6318],{"id":6317},"_7-skill-creator","7. Skill Creator",[11,6320,6321,6323],{},[68,6322,598],{}," A meta-skill that guides you through creating new agent skills — writing the frontmatter, triggers, instructions, and testing steps.",[11,6325,6326,6328],{},[68,6327,6103],{}," Once you have used a few skills, you will want to create your own. This skill makes the process repeatable and ensures your custom skills follow best practices.",[107,6330,6332],{"className":109,"code":6331,"language":111,"meta":112,"style":112},"npx tokrepo install 0b7c0a41-97e1-4187-9cc5-4dc32d91a9cd\n",[43,6333,6334],{"__ignoreMap":112},[116,6335,6336,6338,6340,6342],{"class":118,"line":119},[116,6337,147],{"class":122},[116,6339,5945],{"class":126},[116,6341,127],{"class":126},[116,6343,2128],{"class":126},[11,6345,6346],{},[22,6347,6125],{"href":2133,"rel":6348},[26],[637,6350],{},[485,6352,6354],{"id":6353},"_8-agent-skills-standard","8. Agent Skills Standard",[11,6356,6357,6359],{},[68,6358,598],{}," Defines the universal standard for agent skill files — metadata fields, instruction format, trigger conventions, and compatibility rules across different AI agents.",[11,6361,6362,6364],{},[68,6363,6103],{}," If you want your skills to work across Codex CLI, Claude Code, and Gemini CLI, this standard tells you exactly what fields to include and how to structure them.",[107,6366,6368],{"className":109,"code":6367,"language":111,"meta":112,"style":112},"npx tokrepo install 1a1292f5-c88b-4eb5-b7dd-a3bf7bb29ee8\n",[43,6369,6370],{"__ignoreMap":112},[116,6371,6372,6374,6376,6378],{"class":118,"line":119},[116,6373,147],{"class":122},[116,6375,5945],{"class":126},[116,6377,127],{"class":126},[116,6379,3441],{"class":126},[11,6381,6382],{},[22,6383,6125],{"href":3446,"rel":6384},[26],[637,6386],{},[15,6388,6390],{"id":6389},"codex-cli-vs-claude-code-skill-compatibility","Codex CLI vs Claude Code: Skill Compatibility",[11,6392,6393],{},"Both Codex CLI and Claude Code support agent skills, but they read them differently. Understanding the differences helps you write skills that work with both.",[965,6395],{":headers":6396,":rows":6397},"[\"Feature\",\"Codex CLI\",\"Claude Code\"]","[[\"Skill file format\",\"AGENTS.md (Markdown)\",\".md files in .claude\u002Fcommands\u002F\"],[\"Discovery method\",\"Auto-scan from project root\",\"Fixed directory lookup\"],[\"Activation\",\"Always active (merged into context)\",\"On-demand (slash commands \u002F NL)\"],[\"Frontmatter\",\"Not required\",\"Optional (name, description, triggers)\"],[\"Subdirectory scoping\",\"Yes (directory-level AGENTS.md)\",\"No (global only)\"],[\"Multiple skills\",\"Single file with sections\",\"One file per skill\"],[\"Skill registry\",\"TokRepo \u002F manual copy\",\"TokRepo \u002F tokrepo install\"],[\"Model provider\",\"OpenAI (GPT-4.1, o3, o4-mini)\",\"Anthropic (Claude Sonnet\u002FOpus)\"]]",[485,6399,6401],{"id":6400},"key-takeaway","Key Takeaway",[11,6403,6404,6405,6407],{},"Skills written for Claude Code can be adapted for Codex CLI by copying the instruction content into ",[43,6406,56],{},". The core logic — the steps, rules, and workflows — transfers directly. Only the packaging differs.",[11,6409,6410,6411,1036],{},"For a deeper comparison of skill formats across all major AI coding agents, see ",[22,6412,1035],{"href":1034},[15,6414,1012],{"id":1011},[485,6416,6418],{"id":6417},"can-i-use-claude-code-skills-directly-with-codex-cli","Can I use Claude Code skills directly with Codex CLI?",[11,6420,6421,6422,6424,6425,6427,6428,6431],{},"Yes, with minor adaptation. Claude Code skills are Markdown files with instructions — the same format Codex CLI reads from ",[43,6423,56],{},". Copy the instruction content (everything below the frontmatter) into your ",[43,6426,56],{}," file. The frontmatter fields like ",[43,6429,6430],{},"triggers"," are Claude Code-specific and can be removed for Codex.",[485,6433,6435],{"id":6434},"does-codex-cli-support-slash-commands-like-claude-code","Does Codex CLI support slash commands like Claude Code?",[11,6437,6438,6439,6441,6442,1036],{},"No. Codex CLI does not have a slash command system. Instead, all instructions from ",[43,6440,56],{}," are loaded into context automatically. You activate specific workflows by describing what you want in natural language — for example, \"debug this issue using the systematic debugging approach\" instead of typing ",[43,6443,6444],{},"\u002Fdebug",[485,6446,6448],{"id":6447},"is-codex-cli-free-to-use","Is Codex CLI free to use?",[11,6450,6451,6452,6457],{},"Codex CLI itself is free and open source. However, it calls OpenAI's API, which requires a paid API key. Costs depend on the model you use — GPT-4.1 is more affordable for routine tasks, while o3 provides stronger reasoning for complex problems. Check ",[22,6453,6456],{"href":6454,"rel":6455},"https:\u002F\u002Fopenai.com\u002Fapi\u002Fpricing\u002F",[26],"OpenAI's pricing page"," for current rates.",[15,6459,1076],{"id":1075},[11,6461,6462],{},"Now that you have Codex CLI installed and configured with skills, explore these related guides:",[62,6464,6465,6470,6476,6481],{},[65,6466,6467,6469],{},[22,6468,1067],{"href":1066}," — build a custom skill from scratch",[65,6471,6472,6475],{},[22,6473,6474],{"href":1034},"Skills vs MCP vs Rules — Complete Guide"," — understand when to use each approach",[65,6477,6478,6480],{},[22,6479,2685],{"href":31}," — more skill recommendations (most work with Codex too)",[65,6482,6483,6486],{},[22,6484,6485],{"href":5537},"Gemini CLI Skills Guide"," — set up skills for Google's CLI agent",[11,6488,6489,6490,6493],{},"Browse the full skill catalog on ",[22,6491,482],{"href":480,"rel":6492},[26]," to find skills for your specific tech stack and workflow.",[1103,6495,6496],{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}",{"title":112,"searchDepth":280,"depth":280,"links":6498},[6499,6500,6508,6513,6518,6528,6531,6536],{"id":5474,"depth":280,"text":5475},{"id":5541,"depth":280,"text":5542,"children":6501},[6502,6503,6504,6505,6506,6507],{"id":1158,"depth":287,"text":1159},{"id":5555,"depth":287,"text":5556},{"id":5575,"depth":287,"text":5576},{"id":5631,"depth":287,"text":5632},{"id":5647,"depth":287,"text":5648},{"id":5669,"depth":287,"text":5670},{"id":5714,"depth":280,"text":5715,"children":6509},[6510,6511,6512],{"id":5727,"depth":287,"text":5728},{"id":5834,"depth":287,"text":5835},{"id":5878,"depth":287,"text":5879},{"id":474,"depth":280,"text":475,"children":6514},[6515,6516,6517],{"id":487,"depth":287,"text":488},{"id":5966,"depth":287,"text":5967},{"id":6044,"depth":287,"text":6045},{"id":6082,"depth":280,"text":6083,"children":6519},[6520,6521,6522,6523,6524,6525,6526,6527],{"id":2030,"depth":287,"text":2031},{"id":2851,"depth":287,"text":2852},{"id":6164,"depth":287,"text":6165},{"id":6202,"depth":287,"text":6203},{"id":2137,"depth":287,"text":2138},{"id":6279,"depth":287,"text":6280},{"id":6317,"depth":287,"text":6318},{"id":6353,"depth":287,"text":6354},{"id":6389,"depth":280,"text":6390,"children":6529},[6530],{"id":6400,"depth":287,"text":6401},{"id":1011,"depth":280,"text":1012,"children":6532},[6533,6534,6535],{"id":6417,"depth":287,"text":6418},{"id":6434,"depth":287,"text":6435},{"id":6447,"depth":287,"text":6448},{"id":1075,"depth":280,"text":1076},"Step-by-step guide to installing OpenAI Codex CLI, configuring AGENTS.md skills, and the 8 best skills to supercharge your coding workflow.","手把手教你安装 OpenAI Codex CLI、配置 AGENTS.md 技能文件，以及 8 个最值得安装的精选 Skill 推荐。","\u002Fguide\u002Fimages\u002Fcodex-cli-skills-hero.svg",{},"\u002Fen\u002Fguide\u002Fcodex-cli-skills",{"title":5466,"description":6537},"en\u002Fguide\u002Fcodex-cli-skills",[5642,6545,1144,1132],"openai","OpenAI Codex CLI Skill 入门：安装配置与精选推荐","84z330ibbsnGCBy7OD8-MaTSueIyDmSIiSZIaEsqNiA",{"id":6549,"title":6550,"author":6,"body":6551,"category":3670,"description":8503,"descriptionZh":8504,"extension":1135,"image":8505,"meta":8506,"navigation":283,"path":8507,"publishedAt":1139,"readTime":339,"seo":8508,"stem":8509,"tags":8510,"titleZh":8513,"updatedAt":1139,"__hash__":8514},"docs_en\u002Fen\u002Fguide\u002Fcursor-rules-guide.md","Best Cursor Rules in 2026 — 20 Rules to Supercharge Your AI Coding",{"type":8,"value":6552,"toc":8456},[6553,6560,6562,6578,6582,6588,6649,6659,6663,6669,6672,6676,6680,6683,6777,6782,6786,6793,6883,6888,6892,6899,6975,6980,6984,6990,7042,7050,7054,7057,7101,7106,7110,7114,7117,7202,7207,7211,7214,7305,7310,7314,7317,7417,7422,7426,7429,7529,7533,7540,7635,7639,7643,7685,7689,7736,7740,7787,7791,7838,7842,7894,7898,7902,7950,7954,8003,8007,8056,8060,8104,8108,8152,8156,8160,8163,8193,8197,8265,8269,8310,8314,8343,8348,8352,8359,8363,8379,8386,8388,8392,8398,8402,8405,8409,8426,8428,8453],[11,6554,6555,6556,6559],{},"Learn how to configure Cursor AI with 20 tested ",[43,6557,6558],{},".cursorrules"," files that cover frontend, backend, full-stack, and general development workflows. Each rule has been tested on real projects — we show you the format, the content, and how to combine multiple rules for maximum impact.",[15,6561,1159],{"id":1158},[62,6563,6564,6572,6575],{},[65,6565,6566,6571],{},[22,6567,6570],{"href":6568,"rel":6569},"https:\u002F\u002Fcursor.sh",[26],"Cursor"," installed (v0.45+)",[65,6573,6574],{},"A project directory where you want rules active",[65,6576,6577],{},"Basic understanding of how AI code assistants work",[15,6579,6581],{"id":6580},"what-are-cursor-rules","What Are Cursor Rules?",[11,6583,6584,6585,6587],{},"Cursor Rules are instruction files that tell Cursor AI how to behave in your project. Drop a ",[43,6586,6558],{}," file in your project root, and Cursor reads it every time you interact with its AI features — autocomplete, chat, Composer, and inline edits.",[107,6589,6591],{"className":268,"code":6590,"language":270,"meta":112,"style":112},"\u003C!-- .cursorrules -->\nYou are an expert React developer.\n\n## Code Style\n- Use functional components with hooks\n- Prefer named exports over default exports\n- Use TypeScript strict mode\n\n## Architecture\n- Follow the feature-based folder structure\n- Keep components under 200 lines\n- Extract shared logic into custom hooks\n",[43,6592,6593,6598,6603,6607,6611,6616,6621,6625,6629,6634,6639,6644],{"__ignoreMap":112},[116,6594,6595],{"class":118,"line":119},[116,6596,6597],{},"\u003C!-- .cursorrules -->\n",[116,6599,6600],{"class":118,"line":280},[116,6601,6602],{},"You are an expert React developer.\n",[116,6604,6605],{"class":118,"line":287},[116,6606,284],{"emptyLinePlaceholder":283},[116,6608,6609],{"class":118,"line":293},[116,6610,301],{},[116,6612,6613],{"class":118,"line":298},[116,6614,6615],{},"- Use functional components with hooks\n",[116,6617,6618],{"class":118,"line":304},[116,6619,6620],{},"- Prefer named exports over default exports\n",[116,6622,6623],{"class":118,"line":310},[116,6624,5776],{},[116,6626,6627],{"class":118,"line":316},[116,6628,284],{"emptyLinePlaceholder":283},[116,6630,6631],{"class":118,"line":322},[116,6632,6633],{},"## Architecture\n",[116,6635,6636],{"class":118,"line":327},[116,6637,6638],{},"- Follow the feature-based folder structure\n",[116,6640,6641],{"class":118,"line":333},[116,6642,6643],{},"- Keep components under 200 lines\n",[116,6645,6646],{"class":118,"line":339},[116,6647,6648],{},"- Extract shared logic into custom hooks\n",[11,6650,6651,6652,568,6655,6658],{},"The file sits at your project root alongside ",[43,6653,6654],{},"package.json",[43,6656,6657],{},"go.mod",". Cursor loads it automatically — no configuration needed.",[485,6660,6662],{"id":6661},"how-rules-get-applied","How Rules Get Applied",[107,6664,6667],{"className":6665,"code":6666,"language":1285},[1283],"┌──────────────┐     ┌──────────────┐     ┌──────────────┐\n│  .cursorrules │────▶│  Cursor AI   │────▶│  Generated   │\n│  (your rules) │     │  (context)   │     │  Code Output │\n└──────────────┘     └──────────────┘     └──────────────┘\n                           ▲\n                           │\n                     ┌──────────────┐\n                     │  Your Prompt │\n                     └──────────────┘\n",[43,6668,6666],{"__ignoreMap":112},[11,6670,6671],{},"Rules are prepended to every AI interaction. They act as a system prompt for your project, ensuring consistent behavior regardless of who's prompting.",[15,6673,6675],{"id":6674},"frontend-rules","Frontend Rules",[485,6677,6679],{"id":6678},"_1-react-typescript","1. React + TypeScript",[11,6681,6682],{},"The most popular Cursor rule. Enforces functional components, strict TypeScript, and modern React patterns.",[107,6684,6686],{"className":268,"code":6685,"language":270,"meta":112,"style":112},"\u003C!-- .cursorrules -->\nYou are an expert React and TypeScript developer.\n\n## Rules\n- Use functional components exclusively — no class components\n- TypeScript strict mode: no `any`, no implicit returns\n- Use React.FC sparingly; prefer explicit prop types\n- State management: Zustand for global, useState for local\n- Styling: Tailwind CSS utility classes, no inline styles\n\n## Component Structure\ninterface Props {\n  title: string;\n  onAction: () => void;\n}\n\nexport function MyComponent({ title, onAction }: Props) {\n  return \u003Cbutton onClick={onAction}>{title}\u003C\u002Fbutton>;\n}\n",[43,6687,6688,6692,6697,6701,6706,6711,6716,6721,6726,6731,6735,6740,6745,6750,6755,6759,6763,6768,6773],{"__ignoreMap":112},[116,6689,6690],{"class":118,"line":119},[116,6691,6597],{},[116,6693,6694],{"class":118,"line":280},[116,6695,6696],{},"You are an expert React and TypeScript developer.\n",[116,6698,6699],{"class":118,"line":287},[116,6700,284],{"emptyLinePlaceholder":283},[116,6702,6703],{"class":118,"line":293},[116,6704,6705],{},"## Rules\n",[116,6707,6708],{"class":118,"line":298},[116,6709,6710],{},"- Use functional components exclusively — no class components\n",[116,6712,6713],{"class":118,"line":304},[116,6714,6715],{},"- TypeScript strict mode: no `any`, no implicit returns\n",[116,6717,6718],{"class":118,"line":310},[116,6719,6720],{},"- Use React.FC sparingly; prefer explicit prop types\n",[116,6722,6723],{"class":118,"line":316},[116,6724,6725],{},"- State management: Zustand for global, useState for local\n",[116,6727,6728],{"class":118,"line":322},[116,6729,6730],{},"- Styling: Tailwind CSS utility classes, no inline styles\n",[116,6732,6733],{"class":118,"line":327},[116,6734,284],{"emptyLinePlaceholder":283},[116,6736,6737],{"class":118,"line":333},[116,6738,6739],{},"## Component Structure\n",[116,6741,6742],{"class":118,"line":339},[116,6743,6744],{},"interface Props {\n",[116,6746,6747],{"class":118,"line":345},[116,6748,6749],{},"  title: string;\n",[116,6751,6752],{"class":118,"line":350},[116,6753,6754],{},"  onAction: () => void;\n",[116,6756,6757],{"class":118,"line":356},[116,6758,464],{},[116,6760,6761],{"class":118,"line":362},[116,6762,284],{"emptyLinePlaceholder":283},[116,6764,6765],{"class":118,"line":1402},[116,6766,6767],{},"export function MyComponent({ title, onAction }: Props) {\n",[116,6769,6770],{"class":118,"line":1408},[116,6771,6772],{},"  return \u003Cbutton onClick={onAction}>{title}\u003C\u002Fbutton>;\n",[116,6774,6775],{"class":118,"line":1413},[116,6776,464],{},[11,6778,6779,6781],{},[68,6780,604],{}," Teams using Create React App, Vite, or any React project with TypeScript.",[485,6783,6785],{"id":6784},"_2-vue-3-composition-api","2. Vue 3 + Composition API",[11,6787,6788,6789,6792],{},"Enforces ",[43,6790,6791],{},"\u003Cscript setup>",", composables, and Pinia state management.",[107,6794,6796],{"className":268,"code":6795,"language":270,"meta":112,"style":112},"\u003C!-- .cursorrules -->\nYou are an expert Vue 3 developer using the Composition API.\n\n## Rules\n- Always use \u003Cscript setup lang=\"ts\">\n- Prefer composables (use*) for shared logic\n- State management: Pinia stores only\n- No Options API — ever\n- Use defineProps and defineEmits with TypeScript generics\n\n## File Structure\n\u003Cscript setup lang=\"ts\">\nimport { ref, computed } from 'vue'\n\nconst props = defineProps\u003C{ title: string }>()\nconst count = ref(0)\nconst doubled = computed(() => count.value * 2)\n\u003C\u002Fscript>\n",[43,6797,6798,6802,6807,6811,6815,6820,6825,6830,6835,6840,6844,6849,6854,6859,6863,6868,6873,6878],{"__ignoreMap":112},[116,6799,6800],{"class":118,"line":119},[116,6801,6597],{},[116,6803,6804],{"class":118,"line":280},[116,6805,6806],{},"You are an expert Vue 3 developer using the Composition API.\n",[116,6808,6809],{"class":118,"line":287},[116,6810,284],{"emptyLinePlaceholder":283},[116,6812,6813],{"class":118,"line":293},[116,6814,6705],{},[116,6816,6817],{"class":118,"line":298},[116,6818,6819],{},"- Always use \u003Cscript setup lang=\"ts\">\n",[116,6821,6822],{"class":118,"line":304},[116,6823,6824],{},"- Prefer composables (use*) for shared logic\n",[116,6826,6827],{"class":118,"line":310},[116,6828,6829],{},"- State management: Pinia stores only\n",[116,6831,6832],{"class":118,"line":316},[116,6833,6834],{},"- No Options API — ever\n",[116,6836,6837],{"class":118,"line":322},[116,6838,6839],{},"- Use defineProps and defineEmits with TypeScript generics\n",[116,6841,6842],{"class":118,"line":327},[116,6843,284],{"emptyLinePlaceholder":283},[116,6845,6846],{"class":118,"line":333},[116,6847,6848],{},"## File Structure\n",[116,6850,6851],{"class":118,"line":339},[116,6852,6853],{},"\u003Cscript setup lang=\"ts\">\n",[116,6855,6856],{"class":118,"line":345},[116,6857,6858],{},"import { ref, computed } from 'vue'\n",[116,6860,6861],{"class":118,"line":350},[116,6862,284],{"emptyLinePlaceholder":283},[116,6864,6865],{"class":118,"line":356},[116,6866,6867],{},"const props = defineProps\u003C{ title: string }>()\n",[116,6869,6870],{"class":118,"line":362},[116,6871,6872],{},"const count = ref(0)\n",[116,6874,6875],{"class":118,"line":1402},[116,6876,6877],{},"const doubled = computed(() => count.value * 2)\n",[116,6879,6880],{"class":118,"line":1408},[116,6881,6882],{},"\u003C\u002Fscript>\n",[11,6884,6885,6887],{},[68,6886,604],{}," Vue 3 projects, especially those migrating from Options API.",[485,6889,6891],{"id":6890},"_3-nextjs-app-router","3. Next.js App Router",[11,6893,6894,6895,6898],{},"Focuses on the App Router paradigm — Server Components, Server Actions, and the ",[43,6896,6897],{},"app\u002F"," directory structure.",[107,6900,6902],{"className":268,"code":6901,"language":270,"meta":112,"style":112},"\u003C!-- .cursorrules -->\nYou are an expert Next.js developer using the App Router (v14+).\n\n## Rules\n- Default to Server Components; add 'use client' only when needed\n- Use Server Actions for form handling and mutations\n- Route handlers in app\u002Fapi\u002F for external API endpoints\n- Metadata API for SEO (generateMetadata, not Head)\n- Image optimization: always use next\u002Fimage\n- Loading states: loading.tsx and Suspense boundaries\n\n## Data Fetching\n- Server Components: fetch() with revalidate options\n- Client Components: useSWR or React Query\n- Never use getServerSideProps or getStaticProps (Pages Router patterns)\n",[43,6903,6904,6908,6913,6917,6921,6926,6931,6936,6941,6946,6951,6955,6960,6965,6970],{"__ignoreMap":112},[116,6905,6906],{"class":118,"line":119},[116,6907,6597],{},[116,6909,6910],{"class":118,"line":280},[116,6911,6912],{},"You are an expert Next.js developer using the App Router (v14+).\n",[116,6914,6915],{"class":118,"line":287},[116,6916,284],{"emptyLinePlaceholder":283},[116,6918,6919],{"class":118,"line":293},[116,6920,6705],{},[116,6922,6923],{"class":118,"line":298},[116,6924,6925],{},"- Default to Server Components; add 'use client' only when needed\n",[116,6927,6928],{"class":118,"line":304},[116,6929,6930],{},"- Use Server Actions for form handling and mutations\n",[116,6932,6933],{"class":118,"line":310},[116,6934,6935],{},"- Route handlers in app\u002Fapi\u002F for external API endpoints\n",[116,6937,6938],{"class":118,"line":316},[116,6939,6940],{},"- Metadata API for SEO (generateMetadata, not Head)\n",[116,6942,6943],{"class":118,"line":322},[116,6944,6945],{},"- Image optimization: always use next\u002Fimage\n",[116,6947,6948],{"class":118,"line":327},[116,6949,6950],{},"- Loading states: loading.tsx and Suspense boundaries\n",[116,6952,6953],{"class":118,"line":333},[116,6954,284],{"emptyLinePlaceholder":283},[116,6956,6957],{"class":118,"line":339},[116,6958,6959],{},"## Data Fetching\n",[116,6961,6962],{"class":118,"line":345},[116,6963,6964],{},"- Server Components: fetch() with revalidate options\n",[116,6966,6967],{"class":118,"line":350},[116,6968,6969],{},"- Client Components: useSWR or React Query\n",[116,6971,6972],{"class":118,"line":356},[116,6973,6974],{},"- Never use getServerSideProps or getStaticProps (Pages Router patterns)\n",[11,6976,6977,6979],{},[68,6978,604],{}," Next.js 14+ projects using the App Router. If you're on Pages Router, use a different rule.",[485,6981,6983],{"id":6982},"_4-nuxt-3","4. Nuxt 3",[11,6985,6986,6987,546],{},"Covers Nuxt 3 conventions — auto-imports, server routes, and the ",[43,6988,6989],{},"composables\u002F",[107,6991,6993],{"className":268,"code":6992,"language":270,"meta":112,"style":112},"\u003C!-- .cursorrules -->\nYou are an expert Nuxt 3 developer.\n\n## Rules\n- Use auto-imported composables (useState, useRoute, useFetch)\n- Server routes in server\u002Fapi\u002F with defineEventHandler\n- Components auto-imported from components\u002F directory\n- Layouts in layouts\u002F, middleware in middleware\u002F\n- Use definePageMeta for page-level configuration\n- SSR by default; use \u003CClientOnly> for browser-only components\n",[43,6994,6995,6999,7004,7008,7012,7017,7022,7027,7032,7037],{"__ignoreMap":112},[116,6996,6997],{"class":118,"line":119},[116,6998,6597],{},[116,7000,7001],{"class":118,"line":280},[116,7002,7003],{},"You are an expert Nuxt 3 developer.\n",[116,7005,7006],{"class":118,"line":287},[116,7007,284],{"emptyLinePlaceholder":283},[116,7009,7010],{"class":118,"line":293},[116,7011,6705],{},[116,7013,7014],{"class":118,"line":298},[116,7015,7016],{},"- Use auto-imported composables (useState, useRoute, useFetch)\n",[116,7018,7019],{"class":118,"line":304},[116,7020,7021],{},"- Server routes in server\u002Fapi\u002F with defineEventHandler\n",[116,7023,7024],{"class":118,"line":310},[116,7025,7026],{},"- Components auto-imported from components\u002F directory\n",[116,7028,7029],{"class":118,"line":316},[116,7030,7031],{},"- Layouts in layouts\u002F, middleware in middleware\u002F\n",[116,7033,7034],{"class":118,"line":322},[116,7035,7036],{},"- Use definePageMeta for page-level configuration\n",[116,7038,7039],{"class":118,"line":327},[116,7040,7041],{},"- SSR by default; use \u003CClientOnly> for browser-only components\n",[11,7043,7044,7046,7047,7049],{},[68,7045,604],{}," Nuxt 3 projects. See our ",[22,7048,2685],{"href":31}," for complementary Nuxt tooling.",[485,7051,7053],{"id":7052},"_5-tailwind-css","5. Tailwind CSS",[11,7055,7056],{},"Ensures consistent utility class usage and prevents common Tailwind anti-patterns.",[107,7058,7060],{"className":268,"code":7059,"language":270,"meta":112,"style":112},"\u003C!-- .cursorrules -->\n## Tailwind CSS Rules\n- Never use @apply in components — use utility classes directly\n- Responsive: mobile-first (sm:, md:, lg:, xl:)\n- Dark mode: use dark: prefix, assume class-based dark mode\n- Custom values: extend theme in tailwind.config.ts, don't use arbitrary values\n- Spacing: stick to the default scale (4, 8, 12, 16...), avoid arbitrary px values\n- Colors: use project theme colors, never hardcode hex values\n",[43,7061,7062,7066,7071,7076,7081,7086,7091,7096],{"__ignoreMap":112},[116,7063,7064],{"class":118,"line":119},[116,7065,6597],{},[116,7067,7068],{"class":118,"line":280},[116,7069,7070],{},"## Tailwind CSS Rules\n",[116,7072,7073],{"class":118,"line":287},[116,7074,7075],{},"- Never use @apply in components — use utility classes directly\n",[116,7077,7078],{"class":118,"line":293},[116,7079,7080],{},"- Responsive: mobile-first (sm:, md:, lg:, xl:)\n",[116,7082,7083],{"class":118,"line":298},[116,7084,7085],{},"- Dark mode: use dark: prefix, assume class-based dark mode\n",[116,7087,7088],{"class":118,"line":304},[116,7089,7090],{},"- Custom values: extend theme in tailwind.config.ts, don't use arbitrary values\n",[116,7092,7093],{"class":118,"line":310},[116,7094,7095],{},"- Spacing: stick to the default scale (4, 8, 12, 16...), avoid arbitrary px values\n",[116,7097,7098],{"class":118,"line":316},[116,7099,7100],{},"- Colors: use project theme colors, never hardcode hex values\n",[11,7102,7103,7105],{},[68,7104,604],{}," Any project using Tailwind CSS, regardless of framework.",[15,7107,7109],{"id":7108},"backend-rules","Backend Rules",[485,7111,7113],{"id":7112},"_6-go-golang","6. Go (Golang)",[11,7115,7116],{},"Enforces idiomatic Go — error handling, naming conventions, and package structure.",[107,7118,7120],{"className":268,"code":7119,"language":270,"meta":112,"style":112},"\u003C!-- .cursorrules -->\nYou are an expert Go developer following Go idioms.\n\n## Rules\n- Always handle errors explicitly — never use _ for error returns\n- Use short variable names in small scopes (i, j, n), descriptive names in larger scopes\n- Prefer returning errors over panicking\n- Package names: short, lowercase, no underscores\n- Interfaces: accept interfaces, return structs\n- Concurrency: always use context.Context as first parameter\n- Testing: table-driven tests with subtests\n\n## Error Handling Pattern\nresult, err := doSomething()\nif err != nil {\n    return fmt.Errorf(\"doSomething failed: %w\", err)\n}\n",[43,7121,7122,7126,7131,7135,7139,7144,7149,7154,7159,7164,7169,7174,7178,7183,7188,7193,7198],{"__ignoreMap":112},[116,7123,7124],{"class":118,"line":119},[116,7125,6597],{},[116,7127,7128],{"class":118,"line":280},[116,7129,7130],{},"You are an expert Go developer following Go idioms.\n",[116,7132,7133],{"class":118,"line":287},[116,7134,284],{"emptyLinePlaceholder":283},[116,7136,7137],{"class":118,"line":293},[116,7138,6705],{},[116,7140,7141],{"class":118,"line":298},[116,7142,7143],{},"- Always handle errors explicitly — never use _ for error returns\n",[116,7145,7146],{"class":118,"line":304},[116,7147,7148],{},"- Use short variable names in small scopes (i, j, n), descriptive names in larger scopes\n",[116,7150,7151],{"class":118,"line":310},[116,7152,7153],{},"- Prefer returning errors over panicking\n",[116,7155,7156],{"class":118,"line":316},[116,7157,7158],{},"- Package names: short, lowercase, no underscores\n",[116,7160,7161],{"class":118,"line":322},[116,7162,7163],{},"- Interfaces: accept interfaces, return structs\n",[116,7165,7166],{"class":118,"line":327},[116,7167,7168],{},"- Concurrency: always use context.Context as first parameter\n",[116,7170,7171],{"class":118,"line":333},[116,7172,7173],{},"- Testing: table-driven tests with subtests\n",[116,7175,7176],{"class":118,"line":339},[116,7177,284],{"emptyLinePlaceholder":283},[116,7179,7180],{"class":118,"line":345},[116,7181,7182],{},"## Error Handling Pattern\n",[116,7184,7185],{"class":118,"line":350},[116,7186,7187],{},"result, err := doSomething()\n",[116,7189,7190],{"class":118,"line":356},[116,7191,7192],{},"if err != nil {\n",[116,7194,7195],{"class":118,"line":362},[116,7196,7197],{},"    return fmt.Errorf(\"doSomething failed: %w\", err)\n",[116,7199,7200],{"class":118,"line":1402},[116,7201,464],{},[11,7203,7204,7206],{},[68,7205,604],{}," Go microservices, CLI tools, and backend APIs.",[485,7208,7210],{"id":7209},"_7-python-fastapi","7. Python (FastAPI)",[11,7212,7213],{},"Covers type hints, Pydantic models, and async patterns.",[107,7215,7217],{"className":268,"code":7216,"language":270,"meta":112,"style":112},"\u003C!-- .cursorrules -->\nYou are an expert Python developer using FastAPI.\n\n## Rules\n- Type hints on all function signatures — no untyped code\n- Pydantic v2 models for request\u002Fresponse schemas\n- Async by default: use async def for route handlers\n- Dependency injection via Depends()\n- Error handling: raise HTTPException with proper status codes\n- Database: SQLAlchemy 2.0 async with typed queries\n\n## Route Pattern\n@router.get(\"\u002Fusers\u002F{user_id}\", response_model=UserResponse)\nasync def get_user(user_id: int, db: AsyncSession = Depends(get_db)):\n    user = await db.get(User, user_id)\n    if not user:\n        raise HTTPException(status_code=404, detail=\"User not found\")\n    return user\n",[43,7218,7219,7223,7228,7232,7236,7241,7246,7251,7256,7261,7266,7270,7275,7280,7285,7290,7295,7300],{"__ignoreMap":112},[116,7220,7221],{"class":118,"line":119},[116,7222,6597],{},[116,7224,7225],{"class":118,"line":280},[116,7226,7227],{},"You are an expert Python developer using FastAPI.\n",[116,7229,7230],{"class":118,"line":287},[116,7231,284],{"emptyLinePlaceholder":283},[116,7233,7234],{"class":118,"line":293},[116,7235,6705],{},[116,7237,7238],{"class":118,"line":298},[116,7239,7240],{},"- Type hints on all function signatures — no untyped code\n",[116,7242,7243],{"class":118,"line":304},[116,7244,7245],{},"- Pydantic v2 models for request\u002Fresponse schemas\n",[116,7247,7248],{"class":118,"line":310},[116,7249,7250],{},"- Async by default: use async def for route handlers\n",[116,7252,7253],{"class":118,"line":316},[116,7254,7255],{},"- Dependency injection via Depends()\n",[116,7257,7258],{"class":118,"line":322},[116,7259,7260],{},"- Error handling: raise HTTPException with proper status codes\n",[116,7262,7263],{"class":118,"line":327},[116,7264,7265],{},"- Database: SQLAlchemy 2.0 async with typed queries\n",[116,7267,7268],{"class":118,"line":333},[116,7269,284],{"emptyLinePlaceholder":283},[116,7271,7272],{"class":118,"line":339},[116,7273,7274],{},"## Route Pattern\n",[116,7276,7277],{"class":118,"line":345},[116,7278,7279],{},"@router.get(\"\u002Fusers\u002F{user_id}\", response_model=UserResponse)\n",[116,7281,7282],{"class":118,"line":350},[116,7283,7284],{},"async def get_user(user_id: int, db: AsyncSession = Depends(get_db)):\n",[116,7286,7287],{"class":118,"line":356},[116,7288,7289],{},"    user = await db.get(User, user_id)\n",[116,7291,7292],{"class":118,"line":362},[116,7293,7294],{},"    if not user:\n",[116,7296,7297],{"class":118,"line":1402},[116,7298,7299],{},"        raise HTTPException(status_code=404, detail=\"User not found\")\n",[116,7301,7302],{"class":118,"line":1408},[116,7303,7304],{},"    return user\n",[11,7306,7307,7309],{},[68,7308,604],{}," Python backends using FastAPI, SQLAlchemy, and Pydantic.",[485,7311,7313],{"id":7312},"_8-nodejs-expresshono","8. Node.js (Express\u002FHono)",[11,7315,7316],{},"Covers modern Node patterns — ESM imports, middleware composition, and error handling.",[107,7318,7320],{"className":268,"code":7319,"language":270,"meta":112,"style":112},"\u003C!-- .cursorrules -->\nYou are an expert Node.js backend developer.\n\n## Rules\n- ESM imports (import\u002Fexport), never CommonJS (require)\n- Use Hono or Express with TypeScript\n- Middleware: compose small, focused middleware functions\n- Validation: use Zod for request body validation\n- Error handling: centralized error handler middleware\n- Environment: use dotenv, never hardcode config values\n- Logging: structured JSON logs with pino\n\n## Middleware Pattern\nconst validateBody = (schema: ZodSchema) => async (c: Context, next: Next) => {\n  const body = await c.req.json()\n  const result = schema.safeParse(body)\n  if (!result.success) return c.json({ error: result.error }, 400)\n  c.set('body', result.data)\n  await next()\n}\n",[43,7321,7322,7326,7331,7335,7339,7344,7349,7354,7359,7364,7369,7374,7378,7383,7388,7393,7398,7403,7408,7413],{"__ignoreMap":112},[116,7323,7324],{"class":118,"line":119},[116,7325,6597],{},[116,7327,7328],{"class":118,"line":280},[116,7329,7330],{},"You are an expert Node.js backend developer.\n",[116,7332,7333],{"class":118,"line":287},[116,7334,284],{"emptyLinePlaceholder":283},[116,7336,7337],{"class":118,"line":293},[116,7338,6705],{},[116,7340,7341],{"class":118,"line":298},[116,7342,7343],{},"- ESM imports (import\u002Fexport), never CommonJS (require)\n",[116,7345,7346],{"class":118,"line":304},[116,7347,7348],{},"- Use Hono or Express with TypeScript\n",[116,7350,7351],{"class":118,"line":310},[116,7352,7353],{},"- Middleware: compose small, focused middleware functions\n",[116,7355,7356],{"class":118,"line":316},[116,7357,7358],{},"- Validation: use Zod for request body validation\n",[116,7360,7361],{"class":118,"line":322},[116,7362,7363],{},"- Error handling: centralized error handler middleware\n",[116,7365,7366],{"class":118,"line":327},[116,7367,7368],{},"- Environment: use dotenv, never hardcode config values\n",[116,7370,7371],{"class":118,"line":333},[116,7372,7373],{},"- Logging: structured JSON logs with pino\n",[116,7375,7376],{"class":118,"line":339},[116,7377,284],{"emptyLinePlaceholder":283},[116,7379,7380],{"class":118,"line":345},[116,7381,7382],{},"## Middleware Pattern\n",[116,7384,7385],{"class":118,"line":350},[116,7386,7387],{},"const validateBody = (schema: ZodSchema) => async (c: Context, next: Next) => {\n",[116,7389,7390],{"class":118,"line":356},[116,7391,7392],{},"  const body = await c.req.json()\n",[116,7394,7395],{"class":118,"line":362},[116,7396,7397],{},"  const result = schema.safeParse(body)\n",[116,7399,7400],{"class":118,"line":1402},[116,7401,7402],{},"  if (!result.success) return c.json({ error: result.error }, 400)\n",[116,7404,7405],{"class":118,"line":1408},[116,7406,7407],{},"  c.set('body', result.data)\n",[116,7409,7410],{"class":118,"line":1413},[116,7411,7412],{},"  await next()\n",[116,7414,7415],{"class":118,"line":1419},[116,7416,464],{},[11,7418,7419,7421],{},[68,7420,604],{}," Node.js APIs, especially with Hono, Express, or Fastify.",[485,7423,7425],{"id":7424},"_9-django","9. Django",[11,7427,7428],{},"Covers Django conventions — model design, views, serializers, and admin.",[107,7430,7432],{"className":268,"code":7431,"language":270,"meta":112,"style":112},"\u003C!-- .cursorrules -->\nYou are an expert Django developer.\n\n## Rules\n- Use Django REST Framework for APIs\n- Models: explicit field types, always add Meta class with ordering\n- Views: prefer class-based views (APIView, ViewSet)\n- Serializers: always validate at the serializer level\n- Migrations: always review auto-generated migrations before applying\n- Security: use Django's built-in protections (CSRF, XSS, SQL injection)\n- Testing: use pytest-django with fixtures\n\n## Model Pattern\nclass Article(models.Model):\n    title = models.CharField(max_length=200)\n    slug = models.SlugField(unique=True)\n    created_at = models.DateTimeField(auto_now_add=True)\n\n    class Meta:\n        ordering = ['-created_at']\n",[43,7433,7434,7438,7443,7447,7451,7456,7461,7466,7471,7476,7481,7486,7490,7495,7500,7505,7510,7515,7519,7524],{"__ignoreMap":112},[116,7435,7436],{"class":118,"line":119},[116,7437,6597],{},[116,7439,7440],{"class":118,"line":280},[116,7441,7442],{},"You are an expert Django developer.\n",[116,7444,7445],{"class":118,"line":287},[116,7446,284],{"emptyLinePlaceholder":283},[116,7448,7449],{"class":118,"line":293},[116,7450,6705],{},[116,7452,7453],{"class":118,"line":298},[116,7454,7455],{},"- Use Django REST Framework for APIs\n",[116,7457,7458],{"class":118,"line":304},[116,7459,7460],{},"- Models: explicit field types, always add Meta class with ordering\n",[116,7462,7463],{"class":118,"line":310},[116,7464,7465],{},"- Views: prefer class-based views (APIView, ViewSet)\n",[116,7467,7468],{"class":118,"line":316},[116,7469,7470],{},"- Serializers: always validate at the serializer level\n",[116,7472,7473],{"class":118,"line":322},[116,7474,7475],{},"- Migrations: always review auto-generated migrations before applying\n",[116,7477,7478],{"class":118,"line":327},[116,7479,7480],{},"- Security: use Django's built-in protections (CSRF, XSS, SQL injection)\n",[116,7482,7483],{"class":118,"line":333},[116,7484,7485],{},"- Testing: use pytest-django with fixtures\n",[116,7487,7488],{"class":118,"line":339},[116,7489,284],{"emptyLinePlaceholder":283},[116,7491,7492],{"class":118,"line":345},[116,7493,7494],{},"## Model Pattern\n",[116,7496,7497],{"class":118,"line":350},[116,7498,7499],{},"class Article(models.Model):\n",[116,7501,7502],{"class":118,"line":356},[116,7503,7504],{},"    title = models.CharField(max_length=200)\n",[116,7506,7507],{"class":118,"line":362},[116,7508,7509],{},"    slug = models.SlugField(unique=True)\n",[116,7511,7512],{"class":118,"line":1402},[116,7513,7514],{},"    created_at = models.DateTimeField(auto_now_add=True)\n",[116,7516,7517],{"class":118,"line":1408},[116,7518,284],{"emptyLinePlaceholder":283},[116,7520,7521],{"class":118,"line":1413},[116,7522,7523],{},"    class Meta:\n",[116,7525,7526],{"class":118,"line":1419},[116,7527,7528],{},"        ordering = ['-created_at']\n",[485,7530,7532],{"id":7531},"_10-rust","10. Rust",[11,7534,7535,7536,7539],{},"Covers ownership patterns, error handling with ",[43,7537,7538],{},"Result",", and idiomatic Rust.",[107,7541,7543],{"className":268,"code":7542,"language":270,"meta":112,"style":112},"\u003C!-- .cursorrules -->\nYou are an expert Rust developer.\n\n## Rules\n- Prefer &str over String for function parameters\n- Use Result\u003CT, E> for fallible operations, never panic in libraries\n- Derive common traits: Debug, Clone, PartialEq\n- Use thiserror for library errors, anyhow for application errors\n- Prefer iterators over manual loops\n- Lifetimes: only annotate when the compiler requires it\n\n## Error Handling\n#[derive(Debug, thiserror::Error)]\nenum AppError {\n    #[error(\"not found: {0}\")]\n    NotFound(String),\n    #[error(transparent)]\n    Database(#[from] sqlx::Error),\n}\n",[43,7544,7545,7549,7554,7558,7562,7567,7572,7577,7582,7587,7592,7596,7601,7606,7611,7616,7621,7626,7631],{"__ignoreMap":112},[116,7546,7547],{"class":118,"line":119},[116,7548,6597],{},[116,7550,7551],{"class":118,"line":280},[116,7552,7553],{},"You are an expert Rust developer.\n",[116,7555,7556],{"class":118,"line":287},[116,7557,284],{"emptyLinePlaceholder":283},[116,7559,7560],{"class":118,"line":293},[116,7561,6705],{},[116,7563,7564],{"class":118,"line":298},[116,7565,7566],{},"- Prefer &str over String for function parameters\n",[116,7568,7569],{"class":118,"line":304},[116,7570,7571],{},"- Use Result\u003CT, E> for fallible operations, never panic in libraries\n",[116,7573,7574],{"class":118,"line":310},[116,7575,7576],{},"- Derive common traits: Debug, Clone, PartialEq\n",[116,7578,7579],{"class":118,"line":316},[116,7580,7581],{},"- Use thiserror for library errors, anyhow for application errors\n",[116,7583,7584],{"class":118,"line":322},[116,7585,7586],{},"- Prefer iterators over manual loops\n",[116,7588,7589],{"class":118,"line":327},[116,7590,7591],{},"- Lifetimes: only annotate when the compiler requires it\n",[116,7593,7594],{"class":118,"line":333},[116,7595,284],{"emptyLinePlaceholder":283},[116,7597,7598],{"class":118,"line":339},[116,7599,7600],{},"## Error Handling\n",[116,7602,7603],{"class":118,"line":345},[116,7604,7605],{},"#[derive(Debug, thiserror::Error)]\n",[116,7607,7608],{"class":118,"line":350},[116,7609,7610],{},"enum AppError {\n",[116,7612,7613],{"class":118,"line":356},[116,7614,7615],{},"    #[error(\"not found: {0}\")]\n",[116,7617,7618],{"class":118,"line":362},[116,7619,7620],{},"    NotFound(String),\n",[116,7622,7623],{"class":118,"line":1402},[116,7624,7625],{},"    #[error(transparent)]\n",[116,7627,7628],{"class":118,"line":1408},[116,7629,7630],{},"    Database(#[from] sqlx::Error),\n",[116,7632,7633],{"class":118,"line":1413},[116,7634,464],{},[15,7636,7638],{"id":7637},"full-stack-rules","Full-Stack Rules",[485,7640,7642],{"id":7641},"_11-t3-stack-nextjs-trpc-prisma","11. T3 Stack (Next.js + tRPC + Prisma)",[107,7644,7646],{"className":268,"code":7645,"language":270,"meta":112,"style":112},"\u003C!-- .cursorrules -->\nYou are an expert T3 Stack developer (Next.js, tRPC, Prisma, NextAuth).\n\n## Rules\n- tRPC routers in server\u002Fapi\u002Frouters\u002F with input validation via Zod\n- Prisma: always use select\u002Finclude to avoid over-fetching\n- Auth: use NextAuth.js with getServerSession for server-side checks\n- Type safety: leverage tRPC's end-to-end type inference — never manually type API responses\n",[43,7647,7648,7652,7657,7661,7665,7670,7675,7680],{"__ignoreMap":112},[116,7649,7650],{"class":118,"line":119},[116,7651,6597],{},[116,7653,7654],{"class":118,"line":280},[116,7655,7656],{},"You are an expert T3 Stack developer (Next.js, tRPC, Prisma, NextAuth).\n",[116,7658,7659],{"class":118,"line":287},[116,7660,284],{"emptyLinePlaceholder":283},[116,7662,7663],{"class":118,"line":293},[116,7664,6705],{},[116,7666,7667],{"class":118,"line":298},[116,7668,7669],{},"- tRPC routers in server\u002Fapi\u002Frouters\u002F with input validation via Zod\n",[116,7671,7672],{"class":118,"line":304},[116,7673,7674],{},"- Prisma: always use select\u002Finclude to avoid over-fetching\n",[116,7676,7677],{"class":118,"line":310},[116,7678,7679],{},"- Auth: use NextAuth.js with getServerSession for server-side checks\n",[116,7681,7682],{"class":118,"line":316},[116,7683,7684],{},"- Type safety: leverage tRPC's end-to-end type inference — never manually type API responses\n",[485,7686,7688],{"id":7687},"_12-mern-stack","12. MERN Stack",[107,7690,7692],{"className":268,"code":7691,"language":270,"meta":112,"style":112},"\u003C!-- .cursorrules -->\nYou are an expert MERN stack developer (MongoDB, Express, React, Node).\n\n## Rules\n- Backend: Express with TypeScript, Mongoose ODM\n- Frontend: React with TypeScript and Vite\n- API: RESTful with proper HTTP status codes\n- Validation: Zod on backend, React Hook Form on frontend\n- Auth: JWT with httpOnly cookies, never localStorage\n",[43,7693,7694,7698,7703,7707,7711,7716,7721,7726,7731],{"__ignoreMap":112},[116,7695,7696],{"class":118,"line":119},[116,7697,6597],{},[116,7699,7700],{"class":118,"line":280},[116,7701,7702],{},"You are an expert MERN stack developer (MongoDB, Express, React, Node).\n",[116,7704,7705],{"class":118,"line":287},[116,7706,284],{"emptyLinePlaceholder":283},[116,7708,7709],{"class":118,"line":293},[116,7710,6705],{},[116,7712,7713],{"class":118,"line":298},[116,7714,7715],{},"- Backend: Express with TypeScript, Mongoose ODM\n",[116,7717,7718],{"class":118,"line":304},[116,7719,7720],{},"- Frontend: React with TypeScript and Vite\n",[116,7722,7723],{"class":118,"line":310},[116,7724,7725],{},"- API: RESTful with proper HTTP status codes\n",[116,7727,7728],{"class":118,"line":316},[116,7729,7730],{},"- Validation: Zod on backend, React Hook Form on frontend\n",[116,7732,7733],{"class":118,"line":322},[116,7734,7735],{},"- Auth: JWT with httpOnly cookies, never localStorage\n",[485,7737,7739],{"id":7738},"_13-laravel-vue","13. Laravel + Vue",[107,7741,7743],{"className":268,"code":7742,"language":270,"meta":112,"style":112},"\u003C!-- .cursorrules -->\nYou are an expert Laravel + Vue developer.\n\n## Rules\n- Laravel: use Eloquent relationships, form requests for validation\n- Vue: Composition API with \u003Cscript setup>\n- Inertia.js for SPA-like navigation without API routes\n- Auth: Laravel Sanctum for SPA authentication\n- Testing: PHPUnit for backend, Vitest for frontend\n",[43,7744,7745,7749,7754,7758,7762,7767,7772,7777,7782],{"__ignoreMap":112},[116,7746,7747],{"class":118,"line":119},[116,7748,6597],{},[116,7750,7751],{"class":118,"line":280},[116,7752,7753],{},"You are an expert Laravel + Vue developer.\n",[116,7755,7756],{"class":118,"line":287},[116,7757,284],{"emptyLinePlaceholder":283},[116,7759,7760],{"class":118,"line":293},[116,7761,6705],{},[116,7763,7764],{"class":118,"line":298},[116,7765,7766],{},"- Laravel: use Eloquent relationships, form requests for validation\n",[116,7768,7769],{"class":118,"line":304},[116,7770,7771],{},"- Vue: Composition API with \u003Cscript setup>\n",[116,7773,7774],{"class":118,"line":310},[116,7775,7776],{},"- Inertia.js for SPA-like navigation without API routes\n",[116,7778,7779],{"class":118,"line":316},[116,7780,7781],{},"- Auth: Laravel Sanctum for SPA authentication\n",[116,7783,7784],{"class":118,"line":322},[116,7785,7786],{},"- Testing: PHPUnit for backend, Vitest for frontend\n",[485,7788,7790],{"id":7789},"_14-rails-react","14. Rails + React",[107,7792,7794],{"className":268,"code":7793,"language":270,"meta":112,"style":112},"\u003C!-- .cursorrules -->\nYou are an expert Ruby on Rails + React developer.\n\n## Rules\n- Rails: follow Rails conventions (fat models, skinny controllers)\n- React: served via Rails asset pipeline or separate Vite app\n- API: jbuilder or Active Model Serializers for JSON responses\n- Testing: RSpec + FactoryBot for Rails, Jest for React\n- Database: use migrations, never modify schema directly\n",[43,7795,7796,7800,7805,7809,7813,7818,7823,7828,7833],{"__ignoreMap":112},[116,7797,7798],{"class":118,"line":119},[116,7799,6597],{},[116,7801,7802],{"class":118,"line":280},[116,7803,7804],{},"You are an expert Ruby on Rails + React developer.\n",[116,7806,7807],{"class":118,"line":287},[116,7808,284],{"emptyLinePlaceholder":283},[116,7810,7811],{"class":118,"line":293},[116,7812,6705],{},[116,7814,7815],{"class":118,"line":298},[116,7816,7817],{},"- Rails: follow Rails conventions (fat models, skinny controllers)\n",[116,7819,7820],{"class":118,"line":304},[116,7821,7822],{},"- React: served via Rails asset pipeline or separate Vite app\n",[116,7824,7825],{"class":118,"line":310},[116,7826,7827],{},"- API: jbuilder or Active Model Serializers for JSON responses\n",[116,7829,7830],{"class":118,"line":316},[116,7831,7832],{},"- Testing: RSpec + FactoryBot for Rails, Jest for React\n",[116,7834,7835],{"class":118,"line":322},[116,7836,7837],{},"- Database: use migrations, never modify schema directly\n",[485,7839,7841],{"id":7840},"_15-supabase-full-stack","15. Supabase Full-Stack",[107,7843,7845],{"className":268,"code":7844,"language":270,"meta":112,"style":112},"\u003C!-- .cursorrules -->\nYou are an expert Supabase developer.\n\n## Rules\n- Use Supabase client library, never raw PostgreSQL connections\n- Auth: Supabase Auth with Row Level Security (RLS)\n- Storage: Supabase Storage with signed URLs for private files\n- Edge Functions: Deno runtime with Supabase client\n- Real-time: use Supabase Realtime for live subscriptions\n- Always enable RLS on every table — no exceptions\n",[43,7846,7847,7851,7856,7860,7864,7869,7874,7879,7884,7889],{"__ignoreMap":112},[116,7848,7849],{"class":118,"line":119},[116,7850,6597],{},[116,7852,7853],{"class":118,"line":280},[116,7854,7855],{},"You are an expert Supabase developer.\n",[116,7857,7858],{"class":118,"line":287},[116,7859,284],{"emptyLinePlaceholder":283},[116,7861,7862],{"class":118,"line":293},[116,7863,6705],{},[116,7865,7866],{"class":118,"line":298},[116,7867,7868],{},"- Use Supabase client library, never raw PostgreSQL connections\n",[116,7870,7871],{"class":118,"line":304},[116,7872,7873],{},"- Auth: Supabase Auth with Row Level Security (RLS)\n",[116,7875,7876],{"class":118,"line":310},[116,7877,7878],{},"- Storage: Supabase Storage with signed URLs for private files\n",[116,7880,7881],{"class":118,"line":316},[116,7882,7883],{},"- Edge Functions: Deno runtime with Supabase client\n",[116,7885,7886],{"class":118,"line":322},[116,7887,7888],{},"- Real-time: use Supabase Realtime for live subscriptions\n",[116,7890,7891],{"class":118,"line":327},[116,7892,7893],{},"- Always enable RLS on every table — no exceptions\n",[15,7895,7897],{"id":7896},"general-rules","General Rules",[485,7899,7901],{"id":7900},"_16-code-style-enforcer","16. Code Style Enforcer",[107,7903,7905],{"className":268,"code":7904,"language":270,"meta":112,"style":112},"\u003C!-- .cursorrules -->\n## Code Style\n- Maximum function length: 30 lines\n- Maximum file length: 300 lines\n- Maximum function parameters: 4 (use options object for more)\n- No nested ternaries\n- No magic numbers — define constants with descriptive names\n- Comments explain WHY, not WHAT\n- No commented-out code — delete it, Git remembers\n",[43,7906,7907,7911,7915,7920,7925,7930,7935,7940,7945],{"__ignoreMap":112},[116,7908,7909],{"class":118,"line":119},[116,7910,6597],{},[116,7912,7913],{"class":118,"line":280},[116,7914,301],{},[116,7916,7917],{"class":118,"line":287},[116,7918,7919],{},"- Maximum function length: 30 lines\n",[116,7921,7922],{"class":118,"line":293},[116,7923,7924],{},"- Maximum file length: 300 lines\n",[116,7926,7927],{"class":118,"line":298},[116,7928,7929],{},"- Maximum function parameters: 4 (use options object for more)\n",[116,7931,7932],{"class":118,"line":304},[116,7933,7934],{},"- No nested ternaries\n",[116,7936,7937],{"class":118,"line":310},[116,7938,7939],{},"- No magic numbers — define constants with descriptive names\n",[116,7941,7942],{"class":118,"line":316},[116,7943,7944],{},"- Comments explain WHY, not WHAT\n",[116,7946,7947],{"class":118,"line":322},[116,7948,7949],{},"- No commented-out code — delete it, Git remembers\n",[485,7951,7953],{"id":7952},"_17-testing-standards","17. Testing Standards",[107,7955,7957],{"className":268,"code":7956,"language":270,"meta":112,"style":112},"\u003C!-- .cursorrules -->\n## Testing Rules\n- Every new function must have at least one test\n- Test naming: describe(\"functionName\") → it(\"should do X when Y\")\n- Arrange-Act-Assert pattern in every test\n- No test interdependencies — each test runs in isolation\n- Mock external services, never real APIs in tests\n- Coverage target: 80% line coverage minimum\n- Prefer integration tests over unit tests for API endpoints\n",[43,7958,7959,7963,7968,7973,7978,7983,7988,7993,7998],{"__ignoreMap":112},[116,7960,7961],{"class":118,"line":119},[116,7962,6597],{},[116,7964,7965],{"class":118,"line":280},[116,7966,7967],{},"## Testing Rules\n",[116,7969,7970],{"class":118,"line":287},[116,7971,7972],{},"- Every new function must have at least one test\n",[116,7974,7975],{"class":118,"line":293},[116,7976,7977],{},"- Test naming: describe(\"functionName\") → it(\"should do X when Y\")\n",[116,7979,7980],{"class":118,"line":298},[116,7981,7982],{},"- Arrange-Act-Assert pattern in every test\n",[116,7984,7985],{"class":118,"line":304},[116,7986,7987],{},"- No test interdependencies — each test runs in isolation\n",[116,7989,7990],{"class":118,"line":310},[116,7991,7992],{},"- Mock external services, never real APIs in tests\n",[116,7994,7995],{"class":118,"line":316},[116,7996,7997],{},"- Coverage target: 80% line coverage minimum\n",[116,7999,8000],{"class":118,"line":322},[116,8001,8002],{},"- Prefer integration tests over unit tests for API endpoints\n",[485,8004,8006],{"id":8005},"_18-security-rules","18. Security Rules",[107,8008,8010],{"className":268,"code":8009,"language":270,"meta":112,"style":112},"\u003C!-- .cursorrules -->\n## Security Rules\n- Never hardcode secrets, API keys, or passwords\n- Always parameterize database queries — no string concatenation\n- Validate and sanitize all user input on the server side\n- Use HTTPS for all external API calls\n- Set proper CORS headers — never use wildcard (*) in production\n- Hash passwords with bcrypt (cost factor 12+)\n- JWT: short expiry (15 min access, 7 day refresh), httpOnly cookies\n",[43,8011,8012,8016,8021,8026,8031,8036,8041,8046,8051],{"__ignoreMap":112},[116,8013,8014],{"class":118,"line":119},[116,8015,6597],{},[116,8017,8018],{"class":118,"line":280},[116,8019,8020],{},"## Security Rules\n",[116,8022,8023],{"class":118,"line":287},[116,8024,8025],{},"- Never hardcode secrets, API keys, or passwords\n",[116,8027,8028],{"class":118,"line":293},[116,8029,8030],{},"- Always parameterize database queries — no string concatenation\n",[116,8032,8033],{"class":118,"line":298},[116,8034,8035],{},"- Validate and sanitize all user input on the server side\n",[116,8037,8038],{"class":118,"line":304},[116,8039,8040],{},"- Use HTTPS for all external API calls\n",[116,8042,8043],{"class":118,"line":310},[116,8044,8045],{},"- Set proper CORS headers — never use wildcard (*) in production\n",[116,8047,8048],{"class":118,"line":316},[116,8049,8050],{},"- Hash passwords with bcrypt (cost factor 12+)\n",[116,8052,8053],{"class":118,"line":322},[116,8054,8055],{},"- JWT: short expiry (15 min access, 7 day refresh), httpOnly cookies\n",[485,8057,8059],{"id":8058},"_19-git-commit-standards","19. Git Commit Standards",[107,8061,8063],{"className":268,"code":8062,"language":270,"meta":112,"style":112},"\u003C!-- .cursorrules -->\n## Git Commit Rules\n- Follow Conventional Commits: type(scope): description\n- Types: feat, fix, docs, style, refactor, test, chore\n- Subject line: max 72 characters, imperative mood\n- Body: explain WHY, not WHAT (the diff shows WHAT)\n- One logical change per commit\n- Never commit generated files, .env, or node_modules\n",[43,8064,8065,8069,8074,8079,8084,8089,8094,8099],{"__ignoreMap":112},[116,8066,8067],{"class":118,"line":119},[116,8068,6597],{},[116,8070,8071],{"class":118,"line":280},[116,8072,8073],{},"## Git Commit Rules\n",[116,8075,8076],{"class":118,"line":287},[116,8077,8078],{},"- Follow Conventional Commits: type(scope): description\n",[116,8080,8081],{"class":118,"line":293},[116,8082,8083],{},"- Types: feat, fix, docs, style, refactor, test, chore\n",[116,8085,8086],{"class":118,"line":298},[116,8087,8088],{},"- Subject line: max 72 characters, imperative mood\n",[116,8090,8091],{"class":118,"line":304},[116,8092,8093],{},"- Body: explain WHY, not WHAT (the diff shows WHAT)\n",[116,8095,8096],{"class":118,"line":310},[116,8097,8098],{},"- One logical change per commit\n",[116,8100,8101],{"class":118,"line":316},[116,8102,8103],{},"- Never commit generated files, .env, or node_modules\n",[485,8105,8107],{"id":8106},"_20-documentation-standards","20. Documentation Standards",[107,8109,8111],{"className":268,"code":8110,"language":270,"meta":112,"style":112},"\u003C!-- .cursorrules -->\n## Documentation Rules\n- Public functions: JSDoc with @param, @returns, @throws\n- README: project purpose, setup instructions, architecture overview\n- API endpoints: document request\u002Fresponse schemas with examples\n- Complex algorithms: explain the approach in comments above\n- Architecture decisions: ADR format in docs\u002Fdecisions\u002F\n- No stale documentation — update docs in the same PR as code changes\n",[43,8112,8113,8117,8122,8127,8132,8137,8142,8147],{"__ignoreMap":112},[116,8114,8115],{"class":118,"line":119},[116,8116,6597],{},[116,8118,8119],{"class":118,"line":280},[116,8120,8121],{},"## Documentation Rules\n",[116,8123,8124],{"class":118,"line":287},[116,8125,8126],{},"- Public functions: JSDoc with @param, @returns, @throws\n",[116,8128,8129],{"class":118,"line":293},[116,8130,8131],{},"- README: project purpose, setup instructions, architecture overview\n",[116,8133,8134],{"class":118,"line":298},[116,8135,8136],{},"- API endpoints: document request\u002Fresponse schemas with examples\n",[116,8138,8139],{"class":118,"line":304},[116,8140,8141],{},"- Complex algorithms: explain the approach in comments above\n",[116,8143,8144],{"class":118,"line":310},[116,8145,8146],{},"- Architecture decisions: ADR format in docs\u002Fdecisions\u002F\n",[116,8148,8149],{"class":118,"line":316},[116,8150,8151],{},"- No stale documentation — update docs in the same PR as code changes\n",[15,8153,8155],{"id":8154},"how-to-create-your-own-cursor-rule","How to Create Your Own Cursor Rule",[485,8157,8159],{"id":8158},"step-1-identify-your-patterns","Step 1: Identify Your Patterns",[11,8161,8162],{},"List the top 10 things you repeat in code reviews. These become your rules.",[107,8164,8166],{"className":109,"code":8165,"language":111,"meta":112,"style":112},"# Review your last 20 PR comments\n# Look for patterns like:\n# - \"Please use TypeScript strict mode\"\n# - \"Always handle the error case\"\n# - \"Use our Button component, not native \u003Cbutton>\"\n",[43,8167,8168,8173,8178,8183,8188],{"__ignoreMap":112},[116,8169,8170],{"class":118,"line":119},[116,8171,8172],{"class":1203},"# Review your last 20 PR comments\n",[116,8174,8175],{"class":118,"line":280},[116,8176,8177],{"class":1203},"# Look for patterns like:\n",[116,8179,8180],{"class":118,"line":287},[116,8181,8182],{"class":1203},"# - \"Please use TypeScript strict mode\"\n",[116,8184,8185],{"class":118,"line":293},[116,8186,8187],{"class":1203},"# - \"Always handle the error case\"\n",[116,8189,8190],{"class":118,"line":298},[116,8191,8192],{"class":1203},"# - \"Use our Button component, not native \u003Cbutton>\"\n",[485,8194,8196],{"id":8195},"step-2-write-the-rule-file","Step 2: Write the Rule File",[107,8198,8200],{"className":268,"code":8199,"language":270,"meta":112,"style":112},"\u003C!-- .cursorrules -->\nYou are an expert [your stack] developer working on [project name].\n\n## Architecture\n[Your architecture decisions]\n\n## Code Style\n[Your team's conventions]\n\n## Common Patterns\n[Code templates for frequent tasks]\n\n## Avoid\n[Anti-patterns specific to your project]\n",[43,8201,8202,8206,8211,8215,8219,8224,8228,8232,8237,8241,8246,8251,8255,8260],{"__ignoreMap":112},[116,8203,8204],{"class":118,"line":119},[116,8205,6597],{},[116,8207,8208],{"class":118,"line":280},[116,8209,8210],{},"You are an expert [your stack] developer working on [project name].\n",[116,8212,8213],{"class":118,"line":287},[116,8214,284],{"emptyLinePlaceholder":283},[116,8216,8217],{"class":118,"line":293},[116,8218,6633],{},[116,8220,8221],{"class":118,"line":298},[116,8222,8223],{},"[Your architecture decisions]\n",[116,8225,8226],{"class":118,"line":304},[116,8227,284],{"emptyLinePlaceholder":283},[116,8229,8230],{"class":118,"line":310},[116,8231,301],{},[116,8233,8234],{"class":118,"line":316},[116,8235,8236],{},"[Your team's conventions]\n",[116,8238,8239],{"class":118,"line":322},[116,8240,284],{"emptyLinePlaceholder":283},[116,8242,8243],{"class":118,"line":327},[116,8244,8245],{},"## Common Patterns\n",[116,8247,8248],{"class":118,"line":333},[116,8249,8250],{},"[Code templates for frequent tasks]\n",[116,8252,8253],{"class":118,"line":339},[116,8254,284],{"emptyLinePlaceholder":283},[116,8256,8257],{"class":118,"line":345},[116,8258,8259],{},"## Avoid\n",[116,8261,8262],{"class":118,"line":350},[116,8263,8264],{},"[Anti-patterns specific to your project]\n",[485,8266,8268],{"id":8267},"step-3-test-and-iterate","Step 3: Test and Iterate",[107,8270,8272],{"className":109,"code":8271,"language":111,"meta":112,"style":112},"# Drop the file in your project root\necho \"your rules\" > .cursorrules\n\n# Open Cursor and try common tasks\n# If the AI ignores a rule, make it more explicit\n# If a rule causes bad output, remove or rephrase it\n",[43,8273,8274,8279,8291,8295,8300,8305],{"__ignoreMap":112},[116,8275,8276],{"class":118,"line":119},[116,8277,8278],{"class":1203},"# Drop the file in your project root\n",[116,8280,8281,8283,8286,8288],{"class":118,"line":280},[116,8282,1565],{"class":130},[116,8284,8285],{"class":126}," \"your rules\"",[116,8287,1338],{"class":182},[116,8289,8290],{"class":126}," .cursorrules\n",[116,8292,8293],{"class":118,"line":287},[116,8294,284],{"emptyLinePlaceholder":283},[116,8296,8297],{"class":118,"line":293},[116,8298,8299],{"class":1203},"# Open Cursor and try common tasks\n",[116,8301,8302],{"class":118,"line":298},[116,8303,8304],{"class":1203},"# If the AI ignores a rule, make it more explicit\n",[116,8306,8307],{"class":118,"line":304},[116,8308,8309],{"class":1203},"# If a rule causes bad output, remove or rephrase it\n",[485,8311,8313],{"id":8312},"step-4-share-with-your-team","Step 4: Share With Your Team",[107,8315,8317],{"className":109,"code":8316,"language":111,"meta":112,"style":112},"# Commit to your repo\ngit add .cursorrules\ngit commit -m \"docs: add cursor rules for team coding standards\"\n",[43,8318,8319,8324,8332],{"__ignoreMap":112},[116,8320,8321],{"class":118,"line":119},[116,8322,8323],{"class":1203},"# Commit to your repo\n",[116,8325,8326,8328,8330],{"class":118,"line":280},[116,8327,1230],{"class":122},[116,8329,1443],{"class":126},[116,8331,8290],{"class":126},[116,8333,8334,8336,8338,8340],{"class":118,"line":287},[116,8335,1230],{"class":122},[116,8337,1453],{"class":126},[116,8339,1456],{"class":130},[116,8341,8342],{"class":126}," \"docs: add cursor rules for team coding standards\"\n",[11,8344,8345,8346,1036],{},"For a deeper dive into building shareable skills, see ",[22,8347,1067],{"href":1066},[15,8349,8351],{"id":8350},"cursor-rules-vs-claude-code-skills","Cursor Rules vs Claude Code Skills",[11,8353,8354,8355,8358],{},"How do Cursor Rules compare to ",[22,8356,8357],{"href":31},"Claude Code Skills","? They solve similar problems but work differently.",[965,8360],{":headers":8361,":rows":8362},"[\"Feature\",\"Cursor Rules\",\"Claude Code Skills\"]","[[\"Format\",\".cursorrules (single file)\",\".md files in .claude\u002Fcommands\u002F\"],[\"Scope\",\"Entire project\",\"Per skill (invoked on demand)\"],[\"Activation\",\"Always active\",\"Triggered by command or pattern\"],[\"Distribution\",\"Git repo only\",\"Git, TokRepo, or custom registry\"],[\"Ecosystem\",\"Community .cursorrules repos\",\"TokRepo (500+ skills)\"],[\"Multi-tool\",\"Cursor only\",\"Claude Code, Codex CLI, Gemini CLI\"],[\"Complexity\",\"Simple (one file)\",\"Can be complex (multi-file, dependencies)\"],[\"Best for\",\"Coding standards\",\"Complex workflows & automation\"]]",[11,8364,8365,8368,8369,3807,8372,4326,8375,8378],{},[68,8366,8367],{},"Bottom line:"," Cursor Rules are ideal for enforcing coding standards within Cursor. Claude Code Skills are better for complex, multi-step workflows that go beyond code style — things like ",[22,8370,8371],{"href":31},"project management",[22,8373,8374],{"href":31},"debugging",[22,8376,8377],{"href":31},"SEO audits",". Many developers use both — Cursor Rules in Cursor, Skills in Claude Code.",[11,8380,8381,8382,8385],{},"For teams evaluating both tools, see our ",[22,8383,8384],{"href":1034},"Skills vs MCP vs Rules comparison"," for a comprehensive breakdown.",[15,8387,1012],{"id":1011},[485,8389,8391],{"id":8390},"can-i-use-multiple-cursorrules-files","Can I use multiple .cursorrules files?",[11,8393,8394,8395,8397],{},"Cursor only reads one ",[43,8396,6558],{}," file from the project root. If you need different rules for different parts of your project, combine them into sections within the single file. For monorepos, place the file at the monorepo root.",[485,8399,8401],{"id":8400},"how-long-should-a-cursorrules-file-be","How long should a .cursorrules file be?",[11,8403,8404],{},"Keep it under 2,000 words. Longer rules dilute the AI's attention. Focus on your top 10-15 most important conventions. If you have more, prioritize the rules that cause the most code review comments.",[485,8406,8408],{"id":8407},"do-cursor-rules-work-with-other-ai-assistants","Do Cursor Rules work with other AI assistants?",[11,8410,8411,8412,8414,8415,8417,8418,8421,8422,8425],{},"No — ",[43,8413,6558],{}," is specific to Cursor. For ",[22,8416,32],{"href":31},", use agent skills. For GitHub Copilot, use ",[43,8419,8420],{},".github\u002Fcopilot-instructions.md",". The ",[22,8423,3588],{"href":3446,"rel":8424},[26]," aims to create a universal format across tools.",[15,8427,1076],{"id":1075},[62,8429,8430,8435,8440,8448],{},[65,8431,8432,8434],{},[22,8433,1035],{"href":1034}," — detailed comparison of all AI coding extensions",[65,8436,8437,8439],{},[22,8438,2685],{"href":31}," — if you also use Claude Code",[65,8441,8442,8447],{},[22,8443,8446],{"href":8444,"rel":8445},"https:\u002F\u002Ftokrepo.com\u002Fen\u002Fcollections\u002Fprompts",[26],"Browse Prompt Collections on TokRepo"," — reusable prompts for any AI assistant",[65,8449,8450,8452],{},[22,8451,1067],{"href":1066}," — convert your Cursor Rules into portable skills",[1103,8454,8455],{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}",{"title":112,"searchDepth":280,"depth":280,"links":8457},[8458,8459,8462,8469,8476,8483,8490,8496,8497,8502],{"id":1158,"depth":280,"text":1159},{"id":6580,"depth":280,"text":6581,"children":8460},[8461],{"id":6661,"depth":287,"text":6662},{"id":6674,"depth":280,"text":6675,"children":8463},[8464,8465,8466,8467,8468],{"id":6678,"depth":287,"text":6679},{"id":6784,"depth":287,"text":6785},{"id":6890,"depth":287,"text":6891},{"id":6982,"depth":287,"text":6983},{"id":7052,"depth":287,"text":7053},{"id":7108,"depth":280,"text":7109,"children":8470},[8471,8472,8473,8474,8475],{"id":7112,"depth":287,"text":7113},{"id":7209,"depth":287,"text":7210},{"id":7312,"depth":287,"text":7313},{"id":7424,"depth":287,"text":7425},{"id":7531,"depth":287,"text":7532},{"id":7637,"depth":280,"text":7638,"children":8477},[8478,8479,8480,8481,8482],{"id":7641,"depth":287,"text":7642},{"id":7687,"depth":287,"text":7688},{"id":7738,"depth":287,"text":7739},{"id":7789,"depth":287,"text":7790},{"id":7840,"depth":287,"text":7841},{"id":7896,"depth":280,"text":7897,"children":8484},[8485,8486,8487,8488,8489],{"id":7900,"depth":287,"text":7901},{"id":7952,"depth":287,"text":7953},{"id":8005,"depth":287,"text":8006},{"id":8058,"depth":287,"text":8059},{"id":8106,"depth":287,"text":8107},{"id":8154,"depth":280,"text":8155,"children":8491},[8492,8493,8494,8495],{"id":8158,"depth":287,"text":8159},{"id":8195,"depth":287,"text":8196},{"id":8267,"depth":287,"text":8268},{"id":8312,"depth":287,"text":8313},{"id":8350,"depth":280,"text":8351},{"id":1011,"depth":280,"text":1012,"children":8498},[8499,8500,8501],{"id":8390,"depth":287,"text":8391},{"id":8400,"depth":287,"text":8401},{"id":8407,"depth":287,"text":8408},{"id":1075,"depth":280,"text":1076},"Curated list of 20 tested .cursorrules files for React, Vue, Go, Python, Next.js, and more. Learn how to configure Cursor AI for maximum productivity.","精选 20 个经过测试的 .cursorrules 文件，覆盖 React、Vue、Go、Python、Next.js 等。学习如何配置 Cursor AI 实现最大生产力。","\u002Fguide\u002Fimages\u002Fcursor-rules-guide-hero.svg",{},"\u002Fen\u002Fguide\u002Fcursor-rules-guide",{"title":6550,"description":8503},"en\u002Fguide\u002Fcursor-rules-guide",[8511,8512,3679,3680],"cursor","rules","2026 年最佳 Cursor Rules 推荐 — 20 个让 AI 编程起飞的规则","3ToaBAPeTI_giwd_dJdOgq83yWavqeuOqMMbzclCWlU",{"id":4,"title":5,"author":6,"body":8516,"category":1132,"description":1133,"descriptionZh":1134,"extension":1135,"image":1136,"meta":9325,"navigation":283,"path":1138,"publishedAt":1139,"readTime":316,"seo":9326,"stem":1141,"tags":9327,"titleZh":1145,"updatedAt":1139,"__hash__":1146},{"type":8,"value":8517,"toc":9299},[8518,8520,8522,8531,8541,8543,8567,8569,8571,8585,8587,8597,8599,8611,8613,8627,8629,8639,8643,8645,8651,8671,8675,8743,8747,8821,8825,8827,8832,8834,8836,8868,8876,8878,8895,8899,8901,8903,8905,8909,8913,8917,8933,8938,8940,8942,8946,8950,8954,8970,8975,8977,8979,8983,8987,8991,9007,9012,9014,9016,9022,9026,9030,9046,9050,9055,9057,9059,9063,9067,9071,9087,9092,9094,9096,9100,9104,9108,9124,9129,9131,9133,9137,9141,9145,9161,9166,9168,9170,9174,9178,9182,9198,9203,9205,9207,9209,9211,9215,9238,9240,9242,9244,9256,9258,9263,9265,9276,9278,9297],[11,8519,13],{},[15,8521,18],{"id":17},[11,8523,8524,28,8527,33,8529,38],{},[22,8525,27],{"href":24,"rel":8526},[26],[22,8528,32],{"href":31},[22,8530,37],{"href":36},[11,8532,41,8533,46,8535,49,8537,53,8539,57],{},[43,8534,45],{},[43,8536,45],{},[43,8538,52],{},[43,8540,56],{},[11,8542,60],{},[62,8544,8545,8549,8553,8557,8561],{},[65,8546,8547,71],{},[68,8548,70],{},[65,8550,8551,77],{},[68,8552,76],{},[65,8554,8555,83],{},[68,8556,82],{},[65,8558,8559,89],{},[68,8560,88],{},[65,8562,8563,95,8565,98],{},[68,8564,94],{},[43,8566,45],{},[15,8568,102],{"id":101},[11,8570,105],{},[107,8572,8573],{"className":109,"code":110,"language":111,"meta":112,"style":112},[43,8574,8575],{"__ignoreMap":112},[116,8576,8577,8579,8581,8583],{"class":118,"line":119},[116,8578,123],{"class":122},[116,8580,127],{"class":126},[116,8582,131],{"class":130},[116,8584,134],{"class":126},[11,8586,137],{},[107,8588,8589],{"className":109,"code":140,"language":111,"meta":112,"style":112},[43,8590,8591],{"__ignoreMap":112},[116,8592,8593,8595],{"class":118,"line":119},[116,8594,147],{"class":122},[116,8596,150],{"class":126},[11,8598,153],{},[107,8600,8601],{"className":109,"code":156,"language":111,"meta":112,"style":112},[43,8602,8603],{"__ignoreMap":112},[116,8604,8605,8607,8609],{"class":118,"line":119},[116,8606,163],{"class":122},[116,8608,166],{"class":126},[116,8610,169],{"class":126},[11,8612,172],{},[107,8614,8615],{"className":109,"code":175,"language":111,"meta":112,"style":112},[43,8616,8617],{"__ignoreMap":112},[116,8618,8619,8621,8623,8625],{"class":118,"line":119},[116,8620,183],{"class":182},[116,8622,187],{"class":186},[116,8624,190],{"class":182},[116,8626,193],{"class":126},[11,8628,196],{},[107,8630,8631],{"className":109,"code":199,"language":111,"meta":112,"style":112},[43,8632,8633],{"__ignoreMap":112},[116,8634,8635,8637],{"class":118,"line":119},[116,8636,163],{"class":122},[116,8638,208],{"class":130},[11,8640,211,8641,214],{},[43,8642,163],{},[15,8644,218],{"id":217},[11,8646,221,8647,224,8649,228],{},[43,8648,45],{},[43,8650,227],{},[230,8652,8653,8659,8665],{},[65,8654,8655,237,8657,241],{},[68,8656,236],{},[43,8658,240],{},[65,8660,8661,237,8663,250],{},[68,8662,246],{},[43,8664,249],{},[65,8666,8667,237,8669,259],{},[68,8668,255],{},[43,8670,258],{},[11,8672,262,8673,265],{},[43,8674,45],{},[107,8676,8677],{"className":268,"code":269,"language":270,"meta":112,"style":112},[43,8678,8679,8683,8687,8691,8695,8699,8703,8707,8711,8715,8719,8723,8727,8731,8735,8739],{"__ignoreMap":112},[116,8680,8681],{"class":118,"line":119},[116,8682,277],{},[116,8684,8685],{"class":118,"line":280},[116,8686,284],{"emptyLinePlaceholder":283},[116,8688,8689],{"class":118,"line":287},[116,8690,290],{},[116,8692,8693],{"class":118,"line":293},[116,8694,284],{"emptyLinePlaceholder":283},[116,8696,8697],{"class":118,"line":298},[116,8698,301],{},[116,8700,8701],{"class":118,"line":304},[116,8702,307],{},[116,8704,8705],{"class":118,"line":310},[116,8706,313],{},[116,8708,8709],{"class":118,"line":316},[116,8710,319],{},[116,8712,8713],{"class":118,"line":322},[116,8714,284],{"emptyLinePlaceholder":283},[116,8716,8717],{"class":118,"line":327},[116,8718,330],{},[116,8720,8721],{"class":118,"line":333},[116,8722,336],{},[116,8724,8725],{"class":118,"line":339},[116,8726,342],{},[116,8728,8729],{"class":118,"line":345},[116,8730,284],{"emptyLinePlaceholder":283},[116,8732,8733],{"class":118,"line":350},[116,8734,353],{},[116,8736,8737],{"class":118,"line":356},[116,8738,359],{},[116,8740,8741],{"class":118,"line":362},[116,8742,365],{},[11,8744,368,8745,372],{},[43,8746,371],{},[107,8748,8749],{"className":375,"code":376,"language":377,"meta":112,"style":112},[43,8750,8751,8755,8761,8765,8775,8783,8787,8791,8801,8809,8813,8817],{"__ignoreMap":112},[116,8752,8753],{"class":118,"line":119},[116,8754,384],{"class":186},[116,8756,8757,8759],{"class":118,"line":280},[116,8758,389],{"class":130},[116,8760,392],{"class":186},[116,8762,8763],{"class":118,"line":287},[116,8764,397],{"class":186},[116,8766,8767,8769,8771,8773],{"class":118,"line":293},[116,8768,402],{"class":130},[116,8770,405],{"class":186},[116,8772,408],{"class":126},[116,8774,411],{"class":186},[116,8776,8777,8779,8781],{"class":118,"line":298},[116,8778,416],{"class":130},[116,8780,405],{"class":186},[116,8782,421],{"class":130},[116,8784,8785],{"class":118,"line":304},[116,8786,426],{"class":186},[116,8788,8789],{"class":118,"line":310},[116,8790,397],{"class":186},[116,8792,8793,8795,8797,8799],{"class":118,"line":316},[116,8794,402],{"class":130},[116,8796,405],{"class":186},[116,8798,439],{"class":126},[116,8800,411],{"class":186},[116,8802,8803,8805,8807],{"class":118,"line":322},[116,8804,416],{"class":130},[116,8806,405],{"class":186},[116,8808,421],{"class":130},[116,8810,8811],{"class":118,"line":327},[116,8812,454],{"class":186},[116,8814,8815],{"class":118,"line":333},[116,8816,459],{"class":186},[116,8818,8819],{"class":118,"line":339},[116,8820,464],{"class":186},[11,8822,467,8823,471],{},[43,8824,470],{},[15,8826,475],{"id":474},[11,8828,8829,483],{},[22,8830,482],{"href":480,"rel":8831},[26],[485,8833,488],{"id":487},[11,8835,491],{},[107,8837,8838],{"className":109,"code":494,"language":111,"meta":112,"style":112},[43,8839,8840,8850],{"__ignoreMap":112},[116,8841,8842,8844,8846,8848],{"class":118,"line":119},[116,8843,123],{"class":122},[116,8845,127],{"class":126},[116,8847,131],{"class":130},[116,8849,507],{"class":126},[116,8851,8852,8854,8856,8858,8860,8862,8864,8866],{"class":118,"line":280},[116,8853,512],{"class":122},[116,8855,127],{"class":126},[116,8857,517],{"class":182},[116,8859,520],{"class":126},[116,8861,523],{"class":186},[116,8863,526],{"class":182},[116,8865,529],{"class":130},[116,8867,532],{"class":126},[11,8869,535,8870,539,8872,542,8874,546],{},[43,8871,538],{},[43,8873,45],{},[43,8875,545],{},[485,8877,550],{"id":549},[230,8879,8880,8885,8887,8893],{},[65,8881,555,8882],{},[22,8883,559],{"href":480,"rel":8884},[26],[65,8886,562],{},[65,8888,565,8889,568,8891,572],{},[43,8890,45],{},[43,8892,571],{},[65,8894,575],{},[11,8896,578,8897,582],{},[43,8898,581],{},[15,8900,586],{"id":585},[11,8902,589],{},[485,8904,593],{"id":592},[11,8906,8907,599],{},[68,8908,598],{},[11,8910,8911,605],{},[68,8912,604],{},[11,8914,8915],{},[68,8916,610],{},[107,8918,8919],{"className":109,"code":613,"language":111,"meta":112,"style":112},[43,8920,8921],{"__ignoreMap":112},[116,8922,8923,8925,8927,8929,8931],{"class":118,"line":119},[116,8924,512],{"class":122},[116,8926,127],{"class":126},[116,8928,624],{"class":126},[116,8930,529],{"class":130},[116,8932,532],{"class":126},[11,8934,8935],{},[22,8936,635],{"href":633,"rel":8937},[26],[637,8939],{},[485,8941,642],{"id":641},[11,8943,8944,647],{},[68,8945,598],{},[11,8947,8948,652],{},[68,8949,604],{},[11,8951,8952],{},[68,8953,610],{},[107,8955,8956],{"className":109,"code":659,"language":111,"meta":112,"style":112},[43,8957,8958],{"__ignoreMap":112},[116,8959,8960,8962,8964,8966,8968],{"class":118,"line":119},[116,8961,512],{"class":122},[116,8963,127],{"class":126},[116,8965,670],{"class":126},[116,8967,529],{"class":130},[116,8969,532],{"class":126},[11,8971,8972],{},[22,8973,635],{"href":679,"rel":8974},[26],[637,8976],{},[485,8978,686],{"id":685},[11,8980,8981,691],{},[68,8982,598],{},[11,8984,8985,696],{},[68,8986,604],{},[11,8988,8989],{},[68,8990,610],{},[107,8992,8993],{"className":109,"code":703,"language":111,"meta":112,"style":112},[43,8994,8995],{"__ignoreMap":112},[116,8996,8997,8999,9001,9003,9005],{"class":118,"line":119},[116,8998,512],{"class":122},[116,9000,127],{"class":126},[116,9002,714],{"class":126},[116,9004,529],{"class":130},[116,9006,532],{"class":126},[11,9008,9009],{},[22,9010,635],{"href":723,"rel":9011},[26],[637,9013],{},[485,9015,730],{"id":729},[11,9017,9018,735,9020,739],{},[68,9019,598],{},[43,9021,738],{},[11,9023,9024,744],{},[68,9025,604],{},[11,9027,9028],{},[68,9029,610],{},[107,9031,9032],{"className":109,"code":751,"language":111,"meta":112,"style":112},[43,9033,9034],{"__ignoreMap":112},[116,9035,9036,9038,9040,9042,9044],{"class":118,"line":119},[116,9037,512],{"class":122},[116,9039,127],{"class":126},[116,9041,762],{"class":126},[116,9043,529],{"class":130},[116,9045,532],{"class":126},[11,9047,9048,772],{},[68,9049,771],{},[11,9051,9052],{},[22,9053,635],{"href":777,"rel":9054},[26],[637,9056],{},[485,9058,784],{"id":783},[11,9060,9061,789],{},[68,9062,598],{},[11,9064,9065,794],{},[68,9066,604],{},[11,9068,9069],{},[68,9070,610],{},[107,9072,9073],{"className":109,"code":801,"language":111,"meta":112,"style":112},[43,9074,9075],{"__ignoreMap":112},[116,9076,9077,9079,9081,9083,9085],{"class":118,"line":119},[116,9078,512],{"class":122},[116,9080,127],{"class":126},[116,9082,812],{"class":126},[116,9084,529],{"class":130},[116,9086,532],{"class":126},[11,9088,9089],{},[22,9090,635],{"href":821,"rel":9091},[26],[637,9093],{},[485,9095,828],{"id":827},[11,9097,9098,833],{},[68,9099,598],{},[11,9101,9102,838],{},[68,9103,604],{},[11,9105,9106],{},[68,9107,610],{},[107,9109,9110],{"className":109,"code":845,"language":111,"meta":112,"style":112},[43,9111,9112],{"__ignoreMap":112},[116,9113,9114,9116,9118,9120,9122],{"class":118,"line":119},[116,9115,512],{"class":122},[116,9117,127],{"class":126},[116,9119,856],{"class":126},[116,9121,529],{"class":130},[116,9123,532],{"class":126},[11,9125,9126],{},[22,9127,635],{"href":865,"rel":9128},[26],[637,9130],{},[485,9132,872],{"id":871},[11,9134,9135,877],{},[68,9136,598],{},[11,9138,9139,882],{},[68,9140,604],{},[11,9142,9143],{},[68,9144,610],{},[107,9146,9147],{"className":109,"code":889,"language":111,"meta":112,"style":112},[43,9148,9149],{"__ignoreMap":112},[116,9150,9151,9153,9155,9157,9159],{"class":118,"line":119},[116,9152,512],{"class":122},[116,9154,127],{"class":126},[116,9156,900],{"class":126},[116,9158,529],{"class":130},[116,9160,532],{"class":126},[11,9162,9163],{},[22,9164,635],{"href":909,"rel":9165},[26],[637,9167],{},[485,9169,916],{"id":915},[11,9171,9172,921],{},[68,9173,598],{},[11,9175,9176,926],{},[68,9177,604],{},[11,9179,9180],{},[68,9181,610],{},[107,9183,9184],{"className":109,"code":933,"language":111,"meta":112,"style":112},[43,9185,9186],{"__ignoreMap":112},[116,9187,9188,9190,9192,9194,9196],{"class":118,"line":119},[116,9189,512],{"class":122},[116,9191,127],{"class":126},[116,9193,944],{"class":126},[116,9195,529],{"class":130},[116,9197,532],{"class":126},[11,9199,9200],{},[22,9201,635],{"href":953,"rel":9202},[26],[637,9204],{},[15,9206,960],{"id":959},[11,9208,963],{},[965,9210],{":headers":967,":rows":968},[11,9212,9213],{},[68,9214,973],{},[62,9216,9217,9223,9230],{},[65,9218,9219,980,9221,983],{},[68,9220,27],{},[43,9222,45],{},[65,9224,9225,988,9227,992],{},[68,9226,32],{},[22,9228,482],{"href":480,"rel":9229},[26],[65,9231,9232,998,9234,1001,9236,1005],{},[68,9233,997],{},[43,9235,56],{},[22,9237,1004],{"href":36},[11,9239,1008],{},[15,9241,1012],{"id":1011},[485,9243,1016],{"id":1015},[11,9245,1019,9246,1022,9248,1022,9250,1027,9252,1031,9254,1036],{},[43,9247,45],{},[43,9249,52],{},[43,9251,56],{},[43,9253,1030],{},[22,9255,1035],{"href":1034},[485,9257,1040],{"id":1039},[11,9259,1043,9260,1049],{},[22,9261,1048],{"href":1046,"rel":9262},[26],[485,9264,1053],{"id":1052},[11,9266,1056,9267,1059,9269,1063,9271,1068,9273,1072],{},[43,9268,45],{},[43,9270,1062],{},[22,9272,1067],{"href":1066},[22,9274,482],{"href":480,"rel":9275},[26],[15,9277,1076],{"id":1075},[62,9279,9280,9284,9288,9292],{},[65,9281,9282,1083],{},[22,9283,1067],{"href":1066},[65,9285,9286,1088],{},[22,9287,1035],{"href":1034},[65,9289,9290,1094],{},[22,9291,1093],{"href":36},[65,9293,9294,1101],{},[22,9295,1100],{"href":480,"rel":9296},[26],[1103,9298,1105],{},{"title":112,"searchDepth":280,"depth":280,"links":9300},[9301,9302,9303,9304,9308,9318,9319,9324],{"id":17,"depth":280,"text":18},{"id":101,"depth":280,"text":102},{"id":217,"depth":280,"text":218},{"id":474,"depth":280,"text":475,"children":9305},[9306,9307],{"id":487,"depth":287,"text":488},{"id":549,"depth":287,"text":550},{"id":585,"depth":280,"text":586,"children":9309},[9310,9311,9312,9313,9314,9315,9316,9317],{"id":592,"depth":287,"text":593},{"id":641,"depth":287,"text":642},{"id":685,"depth":287,"text":686},{"id":729,"depth":287,"text":730},{"id":783,"depth":287,"text":784},{"id":827,"depth":287,"text":828},{"id":871,"depth":287,"text":872},{"id":915,"depth":287,"text":916},{"id":959,"depth":280,"text":960},{"id":1011,"depth":280,"text":1012,"children":9320},[9321,9322,9323],{"id":1015,"depth":287,"text":1016},{"id":1039,"depth":287,"text":1040},{"id":1052,"depth":287,"text":1053},{"id":1075,"depth":280,"text":1076},{},{"title":5,"description":1133},[163,1143,1144,1132],{"id":9329,"title":9330,"author":6,"body":9331,"category":1132,"description":10493,"descriptionZh":10494,"extension":1135,"image":10495,"meta":10496,"navigation":283,"path":10497,"publishedAt":1139,"readTime":316,"seo":10498,"stem":10499,"tags":10500,"titleZh":10503,"updatedAt":1139,"__hash__":10504},"docs_en\u002Fen\u002Fguide\u002Fpowerup-skills-guide.md","After \u002Fpowerup: 10 Skills to Level Up Each Claude Code Lesson",{"type":8,"value":9332,"toc":10466},[9333,9340,9342,9357,9361,9366,9387,9390,9393,9399,9406,9410,9414,9420,9429,9441,9444,9450,9455,9459,9464,9469,9481,9484,9524,9529,9533,9538,9543,9555,9558,9622,9627,9631,9636,9641,9653,9656,9707,9712,9716,9721,9726,9738,9741,9792,9797,9801,9806,9811,9823,9826,9872,9877,9881,9886,9891,9903,9906,9959,9964,9968,9973,9978,9990,9993,10050,10055,10059,10064,10069,10081,10084,10146,10151,10155,10160,10165,10177,10180,10226,10231,10235,10238,10242,10245,10307,10311,10319,10364,10368,10376,10381,10383,10387,10393,10397,10403,10428,10432,10437,10439,10463],[11,9334,9335,9336,9339],{},"Learn how to turn each Claude Code ",[43,9337,9338],{},"\u002Fpowerup"," lesson into a permanent productivity boost. The built-in tutorial teaches you concepts — these 10 skills make those concepts stick by automating them. One install command per lesson, and you never have to remember the manual steps again.",[15,9341,1159],{"id":1158},[62,9343,9344,9349,9355],{},[65,9345,9346,1168],{},[22,9347,32],{"href":1166,"rel":9348},[26],[65,9350,9351,9352,9354],{},"Completed at least one ",[43,9353,9338],{}," lesson (or planning to)",[65,9356,2775],{},[15,9358,9360],{"id":9359},"what-is-powerup","What Is \u002Fpowerup?",[11,9362,9363,9365],{},[43,9364,9338],{}," is Claude Code's built-in interactive tutorial system. Run it in any Claude Code session, and it walks you through progressively advanced topics — from basic file editing to complex multi-file refactoring, debugging, and project planning.",[107,9367,9369],{"className":109,"code":9368,"language":111,"meta":112,"style":112},"# Start the tutorial\nclaude\n> \u002Fpowerup\n",[43,9370,9371,9376,9380],{"__ignoreMap":112},[116,9372,9373],{"class":118,"line":119},[116,9374,9375],{"class":1203},"# Start the tutorial\n",[116,9377,9378],{"class":118,"line":280},[116,9379,1254],{"class":122},[116,9381,9382,9384],{"class":118,"line":287},[116,9383,526],{"class":182},[116,9385,9386],{"class":186}," \u002Fpowerup\n",[11,9388,9389],{},"Each lesson teaches a concept through hands-on practice. But once the lesson ends, you're back to manual prompting. That's where skills come in — they codify the lesson's methodology into a reusable command.",[11,9391,9392],{},"Think of it this way:",[107,9394,9397],{"className":9395,"code":9396,"language":1285},[1283],"\u002Fpowerup lesson  →  \"I understand the concept\"\nAgent skill      →  \"The concept works for me automatically\"\n",[43,9398,9396],{"__ignoreMap":112},[11,9400,2795,9401,9403,9404,1036],{},[22,9402,1067],{"href":1066}," for background. For a full list of top skills, see ",[22,9405,2685],{"href":31},[15,9407,9409],{"id":9408},"lesson-by-skill-pairings","Lesson-by-Skill Pairings",[485,9411,9413],{"id":9412},"_1-project-planning-planning-with-files","1. Project Planning → Planning with Files",[11,9415,9416,9419],{},[68,9417,9418],{},"What \u002Fpowerup teaches:"," How to break a project into tasks and track progress within Claude Code.",[11,9421,9422,9425,9426,9428],{},[68,9423,9424],{},"What the skill adds:"," Persistent ",[43,9427,738],{}," files that survive across sessions. Your plan, decisions, and progress never get lost.",[107,9430,9431],{"className":109,"code":2144,"language":111,"meta":112,"style":112},[43,9432,9433],{"__ignoreMap":112},[116,9434,9435,9437,9439],{"class":118,"line":119},[116,9436,512],{"class":122},[116,9438,127],{"class":126},[116,9440,2155],{"class":126},[11,9442,9443],{},"After installing, start any planning conversation and the skill automatically creates structured files:",[107,9445,9448],{"className":9446,"code":9447,"language":1285},[1283],".planning\u002F\n├── goals.md          # What you're building\n├── progress.md       # What's done, what's next\n├── decisions.md      # Architecture decisions with rationale\n└── blockers.md       # Current blockers and workarounds\n",[43,9449,9447],{"__ignoreMap":112},[11,9451,9452],{},[22,9453,635],{"href":2160,"rel":9454},[26],[485,9456,9458],{"id":9457},"_2-multi-file-editing-get-shit-done-gsd","2. Multi-File Editing → Get Shit Done (GSD)",[11,9460,9461,9463],{},[68,9462,9418],{}," How to edit multiple files in a single Claude Code session.",[11,9465,9466,9468],{},[68,9467,9424],{}," A complete project management framework — milestones, phases, atomic commits, and verification at every step. It turns multi-file edits into tracked, reversible operations.",[107,9470,9471],{"className":109,"code":2037,"language":111,"meta":112,"style":112},[43,9472,9473],{"__ignoreMap":112},[116,9474,9475,9477,9479],{"class":118,"line":119},[116,9476,512],{"class":122},[116,9478,127],{"class":126},[116,9480,2048],{"class":126},[11,9482,9483],{},"GSD wraps multi-file operations in a structured workflow:",[107,9485,9487],{"className":109,"code":9486,"language":111,"meta":112,"style":112},"# Instead of ad-hoc multi-file edits:\n> \u002Fgsd-plan-phase   # Plan what changes are needed\n> \u002Fgsd-execute-phase # Execute with atomic commits\n> \u002Fgsd-verify-work   # Verify everything works\n",[43,9488,9489,9494,9504,9514],{"__ignoreMap":112},[116,9490,9491],{"class":118,"line":119},[116,9492,9493],{"class":1203},"# Instead of ad-hoc multi-file edits:\n",[116,9495,9496,9498,9501],{"class":118,"line":280},[116,9497,526],{"class":182},[116,9499,9500],{"class":186}," \u002Fgsd-plan-phase   ",[116,9502,9503],{"class":1203},"# Plan what changes are needed\n",[116,9505,9506,9508,9511],{"class":118,"line":287},[116,9507,526],{"class":182},[116,9509,9510],{"class":186}," \u002Fgsd-execute-phase ",[116,9512,9513],{"class":1203},"# Execute with atomic commits\n",[116,9515,9516,9518,9521],{"class":118,"line":293},[116,9517,526],{"class":182},[116,9519,9520],{"class":186}," \u002Fgsd-verify-work   ",[116,9522,9523],{"class":1203},"# Verify everything works\n",[11,9525,9526],{},[22,9527,635],{"href":777,"rel":9528},[26],[485,9530,9532],{"id":9531},"_3-debugging-systematic-debugging","3. Debugging → Systematic Debugging",[11,9534,9535,9537],{},[68,9536,9418],{}," How to use Claude Code to find and fix bugs.",[11,9539,9540,9542],{},[68,9541,9424],{}," A 4-phase scientific methodology — reproduce, isolate, diagnose, fix. Each hypothesis is logged and tested, preventing the \"random change and pray\" approach.",[107,9544,9545],{"className":109,"code":2063,"language":111,"meta":112,"style":112},[43,9546,9547],{"__ignoreMap":112},[116,9548,9549,9551,9553],{"class":118,"line":119},[116,9550,512],{"class":122},[116,9552,127],{"class":126},[116,9554,2074],{"class":126},[11,9556,9557],{},"The debugging workflow becomes structured:",[107,9559,9561],{"className":109,"code":9560,"language":111,"meta":112,"style":112},"# Phase 1: Reproduce the bug\n> \u002Fgsd-debug\n# → Creates a debug session with persistent state\n\n# Phase 2: Isolate the root cause\n# → Tracks hypotheses: confirmed, rejected, or pending\n\n# Phase 3: Diagnose\n# → Logs each diagnosis step with evidence\n\n# Phase 4: Fix\n# → Applies fix with verification test\n",[43,9562,9563,9568,9575,9580,9584,9589,9594,9598,9603,9608,9612,9617],{"__ignoreMap":112},[116,9564,9565],{"class":118,"line":119},[116,9566,9567],{"class":1203},"# Phase 1: Reproduce the bug\n",[116,9569,9570,9572],{"class":118,"line":280},[116,9571,526],{"class":182},[116,9573,9574],{"class":186}," \u002Fgsd-debug\n",[116,9576,9577],{"class":118,"line":287},[116,9578,9579],{"class":1203},"# → Creates a debug session with persistent state\n",[116,9581,9582],{"class":118,"line":293},[116,9583,284],{"emptyLinePlaceholder":283},[116,9585,9586],{"class":118,"line":298},[116,9587,9588],{"class":1203},"# Phase 2: Isolate the root cause\n",[116,9590,9591],{"class":118,"line":304},[116,9592,9593],{"class":1203},"# → Tracks hypotheses: confirmed, rejected, or pending\n",[116,9595,9596],{"class":118,"line":310},[116,9597,284],{"emptyLinePlaceholder":283},[116,9599,9600],{"class":118,"line":316},[116,9601,9602],{"class":1203},"# Phase 3: Diagnose\n",[116,9604,9605],{"class":118,"line":322},[116,9606,9607],{"class":1203},"# → Logs each diagnosis step with evidence\n",[116,9609,9610],{"class":118,"line":327},[116,9611,284],{"emptyLinePlaceholder":283},[116,9613,9614],{"class":118,"line":333},[116,9615,9616],{"class":1203},"# Phase 4: Fix\n",[116,9618,9619],{"class":118,"line":339},[116,9620,9621],{"class":1203},"# → Applies fix with verification test\n",[11,9623,9624],{},[22,9625,635],{"href":2079,"rel":9626},[26],[485,9628,9630],{"id":9629},"_4-seo-and-content-claude-seo","4. SEO and Content → Claude SEO",[11,9632,9633,9635],{},[68,9634,9418],{}," How to use Claude Code for content-related tasks beyond pure coding.",[11,9637,9638,9640],{},[68,9639,9424],{}," A complete SEO audit toolkit — keyword research, on-page analysis, content gaps, technical checks, and competitor benchmarking.",[107,9642,9643],{"className":109,"code":2090,"language":111,"meta":112,"style":112},[43,9644,9645],{"__ignoreMap":112},[116,9646,9647,9649,9651],{"class":118,"line":119},[116,9648,512],{"class":122},[116,9650,127],{"class":126},[116,9652,2101],{"class":126},[11,9654,9655],{},"Run SEO audits without leaving the terminal:",[107,9657,9659],{"className":109,"code":9658,"language":111,"meta":112,"style":112},"# Audit your website's SEO\n> Run an SEO audit on my site at example.com\n\n# The skill checks:\n# - Title tags, meta descriptions, heading structure\n# - Page speed indicators\n# - Content quality and keyword density\n# - Internal linking opportunities\n# - Competitor comparison\n",[43,9660,9661,9666,9673,9677,9682,9687,9692,9697,9702],{"__ignoreMap":112},[116,9662,9663],{"class":118,"line":119},[116,9664,9665],{"class":1203},"# Audit your website's SEO\n",[116,9667,9668,9670],{"class":118,"line":280},[116,9669,526],{"class":182},[116,9671,9672],{"class":186}," Run an SEO audit on my site at example.com\n",[116,9674,9675],{"class":118,"line":287},[116,9676,284],{"emptyLinePlaceholder":283},[116,9678,9679],{"class":118,"line":293},[116,9680,9681],{"class":1203},"# The skill checks:\n",[116,9683,9684],{"class":118,"line":298},[116,9685,9686],{"class":1203},"# - Title tags, meta descriptions, heading structure\n",[116,9688,9689],{"class":118,"line":304},[116,9690,9691],{"class":1203},"# - Page speed indicators\n",[116,9693,9694],{"class":118,"line":310},[116,9695,9696],{"class":1203},"# - Content quality and keyword density\n",[116,9698,9699],{"class":118,"line":316},[116,9700,9701],{"class":1203},"# - Internal linking opportunities\n",[116,9703,9704],{"class":118,"line":322},[116,9705,9706],{"class":1203},"# - Competitor comparison\n",[11,9708,9709],{},[22,9710,635],{"href":2106,"rel":9711},[26],[485,9713,9715],{"id":9714},"_5-custom-commands-skill-creator","5. Custom Commands → Skill Creator",[11,9717,9718,9720],{},[68,9719,9418],{}," How to extend Claude Code with custom commands.",[11,9722,9723,9725],{},[68,9724,9424],{}," A guided workflow for creating production-quality skills — with proper frontmatter, trigger patterns, testing, and optional TokRepo publishing.",[107,9727,9728],{"className":109,"code":2117,"language":111,"meta":112,"style":112},[43,9729,9730],{"__ignoreMap":112},[116,9731,9732,9734,9736],{"class":118,"line":119},[116,9733,512],{"class":122},[116,9735,127],{"class":126},[116,9737,2128],{"class":126},[11,9739,9740],{},"Turn any prompt into a reusable skill:",[107,9742,9744],{"className":109,"code":9743,"language":111,"meta":112,"style":112},"# Start the skill creation wizard\n> \u002Fskill-creator\n\n# It guides you through:\n# 1. What does the skill do?\n# 2. When should it trigger?\n# 3. What instructions does it follow?\n# 4. How do you test it?\n# 5. Publish to TokRepo? (optional)\n",[43,9745,9746,9751,9758,9762,9767,9772,9777,9782,9787],{"__ignoreMap":112},[116,9747,9748],{"class":118,"line":119},[116,9749,9750],{"class":1203},"# Start the skill creation wizard\n",[116,9752,9753,9755],{"class":118,"line":280},[116,9754,526],{"class":182},[116,9756,9757],{"class":186}," \u002Fskill-creator\n",[116,9759,9760],{"class":118,"line":287},[116,9761,284],{"emptyLinePlaceholder":283},[116,9763,9764],{"class":118,"line":293},[116,9765,9766],{"class":1203},"# It guides you through:\n",[116,9768,9769],{"class":118,"line":298},[116,9770,9771],{"class":1203},"# 1. What does the skill do?\n",[116,9773,9774],{"class":118,"line":304},[116,9775,9776],{"class":1203},"# 2. When should it trigger?\n",[116,9778,9779],{"class":118,"line":310},[116,9780,9781],{"class":1203},"# 3. What instructions does it follow?\n",[116,9783,9784],{"class":118,"line":316},[116,9785,9786],{"class":1203},"# 4. How do you test it?\n",[116,9788,9789],{"class":118,"line":322},[116,9790,9791],{"class":1203},"# 5. Publish to TokRepo? (optional)\n",[11,9793,9794],{},[22,9795,635],{"href":2133,"rel":9796},[26],[485,9798,9800],{"id":9799},"_6-deployment-vercel-skills","6. Deployment → Vercel Skills",[11,9802,9803,9805],{},[68,9804,9418],{}," How Claude Code can help with deployment tasks.",[11,9807,9808,9810],{},[68,9809,9424],{}," 13,000+ community skills covering Next.js, React, and Vercel deployment patterns. Framework-specific best practices baked in.",[107,9812,9813],{"className":109,"code":2869,"language":111,"meta":112,"style":112},[43,9814,9815],{"__ignoreMap":112},[116,9816,9817,9819,9821],{"class":118,"line":119},[116,9818,512],{"class":122},[116,9820,127],{"class":126},[116,9822,2880],{"class":126},[11,9824,9825],{},"Deploy with framework-aware guidance:",[107,9827,9829],{"className":109,"code":9828,"language":111,"meta":112,"style":112},"# Get deployment help tailored to your framework\n> Deploy this Next.js app to Vercel\n\n# The skill provides:\n# - Environment variable configuration\n# - Build optimization tips\n# - Edge function setup\n# - Domain and SSL configuration\n",[43,9830,9831,9836,9843,9847,9852,9857,9862,9867],{"__ignoreMap":112},[116,9832,9833],{"class":118,"line":119},[116,9834,9835],{"class":1203},"# Get deployment help tailored to your framework\n",[116,9837,9838,9840],{"class":118,"line":280},[116,9839,526],{"class":182},[116,9841,9842],{"class":186}," Deploy this Next.js app to Vercel\n",[116,9844,9845],{"class":118,"line":287},[116,9846,284],{"emptyLinePlaceholder":283},[116,9848,9849],{"class":118,"line":293},[116,9850,9851],{"class":1203},"# The skill provides:\n",[116,9853,9854],{"class":118,"line":298},[116,9855,9856],{"class":1203},"# - Environment variable configuration\n",[116,9858,9859],{"class":118,"line":304},[116,9860,9861],{"class":1203},"# - Build optimization tips\n",[116,9863,9864],{"class":118,"line":310},[116,9865,9866],{"class":1203},"# - Edge function setup\n",[116,9868,9869],{"class":118,"line":316},[116,9870,9871],{"class":1203},"# - Domain and SSL configuration\n",[11,9873,9874],{},[22,9875,635],{"href":821,"rel":9876},[26],[485,9878,9880],{"id":9879},"_7-web-research-web-access-skill","7. Web Research → Web Access Skill",[11,9882,9883,9885],{},[68,9884,9418],{}," How to use Claude Code for tasks that reference external information.",[11,9887,9888,9890],{},[68,9889,9424],{}," The ability to actually fetch and analyze web pages, APIs, and documentation in real time.",[107,9892,9893],{"className":109,"code":3311,"language":111,"meta":112,"style":112},[43,9894,9895],{"__ignoreMap":112},[116,9896,9897,9899,9901],{"class":118,"line":119},[116,9898,512],{"class":122},[116,9900,127],{"class":126},[116,9902,3322],{"class":126},[11,9904,9905],{},"Research directly from Claude Code:",[107,9907,9909],{"className":109,"code":9908,"language":111,"meta":112,"style":112},"# Fetch and analyze a web page\n> Check the API docs at https:\u002F\u002Fdocs.example.com\u002Fv2 and\n> summarize what changed from v1\n\n# The skill:\n# - Fetches the URL content\n# - Extracts relevant information\n# - Compares with your local code\n# - Suggests changes needed\n",[43,9910,9911,9916,9923,9930,9934,9939,9944,9949,9954],{"__ignoreMap":112},[116,9912,9913],{"class":118,"line":119},[116,9914,9915],{"class":1203},"# Fetch and analyze a web page\n",[116,9917,9918,9920],{"class":118,"line":280},[116,9919,526],{"class":182},[116,9921,9922],{"class":186}," Check the API docs at https:\u002F\u002Fdocs.example.com\u002Fv2 and\n",[116,9924,9925,9927],{"class":118,"line":287},[116,9926,526],{"class":182},[116,9928,9929],{"class":186}," summarize what changed from v1\n",[116,9931,9932],{"class":118,"line":293},[116,9933,284],{"emptyLinePlaceholder":283},[116,9935,9936],{"class":118,"line":298},[116,9937,9938],{"class":1203},"# The skill:\n",[116,9940,9941],{"class":118,"line":304},[116,9942,9943],{"class":1203},"# - Fetches the URL content\n",[116,9945,9946],{"class":118,"line":310},[116,9947,9948],{"class":1203},"# - Extracts relevant information\n",[116,9950,9951],{"class":118,"line":316},[116,9952,9953],{"class":1203},"# - Compares with your local code\n",[116,9955,9956],{"class":118,"line":322},[116,9957,9958],{"class":1203},"# - Suggests changes needed\n",[11,9960,9961],{},[22,9962,635],{"href":953,"rel":9963},[26],[485,9965,9967],{"id":9966},"_8-environment-management-infisical","8. Environment Management → Infisical",[11,9969,9970,9972],{},[68,9971,9418],{}," How Claude Code handles environment variables and configuration.",[11,9974,9975,9977],{},[68,9976,9424],{}," Integration with Infisical for team-grade secrets management. Pull, push, and manage secrets without ever hardcoding them.",[107,9979,9980],{"className":109,"code":3088,"language":111,"meta":112,"style":112},[43,9981,9982],{"__ignoreMap":112},[116,9983,9984,9986,9988],{"class":118,"line":119},[116,9985,512],{"class":122},[116,9987,127],{"class":126},[116,9989,3099],{"class":126},[11,9991,9992],{},"Manage secrets safely:",[107,9994,9996],{"className":109,"code":9995,"language":111,"meta":112,"style":112},"# Pull secrets from Infisical vault\n> Pull the staging environment secrets\n\n# Push a new secret\n> Add DATABASE_URL to production environment\n\n# The skill ensures:\n# - Secrets never appear in code\n# - .env files are properly gitignored\n# - Team members share the same config\n",[43,9997,9998,10003,10010,10014,10019,10026,10030,10035,10040,10045],{"__ignoreMap":112},[116,9999,10000],{"class":118,"line":119},[116,10001,10002],{"class":1203},"# Pull secrets from Infisical vault\n",[116,10004,10005,10007],{"class":118,"line":280},[116,10006,526],{"class":182},[116,10008,10009],{"class":186}," Pull the staging environment secrets\n",[116,10011,10012],{"class":118,"line":287},[116,10013,284],{"emptyLinePlaceholder":283},[116,10015,10016],{"class":118,"line":293},[116,10017,10018],{"class":1203},"# Push a new secret\n",[116,10020,10021,10023],{"class":118,"line":298},[116,10022,526],{"class":182},[116,10024,10025],{"class":186}," Add DATABASE_URL to production environment\n",[116,10027,10028],{"class":118,"line":304},[116,10029,284],{"emptyLinePlaceholder":283},[116,10031,10032],{"class":118,"line":310},[116,10033,10034],{"class":1203},"# The skill ensures:\n",[116,10036,10037],{"class":118,"line":316},[116,10038,10039],{"class":1203},"# - Secrets never appear in code\n",[116,10041,10042],{"class":118,"line":322},[116,10043,10044],{"class":1203},"# - .env files are properly gitignored\n",[116,10046,10047],{"class":118,"line":327},[116,10048,10049],{"class":1203},"# - Team members share the same config\n",[11,10051,10052],{},[22,10053,635],{"href":3109,"rel":10054},[26],[485,10056,10058],{"id":10057},"_9-ui-generation-v0-by-vercel","9. UI Generation → v0 by Vercel",[11,10060,10061,10063],{},[68,10062,9418],{}," How Claude Code can generate frontend components.",[11,10065,10066,10068],{},[68,10067,9424],{}," Vercel's v0 AI for design-aware UI generation. Describe what you want, get production-ready React\u002FTailwind components.",[107,10070,10071],{"className":109,"code":3133,"language":111,"meta":112,"style":112},[43,10072,10073],{"__ignoreMap":112},[116,10074,10075,10077,10079],{"class":118,"line":119},[116,10076,512],{"class":122},[116,10078,127],{"class":126},[116,10080,3144],{"class":126},[11,10082,10083],{},"Generate UI from descriptions:",[107,10085,10087],{"className":109,"code":10086,"language":111,"meta":112,"style":112},"# Generate a component\n> Create a pricing page with 3 tiers, toggle for\n> monthly\u002Fyearly, and a highlighted \"Popular\" plan\n\n# v0 generates:\n# - React component with Tailwind styling\n# - Responsive layout\n# - Interactive toggle\n# - Accessible markup\n",[43,10088,10089,10094,10104,10117,10121,10126,10131,10136,10141],{"__ignoreMap":112},[116,10090,10091],{"class":118,"line":119},[116,10092,10093],{"class":1203},"# Generate a component\n",[116,10095,10096,10098,10101],{"class":118,"line":280},[116,10097,526],{"class":182},[116,10099,10100],{"class":186}," Create a pricing page with 3 tiers, toggle ",[116,10102,10103],{"class":182},"for\n",[116,10105,10106,10108,10111,10114],{"class":118,"line":287},[116,10107,526],{"class":182},[116,10109,10110],{"class":186}," monthly\u002Fyearly, and a highlighted ",[116,10112,10113],{"class":126},"\"Popular\"",[116,10115,10116],{"class":186}," plan\n",[116,10118,10119],{"class":118,"line":293},[116,10120,284],{"emptyLinePlaceholder":283},[116,10122,10123],{"class":118,"line":298},[116,10124,10125],{"class":1203},"# v0 generates:\n",[116,10127,10128],{"class":118,"line":304},[116,10129,10130],{"class":1203},"# - React component with Tailwind styling\n",[116,10132,10133],{"class":118,"line":310},[116,10134,10135],{"class":1203},"# - Responsive layout\n",[116,10137,10138],{"class":118,"line":316},[116,10139,10140],{"class":1203},"# - Interactive toggle\n",[116,10142,10143],{"class":118,"line":322},[116,10144,10145],{"class":1203},"# - Accessible markup\n",[11,10147,10148],{},[22,10149,635],{"href":3154,"rel":10150},[26],[485,10152,10154],{"id":10153},"_10-skill-interoperability-agent-skills-standard","10. Skill Interoperability → Agent Skills Standard",[11,10156,10157,10159],{},[68,10158,9418],{}," How Claude Code's extension system works.",[11,10161,10162,10164],{},[68,10163,9424],{}," The universal SKILL.md specification — frontmatter fields, trigger patterns, instruction structure, and cross-agent compatibility. Your skills work in Claude Code, Codex CLI, and Gemini CLI.",[107,10166,10167],{"className":109,"code":3430,"language":111,"meta":112,"style":112},[43,10168,10169],{"__ignoreMap":112},[116,10170,10171,10173,10175],{"class":118,"line":119},[116,10172,512],{"class":122},[116,10174,127],{"class":126},[116,10176,3441],{"class":126},[11,10178,10179],{},"Build portable skills:",[107,10181,10183],{"className":109,"code":10182,"language":111,"meta":112,"style":112},"# The standard defines:\n# - Required frontmatter fields (name, description, triggers)\n# - Instruction format (context, steps, verification)\n# - Testing conventions\n# - Cross-agent compatibility notes\n\n# Use it as a reference when creating skills:\n> Create a new skill following the Agent Skills Standard\n",[43,10184,10185,10190,10195,10200,10205,10210,10214,10219],{"__ignoreMap":112},[116,10186,10187],{"class":118,"line":119},[116,10188,10189],{"class":1203},"# The standard defines:\n",[116,10191,10192],{"class":118,"line":280},[116,10193,10194],{"class":1203},"# - Required frontmatter fields (name, description, triggers)\n",[116,10196,10197],{"class":118,"line":287},[116,10198,10199],{"class":1203},"# - Instruction format (context, steps, verification)\n",[116,10201,10202],{"class":118,"line":293},[116,10203,10204],{"class":1203},"# - Testing conventions\n",[116,10206,10207],{"class":118,"line":298},[116,10208,10209],{"class":1203},"# - Cross-agent compatibility notes\n",[116,10211,10212],{"class":118,"line":304},[116,10213,284],{"emptyLinePlaceholder":283},[116,10215,10216],{"class":118,"line":310},[116,10217,10218],{"class":1203},"# Use it as a reference when creating skills:\n",[116,10220,10221,10223],{"class":118,"line":316},[116,10222,526],{"class":182},[116,10224,10225],{"class":186}," Create a new skill following the Agent Skills Standard\n",[11,10227,10228],{},[22,10229,635],{"href":3446,"rel":10230},[26],[15,10232,10234],{"id":10233},"beyond-powerup","Beyond \u002Fpowerup",[11,10236,10237],{},"Once you've paired each lesson with a skill, here are advanced configuration tips to go further:",[485,10239,10241],{"id":10240},"stack-multiple-skills","Stack Multiple Skills",[11,10243,10244],{},"Skills compose naturally. Install 5-10 skills and they work together without conflicts:",[107,10246,10248],{"className":109,"code":10247,"language":111,"meta":112,"style":112},"# Install a complete productivity stack\ntokrepo install e108cf5c-c34e-4d27-a694-66a693301e87  # GSD\ntokrepo install 78ed006e-b022-4e92-bf65-df8b53afd2f4  # Debugging\ntokrepo install 034be597-c361-45a2-b143-41cce0ec8ad8  # Planning\ntokrepo install cb068086-1c7d-408e-90a1-c39cfc6ffe87  # SEO\ntokrepo install 0b7c0a41-97e1-4187-9cc5-4dc32d91a9cd  # Skill Creator\n",[43,10249,10250,10255,10265,10276,10286,10297],{"__ignoreMap":112},[116,10251,10252],{"class":118,"line":119},[116,10253,10254],{"class":1203},"# Install a complete productivity stack\n",[116,10256,10257,10259,10261,10263],{"class":118,"line":280},[116,10258,512],{"class":122},[116,10260,127],{"class":126},[116,10262,1586],{"class":126},[116,10264,1589],{"class":1203},[116,10266,10267,10269,10271,10273],{"class":118,"line":287},[116,10268,512],{"class":122},[116,10270,127],{"class":126},[116,10272,1607],{"class":126},[116,10274,10275],{"class":1203},"  # Debugging\n",[116,10277,10278,10280,10282,10284],{"class":118,"line":293},[116,10279,512],{"class":122},[116,10281,127],{"class":126},[116,10283,1670],{"class":126},[116,10285,1673],{"class":1203},[116,10287,10288,10290,10292,10294],{"class":118,"line":298},[116,10289,512],{"class":122},[116,10291,127],{"class":126},[116,10293,1628],{"class":126},[116,10295,10296],{"class":1203},"  # SEO\n",[116,10298,10299,10301,10303,10305],{"class":118,"line":304},[116,10300,512],{"class":122},[116,10302,127],{"class":126},[116,10304,1649],{"class":126},[116,10306,1652],{"class":1203},[485,10308,10310],{"id":10309},"create-project-specific-skills","Create Project-Specific Skills",[11,10312,10313,10314,10318],{},"Use the ",[22,10315,10317],{"href":2133,"rel":10316},[26],"Skill Creator"," to build skills tailored to your project:",[107,10320,10322],{"className":109,"code":10321,"language":111,"meta":112,"style":112},"# Example: a deploy skill for your specific infrastructure\n> \u002Fskill-creator\n> Name: Deploy to Production\n> Trigger: when I say \"deploy\" or \"ship it\"\n> Steps: run tests, build, push to registry, update k8s\n",[43,10323,10324,10329,10335,10342,10357],{"__ignoreMap":112},[116,10325,10326],{"class":118,"line":119},[116,10327,10328],{"class":1203},"# Example: a deploy skill for your specific infrastructure\n",[116,10330,10331,10333],{"class":118,"line":280},[116,10332,526],{"class":182},[116,10334,9757],{"class":186},[116,10336,10337,10339],{"class":118,"line":287},[116,10338,526],{"class":182},[116,10340,10341],{"class":186}," Name: Deploy to Production\n",[116,10343,10344,10346,10349,10352,10354],{"class":118,"line":293},[116,10345,526],{"class":182},[116,10347,10348],{"class":186}," Trigger: when I say ",[116,10350,10351],{"class":126},"\"deploy\"",[116,10353,568],{"class":186},[116,10355,10356],{"class":126},"\"ship it\"\n",[116,10358,10359,10361],{"class":118,"line":298},[116,10360,526],{"class":182},[116,10362,10363],{"class":186}," Steps: run tests, build, push to registry, update k8s\n",[485,10365,10367],{"id":10366},"share-skills-with-your-team","Share Skills With Your Team",[11,10369,10370,10371,10375],{},"For team setups, see our dedicated guide: ",[22,10372,10374],{"href":10373},"\u002Fguide\u002Fagent-skills-for-teams","How to Set Up Shared Agent Skills for Your Team",". It covers Git-based sharing, TokRepo collections, and self-hosted registries.",[1498,10377,10378],{"type":1500},[11,10379,10380],{},"Start with 3-5 skills that match your most common tasks. Add more as you discover gaps in your workflow. Too many skills at once can be overwhelming — build up gradually.",[15,10382,1012],{"id":1011},[485,10384,10386],{"id":10385},"do-i-need-to-complete-powerup-before-installing-skills","Do I need to complete \u002Fpowerup before installing skills?",[11,10388,10389,10390,10392],{},"No. Skills work independently of ",[43,10391,9338],{},". However, the lessons give you context for why each skill is valuable — understanding the concept makes you a better skill user.",[485,10394,10396],{"id":10395},"can-i-modify-a-skill-after-installing-it","Can I modify a skill after installing it?",[11,10398,10399,10400,10402],{},"Yes. Skills are just Markdown files in ",[43,10401,52],{},". Open the file, edit it, save. Claude Code picks up changes immediately — no restart needed.",[107,10404,10406],{"className":109,"code":10405,"language":111,"meta":112,"style":112},"# Find and edit an installed skill\nls .claude\u002Fcommands\u002F\nvim .claude\u002Fcommands\u002Fgsd.md\n",[43,10407,10408,10413,10420],{"__ignoreMap":112},[116,10409,10410],{"class":118,"line":119},[116,10411,10412],{"class":1203},"# Find and edit an installed skill\n",[116,10414,10415,10418],{"class":118,"line":280},[116,10416,10417],{"class":122},"ls",[116,10419,1484],{"class":126},[116,10421,10422,10425],{"class":118,"line":287},[116,10423,10424],{"class":122},"vim",[116,10426,10427],{"class":126}," .claude\u002Fcommands\u002Fgsd.md\n",[485,10429,10431],{"id":10430},"what-if-a-skill-conflicts-with-powerup-instructions","What if a skill conflicts with \u002Fpowerup instructions?",[11,10433,10434,10435,1036],{},"Skills take priority over general instructions because they're more specific. If you find a conflict, edit the skill to match your preferred behavior. For deeper comparison of different extension types, see ",[22,10436,1035],{"href":1034},[15,10438,1076],{"id":1075},[62,10440,10441,10446,10451,10457],{},[65,10442,10443,10445],{},[22,10444,1067],{"href":1066}," — build your own skill from scratch",[65,10447,10448,10450],{},[22,10449,2685],{"href":31}," — explore more skills beyond this list",[65,10452,10453,10456],{},[22,10454,10455],{"href":10373},"Set Up Shared Skills for Your Team"," — distribute skills across your organization",[65,10458,10459,10462],{},[22,10460,2697],{"href":480,"rel":10461},[26]," — discover 500+ community skills",[1103,10464,10465],{},"html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}",{"title":112,"searchDepth":280,"depth":280,"links":10467},[10468,10469,10470,10482,10487,10492],{"id":1158,"depth":280,"text":1159},{"id":9359,"depth":280,"text":9360},{"id":9408,"depth":280,"text":9409,"children":10471},[10472,10473,10474,10475,10476,10477,10478,10479,10480,10481],{"id":9412,"depth":287,"text":9413},{"id":9457,"depth":287,"text":9458},{"id":9531,"depth":287,"text":9532},{"id":9629,"depth":287,"text":9630},{"id":9714,"depth":287,"text":9715},{"id":9799,"depth":287,"text":9800},{"id":9879,"depth":287,"text":9880},{"id":9966,"depth":287,"text":9967},{"id":10057,"depth":287,"text":10058},{"id":10153,"depth":287,"text":10154},{"id":10233,"depth":280,"text":10234,"children":10483},[10484,10485,10486],{"id":10240,"depth":287,"text":10241},{"id":10309,"depth":287,"text":10310},{"id":10366,"depth":287,"text":10367},{"id":1011,"depth":280,"text":1012,"children":10488},[10489,10490,10491],{"id":10385,"depth":287,"text":10386},{"id":10395,"depth":287,"text":10396},{"id":10430,"depth":287,"text":10431},{"id":1075,"depth":280,"text":1076},"Map each Claude Code \u002Fpowerup lesson to a matching agent skill. Turn tutorials into permanent productivity gains with one install command per lesson.","把 Claude Code \u002Fpowerup 的每一课对应到一个 Agent Skill，一条命令把学到的变成永久生产力。","\u002Fguide\u002Fimages\u002Fpowerup-skills-guide-hero.svg",{},"\u002Fen\u002Fguide\u002Fpowerup-skills-guide",{"title":9330,"description":10493},"en\u002Fguide\u002Fpowerup-skills-guide",[2749,10501,10502,1132],"powerup","beginner","Claude Code \u002Fpowerup 之后：10 个 Skill 帮你把每课学到的变成生产力","lWswav7RZu6nepUL27pOnndcrdeNPzzGLPeMq4yx9Cg",{"id":10506,"title":10507,"author":6,"body":10508,"category":2739,"description":11334,"descriptionZh":11335,"extension":1135,"image":11336,"meta":11337,"navigation":283,"path":11338,"publishedAt":1139,"readTime":316,"seo":11339,"stem":11340,"tags":11341,"titleZh":11344,"updatedAt":1139,"__hash__":11345},"docs_en\u002Fen\u002Fguide\u002Fsave-token-costs.md","How to Cut Claude Code Token Costs by 50% with Agent Skills",{"type":8,"value":10509,"toc":11309},[10510,10513,10517,10520,10545,10559,10562,10582,10585,10589,10592,10596,10599,10605,10612,10616,10626,10638,10641,10647,10654,10658,10720,10725,10729,10732,10763,10771,10775,10778,10781,10784,10810,10820,10823,10829,10834,10848,10853,10917,10925,10929,10935,10975,10979,10989,10992,10995,11001,11004,11007,11010,11020,11034,11041,11073,11080,11088,11100,11106,11112,11116,11119,11123,11128,11207,11214,11216,11220,11223,11227,11236,11240,11250,11252,11255,11307],[11,10511,10512],{},"Learn how to reduce Claude Code token consumption by 50% using three proven strategies — reusable agent skills, context compression, and specialized debugging workflows that eliminate wasteful iteration loops.",[15,10514,10516],{"id":10515},"the-token-cost-problem","The Token Cost Problem",[11,10518,10519],{},"Claude Code is powered by large language models, and every interaction consumes tokens. With Anthropic's current pricing, the numbers add up quickly:",[62,10521,10522,10528,10534,10540],{},[65,10523,10524,10527],{},[68,10525,10526],{},"Claude Opus input:"," $15 per million tokens",[65,10529,10530,10533],{},[68,10531,10532],{},"Claude Opus output:"," $75 per million tokens",[65,10535,10536,10539],{},[68,10537,10538],{},"Claude Sonnet input:"," $3 per million tokens",[65,10541,10542,10527],{},[68,10543,10544],{},"Claude Sonnet output:",[11,10546,10547,10548,10551,10552,10555,10556,1036],{},"A typical development session might involve 50,000–150,000 input tokens and 10,000–30,000 output tokens. At Opus pricing, that means a single focused session can cost ",[68,10549,10550],{},"$1.50–$4.50",". Do that 20 times a month and you're looking at ",[68,10553,10554],{},"$30–$90 per month"," in pure token costs — and that's conservative. Complex projects with large codebases easily hit ",[68,10557,10558],{},"$150–$300 per month",[11,10560,10561],{},"The root causes of high token consumption are:",[230,10563,10564,10570,10576],{},[65,10565,10566,10569],{},[68,10567,10568],{},"Repetitive prompts"," — typing the same long instructions every time you want Claude to do a specific task",[65,10571,10572,10575],{},[68,10573,10574],{},"Context bloat"," — conversation history growing until Claude re-reads thousands of lines of irrelevant context",[65,10577,10578,10581],{},[68,10579,10580],{},"Iteration loops"," — Claude guessing at your intent, getting it wrong, then you correcting it across 5–10 back-and-forth messages",[11,10583,10584],{},"Each of these problems has a concrete solution. Let's walk through them.",[15,10586,10588],{"id":10587},"strategy-1-replace-repetitive-prompts-with-skills","Strategy 1: Replace Repetitive Prompts with Skills",[11,10590,10591],{},"Every time you type a multi-paragraph prompt explaining how you want Claude Code to review your code, run your tests, or format your commits, you're spending tokens on instructions that could be stored once and reused forever.",[485,10593,10595],{"id":10594},"the-problem","The Problem",[11,10597,10598],{},"Consider a typical code review prompt that developers type repeatedly:",[107,10600,10603],{"className":10601,"code":10602,"language":1285},[1283],"Review this code for bugs, security issues, and performance problems.\nCheck for SQL injection, XSS vulnerabilities, and auth bypass risks.\nVerify error handling covers all edge cases. Look for N+1 query\npatterns. Check that all database transactions are properly committed\nor rolled back. Format your findings as a markdown table with severity,\nlocation, description, and suggested fix.\n",[43,10604,10602],{"__ignoreMap":112},[11,10606,10607,10608,10611],{},"That's roughly ",[68,10609,10610],{},"80 tokens"," every single time. If you run code reviews 5 times a day, that's 400 tokens per day just on the instruction — not counting the code itself. Over a month, that's 12,000 tokens on the same repeated instruction.",[485,10613,10615],{"id":10614},"the-solution","The Solution",[11,10617,10618,10619,10622,10623,10625],{},"Install an ",[22,10620,10621],{"href":1066},"agent skill"," that encodes the instructions once. The skill sits in ",[43,10624,52],{}," and activates with a short trigger:",[107,10627,10628],{"className":109,"code":2037,"language":111,"meta":112,"style":112},[43,10629,10630],{"__ignoreMap":112},[116,10631,10632,10634,10636],{"class":118,"line":119},[116,10633,512],{"class":122},[116,10635,127],{"class":126},[116,10637,2048],{"class":126},[11,10639,10640],{},"Now instead of typing 80+ tokens of instructions, you type:",[107,10642,10645],{"className":10643,"code":10644,"language":1285},[1283],"\u002Fgsd-code-review\n",[43,10646,10644],{"__ignoreMap":112},[11,10648,10649,10650,10653],{},"That's ",[68,10651,10652],{},"3 tokens",". The skill file is loaded once into context and reused across the entire session. Even better, the skill contains more thorough instructions than you'd bother typing manually — covering edge cases, output formatting, and verification steps.",[485,10655,10657],{"id":10656},"real-savings-calculation","Real Savings Calculation",[2174,10659,10660,10676],{},[2177,10661,10662],{},[2180,10663,10664,10667,10670,10673],{},[2183,10665,10666],{},"Scenario",[2183,10668,10669],{},"Without Skills",[2183,10671,10672],{},"With Skills",[2183,10674,10675],{},"Savings",[2193,10677,10678,10692,10706],{},[2180,10679,10680,10683,10686,10689],{},[2198,10681,10682],{},"Code review prompt",[2198,10684,10685],{},"80 tokens x 5\u002Fday",[2198,10687,10688],{},"3 tokens x 5\u002Fday + 500 token skill load",[2198,10690,10691],{},"92% after first use",[2180,10693,10694,10697,10700,10703],{},[2198,10695,10696],{},"Debug workflow prompt",[2198,10698,10699],{},"120 tokens x 3\u002Fday",[2198,10701,10702],{},"3 tokens x 3\u002Fday + 800 token skill load",[2198,10704,10705],{},"88% after first use",[2180,10707,10708,10711,10714,10717],{},[2198,10709,10710],{},"Planning prompt",[2198,10712,10713],{},"200 tokens x 2\u002Fday",[2198,10715,10716],{},"3 tokens x 2\u002Fday + 1,200 token skill load",[2198,10718,10719],{},"85% after first use",[1498,10721,10722],{"type":1500},[11,10723,10724],{},"Skills pay for themselves after 2–3 uses in the same session. The skill file is loaded once into the conversation context, then every subsequent trigger costs only the slash command tokens. Over a month, the savings compound dramatically.",[485,10726,10728],{"id":10727},"recommended-skills-for-cost-savings","Recommended Skills for Cost Savings",[11,10730,10731],{},"Two skills that deliver the biggest return on token investment:",[62,10733,10734,10753],{},[65,10735,10736,10742,10743,3807,10746,4326,10749,10752],{},[68,10737,10738],{},[22,10739,10741],{"href":777,"rel":10740},[26],"GSD (Get Shit Done)"," — replaces long project-planning prompts with structured ",[43,10744,10745],{},"\u002Fgsd-plan-phase",[43,10747,10748],{},"\u002Fgsd-execute-phase",[43,10750,10751],{},"\u002Fgsd-next"," commands. A single planning prompt that would cost 200+ tokens now costs 3 tokens per invocation.",[65,10754,10755,10762],{},[68,10756,10757],{},[22,10758,10761],{"href":10759,"rel":10760},"https:\u002F\u002Ftokrepo.com\u002Fen\u002Fworkflows\u002F034be597-7c73-4f85-adb5-0c8b21f15e0d",[26],"Planning Skill"," — encodes your planning methodology so you don't re-explain it each session. Especially valuable for teams where multiple developers need consistent planning output.",[11,10764,10765,10766,10770],{},"Browse the full ",[22,10767,10769],{"href":10768},"\u002Fcollections\u002Fskills","skills collection"," for more options tailored to your workflow.",[15,10772,10774],{"id":10773},"strategy-2-compress-context-with-summarization","Strategy 2: Compress Context with Summarization",[11,10776,10777],{},"Even with skills installed, your conversation context grows with every message. Claude Code reads the entire conversation history on each turn — meaning a conversation with 50,000 tokens of history costs 50,000 input tokens per message, even if you're asking a simple question.",[485,10779,10595],{"id":10780},"the-problem-1",[11,10782,10783],{},"Here's a real-world scenario:",[230,10785,10786,10792,10798,10804],{},[65,10787,10788,10791],{},[68,10789,10790],{},"Turn 1:"," You ask Claude to read 3 files (8,000 tokens of file content added to context)",[65,10793,10794,10797],{},[68,10795,10796],{},"Turn 5:"," You've exchanged 20,000 tokens of conversation",[65,10799,10800,10803],{},[68,10801,10802],{},"Turn 10:"," Context is at 45,000 tokens",[65,10805,10806,10809],{},[68,10807,10808],{},"Turn 15:"," Context is at 80,000 tokens — every new message now costs 80,000 input tokens just to process the history",[11,10811,10812,10813,10816,10817,1036],{},"At Opus pricing ($15\u002Fmillion input tokens), Turn 15 costs ",[68,10814,10815],{},"$1.20 in input tokens alone"," — for a single message. The cumulative cost of a 20-turn conversation can easily exceed ",[68,10818,10819],{},"$10",[485,10821,10615],{"id":10822},"the-solution-1",[11,10824,10313,10825,10828],{},[43,10826,10827],{},"\u002Fcompact"," command strategically. This command tells Claude Code to summarize the conversation history, compressing it into a fraction of the original size while retaining the key decisions and context.",[11,10830,10831],{},[68,10832,10833],{},"When to compact:",[62,10835,10836,10839,10842,10845],{},[65,10837,10838],{},"After completing a major task within a session",[65,10840,10841],{},"When you notice the context growing beyond 40,000 tokens",[65,10843,10844],{},"Before switching to a different topic in the same session",[65,10846,10847],{},"After reading large files that you no longer need in full",[11,10849,10850],{},[68,10851,10852],{},"Token count before and after compaction:",[2174,10854,10855,10874],{},[2177,10856,10857],{},[2180,10858,10859,10861,10866,10871],{},[2183,10860,10666],{},[2183,10862,10863,10864],{},"Before ",[43,10865,10827],{},[2183,10867,10868,10869],{},"After ",[43,10870,10827],{},[2183,10872,10873],{},"Reduction",[2193,10875,10876,10890,10904],{},[2180,10877,10878,10881,10884,10887],{},[2198,10879,10880],{},"15-turn code review session",[2198,10882,10883],{},"82,000 tokens",[2198,10885,10886],{},"12,000 tokens",[2198,10888,10889],{},"85%",[2180,10891,10892,10895,10898,10901],{},[2198,10893,10894],{},"Large file exploration",[2198,10896,10897],{},"65,000 tokens",[2198,10899,10900],{},"8,000 tokens",[2198,10902,10903],{},"88%",[2180,10905,10906,10909,10912,10915],{},[2198,10907,10908],{},"Multi-phase project planning",[2198,10910,10911],{},"120,000 tokens",[2198,10913,10914],{},"18,000 tokens",[2198,10916,10889],{},[1498,10918,10919],{"type":1500},[11,10920,10921,10922,10924],{},"A good rule of thumb: run ",[43,10923,10827],{}," every 10–15 turns or whenever you feel the conversation has shifted topics. Each compaction saves you thousands of tokens on every subsequent message in the session.",[485,10926,10928],{"id":10927},"advanced-context-management","Advanced Context Management",[11,10930,10931,10932,10934],{},"Beyond ",[43,10933,10827],{},", these practices reduce context bloat:",[230,10936,10937,10943,10956,10969],{},[65,10938,10939,10942],{},[68,10940,10941],{},"Start new conversations for new tasks"," — don't reuse a bloated session for unrelated work",[65,10944,10945,10948,10949,10952,10953,10955],{},[68,10946,10947],{},"Be specific about which files to read"," — \"read lines 50–120 of ",[43,10950,10951],{},"server.ts","\" instead of \"read ",[43,10954,10951],{},"\" avoids loading thousands of irrelevant lines",[65,10957,10958,10964,10965,10968],{},[68,10959,10960,10961],{},"Use ",[43,10962,10963],{},".claudeignore"," — exclude ",[43,10966,10967],{},"node_modules\u002F",", build artifacts, and large data files from Claude's file search to prevent accidental context inflation",[65,10970,10971,10974],{},[68,10972,10973],{},"Front-load context"," — provide all relevant files and constraints in your first message rather than drip-feeding them across 5 messages, which forces Claude to re-read growing context each time",[15,10976,10978],{"id":10977},"strategy-3-reduce-iterations-with-specialized-skills","Strategy 3: Reduce Iterations with Specialized Skills",[11,10980,10981,10982,10985,10986,1036],{},"The most expensive token waste isn't prompt repetition or context bloat — it's ",[68,10983,10984],{},"iteration loops",". When Claude misunderstands your intent, you spend 3–10 correction messages, each one re-processing the entire conversation context. A single misunderstanding in a large context can cost ",[68,10987,10988],{},"$5–$15 in wasted tokens",[485,10990,10595],{"id":10991},"the-problem-2",[11,10993,10994],{},"Debugging without structure is a classic token-burner:",[107,10996,10999],{"className":10997,"code":10998,"language":1285},[1283],"Turn 1: \"Fix this bug\" (Claude tries approach A — fails)\nTurn 2: \"That didn't work, try X instead\" (Claude tries approach X — partially works)\nTurn 3: \"Close, but you broke Y\" (Claude fixes Y but reintroduces the original bug)\nTurn 4: \"No, you need to keep the fix from Turn 2 but also fix Y\"\nTurn 5: \"Let me explain the full context again...\"\n",[43,11000,10998],{"__ignoreMap":112},[11,11002,11003],{},"Each turn costs more than the last because the context keeps growing. By Turn 5, you've spent 5x the tokens that a correct first attempt would have cost.",[485,11005,10615],{"id":11006},"the-solution-2",[11,11008,11009],{},"Specialized skills encode methodology that gets it right the first time — or at least within 1–2 iterations instead of 5–10.",[11,11011,11012,11019],{},[68,11013,11014],{},[22,11015,11018],{"href":11016,"rel":11017},"https:\u002F\u002Ftokrepo.com\u002Fen\u002Fworkflows\u002F78ed006e-d10d-4efe-804b-2e19a76cf2bb",[26],"Systematic Debugging Skill"," — instead of ad-hoc \"fix this\" prompts, this skill walks Claude through a structured process:",[107,11021,11023],{"className":109,"code":11022,"language":111,"meta":112,"style":112},"tokrepo install 78ed006e-d10d-4efe-804b-2e19a76cf2bb\n",[43,11024,11025],{"__ignoreMap":112},[116,11026,11027,11029,11031],{"class":118,"line":119},[116,11028,512],{"class":122},[116,11030,127],{"class":126},[116,11032,11033],{"class":126}," 78ed006e-d10d-4efe-804b-2e19a76cf2bb\n",[11,11035,11036,11037,11040],{},"Then use ",[43,11038,11039],{},"\u002Fgsd-debug"," to trigger a systematic debugging workflow:",[230,11042,11043,11049,11055,11061,11067],{},[65,11044,11045,11048],{},[68,11046,11047],{},"Reproduce"," — verify the bug exists and is consistent",[65,11050,11051,11054],{},[68,11052,11053],{},"Hypothesize"," — generate 3–5 possible root causes ranked by likelihood",[65,11056,11057,11060],{},[68,11058,11059],{},"Test"," — check each hypothesis with minimal code changes",[65,11062,11063,11066],{},[68,11064,11065],{},"Fix"," — apply the fix for the confirmed root cause",[65,11068,11069,11072],{},[68,11070,11071],{},"Verify"," — run tests to confirm the fix doesn't break anything",[11,11074,11075,11076,11079],{},"This structured approach typically resolves bugs in ",[68,11077,11078],{},"2–3 turns"," instead of 5–10 — saving 60–70% of tokens on debugging tasks.",[11,11081,11082,11087],{},[68,11083,11084],{},[22,11085,10317],{"href":2133,"rel":11086},[26]," — when you find yourself writing the same complex prompt more than twice, this meta-skill helps you turn it into a reusable skill in minutes:",[107,11089,11090],{"className":109,"code":2117,"language":111,"meta":112,"style":112},[43,11091,11092],{"__ignoreMap":112},[116,11093,11094,11096,11098],{"class":118,"line":119},[116,11095,512],{"class":122},[116,11097,127],{"class":126},[116,11099,2128],{"class":126},[11,11101,10960,11102,11105],{},[43,11103,11104],{},"\u002Fskill-creator"," to generate a new skill from a description. The skill creator encodes best practices for skill writing — frontmatter, trigger conditions, instructions, and examples — so your custom skills work correctly on the first try instead of requiring 3–4 revision cycles.",[1498,11107,11109],{"type":11108},"warning",[11,11110,11111],{},"Iteration loops are multiplicative costs. A 5-turn loop in an 80,000-token context doesn't cost 5x a single turn — it costs roughly 5 + 6 + 7 + 8 + 9 = 35 relative units, because each turn adds to the context the next turn must process. Cutting loops from 5 iterations to 2 can save more than 70% of total tokens.",[15,11113,11115],{"id":11114},"before-vs-after-real-token-usage-comparison","Before vs After: Real Token Usage Comparison",[11,11117,11118],{},"We tracked token usage across five common development tasks, comparing workflows without skills to workflows using the strategies described above.",[965,11120],{":headers":11121,":rows":11122},"[\"Task\",\"Without Skills (tokens)\",\"With Skills (tokens)\",\"Savings %\"]","[[\"Code review (3 files)\",\"45,000\",\"18,000\",\"60%\"],[\"Debug a backend API bug\",\"92,000\",\"35,000\",\"62%\"],[\"Plan a new feature (5 phases)\",\"68,000\",\"28,000\",\"59%\"],[\"Create a new agent skill\",\"34,000\",\"12,000\",\"65%\"],[\"Full-day development session\",\"320,000\",\"145,000\",\"55%\"]]",[11,11124,11125],{},[68,11126,11127],{},"Dollar impact at Opus pricing ($15\u002F$75 per million tokens):",[2174,11129,11130,11140],{},[2177,11131,11132],{},[2180,11133,11134,11136,11138],{},[2183,11135,2438],{},[2183,11137,10669],{},[2183,11139,10672],{},[2193,11141,11142,11153,11164,11175,11192],{},[2180,11143,11144,11147,11150],{},[2198,11145,11146],{},"Average daily token usage",[2198,11148,11149],{},"320,000",[2198,11151,11152],{},"145,000",[2180,11154,11155,11158,11161],{},[2198,11156,11157],{},"Daily cost (input @ $15\u002FM)",[2198,11159,11160],{},"$4.80",[2198,11162,11163],{},"$2.18",[2180,11165,11166,11169,11172],{},[2198,11167,11168],{},"Daily cost (output @ $75\u002FM, est. 30K output)",[2198,11170,11171],{},"$2.25",[2198,11173,11174],{},"$1.13",[2180,11176,11177,11182,11187],{},[2198,11178,11179],{},[68,11180,11181],{},"Monthly cost (20 work days)",[2198,11183,11184],{},[68,11185,11186],{},"$141.00",[2198,11188,11189],{},[68,11190,11191],{},"$66.20",[2180,11193,11194,11199,11202],{},[2198,11195,11196],{},[68,11197,11198],{},"Annual savings",[2198,11200,11201],{},"—",[2198,11203,11204],{},[68,11205,11206],{},"$897.60",[11,11208,11209,11210,11213],{},"That's nearly ",[68,11211,11212],{},"$900 per year"," in savings for a single developer — and the savings scale linearly with team size.",[15,11215,1012],{"id":1011},[485,11217,11219],{"id":11218},"do-agent-skills-themselves-consume-tokens","Do agent skills themselves consume tokens?",[11,11221,11222],{},"Yes, but only once per session. When a skill is triggered, its Markdown content is loaded into the conversation context. A typical skill is 500–1,500 tokens. After that initial load, subsequent triggers in the same session cost only the 2–3 tokens of the slash command. The net savings far exceed the one-time cost — usually by Turn 2 or Turn 3 of using the skill.",[485,11224,11226],{"id":11225},"whats-the-single-most-impactful-thing-i-can-do-to-reduce-token-costs","What's the single most impactful thing I can do to reduce token costs?",[11,11228,3552,11229,11231,11232,11235],{},[43,11230,10827],{}," regularly. Context compression delivers the largest absolute savings because it reduces the cost of every subsequent message in the session. If your context is at 80,000 tokens and you compact to 12,000, you save 68,000 tokens on every following turn. After just 3 more turns, that's 204,000 tokens saved — worth ",[68,11233,11234],{},"$3.06"," at Opus input pricing.",[485,11237,11239],{"id":11238},"can-i-combine-all-three-strategies","Can I combine all three strategies?",[11,11241,11242,11243,11245,11246,11249],{},"Absolutely — and they're designed to work together. Install skills (Strategy 1) to reduce repetitive prompts, use ",[43,11244,10827],{}," (Strategy 2) to keep context lean, and rely on specialized skills (Strategy 3) to minimize iteration loops. Teams that adopt all three consistently report ",[68,11247,11248],{},"45–55% reduction"," in monthly token costs compared to unoptimized workflows.",[15,11251,1076],{"id":1075},[11,11253,11254],{},"Ready to start saving tokens? Here are your next actions:",[230,11256,11257,11271,11280,11289,11298],{},[65,11258,11259,11262,11263,11266,11267,11270],{},[68,11260,11261],{},"Install your first skill"," — start with ",[22,11264,3476],{"href":777,"rel":11265},[26]," or the ",[22,11268,10761],{"href":10759,"rel":11269},[26]," for immediate impact",[65,11272,11273,11276,11277,11279],{},[68,11274,11275],{},"Browse the full catalog"," — explore the ",[22,11278,10769],{"href":10768}," to find skills for your specific workflow",[65,11281,11282,11285,11286,11288],{},[68,11283,11284],{},"Learn to build your own"," — read ",[22,11287,1067],{"href":1066}," and turn your most-repeated prompts into reusable skills",[65,11290,11291,11294,11295,11297],{},[68,11292,11293],{},"Compare your options"," — check ",[22,11296,1035],{"href":1034}," to understand when skills are the right choice",[65,11299,11300,11303,11304,11306],{},[68,11301,11302],{},"See what's popular"," — our ",[22,11305,2685],{"href":31}," ranking highlights the highest-impact skills tested on real projects",[1103,11308,3638],{},{"title":112,"searchDepth":280,"depth":280,"links":11310},[11311,11312,11318,11323,11327,11328,11333],{"id":10515,"depth":280,"text":10516},{"id":10587,"depth":280,"text":10588,"children":11313},[11314,11315,11316,11317],{"id":10594,"depth":287,"text":10595},{"id":10614,"depth":287,"text":10615},{"id":10656,"depth":287,"text":10657},{"id":10727,"depth":287,"text":10728},{"id":10773,"depth":280,"text":10774,"children":11319},[11320,11321,11322],{"id":10780,"depth":287,"text":10595},{"id":10822,"depth":287,"text":10615},{"id":10927,"depth":287,"text":10928},{"id":10977,"depth":280,"text":10978,"children":11324},[11325,11326],{"id":10991,"depth":287,"text":10595},{"id":11006,"depth":287,"text":10615},{"id":11114,"depth":280,"text":11115},{"id":1011,"depth":280,"text":1012,"children":11329},[11330,11331,11332],{"id":11218,"depth":287,"text":11219},{"id":11225,"depth":287,"text":11226},{"id":11238,"depth":287,"text":11239},{"id":1075,"depth":280,"text":1076},"Three proven strategies to reduce Claude Code token consumption by 50% — reusable skills, context compression, and fewer iteration loops.","三个经过验证的策略，帮你把 Claude Code Token 消耗降低 50%——可复用 Skill、上下文压缩、减少迭代循环。","\u002Fguide\u002Fimages\u002Fsave-token-costs-hero.svg",{},"\u002Fen\u002Fguide\u002Fsave-token-costs",{"title":10507,"description":11334},"en\u002Fguide\u002Fsave-token-costs",[2749,11342,11343,3680],"token","cost","用 Agent Skills 把 Claude Code Token 消耗降低 50%","iFYoPwiA6-E64rURiKmz84aSoBKhNtxKQl9XW89eiS4",{"id":11347,"title":11348,"author":6,"body":11349,"category":1132,"description":12120,"descriptionZh":12121,"extension":1135,"image":12122,"meta":12123,"navigation":283,"path":12124,"publishedAt":12125,"readTime":316,"seo":12126,"stem":12127,"tags":12128,"titleZh":12129,"updatedAt":12125,"__hash__":12130},"docs_en\u002Fen\u002Fguide\u002Fcreate-skill.md","How to Create Your First Agent Skill for Claude Code",{"type":8,"value":11350,"toc":12099},[11351,11355,11369,11375,11380,11384,11415,11418,11420,11423,11450,11454,11463,11505,11508,11530,11534,11537,11580,11583,11640,11648,11652,11655,11777,11781,11807,11811,11814,11819,11853,11858,11870,11873,11884,11888,11891,11948,11951,11980,11998,12000,12004,12007,12011,12014,12018,12025,12029,12037,12041,12089,12093,12096],[15,11352,11354],{"id":11353},"what-is-an-agent-skill","What Is an Agent Skill?",[11,11356,11357,11358,11361,11362,568,11365,11368],{},"An ",[68,11359,11360],{},"Agent Skill"," is a Markdown file (typically ",[43,11363,11364],{},"SKILL.md",[43,11366,11367],{},"*.skill.md",") that teaches an AI coding agent how to perform a specific task. Think of it as a reusable prompt with structure — it tells the agent what to do, when to activate, and how to execute.",[11,11370,11371,11372,1036],{},"Unlike MCP servers (which require code and a running process) or custom rules (which are simple text constraints), agent skills sit in a sweet spot: ",[68,11373,11374],{},"powerful enough to encode complex workflows, simple enough that anyone can create one",[1498,11376,11377],{"type":1500},[11,11378,11379],{},"Agent Skills are Markdown files — you don't need any programming knowledge to create one. If you can write a clear prompt, you can build a skill.",[485,11381,11383],{"id":11382},"who-uses-agent-skills","Who Uses Agent Skills?",[62,11385,11386,11396,11403,11409],{},[65,11387,11388,11390,11391,1297,11393,11395],{},[68,11389,32],{}," — looks for ",[43,11392,11364],{},[43,11394,52],{}," or project root",[65,11397,11398,5525,11400,11402],{},[68,11399,37],{},[43,11401,56],{}," files",[65,11404,11405,5525,11407,11402],{},[68,11406,27],{},[43,11408,45],{},[65,11410,11411,5525,11413,11402],{},[68,11412,6570],{},[43,11414,6558],{},[11,11416,11417],{},"The SKILL.md format works across all of these with minor adaptations.",[15,11419,1159],{"id":1158},[11,11421,11422],{},"Before you start, make sure you have:",[230,11424,11425,11438,11444],{},[65,11426,11427,11430,11431,3807,11434,11437],{},[68,11428,11429],{},"An AI coding agent"," installed — ",[22,11432,32],{"href":1166,"rel":11433},[26],[22,11435,997],{"href":5365,"rel":11436},[26],", or similar",[65,11439,11440,11443],{},[68,11441,11442],{},"A text editor"," — VS Code, Cursor, or any editor you prefer",[65,11445,11446,11449],{},[68,11447,11448],{},"A project directory"," — any folder where you want the skill available",[15,11451,11453],{"id":11452},"step-1-create-the-skillmd-file","Step 1: Create the SKILL.md File",[11,11455,11456,11457,11459,11460,11462],{},"Create a new file called ",[43,11458,11364],{}," in your project root (or in ",[43,11461,52],{}," for Claude Code).",[107,11464,11466],{"className":109,"code":11465,"language":111,"meta":112,"style":112},"# Option A: Project root (works everywhere)\ntouch SKILL.md\n\n# Option B: Claude Code commands directory\nmkdir -p .claude\u002Fcommands\ntouch .claude\u002Fcommands\u002Fmy-skill.md\n",[43,11467,11468,11473,11481,11485,11490,11498],{"__ignoreMap":112},[116,11469,11470],{"class":118,"line":119},[116,11471,11472],{"class":1203},"# Option A: Project root (works everywhere)\n",[116,11474,11475,11478],{"class":118,"line":280},[116,11476,11477],{"class":122},"touch",[116,11479,11480],{"class":126}," SKILL.md\n",[116,11482,11483],{"class":118,"line":287},[116,11484,284],{"emptyLinePlaceholder":283},[116,11486,11487],{"class":118,"line":293},[116,11488,11489],{"class":1203},"# Option B: Claude Code commands directory\n",[116,11491,11492,11494,11496],{"class":118,"line":298},[116,11493,1315],{"class":122},[116,11495,1318],{"class":130},[116,11497,1321],{"class":126},[116,11499,11500,11502],{"class":118,"line":304},[116,11501,11477],{"class":122},[116,11503,11504],{"class":126}," .claude\u002Fcommands\u002Fmy-skill.md\n",[11,11506,11507],{},"The file name matters:",[62,11509,11510,11515,11525],{},[65,11511,11512,11514],{},[43,11513,11364],{}," — auto-discovered by agents scanning the project",[65,11516,11517,11520,11521,11524],{},[43,11518,11519],{},".claude\u002Fcommands\u002Fcode-review.md"," — becomes the ",[43,11522,11523],{},"\u002Fcode-review"," slash command in Claude Code",[65,11526,11527,11529],{},[43,11528,11367],{}," — recognized by TokRepo for publishing",[15,11531,11533],{"id":11532},"step-2-define-the-metadata","Step 2: Define the Metadata",[11,11535,11536],{},"Every good skill starts with clear metadata in a YAML frontmatter block:",[107,11538,11540],{"className":268,"code":11539,"language":270,"meta":112,"style":112},"---\nname: Code Review Skill\ndescription: Performs adversarial code review on changed files\ntriggers:\n  - \u002Fcode-review\n  - \"review my code\"\n  - \"check for bugs\"\n---\n",[43,11541,11542,11546,11551,11556,11561,11566,11571,11576],{"__ignoreMap":112},[116,11543,11544],{"class":118,"line":119},[116,11545,1352],{},[116,11547,11548],{"class":118,"line":280},[116,11549,11550],{},"name: Code Review Skill\n",[116,11552,11553],{"class":118,"line":287},[116,11554,11555],{},"description: Performs adversarial code review on changed files\n",[116,11557,11558],{"class":118,"line":293},[116,11559,11560],{},"triggers:\n",[116,11562,11563],{"class":118,"line":298},[116,11564,11565],{},"  - \u002Fcode-review\n",[116,11567,11568],{"class":118,"line":304},[116,11569,11570],{},"  - \"review my code\"\n",[116,11572,11573],{"class":118,"line":310},[116,11574,11575],{},"  - \"check for bugs\"\n",[116,11577,11578],{"class":118,"line":316},[116,11579,1352],{},[11,11581,11582],{},"The key fields:",[2174,11584,11585,11598],{},[2177,11586,11587],{},[2180,11588,11589,11592,11595],{},[2183,11590,11591],{},"Field",[2183,11593,11594],{},"Purpose",[2183,11596,11597],{},"Example",[2193,11599,11600,11613,11626],{},[2180,11601,11602,11607,11610],{},[2198,11603,11604],{},[43,11605,11606],{},"name",[2198,11608,11609],{},"Human-readable skill name",[2198,11611,11612],{},"\"Code Review Skill\"",[2180,11614,11615,11620,11623],{},[2198,11616,11617],{},[43,11618,11619],{},"description",[2198,11621,11622],{},"What the skill does (shown in listings)",[2198,11624,11625],{},"\"Performs adversarial code review\"",[2180,11627,11628,11632,11635],{},[2198,11629,11630],{},[43,11631,6430],{},[2198,11633,11634],{},"When to activate (slash commands or natural language)",[2198,11636,11637,11639],{},[43,11638,11523],{},", \"review my code\"",[1498,11641,11642],{"type":11108},[11,11643,11644,11645,11647],{},"Keep your ",[43,11646,11619],{}," under 120 characters — it's used as the summary in search results and skill listings.",[15,11649,11651],{"id":11650},"step-3-write-the-instructions","Step 3: Write the Instructions",[11,11653,11654],{},"The body of your SKILL.md is the actual prompt. Write it as clear instructions for the AI agent:",[107,11656,11658],{"className":268,"code":11657,"language":270,"meta":112,"style":112},"## Goal\n\nReview all changed files in the current branch for bugs, security issues,\nand code quality problems.\n\n## Steps\n\n1. Run `git diff --name-only HEAD~1` to find changed files\n2. Read each changed file completely\n3. For each file, check for:\n   - Logic errors and edge cases\n   - Security vulnerabilities (injection, auth bypass, etc.)\n   - Performance issues (N+1 queries, unnecessary loops)\n   - Code style violations\n4. Output a structured report with severity levels\n\n## Output Format\n\nFor each issue found:\n- **File**: path\u002Fto\u002Ffile.ts\n- **Line**: 42\n- **Severity**: 🔴 High | 🟡 Medium | 🟢 Low\n- **Issue**: Description of the problem\n- **Fix**: Suggested fix\n",[43,11659,11660,11665,11669,11674,11679,11683,11688,11692,11697,11702,11707,11712,11717,11722,11727,11732,11736,11741,11745,11750,11755,11760,11765,11771],{"__ignoreMap":112},[116,11661,11662],{"class":118,"line":119},[116,11663,11664],{},"## Goal\n",[116,11666,11667],{"class":118,"line":280},[116,11668,284],{"emptyLinePlaceholder":283},[116,11670,11671],{"class":118,"line":287},[116,11672,11673],{},"Review all changed files in the current branch for bugs, security issues,\n",[116,11675,11676],{"class":118,"line":293},[116,11677,11678],{},"and code quality problems.\n",[116,11680,11681],{"class":118,"line":298},[116,11682,284],{"emptyLinePlaceholder":283},[116,11684,11685],{"class":118,"line":304},[116,11686,11687],{},"## Steps\n",[116,11689,11690],{"class":118,"line":310},[116,11691,284],{"emptyLinePlaceholder":283},[116,11693,11694],{"class":118,"line":316},[116,11695,11696],{},"1. Run `git diff --name-only HEAD~1` to find changed files\n",[116,11698,11699],{"class":118,"line":322},[116,11700,11701],{},"2. Read each changed file completely\n",[116,11703,11704],{"class":118,"line":327},[116,11705,11706],{},"3. For each file, check for:\n",[116,11708,11709],{"class":118,"line":333},[116,11710,11711],{},"   - Logic errors and edge cases\n",[116,11713,11714],{"class":118,"line":339},[116,11715,11716],{},"   - Security vulnerabilities (injection, auth bypass, etc.)\n",[116,11718,11719],{"class":118,"line":345},[116,11720,11721],{},"   - Performance issues (N+1 queries, unnecessary loops)\n",[116,11723,11724],{"class":118,"line":350},[116,11725,11726],{},"   - Code style violations\n",[116,11728,11729],{"class":118,"line":356},[116,11730,11731],{},"4. Output a structured report with severity levels\n",[116,11733,11734],{"class":118,"line":362},[116,11735,284],{"emptyLinePlaceholder":283},[116,11737,11738],{"class":118,"line":1402},[116,11739,11740],{},"## Output Format\n",[116,11742,11743],{"class":118,"line":1408},[116,11744,284],{"emptyLinePlaceholder":283},[116,11746,11747],{"class":118,"line":1413},[116,11748,11749],{},"For each issue found:\n",[116,11751,11752],{"class":118,"line":1419},[116,11753,11754],{},"- **File**: path\u002Fto\u002Ffile.ts\n",[116,11756,11757],{"class":118,"line":1676},[116,11758,11759],{},"- **Line**: 42\n",[116,11761,11762],{"class":118,"line":1681},[116,11763,11764],{},"- **Severity**: 🔴 High | 🟡 Medium | 🟢 Low\n",[116,11766,11768],{"class":118,"line":11767},23,[116,11769,11770],{},"- **Issue**: Description of the problem\n",[116,11772,11774],{"class":118,"line":11773},24,[116,11775,11776],{},"- **Fix**: Suggested fix\n",[485,11778,11780],{"id":11779},"tips-for-great-instructions","Tips for Great Instructions",[230,11782,11783,11789,11795,11801],{},[65,11784,11785,11788],{},[68,11786,11787],{},"Be specific"," — \"Check for SQL injection in all database queries\" beats \"look for security issues\"",[65,11790,11791,11794],{},[68,11792,11793],{},"Use numbered steps"," — agents follow ordered lists more reliably than paragraphs",[65,11796,11797,11800],{},[68,11798,11799],{},"Include examples"," — show the expected output format",[65,11802,11803,11806],{},[68,11804,11805],{},"Set boundaries"," — tell the agent what NOT to do (e.g., \"Do not modify any files, only report\")",[15,11808,11810],{"id":11809},"step-4-test-locally","Step 4: Test Locally",[11,11812,11813],{},"Test your skill by invoking it in your AI agent:",[11,11815,11816],{},[68,11817,11818],{},"In Claude Code:",[107,11820,11822],{"className":109,"code":11821,"language":111,"meta":112,"style":112},"# If placed in .claude\u002Fcommands\u002Fcode-review.md\nclaude \u002Fcode-review\n\n# If placed as SKILL.md in project root\nclaude \"use the code review skill\"\n",[43,11823,11824,11829,11837,11841,11846],{"__ignoreMap":112},[116,11825,11826],{"class":118,"line":119},[116,11827,11828],{"class":1203},"# If placed in .claude\u002Fcommands\u002Fcode-review.md\n",[116,11830,11831,11834],{"class":118,"line":280},[116,11832,11833],{"class":122},"claude",[116,11835,11836],{"class":126}," \u002Fcode-review\n",[116,11838,11839],{"class":118,"line":287},[116,11840,284],{"emptyLinePlaceholder":283},[116,11842,11843],{"class":118,"line":293},[116,11844,11845],{"class":1203},"# If placed as SKILL.md in project root\n",[116,11847,11848,11850],{"class":118,"line":298},[116,11849,11833],{"class":122},[116,11851,11852],{"class":126}," \"use the code review skill\"\n",[11,11854,11855],{},[68,11856,11857],{},"In Codex CLI:",[107,11859,11861],{"className":109,"code":11860,"language":111,"meta":112,"style":112},"codex \"review my code using the skill in SKILL.md\"\n",[43,11862,11863],{"__ignoreMap":112},[116,11864,11865,11867],{"class":118,"line":119},[116,11866,5642],{"class":122},[116,11868,11869],{"class":126}," \"review my code using the skill in SKILL.md\"\n",[11,11871,11872],{},"Iterate on the instructions based on the results. Common adjustments:",[62,11874,11875,11878,11881],{},[65,11876,11877],{},"Add more specific examples if the output format is wrong",[65,11879,11880],{},"Add constraints if the agent is doing too much or too little",[65,11882,11883],{},"Add error handling instructions for edge cases",[15,11885,11887],{"id":11886},"step-5-publish-to-tokrepo","Step 5: Publish to TokRepo",[11,11889,11890],{},"Once your skill works well locally, share it with the community:",[107,11892,11894],{"className":109,"code":11893,"language":111,"meta":112,"style":112},"# Install TokRepo CLI\nnpm install -g tokrepo\n\n# Login with your API token\ntokrepo login\n\n# Push your skill\ntokrepo push my-skill.skill.md --public\n",[43,11895,11896,11901,11911,11915,11920,11926,11930,11935],{"__ignoreMap":112},[116,11897,11898],{"class":118,"line":119},[116,11899,11900],{"class":1203},"# Install TokRepo CLI\n",[116,11902,11903,11905,11907,11909],{"class":118,"line":280},[116,11904,123],{"class":122},[116,11906,127],{"class":126},[116,11908,131],{"class":130},[116,11910,507],{"class":126},[116,11912,11913],{"class":118,"line":287},[116,11914,284],{"emptyLinePlaceholder":283},[116,11916,11917],{"class":118,"line":293},[116,11918,11919],{"class":1203},"# Login with your API token\n",[116,11921,11922,11924],{"class":118,"line":298},[116,11923,512],{"class":122},[116,11925,169],{"class":126},[116,11927,11928],{"class":118,"line":304},[116,11929,284],{"emptyLinePlaceholder":283},[116,11931,11932],{"class":118,"line":310},[116,11933,11934],{"class":1203},"# Push your skill\n",[116,11936,11937,11939,11942,11945],{"class":118,"line":316},[116,11938,512],{"class":122},[116,11940,11941],{"class":126}," push",[116,11943,11944],{"class":126}," my-skill.skill.md",[116,11946,11947],{"class":130}," --public\n",[11,11949,11950],{},"Your skill is now searchable and installable by anyone:",[107,11952,11954],{"className":109,"code":11953,"language":111,"meta":112,"style":112},"# Others can find and install it\ntokrepo search \"code review\"\ntokrepo install your-skill-name\n",[43,11955,11956,11961,11971],{"__ignoreMap":112},[116,11957,11958],{"class":118,"line":119},[116,11959,11960],{"class":1203},"# Others can find and install it\n",[116,11962,11963,11965,11968],{"class":118,"line":280},[116,11964,512],{"class":122},[116,11966,11967],{"class":126}," search",[116,11969,11970],{"class":126}," \"code review\"\n",[116,11972,11973,11975,11977],{"class":118,"line":287},[116,11974,512],{"class":122},[116,11976,127],{"class":126},[116,11978,11979],{"class":126}," your-skill-name\n",[1498,11981,11982],{"type":1500},[11,11983,11984,11985,3807,11987,3807,11989,3807,11992,3807,11995,1036],{},"Add descriptive tags when publishing — they help others discover your skill. Popular tags: ",[43,11986,2749],{},[43,11988,3680],{},[43,11990,11991],{},"code-review",[43,11993,11994],{},"testing",[43,11996,11997],{},"documentation",[15,11999,1012],{"id":1011},[485,12001,12003],{"id":12002},"can-i-use-images-or-diagrams-in-my-skill","Can I use images or diagrams in my skill?",[11,12005,12006],{},"Yes, but most AI agents process skills as text only. Images are useful for documentation on TokRepo but won't be \"seen\" by the agent during execution.",[485,12008,12010],{"id":12009},"how-long-should-a-skill-be","How long should a skill be?",[11,12012,12013],{},"Most effective skills are 200-500 lines. Too short and the agent lacks context; too long and it may lose focus. If your skill exceeds 1000 lines, consider splitting it into multiple skills.",[485,12015,12017],{"id":12016},"can-skills-call-other-skills","Can skills call other skills?",[11,12019,12020,12021,12024],{},"Not directly, but you can reference other skills in your instructions: \"If you need to run tests, follow the testing skill at ",[43,12022,12023],{},".claude\u002Fcommands\u002Ftest.md","\". The agent will read and follow those instructions.",[485,12026,12028],{"id":12027},"whats-the-difference-between-skillmd-and-agentsmd","What's the difference between SKILL.md and AGENTS.md?",[11,12030,12031,12033,12034,12036],{},[43,12032,11364],{}," is a single-purpose skill file. ",[43,12035,56],{}," is a project-level file that describes the overall project context and available capabilities. You can reference skills from within AGENTS.md.",[485,12038,12040],{"id":12039},"how-do-i-update-a-published-skill","How do I update a published skill?",[107,12042,12044],{"className":109,"code":12043,"language":111,"meta":112,"style":112},"# Update by UUID\ntokrepo update \u003Cuuid> my-skill.skill.md\n\n# Or use sync to auto-detect changes\ntokrepo sync .\n",[43,12045,12046,12051,12070,12074,12079],{"__ignoreMap":112},[116,12047,12048],{"class":118,"line":119},[116,12049,12050],{"class":1203},"# Update by UUID\n",[116,12052,12053,12055,12058,12060,12063,12065,12067],{"class":118,"line":280},[116,12054,512],{"class":122},[116,12056,12057],{"class":126}," update",[116,12059,517],{"class":182},[116,12061,12062],{"class":126},"uui",[116,12064,523],{"class":186},[116,12066,526],{"class":182},[116,12068,12069],{"class":126}," my-skill.skill.md\n",[116,12071,12072],{"class":118,"line":287},[116,12073,284],{"emptyLinePlaceholder":283},[116,12075,12076],{"class":118,"line":293},[116,12077,12078],{"class":1203},"# Or use sync to auto-detect changes\n",[116,12080,12081,12083,12086],{"class":118,"line":298},[116,12082,512],{"class":122},[116,12084,12085],{"class":126}," sync",[116,12087,12088],{"class":126}," .\n",[15,12090,12092],{"id":12091},"related-skills-on-tokrepo","Related Skills on TokRepo",[11,12094,12095],{},"Explore these popular skills for inspiration:",[1103,12097,12098],{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}",{"title":112,"searchDepth":280,"depth":280,"links":12100},[12101,12104,12105,12106,12107,12110,12111,12112,12119],{"id":11353,"depth":280,"text":11354,"children":12102},[12103],{"id":11382,"depth":287,"text":11383},{"id":1158,"depth":280,"text":1159},{"id":11452,"depth":280,"text":11453},{"id":11532,"depth":280,"text":11533},{"id":11650,"depth":280,"text":11651,"children":12108},[12109],{"id":11779,"depth":287,"text":11780},{"id":11809,"depth":280,"text":11810},{"id":11886,"depth":280,"text":11887},{"id":1011,"depth":280,"text":1012,"children":12113},[12114,12115,12116,12117,12118],{"id":12002,"depth":287,"text":12003},{"id":12009,"depth":287,"text":12010},{"id":12016,"depth":287,"text":12017},{"id":12027,"depth":287,"text":12028},{"id":12039,"depth":287,"text":12040},{"id":12091,"depth":280,"text":12092},"Step-by-step guide to creating, testing, and publishing SKILL.md files for Claude Code, Codex CLI, and Gemini CLI.","一步步教你创建、测试、发布 SKILL.md 文件，适用于 Claude Code、Codex CLI 和 Gemini CLI。","\u002Fguide\u002Fimages\u002Fcreate-skill-hero.svg",{},"\u002Fen\u002Fguide\u002Fcreate-skill","2026-04-10",{"title":11348,"description":12120},"en\u002Fguide\u002Fcreate-skill",[1144,2749,10502],"如何创建你的第一个 Agent Skill","i2IC3gfPvmmF6Jn87fHbBirL31lQ3e5JEZa9vHd0sMQ",{"id":12132,"title":12133,"author":6,"body":12134,"category":12990,"description":12991,"descriptionZh":12992,"extension":1135,"image":12993,"meta":12994,"navigation":283,"path":12995,"publishedAt":12125,"readTime":327,"seo":12996,"stem":12997,"tags":12998,"titleZh":12999,"updatedAt":12125,"__hash__":13000},"docs_en\u002Fen\u002Fguide\u002Fskills-vs-mcp.md","Agent Skills vs MCP Servers vs Rules — Complete Guide",{"type":8,"value":12135,"toc":12955},[12136,12140,12147,12150,12170,12173,12175,12180,12184,12187,12243,12247,12273,12277,12297,12299,12305,12308,12311,12386,12389,12415,12418,12444,12448,12453,12456,12459,12482,12519,12522,12548,12551,12577,12581,12585,12589,12592,12596,12622,12626,12652,12656,12681,12685,12688,12692,12791,12794,12798,12833,12837,12840,12888,12890,12894,12897,12901,12904,12908,12911,12926,12930,12936,12952],[15,12137,12139],{"id":12138},"introduction","Introduction",[11,12141,12142,12143,12146],{},"Modern AI coding agents like Claude Code, Codex CLI, and Gemini CLI are powerful out of the box. But their real power comes from ",[68,12144,12145],{},"customization"," — teaching them your team's conventions, connecting them to your tools, and automating your workflows.",[11,12148,12149],{},"There are three primary ways to extend an AI coding agent:",[230,12151,12152,12158,12164],{},[65,12153,12154,12157],{},[68,12155,12156],{},"Agent Skills"," — Markdown instruction files",[65,12159,12160,12163],{},[68,12161,12162],{},"MCP Servers"," — API endpoints the agent can call",[65,12165,12166,12169],{},[68,12167,12168],{},"Custom Rules"," — Simple text constraints",[11,12171,12172],{},"Each serves a different purpose. Choosing the right one (or combining them) can dramatically improve your productivity. This guide breaks down exactly when to use each.",[15,12174,2779],{"id":2778},[11,12176,12177,12179],{},[68,12178,12156],{}," are Markdown files that encode reusable workflows for AI agents. They follow a structured format with metadata (name, description, triggers) and instructions (goals, steps, output format).",[485,12181,12183],{"id":12182},"how-they-work","How They Work",[11,12185,12186],{},"When you invoke a skill (via slash command or natural language), the AI agent reads the Markdown file and follows its instructions. The skill becomes part of the agent's context for that task.",[107,12188,12190],{"className":268,"code":12189,"language":270,"meta":112,"style":112},"---\nname: Deploy Checker\ndescription: Validates deployment readiness\ntriggers: [\u002Fdeploy-check]\n---\n\n## Steps\n1. Run the test suite\n2. Check for uncommitted changes\n3. Verify environment variables\n4. Output a go\u002Fno-go report\n",[43,12191,12192,12196,12201,12206,12211,12215,12219,12223,12228,12233,12238],{"__ignoreMap":112},[116,12193,12194],{"class":118,"line":119},[116,12195,1352],{},[116,12197,12198],{"class":118,"line":280},[116,12199,12200],{},"name: Deploy Checker\n",[116,12202,12203],{"class":118,"line":287},[116,12204,12205],{},"description: Validates deployment readiness\n",[116,12207,12208],{"class":118,"line":293},[116,12209,12210],{},"triggers: [\u002Fdeploy-check]\n",[116,12212,12213],{"class":118,"line":298},[116,12214,1352],{},[116,12216,12217],{"class":118,"line":304},[116,12218,284],{"emptyLinePlaceholder":283},[116,12220,12221],{"class":118,"line":310},[116,12222,11687],{},[116,12224,12225],{"class":118,"line":316},[116,12226,12227],{},"1. Run the test suite\n",[116,12229,12230],{"class":118,"line":322},[116,12231,12232],{},"2. Check for uncommitted changes\n",[116,12234,12235],{"class":118,"line":327},[116,12236,12237],{},"3. Verify environment variables\n",[116,12239,12240],{"class":118,"line":333},[116,12241,12242],{},"4. Output a go\u002Fno-go report\n",[485,12244,12246],{"id":12245},"strengths","Strengths",[62,12248,12249,12255,12261,12267],{},[65,12250,12251,12254],{},[68,12252,12253],{},"Zero code required"," — anyone can write Markdown",[65,12256,12257,12260],{},[68,12258,12259],{},"Version controlled"," — lives in your repo, reviewed in PRs",[65,12262,12263,12266],{},[68,12264,12265],{},"Portable"," — works across different AI agents",[65,12268,12269,12272],{},[68,12270,12271],{},"Composable"," — can reference other skills",[485,12274,12276],{"id":12275},"limitations","Limitations",[62,12278,12279,12285,12291],{},[65,12280,12281,12284],{},[68,12282,12283],{},"No external API access"," — can't call third-party services directly",[65,12286,12287,12290],{},[68,12288,12289],{},"No persistent state"," — each invocation starts fresh",[65,12292,12293,12296],{},[68,12294,12295],{},"Text-only"," — can't process images or binary data during execution",[15,12298,3718],{"id":3717},[11,12300,12301,12304],{},[68,12302,12303],{},"MCP (Model Context Protocol) Servers"," are running processes that expose tools, resources, and prompts to AI agents via a standardized protocol. Think of them as plugins with an API.",[485,12306,12183],{"id":12307},"how-they-work-1",[11,12309,12310],{},"An MCP server runs locally or remotely, exposing endpoints that the AI agent can call. The agent discovers available tools at startup and invokes them as needed.",[107,12312,12314],{"className":375,"code":12313,"language":377,"meta":112,"style":112},"{\n  \"mcpServers\": {\n    \"database\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@your-org\u002Fdb-mcp-server\"],\n      \"env\": { \"DATABASE_URL\": \"postgres:\u002F\u002F...\" }\n    }\n  }\n}\n",[43,12315,12316,12320,12326,12333,12343,12358,12374,12378,12382],{"__ignoreMap":112},[116,12317,12318],{"class":118,"line":119},[116,12319,384],{"class":186},[116,12321,12322,12324],{"class":118,"line":280},[116,12323,3771],{"class":130},[116,12325,3774],{"class":186},[116,12327,12328,12331],{"class":118,"line":287},[116,12329,12330],{"class":130},"    \"database\"",[116,12332,3774],{"class":186},[116,12334,12335,12337,12339,12341],{"class":118,"line":293},[116,12336,3786],{"class":130},[116,12338,405],{"class":186},[116,12340,3791],{"class":126},[116,12342,411],{"class":186},[116,12344,12345,12347,12349,12351,12353,12356],{"class":118,"line":298},[116,12346,3798],{"class":130},[116,12348,3801],{"class":186},[116,12350,3804],{"class":126},[116,12352,3807],{"class":186},[116,12354,12355],{"class":126},"\"@your-org\u002Fdb-mcp-server\"",[116,12357,3813],{"class":186},[116,12359,12360,12362,12364,12367,12369,12372],{"class":118,"line":304},[116,12361,3818],{"class":130},[116,12363,5228],{"class":186},[116,12365,12366],{"class":130},"\"DATABASE_URL\"",[116,12368,405],{"class":186},[116,12370,12371],{"class":126},"\"postgres:\u002F\u002F...\"",[116,12373,5239],{"class":186},[116,12375,12376],{"class":118,"line":310},[116,12377,454],{"class":186},[116,12379,12380],{"class":118,"line":316},[116,12381,3844],{"class":186},[116,12383,12384],{"class":118,"line":322},[116,12385,464],{"class":186},[485,12387,12246],{"id":12388},"strengths-1",[62,12390,12391,12397,12403,12409],{},[65,12392,12393,12396],{},[68,12394,12395],{},"Full API access"," — connect to databases, APIs, cloud services",[65,12398,12399,12402],{},[68,12400,12401],{},"Persistent state"," — maintain connections and caches",[65,12404,12405,12408],{},[68,12406,12407],{},"Rich data types"," — handle binary data, images, structured responses",[65,12410,12411,12414],{},[68,12412,12413],{},"Real-time"," — stream data and react to events",[485,12416,12276],{"id":12417},"limitations-1",[62,12419,12420,12426,12432,12438],{},[65,12421,12422,12425],{},[68,12423,12424],{},"Requires code"," — need to implement in TypeScript\u002FPython\u002Fetc.",[65,12427,12428,12431],{},[68,12429,12430],{},"Runtime dependency"," — must be running for agent to use",[65,12433,12434,12437],{},[68,12435,12436],{},"Configuration overhead"," — environment variables, auth tokens, setup",[65,12439,12440,12443],{},[68,12441,12442],{},"Harder to share"," — dependency management, security considerations",[15,12445,12447],{"id":12446},"what-are-custom-rules","What Are Custom Rules?",[11,12449,12450,12452],{},[68,12451,12168],{}," are plain text files that set constraints and conventions for the AI agent. They don't encode workflows — they shape behavior.",[485,12454,12183],{"id":12455},"how-they-work-2",[11,12457,12458],{},"The AI agent reads rule files at startup and applies them to all interactions. They're always-on context, not on-demand tools.",[62,12460,12461,12469,12475],{},[65,12462,12463,405,12465,12468],{},[68,12464,32],{},[43,12466,12467],{},"CLAUDE.md"," in project root",[65,12470,12471,405,12473,12468],{},[68,12472,6570],{},[43,12474,6558],{},[65,12476,12477,405,12479,12481],{},[68,12478,997],{},[43,12480,56],{}," (project-level rules section)",[107,12483,12485],{"className":268,"code":12484,"language":270,"meta":112,"style":112},"## Rules\n\n- Always use TypeScript strict mode\n- Prefer functional components over class components\n- Use Tailwind CSS, never inline styles\n- Run `npm test` before committing\n- Never modify files in the `vendor\u002F` directory\n",[43,12486,12487,12491,12495,12500,12505,12510,12514],{"__ignoreMap":112},[116,12488,12489],{"class":118,"line":119},[116,12490,6705],{},[116,12492,12493],{"class":118,"line":280},[116,12494,284],{"emptyLinePlaceholder":283},[116,12496,12497],{"class":118,"line":287},[116,12498,12499],{},"- Always use TypeScript strict mode\n",[116,12501,12502],{"class":118,"line":293},[116,12503,12504],{},"- Prefer functional components over class components\n",[116,12506,12507],{"class":118,"line":298},[116,12508,12509],{},"- Use Tailwind CSS, never inline styles\n",[116,12511,12512],{"class":118,"line":304},[116,12513,336],{},[116,12515,12516],{"class":118,"line":310},[116,12517,12518],{},"- Never modify files in the `vendor\u002F` directory\n",[485,12520,12246],{"id":12521},"strengths-2",[62,12523,12524,12530,12536,12542],{},[65,12525,12526,12529],{},[68,12527,12528],{},"Always active"," — shapes every interaction automatically",[65,12531,12532,12535],{},[68,12533,12534],{},"Simple"," — just text, no structure required",[65,12537,12538,12541],{},[68,12539,12540],{},"Team alignment"," — enforces conventions across all team members",[65,12543,12544,12547],{},[68,12545,12546],{},"Low overhead"," — no installation, no configuration",[485,12549,12276],{"id":12550},"limitations-2",[62,12552,12553,12559,12565,12571],{},[65,12554,12555,12558],{},[68,12556,12557],{},"No logic"," — can't encode conditional workflows",[65,12560,12561,12564],{},[68,12562,12563],{},"No triggers"," — always on, can't be invoked selectively",[65,12566,12567,12570],{},[68,12568,12569],{},"No tools"," — can't call APIs or run commands on their own",[65,12572,12573,12576],{},[68,12574,12575],{},"Easy to conflict"," — rules can contradict each other",[15,12578,12580],{"id":12579},"feature-comparison","Feature Comparison",[965,12582],{":headers":12583,":rows":12584},"[\"Feature\",\"Agent Skills\",\"MCP Servers\",\"Custom Rules\"]","[[\"What it is\",\"Markdown instructions\",\"Running API process\",\"Text constraints\"],[\"Complexity\",\"Low\",\"High\",\"Very Low\"],[\"Code required?\",\"No\",\"Yes\",\"No\"],[\"External API access\",\"No (agent can use tools)\",\"Yes (native)\",\"No\"],[\"Activation\",\"On-demand (slash cmd \u002F NL)\",\"Always available\",\"Always active\"],[\"Portability\",\"High (cross-agent)\",\"Medium (MCP standard)\",\"Low (agent-specific)\"],[\"Shareable\",\"Easy (file copy \u002F TokRepo)\",\"Medium (npm\u002Fpip)\",\"Easy (file copy)\"],[\"State\",\"Stateless\",\"Stateful\",\"Stateless\"],[\"Best for\",\"Workflows & tasks\",\"Integrations & data\",\"Conventions & guardrails\"]]",[15,12586,12588],{"id":12587},"when-to-use-which","When to Use Which?",[11,12590,12591],{},"Use this decision framework:",[485,12593,12595],{"id":12594},"use-agent-skills-when-you-want-to","Use Agent Skills when you want to...",[62,12597,12598,12604,12610,12616],{},[65,12599,12600,12603],{},[68,12601,12602],{},"Automate a repeatable workflow"," — code review, deployment checks, test generation",[65,12605,12606,12609],{},[68,12607,12608],{},"Share best practices"," — \"here's how our team does X\"",[65,12611,12612,12615],{},[68,12613,12614],{},"Teach complex multi-step procedures"," — that would be hard to explain each time",[65,12617,12618,12621],{},[68,12619,12620],{},"Enable non-technical users"," — product managers, designers, writers",[485,12623,12625],{"id":12624},"use-mcp-servers-when-you-need-to","Use MCP Servers when you need to...",[62,12627,12628,12634,12640,12646],{},[65,12629,12630,12633],{},[68,12631,12632],{},"Connect to external services"," — databases, APIs, cloud platforms",[65,12635,12636,12639],{},[68,12637,12638],{},"Process non-text data"," — images, binary files, structured data",[65,12641,12642,12645],{},[68,12643,12644],{},"Maintain persistent connections"," — database pools, WebSocket streams",[65,12647,12648,12651],{},[68,12649,12650],{},"React in real-time"," — monitoring, notifications, live data",[485,12653,12655],{"id":12654},"use-custom-rules-when-you-want-to","Use Custom Rules when you want to...",[62,12657,12658,12664,12669,12675],{},[65,12659,12660,12663],{},[68,12661,12662],{},"Enforce coding standards"," — style guides, naming conventions",[65,12665,12666,12668],{},[68,12667,11805],{}," — \"never modify production configs\"",[65,12670,12671,12674],{},[68,12672,12673],{},"Provide project context"," — architecture decisions, tech stack info",[65,12676,12677,12680],{},[68,12678,12679],{},"Align team behavior"," — ensure consistency across developers",[15,12682,12684],{"id":12683},"can-they-work-together","Can They Work Together?",[11,12686,12687],{},"Absolutely — and this is where the real power lies.",[485,12689,12691],{"id":12690},"example-full-stack-deploy-workflow","Example: Full-Stack Deploy Workflow",[230,12693,12694,12708,12752],{},[65,12695,12696,12698,12699,12701,12702],{},[68,12697,12168],{}," (",[43,12700,12467],{},"):",[107,12703,12706],{"className":12704,"code":12705,"language":1285},[1283],"- Our staging server is at staging.example.com\n- Always run lint before deploying\n- Use semantic versioning\n",[43,12707,12705],{"__ignoreMap":112},[65,12709,12710,12713,12714,12739,12742,12743,3807,12746,3807,12749],{},[68,12711,12712],{},"MCP Server"," (deployment tools):",[107,12715,12717],{"className":375,"code":12716,"language":377,"meta":112,"style":112},"{ \"deploy\": { \"command\": \"npx deploy-mcp-server\" } }\n",[43,12718,12719],{"__ignoreMap":112},[116,12720,12721,12724,12726,12728,12731,12733,12736],{"class":118,"line":119},[116,12722,12723],{"class":186},"{ ",[116,12725,10351],{"class":130},[116,12727,5228],{"class":186},[116,12729,12730],{"class":130},"\"command\"",[116,12732,405],{"class":186},[116,12734,12735],{"class":126},"\"npx deploy-mcp-server\"",[116,12737,12738],{"class":186}," } }\n",[12740,12741],"br",{},"Exposes: ",[43,12744,12745],{},"deploy_to_staging()",[43,12747,12748],{},"check_deployment_status()",[43,12750,12751],{},"rollback()",[65,12753,12754,12756,12757],{},[68,12755,11360],{}," (deploy workflow):",[107,12758,12760],{"className":268,"code":12759,"language":270,"meta":112,"style":112},"## Steps\n1. Run lint and tests (respect project rules)\n2. Bump version (semantic, per rules)\n3. Call deploy_to_staging() (MCP tool)\n4. Wait and check_deployment_status()\n5. If failed, call rollback()\n",[43,12761,12762,12766,12771,12776,12781,12786],{"__ignoreMap":112},[116,12763,12764],{"class":118,"line":119},[116,12765,11687],{},[116,12767,12768],{"class":118,"line":280},[116,12769,12770],{},"1. Run lint and tests (respect project rules)\n",[116,12772,12773],{"class":118,"line":287},[116,12774,12775],{},"2. Bump version (semantic, per rules)\n",[116,12777,12778],{"class":118,"line":293},[116,12779,12780],{},"3. Call deploy_to_staging() (MCP tool)\n",[116,12782,12783],{"class":118,"line":298},[116,12784,12785],{},"4. Wait and check_deployment_status()\n",[116,12787,12788],{"class":118,"line":304},[116,12789,12790],{},"5. If failed, call rollback()\n",[11,12792,12793],{},"The skill orchestrates the workflow, calling MCP tools for actions and respecting rules for conventions. Each layer does what it's best at.",[485,12795,12797],{"id":12796},"the-right-combination","The \"Right\" Combination",[2174,12799,12800,12810],{},[2177,12801,12802],{},[2180,12803,12804,12807],{},[2183,12805,12806],{},"Concern",[2183,12808,12809],{},"Layer",[2193,12811,12812,12819,12826],{},[2180,12813,12814,12817],{},[2198,12815,12816],{},"\"How to do it\"",[2198,12818,11360],{},[2180,12820,12821,12824],{},[2198,12822,12823],{},"\"What tools to use\"",[2198,12825,12712],{},[2180,12827,12828,12831],{},[2198,12829,12830],{},"\"What constraints to follow\"",[2198,12832,12168],{},[15,12834,12836],{"id":12835},"getting-started","Getting Started",[11,12838,12839],{},"Ready to try each approach? Here's where to start:",[230,12841,12842,12868,12878],{},[65,12843,12844,12846,12847,12851,12852],{},[68,12845,12156],{},": Browse the ",[22,12848,12850],{"href":12849},"\u002Fen\u002Fcollections\u002Fskills","Skills collection"," on TokRepo — install one in 10 seconds:",[107,12853,12855],{"className":109,"code":12854,"language":111,"meta":112,"style":112},"npx tokrepo install code-review-skill\n",[43,12856,12857],{"__ignoreMap":112},[116,12858,12859,12861,12863,12865],{"class":118,"line":119},[116,12860,147],{"class":122},[116,12862,5945],{"class":126},[116,12864,127],{"class":126},[116,12866,12867],{"class":126}," code-review-skill\n",[65,12869,12870,12872,12873,12877],{},[68,12871,12162],{},": Check the ",[22,12874,12876],{"href":12875},"\u002Fen\u002Fcollections\u002Fmcp-servers","MCP Servers collection"," — configure pre-built servers for your stack",[65,12879,12880,12882,12883,568,12885,12887],{},[68,12881,12168],{},": Start with a simple ",[43,12884,12467],{},[43,12886,6558],{}," file in your project root",[15,12889,1012],{"id":1011},[485,12891,12893],{"id":12892},"can-i-convert-a-skill-into-an-mcp-server","Can I convert a skill into an MCP server?",[11,12895,12896],{},"You generally don't need to. Skills and MCP servers serve different purposes. If your skill needs external API access, pair it with an MCP server rather than rewriting it.",[485,12898,12900],{"id":12899},"are-skills-slower-than-mcp-servers","Are skills slower than MCP servers?",[11,12902,12903],{},"Skills add context to the agent's prompt, which may slightly increase processing time. MCP server calls are direct function invocations. In practice, the difference is negligible — the AI's thinking time dominates.",[485,12905,12907],{"id":12906},"can-i-use-all-three-in-the-same-project","Can I use all three in the same project?",[11,12909,12910],{},"Yes, and it's recommended. Most mature projects have:",[62,12912,12913,12918,12923],{},[65,12914,12915,12916],{},"5-10 custom rules in ",[43,12917,12467],{},[65,12919,12920,12921],{},"2-5 agent skills in ",[43,12922,52],{},[65,12924,12925],{},"1-3 MCP servers for external integrations",[485,12927,12929],{"id":12928},"where-can-i-find-pre-built-skills-and-mcp-servers","Where can I find pre-built skills and MCP servers?",[11,12931,12932,12935],{},[22,12933,482],{"href":1515,"rel":12934},[26]," has 500+ open-source agent skills, MCP servers, prompts, and workflows. Search, install, and contribute from the command line:",[107,12937,12939],{"className":109,"code":12938,"language":111,"meta":112,"style":112},"npx tokrepo search \"your use case\"\n",[43,12940,12941],{"__ignoreMap":112},[116,12942,12943,12945,12947,12949],{"class":118,"line":119},[116,12944,147],{"class":122},[116,12946,5945],{"class":126},[116,12948,11967],{"class":126},[116,12950,12951],{"class":126}," \"your use case\"\n",[1103,12953,12954],{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}",{"title":112,"searchDepth":280,"depth":280,"links":12956},[12957,12958,12963,12968,12973,12974,12979,12983,12984],{"id":12138,"depth":280,"text":12139},{"id":2778,"depth":280,"text":2779,"children":12959},[12960,12961,12962],{"id":12182,"depth":287,"text":12183},{"id":12245,"depth":287,"text":12246},{"id":12275,"depth":287,"text":12276},{"id":3717,"depth":280,"text":3718,"children":12964},[12965,12966,12967],{"id":12307,"depth":287,"text":12183},{"id":12388,"depth":287,"text":12246},{"id":12417,"depth":287,"text":12276},{"id":12446,"depth":280,"text":12447,"children":12969},[12970,12971,12972],{"id":12455,"depth":287,"text":12183},{"id":12521,"depth":287,"text":12246},{"id":12550,"depth":287,"text":12276},{"id":12579,"depth":280,"text":12580},{"id":12587,"depth":280,"text":12588,"children":12975},[12976,12977,12978],{"id":12594,"depth":287,"text":12595},{"id":12624,"depth":287,"text":12625},{"id":12654,"depth":287,"text":12655},{"id":12683,"depth":280,"text":12684,"children":12980},[12981,12982],{"id":12690,"depth":287,"text":12691},{"id":12796,"depth":287,"text":12797},{"id":12835,"depth":280,"text":12836},{"id":1011,"depth":280,"text":1012,"children":12985},[12986,12987,12988,12989],{"id":12892,"depth":287,"text":12893},{"id":12899,"depth":287,"text":12900},{"id":12906,"depth":287,"text":12907},{"id":12928,"depth":287,"text":12929},"guide","Understand the three ways to extend AI coding agents. Compare agent skills, MCP servers, and custom rules — when to use each and how they work together.","理解扩展 AI 编程助手的三种方式。对比 Agent Skill、MCP 服务器和自定义规则——何时使用以及如何配合使用。","\u002Fguide\u002Fimages\u002Fskills-vs-mcp-hero.svg",{},"\u002Fen\u002Fguide\u002Fskills-vs-mcp",{"title":12133,"description":12991},"en\u002Fguide\u002Fskills-vs-mcp",[1144,5461,8512,3670],"Agent Skills vs MCP 服务器 vs 规则 — 完整指南","BMs2iNzx316Z0muh_3vuGZOLAVppW5wkxcupUNpr0j0"]