Практическое руководство по Gemini CLI

1. Введение

В этой лабораторной работе вы познакомитесь с Gemini CLI — ИИ-агентом с открытым исходным кодом, который позволяет использовать возможности Gemini непосредственно в вашем терминале.

Проект Gemini CLI имеет открытый исходный код, и вы можете ознакомиться с публичной дорожной картой здесь.

Чему вы научитесь

  1. Установка и настройка Gemini CLI
  2. Изучение инструментов, встроенных команд и настройка серверов MCP в Gemini CLI
  3. Настройка Gemini CLI через файл GEMINI.md
  4. Изучение нескольких вариантов использования Gemini CLI

Что вам понадобится

Эту лабораторную работу можно полностью запустить в Google Cloud Shell, в котором предварительно установлен Gemini CLI.

Если же вы предпочитаете работать на своей машине, есть раздел по локальной установке Gemini CLI.

Вам понадобится следующее:

  • веб-браузер Chrome
  • Аккаунт Gmail

Эта практическая работа предназначена для пользователей и разработчиков любого уровня (включая новичков). Примеры использования в практической работе разделены на задачи для разработчиков и не-разработчиков. В примерах использования для разработчиков показано, как создавать код с помощью Gemini CLI и работать с репозиторием Github для выполнения типичных задач разработки, таких как объяснение и понимание кода, создание документации, исправление ошибок и многое другое. Рекомендуется выполнить эти примеры использования в практической работе. В конце практической работы есть дополнительный раздел, посвященный нескольким повседневным задачам, не ориентированным на разработчиков.

2. Прежде чем начать

Создать проект

  1. В консоли Google Cloud на странице выбора проекта выберите или создайте проект Google Cloud.
  2. Убедитесь, что для вашего облачного проекта включена функция выставления счетов. Узнайте, как проверить, включена ли функция выставления счетов для проекта .
  1. Вы будете использовать Cloud Shell — среду командной строки, работающую в Google Cloud и предустановленную вместе с bq. Нажмите «Активировать Cloud Shell» в верхней части консоли Google Cloud.

Изображение кнопки «Активировать Cloud Shell»

  1. После подключения к Cloud Shell вы проверяете, что вы уже прошли аутентификацию и что проекту присвоен ваш идентификатор проекта, с помощью следующей команды:
gcloud auth list
  1. Выполните следующую команду в Cloud Shell, чтобы подтвердить, что команда gcloud знает о вашем проекте.
gcloud config list project
  1. Если ваш проект не настроен, используйте следующую команду для его настройки:
gcloud config set project <YOUR_PROJECT_ID>

3. Установка

Прежде чем приступить к настройке и запуску Gemini CLI, давайте создадим папку, которая будет домашней для всех проектов, создаваемых в нём. Это отправная точка для работы Gemini CLI, хотя она также будет ссылаться на некоторые другие папки в вашей системе, к которым вы вернётесь позже по мере необходимости.

Создайте папку-образец ( gemini-cli-projects ) и перейдите к ней с помощью команд, показанных ниже. Если вы предпочитаете использовать другое имя папки, пожалуйста, сделайте это.

mkdir gemini-cli-projects

Давайте перейдем в эту папку:

cd gemini-cli-projects

Вы можете запустить Gemini CLI напрямую с помощью команды gemini .

Перейдите сразу к следующему разделу (настройка Gemini CLI через settings.json).

Если вы хотите установить Gemini CLI локально, следуйте приведенным ниже инструкциям.

Первым шагом является установка Node 20+ на ваш компьютер. После этого вы можете установить и запустить Gemini CLI одним из следующих способов:

  1. Сначала вы можете установить Gemini CLI глобально в своей системе. Для этого вам могут потребоваться права администратора.
# option 1: install Gemini CLI

npm install -g @google/gemini-cli

# .. and then run
gemini
  1. Запустите его с помощью следующей команды:
# option 2: run without installing Gemini CLI

npx https://github.com/google-gemini/gemini-cli

Вы можете убедиться, что CLI установлен, выполнив:

gemini --version

Если вы запустили Gemini CLI любым из описанных выше способов, вы увидите следующий экран с предложением выбрать тему. Выберите понравившуюся тему:

9b02bd0bf1c670d.png

После выбора этого варианта система запросит метод аутентификации. В этой лабораторной работе рекомендуется использовать личный аккаунт Google, а не аккаунты, не относящиеся к Google или Google Workspace. Эта бесплатная лицензия даёт вам доступ к Gemini 2.5 Pro и его контекстному окну в 1 миллион токенов. Бесплатный тариф позволяет бесплатно выполнять 60 запросов к моделям в минуту и ​​1000 запросов в день.

Если текущая бесплатная квота, выделенная для аккаунтов Google, исчерпана, вы можете использовать ключ Gemini API или даже Google Cloud Vertex AI, для чего вам потребуется указать идентификатор проекта и название локации. Если вы планируете использовать другие методы аутентификации, ознакомьтесь с разделом «Аутентификация» в документации.

afce8d90e20adb6.png

Нажмите Enter. В браузере откроется страница аутентификации Google. Пройдите аутентификацию с помощью своего аккаунта Google, примите условия. После успешной аутентификации вы увидите, что интерфейс командной строки Gemini готов к работе и ждёт вашей команды. Пример скриншота ниже:

ffd8ddfede565612.png

4. Конфигурация Gemini CLI через settings.json

Если вы выбираете Cloud Shell для запуска Gemini, тема по умолчанию для Gemini CLI и метод аутентификации уже выбраны и настроены.

Если вы установили Gemini CLI на свой компьютер и запустили его в первый раз, вы выбрали тему, а затем метод аутентификации.

Теперь при последующих запусках Gemini CLI вам больше не придётся выбирать тему и метод аутентификации. Это означает, что они где-то сохраняются, а используемый файл называется settings.json , и именно с его помощью можно настроить Gemini CLI.

Настройки применяются в следующем порядке (Cloud Shell делает доступными только пользовательские настройки):

  1. Система: /etc/gemini-cli/settings.json (применяется ко всем пользователям, переопределяет настройки пользователя и рабочего пространства).
  2. Рабочее пространство: .gemini/settings.json (переопределяет пользовательские настройки).
  3. Пользователь: ~/.gemini/settings.json .

Пользователь Windows : %USERPROFILE%.gemini\settings.json (обычно расширяется до C:\Users&lt;YourUsername>.gemini\settings.json)

Система : %ProgramData%\gemini-cli\settings.json (обычно расширяется до C:\ProgramData\gemini-cli\settings.json)

Пользователь Mac : ~/.gemini/settings.json (который расширяется до /Users/<YourUsername>/.gemini/settings.json)

Система : /etc/gemini-cli/settings.json

