2. Konfigurowanie i personalizowanie asystenta [GA]

Włączanie interfejsów API – to zadanie dla administratora Bumble. Wyjaśnijmy, że nie jest to przeznaczone dla uczestników, ponieważ mogą oni nie mieć dostępu do konsoli Google Cloud.

Należy dodać to jako wymaganie wstępne do warsztatów, aby administrator chmury mógł je ukończyć.

Konfigurowanie personalizacji

„Consumer Software & Mobile App Development” nie ma na liście, więc musisz wybrać opcję „Niestandardowe”, a potem dodać tę kategorię.

Następnie muszą zamknąć to wyskakujące okienko.

3. Konfigurowanie łączników danych [GA]

Robi to administrator Gemini Enterprise, a nie uczestnik. Wymień to jako warunek wstępny uczestnictwa w warsztatach.

4. Podstawowe interakcje z oprogramowaniem sprzęgającym Jira [GA]

Najpierw musisz autoryzować konektory. Każdy uczestnik musi to zrobić, aby móc korzystać z konektorów Jira i GitHub. Poniżej znajdziesz zrzuty ekranu.

image-1-jira-authozie.png

image-2-jira-authoziation-page.png

image-3-after-jira-authoziation.png

Zrób to samo w przypadku GitHuba.

Poproś też o wyłączenie wyszukiwarki Google podczas pracy z łącznikami Jira lub GitHub.

image-4-disable-google-search.png

1. Znajdź klucz projektu Jira – podaj wskazówki, jak otworzyć czat, aby zadać pytanie Gemini. Poniżej znajdziesz zrzut ekranu.

Image-5-jira-list-projects.png

To samo zrób w przypadku innych testów, np. tworzenia zadań, komentarzy, aktualizowania stanu itp. Zaktualizowaliśmy też odpowiednie zrzuty ekranu.

image-6-jira-create-projects-1.png

image-7-jira-create-projects-2.png

image-8-jira-create-projects-3.png

image-9-jira-comment-1.png

image-10-jira-comment-2.png

image-11-jira-comment-3.png

image-12-jira-status-1.png

image-13-jira-status-2.png

image-14-jira-status-3.png

5. Podstawowe interakcje z łącznikiem GitHub [GA]

Aby zatwierdzić listę zadań, musisz znać nazwę repozytorium. Aby uzyskać nazwę repozytorium, użyj prompta podobnego do tego poniżej.

Przed uruchomieniem tego narzędzia poproś uczestnika o wyłączenie innych łączników i pozostawienie tylko GitHub.

Do wszystkich testów dodaj odpowiednie obrazy. Poniżej znajdziesz nazwy plików z zrzutami ekranu.

image-15-github-enable-1.png

image-16-github-list-repo-2.png

image-17-github-list-commit-3.png

image-18-github-list-pull-request-4.png

image-19-github-list-pull-request-summary-5.png

6. Porównanie dokumentacji z wykonaniem [GA]

W sekcji Wymagania dotyczące przesyłania dokumentów najpierw należy wykonać krok 2: „Prześlij plik o nazwie requirements.txt z tą treścią”, aby uczestnik miał plik utworzony na laptopie i mógł go przesłać. Aby utworzyć plik .txt na komputerze Mac, użyj wbudowanej aplikacji TextEdit. Otwórz TextEdit, przejdź do menu u góry i kliknij Format > Make Plain Text (Format > Utwórz zwykły tekst). Wpisz tekst, kliknij Plik > Zapisz, nadaj plikowi nazwę (upewnij się, że kończy się ona rozszerzeniem .txt), wybierz lokalizację i kliknij. Podaj podobne instrukcje dotyczące innych laptopów

Also “In the Gemini Enterprise chat interface, click the + (plus) icon or drag and drop a file to upload.” not relanvat at this stage

Po utworzeniu tekstu wymagań otwórz nowe okno czatu, wyłącz inne łączniki i włącz tylko Jira, a następnie utwórz przykładowe dane za pomocą Gemini i przeprowadź analizę. Wtedy musisz przesłać plik tekstowy do aplikacji Gemini. Poniżej znajdziesz zrzuty ekranu z tego testu. Nazwy plików zrzutów ekranu są podane w odpowiedniej kolejności.

image-20-jira-req-txt-1.png

