Skip to content

Instantly share code, notes, and snippets.

Leveraging Gemini CLI + LangGraph + Terraform + GitHub PR automation is a solid pattern that can scale across many developer productivity use cases. Here's how you can apply this architecture to other scenarios, broken down by common workflows, efficiency gains, and tailored examples:


🔁 Generalized Pattern (Your Current Flow):

  1. Input intent (natural language)
  2. Agent interprets and formulates prompt
  3. Gemini CLI modifies code/config
  4. PR created with reasoning trace
@sithu
sithu / browser_use_puppeteer_adk.md
Created May 28, 2025 21:34
"Grab the top 5 rows from the Tableau dashboard on our analytics page."

To use a browser with Google Agent Developer Kit (ADK) to scrape a Tableau report, you’ll typically need to combine:

  • Google ADK (to receive and interpret the natural language intent),
  • A headless browser (like Puppeteer or Playwright),
  • And possibly an MCP server or tool plugin to expose scraping functionality to the agent.

✅ Example Workflow: Google ADK + Puppeteer + MCP Server

Hello World

from sklearn.datasets import make_blobs
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
import numpy as np
from matplotlib import cm
from sklearn.metrics import silhouette_samples
import pandas as pd
from scipy.spatial.distance import pdist, squareform
from scipy.cluster.hierarchy import linkage
from scipy.cluster.hierarchy import dendrogram
import pandas as pd
import numpy as np
from matplotlib import pyplot as plt
import utils
from sklearn.tree import DecisionTreeClassifier
from sklearn import tree
np.random.seed(0)
import numpy as np
from matplotlib import pyplot
# Some functions to plot our points and draw the lines
def plot_points(features, labels, fix_margins=True):
X = np.array(features)
y = np.array(labels)
spam = X[np.argwhere(y==1)]
ham = X[np.argwhere(y==0)]
if fix_margins:
description: Change BigQuery table permission
group: cli_gcp_qb
cmd: gsutil [table_name] [service_account]
import pandas as pd
import numpy as np
from matplotlib import pyplot
# Some functions to plot our points and draw the lines
def plot_points(features, labels):
X = np.array(features)
y = np.array(labels)
spam = X[np.argwhere(y==1)]
ham = X[np.argwhere(y==0)]
# Loading the one_circle dataset
# ploy_svm.csv: https://gist.github.com/sithu/1a3c2dfbca74540fb2ee5a1aca1c4a0f
circular_data = pd.read_csv('poly_svm.csv')
features = np.array(circular_data[['x_1', 'x_2']])
labels = np.array(circular_data['y'])
utils.plot_points(features, labels)
# TODO: Degree = 2 vs Degree = 4
# Which one gives better accuracy?
svm_degree_2 = SVC(kernel='poly', degree=2)
x_1 x_2 y
0 -0.759415996185977 2.7532400952557747 0
1 -1.8852779019387766 1.6295265391438516 0
2 2.46330243466849 -1.023868884412727 0
3 -1.9860041519965943 -0.8988097871506215 0
4 2.0108340318241424 -2.58011744859958 0
5 2.4101875198381917 2.370500867155556 0
6 1.5991400471635622 -0.8627316166103238 0
7 -1.109856441968584 -2.4696974604953335 0
8 2.447341902744885 2.8111799446840005 0