▸ Agent Skills
70 min read

\\

if (window.location.hostname === ‘www.antigravity.google’) { window.location.replace( https://antigravity.google${window.location.pathname}${window.location.search}${window.location.hash} ); } <title>Plan (/plan) | Google Antigravity Docs<script> window.dataLayer = window.dataLayer || []; window.__agyGtmLoaded = window.__agyGtmLoaded || false; window.__agyLastPageViewPath = window.__agyLastPageViewPath || ‘’;

function __agyDetectViewport() { const width = Math.round( window.innerWidth || (document.documentElement && document.documentElement.clientWidth) || 1440 ); const height = Math.round( window.innerHeight || (document.documentElement && document.documentElement.clientHeight) || 900 ); const orientation = width >= height ? ‘landscape’ : ‘portrait’; const minDim = Math.min(width, height); const maxDim = Math.max(width, height); const aspectRatio = minDim > 0 ? maxDim / minDim : 1; const ua = typeof navigator !== ‘undefined’ ? navigator.userAgent || ‘’ : ‘’;

const hasSegments =
  Boolean(
    window.visualViewport &&
      window.visualViewport.segments &&
      window.visualViewport.segments.length > 1
  ) ||
  Boolean(
    typeof navigator !== 'undefined' &&
      navigator.devicePosture &&
      navigator.devicePosture.type === 'folded'
  ) ||
  Boolean(
    window.matchMedia &&
      window.matchMedia(
        '(horizontal-viewport-segments: 2), (vertical-viewport-segments: 2)'
      ).matches
  );
const isFoldableUA =
  /Pixel Fold|SM-F9|SM-F7|Galaxy Z Fold|Surface Duo/i.test(ua);
const isFoldableUnfolded =
  minDim >= 600 && maxDim <= 1150 && aspectRatio <= 1.3;
const isFoldableCover =
  (width >= 320 &&
    width <= 368 &&
    height >= 700 &&
    height / width >= 2.0) ||
  (height >= 320 &&
    height <= 368 &&
    width >= 700 &&
    width / height >= 2.0);

const isIpad =
  /ipad/i.test(ua) ||
  (typeof navigator !== 'undefined' &&
    navigator.maxTouchPoints > 0 &&
    /macintosh/i.test(ua));
let os = 'unknown';
if (/iphone|ipod/i.test(ua)) os = 'iphone';
else if (isIpad) os = 'ipad';
else if (/googlebook|cros/i.test(ua)) os = 'googlebook';
else if (/android/i.test(ua)) os = 'android';
else if (/windows/i.test(ua)) os = 'windows';
else if (/macintosh|mac os x/i.test(ua)) os = 'mac';
else if (/linux/i.test(ua)) os = 'linux';

let viewportCategory = 'desktop';
if (
  hasSegments ||
  isFoldableUA ||
  isFoldableUnfolded ||
  isFoldableCover
) {
  viewportCategory = 'foldable';
} else if (width < 600) {
  viewportCategory = 'mobile';
} else if (width <= 1024 || isIpad) {
  viewportCategory = 'tablet';
}

return {
  viewportCategory: viewportCategory,
  formFactor: viewportCategory,
  viewportWidth: width,
  viewportHeight: height,
  orientation: orientation,
  operatingSystem: os,
};

}

function __agyRecordPageView() { const currentPath = window.location.pathname || ‘/’; if (window.__agyLastPageViewPath === currentPath) return;

if (
  window.agyAnalytics &&
  typeof window.agyAnalytics.trackPageView === 'function'
) {
  window.agyAnalytics.trackPageView();
  return;
}

window.__agyLastPageViewPath = currentPath;
const vp = __agyDetectViewport();
const eventParams = {
  pagePath: currentPath,
  viewportCategory: vp.viewportCategory,
  formFactor: vp.formFactor,
  viewportWidth: vp.viewportWidth,
  viewportHeight: vp.viewportHeight,
  orientation: vp.orientation,
  operatingSystem: vp.operatingSystem,
};
if (document.title) {
  eventParams.pageTitle = document.title;
}
if (document.referrer) {
  eventParams.referrer = document.referrer;
}
try {
  const sp = new URLSearchParams(window.location.search || '');
  const utmSource = sp.get('utm_source');
  const utmMedium = sp.get('utm_medium');
  const utmCampaign = sp.get('utm_campaign');
  const utmTerm = sp.get('utm_term');
  const utmContent = sp.get('utm_content');
  if (utmSource) {
    eventParams.utm_source = utmSource;
    eventParams.utmSource = utmSource;
  }
  if (utmMedium) {
    eventParams.utm_medium = utmMedium;
    eventParams.utmMedium = utmMedium;
  }
  if (utmCampaign) {
    eventParams.utm_campaign = utmCampaign;
    eventParams.utmCampaign = utmCampaign;
  }
  if (utmTerm) {
    eventParams.utm_term = utmTerm;
    eventParams.utmTerm = utmTerm;
  }
  if (utmContent) {
    eventParams.utm_content = utmContent;
    eventParams.utmContent = utmContent;
  }
} catch (_err) {
  // Ignore URLSearchParams errors
}

const entry = {
  event: 'page_view',
  pagePath: currentPath,
  viewportCategory: vp.viewportCategory,
  formFactor: vp.formFactor,
  viewportWidth: vp.viewportWidth,
  viewportHeight: vp.viewportHeight,
  orientation: vp.orientation,
  operatingSystem: vp.operatingSystem,
  eventParams: eventParams,
};
if (eventParams.pageTitle) entry.pageTitle = eventParams.pageTitle;
if (eventParams.referrer) entry.referrer = eventParams.referrer;
if (eventParams.utm_source) {
  entry.utm_source = eventParams.utm_source;
  entry.utmSource = eventParams.utmSource;
}
if (eventParams.utm_medium) {
  entry.utm_medium = eventParams.utm_medium;
  entry.utmMedium = eventParams.utmMedium;
}
if (eventParams.utm_campaign) {
  entry.utm_campaign = eventParams.utm_campaign;
  entry.utmCampaign = eventParams.utmCampaign;
}
if (eventParams.utm_term) {
  entry.utm_term = eventParams.utm_term;
  entry.utmTerm = eventParams.utmTerm;
}
if (eventParams.utm_content) {
  entry.utm_content = eventParams.utm_content;
  entry.utmContent = eventParams.utmContent;
}

window.dataLayer.push(entry);
window.dataLayer.push({ eventParams: undefined });

}

__agyRecordPageView();

window.glueCookieNotificationBarLoaded = function () { if (window.__agyGtmLoaded) return; window.__agyGtmLoaded = true; (function (w, d, s, l, i) { w[l] = w[l] || []; w[l].push({ ‘gtm.start’: new Date().getTime(), event: ‘gtm.js’, }); const f = d.getElementsByTagName(s)[0], j = d.createElement(s), dl = l != ‘dataLayer’ ? ‘&l=’ + l : ‘’; j.async = true; j.src = ‘https://www.googletagmanager.com/gtm.js?id=’ + i + dl; f.parentNode.insertBefore(j, f); })(window, document, ‘script’, ‘dataLayer’, ‘GTM-M4N2ZKXQ’); __agyRecordPageView(); };

document.addEventListener(‘astro:page-load’, function () { __agyRecordPageView(); }); <script> window.StarlightThemeProvider = (() => { const storedTheme = typeof localStorage !== ‘undefined’ && localStorage.getItem(‘starlight-theme’); const theme = storedTheme || (window.matchMedia(‘(prefers-color-scheme: light)’).matches ? ‘light’ : ‘dark’); document.documentElement.dataset.theme = theme === ‘light’ ? ‘light’ : ‘dark’; return { updatePickers(theme = storedTheme || ‘auto’) { document.querySelectorAll(‘starlight-theme-select’).forEach((picker) => { const select = picker.querySelector(‘select’); if (select) select.value = theme; /** @type {HTMLTemplateElement | null} / const tmpl = document.querySelector(#theme-icons); const newIcon = tmpl && tmpl.content.querySelector(‘.’ + theme); if (newIcon) { const oldIcon = picker.querySelector(‘svg.label-icon’); if (oldIcon) { oldIcon.replaceChildren(…newIcon.cloneNode(true).childNodes); } } }); }, }; })(); <style>@layer starlight.components{svg:where(.astro-n5k4ipy7){color:var(–sl-icon-color);font-size:var(–sl-icon-size,1em);width:1em;height:1em}} .button{font-size:var(–base-size);line-height:var(–cta-line-height);letter-spacing:var(–cta-letter-spacing);border-radius:var(–shape-corner-rounded,999px);cursor:pointer;text-align:center;border:1px solid #0000;justify-content:center;align-self:flex-start;align-items:center;height:fit-content;padding:10px 24px;font-family:Google Sans Flex,sans-serif;font-weight:450;text-decoration:none;transition:all .15s ease-out;display:inline-flex}.button span{text-decoration:none}.button .icon{color:currentColor;margin:0 var(–space-sm) 0 0;flex-shrink:0;align-items:center;line-height:0;display:inline-flex}.button:disabled{cursor:not-allowed}.button-primary{background:var(–theme-primary-primary,#1a73e8);color:var(–theme-primary-on-primary,#fff)}.button-primary:hover,.button-primary:focus-visible{background:var(–theme-button-states-primary-hovered,#1557b0);outline:none}.button-primary:disabled{background:var(–theme-button-states-disabled);color:var(–theme-button-states-on-disabled)}.button-primary-inverse{background:var(–palette-grey-0);color:var(–palette-grey-1200)}.button-primary-inverse:hover,.button-primary-inverse:focus-visible{background:var(–theme-surface-surface-container-high);outline:none}.button-primary-inverse:active{background:var(–theme-surface-surface-container-high)}.button-primary-inverse:disabled{background:var(–theme-button-states-disabled);color:var(–theme-button-states-on-disabled)}.button-secondary{color:var(–theme-surface-on-surface);background:var(–theme-secondary-button);backdrop-filter:blur(6px);border:1px solid var(–theme-outline-variant)}.button-secondary:hover,.button-secondary:focus-visible{background:var(–theme-button-secondary-hover);outline:none}.button-secondary:disabled{background:var(–theme-button-states-disabled);color:var(–theme-button-states-on-disabled)}.button-secondary-inverse{color:var(–theme-surface-surface);background:var(–theme-nav-button-hover);backdrop-filter:blur(8px);border:1px solid var(–theme-inverse-outline-variant)}.button-secondary-inverse:hover,.button-secondary-inverse:focus-visible{background:var(–theme-button-secondary-inverse-hover);outline:none}.button-secondary-inverse:disabled{background:var(–palette-grey-1100);color:var(–palette-grey-50-20)}.button-text,.button-nav{background:0 0}.button-text{color:var(–theme-text-on-text)}.button-text:hover,.button-text:focus-visible{background:var(–theme-button-states-hovered);outline:none}.button-text:active{background:var(–theme-button-states-pressed)}.button-text:disabled{color:var(–theme-button-states-on-disabled)}.button-compact{min-block-size:36px;padding:6px 16px}.download-button,.button-nav{font-size:var(–cta-sm-size);line-height:var(–cta-sm-line-height);letter-spacing:var(–cta-sm-letter-spacing);font-weight:450}.button-nav{color:var(–theme-surface-on-surface-variant)}.button-nav:hover,.button-nav:focus-visible{color:#000;background:var(–theme-nav-button-hover);outline:none}@media (width<=767px){.button-nav{width:100%}}.dropdown-nav{padding-right:8px}.dropdown-icon,.play-icon{letter-spacing:normal;text-transform:none;white-space:nowrap;word-wrap:normal;-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;font-feature-settings:“liga”;-webkit-font-feature-settings:“liga”;font-variation-settings:“FILL” 0, “wght” 300, “GRAD” 0, “ROND” 50, “opsz” 48;margin:0 0 0 var(–space-xs);transition:transform .3s all;direction:ltr;flex-shrink:0;justify-content:center;align-items:center;font-family:Google Symbols;font-size:1.5em;font-weight:300;line-height:1;display:inline-flex}.dropdown-icon svg,.play-icon svg{fill:currentColor;display:block}.button.dropdown-open .dropdown-icon,.button[aria-expanded=true] .dropdown-icon,.dropdown-open>.dropdown-icon{transform:rotate(-180deg)}.play-icon{font-variation-settings:“FILL” 1, “wght” 300, “GRAD” 0, “ROND” 50, “opsz” 48}@media (width<=1024px){.nav-button{padding:var(–space-md);width:100%}} <style>@layer starlight.components{.card:where(.astro-zts4jgjd){–sl-card-border:var(–sl-color-purple);–sl-card-bg:var(–sl-color-purple-low);border:1px solid var(–sl-color-gray-5);background-color:var(–sl-color-black);flex-direction:column;gap:clamp(.5rem,.125rem + 1vw,1rem);padding:clamp(1rem,.125rem + 3vw,2.5rem)}.card:where(.astro-zts4jgjd):nth-child(4n+1){–sl-card-border:var(–sl-color-orange);–sl-card-bg:var(–sl-color-orange-low)}.card:where(.astro-zts4jgjd):nth-child(4n+3){–sl-card-border:var(–sl-color-green);–sl-card-bg:var(–sl-color-green-low)}.card:where(.astro-zts4jgjd):nth-child(4n+4){–sl-card-border:var(–sl-color-red);–sl-card-bg:var(–sl-color-red-low)}.card:where(.astro-zts4jgjd):nth-child(4n+5){–sl-card-border:var(–sl-color-blue);–sl-card-bg:var(–sl-color-blue-low)}.title:where(.astro-zts4jgjd){font-weight:600;font-size:var(–sl-text-h4);color:var(–sl-color-white);line-height:var(–sl-line-height-headings);align-items:center;gap:1rem}.card:where(.astro-zts4jgjd) .icon:where(.astro-zts4jgjd){border:1px solid var(–sl-card-border);background-color:var(–sl-card-bg);border-radius:.25rem;flex-shrink:0;padding:.2em}.card:where(.astro-zts4jgjd) .body:where(.astro-zts4jgjd){font-size:clamp(var(–sl-text-sm), calc(.5rem + 1vw), var(–sl-text-body));margin:0}} <style>@layer starlight.components{.card-grid:where(.astro-lmor3ela){grid-template-columns:100%;gap:1rem;display:grid}.card-grid:where(.astro-lmor3ela)>{margin-top:0!important}@media (width>=50rem){.card-grid:where(.astro-lmor3ela){grid-template-columns:1fr 1fr;gap:1.5rem}.stagger:where(.astro-lmor3ela){–stagger-height:5rem;padding-bottom:var(–stagger-height)}.stagger:where(.astro-lmor3ela)>:nth-child(2n){transform:translateY(var(–stagger-height))}}} <style>@layer starlight.components{.sl-link-card:where(.astro-vodiqeol){border:1px solid var(–sl-color-gray-5);box-shadow:var(–sl-shadow-sm);border-radius:.5rem;grid-template-columns:1fr auto;gap:.5rem;padding:1rem;display:grid;position:relative}a:where(.astro-vodiqeol){line-height:var(–sl-line-height-headings);text-decoration:none}a:where(.astro-vodiqeol):before{content:“”;position:absolute;inset:0}.stack:where(.astro-vodiqeol){flex-direction:column;gap:.5rem}.title:where(.astro-vodiqeol){color:var(–sl-color-white);font-weight:600;font-size:var(–sl-text-lg)}.description:where(.astro-vodiqeol){color:var(–sl-color-gray-3);line-height:1.5}.icon:where(.astro-vodiqeol){color:var(–sl-color-gray-3)}.sl-link-card:where(.astro-vodiqeol):hover{background:var(–sl-color-gray-7,var(–sl-color-gray-6));border-color:var(–sl-color-gray-2)}.sl-link-card:where(.astro-vodiqeol):hover .icon:where(.astro-vodiqeol){color:var(–sl-color-white)}} <style>@layer starlight.components{.sl-steps{–bullet-size:calc(var(–sl-line-height) * 1rem);–bullet-margin:.375rem;counter-reset:steps-counter var(–sl-steps-start,0);padding-inline-start:0;list-style:none}.sl-steps>li{counter-increment:steps-counter;padding-inline-start:calc(var(–bullet-size) + 1rem);min-height:calc(var(–bullet-size) + var(–bullet-margin));padding-bottom:1px;position:relative}.sl-steps>li+li{margin-top:0}.sl-steps>li:before{content:counter(steps-counter);top:0;width:var(–bullet-size);height:var(–bullet-size);line-height:var(–bullet-size);font-size:var(–sl-text-xs);text-align:center;color:var(–sl-color-white);background-color:var(–sl-color-gray-6);box-shadow:inset 0 0 0 1px var(–sl-color-gray-5);border-radius:99rem;font-weight:600;position:absolute;inset-inline-start:0}.sl-steps>li:after{–guide-width:1px;content:“”;top:calc(var(–bullet-size) + var(–bullet-margin));bottom:var(–bullet-margin);width:var(–guide-width);background-color:var(–sl-color-hairline-light);position:absolute;inset-inline-start:calc((var(–bullet-size) - var(–guide-width)) / 2)}}@layer starlight.content{.sl-steps>li>:first-child{–lh:calc(1em * var(–sl-line-height));–shift-y:calc(.5 * (var(–bullet-size) - var(–lh)));transform:translateY(var(–shift-y));margin-bottom:var(–shift-y)}.sl-steps>li>:first-child:where(h1,h2,h3,h4,h5,h6){–lh:calc(1em * var(–sl-line-height-headings))}@supports (–prop:1lh){.sl-steps>li>:first-child{–lh:1lh}}} <style>@layer starlight.components{starlight-tabs:where(.astro-hbt4ddzs){display:block}.tablist-wrapper:where(.astro-hbt4ddzs){overflow-x:auto}:where(.astro-hbt4ddzs)[role=tablist]{border-bottom:2px solid var(–sl-color-gray-5);padding:0;list-style:none;display:flex}.tab:where(.astro-hbt4ddzs){display:flex}.tab:where(.astro-hbt4ddzs)>:where(.astro-hbt4ddzs)[role=tab]{–sl-tab-color-border:var(–sl-color-gray-5);line-height:var(–sl-line-height-headings);box-shadow:0 2px 0 var(–sl-tab-color-border);color:var(–sl-color-gray-3);outline-offset:var(–sl-outline-offset-inside);overflow-wrap:initial;align-items:center;gap:.5rem;padding:.275rem 1.25rem;text-decoration:none;display:flex}.tab:where(.astro-hbt4ddzs) :where(.astro-hbt4ddzs)[role=tab][aria-selected=true]{–sl-tab-color-border:var(–sl-color-text-accent);color:var(–sl-color-white);font-weight:600}.tablist-wrapper:where(.astro-hbt4ddzs)~[role=tabpanel]{margin-top:1rem}} Skip to content

<site-search class=“astro-mtusqnhg astro-r5ar4xm7” data-translations=“{“placeholder”:“Search”}“>
<script> (() => { const openBtn = document.querySelector(‘button[data-open-modal]’); const shortcut = openBtn?.querySelector(‘kbd’); if (!openBtn || !(shortcut instanceof HTMLElement)) return; const platformKey = shortcut.querySelector(‘kbd’); if (platformKey && /(Mac|iPhone|iPod|iPad)/i.test(navigator.platform)) { platformKey.textContent = ‘⌘’; openBtn.setAttribute(‘aria-keyshortcuts’, ‘Meta+K’); } shortcut.style.display = ‘’; })();
<script> StarlightThemeProvider.updatePickers();
Available on:
Antigravity 2.0Antigravity CLI

The /plan command facilitates structured planning, codebase exploration, and requirements discovery before jumping directly into code execution. For non-trivial tasks, /plan ensures complex changes are well-understood, properly scoped, and organized before files are modified.

\

Writing code before clarifying edge cases may lead to wasted effort, unnecessary diffs, or regressions. While standard prompts immediately begin modifying files, /plan introduces an intentional planning phase that explores the workspace, identifies dependencies, and surfaces architectural decisions for your review.

The /plan workflow helps bridge the gap between initial idea and code execution:

\ \Exploration without side effects: The agent reads files, inspects call graphs, and analyzes dependencies without writing code prematurely. \Interactive discovery: If requirements are underspecified, the agent asks targeted questions to clarify trade-offs. \Reviewable artifact: The agent drafts a structured Implementation Plan artifact with clear task breakdowns and verification checkpoints. \User-guided execution: You retain full control to leave inline comments, request adjustments, or click Proceed to begin implementation. \

When you invoke /plan, Antigravity runs a multi-phase planning and discovery workflow designed to produce an actionable implementation plan:

\ \Analysis and discovery: The agent analyzes your prompt, inspects workspace configuration, and examines affected files. \Clarification and interviewing: If specifications are ambiguous or multiple technical approaches are viable, the agent initiates a focused interview using interactive question prompts and structured options. \Structured plan creation: Once requirements are clear, the agent generates an Implementation Plan artifact. \User review and approval: The agent presents the plan artifact in the review pane. You can review the proposed steps, leave inline annotations, or adjust individual tasks. \

The /plan command is especially valuable in the following development scenarios:

\ \Complex refactors: When restructuring modules, upgrading libraries, or refactoring interfaces across multiple files. \Ambiguous requirements: When starting a feature with open questions, unknown constraints, or competing architectural approaches. \High-risk changes: For database migrations, authentication overhauls, or security-sensitive patches where an upfront checklist is critical. \Collaborative alignment: When you want to review and shape the agent’s strategy before any code modifications occur. \

You can invoke /plan with a specific task prompt or without arguments to start an open-ended discovery session.

\ (() => { class StarlightTabsRestore extends HTMLElement { connectedCallback() { const starlightTabs = this.closest('starlight-tabs'); if (!(starlightTabs instanceof HTMLElement) || typeof localStorage === 'undefined') return; const syncKey = starlightTabs.dataset.syncKey; if (!syncKey) return; const label = localStorage.getItem(`starlight-synced-tabs__${syncKey}`); if (!label) return; const tabs = [...starlightTabs?.querySelectorAll('[role="tab"]')]; const tabIndexToRestore = tabs.findIndex( (tab) => tab instanceof HTMLAnchorElement && tab.textContent?.trim() === label ); const panels = starlightTabs?.querySelectorAll(':scope > [role="tabpanel"]'); const newTab = tabs[tabIndexToRestore]; const newPanel = panels[tabIndexToRestore]; if (tabIndexToRestore < 1 || !newTab || !newPanel) return; tabs[0]?.setAttribute('aria-selected', 'false'); tabs[0]?.setAttribute('tabindex', '-1'); panels?.[0]?.setAttribute('hidden', 'true'); newTab.removeAttribute('tabindex'); newTab.setAttribute('aria-selected', 'true'); newPanel.removeAttribute('hidden'); } } customElements.define('starlight-tabs-restore', StarlightTabsRestore); })()

Type /plan followed by your goal in the prompt input:

/plan Refactor our authentication middleware to support OIDC token verification with JWKS caching

To start an interactive discovery session for the current workspace context without a predefined prompt:

/plan

The agent inspects your current active file and recent conversation history, then asks clarifying questions to help formulate a plan.

\

Plans generated by /plan use the standard Antigravity artifact format. You can interact with the plan in several ways:

\ \Inline comments: Highlight text or select specific plan steps to add targeted feedback. \Scope adjustments: Ask the agent to break down tasks into smaller steps or remove optional work items before proceeding. \Artifact review policies: Configure whether the agent pauses for plan approval using your project’s artifact review policy. \Proceed: Click Proceed to transition the agent into execution mode. The agent follows the approved plan step-by-step, validating each milestone with tests.

For detailed instructions on artifact navigation and commenting workflows, refer to the Implementation plan guide.

\

Comparison of planning and reasoning modes

Section titled “Comparison of planning and reasoning modes”

Antigravity provides complementary commands depending on task scope and complexity:

\
CommandPrimary FocusBest ForPlan Tier
/planRequirements discovery and reviewable plansScoping complex tasks, refactors, and multi-file changes before modifying codeAll plans
/grill-meSocratic design interviewsDeep requirement alignment and edge-case probing before drafting designsAll plans
/boostMulti-agent deep reasoningHard concurrency bugs, race conditions, and algorithmic optimizationsPaid plans
/teamwork-previewCollaborative agent teamsLong-horizon campaigns, repository migrations, and open-ended researchPaid plans
\

Explore related planning and automation documentation:

\ \Implementation plan artifact: Learn how to review, comment on, and approve plan artifacts. \Artifact review policies: Configure review behavior and auto-proceed settings. \Slash commands catalog: Explore the complete catalog of slash commands. \Boost deep reasoning (/boost): Leverage multi-agent reasoning loops for tough engineering challenges. \Teamwork agent teams (/teamwork-preview): Run collaborative agent teams for repository-scale projects.

Last updated Oct 11, 2026