Grafika do artykułu Tworzenie przykładowych danych za pomocą Gemini

image-21-jira-create-ticket-2.png

image-22-jira-create-ticket-confirmation-3.png

image-23-jira-create-ticket-done-status-confirmation-4.png

image-24-jira-create-ticket-confirmation-5.png

image-25-jira-create-ticket-inprogress-status-confirmation-6.png

image-26-jira-create-ticket-created-6.png

image-27-jira-create-tinjira-portal-7.png

Obrazy do sekcji Uruchom analizę

image-28-jira-run-analysis-1.png

image-29-jira-run-analysis-output-2.png

Uwaga: „Kliknij cytaty podane w odpowiedzi, aby sprawdzić, do której części pliku lub zgłoszenia Jira odwołuje się Gemini”. Nie widzę cytatów.

7. Analizowanie backlogów sprintu za pomocą NotebookLM [GA]

Podobnie najpierw utwórz plik txt, podaj instrukcje, a następnie kliknij Utwórz nowy notatnik. Następnie prześlij plik o nazwie retro.txt z tymi przykładowymi notatkami:

Podaj instrukcje dotyczące generowania statystyk dotyczących tego, co należy kliknąć.

Oto pliki obrazów tych zrzutów ekranu

image-30-notebook-lm-output.png

image-31-notebook-lm-mindmap.png

Sprawdź zrzut ekranu z rzeczywistego testu i w razie potrzeby zaktualizuj instrukcję. Nazwa pliku zrzutu ekranu. Wspomnij też, że wykonanie tych czynności zajmuje trochę czasu, więc uruchom następne laboratorium i przejdź do niego, dopóki nie będzie gotowe. Podaj też szczegółowe informacje o tym, co należy sprawdzić w raporcie.

deep-research-1.png

deep-research-2.png

deep-research-3.png

9. Burza mózgów z generowaniem pomysłów [wersja podglądowa]

Sprawdź zrzut ekranu z rzeczywistego testu i w razie potrzeby zaktualizuj instrukcje. Nazwa pliku zrzutu ekranu. Wspomnij też, że wykonanie tych czynności zajmuje trochę czasu, więc uruchom następne laboratorium i przejdź do niego, dopóki nie będzie gotowe. Podaj też szczegółowe informacje o tym, co należy sprawdzić w raporcie.

idea-agent-1

idea-agent-2

idea-agent-3

idea-agent-4

idea-agent-5

10. Tworzenie wieloetapowego asystenta Scrum Mastera [wersja przedpremierowa]

Pierwszym krokiem jest kliknięcie „Agent czatu” podczas wybierania „Nowy agent”, ponieważ w sekcji „Nowy agent” mamy opcję podglądu „Agenta przepływu pracy”, której nie omawiamy w tej sekcji.

Patrz obraz scrum-master-1.png

Aby zmienić nazwę agenta, kliknij środkowe pole, aby otworzyć panel boczny. Zobacz obraz scrum-master-3.png i scrum-master-4.png.

Aby podać prompta, wykonaj następny krok zgodnie z ilustracją – scrum-master-5.png

W kroku 3 podaj te instrukcje: w rzeczywistości tworzy on agenta z włączoną wyszukiwarką Google, a także zmienia jego nazwę na „Lead Scrum Master” (patrz obraz scrum-master-6.png). Usuńmy więc krok 2, aby zmienić nazwę agenta na „Bumble-Lead-Scrum-Master”, ponieważ prompt zmienia jego nazwę, ale upewnij się, że zawsze nazywa go „Lead Scrum Master”.

W prompcie poproś też o używanie tylko łączników Jira i GitHub, a nie wyszukiwarki Google.

Zaktualizuj też pozostałe instrukcje, zastępując „Bumble-Lead-Scrum-Master” bieżącą nazwą agenta.

Dodawanie wyspecjalizowanych sub-agentów

Krok 1

W instrukcjach wspomnij, że klucz projektu był wcześniej wyszukiwany w sekcji 4. Podstawowe interakcje z łącznikiem Jira [GA] – krok 1

Odznacz wyszukiwarkę Google i zostaw tylko Jira.
Zapoznaj się z obrazami poniżej i zaktualizuj instrukcje.

scrum-master-7.png

Scrum-master-8.png

Krok 2

