[{"data":1,"prerenderedAt":1509},["ShallowReactive",2],{"search-navigation":3,"\u002Farticle\u002Fcentralised-the-skills-for-agents":36,"\u002Farticle\u002Fcentralised-the-skills-for-agents-surround":519},[4,8,12,16,20,24,28,32],{"title":5,"path":6,"stem":7},"Solving AI Agent Skills Fragmentation with npx skills","\u002Farticle\u002Fcentralised-the-skills-for-agents","en\u002Farticle\u002Fcentralised-the-skills-for-agents",{"title":9,"path":10,"stem":11},"Stop Exposing Your Vault: Secure NodeWarden with Cloudflare","\u002Farticle\u002Fhow-to-secure-nodewarden-at-cloudflare","en\u002Farticle\u002Fhow-to-secure-nodewarden-at-cloudflare",{"title":13,"path":14,"stem":15},"How to Self-Host a BitWarden Compatible Password Vault","\u002Farticle\u002Fself-hosting-nodewarden-at-cloudflare","en\u002Farticle\u002Fself-hosting-nodewarden-at-cloudflare",{"title":17,"path":18,"stem":19},"Google Antigravity 2 Hands-On: Setup & First Impressions","\u002Farticle\u002Fsetup-antigravity-2","en\u002Farticle\u002Fsetup-antigravity-2",{"title":21,"path":22,"stem":23},"NetSuite AI Connector Guide: MCP Setup & Use Cases","\u002Farticle\u002Fsetup-netsuite-mcp-on-chatgpt-claude","en\u002Farticle\u002Fsetup-netsuite-mcp-on-chatgpt-claude",{"title":25,"path":26,"stem":27},"Testing Claude Fable 5: A Financial Analysis Review","\u002Farticle\u002Ftesting-claude-fable-5-in-financial-analysis","en\u002Farticle\u002Ftesting-claude-fable-5-in-financial-analysis",{"title":29,"path":30,"stem":31},"Guide to Browser and Scheduler in Antigravity 2","\u002Farticle\u002Fuse-browser-and-scheduler-in-antigravity-2","en\u002Farticle\u002Fuse-browser-and-scheduler-in-antigravity-2",{"title":33,"path":34,"stem":35},"Antigravity 2 in Action: AI Agents, Skills, and MCP","\u002Farticle\u002Fwhat-can-we-do-with-antigravity-2","en\u002Farticle\u002Fwhat-can-we-do-with-antigravity-2",{"id":37,"title":5,"author":38,"body":39,"category":38,"date":502,"description":503,"extension":504,"image":505,"imageAlt":506,"isPublished":507,"meta":508,"minRead":385,"navigation":507,"path":516,"seo":517,"stem":7,"__hash__":518},"article\u002Fen\u002Farticle\u002Fcentralised-the-skills-for-agents.md",null,{"type":40,"value":41,"toc":492},"minimark",[42,56,59,84,104,109,119,136,146,153,156,190,197,208,227,236,247,251,258,279,282,290,300,307,310,330,340,344,350,436,442,446,482,488],[43,44,45,46,50,51,55],"p",{},"If you run multiple AI agents or CLIs on your computer—whether it's Hermes, Claude Code, Codex, Antigravity, Kimi, or other supported tools—you've probably hit a frustrating issue: ",[47,48,49],"strong",{},"skills fragmentation",". Every agent or CLI maintains its own separate ",[52,53,54],"code",{},"skills"," folder, which leads to duplicate installations, version drift, and management overhead.",[43,57,58],{},"In our work with AI agents, we frequently ran into the following issues:",[60,61,62,69,75],"ul",{},[63,64,65,68],"li",{},[47,66,67],{},"Multiple installs",": Installing a new skill for one agent, then install it again and again for others.",[63,70,71,74],{},[47,72,73],{},"Version drift",": Customising or fixing a skill for one agent, forgetting to update the rest, and ending up with agents behaving differently.",[63,76,77,80,81,83],{},[47,78,79],{},"Skills management",": Having to go through every ",[52,82,54],{}," folder for each agent across our system to see what skills were actually installed.",[43,85,86,87,90,91,93,94,103],{},"The ",[52,88,89],{},"npx skills"," CLI, an open-source CLI from Vercel,  solves the issue by letting you manage one centralised ",[52,92,54],{}," folder and share it across all your agents. You can check out the ",[95,96,100,102],"a",{"href":97,"rel":98},"https:\u002F\u002Fgithub.com\u002Fvercel-labs\u002Fskills",[99],"nofollow",[52,101,89],{},"GitHub repo",".",[105,106,108],"h2",{"id":107},"centralised-folder","Centralised Folder",[43,110,111,112,114,115,118],{},"The concept is simple: if we point every agent's ",[52,113,54],{}," folder to the ",[47,116,117],{},"same physical folder",", the fragmentation problem completely disappears.",[43,120,121,122,124,125,128,129,132,133,135],{},"When you install a skill using ",[52,123,89],{}," CLI, the skill is downloaded to the centralised folder on your machine (",[52,126,127],{},"~\u002F.agents\u002Fskills","). The CLI then creates a ",[47,130,131],{},"symlink"," (which is just a pointer) from each agent's ",[52,134,54],{}," folder back to that centralised folder.",[43,137,138,139,142,143,145],{},"For example, when Claude Code looks for skills in ",[52,140,141],{},"~\u002F.claude\u002Fskills\u002F",", it gets transparently redirected to ",[52,144,127],{},". If you make a tweak to a skill in that centralised folder, every single agent sees the update instantly. No manual copying, no sync scripts, and no wasted disk storage.",[105,147,149,150,152],{"id":148},"installing-npx-skills-and-adding-a-skill","Installing ",[52,151,89],{}," and Adding a Skill",[43,154,155],{},"Run the following command to get it started, and add our first skill:",[157,158,163],"pre",{"className":159,"code":160,"language":161,"meta":162,"style":162},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","npx skills add https:\u002F\u002Fgithub.com\u002Fcoleam00\u002Fexcalidraw-diagram-skill --skill excalidraw-diagram\n","bash","",[52,164,165],{"__ignoreMap":162},[166,167,170,174,178,181,184,187],"span",{"class":168,"line":169},"line",1,[166,171,173],{"class":172},"sBMFI","npx",[166,175,177],{"class":176},"sfazB"," skills",[166,179,180],{"class":176}," add",[166,182,183],{"class":176}," https:\u002F\u002Fgithub.com\u002Fcoleam00\u002Fexcalidraw-diagram-skill",[166,185,186],{"class":176}," --skill",[166,188,189],{"class":176}," excalidraw-diagram\n",[43,191,192],{},[193,194],"img",{"alt":195,"src":196},"Using npx skills add command to install a skill from GitHub","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FCentralised%20the%20skills%20for%20agents\u002Fnpx-skills-add-command.webp",[43,198,199,200,203,204],{},"The CLI will ask whether to set this up for a specific project or globally. We usually recommend choosing ",[47,201,202],{},"global"," so all supported agents can access it:\n",[193,205],{"alt":206,"src":207},"Selecting global installation option in npx skills CLI","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FCentralised%20the%20skills%20for%20agents\u002Fnpx-skills-install-global-prompt.webp",[43,209,210,211,214,215,218,219,223],{},"Next, make sure to select ",[52,212,213],{},"Symlink"," to ensure a ",[47,216,217],{},"single source of truth",":\n",[193,220],{"alt":221,"src":222},"Choosing symlink method for skill synchronization","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FCentralised%20the%20skills%20for%20agents\u002Fnpx-skills-symlink-option.webp",[193,224],{"alt":225,"src":226},"Successful installation and symlink creation confirmation in CLI","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FCentralised%20the%20skills%20for%20agents\u002Fnpx-skills-installation-completed.webp",[43,228,229,230,218,232],{},"Once done, we can verify that the skill is installed in the centralised folder at ",[52,231,127],{},[193,233],{"alt":234,"src":235},"Verifying installed skills in the centralized directory","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FCentralised%20the%20skills%20for%20agents\u002Fnpx-skills-directory-verification.webp",[43,237,238,239,242,243],{},"Open up the Kimi CLI (or any other agent), and the ",[52,240,241],{},"excalidraw-diagram"," skill is available and ready to use!\n",[193,244],{"alt":245,"src":246},"Kimi CLI showing loaded and ready centralized skills","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FCentralised%20the%20skills%20for%20agents\u002Fkimi-cli-skills-integration.webp",[105,248,250],{"id":249},"creating-a-skill-from-scratch","Creating a Skill from Scratch",[43,252,253,254,257],{},"To build your own skills, you can use Anthropic's ",[52,255,256],{},"skill-creator"," tool. Install it like this:",[157,259,261],{"className":159,"code":260,"language":161,"meta":162,"style":162},"npx skills add https:\u002F\u002Fgithub.com\u002Fanthropics\u002Fskills --skill skill-creator\n",[52,262,263],{"__ignoreMap":162},[166,264,265,267,269,271,274,276],{"class":168,"line":169},[166,266,173],{"class":172},[166,268,177],{"class":176},[166,270,180],{"class":176},[166,272,273],{"class":176}," https:\u002F\u002Fgithub.com\u002Fanthropics\u002Fskills",[166,275,186],{"class":176},[166,277,278],{"class":176}," skill-creator\n",[43,280,281],{},"Now, in Kimi or any other agent, enter the following prompt:",[157,283,288],{"className":284,"code":286,"language":287},[285],"language-text","Use the skill-creator to help me build a skill for creating a product landing page\n","text",[52,289,286],{"__ignoreMap":162},[43,291,292,293,295,296],{},"Kimi or your agent will automatically pick up the ",[52,294,256],{}," and walk you through the process step-by-step:\n",[193,297],{"alt":298,"src":299},"Interactive skill-creator wizard executing in Kimi CLI","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FCentralised%20the%20skills%20for%20agents\u002Fkimi-cli-skill-creator-setup.webp",[105,301,303,304,306],{"id":302},"other-handy-npx-skills-commands","Other Handy ",[52,305,89],{}," Commands",[43,308,309],{},"Here are some other handy commands:",[60,311,312,318,324],{},[63,313,314,317],{},[52,315,316],{},"npx skills ls -g",": List all globally installed skills",[63,319,320,323],{},[52,321,322],{},"npx skills update",": Keep all skills up to date with one command",[63,325,326,329],{},[52,327,328],{},"npx skills remove",": Interactively uninstall\u002Fremove a skill",[43,331,332,333,339],{},"Please refer to the ",[95,334,336,338],{"href":97,"rel":335},[99],[52,337,89],{}," GitHub repo"," for more commands and reference.",[105,341,343],{"id":342},"taking-it-a-step-further","Taking It a Step Further",[43,345,346,347,349],{},"Since all skills are now in one place (",[52,348,127],{},"), we can initialise it as a Git repository and push it to GitHub or GitLab.",[157,351,353],{"className":159,"code":352,"language":161,"meta":162,"style":162},"cd ~\u002F.agents\u002Fskills\ngit init\ngit add .\ngit commit -m \"Initial skills folder\"\ngit remote add origin https:\u002F\u002Fgithub.com\u002FTech-Voyage-Dev\u002Fskills\ngit push -u origin main\n",[52,354,355,364,373,383,404,420],{"__ignoreMap":162},[166,356,357,361],{"class":168,"line":169},[166,358,360],{"class":359},"s2Zo4","cd",[166,362,363],{"class":176}," ~\u002F.agents\u002Fskills\n",[166,365,367,370],{"class":168,"line":366},2,[166,368,369],{"class":172},"git",[166,371,372],{"class":176}," init\n",[166,374,376,378,380],{"class":168,"line":375},3,[166,377,369],{"class":172},[166,379,180],{"class":176},[166,381,382],{"class":176}," .\n",[166,384,386,388,391,394,398,401],{"class":168,"line":385},4,[166,387,369],{"class":172},[166,389,390],{"class":176}," commit",[166,392,393],{"class":176}," -m",[166,395,397],{"class":396},"sMK4o"," \"",[166,399,400],{"class":176},"Initial skills folder",[166,402,403],{"class":396},"\"\n",[166,405,407,409,412,414,417],{"class":168,"line":406},5,[166,408,369],{"class":172},[166,410,411],{"class":176}," remote",[166,413,180],{"class":176},[166,415,416],{"class":176}," origin",[166,418,419],{"class":176}," https:\u002F\u002Fgithub.com\u002FTech-Voyage-Dev\u002Fskills\n",[166,421,423,425,428,431,433],{"class":168,"line":422},6,[166,424,369],{"class":172},[166,426,427],{"class":176}," push",[166,429,430],{"class":176}," -u",[166,432,416],{"class":176},[166,434,435],{"class":176}," main\n",[43,437,438,439,103],{},"Now, we have a complete history of all skill changes, meaning we can easily roll back if an update breaks something. Plus, we can seamlessly sync the skills across multiple machines (like a laptop and desktop) by running a quick ",[52,440,441],{},"git pull",[105,443,445],{"id":444},"a-few-things-to-keep-in-mind-security-risks","A Few Things to Keep in Mind (Security & Risks)",[60,447,448,454,460,470,476],{},[63,449,450,453],{},[47,451,452],{},"Compatibility varies",": Not all agent platforms support every feature (like custom hooks or specific allowed tools) yet. A skill might work great in one agent but fall short in another.",[63,455,456,459],{},[47,457,458],{},"Trust the source",": Only install skills from trusted sources.",[63,461,462,465,466,469],{},[47,463,464],{},"Review before running",": If you are using a custom or third-party skill, review the files (especially in the ",[52,467,468],{},"scripts\u002F"," folder) before letting your agent run it.",[63,471,472,475],{},[47,473,474],{},"Least privilege",": Try not to give a skill more tool permissions or access than it absolutely needs to do its job.",[63,477,478,481],{},[47,479,480],{},"Never hardcode secrets",": Keep your API keys and secrets out of your skill files.",[43,483,484,485,487],{},"Setting up a centralised \"single source of truth\" with ",[52,486,89],{}," has saved our team from frustration and duplicate work. It is highly recommended to give it a try—the AI capabilities scale as skills grow!",[489,490,491],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}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 .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}",{"title":162,"searchDepth":366,"depth":366,"links":493},[494,495,497,498,500,501],{"id":107,"depth":366,"text":108},{"id":148,"depth":366,"text":496},"Installing npx skills and Adding a Skill",{"id":249,"depth":366,"text":250},{"id":302,"depth":366,"text":499},"Other Handy npx skills Commands",{"id":342,"depth":366,"text":343},{"id":444,"depth":366,"text":445},"2026-06-04","Running multiple AI agents like Claude Code or Kimi? Learn how to fix skills fragmentation and manage a single, centralized skills folder using npx skills CLI.","md","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FCentralised%20the%20skills%20for%20agents\u002FSolving-AI-Agent-Skills-Fragmentation-with-npx-skills.webp","How to solve AI agent skills fragmentation using npx skills",true,{"schemaOrg":509,"robots":513,"sitemap":514},[510],{"@type":511,"headline":512,"description":503},"TechArticle","How to Solve AI Agent Skills Fragmentation Using npx skills","index, follow",{"lastmod":515},"2026-06-03","\u002Fen\u002Farticle\u002Fcentralised-the-skills-for-agents",{"title":512,"description":503,"ogTitle":5,"ogDescription":503,"twitterTitle":5,"twitterDescription":503},"NwxIwYRWVSTBGttk2H6IRhsFpEvLEQrNCbTpGUkF58A",[520,772],{"id":521,"title":9,"author":38,"body":522,"category":38,"date":761,"description":762,"extension":504,"image":763,"imageAlt":764,"isPublished":507,"meta":765,"minRead":769,"navigation":507,"path":10,"seo":770,"stem":11,"__hash__":771},"article\u002Fen\u002Farticle\u002Fhow-to-secure-nodewarden-at-cloudflare.md",{"type":40,"value":523,"toc":753},[524,527,530,544,549,556,559,563,566,571,602,606,609,676,680,683,746,750],[43,525,526],{},"The moment your NodeWarden is exposed to the public on the Internet, it starts attracting thousands of automated bots scrapping for vulnerabilities 24\u002F7. To protect your sensitive data, You need to put NodeWarden instance in the maximum lockdown possible.",[43,528,529],{},"To secure your NodeWarden instance, you can use one of two Cloudflare features:",[60,531,532,538],{},[63,533,534,537],{},[47,535,536],{},"Cloudflare IP Access Rules:"," Allows you to block, challenge, or permit traffic based on specific IP addresses or countries.",[63,539,540,543],{},[47,541,542],{},"Cloudflare Zero Trust (Recommend):"," Acts as a secure gateway that makes your NodeWarden instance completely invisible to the public, only letting authorised users through.",[545,546,548],"h4",{"id":547},"why-we-recommend-cloudflare-zero-trust","Why we recommend Cloudflare Zero Trust",[43,550,551,552,555],{},"We strongly advise using Cloudflare Zero Trust since IP Access Rules are tied to IP addresses or countries, meaning you need to manually update the your rules every time you travel or if you have a dynamic IP address. Cloudflare Zero Trust on the other hand relies on your ",[47,553,554],{},"identity",", not your location—giving you seamless, secure access to NodeWarden.",[557,558],"hr",{},[105,560,562],{"id":561},"configuration-guide","Configuration Guide",[43,564,565],{},"Follow these steps to configure Cloudflare Zero Trust for NodeWarden.",[567,568,570],"h3",{"id":569},"phase-1-getting-started","Phase 1: Getting Started",[572,573,574,581,588,595],"ol",{},[63,575,576,577],{},"In your Cloudflare dashboard, click on 'Zero Trust' from left menu\n",[193,578],{"alt":579,"src":580},"Cloudflare dashboard sidebar showing the Zero Trust option selected in the navigation menu.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-dashboard-zero-trust-sidebar.webp",[63,582,583,584],{},"Click on 'Access controls' then click on 'Applications'\n",[193,585],{"alt":586,"src":587},"Cloudflare Zero Trust navigation menu with Access controls section expanded.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-zero-trust-access-controls-menu.webp",[63,589,590,591],{},"You may be asked to 'Choose a plan'.\n",[193,592],{"alt":593,"src":594},"Cloudflare Zero Trust account setup screen prompting the user to choose a subscription plan.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-zero-trust-choose-plan-setup.webp",[63,596,597,598],{},"Click on the 'Choose a plan' button and choose the 'Zero Trust Free'.\n",[193,599],{"alt":600,"src":601},"The Zero Trust Free plan details page on Cloudflare, highlighting the Select plan button.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-zero-trust-free-plan-selection.webp",[567,603,605],{"id":604},"phase-2-secure-your-web-interface","Phase 2: Secure Your Web Interface",[43,607,608],{},"First, we will create an application to protect the NodeWarden web dashboard.",[572,610,611,618,625,632,639,646,653,656,663,666],{},[63,612,613,614],{},"Click on 'Create new application' to create the first application\n",[193,615],{"alt":616,"src":617},"Cloudflare Access Applications dashboard featuring the Create new application button.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-access-create-new-application.webp",[63,619,620,621],{},"Choose the 'Self-hosted and private'\n",[193,622],{"alt":623,"src":624},"The Add an application modal in Cloudflare Access with Self-hosted and private application type selected.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-access-add-self-hosted-application.webp",[63,626,627,628],{},"Enter the domain name of the NodeWarden.\n",[193,629],{"alt":630,"src":631},"Cloudflare Access application configuration screen showing the public hostname set to warden.techvoyage.dev.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-access-application-public-hostname.webp",[63,633,634,635],{},"Click on 'Create new policy' to create a policy.\n",[193,636],{"alt":637,"src":638},"Cloudflare Access policies page showing no policies added and a button to create a new policy.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-access-no-policies-create-button.webp",[63,640,641,642],{},"Select 'Emails' and enter an email under 'Policy rules'.\n",[193,643],{"alt":644,"src":645},"Cloudflare Access policy rule configuration screen with an email address specified as the inclusion criteria.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-access-policy-rule-email.webp",[63,647,648,649],{},"Enter a name and select 'Allow' under 'Policy details'.\n",[193,650],{"alt":651,"src":652},"Cloudflare Access policy details screen showing the policy name NodeWarden-Web and the action set to Allow.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-access-policy-details-allow.webp",[63,654,655],{},"Click 'Save Policy' to create the policy.",[63,657,658,659],{},"Enter a name and select '1 month' under the 'Details' section.\n",[193,660],{"alt":661,"src":662},"Final configuration summary for a Cloudflare Access application named NodeWarden-Web with a one-month session duration.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-access-application-final-details.webp",[63,664,665],{},"Click on 'Create' to create the application.",[63,667,668,671,672],{},[47,669,670],{},"Test it:"," Open the domain on the web browser, you will see the 'Cloudflare Access' asking for email.\n",[193,673],{"alt":674,"src":675},"A preview of the Cloudflare Access login screen for NodeWarden-Web, prompting for an email address.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-access-login-screen-preview.webp",[567,677,679],{"id":678},"phase-3-allow-bitwarden-clients-syncing-api-bypass","Phase 3: Allow BitWarden Clients Syncing (API Bypass)",[43,681,682],{},"The desktop and mobile BitWarden apps cannot process Cloudflare's email login screen, we need to create a second application that allows traffic to bypass the login screen specifically for API syncing.",[572,684,685,696,712,716,723,730,732,739],{},[63,686,687,688,691,692,695],{},"Go back to Applications and click ",[47,689,690],{},"Create new application",", choosing ",[47,693,694],{},"Self-hosted and private"," again.",[63,697,698,699,703,704,707,708],{},"Enter the 'api\u002F",[700,701,702],"em",{},"', 'identity\u002F","', 'notifications\u002F",[700,705,706],{},"', and 'icons\u002F","' in the Destinations.\n",[193,709],{"alt":710,"src":711},"Configuring multiple public hostnames for API bypass in Cloudflare Access, including api, identity, notifications, and icons paths.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-access-api-bypass-destinations.webp",[63,713,634,714],{},[193,715],{"alt":637,"src":638},[63,717,718,719],{},"Select 'Everyone' under 'Policy rules'.\n",[193,720],{"alt":721,"src":722},"Cloudflare Access policy rule configuration with Everyone selected to allow broad access for specific paths.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-access-policy-rule-everyone.webp",[63,724,725,726],{},"Enter a name and select 'Bypass' under 'Policy details'.\n",[193,727],{"alt":728,"src":729},"Cloudflare Access policy details for NodeWarden-API with the action set to Bypass.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-access-policy-details-bypass.webp",[63,731,655],{},[63,733,734,735],{},"Enter a name and select '1 month' for 'Session Duration'.\n",[193,736],{"alt":737,"src":738},"Final configuration screen for the NodeWarden-API application in Cloudflare Access.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-access-api-application-final-details.webp",[63,740,741,742],{},"You should have 2 applications created.\n",[193,743],{"alt":744,"src":745},"The Cloudflare Access applications dashboard showing both the Web and API applications successfully created.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-access-applications-list-final.webp",[105,747,749],{"id":748},"final-thought","Final thought",[43,751,752],{},"Just remember that Cloudflare is your outer shield. To maintain a truly secure vault, ensure you are still using a strong master password, utilising Two-Factor Authentication (2FA) , and keeping your Cloudflare account secure.",{"title":162,"searchDepth":366,"depth":366,"links":754},[755,760],{"id":561,"depth":366,"text":562,"children":756},[757,758,759],{"id":569,"depth":375,"text":570},{"id":604,"depth":375,"text":605},{"id":678,"depth":375,"text":679},{"id":748,"depth":366,"text":749},"2026-05-27","The moment your NodeWarden is exposed to the public on the Internet, it starts attracting thousands of automated bots scrapping for vulnerabilities 24\u002F7.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fsecure-nodewarden-cloudflare-integration-guide.webp","Step-by-step guide thumbnail for securing a NodeWarden vault with Cloudflare integration, featuring a digital safe with a padlock and a server rack protected by Cloudflare security.",{"schemaOrg":766,"robots":513,"sitemap":768},[767],{"@type":511,"headline":9,"description":762},{"lastmod":761},8,{"title":9,"description":762,"ogTitle":9,"ogDescription":762,"twitterTitle":9,"twitterDescription":762},"xtXEwIvRit22QP7fb6fzAxG3CnL8OCgJlj1CMY8ctWg",{"id":773,"title":17,"author":38,"body":774,"category":38,"date":1499,"description":1500,"extension":504,"image":1501,"imageAlt":1502,"isPublished":507,"meta":1503,"minRead":385,"navigation":507,"path":18,"seo":1507,"stem":19,"__hash__":1508},"article\u002Fen\u002Farticle\u002Fsetup-antigravity-2.md",{"type":40,"value":775,"toc":1490},[776,787,791,794,805,807,811,820,826,833,839,846,856,858,862,869,875,878,884,888,891,905,919,926,938,948,962,964,968,971,985,988,1330,1340,1346,1357,1363,1369,1375,1377,1381,1392,1404,1411,1417,1423,1442,1445,1451,1453,1457,1460,1466,1469,1475,1477,1481,1484,1487],[43,777,778,779,782,783,786],{},"At Google I\u002FO 2026, Google announced ",[47,780,781],{},"Antigravity 2",", a standalone desktop application that treats the ",[47,784,785],{},"agent"," as the primary user interface. You simply describe what you want to achieve, and the agent will then generate a plan, break it down into manageable subtasks, and execute them.",[567,788,790],{"id":789},"prerequisites","Prerequisites",[43,792,793],{},"Before we begin, you will need:",[60,795,796,799,802],{},[63,797,798],{},"A computer (macOS is used in this guide)",[63,800,801],{},"A modern web browser",[63,803,804],{},"A Gmail account",[557,806],{},[105,808,810],{"id":809},"_1-install-antigravity-2","1. Install Antigravity 2",[43,812,813,814,819],{},"Download Antigravity 2 from ",[95,815,818],{"href":816,"rel":817},"https:\u002F\u002Fantigravity.google\u002Fdownload",[99],"antigravity.google"," and install it on your computer. On the first launch, you will be prompted to sign in using your Gmail account.",[43,821,822],{},[193,823],{"alt":824,"src":825},"Google account login screen for Antigravity 2 first launch","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20Antigravity%202.0\u002Fantigravity-gmail-login.webp",[43,827,828,829,832],{},"Once signed in, you will notice a ",[47,830,831],{},"voice button"," in the input field, allowing you to record voice prompts instead of typing them.",[43,834,835],{},[193,836],{"alt":837,"src":838},"Voice dictation and prompt recording button in Antigravity 2 text field","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20Antigravity%202.0\u002Fantigravity-voice-input-field.webp",[43,840,841,842,845],{},"Antigravity 2 also introduces the concept of a ",[47,843,844],{},"Project",", which can span multiple local folders and operate with its own specific agent settings and permissions.",[43,847,848,852],{},[193,849],{"alt":850,"src":851},"Project selection and configuration menu in Antigravity 2 settings","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20Antigravity%202.0\u002Fantigravity-project-menu.webp",[193,853],{"alt":854,"src":855},"Creating a new AI project with folder path in Antigravity 2","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20Antigravity%202.0\u002Fantigravity-project-creation.webp",[557,857],{},[105,859,861],{"id":860},"_2-set-up-mcps-and-plugins","2. Set Up MCPs and Plugins",[43,863,864,865,868],{},"All Model Context Protocol (MCP) servers, plugins, and skills are managed under the ",[47,866,867],{},"Customizations"," section in the Settings menu:",[43,870,871],{},[193,872],{"alt":873,"src":874},"Customizations tab in settings for managing MCP servers and skills","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20Antigravity%202.0\u002Fantigravity-settings-customizations.webp",[43,876,877],{},"Currently, the only available plugins are from Google, but hopefully, more will be released in the future.",[43,879,880],{},[193,881],{"alt":882,"src":883},"List of official Google plugins and integrations in Antigravity 2","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20Antigravity%202.0\u002Fantigravity-google-plugins-list.webp",[545,885,887],{"id":886},"adding-an-available-mcp-server","Adding an Available MCP Server",[43,889,890],{},"To install a pre-configured MCP Server (e.g., GitHub):",[572,892,893,899],{},[63,894,895,896,103],{},"Click on ",[47,897,898],{},"Add MCP+",[63,900,901,902,103],{},"Select the ",[47,903,904],{},"GitHub MCP Server",[43,906,907,911,915],{},[193,908],{"alt":909,"src":910},"Adding a pre-configured MCP server by clicking Add MCP plus button","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20Antigravity%202.0\u002Fantigravity-add-mcp-button.webp",[193,912],{"alt":913,"src":914},"Selecting GitHub MCP Server from the list of available integrations","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20Antigravity%202.0\u002Fantigravity-select-github-mcp.webp",[193,916],{"alt":917,"src":918},"GitHub MCP server authorization and installation setup wizard","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20Antigravity%202.0\u002Fantigravity-github-mcp-setup.webp",[43,920,921,922],{},"The GitHub MCP Server setup ended with an error:\n",[193,923],{"alt":924,"src":925},"Configuration error during GitHub MCP Server installation process","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20Antigravity%202.0\u002Fantigravity-github-mcp-error.webp",[43,927,928,929,931,932,934,935,937],{},"Since we already have ",[52,930,369],{}," installed on macOS, we can bypass this by executing the ",[52,933,369],{}," command directly within the conversation. However, we first need to explicitly add the ",[52,936,369],{}," command to our Antigravity permissions.",[43,939,940,944],{},[193,941],{"alt":942,"src":943},"Request dialog to add git command to sandboxed terminal permissions","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20Antigravity%202.0\u002Fantigravity-add-git-permission-1.webp",[193,945],{"alt":946,"src":947},"Granting git command execution permission in settings menu","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20Antigravity%202.0\u002Fantigravity-add-git-permission-2.webp",[43,949,950,951,953,954,958],{},"Let's test out the prompt to see if the ",[52,952,369],{}," command now works:\n",[193,955],{"alt":956,"src":957},"Submitting git status request within AI agent prompt box","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20Antigravity%202.0\u002Fantigravity-git-command-test-1.webp",[193,959],{"alt":960,"src":961},"Successful terminal execution of git status command inside the chat","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20Antigravity%202.0\u002Fantigravity-git-command-test-2.webp",[557,963],{},[105,965,967],{"id":966},"_3-add-custom-mcp-servers","3. Add Custom MCP Servers",[43,969,970],{},"If the MCP Server you want isn't on the default list, you can add it by editing the MCP configuration file directly. The configuration is located at:",[157,972,974],{"className":159,"code":973,"language":161,"meta":162,"style":162},"~\u002F.gemini\u002Fconfig\u002Fmcp_config.json\n",[52,975,976],{"__ignoreMap":162},[166,977,978,981],{"class":168,"line":169},[166,979,980],{"class":396},"~",[166,982,984],{"class":983},"sTEyZ","\u002F.gemini\u002Fconfig\u002Fmcp_config.json\n",[43,986,987],{},"Let's add some Cloudflare MCP Servers as an example. Because Cloudflare supports dynamic client registration, we only need to enable OAuth. Add the following to your JSON configuration:",[157,989,993],{"className":990,"code":991,"language":992,"meta":162,"style":162},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","    \"cloudflare-api\": {\n      \"serverUrl\": \"https:\u002F\u002Fmcp.cloudflare.com\u002Fmcp\",\n      \"oauth\": {\n        \"enabled\": true\n      }\n    },\n    \"cloudflare-docs\": {\n      \"serverUrl\": \"https:\u002F\u002Fdocs.mcp.cloudflare.com\u002Fmcp\"\n    },\n    \"cloudflare-bindings\": {\n      \"serverUrl\": \"https:\u002F\u002Fbindings.mcp.cloudflare.com\u002Fmcp\",\n      \"oauth\": {\n        \"enabled\": true\n      }\n    },\n    \"cloudflare-builds\": {\n      \"serverUrl\": \"https:\u002F\u002Fbuilds.mcp.cloudflare.com\u002Fmcp\",\n      \"oauth\": {\n        \"enabled\": true\n      }\n    },\n    \"cloudflare-observability\": {\n      \"serverUrl\": \"https:\u002F\u002Fobservability.mcp.cloudflare.com\u002Fmcp\",\n      \"oauth\": {\n        \"enabled\": true\n      }\n    }\n","json",[52,994,995,1012,1036,1050,1065,1070,1077,1091,1108,1115,1129,1149,1162,1175,1180,1187,1201,1221,1234,1247,1252,1259,1273,1293,1306,1319,1324],{"__ignoreMap":162},[166,996,997,1000,1003,1006,1009],{"class":168,"line":169},[166,998,999],{"class":396},"    \"",[166,1001,1002],{"class":176},"cloudflare-api",[166,1004,1005],{"class":396},"\"",[166,1007,1008],{"class":983},": ",[166,1010,1011],{"class":396},"{\n",[166,1013,1014,1017,1021,1023,1026,1028,1031,1033],{"class":168,"line":366},[166,1015,1016],{"class":396},"      \"",[166,1018,1020],{"class":1019},"spNyl","serverUrl",[166,1022,1005],{"class":396},[166,1024,1025],{"class":396},":",[166,1027,397],{"class":396},[166,1029,1030],{"class":176},"https:\u002F\u002Fmcp.cloudflare.com\u002Fmcp",[166,1032,1005],{"class":396},[166,1034,1035],{"class":396},",\n",[166,1037,1038,1040,1043,1045,1047],{"class":168,"line":375},[166,1039,1016],{"class":396},[166,1041,1042],{"class":1019},"oauth",[166,1044,1005],{"class":396},[166,1046,1025],{"class":396},[166,1048,1049],{"class":396}," {\n",[166,1051,1052,1055,1058,1060,1062],{"class":168,"line":385},[166,1053,1054],{"class":396},"        \"",[166,1056,1057],{"class":172},"enabled",[166,1059,1005],{"class":396},[166,1061,1025],{"class":396},[166,1063,1064],{"class":396}," true\n",[166,1066,1067],{"class":168,"line":406},[166,1068,1069],{"class":396},"      }\n",[166,1071,1072,1075],{"class":168,"line":422},[166,1073,1074],{"class":396},"    }",[166,1076,1035],{"class":983},[166,1078,1080,1082,1085,1087,1089],{"class":168,"line":1079},7,[166,1081,999],{"class":396},[166,1083,1084],{"class":176},"cloudflare-docs",[166,1086,1005],{"class":396},[166,1088,1008],{"class":983},[166,1090,1011],{"class":396},[166,1092,1093,1095,1097,1099,1101,1103,1106],{"class":168,"line":769},[166,1094,1016],{"class":396},[166,1096,1020],{"class":1019},[166,1098,1005],{"class":396},[166,1100,1025],{"class":396},[166,1102,397],{"class":396},[166,1104,1105],{"class":176},"https:\u002F\u002Fdocs.mcp.cloudflare.com\u002Fmcp",[166,1107,403],{"class":396},[166,1109,1111,1113],{"class":168,"line":1110},9,[166,1112,1074],{"class":396},[166,1114,1035],{"class":983},[166,1116,1118,1120,1123,1125,1127],{"class":168,"line":1117},10,[166,1119,999],{"class":396},[166,1121,1122],{"class":176},"cloudflare-bindings",[166,1124,1005],{"class":396},[166,1126,1008],{"class":983},[166,1128,1011],{"class":396},[166,1130,1132,1134,1136,1138,1140,1142,1145,1147],{"class":168,"line":1131},11,[166,1133,1016],{"class":396},[166,1135,1020],{"class":1019},[166,1137,1005],{"class":396},[166,1139,1025],{"class":396},[166,1141,397],{"class":396},[166,1143,1144],{"class":176},"https:\u002F\u002Fbindings.mcp.cloudflare.com\u002Fmcp",[166,1146,1005],{"class":396},[166,1148,1035],{"class":396},[166,1150,1152,1154,1156,1158,1160],{"class":168,"line":1151},12,[166,1153,1016],{"class":396},[166,1155,1042],{"class":1019},[166,1157,1005],{"class":396},[166,1159,1025],{"class":396},[166,1161,1049],{"class":396},[166,1163,1165,1167,1169,1171,1173],{"class":168,"line":1164},13,[166,1166,1054],{"class":396},[166,1168,1057],{"class":172},[166,1170,1005],{"class":396},[166,1172,1025],{"class":396},[166,1174,1064],{"class":396},[166,1176,1178],{"class":168,"line":1177},14,[166,1179,1069],{"class":396},[166,1181,1183,1185],{"class":168,"line":1182},15,[166,1184,1074],{"class":396},[166,1186,1035],{"class":983},[166,1188,1190,1192,1195,1197,1199],{"class":168,"line":1189},16,[166,1191,999],{"class":396},[166,1193,1194],{"class":176},"cloudflare-builds",[166,1196,1005],{"class":396},[166,1198,1008],{"class":983},[166,1200,1011],{"class":396},[166,1202,1204,1206,1208,1210,1212,1214,1217,1219],{"class":168,"line":1203},17,[166,1205,1016],{"class":396},[166,1207,1020],{"class":1019},[166,1209,1005],{"class":396},[166,1211,1025],{"class":396},[166,1213,397],{"class":396},[166,1215,1216],{"class":176},"https:\u002F\u002Fbuilds.mcp.cloudflare.com\u002Fmcp",[166,1218,1005],{"class":396},[166,1220,1035],{"class":396},[166,1222,1224,1226,1228,1230,1232],{"class":168,"line":1223},18,[166,1225,1016],{"class":396},[166,1227,1042],{"class":1019},[166,1229,1005],{"class":396},[166,1231,1025],{"class":396},[166,1233,1049],{"class":396},[166,1235,1237,1239,1241,1243,1245],{"class":168,"line":1236},19,[166,1238,1054],{"class":396},[166,1240,1057],{"class":172},[166,1242,1005],{"class":396},[166,1244,1025],{"class":396},[166,1246,1064],{"class":396},[166,1248,1250],{"class":168,"line":1249},20,[166,1251,1069],{"class":396},[166,1253,1255,1257],{"class":168,"line":1254},21,[166,1256,1074],{"class":396},[166,1258,1035],{"class":983},[166,1260,1262,1264,1267,1269,1271],{"class":168,"line":1261},22,[166,1263,999],{"class":396},[166,1265,1266],{"class":176},"cloudflare-observability",[166,1268,1005],{"class":396},[166,1270,1008],{"class":983},[166,1272,1011],{"class":396},[166,1274,1276,1278,1280,1282,1284,1286,1289,1291],{"class":168,"line":1275},23,[166,1277,1016],{"class":396},[166,1279,1020],{"class":1019},[166,1281,1005],{"class":396},[166,1283,1025],{"class":396},[166,1285,397],{"class":396},[166,1287,1288],{"class":176},"https:\u002F\u002Fobservability.mcp.cloudflare.com\u002Fmcp",[166,1290,1005],{"class":396},[166,1292,1035],{"class":396},[166,1294,1296,1298,1300,1302,1304],{"class":168,"line":1295},24,[166,1297,1016],{"class":396},[166,1299,1042],{"class":1019},[166,1301,1005],{"class":396},[166,1303,1025],{"class":396},[166,1305,1049],{"class":396},[166,1307,1309,1311,1313,1315,1317],{"class":168,"line":1308},25,[166,1310,1054],{"class":396},[166,1312,1057],{"class":172},[166,1314,1005],{"class":396},[166,1316,1025],{"class":396},[166,1318,1064],{"class":396},[166,1320,1322],{"class":168,"line":1321},26,[166,1323,1069],{"class":396},[166,1325,1327],{"class":168,"line":1326},27,[166,1328,1329],{"class":396},"    }\n",[43,1331,1332,1333,1335,1336,1339],{},"Go back to the ",[47,1334,867],{}," section in the app and click the ",[47,1337,1338],{},"Refresh"," button. You will now see the Cloudflare MCP Servers listed, pending authorisation.",[43,1341,1342],{},[193,1343],{"alt":1344,"src":1345},"Cloudflare MCP servers listed in customization menu pending authorization","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20Antigravity%202.0\u002Fantigravity-cloudflare-mcp-pending.webp",[43,1347,1348,1349,1352,1353,1356],{},"Click ",[47,1350,1351],{},"Authenticate"," next to the MCP Server. This will open an authentication page in your web browser. Once authenticated, an ",[47,1354,1355],{},"auth code"," will be generated.",[43,1358,1359],{},[193,1360],{"alt":1361,"src":1362},"Web browser displaying dynamic OAuth authorization code for Cloudflare MCP","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20Antigravity%202.0\u002Fantigravity-cloudflare-auth-code.webp",[43,1364,1365,1366,103],{},"Copy this auth code, paste it back into the text input field in Antigravity, and click ",[47,1367,1368],{},"Submit",[43,1370,1371],{},[193,1372],{"alt":1373,"src":1374},"Submitting OAuth verification code in Antigravity setup interface","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20Antigravity%202.0\u002Fantigravity-cloudflare-auth-submit.webp",[557,1376],{},[105,1378,1380],{"id":1379},"_4-add-custom-skills","4. Add Custom Skills",[43,1382,1383,1384,1387,1388,1391],{},"Currently, adding custom skills ",[47,1385,1386],{},"cannot"," be done directly through the desktop application's UI. Instead, they must be added directly to the ",[52,1389,1390],{},"~\u002F.gemini\u002Fconfig\u002Fskills"," folder.",[43,1393,1394,1395,1397,1398],{},"Because we use the ",[52,1396,89],{}," CLI to centralise all our agent skills, any newly added skill can be made available to all agents, including Antigravity. ",[700,1399,1400,1401,1403],{},"(For a deeper dive on this, refer to our article: ",[95,1402,5],{"href":6},").",[43,1405,1406,1407,1410],{},"Initially, when typing ",[52,1408,1409],{},"\u002F"," in the conversation box, the skills list appears empty:",[43,1412,1413],{},[193,1414],{"alt":1415,"src":1416},"Command box displaying empty skills list when typing slash shortcut","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20Antigravity%202.0\u002Fantigravity-empty-skills-list.webp",[43,1418,1419,1420,1422],{},"It appears Antigravity 2 doesn't automatically read from the global skills folder (",[52,1421,127],{},"). To fix this, we need to create a symbolic link pointing to the Antigravity config directory:",[157,1424,1426],{"className":159,"code":1425,"language":161,"meta":162,"style":162},"ln -s ~\u002F.agents\u002Fskills\u002Fexcalidraw-diagram ~\u002F.gemini\u002Fconfig\u002Fskills\u002Fexcalidraw-diagram\n",[52,1427,1428],{"__ignoreMap":162},[166,1429,1430,1433,1436,1439],{"class":168,"line":169},[166,1431,1432],{"class":172},"ln",[166,1434,1435],{"class":176}," -s",[166,1437,1438],{"class":176}," ~\u002F.agents\u002Fskills\u002Fexcalidraw-diagram",[166,1440,1441],{"class":176}," ~\u002F.gemini\u002Fconfig\u002Fskills\u002Fexcalidraw-diagram\n",[43,1443,1444],{},"Once linked, the skill becomes available in the application!",[43,1446,1447],{},[193,1448],{"alt":1449,"src":1450},"Excalidraw diagram skill successfully showing in Antigravity command list","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20Antigravity%202.0\u002Fantigravity-excalidraw-skill-available.webp",[557,1452],{},[105,1454,1456],{"id":1455},"_5-test-a-simple-task","5. Test a Simple Task",[43,1458,1459],{},"Now that everything is configured, let's run a test.",[43,1461,1462],{},[193,1463],{"alt":1464,"src":1465},"Submitting a test task to list D1 databases via Cloudflare server","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20Antigravity%202.0\u002Fantigravity-test-simple-task-prompt.webp",[43,1467,1468],{},"As shown below, the model successfully detects and utilises the newly added Cloudflare MCP Server to handle the request.",[43,1470,1471],{},[193,1472],{"alt":1473,"src":1474},"AI agent successfully executing D1 database listing using Cloudflare MCP","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20Antigravity%202.0\u002Fantigravity-test-task-success.webp",[557,1476],{},[105,1478,1480],{"id":1479},"final-thoughts","Final Thoughts",[43,1482,1483],{},"Antigravity 2 represents a major shift from a traditional IDE to an accessible desktop application, empowering everyday users to act as orchestrators for any task.",[43,1485,1486],{},"However, Antigravity 2 needs some polish. When functionalities fail, debugging can be frustrating due to vague error handling. Additionally, the official documentation feels unrefined—likely AI-generated—as several references and file paths are currently incorrect.",[489,1488,1489],{},"html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}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 .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}",{"title":162,"searchDepth":366,"depth":366,"links":1491},[1492,1493,1494,1495,1496,1497,1498],{"id":789,"depth":375,"text":790},{"id":809,"depth":366,"text":810},{"id":860,"depth":366,"text":861},{"id":966,"depth":366,"text":967},{"id":1379,"depth":366,"text":1380},{"id":1455,"depth":366,"text":1456},{"id":1479,"depth":366,"text":1480},"2026-06-05","Discover what's new in Google Antigravity 2. Read our hands-on guide to installing the app, testing AI agent tasks, and manually adding custom MCP servers","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSetup%20Antigravity%202.0\u002FEN-Setup-Antigravity-2.0.webp","Google Antigravity 2 Review & Setup: AI Agents, MCPs & Plugins",{"schemaOrg":1504,"robots":513,"sitemap":1506},[1505],{"@type":511,"headline":1502,"description":1500},{"lastmod":1499},{"title":1502,"description":1500,"ogTitle":17,"ogDescription":1500,"twitterTitle":17,"twitterDescription":1500},"MMadP0g3zfw4rPkQMdWeSDpbxS4cgDVo64g5MU-nIkY",1781435111079]