Если вы помните, при выборе темы вы выбрали сохранение настроек в настройках пользователя. Поэтому зайдите в ~/.gemini folder и найдите файл settings.json .

Мой файл settings.json показан ниже. Если бы вы выбрали другую тему, вы бы увидели её название.

{
  "theme": "Default",
  "selectedAuthType": "oauth-personal" or "cloud-shell"
}

5. Наше первое взаимодействие с Gemini CLI

Давайте начнем с Gemini CLI и введите ваш первый запрос, как показано ниже:

Give me a famous quote on Artificial Intelligence and who said that?

Ожидаемый ответ показан ниже:

4dc0961206c1b568.png

Вы заметите, что наш запрос привёл к вызову инструмента GoogleSearch (встроенного в Gemini CLI). Другими словами, вы уже воспользовались одним из мощных встроенных инструментов Gemini CLI, а именно GoogleSearch , который формирует ответы на основе информации, полученной из интернета. Подробнее об инструментах вы узнаете в следующем разделе.

Быстрый способ понять Gemini CLI и различные команды, которые он поддерживает, — ввести /help (косая черта), и вы увидите множество команд и сочетаний клавиш, как показано ниже:

d333742310905dcc.png

Давайте пока выйдем из Gemini CLI. Это можно сделать командой /quit или дважды нажав Ctrl-C в интерактивном сеансе терминала Gemini CLI.

6. Gemini CLI — параметры команды

При запуске Gemini CLI можно указать несколько параметров командной строки. Чтобы получить полный список параметров, используйте опцию --help как показано ниже.

gemini --help

Здесь должен быть представлен полный набор доступных опций. Рекомендуем вам ознакомиться с документацией здесь .

Давайте рассмотрим несколько из них. Первый — настроить Gemini CLI на использование модели Pro или Flash. На момент написания этой лабораторной работы поддерживаются только эти две модели. По умолчанию используется модель Gemini 2.5 Pro, но если вы хотите использовать модель Flash, это можно сделать при запуске Gemini CLI с помощью параметра -m как показано ниже:

gemini -m "gemini-2.5-flash"

Вы заметите, что если начать описанным выше способом, вы сможете проверить модель в правом нижнем углу терминала Gemini CLI, как показано ниже:

6e662d03b61b2b3f.png

Неинтерактивный режим

Интересный вариант — запустить Gemini CLI в неинтерактивном режиме. Это означает, что вы напрямую отправляете ему приглашение, и он автоматически на него реагирует, без открытия интерактивного терминала Gemini CLI. Это очень полезно, если вы планируете использовать Gemini CLI в автоматическом режиме в рамках скрипта или любого другого процесса автоматизации. Параметр -p используется для отправки приглашения в Gemini CLI, как показано ниже:

gemini -p "What is the gcloud command to deploy to Cloud Run"

Имейте в виду, что продолжение диалога с дополнительными вопросами невозможно. Этот режим также не позволяет авторизовать инструменты (включая WriteFile) или выполнять команды оболочки.

7. Gemini CLI — встроенные инструменты

Gemini CLI поставляется с набором встроенных инструментов, а в документации к ним говорится: «Модель Gemini использует эти инструменты для взаимодействия с локальной средой, доступа к информации и выполнения действий. Эти инструменты расширяют возможности CLI, позволяя ему выходить за рамки генерации текста и решать широкий спектр задач».

Чтобы получить список текущих встроенных инструментов, вызовите команду /tools как показано ниже:

39939257e3f3818e.png

Один из вопросов, который должен сразу же прийти вам в голову, — это вопрос, может ли Gemini CLI просто вызывать эти инструменты, когда ему это нужно? Ответ по умолчанию — нет , когда речь идёт о конфиденциальных операциях, которые могут включать запись в локальную систему, чтение из внешней системы, подключение к внешней сети и так далее.

Хотя при запуске CLI доступен параметр --yolomode (обычно не рекомендуется), Gemini CLI запросит разрешение на запуск выбранного инструмента. Вы можете отказать в разрешении, разрешить запуск один раз или предоставить ему неограниченное разрешение на запуск. Вы должны полностью контролировать ситуацию.

Давайте воспользуемся подсказкой, которая заставит Gemini CLI выбрать один из встроенных инструментов для выполнения, и это даст вам хорошее представление о том, как все это работает.

Представьте себе ситуацию, когда вы хотите получить информацию о последних финансовых новостях со всего мира и сохранить её в файл в локальном рабочем каталоге, из которого вы запустили Gemini CLI. Используйте следующую команду:

Search for the latest headlines today in the world of finance and save them in a file named finance-news-today.txt

Представьте на мгновение, что он должен делать. В идеале ему нужно выполнить поиск в Google, чтобы получить новости из релевантных источников финансовой информации. Затем ему нужно создать файл с именем finance-news-today.txt (операция записи в вашей локальной системе, требующая вашего разрешения) со своим содержимым.

Давайте посмотрим, что произойдет (вам следует сделать то же самое на своем компьютере).

Первое, что он делает, — вызывает инструмент GoogleSearch для поиска в Интернете.

122e6e4b01d05e69.png

После завершения поиска данные извлекаются, как показано ниже:

b721f40e6f643318.png

После этого он будет готов записать данные в файл, используя инструмент WriteFile . Однако, поскольку это конфиденциальная операция ( запись ), запросит ваше разрешение. Вы можете выбрать тип разрешения, например, «разрешить один раз», «разрешить всегда» и т. д. Выберите «разрешить один раз» на данный момент.

e92f3a4774dc1e7.png

После этого информация будет записана в файл, и ниже показано сообщение об успешном завершении:

33c6afdb89033c35.png

Как проверить, записан ли файл? Вы можете использовать @file , чтобы запросить чтение содержимого. При вводе @ отображается список файлов в текущей папке, включая только что созданный файл. Выберите его и отправьте запрос. Мой запрос показан ниже:

read the contents of @finance-news-today.txt

В результате вызываются необходимые инструменты (ReadManyFiles, ReadFile) и отображается содержимое, как показано ниже:

6f214cd743646f44.png

8. Gemini CLI — режим оболочки

Сейчас самое время научиться работать с оболочкой непосредственно из Gemini CLI. Перейти в режим оболочки можно, нажав ! в окне сообщения. Это переключит вас в режим оболочки. Вернуться обратно можно, снова нажав ! или нажав клавишу ESC .

В режиме оболочки вы увидите ! в начале приглашения, как показано ниже:

9e239408835a3acd.png

Вы можете напрямую проверить это, используя стандартные команды, такие как pwd и ls , как показано ниже. Обратите внимание, что команды предполагают использование ОС типа Linux. Если вы используете другую операционную систему (Windows), используйте эквивалентные команды, такие как ( cd , dir и type ). Обратите внимание, что вывод этих вызовов отображается в контекстном окне модели.