W instrukcjach wspomnij, że nazwa repozytorium była wcześniej wyszukiwana w punkcie 5. Podstawowe interakcje z łącznikiem GitHub [GA] – krok 1

Odznacz wyszukiwarkę Google i zostaw tylko GitHub.
Zapoznaj się z obrazami poniżej i odpowiednio zmień instrukcje.

scrum-master-9.png

scrum-master-10.png

scrum-master-11.png

Ten prompt w rzeczywistości przeszukuje publiczny GitHub i uzyskuje wyniki „Wygeneruj aktualizację o wysokim priorytecie dla projektu Bumble z ostatnich 24 godzin”. To jest całkowicie błędne. Agent powinien szukać danych tylko w projekcie Jira i repozytorium GitHub, które podałem. Nie wiem dlaczego.

Zapoznaj się ze zrzutem ekranu, na którym widać uzyskane przeze mnie dane wyjściowe – scrum-master-12.png. Poniżej znajdziesz rzeczywiste dane wyjściowe.

Pamiętaj, aby prawidłowo zaktualizować instrukcje, tak aby wyszukiwanie obejmowało tylko projekt Jira i raport GitHub skonfigurowane w agencie.

Generate the high-priority update for the Bumble project for the past 24 hours.
Response complete
Gemini replied
Here is the high-priority daily update for the Bumble project ecosystem over the past 24 hours. [107, 109, 928, 934]
-
🚀 Overall Progress Summary
The past 24 hours saw significant progress in integrating Google’s Bumble Bluetooth stack across downstream tools, notably introducing native Windows support for NXBT 

 and adding optional BLE pairing transports to smpclient [107]. Additionally, core refactoring in Bumble's AVDTP (Audio/Video Distribution) layers has successfully eliminated resource-locking bugs [928]. Meanwhile, the community is actively tackling high-priority Classic Bluetooth pairing failures and Windows boot-up driver issues [59, 934].
