{"owner":"GoogleCloudPlatform","repo":"generative-ai","hasSkills":true,"totalSkillsCount":138,"totalTokensCount":60331,"categories":["anthropic-skill","subagent-persona","plugin-manifest"],"hasMcp":true,"mcpConfig":{"mcpServers":{"generative-ai":{"command":"npx","args":["-y","@modelcontextprotocol/server-generative-ai"]}}},"found":["search/gemini-enterprise/ge-demo-generator/agent_template/demo_skills/professional-presentation/SKILL.md","search/gemini-enterprise/ge-migration-agent/skills/SKILL.md","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/SKILL.md","agents/README.md","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-video/SKILL.md","agents/adk/README.md","search/gemini-enterprise/ge-demo-generator/agent_template/demo_skills/professional-document/SKILL.md","agents/invoice-processing/README.md","agents/personalized-agent-swarms/README.md","agents/personalized-agent-swarms/evaluation_rubric.md","agents/personalized-agent-swarms/evaluation_rubric_augmented.md","agents/personalized-agent-swarms/evaluation_scenarios_user_1.json","agents/personalized-agent-swarms/evaluation_scenarios_user_2.json","agents/personalized-agent-swarms/evaluation_scenarios_user_3.json","agents/personalized-agent-swarms/evaluation_scenarios_user_4.json","agents/personalized-agent-swarms/evaluation_scenarios_user_5.json","agents/self-evolving-ai/README.md","tools/llmevalkit/CONTRIBUTING.md","tools/llmevalkit/README.md","agents/adk/agent-quality-flywheel/README.md","agents/adk/agent-quality-flywheel/agents-cli-manifest.yaml","agents/adk/agent-quality-flywheel/fx_footer_config.yaml","agents/adk/contract-compliance-pipeline/ARCHITECTURE.md","agents/adk/contract-compliance-pipeline/README.md","agents/adk/contract-compliance-pipeline/TUTORIAL.md","agents/adk/new-hire-onboarding/README.md","agents/adk/new-hire-onboarding/TUTORIAL.md","agents/adk/zero-trust-agents-2/README.md","agents/adk/zero-trust-agents-2/TUTORIAL.md","agents/adk/zero-trust-agents/README.md","agents/adk/zero-trust-agents/TUTORIAL.md","agents/invoice-processing/deployment/README.md","agents/personalized-agent-swarms/analyzer/README.md","agents/personalized-agent-swarms/harvest/README.md","agents/personalized-agent-swarms/user_assistant_agent/DEPLOYMENT.md","agents/personalized-agent-swarms/user_assistant_agent/README.md","agents/personalized-agent-swarms/user_assistant_agent/test_scenarios.md","agents/personalized-agent-swarms/user_profiles/profiles.json","gemini/agents/always-on-memory-agent/README.md","gemini/agents/genai-experience-concierge/.pre-commit-config.yaml","gemini/agents/genai-experience-concierge/README.md","agents/invoice-processing/invoice_processing/data/comparison_results.json","agents/invoice-processing/invoice_processing/data/reconstructed_rules_book.md","agents/invoice-processing/invoice_processing/data/rule_base.json","agents/invoice-processing/invoice_processing/data/rule_discovery_cache.json","agents/invoice-processing/invoice_processing/exemplary_data/test_cases_summary.json","agents/invoice-processing/invoice_processing/shared_libraries/invoice_master_data.yaml","gemini/agents/genai-experience-concierge/agent-design-patterns/README.md","agents/adk/new-hire-onboarding/frontend/live-onboarding/package.json","agents/adk/new-hire-onboarding/frontend/live-onboarding/tsconfig.json","agents/adk/new-hire-onboarding/tests/eval/eval_config.json","agents/invoice-processing/invoice_processing/exemplary_data/case_001/Postprocessing_Data.json","agents/invoice-processing/invoice_processing/exemplary_data/case_001/case_metadata.json","agents/invoice-processing/invoice_processing/exemplary_data/case_002/Postprocessing_Data.json","agents/invoice-processing/invoice_processing/exemplary_data/case_002/case_metadata.json","agents/invoice-processing/invoice_processing/exemplary_data/case_005/Postprocessing_Data.json","agents/invoice-processing/invoice_processing/exemplary_data/case_005/case_metadata.json","gemini/agents/genai-experience-concierge/langgraph-demo/backend/README.md","gemini/agents/genai-experience-concierge/langgraph-demo/frontend/README.md","gemini/multimodal-live-api/project-livewire/cloud-functions/weather-tools/README.md","agents/adk/agent-quality-flywheel/tests/eval/datasets/fx-dataset.json","agents/adk/contract-compliance-pipeline/go-compliance-agent/internal/policies/default_policy.json","agents/adk/new-hire-onboarding/tests/eval/evalsets/README.md","agents/adk/new-hire-onboarding/tests/eval/evalsets/basic.evalset.json","agents/adk/new-hire-onboarding/tests/eval/evalsets/dead_time_delay_eval.json","agents/adk/new-hire-onboarding/tests/eval/evalsets/onboarding_eval.json","agents/invoice-processing/invoice_processing/data/agent_output/case_001/01_classification.json","agents/invoice-processing/invoice_processing/data/agent_output/case_001/02_extraction.json","agents/invoice-processing/invoice_processing/data/agent_output/case_001/03_phase1_validation.json","agents/invoice-processing/invoice_processing/data/agent_output/case_001/04_phase2_validation.json","agents/invoice-processing/invoice_processing/data/agent_output/case_001/05_phase3_validation.json","agents/invoice-processing/invoice_processing/data/agent_output/case_001/07_transformation.json","agents/invoice-processing/invoice_processing/data/agent_output/case_001/08_decision.json","agents/invoice-processing/invoice_processing/data/agent_output/case_001/09_audit_log.json","agents/invoice-processing/invoice_processing/data/agent_output/case_001/Postprocessing_Data.json","agents/invoice-processing/invoice_processing/data/agent_output/case_002/01_classification.json","agents/invoice-processing/invoice_processing/data/agent_output/case_002/02_extraction.json","agents/invoice-processing/invoice_processing/data/agent_output/case_002/03_phase1_validation.json","agents/invoice-processing/invoice_processing/data/agent_output/case_002/04_phase2_validation.json","agents/invoice-processing/invoice_processing/data/agent_output/case_002/05_phase3_validation.json","agents/invoice-processing/invoice_processing/data/agent_output/case_002/06_phase4_validation.json","agents/invoice-processing/invoice_processing/data/agent_output/case_002/07_transformation.json","agents/invoice-processing/invoice_processing/data/agent_output/case_002/08_decision.json","agents/invoice-processing/invoice_processing/data/agent_output/case_002/09_audit_log.json","agents/invoice-processing/invoice_processing/data/agent_output/case_002/Postprocessing_Data.json","agents/invoice-processing/invoice_processing/data/agent_output/case_005/01_classification.json","agents/invoice-processing/invoice_processing/data/agent_output/case_005/02_extraction.json","agents/invoice-processing/invoice_processing/data/agent_output/case_005/03_phase1_validation.json","agents/invoice-processing/invoice_processing/data/agent_output/case_005/04_phase2_validation.json","agents/invoice-processing/invoice_processing/data/agent_output/case_005/05_phase3_validation.json","agents/invoice-processing/invoice_processing/data/agent_output/case_005/06_phase4_validation.json","agents/invoice-processing/invoice_processing/data/agent_output/case_005/07_transformation.json","agents/invoice-processing/invoice_processing/data/agent_output/case_005/08_decision.json","agents/invoice-processing/invoice_processing/data/agent_output/case_005/09_audit_log.json","agents/invoice-processing/invoice_processing/data/agent_output/case_005/Postprocessing_Data.json","gemini/multimodal-live-api/gemini-live-studio/examples/local-code-assistant/plugin/plugin.json","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/references/a2ui_catalog.md","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/references/data_generation.md","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/references/datastore_connectors.md","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/references/demo_prompts_guide.md","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/references/deployment_and_iam.md","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/references/external_files_and_drive.md","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/references/mcp_catalog.md","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/references/multi_agent_architecture.md","agents/adk/contract-compliance-pipeline/python-extraction-agent/tests/eval/evalsets/a2a_mock_eval.json","agents/adk/contract-compliance-pipeline/python-extraction-agent/tests/eval/evalsets/extraction_eval.json","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/demo_skills/README.md","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/video/package-lock.json","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/video/package.json","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/video/tsconfig.json","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/README.md","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/action_plan.json","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/analysis_summary_card.json","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/batch_editor.json","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/before_after_comparison.json","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/calendar_event_compose.json","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/canvas_report.json","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/chat_compose.json","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/chat_conversation_list.json","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/comparison_matrix.json","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/complex_confirmation_card.json","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/contact_list.json","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/delete_surface_example.json","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/detail_modal.json","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/drive_file_compose.json","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/drive_file_list.json","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/email_compose.json","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/event_list.json","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/iframe_dashboard.json","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/image_report.json","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/interactive_form.json","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/maps_place_card.json","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/profile_analysis_dashboard.json","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/ranking_table.json","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/status_dashboard.json","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/suggestion_chips.json","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/tabbed_comparison.json","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/video/src/manifest.json"],"skills":{"search/gemini-enterprise/ge-demo-generator/agent_template/demo_skills/professional-presentation/SKILL.md":"---\nname: professional-presentation\ndescription: Build a professional, executive-quality presentation deck (.pptx) with python-pptx. Use whenever the task asks for slides, a deck, a board/executive presentation, or a pitch. Covers design system, slide patterns, build process, and delivery.\n---\n\n# Professional Presentation Builder\n\nBuild a polished 16:9 widescreen deck that looks like it came from a top-tier\nconsulting firm, using python-pptx. Follow this process end to end.\n\n## Language rule\n\nAll user-visible text on the slides (titles, body, labels, notes) MUST be\nwritten in the same language as the task description you received. This\nskill's instructions are English, but the deliverable follows the task's\nlanguage.\n\n## Process\n\n1. python-pptx and matplotlib are usually preinstalled by the environment\n   warm-up - try the import first; `pip install python-pptx` only if missing.\n2. Plan the storyline BEFORE writing code. A board-grade deck is:\n   title -> agenda -> EXECUTIVE SUMMARY (the conclusion and top 3 findings\n   stated up front, one slide) -> 3-5 content sections, each opened by a\n   minimal section-divider slide (section number + assertion title on a\n   Primary-dark background) -> recommendations/next steps.\n   One message per slide. Write the full outline to `outline.md` first.\n3. Build the deck with a single Python script (see `scripts/build_deck.py`\n   for a working scaffold you should copy and adapt).\n4. Render, open-check (see Verification), fix, repeat.\n5. Deliver (see Delivery).\n\nAdd speaker notes (`slide.notes_slide.notes_text_frame.text`) to the\nexecutive summary and each section's key slide: 2-3 sentences of what to\nSAY, not a repeat of the slide text.\n\n## Design system\n\nApply these rules in code; never rely on template defaults.\n\n- Slide size: 16:9 (13.333 x 7.5 inches). Set explicitly:\n  `prs.slide_width = Inches(13.333)`, `prs.slide_height = Inches(7.5)`.\n- Color palette (define once as constants):\n  - Primary dark `#1A2B4A` (titles, header bars)\n  - Accent `#2E6FDB` (highlights, chart series, key numbers)\n  - Secondary accent `#E8A33D` (callouts, deltas - use sparingly)\n  - Body text `#333F50`, muted `#8A93A6`, background `#FFFFFF`,\n    light panel `#F2F5FA`\n- Typography: one sans-serif family throughout (Arial is always available).\n  Title 30-34pt bold, section header 24-28pt, body 14-18pt, captions 11-12pt.\n  Never go below 11pt. Max ~5 bullets per slide, max ~12 words per bullet.\n- Layout grid: 0.6in outer margins. Title zone is the top 1.2in. Content\n  sits on an invisible 12-column grid; prefer two-column layouts\n  (text + visual) over full-width walls of text.\n- Every content slide gets a thin accent rule (a 0.03in high rectangle in\n  Primary dark) under the title.\n- Big-number slides: one KPI per panel, number at 40-54pt in Accent,\n  label at 12pt muted, arranged in 2-4 equal panels.\n- Charts: prefer generating chart images with matplotlib (same palette,\n  no gridline clutter, direct labels instead of legends where possible,\n  150+ dpi PNG) and placing them with `add_picture`. Native pptx charts\n  are acceptable for simple bar/line.\n- Charts with non-Latin text (Japanese, Chinese, Korean, ...): matplotlib's\n  default font has NO CJK glyphs - labels render as hollow boxes. BEFORE\n  rendering any chart whose labels are not pure ASCII, register a matching\n  font. For Japanese the fastest reliable path is:\n      pip install japanize-matplotlib\n      import japanize_matplotlib   # once, right after importing matplotlib\n  For other scripts, download a Noto Sans font that covers the language,\n  register it with matplotlib.font_manager.fontManager.addfont(path), and\n  set rcParams[\"font.family\"] to it. AFTER rendering, re-open the PNG and\n  verify no glyph appears as a hollow box before placing it on a slide.\n- Tables: header row filled Primary dark with white bold text, body rows\n  alternating white / light panel, 11-12pt.\n- Footer on every slide except the title: short deck title left, slide\n  number right, 10pt muted.\n\n## Content quality bar\n\n- Slide titles are ASSERTIONS, not topics (\"Revenue grew 18% on repeat\n  customers\", not \"Revenue\"). A reader should get the argument from\n  titles alone.\n- Use real numbers from the provided data. Round for readability\n  (12.4M, 18%, 3.2x). Never invent figures.\n- End with a \"Next steps\" or \"Recommendations\" slide containing concrete,\n  owner-assignable actions.\n\n## Verification (mandatory)\n\nAfter building, re-open the file with python-pptx and assert:\n- expected slide count;\n- no text frame overflows its shape (compare text length vs shape size\n  heuristically) and no shape extends beyond slide bounds;\n- every slide has a non-empty title, and content slides have the footer\n  with the correct slide number;\n- iterate every run in every text frame and confirm no character rendered\n  from a missing font path (for CJK decks: the deck font must cover the\n  script; re-check chart PNGs for hollow-box glyphs).\nFix any issue and rebuild. At least one full review-and-rebuild pass is\nmandatory even when the first build looks fine: re-read the deck against\nthe task's stated quality conditions before delivering.\n\n## Delivery\n\n1. Save as a descriptive filename, e.g. `q3_revenue_review.pptx`.\n2. If the task provided an upload URL for deliverables, upload with:\n   `curl -sS -X PUT --upload-file <file> -H \"Content-Type: application/vnd.openxmlformats-officedocument.presentationml.presentation\" \"<upload_url>\"`\n   Retry once on failure.\n3. In your final report, state the filename, slide count, and a one-line\n   summary of each slide.\n","search/gemini-enterprise/ge-migration-agent/skills/SKILL.md":"---\nname: migration-config-skill\ndescription: Holds canonical source and target environment parameters and verified DataStore mappings.\nmetadata:\n  environments:\n    source:\n      project_number: \"<SOURCE_PROJECT_NUMBER>\"\n      project_id: \"<SOURCE_PROJECT_ID>\"\n      region: global\n      engine_id: \"<SOURCE_ENGINE_ID>\"\n    target:\n      project_number: \"<TARGET_PROJECT_NUMBER>\"\n      project_id: \"<TARGET_PROJECT_ID>\"\n      region: global\n      engine_id: \"<TARGET_ENGINE_ID>\"\n  datastores_mapping:\n    # Format: source-datastore-id-suffix: target-datastore-id-suffix\n    \"<SOURCE_DATASTORE_ID_SUFFIX>\": \"<TARGET_DATASTORE_ID_SUFFIX>\"\n  connectors_mapping:\n    ge-drive-all: Drive\n    GeGmail: geGmail\n    googleSearch: googleSearch\n    urlContext: urlContext\n---\n\n# ADK Administration Setup & Migration Instructions\n\nThis file serves as the single source of truth for Gemini Enterprise migrations. Administrators can fully configure source-to-target resource pairings by updating the YAML metadata frontmatter above.\n\n---\n\n## Administrative Setup Guide\n\n### 1. Environments Configuration\nSet your official canonical source and target project definitions under `environments`:\n- **`project_number`**: The numeric Google Cloud Project Number (e.g., `404109417257`).\n- **`engine_id`**: The fully qualified Discovery Engine app/engine ID.\n\n### 2. DataStore Grounding Mappings (`datastores_mapping`)\nMap underlying knowledge search collections and grounding data stores (assigned under `dataStoreSpecs`) using their exact resource ID suffix:\n```yaml\ndatastores_mapping:\n  # Source ID -> Target ID\n  example-mcp-source_12345_mcp_data: example-mcp-target_67890_mcp_data\n  example-drive-source_12345_google_drive: example-drive-target_67890_google_drive\n```\n*Note: Always use the fully qualified ID suffix (e.g., `_google_drive`, `_mcp_data`) to prevent substring truncation.*\n\n### 3. Visual Connector & Tool Mappings (`connectors_mapping`)\nMap display aliases and frontend extension tool chips (assigned under `selectedTools`) to ensure visual rendering parity in the Agent Designer UI canvas:\n```yaml\nconnectors_mapping:\n  # Source UI Badge -> Canonical Target UI Token\n  \"Example Source Connector\": custom_mcp\n  \"example-drive\": Drive\n```\n\n---\n\n## Operational Execution\n\nOnce configured, run live migrations or offline GCS imports directly:\n\n```bash\n# 1. Execute live cross-environment migration\nuv run ./migrate.py migrate-agent \"Quarterly Business Review Generator\" --force\n\n# 2. Import agent definition from GCS offline backup\nuv run ./migrate.py import-agent-gcs quarterly_business_review_export.json --target-engine <TARGET_ENGINE_ID>\n```\n","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/SKILL.md":"---\nname: ge-demo-generator\ndescription: Synthesizes and deploys complete, domain-specific Gemini Enterprise demo environments directly to Google Cloud. Use when the user asks to create an AI agent demo for any customer domain (e.g. 'example.com', 'example.co.jp', 'example.de', 'example.fr' - any company, any industry, any region) or business goal, generate realistic BigQuery/Firestore sample datasets, create external demo files (PDF, Excel, scanned images), stage them in Cloud Storage and upload them to the deploying account's Google Drive, scaffold ADK multi-agent architectures with MCP tools and A2UI cards, deploy to Cloud Run, publish to Gemini Enterprise, and generate 7 structured demo prompts in any language. Confirms the requirements interactively and presents a demo architecture & data model plan (Mermaid ER diagram, external file lineage, target project) for approval before anything is deployed. Also triggered by /ge-demo-generator.\nmetadata:\n  author: Google Cloud Customer Engineering\n  version: 2.30.1\n---\n\n# GE Demo Generator Skill (v2.30.1)\n\nSynthesizes production-grade, domain-tailored AI agent demo environments using **Gemini 3.8 Flash** for reasoning and **Gemini 3.1 Flash Image** for visual generation, adhering to a strict **6-step infrastructure dependency graph**, rich **A2UI interactive component streaming**, **Google Workspace OAuth authorization**, **external sample files staged in Cloud Storage and, when the credentials carry the Drive scope, in the deploying account's Google Drive**, **7 structured demo prompts**, **automated browser video recording & Remotion highlight reel delivery to Google Drive**, and **global multilingual localization (i18n/l10n)**.\n\n---\n\n## 🌐 Multilingual Support & Localization Architecture (i18n/l10n)\n\nThe skill is implemented entirely in **English** at the system specification and codebase layer, while providing **complete, dynamic multilingual support** for any enterprise domain worldwide:\n\n1. **Automatic Language & Locale Detection**:\n   - **From Domain TLD**:\n     - `.co.jp`, `.jp`, `.ne.jp`, `.or.jp` ➔ Japanese (`日本語`, `locale: \"ja\"`, `currency: \"JPY\"`, `symbol: \"¥\"`)\n     - `.de` ➔ German (`Deutsch`, `locale: \"de\"`, `currency: \"EUR\"`, `symbol: \"€\"`)\n     - `.fr` ➔ French (`Français`, `locale: \"fr\"`, `currency: \"EUR\"`, `symbol: \"€\"`)\n     - `.es` ➔ Spanish (`Español`, `locale: \"es\"`, `currency: \"EUR\"`, `symbol: \"€\"`)\n     - `.it` ➔ Italian (`Italiano`, `locale: \"it\"`, `currency: \"EUR\"`, `symbol: \"€\"`)\n     - `.cn`, `.tw` ➔ Chinese (`中文`, `locale: \"zh\"`, `currency: \"CNY\"/\"TWD\"`)\n     - `.kr` ➔ Korean (`한국어`, `locale: \"ko\"`, `currency: \"KRW\"`, `symbol: \"₩\"`)\n     - `.br` ➔ Portuguese (`Português`, `locale: \"pt\"`, `currency: \"BRL\"`, `symbol: \"R$\"`)\n     - `.co.uk`, `.com.au`, `.com`, `.io`, `.org`, etc. ➔ English (`locale: \"en\"`, `currency: \"USD\"/\"GBP\"`)\n   - **From User Interaction**:\n     - If the user provides a prompt in Japanese, all user-facing demo assets are synthesized in Japanese. If in German, all in German.\n\n2. **Strict Language Consistency Rule (MANDATORY)**:\n   - ALL user-facing text elements MUST strictly match the detected target language:\n     - Company overview & operational challenges.\n     - Table and column business descriptions (harvested into Knowledge Catalog).\n     - CSV string values (product names, category names, person names, address strings, remarks).\n     - External files: PDF title, body sections, audit summary tables; Excel headers, KPI cards, and notes; Scanned image prompts and handwritten ink text values.\n     - System instructions (`businessInstruction`), Welcome Card greeting, and A2UI Button labels.\n     - The 7 Structured Demo Prompts (`demoGuide`).\n   - **Technical Names Isolation**: Table names, column names, and primary/foreign key ID fields (e.g. `order_id`, `supplier_id`) MUST always remain in English `snake_case` for database engine stability and SQL parser reliability.\n   - **Currency symbol**: write the detected symbol to `.env` as `CURRENCY_SYMBOL` (e.g. `CURRENCY_SYMBOL=¥`). The A2UI few-shot examples ship with a literal `[CURRENCY]` placeholder instead of a hardcoded symbol; `setup_and_deploy.sh` substitutes it before the image is built and aborts the deploy if any occurrence survives. Defaults to `$` when unset.\n\n---\n\n## Complete Lifecycle & Infrastructure Dependency Graph\n\n```\nPhase 1: Customer Domain & Business Goal Research (Search Grounding & Language Detection)\n   ↓\nPhase 2: Requirements confirmed interactively ➔ Demo Architecture & Data Model Plan ➔ APPROVAL\n   ↓\nPhase 3: Synthetic Data & External Sample Files Generation (PDF, Excel, Images) + Google Drive Upload (Step 1/6)\n   ↓\nPhase 4: ADK Multi-Agent Project Scaffolding & A2UI System Prompts\n   ↓\nPhase 5: Ordered Cloud Provisioning & Deployment:\n   ├── Step 1: BigQuery (with Knowledge Catalog Metadata) & Firestore Initial Data\n   ├── Step 2: Agent Engine Sandbox (Code Execution Environment) [CRITICAL DEPENDENCY]\n   ├── Step 3: Data Viewer Dashboard Cloud Run Deployment (Gets VIEWER_URL)\n   ├── Step 4: Main Multi-Agent Cloud Run Deployment (Injects SANDBOX_RESOURCE_NAME & VIEWER_URL)\n   └── Step 5: Background Task Pub/Sub Push Subscription (/execute_task & SELF_URL)\n   ↓\nPhase 6: Gemini Enterprise App Discovery, Workspace Authorization & Registration (Step 6/6)\n   ↓\nPhase 7: Comprehensive Results Output:\n   ├── 💬 Direct Gemini Enterprise Console Chat Link\n   ├── 📁 External Sample Files: Cloud Storage links, plus Drive links when the upload ran\n   ├── 📊 Firestore Data Viewer Dashboard Link\n   ├── 🔎 BigQuery Console Link\n   └── 🎯 7 Structured Demo Prompts Playbook (Localized to Target Language)\n   ↓\nPhase 8: Automated Browser Demo Video Production & Drive Delivery (Optional)\n   ├── Step 1: Playwright CDP Screen Recording of GE Web UI (Prompt 1, 3, 4)\n   ├── Step 2: Google Cloud TTS Narration Audio & Subtitle Timecodes\n   ├── Step 3: Remotion Programmatic Video Composition (Dynamic Camera, 4x Fast-Forward, Pure Voice Narration)\n   └── Step 4: Google Drive Upload to Demo Folder & Sharable Link\n```\n\n---\n\n## Phase 1: Customer Domain & Business Goal Research\n\n1. **Extract Domain & Company**:\n   - If a domain is provided (e.g., `example.com`, `example.co.jp`, `example.de`), determine company name, primary industry, and regional language from the domain itself — never from a list baked into this skill.\n   - If a business goal or company name is provided, identify the corresponding corporate entity and language.\n\n2. **Grounded Deep Research (via `search_web`)**:\n   - Search for the company's latest corporate profile, business units, IR reports, and known operational challenges.\n   - Identify:\n     - **3-5 Key Business Challenges** (e.g., \"yield rate drop in semiconductor fabrication\", \"supply chain lead-time anomalies\").\n     - **5-8 Operational Workflows** and evaluate which ones are **automatable** with AI agents.\n     - **Authentic Domain Entities & Nomenclature** (e.g., real facility names like \"Kumamoto Technology Center\", actual product codes, industry status codes).\n\n3. **Interactive Use Case Selection (Customer Domain Selection Flow)**:\n   - Present the research findings to the user in their language:\n     - 🏢 **Company Profile**: Official name, summary, primary industry.\n     - ⚠️ **Key Business Challenges**: 3-5 detected operational pain points.\n     - 🎯 **Candidate Workflows**: 3-5 top automatable workflows with automation feasibility ratings.\n   - **Prompt the user to select or customize the use case**:\n     - Use `ask_question` or present a structured choice so the user can pick the target scenario or write in specific requirements.\n\n---\n\n## Phase 2: Requirements Alignment & Demo Architecture Plan (Approval Gate)\n\nPhase 2 has two steps, in this order and never merged into one:\n\n**Step 2.1 — ask** the handful of questions the design genuinely depends on, interactively.\n**Step 2.2 — show** the finished design brief as the alignment artifact, and ask for a go.\n\nThe order is what makes the brief worth reading. A brief that still contains open questions\nis a questionnaire, and the user has to hold the design in their head while answering it; a\nbrief written *after* the answers is a mirror — the user is checking whether what you\nunderstood matches what they meant, which is a much easier thing to do and the last cheap\nmoment to change the entities, the narrative, the file lineage or the target project.\n\nUntil the user approves the brief, **nothing is created** — no CSVs, no Drive folder, no\nBigQuery dataset, no Cloud Run service. Everything after this point takes 15-30 minutes and\nspends real quota in someone's project.\n\n### Step 2.1 — Confirm the requirements interactively\n\nAsk only what you cannot responsibly decide, and ask it *before* writing the brief. Keep it\nshort — two to four questions, batched into one message (`ask_question` where available), each\nwith a stated default so the user can answer \"all defaults\" in three words:\n\n1. **Anchor persona** — who is the primary user of this agent (job title, and a sentence of\n   context if useful)? That persona becomes the demo's protagonist: the agent is framed as\n   *their* process operator, prompt 1 opens from their daily situation, approval gates are\n   decisions they or their manager own, and every other persona appears only as a hand-off\n   counterpart. If the user declines, rotate personas freely instead.\n2. **Scope of the narrative** — which single process instance the demo follows, if Phase 1\n   left more than one plausible reading of the chosen scenario.\n3. **Advanced settings** — ask about the two or three the demo is a plausible candidate for\n   (Workspace OAuth when the scenario touches Gmail/Drive/Calendar, `rag` when it turns on\n   documents rather than numbers, `dataScale` when the narrative claims enterprise volume),\n   and say the rest keep their defaults. Keep the *question* short — brief section 6 lists\n   every option with its resolved value, so nothing is hidden by asking about a few. Add\n   **a warm Cloud Run instance** (`MIN_INSTANCES=1`) to that question whenever the user has\n   named a date, an audience or a live session: it is the one option that is about the\n   *presentation* rather than the demo, and the only thing that removes the cold start — and\n   the occasional cold-start error — from the first message. Offer it with its price in the\n   same breath (see brief section 6).\n4. **Target environment** — only if what `gcloud` reports (read it now, see below) is not\n   obviously the project the user means.\n\nAnything the user has already stated — in the original request or in Phase 1 — is *decided*.\nRe-asking it reads as not having listened.\n\n**Zero-Touch Environment, Project & IAM Pre-flight Probe**:\n\nRead and verify the target environment before writing the brief, ensuring zero-touch deployment readiness so the brief's section 5 states verified facts rather than unvalidated assumptions:\n\n```bash\n# 1. Target Project Resolution:\n#    - If the user explicitly specified a project ID in their request (TARGET_PROJECT), align gcloud to it.\n#    - If the user did NOT specify a project ID and the internal project provisioner\n#      ($SKILL_DIR/templates/scripts/internal/create_project.sh) is available, default to\n#      proposing automatic creation of a new dedicated project (AUTO_CREATE_PROJECT=true),\n#      while recording any existing gcloud config project (CURRENT_PROJECT) as an alternative.\nTARGET_PROJECT=\"${TARGET_PROJECT:-}\"\nCURRENT_PROJECT=$(gcloud config get-value project 2>/dev/null || echo \"\")\nAUTO_CREATE_PROJECT=\"false\"\nPROPOSED_PROJECT_PATTERN=\"\"\n\nif [ -n \"$TARGET_PROJECT\" ]; then\n  if [ \"$CURRENT_PROJECT\" != \"$TARGET_PROJECT\" ]; then\n    gcloud config set project \"$TARGET_PROJECT\" >/dev/null 2>&1 || true\n  fi\n  PROJECT_ID=\"$TARGET_PROJECT\"\nelif [ -f \"$SKILL_DIR/templates/scripts/internal/create_project.sh\" ] &&\n  PROBE_OUT=$(bash \"$SKILL_DIR/templates/scripts/internal/create_project.sh\" --probe \"${DOMAIN_SLUG:-demo}\" 2>/dev/null) &&\n  echo \"$PROBE_OUT\" | grep -q \"^AUTO_PROJECT_AVAILABLE=true$\"; then\n  AUTO_CREATE_PROJECT=\"true\"\n  PROPOSED_PROJECT_PATTERN=$(echo \"$PROBE_OUT\" | sed -n 's/^PROPOSED_PROJECT_PATTERN=//p')\n  PROJECT_ID=\"${PROPOSED_PROJECT_PATTERN}\"\nelse\n  PROJECT_ID=\"$CURRENT_PROJECT\"\nfi\n\n# 2. Account Verification & Auto-Discovery: probe project access when using an existing project\nGCP_ACCOUNT=$(gcloud config get-value account 2>/dev/null || echo \"Unknown\")\nif [ \"$AUTO_CREATE_PROJECT\" != \"true\" ] && [ -n \"$PROJECT_ID\" ]; then\n  if ! gcloud projects describe \"$PROJECT_ID\" >/dev/null 2>&1; then\n    for acc in $(gcloud auth list --format=\"value(account)\" 2>/dev/null); do\n      if gcloud projects describe \"$PROJECT_ID\" --account=\"$acc\" >/dev/null 2>&1; then\n        gcloud config set account \"$acc\" >/dev/null 2>&1 || true\n        GCP_ACCOUNT=\"$acc\"\n        break\n      fi\n    done\n  fi\n  PROJECT_NUMBER=$(gcloud projects describe \"$PROJECT_ID\" --format=\"value(projectNumber)\" 2>/dev/null || echo \"\")\nelse\n  PROJECT_NUMBER=\"auto-provisioned in Phase 3\"\nfi\nREGION=${CLOUD_RUN_REGION:-\"asia-northeast1\"}\n\n# 3. Google Drive Scope Pre-flight\nDRIVE_OK=$(curl -s -o /dev/null -w '%{http_code}' \\\n  -H \"Authorization: Bearer $(gcloud auth print-access-token 2>/dev/null)\" \\\n  'https://www.googleapis.com/drive/v3/about?fields=user')\n```\n\n`DRIVE_OK` is `200` when the Drive copy will happen, and the owner is `${GCP_ACCOUNT}` — the\nsame account, because the upload uses this token. Anything else (usually `403`, a token\ncarrying no Drive scope, which is what a plain `gcloud auth login` gives you) means **this\ndemo will have no Google Drive copy of the sample documents at all**. That is a fact the\nbrief has to state, not discover at deploy time — see brief sections 3 and 5. It is also one\ncommand to fix, so say it now: `gcloud auth login --enable-gdrive-access --no-launch-browser` (using `--no-launch-browser` since an agentic IDE terminal usually has no local browser), then re-read.\n\nThe demo video follows the same account. `generate_and_upload_external_files.py` records the\nDrive owner in `drive_upload_summary.json`, and the video delivery reads it, so the recording\nlands in the same folder as the documents it is a recording of. See\n`skills/ge-demo-video/SKILL.md`, Phase 6, for the full precedence.\n\n#### Multi-OS Google Cloud Authentication & Setup Protocol\nBefore proceeding with deployment, verify both user CLI authentication (`gcloud auth print-access-token`) and Application Default Credentials (`gcloud auth application-default print-access-token`). If missing or expired:\n- **Interactive TTY Mode (`[ -t 0 ]`)**: The script automatically detects the host OS environment, prints the tailored authentication commands, and pauses (`read -p`), allowing the user to authenticate in a separate terminal or browser window and resume seamlessly by pressing Enter.\n- **Non-Interactive / CI Mode**: Strictly fail-fast (Exit 1) with descriptive error logs and the single command to resume.\n- **Host OS Detection & Authentication Matrix**:\n\n  | Host OS / Environment | Detection Signal | Authentication Commands | Notes |\n  |---|---|---|---|\n  | **Linux / Remote VM (Headless)** | No `$DISPLAY`, SSH, or Cloud Shell | `gcloud auth login --enable-gdrive-access --no-launch-browser`<br>`gcloud auth application-default login --no-launch-browser`<br>`gcloud auth application-default set-quota-project $PROJECT_ID` | Copy verification URL to local browser, sign in, and paste auth code back. |\n  | **macOS (Terminal / iTerm)** | `uname -s == Darwin` | `gcloud auth login --enable-gdrive-access`<br>`gcloud auth application-default login`<br>`gcloud auth application-default set-quota-project $PROJECT_ID` | Browser opens automatically for OAuth consent. |\n  | **Windows (WSL / WSL2)** | `/proc/version` contains `microsoft` or `wsl` | `gcloud auth login --enable-gdrive-access`<br>`gcloud auth application-default login`<br>`gcloud auth application-default set-quota-project $PROJECT_ID` | If browser interop is disabled, append `--no-launch-browser`. |\n  | **Linux Desktop (GUI)** | Linux with active `$DISPLAY` | `gcloud auth login --enable-gdrive-access`<br>`gcloud auth application-default login`<br>`gcloud auth application-default set-quota-project $PROJECT_ID` | Browser opens automatically for OAuth consent. |\n\n- **Quota Project Auto-Configuration**: The deployment script and self-healing engine automatically execute `gcloud auth application-default set-quota-project $PROJECT_ID` to prevent HTTP 403 `PERMISSION_DENIED: The discoveryengine.googleapis.com API requires a quota project`.\n\n#### Deployer IAM Audit & Autonomous Self-Healing Protocol\nTo guarantee a seamless zero-touch deployment, probe whether the deploying account `${GCP_ACCOUNT}` possesses the necessary permissions on `${PROJECT_ID}`:\n\n1. **Owner / IAM Admin Auto-Healing**:\n   - Check if `${GCP_ACCOUNT}` is Project Owner, Editor, or has Project IAM Admin on `${PROJECT_ID}`.\n   - If `${GCP_ACCOUNT}` has IAM administrative privileges but lacks specific service roles (or if granular roles are in use), **automatically grant missing deployment roles** before starting deployment:\n```text\ngcloud projects add-iam-policy-binding \"$PROJECT_ID\" \\\n  --member=\"user:$GCP_ACCOUNT\" \\\n  --role=\"roles/run.admin\" --condition=None\n\ngcloud projects add-iam-policy-binding \"$PROJECT_ID\" \\\n  --member=\"user:$GCP_ACCOUNT\" \\\n  --role=\"roles/discoveryengine.admin\" --condition=None\n\ngcloud projects add-iam-policy-binding \"$PROJECT_ID\" \\\n  --member=\"user:$GCP_ACCOUNT\" \\\n  --role=\"roles/bigquery.admin\" --condition=None\n\ngcloud projects add-iam-policy-binding \"$PROJECT_ID\" \\\n  --member=\"user:$GCP_ACCOUNT\" \\\n  --role=\"roles/iam.serviceAccountUser\" --condition=None\n```\n\n2. **Non-Admin Permission Denial Handling (Zero-Touch Guidance)**:\n   - If `${GCP_ACCOUNT}` lacks `roles/resourcemanager.projectIamAdmin` or `roles/owner` and `gcloud projects describe` or service checks return `PERMISSION_DENIED`:\n   - **DO NOT** stop with a vague error or ask the user to manually run setup scripts in their terminal.\n   - Present the exact, copy-pasteable command for their Google Cloud Project Administrator:\n     ```text\n     gcloud projects add-iam-policy-binding \"$PROJECT_ID\" \\\n       --member=\"user:$GCP_ACCOUNT\" \\\n       --role=\"roles/owner\"\n     ```\n   - Prompt the user interactively (using `ask_question` if available) to notify their administrator or switch accounts (`gcloud config set account <admin-account>`), then cleanly re-test and proceed with automated deployment.\n\n3. **Capsule / Sandbox Policy Detection**:\n   - If `${PROJECT_ID}` starts with `cpl-*` or `mpl-*` (Google Cloud Capsule or restricted sandbox), inspect whether organizational policy constraints (such as `constraints/run.allowedIngress` or Service Directory restrictions) are active. Warn the user before data generation so expectations match sandbox capabilities.\n\n### Step 2.2 — Present the Demo Architecture & Data Model Plan\n\nOne message, six sections, in this order, then the gate. Every answer from Step 2.1 is already\nfolded in — the brief **states** decisions, it does not ask for them, and it contains no\n\"tell me which…\" or \"TBD\" anywhere.\n\nWrite it in **the demo's language** (§ i18n above) — headings, table headers and prose alike.\nOnly the technical identifiers stay English `snake_case`: table names, column names and\n`.env` keys.\n\nOpen with a title line naming the company and the selected scenario, so the brief is\nself-contained when it is pasted into a chat with a colleague:\n\n> ### 🏗️ `<Company>` — Demo Architecture & Data Model Plan\n> Based on the selected scenario **\"`<scenario>`\"**, here is the data layer design, the\n> Mermaid ER diagram and the cross-source reconciliation lineage.\n\n### § Brief section 1 — 🏢 Target Company & Demo Overview\n\n- **Company / group**: official name, and the group entity the demo actually models.\n- **Industry**: the specific one, in the company's own vocabulary.\n- **Demo narrative**: 2-3 sentences following **one** business process instance (one\n  problematic order, one flagged application) end to end, naming the departments it passes\n  through. All 7 demo prompts later trace this same instance; see\n  `references/demo_prompts_guide.md` §1.1-§1.2.\n- **Anchor persona**: the persona confirmed in Step 2.1, stated as a fact (\"the agent is\n  operated by the production control manager of the main works\"). If the user declined to\n  name one, say that personas rotate instead — do not re-ask here.\n\n### § Brief section 2 — 📊 Data Layer Design & Mermaid ER Diagram\n\n- **Render a Mermaid `erDiagram`** in a ```mermaid fenced block: every table, every column\n  with its type, `PK`/`FK` markers, cardinality labels on each relationship, and a short\n  business gloss in quotes after each column (`string order_id PK \"order number (ORD-2026-XXXX)\"`).\n  The gloss is the same sentence that later becomes the column description in the Knowledge\n  Catalog, so writing it here is not duplicated work.\n- Include the Firestore task collection as an entity too — it is part of the model the demo\n  reasons over, even though it is not in BigQuery.\n- **Shared core-system model**: design the tables as a slice of the company's system of\n  record, not one team's dataset — a transactional table two departments both write, a\n  rules/threshold table owned by one department that another's workflow must consult, and\n  an audit seed visible only when the departments' views are joined. Details and the\n  single-department escape hatch: `references/data_generation.md` §1.3.\n\n### § Brief section 3 — 📁 External Sample Files & Cross-Source Lineage\n\nTitle this section after where the files will actually be, not after where people assume they\ngo. Cloud Storage is the only guaranteed destination (below), so a heading that says \"Google\nDrive\" is wrong in every run whose token lacks the Drive scope — and it was, in most of them.\n\nA table with one row per external file — type, filename, and what binds it to BigQuery:\n\n| External file | Filename | Content & data binding |\n|---|---|---|\n| 📄 PDF audit report | `<domain>_audit_report.pdf` | which tables it summarizes, and the deliberate 5-15% variance that makes cross-source reconciliation necessary |\n| 📊 Excel ledger | `<domain>_external_ledger.xlsx` | which FK column it joins on, and the row count |\n| 🖼️ Scanned form 1 | `handwritten_order_1.jpg` | what the form is, in-domain, generated by `gemini-3.1-flash-image` |\n| 🖼️ Scanned form 2 | `handwritten_order_2.jpg` | the second form, and the discrepancy it carries |\n\nState the join key explicitly. A lineage row that says \"related to orders\" is not a design —\nthe whole point of the external files is that a question can only be answered by reading a\ndocument *and* querying a table, and that only works if the keys line up (70%+ FK match,\n5-15% audit variance). See `references/external_files_and_drive.md`.\n\nClose the section with where the files will actually live, in one line, because it is the\npart users assume wrongly. Write the line that matches the `DRIVE_OK` read above:\n\n| `DRIVE_OK` | The line to write |\n| --- | --- |\n| `200` | Staged to `gs://<project>-<domain>-<suffix>-docs/` **and** uploaded at deploy time to the Google Drive of `${GCP_ACCOUNT}`, which owns the folder. |\n| anything else | Staged to `gs://<project>-<domain>-<suffix>-docs/`. **No Google Drive copy** — this machine's `gcloud` credentials carry no Drive scope, so a Drive or Sheets step in the demo script would find nothing. |\n\nThe Cloud Storage staging happens in **both** `mcp` and `rag` mode; the deploy-time upload is\nthe *only* path into any Drive. The deployed agent has no way to put them in anyone's Drive —\nv2.11.0 removed the in-conversation import, deliberately. If the user wants them in Drive and\n`DRIVE_OK` is not `200`, say so here, while it can still be sorted out\n(`gcloud auth login --enable-gdrive-access --no-launch-browser` and re-run, or upload `./external_files/` by hand\nafterwards).\n\n### § Brief section 4 — 🤖 Agent Profile & Runtime\n\n- **Agent Name (`DEMO_DISPLAY_NAME`)**: Concise 2–4 word domain role (e.g. `TWG Tea Retail Operations Director`, `Mercari Trust & Safety Specialist`). Registered in Gemini Enterprise as `${DEMO_DISPLAY_NAME} (${SERVICE_NAME})`, matching the Web UI (GAS) version.\n- **Description (`DEMO_DESCRIPTION`)**: Concrete, professional 1–2 sentence mission summary specifying the business domain, core datasets, and operational goals (e.g. `Orchestrates boutique inventory balancing, central commissary replenishment, and plantation harvest orders across Singapore.`). Matches `oneSentenceSummary` in the Web UI (GAS).\n- **Reasoning / orchestration**: **`gemini-3.8-flash`** for all agent instances (Root Coordinator, Deep Analysis Sub-Agent, Background Worker).\n- **Image generation**: **`gemini-3.1-flash-image`** (with localized prompt reinforcement and GCS artifact persistence).\n- **Code execution**: Agent Engine Sandbox (`us-central1` — fixed, not `$REGION`).\n- **UI**: Gemini Enterprise A2UI v0.9 composite catalog (name the components this demo will actually lean on — `MaterialTable`, `VegaChart`, `MaterialCard`).\n\n### § Brief section 5 — ⚙️ Deployment Target Environment\n\nShow what the commands above returned, verbatim, in a fenced block:\n\n```\n👤 Active User Account : ${GCP_ACCOUNT}\n🏢 Target Project      : ${PROJECT_ID} (${PROJECT_NUMBER})\n🌐 Target Region       : ${REGION}\n🛡️ Deployer IAM Status  : Verified (Owner/Admin) / Auto-healed\n🗂️ Sample File Storage : gs://${PROJECT_ID}-<domain>-<suffix>-docs/\n📁 Google Drive Copy   : <the DRIVE_OK line, below>\n```\n\nWhen `AUTO_CREATE_PROJECT=\"true\"` (because the user did not specify a project in\ntheir prompt and the internal project provisioner is available), render the `🏢\nTarget Project` line as: `Auto-create new project (${PROPOSED_PROJECT_PATTERN})`\n— and if `CURRENT_PROJECT` was non-empty, append `[or reuse existing gcloud\nconfig project: ${CURRENT_PROJECT}]` so the user can choose to reuse\n`CURRENT_PROJECT` in the approval prompt if they prefer. Do not create the\nproject during Phase 2; actual creation runs at the start of Phase 3 after user\napproval.\n\nThis is the section users most often stop on, because the answer is frequently \"wrong\nproject\". Do not paraphrase the values and do not print a project the user named unless\n`gcloud` agrees — the deploy will use what `gcloud` says, not what the brief claims.\n\nBoth storage lines are mandatory, and neither is optional wording: the Cloud Storage bucket is\ncreated in every mode, and the Drive line is the one users read as a promise. Write it from\n`DRIVE_OK`, never from intent:\n\n| `DRIVE_OK` | `📁 Google Drive Copy` |\n| --- | --- |\n| `200` | `Google Drive of ${GCP_ACCOUNT}` |\n| anything else | `none - these credentials have no Drive scope (fix: gcloud auth login --enable-gdrive-access --no-launch-browser)` |\n\nNever print a Drive destination the deploy cannot reach, and never describe the copy as\nsomething the agent will do later — nothing after the deploy writes to a Drive. See\n`references/external_files_and_drive.md` §5.\n\n### § Brief section 6 — 🎛️ Advanced Settings & Integrations\n\n   State the settings **this** demo will deploy with — the answers from Step 2.1, plus the\n   defaults for everything the user did not touch. These names are the `.env` keys,\n   upper-snake-cased: `enableManagedAgent` is `ENABLE_MANAGED_AGENT`. Every one of them is a\n   real switch in the deployed container, so an option discussed here but not written to\n   `.env` is a feature the demo will not have.\n\n   **List all eleven, every time**, in this order, with the value this deploy will use in the\n   second column — `✅ true` / `❌ false` / the literal value / `— (unset)`. An option the\n   brief leaves out is an option the user cannot ask for: they do not know it exists, and by\n   the time the deploy banner mentions it the 15-30 minutes are already spent. The gate is the\n   last cheap moment to turn one on, so the gate has to show the whole board. Keep the third\n   column as written here — it is what makes a `false` decidable rather than merely visible —\n   and reword only where this demo's scenario changes what an option would buy.\n\n   | Option | This demo | Default | What it buys, and what it costs |\n   |---|---|---|---|\n   | 🤖 `enableManagedAgent` | `<value>` | **`true`** | Agent Engine Sandbox code execution, asynchronous background delegation (`delegate_autonomous_task`), scheduled tasks and Drive deliverable exports. The delegation prompts in the demo playbook exercise this, which is why it is the one default-on capability. Adds ~8-10 min of provisioning, overlapped with the rest of the deploy. |\n   | 📡 `enableCloudTelemetry` | `<value>` | **`true`** | OpenTelemetry Cloud Trace instrumentation. Fully tracks per-turn LLM token consumption (`input_tokens`, `output_tokens`), latency breakdown waterfall, and tool execution. PII-safe via `NO_CONTENT` (zero chat prompt text transmitted), 0ms warm-turn overhead (async background batching), and free under monthly Cloud Trace quota. Set to `false` to opt out. |\n   | 🛡️ `enableModelArmor` | `<value>` | `false` | Vertex AI Agent Platform Model Armor integration. Enforces prompt injection & jailbreak defense, automatic sensitive data protection (SDP credentials/PII masking), and RAI safety filters. Auto-provisions and binds `ge-demo-default-armor` in `us-central1` if no custom template is specified. |\n   | 🔎 `dataExplorationMode` | `<value>` | **`mcp`** | How the agent reads the demo's data. **`mcp`** (default) provisions no search index: the data-asset catalog is already in the agent's system instruction, so a figure question is *one* `execute_sql` call — the four-to-five round trips people blame on \"no index\" came from the metadata expedition in front of the query, and the mcp routing block overrides exactly that. **`rag`** additionally builds a Discovery Engine index over the BigQuery dataset and the staged files and makes it the read path: lookups and document questions return in one sub-second `search_datastore` call, while computed figures, joins and every write stay on MCP because the index lags the tables. Pick `rag` when the demo turns on documents rather than on numbers, and note it also attaches data stores to the (often shared) Gemini Enterprise app — see `references/datastore_connectors.md`. |\n   | 📁 `enableDatastoreFs` | `<value>` | `false` | When `dataExplorationMode=rag`, provisions a semi-structured Discovery Engine DataStore (`ds-${SERVICE_NAME}-fs`) from `FIRESTORE_COLLECTION` via `FirestoreSource` (GCS export staging). Enables semantic search over historical incident tickets, resolved remediation logs, and SOP archives. Note: live task mutations, approvals, and Operations Viewer synchronization continue to use Firestore MCP for sub-100ms real-time state tracking. |\n   | 🔑 `enableWorkspaceAuth` | `<value>` | `false` | User-OAuth passthrough — the agent acts as the signed-in user for the Drive handoff and Workspace token plumbing. Commonly wanted, since Workspace is usually available in the target environment, but **not** default-on: some organizations refuse to authorize an OAuth client they have not vetted, and there sign-in fails for every demo user. Confirm the target org permits it before enabling. |\n   | 🔑 `enableWorkspaceMcp` | `<value>` | `false` | **Advanced, rarely used.** Adds the Gmail / Drive / Calendar / Docs / Chat MCP toolsets on top of the auth passthrough. The Workspace MCP servers are Developer Preview and the project must be allowlisted first — enable it without that and every Workspace call 403s. Kept separate from `enableWorkspaceAuth` for exactly this reason. |\n   | 🖥️ `enableComputerUse` | `<value>` | `false` | Headless browser automation (Playwright). Also requires uncommenting the Playwright block in **both** `requirements.txt` and the `Dockerfile`; the deploy pre-flights this and refuses a half-configured build. |\n   | 📦 `customMcpRepos` | `<value>` | empty | Third-party MCP servers. Both GitHub sidecars and remote managed servers (Slack included — it is one entry in this list, not a flag of its own) go here. |\n   | 🌐 `publicDatasetId` | `<value>` | unset | Ground the demo in a real BigQuery public dataset (e.g. NOAA Weather, Google Trends) alongside the synthetic data. |\n   | 📈 `dataScale` | `<value>` | unset (hero rows only) | Row count to grow the fact tables to before loading — thousands to tens of thousands. You still write only the 50-200 hero rows the demo script names; `scripts/amplify_data.py` expands the tables around them deterministically, keeping the hero rows verbatim and foreign keys intact. Ask for it when the narrative claims enterprise volume or the demo opens with an aggregate — a `COUNT(*)` of 63 undercuts both. Costs ~10-30s of setup and a longer Discovery Engine ingest. |\n\nOnly list the options that are on, plus the two or three the demo is a plausible candidate\nfor. A user reading eight defaults they did not ask about is a user who skims the whole brief.\n\n**One more switch, and it is deliberately not in that table** — it is not an `.env` key and it\nchanges nothing inside the container. Cloud Run scales this demo to zero when nobody is talking\nto it, which is why an idle demo costs nothing, and why the first message after an idle gap\nwaits ~20-25s for a cold start and can come back as an error instead: Cloud Run sometimes\nrefuses a request outright while the container is still starting. Deploying with\n`MIN_INSTANCES=1` — the environment variable `setup_and_deploy.sh` reads in Step 4/6, exported\nbefore the deploy runs — keeps one instance always up and removes both.\n\nState it as a line under the table when you offer it, with the price attached rather than in a\nfootnote:\n\n> 🔥 **Warm instance** — `MIN_INSTANCES=1` · default `0` (scale-to-zero). No cold start and no\n> cold-start error on the first message. **Cost:** one 8 GiB / 2 vCPU instance is then billed\n> continuously for as long as the demo exists — not just during the presentation.\n\nThe honest default is `0`: for a demo deployed now and shown next week, sending the first\nmessage twice is far cheaper than a week of idle billing. It is also not a decision that has to\nbe made now — it is read at deploy time, so re-running the deploy with the variable set (or\nunset) flips an existing demo either way.\n\n### § The gate — ask once, then stop\n\nClose the message by triggering an interactive approval and option selection modal using the `ask_question` tool (with plain text fallback only if `ask_question` is not supported in the active environment). This allows the user to review all capabilities and toggle any extra features directly:\n\n- Call `ask_question` with `is_multi_select: true`:\n  - `question`: \"Do you approve this architecture and deployment plan? Select '(Recommended) Proceed with default configuration' to start deployment immediately, or check any additional options you want enabled:\" (in the demo's language)\n  - `options`:\n    1. `\"(Recommended) Proceed with default configuration (Managed Agent: Enabled, Cloud Trace Telemetry: Enabled, other options: default)\"`\n    2. `\"🛡️ Enable Model Armor Guardrails (Auto-provisions and binds ge-demo-default-armor in us-central1 for jailbreak defense and PII masking)\"`\n    3. `\"🔑 Enable Google Workspace OAuth (Drive/Slides/Docs export as signed-in user)\"`\n    4. `\"🔎 Enable RAG Data Exploration Mode (Build Discovery Engine search index for document & table reads)\"`\n    5. `\"📁 Enable Firestore DataStore (Semantic search over historical tickets & SOPs in RAG mode)\"`\n    6. `\"🔥 Enable Warm Instance (Cloud Run min-instances=1 to eliminate cold-start delay)\"`\n    7. `\"🖥️ Enable Computer Use (Gemini 3.8 Flash Chromium browser automation)\"`\n    8. `\"📈 Enable Enterprise Data Scale (Grow fact tables to thousands of rows via amplify_data.py)\"`\n    9. `\"📡 Disable Cloud Trace Telemetry (Opt-out from OpenTelemetry token & latency tracking)\"`\n\n- In non-interactive or headless environments where `ask_question` is unavailable, output the equivalent choices in chat text and pause for user reply.\n- When the user selects options, update `.env` (`ENABLE_MODEL_ARMOR=1`, `ENABLE_WORKSPACE_AUTH=1`, `ENABLE_CLOUD_TELEMETRY=0`, `DATA_EXPLORATION_MODE=rag`, etc.) and deployment flags accordingly before proceeding to Phase 3.\n\nThen **stop and wait**. Do not start Phase 3 in the same turn, and do not treat \"looks good\" on\na *previous* message — the scenario choice in Phase 1 or an answer in Step 2.1 — as approval of\nthis brief.\n\nWhen the user changes something, re-render the affected sections and ask again; an approved\nbrief is the specification the rest of the run is built from, so it has to be the version the\nuser actually said yes to.\n\n---\n\n## Phase 3: Synthetic Data & External Sample Files Generation + Google Drive Upload\n\n**Entry condition: the Phase 2 brief was presented in full and the user approved it.** If you\narrive here without that, go back and present it.\n\n1. **Provision the Target Project (if `AUTO_CREATE_PROJECT=true`) and Derive Identifiers**:\n   ```bash\n   # If the approved Phase 2 brief selected automatic project creation, provision the\n   # new dedicated Google Cloud project now (before any BigQuery/Firestore/Drive steps),\n   # wait for IAM propagation, configure gcloud + ADC quota project, and persist\n   # PROJECT_ID and AUTO_CREATED_PROJECT=\"true\" into .env.\n   if [ \"${AUTO_CREATE_PROJECT:-false}\" = \"true\" ] &&\n     [ -f \"$SKILL_DIR/templates/scripts/internal/create_project.sh\" ]; then\n     . \"$SKILL_DIR/templates/scripts/internal/create_project.sh\"\n     ge_internal_create_project \"$DOMAIN_SLUG\" \".env\"\n   fi\n\n   SUFFIX=$(date +%s | tail -c 5)\n   DEMO_ID=\"${DOMAIN_SLUG}-${SUFFIX}\"\n   SERVICE_NAME=\"ge-demo-${DOMAIN_SLUG}-${SUFFIX}\"\n   DATASET_ID=\"demo_${DOMAIN_SLUG}_${SUFFIX}\"\n   FIRESTORE_COLLECTION=\"demo-${DOMAIN_SLUG}-${SUFFIX}-tasks\"\n\n   # Set concrete, domain-specific display name & description (matching Web UI / GAS version)\n   DEMO_DISPLAY_NAME=\"${COMPANY_NAME} ${AGENT_ROLE:-Operations Specialist}\"\n   DEMO_DESCRIPTION=\"Orchestrates ${SCENARIO_SUMMARY:-operations and intelligent data analytics} across ${COMPANY_NAME}.\"\n   ```\n   *Always write `DEMO_DISPLAY_NAME` and `DEMO_DESCRIPTION` into `.env` so `setup_and_deploy.sh` and `register_agent.py` register the agent with concrete domain details.*\n\n2. **Generate Real-World Synthetic Data & Display Previews**:\n   - Generate CSV files with realistic addresses, valid foreign keys across tables, and varied statuses in `data/<table_name>.csv`.\n   - Ensure all string data is generated in the detected target language.\n   - Run validation script: `python3 scripts/validate_csv.py data/*.csv`.\n   - **Render Dataset Preview & Record Counts**: Output a Dataset Summary Table with total generated record counts for each BigQuery table, Firestore collection, and external Drive file, followed by 3–5 representative sample rows per table in clean Markdown preview tables (or `<carousel>` sliders) clearly indicating the total row count in each table title.\n   - Write one line of grain per table into `data/<table_name>_description.txt` (\"one row per\n     POS transaction line\", \"one row per store\"). The deploy folds it, the column\n     descriptions from `data/<table_name>_schema.json`, the row counts and the real date\n     range of every date column into `adk_agent/app/data_assets.md` — the DATA ASSET CATALOG\n     the agent's prompt is written around. Skipping the grain line costs only that line;\n     skipping the column descriptions costs the agent its schema.\n\n2b. **Amplify to Demo Volume (only when `dataScale` was agreed in Phase 2)**:\n- Do **not** try to write thousands of rows yourself. Write the 50-200 hero rows as\n  above — the ones the demo prompts name by id — and let the amplifier expand the\n  tables around them. It resamples each column from what the hero rows already show,\n  draws foreign keys from the parent table's amplified key set, and keeps the hero\n  rows verbatim at the top of every file, so every id a prompt refers to still resolves.\n- Write `data/data_scale_spec.json` with a per-table `target_rows` map. Describe a\n  column only where the hero rows misrepresent it — in practice that means date\n  columns, because hand-written rows cluster into one week while the narrative spans\n  a fiscal year. Everything you leave out is inferred. See the module docstring of\n  `scripts/amplify_data.py` for the format and for the two things the spec will not do.\n  ```bash\n  python3 scripts/amplify_data.py --data-dir ./data --spec ./data/data_scale_spec.json\n  for f in data/*.csv; do case \"$f\" in *.hero.csv) ;; *) python3 scripts/validate_csv.py \"$f\" ;; esac; done\n  ```\n- Alternatively set `DATA_SCALE=<rows>` in `.env` and let the deploy run it: the step\n  is idempotent and deterministic, so doing it in both places is harmless.\n- Report the amplified counts in the Dataset Summary Table, and say which tables were\n  left at hero size — master data that the narrative describes as small must stay small.\n- `python3 scripts/amplify_data.py --data-dir ./data --restore` puts the hero CSVs back.\n\n3. **Generate External Sample Files & Upload Directly to Google Drive**:\n   - Synthesize external demo files in `./external_files/`:\n     1. **PDF Audit Report** (`<domain>_audit_report.pdf`): Multi-section structured document in target language with summary, details, and intentional 5-15% variance from BigQuery to trigger cross-source reasoning.\n     2. **Excel Spreadsheet Ledger** (`<domain>_external_ledger.xlsx`): Semi-structured workbook with localized KPI headers, units, and 40-80 transaction rows with FK references matching BigQuery tables.\n     3. **Simulated Operational Document Images** (`handwritten_order_1.jpg`, `handwritten_order_2.jpg`): Realistic scanned forms generated via `gemini-3.1-flash-image` with localized text.\n   - **Upload to Google Drive**:\n     ```bash\n     uv run --isolated --no-project \\\n       --with \"openpyxl>=3.1.0,<4.0.0\" \\\n       --with \"reportlab>=4.0.0,<6.0.0\" \\\n       --with \"pillow>=10.0.0,<13.0.0\" \\\n       python3 scripts/generate_and_upload_external_files.py \\\n       --domain \"$DOMAIN_SLUG\" \\\n       --company \"$COMPANY_NAME\" \\\n       --suffix \"$SUFFIX\" \\\n       --outdir \"./external_files\" \\\n       --spec-file \"./data/external_files_spec.json\"\n     ```\n     - `--spec-file` carries THIS demo's content (titles, sections, table rows, and the\n       `style` wording for the scanned forms), written in the demo's own language and\n       domain. Without it the script emits generic placeholder documents - it holds no\n       built-in industry content by design.\n     - Creates dedicated Drive folder: `GE Demo - <Company Name> (<Suffix>)`, reusing one\n       of that name if a previous run already made it.\n     - Uploads `.pdf`, `.xlsx`, and `.jpg` files.\n     - Saves links to `external_files/drive_upload_summary.json` and creates `.url.json` artifacts.\n     - **The folder is owned by `${GCP_ACCOUNT}`** — the upload is a Drive v3 REST call\n       carrying this machine's own `gcloud` access token, so the account deploying the\n       demo owns what it creates and nothing has to be shared with it. Report that owner\n       and the folder URL. The script also asks for \"anyone with the link (Reader)\" as a\n       convenience; plenty of organizations refuse it, in which case the summary carries\n       `share_error` and the banner notes `ℹ️ LINK SHARING OFF` — the owner can still open\n       everything, so this is a footnote, not a failure.\n     - When the token has no Drive scope the upload is skipped and the summary carries\n       `upload_skipped_reason`. The documents are not lost — `setup_and_deploy.sh` stages\n       every file to `gs://$GCS_BUCKET_NAME/` in **both** data-exploration modes — but\n       there will be no Drive folder, and nothing downstream creates one: report the\n       skip and its reason on the completion screen, point at the Cloud Storage links,\n       and give the fix, which is one command — `gcloud auth login --enable-gdrive-access --no-launch-browser`\n       and re-run, or upload `./external_files/` by hand. See\n       `references/external_files_and_drive.md` §5.\n\n4. **Provision BigQuery Dataset & Tables (Step 1/6)** (Idempotent + Knowledge Catalog Metadata):\n   ```bash\n   # US, not $REGION: a dataset's location is fixed at creation, the Discovery\n   # Engine BigQuery connector imports from a global datastore, and the public\n   # datasets a demo may join against (bigquery-public-data) live in US.\n   bq show \"${PROJECT_ID}:${DATASET_ID}\" >/dev/null 2>&1 || bq --location=US mk -d \"${PROJECT_ID}:${DATASET_ID}\"\n   for f in data/*.csv; do\n     tbl=$(basename \"$f\" .csv)\n     bq load --source_format=CSV --autodetect --skip_leading_rows=1 --replace \"${DATASET_ID}.${tbl}\" \"$f\"\n     if [ -f \"data/${tbl}_schema.json\" ]; then\n       bq update \"${DATASET_ID}.${tbl}\" \"data/${tbl}_schema.json\" >/dev/null 2>&1 || true\n     fi\n   done\n   ```\n\n5. **Initialize Firestore Collection**:\n   - Write 5-10 initial operational documents - task queues, anomalies, approvals pending -\n     to `data/firestore_seed.json` as a list of `{\"id\": ..., \"data\": {...}}` objects, in the\n     demo's own language and domain, then upload them:\n     ```bash\n     uv run --isolated --no-project --with \"google-cloud-firestore>=2.16.0,<3.0.0\" \\\n       --with \"google-api-core>=2.28.0,<2.35.0\" \\\n       python3 scripts/setup_fs.py \\\n       --collection \"$FIRESTORE_COLLECTION\" \\\n       --docs ./data/firestore_seed.json\n     ```\n   - `scripts/setup_fs.py` holds no seed content itself; see its module docstring for the\n     expected document shape.\n\n---\n\n## Phase 4: ADK Multi-Agent Project Scaffolding & System Instructions\n\nScaffold the project in `./ge-demo-<domain>-<suffix>/`.\n\n**Do not retype these files.** Copy them from this skill's `templates/` directory, which is\nthe single source of truth for every scaffolded file, then edit only the placeholders each\nfile marks. `templates/` mirrors the tree below one-for-one (`templates/agent.py` ->\n`adk_agent/app/agent.py`, `templates/scripts/` -> `scripts/`, and so on):\n\n```\nge-demo-<domain>-<suffix>/\n├── adk_agent/\n│   ├── __init__.py            # empty; makes adk_agent importable as a package\n│   └── app/\n│       ├── __init__.py\n│       ├── agent.py           # Triple-Agent (gemini-3.8-flash) + Code Executor + A2UI System Prompts\n│       ├── tools.py           # MCP Toolsets + gemini-3.1-flash-image generate_image tool\n│       ├── part_converters.py # A2A <-> Gen AI DataPart Converters\n│       ├── fast_api_app.py    # A2A Server + A2UI StreamParser + Token Middleware + /execute_task\n│       ├── data_assets.md     # DATA ASSET CATALOG (written at deploy time; do not hand-edit)\n│       ├── catalogs/          # A2UI v0.9 Gemini Enterprise composite catalog\n│       └── examples/0.9/      # A2UI few-shot example surfaces\n├── viewer_app/                # Real-Time Operations Viewer Flask App\n│   ├── main.py\n│   └── requirements.txt\n├── data/                      # Generated CSV files + Knowledge Catalog schemas\n├── external_files/            # Generated PDF, Excel & Scanned Images\n├── scripts/\n│   ├── managed_agent_instruction.txt # Autonomous sandbox agent's system instruction\n│   ├── validate_csv.py        # CSV formatting & schema auto-repair\n│   ├── amplify_data.py        # Grows hero CSVs to demo volume (deterministic, FK-safe)\n│   ├── build_data_catalog.py  # CSVs -> adk_agent/app/data_assets.md (the agent's schema)\n│   ├── generate_and_upload_external_files.py # External files & Google Drive uploader\n│   ├── setup_fs.py            # Firestore seed documents\n│   ├── setup_datastores.py    # Discovery Engine DataStore creation & import\n│   ├── register_agent.py      # Gemini Enterprise agent registration\n│   ├── create_managed_agent.py / warmup_managed_agent.py # Agent Engine managed agent\n│   ├── dep_smoke_test.py      # Pinned-dependency import smoke test\n│   ├── preflight_check.py     # Pre-deploy static checks\n│   ├── verify_and_heal.py     # Post-deploy verification & auto-repair\n│   └── cleanup.sh             # One-click teardown (Cloud Run, Agent Engine Sandbox, Managed Agent, BQ, FS, GCS)\n├── .env                       # Configuration shared by setup_and_deploy.sh and cleanup.sh\n│                              # (full key reference: references/deployment_and_iam.md §3)\n├── Dockerfile                 # Multi-stage container build\n├── requirements.txt           # Python dependencies\n└── setup_and_deploy.sh        # Standalone reproducible deployment script (strictly ordered)\n```\n\n**Two files carry this demo's domain knowledge and BOTH must be filled in:**\n\n1. `adk_agent/app/agent.py` - the `gen_instruction` block, marked\n   `TEMPLATE PLACEHOLDER`. This is the conversational agent's business context.\n2. `scripts/managed_agent_instruction.txt` - the same context for the autonomous\n   sandbox agent, in its `[BUSINESS_CONTEXT]` slot. Leave the file untouched and\n   `enableManagedAgent` - the one default-on capability - is *silently skipped*\n   at deploy time, taking `delegate_autonomous_task` and demo prompts 5 and 7\n   with it. `[DATASET_ID]` and `[COLLECTION_ID]` are substituted by\n   `setup_and_deploy.sh`; leave those alone. When a Workspace, computer-use or\n   operating-model option is on, the matching block has to be added too - see\n   `references/multi_agent_architecture.md` §4.\n\n### Critical A2UI System Instruction Requirements (v0.9 Composite Catalog)\n1. **Output Placement Rule (Rule #0)**: Any text in the same response turn as a tool call is hidden. Only output `🔍 Analyzing...` during tool execution. Final analytical reports, A2UI cards, and chips MUST appear in a separate turn with ZERO tool calls.\n2. **Mandatory A2UI Cards (v0.9 Standard)**: Plain text markdown tables and bullet lists are forbidden for data presentation. Wrap results in `<a2ui-json> ... </a2ui-json>` using `MaterialCard`, `MaterialTabs`, `MaterialTable`, `VegaChart`, `Materi","agents/README.md":"# Agents\n\nThis directory contains samples and resources for building AI agents with Google Cloud.\n\n## Subdirectories\n\n### adk\n\nThe `adk` directory contains information about the Agent Development Kit (ADK).\n\n### agent_engine\n\nThe `agent_engine` directory contains notebooks that demonstrate how to use Agent Engine on Agent Platform.\n\n**Notebooks:**\n\n- [Get started with Agent Platform Memory Bank](agent_engine/memory_bank/get_started_with_memory_bank.ipynb): Learn how to use Agent Platform Memory Bank to build stateful, context-aware conversational AI agents.\n- [A2A on Agent Engine](agent_engine/tutorial_a2a_on_agent_engine.ipynb): A tutorial on how to run a simple agent on Agent Engine.\n- [Claude with ADK on Agent Engine](agent_engine/tutorial_claude_with_adk_on_agent_engine.ipynb): A tutorial on using the Claude model with ADK on Agent Engine.\n- [Get Started with Code Execution](agent_engine/tutorial_get_started_with_code_execution.ipynb): A tutorial on how to get started with code execution on Agent Engine.\n- [Get Started with Live API on Agent Engine](agent_engine/tutorial_get_started_with_live_api_on_agent_engine.ipynb): A tutorial on how to get started with a live API on Agent Engine.\n- [MCP on Agent Engine](agent_engine/tutorial_mcp_on_agent_engine.ipynb): A tutorial on how to use the Multi-turn Conversation Platform (MCP) on Agent Engine.\n\n### gemini_data_analytics\n\nThe `gemini_data_analytics` directory contains notebooks that demonstrate how to use Gemini for data analytics.\n\n**Notebooks:**\n\n- [Intro to Gemini Data Analytics (HTTP)](gemini_data_analytics/intro_gemini_data_analytics_http.ipynb): An introduction to using Gemini for data analytics with the HTTP API.\n- [Intro to Gemini Data Analytics (SDK)](gemini_data_analytics/intro_gemini_data_analytics_sdk.ipynb): An introduction to using Gemini for data analytics with the Python SDK.\n\n### self-evolving-ai\n\nThe `self-evolving-ai` directory contains **Project Chrysalis**, a reference architecture for governed, self-evolving AI agents built with ADK and Gemini on Google Cloud. A multi-agent SRE system diagnoses a live outage, synthesizes and mounts its own Cloud KMS-signed mitigation tool, attributes credit to each action, distills operational principles into memory, and rewires its own agent topology behind a Human-in-the-Loop gate.\n\n- [Self-Evolving AI (Project Chrysalis)](self-evolving-ai/README.md): Architecting governed, self-evolving AI agents on Gemini Enterprise Agent Platform.\n","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-video/SKILL.md":"---\nname: ge-demo-video\ndescription: \"Records, edits, and delivers automated executive demo videos for agents deployed to Gemini Enterprise. Verifies typography fonts across all languages, connects to live Chrome via CDP (:9222) with automatic display/xvfb adaptation, automatically discovers and applies customer logo & corporate palette (default ON, --no-brand to opt out), enforces strict zero-mock live recording of the deployed agent chat interface, applies modern SaaS video styling in Remotion with dynamic zoom/pan and 4x wait-time acceleration, synthesizes Gemini 3.8 Flash TTS (with Google Cloud TTS Chirp 3: HD fallback) neural narration with synchronized subtitles (pure speech narration, optional ambient BGM), and delivers the rendered MP4 to the demo's Google Drive folder. Also triggered by /ge-demo-video.\"\nmetadata:\n  author: Google Cloud Customer Engineering\n  version: 2.3.1\n---\n\n# GE Demo Video Generator Skill (v2.3.1)\n\nAutomates the end-to-end production and delivery of professional **90–120s executive highlight reel demo videos** showcasing autonomous AI agents deployed on **Gemini Enterprise**.\n\n---\n\n## 🌟 Core Architectural Invariants\n\n1. **Authentic Screen Recording Exclusively (Zero-Mock Invariant)**:\n   - The skill **strictly forbids** synthetic mock video generation, mock SVG frames, and fallback presentation slides.\n   - Video capture is executed directly against the live Gemini Enterprise chat session (`https://vertexaisearch.cloud.google.com/home/cid/.../r/agent/.../session/-`) of the deployed agent via Chromium DevTools Protocol (CDP, port 9222).\n   - The chat interface DOM elements (`div.ProseMirror`, `div[contenteditable=\"true\"]`, or shadow DOM chat inputs) must be probed and verified before recording starts.\n\n2. **Universal Multi-Language Font Verification & Provisioning**:\n   - Before recording or rendering, the skill verifies that the necessary typography fonts for the target locale (e.g., Japanese CJK for `ja-JP`, Simplified/Traditional Chinese for `zh`, Korean Hangul for `ko`, Arabic for `ar`, Thai for `th`, Devanagari for `hi`, etc.) are installed on the host environment.\n   - If missing, the automated font engine (`ensure_fonts.py`) installs them via system packages (`apt-get`) or downloads Google Noto font assets directly into `~/.local/share/fonts/` followed by `fc-cache` refresh, eliminating tofu (`□`) characters.\n   - Remotion composition incorporates Google Web Fonts as a secondary defensive layer.\n\n3. **Mandatory Pre-Recording Demonstration Plan & Interactive Approval Gate**:\n   - Before executing any recording commands (`generate_demo_video.py`), the agent **MUST ALWAYS** formulate and present the proposed demo plan to the user for review.\n   - In interactive agent environments (e.g. when supported by tools like `ask_question`), the agent **MUST ALWAYS** prompt the user to obtain explicit approval or modifications.\n   - No recording or video compilation commands may be executed without explicit user sign-off.\n\n4. **Automated Display & Browser Environment Adaptation**:\n   - Chrome launches with a graphical window (`--no-headless`) by default on port 9222 with persistent profile `~/.config/ge-demo-video/chrome-profile`.\n   - If executed in a remote terminal or SSH session lacking a display (`DISPLAY` unset), the engine automatically wraps browser launch with `xvfb-run` to maintain authentic DOM rendering and screencast streaming.\n\n---\n\n## 🚀 Execution Lifecycle & Step-by-Step Workflow\n\n```\n[Phase 1: Dynamic Demo Plan Formulation]\n  ↓ Read .env, target company, role, language, session URL, and 7 demo prompts\n[Phase 2: Interactive Plan Presentation & User Approval Gate (ask_question)]\n  ↓ Explicit approval received\n[Phase 3: Multi-Language Font Verification & Provisioning (ensure_fonts.py)]\n  ↓ Host fonts verified / auto-installed, Remotion WebFonts loaded\n[Phase 4: Browser Session Verification & Interactive Authentication Handoff]\n  ↓ Live Chrome CDP (port 9222) verified, chat input DOM element ready\n[Phase 5: Automated Execution, TTS Synthesis & Remotion Video Rendering]\n  ↓ Gemini 3.8 Flash TTS (Chirp 3: HD fallback), Bézier typing jitter, 4x fast-forward thinking, dynamic camera\n[Phase 6: Google Drive Delivery & Local Staging]\n```\n\n### Phase 1 & 2: Mandatory Demonstration Plan & Interactive Approval Gate\n\n1. **Pre-Flight Verification & Demonstration Plan Formulation**:\n   Dynamically inspect environment and execute pre-flight destination verification:\n   - **Company Name**: `${COMPANY_NAME}` (e.g. `Acme Corp`)\n   - **Agent Persona**: `${DEMO_DISPLAY_NAME}` or `${AGENT_ROLE}` (e.g. `Supply Chain Director`)\n   - **Target Locale & Voice**: `${LANG}` (e.g. `en-US` with `gemini-3.8-flash-tts` primary and `Chirp3-HD` fallback, or `ja-JP`, `de-DE`, etc.)\n   - **Session URL**: `${GE_SESSION_URL}` or derived from `CONFIG_ID` and `AGENT_ID`\n   - **3-Tier Storage Delivery Hierarchy & Destination Pre-Flight**:\n     - **Tier 1 (Primary)**: Host Operator Drive (via `gdrive` CLI if configured and authorized)\n     - **Tier 2 (Secondary)**: Deploy Tenant Drive (via `gcloud` ADC credentials of the deploying user/service account)\n     - **Tier 3 (Fallback)**: Cloud Storage (`gs://<project-id>-ge-demo-artifacts/` or custom `--gcs-bucket`)\n     - **Confirmed Destination**: Locked in prior to presenting the plan (Tier 1 if ready, else Tier 2, else Tier 3 GCS)\n\n2. **Present Structured Demo Plan Table**:\n   Output a comprehensive markdown table and verified delivery parameters in chat:\n\n   | Scene # | Scenario / Topic | Prompt Text | Visual & Camera Highlights | Voice Narration (3-Part: Purpose, Results & Benefits) |\n   |---|---|---|---|---|\n   | **Intro** | Branded Welcome | *(None)* | Google Cloud 4-color strip, title card with company & persona badge | Executive intro greeting (~10s) |\n   | **Agenda** | Walkthrough Roadmap | *(None)* | Dedicated `AgendaCard` with 5 scenarios & icons, 180px bottom margin | Roadmap overview (~16s) |\n   | **Scene 1** | Welcome & Situational Briefing | `<Prompt 1 from Playbook>` | 1.50x typing zoom, welcome card reveal | Intent, key capabilities, operational value (~24s) |\n   | **Scene 2** | Catalog & Metadata Discovery | `<Prompt 2 from Playbook>` | 1.50x typing zoom, shadow DOM smooth scrolling | Intent, catalog structure, eliminating manual lookup (~27s) |\n   | **Scene 3** | Cross-Source Anomaly WOW | `<Prompt 3 from Playbook>` | 1.50x typing zoom, 4x fast-forward thinking, A2UI table zoom | Intent, anomaly detection findings, preventing losses (~28s) |\n   | **Scene 4** | Workflow Action & Approval | `<Prompt 4 from Playbook>` | 1.50x typing zoom, 1.45x button close-up zoom on click | Intent, one-click execution approval, cycle time reduction (~28s) |\n   | **Scene 5** | Operational Summary & Handover | `<Prompt 7 from Playbook>` | 1.50x typing zoom, rating button delta verification | Intent, structured handover report, operational continuity (~27s) |\n   | **Outro** | Next Steps & CTA | *(None)* | Google Cloud 4-color strip, outro card with Next Steps CTA | Executive closing & call-to-action (~10s) |\n\n   Display verified pre-flight demonstration plan card:\n   ```\n   ================================================================================\n   🎬 PRE-RECORDING DEMONSTRATION PLAN & PRE-FLIGHT VERIFICATION\n   ================================================================================\n   🏢 Company Name           : <Company Name>\n   🤖 Agent Persona          : <Agent Role>\n   🤖 GE Agent Name          : <GE Agent Display Name>\n   🔗 GE Direct Agent Link   : <Direct Chat Session URL>\n   🌐 Target Locale          : <Target Locale (e.g. en-US, ja-JP)>\n   🎙️ Selected Neural Voice  : <Selected Cloud TTS Voice>\n   💬 Subtitle Mode          : Clean Lower-Third (Synchronized)\n   🎼 Ambient BGM & Ducking  : Disabled (Pure Speech Narration)\n\n   📦 Delivery Destinations (3-Tier Storage Hierarchy):\n      • Tier 1 (Primary)     : Host Operator Drive (<account>)\n      • Tier 2 (Secondary)   : Deploy Tenant Drive (<deploy_account>)\n      • Tier 3 (Fallback)    : Cloud Storage (gs://<bucket>/)\n\n   🔒 Confirmed Destination  : <Tier 1 / Tier 2 / Tier 3 Destination>\n   ================================================================================\n   ```\n\n   *If Pre-Flight indicates expired credentials (`reauth_required`), append notice:*\n   ```\n   ⚠️ Note: Credentials expired for <account>. Run to re-authenticate:\n      gcloud auth login <account> --enable-gdrive-access [--no-launch-browser]\n   ```\n\n   *The pipeline prints the exact command for this host. On a host with no local\n   browser it appends `--no-launch-browser`; quote it verbatim rather than\n   reconstructing it, because the plain form opens nothing and looks like a hang.*\n\n3. **Mandatory `ask_question` Approval Gate**:\n   Execute `ask_question` with the following selectable options.\n   *(If `reauth_required` is detected on Tier 1, prioritize the single-click re-authentication action)*:\n   - *(If reauth required)*: `(Recommended) Re-authenticate Google account now (Agent will run the re-authentication command the pre-flight printed)`\n   - `(Recommended) Approve and proceed with video generation as planned`\n   - `Modify demo prompts / Select specific scenarios`\n   - `Change language / voice settings (e.g. ja-JP / en-US)`\n   - `Enable ambient background music (--enable-bgm)`\n   - `Disable voice narration (--no-narration) or subtitles (--no-subtitles)`\n   - `Change Google Drive / GCS delivery target`\n   - `Cancel video generation`\n\n   *If the user selects re-authentication, execute the login command directly via `run_command` and re-verify pre-flight before continuing.*\n   *If the user requests modifications, update the plan and prompt again. Never start recording without explicit user approval.*\n\n---\n\n### Phase 3: Multi-Language Font Verification\n\nBefore launching recording or rendering, run font verification to eliminate tofu (`□`) characters:\n\n```bash\npython3 skills/ge-demo-generator/templates/video/scripts/ensure_fonts.py --lang \"<LANG>\"\n```\n\nThe script automatically detects missing typography (Kanji/Kana, Hanzi, Hangul, Arabic, Thai, Devanagari) and installs the required Noto font family via system packages or downloads them directly to `~/.local/share/fonts/` followed by `fc-cache -fv`.\n\n---\n\n### Phase 4: Browser Session Verification & Authentication Handoff\n\n1. **Port 9222 & Session URL Check**:\n   The engine checks if Chrome CDP port 9222 is active. If not listening, it auto-launches Chrome pointing directly to the agent session URL:\n   - Default: GUI Chrome (`--no-headless`) with persistent profile `~/.config/ge-demo-video/chrome-profile`.\n   - Headless / SSH environments: Auto-detected and launched under `xvfb-run` to provide a full virtual display buffer.\n\n2. **Authentication Step-Up Handoff**:\n   If the browser encounters the Google login screen (`accounts.google.com`):\n   - The skill **strictly halts** (never falls back to mock).\n   - In interactive agent environments, prompt the user (e.g. via `ask_question` or interactive modal):\n     > *\"Chrome window has been launched. Please complete Google Account login (and 2FA) in the opened browser window, then select 'Login Complete'.\"*\n   - Once confirmed, the engine re-probes the session URL and verifies that the chat input area is active.\n\n3. **Chat Interface Readiness Probe**:\n   The engine checks for `div.ProseMirror`, `div[contenteditable=\"true\"]`, or textarea elements (including recursive shadow DOM search). Once verified, live recording proceeds.\n\n---\n\n### Phase 5: Automated Execution & Video Composition\n\nThe pipeline executes through `scripts/generate_demo_video.py`.\n\n> **Working directory**: run this, and every other command in this skill, from\n> the repository root. Every path here is relative to it, and so are the outputs:\n> `./deliverables/` and `./deliverables/delivery_report.json` are written relative\n> to the working directory, not to the script.\n\n```bash\n# Standard Production Run\npython3 scripts/generate_demo_video.py \\\n  --company \"<Company Name>\" \\\n  --role \"<Agent Persona>\" \\\n  --lang \"<Locale (e.g. ja-JP, en-US)>\" \\\n  --session-url \"<Direct Chat Session URL>\"\n\n# Optional Flags:\n# --enable-bgm        : Enables ambient background music with dynamic ducking\n# --no-narration     : Generates video without voice track\n# --no-subtitles     : Generates video without subtitle overlays\n# --drive-account    : Overrides destination Google Drive account\n```\n\nThe process exit code is the delivery verdict: `0` delivered, `3` Drive was\nexpected and Cloud Storage caught the fall, `1` nothing accepted the video. See\nPhase 6.\n\nKey execution features:\n- **Zero Dead Air**: Voice narration begins immediately at scene start, introducing operational intent during prompt typing.\n- **1.50x Prompt Typing Zoom**: Camera zooms into prompt input field `(960, 920)` with natural human typing jitter.\n- **⏩ 4x Fast-Forward Thinking**: Accelerates model thinking and tool execution with speedup badge and explanatory narration.\n- **1.45x Action Button Zoom**: Dynamically identifies action buttons (e.g. \"Execute Reallocation Now\"), zooms in, and executes the click.\n- **Synchronized Response Scrolling**: Traverses shadow DOM `.chat-mode-scroller` to smoothly scroll tall data tables and A2UI cards.\n\n---\n\n### Phase 6: Delivery to Google Drive / GCS & Local Staging\n\n1. **Delivery Account Precedence (Tier 1 / Tier 2 target)**:\n   The video must land in the **same Drive as the rest of the demo** — the PDFs,\n   spreadsheets and scans that `generate_and_upload_external_files.py` already\n   uploaded. The account is resolved in this order:\n   1. Explicit `--drive-account` or `DRIVE_ACCOUNT` (from the environment or `.env`).\n   2. `owner_account` in the demo's `drive_upload_summary.json`, if that account\n      still has credentials on this host. This is the Drive the demo's own files\n      are in.\n   3. The active `gcloud` account — the identity the demo was deployed with.\n   4. An account whose local part matches the host login name.\n   5. Any other credentialed non-service account.\n   6. The active account, or `default`.\n\n   > The host login match used to sit near the top, which sent the video to a\n   > corporate account under forced re-authentication while the demo itself was\n   > in a different tenant's Drive. One demo, two Drives, and a re-authentication\n   > prompt for an account nobody asked for.\n\n2. **3-Tier Fallback Storage Delivery Mechanism**:\n   - **Tier 1: Host Operator Drive**:\n     Uploaded via `gdrive` CLI using operator user credentials if configured. Saves to folder `GE Demo - <Company>` with owner-only private permissions (or `--share-public` if explicitly requested).\n   - **Tier 2: Deploy Account Drive**:\n     If Tier 1 is unavailable or unconfigured, falls back to Google Drive API using the deploy user/service account ADC credentials (`gcloud auth application-default print-access-token` / service account key).\n   - **Tier 3: Google Cloud Storage (GCS) Fallback**:\n     If Drive upload cannot proceed or fails, securely delivers the video to Google Cloud Storage (`gs://<project-id>-ge-demo-artifacts/videos/` or custom `--gcs-bucket`), generating an authenticated or signed URL (`https://storage.cloud.google.com/<bucket>/...`).\n3. **Local Staging Guarantee**:\n   - The final video is **always staged locally** in `./deliverables/[Demo-Video]_<Company>_-<Role>.mp4` regardless of remote upload status.\n4. **Read the delivery verdict — never assume success**:\n   - Delivery writes `./deliverables/delivery_report.json` and exits with a\n     distinct code. The agent **MUST** read one of the two before reporting an\n     outcome:\n\n     | Exit code | `headline` means | Agent action |\n     |---|---|---|\n     | `0` | Delivered to Drive, or Cloud Storage was the intended destination, or the upload was skipped on request | Report the destination URL |\n     | `3` | **Cloud Storage caught the fall — Drive was expected and did not accept the upload** | Fire the recovery gate in step 6 |\n     | `1` | No destination accepted the video | Report the local path and the error |\n\n   - The report carries `delivery_tier`, `target_account`, `target_account_reason`,\n     `drive_url`, `gcs_uri`, `headline` and `action_required`.\n   - Exit code `3` is **not** a success. The video exists, but it is not where the\n     rest of the demo is.\n5. **Present Output**:\n   - Display local deliverable path, remote delivery destination (Tier 1 Drive / Tier 2 Drive / Tier 3 GCS), the account it went to and why, video duration, and resolution (1080p 30fps).\n6. **Automated Post-Generation Interactive Delivery Recovery Gate**:\n   - **Trigger**: delivery exit code `3`, or `delivery_report.json` reporting a\n     non-empty `action_required`, or `tier_1_status: reauth_required`.\n   - **Zero Copy-Paste Mandate**: If the video was successfully generated and staged in `./deliverables/[Demo-Video]_<Company>_-<Role>.mp4` but Google Drive delivery failed or was skipped due to expired OAuth credentials (`reauth_required`), the agent **MUST NEVER** ask the user to manually copy and paste bash upload commands.\n   - **Interactive Recovery via `ask_question`**: The agent **MUST IMMEDIATELY** invoke `ask_question` offering automated re-authentication and recovery upload:\n     - `(Recommended) Authenticate now and upload the generated video to Google Drive`\n     - `Keep local deliverable only (and Cloud Storage if uploaded)`\n   - **Single-Click Automated Execution**: Upon user selection of the recommended option, the agent automatically executes:\n     1. Re-authentication via `run_command`. Use the command printed by the\n        pipeline verbatim — on a host with no local browser (remote shell, Cloud\n        Shell, no `DISPLAY`) it carries `--no-launch-browser`, and without that\n        flag the command waits on a browser that will never open:\n        ```bash\n        gcloud auth login <account> --enable-gdrive-access [--no-launch-browser]\n        ```\n     2. Standalone Drive delivery via `run_command`, from the repository root:\n        ```bash\n        python3 skills/ge-demo-generator/templates/video/scripts/upload_to_drive.py \\\n          --video \"./deliverables/[Demo-Video]_${COMPANY}_-_${ROLE}.mp4\" \\\n          --company \"${COMPANY}\" \\\n          --role \"${ROLE}\" \\\n          --drive-account \"${DRIVE_ACCOUNT}\"\n        ```\n        Omit `--drive-account` to let the precedence in step 1 pick the Drive the\n        demo already lives in.\n     3. Present the confirmed Google Drive file URL and folder URL directly in the chat response.\n\n---\n\n## 🛠️ CLI Options Reference (`generate_demo_video.py`)\n\n| Option | Default | Description |\n|---|---|---|\n| `--session-url`, `--ge-url` | (from .env) | Direct Gemini Enterprise chat session URL (Required) |\n| `--env-file` | `.env` | Path to environment configuration file |\n| `--cdp-url` | `http://localhost:9222` | Chrome remote debugging endpoint |\n| `--company` | (from .env) | Company name override |\n| `--role` | (from .env) | Agent persona / role override |\n| `--agent-name` | (from .env) | Gemini Enterprise agent display name override |\n| `--lang` | (auto-detected) | Voice & subtitle language (`ja-JP`, `en-US`, `de-DE`, etc.) |\n| `--project` | (from .env) | Google Cloud project ID for TTS quota and GCS fallback |\n| `--deploy-account` | (auto-detected) | Target deploy Google Cloud account for Tier 2 Drive |\n| `--gcs-bucket` | (auto-detected) | Target Google Cloud Storage bucket for Tier 3 delivery |\n| `--mock` | `false` | Enable synthetic mock mode for test and offline pipeline execution |\n| `--no-headless` | `true` | Launch Chrome with visible GUI window (Default) |\n| `--headless` | `false` | Launch Chrome in headless mode |\n| `--enable-bgm`, `--bgm` | `false` | Enable ambient background music with dynamic ducking |\n| `--no-brand`, `--disable-brand` | `false` | Disable automatic customer logo and corporate palette discovery (default: branding enabled) |\n| `--brand-domain` | (auto-detected) | Custom domain override for logo and corporate palette discovery |\n| `--no-narration` | `false` | Disable voice narration audio tracks |\n| `--no-subtitles` | `false` | Disable subtitle overlays |\n| `--skip-recording` | `false` | Reuse existing browser recording from working directory |\n| `--skip-tts` | `false` | Reuse existing TTS audio from working directory |\n| `--skip-drive` | `false` | Skip Google Drive upload (save to `./deliverables/` only) |\n| `--drive-account` | (auto-detected) | Target Google Drive account override (Tier 1) |\n| `--drive-folder` | `GE Demo - <Company>` | Google Drive folder name override |\n| `--share-public` | `false` | Enable public reader link sharing |\n| `--output` | `./output/demo_video/rendered_demo_video.mp4` | Final MP4 output path |\n\n### Delivery environment variables\n\n| Variable | Effect |\n|---|---|\n| `DRIVE_ACCOUNT` | Highest-precedence delivery account (same as `--drive-account`) |\n| `GE_DRIVE_SUMMARY` | Explicit path to the demo's `drive_upload_summary.json`, when it is not beside the deliverables |\n| `GE_NONINTERACTIVE` / `CI` | Declines every re-authentication prompt instead of waiting for an answer nobody is there to give |\n| `SKIP_VIDEO_DRIVE_UPLOAD` | Skips Drive delivery for the video only (does not affect the demo's other files) |\n","agents/adk/README.md":"⚠️ The Agent Development Kit (ADK) Sample Agents repository is available at [github.com/google/adk-samples](https://github.com/google/adk-samples).\n\nThe repository contains sample agents for:\n\n- [Python](https://github.com/google/adk-samples/tree/main/python)\n- [Java](https://github.com/google/adk-samples/tree/main/java)\n","search/gemini-enterprise/ge-demo-generator/agent_template/demo_skills/professional-document/SKILL.md":"---\nname: professional-document\ndescription: Produce a formal business document as .docx (python-docx) or PDF (reportlab) - reports, proposals, briefings, one-pagers, meeting summaries. Use whenever the task asks for a written document, report file, proposal, or PDF. Covers structure, typography, build and delivery.\n---\n\n# Professional Document Builder\n\nProduce a business document that reads and looks like it was prepared by a\nprofessional analyst: clear structure, restrained typography, real numbers.\n\n## Language rule\n\nAll user-visible text in the document MUST be written in the same language\nas the task description you received. This skill's instructions are English,\nbut the deliverable follows the task's language.\n\n## Format choice\n\n- `.docx` (python-docx) when the reader may edit: proposals, drafts,\n  working reports. Default choice when the task does not specify.\n- PDF (reportlab, `platypus` flowables) when the task says PDF or the\n  document is final/customer-facing: signed proposals, formal briefings,\n  one-pagers.\n- Do NOT use weasyprint or LibreOffice conversion (system dependencies are\n  not guaranteed). reportlab and python-docx are pure-python and reliable.\n- CJK note (PDF only): reportlab's built-in fonts cannot render Japanese,\n  Chinese or Korean. For CJK text register a CID font first:\n  `from reportlab.pdfbase import pdfmetrics; from reportlab.pdfbase.cidfonts import UnicodeCIDFont; pdfmetrics.registerFont(UnicodeCIDFont('HeiseiKakuGo-W5'))`\n  and set that font on every style. python-docx handles CJK natively.\n\n## Process\n\n1. python-docx, reportlab and matplotlib are usually preinstalled by the\n   environment warm-up - try the import first; pip install only if missing.\n2. Draft the full document content in markdown first (`draft.md`). Get the\n   substance right before any formatting code.\n3. Convert the draft to the target format with a build script.\n4. Verify (below), fix, rebuild.\n5. Deliver (below).\n\n## Structure\n\nStandard business report skeleton - adapt, do not skip levels:\n\n1. Title block: document title, subtitle/purpose, date, author line\n   (the requesting organization, not you). Documents longer than ~6 pages\n   get a cover page plus a table of contents built from the headings.\n2. Executive summary: 3-6 sentences a busy executive could read alone -\n   the key finding, the number that matters, the recommendation.\n3. Body sections (3-6): each opens with a one-sentence takeaway in bold,\n   followed by supporting analysis, tables and figures.\n4. Recommendations / next steps: numbered, concrete, each with an owner\n   or function and a timeframe where possible.\n5. Appendix (optional): methodology, data notes, detailed tables.\n\nOne-pagers compress the same skeleton to: title block, summary paragraph,\n3-4 key points with numbers, recommendation box.\n\n## Typography and layout\n\n- One font family throughout. Body 10.5-11pt, line spacing 1.15-1.3.\n- Heading hierarchy: H1 16-18pt bold, H2 13-14pt bold, H3 11pt bold.\n  Use color `#1A2B4A` for headings, near-black `#222222` for body.\n- Margins: 2.0-2.5 cm all around. Page numbers in the footer from page 2.\n- Numbers that carry the argument go in bold; do not bold whole sentences.\n- Tables: bold header row with a light fill (`#F2F5FA`), thin borders,\n  right-align numeric columns, thousands separators.\n- Charts: matplotlib PNGs at 150+ dpi, sized to the text column width,\n  numbered captions below (Figure 1: ...). Same palette as the tables.\n- Charts with non-Latin labels (Japanese etc.): matplotlib's default font\n  has no CJK glyphs (hollow boxes). Register a font first - for Japanese:\n  pip install japanize-matplotlib, then import japanize_matplotlib once.\n  For other scripts register a Noto Sans font via\n  matplotlib.font_manager.fontManager.addfont(). Verify the rendered PNG\n  has no hollow-box glyphs before embedding it.\n- Never fake letterhead or signatures.\n\n## Content quality bar\n\n- Every claim backed by the provided data or explicitly sourced web\n  research (cite source name + URL inline or in the appendix).\n- Round numbers for readability; keep raw precision in appendix tables.\n- No filler phrases. Cut any sentence that does not inform a decision.\n\n## Verification (mandatory)\n\n- docx: re-open with python-docx; assert heading structure exists and all\n  planned sections are present and non-empty.\n- PDF: re-open with `pypdf` (usually preinstalled by warm-up); assert\n  expected page count (>= 1) and that extracted text contains the section\n  headings AND the CJK strings you wrote (garbled fonts extract as empty\n  or replacement characters - if a heading is missing, fix the font).\nFix and rebuild until clean. At least one full review-and-rebuild pass is\nmandatory: re-read the built document against the task's stated quality\nconditions before delivering.\n\n## Delivery\n\n1. Save with a descriptive filename, e.g. `supplier_risk_briefing.pdf`.\n2. If the task provided an upload URL for deliverables, upload with:\n   `curl -sS -X PUT --upload-file <file> -H \"Content-Type: <mime>\" \"<upload_url>\"`\n   (docx mime: `application/vnd.openxmlformats-officedocument.wordprocessingml.document`,\n   pdf mime: `application/pdf`). Retry once on failure.\n3. In your final report, state the filename, page/section count, and\n   reproduce the executive summary verbatim.\n","agents/invoice-processing/README.md":"# Subagent: readme\n\nPath: `agents/invoice-processing/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/README.md)","agents/personalized-agent-swarms/README.md":"# Subagent: readme\n\nPath: `agents/personalized-agent-swarms/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/personalized-agent-swarms/README.md)","agents/personalized-agent-swarms/evaluation_rubric.md":"# Subagent: evaluation_rubric\n\nPath: `agents/personalized-agent-swarms/evaluation_rubric.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/personalized-agent-swarms/evaluation_rubric.md)","agents/personalized-agent-swarms/evaluation_rubric_augmented.md":"# Subagent: evaluation_rubric_augmented\n\nPath: `agents/personalized-agent-swarms/evaluation_rubric_augmented.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/personalized-agent-swarms/evaluation_rubric_augmented.md)","agents/personalized-agent-swarms/evaluation_scenarios_user_1.json":"# Personalized-agent-swarms Skill\n\nPath: `agents/personalized-agent-swarms/evaluation_scenarios_user_1.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/personalized-agent-swarms/evaluation_scenarios_user_1.json)","agents/personalized-agent-swarms/evaluation_scenarios_user_2.json":"# Personalized-agent-swarms Skill\n\nPath: `agents/personalized-agent-swarms/evaluation_scenarios_user_2.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/personalized-agent-swarms/evaluation_scenarios_user_2.json)","agents/personalized-agent-swarms/evaluation_scenarios_user_3.json":"# Personalized-agent-swarms Skill\n\nPath: `agents/personalized-agent-swarms/evaluation_scenarios_user_3.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/personalized-agent-swarms/evaluation_scenarios_user_3.json)","agents/personalized-agent-swarms/evaluation_scenarios_user_4.json":"# Personalized-agent-swarms Skill\n\nPath: `agents/personalized-agent-swarms/evaluation_scenarios_user_4.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/personalized-agent-swarms/evaluation_scenarios_user_4.json)","agents/personalized-agent-swarms/evaluation_scenarios_user_5.json":"# Personalized-agent-swarms Skill\n\nPath: `agents/personalized-agent-swarms/evaluation_scenarios_user_5.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/personalized-agent-swarms/evaluation_scenarios_user_5.json)","agents/self-evolving-ai/README.md":"# Subagent: readme\n\nPath: `agents/self-evolving-ai/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/self-evolving-ai/README.md)","tools/llmevalkit/CONTRIBUTING.md":"# Llmevalkit Skill\n\nPath: `tools/llmevalkit/CONTRIBUTING.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/tools/llmevalkit/CONTRIBUTING.md)","tools/llmevalkit/README.md":"# llmevalkit Documentation\n\nPath: `tools/llmevalkit/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/tools/llmevalkit/README.md)","agents/adk/agent-quality-flywheel/README.md":"# Subagent: readme\n\nPath: `agents/adk/agent-quality-flywheel/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/agent-quality-flywheel/README.md)","agents/adk/agent-quality-flywheel/agents-cli-manifest.yaml":"# Agent-quality-flywheel Skill\n\nPath: `agents/adk/agent-quality-flywheel/agents-cli-manifest.yaml`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/agent-quality-flywheel/agents-cli-manifest.yaml)","agents/adk/agent-quality-flywheel/fx_footer_config.yaml":"# Agent-quality-flywheel Skill\n\nPath: `agents/adk/agent-quality-flywheel/fx_footer_config.yaml`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/agent-quality-flywheel/fx_footer_config.yaml)","agents/adk/contract-compliance-pipeline/ARCHITECTURE.md":"# Subagent: architecture\n\nPath: `agents/adk/contract-compliance-pipeline/ARCHITECTURE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/contract-compliance-pipeline/ARCHITECTURE.md)","agents/adk/contract-compliance-pipeline/README.md":"# Subagent: readme\n\nPath: `agents/adk/contract-compliance-pipeline/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/contract-compliance-pipeline/README.md)","agents/adk/contract-compliance-pipeline/TUTORIAL.md":"# Subagent: tutorial\n\nPath: `agents/adk/contract-compliance-pipeline/TUTORIAL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/contract-compliance-pipeline/TUTORIAL.md)","agents/adk/new-hire-onboarding/README.md":"# Subagent: readme\n\nPath: `agents/adk/new-hire-onboarding/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/new-hire-onboarding/README.md)","agents/adk/new-hire-onboarding/TUTORIAL.md":"# Subagent: tutorial\n\nPath: `agents/adk/new-hire-onboarding/TUTORIAL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/new-hire-onboarding/TUTORIAL.md)","agents/adk/zero-trust-agents-2/README.md":"# Subagent: readme\n\nPath: `agents/adk/zero-trust-agents-2/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/zero-trust-agents-2/README.md)","agents/adk/zero-trust-agents-2/TUTORIAL.md":"# Subagent: tutorial\n\nPath: `agents/adk/zero-trust-agents-2/TUTORIAL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/zero-trust-agents-2/TUTORIAL.md)","agents/adk/zero-trust-agents/README.md":"# Subagent: readme\n\nPath: `agents/adk/zero-trust-agents/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/zero-trust-agents/README.md)","agents/adk/zero-trust-agents/TUTORIAL.md":"# Subagent: tutorial\n\nPath: `agents/adk/zero-trust-agents/TUTORIAL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/zero-trust-agents/TUTORIAL.md)","agents/invoice-processing/deployment/README.md":"# Subagent: readme\n\nPath: `agents/invoice-processing/deployment/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/deployment/README.md)","agents/personalized-agent-swarms/analyzer/README.md":"# Subagent: readme\n\nPath: `agents/personalized-agent-swarms/analyzer/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/personalized-agent-swarms/analyzer/README.md)","agents/personalized-agent-swarms/harvest/README.md":"# Subagent: readme\n\nPath: `agents/personalized-agent-swarms/harvest/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/personalized-agent-swarms/harvest/README.md)","agents/personalized-agent-swarms/user_assistant_agent/DEPLOYMENT.md":"# Subagent: deployment\n\nPath: `agents/personalized-agent-swarms/user_assistant_agent/DEPLOYMENT.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/personalized-agent-swarms/user_assistant_agent/DEPLOYMENT.md)","agents/personalized-agent-swarms/user_assistant_agent/README.md":"# Subagent: readme\n\nPath: `agents/personalized-agent-swarms/user_assistant_agent/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/personalized-agent-swarms/user_assistant_agent/README.md)","agents/personalized-agent-swarms/user_assistant_agent/test_scenarios.md":"# Subagent: test_scenarios\n\nPath: `agents/personalized-agent-swarms/user_assistant_agent/test_scenarios.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/personalized-agent-swarms/user_assistant_agent/test_scenarios.md)","agents/personalized-agent-swarms/user_profiles/profiles.json":"# User_profiles Skill\n\nPath: `agents/personalized-agent-swarms/user_profiles/profiles.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/personalized-agent-swarms/user_profiles/profiles.json)","gemini/agents/always-on-memory-agent/README.md":"# Subagent: readme\n\nPath: `gemini/agents/always-on-memory-agent/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/gemini/agents/always-on-memory-agent/README.md)","gemini/agents/genai-experience-concierge/.pre-commit-config.yaml":"# Genai-experience-concierge Skill\n\nPath: `gemini/agents/genai-experience-concierge/.pre-commit-config.yaml`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/gemini/agents/genai-experience-concierge/.pre-commit-config.yaml)","gemini/agents/genai-experience-concierge/README.md":"# Subagent: readme\n\nPath: `gemini/agents/genai-experience-concierge/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/gemini/agents/genai-experience-concierge/README.md)","agents/invoice-processing/invoice_processing/data/comparison_results.json":"# Data Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/comparison_results.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/comparison_results.json)","agents/invoice-processing/invoice_processing/data/reconstructed_rules_book.md":"# Subagent: reconstructed_rules_book\n\nPath: `agents/invoice-processing/invoice_processing/data/reconstructed_rules_book.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/reconstructed_rules_book.md)","agents/invoice-processing/invoice_processing/data/rule_base.json":"# Data Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/rule_base.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/rule_base.json)","agents/invoice-processing/invoice_processing/data/rule_discovery_cache.json":"# Data Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/rule_discovery_cache.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/rule_discovery_cache.json)","agents/invoice-processing/invoice_processing/exemplary_data/test_cases_summary.json":"# Exemplary_data Skill\n\nPath: `agents/invoice-processing/invoice_processing/exemplary_data/test_cases_summary.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/exemplary_data/test_cases_summary.json)","agents/invoice-processing/invoice_processing/shared_libraries/invoice_master_data.yaml":"# Shared_libraries Skill\n\nPath: `agents/invoice-processing/invoice_processing/shared_libraries/invoice_master_data.yaml`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/shared_libraries/invoice_master_data.yaml)","gemini/agents/genai-experience-concierge/agent-design-patterns/README.md":"# Subagent: readme\n\nPath: `gemini/agents/genai-experience-concierge/agent-design-patterns/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/gemini/agents/genai-experience-concierge/agent-design-patterns/README.md)","agents/adk/new-hire-onboarding/frontend/live-onboarding/package.json":"# Live-onboarding Skill\n\nPath: `agents/adk/new-hire-onboarding/frontend/live-onboarding/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/new-hire-onboarding/frontend/live-onboarding/package.json)","agents/adk/new-hire-onboarding/frontend/live-onboarding/tsconfig.json":"# Live-onboarding Skill\n\nPath: `agents/adk/new-hire-onboarding/frontend/live-onboarding/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/new-hire-onboarding/frontend/live-onboarding/tsconfig.json)","agents/adk/new-hire-onboarding/tests/eval/eval_config.json":"# Eval Skill\n\nPath: `agents/adk/new-hire-onboarding/tests/eval/eval_config.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/new-hire-onboarding/tests/eval/eval_config.json)","agents/invoice-processing/invoice_processing/exemplary_data/case_001/Postprocessing_Data.json":"# Case_001 Skill\n\nPath: `agents/invoice-processing/invoice_processing/exemplary_data/case_001/Postprocessing_Data.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/exemplary_data/case_001/Postprocessing_Data.json)","agents/invoice-processing/invoice_processing/exemplary_data/case_001/case_metadata.json":"# Case_001 Skill\n\nPath: `agents/invoice-processing/invoice_processing/exemplary_data/case_001/case_metadata.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/exemplary_data/case_001/case_metadata.json)","agents/invoice-processing/invoice_processing/exemplary_data/case_002/Postprocessing_Data.json":"# Case_002 Skill\n\nPath: `agents/invoice-processing/invoice_processing/exemplary_data/case_002/Postprocessing_Data.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/exemplary_data/case_002/Postprocessing_Data.json)","agents/invoice-processing/invoice_processing/exemplary_data/case_002/case_metadata.json":"# Case_002 Skill\n\nPath: `agents/invoice-processing/invoice_processing/exemplary_data/case_002/case_metadata.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/exemplary_data/case_002/case_metadata.json)","agents/invoice-processing/invoice_processing/exemplary_data/case_005/Postprocessing_Data.json":"# Case_005 Skill\n\nPath: `agents/invoice-processing/invoice_processing/exemplary_data/case_005/Postprocessing_Data.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/exemplary_data/case_005/Postprocessing_Data.json)","agents/invoice-processing/invoice_processing/exemplary_data/case_005/case_metadata.json":"# Case_005 Skill\n\nPath: `agents/invoice-processing/invoice_processing/exemplary_data/case_005/case_metadata.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/exemplary_data/case_005/case_metadata.json)","gemini/agents/genai-experience-concierge/langgraph-demo/backend/README.md":"# Subagent: readme\n\nPath: `gemini/agents/genai-experience-concierge/langgraph-demo/backend/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/gemini/agents/genai-experience-concierge/langgraph-demo/backend/README.md)","gemini/agents/genai-experience-concierge/langgraph-demo/frontend/README.md":"# Subagent: readme\n\nPath: `gemini/agents/genai-experience-concierge/langgraph-demo/frontend/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/gemini/agents/genai-experience-concierge/langgraph-demo/frontend/README.md)","gemini/multimodal-live-api/project-livewire/cloud-functions/weather-tools/README.md":"# weather-tools Documentation\n\nPath: `gemini/multimodal-live-api/project-livewire/cloud-functions/weather-tools/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/gemini/multimodal-live-api/project-livewire/cloud-functions/weather-tools/README.md)","agents/adk/agent-quality-flywheel/tests/eval/datasets/fx-dataset.json":"# Datasets Skill\n\nPath: `agents/adk/agent-quality-flywheel/tests/eval/datasets/fx-dataset.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/agent-quality-flywheel/tests/eval/datasets/fx-dataset.json)","agents/adk/contract-compliance-pipeline/go-compliance-agent/internal/policies/default_policy.json":"# Policies Skill\n\nPath: `agents/adk/contract-compliance-pipeline/go-compliance-agent/internal/policies/default_policy.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/contract-compliance-pipeline/go-compliance-agent/internal/policies/default_policy.json)","agents/adk/new-hire-onboarding/tests/eval/evalsets/README.md":"# Subagent: readme\n\nPath: `agents/adk/new-hire-onboarding/tests/eval/evalsets/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/new-hire-onboarding/tests/eval/evalsets/README.md)","agents/adk/new-hire-onboarding/tests/eval/evalsets/basic.evalset.json":"# Evalsets Skill\n\nPath: `agents/adk/new-hire-onboarding/tests/eval/evalsets/basic.evalset.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/new-hire-onboarding/tests/eval/evalsets/basic.evalset.json)","agents/adk/new-hire-onboarding/tests/eval/evalsets/dead_time_delay_eval.json":"# Evalsets Skill\n\nPath: `agents/adk/new-hire-onboarding/tests/eval/evalsets/dead_time_delay_eval.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/new-hire-onboarding/tests/eval/evalsets/dead_time_delay_eval.json)","agents/adk/new-hire-onboarding/tests/eval/evalsets/onboarding_eval.json":"# Evalsets Skill\n\nPath: `agents/adk/new-hire-onboarding/tests/eval/evalsets/onboarding_eval.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/new-hire-onboarding/tests/eval/evalsets/onboarding_eval.json)","agents/invoice-processing/invoice_processing/data/agent_output/case_001/01_classification.json":"# Case_001 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_001/01_classification.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_001/01_classification.json)","agents/invoice-processing/invoice_processing/data/agent_output/case_001/02_extraction.json":"# Case_001 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_001/02_extraction.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_001/02_extraction.json)","agents/invoice-processing/invoice_processing/data/agent_output/case_001/03_phase1_validation.json":"# Case_001 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_001/03_phase1_validation.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_001/03_phase1_validation.json)","agents/invoice-processing/invoice_processing/data/agent_output/case_001/04_phase2_validation.json":"# Case_001 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_001/04_phase2_validation.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_001/04_phase2_validation.json)","agents/invoice-processing/invoice_processing/data/agent_output/case_001/05_phase3_validation.json":"# Case_001 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_001/05_phase3_validation.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_001/05_phase3_validation.json)","agents/invoice-processing/invoice_processing/data/agent_output/case_001/07_transformation.json":"# Case_001 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_001/07_transformation.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_001/07_transformation.json)","agents/invoice-processing/invoice_processing/data/agent_output/case_001/08_decision.json":"# Case_001 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_001/08_decision.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_001/08_decision.json)","agents/invoice-processing/invoice_processing/data/agent_output/case_001/09_audit_log.json":"# Case_001 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_001/09_audit_log.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_001/09_audit_log.json)","agents/invoice-processing/invoice_processing/data/agent_output/case_001/Postprocessing_Data.json":"# Case_001 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_001/Postprocessing_Data.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_001/Postprocessing_Data.json)","agents/invoice-processing/invoice_processing/data/agent_output/case_002/01_classification.json":"# Case_002 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_002/01_classification.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_002/01_classification.json)","agents/invoice-processing/invoice_processing/data/agent_output/case_002/02_extraction.json":"# Case_002 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_002/02_extraction.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_002/02_extraction.json)","agents/invoice-processing/invoice_processing/data/agent_output/case_002/03_phase1_validation.json":"# Case_002 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_002/03_phase1_validation.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_002/03_phase1_validation.json)","agents/invoice-processing/invoice_processing/data/agent_output/case_002/04_phase2_validation.json":"# Case_002 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_002/04_phase2_validation.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_002/04_phase2_validation.json)","agents/invoice-processing/invoice_processing/data/agent_output/case_002/05_phase3_validation.json":"# Case_002 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_002/05_phase3_validation.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_002/05_phase3_validation.json)","agents/invoice-processing/invoice_processing/data/agent_output/case_002/06_phase4_validation.json":"# Case_002 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_002/06_phase4_validation.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_002/06_phase4_validation.json)","agents/invoice-processing/invoice_processing/data/agent_output/case_002/07_transformation.json":"# Case_002 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_002/07_transformation.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_002/07_transformation.json)","agents/invoice-processing/invoice_processing/data/agent_output/case_002/08_decision.json":"# Case_002 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_002/08_decision.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_002/08_decision.json)","agents/invoice-processing/invoice_processing/data/agent_output/case_002/09_audit_log.json":"# Case_002 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_002/09_audit_log.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_002/09_audit_log.json)","agents/invoice-processing/invoice_processing/data/agent_output/case_002/Postprocessing_Data.json":"# Case_002 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_002/Postprocessing_Data.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_002/Postprocessing_Data.json)","agents/invoice-processing/invoice_processing/data/agent_output/case_005/01_classification.json":"# Case_005 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_005/01_classification.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_005/01_classification.json)","agents/invoice-processing/invoice_processing/data/agent_output/case_005/02_extraction.json":"# Case_005 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_005/02_extraction.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_005/02_extraction.json)","agents/invoice-processing/invoice_processing/data/agent_output/case_005/03_phase1_validation.json":"# Case_005 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_005/03_phase1_validation.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_005/03_phase1_validation.json)","agents/invoice-processing/invoice_processing/data/agent_output/case_005/04_phase2_validation.json":"# Case_005 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_005/04_phase2_validation.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_005/04_phase2_validation.json)","agents/invoice-processing/invoice_processing/data/agent_output/case_005/05_phase3_validation.json":"# Case_005 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_005/05_phase3_validation.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_005/05_phase3_validation.json)","agents/invoice-processing/invoice_processing/data/agent_output/case_005/06_phase4_validation.json":"# Case_005 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_005/06_phase4_validation.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_005/06_phase4_validation.json)","agents/invoice-processing/invoice_processing/data/agent_output/case_005/07_transformation.json":"# Case_005 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_005/07_transformation.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_005/07_transformation.json)","agents/invoice-processing/invoice_processing/data/agent_output/case_005/08_decision.json":"# Case_005 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_005/08_decision.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_005/08_decision.json)","agents/invoice-processing/invoice_processing/data/agent_output/case_005/09_audit_log.json":"# Case_005 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_005/09_audit_log.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_005/09_audit_log.json)","agents/invoice-processing/invoice_processing/data/agent_output/case_005/Postprocessing_Data.json":"# Case_005 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_005/Postprocessing_Data.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_005/Postprocessing_Data.json)","gemini/multimodal-live-api/gemini-live-studio/examples/local-code-assistant/plugin/plugin.json":"# plugin Plugin Manifest\n\nPath: `gemini/multimodal-live-api/gemini-live-studio/examples/local-code-assistant/plugin/plugin.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/gemini/multimodal-live-api/gemini-live-studio/examples/local-code-assistant/plugin/plugin.json)","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/references/a2ui_catalog.md":"# References Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/references/a2ui_catalog.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/references/a2ui_catalog.md)","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/references/data_generation.md":"# References Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/references/data_generation.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/references/data_generation.md)","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/references/datastore_connectors.md":"# References Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/references/datastore_connectors.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/references/datastore_connectors.md)","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/references/demo_prompts_guide.md":"# References Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/references/demo_prompts_guide.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/references/demo_prompts_guide.md)","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/references/deployment_and_iam.md":"# References Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/references/deployment_and_iam.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/references/deployment_and_iam.md)","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/references/external_files_and_drive.md":"# References Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/references/external_files_and_drive.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/references/external_files_and_drive.md)","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/references/mcp_catalog.md":"# References Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/references/mcp_catalog.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/references/mcp_catalog.md)","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/references/multi_agent_architecture.md":"# References Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/references/multi_agent_architecture.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/references/multi_agent_architecture.md)","agents/adk/contract-compliance-pipeline/python-extraction-agent/tests/eval/evalsets/a2a_mock_eval.json":"# Evalsets Skill\n\nPath: `agents/adk/contract-compliance-pipeline/python-extraction-agent/tests/eval/evalsets/a2a_mock_eval.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/contract-compliance-pipeline/python-extraction-agent/tests/eval/evalsets/a2a_mock_eval.json)","agents/adk/contract-compliance-pipeline/python-extraction-agent/tests/eval/evalsets/extraction_eval.json":"# Evalsets Skill\n\nPath: `agents/adk/contract-compliance-pipeline/python-extraction-agent/tests/eval/evalsets/extraction_eval.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/contract-compliance-pipeline/python-extraction-agent/tests/eval/evalsets/extraction_eval.json)","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/demo_skills/README.md":"# Demo_skills Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/demo_skills/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/demo_skills/README.md)","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/video/package-lock.json":"# Video Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/video/package-lock.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/video/package-lock.json)","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/video/package.json":"# Video Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/video/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/video/package.json)","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/video/tsconfig.json":"# Video Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/video/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/video/tsconfig.json)","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/README.md":"# 0.9 Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/README.md)","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/action_plan.json":"# 0.9 Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/action_plan.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/action_plan.json)","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/analysis_summary_card.json":"# 0.9 Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/analysis_summary_card.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/analysis_summary_card.json)","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/batch_editor.json":"# 0.9 Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/batch_editor.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/batch_editor.json)","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/before_after_comparison.json":"# 0.9 Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/before_after_comparison.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/before_after_comparison.json)","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/calendar_event_compose.json":"# 0.9 Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/calendar_event_compose.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/calendar_event_compose.json)","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/canvas_report.json":"# 0.9 Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/canvas_report.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/canvas_report.json)","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/chat_compose.json":"# 0.9 Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/chat_compose.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/chat_compose.json)","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/chat_conversation_list.json":"# 0.9 Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/chat_conversation_list.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/chat_conversation_list.json)","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/comparison_matrix.json":"# 0.9 Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/comparison_matrix.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/comparison_matrix.json)","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/complex_confirmation_card.json":"# 0.9 Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/complex_confirmation_card.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/complex_confirmation_card.json)","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/contact_list.json":"# 0.9 Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/contact_list.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/contact_list.json)","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/delete_surface_example.json":"# 0.9 Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/delete_surface_example.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/delete_surface_example.json)","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/detail_modal.json":"# 0.9 Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/detail_modal.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/detail_modal.json)","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/drive_file_compose.json":"# 0.9 Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/drive_file_compose.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/drive_file_compose.json)","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/drive_file_list.json":"# 0.9 Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/drive_file_list.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/drive_file_list.json)","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/email_compose.json":"# 0.9 Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/email_compose.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/email_compose.json)","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/event_list.json":"# 0.9 Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/event_list.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/event_list.json)","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/iframe_dashboard.json":"# 0.9 Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/iframe_dashboard.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/iframe_dashboard.json)","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/image_report.json":"# 0.9 Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/image_report.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/image_report.json)","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/interactive_form.json":"# 0.9 Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/interactive_form.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/interactive_form.json)","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/maps_place_card.json":"# 0.9 Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/maps_place_card.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/maps_place_card.json)","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/profile_analysis_dashboard.json":"# 0.9 Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/profile_analysis_dashboard.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/profile_analysis_dashboard.json)","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/ranking_table.json":"# 0.9 Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/ranking_table.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/ranking_table.json)","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/status_dashboard.json":"# 0.9 Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/status_dashboard.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/status_dashboard.json)","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/suggestion_chips.json":"# 0.9 Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/suggestion_chips.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/suggestion_chips.json)","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/tabbed_comparison.json":"# 0.9 Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/tabbed_comparison.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/tabbed_comparison.json)","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/video/src/manifest.json":"# Src Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/video/src/manifest.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/video/src/manifest.json)"},"files":{"search/gemini-enterprise/ge-demo-generator/agent_template/demo_skills/professional-presentation/SKILL.md":"---\nname: professional-presentation\ndescription: Build a professional, executive-quality presentation deck (.pptx) with python-pptx. Use whenever the task asks for slides, a deck, a board/executive presentation, or a pitch. Covers design system, slide patterns, build process, and delivery.\n---\n\n# Professional Presentation Builder\n\nBuild a polished 16:9 widescreen deck that looks like it came from a top-tier\nconsulting firm, using python-pptx. Follow this process end to end.\n\n## Language rule\n\nAll user-visible text on the slides (titles, body, labels, notes) MUST be\nwritten in the same language as the task description you received. This\nskill's instructions are English, but the deliverable follows the task's\nlanguage.\n\n## Process\n\n1. python-pptx and matplotlib are usually preinstalled by the environment\n   warm-up - try the import first; `pip install python-pptx` only if missing.\n2. Plan the storyline BEFORE writing code. A board-grade deck is:\n   title -> agenda -> EXECUTIVE SUMMARY (the conclusion and top 3 findings\n   stated up front, one slide) -> 3-5 content sections, each opened by a\n   minimal section-divider slide (section number + assertion title on a\n   Primary-dark background) -> recommendations/next steps.\n   One message per slide. Write the full outline to `outline.md` first.\n3. Build the deck with a single Python script (see `scripts/build_deck.py`\n   for a working scaffold you should copy and adapt).\n4. Render, open-check (see Verification), fix, repeat.\n5. Deliver (see Delivery).\n\nAdd speaker notes (`slide.notes_slide.notes_text_frame.text`) to the\nexecutive summary and each section's key slide: 2-3 sentences of what to\nSAY, not a repeat of the slide text.\n\n## Design system\n\nApply these rules in code; never rely on template defaults.\n\n- Slide size: 16:9 (13.333 x 7.5 inches). Set explicitly:\n  `prs.slide_width = Inches(13.333)`, `prs.slide_height = Inches(7.5)`.\n- Color palette (define once as constants):\n  - Primary dark `#1A2B4A` (titles, header bars)\n  - Accent `#2E6FDB` (highlights, chart series, key numbers)\n  - Secondary accent `#E8A33D` (callouts, deltas - use sparingly)\n  - Body text `#333F50`, muted `#8A93A6`, background `#FFFFFF`,\n    light panel `#F2F5FA`\n- Typography: one sans-serif family throughout (Arial is always available).\n  Title 30-34pt bold, section header 24-28pt, body 14-18pt, captions 11-12pt.\n  Never go below 11pt. Max ~5 bullets per slide, max ~12 words per bullet.\n- Layout grid: 0.6in outer margins. Title zone is the top 1.2in. Content\n  sits on an invisible 12-column grid; prefer two-column layouts\n  (text + visual) over full-width walls of text.\n- Every content slide gets a thin accent rule (a 0.03in high rectangle in\n  Primary dark) under the title.\n- Big-number slides: one KPI per panel, number at 40-54pt in Accent,\n  label at 12pt muted, arranged in 2-4 equal panels.\n- Charts: prefer generating chart images with matplotlib (same palette,\n  no gridline clutter, direct labels instead of legends where possible,\n  150+ dpi PNG) and placing them with `add_picture`. Native pptx charts\n  are acceptable for simple bar/line.\n- Charts with non-Latin text (Japanese, Chinese, Korean, ...): matplotlib's\n  default font has NO CJK glyphs - labels render as hollow boxes. BEFORE\n  rendering any chart whose labels are not pure ASCII, register a matching\n  font. For Japanese the fastest reliable path is:\n      pip install japanize-matplotlib\n      import japanize_matplotlib   # once, right after importing matplotlib\n  For other scripts, download a Noto Sans font that covers the language,\n  register it with matplotlib.font_manager.fontManager.addfont(path), and\n  set rcParams[\"font.family\"] to it. AFTER rendering, re-open the PNG and\n  verify no glyph appears as a hollow box before placing it on a slide.\n- Tables: header row filled Primary dark with white bold text, body rows\n  alternating white / light panel, 11-12pt.\n- Footer on every slide except the title: short deck title left, slide\n  number right, 10pt muted.\n\n## Content quality bar\n\n- Slide titles are ASSERTIONS, not topics (\"Revenue grew 18% on repeat\n  customers\", not \"Revenue\"). A reader should get the argument from\n  titles alone.\n- Use real numbers from the provided data. Round for readability\n  (12.4M, 18%, 3.2x). Never invent figures.\n- End with a \"Next steps\" or \"Recommendations\" slide containing concrete,\n  owner-assignable actions.\n\n## Verification (mandatory)\n\nAfter building, re-open the file with python-pptx and assert:\n- expected slide count;\n- no text frame overflows its shape (compare text length vs shape size\n  heuristically) and no shape extends beyond slide bounds;\n- every slide has a non-empty title, and content slides have the footer\n  with the correct slide number;\n- iterate every run in every text frame and confirm no character rendered\n  from a missing font path (for CJK decks: the deck font must cover the\n  script; re-check chart PNGs for hollow-box glyphs).\nFix any issue and rebuild. At least one full review-and-rebuild pass is\nmandatory even when the first build looks fine: re-read the deck against\nthe task's stated quality conditions before delivering.\n\n## Delivery\n\n1. Save as a descriptive filename, e.g. `q3_revenue_review.pptx`.\n2. If the task provided an upload URL for deliverables, upload with:\n   `curl -sS -X PUT --upload-file <file> -H \"Content-Type: application/vnd.openxmlformats-officedocument.presentationml.presentation\" \"<upload_url>\"`\n   Retry once on failure.\n3. In your final report, state the filename, slide count, and a one-line\n   summary of each slide.\n","search/gemini-enterprise/ge-migration-agent/skills/SKILL.md":"---\nname: migration-config-skill\ndescription: Holds canonical source and target environment parameters and verified DataStore mappings.\nmetadata:\n  environments:\n    source:\n      project_number: \"<SOURCE_PROJECT_NUMBER>\"\n      project_id: \"<SOURCE_PROJECT_ID>\"\n      region: global\n      engine_id: \"<SOURCE_ENGINE_ID>\"\n    target:\n      project_number: \"<TARGET_PROJECT_NUMBER>\"\n      project_id: \"<TARGET_PROJECT_ID>\"\n      region: global\n      engine_id: \"<TARGET_ENGINE_ID>\"\n  datastores_mapping:\n    # Format: source-datastore-id-suffix: target-datastore-id-suffix\n    \"<SOURCE_DATASTORE_ID_SUFFIX>\": \"<TARGET_DATASTORE_ID_SUFFIX>\"\n  connectors_mapping:\n    ge-drive-all: Drive\n    GeGmail: geGmail\n    googleSearch: googleSearch\n    urlContext: urlContext\n---\n\n# ADK Administration Setup & Migration Instructions\n\nThis file serves as the single source of truth for Gemini Enterprise migrations. Administrators can fully configure source-to-target resource pairings by updating the YAML metadata frontmatter above.\n\n---\n\n## Administrative Setup Guide\n\n### 1. Environments Configuration\nSet your official canonical source and target project definitions under `environments`:\n- **`project_number`**: The numeric Google Cloud Project Number (e.g., `404109417257`).\n- **`engine_id`**: The fully qualified Discovery Engine app/engine ID.\n\n### 2. DataStore Grounding Mappings (`datastores_mapping`)\nMap underlying knowledge search collections and grounding data stores (assigned under `dataStoreSpecs`) using their exact resource ID suffix:\n```yaml\ndatastores_mapping:\n  # Source ID -> Target ID\n  example-mcp-source_12345_mcp_data: example-mcp-target_67890_mcp_data\n  example-drive-source_12345_google_drive: example-drive-target_67890_google_drive\n```\n*Note: Always use the fully qualified ID suffix (e.g., `_google_drive`, `_mcp_data`) to prevent substring truncation.*\n\n### 3. Visual Connector & Tool Mappings (`connectors_mapping`)\nMap display aliases and frontend extension tool chips (assigned under `selectedTools`) to ensure visual rendering parity in the Agent Designer UI canvas:\n```yaml\nconnectors_mapping:\n  # Source UI Badge -> Canonical Target UI Token\n  \"Example Source Connector\": custom_mcp\n  \"example-drive\": Drive\n```\n\n---\n\n## Operational Execution\n\nOnce configured, run live migrations or offline GCS imports directly:\n\n```bash\n# 1. Execute live cross-environment migration\nuv run ./migrate.py migrate-agent \"Quarterly Business Review Generator\" --force\n\n# 2. Import agent definition from GCS offline backup\nuv run ./migrate.py import-agent-gcs quarterly_business_review_export.json --target-engine <TARGET_ENGINE_ID>\n```\n","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/SKILL.md":"---\nname: ge-demo-generator\ndescription: Synthesizes and deploys complete, domain-specific Gemini Enterprise demo environments directly to Google Cloud. Use when the user asks to create an AI agent demo for any customer domain (e.g. 'example.com', 'example.co.jp', 'example.de', 'example.fr' - any company, any industry, any region) or business goal, generate realistic BigQuery/Firestore sample datasets, create external demo files (PDF, Excel, scanned images), stage them in Cloud Storage and upload them to the deploying account's Google Drive, scaffold ADK multi-agent architectures with MCP tools and A2UI cards, deploy to Cloud Run, publish to Gemini Enterprise, and generate 7 structured demo prompts in any language. Confirms the requirements interactively and presents a demo architecture & data model plan (Mermaid ER diagram, external file lineage, target project) for approval before anything is deployed. Also triggered by /ge-demo-generator.\nmetadata:\n  author: Google Cloud Customer Engineering\n  version: 2.30.1\n---\n\n# GE Demo Generator Skill (v2.30.1)\n\nSynthesizes production-grade, domain-tailored AI agent demo environments using **Gemini 3.8 Flash** for reasoning and **Gemini 3.1 Flash Image** for visual generation, adhering to a strict **6-step infrastructure dependency graph**, rich **A2UI interactive component streaming**, **Google Workspace OAuth authorization**, **external sample files staged in Cloud Storage and, when the credentials carry the Drive scope, in the deploying account's Google Drive**, **7 structured demo prompts**, **automated browser video recording & Remotion highlight reel delivery to Google Drive**, and **global multilingual localization (i18n/l10n)**.\n\n---\n\n## 🌐 Multilingual Support & Localization Architecture (i18n/l10n)\n\nThe skill is implemented entirely in **English** at the system specification and codebase layer, while providing **complete, dynamic multilingual support** for any enterprise domain worldwide:\n\n1. **Automatic Language & Locale Detection**:\n   - **From Domain TLD**:\n     - `.co.jp`, `.jp`, `.ne.jp`, `.or.jp` ➔ Japanese (`日本語`, `locale: \"ja\"`, `currency: \"JPY\"`, `symbol: \"¥\"`)\n     - `.de` ➔ German (`Deutsch`, `locale: \"de\"`, `currency: \"EUR\"`, `symbol: \"€\"`)\n     - `.fr` ➔ French (`Français`, `locale: \"fr\"`, `currency: \"EUR\"`, `symbol: \"€\"`)\n     - `.es` ➔ Spanish (`Español`, `locale: \"es\"`, `currency: \"EUR\"`, `symbol: \"€\"`)\n     - `.it` ➔ Italian (`Italiano`, `locale: \"it\"`, `currency: \"EUR\"`, `symbol: \"€\"`)\n     - `.cn`, `.tw` ➔ Chinese (`中文`, `locale: \"zh\"`, `currency: \"CNY\"/\"TWD\"`)\n     - `.kr` ➔ Korean (`한국어`, `locale: \"ko\"`, `currency: \"KRW\"`, `symbol: \"₩\"`)\n     - `.br` ➔ Portuguese (`Português`, `locale: \"pt\"`, `currency: \"BRL\"`, `symbol: \"R$\"`)\n     - `.co.uk`, `.com.au`, `.com`, `.io`, `.org`, etc. ➔ English (`locale: \"en\"`, `currency: \"USD\"/\"GBP\"`)\n   - **From User Interaction**:\n     - If the user provides a prompt in Japanese, all user-facing demo assets are synthesized in Japanese. If in German, all in German.\n\n2. **Strict Language Consistency Rule (MANDATORY)**:\n   - ALL user-facing text elements MUST strictly match the detected target language:\n     - Company overview & operational challenges.\n     - Table and column business descriptions (harvested into Knowledge Catalog).\n     - CSV string values (product names, category names, person names, address strings, remarks).\n     - External files: PDF title, body sections, audit summary tables; Excel headers, KPI cards, and notes; Scanned image prompts and handwritten ink text values.\n     - System instructions (`businessInstruction`), Welcome Card greeting, and A2UI Button labels.\n     - The 7 Structured Demo Prompts (`demoGuide`).\n   - **Technical Names Isolation**: Table names, column names, and primary/foreign key ID fields (e.g. `order_id`, `supplier_id`) MUST always remain in English `snake_case` for database engine stability and SQL parser reliability.\n   - **Currency symbol**: write the detected symbol to `.env` as `CURRENCY_SYMBOL` (e.g. `CURRENCY_SYMBOL=¥`). The A2UI few-shot examples ship with a literal `[CURRENCY]` placeholder instead of a hardcoded symbol; `setup_and_deploy.sh` substitutes it before the image is built and aborts the deploy if any occurrence survives. Defaults to `$` when unset.\n\n---\n\n## Complete Lifecycle & Infrastructure Dependency Graph\n\n```\nPhase 1: Customer Domain & Business Goal Research (Search Grounding & Language Detection)\n   ↓\nPhase 2: Requirements confirmed interactively ➔ Demo Architecture & Data Model Plan ➔ APPROVAL\n   ↓\nPhase 3: Synthetic Data & External Sample Files Generation (PDF, Excel, Images) + Google Drive Upload (Step 1/6)\n   ↓\nPhase 4: ADK Multi-Agent Project Scaffolding & A2UI System Prompts\n   ↓\nPhase 5: Ordered Cloud Provisioning & Deployment:\n   ├── Step 1: BigQuery (with Knowledge Catalog Metadata) & Firestore Initial Data\n   ├── Step 2: Agent Engine Sandbox (Code Execution Environment) [CRITICAL DEPENDENCY]\n   ├── Step 3: Data Viewer Dashboard Cloud Run Deployment (Gets VIEWER_URL)\n   ├── Step 4: Main Multi-Agent Cloud Run Deployment (Injects SANDBOX_RESOURCE_NAME & VIEWER_URL)\n   └── Step 5: Background Task Pub/Sub Push Subscription (/execute_task & SELF_URL)\n   ↓\nPhase 6: Gemini Enterprise App Discovery, Workspace Authorization & Registration (Step 6/6)\n   ↓\nPhase 7: Comprehensive Results Output:\n   ├── 💬 Direct Gemini Enterprise Console Chat Link\n   ├── 📁 External Sample Files: Cloud Storage links, plus Drive links when the upload ran\n   ├── 📊 Firestore Data Viewer Dashboard Link\n   ├── 🔎 BigQuery Console Link\n   └── 🎯 7 Structured Demo Prompts Playbook (Localized to Target Language)\n   ↓\nPhase 8: Automated Browser Demo Video Production & Drive Delivery (Optional)\n   ├── Step 1: Playwright CDP Screen Recording of GE Web UI (Prompt 1, 3, 4)\n   ├── Step 2: Google Cloud TTS Narration Audio & Subtitle Timecodes\n   ├── Step 3: Remotion Programmatic Video Composition (Dynamic Camera, 4x Fast-Forward, Pure Voice Narration)\n   └── Step 4: Google Drive Upload to Demo Folder & Sharable Link\n```\n\n---\n\n## Phase 1: Customer Domain & Business Goal Research\n\n1. **Extract Domain & Company**:\n   - If a domain is provided (e.g., `example.com`, `example.co.jp`, `example.de`), determine company name, primary industry, and regional language from the domain itself — never from a list baked into this skill.\n   - If a business goal or company name is provided, identify the corresponding corporate entity and language.\n\n2. **Grounded Deep Research (via `search_web`)**:\n   - Search for the company's latest corporate profile, business units, IR reports, and known operational challenges.\n   - Identify:\n     - **3-5 Key Business Challenges** (e.g., \"yield rate drop in semiconductor fabrication\", \"supply chain lead-time anomalies\").\n     - **5-8 Operational Workflows** and evaluate which ones are **automatable** with AI agents.\n     - **Authentic Domain Entities & Nomenclature** (e.g., real facility names like \"Kumamoto Technology Center\", actual product codes, industry status codes).\n\n3. **Interactive Use Case Selection (Customer Domain Selection Flow)**:\n   - Present the research findings to the user in their language:\n     - 🏢 **Company Profile**: Official name, summary, primary industry.\n     - ⚠️ **Key Business Challenges**: 3-5 detected operational pain points.\n     - 🎯 **Candidate Workflows**: 3-5 top automatable workflows with automation feasibility ratings.\n   - **Prompt the user to select or customize the use case**:\n     - Use `ask_question` or present a structured choice so the user can pick the target scenario or write in specific requirements.\n\n---\n\n## Phase 2: Requirements Alignment & Demo Architecture Plan (Approval Gate)\n\nPhase 2 has two steps, in this order and never merged into one:\n\n**Step 2.1 — ask** the handful of questions the design genuinely depends on, interactively.\n**Step 2.2 — show** the finished design brief as the alignment artifact, and ask for a go.\n\nThe order is what makes the brief worth reading. A brief that still contains open questions\nis a questionnaire, and the user has to hold the design in their head while answering it; a\nbrief written *after* the answers is a mirror — the user is checking whether what you\nunderstood matches what they meant, which is a much easier thing to do and the last cheap\nmoment to change the entities, the narrative, the file lineage or the target project.\n\nUntil the user approves the brief, **nothing is created** — no CSVs, no Drive folder, no\nBigQuery dataset, no Cloud Run service. Everything after this point takes 15-30 minutes and\nspends real quota in someone's project.\n\n### Step 2.1 — Confirm the requirements interactively\n\nAsk only what you cannot responsibly decide, and ask it *before* writing the brief. Keep it\nshort — two to four questions, batched into one message (`ask_question` where available), each\nwith a stated default so the user can answer \"all defaults\" in three words:\n\n1. **Anchor persona** — who is the primary user of this agent (job title, and a sentence of\n   context if useful)? That persona becomes the demo's protagonist: the agent is framed as\n   *their* process operator, prompt 1 opens from their daily situation, approval gates are\n   decisions they or their manager own, and every other persona appears only as a hand-off\n   counterpart. If the user declines, rotate personas freely instead.\n2. **Scope of the narrative** — which single process instance the demo follows, if Phase 1\n   left more than one plausible reading of the chosen scenario.\n3. **Advanced settings** — ask about the two or three the demo is a plausible candidate for\n   (Workspace OAuth when the scenario touches Gmail/Drive/Calendar, `rag` when it turns on\n   documents rather than numbers, `dataScale` when the narrative claims enterprise volume),\n   and say the rest keep their defaults. Keep the *question* short — brief section 6 lists\n   every option with its resolved value, so nothing is hidden by asking about a few. Add\n   **a warm Cloud Run instance** (`MIN_INSTANCES=1`) to that question whenever the user has\n   named a date, an audience or a live session: it is the one option that is about the\n   *presentation* rather than the demo, and the only thing that removes the cold start — and\n   the occasional cold-start error — from the first message. Offer it with its price in the\n   same breath (see brief section 6).\n4. **Target environment** — only if what `gcloud` reports (read it now, see below) is not\n   obviously the project the user means.\n\nAnything the user has already stated — in the original request or in Phase 1 — is *decided*.\nRe-asking it reads as not having listened.\n\n**Zero-Touch Environment, Project & IAM Pre-flight Probe**:\n\nRead and verify the target environment before writing the brief, ensuring zero-touch deployment readiness so the brief's section 5 states verified facts rather than unvalidated assumptions:\n\n```bash\n# 1. Target Project Resolution:\n#    - If the user explicitly specified a project ID in their request (TARGET_PROJECT), align gcloud to it.\n#    - If the user did NOT specify a project ID and the internal project provisioner\n#      ($SKILL_DIR/templates/scripts/internal/create_project.sh) is available, default to\n#      proposing automatic creation of a new dedicated project (AUTO_CREATE_PROJECT=true),\n#      while recording any existing gcloud config project (CURRENT_PROJECT) as an alternative.\nTARGET_PROJECT=\"${TARGET_PROJECT:-}\"\nCURRENT_PROJECT=$(gcloud config get-value project 2>/dev/null || echo \"\")\nAUTO_CREATE_PROJECT=\"false\"\nPROPOSED_PROJECT_PATTERN=\"\"\n\nif [ -n \"$TARGET_PROJECT\" ]; then\n  if [ \"$CURRENT_PROJECT\" != \"$TARGET_PROJECT\" ]; then\n    gcloud config set project \"$TARGET_PROJECT\" >/dev/null 2>&1 || true\n  fi\n  PROJECT_ID=\"$TARGET_PROJECT\"\nelif [ -f \"$SKILL_DIR/templates/scripts/internal/create_project.sh\" ] &&\n  PROBE_OUT=$(bash \"$SKILL_DIR/templates/scripts/internal/create_project.sh\" --probe \"${DOMAIN_SLUG:-demo}\" 2>/dev/null) &&\n  echo \"$PROBE_OUT\" | grep -q \"^AUTO_PROJECT_AVAILABLE=true$\"; then\n  AUTO_CREATE_PROJECT=\"true\"\n  PROPOSED_PROJECT_PATTERN=$(echo \"$PROBE_OUT\" | sed -n 's/^PROPOSED_PROJECT_PATTERN=//p')\n  PROJECT_ID=\"${PROPOSED_PROJECT_PATTERN}\"\nelse\n  PROJECT_ID=\"$CURRENT_PROJECT\"\nfi\n\n# 2. Account Verification & Auto-Discovery: probe project access when using an existing project\nGCP_ACCOUNT=$(gcloud config get-value account 2>/dev/null || echo \"Unknown\")\nif [ \"$AUTO_CREATE_PROJECT\" != \"true\" ] && [ -n \"$PROJECT_ID\" ]; then\n  if ! gcloud projects describe \"$PROJECT_ID\" >/dev/null 2>&1; then\n    for acc in $(gcloud auth list --format=\"value(account)\" 2>/dev/null); do\n      if gcloud projects describe \"$PROJECT_ID\" --account=\"$acc\" >/dev/null 2>&1; then\n        gcloud config set account \"$acc\" >/dev/null 2>&1 || true\n        GCP_ACCOUNT=\"$acc\"\n        break\n      fi\n    done\n  fi\n  PROJECT_NUMBER=$(gcloud projects describe \"$PROJECT_ID\" --format=\"value(projectNumber)\" 2>/dev/null || echo \"\")\nelse\n  PROJECT_NUMBER=\"auto-provisioned in Phase 3\"\nfi\nREGION=${CLOUD_RUN_REGION:-\"asia-northeast1\"}\n\n# 3. Google Drive Scope Pre-flight\nDRIVE_OK=$(curl -s -o /dev/null -w '%{http_code}' \\\n  -H \"Authorization: Bearer $(gcloud auth print-access-token 2>/dev/null)\" \\\n  'https://www.googleapis.com/drive/v3/about?fields=user')\n```\n\n`DRIVE_OK` is `200` when the Drive copy will happen, and the owner is `${GCP_ACCOUNT}` — the\nsame account, because the upload uses this token. Anything else (usually `403`, a token\ncarrying no Drive scope, which is what a plain `gcloud auth login` gives you) means **this\ndemo will have no Google Drive copy of the sample documents at all**. That is a fact the\nbrief has to state, not discover at deploy time — see brief sections 3 and 5. It is also one\ncommand to fix, so say it now: `gcloud auth login --enable-gdrive-access --no-launch-browser` (using `--no-launch-browser` since an agentic IDE terminal usually has no local browser), then re-read.\n\nThe demo video follows the same account. `generate_and_upload_external_files.py` records the\nDrive owner in `drive_upload_summary.json`, and the video delivery reads it, so the recording\nlands in the same folder as the documents it is a recording of. See\n`skills/ge-demo-video/SKILL.md`, Phase 6, for the full precedence.\n\n#### Multi-OS Google Cloud Authentication & Setup Protocol\nBefore proceeding with deployment, verify both user CLI authentication (`gcloud auth print-access-token`) and Application Default Credentials (`gcloud auth application-default print-access-token`). If missing or expired:\n- **Interactive TTY Mode (`[ -t 0 ]`)**: The script automatically detects the host OS environment, prints the tailored authentication commands, and pauses (`read -p`), allowing the user to authenticate in a separate terminal or browser window and resume seamlessly by pressing Enter.\n- **Non-Interactive / CI Mode**: Strictly fail-fast (Exit 1) with descriptive error logs and the single command to resume.\n- **Host OS Detection & Authentication Matrix**:\n\n  | Host OS / Environment | Detection Signal | Authentication Commands | Notes |\n  |---|---|---|---|\n  | **Linux / Remote VM (Headless)** | No `$DISPLAY`, SSH, or Cloud Shell | `gcloud auth login --enable-gdrive-access --no-launch-browser`<br>`gcloud auth application-default login --no-launch-browser`<br>`gcloud auth application-default set-quota-project $PROJECT_ID` | Copy verification URL to local browser, sign in, and paste auth code back. |\n  | **macOS (Terminal / iTerm)** | `uname -s == Darwin` | `gcloud auth login --enable-gdrive-access`<br>`gcloud auth application-default login`<br>`gcloud auth application-default set-quota-project $PROJECT_ID` | Browser opens automatically for OAuth consent. |\n  | **Windows (WSL / WSL2)** | `/proc/version` contains `microsoft` or `wsl` | `gcloud auth login --enable-gdrive-access`<br>`gcloud auth application-default login`<br>`gcloud auth application-default set-quota-project $PROJECT_ID` | If browser interop is disabled, append `--no-launch-browser`. |\n  | **Linux Desktop (GUI)** | Linux with active `$DISPLAY` | `gcloud auth login --enable-gdrive-access`<br>`gcloud auth application-default login`<br>`gcloud auth application-default set-quota-project $PROJECT_ID` | Browser opens automatically for OAuth consent. |\n\n- **Quota Project Auto-Configuration**: The deployment script and self-healing engine automatically execute `gcloud auth application-default set-quota-project $PROJECT_ID` to prevent HTTP 403 `PERMISSION_DENIED: The discoveryengine.googleapis.com API requires a quota project`.\n\n#### Deployer IAM Audit & Autonomous Self-Healing Protocol\nTo guarantee a seamless zero-touch deployment, probe whether the deploying account `${GCP_ACCOUNT}` possesses the necessary permissions on `${PROJECT_ID}`:\n\n1. **Owner / IAM Admin Auto-Healing**:\n   - Check if `${GCP_ACCOUNT}` is Project Owner, Editor, or has Project IAM Admin on `${PROJECT_ID}`.\n   - If `${GCP_ACCOUNT}` has IAM administrative privileges but lacks specific service roles (or if granular roles are in use), **automatically grant missing deployment roles** before starting deployment:\n```text\ngcloud projects add-iam-policy-binding \"$PROJECT_ID\" \\\n  --member=\"user:$GCP_ACCOUNT\" \\\n  --role=\"roles/run.admin\" --condition=None\n\ngcloud projects add-iam-policy-binding \"$PROJECT_ID\" \\\n  --member=\"user:$GCP_ACCOUNT\" \\\n  --role=\"roles/discoveryengine.admin\" --condition=None\n\ngcloud projects add-iam-policy-binding \"$PROJECT_ID\" \\\n  --member=\"user:$GCP_ACCOUNT\" \\\n  --role=\"roles/bigquery.admin\" --condition=None\n\ngcloud projects add-iam-policy-binding \"$PROJECT_ID\" \\\n  --member=\"user:$GCP_ACCOUNT\" \\\n  --role=\"roles/iam.serviceAccountUser\" --condition=None\n```\n\n2. **Non-Admin Permission Denial Handling (Zero-Touch Guidance)**:\n   - If `${GCP_ACCOUNT}` lacks `roles/resourcemanager.projectIamAdmin` or `roles/owner` and `gcloud projects describe` or service checks return `PERMISSION_DENIED`:\n   - **DO NOT** stop with a vague error or ask the user to manually run setup scripts in their terminal.\n   - Present the exact, copy-pasteable command for their Google Cloud Project Administrator:\n     ```text\n     gcloud projects add-iam-policy-binding \"$PROJECT_ID\" \\\n       --member=\"user:$GCP_ACCOUNT\" \\\n       --role=\"roles/owner\"\n     ```\n   - Prompt the user interactively (using `ask_question` if available) to notify their administrator or switch accounts (`gcloud config set account <admin-account>`), then cleanly re-test and proceed with automated deployment.\n\n3. **Capsule / Sandbox Policy Detection**:\n   - If `${PROJECT_ID}` starts with `cpl-*` or `mpl-*` (Google Cloud Capsule or restricted sandbox), inspect whether organizational policy constraints (such as `constraints/run.allowedIngress` or Service Directory restrictions) are active. Warn the user before data generation so expectations match sandbox capabilities.\n\n### Step 2.2 — Present the Demo Architecture & Data Model Plan\n\nOne message, six sections, in this order, then the gate. Every answer from Step 2.1 is already\nfolded in — the brief **states** decisions, it does not ask for them, and it contains no\n\"tell me which…\" or \"TBD\" anywhere.\n\nWrite it in **the demo's language** (§ i18n above) — headings, table headers and prose alike.\nOnly the technical identifiers stay English `snake_case`: table names, column names and\n`.env` keys.\n\nOpen with a title line naming the company and the selected scenario, so the brief is\nself-contained when it is pasted into a chat with a colleague:\n\n> ### 🏗️ `<Company>` — Demo Architecture & Data Model Plan\n> Based on the selected scenario **\"`<scenario>`\"**, here is the data layer design, the\n> Mermaid ER diagram and the cross-source reconciliation lineage.\n\n### § Brief section 1 — 🏢 Target Company & Demo Overview\n\n- **Company / group**: official name, and the group entity the demo actually models.\n- **Industry**: the specific one, in the company's own vocabulary.\n- **Demo narrative**: 2-3 sentences following **one** business process instance (one\n  problematic order, one flagged application) end to end, naming the departments it passes\n  through. All 7 demo prompts later trace this same instance; see\n  `references/demo_prompts_guide.md` §1.1-§1.2.\n- **Anchor persona**: the persona confirmed in Step 2.1, stated as a fact (\"the agent is\n  operated by the production control manager of the main works\"). If the user declined to\n  name one, say that personas rotate instead — do not re-ask here.\n\n### § Brief section 2 — 📊 Data Layer Design & Mermaid ER Diagram\n\n- **Render a Mermaid `erDiagram`** in a ```mermaid fenced block: every table, every column\n  with its type, `PK`/`FK` markers, cardinality labels on each relationship, and a short\n  business gloss in quotes after each column (`string order_id PK \"order number (ORD-2026-XXXX)\"`).\n  The gloss is the same sentence that later becomes the column description in the Knowledge\n  Catalog, so writing it here is not duplicated work.\n- Include the Firestore task collection as an entity too — it is part of the model the demo\n  reasons over, even though it is not in BigQuery.\n- **Shared core-system model**: design the tables as a slice of the company's system of\n  record, not one team's dataset — a transactional table two departments both write, a\n  rules/threshold table owned by one department that another's workflow must consult, and\n  an audit seed visible only when the departments' views are joined. Details and the\n  single-department escape hatch: `references/data_generation.md` §1.3.\n\n### § Brief section 3 — 📁 External Sample Files & Cross-Source Lineage\n\nTitle this section after where the files will actually be, not after where people assume they\ngo. Cloud Storage is the only guaranteed destination (below), so a heading that says \"Google\nDrive\" is wrong in every run whose token lacks the Drive scope — and it was, in most of them.\n\nA table with one row per external file — type, filename, and what binds it to BigQuery:\n\n| External file | Filename | Content & data binding |\n|---|---|---|\n| 📄 PDF audit report | `<domain>_audit_report.pdf` | which tables it summarizes, and the deliberate 5-15% variance that makes cross-source reconciliation necessary |\n| 📊 Excel ledger | `<domain>_external_ledger.xlsx` | which FK column it joins on, and the row count |\n| 🖼️ Scanned form 1 | `handwritten_order_1.jpg` | what the form is, in-domain, generated by `gemini-3.1-flash-image` |\n| 🖼️ Scanned form 2 | `handwritten_order_2.jpg` | the second form, and the discrepancy it carries |\n\nState the join key explicitly. A lineage row that says \"related to orders\" is not a design —\nthe whole point of the external files is that a question can only be answered by reading a\ndocument *and* querying a table, and that only works if the keys line up (70%+ FK match,\n5-15% audit variance). See `references/external_files_and_drive.md`.\n\nClose the section with where the files will actually live, in one line, because it is the\npart users assume wrongly. Write the line that matches the `DRIVE_OK` read above:\n\n| `DRIVE_OK` | The line to write |\n| --- | --- |\n| `200` | Staged to `gs://<project>-<domain>-<suffix>-docs/` **and** uploaded at deploy time to the Google Drive of `${GCP_ACCOUNT}`, which owns the folder. |\n| anything else | Staged to `gs://<project>-<domain>-<suffix>-docs/`. **No Google Drive copy** — this machine's `gcloud` credentials carry no Drive scope, so a Drive or Sheets step in the demo script would find nothing. |\n\nThe Cloud Storage staging happens in **both** `mcp` and `rag` mode; the deploy-time upload is\nthe *only* path into any Drive. The deployed agent has no way to put them in anyone's Drive —\nv2.11.0 removed the in-conversation import, deliberately. If the user wants them in Drive and\n`DRIVE_OK` is not `200`, say so here, while it can still be sorted out\n(`gcloud auth login --enable-gdrive-access --no-launch-browser` and re-run, or upload `./external_files/` by hand\nafterwards).\n\n### § Brief section 4 — 🤖 Agent Profile & Runtime\n\n- **Agent Name (`DEMO_DISPLAY_NAME`)**: Concise 2–4 word domain role (e.g. `TWG Tea Retail Operations Director`, `Mercari Trust & Safety Specialist`). Registered in Gemini Enterprise as `${DEMO_DISPLAY_NAME} (${SERVICE_NAME})`, matching the Web UI (GAS) version.\n- **Description (`DEMO_DESCRIPTION`)**: Concrete, professional 1–2 sentence mission summary specifying the business domain, core datasets, and operational goals (e.g. `Orchestrates boutique inventory balancing, central commissary replenishment, and plantation harvest orders across Singapore.`). Matches `oneSentenceSummary` in the Web UI (GAS).\n- **Reasoning / orchestration**: **`gemini-3.8-flash`** for all agent instances (Root Coordinator, Deep Analysis Sub-Agent, Background Worker).\n- **Image generation**: **`gemini-3.1-flash-image`** (with localized prompt reinforcement and GCS artifact persistence).\n- **Code execution**: Agent Engine Sandbox (`us-central1` — fixed, not `$REGION`).\n- **UI**: Gemini Enterprise A2UI v0.9 composite catalog (name the components this demo will actually lean on — `MaterialTable`, `VegaChart`, `MaterialCard`).\n\n### § Brief section 5 — ⚙️ Deployment Target Environment\n\nShow what the commands above returned, verbatim, in a fenced block:\n\n```\n👤 Active User Account : ${GCP_ACCOUNT}\n🏢 Target Project      : ${PROJECT_ID} (${PROJECT_NUMBER})\n🌐 Target Region       : ${REGION}\n🛡️ Deployer IAM Status  : Verified (Owner/Admin) / Auto-healed\n🗂️ Sample File Storage : gs://${PROJECT_ID}-<domain>-<suffix>-docs/\n📁 Google Drive Copy   : <the DRIVE_OK line, below>\n```\n\nWhen `AUTO_CREATE_PROJECT=\"true\"` (because the user did not specify a project in\ntheir prompt and the internal project provisioner is available), render the `🏢\nTarget Project` line as: `Auto-create new project (${PROPOSED_PROJECT_PATTERN})`\n— and if `CURRENT_PROJECT` was non-empty, append `[or reuse existing gcloud\nconfig project: ${CURRENT_PROJECT}]` so the user can choose to reuse\n`CURRENT_PROJECT` in the approval prompt if they prefer. Do not create the\nproject during Phase 2; actual creation runs at the start of Phase 3 after user\napproval.\n\nThis is the section users most often stop on, because the answer is frequently \"wrong\nproject\". Do not paraphrase the values and do not print a project the user named unless\n`gcloud` agrees — the deploy will use what `gcloud` says, not what the brief claims.\n\nBoth storage lines are mandatory, and neither is optional wording: the Cloud Storage bucket is\ncreated in every mode, and the Drive line is the one users read as a promise. Write it from\n`DRIVE_OK`, never from intent:\n\n| `DRIVE_OK` | `📁 Google Drive Copy` |\n| --- | --- |\n| `200` | `Google Drive of ${GCP_ACCOUNT}` |\n| anything else | `none - these credentials have no Drive scope (fix: gcloud auth login --enable-gdrive-access --no-launch-browser)` |\n\nNever print a Drive destination the deploy cannot reach, and never describe the copy as\nsomething the agent will do later — nothing after the deploy writes to a Drive. See\n`references/external_files_and_drive.md` §5.\n\n### § Brief section 6 — 🎛️ Advanced Settings & Integrations\n\n   State the settings **this** demo will deploy with — the answers from Step 2.1, plus the\n   defaults for everything the user did not touch. These names are the `.env` keys,\n   upper-snake-cased: `enableManagedAgent` is `ENABLE_MANAGED_AGENT`. Every one of them is a\n   real switch in the deployed container, so an option discussed here but not written to\n   `.env` is a feature the demo will not have.\n\n   **List all eleven, every time**, in this order, with the value this deploy will use in the\n   second column — `✅ true` / `❌ false` / the literal value / `— (unset)`. An option the\n   brief leaves out is an option the user cannot ask for: they do not know it exists, and by\n   the time the deploy banner mentions it the 15-30 minutes are already spent. The gate is the\n   last cheap moment to turn one on, so the gate has to show the whole board. Keep the third\n   column as written here — it is what makes a `false` decidable rather than merely visible —\n   and reword only where this demo's scenario changes what an option would buy.\n\n   | Option | This demo | Default | What it buys, and what it costs |\n   |---|---|---|---|\n   | 🤖 `enableManagedAgent` | `<value>` | **`true`** | Agent Engine Sandbox code execution, asynchronous background delegation (`delegate_autonomous_task`), scheduled tasks and Drive deliverable exports. The delegation prompts in the demo playbook exercise this, which is why it is the one default-on capability. Adds ~8-10 min of provisioning, overlapped with the rest of the deploy. |\n   | 📡 `enableCloudTelemetry` | `<value>` | **`true`** | OpenTelemetry Cloud Trace instrumentation. Fully tracks per-turn LLM token consumption (`input_tokens`, `output_tokens`), latency breakdown waterfall, and tool execution. PII-safe via `NO_CONTENT` (zero chat prompt text transmitted), 0ms warm-turn overhead (async background batching), and free under monthly Cloud Trace quota. Set to `false` to opt out. |\n   | 🛡️ `enableModelArmor` | `<value>` | `false` | Vertex AI Agent Platform Model Armor integration. Enforces prompt injection & jailbreak defense, automatic sensitive data protection (SDP credentials/PII masking), and RAI safety filters. Auto-provisions and binds `ge-demo-default-armor` in `us-central1` if no custom template is specified. |\n   | 🔎 `dataExplorationMode` | `<value>` | **`mcp`** | How the agent reads the demo's data. **`mcp`** (default) provisions no search index: the data-asset catalog is already in the agent's system instruction, so a figure question is *one* `execute_sql` call — the four-to-five round trips people blame on \"no index\" came from the metadata expedition in front of the query, and the mcp routing block overrides exactly that. **`rag`** additionally builds a Discovery Engine index over the BigQuery dataset and the staged files and makes it the read path: lookups and document questions return in one sub-second `search_datastore` call, while computed figures, joins and every write stay on MCP because the index lags the tables. Pick `rag` when the demo turns on documents rather than on numbers, and note it also attaches data stores to the (often shared) Gemini Enterprise app — see `references/datastore_connectors.md`. |\n   | 📁 `enableDatastoreFs` | `<value>` | `false` | When `dataExplorationMode=rag`, provisions a semi-structured Discovery Engine DataStore (`ds-${SERVICE_NAME}-fs`) from `FIRESTORE_COLLECTION` via `FirestoreSource` (GCS export staging). Enables semantic search over historical incident tickets, resolved remediation logs, and SOP archives. Note: live task mutations, approvals, and Operations Viewer synchronization continue to use Firestore MCP for sub-100ms real-time state tracking. |\n   | 🔑 `enableWorkspaceAuth` | `<value>` | `false` | User-OAuth passthrough — the agent acts as the signed-in user for the Drive handoff and Workspace token plumbing. Commonly wanted, since Workspace is usually available in the target environment, but **not** default-on: some organizations refuse to authorize an OAuth client they have not vetted, and there sign-in fails for every demo user. Confirm the target org permits it before enabling. |\n   | 🔑 `enableWorkspaceMcp` | `<value>` | `false` | **Advanced, rarely used.** Adds the Gmail / Drive / Calendar / Docs / Chat MCP toolsets on top of the auth passthrough. The Workspace MCP servers are Developer Preview and the project must be allowlisted first — enable it without that and every Workspace call 403s. Kept separate from `enableWorkspaceAuth` for exactly this reason. |\n   | 🖥️ `enableComputerUse` | `<value>` | `false` | Headless browser automation (Playwright). Also requires uncommenting the Playwright block in **both** `requirements.txt` and the `Dockerfile`; the deploy pre-flights this and refuses a half-configured build. |\n   | 📦 `customMcpRepos` | `<value>` | empty | Third-party MCP servers. Both GitHub sidecars and remote managed servers (Slack included — it is one entry in this list, not a flag of its own) go here. |\n   | 🌐 `publicDatasetId` | `<value>` | unset | Ground the demo in a real BigQuery public dataset (e.g. NOAA Weather, Google Trends) alongside the synthetic data. |\n   | 📈 `dataScale` | `<value>` | unset (hero rows only) | Row count to grow the fact tables to before loading — thousands to tens of thousands. You still write only the 50-200 hero rows the demo script names; `scripts/amplify_data.py` expands the tables around them deterministically, keeping the hero rows verbatim and foreign keys intact. Ask for it when the narrative claims enterprise volume or the demo opens with an aggregate — a `COUNT(*)` of 63 undercuts both. Costs ~10-30s of setup and a longer Discovery Engine ingest. |\n\nOnly list the options that are on, plus the two or three the demo is a plausible candidate\nfor. A user reading eight defaults they did not ask about is a user who skims the whole brief.\n\n**One more switch, and it is deliberately not in that table** — it is not an `.env` key and it\nchanges nothing inside the container. Cloud Run scales this demo to zero when nobody is talking\nto it, which is why an idle demo costs nothing, and why the first message after an idle gap\nwaits ~20-25s for a cold start and can come back as an error instead: Cloud Run sometimes\nrefuses a request outright while the container is still starting. Deploying with\n`MIN_INSTANCES=1` — the environment variable `setup_and_deploy.sh` reads in Step 4/6, exported\nbefore the deploy runs — keeps one instance always up and removes both.\n\nState it as a line under the table when you offer it, with the price attached rather than in a\nfootnote:\n\n> 🔥 **Warm instance** — `MIN_INSTANCES=1` · default `0` (scale-to-zero). No cold start and no\n> cold-start error on the first message. **Cost:** one 8 GiB / 2 vCPU instance is then billed\n> continuously for as long as the demo exists — not just during the presentation.\n\nThe honest default is `0`: for a demo deployed now and shown next week, sending the first\nmessage twice is far cheaper than a week of idle billing. It is also not a decision that has to\nbe made now — it is read at deploy time, so re-running the deploy with the variable set (or\nunset) flips an existing demo either way.\n\n### § The gate — ask once, then stop\n\nClose the message by triggering an interactive approval and option selection modal using the `ask_question` tool (with plain text fallback only if `ask_question` is not supported in the active environment). This allows the user to review all capabilities and toggle any extra features directly:\n\n- Call `ask_question` with `is_multi_select: true`:\n  - `question`: \"Do you approve this architecture and deployment plan? Select '(Recommended) Proceed with default configuration' to start deployment immediately, or check any additional options you want enabled:\" (in the demo's language)\n  - `options`:\n    1. `\"(Recommended) Proceed with default configuration (Managed Agent: Enabled, Cloud Trace Telemetry: Enabled, other options: default)\"`\n    2. `\"🛡️ Enable Model Armor Guardrails (Auto-provisions and binds ge-demo-default-armor in us-central1 for jailbreak defense and PII masking)\"`\n    3. `\"🔑 Enable Google Workspace OAuth (Drive/Slides/Docs export as signed-in user)\"`\n    4. `\"🔎 Enable RAG Data Exploration Mode (Build Discovery Engine search index for document & table reads)\"`\n    5. `\"📁 Enable Firestore DataStore (Semantic search over historical tickets & SOPs in RAG mode)\"`\n    6. `\"🔥 Enable Warm Instance (Cloud Run min-instances=1 to eliminate cold-start delay)\"`\n    7. `\"🖥️ Enable Computer Use (Gemini 3.8 Flash Chromium browser automation)\"`\n    8. `\"📈 Enable Enterprise Data Scale (Grow fact tables to thousands of rows via amplify_data.py)\"`\n    9. `\"📡 Disable Cloud Trace Telemetry (Opt-out from OpenTelemetry token & latency tracking)\"`\n\n- In non-interactive or headless environments where `ask_question` is unavailable, output the equivalent choices in chat text and pause for user reply.\n- When the user selects options, update `.env` (`ENABLE_MODEL_ARMOR=1`, `ENABLE_WORKSPACE_AUTH=1`, `ENABLE_CLOUD_TELEMETRY=0`, `DATA_EXPLORATION_MODE=rag`, etc.) and deployment flags accordingly before proceeding to Phase 3.\n\nThen **stop and wait**. Do not start Phase 3 in the same turn, and do not treat \"looks good\" on\na *previous* message — the scenario choice in Phase 1 or an answer in Step 2.1 — as approval of\nthis brief.\n\nWhen the user changes something, re-render the affected sections and ask again; an approved\nbrief is the specification the rest of the run is built from, so it has to be the version the\nuser actually said yes to.\n\n---\n\n## Phase 3: Synthetic Data & External Sample Files Generation + Google Drive Upload\n\n**Entry condition: the Phase 2 brief was presented in full and the user approved it.** If you\narrive here without that, go back and present it.\n\n1. **Provision the Target Project (if `AUTO_CREATE_PROJECT=true`) and Derive Identifiers**:\n   ```bash\n   # If the approved Phase 2 brief selected automatic project creation, provision the\n   # new dedicated Google Cloud project now (before any BigQuery/Firestore/Drive steps),\n   # wait for IAM propagation, configure gcloud + ADC quota project, and persist\n   # PROJECT_ID and AUTO_CREATED_PROJECT=\"true\" into .env.\n   if [ \"${AUTO_CREATE_PROJECT:-false}\" = \"true\" ] &&\n     [ -f \"$SKILL_DIR/templates/scripts/internal/create_project.sh\" ]; then\n     . \"$SKILL_DIR/templates/scripts/internal/create_project.sh\"\n     ge_internal_create_project \"$DOMAIN_SLUG\" \".env\"\n   fi\n\n   SUFFIX=$(date +%s | tail -c 5)\n   DEMO_ID=\"${DOMAIN_SLUG}-${SUFFIX}\"\n   SERVICE_NAME=\"ge-demo-${DOMAIN_SLUG}-${SUFFIX}\"\n   DATASET_ID=\"demo_${DOMAIN_SLUG}_${SUFFIX}\"\n   FIRESTORE_COLLECTION=\"demo-${DOMAIN_SLUG}-${SUFFIX}-tasks\"\n\n   # Set concrete, domain-specific display name & description (matching Web UI / GAS version)\n   DEMO_DISPLAY_NAME=\"${COMPANY_NAME} ${AGENT_ROLE:-Operations Specialist}\"\n   DEMO_DESCRIPTION=\"Orchestrates ${SCENARIO_SUMMARY:-operations and intelligent data analytics} across ${COMPANY_NAME}.\"\n   ```\n   *Always write `DEMO_DISPLAY_NAME` and `DEMO_DESCRIPTION` into `.env` so `setup_and_deploy.sh` and `register_agent.py` register the agent with concrete domain details.*\n\n2. **Generate Real-World Synthetic Data & Display Previews**:\n   - Generate CSV files with realistic addresses, valid foreign keys across tables, and varied statuses in `data/<table_name>.csv`.\n   - Ensure all string data is generated in the detected target language.\n   - Run validation script: `python3 scripts/validate_csv.py data/*.csv`.\n   - **Render Dataset Preview & Record Counts**: Output a Dataset Summary Table with total generated record counts for each BigQuery table, Firestore collection, and external Drive file, followed by 3–5 representative sample rows per table in clean Markdown preview tables (or `<carousel>` sliders) clearly indicating the total row count in each table title.\n   - Write one line of grain per table into `data/<table_name>_description.txt` (\"one row per\n     POS transaction line\", \"one row per store\"). The deploy folds it, the column\n     descriptions from `data/<table_name>_schema.json`, the row counts and the real date\n     range of every date column into `adk_agent/app/data_assets.md` — the DATA ASSET CATALOG\n     the agent's prompt is written around. Skipping the grain line costs only that line;\n     skipping the column descriptions costs the agent its schema.\n\n2b. **Amplify to Demo Volume (only when `dataScale` was agreed in Phase 2)**:\n- Do **not** try to write thousands of rows yourself. Write the 50-200 hero rows as\n  above — the ones the demo prompts name by id — and let the amplifier expand the\n  tables around them. It resamples each column from what the hero rows already show,\n  draws foreign keys from the parent table's amplified key set, and keeps the hero\n  rows verbatim at the top of every file, so every id a prompt refers to still resolves.\n- Write `data/data_scale_spec.json` with a per-table `target_rows` map. Describe a\n  column only where the hero rows misrepresent it — in practice that means date\n  columns, because hand-written rows cluster into one week while the narrative spans\n  a fiscal year. Everything you leave out is inferred. See the module docstring of\n  `scripts/amplify_data.py` for the format and for the two things the spec will not do.\n  ```bash\n  python3 scripts/amplify_data.py --data-dir ./data --spec ./data/data_scale_spec.json\n  for f in data/*.csv; do case \"$f\" in *.hero.csv) ;; *) python3 scripts/validate_csv.py \"$f\" ;; esac; done\n  ```\n- Alternatively set `DATA_SCALE=<rows>` in `.env` and let the deploy run it: the step\n  is idempotent and deterministic, so doing it in both places is harmless.\n- Report the amplified counts in the Dataset Summary Table, and say which tables were\n  left at hero size — master data that the narrative describes as small must stay small.\n- `python3 scripts/amplify_data.py --data-dir ./data --restore` puts the hero CSVs back.\n\n3. **Generate External Sample Files & Upload Directly to Google Drive**:\n   - Synthesize external demo files in `./external_files/`:\n     1. **PDF Audit Report** (`<domain>_audit_report.pdf`): Multi-section structured document in target language with summary, details, and intentional 5-15% variance from BigQuery to trigger cross-source reasoning.\n     2. **Excel Spreadsheet Ledger** (`<domain>_external_ledger.xlsx`): Semi-structured workbook with localized KPI headers, units, and 40-80 transaction rows with FK references matching BigQuery tables.\n     3. **Simulated Operational Document Images** (`handwritten_order_1.jpg`, `handwritten_order_2.jpg`): Realistic scanned forms generated via `gemini-3.1-flash-image` with localized text.\n   - **Upload to Google Drive**:\n     ```bash\n     uv run --isolated --no-project \\\n       --with \"openpyxl>=3.1.0,<4.0.0\" \\\n       --with \"reportlab>=4.0.0,<6.0.0\" \\\n       --with \"pillow>=10.0.0,<13.0.0\" \\\n       python3 scripts/generate_and_upload_external_files.py \\\n       --domain \"$DOMAIN_SLUG\" \\\n       --company \"$COMPANY_NAME\" \\\n       --suffix \"$SUFFIX\" \\\n       --outdir \"./external_files\" \\\n       --spec-file \"./data/external_files_spec.json\"\n     ```\n     - `--spec-file` carries THIS demo's content (titles, sections, table rows, and the\n       `style` wording for the scanned forms), written in the demo's own language and\n       domain. Without it the script emits generic placeholder documents - it holds no\n       built-in industry content by design.\n     - Creates dedicated Drive folder: `GE Demo - <Company Name> (<Suffix>)`, reusing one\n       of that name if a previous run already made it.\n     - Uploads `.pdf`, `.xlsx`, and `.jpg` files.\n     - Saves links to `external_files/drive_upload_summary.json` and creates `.url.json` artifacts.\n     - **The folder is owned by `${GCP_ACCOUNT}`** — the upload is a Drive v3 REST call\n       carrying this machine's own `gcloud` access token, so the account deploying the\n       demo owns what it creates and nothing has to be shared with it. Report that owner\n       and the folder URL. The script also asks for \"anyone with the link (Reader)\" as a\n       convenience; plenty of organizations refuse it, in which case the summary carries\n       `share_error` and the banner notes `ℹ️ LINK SHARING OFF` — the owner can still open\n       everything, so this is a footnote, not a failure.\n     - When the token has no Drive scope the upload is skipped and the summary carries\n       `upload_skipped_reason`. The documents are not lost — `setup_and_deploy.sh` stages\n       every file to `gs://$GCS_BUCKET_NAME/` in **both** data-exploration modes — but\n       there will be no Drive folder, and nothing downstream creates one: report the\n       skip and its reason on the completion screen, point at the Cloud Storage links,\n       and give the fix, which is one command — `gcloud auth login --enable-gdrive-access --no-launch-browser`\n       and re-run, or upload `./external_files/` by hand. See\n       `references/external_files_and_drive.md` §5.\n\n4. **Provision BigQuery Dataset & Tables (Step 1/6)** (Idempotent + Knowledge Catalog Metadata):\n   ```bash\n   # US, not $REGION: a dataset's location is fixed at creation, the Discovery\n   # Engine BigQuery connector imports from a global datastore, and the public\n   # datasets a demo may join against (bigquery-public-data) live in US.\n   bq show \"${PROJECT_ID}:${DATASET_ID}\" >/dev/null 2>&1 || bq --location=US mk -d \"${PROJECT_ID}:${DATASET_ID}\"\n   for f in data/*.csv; do\n     tbl=$(basename \"$f\" .csv)\n     bq load --source_format=CSV --autodetect --skip_leading_rows=1 --replace \"${DATASET_ID}.${tbl}\" \"$f\"\n     if [ -f \"data/${tbl}_schema.json\" ]; then\n       bq update \"${DATASET_ID}.${tbl}\" \"data/${tbl}_schema.json\" >/dev/null 2>&1 || true\n     fi\n   done\n   ```\n\n5. **Initialize Firestore Collection**:\n   - Write 5-10 initial operational documents - task queues, anomalies, approvals pending -\n     to `data/firestore_seed.json` as a list of `{\"id\": ..., \"data\": {...}}` objects, in the\n     demo's own language and domain, then upload them:\n     ```bash\n     uv run --isolated --no-project --with \"google-cloud-firestore>=2.16.0,<3.0.0\" \\\n       --with \"google-api-core>=2.28.0,<2.35.0\" \\\n       python3 scripts/setup_fs.py \\\n       --collection \"$FIRESTORE_COLLECTION\" \\\n       --docs ./data/firestore_seed.json\n     ```\n   - `scripts/setup_fs.py` holds no seed content itself; see its module docstring for the\n     expected document shape.\n\n---\n\n## Phase 4: ADK Multi-Agent Project Scaffolding & System Instructions\n\nScaffold the project in `./ge-demo-<domain>-<suffix>/`.\n\n**Do not retype these files.** Copy them from this skill's `templates/` directory, which is\nthe single source of truth for every scaffolded file, then edit only the placeholders each\nfile marks. `templates/` mirrors the tree below one-for-one (`templates/agent.py` ->\n`adk_agent/app/agent.py`, `templates/scripts/` -> `scripts/`, and so on):\n\n```\nge-demo-<domain>-<suffix>/\n├── adk_agent/\n│   ├── __init__.py            # empty; makes adk_agent importable as a package\n│   └── app/\n│       ├── __init__.py\n│       ├── agent.py           # Triple-Agent (gemini-3.8-flash) + Code Executor + A2UI System Prompts\n│       ├── tools.py           # MCP Toolsets + gemini-3.1-flash-image generate_image tool\n│       ├── part_converters.py # A2A <-> Gen AI DataPart Converters\n│       ├── fast_api_app.py    # A2A Server + A2UI StreamParser + Token Middleware + /execute_task\n│       ├── data_assets.md     # DATA ASSET CATALOG (written at deploy time; do not hand-edit)\n│       ├── catalogs/          # A2UI v0.9 Gemini Enterprise composite catalog\n│       └── examples/0.9/      # A2UI few-shot example surfaces\n├── viewer_app/                # Real-Time Operations Viewer Flask App\n│   ├── main.py\n│   └── requirements.txt\n├── data/                      # Generated CSV files + Knowledge Catalog schemas\n├── external_files/            # Generated PDF, Excel & Scanned Images\n├── scripts/\n│   ├── managed_agent_instruction.txt # Autonomous sandbox agent's system instruction\n│   ├── validate_csv.py        # CSV formatting & schema auto-repair\n│   ├── amplify_data.py        # Grows hero CSVs to demo volume (deterministic, FK-safe)\n│   ├── build_data_catalog.py  # CSVs -> adk_agent/app/data_assets.md (the agent's schema)\n│   ├── generate_and_upload_external_files.py # External files & Google Drive uploader\n│   ├── setup_fs.py            # Firestore seed documents\n│   ├── setup_datastores.py    # Discovery Engine DataStore creation & import\n│   ├── register_agent.py      # Gemini Enterprise agent registration\n│   ├── create_managed_agent.py / warmup_managed_agent.py # Agent Engine managed agent\n│   ├── dep_smoke_test.py      # Pinned-dependency import smoke test\n│   ├── preflight_check.py     # Pre-deploy static checks\n│   ├── verify_and_heal.py     # Post-deploy verification & auto-repair\n│   └── cleanup.sh             # One-click teardown (Cloud Run, Agent Engine Sandbox, Managed Agent, BQ, FS, GCS)\n├── .env                       # Configuration shared by setup_and_deploy.sh and cleanup.sh\n│                              # (full key reference: references/deployment_and_iam.md §3)\n├── Dockerfile                 # Multi-stage container build\n├── requirements.txt           # Python dependencies\n└── setup_and_deploy.sh        # Standalone reproducible deployment script (strictly ordered)\n```\n\n**Two files carry this demo's domain knowledge and BOTH must be filled in:**\n\n1. `adk_agent/app/agent.py` - the `gen_instruction` block, marked\n   `TEMPLATE PLACEHOLDER`. This is the conversational agent's business context.\n2. `scripts/managed_agent_instruction.txt` - the same context for the autonomous\n   sandbox agent, in its `[BUSINESS_CONTEXT]` slot. Leave the file untouched and\n   `enableManagedAgent` - the one default-on capability - is *silently skipped*\n   at deploy time, taking `delegate_autonomous_task` and demo prompts 5 and 7\n   with it. `[DATASET_ID]` and `[COLLECTION_ID]` are substituted by\n   `setup_and_deploy.sh`; leave those alone. When a Workspace, computer-use or\n   operating-model option is on, the matching block has to be added too - see\n   `references/multi_agent_architecture.md` §4.\n\n### Critical A2UI System Instruction Requirements (v0.9 Composite Catalog)\n1. **Output Placement Rule (Rule #0)**: Any text in the same response turn as a tool call is hidden. Only output `🔍 Analyzing...` during tool execution. Final analytical reports, A2UI cards, and chips MUST appear in a separate turn with ZERO tool calls.\n2. **Mandatory A2UI Cards (v0.9 Standard)**: Plain text markdown tables and bullet lists are forbidden for data presentation. Wrap results in `<a2ui-json> ... </a2ui-json>` using `MaterialCard`, `MaterialTabs`, `MaterialTable`, `VegaChart`, `Materi","agents/README.md":"# Agents\n\nThis directory contains samples and resources for building AI agents with Google Cloud.\n\n## Subdirectories\n\n### adk\n\nThe `adk` directory contains information about the Agent Development Kit (ADK).\n\n### agent_engine\n\nThe `agent_engine` directory contains notebooks that demonstrate how to use Agent Engine on Agent Platform.\n\n**Notebooks:**\n\n- [Get started with Agent Platform Memory Bank](agent_engine/memory_bank/get_started_with_memory_bank.ipynb): Learn how to use Agent Platform Memory Bank to build stateful, context-aware conversational AI agents.\n- [A2A on Agent Engine](agent_engine/tutorial_a2a_on_agent_engine.ipynb): A tutorial on how to run a simple agent on Agent Engine.\n- [Claude with ADK on Agent Engine](agent_engine/tutorial_claude_with_adk_on_agent_engine.ipynb): A tutorial on using the Claude model with ADK on Agent Engine.\n- [Get Started with Code Execution](agent_engine/tutorial_get_started_with_code_execution.ipynb): A tutorial on how to get started with code execution on Agent Engine.\n- [Get Started with Live API on Agent Engine](agent_engine/tutorial_get_started_with_live_api_on_agent_engine.ipynb): A tutorial on how to get started with a live API on Agent Engine.\n- [MCP on Agent Engine](agent_engine/tutorial_mcp_on_agent_engine.ipynb): A tutorial on how to use the Multi-turn Conversation Platform (MCP) on Agent Engine.\n\n### gemini_data_analytics\n\nThe `gemini_data_analytics` directory contains notebooks that demonstrate how to use Gemini for data analytics.\n\n**Notebooks:**\n\n- [Intro to Gemini Data Analytics (HTTP)](gemini_data_analytics/intro_gemini_data_analytics_http.ipynb): An introduction to using Gemini for data analytics with the HTTP API.\n- [Intro to Gemini Data Analytics (SDK)](gemini_data_analytics/intro_gemini_data_analytics_sdk.ipynb): An introduction to using Gemini for data analytics with the Python SDK.\n\n### self-evolving-ai\n\nThe `self-evolving-ai` directory contains **Project Chrysalis**, a reference architecture for governed, self-evolving AI agents built with ADK and Gemini on Google Cloud. A multi-agent SRE system diagnoses a live outage, synthesizes and mounts its own Cloud KMS-signed mitigation tool, attributes credit to each action, distills operational principles into memory, and rewires its own agent topology behind a Human-in-the-Loop gate.\n\n- [Self-Evolving AI (Project Chrysalis)](self-evolving-ai/README.md): Architecting governed, self-evolving AI agents on Gemini Enterprise Agent Platform.\n","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-video/SKILL.md":"---\nname: ge-demo-video\ndescription: \"Records, edits, and delivers automated executive demo videos for agents deployed to Gemini Enterprise. Verifies typography fonts across all languages, connects to live Chrome via CDP (:9222) with automatic display/xvfb adaptation, automatically discovers and applies customer logo & corporate palette (default ON, --no-brand to opt out), enforces strict zero-mock live recording of the deployed agent chat interface, applies modern SaaS video styling in Remotion with dynamic zoom/pan and 4x wait-time acceleration, synthesizes Gemini 3.8 Flash TTS (with Google Cloud TTS Chirp 3: HD fallback) neural narration with synchronized subtitles (pure speech narration, optional ambient BGM), and delivers the rendered MP4 to the demo's Google Drive folder. Also triggered by /ge-demo-video.\"\nmetadata:\n  author: Google Cloud Customer Engineering\n  version: 2.3.1\n---\n\n# GE Demo Video Generator Skill (v2.3.1)\n\nAutomates the end-to-end production and delivery of professional **90–120s executive highlight reel demo videos** showcasing autonomous AI agents deployed on **Gemini Enterprise**.\n\n---\n\n## 🌟 Core Architectural Invariants\n\n1. **Authentic Screen Recording Exclusively (Zero-Mock Invariant)**:\n   - The skill **strictly forbids** synthetic mock video generation, mock SVG frames, and fallback presentation slides.\n   - Video capture is executed directly against the live Gemini Enterprise chat session (`https://vertexaisearch.cloud.google.com/home/cid/.../r/agent/.../session/-`) of the deployed agent via Chromium DevTools Protocol (CDP, port 9222).\n   - The chat interface DOM elements (`div.ProseMirror`, `div[contenteditable=\"true\"]`, or shadow DOM chat inputs) must be probed and verified before recording starts.\n\n2. **Universal Multi-Language Font Verification & Provisioning**:\n   - Before recording or rendering, the skill verifies that the necessary typography fonts for the target locale (e.g., Japanese CJK for `ja-JP`, Simplified/Traditional Chinese for `zh`, Korean Hangul for `ko`, Arabic for `ar`, Thai for `th`, Devanagari for `hi`, etc.) are installed on the host environment.\n   - If missing, the automated font engine (`ensure_fonts.py`) installs them via system packages (`apt-get`) or downloads Google Noto font assets directly into `~/.local/share/fonts/` followed by `fc-cache` refresh, eliminating tofu (`□`) characters.\n   - Remotion composition incorporates Google Web Fonts as a secondary defensive layer.\n\n3. **Mandatory Pre-Recording Demonstration Plan & Interactive Approval Gate**:\n   - Before executing any recording commands (`generate_demo_video.py`), the agent **MUST ALWAYS** formulate and present the proposed demo plan to the user for review.\n   - In interactive agent environments (e.g. when supported by tools like `ask_question`), the agent **MUST ALWAYS** prompt the user to obtain explicit approval or modifications.\n   - No recording or video compilation commands may be executed without explicit user sign-off.\n\n4. **Automated Display & Browser Environment Adaptation**:\n   - Chrome launches with a graphical window (`--no-headless`) by default on port 9222 with persistent profile `~/.config/ge-demo-video/chrome-profile`.\n   - If executed in a remote terminal or SSH session lacking a display (`DISPLAY` unset), the engine automatically wraps browser launch with `xvfb-run` to maintain authentic DOM rendering and screencast streaming.\n\n---\n\n## 🚀 Execution Lifecycle & Step-by-Step Workflow\n\n```\n[Phase 1: Dynamic Demo Plan Formulation]\n  ↓ Read .env, target company, role, language, session URL, and 7 demo prompts\n[Phase 2: Interactive Plan Presentation & User Approval Gate (ask_question)]\n  ↓ Explicit approval received\n[Phase 3: Multi-Language Font Verification & Provisioning (ensure_fonts.py)]\n  ↓ Host fonts verified / auto-installed, Remotion WebFonts loaded\n[Phase 4: Browser Session Verification & Interactive Authentication Handoff]\n  ↓ Live Chrome CDP (port 9222) verified, chat input DOM element ready\n[Phase 5: Automated Execution, TTS Synthesis & Remotion Video Rendering]\n  ↓ Gemini 3.8 Flash TTS (Chirp 3: HD fallback), Bézier typing jitter, 4x fast-forward thinking, dynamic camera\n[Phase 6: Google Drive Delivery & Local Staging]\n```\n\n### Phase 1 & 2: Mandatory Demonstration Plan & Interactive Approval Gate\n\n1. **Pre-Flight Verification & Demonstration Plan Formulation**:\n   Dynamically inspect environment and execute pre-flight destination verification:\n   - **Company Name**: `${COMPANY_NAME}` (e.g. `Acme Corp`)\n   - **Agent Persona**: `${DEMO_DISPLAY_NAME}` or `${AGENT_ROLE}` (e.g. `Supply Chain Director`)\n   - **Target Locale & Voice**: `${LANG}` (e.g. `en-US` with `gemini-3.8-flash-tts` primary and `Chirp3-HD` fallback, or `ja-JP`, `de-DE`, etc.)\n   - **Session URL**: `${GE_SESSION_URL}` or derived from `CONFIG_ID` and `AGENT_ID`\n   - **3-Tier Storage Delivery Hierarchy & Destination Pre-Flight**:\n     - **Tier 1 (Primary)**: Host Operator Drive (via `gdrive` CLI if configured and authorized)\n     - **Tier 2 (Secondary)**: Deploy Tenant Drive (via `gcloud` ADC credentials of the deploying user/service account)\n     - **Tier 3 (Fallback)**: Cloud Storage (`gs://<project-id>-ge-demo-artifacts/` or custom `--gcs-bucket`)\n     - **Confirmed Destination**: Locked in prior to presenting the plan (Tier 1 if ready, else Tier 2, else Tier 3 GCS)\n\n2. **Present Structured Demo Plan Table**:\n   Output a comprehensive markdown table and verified delivery parameters in chat:\n\n   | Scene # | Scenario / Topic | Prompt Text | Visual & Camera Highlights | Voice Narration (3-Part: Purpose, Results & Benefits) |\n   |---|---|---|---|---|\n   | **Intro** | Branded Welcome | *(None)* | Google Cloud 4-color strip, title card with company & persona badge | Executive intro greeting (~10s) |\n   | **Agenda** | Walkthrough Roadmap | *(None)* | Dedicated `AgendaCard` with 5 scenarios & icons, 180px bottom margin | Roadmap overview (~16s) |\n   | **Scene 1** | Welcome & Situational Briefing | `<Prompt 1 from Playbook>` | 1.50x typing zoom, welcome card reveal | Intent, key capabilities, operational value (~24s) |\n   | **Scene 2** | Catalog & Metadata Discovery | `<Prompt 2 from Playbook>` | 1.50x typing zoom, shadow DOM smooth scrolling | Intent, catalog structure, eliminating manual lookup (~27s) |\n   | **Scene 3** | Cross-Source Anomaly WOW | `<Prompt 3 from Playbook>` | 1.50x typing zoom, 4x fast-forward thinking, A2UI table zoom | Intent, anomaly detection findings, preventing losses (~28s) |\n   | **Scene 4** | Workflow Action & Approval | `<Prompt 4 from Playbook>` | 1.50x typing zoom, 1.45x button close-up zoom on click | Intent, one-click execution approval, cycle time reduction (~28s) |\n   | **Scene 5** | Operational Summary & Handover | `<Prompt 7 from Playbook>` | 1.50x typing zoom, rating button delta verification | Intent, structured handover report, operational continuity (~27s) |\n   | **Outro** | Next Steps & CTA | *(None)* | Google Cloud 4-color strip, outro card with Next Steps CTA | Executive closing & call-to-action (~10s) |\n\n   Display verified pre-flight demonstration plan card:\n   ```\n   ================================================================================\n   🎬 PRE-RECORDING DEMONSTRATION PLAN & PRE-FLIGHT VERIFICATION\n   ================================================================================\n   🏢 Company Name           : <Company Name>\n   🤖 Agent Persona          : <Agent Role>\n   🤖 GE Agent Name          : <GE Agent Display Name>\n   🔗 GE Direct Agent Link   : <Direct Chat Session URL>\n   🌐 Target Locale          : <Target Locale (e.g. en-US, ja-JP)>\n   🎙️ Selected Neural Voice  : <Selected Cloud TTS Voice>\n   💬 Subtitle Mode          : Clean Lower-Third (Synchronized)\n   🎼 Ambient BGM & Ducking  : Disabled (Pure Speech Narration)\n\n   📦 Delivery Destinations (3-Tier Storage Hierarchy):\n      • Tier 1 (Primary)     : Host Operator Drive (<account>)\n      • Tier 2 (Secondary)   : Deploy Tenant Drive (<deploy_account>)\n      • Tier 3 (Fallback)    : Cloud Storage (gs://<bucket>/)\n\n   🔒 Confirmed Destination  : <Tier 1 / Tier 2 / Tier 3 Destination>\n   ================================================================================\n   ```\n\n   *If Pre-Flight indicates expired credentials (`reauth_required`), append notice:*\n   ```\n   ⚠️ Note: Credentials expired for <account>. Run to re-authenticate:\n      gcloud auth login <account> --enable-gdrive-access [--no-launch-browser]\n   ```\n\n   *The pipeline prints the exact command for this host. On a host with no local\n   browser it appends `--no-launch-browser`; quote it verbatim rather than\n   reconstructing it, because the plain form opens nothing and looks like a hang.*\n\n3. **Mandatory `ask_question` Approval Gate**:\n   Execute `ask_question` with the following selectable options.\n   *(If `reauth_required` is detected on Tier 1, prioritize the single-click re-authentication action)*:\n   - *(If reauth required)*: `(Recommended) Re-authenticate Google account now (Agent will run the re-authentication command the pre-flight printed)`\n   - `(Recommended) Approve and proceed with video generation as planned`\n   - `Modify demo prompts / Select specific scenarios`\n   - `Change language / voice settings (e.g. ja-JP / en-US)`\n   - `Enable ambient background music (--enable-bgm)`\n   - `Disable voice narration (--no-narration) or subtitles (--no-subtitles)`\n   - `Change Google Drive / GCS delivery target`\n   - `Cancel video generation`\n\n   *If the user selects re-authentication, execute the login command directly via `run_command` and re-verify pre-flight before continuing.*\n   *If the user requests modifications, update the plan and prompt again. Never start recording without explicit user approval.*\n\n---\n\n### Phase 3: Multi-Language Font Verification\n\nBefore launching recording or rendering, run font verification to eliminate tofu (`□`) characters:\n\n```bash\npython3 skills/ge-demo-generator/templates/video/scripts/ensure_fonts.py --lang \"<LANG>\"\n```\n\nThe script automatically detects missing typography (Kanji/Kana, Hanzi, Hangul, Arabic, Thai, Devanagari) and installs the required Noto font family via system packages or downloads them directly to `~/.local/share/fonts/` followed by `fc-cache -fv`.\n\n---\n\n### Phase 4: Browser Session Verification & Authentication Handoff\n\n1. **Port 9222 & Session URL Check**:\n   The engine checks if Chrome CDP port 9222 is active. If not listening, it auto-launches Chrome pointing directly to the agent session URL:\n   - Default: GUI Chrome (`--no-headless`) with persistent profile `~/.config/ge-demo-video/chrome-profile`.\n   - Headless / SSH environments: Auto-detected and launched under `xvfb-run` to provide a full virtual display buffer.\n\n2. **Authentication Step-Up Handoff**:\n   If the browser encounters the Google login screen (`accounts.google.com`):\n   - The skill **strictly halts** (never falls back to mock).\n   - In interactive agent environments, prompt the user (e.g. via `ask_question` or interactive modal):\n     > *\"Chrome window has been launched. Please complete Google Account login (and 2FA) in the opened browser window, then select 'Login Complete'.\"*\n   - Once confirmed, the engine re-probes the session URL and verifies that the chat input area is active.\n\n3. **Chat Interface Readiness Probe**:\n   The engine checks for `div.ProseMirror`, `div[contenteditable=\"true\"]`, or textarea elements (including recursive shadow DOM search). Once verified, live recording proceeds.\n\n---\n\n### Phase 5: Automated Execution & Video Composition\n\nThe pipeline executes through `scripts/generate_demo_video.py`.\n\n> **Working directory**: run this, and every other command in this skill, from\n> the repository root. Every path here is relative to it, and so are the outputs:\n> `./deliverables/` and `./deliverables/delivery_report.json` are written relative\n> to the working directory, not to the script.\n\n```bash\n# Standard Production Run\npython3 scripts/generate_demo_video.py \\\n  --company \"<Company Name>\" \\\n  --role \"<Agent Persona>\" \\\n  --lang \"<Locale (e.g. ja-JP, en-US)>\" \\\n  --session-url \"<Direct Chat Session URL>\"\n\n# Optional Flags:\n# --enable-bgm        : Enables ambient background music with dynamic ducking\n# --no-narration     : Generates video without voice track\n# --no-subtitles     : Generates video without subtitle overlays\n# --drive-account    : Overrides destination Google Drive account\n```\n\nThe process exit code is the delivery verdict: `0` delivered, `3` Drive was\nexpected and Cloud Storage caught the fall, `1` nothing accepted the video. See\nPhase 6.\n\nKey execution features:\n- **Zero Dead Air**: Voice narration begins immediately at scene start, introducing operational intent during prompt typing.\n- **1.50x Prompt Typing Zoom**: Camera zooms into prompt input field `(960, 920)` with natural human typing jitter.\n- **⏩ 4x Fast-Forward Thinking**: Accelerates model thinking and tool execution with speedup badge and explanatory narration.\n- **1.45x Action Button Zoom**: Dynamically identifies action buttons (e.g. \"Execute Reallocation Now\"), zooms in, and executes the click.\n- **Synchronized Response Scrolling**: Traverses shadow DOM `.chat-mode-scroller` to smoothly scroll tall data tables and A2UI cards.\n\n---\n\n### Phase 6: Delivery to Google Drive / GCS & Local Staging\n\n1. **Delivery Account Precedence (Tier 1 / Tier 2 target)**:\n   The video must land in the **same Drive as the rest of the demo** — the PDFs,\n   spreadsheets and scans that `generate_and_upload_external_files.py` already\n   uploaded. The account is resolved in this order:\n   1. Explicit `--drive-account` or `DRIVE_ACCOUNT` (from the environment or `.env`).\n   2. `owner_account` in the demo's `drive_upload_summary.json`, if that account\n      still has credentials on this host. This is the Drive the demo's own files\n      are in.\n   3. The active `gcloud` account — the identity the demo was deployed with.\n   4. An account whose local part matches the host login name.\n   5. Any other credentialed non-service account.\n   6. The active account, or `default`.\n\n   > The host login match used to sit near the top, which sent the video to a\n   > corporate account under forced re-authentication while the demo itself was\n   > in a different tenant's Drive. One demo, two Drives, and a re-authentication\n   > prompt for an account nobody asked for.\n\n2. **3-Tier Fallback Storage Delivery Mechanism**:\n   - **Tier 1: Host Operator Drive**:\n     Uploaded via `gdrive` CLI using operator user credentials if configured. Saves to folder `GE Demo - <Company>` with owner-only private permissions (or `--share-public` if explicitly requested).\n   - **Tier 2: Deploy Account Drive**:\n     If Tier 1 is unavailable or unconfigured, falls back to Google Drive API using the deploy user/service account ADC credentials (`gcloud auth application-default print-access-token` / service account key).\n   - **Tier 3: Google Cloud Storage (GCS) Fallback**:\n     If Drive upload cannot proceed or fails, securely delivers the video to Google Cloud Storage (`gs://<project-id>-ge-demo-artifacts/videos/` or custom `--gcs-bucket`), generating an authenticated or signed URL (`https://storage.cloud.google.com/<bucket>/...`).\n3. **Local Staging Guarantee**:\n   - The final video is **always staged locally** in `./deliverables/[Demo-Video]_<Company>_-<Role>.mp4` regardless of remote upload status.\n4. **Read the delivery verdict — never assume success**:\n   - Delivery writes `./deliverables/delivery_report.json` and exits with a\n     distinct code. The agent **MUST** read one of the two before reporting an\n     outcome:\n\n     | Exit code | `headline` means | Agent action |\n     |---|---|---|\n     | `0` | Delivered to Drive, or Cloud Storage was the intended destination, or the upload was skipped on request | Report the destination URL |\n     | `3` | **Cloud Storage caught the fall — Drive was expected and did not accept the upload** | Fire the recovery gate in step 6 |\n     | `1` | No destination accepted the video | Report the local path and the error |\n\n   - The report carries `delivery_tier`, `target_account`, `target_account_reason`,\n     `drive_url`, `gcs_uri`, `headline` and `action_required`.\n   - Exit code `3` is **not** a success. The video exists, but it is not where the\n     rest of the demo is.\n5. **Present Output**:\n   - Display local deliverable path, remote delivery destination (Tier 1 Drive / Tier 2 Drive / Tier 3 GCS), the account it went to and why, video duration, and resolution (1080p 30fps).\n6. **Automated Post-Generation Interactive Delivery Recovery Gate**:\n   - **Trigger**: delivery exit code `3`, or `delivery_report.json` reporting a\n     non-empty `action_required`, or `tier_1_status: reauth_required`.\n   - **Zero Copy-Paste Mandate**: If the video was successfully generated and staged in `./deliverables/[Demo-Video]_<Company>_-<Role>.mp4` but Google Drive delivery failed or was skipped due to expired OAuth credentials (`reauth_required`), the agent **MUST NEVER** ask the user to manually copy and paste bash upload commands.\n   - **Interactive Recovery via `ask_question`**: The agent **MUST IMMEDIATELY** invoke `ask_question` offering automated re-authentication and recovery upload:\n     - `(Recommended) Authenticate now and upload the generated video to Google Drive`\n     - `Keep local deliverable only (and Cloud Storage if uploaded)`\n   - **Single-Click Automated Execution**: Upon user selection of the recommended option, the agent automatically executes:\n     1. Re-authentication via `run_command`. Use the command printed by the\n        pipeline verbatim — on a host with no local browser (remote shell, Cloud\n        Shell, no `DISPLAY`) it carries `--no-launch-browser`, and without that\n        flag the command waits on a browser that will never open:\n        ```bash\n        gcloud auth login <account> --enable-gdrive-access [--no-launch-browser]\n        ```\n     2. Standalone Drive delivery via `run_command`, from the repository root:\n        ```bash\n        python3 skills/ge-demo-generator/templates/video/scripts/upload_to_drive.py \\\n          --video \"./deliverables/[Demo-Video]_${COMPANY}_-_${ROLE}.mp4\" \\\n          --company \"${COMPANY}\" \\\n          --role \"${ROLE}\" \\\n          --drive-account \"${DRIVE_ACCOUNT}\"\n        ```\n        Omit `--drive-account` to let the precedence in step 1 pick the Drive the\n        demo already lives in.\n     3. Present the confirmed Google Drive file URL and folder URL directly in the chat response.\n\n---\n\n## 🛠️ CLI Options Reference (`generate_demo_video.py`)\n\n| Option | Default | Description |\n|---|---|---|\n| `--session-url`, `--ge-url` | (from .env) | Direct Gemini Enterprise chat session URL (Required) |\n| `--env-file` | `.env` | Path to environment configuration file |\n| `--cdp-url` | `http://localhost:9222` | Chrome remote debugging endpoint |\n| `--company` | (from .env) | Company name override |\n| `--role` | (from .env) | Agent persona / role override |\n| `--agent-name` | (from .env) | Gemini Enterprise agent display name override |\n| `--lang` | (auto-detected) | Voice & subtitle language (`ja-JP`, `en-US`, `de-DE`, etc.) |\n| `--project` | (from .env) | Google Cloud project ID for TTS quota and GCS fallback |\n| `--deploy-account` | (auto-detected) | Target deploy Google Cloud account for Tier 2 Drive |\n| `--gcs-bucket` | (auto-detected) | Target Google Cloud Storage bucket for Tier 3 delivery |\n| `--mock` | `false` | Enable synthetic mock mode for test and offline pipeline execution |\n| `--no-headless` | `true` | Launch Chrome with visible GUI window (Default) |\n| `--headless` | `false` | Launch Chrome in headless mode |\n| `--enable-bgm`, `--bgm` | `false` | Enable ambient background music with dynamic ducking |\n| `--no-brand`, `--disable-brand` | `false` | Disable automatic customer logo and corporate palette discovery (default: branding enabled) |\n| `--brand-domain` | (auto-detected) | Custom domain override for logo and corporate palette discovery |\n| `--no-narration` | `false` | Disable voice narration audio tracks |\n| `--no-subtitles` | `false` | Disable subtitle overlays |\n| `--skip-recording` | `false` | Reuse existing browser recording from working directory |\n| `--skip-tts` | `false` | Reuse existing TTS audio from working directory |\n| `--skip-drive` | `false` | Skip Google Drive upload (save to `./deliverables/` only) |\n| `--drive-account` | (auto-detected) | Target Google Drive account override (Tier 1) |\n| `--drive-folder` | `GE Demo - <Company>` | Google Drive folder name override |\n| `--share-public` | `false` | Enable public reader link sharing |\n| `--output` | `./output/demo_video/rendered_demo_video.mp4` | Final MP4 output path |\n\n### Delivery environment variables\n\n| Variable | Effect |\n|---|---|\n| `DRIVE_ACCOUNT` | Highest-precedence delivery account (same as `--drive-account`) |\n| `GE_DRIVE_SUMMARY` | Explicit path to the demo's `drive_upload_summary.json`, when it is not beside the deliverables |\n| `GE_NONINTERACTIVE` / `CI` | Declines every re-authentication prompt instead of waiting for an answer nobody is there to give |\n| `SKIP_VIDEO_DRIVE_UPLOAD` | Skips Drive delivery for the video only (does not affect the demo's other files) |\n","agents/adk/README.md":"⚠️ The Agent Development Kit (ADK) Sample Agents repository is available at [github.com/google/adk-samples](https://github.com/google/adk-samples).\n\nThe repository contains sample agents for:\n\n- [Python](https://github.com/google/adk-samples/tree/main/python)\n- [Java](https://github.com/google/adk-samples/tree/main/java)\n","search/gemini-enterprise/ge-demo-generator/agent_template/demo_skills/professional-document/SKILL.md":"---\nname: professional-document\ndescription: Produce a formal business document as .docx (python-docx) or PDF (reportlab) - reports, proposals, briefings, one-pagers, meeting summaries. Use whenever the task asks for a written document, report file, proposal, or PDF. Covers structure, typography, build and delivery.\n---\n\n# Professional Document Builder\n\nProduce a business document that reads and looks like it was prepared by a\nprofessional analyst: clear structure, restrained typography, real numbers.\n\n## Language rule\n\nAll user-visible text in the document MUST be written in the same language\nas the task description you received. This skill's instructions are English,\nbut the deliverable follows the task's language.\n\n## Format choice\n\n- `.docx` (python-docx) when the reader may edit: proposals, drafts,\n  working reports. Default choice when the task does not specify.\n- PDF (reportlab, `platypus` flowables) when the task says PDF or the\n  document is final/customer-facing: signed proposals, formal briefings,\n  one-pagers.\n- Do NOT use weasyprint or LibreOffice conversion (system dependencies are\n  not guaranteed). reportlab and python-docx are pure-python and reliable.\n- CJK note (PDF only): reportlab's built-in fonts cannot render Japanese,\n  Chinese or Korean. For CJK text register a CID font first:\n  `from reportlab.pdfbase import pdfmetrics; from reportlab.pdfbase.cidfonts import UnicodeCIDFont; pdfmetrics.registerFont(UnicodeCIDFont('HeiseiKakuGo-W5'))`\n  and set that font on every style. python-docx handles CJK natively.\n\n## Process\n\n1. python-docx, reportlab and matplotlib are usually preinstalled by the\n   environment warm-up - try the import first; pip install only if missing.\n2. Draft the full document content in markdown first (`draft.md`). Get the\n   substance right before any formatting code.\n3. Convert the draft to the target format with a build script.\n4. Verify (below), fix, rebuild.\n5. Deliver (below).\n\n## Structure\n\nStandard business report skeleton - adapt, do not skip levels:\n\n1. Title block: document title, subtitle/purpose, date, author line\n   (the requesting organization, not you). Documents longer than ~6 pages\n   get a cover page plus a table of contents built from the headings.\n2. Executive summary: 3-6 sentences a busy executive could read alone -\n   the key finding, the number that matters, the recommendation.\n3. Body sections (3-6): each opens with a one-sentence takeaway in bold,\n   followed by supporting analysis, tables and figures.\n4. Recommendations / next steps: numbered, concrete, each with an owner\n   or function and a timeframe where possible.\n5. Appendix (optional): methodology, data notes, detailed tables.\n\nOne-pagers compress the same skeleton to: title block, summary paragraph,\n3-4 key points with numbers, recommendation box.\n\n## Typography and layout\n\n- One font family throughout. Body 10.5-11pt, line spacing 1.15-1.3.\n- Heading hierarchy: H1 16-18pt bold, H2 13-14pt bold, H3 11pt bold.\n  Use color `#1A2B4A` for headings, near-black `#222222` for body.\n- Margins: 2.0-2.5 cm all around. Page numbers in the footer from page 2.\n- Numbers that carry the argument go in bold; do not bold whole sentences.\n- Tables: bold header row with a light fill (`#F2F5FA`), thin borders,\n  right-align numeric columns, thousands separators.\n- Charts: matplotlib PNGs at 150+ dpi, sized to the text column width,\n  numbered captions below (Figure 1: ...). Same palette as the tables.\n- Charts with non-Latin labels (Japanese etc.): matplotlib's default font\n  has no CJK glyphs (hollow boxes). Register a font first - for Japanese:\n  pip install japanize-matplotlib, then import japanize_matplotlib once.\n  For other scripts register a Noto Sans font via\n  matplotlib.font_manager.fontManager.addfont(). Verify the rendered PNG\n  has no hollow-box glyphs before embedding it.\n- Never fake letterhead or signatures.\n\n## Content quality bar\n\n- Every claim backed by the provided data or explicitly sourced web\n  research (cite source name + URL inline or in the appendix).\n- Round numbers for readability; keep raw precision in appendix tables.\n- No filler phrases. Cut any sentence that does not inform a decision.\n\n## Verification (mandatory)\n\n- docx: re-open with python-docx; assert heading structure exists and all\n  planned sections are present and non-empty.\n- PDF: re-open with `pypdf` (usually preinstalled by warm-up); assert\n  expected page count (>= 1) and that extracted text contains the section\n  headings AND the CJK strings you wrote (garbled fonts extract as empty\n  or replacement characters - if a heading is missing, fix the font).\nFix and rebuild until clean. At least one full review-and-rebuild pass is\nmandatory: re-read the built document against the task's stated quality\nconditions before delivering.\n\n## Delivery\n\n1. Save with a descriptive filename, e.g. `supplier_risk_briefing.pdf`.\n2. If the task provided an upload URL for deliverables, upload with:\n   `curl -sS -X PUT --upload-file <file> -H \"Content-Type: <mime>\" \"<upload_url>\"`\n   (docx mime: `application/vnd.openxmlformats-officedocument.wordprocessingml.document`,\n   pdf mime: `application/pdf`). Retry once on failure.\n3. In your final report, state the filename, page/section count, and\n   reproduce the executive summary verbatim.\n","agents/invoice-processing/README.md":"# Subagent: readme\n\nPath: `agents/invoice-processing/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/README.md)","agents/personalized-agent-swarms/README.md":"# Subagent: readme\n\nPath: `agents/personalized-agent-swarms/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/personalized-agent-swarms/README.md)","agents/personalized-agent-swarms/evaluation_rubric.md":"# Subagent: evaluation_rubric\n\nPath: `agents/personalized-agent-swarms/evaluation_rubric.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/personalized-agent-swarms/evaluation_rubric.md)","agents/personalized-agent-swarms/evaluation_rubric_augmented.md":"# Subagent: evaluation_rubric_augmented\n\nPath: `agents/personalized-agent-swarms/evaluation_rubric_augmented.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/personalized-agent-swarms/evaluation_rubric_augmented.md)","agents/personalized-agent-swarms/evaluation_scenarios_user_1.json":"# Personalized-agent-swarms Skill\n\nPath: `agents/personalized-agent-swarms/evaluation_scenarios_user_1.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/personalized-agent-swarms/evaluation_scenarios_user_1.json)","agents/personalized-agent-swarms/evaluation_scenarios_user_2.json":"# Personalized-agent-swarms Skill\n\nPath: `agents/personalized-agent-swarms/evaluation_scenarios_user_2.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/personalized-agent-swarms/evaluation_scenarios_user_2.json)","agents/personalized-agent-swarms/evaluation_scenarios_user_3.json":"# Personalized-agent-swarms Skill\n\nPath: `agents/personalized-agent-swarms/evaluation_scenarios_user_3.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/personalized-agent-swarms/evaluation_scenarios_user_3.json)","agents/personalized-agent-swarms/evaluation_scenarios_user_4.json":"# Personalized-agent-swarms Skill\n\nPath: `agents/personalized-agent-swarms/evaluation_scenarios_user_4.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/personalized-agent-swarms/evaluation_scenarios_user_4.json)","agents/personalized-agent-swarms/evaluation_scenarios_user_5.json":"# Personalized-agent-swarms Skill\n\nPath: `agents/personalized-agent-swarms/evaluation_scenarios_user_5.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/personalized-agent-swarms/evaluation_scenarios_user_5.json)","agents/self-evolving-ai/README.md":"# Subagent: readme\n\nPath: `agents/self-evolving-ai/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/self-evolving-ai/README.md)","tools/llmevalkit/CONTRIBUTING.md":"# Llmevalkit Skill\n\nPath: `tools/llmevalkit/CONTRIBUTING.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/tools/llmevalkit/CONTRIBUTING.md)","tools/llmevalkit/README.md":"# llmevalkit Documentation\n\nPath: `tools/llmevalkit/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/tools/llmevalkit/README.md)","agents/adk/agent-quality-flywheel/README.md":"# Subagent: readme\n\nPath: `agents/adk/agent-quality-flywheel/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/agent-quality-flywheel/README.md)","agents/adk/agent-quality-flywheel/agents-cli-manifest.yaml":"# Agent-quality-flywheel Skill\n\nPath: `agents/adk/agent-quality-flywheel/agents-cli-manifest.yaml`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/agent-quality-flywheel/agents-cli-manifest.yaml)","agents/adk/agent-quality-flywheel/fx_footer_config.yaml":"# Agent-quality-flywheel Skill\n\nPath: `agents/adk/agent-quality-flywheel/fx_footer_config.yaml`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/agent-quality-flywheel/fx_footer_config.yaml)","agents/adk/contract-compliance-pipeline/ARCHITECTURE.md":"# Subagent: architecture\n\nPath: `agents/adk/contract-compliance-pipeline/ARCHITECTURE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/contract-compliance-pipeline/ARCHITECTURE.md)","agents/adk/contract-compliance-pipeline/README.md":"# Subagent: readme\n\nPath: `agents/adk/contract-compliance-pipeline/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/contract-compliance-pipeline/README.md)","agents/adk/contract-compliance-pipeline/TUTORIAL.md":"# Subagent: tutorial\n\nPath: `agents/adk/contract-compliance-pipeline/TUTORIAL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/contract-compliance-pipeline/TUTORIAL.md)","agents/adk/new-hire-onboarding/README.md":"# Subagent: readme\n\nPath: `agents/adk/new-hire-onboarding/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/new-hire-onboarding/README.md)","agents/adk/new-hire-onboarding/TUTORIAL.md":"# Subagent: tutorial\n\nPath: `agents/adk/new-hire-onboarding/TUTORIAL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/new-hire-onboarding/TUTORIAL.md)","agents/adk/zero-trust-agents-2/README.md":"# Subagent: readme\n\nPath: `agents/adk/zero-trust-agents-2/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/zero-trust-agents-2/README.md)","agents/adk/zero-trust-agents-2/TUTORIAL.md":"# Subagent: tutorial\n\nPath: `agents/adk/zero-trust-agents-2/TUTORIAL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/zero-trust-agents-2/TUTORIAL.md)","agents/adk/zero-trust-agents/README.md":"# Subagent: readme\n\nPath: `agents/adk/zero-trust-agents/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/zero-trust-agents/README.md)","agents/adk/zero-trust-agents/TUTORIAL.md":"# Subagent: tutorial\n\nPath: `agents/adk/zero-trust-agents/TUTORIAL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/zero-trust-agents/TUTORIAL.md)","agents/invoice-processing/deployment/README.md":"# Subagent: readme\n\nPath: `agents/invoice-processing/deployment/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/deployment/README.md)","agents/personalized-agent-swarms/analyzer/README.md":"# Subagent: readme\n\nPath: `agents/personalized-agent-swarms/analyzer/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/personalized-agent-swarms/analyzer/README.md)","agents/personalized-agent-swarms/harvest/README.md":"# Subagent: readme\n\nPath: `agents/personalized-agent-swarms/harvest/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/personalized-agent-swarms/harvest/README.md)","agents/personalized-agent-swarms/user_assistant_agent/DEPLOYMENT.md":"# Subagent: deployment\n\nPath: `agents/personalized-agent-swarms/user_assistant_agent/DEPLOYMENT.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/personalized-agent-swarms/user_assistant_agent/DEPLOYMENT.md)","agents/personalized-agent-swarms/user_assistant_agent/README.md":"# Subagent: readme\n\nPath: `agents/personalized-agent-swarms/user_assistant_agent/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/personalized-agent-swarms/user_assistant_agent/README.md)","agents/personalized-agent-swarms/user_assistant_agent/test_scenarios.md":"# Subagent: test_scenarios\n\nPath: `agents/personalized-agent-swarms/user_assistant_agent/test_scenarios.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/personalized-agent-swarms/user_assistant_agent/test_scenarios.md)","agents/personalized-agent-swarms/user_profiles/profiles.json":"# User_profiles Skill\n\nPath: `agents/personalized-agent-swarms/user_profiles/profiles.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/personalized-agent-swarms/user_profiles/profiles.json)","gemini/agents/always-on-memory-agent/README.md":"# Subagent: readme\n\nPath: `gemini/agents/always-on-memory-agent/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/gemini/agents/always-on-memory-agent/README.md)","gemini/agents/genai-experience-concierge/.pre-commit-config.yaml":"# Genai-experience-concierge Skill\n\nPath: `gemini/agents/genai-experience-concierge/.pre-commit-config.yaml`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/gemini/agents/genai-experience-concierge/.pre-commit-config.yaml)","gemini/agents/genai-experience-concierge/README.md":"# Subagent: readme\n\nPath: `gemini/agents/genai-experience-concierge/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/gemini/agents/genai-experience-concierge/README.md)","agents/invoice-processing/invoice_processing/data/comparison_results.json":"# Data Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/comparison_results.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/comparison_results.json)","agents/invoice-processing/invoice_processing/data/reconstructed_rules_book.md":"# Subagent: reconstructed_rules_book\n\nPath: `agents/invoice-processing/invoice_processing/data/reconstructed_rules_book.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/reconstructed_rules_book.md)","agents/invoice-processing/invoice_processing/data/rule_base.json":"# Data Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/rule_base.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/rule_base.json)","agents/invoice-processing/invoice_processing/data/rule_discovery_cache.json":"# Data Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/rule_discovery_cache.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/rule_discovery_cache.json)","agents/invoice-processing/invoice_processing/exemplary_data/test_cases_summary.json":"# Exemplary_data Skill\n\nPath: `agents/invoice-processing/invoice_processing/exemplary_data/test_cases_summary.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/exemplary_data/test_cases_summary.json)","agents/invoice-processing/invoice_processing/shared_libraries/invoice_master_data.yaml":"# Shared_libraries Skill\n\nPath: `agents/invoice-processing/invoice_processing/shared_libraries/invoice_master_data.yaml`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/shared_libraries/invoice_master_data.yaml)","gemini/agents/genai-experience-concierge/agent-design-patterns/README.md":"# Subagent: readme\n\nPath: `gemini/agents/genai-experience-concierge/agent-design-patterns/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/gemini/agents/genai-experience-concierge/agent-design-patterns/README.md)","agents/adk/new-hire-onboarding/frontend/live-onboarding/package.json":"# Live-onboarding Skill\n\nPath: `agents/adk/new-hire-onboarding/frontend/live-onboarding/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/new-hire-onboarding/frontend/live-onboarding/package.json)","agents/adk/new-hire-onboarding/frontend/live-onboarding/tsconfig.json":"# Live-onboarding Skill\n\nPath: `agents/adk/new-hire-onboarding/frontend/live-onboarding/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/new-hire-onboarding/frontend/live-onboarding/tsconfig.json)","agents/adk/new-hire-onboarding/tests/eval/eval_config.json":"# Eval Skill\n\nPath: `agents/adk/new-hire-onboarding/tests/eval/eval_config.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/new-hire-onboarding/tests/eval/eval_config.json)","agents/invoice-processing/invoice_processing/exemplary_data/case_001/Postprocessing_Data.json":"# Case_001 Skill\n\nPath: `agents/invoice-processing/invoice_processing/exemplary_data/case_001/Postprocessing_Data.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/exemplary_data/case_001/Postprocessing_Data.json)","agents/invoice-processing/invoice_processing/exemplary_data/case_001/case_metadata.json":"# Case_001 Skill\n\nPath: `agents/invoice-processing/invoice_processing/exemplary_data/case_001/case_metadata.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/exemplary_data/case_001/case_metadata.json)","agents/invoice-processing/invoice_processing/exemplary_data/case_002/Postprocessing_Data.json":"# Case_002 Skill\n\nPath: `agents/invoice-processing/invoice_processing/exemplary_data/case_002/Postprocessing_Data.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/exemplary_data/case_002/Postprocessing_Data.json)","agents/invoice-processing/invoice_processing/exemplary_data/case_002/case_metadata.json":"# Case_002 Skill\n\nPath: `agents/invoice-processing/invoice_processing/exemplary_data/case_002/case_metadata.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/exemplary_data/case_002/case_metadata.json)","agents/invoice-processing/invoice_processing/exemplary_data/case_005/Postprocessing_Data.json":"# Case_005 Skill\n\nPath: `agents/invoice-processing/invoice_processing/exemplary_data/case_005/Postprocessing_Data.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/exemplary_data/case_005/Postprocessing_Data.json)","agents/invoice-processing/invoice_processing/exemplary_data/case_005/case_metadata.json":"# Case_005 Skill\n\nPath: `agents/invoice-processing/invoice_processing/exemplary_data/case_005/case_metadata.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/exemplary_data/case_005/case_metadata.json)","gemini/agents/genai-experience-concierge/langgraph-demo/backend/README.md":"# Subagent: readme\n\nPath: `gemini/agents/genai-experience-concierge/langgraph-demo/backend/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/gemini/agents/genai-experience-concierge/langgraph-demo/backend/README.md)","gemini/agents/genai-experience-concierge/langgraph-demo/frontend/README.md":"# Subagent: readme\n\nPath: `gemini/agents/genai-experience-concierge/langgraph-demo/frontend/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/gemini/agents/genai-experience-concierge/langgraph-demo/frontend/README.md)","gemini/multimodal-live-api/project-livewire/cloud-functions/weather-tools/README.md":"# weather-tools Documentation\n\nPath: `gemini/multimodal-live-api/project-livewire/cloud-functions/weather-tools/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/gemini/multimodal-live-api/project-livewire/cloud-functions/weather-tools/README.md)","agents/adk/agent-quality-flywheel/tests/eval/datasets/fx-dataset.json":"# Datasets Skill\n\nPath: `agents/adk/agent-quality-flywheel/tests/eval/datasets/fx-dataset.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/agent-quality-flywheel/tests/eval/datasets/fx-dataset.json)","agents/adk/contract-compliance-pipeline/go-compliance-agent/internal/policies/default_policy.json":"# Policies Skill\n\nPath: `agents/adk/contract-compliance-pipeline/go-compliance-agent/internal/policies/default_policy.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/contract-compliance-pipeline/go-compliance-agent/internal/policies/default_policy.json)","agents/adk/new-hire-onboarding/tests/eval/evalsets/README.md":"# Subagent: readme\n\nPath: `agents/adk/new-hire-onboarding/tests/eval/evalsets/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/new-hire-onboarding/tests/eval/evalsets/README.md)","agents/adk/new-hire-onboarding/tests/eval/evalsets/basic.evalset.json":"# Evalsets Skill\n\nPath: `agents/adk/new-hire-onboarding/tests/eval/evalsets/basic.evalset.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/new-hire-onboarding/tests/eval/evalsets/basic.evalset.json)","agents/adk/new-hire-onboarding/tests/eval/evalsets/dead_time_delay_eval.json":"# Evalsets Skill\n\nPath: `agents/adk/new-hire-onboarding/tests/eval/evalsets/dead_time_delay_eval.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/new-hire-onboarding/tests/eval/evalsets/dead_time_delay_eval.json)","agents/adk/new-hire-onboarding/tests/eval/evalsets/onboarding_eval.json":"# Evalsets Skill\n\nPath: `agents/adk/new-hire-onboarding/tests/eval/evalsets/onboarding_eval.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/new-hire-onboarding/tests/eval/evalsets/onboarding_eval.json)","agents/invoice-processing/invoice_processing/data/agent_output/case_001/01_classification.json":"# Case_001 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_001/01_classification.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_001/01_classification.json)","agents/invoice-processing/invoice_processing/data/agent_output/case_001/02_extraction.json":"# Case_001 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_001/02_extraction.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_001/02_extraction.json)","agents/invoice-processing/invoice_processing/data/agent_output/case_001/03_phase1_validation.json":"# Case_001 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_001/03_phase1_validation.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_001/03_phase1_validation.json)","agents/invoice-processing/invoice_processing/data/agent_output/case_001/04_phase2_validation.json":"# Case_001 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_001/04_phase2_validation.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_001/04_phase2_validation.json)","agents/invoice-processing/invoice_processing/data/agent_output/case_001/05_phase3_validation.json":"# Case_001 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_001/05_phase3_validation.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_001/05_phase3_validation.json)","agents/invoice-processing/invoice_processing/data/agent_output/case_001/07_transformation.json":"# Case_001 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_001/07_transformation.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_001/07_transformation.json)","agents/invoice-processing/invoice_processing/data/agent_output/case_001/08_decision.json":"# Case_001 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_001/08_decision.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_001/08_decision.json)","agents/invoice-processing/invoice_processing/data/agent_output/case_001/09_audit_log.json":"# Case_001 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_001/09_audit_log.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_001/09_audit_log.json)","agents/invoice-processing/invoice_processing/data/agent_output/case_001/Postprocessing_Data.json":"# Case_001 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_001/Postprocessing_Data.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_001/Postprocessing_Data.json)","agents/invoice-processing/invoice_processing/data/agent_output/case_002/01_classification.json":"# Case_002 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_002/01_classification.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_002/01_classification.json)","agents/invoice-processing/invoice_processing/data/agent_output/case_002/02_extraction.json":"# Case_002 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_002/02_extraction.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_002/02_extraction.json)","agents/invoice-processing/invoice_processing/data/agent_output/case_002/03_phase1_validation.json":"# Case_002 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_002/03_phase1_validation.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_002/03_phase1_validation.json)","agents/invoice-processing/invoice_processing/data/agent_output/case_002/04_phase2_validation.json":"# Case_002 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_002/04_phase2_validation.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_002/04_phase2_validation.json)","agents/invoice-processing/invoice_processing/data/agent_output/case_002/05_phase3_validation.json":"# Case_002 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_002/05_phase3_validation.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_002/05_phase3_validation.json)","agents/invoice-processing/invoice_processing/data/agent_output/case_002/06_phase4_validation.json":"# Case_002 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_002/06_phase4_validation.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_002/06_phase4_validation.json)","agents/invoice-processing/invoice_processing/data/agent_output/case_002/07_transformation.json":"# Case_002 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_002/07_transformation.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_002/07_transformation.json)","agents/invoice-processing/invoice_processing/data/agent_output/case_002/08_decision.json":"# Case_002 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_002/08_decision.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_002/08_decision.json)","agents/invoice-processing/invoice_processing/data/agent_output/case_002/09_audit_log.json":"# Case_002 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_002/09_audit_log.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_002/09_audit_log.json)","agents/invoice-processing/invoice_processing/data/agent_output/case_002/Postprocessing_Data.json":"# Case_002 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_002/Postprocessing_Data.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_002/Postprocessing_Data.json)","agents/invoice-processing/invoice_processing/data/agent_output/case_005/01_classification.json":"# Case_005 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_005/01_classification.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_005/01_classification.json)","agents/invoice-processing/invoice_processing/data/agent_output/case_005/02_extraction.json":"# Case_005 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_005/02_extraction.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_005/02_extraction.json)","agents/invoice-processing/invoice_processing/data/agent_output/case_005/03_phase1_validation.json":"# Case_005 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_005/03_phase1_validation.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_005/03_phase1_validation.json)","agents/invoice-processing/invoice_processing/data/agent_output/case_005/04_phase2_validation.json":"# Case_005 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_005/04_phase2_validation.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_005/04_phase2_validation.json)","agents/invoice-processing/invoice_processing/data/agent_output/case_005/05_phase3_validation.json":"# Case_005 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_005/05_phase3_validation.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_005/05_phase3_validation.json)","agents/invoice-processing/invoice_processing/data/agent_output/case_005/06_phase4_validation.json":"# Case_005 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_005/06_phase4_validation.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_005/06_phase4_validation.json)","agents/invoice-processing/invoice_processing/data/agent_output/case_005/07_transformation.json":"# Case_005 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_005/07_transformation.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_005/07_transformation.json)","agents/invoice-processing/invoice_processing/data/agent_output/case_005/08_decision.json":"# Case_005 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_005/08_decision.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_005/08_decision.json)","agents/invoice-processing/invoice_processing/data/agent_output/case_005/09_audit_log.json":"# Case_005 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_005/09_audit_log.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_005/09_audit_log.json)","agents/invoice-processing/invoice_processing/data/agent_output/case_005/Postprocessing_Data.json":"# Case_005 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_005/Postprocessing_Data.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_005/Postprocessing_Data.json)","gemini/multimodal-live-api/gemini-live-studio/examples/local-code-assistant/plugin/plugin.json":"# plugin Plugin Manifest\n\nPath: `gemini/multimodal-live-api/gemini-live-studio/examples/local-code-assistant/plugin/plugin.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/gemini/multimodal-live-api/gemini-live-studio/examples/local-code-assistant/plugin/plugin.json)","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/references/a2ui_catalog.md":"# References Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/references/a2ui_catalog.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/references/a2ui_catalog.md)","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/references/data_generation.md":"# References Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/references/data_generation.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/references/data_generation.md)","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/references/datastore_connectors.md":"# References Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/references/datastore_connectors.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/references/datastore_connectors.md)","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/references/demo_prompts_guide.md":"# References Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/references/demo_prompts_guide.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/references/demo_prompts_guide.md)","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/references/deployment_and_iam.md":"# References Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/references/deployment_and_iam.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/references/deployment_and_iam.md)","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/references/external_files_and_drive.md":"# References Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/references/external_files_and_drive.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/references/external_files_and_drive.md)","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/references/mcp_catalog.md":"# References Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/references/mcp_catalog.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/references/mcp_catalog.md)","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/references/multi_agent_architecture.md":"# References Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/references/multi_agent_architecture.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/references/multi_agent_architecture.md)","agents/adk/contract-compliance-pipeline/python-extraction-agent/tests/eval/evalsets/a2a_mock_eval.json":"# Evalsets Skill\n\nPath: `agents/adk/contract-compliance-pipeline/python-extraction-agent/tests/eval/evalsets/a2a_mock_eval.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/contract-compliance-pipeline/python-extraction-agent/tests/eval/evalsets/a2a_mock_eval.json)","agents/adk/contract-compliance-pipeline/python-extraction-agent/tests/eval/evalsets/extraction_eval.json":"# Evalsets Skill\n\nPath: `agents/adk/contract-compliance-pipeline/python-extraction-agent/tests/eval/evalsets/extraction_eval.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/contract-compliance-pipeline/python-extraction-agent/tests/eval/evalsets/extraction_eval.json)","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/demo_skills/README.md":"# Demo_skills Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/demo_skills/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/demo_skills/README.md)","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/video/package-lock.json":"# Video Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/video/package-lock.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/video/package-lock.json)","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/video/package.json":"# Video Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/video/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/video/package.json)","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/video/tsconfig.json":"# Video Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/video/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/video/tsconfig.json)","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/README.md":"# 0.9 Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/README.md)","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/action_plan.json":"# 0.9 Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/action_plan.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/action_plan.json)","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/analysis_summary_card.json":"# 0.9 Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/analysis_summary_card.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/analysis_summary_card.json)","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/batch_editor.json":"# 0.9 Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/batch_editor.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/batch_editor.json)","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/before_after_comparison.json":"# 0.9 Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/before_after_comparison.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/before_after_comparison.json)","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/calendar_event_compose.json":"# 0.9 Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/calendar_event_compose.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/calendar_event_compose.json)","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/canvas_report.json":"# 0.9 Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/canvas_report.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/canvas_report.json)","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/chat_compose.json":"# 0.9 Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/chat_compose.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/chat_compose.json)","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/chat_conversation_list.json":"# 0.9 Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/chat_conversation_list.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/chat_conversation_list.json)","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/comparison_matrix.json":"# 0.9 Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/comparison_matrix.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/comparison_matrix.json)","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/complex_confirmation_card.json":"# 0.9 Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/complex_confirmation_card.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/complex_confirmation_card.json)","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/contact_list.json":"# 0.9 Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/contact_list.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/contact_list.json)","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/delete_surface_example.json":"# 0.9 Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/delete_surface_example.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/delete_surface_example.json)","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/detail_modal.json":"# 0.9 Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/detail_modal.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/detail_modal.json)","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/drive_file_compose.json":"# 0.9 Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/drive_file_compose.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/drive_file_compose.json)","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/drive_file_list.json":"# 0.9 Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/drive_file_list.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/drive_file_list.json)","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/email_compose.json":"# 0.9 Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/email_compose.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/email_compose.json)","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/event_list.json":"# 0.9 Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/event_list.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/event_list.json)","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/iframe_dashboard.json":"# 0.9 Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/iframe_dashboard.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/iframe_dashboard.json)","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/image_report.json":"# 0.9 Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/image_report.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/image_report.json)","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/interactive_form.json":"# 0.9 Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/interactive_form.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/interactive_form.json)","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/maps_place_card.json":"# 0.9 Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/maps_place_card.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/maps_place_card.json)","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/profile_analysis_dashboard.json":"# 0.9 Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/profile_analysis_dashboard.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/profile_analysis_dashboard.json)","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/ranking_table.json":"# 0.9 Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/ranking_table.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/ranking_table.json)","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/status_dashboard.json":"# 0.9 Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/status_dashboard.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/status_dashboard.json)","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/suggestion_chips.json":"# 0.9 Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/suggestion_chips.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/suggestion_chips.json)","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/tabbed_comparison.json":"# 0.9 Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/tabbed_comparison.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/tabbed_comparison.json)","search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/video/src/manifest.json":"# Src Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/video/src/manifest.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/video/src/manifest.json)"},"items":[{"name":"agents-cli-manifest.yaml","path":"agents/adk/agent-quality-flywheel/agents-cli-manifest.yaml","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/agent-quality-flywheel/agents-cli-manifest.yaml","title":"Agent-quality-flywheel Skill","category":"anthropic-skill","format":"yaml","content":"# Agent-quality-flywheel Skill\n\nPath: `agents/adk/agent-quality-flywheel/agents-cli-manifest.yaml`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/agent-quality-flywheel/agents-cli-manifest.yaml)","tokens":300,"sizeBytes":261},{"name":"fx_footer_config.yaml","path":"agents/adk/agent-quality-flywheel/fx_footer_config.yaml","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/agent-quality-flywheel/fx_footer_config.yaml","title":"Agent-quality-flywheel Skill","category":"anthropic-skill","format":"yaml","content":"# Agent-quality-flywheel Skill\n\nPath: `agents/adk/agent-quality-flywheel/fx_footer_config.yaml`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/agent-quality-flywheel/fx_footer_config.yaml)","tokens":300,"sizeBytes":255},{"name":"fx-dataset.json","path":"agents/adk/agent-quality-flywheel/tests/eval/datasets/fx-dataset.json","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/agent-quality-flywheel/tests/eval/datasets/fx-dataset.json","title":"Datasets Skill","category":"anthropic-skill","format":"json","content":"# Datasets Skill\n\nPath: `agents/adk/agent-quality-flywheel/tests/eval/datasets/fx-dataset.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/agent-quality-flywheel/tests/eval/datasets/fx-dataset.json)","tokens":300,"sizeBytes":269},{"name":"default_policy.json","path":"agents/adk/contract-compliance-pipeline/go-compliance-agent/internal/policies/default_policy.json","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/contract-compliance-pipeline/go-compliance-agent/internal/policies/default_policy.json","title":"Policies Skill","category":"anthropic-skill","format":"json","content":"# Policies Skill\n\nPath: `agents/adk/contract-compliance-pipeline/go-compliance-agent/internal/policies/default_policy.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/contract-compliance-pipeline/go-compliance-agent/internal/policies/default_policy.json)","tokens":300,"sizeBytes":325},{"name":"a2a_mock_eval.json","path":"agents/adk/contract-compliance-pipeline/python-extraction-agent/tests/eval/evalsets/a2a_mock_eval.json","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/contract-compliance-pipeline/python-extraction-agent/tests/eval/evalsets/a2a_mock_eval.json","title":"Evalsets Skill","category":"anthropic-skill","format":"json","content":"# Evalsets Skill\n\nPath: `agents/adk/contract-compliance-pipeline/python-extraction-agent/tests/eval/evalsets/a2a_mock_eval.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/contract-compliance-pipeline/python-extraction-agent/tests/eval/evalsets/a2a_mock_eval.json)","tokens":300,"sizeBytes":335},{"name":"extraction_eval.json","path":"agents/adk/contract-compliance-pipeline/python-extraction-agent/tests/eval/evalsets/extraction_eval.json","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/contract-compliance-pipeline/python-extraction-agent/tests/eval/evalsets/extraction_eval.json","title":"Evalsets Skill","category":"anthropic-skill","format":"json","content":"# Evalsets Skill\n\nPath: `agents/adk/contract-compliance-pipeline/python-extraction-agent/tests/eval/evalsets/extraction_eval.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/contract-compliance-pipeline/python-extraction-agent/tests/eval/evalsets/extraction_eval.json)","tokens":300,"sizeBytes":339},{"name":"package.json","path":"agents/adk/new-hire-onboarding/frontend/live-onboarding/package.json","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/new-hire-onboarding/frontend/live-onboarding/package.json","title":"Live-onboarding Skill","category":"anthropic-skill","format":"json","content":"# Live-onboarding Skill\n\nPath: `agents/adk/new-hire-onboarding/frontend/live-onboarding/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/new-hire-onboarding/frontend/live-onboarding/package.json)","tokens":300,"sizeBytes":274},{"name":"tsconfig.json","path":"agents/adk/new-hire-onboarding/frontend/live-onboarding/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/new-hire-onboarding/frontend/live-onboarding/tsconfig.json","title":"Live-onboarding Skill","category":"anthropic-skill","format":"json","content":"# Live-onboarding Skill\n\nPath: `agents/adk/new-hire-onboarding/frontend/live-onboarding/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/new-hire-onboarding/frontend/live-onboarding/tsconfig.json)","tokens":300,"sizeBytes":276},{"name":"eval_config.json","path":"agents/adk/new-hire-onboarding/tests/eval/eval_config.json","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/new-hire-onboarding/tests/eval/eval_config.json","title":"Eval Skill","category":"anthropic-skill","format":"json","content":"# Eval Skill\n\nPath: `agents/adk/new-hire-onboarding/tests/eval/eval_config.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/new-hire-onboarding/tests/eval/eval_config.json)","tokens":300,"sizeBytes":243},{"name":"basic.evalset.json","path":"agents/adk/new-hire-onboarding/tests/eval/evalsets/basic.evalset.json","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/new-hire-onboarding/tests/eval/evalsets/basic.evalset.json","title":"Evalsets Skill","category":"anthropic-skill","format":"json","content":"# Evalsets Skill\n\nPath: `agents/adk/new-hire-onboarding/tests/eval/evalsets/basic.evalset.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/new-hire-onboarding/tests/eval/evalsets/basic.evalset.json)","tokens":300,"sizeBytes":269},{"name":"dead_time_delay_eval.json","path":"agents/adk/new-hire-onboarding/tests/eval/evalsets/dead_time_delay_eval.json","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/new-hire-onboarding/tests/eval/evalsets/dead_time_delay_eval.json","title":"Evalsets Skill","category":"anthropic-skill","format":"json","content":"# Evalsets Skill\n\nPath: `agents/adk/new-hire-onboarding/tests/eval/evalsets/dead_time_delay_eval.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/new-hire-onboarding/tests/eval/evalsets/dead_time_delay_eval.json)","tokens":300,"sizeBytes":283},{"name":"onboarding_eval.json","path":"agents/adk/new-hire-onboarding/tests/eval/evalsets/onboarding_eval.json","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/new-hire-onboarding/tests/eval/evalsets/onboarding_eval.json","title":"Evalsets Skill","category":"anthropic-skill","format":"json","content":"# Evalsets Skill\n\nPath: `agents/adk/new-hire-onboarding/tests/eval/evalsets/onboarding_eval.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/new-hire-onboarding/tests/eval/evalsets/onboarding_eval.json)","tokens":300,"sizeBytes":273},{"name":"01_classification.json","path":"agents/invoice-processing/invoice_processing/data/agent_output/case_001/01_classification.json","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_001/01_classification.json","title":"Case_001 Skill","category":"anthropic-skill","format":"json","content":"# Case_001 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_001/01_classification.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_001/01_classification.json)","tokens":300,"sizeBytes":319},{"name":"02_extraction.json","path":"agents/invoice-processing/invoice_processing/data/agent_output/case_001/02_extraction.json","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_001/02_extraction.json","title":"Case_001 Skill","category":"anthropic-skill","format":"json","content":"# Case_001 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_001/02_extraction.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_001/02_extraction.json)","tokens":300,"sizeBytes":311},{"name":"03_phase1_validation.json","path":"agents/invoice-processing/invoice_processing/data/agent_output/case_001/03_phase1_validation.json","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_001/03_phase1_validation.json","title":"Case_001 Skill","category":"anthropic-skill","format":"json","content":"# Case_001 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_001/03_phase1_validation.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_001/03_phase1_validation.json)","tokens":300,"sizeBytes":325},{"name":"04_phase2_validation.json","path":"agents/invoice-processing/invoice_processing/data/agent_output/case_001/04_phase2_validation.json","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_001/04_phase2_validation.json","title":"Case_001 Skill","category":"anthropic-skill","format":"json","content":"# Case_001 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_001/04_phase2_validation.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_001/04_phase2_validation.json)","tokens":300,"sizeBytes":325},{"name":"05_phase3_validation.json","path":"agents/invoice-processing/invoice_processing/data/agent_output/case_001/05_phase3_validation.json","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_001/05_phase3_validation.json","title":"Case_001 Skill","category":"anthropic-skill","format":"json","content":"# Case_001 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_001/05_phase3_validation.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_001/05_phase3_validation.json)","tokens":300,"sizeBytes":325},{"name":"07_transformation.json","path":"agents/invoice-processing/invoice_processing/data/agent_output/case_001/07_transformation.json","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_001/07_transformation.json","title":"Case_001 Skill","category":"anthropic-skill","format":"json","content":"# Case_001 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_001/07_transformation.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_001/07_transformation.json)","tokens":300,"sizeBytes":319},{"name":"08_decision.json","path":"agents/invoice-processing/invoice_processing/data/agent_output/case_001/08_decision.json","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_001/08_decision.json","title":"Case_001 Skill","category":"anthropic-skill","format":"json","content":"# Case_001 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_001/08_decision.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_001/08_decision.json)","tokens":300,"sizeBytes":307},{"name":"09_audit_log.json","path":"agents/invoice-processing/invoice_processing/data/agent_output/case_001/09_audit_log.json","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_001/09_audit_log.json","title":"Case_001 Skill","category":"anthropic-skill","format":"json","content":"# Case_001 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_001/09_audit_log.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_001/09_audit_log.json)","tokens":300,"sizeBytes":309},{"name":"Postprocessing_Data.json","path":"agents/invoice-processing/invoice_processing/data/agent_output/case_001/Postprocessing_Data.json","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_001/Postprocessing_Data.json","title":"Case_001 Skill","category":"anthropic-skill","format":"json","content":"# Case_001 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_001/Postprocessing_Data.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_001/Postprocessing_Data.json)","tokens":300,"sizeBytes":323},{"name":"01_classification.json","path":"agents/invoice-processing/invoice_processing/data/agent_output/case_002/01_classification.json","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_002/01_classification.json","title":"Case_002 Skill","category":"anthropic-skill","format":"json","content":"# Case_002 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_002/01_classification.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_002/01_classification.json)","tokens":300,"sizeBytes":319},{"name":"02_extraction.json","path":"agents/invoice-processing/invoice_processing/data/agent_output/case_002/02_extraction.json","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_002/02_extraction.json","title":"Case_002 Skill","category":"anthropic-skill","format":"json","content":"# Case_002 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_002/02_extraction.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_002/02_extraction.json)","tokens":300,"sizeBytes":311},{"name":"03_phase1_validation.json","path":"agents/invoice-processing/invoice_processing/data/agent_output/case_002/03_phase1_validation.json","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_002/03_phase1_validation.json","title":"Case_002 Skill","category":"anthropic-skill","format":"json","content":"# Case_002 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_002/03_phase1_validation.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_002/03_phase1_validation.json)","tokens":300,"sizeBytes":325},{"name":"04_phase2_validation.json","path":"agents/invoice-processing/invoice_processing/data/agent_output/case_002/04_phase2_validation.json","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_002/04_phase2_validation.json","title":"Case_002 Skill","category":"anthropic-skill","format":"json","content":"# Case_002 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_002/04_phase2_validation.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_002/04_phase2_validation.json)","tokens":300,"sizeBytes":325},{"name":"05_phase3_validation.json","path":"agents/invoice-processing/invoice_processing/data/agent_output/case_002/05_phase3_validation.json","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_002/05_phase3_validation.json","title":"Case_002 Skill","category":"anthropic-skill","format":"json","content":"# Case_002 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_002/05_phase3_validation.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_002/05_phase3_validation.json)","tokens":300,"sizeBytes":325},{"name":"06_phase4_validation.json","path":"agents/invoice-processing/invoice_processing/data/agent_output/case_002/06_phase4_validation.json","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_002/06_phase4_validation.json","title":"Case_002 Skill","category":"anthropic-skill","format":"json","content":"# Case_002 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_002/06_phase4_validation.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_002/06_phase4_validation.json)","tokens":300,"sizeBytes":325},{"name":"07_transformation.json","path":"agents/invoice-processing/invoice_processing/data/agent_output/case_002/07_transformation.json","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_002/07_transformation.json","title":"Case_002 Skill","category":"anthropic-skill","format":"json","content":"# Case_002 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_002/07_transformation.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_002/07_transformation.json)","tokens":300,"sizeBytes":319},{"name":"08_decision.json","path":"agents/invoice-processing/invoice_processing/data/agent_output/case_002/08_decision.json","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_002/08_decision.json","title":"Case_002 Skill","category":"anthropic-skill","format":"json","content":"# Case_002 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_002/08_decision.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_002/08_decision.json)","tokens":300,"sizeBytes":307},{"name":"09_audit_log.json","path":"agents/invoice-processing/invoice_processing/data/agent_output/case_002/09_audit_log.json","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_002/09_audit_log.json","title":"Case_002 Skill","category":"anthropic-skill","format":"json","content":"# Case_002 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_002/09_audit_log.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_002/09_audit_log.json)","tokens":300,"sizeBytes":309},{"name":"Postprocessing_Data.json","path":"agents/invoice-processing/invoice_processing/data/agent_output/case_002/Postprocessing_Data.json","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_002/Postprocessing_Data.json","title":"Case_002 Skill","category":"anthropic-skill","format":"json","content":"# Case_002 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_002/Postprocessing_Data.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_002/Postprocessing_Data.json)","tokens":300,"sizeBytes":323},{"name":"01_classification.json","path":"agents/invoice-processing/invoice_processing/data/agent_output/case_005/01_classification.json","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_005/01_classification.json","title":"Case_005 Skill","category":"anthropic-skill","format":"json","content":"# Case_005 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_005/01_classification.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_005/01_classification.json)","tokens":300,"sizeBytes":319},{"name":"02_extraction.json","path":"agents/invoice-processing/invoice_processing/data/agent_output/case_005/02_extraction.json","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_005/02_extraction.json","title":"Case_005 Skill","category":"anthropic-skill","format":"json","content":"# Case_005 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_005/02_extraction.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_005/02_extraction.json)","tokens":300,"sizeBytes":311},{"name":"03_phase1_validation.json","path":"agents/invoice-processing/invoice_processing/data/agent_output/case_005/03_phase1_validation.json","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_005/03_phase1_validation.json","title":"Case_005 Skill","category":"anthropic-skill","format":"json","content":"# Case_005 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_005/03_phase1_validation.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_005/03_phase1_validation.json)","tokens":300,"sizeBytes":325},{"name":"04_phase2_validation.json","path":"agents/invoice-processing/invoice_processing/data/agent_output/case_005/04_phase2_validation.json","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_005/04_phase2_validation.json","title":"Case_005 Skill","category":"anthropic-skill","format":"json","content":"# Case_005 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_005/04_phase2_validation.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_005/04_phase2_validation.json)","tokens":300,"sizeBytes":325},{"name":"05_phase3_validation.json","path":"agents/invoice-processing/invoice_processing/data/agent_output/case_005/05_phase3_validation.json","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_005/05_phase3_validation.json","title":"Case_005 Skill","category":"anthropic-skill","format":"json","content":"# Case_005 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_005/05_phase3_validation.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_005/05_phase3_validation.json)","tokens":300,"sizeBytes":325},{"name":"06_phase4_validation.json","path":"agents/invoice-processing/invoice_processing/data/agent_output/case_005/06_phase4_validation.json","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_005/06_phase4_validation.json","title":"Case_005 Skill","category":"anthropic-skill","format":"json","content":"# Case_005 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_005/06_phase4_validation.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_005/06_phase4_validation.json)","tokens":300,"sizeBytes":325},{"name":"07_transformation.json","path":"agents/invoice-processing/invoice_processing/data/agent_output/case_005/07_transformation.json","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_005/07_transformation.json","title":"Case_005 Skill","category":"anthropic-skill","format":"json","content":"# Case_005 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_005/07_transformation.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_005/07_transformation.json)","tokens":300,"sizeBytes":319},{"name":"08_decision.json","path":"agents/invoice-processing/invoice_processing/data/agent_output/case_005/08_decision.json","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_005/08_decision.json","title":"Case_005 Skill","category":"anthropic-skill","format":"json","content":"# Case_005 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_005/08_decision.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_005/08_decision.json)","tokens":300,"sizeBytes":307},{"name":"09_audit_log.json","path":"agents/invoice-processing/invoice_processing/data/agent_output/case_005/09_audit_log.json","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_005/09_audit_log.json","title":"Case_005 Skill","category":"anthropic-skill","format":"json","content":"# Case_005 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_005/09_audit_log.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_005/09_audit_log.json)","tokens":300,"sizeBytes":309},{"name":"Postprocessing_Data.json","path":"agents/invoice-processing/invoice_processing/data/agent_output/case_005/Postprocessing_Data.json","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_005/Postprocessing_Data.json","title":"Case_005 Skill","category":"anthropic-skill","format":"json","content":"# Case_005 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_005/Postprocessing_Data.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_005/Postprocessing_Data.json)","tokens":300,"sizeBytes":323},{"name":"comparison_results.json","path":"agents/invoice-processing/invoice_processing/data/comparison_results.json","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/comparison_results.json","title":"Data Skill","category":"anthropic-skill","format":"json","content":"# Data Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/comparison_results.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/comparison_results.json)","tokens":300,"sizeBytes":273},{"name":"rule_base.json","path":"agents/invoice-processing/invoice_processing/data/rule_base.json","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/rule_base.json","title":"Data Skill","category":"anthropic-skill","format":"json","content":"# Data Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/rule_base.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/rule_base.json)","tokens":300,"sizeBytes":255},{"name":"rule_discovery_cache.json","path":"agents/invoice-processing/invoice_processing/data/rule_discovery_cache.json","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/rule_discovery_cache.json","title":"Data Skill","category":"anthropic-skill","format":"json","content":"# Data Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/rule_discovery_cache.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/rule_discovery_cache.json)","tokens":300,"sizeBytes":277},{"name":"case_metadata.json","path":"agents/invoice-processing/invoice_processing/exemplary_data/case_001/case_metadata.json","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/exemplary_data/case_001/case_metadata.json","title":"Case_001 Skill","category":"anthropic-skill","format":"json","content":"# Case_001 Skill\n\nPath: `agents/invoice-processing/invoice_processing/exemplary_data/case_001/case_metadata.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/exemplary_data/case_001/case_metadata.json)","tokens":300,"sizeBytes":305},{"name":"Postprocessing_Data.json","path":"agents/invoice-processing/invoice_processing/exemplary_data/case_001/Postprocessing_Data.json","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/exemplary_data/case_001/Postprocessing_Data.json","title":"Case_001 Skill","category":"anthropic-skill","format":"json","content":"# Case_001 Skill\n\nPath: `agents/invoice-processing/invoice_processing/exemplary_data/case_001/Postprocessing_Data.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/exemplary_data/case_001/Postprocessing_Data.json)","tokens":300,"sizeBytes":317},{"name":"case_metadata.json","path":"agents/invoice-processing/invoice_processing/exemplary_data/case_002/case_metadata.json","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/exemplary_data/case_002/case_metadata.json","title":"Case_002 Skill","category":"anthropic-skill","format":"json","content":"# Case_002 Skill\n\nPath: `agents/invoice-processing/invoice_processing/exemplary_data/case_002/case_metadata.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/exemplary_data/case_002/case_metadata.json)","tokens":300,"sizeBytes":305},{"name":"Postprocessing_Data.json","path":"agents/invoice-processing/invoice_processing/exemplary_data/case_002/Postprocessing_Data.json","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/exemplary_data/case_002/Postprocessing_Data.json","title":"Case_002 Skill","category":"anthropic-skill","format":"json","content":"# Case_002 Skill\n\nPath: `agents/invoice-processing/invoice_processing/exemplary_data/case_002/Postprocessing_Data.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/exemplary_data/case_002/Postprocessing_Data.json)","tokens":300,"sizeBytes":317},{"name":"case_metadata.json","path":"agents/invoice-processing/invoice_processing/exemplary_data/case_005/case_metadata.json","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/exemplary_data/case_005/case_metadata.json","title":"Case_005 Skill","category":"anthropic-skill","format":"json","content":"# Case_005 Skill\n\nPath: `agents/invoice-processing/invoice_processing/exemplary_data/case_005/case_metadata.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/exemplary_data/case_005/case_metadata.json)","tokens":300,"sizeBytes":305},{"name":"Postprocessing_Data.json","path":"agents/invoice-processing/invoice_processing/exemplary_data/case_005/Postprocessing_Data.json","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/exemplary_data/case_005/Postprocessing_Data.json","title":"Case_005 Skill","category":"anthropic-skill","format":"json","content":"# Case_005 Skill\n\nPath: `agents/invoice-processing/invoice_processing/exemplary_data/case_005/Postprocessing_Data.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/exemplary_data/case_005/Postprocessing_Data.json)","tokens":300,"sizeBytes":317},{"name":"test_cases_summary.json","path":"agents/invoice-processing/invoice_processing/exemplary_data/test_cases_summary.json","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/exemplary_data/test_cases_summary.json","title":"Exemplary_data Skill","category":"anthropic-skill","format":"json","content":"# Exemplary_data Skill\n\nPath: `agents/invoice-processing/invoice_processing/exemplary_data/test_cases_summary.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/exemplary_data/test_cases_summary.json)","tokens":300,"sizeBytes":303},{"name":"invoice_master_data.yaml","path":"agents/invoice-processing/invoice_processing/shared_libraries/invoice_master_data.yaml","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/shared_libraries/invoice_master_data.yaml","title":"Shared_libraries Skill","category":"anthropic-skill","format":"yaml","content":"# Shared_libraries Skill\n\nPath: `agents/invoice-processing/invoice_processing/shared_libraries/invoice_master_data.yaml`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/shared_libraries/invoice_master_data.yaml)","tokens":300,"sizeBytes":311},{"name":"evaluation_scenarios_user_1.json","path":"agents/personalized-agent-swarms/evaluation_scenarios_user_1.json","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/personalized-agent-swarms/evaluation_scenarios_user_1.json","title":"Personalized-agent-swarms Skill","category":"anthropic-skill","format":"json","content":"# Personalized-agent-swarms Skill\n\nPath: `agents/personalized-agent-swarms/evaluation_scenarios_user_1.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/personalized-agent-swarms/evaluation_scenarios_user_1.json)","tokens":300,"sizeBytes":278},{"name":"evaluation_scenarios_user_2.json","path":"agents/personalized-agent-swarms/evaluation_scenarios_user_2.json","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/personalized-agent-swarms/evaluation_scenarios_user_2.json","title":"Personalized-agent-swarms Skill","category":"anthropic-skill","format":"json","content":"# Personalized-agent-swarms Skill\n\nPath: `agents/personalized-agent-swarms/evaluation_scenarios_user_2.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/personalized-agent-swarms/evaluation_scenarios_user_2.json)","tokens":300,"sizeBytes":278},{"name":"evaluation_scenarios_user_3.json","path":"agents/personalized-agent-swarms/evaluation_scenarios_user_3.json","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/personalized-agent-swarms/evaluation_scenarios_user_3.json","title":"Personalized-agent-swarms Skill","category":"anthropic-skill","format":"json","content":"# Personalized-agent-swarms Skill\n\nPath: `agents/personalized-agent-swarms/evaluation_scenarios_user_3.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/personalized-agent-swarms/evaluation_scenarios_user_3.json)","tokens":300,"sizeBytes":278},{"name":"evaluation_scenarios_user_4.json","path":"agents/personalized-agent-swarms/evaluation_scenarios_user_4.json","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/personalized-agent-swarms/evaluation_scenarios_user_4.json","title":"Personalized-agent-swarms Skill","category":"anthropic-skill","format":"json","content":"# Personalized-agent-swarms Skill\n\nPath: `agents/personalized-agent-swarms/evaluation_scenarios_user_4.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/personalized-agent-swarms/evaluation_scenarios_user_4.json)","tokens":300,"sizeBytes":278},{"name":"evaluation_scenarios_user_5.json","path":"agents/personalized-agent-swarms/evaluation_scenarios_user_5.json","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/personalized-agent-swarms/evaluation_scenarios_user_5.json","title":"Personalized-agent-swarms Skill","category":"anthropic-skill","format":"json","content":"# Personalized-agent-swarms Skill\n\nPath: `agents/personalized-agent-swarms/evaluation_scenarios_user_5.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/personalized-agent-swarms/evaluation_scenarios_user_5.json)","tokens":300,"sizeBytes":278},{"name":"profiles.json","path":"agents/personalized-agent-swarms/user_profiles/profiles.json","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/personalized-agent-swarms/user_profiles/profiles.json","title":"User_profiles Skill","category":"anthropic-skill","format":"json","content":"# User_profiles Skill\n\nPath: `agents/personalized-agent-swarms/user_profiles/profiles.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/personalized-agent-swarms/user_profiles/profiles.json)","tokens":300,"sizeBytes":256},{"name":".pre-commit-config.yaml","path":"gemini/agents/genai-experience-concierge/.pre-commit-config.yaml","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/gemini/agents/genai-experience-concierge/.pre-commit-config.yaml","title":"Genai-experience-concierge Skill","category":"anthropic-skill","format":"yaml","content":"# Genai-experience-concierge Skill\n\nPath: `gemini/agents/genai-experience-concierge/.pre-commit-config.yaml`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/gemini/agents/genai-experience-concierge/.pre-commit-config.yaml)","tokens":300,"sizeBytes":277},{"name":"SKILL.md","path":"search/gemini-enterprise/ge-demo-generator/agent_template/demo_skills/professional-document/SKILL.md","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/agent_template/demo_skills/professional-document/SKILL.md","title":"professional-document","category":"anthropic-skill","format":"markdown","content":"---\nname: professional-document\ndescription: Produce a formal business document as .docx (python-docx) or PDF (reportlab) - reports, proposals, briefings, one-pagers, meeting summaries. Use whenever the task asks for a written document, report file, proposal, or PDF. Covers structure, typography, build and delivery.\n---\n\n# Professional Document Builder\n\nProduce a business document that reads and looks like it was prepared by a\nprofessional analyst: clear structure, restrained typography, real numbers.\n\n## Language rule\n\nAll user-visible text in the document MUST be written in the same language\nas the task description you received. This skill's instructions are English,\nbut the deliverable follows the task's language.\n\n## Format choice\n\n- `.docx` (python-docx) when the reader may edit: proposals, drafts,\n  working reports. Default choice when the task does not specify.\n- PDF (reportlab, `platypus` flowables) when the task says PDF or the\n  document is final/customer-facing: signed proposals, formal briefings,\n  one-pagers.\n- Do NOT use weasyprint or LibreOffice conversion (system dependencies are\n  not guaranteed). reportlab and python-docx are pure-python and reliable.\n- CJK note (PDF only): reportlab's built-in fonts cannot render Japanese,\n  Chinese or Korean. For CJK text register a CID font first:\n  `from reportlab.pdfbase import pdfmetrics; from reportlab.pdfbase.cidfonts import UnicodeCIDFont; pdfmetrics.registerFont(UnicodeCIDFont('HeiseiKakuGo-W5'))`\n  and set that font on every style. python-docx handles CJK natively.\n\n## Process\n\n1. python-docx, reportlab and matplotlib are usually preinstalled by the\n   environment warm-up - try the import first; pip install only if missing.\n2. Draft the full document content in markdown first (`draft.md`). Get the\n   substance right before any formatting code.\n3. Convert the draft to the target format with a build script.\n4. Verify (below), fix, rebuild.\n5. Deliver (below).\n\n## Structure\n\nStandard business report skeleton - adapt, do not skip levels:\n\n1. Title block: document title, subtitle/purpose, date, author line\n   (the requesting organization, not you). Documents longer than ~6 pages\n   get a cover page plus a table of contents built from the headings.\n2. Executive summary: 3-6 sentences a busy executive could read alone -\n   the key finding, the number that matters, the recommendation.\n3. Body sections (3-6): each opens with a one-sentence takeaway in bold,\n   followed by supporting analysis, tables and figures.\n4. Recommendations / next steps: numbered, concrete, each with an owner\n   or function and a timeframe where possible.\n5. Appendix (optional): methodology, data notes, detailed tables.\n\nOne-pagers compress the same skeleton to: title block, summary paragraph,\n3-4 key points with numbers, recommendation box.\n\n## Typography and layout\n\n- One font family throughout. Body 10.5-11pt, line spacing 1.15-1.3.\n- Heading hierarchy: H1 16-18pt bold, H2 13-14pt bold, H3 11pt bold.\n  Use color `#1A2B4A` for headings, near-black `#222222` for body.\n- Margins: 2.0-2.5 cm all around. Page numbers in the footer from page 2.\n- Numbers that carry the argument go in bold; do not bold whole sentences.\n- Tables: bold header row with a light fill (`#F2F5FA`), thin borders,\n  right-align numeric columns, thousands separators.\n- Charts: matplotlib PNGs at 150+ dpi, sized to the text column width,\n  numbered captions below (Figure 1: ...). Same palette as the tables.\n- Charts with non-Latin labels (Japanese etc.): matplotlib's default font\n  has no CJK glyphs (hollow boxes). Register a font first - for Japanese:\n  pip install japanize-matplotlib, then import japanize_matplotlib once.\n  For other scripts register a Noto Sans font via\n  matplotlib.font_manager.fontManager.addfont(). Verify the rendered PNG\n  has no hollow-box glyphs before embedding it.\n- Never fake letterhead or signatures.\n\n## Content quality bar\n\n- Every claim backed by the provided data or explicitly sourced web\n  research (cite source name + URL inline or in the appendix).\n- Round numbers for readability; keep raw precision in appendix tables.\n- No filler phrases. Cut any sentence that does not inform a decision.\n\n## Verification (mandatory)\n\n- docx: re-open with python-docx; assert heading structure exists and all\n  planned sections are present and non-empty.\n- PDF: re-open with `pypdf` (usually preinstalled by warm-up); assert\n  expected page count (>= 1) and that extracted text contains the section\n  headings AND the CJK strings you wrote (garbled fonts extract as empty\n  or replacement characters - if a heading is missing, fix the font).\nFix and rebuild until clean. At least one full review-and-rebuild pass is\nmandatory: re-read the built document against the task's stated quality\nconditions before delivering.\n\n## Delivery\n\n1. Save with a descriptive filename, e.g. `supplier_risk_briefing.pdf`.\n2. If the task provided an upload URL for deliverables, upload with:\n   `curl -sS -X PUT --upload-file <file> -H \"Content-Type: <mime>\" \"<upload_url>\"`\n   (docx mime: `application/vnd.openxmlformats-officedocument.wordprocessingml.document`,\n   pdf mime: `application/pdf`). Retry once on failure.\n3. In your final report, state the filename, page/section count, and\n   reproduce the executive summary verbatim.\n","frontmatter":{"name":"professional-document","description":"Produce a formal business document as .docx (python-docx) or PDF (reportlab) - reports, proposals, briefings, one-pagers, meeting summaries. Use whenever the task asks for a written document, report file, proposal, or PDF. Covers structure, typography, build and delivery."},"isInternal":false,"tokens":1244,"sizeBytes":5307},{"name":"SKILL.md","path":"search/gemini-enterprise/ge-demo-generator/agent_template/demo_skills/professional-presentation/SKILL.md","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/agent_template/demo_skills/professional-presentation/SKILL.md","title":"professional-presentation","category":"anthropic-skill","format":"markdown","content":"---\nname: professional-presentation\ndescription: Build a professional, executive-quality presentation deck (.pptx) with python-pptx. Use whenever the task asks for slides, a deck, a board/executive presentation, or a pitch. Covers design system, slide patterns, build process, and delivery.\n---\n\n# Professional Presentation Builder\n\nBuild a polished 16:9 widescreen deck that looks like it came from a top-tier\nconsulting firm, using python-pptx. Follow this process end to end.\n\n## Language rule\n\nAll user-visible text on the slides (titles, body, labels, notes) MUST be\nwritten in the same language as the task description you received. This\nskill's instructions are English, but the deliverable follows the task's\nlanguage.\n\n## Process\n\n1. python-pptx and matplotlib are usually preinstalled by the environment\n   warm-up - try the import first; `pip install python-pptx` only if missing.\n2. Plan the storyline BEFORE writing code. A board-grade deck is:\n   title -> agenda -> EXECUTIVE SUMMARY (the conclusion and top 3 findings\n   stated up front, one slide) -> 3-5 content sections, each opened by a\n   minimal section-divider slide (section number + assertion title on a\n   Primary-dark background) -> recommendations/next steps.\n   One message per slide. Write the full outline to `outline.md` first.\n3. Build the deck with a single Python script (see `scripts/build_deck.py`\n   for a working scaffold you should copy and adapt).\n4. Render, open-check (see Verification), fix, repeat.\n5. Deliver (see Delivery).\n\nAdd speaker notes (`slide.notes_slide.notes_text_frame.text`) to the\nexecutive summary and each section's key slide: 2-3 sentences of what to\nSAY, not a repeat of the slide text.\n\n## Design system\n\nApply these rules in code; never rely on template defaults.\n\n- Slide size: 16:9 (13.333 x 7.5 inches). Set explicitly:\n  `prs.slide_width = Inches(13.333)`, `prs.slide_height = Inches(7.5)`.\n- Color palette (define once as constants):\n  - Primary dark `#1A2B4A` (titles, header bars)\n  - Accent `#2E6FDB` (highlights, chart series, key numbers)\n  - Secondary accent `#E8A33D` (callouts, deltas - use sparingly)\n  - Body text `#333F50`, muted `#8A93A6`, background `#FFFFFF`,\n    light panel `#F2F5FA`\n- Typography: one sans-serif family throughout (Arial is always available).\n  Title 30-34pt bold, section header 24-28pt, body 14-18pt, captions 11-12pt.\n  Never go below 11pt. Max ~5 bullets per slide, max ~12 words per bullet.\n- Layout grid: 0.6in outer margins. Title zone is the top 1.2in. Content\n  sits on an invisible 12-column grid; prefer two-column layouts\n  (text + visual) over full-width walls of text.\n- Every content slide gets a thin accent rule (a 0.03in high rectangle in\n  Primary dark) under the title.\n- Big-number slides: one KPI per panel, number at 40-54pt in Accent,\n  label at 12pt muted, arranged in 2-4 equal panels.\n- Charts: prefer generating chart images with matplotlib (same palette,\n  no gridline clutter, direct labels instead of legends where possible,\n  150+ dpi PNG) and placing them with `add_picture`. Native pptx charts\n  are acceptable for simple bar/line.\n- Charts with non-Latin text (Japanese, Chinese, Korean, ...): matplotlib's\n  default font has NO CJK glyphs - labels render as hollow boxes. BEFORE\n  rendering any chart whose labels are not pure ASCII, register a matching\n  font. For Japanese the fastest reliable path is:\n      pip install japanize-matplotlib\n      import japanize_matplotlib   # once, right after importing matplotlib\n  For other scripts, download a Noto Sans font that covers the language,\n  register it with matplotlib.font_manager.fontManager.addfont(path), and\n  set rcParams[\"font.family\"] to it. AFTER rendering, re-open the PNG and\n  verify no glyph appears as a hollow box before placing it on a slide.\n- Tables: header row filled Primary dark with white bold text, body rows\n  alternating white / light panel, 11-12pt.\n- Footer on every slide except the title: short deck title left, slide\n  number right, 10pt muted.\n\n## Content quality bar\n\n- Slide titles are ASSERTIONS, not topics (\"Revenue grew 18% on repeat\n  customers\", not \"Revenue\"). A reader should get the argument from\n  titles alone.\n- Use real numbers from the provided data. Round for readability\n  (12.4M, 18%, 3.2x). Never invent figures.\n- End with a \"Next steps\" or \"Recommendations\" slide containing concrete,\n  owner-assignable actions.\n\n## Verification (mandatory)\n\nAfter building, re-open the file with python-pptx and assert:\n- expected slide count;\n- no text frame overflows its shape (compare text length vs shape size\n  heuristically) and no shape extends beyond slide bounds;\n- every slide has a non-empty title, and content slides have the footer\n  with the correct slide number;\n- iterate every run in every text frame and confirm no character rendered\n  from a missing font path (for CJK decks: the deck font must cover the\n  script; re-check chart PNGs for hollow-box glyphs).\nFix any issue and rebuild. At least one full review-and-rebuild pass is\nmandatory even when the first build looks fine: re-read the deck against\nthe task's stated quality conditions before delivering.\n\n## Delivery\n\n1. Save as a descriptive filename, e.g. `q3_revenue_review.pptx`.\n2. If the task provided an upload URL for deliverables, upload with:\n   `curl -sS -X PUT --upload-file <file> -H \"Content-Type: application/vnd.openxmlformats-officedocument.presentationml.presentation\" \"<upload_url>\"`\n   Retry once on failure.\n3. In your final report, state the filename, slide count, and a one-line\n   summary of each slide.\n","frontmatter":{"name":"professional-presentation","description":"Build a professional, executive-quality presentation deck (.pptx) with python-pptx. Use whenever the task asks for slides, a deck, a board/executive presentation, or a pitch. Covers design system, slide patterns, build process, and delivery."},"isInternal":false,"tokens":1379,"sizeBytes":5584},{"name":"a2ui_catalog.md","path":"search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/references/a2ui_catalog.md","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/references/a2ui_catalog.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# References Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/references/a2ui_catalog.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/references/a2ui_catalog.md)","tokens":300,"sizeBytes":321},{"name":"data_generation.md","path":"search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/references/data_generation.md","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/references/data_generation.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# References Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/references/data_generation.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/references/data_generation.md)","tokens":300,"sizeBytes":327},{"name":"datastore_connectors.md","path":"search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/references/datastore_connectors.md","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/references/datastore_connectors.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# References Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/references/datastore_connectors.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/references/datastore_connectors.md)","tokens":300,"sizeBytes":337},{"name":"demo_prompts_guide.md","path":"search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/references/demo_prompts_guide.md","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/references/demo_prompts_guide.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# References Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/references/demo_prompts_guide.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/references/demo_prompts_guide.md)","tokens":300,"sizeBytes":333},{"name":"deployment_and_iam.md","path":"search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/references/deployment_and_iam.md","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/references/deployment_and_iam.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# References Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/references/deployment_and_iam.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/references/deployment_and_iam.md)","tokens":300,"sizeBytes":333},{"name":"external_files_and_drive.md","path":"search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/references/external_files_and_drive.md","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/references/external_files_and_drive.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# References Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/references/external_files_and_drive.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/references/external_files_and_drive.md)","tokens":300,"sizeBytes":345},{"name":"mcp_catalog.md","path":"search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/references/mcp_catalog.md","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/references/mcp_catalog.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# References Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/references/mcp_catalog.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/references/mcp_catalog.md)","tokens":300,"sizeBytes":319},{"name":"multi_agent_architecture.md","path":"search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/references/multi_agent_architecture.md","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/references/multi_agent_architecture.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# References Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/references/multi_agent_architecture.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/references/multi_agent_architecture.md)","tokens":300,"sizeBytes":345},{"name":"SKILL.md","path":"search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/SKILL.md","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/SKILL.md","title":"ge-demo-generator","category":"anthropic-skill","format":"markdown","content":"---\nname: ge-demo-generator\ndescription: Synthesizes and deploys complete, domain-specific Gemini Enterprise demo environments directly to Google Cloud. Use when the user asks to create an AI agent demo for any customer domain (e.g. 'example.com', 'example.co.jp', 'example.de', 'example.fr' - any company, any industry, any region) or business goal, generate realistic BigQuery/Firestore sample datasets, create external demo files (PDF, Excel, scanned images), stage them in Cloud Storage and upload them to the deploying account's Google Drive, scaffold ADK multi-agent architectures with MCP tools and A2UI cards, deploy to Cloud Run, publish to Gemini Enterprise, and generate 7 structured demo prompts in any language. Confirms the requirements interactively and presents a demo architecture & data model plan (Mermaid ER diagram, external file lineage, target project) for approval before anything is deployed. Also triggered by /ge-demo-generator.\nmetadata:\n  author: Google Cloud Customer Engineering\n  version: 2.30.1\n---\n\n# GE Demo Generator Skill (v2.30.1)\n\nSynthesizes production-grade, domain-tailored AI agent demo environments using **Gemini 3.8 Flash** for reasoning and **Gemini 3.1 Flash Image** for visual generation, adhering to a strict **6-step infrastructure dependency graph**, rich **A2UI interactive component streaming**, **Google Workspace OAuth authorization**, **external sample files staged in Cloud Storage and, when the credentials carry the Drive scope, in the deploying account's Google Drive**, **7 structured demo prompts**, **automated browser video recording & Remotion highlight reel delivery to Google Drive**, and **global multilingual localization (i18n/l10n)**.\n\n---\n\n## 🌐 Multilingual Support & Localization Architecture (i18n/l10n)\n\nThe skill is implemented entirely in **English** at the system specification and codebase layer, while providing **complete, dynamic multilingual support** for any enterprise domain worldwide:\n\n1. **Automatic Language & Locale Detection**:\n   - **From Domain TLD**:\n     - `.co.jp`, `.jp`, `.ne.jp`, `.or.jp` ➔ Japanese (`日本語`, `locale: \"ja\"`, `currency: \"JPY\"`, `symbol: \"¥\"`)\n     - `.de` ➔ German (`Deutsch`, `locale: \"de\"`, `currency: \"EUR\"`, `symbol: \"€\"`)\n     - `.fr` ➔ French (`Français`, `locale: \"fr\"`, `currency: \"EUR\"`, `symbol: \"€\"`)\n     - `.es` ➔ Spanish (`Español`, `locale: \"es\"`, `currency: \"EUR\"`, `symbol: \"€\"`)\n     - `.it` ➔ Italian (`Italiano`, `locale: \"it\"`, `currency: \"EUR\"`, `symbol: \"€\"`)\n     - `.cn`, `.tw` ➔ Chinese (`中文`, `locale: \"zh\"`, `currency: \"CNY\"/\"TWD\"`)\n     - `.kr` ➔ Korean (`한국어`, `locale: \"ko\"`, `currency: \"KRW\"`, `symbol: \"₩\"`)\n     - `.br` ➔ Portuguese (`Português`, `locale: \"pt\"`, `currency: \"BRL\"`, `symbol: \"R$\"`)\n     - `.co.uk`, `.com.au`, `.com`, `.io`, `.org`, etc. ➔ English (`locale: \"en\"`, `currency: \"USD\"/\"GBP\"`)\n   - **From User Interaction**:\n     - If the user provides a prompt in Japanese, all user-facing demo assets are synthesized in Japanese. If in German, all in German.\n\n2. **Strict Language Consistency Rule (MANDATORY)**:\n   - ALL user-facing text elements MUST strictly match the detected target language:\n     - Company overview & operational challenges.\n     - Table and column business descriptions (harvested into Knowledge Catalog).\n     - CSV string values (product names, category names, person names, address strings, remarks).\n     - External files: PDF title, body sections, audit summary tables; Excel headers, KPI cards, and notes; Scanned image prompts and handwritten ink text values.\n     - System instructions (`businessInstruction`), Welcome Card greeting, and A2UI Button labels.\n     - The 7 Structured Demo Prompts (`demoGuide`).\n   - **Technical Names Isolation**: Table names, column names, and primary/foreign key ID fields (e.g. `order_id`, `supplier_id`) MUST always remain in English `snake_case` for database engine stability and SQL parser reliability.\n   - **Currency symbol**: write the detected symbol to `.env` as `CURRENCY_SYMBOL` (e.g. `CURRENCY_SYMBOL=¥`). The A2UI few-shot examples ship with a literal `[CURRENCY]` placeholder instead of a hardcoded symbol; `setup_and_deploy.sh` substitutes it before the image is built and aborts the deploy if any occurrence survives. Defaults to `$` when unset.\n\n---\n\n## Complete Lifecycle & Infrastructure Dependency Graph\n\n```\nPhase 1: Customer Domain & Business Goal Research (Search Grounding & Language Detection)\n   ↓\nPhase 2: Requirements confirmed interactively ➔ Demo Architecture & Data Model Plan ➔ APPROVAL\n   ↓\nPhase 3: Synthetic Data & External Sample Files Generation (PDF, Excel, Images) + Google Drive Upload (Step 1/6)\n   ↓\nPhase 4: ADK Multi-Agent Project Scaffolding & A2UI System Prompts\n   ↓\nPhase 5: Ordered Cloud Provisioning & Deployment:\n   ├── Step 1: BigQuery (with Knowledge Catalog Metadata) & Firestore Initial Data\n   ├── Step 2: Agent Engine Sandbox (Code Execution Environment) [CRITICAL DEPENDENCY]\n   ├── Step 3: Data Viewer Dashboard Cloud Run Deployment (Gets VIEWER_URL)\n   ├── Step 4: Main Multi-Agent Cloud Run Deployment (Injects SANDBOX_RESOURCE_NAME & VIEWER_URL)\n   └── Step 5: Background Task Pub/Sub Push Subscription (/execute_task & SELF_URL)\n   ↓\nPhase 6: Gemini Enterprise App Discovery, Workspace Authorization & Registration (Step 6/6)\n   ↓\nPhase 7: Comprehensive Results Output:\n   ├── 💬 Direct Gemini Enterprise Console Chat Link\n   ├── 📁 External Sample Files: Cloud Storage links, plus Drive links when the upload ran\n   ├── 📊 Firestore Data Viewer Dashboard Link\n   ├── 🔎 BigQuery Console Link\n   └── 🎯 7 Structured Demo Prompts Playbook (Localized to Target Language)\n   ↓\nPhase 8: Automated Browser Demo Video Production & Drive Delivery (Optional)\n   ├── Step 1: Playwright CDP Screen Recording of GE Web UI (Prompt 1, 3, 4)\n   ├── Step 2: Google Cloud TTS Narration Audio & Subtitle Timecodes\n   ├── Step 3: Remotion Programmatic Video Composition (Dynamic Camera, 4x Fast-Forward, Pure Voice Narration)\n   └── Step 4: Google Drive Upload to Demo Folder & Sharable Link\n```\n\n---\n\n## Phase 1: Customer Domain & Business Goal Research\n\n1. **Extract Domain & Company**:\n   - If a domain is provided (e.g., `example.com`, `example.co.jp`, `example.de`), determine company name, primary industry, and regional language from the domain itself — never from a list baked into this skill.\n   - If a business goal or company name is provided, identify the corresponding corporate entity and language.\n\n2. **Grounded Deep Research (via `search_web`)**:\n   - Search for the company's latest corporate profile, business units, IR reports, and known operational challenges.\n   - Identify:\n     - **3-5 Key Business Challenges** (e.g., \"yield rate drop in semiconductor fabrication\", \"supply chain lead-time anomalies\").\n     - **5-8 Operational Workflows** and evaluate which ones are **automatable** with AI agents.\n     - **Authentic Domain Entities & Nomenclature** (e.g., real facility names like \"Kumamoto Technology Center\", actual product codes, industry status codes).\n\n3. **Interactive Use Case Selection (Customer Domain Selection Flow)**:\n   - Present the research findings to the user in their language:\n     - 🏢 **Company Profile**: Official name, summary, primary industry.\n     - ⚠️ **Key Business Challenges**: 3-5 detected operational pain points.\n     - 🎯 **Candidate Workflows**: 3-5 top automatable workflows with automation feasibility ratings.\n   - **Prompt the user to select or customize the use case**:\n     - Use `ask_question` or present a structured choice so the user can pick the target scenario or write in specific requirements.\n\n---\n\n## Phase 2: Requirements Alignment & Demo Architecture Plan (Approval Gate)\n\nPhase 2 has two steps, in this order and never merged into one:\n\n**Step 2.1 — ask** the handful of questions the design genuinely depends on, interactively.\n**Step 2.2 — show** the finished design brief as the alignment artifact, and ask for a go.\n\nThe order is what makes the brief worth reading. A brief that still contains open questions\nis a questionnaire, and the user has to hold the design in their head while answering it; a\nbrief written *after* the answers is a mirror — the user is checking whether what you\nunderstood matches what they meant, which is a much easier thing to do and the last cheap\nmoment to change the entities, the narrative, the file lineage or the target project.\n\nUntil the user approves the brief, **nothing is created** — no CSVs, no Drive folder, no\nBigQuery dataset, no Cloud Run service. Everything after this point takes 15-30 minutes and\nspends real quota in someone's project.\n\n### Step 2.1 — Confirm the requirements interactively\n\nAsk only what you cannot responsibly decide, and ask it *before* writing the brief. Keep it\nshort — two to four questions, batched into one message (`ask_question` where available), each\nwith a stated default so the user can answer \"all defaults\" in three words:\n\n1. **Anchor persona** — who is the primary user of this agent (job title, and a sentence of\n   context if useful)? That persona becomes the demo's protagonist: the agent is framed as\n   *their* process operator, prompt 1 opens from their daily situation, approval gates are\n   decisions they or their manager own, and every other persona appears only as a hand-off\n   counterpart. If the user declines, rotate personas freely instead.\n2. **Scope of the narrative** — which single process instance the demo follows, if Phase 1\n   left more than one plausible reading of the chosen scenario.\n3. **Advanced settings** — ask about the two or three the demo is a plausible candidate for\n   (Workspace OAuth when the scenario touches Gmail/Drive/Calendar, `rag` when it turns on\n   documents rather than numbers, `dataScale` when the narrative claims enterprise volume),\n   and say the rest keep their defaults. Keep the *question* short — brief section 6 lists\n   every option with its resolved value, so nothing is hidden by asking about a few. Add\n   **a warm Cloud Run instance** (`MIN_INSTANCES=1`) to that question whenever the user has\n   named a date, an audience or a live session: it is the one option that is about the\n   *presentation* rather than the demo, and the only thing that removes the cold start — and\n   the occasional cold-start error — from the first message. Offer it with its price in the\n   same breath (see brief section 6).\n4. **Target environment** — only if what `gcloud` reports (read it now, see below) is not\n   obviously the project the user means.\n\nAnything the user has already stated — in the original request or in Phase 1 — is *decided*.\nRe-asking it reads as not having listened.\n\n**Zero-Touch Environment, Project & IAM Pre-flight Probe**:\n\nRead and verify the target environment before writing the brief, ensuring zero-touch deployment readiness so the brief's section 5 states verified facts rather than unvalidated assumptions:\n\n```bash\n# 1. Target Project Resolution:\n#    - If the user explicitly specified a project ID in their request (TARGET_PROJECT), align gcloud to it.\n#    - If the user did NOT specify a project ID and the internal project provisioner\n#      ($SKILL_DIR/templates/scripts/internal/create_project.sh) is available, default to\n#      proposing automatic creation of a new dedicated project (AUTO_CREATE_PROJECT=true),\n#      while recording any existing gcloud config project (CURRENT_PROJECT) as an alternative.\nTARGET_PROJECT=\"${TARGET_PROJECT:-}\"\nCURRENT_PROJECT=$(gcloud config get-value project 2>/dev/null || echo \"\")\nAUTO_CREATE_PROJECT=\"false\"\nPROPOSED_PROJECT_PATTERN=\"\"\n\nif [ -n \"$TARGET_PROJECT\" ]; then\n  if [ \"$CURRENT_PROJECT\" != \"$TARGET_PROJECT\" ]; then\n    gcloud config set project \"$TARGET_PROJECT\" >/dev/null 2>&1 || true\n  fi\n  PROJECT_ID=\"$TARGET_PROJECT\"\nelif [ -f \"$SKILL_DIR/templates/scripts/internal/create_project.sh\" ] &&\n  PROBE_OUT=$(bash \"$SKILL_DIR/templates/scripts/internal/create_project.sh\" --probe \"${DOMAIN_SLUG:-demo}\" 2>/dev/null) &&\n  echo \"$PROBE_OUT\" | grep -q \"^AUTO_PROJECT_AVAILABLE=true$\"; then\n  AUTO_CREATE_PROJECT=\"true\"\n  PROPOSED_PROJECT_PATTERN=$(echo \"$PROBE_OUT\" | sed -n 's/^PROPOSED_PROJECT_PATTERN=//p')\n  PROJECT_ID=\"${PROPOSED_PROJECT_PATTERN}\"\nelse\n  PROJECT_ID=\"$CURRENT_PROJECT\"\nfi\n\n# 2. Account Verification & Auto-Discovery: probe project access when using an existing project\nGCP_ACCOUNT=$(gcloud config get-value account 2>/dev/null || echo \"Unknown\")\nif [ \"$AUTO_CREATE_PROJECT\" != \"true\" ] && [ -n \"$PROJECT_ID\" ]; then\n  if ! gcloud projects describe \"$PROJECT_ID\" >/dev/null 2>&1; then\n    for acc in $(gcloud auth list --format=\"value(account)\" 2>/dev/null); do\n      if gcloud projects describe \"$PROJECT_ID\" --account=\"$acc\" >/dev/null 2>&1; then\n        gcloud config set account \"$acc\" >/dev/null 2>&1 || true\n        GCP_ACCOUNT=\"$acc\"\n        break\n      fi\n    done\n  fi\n  PROJECT_NUMBER=$(gcloud projects describe \"$PROJECT_ID\" --format=\"value(projectNumber)\" 2>/dev/null || echo \"\")\nelse\n  PROJECT_NUMBER=\"auto-provisioned in Phase 3\"\nfi\nREGION=${CLOUD_RUN_REGION:-\"asia-northeast1\"}\n\n# 3. Google Drive Scope Pre-flight\nDRIVE_OK=$(curl -s -o /dev/null -w '%{http_code}' \\\n  -H \"Authorization: Bearer $(gcloud auth print-access-token 2>/dev/null)\" \\\n  'https://www.googleapis.com/drive/v3/about?fields=user')\n```\n\n`DRIVE_OK` is `200` when the Drive copy will happen, and the owner is `${GCP_ACCOUNT}` — the\nsame account, because the upload uses this token. Anything else (usually `403`, a token\ncarrying no Drive scope, which is what a plain `gcloud auth login` gives you) means **this\ndemo will have no Google Drive copy of the sample documents at all**. That is a fact the\nbrief has to state, not discover at deploy time — see brief sections 3 and 5. It is also one\ncommand to fix, so say it now: `gcloud auth login --enable-gdrive-access --no-launch-browser` (using `--no-launch-browser` since an agentic IDE terminal usually has no local browser), then re-read.\n\nThe demo video follows the same account. `generate_and_upload_external_files.py` records the\nDrive owner in `drive_upload_summary.json`, and the video delivery reads it, so the recording\nlands in the same folder as the documents it is a recording of. See\n`skills/ge-demo-video/SKILL.md`, Phase 6, for the full precedence.\n\n#### Multi-OS Google Cloud Authentication & Setup Protocol\nBefore proceeding with deployment, verify both user CLI authentication (`gcloud auth print-access-token`) and Application Default Credentials (`gcloud auth application-default print-access-token`). If missing or expired:\n- **Interactive TTY Mode (`[ -t 0 ]`)**: The script automatically detects the host OS environment, prints the tailored authentication commands, and pauses (`read -p`), allowing the user to authenticate in a separate terminal or browser window and resume seamlessly by pressing Enter.\n- **Non-Interactive / CI Mode**: Strictly fail-fast (Exit 1) with descriptive error logs and the single command to resume.\n- **Host OS Detection & Authentication Matrix**:\n\n  | Host OS / Environment | Detection Signal | Authentication Commands | Notes |\n  |---|---|---|---|\n  | **Linux / Remote VM (Headless)** | No `$DISPLAY`, SSH, or Cloud Shell | `gcloud auth login --enable-gdrive-access --no-launch-browser`<br>`gcloud auth application-default login --no-launch-browser`<br>`gcloud auth application-default set-quota-project $PROJECT_ID` | Copy verification URL to local browser, sign in, and paste auth code back. |\n  | **macOS (Terminal / iTerm)** | `uname -s == Darwin` | `gcloud auth login --enable-gdrive-access`<br>`gcloud auth application-default login`<br>`gcloud auth application-default set-quota-project $PROJECT_ID` | Browser opens automatically for OAuth consent. |\n  | **Windows (WSL / WSL2)** | `/proc/version` contains `microsoft` or `wsl` | `gcloud auth login --enable-gdrive-access`<br>`gcloud auth application-default login`<br>`gcloud auth application-default set-quota-project $PROJECT_ID` | If browser interop is disabled, append `--no-launch-browser`. |\n  | **Linux Desktop (GUI)** | Linux with active `$DISPLAY` | `gcloud auth login --enable-gdrive-access`<br>`gcloud auth application-default login`<br>`gcloud auth application-default set-quota-project $PROJECT_ID` | Browser opens automatically for OAuth consent. |\n\n- **Quota Project Auto-Configuration**: The deployment script and self-healing engine automatically execute `gcloud auth application-default set-quota-project $PROJECT_ID` to prevent HTTP 403 `PERMISSION_DENIED: The discoveryengine.googleapis.com API requires a quota project`.\n\n#### Deployer IAM Audit & Autonomous Self-Healing Protocol\nTo guarantee a seamless zero-touch deployment, probe whether the deploying account `${GCP_ACCOUNT}` possesses the necessary permissions on `${PROJECT_ID}`:\n\n1. **Owner / IAM Admin Auto-Healing**:\n   - Check if `${GCP_ACCOUNT}` is Project Owner, Editor, or has Project IAM Admin on `${PROJECT_ID}`.\n   - If `${GCP_ACCOUNT}` has IAM administrative privileges but lacks specific service roles (or if granular roles are in use), **automatically grant missing deployment roles** before starting deployment:\n```text\ngcloud projects add-iam-policy-binding \"$PROJECT_ID\" \\\n  --member=\"user:$GCP_ACCOUNT\" \\\n  --role=\"roles/run.admin\" --condition=None\n\ngcloud projects add-iam-policy-binding \"$PROJECT_ID\" \\\n  --member=\"user:$GCP_ACCOUNT\" \\\n  --role=\"roles/discoveryengine.admin\" --condition=None\n\ngcloud projects add-iam-policy-binding \"$PROJECT_ID\" \\\n  --member=\"user:$GCP_ACCOUNT\" \\\n  --role=\"roles/bigquery.admin\" --condition=None\n\ngcloud projects add-iam-policy-binding \"$PROJECT_ID\" \\\n  --member=\"user:$GCP_ACCOUNT\" \\\n  --role=\"roles/iam.serviceAccountUser\" --condition=None\n```\n\n2. **Non-Admin Permission Denial Handling (Zero-Touch Guidance)**:\n   - If `${GCP_ACCOUNT}` lacks `roles/resourcemanager.projectIamAdmin` or `roles/owner` and `gcloud projects describe` or service checks return `PERMISSION_DENIED`:\n   - **DO NOT** stop with a vague error or ask the user to manually run setup scripts in their terminal.\n   - Present the exact, copy-pasteable command for their Google Cloud Project Administrator:\n     ```text\n     gcloud projects add-iam-policy-binding \"$PROJECT_ID\" \\\n       --member=\"user:$GCP_ACCOUNT\" \\\n       --role=\"roles/owner\"\n     ```\n   - Prompt the user interactively (using `ask_question` if available) to notify their administrator or switch accounts (`gcloud config set account <admin-account>`), then cleanly re-test and proceed with automated deployment.\n\n3. **Capsule / Sandbox Policy Detection**:\n   - If `${PROJECT_ID}` starts with `cpl-*` or `mpl-*` (Google Cloud Capsule or restricted sandbox), inspect whether organizational policy constraints (such as `constraints/run.allowedIngress` or Service Directory restrictions) are active. Warn the user before data generation so expectations match sandbox capabilities.\n\n### Step 2.2 — Present the Demo Architecture & Data Model Plan\n\nOne message, six sections, in this order, then the gate. Every answer from Step 2.1 is already\nfolded in — the brief **states** decisions, it does not ask for them, and it contains no\n\"tell me which…\" or \"TBD\" anywhere.\n\nWrite it in **the demo's language** (§ i18n above) — headings, table headers and prose alike.\nOnly the technical identifiers stay English `snake_case`: table names, column names and\n`.env` keys.\n\nOpen with a title line naming the company and the selected scenario, so the brief is\nself-contained when it is pasted into a chat with a colleague:\n\n> ### 🏗️ `<Company>` — Demo Architecture & Data Model Plan\n> Based on the selected scenario **\"`<scenario>`\"**, here is the data layer design, the\n> Mermaid ER diagram and the cross-source reconciliation lineage.\n\n### § Brief section 1 — 🏢 Target Company & Demo Overview\n\n- **Company / group**: official name, and the group entity the demo actually models.\n- **Industry**: the specific one, in the company's own vocabulary.\n- **Demo narrative**: 2-3 sentences following **one** business process instance (one\n  problematic order, one flagged application) end to end, naming the departments it passes\n  through. All 7 demo prompts later trace this same instance; see\n  `references/demo_prompts_guide.md` §1.1-§1.2.\n- **Anchor persona**: the persona confirmed in Step 2.1, stated as a fact (\"the agent is\n  operated by the production control manager of the main works\"). If the user declined to\n  name one, say that personas rotate instead — do not re-ask here.\n\n### § Brief section 2 — 📊 Data Layer Design & Mermaid ER Diagram\n\n- **Render a Mermaid `erDiagram`** in a ```mermaid fenced block: every table, every column\n  with its type, `PK`/`FK` markers, cardinality labels on each relationship, and a short\n  business gloss in quotes after each column (`string order_id PK \"order number (ORD-2026-XXXX)\"`).\n  The gloss is the same sentence that later becomes the column description in the Knowledge\n  Catalog, so writing it here is not duplicated work.\n- Include the Firestore task collection as an entity too — it is part of the model the demo\n  reasons over, even though it is not in BigQuery.\n- **Shared core-system model**: design the tables as a slice of the company's system of\n  record, not one team's dataset — a transactional table two departments both write, a\n  rules/threshold table owned by one department that another's workflow must consult, and\n  an audit seed visible only when the departments' views are joined. Details and the\n  single-department escape hatch: `references/data_generation.md` §1.3.\n\n### § Brief section 3 — 📁 External Sample Files & Cross-Source Lineage\n\nTitle this section after where the files will actually be, not after where people assume they\ngo. Cloud Storage is the only guaranteed destination (below), so a heading that says \"Google\nDrive\" is wrong in every run whose token lacks the Drive scope — and it was, in most of them.\n\nA table with one row per external file — type, filename, and what binds it to BigQuery:\n\n| External file | Filename | Content & data binding |\n|---|---|---|\n| 📄 PDF audit report | `<domain>_audit_report.pdf` | which tables it summarizes, and the deliberate 5-15% variance that makes cross-source reconciliation necessary |\n| 📊 Excel ledger | `<domain>_external_ledger.xlsx` | which FK column it joins on, and the row count |\n| 🖼️ Scanned form 1 | `handwritten_order_1.jpg` | what the form is, in-domain, generated by `gemini-3.1-flash-image` |\n| 🖼️ Scanned form 2 | `handwritten_order_2.jpg` | the second form, and the discrepancy it carries |\n\nState the join key explicitly. A lineage row that says \"related to orders\" is not a design —\nthe whole point of the external files is that a question can only be answered by reading a\ndocument *and* querying a table, and that only works if the keys line up (70%+ FK match,\n5-15% audit variance). See `references/external_files_and_drive.md`.\n\nClose the section with where the files will actually live, in one line, because it is the\npart users assume wrongly. Write the line that matches the `DRIVE_OK` read above:\n\n| `DRIVE_OK` | The line to write |\n| --- | --- |\n| `200` | Staged to `gs://<project>-<domain>-<suffix>-docs/` **and** uploaded at deploy time to the Google Drive of `${GCP_ACCOUNT}`, which owns the folder. |\n| anything else | Staged to `gs://<project>-<domain>-<suffix>-docs/`. **No Google Drive copy** — this machine's `gcloud` credentials carry no Drive scope, so a Drive or Sheets step in the demo script would find nothing. |\n\nThe Cloud Storage staging happens in **both** `mcp` and `rag` mode; the deploy-time upload is\nthe *only* path into any Drive. The deployed agent has no way to put them in anyone's Drive —\nv2.11.0 removed the in-conversation import, deliberately. If the user wants them in Drive and\n`DRIVE_OK` is not `200`, say so here, while it can still be sorted out\n(`gcloud auth login --enable-gdrive-access --no-launch-browser` and re-run, or upload `./external_files/` by hand\nafterwards).\n\n### § Brief section 4 — 🤖 Agent Profile & Runtime\n\n- **Agent Name (`DEMO_DISPLAY_NAME`)**: Concise 2–4 word domain role (e.g. `TWG Tea Retail Operations Director`, `Mercari Trust & Safety Specialist`). Registered in Gemini Enterprise as `${DEMO_DISPLAY_NAME} (${SERVICE_NAME})`, matching the Web UI (GAS) version.\n- **Description (`DEMO_DESCRIPTION`)**: Concrete, professional 1–2 sentence mission summary specifying the business domain, core datasets, and operational goals (e.g. `Orchestrates boutique inventory balancing, central commissary replenishment, and plantation harvest orders across Singapore.`). Matches `oneSentenceSummary` in the Web UI (GAS).\n- **Reasoning / orchestration**: **`gemini-3.8-flash`** for all agent instances (Root Coordinator, Deep Analysis Sub-Agent, Background Worker).\n- **Image generation**: **`gemini-3.1-flash-image`** (with localized prompt reinforcement and GCS artifact persistence).\n- **Code execution**: Agent Engine Sandbox (`us-central1` — fixed, not `$REGION`).\n- **UI**: Gemini Enterprise A2UI v0.9 composite catalog (name the components this demo will actually lean on — `MaterialTable`, `VegaChart`, `MaterialCard`).\n\n### § Brief section 5 — ⚙️ Deployment Target Environment\n\nShow what the commands above returned, verbatim, in a fenced block:\n\n```\n👤 Active User Account : ${GCP_ACCOUNT}\n🏢 Target Project      : ${PROJECT_ID} (${PROJECT_NUMBER})\n🌐 Target Region       : ${REGION}\n🛡️ Deployer IAM Status  : Verified (Owner/Admin) / Auto-healed\n🗂️ Sample File Storage : gs://${PROJECT_ID}-<domain>-<suffix>-docs/\n📁 Google Drive Copy   : <the DRIVE_OK line, below>\n```\n\nWhen `AUTO_CREATE_PROJECT=\"true\"` (because the user did not specify a project in\ntheir prompt and the internal project provisioner is available), render the `🏢\nTarget Project` line as: `Auto-create new project (${PROPOSED_PROJECT_PATTERN})`\n— and if `CURRENT_PROJECT` was non-empty, append `[or reuse existing gcloud\nconfig project: ${CURRENT_PROJECT}]` so the user can choose to reuse\n`CURRENT_PROJECT` in the approval prompt if they prefer. Do not create the\nproject during Phase 2; actual creation runs at the start of Phase 3 after user\napproval.\n\nThis is the section users most often stop on, because the answer is frequently \"wrong\nproject\". Do not paraphrase the values and do not print a project the user named unless\n`gcloud` agrees — the deploy will use what `gcloud` says, not what the brief claims.\n\nBoth storage lines are mandatory, and neither is optional wording: the Cloud Storage bucket is\ncreated in every mode, and the Drive line is the one users read as a promise. Write it from\n`DRIVE_OK`, never from intent:\n\n| `DRIVE_OK` | `📁 Google Drive Copy` |\n| --- | --- |\n| `200` | `Google Drive of ${GCP_ACCOUNT}` |\n| anything else | `none - these credentials have no Drive scope (fix: gcloud auth login --enable-gdrive-access --no-launch-browser)` |\n\nNever print a Drive destination the deploy cannot reach, and never describe the copy as\nsomething the agent will do later — nothing after the deploy writes to a Drive. See\n`references/external_files_and_drive.md` §5.\n\n### § Brief section 6 — 🎛️ Advanced Settings & Integrations\n\n   State the settings **this** demo will deploy with — the answers from Step 2.1, plus the\n   defaults for everything the user did not touch. These names are the `.env` keys,\n   upper-snake-cased: `enableManagedAgent` is `ENABLE_MANAGED_AGENT`. Every one of them is a\n   real switch in the deployed container, so an option discussed here but not written to\n   `.env` is a feature the demo will not have.\n\n   **List all eleven, every time**, in this order, with the value this deploy will use in the\n   second column — `✅ true` / `❌ false` / the literal value / `— (unset)`. An option the\n   brief leaves out is an option the user cannot ask for: they do not know it exists, and by\n   the time the deploy banner mentions it the 15-30 minutes are already spent. The gate is the\n   last cheap moment to turn one on, so the gate has to show the whole board. Keep the third\n   column as written here — it is what makes a `false` decidable rather than merely visible —\n   and reword only where this demo's scenario changes what an option would buy.\n\n   | Option | This demo | Default | What it buys, and what it costs |\n   |---|---|---|---|\n   | 🤖 `enableManagedAgent` | `<value>` | **`true`** | Agent Engine Sandbox code execution, asynchronous background delegation (`delegate_autonomous_task`), scheduled tasks and Drive deliverable exports. The delegation prompts in the demo playbook exercise this, which is why it is the one default-on capability. Adds ~8-10 min of provisioning, overlapped with the rest of the deploy. |\n   | 📡 `enableCloudTelemetry` | `<value>` | **`true`** | OpenTelemetry Cloud Trace instrumentation. Fully tracks per-turn LLM token consumption (`input_tokens`, `output_tokens`), latency breakdown waterfall, and tool execution. PII-safe via `NO_CONTENT` (zero chat prompt text transmitted), 0ms warm-turn overhead (async background batching), and free under monthly Cloud Trace quota. Set to `false` to opt out. |\n   | 🛡️ `enableModelArmor` | `<value>` | `false` | Vertex AI Agent Platform Model Armor integration. Enforces prompt injection & jailbreak defense, automatic sensitive data protection (SDP credentials/PII masking), and RAI safety filters. Auto-provisions and binds `ge-demo-default-armor` in `us-central1` if no custom template is specified. |\n   | 🔎 `dataExplorationMode` | `<value>` | **`mcp`** | How the agent reads the demo's data. **`mcp`** (default) provisions no search index: the data-asset catalog is already in the agent's system instruction, so a figure question is *one* `execute_sql` call — the four-to-five round trips people blame on \"no index\" came from the metadata expedition in front of the query, and the mcp routing block overrides exactly that. **`rag`** additionally builds a Discovery Engine index over the BigQuery dataset and the staged files and makes it the read path: lookups and document questions return in one sub-second `search_datastore` call, while computed figures, joins and every write stay on MCP because the index lags the tables. Pick `rag` when the demo turns on documents rather than on numbers, and note it also attaches data stores to the (often shared) Gemini Enterprise app — see `references/datastore_connectors.md`. |\n   | 📁 `enableDatastoreFs` | `<value>` | `false` | When `dataExplorationMode=rag`, provisions a semi-structured Discovery Engine DataStore (`ds-${SERVICE_NAME}-fs`) from `FIRESTORE_COLLECTION` via `FirestoreSource` (GCS export staging). Enables semantic search over historical incident tickets, resolved remediation logs, and SOP archives. Note: live task mutations, approvals, and Operations Viewer synchronization continue to use Firestore MCP for sub-100ms real-time state tracking. |\n   | 🔑 `enableWorkspaceAuth` | `<value>` | `false` | User-OAuth passthrough — the agent acts as the signed-in user for the Drive handoff and Workspace token plumbing. Commonly wanted, since Workspace is usually available in the target environment, but **not** default-on: some organizations refuse to authorize an OAuth client they have not vetted, and there sign-in fails for every demo user. Confirm the target org permits it before enabling. |\n   | 🔑 `enableWorkspaceMcp` | `<value>` | `false` | **Advanced, rarely used.** Adds the Gmail / Drive / Calendar / Docs / Chat MCP toolsets on top of the auth passthrough. The Workspace MCP servers are Developer Preview and the project must be allowlisted first — enable it without that and every Workspace call 403s. Kept separate from `enableWorkspaceAuth` for exactly this reason. |\n   | 🖥️ `enableComputerUse` | `<value>` | `false` | Headless browser automation (Playwright). Also requires uncommenting the Playwright block in **both** `requirements.txt` and the `Dockerfile`; the deploy pre-flights this and refuses a half-configured build. |\n   | 📦 `customMcpRepos` | `<value>` | empty | Third-party MCP servers. Both GitHub sidecars and remote managed servers (Slack included — it is one entry in this list, not a flag of its own) go here. |\n   | 🌐 `publicDatasetId` | `<value>` | unset | Ground the demo in a real BigQuery public dataset (e.g. NOAA Weather, Google Trends) alongside the synthetic data. |\n   | 📈 `dataScale` | `<value>` | unset (hero rows only) | Row count to grow the fact tables to before loading — thousands to tens of thousands. You still write only the 50-200 hero rows the demo script names; `scripts/amplify_data.py` expands the tables around them deterministically, keeping the hero rows verbatim and foreign keys intact. Ask for it when the narrative claims enterprise volume or the demo opens with an aggregate — a `COUNT(*)` of 63 undercuts both. Costs ~10-30s of setup and a longer Discovery Engine ingest. |\n\nOnly list the options that are on, plus the two or three the demo is a plausible candidate\nfor. A user reading eight defaults they did not ask about is a user who skims the whole brief.\n\n**One more switch, and it is deliberately not in that table** — it is not an `.env` key and it\nchanges nothing inside the container. Cloud Run scales this demo to zero when nobody is talking\nto it, which is why an idle demo costs nothing, and why the first message after an idle gap\nwaits ~20-25s for a cold start and can come back as an error instead: Cloud Run sometimes\nrefuses a request outright while the container is still starting. Deploying with\n`MIN_INSTANCES=1` — the environment variable `setup_and_deploy.sh` reads in Step 4/6, exported\nbefore the deploy runs — keeps one instance always up and removes both.\n\nState it as a line under the table when you offer it, with the price attached rather than in a\nfootnote:\n\n> 🔥 **Warm instance** — `MIN_INSTANCES=1` · default `0` (scale-to-zero). No cold start and no\n> cold-start error on the first message. **Cost:** one 8 GiB / 2 vCPU instance is then billed\n> continuously for as long as the demo exists — not just during the presentation.\n\nThe honest default is `0`: for a demo deployed now and shown next week, sending the first\nmessage twice is far cheaper than a week of idle billing. It is also not a decision that has to\nbe made now — it is read at deploy time, so re-running the deploy with the variable set (or\nunset) flips an existing demo either way.\n\n### § The gate — ask once, then stop\n\nClose the message by triggering an interactive approval and option selection modal using the `ask_question` tool (with plain text fallback only if `ask_question` is not supported in the active environment). This allows the user to review all capabilities and toggle any extra features directly:\n\n- Call `ask_question` with `is_multi_select: true`:\n  - `question`: \"Do you approve this architecture and deployment plan? Select '(Recommended) Proceed with default configuration' to start deployment immediately, or check any additional options you want enabled:\" (in the demo's language)\n  - `options`:\n    1. `\"(Recommended) Proceed with default configuration (Managed Agent: Enabled, Cloud Trace Telemetry: Enabled, other options: default)\"`\n    2. `\"🛡️ Enable Model Armor Guardrails (Auto-provisions and binds ge-demo-default-armor in us-central1 for jailbreak defense and PII masking)\"`\n    3. `\"🔑 Enable Google Workspace OAuth (Drive/Slides/Docs export as signed-in user)\"`\n    4. `\"🔎 Enable RAG Data Exploration Mode (Build Discovery Engine search index for document & table reads)\"`\n    5. `\"📁 Enable Firestore DataStore (Semantic search over historical tickets & SOPs in RAG mode)\"`\n    6. `\"🔥 Enable Warm Instance (Cloud Run min-instances=1 to eliminate cold-start delay)\"`\n    7. `\"🖥️ Enable Computer Use (Gemini 3.8 Flash Chromium browser automation)\"`\n    8. `\"📈 Enable Enterprise Data Scale (Grow fact tables to thousands of rows via amplify_data.py)\"`\n    9. `\"📡 Disable Cloud Trace Telemetry (Opt-out from OpenTelemetry token & latency tracking)\"`\n\n- In non-interactive or headless environments where `ask_question` is unavailable, output the equivalent choices in chat text and pause for user reply.\n- When the user selects options, update `.env` (`ENABLE_MODEL_ARMOR=1`, `ENABLE_WORKSPACE_AUTH=1`, `ENABLE_CLOUD_TELEMETRY=0`, `DATA_EXPLORATION_MODE=rag`, etc.) and deployment flags accordingly before proceeding to Phase 3.\n\nThen **stop and wait**. Do not start Phase 3 in the same turn, and do not treat \"looks good\" on\na *previous* message — the scenario choice in Phase 1 or an answer in Step 2.1 — as approval of\nthis brief.\n\nWhen the user changes something, re-render the affected sections and ask again; an approved\nbrief is the specification the rest of the run is built from, so it has to be the version the\nuser actually said yes to.\n\n---\n\n## Phase 3: Synthetic Data & External Sample Files Generation + Google Drive Upload\n\n**Entry condition: the Phase 2 brief was presented in full and the user approved it.** If you\narrive here without that, go back and present it.\n\n1. **Provision the Target Project (if `AUTO_CREATE_PROJECT=true`) and Derive Identifiers**:\n   ```bash\n   # If the approved Phase 2 brief selected automatic project creation, provision the\n   # new dedicated Google Cloud project now (before any BigQuery/Firestore/Drive steps),\n   # wait for IAM propagation, configure gcloud + ADC quota project, and persist\n   # PROJECT_ID and AUTO_CREATED_PROJECT=\"true\" into .env.\n   if [ \"${AUTO_CREATE_PROJECT:-false}\" = \"true\" ] &&\n     [ -f \"$SKILL_DIR/templates/scripts/internal/create_project.sh\" ]; then\n     . \"$SKILL_DIR/templates/scripts/internal/create_project.sh\"\n     ge_internal_create_project \"$DOMAIN_SLUG\" \".env\"\n   fi\n\n   SUFFIX=$(date +%s | tail -c 5)\n   DEMO_ID=\"${DOMAIN_SLUG}-${SUFFIX}\"\n   SERVICE_NAME=\"ge-demo-${DOMAIN_SLUG}-${SUFFIX}\"\n   DATASET_ID=\"demo_${DOMAIN_SLUG}_${SUFFIX}\"\n   FIRESTORE_COLLECTION=\"demo-${DOMAIN_SLUG}-${SUFFIX}-tasks\"\n\n   # Set concrete, domain-specific display name & description (matching Web UI / GAS version)\n   DEMO_DISPLAY_NAME=\"${COMPANY_NAME} ${AGENT_ROLE:-Operations Specialist}\"\n   DEMO_DESCRIPTION=\"Orchestrates ${SCENARIO_SUMMARY:-operations and intelligent data analytics} across ${COMPANY_NAME}.\"\n   ```\n   *Always write `DEMO_DISPLAY_NAME` and `DEMO_DESCRIPTION` into `.env` so `setup_and_deploy.sh` and `register_agent.py` register the agent with concrete domain details.*\n\n2. **Generate Real-World Synthetic Data & Display Previews**:\n   - Generate CSV files with realistic addresses, valid foreign keys across tables, and varied statuses in `data/<table_name>.csv`.\n   - Ensure all string data is generated in the detected target language.\n   - Run validation script: `python3 scripts/validate_csv.py data/*.csv`.\n   - **Render Dataset Preview & Record Counts**: Output a Dataset Summary Table with total generated record counts for each BigQuery table, Firestore collection, and external Drive file, followed by 3–5 representative sample rows per table in clean Markdown preview tables (or `<carousel>` sliders) clearly indicating the total row count in each table title.\n   - Write one line of grain per table into `data/<table_name>_description.txt` (\"one row per\n     POS transaction line\", \"one row per store\"). The deploy folds it, the column\n     descriptions from `data/<table_name>_schema.json`, the row counts and the real date\n     range of every date column into `adk_agent/app/data_assets.md` — the DATA ASSET CATALOG\n     the agent's prompt is written around. Skipping the grain line costs only that line;\n     skipping the column descriptions costs the agent its schema.\n\n2b. **Amplify to Demo Volume (only when `dataScale` was agreed in Phase 2)**:\n- Do **not** try to write thousands of rows yourself. Write the 50-200 hero rows as\n  above — the ones the demo prompts name by id — and let the amplifier expand the\n  tables around them. It resamples each column from what the hero rows already show,\n  draws foreign keys from the parent table's amplified key set, and keeps the hero\n  rows verbatim at the top of every file, so every id a prompt refers to still resolves.\n- Write `data/data_scale_spec.json` with a per-table `target_rows` map. Describe a\n  column only where the hero rows misrepresent it — in practice that means date\n  columns, because hand-written rows cluster into one week while the narrative spans\n  a fiscal year. Everything you leave out is inferred. See the module docstring of\n  `scripts/amplify_data.py` for the format and for the two things the spec will not do.\n  ```bash\n  python3 scripts/amplify_data.py --data-dir ./data --spec ./data/data_scale_spec.json\n  for f in data/*.csv; do case \"$f\" in *.hero.csv) ;; *) python3 scripts/validate_csv.py \"$f\" ;; esac; done\n  ```\n- Alternatively set `DATA_SCALE=<rows>` in `.env` and let the deploy run it: the step\n  is idempotent and deterministic, so doing it in both places is harmless.\n- Report the amplified counts in the Dataset Summary Table, and say which tables were\n  left at hero size — master data that the narrative describes as small must stay small.\n- `python3 scripts/amplify_data.py --data-dir ./data --restore` puts the hero CSVs back.\n\n3. **Generate External Sample Files & Upload Directly to Google Drive**:\n   - Synthesize external demo files in `./external_files/`:\n     1. **PDF Audit Report** (`<domain>_audit_report.pdf`): Multi-section structured document in target language with summary, details, and intentional 5-15% variance from BigQuery to trigger cross-source reasoning.\n     2. **Excel Spreadsheet Ledger** (`<domain>_external_ledger.xlsx`): Semi-structured workbook with localized KPI headers, units, and 40-80 transaction rows with FK references matching BigQuery tables.\n     3. **Simulated Operational Document Images** (`handwritten_order_1.jpg`, `handwritten_order_2.jpg`): Realistic scanned forms generated via `gemini-3.1-flash-image` with localized text.\n   - **Upload to Google Drive**:\n     ```bash\n     uv run --isolated --no-project \\\n       --with \"openpyxl>=3.1.0,<4.0.0\" \\\n       --with \"reportlab>=4.0.0,<6.0.0\" \\\n       --with \"pillow>=10.0.0,<13.0.0\" \\\n       python3 scripts/generate_and_upload_external_files.py \\\n       --domain \"$DOMAIN_SLUG\" \\\n       --company \"$COMPANY_NAME\" \\\n       --suffix \"$SUFFIX\" \\\n       --outdir \"./external_files\" \\\n       --spec-file \"./data/external_files_spec.json\"\n     ```\n     - `--spec-file` carries THIS demo's content (titles, sections, table rows, and the\n       `style` wording for the scanned forms), written in the demo's own language and\n       domain. Without it the script emits generic placeholder documents - it holds no\n       built-in industry content by design.\n     - Creates dedicated Drive folder: `GE Demo - <Company Name> (<Suffix>)`, reusing one\n       of that name if a previous run already made it.\n     - Uploads `.pdf`, `.xlsx`, and `.jpg` files.\n     - Saves links to `external_files/drive_upload_summary.json` and creates `.url.json` artifacts.\n     - **The folder is owned by `${GCP_ACCOUNT}`** — the upload is a Drive v3 REST call\n       carrying this machine's own `gcloud` access token, so the account deploying the\n       demo owns what it creates and nothing has to be shared with it. Report that owner\n       and the folder URL. The script also asks for \"anyone with the link (Reader)\" as a\n       convenience; plenty of organizations refuse it, in which case the summary carries\n       `share_error` and the banner notes `ℹ️ LINK SHARING OFF` — the owner can still open\n       everything, so this is a footnote, not a failure.\n     - When the token has no Drive scope the upload is skipped and the summary carries\n       `upload_skipped_reason`. The documents are not lost — `setup_and_deploy.sh` stages\n       every file to `gs://$GCS_BUCKET_NAME/` in **both** data-exploration modes — but\n       there will be no Drive folder, and nothing downstream creates one: report the\n       skip and its reason on the completion screen, point at the Cloud Storage links,\n       and give the fix, which is one command — `gcloud auth login --enable-gdrive-access --no-launch-browser`\n       and re-run, or upload `./external_files/` by hand. See\n       `references/external_files_and_drive.md` §5.\n\n4. **Provision BigQuery Dataset & Tables (Step 1/6)** (Idempotent + Knowledge Catalog Metadata):\n   ```bash\n   # US, not $REGION: a dataset's location is fixed at creation, the Discovery\n   # Engine BigQuery connector imports from a global datastore, and the public\n   # datasets a demo may join against (bigquery-public-data) live in US.\n   bq show \"${PROJECT_ID}:${DATASET_ID}\" >/dev/null 2>&1 || bq --location=US mk -d \"${PROJECT_ID}:${DATASET_ID}\"\n   for f in data/*.csv; do\n     tbl=$(basename \"$f\" .csv)\n     bq load --source_format=CSV --autodetect --skip_leading_rows=1 --replace \"${DATASET_ID}.${tbl}\" \"$f\"\n     if [ -f \"data/${tbl}_schema.json\" ]; then\n       bq update \"${DATASET_ID}.${tbl}\" \"data/${tbl}_schema.json\" >/dev/null 2>&1 || true\n     fi\n   done\n   ```\n\n5. **Initialize Firestore Collection**:\n   - Write 5-10 initial operational documents - task queues, anomalies, approvals pending -\n     to `data/firestore_seed.json` as a list of `{\"id\": ..., \"data\": {...}}` objects, in the\n     demo's own language and domain, then upload them:\n     ```bash\n     uv run --isolated --no-project --with \"google-cloud-firestore>=2.16.0,<3.0.0\" \\\n       --with \"google-api-core>=2.28.0,<2.35.0\" \\\n       python3 scripts/setup_fs.py \\\n       --collection \"$FIRESTORE_COLLECTION\" \\\n       --docs ./data/firestore_seed.json\n     ```\n   - `scripts/setup_fs.py` holds no seed content itself; see its module docstring for the\n     expected document shape.\n\n---\n\n## Phase 4: ADK Multi-Agent Project Scaffolding & System Instructions\n\nScaffold the project in `./ge-demo-<domain>-<suffix>/`.\n\n**Do not retype these files.** Copy them from this skill's `templates/` directory, which is\nthe single source of truth for every scaffolded file, then edit only the placeholders each\nfile marks. `templates/` mirrors the tree below one-for-one (`templates/agent.py` ->\n`adk_agent/app/agent.py`, `templates/scripts/` -> `scripts/`, and so on):\n\n```\nge-demo-<domain>-<suffix>/\n├── adk_agent/\n│   ├── __init__.py            # empty; makes adk_agent importable as a package\n│   └── app/\n│       ├── __init__.py\n│       ├── agent.py           # Triple-Agent (gemini-3.8-flash) + Code Executor + A2UI System Prompts\n│       ├── tools.py           # MCP Toolsets + gemini-3.1-flash-image generate_image tool\n│       ├── part_converters.py # A2A <-> Gen AI DataPart Converters\n│       ├── fast_api_app.py    # A2A Server + A2UI StreamParser + Token Middleware + /execute_task\n│       ├── data_assets.md     # DATA ASSET CATALOG (written at deploy time; do not hand-edit)\n│       ├── catalogs/          # A2UI v0.9 Gemini Enterprise composite catalog\n│       └── examples/0.9/      # A2UI few-shot example surfaces\n├── viewer_app/                # Real-Time Operations Viewer Flask App\n│   ├── main.py\n│   └── requirements.txt\n├── data/                      # Generated CSV files + Knowledge Catalog schemas\n├── external_files/            # Generated PDF, Excel & Scanned Images\n├── scripts/\n│   ├── managed_agent_instruction.txt # Autonomous sandbox agent's system instruction\n│   ├── validate_csv.py        # CSV formatting & schema auto-repair\n│   ├── amplify_data.py        # Grows hero CSVs to demo volume (deterministic, FK-safe)\n│   ├── build_data_catalog.py  # CSVs -> adk_agent/app/data_assets.md (the agent's schema)\n│   ├── generate_and_upload_external_files.py # External files & Google Drive uploader\n│   ├── setup_fs.py            # Firestore seed documents\n│   ├── setup_datastores.py    # Discovery Engine DataStore creation & import\n│   ├── register_agent.py      # Gemini Enterprise agent registration\n│   ├── create_managed_agent.py / warmup_managed_agent.py # Agent Engine managed agent\n│   ├── dep_smoke_test.py      # Pinned-dependency import smoke test\n│   ├── preflight_check.py     # Pre-deploy static checks\n│   ├── verify_and_heal.py     # Post-deploy verification & auto-repair\n│   └── cleanup.sh             # One-click teardown (Cloud Run, Agent Engine Sandbox, Managed Agent, BQ, FS, GCS)\n├── .env                       # Configuration shared by setup_and_deploy.sh and cleanup.sh\n│                              # (full key reference: references/deployment_and_iam.md §3)\n├── Dockerfile                 # Multi-stage container build\n├── requirements.txt           # Python dependencies\n└── setup_and_deploy.sh        # Standalone reproducible deployment script (strictly ordered)\n```\n\n**Two files carry this demo's domain knowledge and BOTH must be filled in:**\n\n1. `adk_agent/app/agent.py` - the `gen_instruction` block, marked\n   `TEMPLATE PLACEHOLDER`. This is the conversational agent's business context.\n2. `scripts/managed_agent_instruction.txt` - the same context for the autonomous\n   sandbox agent, in its `[BUSINESS_CONTEXT]` slot. Leave the file untouched and\n   `enableManagedAgent` - the one default-on capability - is *silently skipped*\n   at deploy time, taking `delegate_autonomous_task` and demo prompts 5 and 7\n   with it. `[DATASET_ID]` and `[COLLECTION_ID]` are substituted by\n   `setup_and_deploy.sh`; leave those alone. When a Workspace, computer-use or\n   operating-model option is on, the matching block has to be added too - see\n   `references/multi_agent_architecture.md` §4.\n\n### Critical A2UI System Instruction Requirements (v0.9 Composite Catalog)\n1. **Output Placement Rule (Rule #0)**: Any text in the same response turn as a tool call is hidden. Only output `🔍 Analyzing...` during tool execution. Final analytical reports, A2UI cards, and chips MUST appear in a separate turn with ZERO tool calls.\n2. **Mandatory A2UI Cards (v0.9 Standard)**: Plain text markdown tables and bullet lists are forbidden for data presentation. Wrap results in `<a2ui-json> ... </a2ui-json>` using `MaterialCard`, `MaterialTabs`, `MaterialTable`, `VegaChart`, `Materi","frontmatter":{"name":"ge-demo-generator","description":"Synthesizes and deploys complete, domain-specific Gemini Enterprise demo environments directly to Google Cloud. Use when the user asks to create an AI agent demo for any customer domain (e.g. 'example.com', 'example.co.jp', 'example.de', 'example.fr' - any company, any industry, any region) or business goal, generate realistic BigQuery/Firestore sample datasets, create external demo files (PDF, Excel, scanned images), stage them in Cloud Storage and upload them to the deploying account's Google Drive, scaffold ADK multi-agent architectures with MCP tools and A2UI cards, deploy to Cloud Run, publish to Gemini Enterprise, and generate 7 structured demo prompts in any language. Confirms the requirements interactively and presents a demo architecture & data model plan (Mermaid ER diagram, external file lineage, target project) for approval before anything is deployed. Also triggered by /ge-demo-generator.","metadata":{"author":"Google Cloud Customer Engineering","version":"2.30.1"}},"isInternal":false,"tokens":12115,"sizeBytes":50705},{"name":"README.md","path":"search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/demo_skills/README.md","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/demo_skills/README.md","title":"Demo_skills Skill","category":"anthropic-skill","format":"markdown","content":"# Demo_skills Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/demo_skills/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/demo_skills/README.md)","tokens":300,"sizeBytes":332},{"name":"action_plan.json","path":"search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/action_plan.json","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/action_plan.json","title":"0.9 Skill","category":"anthropic-skill","format":"json","content":"# 0.9 Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/action_plan.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/action_plan.json)","tokens":300,"sizeBytes":340},{"name":"analysis_summary_card.json","path":"search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/analysis_summary_card.json","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/analysis_summary_card.json","title":"0.9 Skill","category":"anthropic-skill","format":"json","content":"# 0.9 Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/analysis_summary_card.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/analysis_summary_card.json)","tokens":300,"sizeBytes":360},{"name":"batch_editor.json","path":"search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/batch_editor.json","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/batch_editor.json","title":"0.9 Skill","category":"anthropic-skill","format":"json","content":"# 0.9 Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/batch_editor.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/batch_editor.json)","tokens":300,"sizeBytes":342},{"name":"before_after_comparison.json","path":"search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/before_after_comparison.json","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/before_after_comparison.json","title":"0.9 Skill","category":"anthropic-skill","format":"json","content":"# 0.9 Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/before_after_comparison.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/before_after_comparison.json)","tokens":300,"sizeBytes":364},{"name":"calendar_event_compose.json","path":"search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/calendar_event_compose.json","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/calendar_event_compose.json","title":"0.9 Skill","category":"anthropic-skill","format":"json","content":"# 0.9 Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/calendar_event_compose.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/calendar_event_compose.json)","tokens":300,"sizeBytes":362},{"name":"canvas_report.json","path":"search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/canvas_report.json","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/canvas_report.json","title":"0.9 Skill","category":"anthropic-skill","format":"json","content":"# 0.9 Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/canvas_report.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/canvas_report.json)","tokens":300,"sizeBytes":344},{"name":"chat_compose.json","path":"search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/chat_compose.json","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/chat_compose.json","title":"0.9 Skill","category":"anthropic-skill","format":"json","content":"# 0.9 Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/chat_compose.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/chat_compose.json)","tokens":300,"sizeBytes":342},{"name":"chat_conversation_list.json","path":"search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/chat_conversation_list.json","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/chat_conversation_list.json","title":"0.9 Skill","category":"anthropic-skill","format":"json","content":"# 0.9 Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/chat_conversation_list.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/chat_conversation_list.json)","tokens":300,"sizeBytes":362},{"name":"comparison_matrix.json","path":"search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/comparison_matrix.json","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/comparison_matrix.json","title":"0.9 Skill","category":"anthropic-skill","format":"json","content":"# 0.9 Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/comparison_matrix.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/comparison_matrix.json)","tokens":300,"sizeBytes":352},{"name":"complex_confirmation_card.json","path":"search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/complex_confirmation_card.json","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/complex_confirmation_card.json","title":"0.9 Skill","category":"anthropic-skill","format":"json","content":"# 0.9 Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/complex_confirmation_card.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/complex_confirmation_card.json)","tokens":300,"sizeBytes":368},{"name":"contact_list.json","path":"search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/contact_list.json","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/contact_list.json","title":"0.9 Skill","category":"anthropic-skill","format":"json","content":"# 0.9 Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/contact_list.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/contact_list.json)","tokens":300,"sizeBytes":342},{"name":"delete_surface_example.json","path":"search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/delete_surface_example.json","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/delete_surface_example.json","title":"0.9 Skill","category":"anthropic-skill","format":"json","content":"# 0.9 Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/delete_surface_example.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/delete_surface_example.json)","tokens":300,"sizeBytes":362},{"name":"detail_modal.json","path":"search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/detail_modal.json","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/detail_modal.json","title":"0.9 Skill","category":"anthropic-skill","format":"json","content":"# 0.9 Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/detail_modal.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/detail_modal.json)","tokens":300,"sizeBytes":342},{"name":"drive_file_compose.json","path":"search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/drive_file_compose.json","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/drive_file_compose.json","title":"0.9 Skill","category":"anthropic-skill","format":"json","content":"# 0.9 Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/drive_file_compose.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/drive_file_compose.json)","tokens":300,"sizeBytes":354},{"name":"drive_file_list.json","path":"search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/drive_file_list.json","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/drive_file_list.json","title":"0.9 Skill","category":"anthropic-skill","format":"json","content":"# 0.9 Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/drive_file_list.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/drive_file_list.json)","tokens":300,"sizeBytes":348},{"name":"email_compose.json","path":"search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/email_compose.json","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/email_compose.json","title":"0.9 Skill","category":"anthropic-skill","format":"json","content":"# 0.9 Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/email_compose.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/email_compose.json)","tokens":300,"sizeBytes":344},{"name":"event_list.json","path":"search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/event_list.json","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/event_list.json","title":"0.9 Skill","category":"anthropic-skill","format":"json","content":"# 0.9 Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/event_list.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/event_list.json)","tokens":300,"sizeBytes":338},{"name":"iframe_dashboard.json","path":"search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/iframe_dashboard.json","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/iframe_dashboard.json","title":"0.9 Skill","category":"anthropic-skill","format":"json","content":"# 0.9 Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/iframe_dashboard.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/iframe_dashboard.json)","tokens":300,"sizeBytes":350},{"name":"image_report.json","path":"search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/image_report.json","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/image_report.json","title":"0.9 Skill","category":"anthropic-skill","format":"json","content":"# 0.9 Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/image_report.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/image_report.json)","tokens":300,"sizeBytes":342},{"name":"interactive_form.json","path":"search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/interactive_form.json","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/interactive_form.json","title":"0.9 Skill","category":"anthropic-skill","format":"json","content":"# 0.9 Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/interactive_form.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/interactive_form.json)","tokens":300,"sizeBytes":350},{"name":"maps_place_card.json","path":"search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/maps_place_card.json","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/maps_place_card.json","title":"0.9 Skill","category":"anthropic-skill","format":"json","content":"# 0.9 Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/maps_place_card.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/maps_place_card.json)","tokens":300,"sizeBytes":348},{"name":"profile_analysis_dashboard.json","path":"search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/profile_analysis_dashboard.json","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/profile_analysis_dashboard.json","title":"0.9 Skill","category":"anthropic-skill","format":"json","content":"# 0.9 Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/profile_analysis_dashboard.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/profile_analysis_dashboard.json)","tokens":300,"sizeBytes":370},{"name":"ranking_table.json","path":"search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/ranking_table.json","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/ranking_table.json","title":"0.9 Skill","category":"anthropic-skill","format":"json","content":"# 0.9 Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/ranking_table.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/ranking_table.json)","tokens":300,"sizeBytes":344},{"name":"README.md","path":"search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/README.md","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/README.md","title":"0.9 Skill","category":"anthropic-skill","format":"markdown","content":"# 0.9 Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/README.md)","tokens":300,"sizeBytes":326},{"name":"status_dashboard.json","path":"search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/status_dashboard.json","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/status_dashboard.json","title":"0.9 Skill","category":"anthropic-skill","format":"json","content":"# 0.9 Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/status_dashboard.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/status_dashboard.json)","tokens":300,"sizeBytes":350},{"name":"suggestion_chips.json","path":"search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/suggestion_chips.json","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/suggestion_chips.json","title":"0.9 Skill","category":"anthropic-skill","format":"json","content":"# 0.9 Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/suggestion_chips.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/suggestion_chips.json)","tokens":300,"sizeBytes":350},{"name":"tabbed_comparison.json","path":"search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/tabbed_comparison.json","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/tabbed_comparison.json","title":"0.9 Skill","category":"anthropic-skill","format":"json","content":"# 0.9 Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/tabbed_comparison.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/examples/0.9/tabbed_comparison.json)","tokens":300,"sizeBytes":352},{"name":"package-lock.json","path":"search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/video/package-lock.json","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/video/package-lock.json","title":"Video Skill","category":"anthropic-skill","format":"json","content":"# Video Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/video/package-lock.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/video/package-lock.json)","tokens":300,"sizeBytes":330},{"name":"package.json","path":"search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/video/package.json","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/video/package.json","title":"Video Skill","category":"anthropic-skill","format":"json","content":"# Video Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/video/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/video/package.json)","tokens":300,"sizeBytes":320},{"name":"manifest.json","path":"search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/video/src/manifest.json","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/video/src/manifest.json","title":"Src Skill","category":"anthropic-skill","format":"json","content":"# Src Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/video/src/manifest.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/video/src/manifest.json)","tokens":300,"sizeBytes":328},{"name":"tsconfig.json","path":"search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/video/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/video/tsconfig.json","title":"Video Skill","category":"anthropic-skill","format":"json","content":"# Video Skill\n\nPath: `search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/video/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-generator/templates/video/tsconfig.json)","tokens":300,"sizeBytes":322},{"name":"SKILL.md","path":"search/gemini-enterprise/ge-demo-generator/skills/ge-demo-video/SKILL.md","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-demo-generator/skills/ge-demo-video/SKILL.md","title":"ge-demo-video","category":"anthropic-skill","format":"markdown","content":"---\nname: ge-demo-video\ndescription: \"Records, edits, and delivers automated executive demo videos for agents deployed to Gemini Enterprise. Verifies typography fonts across all languages, connects to live Chrome via CDP (:9222) with automatic display/xvfb adaptation, automatically discovers and applies customer logo & corporate palette (default ON, --no-brand to opt out), enforces strict zero-mock live recording of the deployed agent chat interface, applies modern SaaS video styling in Remotion with dynamic zoom/pan and 4x wait-time acceleration, synthesizes Gemini 3.8 Flash TTS (with Google Cloud TTS Chirp 3: HD fallback) neural narration with synchronized subtitles (pure speech narration, optional ambient BGM), and delivers the rendered MP4 to the demo's Google Drive folder. Also triggered by /ge-demo-video.\"\nmetadata:\n  author: Google Cloud Customer Engineering\n  version: 2.3.1\n---\n\n# GE Demo Video Generator Skill (v2.3.1)\n\nAutomates the end-to-end production and delivery of professional **90–120s executive highlight reel demo videos** showcasing autonomous AI agents deployed on **Gemini Enterprise**.\n\n---\n\n## 🌟 Core Architectural Invariants\n\n1. **Authentic Screen Recording Exclusively (Zero-Mock Invariant)**:\n   - The skill **strictly forbids** synthetic mock video generation, mock SVG frames, and fallback presentation slides.\n   - Video capture is executed directly against the live Gemini Enterprise chat session (`https://vertexaisearch.cloud.google.com/home/cid/.../r/agent/.../session/-`) of the deployed agent via Chromium DevTools Protocol (CDP, port 9222).\n   - The chat interface DOM elements (`div.ProseMirror`, `div[contenteditable=\"true\"]`, or shadow DOM chat inputs) must be probed and verified before recording starts.\n\n2. **Universal Multi-Language Font Verification & Provisioning**:\n   - Before recording or rendering, the skill verifies that the necessary typography fonts for the target locale (e.g., Japanese CJK for `ja-JP`, Simplified/Traditional Chinese for `zh`, Korean Hangul for `ko`, Arabic for `ar`, Thai for `th`, Devanagari for `hi`, etc.) are installed on the host environment.\n   - If missing, the automated font engine (`ensure_fonts.py`) installs them via system packages (`apt-get`) or downloads Google Noto font assets directly into `~/.local/share/fonts/` followed by `fc-cache` refresh, eliminating tofu (`□`) characters.\n   - Remotion composition incorporates Google Web Fonts as a secondary defensive layer.\n\n3. **Mandatory Pre-Recording Demonstration Plan & Interactive Approval Gate**:\n   - Before executing any recording commands (`generate_demo_video.py`), the agent **MUST ALWAYS** formulate and present the proposed demo plan to the user for review.\n   - In interactive agent environments (e.g. when supported by tools like `ask_question`), the agent **MUST ALWAYS** prompt the user to obtain explicit approval or modifications.\n   - No recording or video compilation commands may be executed without explicit user sign-off.\n\n4. **Automated Display & Browser Environment Adaptation**:\n   - Chrome launches with a graphical window (`--no-headless`) by default on port 9222 with persistent profile `~/.config/ge-demo-video/chrome-profile`.\n   - If executed in a remote terminal or SSH session lacking a display (`DISPLAY` unset), the engine automatically wraps browser launch with `xvfb-run` to maintain authentic DOM rendering and screencast streaming.\n\n---\n\n## 🚀 Execution Lifecycle & Step-by-Step Workflow\n\n```\n[Phase 1: Dynamic Demo Plan Formulation]\n  ↓ Read .env, target company, role, language, session URL, and 7 demo prompts\n[Phase 2: Interactive Plan Presentation & User Approval Gate (ask_question)]\n  ↓ Explicit approval received\n[Phase 3: Multi-Language Font Verification & Provisioning (ensure_fonts.py)]\n  ↓ Host fonts verified / auto-installed, Remotion WebFonts loaded\n[Phase 4: Browser Session Verification & Interactive Authentication Handoff]\n  ↓ Live Chrome CDP (port 9222) verified, chat input DOM element ready\n[Phase 5: Automated Execution, TTS Synthesis & Remotion Video Rendering]\n  ↓ Gemini 3.8 Flash TTS (Chirp 3: HD fallback), Bézier typing jitter, 4x fast-forward thinking, dynamic camera\n[Phase 6: Google Drive Delivery & Local Staging]\n```\n\n### Phase 1 & 2: Mandatory Demonstration Plan & Interactive Approval Gate\n\n1. **Pre-Flight Verification & Demonstration Plan Formulation**:\n   Dynamically inspect environment and execute pre-flight destination verification:\n   - **Company Name**: `${COMPANY_NAME}` (e.g. `Acme Corp`)\n   - **Agent Persona**: `${DEMO_DISPLAY_NAME}` or `${AGENT_ROLE}` (e.g. `Supply Chain Director`)\n   - **Target Locale & Voice**: `${LANG}` (e.g. `en-US` with `gemini-3.8-flash-tts` primary and `Chirp3-HD` fallback, or `ja-JP`, `de-DE`, etc.)\n   - **Session URL**: `${GE_SESSION_URL}` or derived from `CONFIG_ID` and `AGENT_ID`\n   - **3-Tier Storage Delivery Hierarchy & Destination Pre-Flight**:\n     - **Tier 1 (Primary)**: Host Operator Drive (via `gdrive` CLI if configured and authorized)\n     - **Tier 2 (Secondary)**: Deploy Tenant Drive (via `gcloud` ADC credentials of the deploying user/service account)\n     - **Tier 3 (Fallback)**: Cloud Storage (`gs://<project-id>-ge-demo-artifacts/` or custom `--gcs-bucket`)\n     - **Confirmed Destination**: Locked in prior to presenting the plan (Tier 1 if ready, else Tier 2, else Tier 3 GCS)\n\n2. **Present Structured Demo Plan Table**:\n   Output a comprehensive markdown table and verified delivery parameters in chat:\n\n   | Scene # | Scenario / Topic | Prompt Text | Visual & Camera Highlights | Voice Narration (3-Part: Purpose, Results & Benefits) |\n   |---|---|---|---|---|\n   | **Intro** | Branded Welcome | *(None)* | Google Cloud 4-color strip, title card with company & persona badge | Executive intro greeting (~10s) |\n   | **Agenda** | Walkthrough Roadmap | *(None)* | Dedicated `AgendaCard` with 5 scenarios & icons, 180px bottom margin | Roadmap overview (~16s) |\n   | **Scene 1** | Welcome & Situational Briefing | `<Prompt 1 from Playbook>` | 1.50x typing zoom, welcome card reveal | Intent, key capabilities, operational value (~24s) |\n   | **Scene 2** | Catalog & Metadata Discovery | `<Prompt 2 from Playbook>` | 1.50x typing zoom, shadow DOM smooth scrolling | Intent, catalog structure, eliminating manual lookup (~27s) |\n   | **Scene 3** | Cross-Source Anomaly WOW | `<Prompt 3 from Playbook>` | 1.50x typing zoom, 4x fast-forward thinking, A2UI table zoom | Intent, anomaly detection findings, preventing losses (~28s) |\n   | **Scene 4** | Workflow Action & Approval | `<Prompt 4 from Playbook>` | 1.50x typing zoom, 1.45x button close-up zoom on click | Intent, one-click execution approval, cycle time reduction (~28s) |\n   | **Scene 5** | Operational Summary & Handover | `<Prompt 7 from Playbook>` | 1.50x typing zoom, rating button delta verification | Intent, structured handover report, operational continuity (~27s) |\n   | **Outro** | Next Steps & CTA | *(None)* | Google Cloud 4-color strip, outro card with Next Steps CTA | Executive closing & call-to-action (~10s) |\n\n   Display verified pre-flight demonstration plan card:\n   ```\n   ================================================================================\n   🎬 PRE-RECORDING DEMONSTRATION PLAN & PRE-FLIGHT VERIFICATION\n   ================================================================================\n   🏢 Company Name           : <Company Name>\n   🤖 Agent Persona          : <Agent Role>\n   🤖 GE Agent Name          : <GE Agent Display Name>\n   🔗 GE Direct Agent Link   : <Direct Chat Session URL>\n   🌐 Target Locale          : <Target Locale (e.g. en-US, ja-JP)>\n   🎙️ Selected Neural Voice  : <Selected Cloud TTS Voice>\n   💬 Subtitle Mode          : Clean Lower-Third (Synchronized)\n   🎼 Ambient BGM & Ducking  : Disabled (Pure Speech Narration)\n\n   📦 Delivery Destinations (3-Tier Storage Hierarchy):\n      • Tier 1 (Primary)     : Host Operator Drive (<account>)\n      • Tier 2 (Secondary)   : Deploy Tenant Drive (<deploy_account>)\n      • Tier 3 (Fallback)    : Cloud Storage (gs://<bucket>/)\n\n   🔒 Confirmed Destination  : <Tier 1 / Tier 2 / Tier 3 Destination>\n   ================================================================================\n   ```\n\n   *If Pre-Flight indicates expired credentials (`reauth_required`), append notice:*\n   ```\n   ⚠️ Note: Credentials expired for <account>. Run to re-authenticate:\n      gcloud auth login <account> --enable-gdrive-access [--no-launch-browser]\n   ```\n\n   *The pipeline prints the exact command for this host. On a host with no local\n   browser it appends `--no-launch-browser`; quote it verbatim rather than\n   reconstructing it, because the plain form opens nothing and looks like a hang.*\n\n3. **Mandatory `ask_question` Approval Gate**:\n   Execute `ask_question` with the following selectable options.\n   *(If `reauth_required` is detected on Tier 1, prioritize the single-click re-authentication action)*:\n   - *(If reauth required)*: `(Recommended) Re-authenticate Google account now (Agent will run the re-authentication command the pre-flight printed)`\n   - `(Recommended) Approve and proceed with video generation as planned`\n   - `Modify demo prompts / Select specific scenarios`\n   - `Change language / voice settings (e.g. ja-JP / en-US)`\n   - `Enable ambient background music (--enable-bgm)`\n   - `Disable voice narration (--no-narration) or subtitles (--no-subtitles)`\n   - `Change Google Drive / GCS delivery target`\n   - `Cancel video generation`\n\n   *If the user selects re-authentication, execute the login command directly via `run_command` and re-verify pre-flight before continuing.*\n   *If the user requests modifications, update the plan and prompt again. Never start recording without explicit user approval.*\n\n---\n\n### Phase 3: Multi-Language Font Verification\n\nBefore launching recording or rendering, run font verification to eliminate tofu (`□`) characters:\n\n```bash\npython3 skills/ge-demo-generator/templates/video/scripts/ensure_fonts.py --lang \"<LANG>\"\n```\n\nThe script automatically detects missing typography (Kanji/Kana, Hanzi, Hangul, Arabic, Thai, Devanagari) and installs the required Noto font family via system packages or downloads them directly to `~/.local/share/fonts/` followed by `fc-cache -fv`.\n\n---\n\n### Phase 4: Browser Session Verification & Authentication Handoff\n\n1. **Port 9222 & Session URL Check**:\n   The engine checks if Chrome CDP port 9222 is active. If not listening, it auto-launches Chrome pointing directly to the agent session URL:\n   - Default: GUI Chrome (`--no-headless`) with persistent profile `~/.config/ge-demo-video/chrome-profile`.\n   - Headless / SSH environments: Auto-detected and launched under `xvfb-run` to provide a full virtual display buffer.\n\n2. **Authentication Step-Up Handoff**:\n   If the browser encounters the Google login screen (`accounts.google.com`):\n   - The skill **strictly halts** (never falls back to mock).\n   - In interactive agent environments, prompt the user (e.g. via `ask_question` or interactive modal):\n     > *\"Chrome window has been launched. Please complete Google Account login (and 2FA) in the opened browser window, then select 'Login Complete'.\"*\n   - Once confirmed, the engine re-probes the session URL and verifies that the chat input area is active.\n\n3. **Chat Interface Readiness Probe**:\n   The engine checks for `div.ProseMirror`, `div[contenteditable=\"true\"]`, or textarea elements (including recursive shadow DOM search). Once verified, live recording proceeds.\n\n---\n\n### Phase 5: Automated Execution & Video Composition\n\nThe pipeline executes through `scripts/generate_demo_video.py`.\n\n> **Working directory**: run this, and every other command in this skill, from\n> the repository root. Every path here is relative to it, and so are the outputs:\n> `./deliverables/` and `./deliverables/delivery_report.json` are written relative\n> to the working directory, not to the script.\n\n```bash\n# Standard Production Run\npython3 scripts/generate_demo_video.py \\\n  --company \"<Company Name>\" \\\n  --role \"<Agent Persona>\" \\\n  --lang \"<Locale (e.g. ja-JP, en-US)>\" \\\n  --session-url \"<Direct Chat Session URL>\"\n\n# Optional Flags:\n# --enable-bgm        : Enables ambient background music with dynamic ducking\n# --no-narration     : Generates video without voice track\n# --no-subtitles     : Generates video without subtitle overlays\n# --drive-account    : Overrides destination Google Drive account\n```\n\nThe process exit code is the delivery verdict: `0` delivered, `3` Drive was\nexpected and Cloud Storage caught the fall, `1` nothing accepted the video. See\nPhase 6.\n\nKey execution features:\n- **Zero Dead Air**: Voice narration begins immediately at scene start, introducing operational intent during prompt typing.\n- **1.50x Prompt Typing Zoom**: Camera zooms into prompt input field `(960, 920)` with natural human typing jitter.\n- **⏩ 4x Fast-Forward Thinking**: Accelerates model thinking and tool execution with speedup badge and explanatory narration.\n- **1.45x Action Button Zoom**: Dynamically identifies action buttons (e.g. \"Execute Reallocation Now\"), zooms in, and executes the click.\n- **Synchronized Response Scrolling**: Traverses shadow DOM `.chat-mode-scroller` to smoothly scroll tall data tables and A2UI cards.\n\n---\n\n### Phase 6: Delivery to Google Drive / GCS & Local Staging\n\n1. **Delivery Account Precedence (Tier 1 / Tier 2 target)**:\n   The video must land in the **same Drive as the rest of the demo** — the PDFs,\n   spreadsheets and scans that `generate_and_upload_external_files.py` already\n   uploaded. The account is resolved in this order:\n   1. Explicit `--drive-account` or `DRIVE_ACCOUNT` (from the environment or `.env`).\n   2. `owner_account` in the demo's `drive_upload_summary.json`, if that account\n      still has credentials on this host. This is the Drive the demo's own files\n      are in.\n   3. The active `gcloud` account — the identity the demo was deployed with.\n   4. An account whose local part matches the host login name.\n   5. Any other credentialed non-service account.\n   6. The active account, or `default`.\n\n   > The host login match used to sit near the top, which sent the video to a\n   > corporate account under forced re-authentication while the demo itself was\n   > in a different tenant's Drive. One demo, two Drives, and a re-authentication\n   > prompt for an account nobody asked for.\n\n2. **3-Tier Fallback Storage Delivery Mechanism**:\n   - **Tier 1: Host Operator Drive**:\n     Uploaded via `gdrive` CLI using operator user credentials if configured. Saves to folder `GE Demo - <Company>` with owner-only private permissions (or `--share-public` if explicitly requested).\n   - **Tier 2: Deploy Account Drive**:\n     If Tier 1 is unavailable or unconfigured, falls back to Google Drive API using the deploy user/service account ADC credentials (`gcloud auth application-default print-access-token` / service account key).\n   - **Tier 3: Google Cloud Storage (GCS) Fallback**:\n     If Drive upload cannot proceed or fails, securely delivers the video to Google Cloud Storage (`gs://<project-id>-ge-demo-artifacts/videos/` or custom `--gcs-bucket`), generating an authenticated or signed URL (`https://storage.cloud.google.com/<bucket>/...`).\n3. **Local Staging Guarantee**:\n   - The final video is **always staged locally** in `./deliverables/[Demo-Video]_<Company>_-<Role>.mp4` regardless of remote upload status.\n4. **Read the delivery verdict — never assume success**:\n   - Delivery writes `./deliverables/delivery_report.json` and exits with a\n     distinct code. The agent **MUST** read one of the two before reporting an\n     outcome:\n\n     | Exit code | `headline` means | Agent action |\n     |---|---|---|\n     | `0` | Delivered to Drive, or Cloud Storage was the intended destination, or the upload was skipped on request | Report the destination URL |\n     | `3` | **Cloud Storage caught the fall — Drive was expected and did not accept the upload** | Fire the recovery gate in step 6 |\n     | `1` | No destination accepted the video | Report the local path and the error |\n\n   - The report carries `delivery_tier`, `target_account`, `target_account_reason`,\n     `drive_url`, `gcs_uri`, `headline` and `action_required`.\n   - Exit code `3` is **not** a success. The video exists, but it is not where the\n     rest of the demo is.\n5. **Present Output**:\n   - Display local deliverable path, remote delivery destination (Tier 1 Drive / Tier 2 Drive / Tier 3 GCS), the account it went to and why, video duration, and resolution (1080p 30fps).\n6. **Automated Post-Generation Interactive Delivery Recovery Gate**:\n   - **Trigger**: delivery exit code `3`, or `delivery_report.json` reporting a\n     non-empty `action_required`, or `tier_1_status: reauth_required`.\n   - **Zero Copy-Paste Mandate**: If the video was successfully generated and staged in `./deliverables/[Demo-Video]_<Company>_-<Role>.mp4` but Google Drive delivery failed or was skipped due to expired OAuth credentials (`reauth_required`), the agent **MUST NEVER** ask the user to manually copy and paste bash upload commands.\n   - **Interactive Recovery via `ask_question`**: The agent **MUST IMMEDIATELY** invoke `ask_question` offering automated re-authentication and recovery upload:\n     - `(Recommended) Authenticate now and upload the generated video to Google Drive`\n     - `Keep local deliverable only (and Cloud Storage if uploaded)`\n   - **Single-Click Automated Execution**: Upon user selection of the recommended option, the agent automatically executes:\n     1. Re-authentication via `run_command`. Use the command printed by the\n        pipeline verbatim — on a host with no local browser (remote shell, Cloud\n        Shell, no `DISPLAY`) it carries `--no-launch-browser`, and without that\n        flag the command waits on a browser that will never open:\n        ```bash\n        gcloud auth login <account> --enable-gdrive-access [--no-launch-browser]\n        ```\n     2. Standalone Drive delivery via `run_command`, from the repository root:\n        ```bash\n        python3 skills/ge-demo-generator/templates/video/scripts/upload_to_drive.py \\\n          --video \"./deliverables/[Demo-Video]_${COMPANY}_-_${ROLE}.mp4\" \\\n          --company \"${COMPANY}\" \\\n          --role \"${ROLE}\" \\\n          --drive-account \"${DRIVE_ACCOUNT}\"\n        ```\n        Omit `--drive-account` to let the precedence in step 1 pick the Drive the\n        demo already lives in.\n     3. Present the confirmed Google Drive file URL and folder URL directly in the chat response.\n\n---\n\n## 🛠️ CLI Options Reference (`generate_demo_video.py`)\n\n| Option | Default | Description |\n|---|---|---|\n| `--session-url`, `--ge-url` | (from .env) | Direct Gemini Enterprise chat session URL (Required) |\n| `--env-file` | `.env` | Path to environment configuration file |\n| `--cdp-url` | `http://localhost:9222` | Chrome remote debugging endpoint |\n| `--company` | (from .env) | Company name override |\n| `--role` | (from .env) | Agent persona / role override |\n| `--agent-name` | (from .env) | Gemini Enterprise agent display name override |\n| `--lang` | (auto-detected) | Voice & subtitle language (`ja-JP`, `en-US`, `de-DE`, etc.) |\n| `--project` | (from .env) | Google Cloud project ID for TTS quota and GCS fallback |\n| `--deploy-account` | (auto-detected) | Target deploy Google Cloud account for Tier 2 Drive |\n| `--gcs-bucket` | (auto-detected) | Target Google Cloud Storage bucket for Tier 3 delivery |\n| `--mock` | `false` | Enable synthetic mock mode for test and offline pipeline execution |\n| `--no-headless` | `true` | Launch Chrome with visible GUI window (Default) |\n| `--headless` | `false` | Launch Chrome in headless mode |\n| `--enable-bgm`, `--bgm` | `false` | Enable ambient background music with dynamic ducking |\n| `--no-brand`, `--disable-brand` | `false` | Disable automatic customer logo and corporate palette discovery (default: branding enabled) |\n| `--brand-domain` | (auto-detected) | Custom domain override for logo and corporate palette discovery |\n| `--no-narration` | `false` | Disable voice narration audio tracks |\n| `--no-subtitles` | `false` | Disable subtitle overlays |\n| `--skip-recording` | `false` | Reuse existing browser recording from working directory |\n| `--skip-tts` | `false` | Reuse existing TTS audio from working directory |\n| `--skip-drive` | `false` | Skip Google Drive upload (save to `./deliverables/` only) |\n| `--drive-account` | (auto-detected) | Target Google Drive account override (Tier 1) |\n| `--drive-folder` | `GE Demo - <Company>` | Google Drive folder name override |\n| `--share-public` | `false` | Enable public reader link sharing |\n| `--output` | `./output/demo_video/rendered_demo_video.mp4` | Final MP4 output path |\n\n### Delivery environment variables\n\n| Variable | Effect |\n|---|---|\n| `DRIVE_ACCOUNT` | Highest-precedence delivery account (same as `--drive-account`) |\n| `GE_DRIVE_SUMMARY` | Explicit path to the demo's `drive_upload_summary.json`, when it is not beside the deliverables |\n| `GE_NONINTERACTIVE` / `CI` | Declines every re-authentication prompt instead of waiting for an answer nobody is there to give |\n| `SKIP_VIDEO_DRIVE_UPLOAD` | Skips Drive delivery for the video only (does not affect the demo's other files) |\n","frontmatter":{"name":"ge-demo-video","description":"Records, edits, and delivers automated executive demo videos for agents deployed to Gemini Enterprise. Verifies typography fonts across all languages, connects to live Chrome via CDP (:9222) with automatic display/xvfb adaptation, automatically discovers and applies customer logo & corporate palette (default ON, --no-brand to opt out), enforces strict zero-mock live recording of the deployed agent chat interface, applies modern SaaS video styling in Remotion with dynamic zoom/pan and 4x wait-time acceleration, synthesizes Gemini 3.8 Flash TTS (with Google Cloud TTS Chirp 3: HD fallback) neural narration with synchronized subtitles (pure speech narration, optional ambient BGM), and delivers the rendered MP4 to the demo's Google Drive folder. Also triggered by /ge-demo-video.","metadata":{"author":"Google Cloud Customer Engineering","version":"2.3.1"}},"isInternal":false,"tokens":5082,"sizeBytes":21349},{"name":"SKILL.md","path":"search/gemini-enterprise/ge-migration-agent/skills/SKILL.md","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/search/gemini-enterprise/ge-migration-agent/skills/SKILL.md","title":"migration-config-skill","category":"anthropic-skill","format":"markdown","content":"---\nname: migration-config-skill\ndescription: Holds canonical source and target environment parameters and verified DataStore mappings.\nmetadata:\n  environments:\n    source:\n      project_number: \"<SOURCE_PROJECT_NUMBER>\"\n      project_id: \"<SOURCE_PROJECT_ID>\"\n      region: global\n      engine_id: \"<SOURCE_ENGINE_ID>\"\n    target:\n      project_number: \"<TARGET_PROJECT_NUMBER>\"\n      project_id: \"<TARGET_PROJECT_ID>\"\n      region: global\n      engine_id: \"<TARGET_ENGINE_ID>\"\n  datastores_mapping:\n    # Format: source-datastore-id-suffix: target-datastore-id-suffix\n    \"<SOURCE_DATASTORE_ID_SUFFIX>\": \"<TARGET_DATASTORE_ID_SUFFIX>\"\n  connectors_mapping:\n    ge-drive-all: Drive\n    GeGmail: geGmail\n    googleSearch: googleSearch\n    urlContext: urlContext\n---\n\n# ADK Administration Setup & Migration Instructions\n\nThis file serves as the single source of truth for Gemini Enterprise migrations. Administrators can fully configure source-to-target resource pairings by updating the YAML metadata frontmatter above.\n\n---\n\n## Administrative Setup Guide\n\n### 1. Environments Configuration\nSet your official canonical source and target project definitions under `environments`:\n- **`project_number`**: The numeric Google Cloud Project Number (e.g., `404109417257`).\n- **`engine_id`**: The fully qualified Discovery Engine app/engine ID.\n\n### 2. DataStore Grounding Mappings (`datastores_mapping`)\nMap underlying knowledge search collections and grounding data stores (assigned under `dataStoreSpecs`) using their exact resource ID suffix:\n```yaml\ndatastores_mapping:\n  # Source ID -> Target ID\n  example-mcp-source_12345_mcp_data: example-mcp-target_67890_mcp_data\n  example-drive-source_12345_google_drive: example-drive-target_67890_google_drive\n```\n*Note: Always use the fully qualified ID suffix (e.g., `_google_drive`, `_mcp_data`) to prevent substring truncation.*\n\n### 3. Visual Connector & Tool Mappings (`connectors_mapping`)\nMap display aliases and frontend extension tool chips (assigned under `selectedTools`) to ensure visual rendering parity in the Agent Designer UI canvas:\n```yaml\nconnectors_mapping:\n  # Source UI Badge -> Canonical Target UI Token\n  \"Example Source Connector\": custom_mcp\n  \"example-drive\": Drive\n```\n\n---\n\n## Operational Execution\n\nOnce configured, run live migrations or offline GCS imports directly:\n\n```bash\n# 1. Execute live cross-environment migration\nuv run ./migrate.py migrate-agent \"Quarterly Business Review Generator\" --force\n\n# 2. Import agent definition from GCS offline backup\nuv run ./migrate.py import-agent-gcs quarterly_business_review_export.json --target-engine <TARGET_ENGINE_ID>\n```\n","frontmatter":{"name":"migration-config-skill","description":"Holds canonical source and target environment parameters and verified DataStore mappings.","metadata":{"environments":{"source":{"project_number":"<SOURCE_PROJECT_NUMBER>","project_id":"<SOURCE_PROJECT_ID>","region":"global","engine_id":"<SOURCE_ENGINE_ID>"},"target":{"project_number":"<TARGET_PROJECT_NUMBER>","project_id":"<TARGET_PROJECT_ID>","region":"global","engine_id":"<TARGET_ENGINE_ID>"}},"datastores_mapping":{"<SOURCE_DATASTORE_ID_SUFFIX>":"<TARGET_DATASTORE_ID_SUFFIX>"},"connectors_mapping":{"ge-drive-all":"Drive","GeGmail":"geGmail","googleSearch":"googleSearch","urlContext":"urlContext"}}},"isInternal":false,"tokens":578,"sizeBytes":2643},{"name":"CONTRIBUTING.md","path":"tools/llmevalkit/CONTRIBUTING.md","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/tools/llmevalkit/CONTRIBUTING.md","title":"Llmevalkit Skill","category":"anthropic-skill","format":"markdown","content":"# Llmevalkit Skill\n\nPath: `tools/llmevalkit/CONTRIBUTING.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/tools/llmevalkit/CONTRIBUTING.md)","tokens":300,"sizeBytes":197},{"name":"plugin.json","path":"gemini/multimodal-live-api/gemini-live-studio/examples/local-code-assistant/plugin/plugin.json","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/gemini/multimodal-live-api/gemini-live-studio/examples/local-code-assistant/plugin/plugin.json","title":"plugin Plugin Manifest","category":"plugin-manifest","format":"json","content":"# plugin Plugin Manifest\n\nPath: `gemini/multimodal-live-api/gemini-live-studio/examples/local-code-assistant/plugin/plugin.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/gemini/multimodal-live-api/gemini-live-studio/examples/local-code-assistant/plugin/plugin.json)","tokens":300,"sizeBytes":327},{"name":"README.md","path":"gemini/multimodal-live-api/project-livewire/cloud-functions/weather-tools/README.md","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/gemini/multimodal-live-api/project-livewire/cloud-functions/weather-tools/README.md","title":"weather-tools Documentation","category":"plugin-manifest","format":"markdown","content":"# weather-tools Documentation\n\nPath: `gemini/multimodal-live-api/project-livewire/cloud-functions/weather-tools/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/gemini/multimodal-live-api/project-livewire/cloud-functions/weather-tools/README.md)","tokens":300,"sizeBytes":310},{"name":"README.md","path":"tools/llmevalkit/README.md","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/tools/llmevalkit/README.md","title":"llmevalkit Documentation","category":"plugin-manifest","format":"markdown","content":"# llmevalkit Documentation\n\nPath: `tools/llmevalkit/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/tools/llmevalkit/README.md)","tokens":300,"sizeBytes":193},{"name":"README.md","path":"agents/adk/agent-quality-flywheel/README.md","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/agent-quality-flywheel/README.md","title":"Subagent: readme","category":"subagent-persona","format":"markdown","content":"# Subagent: readme\n\nPath: `agents/adk/agent-quality-flywheel/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/agent-quality-flywheel/README.md)","tokens":300,"sizeBytes":219},{"name":"ARCHITECTURE.md","path":"agents/adk/contract-compliance-pipeline/ARCHITECTURE.md","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/contract-compliance-pipeline/ARCHITECTURE.md","title":"Subagent: architecture","category":"subagent-persona","format":"markdown","content":"# Subagent: architecture\n\nPath: `agents/adk/contract-compliance-pipeline/ARCHITECTURE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/contract-compliance-pipeline/ARCHITECTURE.md)","tokens":300,"sizeBytes":249},{"name":"README.md","path":"agents/adk/contract-compliance-pipeline/README.md","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/contract-compliance-pipeline/README.md","title":"Subagent: readme","category":"subagent-persona","format":"markdown","content":"# Subagent: readme\n\nPath: `agents/adk/contract-compliance-pipeline/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/contract-compliance-pipeline/README.md)","tokens":300,"sizeBytes":231},{"name":"TUTORIAL.md","path":"agents/adk/contract-compliance-pipeline/TUTORIAL.md","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/contract-compliance-pipeline/TUTORIAL.md","title":"Subagent: tutorial","category":"subagent-persona","format":"markdown","content":"# Subagent: tutorial\n\nPath: `agents/adk/contract-compliance-pipeline/TUTORIAL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/contract-compliance-pipeline/TUTORIAL.md)","tokens":300,"sizeBytes":237},{"name":"README.md","path":"agents/adk/new-hire-onboarding/README.md","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/new-hire-onboarding/README.md","title":"Subagent: readme","category":"subagent-persona","format":"markdown","content":"# Subagent: readme\n\nPath: `agents/adk/new-hire-onboarding/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/new-hire-onboarding/README.md)","tokens":300,"sizeBytes":213},{"name":"README.md","path":"agents/adk/new-hire-onboarding/tests/eval/evalsets/README.md","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/new-hire-onboarding/tests/eval/evalsets/README.md","title":"Subagent: readme","category":"subagent-persona","format":"markdown","content":"# Subagent: readme\n\nPath: `agents/adk/new-hire-onboarding/tests/eval/evalsets/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/new-hire-onboarding/tests/eval/evalsets/README.md)","tokens":300,"sizeBytes":253},{"name":"TUTORIAL.md","path":"agents/adk/new-hire-onboarding/TUTORIAL.md","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/new-hire-onboarding/TUTORIAL.md","title":"Subagent: tutorial","category":"subagent-persona","format":"markdown","content":"# Subagent: tutorial\n\nPath: `agents/adk/new-hire-onboarding/TUTORIAL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/new-hire-onboarding/TUTORIAL.md)","tokens":300,"sizeBytes":219},{"name":"README.md","path":"agents/adk/README.md","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/README.md","title":"Subagent: readme","category":"subagent-persona","format":"markdown","content":"⚠️ The Agent Development Kit (ADK) Sample Agents repository is available at [github.com/google/adk-samples](https://github.com/google/adk-samples).\n\nThe repository contains sample agents for:\n\n- [Python](https://github.com/google/adk-samples/tree/main/python)\n- [Java](https://github.com/google/adk-samples/tree/main/java)\n","isInternal":false,"tokens":78,"sizeBytes":327},{"name":"README.md","path":"agents/adk/zero-trust-agents-2/README.md","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/zero-trust-agents-2/README.md","title":"Subagent: readme","category":"subagent-persona","format":"markdown","content":"# Subagent: readme\n\nPath: `agents/adk/zero-trust-agents-2/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/zero-trust-agents-2/README.md)","tokens":300,"sizeBytes":213},{"name":"TUTORIAL.md","path":"agents/adk/zero-trust-agents-2/TUTORIAL.md","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/zero-trust-agents-2/TUTORIAL.md","title":"Subagent: tutorial","category":"subagent-persona","format":"markdown","content":"# Subagent: tutorial\n\nPath: `agents/adk/zero-trust-agents-2/TUTORIAL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/zero-trust-agents-2/TUTORIAL.md)","tokens":300,"sizeBytes":219},{"name":"README.md","path":"agents/adk/zero-trust-agents/README.md","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/zero-trust-agents/README.md","title":"Subagent: readme","category":"subagent-persona","format":"markdown","content":"# Subagent: readme\n\nPath: `agents/adk/zero-trust-agents/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/zero-trust-agents/README.md)","tokens":300,"sizeBytes":209},{"name":"TUTORIAL.md","path":"agents/adk/zero-trust-agents/TUTORIAL.md","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/zero-trust-agents/TUTORIAL.md","title":"Subagent: tutorial","category":"subagent-persona","format":"markdown","content":"# Subagent: tutorial\n\nPath: `agents/adk/zero-trust-agents/TUTORIAL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/zero-trust-agents/TUTORIAL.md)","tokens":300,"sizeBytes":215},{"name":"README.md","path":"agents/invoice-processing/deployment/README.md","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/deployment/README.md","title":"Subagent: readme","category":"subagent-persona","format":"markdown","content":"# Subagent: readme\n\nPath: `agents/invoice-processing/deployment/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/deployment/README.md)","tokens":300,"sizeBytes":225},{"name":"reconstructed_rules_book.md","path":"agents/invoice-processing/invoice_processing/data/reconstructed_rules_book.md","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/reconstructed_rules_book.md","title":"Subagent: reconstructed_rules_book","category":"subagent-persona","format":"markdown","content":"# Subagent: reconstructed_rules_book\n\nPath: `agents/invoice-processing/invoice_processing/data/reconstructed_rules_book.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/reconstructed_rules_book.md)","tokens":300,"sizeBytes":305},{"name":"README.md","path":"agents/invoice-processing/README.md","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/README.md","title":"Subagent: readme","category":"subagent-persona","format":"markdown","content":"# Subagent: readme\n\nPath: `agents/invoice-processing/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/README.md)","tokens":300,"sizeBytes":203},{"name":"README.md","path":"agents/personalized-agent-swarms/analyzer/README.md","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/personalized-agent-swarms/analyzer/README.md","title":"Subagent: readme","category":"subagent-persona","format":"markdown","content":"# Subagent: readme\n\nPath: `agents/personalized-agent-swarms/analyzer/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/personalized-agent-swarms/analyzer/README.md)","tokens":300,"sizeBytes":235},{"name":"evaluation_rubric_augmented.md","path":"agents/personalized-agent-swarms/evaluation_rubric_augmented.md","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/personalized-agent-swarms/evaluation_rubric_augmented.md","title":"Subagent: evaluation_rubric_augmented","category":"subagent-persona","format":"markdown","content":"# Subagent: evaluation_rubric_augmented\n\nPath: `agents/personalized-agent-swarms/evaluation_rubric_augmented.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/personalized-agent-swarms/evaluation_rubric_augmented.md)","tokens":300,"sizeBytes":280},{"name":"evaluation_rubric.md","path":"agents/personalized-agent-swarms/evaluation_rubric.md","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/personalized-agent-swarms/evaluation_rubric.md","title":"Subagent: evaluation_rubric","category":"subagent-persona","format":"markdown","content":"# Subagent: evaluation_rubric\n\nPath: `agents/personalized-agent-swarms/evaluation_rubric.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/personalized-agent-swarms/evaluation_rubric.md)","tokens":300,"sizeBytes":250},{"name":"README.md","path":"agents/personalized-agent-swarms/harvest/README.md","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/personalized-agent-swarms/harvest/README.md","title":"Subagent: readme","category":"subagent-persona","format":"markdown","content":"# Subagent: readme\n\nPath: `agents/personalized-agent-swarms/harvest/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/personalized-agent-swarms/harvest/README.md)","tokens":300,"sizeBytes":233},{"name":"README.md","path":"agents/personalized-agent-swarms/README.md","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/personalized-agent-swarms/README.md","title":"Subagent: readme","category":"subagent-persona","format":"markdown","content":"# Subagent: readme\n\nPath: `agents/personalized-agent-swarms/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/personalized-agent-swarms/README.md)","tokens":300,"sizeBytes":217},{"name":"DEPLOYMENT.md","path":"agents/personalized-agent-swarms/user_assistant_agent/DEPLOYMENT.md","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/personalized-agent-swarms/user_assistant_agent/DEPLOYMENT.md","title":"Subagent: deployment","category":"subagent-persona","format":"markdown","content":"# Subagent: deployment\n\nPath: `agents/personalized-agent-swarms/user_assistant_agent/DEPLOYMENT.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/personalized-agent-swarms/user_assistant_agent/DEPLOYMENT.md)","tokens":300,"sizeBytes":271},{"name":"README.md","path":"agents/personalized-agent-swarms/user_assistant_agent/README.md","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/personalized-agent-swarms/user_assistant_agent/README.md","title":"Subagent: readme","category":"subagent-persona","format":"markdown","content":"# Subagent: readme\n\nPath: `agents/personalized-agent-swarms/user_assistant_agent/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/personalized-agent-swarms/user_assistant_agent/README.md)","tokens":300,"sizeBytes":259},{"name":"test_scenarios.md","path":"agents/personalized-agent-swarms/user_assistant_agent/test_scenarios.md","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/personalized-agent-swarms/user_assistant_agent/test_scenarios.md","title":"Subagent: test_scenarios","category":"subagent-persona","format":"markdown","content":"# Subagent: test_scenarios\n\nPath: `agents/personalized-agent-swarms/user_assistant_agent/test_scenarios.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/personalized-agent-swarms/user_assistant_agent/test_scenarios.md)","tokens":300,"sizeBytes":283},{"name":"README.md","path":"agents/README.md","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/README.md","title":"Subagent: readme","category":"subagent-persona","format":"markdown","content":"# Agents\n\nThis directory contains samples and resources for building AI agents with Google Cloud.\n\n## Subdirectories\n\n### adk\n\nThe `adk` directory contains information about the Agent Development Kit (ADK).\n\n### agent_engine\n\nThe `agent_engine` directory contains notebooks that demonstrate how to use Agent Engine on Agent Platform.\n\n**Notebooks:**\n\n- [Get started with Agent Platform Memory Bank](agent_engine/memory_bank/get_started_with_memory_bank.ipynb): Learn how to use Agent Platform Memory Bank to build stateful, context-aware conversational AI agents.\n- [A2A on Agent Engine](agent_engine/tutorial_a2a_on_agent_engine.ipynb): A tutorial on how to run a simple agent on Agent Engine.\n- [Claude with ADK on Agent Engine](agent_engine/tutorial_claude_with_adk_on_agent_engine.ipynb): A tutorial on using the Claude model with ADK on Agent Engine.\n- [Get Started with Code Execution](agent_engine/tutorial_get_started_with_code_execution.ipynb): A tutorial on how to get started with code execution on Agent Engine.\n- [Get Started with Live API on Agent Engine](agent_engine/tutorial_get_started_with_live_api_on_agent_engine.ipynb): A tutorial on how to get started with a live API on Agent Engine.\n- [MCP on Agent Engine](agent_engine/tutorial_mcp_on_agent_engine.ipynb): A tutorial on how to use the Multi-turn Conversation Platform (MCP) on Agent Engine.\n\n### gemini_data_analytics\n\nThe `gemini_data_analytics` directory contains notebooks that demonstrate how to use Gemini for data analytics.\n\n**Notebooks:**\n\n- [Intro to Gemini Data Analytics (HTTP)](gemini_data_analytics/intro_gemini_data_analytics_http.ipynb): An introduction to using Gemini for data analytics with the HTTP API.\n- [Intro to Gemini Data Analytics (SDK)](gemini_data_analytics/intro_gemini_data_analytics_sdk.ipynb): An introduction to using Gemini for data analytics with the Python SDK.\n\n### self-evolving-ai\n\nThe `self-evolving-ai` directory contains **Project Chrysalis**, a reference architecture for governed, self-evolving AI agents built with ADK and Gemini on Google Cloud. A multi-agent SRE system diagnoses a live outage, synthesizes and mounts its own Cloud KMS-signed mitigation tool, attributes credit to each action, distills operational principles into memory, and rewires its own agent topology behind a Human-in-the-Loop gate.\n\n- [Self-Evolving AI (Project Chrysalis)](self-evolving-ai/README.md): Architecting governed, self-evolving AI agents on Gemini Enterprise Agent Platform.\n","isInternal":false,"tokens":555,"sizeBytes":2485},{"name":"README.md","path":"agents/self-evolving-ai/README.md","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/self-evolving-ai/README.md","title":"Subagent: readme","category":"subagent-persona","format":"markdown","content":"# Subagent: readme\n\nPath: `agents/self-evolving-ai/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/self-evolving-ai/README.md)","tokens":300,"sizeBytes":199},{"name":"README.md","path":"gemini/agents/always-on-memory-agent/README.md","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/gemini/agents/always-on-memory-agent/README.md","title":"Subagent: readme","category":"subagent-persona","format":"markdown","content":"# Subagent: readme\n\nPath: `gemini/agents/always-on-memory-agent/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/gemini/agents/always-on-memory-agent/README.md)","tokens":300,"sizeBytes":225},{"name":"README.md","path":"gemini/agents/genai-experience-concierge/agent-design-patterns/README.md","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/gemini/agents/genai-experience-concierge/agent-design-patterns/README.md","title":"Subagent: readme","category":"subagent-persona","format":"markdown","content":"# Subagent: readme\n\nPath: `gemini/agents/genai-experience-concierge/agent-design-patterns/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/gemini/agents/genai-experience-concierge/agent-design-patterns/README.md)","tokens":300,"sizeBytes":277},{"name":"README.md","path":"gemini/agents/genai-experience-concierge/langgraph-demo/backend/README.md","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/gemini/agents/genai-experience-concierge/langgraph-demo/backend/README.md","title":"Subagent: readme","category":"subagent-persona","format":"markdown","content":"# Subagent: readme\n\nPath: `gemini/agents/genai-experience-concierge/langgraph-demo/backend/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/gemini/agents/genai-experience-concierge/langgraph-demo/backend/README.md)","tokens":300,"sizeBytes":279},{"name":"README.md","path":"gemini/agents/genai-experience-concierge/langgraph-demo/frontend/README.md","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/gemini/agents/genai-experience-concierge/langgraph-demo/frontend/README.md","title":"Subagent: readme","category":"subagent-persona","format":"markdown","content":"# Subagent: readme\n\nPath: `gemini/agents/genai-experience-concierge/langgraph-demo/frontend/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/gemini/agents/genai-experience-concierge/langgraph-demo/frontend/README.md)","tokens":300,"sizeBytes":281},{"name":"README.md","path":"gemini/agents/genai-experience-concierge/README.md","rawUrl":"https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/gemini/agents/genai-experience-concierge/README.md","title":"Subagent: readme","category":"subagent-persona","format":"markdown","content":"# Subagent: readme\n\nPath: `gemini/agents/genai-experience-concierge/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/gemini/agents/genai-experience-concierge/README.md)","tokens":300,"sizeBytes":233}],"systemPromptSnippet":"<yakaai_skills repo=\"GoogleCloudPlatform/generative-ai\">\n<!-- File: agents/adk/agent-quality-flywheel/agents-cli-manifest.yaml (Tokens: ~300 | Category: anthropic-skill) -->\n# Agent-quality-flywheel Skill\n\nPath: `agents/adk/agent-quality-flywheel/agents-cli-manifest.yaml`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/agent-quality-flywheel/agents-cli-manifest.yaml)\n\n<!-- File: agents/adk/agent-quality-flywheel/fx_footer_config.yaml (Tokens: ~300 | Category: anthropic-skill) -->\n# Agent-quality-flywheel Skill\n\nPath: `agents/adk/agent-quality-flywheel/fx_footer_config.yaml`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/agent-quality-flywheel/fx_footer_config.yaml)\n\n<!-- File: agents/adk/agent-quality-flywheel/tests/eval/datasets/fx-dataset.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Datasets Skill\n\nPath: `agents/adk/agent-quality-flywheel/tests/eval/datasets/fx-dataset.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/agent-quality-flywheel/tests/eval/datasets/fx-dataset.json)\n\n<!-- File: agents/adk/contract-compliance-pipeline/go-compliance-agent/internal/policies/default_policy.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Policies Skill\n\nPath: `agents/adk/contract-compliance-pipeline/go-compliance-agent/internal/policies/default_policy.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/contract-compliance-pipeline/go-compliance-agent/internal/policies/default_policy.json)\n\n<!-- File: agents/adk/contract-compliance-pipeline/python-extraction-agent/tests/eval/evalsets/a2a_mock_eval.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Evalsets Skill\n\nPath: `agents/adk/contract-compliance-pipeline/python-extraction-agent/tests/eval/evalsets/a2a_mock_eval.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/contract-compliance-pipeline/python-extraction-agent/tests/eval/evalsets/a2a_mock_eval.json)\n\n<!-- File: agents/adk/contract-compliance-pipeline/python-extraction-agent/tests/eval/evalsets/extraction_eval.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Evalsets Skill\n\nPath: `agents/adk/contract-compliance-pipeline/python-extraction-agent/tests/eval/evalsets/extraction_eval.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/contract-compliance-pipeline/python-extraction-agent/tests/eval/evalsets/extraction_eval.json)\n\n<!-- File: agents/adk/new-hire-onboarding/frontend/live-onboarding/package.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Live-onboarding Skill\n\nPath: `agents/adk/new-hire-onboarding/frontend/live-onboarding/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/new-hire-onboarding/frontend/live-onboarding/package.json)\n\n<!-- File: agents/adk/new-hire-onboarding/frontend/live-onboarding/tsconfig.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Live-onboarding Skill\n\nPath: `agents/adk/new-hire-onboarding/frontend/live-onboarding/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/new-hire-onboarding/frontend/live-onboarding/tsconfig.json)\n\n<!-- File: agents/adk/new-hire-onboarding/tests/eval/eval_config.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Eval Skill\n\nPath: `agents/adk/new-hire-onboarding/tests/eval/eval_config.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/new-hire-onboarding/tests/eval/eval_config.json)\n\n<!-- File: agents/adk/new-hire-onboarding/tests/eval/evalsets/basic.evalset.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Evalsets Skill\n\nPath: `agents/adk/new-hire-onboarding/tests/eval/evalsets/basic.evalset.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/new-hire-onboarding/tests/eval/evalsets/basic.evalset.json)\n\n<!-- File: agents/adk/new-hire-onboarding/tests/eval/evalsets/dead_time_delay_eval.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Evalsets Skill\n\nPath: `agents/adk/new-hire-onboarding/tests/eval/evalsets/dead_time_delay_eval.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/new-hire-onboarding/tests/eval/evalsets/dead_time_delay_eval.json)\n\n<!-- File: agents/adk/new-hire-onboarding/tests/eval/evalsets/onboarding_eval.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Evalsets Skill\n\nPath: `agents/adk/new-hire-onboarding/tests/eval/evalsets/onboarding_eval.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/adk/new-hire-onboarding/tests/eval/evalsets/onboarding_eval.json)\n\n<!-- File: agents/invoice-processing/invoice_processing/data/agent_output/case_001/01_classification.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Case_001 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_001/01_classification.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_001/01_classification.json)\n\n<!-- File: agents/invoice-processing/invoice_processing/data/agent_output/case_001/02_extraction.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Case_001 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_001/02_extraction.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_001/02_extraction.json)\n\n<!-- File: agents/invoice-processing/invoice_processing/data/agent_output/case_001/03_phase1_validation.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Case_001 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_001/03_phase1_validation.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_001/03_phase1_validation.json)\n\n<!-- File: agents/invoice-processing/invoice_processing/data/agent_output/case_001/04_phase2_validation.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Case_001 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_001/04_phase2_validation.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_001/04_phase2_validation.json)\n\n<!-- File: agents/invoice-processing/invoice_processing/data/agent_output/case_001/05_phase3_validation.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Case_001 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_001/05_phase3_validation.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_001/05_phase3_validation.json)\n\n<!-- File: agents/invoice-processing/invoice_processing/data/agent_output/case_001/07_transformation.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Case_001 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_001/07_transformation.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_001/07_transformation.json)\n\n<!-- File: agents/invoice-processing/invoice_processing/data/agent_output/case_001/08_decision.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Case_001 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_001/08_decision.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_001/08_decision.json)\n\n<!-- File: agents/invoice-processing/invoice_processing/data/agent_output/case_001/09_audit_log.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Case_001 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_001/09_audit_log.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_001/09_audit_log.json)\n\n<!-- File: agents/invoice-processing/invoice_processing/data/agent_output/case_001/Postprocessing_Data.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Case_001 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_001/Postprocessing_Data.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_001/Postprocessing_Data.json)\n\n<!-- File: agents/invoice-processing/invoice_processing/data/agent_output/case_002/01_classification.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Case_002 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_002/01_classification.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_002/01_classification.json)\n\n<!-- File: agents/invoice-processing/invoice_processing/data/agent_output/case_002/02_extraction.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Case_002 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_002/02_extraction.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_002/02_extraction.json)\n\n<!-- File: agents/invoice-processing/invoice_processing/data/agent_output/case_002/03_phase1_validation.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Case_002 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_002/03_phase1_validation.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_002/03_phase1_validation.json)\n\n<!-- File: agents/invoice-processing/invoice_processing/data/agent_output/case_002/04_phase2_validation.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Case_002 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_002/04_phase2_validation.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_002/04_phase2_validation.json)\n\n<!-- File: agents/invoice-processing/invoice_processing/data/agent_output/case_002/05_phase3_validation.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Case_002 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_002/05_phase3_validation.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_002/05_phase3_validation.json)\n\n<!-- File: agents/invoice-processing/invoice_processing/data/agent_output/case_002/06_phase4_validation.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Case_002 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_002/06_phase4_validation.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_002/06_phase4_validation.json)\n\n<!-- File: agents/invoice-processing/invoice_processing/data/agent_output/case_002/07_transformation.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Case_002 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_002/07_transformation.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_002/07_transformation.json)\n\n<!-- File: agents/invoice-processing/invoice_processing/data/agent_output/case_002/08_decision.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Case_002 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_002/08_decision.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_002/08_decision.json)\n\n<!-- File: agents/invoice-processing/invoice_processing/data/agent_output/case_002/09_audit_log.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Case_002 Skill\n\nPath: `agents/invoice-processing/invoice_processing/data/agent_output/case_002/09_audit_log.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/GoogleCloudPlatform/generative-ai/HEAD/agents/invoice-processing/invoice_processing/data/agent_output/case_002/09_audit_log.json)\n\n<!-- ... +108 more modular skills available via /api/skills/GoogleCloudPlatform/generative-ai?path={path} -->\n</yakaai_skills>"}