2f5d53d3c77fc8e2.png

Вы можете распечатать содержимое файла уже сегодня с помощью команды cat .

2249b5c80e3ae2c0.png

Упражнение : Вот короткое упражнение для пробы. Выберите RSS-канал по вашему выбору. Дайте Gemini CLI запрос на загрузку содержимого RSS-канала и форматирование результатов определённым образом. Это хороший способ автоматизировать что-либо в начале дня. Вы даже можете попросить Gemini CLI определить, есть ли RSS-канал для определённой области, например, для заметок о выпуске Google Cloud Platform.

Пример подсказки показан ниже:

Get the latest release notes for Google Cloud from its RSS Feed and display the key points in a well-formatted list.

В идеале этот запрос должен сначала вызвать инструмент GoogleSearch для поиска RSS-канала Google Cloud Platform, а затем использовать инструмент WebFetch для получения содержимого RSS-канала и его отображения.

9. Настройка серверов протокола контекста модели (MCP)

Сервер MCP — это приложение, которое предоставляет инструменты и ресурсы интерфейсу командной строки Gemini через протокол контекста модели, позволяя ему взаимодействовать с внешними системами и источниками данных. Серверы MCP служат мостом между моделью Gemini и вашей локальной средой или другими службами, такими как API.

Сервер MCP позволяет Gemini CLI обнаруживать и запускать инструменты, тем самым расширяя возможности Gemini CLI по выполнению действий, выходящих за рамки его встроенных функций, таких как взаимодействие с базами данных, API, пользовательскими скриптами или специализированными рабочими процессами.

Gemini CLI поддерживает настройку MCP-серверов для обнаружения и использования пользовательских инструментов. Если Gemini CLI запущен, вы можете проверить настроенные MCP-серверы с помощью команды /mcp , как показано ниже:

255a14eb31529370.png

Если вы не настроили ни одного сервера MCP, запустится документация по серверу MCP Gemini CLI.

Вы можете настроить MCP-серверы на глобальном уровне в файле ~/.gemini/settings.json или в корневом каталоге вашего проекта. Создайте или откройте файл .gemini/settings.json . В этот файл необходимо добавить блок конфигурации mcpServers , как показано ниже:

"mcpServers": {
    "server_name_1": {},
    "server_name_2": {},
    "server_name_n": {}
 }

Каждая конфигурация сервера поддерживает следующие свойства ( Справочная документация ):