-
✨ Key Achievements & Code Progress (GitHub)
Repository / Project
Contribution
Details
intercreate/smpclient
BLE Transport with Pairing (PR #107)
Added an optional bumble extra (smpclient[bumble]) providing SMPBumbleTransport [107]. This BLE transport drives external HCI USB controllers, supporting secure scanning, pairing PIN flows, and stored LTK encryption [107].
google/bumble
AVDTP In-Use Management (PR #928)
Merged! Avoids explicit stream in_use flag management by delegating to a dynamic property checking if stream state is IDLE [928]. This resolves previous edge-case resource leaks [923].
typenoob/nxbt
Native Windows Support (Issue #4)
Announced a major integration with Bumble enabling native Windows support for NXBT controllers via hci-socket and usb (WinUSB) transports 

 .
badoo/codeisok
Security Hardening (PR #109)
Enabled the secure flag for authentication cookies in the Login controller to prevent unencrypted session token transmission [109].
 
-
⚠️ Current Blockers & High-Priority Issues
While no tracking issues were found in Jira for "Bumble", the following high-priority issues are currently impeding progress in the GitHub ecosystem:
Classic Bluetooth Pairing Failures (Issue #59 - kindle-hid-passthrough) [59]
Status: Active / Investigation [59]
Impact: Classic-only Bluetooth HID devices (such as the Logitech K811 keyboard) fail during Simple Secure Pairing (SSP) with an AUTHENTICATION_FAILURE_ERROR (0x05) [59]. Bumble appears to bypass the user pairing delegate entirely [59].
Next Steps: Testing a speculative fix on feature/brcm-bt-support that relaxes pairing config constraints for BR/EDR [59].
Windows Startup Power-On Failures (Issue #934 - google/bumble) [934]
Status: Open [934]
Impact: Bluetooth USB dongles fail to power on during the very first boot on Windows systems [934]. The Intel driver receives a disallowed error (HCI_COMMAND_DISALLOWED_ERROR) during the initial HCI_RESET_COMMAND [934].
-
Would you like me to draft any replies to these active issues or prepare a Confluence summary document of the Windows workarounds?
give me the link for this repo intercreate/smpclient
Response complete
Gemini replied
The link for the intercreate/smpclient repository is:
👉 https://github.com/intercreate/smpclient
intercreate/smpclient repo is not in my repo in mumanoha/gemini-code-review-agent-demo. intercreate/smpclient is a public repo why are you getting me all the public repo
Response complete
Gemini replied
I retrieved results from public repositories because the search query for "Bumble" was executed globally across all of GitHub rather than being restricted to your specific repository (mumanoha/gemini-code-review-agent-demo).
When I initially searched your internal Jira projects and repositories for the project "Bumble", it returned no matches. To ensure I didn't miss any relevant information, my search query broadened its scope to look for any active issues or pull requests containing the keyword "Bumble" globally, which pulled in these public repositories (like Google's bumble library and intercreate/smpclient).
-
🔍 Filtering to Your Specific Repository
If "Bumble" is a branch, a specific folder, or a topic within your repository, I can narrow down the search.
Would you like me to run a targeted analysis specifically on mumanoha/gemini-code-review-agent-demo for any updates or commits made in the past 24 hours instead?

Jeśli użyję prompta „Wygeneruj aktualizację o wysokim priorytecie dotyczącą moich projektów z ostatnich 24 godzin”, otrzymam poniższy wynik:

Refer image scrum-master-13.png

Generate the high-priority update for the my projects for the past 24 hours.
Response complete
Gemini replied
📊 Daily Project Status Report (Past 24 Hours)
-
🚀 Overall Progress Overview
Currently, the projects are focused on resolving critical infrastructure blockers on Google Cloud Platform while maintaining a steady baseline on application services. While there has been no new code merged or committed in the last 24 hours, the active development continues to center around service integration, and the infrastructure pipeline is currently held back by two newly updated high-priority Jira issues 

 .
-
🛠️ Code Progress & Achievements (GitHub)
There are no new commits or merged pull requests to report for the past 24 hours. The primary active work-in-progress remains:
Repository / PR
Status
Description
mumanoha/gemini-code-review-agent-demo PR #1: feat: Add menu-service application
🟡 Open
This pull request introduces the core menu-service application to the repository.
 
-
⚠️ Blockers & High-Priority Issues (Jira)
The following high-priority infrastructure issues were updated in the past 24 hours under the ge-bugs project and require immediate attention to prevent further deployment delays on the GCP Migration Strategy 

 :
Key
Priority
Status
Summary
Impact
GB-5
🔴 High
To Do
IAM permission shadowing in VPC
Conflicting IAM policies between the VPC and GKE cluster are causing intermittent permission denied errors for active services 

 .
GB-4
🔴 High
To Do
GKE node pool auto-scaling timeout
The GKE node pool is failing to auto-scale automatically, leading to pod scheduling failures under load 

 .
 
-
Let me know if you would like me to help assign these blockers or draft a follow-up message to the infrastructure team!

Nie mam też pewności, czy oprogramowanie sprzęgające należy dodać w agencie głównym. Usunąłem oprogramowanie sprzęgające w agencie głównym i przeprowadziłem test. Poniżej znajdziesz jego wynik. Która konfiguracja jest prawidłowa? Nie wiem, czy pozwolę Ci zdecydować o prawidłowej konfiguracji.


Patrz obraz – scrum-master-14.png

Generate the high-priority update for the my projects for the past 24 hours.
Response complete
Gemini replied
High-Priority Update: Project GB (ge-bugs)
Here is the summary of P0/P1 (Highest/High priority) issues and blocked tickets in Project GB (ge-bugs) along with their current impact:
1. P0/P1 Issues (High Priority)
GB-4: GKE node pool auto-scaling timeout
Priority: High (P1) 

Impact: The GKE node pool is failing to auto-scale dynamically under load. This results directly in pod scheduling failures, threatening application reliability and performance during high traffic 

 .
GB-5: IAM permission shadowing in VPC
Priority: High (P1)
Impact: Conflicting IAM policies between the VPC and the GKE cluster are causing intermittent "permission denied" errors for services, leading to unstable internal communication 

 .
2. Blocked Tickets
GB-7: Fix database latency issues
Priority: Medium
Status: Blocked 

Impact: Progress on resolving database latency is halted. The ticket is currently blocked while waiting for the infrastructure team to increase IOPS 

 .
-
I will now hand control back to the root agent to synthesize this update into your unified daily report. Let's make sure this progress is tracked.
I have checked the open Pull Requests in the mumanoha/gemini-code-review-agent-demo repository:
Open Pull Requests:
PR #1: feat: Add menu-service application
State: Open
Review Status: There is currently one review submitted by gemini-code-assist[bot], which has a status of COMMENTED (not CHANGES_REQUESTED). The reviewer provided general code quality, testing, and dependency cleanup suggestions but did not block the PR with an explicit changes-requested status.
Therefore, there are no Pull Requests currently in the "Changes Requested" state.
I will now transfer control back to the root_agent to compile the complete update.Here is your unified daily report for the past 24 hours, highlighting the high-priority Jira blockers and active code progress on GitHub.
I, Gemini Enterprise, have analyzed your active projects and compiled the most critical updates to keep you and your team aligned.
-
🚨 High-Priority Jira Issues & Blockers
There are currently two high-priority bugs active in Project GB (ge-bugs), along with one blocked issue that requires infrastructure intervention.
Issue
Priority
Status
Description & Impact
GB-4: GKE node pool auto-scaling timeout
High
To Do
The GKE node pool is failing to auto-scale under load, resulting in active pod scheduling failures.
GB-5: IAM permission shadowing in VPC
High
To Do
Conflicting IAM policies between the VPC and GKE cluster are causing intermittent service permission errors.
GB-7: Fix database latency issues
Medium
🛑 Blocked
Progress is currently halted. The team is waiting on the infrastructure team to increase IOPS.
 
-
💻 GitHub Code Progress
Active progress continues on the gemini-code-review-agent-demo repository with one open pull request. There are currently no PRs blocked under a "Changes Requested" status.
PR # & Title
State
Review Status
Key Highlights
#1: feat: Add menu-service application
Open
Commented
Adds the menu-service Quarkus application. gemini-code-assist[bot] provided recommendations to clean up pom.xml, improve JPA mapping, utilize Panache's active record pattern, and expand test coverage.
 
-
Would you like me to help you draft a follow-up message to the infrastructure team to expedite the IOPS increase for GB-7, or would you like to dive deeper into any of these updates?

11. Tworzenie agenta Resource Impact Analyzer [wersja zapoznawcza]

Pierwszym krokiem jest kliknięcie „Agent czatu” podczas wybierania „Nowy agent”, ponieważ w sekcji „Nowy agent” mamy opcję podglądu „Agent przepływu pracy”, której nie omawiamy w tej sekcji.

Patrz obraz scrum-master-1.png

Zamiast tego kliknij Utwórz nowego agenta > Przejdź do narzędzia do tworzenia. Podajmy prompt na czacie. Odwołaj się do tego zrzutu ekranu: resource-impact-1.png

Gdy pracownik utworzy projekt, musi odznaczyć pole wyboru „Google Connector”, a potem kliknąć „Podgląd”, aby przetestować prompt „Team member ‘Muthu' is out for 3 days. Jakie są konsekwencje?

Sprawdź obrazy i odpowiednio zaktualizuj instrukcje.
resource-impact-2.png & resource-impact-3.png

Po przetestowaniu kliknij Utwórz, aby opublikować agenta.

12. Zaawansowane: tworzenie i wdrażanie za pomocą ADK [publiczna wersja przedpremierowa]

Zrobiłem zrzut ekranu z tymi krokami. Sprawdź, czy instrukcje są dokładne, i zaktualizuj zrzuty ekranu dla każdego kroku, aby były czytelne.

Krok 1. Konfiguracja środowiska

agent-cli-1.png

Krok 2. Uwierzytelnianie i konfiguracja

agent-cli-2.png
agent-cli-3.png - this steps a long time
agent-cli-4.png -

W instrukcjach wspomnij, że interfejs CLI poprosi o zezwolenie na uruchomienie poleceń. Wybierz „Zezwól raz”.

Opcja B. Interfejs wiersza poleceń Gemini (język naturalny)

Na podstawie obrazów zaktualizuj instrukcje, aby odzwierciedlały to, co faktycznie wydarzyło się w konsoli. W odpowiednich miejscach zaktualizuj ćwiczenia z programowania, dodając te zrzuty ekranu i odpowiednie instrukcje.

Obrazy do sprawdzenia – agent-cli-5.png do agent-cli-9.png

Poniżej znajdziesz dane wyjściowe w interfejsie wiersza poleceń.

Utworzyłem dla Ciebie agenta Bumble-Ops-Assistant za pomocą pakietu Agent Development Kit (ADK).

1. Implementacja agenta
Agent znajduje się w pliku bumble-ops-assistant/app/agent.py. Zawiera narzędzie check_build_health, które zwraca zakodowany na stałe stan „GREEN” w przypadku każdego środowiska.

1 def check\_build\_health(environment: str) \-\> str:                                                                                                                          
2     """Checks the build health for a given environment.                                                                                                                   
3                                                                                                                                                                           
4     Args:                                                                                                                                                                 
5         environment: The environment to check (e.g., 'prod', 'staging').                                                                                                  
6                                                                                                                                                                           
7     Returns:                                                                                                                                                              
8         The health status of the build.                                                                                                                                   
9     """                                                                                                                                                                   

10 return "GREEN"
11
12 root_agent = Agent(
13 name="Bumble_Ops_Assistant",
14 # ...
15 instruction="You are Bumble-Ops-Assistant, an operations assistant. Możesz sprawdzić stan kompilacji w środowiskach produkcyjnych i przejściowych”.
16 tools=[check_build_health],
17 )

2. Testy dymne
Przeprowadziłem 2 rodzaje testów dymnych:

* Testy jednostkowe: utworzyłem i przeprowadziłem testy jednostkowe w pliku bumble-ops-assistant/tests/unit/test_health_tool.py, aby bezpośrednio zweryfikować logikę narzędzia.
* Wynik: 2 testy zakończone powodzeniem w 3,03 s
* Test sprawdzający ocenę: utworzyłem prosty zestaw oceniający w bumble-ops-assistant/tests/eval/evalsets/smoke_test.evalset.json, aby przetestować interakcję agenta.
* Uwaga: podczas testu oceniającego wystąpił błąd PERMISSION_DENIED, ponieważ interfejs aiplatform.googleapis.com API nie jest włączony w projekcie cloudshell-gca i nie mam uprawnień do jego włączenia.

agent-cli-10.png – po kliknięciu opcji „Otwórz edytor” poproś uczestników o sprawdzenie plików utworzonych przez interfejs wiersza poleceń agenta i wyjaśnij, co zawiera każdy z nich. Szczegółowe informacje znajdziesz w dokumentacji.
Testowanie w piaskownicy – wykonaj te czynności przed wdrożeniem i opublikowaniem.
Zapoznaj się z tymi obrazami, aby dowiedzieć się, jak przeprowadzić testy, i odpowiednio przygotować instrukcje.
Obrazy – od agent-cli-11.png do agent-cli-15.png

Próbowałem poprosić agenta CLI o utworzenie placu zabaw i jego przetestowanie, ale mam problemy.
Nie znaleziono sesji: f681747b-c55d-42d6-9324-77f394d0ecb8. Runner jest skonfigurowany z nazwą aplikacji „bumble_ops_assistant”, ale agent główny został wczytany z „/home/admin_/bumble-ops-assistant/app”, co oznacza, że nazwa aplikacji to „app”. Upewnij się, że nazwa aplikacji runnera app_name jest zgodna z nazwą tego katalogu lub przekaż nazwę aplikacji app_name bezpośrednio podczas tworzenia runnera. Niezgodność uniemożliwia biegaczowi zlokalizowanie sesji. Aby automatycznie tworzyć sesję w przypadku jej braku, podczas tworzenia narzędzia uruchamiającego ustaw auto_create_session=True.

Po poproszeniu agenta o naprawę problemów z uprawnieniami wszystko zaczęło działać.

13. Wdrażanie i publikowanie w Gemini Enterprise [wersja testowa]

Chcę używać języka naturalnego do wdrażania i publikowania w GE
Dlatego zachowaj obie opcje: ręczną i języka naturalnego.

Poprosiłem o wdrożenie agenta i został on wdrożony w silniku agenta. Zapoznaj się z obrazami, aby zrozumieć poszczególne kroki i utworzyć odpowiednie instrukcje.
Obrazy: agent-cli-deploy-1.png do agent-cli-deploy-4.png

I aksed gemini cli to publish to ge app

Użyłem polecenia - Publish to Gemini Enterprise App bumble-workshop-lab-test-1_1778167389086
Na podstawie poniższych obrazów dowiedz się, jak to zrobić, i odpowiednio przygotuj instrukcje.

agent-cli-publish-1.png to agent-cli-publish-7.png