Обязательно (одно из следующего)

  • команда (строка) : путь к исполняемому файлу для транспорта Stdio
  • url (строка) : URL конечной точки SSE (например, «http://localhost:8080/sse»)
  • httpUrl (строка) : URL-адрес конечной точки потоковой передачи HTTP

Необязательный

  • args (string[]): Аргументы командной строки для транспорта Stdio
  • Заголовки (объект) : Пользовательские заголовки HTTP при использовании URL или httpUrl
  • env (объект) : переменные среды для серверного процесса. Значения могут ссылаться на переменные среды, используя синтаксис $VAR_NAME или ${VAR_NAME}.
  • cwd (строка) : рабочий каталог для транспорта Stdio
  • timeout (число) : время ожидания запроса в миллисекундах (по умолчанию: 600 000 мс = 10 минут)
  • trust (логическое значение) : если true, обходит все подтверждения вызова инструментов для этого сервера (по умолчанию: false)
  • includeTools (string[]) : список инструментов для включения с этого сервера MCP. Если указано, с этого сервера будут доступны только перечисленные здесь инструменты (поведение белого списка). Если не указано, по умолчанию включены все инструменты с сервера.
  • excludeTools (string[]) : список названий инструментов, которые следует исключить из этого сервера MCP. Перечисленные здесь инструменты не будут доступны модели, даже если они предоставлены сервером. Примечание: excludeTools имеет приоритет над includeTools — если инструмент присутствует в обоих списках, он будет исключён.

Давайте настроим один из ключевых MCP-серверов, который может вам понадобиться при работе с Github. У вас, вероятно, возникнет вопрос: если в вашей системе уже установлен Git и другие сопутствующие инструменты, нужен ли вам Gitub MCP-сервер?

Gemini CLI вызовет инструменты git, имеющиеся в вашей системе, и вы также можете указать Gemini CLI использовать их. Поэтому имейте в виду, что Gemini CLI поможет преобразовать ваши запросы на естественном языке в эквивалентные инструменты, имеющиеся в вашей системе, и вам может потребоваться явно указать это в командной строке.

Вам может не понадобиться следующий раздел для настройки сервера Github MCP, если в вашей системе уже настроено следующее:

  • Инструменты Git (это означает, что вы можете выполнять такие команды, как git init , git add и т. д. в своей системе)
  • gh : Это GitHub в командной строке. Он выводит запросы на извлечение, проблемы и другие элементы GitHub в терминал рядом с тем местом, где вы уже работаете с Git и своим кодом. Установите его отсюда и проверьте настройки с помощью нескольких команд, особенно касающихся аутентификации на GitHub с вашего компьютера.

Если вы все еще хотите опробовать сервер Github MCP, ознакомьтесь со следующим разделом или пропустите его.

Сервер Github MCP

Официальный MCP-сервер на Github предоставляет достаточно документации по инструментам, которые он предоставляет, а также по их настройке. Вы можете выбрать локальный или удалённый запуск, поскольку Gemini CLI также поддерживает удалённые MCP-серверы.

В этом руководстве демонстрируется возможность использования удалённого сервера MCP в Github . Для этого вам сначала потребуется персональный токен доступа (PAT) от Github .

После этого вам нужно будет добавить объект MCP Server в файл settings.json . Полный файл settings.json в моей системе показан ниже. У вас могут быть дополнительные настройки, но объект mcpServers должен выглядеть так, как показано ниже:

{
  "theme": "Default",
  "selectedAuthType": "oauth-personal",
  "mcpServers": {
       "github": {
            "httpUrl": "https://api.githubcopilot.com/mcp/",
            "headers": {
                "Authorization": "GITHUB_PAT"
            },
            "timeout": 5000
       }
  }
}

Вы можете либо снова запустить Gemini CLI, либо выполнить команду /mcp refresh после обновления settings.json с конфигурацией сервера Github MCP. На снимке экрана ниже показан сервер Github MCP, настроенный на моём компьютере, и различные инструменты, которые теперь доступны Gemini CLI для работы с MCP.

e34f348129d448e9.png

Начнём с запроса, который вызовет один из инструментов сервера Github MCP. Введите следующий запрос:

da643d182ac3fca4.png

Обратите внимание, что он выберет правильный инструмент с сервера Github MCP, но, как и в случае с другими встроенными инструментами, для его вызова потребуется явное разрешение. Давайте посмотрим, что вы получите.

Теперь вам нужно работать с одним из ваших проектов на Github. Задавайте запросы на естественном языке, например:

  • Опишите мне <название-репо>?
  • Клонировать <имя-репо> на мою локальную машину.
  • Опишите @<имя-файла> или @<имя-каталога>/
  • Каковы различные компоненты этого репозитория?
  • Я внёс необходимые изменения. Можете ли вы отправить эти изменения на Github и использовать инструменты GitHub MCP Server для этого?

Подробное упражнение по работе с сервером Github MCP вы найдете далее в лабораторной работе.

Context7 MCP-сервер

Context7 предоставляет актуальную документацию для LLM и редакторов кода ИИ. Если вы хотите предоставить LLM-контекст с актуальной документацией по выбранному вами фреймворку, сервер Context7 MCP — отличный выбор для настройки.

Убедитесь, что ваша библиотека указана на домашней странице Context7 .

Вот MCP-сервер, который вам нужно добавить в файл settings.json .

"context7": {
      "httpUrl": "https://mcp.context7.com/mcp"
    }

После настройки сервера MCP и успешной загрузки Gemini CLI вы сможете увидеть инструменты Context7, как показано ниже:

92f715d87989ff72.png

Теперь вы можете быть конкретны в своем запросе и попросить Gemini CLI использовать Context7 для последней документации при создании вашего приложения или фрагмента кода с использованием определенной платформы XYZ.

Вот пример запроса, в котором я хочу написать агента с помощью Agent Development Kit (ADK) от Google. В запросе я указываю, что нужно искать документацию по нему через Context7 MCP Server.

I am working on coding an Agent using the Agent Development Kit (ADK) from Google. I would like to know how to create the LLMAgent in Python. Use Context7 for the latest documentation on ADK and specifically use /google/adk-python, /google/adk-docs and adk.wiki 

Вот полученный результат:

fe79972a61372d59.png

Сервер MCP для Google Презентаций

Проект Github по адресу https://github.com/matteoantoci/google-slides-mcp предоставляет MCP-сервер для взаимодействия с API Google Slides. Он позволяет программно создавать, читать и изменять презентации Google Slides.

Шаги по настройке сервера MCP описаны в проекте. Вам потребуется среда Node.js , в которой вы развернёте сервер, настроите проект Google Cloud и токены OAuth 2.0, а затем настроите сервер MCP в файле settings.json .

После настройки вы сможете запускать такие запросы, как:

  • Извлеките последнюю информацию из «web_url», обобщите ее в ключевые моменты и создайте презентацию под названием «my_presentation».

Попробуйте!

Больше MCP-серверов

Вот дополнительный список MCP-серверов, которые могут вас заинтересовать:

  1. Сервер Firebase MCP
  2. Медиа-сервисы Google Gen AI (Imagen, Veo, Lyria)
  3. MCP Toolbox for Databases (работа с базами данных Firestore, BigQuery, Google Cloud)
  4. Google Workspace MCP Server (работа с Документами, Таблицами, Календарем, Gmail)

Инструкции по настройке вышеуказанных серверов MCP опубликованы в этом блоге .

10. Настройка Gemini CLI с помощью GEMINI.md

Если вы уже обращали внимание на то, как вы использовали Gemini CLI, то наверняка заметили, что мы просто выдавали запрос и ожидали, что Gemini CLI его выполнит, иногда с результатами, которые не соответствовали нашим ожиданиям. В некоторых запросах вы были слишком конкретны в отношении того, что нужно сделать, и включили эти инструкции в запрос.

Это может работать нормально в зависимости от того, что вы указываете Gemini CLI делать и какие результаты вы получаете. Но во многих случаях необходимо убедиться, что он следует правилам. Этими правилами могут быть конкретные языки программирования или фреймворки, которые нужно использовать. Это могут быть также конкретные инструменты. Это могут быть стили кодирования. Речь идёт не только о генерации, но вы также можете захотеть, чтобы Gemini CLI работал строго в так называемом режиме «планирования», то есть просто отображал план, не генерируя код и не изменяя файлы в системе.

Введите GEMINI.md . Это файл контекста (по умолчанию GEMINI.md , но его можно настроить с помощью свойства contextFileName в файле settings.json ), который критически важен для настройки контекста инструкций (также называемого «памятью»), предоставляемого модели Gemini. Этот файл позволяет предоставлять ИИ инструкции, специфичные для проекта, руководства по стилю кодирования или любую другую необходимую справочную информацию, делая его ответы более персонализированными и точными в соответствии с вашими потребностями.

Файл GEMINI.md имеет формат markdown и загружается в иерархическом порядке, объединяя данные из нескольких мест.

Порядок загрузки:

  1. Глобальный контекст: ** ~/.gemini/GEMINI.md ** (для инструкций, применимых ко всем вашим проектам).
  2. Контекст проекта/предка: CLI выполняет поиск файлов GEMINI.md , начиная с текущего каталога и до корня проекта.
  3. Контекст подкаталога: CLI также сканирует подкаталоги на наличие файлов GEMINI.md , что позволяет выполнять инструкции, специфичные для компонентов.

Вы можете использовать команду /memory show , чтобы увидеть окончательный объединенный контекст, отправляемый в модель.

Как выглядит GEMINI.md ? Мы создали его на основе официальной документации:

# Project: My Awesome TypeScript Library

## General Instructions:

- When generating new TypeScript code, please follow the existing coding style.
- Ensure all new functions and classes have JSDoc comments.
- Prefer functional programming paradigms where appropriate.
- All code should be compatible with TypeScript 5.0 and Node.js 20+.

## Coding Style:

- Use 2 spaces for indentation.
- Interface names should be prefixed with `I` (e.g., `IUserService`).
- Private class members should be prefixed with an underscore (`_`).
- Always use strict equality (`===` and `!==`).

## Specific Component: `src/api/client.ts`

- This file handles all outbound API requests.
- When adding new API call functions, ensure they include robust error handling and logging.
- Use the existing `fetchWithRetry` utility for all GET requests.

## Regarding Dependencies:

- Avoid introducing new external dependencies unless absolutely necessary.
- If a new dependency is required, please state the reason.

Вы заметите, что он содержит как общие, так и весьма конкретные инструкции по стилю кодирования, управлению зависимостями и т. д. Хотя это всего лишь пример файла GEMINI.md для проектов TypeScript, вы можете написать свой собственный, соответствующий вашему языку программирования, фреймворку, стилю кодирования и другим предпочтениям.

Вы можете попробовать использовать собственный файл GEMINI.md . Он взят из опубликованного руководства, демонстрирующего использование Gemini CLI только в режиме Plan . Файл можно найти здесь:

# Gemini CLI Plan Mode
You are Gemini CLI, an expert AI assistant operating in a special 'Plan Mode'. Your sole purpose is to research, analyze, and create detailed implementation plans. You must operate in a strict read-only capacity.

Gemini CLI's primary goal is to act like a senior engineer: understand the request, investigate the codebase and relevant resources, formulate a robust strategy, and then present a clear, step-by-step plan for approval. You are forbidden from making any modifications. You are also forbidden from implementing the plan.

## Core Principles of Plan Mode
*   **Strictly Read-Only:** You can inspect files, navigate code repositories, evaluate project structure, search the web, and examine documentation.
*   **Absolutely No Modifications:** You are prohibited from performing any action that alters the state of the system. This includes:
    *   Editing, creating, or deleting files.
    *   Running shell commands that make changes (e.g., `git commit`, `npm install`, `mkdir`).
    *   Altering system configurations or installing packages.

## Steps
1.  **Acknowledge and Analyze:** Confirm you are in Plan Mode. Begin by thoroughly analyzing the user's request and the existing codebase to build context.
2.  **Reasoning First:** Before presenting the plan, you must first output your analysis and reasoning. Explain what you've learned from your investigation (e.g., "I've inspected the following files...", "The current architecture uses...", "Based on the documentation for [library], the best approach is..."). This reasoning section must come **before** the final plan.
3.  **Create the Plan:** Formulate a detailed, step-by-step implementation plan. Each step should be a clear, actionable instruction.
4.  **Present for Approval:** The final step of every plan must be to present it to the user for review and approval. Do not proceed with the plan until you have received approval. 

## Output Format
Your output must be a well-formatted markdown response containing two distinct sections in the following order:

1.  **Analysis:** A paragraph or bulleted list detailing your findings and the reasoning behind your proposed strategy.
2.  **Plan:** A numbered list of the precise steps to be taken for implementation. The final step must always be presenting the plan for approval.

NOTE: If in plan mode, do not implement the plan. You are only allowed to plan. Confirmation comes from a user message.

Сохраните содержимое выше в файле GEMINI.md и сохраните его в папке ~/.gemini/GEMINI.md . Это та же папка, в которой вы создали файл settings.json. Вы также можете сохранить файл GEMINI.md в папке <current project folder>/.gemini или даже разместить несколько файлов GEMINI.md в подкаталогах, если у вас разные инструкции.

Дайте подсказку для создания приложения и посмотрите, как оно отреагирует.

Вот ещё один файл GEMINI.md ( режим Gemini Explain ), который вы можете изучить, а затем адаптировать под свои нужды и использовать. В нём основное внимание уделяется GEMINI CLI как интерактивному руководству, помогающему пользователям понимать сложные кодовые базы посредством диалогового процесса изучения.

Файл GEMINI.md является ключом к настройке Gemini CLI под ваши предпочтения. Рекомендуется ознакомиться с этой практической серией « Практический Gemini CLI », которая подробно рассматривает эту область, а также то, как можно автоматически сгенерировать файл для вашего проекта, настраивать даже системные подсказки и многое другое.

Обратите внимание, что вы также можете создать файл GEMINI.md непосредственно во время взаимодействия с Gemini CLI. В любой момент вы можете использовать команду /memory add <какая-то инструкция/правило> , и Gemini CLI добавит её в файл GEMINI.md . Вы даже можете использовать естественный язык, чтобы попросить Gemini CLI добавить данные в память, например, GEMINI.md с помощью подсказок типа « Запомнить <какую-то инструкция/правило> » или « Добавить в память <какая-то инструкция/правило> ».

11. Gemini CLI — пользовательские слэш-команды

Вы только что увидели, как настроить GEMINI.md для создания режима «План». В предыдущем разделе также были представлены ссылки на режим «Объяснение».

Что, если вы хотите настроить оба режима и указать Gemini CLI переходить в любой из них с помощью команд /plan или /explain ? Именно для этого и предназначены пользовательские команды Gemini CLI.

Как говорится в документации : «Пользовательские команды позволяют сохранять и повторно использовать избранные или наиболее часто используемые команды в качестве персональных сочетаний клавиш в Gemini CLI. Вы можете создавать команды, относящиеся только к одному проекту, или команды, доступные глобально для всех ваших проектов, оптимизируя рабочий процесс и обеспечивая согласованность».

Давайте создадим пару пользовательских слэш-команд: /plan и /explain .

Следующий шаг — понять, откуда Gemini CLI берёт пользовательские команды. Согласно документации, он берёт команды из двух источников, загруженных в определённом порядке:

  1. Пользовательские команды (глобальные): находятся в ~/.gemini/commands/ . Эти команды доступны в любом проекте, над которым вы работаете.
  2. Команды проекта (локальные): находятся в папке <your-project-root>/.gemini/commands/ . Эти команды относятся к текущему проекту и могут быть добавлены в систему контроля версий для совместного использования с вашей командой.

Давайте выберем папку текущего проекта, из которой вы запустили Gemini CLI. Это будет папка <your-project-root>/.gemini/commands/ . Теперь создадим структуру папок.

Что нам нужно создать в этой папке? Нам понадобятся два файла TOML ( plan.toml и explain.toml ). Подробнее о пространствах имён и соглашениях об именовании можно прочитать здесь .

Каждый файл TOML должен содержать два поля: description и prompt . Убедитесь, что описание краткое и понятное, так как оно будет отображаться рядом с командой в Gemini CLI. Пример файла TOML ниже взят из официального блога «Пользовательские команды с косой чертой» .

Пример файла plan.toml представлен ниже. Обратите внимание, что в приглашении содержится специальный заполнитель . CLI заменит его на весь текст, введённый пользователем после имени команды.

description="Investigates and creates a strategic plan to accomplish a task."
prompt = """
Your primary role is that of a strategist, not an implementer.
Your task is to stop, think deeply, and devise a comprehensive strategic plan to accomplish the following goal: {{args}}

You MUST NOT write, modify, or execute any code. Your sole function is to investigate the current state and formulate a plan.

Use your available "read" and "search" tools to research and analyze the codebase. Gather all necessary context before presenting your strategy.

Present your strategic plan in markdown. It should be the direct result of your investigation and thinking process. Structure your response with the following sections:

1.  **Understanding the Goal:** Re-state the objective to confirm your understanding.
2.  **Investigation & Analysis:** Describe the investigative steps you would take. What files would you need to read? What would you search for? What critical questions need to be answered before any work begins?
3.  **Proposed Strategic Approach:** Outline the high-level strategy. Break the approach down into logical phases and describe the work that should happen in each.
4.  **Verification Strategy:** Explain how the success of this plan would be measured. What should be tested to ensure the goal is met without introducing regressions?
5.  **Anticipated Challenges & Considerations:** Based on your analysis, what potential risks, dependencies, or trade-offs do you foresee?

Your final output should be ONLY this strategic plan.
"""

Попробуйте также создать файл Explain.toml . Вы можете воспользоваться режимом Gemini Explain , чтобы выбрать нужный контент.

Перезапустите Gemini CLI. Теперь вы увидите команду с косой чертой ( /plan ), как показано ниже:

8b0720ba31b6c251.png

12. Примеры использования для пробы

Gemini CLI можно применять в самых разных ситуациях, как разработчикам, так и неразработчикам. Здесь представлено несколько сценариев, и в зависимости от вашей области интересов вы можете попробовать любой из них или все сразу.

В каждом из этих случаев выводится запрос. Вы можете попробовать это в интерактивном или неинтерактивном режиме Gemini CLI, указав параметр -p при запуске Gemini CLI.

Кодирование Vibe с помощью Gemini CLI

Давайте используем Gemini CLI для создания кода приложения. В этом задании вам нужно будет сгенерировать приложение с помощью Gemini CLI, а затем загрузить его исходную версию в репозиторий Github.

Предпосылки

Для выполнения задач этого раздела необходимо выполнить несколько предварительных условий:

  • Гит
  • Gemini CLI с Github MCP Server (мы сделали это ранее) или если вы настроили gh ( инструмент Github CLI ), это тоже будет работать.
  • Знакомство с основами Git и небольшие знания в программировании

Предположим, вы запустили Gemini CLI в выбранной вами папке . Убедитесь, что серверы MCP успешно запущены, особенно сервер GitHub MCP.

Начните с начального запроса. Вы можете изменять его по своему усмотрению. Имейте в виду, что в течение всего сеанса работы с Gemini CLI будут запрашиваться разрешения на создание файлов и т.д. Обязательно предоставьте необходимые разрешения.

В этой задаче нам не нужен Gemini CLI для запуска приложения или его тестирования, поскольку нам требуется больше контроля. Но как именно вы это сделаете, решать вам.

Generate a website for a 1-day event filled with technical talks. There are going to be 6 talks in a single track of 1 hour each. Each talk has the following information: title, 1 or maximum of 2 speakers, category (1 or maximum of 3 keywords), duration and a description. The website has a single page where users can see the schedule for the entire day with the timings. There will be one lunch break of an hour and the event starts at 10:00 AM. Keep a 10 minute transition between talks. I would like to use Node.js on the server side and standard HTML, JavaScript and CSS on the front-end. The users should be able to search the talks based on category.

I would like you to proceed in the following way: 
1. Plan out how you would design and code this application.
2. Ask me for any clarifications along the way.
3. Once I am fine with it, do generate the code and provide me instructions to run and test locally. 

Следующие несколько подсказок и ответов представляют собой пример наблюдаемого процесса. Вы можете получить совершенно другой ответ, поэтому внимательно изучите план и взаимодействуйте с Gemini CLI по мере необходимости.

90232297f1e952f8.png

Мы заметили, что иногда Gemini CLI пытается сделать больше и может даже давать вам команды, которые он хотел бы выполнить. В этом упражнении желательно этого не делать, чтобы у вас было больше контроля над тем, как он справляется с задачей, и что вы хотели бы проверить в первую очередь.

Например, если он предлагает выполнить команды, вы можете просто выйти и вывести сообщение, как показано ниже:

d74e235b0db77c51.png

Следуя инструкциям по запуску сервера и переходу на домашнюю страницу, мы получили пример сайта, как показано ниже (вы должны увидеть вариант похожего сайта, если использовали ту же подсказку):

71a0a6123a90e068.png

Вы можете продолжать вносить изменения с помощью Gemini CLI. Как только вы будете удовлетворены результатом, вы можете опубликовать его в репозитории Github.

Для начала давайте создадим файл .gitignore, и вы сможете воспользоваться помощью Gemini CLI.

Create a .gitignore file for this project.

Следующим шагом для вас будет дать инструкции Gemini CLI по размещению этого репозитория под нашей учетной записью Github, и это должно запустить инструменты сервера Github MCP в фоновом режиме.

Дайте подсказку, аналогичную приведенной ниже:

Great! I would now like to push all of this to a new repository in my Github account. I would like to name this repository <Your-Name>-event-talks-app

Здесь будет выполнено несколько команд:

  1. Создайте репозиторий.
  2. Он будет использовать несколько команд Git: init, add, commit для управления локальным репозиторием Git.
  3. Затем он настроит удаленный Git и выполнит отправку

Примечание: в некоторых случаях Gemini CLI может остановиться из-за тайм-аута или использовать неверное имя пользователя и т. д. Обратитесь к нему и предложите исправления.

Если всё пройдёт успешно, у вас должен появиться репозиторий на Github. Пример скриншота ниже:

35c2db48c39fb21a.png

Note that you have not generated a README.md for this project and that is a good exercise for the next section, where we shall now work with this repository that you just created.

Using Gemini CLI to work on a Github Repository

In this use case, you shall use Gemini CLI to work with a Github repository. You will perform multiple tasks that include:

  • Understanding the code base
  • Generating documentation
  • Implementing a new feature
  • Commit and push the changes back to the repository
  • Work on a Github Issue and implement the proposed changes

This should give you a good foundation to then work with your repositories and use Gemini CLI as an assistant vis-a-vis these developer specific tasks.

Предпосылки

To perform the tasks in this section, you will need to the following:

  • Гит
  • Gemini CLI with Github MCP Server (we did that earlier) or if you have set up gh ( Github CLI tool ) that would work too.
  • Familiarity with Git basics and a bit of programming knowledge (we will use Node.js in this example since you might already have the environment ready on your machine due to the fact that you have installed Gemini CLI). But feel free later on to pick a repository of your choice with a different programming language and framework.
  • You should have completed the previous section and have the repository handy, where we created an Event Talks website.

Let's continue to use Gemini CLI from the folder/directory that you used to generate the Event Talks application or if needed, you can clone the repository to your local machine and then start Gemini CLI from that directory. Try out the following scenarios as listed below:

Understanding the code base

  • I would like to understand this project in detail. Help me understand the main features and then break it down into Server and Client side. Take a sample flow and show me how the request and response works.
  • Explain @server.js

Generating a README file

  • Generate a README file for this project.

Gemini CLI in this case not only generated the README file but it also wanted to execute the commands to add to the Git repository and push the changes to the remote, which if you find it doing, you may allow it to do so.

In some cases, it may even offer to generate the LICENSE file for you. You can decide if you would like to do so. Depending on the outcome, you will find the README and/or LICENSE files generated and the changes have been pushed to Github.

d77239c8fae0aa8b.png

Implementing a new feature

  • I would like to implement a new feature where the user is allowed to search by a specific Speaker too. First show me a plan of how you would implement this change and then we can generate the code.

It should provide you with a plan, which you can approve. On approval, Gemini CLI will go ahead and make those changes. Do test out your changes and if there are bugs (likely), do ask Gemini CLI to fix it.

Once the changes look good, you can follow the same steps to commit and push them to the remote repository.

Generate Issues based on suggested features

Let's try something interesting here. You are going to ask Gemini CLI about how it can improve the user experience of this application and based on its assessment, it can create those suggestions as issues in the same Github repository. It will use the " create_issue " tool from the Github MCP Server.

Try the following prompt:

  • I would like you to assess the application from a user experience point of view. Ease of use, responsiveness, helpful messages and more. Please come up with a list of improvements and I would like you to then create them as Issues in the Github repository.

Ideally it will share the improvements first with you and then proceed with your permission to create the issues in the Github repository. Here is a sample screenshot from our run:

495b0f7afab91ec6.png

Work on a Github Issue and implement the proposed changes

You can now take one of the issues that was generated earlier and ask Gemini CLI to work and implement it.

A sample issue that it generated is shown below:

2e41f9f6eac3d1b.png

Take the entire Issue URL and provide a prompt like this:

  • Please go through the Issue: <YOUR_ISSUE_URL> and understand what changes need to be made. First discuss the plan and then show the proposed changes in code.

Feel free to approve the changes and push them to the repository. You can even ask it to close the issue.

cd3c89cf3d47723b.png

(Optional) Everyday Tasks

The use cases given below are tasks that you might end up doing regularly. These include arranging files into folders, fetching and summarizing content from the web, processing image files and extracting content from them, working with databases and more.

Feel free to explore any of the use cases that you like.

Organizing Files/Folders

You can use Gemini CLI to organize the files depending on types in various folders as needed. Go to a folder on your machine that has several files .txt, .png, .jpg, .pdf, .mp4 and others. This is likely to be your Desktop or your Downloads folder.

Here is a sample folder and the contents of the folder are shown below (you may have other files):

e9d70be5bbea46d5.png

Navigate to that folder and start Gemini CLI. You are going to ask Gemini CLI to create some folders first: Images, Documents, Videos and then you will ask Gemini CLI to organize the files in the folders.

The Gemini CLI will often prompt you for permission before executing commands, especially those that modify your file system (like writing, moving, or deleting files). Always review these prompts carefully before granting permission. This is your safety net.

Create the following folders "Images","Documents","Videos"

Then give the following prompt:

Go through all the files in this folder and then organize them by moving all the files ending with .jpg, .jpeg, .gif into the "Images" folder. Move all ".txt" files into the "Documents" folder. Move all the ".mp4" files in the "Videos" folder.

An example of what the final state of the folder should be, is shown below. You should see new sub-folders created and the files moved into the respective sub-folders depending on their type.

7e27d4c88416f62.png

A few other organizing scenarios (the prompts are given next to each scenario):

  1. Summarization: For each document in the 'Documents' folder, create a txt file in the same folder named 'summary_ORIGINAL_FILENAME.txt' that contains a 3-sentence summary of the document's main points.
  2. Categorizing by Type: Scan all PDF and DOCX files in this directory. Move all files with "invoice" in their name or content into the 'Financial/Invoices' folder. Move files with "receipt" into 'Financial/Receipts'. Any other .docx files go into 'Reports'.
  3. Extracting Key Information (and "tagging"): For each PDF file in the 'Financial/Invoices' folder, read its content. If you find a date, rename the file to include that date in YYYY-MM-DD format, eg, 'invoice_2025-07-26_original_name.pdf'.

Organizing Images

Let's see how you can organize image content in your machine.

To try this out:

  • You will need to have a directory/folder with various image files (.jpg, .png, etc.). Include some with EXIF data (most photos from cameras/phones have this).
  • Navigate into this directory.
  • Launch Gemini CLI.

Try out any of the following scenarios (the prompts are given next to each scenario):

  • Rename by Date (EXIF Data) : Rename all .jpg and .png files in this directory to include their creation date from EXIF data in 'YYYYMMDD_HHMMSS_original_name.jpg' format. If no EXIF date is found, use the file's last modified date.
  • Create Image Descriptions: For each image in this folder, describe what is in the image and save that description in a text file named 'description_ORIGINAL_FILENAME.txt' in the same directory.
  • Identify Duplicates (Conceptual, requires more advanced logic): Find any duplicate images in this folder based on their visual content, and list their filenames. Do not delete them yet.

Summarizing Articles (Local Files or Web)

For each of the scenarios below, feel free to change the url, topic of interest and the local file names as applicable. The filenames provided are sample file names, you can replace them with filenames of files that you have on your system.

Try out any of the following scenarios (the prompts are given next to each scenario):

  • Summarize a web article (single URL): Go to https://medium.com/google-cloud/getting-started-with-gemini-cli-8cc4674a1371 and summarize the top 3 key takeaways from this news article.
  • Summarize multiple web articles (eg, from a search): Find the latest news articles about "Gemini CLI" using Google Search. For the top 5 relevant articles, summarize each in 2-3 sentences and list their URLs.
  • Summarize a local text file: Summarize the main points of the article in 'my_research_paper.txt'. Focus on the methodology and conclusions.
  • Summarize a local PDF: Read 'financial_report_Q2_2025.pdf'. Provide a summary of the financial performance and key challenges mentioned.

Extracting Specific Information (Local Files or Web)

For each of the scenarios below, feel free to change the url, topic of interest and the local file names as applicable. The filenames provided are sample file names, you can replace them with filenames of files that you have on your system.

Try out any of the following scenarios (the prompts are given next to each scenario):

  • Extract entities from a local article: From 'biography.txt', list all named individuals and the significant dates associated with them.
  • Extract data from a table in a PDF: In 'quarterly_sales.pdf', extract the data from the table on page 3 that shows "Product Sales by Region" and present it in a Markdown table format.
  • Extract news headlines and sources from a news website: Go to 'https://news.google.com/' (or a similar news site). Extract the main headlines from the front page and their corresponding news sources. Present them as a bulleted list.
  • Find product specifications from an e-commerce page: Browse to 'https://www.amazon.in/Google-Cloud-Certified-Associate-Engineer/dp/1119871441' (example for a book). Extract the book title, author and other details. Present this in a structured JSON format.
  • Extract duration from a video , in a certain format (eg "2h37m42s").

Answering Questions based on Content (RAG-like behavior)

For each of the scenarios below, feel free to change the url, topic of interest and the local file names as applicable. The filenames provided are sample file names, you can replace them with filenames of files that you have on your system.

Try out any of the following scenarios (the prompts are given next to each scenario):

  • Q&A on a local document: I'm attaching 'user_manual.pdf'. What are the steps to troubleshoot network connectivity issues?
  • Q&A on a web page: Using the content from 'https://www.who.int/news-room/fact-sheets/detail/climate-change-and-health', what are the primary health risks associated with climate change according to WHO?
  • Compare information across multiple sources: I have two news articles: 'article1.txt' and 'article2.txt', both discussing the recent economic policy changes. Compare and contrast their views on the potential impact on small businesses.

Content Generation based on Extracted Information

For each of the scenarios below, feel free to change the url, topic of interest and the local file names as applicable.

Try out any of the following scenarios (the prompts are given next to each scenario):

  • Generate a news brief from an article: Read @tech_innovation_article.txt. Write a short, engaging news brief (around 150 words) suitable for a company newsletter, highlighting the new technology and its potential.
  • Draft an email summarizing a meeting transcript: Here is a meeting transcript file: @meeting_transcript.txt. Draft an email to the team summarizing the key decisions made and action items assigned, including who is responsible for each.

Gemini CLI multi-modal support

Gemini CLI has multi-model support via Gemini and you can ask it to process files of different content formats as per your requirements.

You are going to process a bunch of invoice images with Gemini CLI and extract key information from them. Follow the steps given below:

  • Create a folder on your machine and download some invoices from the following Github repository .
  • Launch Gemini CLI from that folder

Give the following prompt to extract out information from the invoices in the form of a table.

The current folder contains a list of invoice files in Image format. Go through all the files in this folder and extract the following invoice information in the form of a table: Invoice No, Invoice Date, Invoice Sent By, Due Date, Due Amount.

You should ideally get an output that looks like this:

fb4183498d02229.png

Here is another scenario, where you can ask for additional derived columns. Let's say that you want to show a red cross emoji for all the invoice due dates that are in the past. You can give a prompt as follows:

list all files with .png extension in this folder. Extract the invoice information from it by reading them locally and display it in a table format containing the following column headers: : Invoice No, Invoice Date, Invoice Sent By, Due Date, Due Amount. Add a column at the end of the table that shows a red cross emoji in case the due date is in the past.

This produces the following output:

f65f6ca8308c7053.png

Apply this to any of your own files that are in formats other than text.

Using Gemini CLI to work with databases

You can use Gemini CLI to more efficiently work with various databases. You can use it for multiple scenarios: querying with natural language, exporting data, designing database schemas, generating realistic test data and more.

You shall be using SQLite3 to do this task. You will need to install SQLite3 and have the sample Chinook database .

Here are brief instructions for setting up SQLite3:

  1. macOS: SQLite3 comes pre-installed. Verify with sqlite3 --version . If needed, install with Homebrew: brew install sqlite3 .
  2. Windows: Download the precompiled binaries from the SQLite website . Extract the files to a directory (eg, C:\sqlite ). Add that directory to your system's PATH environment variable.
  3. Linux: Debian/Ubuntu: sudo apt update && sudo apt install sqlite3

Download the sample Chinook database (here is a direct link to download it).

To run these prompts, it is suggested that you create a folder ( database-tasks ) in the gemini-cli-projects directory. Copy the Chinook database file to that folder. Ensure that the sqlite3 tool is set up on your system and available in the path, so that Gemini CLI can use that. Launch Gemini CLI.

The database schema diagram is shown below:

fb8e96c21ad57590.png

Let's assume that you are in a folder named database-tasks and the Chinook database file is named chinook.db .

Several prompts are given below that can help you work with databases. Let's cover the first one in brief to demonstrate the permission that will be requested.

Start off with the prompt to list down the tables that are present in the database, give the following prompt:

What tables are present in the file: chinook.db 

This uses the tool to read the file and then wants to use sqlite3 utility present on your system to do the needful:

b2a17ef60706c3f5.png

Provide the permission to run it once to get the expected output:

8d40754b830f4697.png

Try out the following prompts or any other prompt of your choice:

  • How many employees are there?
  • What is the schema of the invoices table?
  • Which are the top 3 invoices by total and which customers have placed those invoices?

You will notice that Gemini CLI takes care of two things: Generating the correct SQL statement to meet your requirement and giving the correct sqlite3 command.

Using Gemini CLI to generate data

You can prompt Gemini CLI to produce data in various data formats. This could range from content pieces to JSON data, that you might need to mock. Let's focus here on scenarios applicable to developers/testers.

Here are some prompts to try out:

Generate JSON data of sample customer reviews

Generate a JSON array of 3 synthetic customer reviews for a new smartphone. Each review should have 'reviewId' (string, UUID-like), 'productId' (string, e.g., 'SMARTPHONE_X'), 'rating' (integer, 1-5), 'reviewText' (string, 20-50 words), and 'reviewDate' (string, YYYY-MM-DD format).

Generating Mock API Responses (JSON)

Generate a JSON array representing 7 daily sales records for a mock API endpoint. Each record should include 'date' (YYYY-MM-DD, chronologically increasing), 'revenue' (float, between 5000.00 and 20000.00), 'unitsSold' (integer, between 100 and 500), and 'region' (string, either 'North', 'South', 'East', 'West').

Generating Sample Database Insert Statements (SQL)

Generate 5 SQL INSERT statements for a table named 'users' with columns: 'id' (INTEGER, primary key), 'username' (VARCHAR(50), unique), 'email' (VARCHAR(100)), 'password_hash' (VARCHAR(255)), 'created_at' (DATETIME, current timestamp). Ensure the password_hash is a placeholder string like 'hashed_password_X'.

Generating CSV Data for Data Loading/Analysis

Generate 10 lines of CSV data, including a header row, for customer transactions. Columns should be: 'TransactionID' (unique string), 'CustomerID' (integer), 'ItemPurchased' (string, e.g., 'Laptop', 'Monitor', 'Keyboard'), 'Quantity' (integer, 1-3), 'UnitPrice' (float, between 100.00 and 1500.00), 'TransactionDate' (YYYY-MM-DD).

Generate a Configuration file (YAML)

Generate a sample YAML configuration for a 'user_service'. Include sections for 'database' with 'host', 'port', 'username', 'password', 'database_name'. Also include a 'api_keys' section with 'payment_gateway' and 'email_service' placeholders. Use realistic default values.

Generating Test Data for Edge Cases/Validation

Generate a JSON array of 8 email addresses for testing purposes. Include a mix of: 2 valid standard emails, 2 with missing '@', 2 with invalid domains (e.g., '.com1'), and 2 with special characters in the local part that are usually invalid (e.g., spaces or multiple dots).

13. Congratulations

Congratulations, you've successfully explored Gemini CLI, its capabilities and applied it to a few use cases.

Справочные документы