TrendShift 딥다이브 · 2026-07-01

google/agents-cli 딥다이브
— 내 코딩 에이전트를 'GCP 에이전트 개발 전문가'로 만드는 스킬 + CLI

google/agents-cli는 그 자체가 코딩 에이전트가 아니다. 이미 쓰고 있는 코딩 어시스턴트(Claude Code · Codex · Gemini CLI · Antigravity)에게 "스킬 7개 + 전용 CLI"를 주입해, Google Cloud 위에서 AI 에이전트를 만들고·평가하고·배포하는 전 과정의 전문가로 바꿔주는 미들웨어다. 핵심 제품은 사실 파이썬 바이너리가 아니라 7개의 SKILL.md — 코딩 에이전트에게 "이 단계에선 이 명령을 이렇게 써라"를 지시하는 플레이북이다. CLI(agents-cli)는 그 스킬들이 호출하는 손발이다. Python 3.11+ · Click · uv · 그리고 Google ADK(Agent Development Kit) · Gemini Enterprise(구 Vertex AI) 위에서 동작한다. (저장소: google/agents-cli · Python · v0.6.1 · Apache-2.0 · PyPI: google-agents-cli)
목차
  1. 프로젝트 한줄 요약
  2. 왜 주목받는가
  3. 기술 스택 전체 지도
  4. 아키텍처 심화 분석
  5. 디렉토리 구조 해부
  6. 학습 포인트 (기술별)
  7. 하드웨어 / 시스템 요구사항
  8. 직접 해볼 수 있는 실습 과제
  9. 관련 기술 심화 학습 로드맵
  10. 핵심 키워드 사전
  11. 참고 링크

1프로젝트 한줄 요약

이 저장소가 대체 무엇인가.

핵심 메시지

"새 AI 도구를 깔라는 게 아니다 — 이미 쓰는 코딩 에이전트에게 'GCP 에이전트 개발 매뉴얼'을 손에 쥐여주는 것."

요즘 코딩 어시스턴트(Claude Code, Codex, Gemini CLI 등)는 똑똑하지만, "Google Cloud에서 ADK 에이전트를 만들어 배포해줘"라고 하면 헤맨다. 최신 SDK 이름도 모르고, 배포 타깃이 뭔지도 모른다. agents-cli는 두 가지를 준다: ① 그 에이전트에게 정확한 순서와 명령을 알려주는 스킬 7개, ② 스킬이 실제로 호출하는 CLI(프로젝트 생성·실행·평가·배포·등록).

비유하면: 코딩 에이전트 = 손재주 좋은 신입, agents-cli 스킬 = 회사 표준 작업 매뉴얼, agents-cli CLI = 매뉴얼에 적힌 사내 전용 공구. 매뉴얼과 공구를 쥐여주면 신입이 곧바로 "GCP 에이전트 전문가"처럼 일한다.

공식 한 줄 설명은 "Turn your favorite coding assistant into an expert at building and deploying agents on Google Cloud". FAQ는 못을 박는다 — 이건 코딩 에이전트가 아니며, adk CLI의 대체재도 아니다. 다른 코딩 에이전트를 "잘 쓰게 만드는" 도구다. 그래서 제품의 본체는 7개의 SKILL.md이고, 파이썬 CLI는 그 스킬들이 uvx로 불러 쓰는 실행기다.

먼저 짚고 갈 이름 함정 (4가지 표기)
같은 물건, 네 가지 이름

GitHub 저장소 = google/agents-cli · PyPI 패키지 = google-agents-cli (앞에 google-) · 실행 명령 = agents-cli · 파이썬 import 경로 = google.agents.cli. 문서·블로그마다 다르게 부르니 "전부 같은 것"으로 기억해 두자.

용어
ADK (Agent Development Kit)
구글의 오픈소스 AI 에이전트 개발 프레임워크. Agent(에이전트 정의), App(실행 단위), Gemini(모델 연결), 도구(tools) 같은 빌딩블록을 제공한다. agents-cli가 만들어내는 모든 프로젝트는 이 ADK 위에 올라간다. 파이썬뿐 아니라 TypeScript·Go·Java 버전도 있다.
용어
에이전트 스킬 (Agent Skill / SKILL.md)
코딩 에이전트가 읽고 따르는 "작업 지침서". YAML 머리말(name·description)과 본문(단계별 플레이북)으로 된 마크다운 파일이다. 에이전트는 사용자의 요청에서 description의 트리거 문구를 만나면 해당 스킬을 자동으로 불러와 그대로 수행한다. Anthropic이 대중화했고, 지금 TrendShift 상위권이 온통 스킬 저장소다.

2왜 주목받는가

TrendShift 상승 이유 · 다른 에이전트 도구 대비 차별점.

2026년 상반기 깃허브 트렌딩은 "에이전트 스킬" 천지다. TrendShift 월간만 봐도 mattpocock/skills, addyosmani/agent-skills, obra/superpowers, phuryn/pm-skills … 죄다 .claude 폴더에서 꺼낸 스킬 모음이다. 이 흐름 한복판에 구글이 직접 내놓은 공식 스킬 묶음이 agents-cli다. "구글 공식 + ADK·Gemini Enterprise 전용 + 풀 라이프사이클"이라는 조합이 주목의 핵심이다.

포지셔닝이 거꾸로다

대부분의 트렌딩 도구는 "또 하나의 코딩 에이전트" 또는 "또 하나의 게이트웨이"다. agents-cli는 반대다 — 새 에이전트가 되려 하지 않고, 네가 이미 쓰는 에이전트를 더 똑똑하게 만든다. 이 "미들웨어" 전략 덕분에 Claude Code 플러그인, Gemini CLI 확장, npx skills 생태계에 동시에 올라탄다. 한 번 만들어 여러 에이전트에 꽂는다.

경쟁 방식 비교

해야 할 일맨손 + 클라우드 콘솔순수 adk CLI일반 코딩 에이전트 단독agents-cli
프로젝트 뼈대 생성수동 복붙기본 템플릿매번 다른 구조4언어 × 4배포타깃 표준 템플릿
최신 SDK·제품명 추적직접 문서 검색일부옛 이름 환각스킬에 매핑표 내장
품질 평가(eval)제한적생성·채점·합성·비교·최적화 풀세트
배포콘솔 클릭일부Agent Runtime / Cloud Run / GKE 3택
Gemini Enterprise 등록REST 수동publish 한 방
여러 에이전트에 적용플러그인·확장·npx skills 동시
핵심 차별점 세 가지
① 구글 공식 풀 라이프사이클 · ② 진짜 차별점은 'eval' · ③ 4개 언어 폴리글랏 스캐폴딩

Understand→Scaffold→Build→Evaluate→Deploy→Publish→Observe 전 단계를 한 도구가 커버한다. 남들은 "만들기"에서 멈추는데, agents-cli는 eval(품질 플라이휠)이 진짜 무기다 — 데이터셋 합성, LLM 심판 채점, 실패 군집 분석, 프롬프트 자동 최적화까지. 파이썬 CLI 하나가 Python·TypeScript·Go·Java ADK 프로젝트를 각각의 Dockerfile·Terraform·CI까지 통째로 찍어낸다.

이런 상황을 상상해봐

"Cloud Run에 ADK 에이전트 하나 올려줘"라고 Claude Code에게 시킨다. 스킬이 없으면 에이전트는 옛 SDK 이름을 쓰고, Dockerfile을 엉성하게 짜고, 배포 명령을 헷갈린다.

agents-cli 스킬이 깔려 있으면: 에이전트가 먼저 "프로젝트부터 만들자"(scaffold create) → "로컬에서 돌려보자"(run) → "평가하자"(eval) → "Cloud Run으로 배포"(deploy --deployment-target cloud_run) 순서를 스스로 밟는다. 매뉴얼대로 움직이는 숙련공이 된다.

3기술 스택 전체 지도

CLI 본체 · 배포 채널 · 생성되는 프로젝트 · GCP 연동면 전부.

CLI 본체 (이 저장소의 파이썬 코드)

요소역할비고
Python 3.11+CLI 구현 언어 (소스 117개 .py)import 경로 google.agents.cli
ClickCLI 프레임워크 — 명령·옵션·그룹커스텀 LazyGroup으로 지연 로딩
rich사람용 출력 — 표·색상 배너stderr로 보내 stdout은 JSON 유지
uv (Astral)패키지·실행 도구 — 필수시작 시 require_tool("uv") 강제
Node.js + npx skills스킬 설치 — vercel-labs/skills 생태계코딩 에이전트별 IDE에 스킬 주입
cookiecutter + Jinja2프로젝트 스캐폴딩 템플릿 엔진패키지 데이터로 동봉
requests · googleapiclient · vertexaiVertex / Gemini Enterprise REST 호출배포·등록·평가 서비스
a2aAgent-to-Agent 프로토콜 — 에이전트 카드·등록publish 단계에서 사용
fastapi · kfp · locust로컬 서버 · RAG 인제스트 파이프라인 · 부하테스트run/playground · data-ingestion · 템플릿

※ 이 저장소는 "소스 미러"라 루트에 pyproject.toml이 없다(아래 5번 참고). 위 의존성은 실제 코드의 import에서 역추적한 것이다.

3가지 배포(설치) 정체성

채널설치 방법의미
PyPI 패키지uvx google-agents-cli setupCLI + 스킬 한 번에
npx skillsnpx skills add google/agents-cli스킬만, CLI는 코딩 에이전트가 uvx로 구동
Claude Code 플러그인.claude-plugin/plugin.json"7 skills 번들" v0.6.1
Gemini CLI 확장gemini-extension.json동일 7스킬을 Gemini CLI에

생성되는 프로젝트의 스택 (scaffold 결과물)

계층구성
에이전트 프레임워크google-adk (2.x) — Agent / App / Gemini
기본 모델gemini-flash-latest + 재시도 3회
서빙FastAPI + uvicorn (Cloud Run/GKE), 포트 8080
평가google-cloud-aiplatform[evaluation] + Vertex AI Eval Service
세션 저장asyncpg + SQLAlchemy (Cloud SQL)
관측OpenTelemetry · Cloud Logging · Cloud Trace · BigQuery 분석
인프라Terraform (WIF·Cloud Build) + Dockerfile + GitHub Actions/Cloud Build
품질 도구ruff(린트) · ty(타입체크) · codespell · pytest · Locust(부하)

4아키텍처 심화 분석

"스킬이 머리, CLI가 손발, GCP가 무대" — 3층 구조.

가장 헷갈리는 점부터 풀자. 이 시스템에는 세 명의 행위자가 있다. ① 사용자가 쓰는 코딩 에이전트(Claude Code 등), ② 그 에이전트가 읽는 스킬(SKILL.md), ③ 스킬이 호출하는 agents-cli 명령. 명령은 다시 GCP 서비스를 부른다. 데이터 흐름을 그림으로 보면:

┌─────────────────────────────────────────────────────────────┐ │ 사용자: "GCP에 ADK 에이전트 만들어 배포해줘" │ └───────────────────────────┬─────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────┐ │ 코딩 에이전트 (Claude Code · Codex · Gemini CLI · Antigravity)│ │ └ 요청에서 트리거 문구 감지 → 해당 SKILL.md 로드 │ └───────────────────────────┬─────────────────────────────────┘ │ (스킬 = 단계별 플레이북) ▼ ┌─────────────────────────────────────────────────────────────┐ │ 스킬 7종 "always active" workflow 가 오케스트레이터 │ │ workflow ─► scaffold ─► adk-code ─► eval ─► deploy ─► │ │ publish ─► observability│ └───────────────────────────┬─────────────────────────────────┘ │ 스킬이 uvx로 CLI 호출 ▼ ┌─────────────────────────────────────────────────────────────┐ │ agents-cli (Python · Click LazyGroup) │ │ scaffold | run | eval | deploy | publish | infra | login │ │ └ uv · gcloud · kubectl · terraform · npx 를 감싸 호출 │ └───────────────────────────┬─────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────┐ │ Google Cloud (Gemini Enterprise Agent Platform / 구 Vertex AI)│ │ ADK · Agent Runtime · Cloud Run · GKE · Eval Service · │ │ A2A 등록 · Cloud Trace/Logging · BigQuery Analytics │ └─────────────────────────────────────────────────────────────┘

핵심 설계 패턴 5가지

① 지연 명령 로딩 (Click LazyGroup)

모든 서브명령은 main.add_lazy_command("deploy", "google.agents.cli.deploy.cmd_deploy:cmd_deploy", "Deploy the agent.") 식으로 등록된다. 실제로 그 명령을 실행할 때만 해당 모듈을 import한다. agents-cli --help는 짧은 설명 문자열만 읽어 모듈 import 0회로 빠르게 뜬다. CLI 시작 속도를 지키는 흔하고 강력한 기법이다.

# src/google/agents/cli/_click.py (요약)
def get_command(self, ctx, cmd_name):
    if cmd_name in self._lazy_commands and cmd_name not in self.commands:
        module_path, attr = self._lazy_commands[cmd_name][0].split(":")
        cmd = getattr(importlib.import_module(module_path), attr)  # 이제서야 import
        patch_source_in_help(cmd)
        self.commands[cmd_name] = cmd
    return super().get_command(ctx, cmd_name)

② 스스로 출처를 밝히는 --help

patch_source_in_help()가 각 명령의 도움말 끝에 "Source: <실제 소스 파일 절대경로>"를 붙인다. 어떤 명령이 어느 파일에서 구현됐는지 --help만 봐도 안다. 코드를 읽거나 디버깅할 때 길잡이가 된다.

③ 패키지 데이터로서의 템플릿 (cookiecutter + Jinja2)

스캐폴딩은 {{cookiecutter.*}}·{%- if ... %} 같은 Jinja2 플레이스홀더가 박힌 템플릿 묶음이다. 4개 언어 × 4개 배포타깃 행렬(base_templates/ × deployment_targets/)에 공용 Terraform(_shared/)을 더해, create 시점에 실제 파일로 펼쳐진다. 사용자의 선택(배포타깃·세션종류·CI러너 등)은 agents-cli-manifest.yaml에 기록돼, 나중에 enhance/upgrade가 그 선택을 다시 읽는다.

④ 스테이징된 러너 스크립트 (버전 격리)

eval/_inference_runner.py 같은 스크립트는 CLI 패키지에 동봉돼 있다가, 사용자의 프로젝트 폴더(.agents-cli-scripts/)로 복사돼 사용자 자신의 uv 가상환경(=올바른 ADK 버전)에서 실행된다. CLI의 환경이 아니라 프로젝트의 환경에서 돌려야 평가가 정확하기 때문이다.

⑤ 재구현하지 않고 감싼다

agents-cli는 uv·npx skills·gcloud·kubectl·terraform을 직접 다시 만들지 않고 _runner 추상화로 감싸서 호출한다. CLOUDSDK_CORE_DISABLE_PROMPTS=1을 설정해 gcloud가 멈춰 서서 입력을 기다리지 않게 한다(--interactive일 때만 예외). 자동화에 최적화된 선택이다.

용어
배포 타깃 3종 (deployment target)
deploy --deployment-target의 선택지. agent_runtime = 구글 관리형 "리즈닝 엔진"(ADK 웹 + A2A를 한 컨테이너로 서빙), cloud_run = gcloud beta run deploy로 서버리스 컨테이너 배포, gke = Terraform + docker build + kubectl apply로 쿠버네티스 배포. 같은 에이전트를 환경만 바꿔 올릴 수 있다.

5디렉토리 구조 해부

스킬은 어디 있고, CLI 코드는 어떻게 나뉘는가.

agents-cli/ ├── README.md · RELEASE_NOTES.md · LICENSE # Apache-2.0 ├── gemini-extension.json # Gemini CLI 확장 매니페스트 ├── .claude-plugin/plugin.json # Claude Code 플러그인 (v0.6.1, 7 skills) ├── .github/workflows/docs.yml # 유일한 CI = MkDocs 문서 배포 ├── docs/ # MkDocs 사이트(자체 pyproject) │ └── src/guide/{deployment,evaluation,authentication,cicd}.md │ ├── skills/ ← 이 저장소의 진짜 본체 (스킬 7개) │ ├── google-agents-cli-workflow/ # "항상 활성" 오케스트레이터 │ ├── google-agents-cli-adk-code/ + references/{adk-python.md, adk-workflows.md} │ ├── google-agents-cli-scaffold/ │ ├── google-agents-cli-eval/ + references/{dataset_schema, metrics-guide} │ ├── google-agents-cli-deploy/ + references/{cloud-run, gke, terraform-patterns} │ ├── google-agents-cli-publish/ │ └── google-agents-cli-observability/ │ └── src/google/agents/cli/ # 파이썬 CLI 본체 ├── main.py # 루트 Click 그룹 + 지연 명령 등록 ├── _click.py # LazyGroup + --help "Source:" 패치 ├── auth.py # 인증 3종 (ADC / Gemini key / Express) ├── setup/ # setup · update · login (스킬 설치) ├── scaffold/ # 저장소 부피의 대부분 = 템플릿 │ ├── base_templates/{python, typescript, go, java, _shared}/ │ ├── agents/{adk, adk_go, adk_java, adk_ts, agentic_rag}/ │ └── deployment_targets/{agent_runtime, cloud_run, gke, none}/ ├── eval/ # generate·grade·dataset·compare·analyze·optimize·run·submit ├── deploy/ # cmd_deploy · agent_runtime · _operation ├── publish/ # Gemini Enterprise 등록 ├── infra/ # single-project · cicd · datastore (Terraform) ├── run/ · dev/ · data/ · info/ # 로컬 실행 · 린트/플레이그라운드 · RAG · 정보
주의 — 이건 "소스 미러"다
루트에 pyproject.toml이 없고, 커밋이 1개이며, tests/가 빠져 있다

공개 저장소는 실제 개발 레포가 아니라 릴리스마다 통째로 게시되는 소스 미러다(RELEASE_NOTES 0.5.0: "소스 코드를 공개 깃허브에 게시"). 그래서 ① 빌드 매니페스트(pyproject.toml)가 루트에 없고(있는 건 docs/용뿐), ② git log 커밋이 1개(release v0.6.1)뿐이며, ③ CLI 자신의 tests/ 트리는 코드 주석엔 언급되지만 동봉되지 않았다. 의존성을 알려면 매니페스트가 아니라 import를 봐야 한다는 뜻.

반대로, 생성되는 프로젝트는 테스트가 풍부하다. 모든 스캐폴드가 tests/unit·tests/integration(실서버 e2e)·tests/load_test(Locust)를 4개 언어 각각에 깔아주고, eval/ 하니스와 데이터셋까지 붙여준다. "도구 본체는 가볍게, 만들어주는 결과물은 탄탄하게"라는 철학이 보인다.

6학습 포인트 (기술별)

이 저장소 하나로 배울 수 있는 것 + 각자 실습 아이디어.

6-1. 에이전트 스킬 설계 (SKILL.md)

가장 값진 학습 포인트. 각 스킬의 머리말은 단순 설명이 아니라 "언제 쓰고, 언제는 쓰지 말지"를 명시한다. 예컨대 scaffold 스킬의 description은 "이럴 때 써라"를 트리거 문구로 나열한 뒤, "코드 작성은 adk-code 스킬, 배포는 deploy 스킬을 써라(Do NOT use for…)"라고 다른 스킬과의 경계를 못 박는다. 스킬끼리 겹치지 않게 하는 설계다.

# skills/google-agents-cli-scaffold/SKILL.md (머리말)
---
name: google-agents-cli-scaffold
description: >
  "create an agent project", "start a new ADK project" 같은 요청에 사용.
  scaffold create / enhance / upgrade, 템플릿 옵션, 배포 타깃을 다룬다.
  Do NOT use for 코드 작성(use ...-adk-code) or 배포(use ...-deploy).
metadata:
  author: Google
  license: Apache-2.0
  version: 0.6.1
  requires: { bins: [agents-cli] }
---

본문은 사람용 문서가 아니라 에이전트용 가드레일이다. workflow 스킬은 "STOP — Do NOT write code yet. 프로젝트가 없으면 scaffold create부터."라는 강한 단계 게이트로 시작한다. "Vertex AI Agent Engine → --deployment-target agent_runtime" 같은 제품명 매핑표까지 들어 있다.

실습 아이디어

스킬 하나(SKILL.md)를 직접 써보자. 머리말에 name·description(트리거 문구 3개 + "Do NOT use for …" 1줄)을 넣고, 본문에 "1단계 → 2단계" 플레이북을 적는다. npx skills add ./내스킬로 Claude Code에 꽂아 동작을 확인.

6-2. 파이썬 CLI 잘 만들기 (Click + LazyGroup)

Click으로 서브명령 그룹을 만드는 법, 그리고 지연 로딩으로 시작 속도를 지키는 실전 패턴을 통째로 배운다. add_lazy_command(name, "module:obj", short_help) → 실행 시점 import. --help에 소스 경로를 자동으로 붙이는 메타 트릭, UTF-8 강제(윈도우 호환), Ctrl-C를 exit 130으로 처리하는 견고한 최상위 에러 핸들링도 좋은 교재다.

실습 아이디어

hello·bye 두 서브명령을 가진 미니 Click CLI를 만들되, 각각 무거운 라이브러리를 import하는 척(예: import time; time.sleep)하게 한 뒤, LazyGroup으로 바꿔 --help 속도 차이를 체감해보자.

6-3. 코드 생성기 (cookiecutter + Jinja2)

"프로젝트 뼈대를 찍어내는 도구"를 만드는 법. {{cookiecutter.agent_directory}} 같은 변수와 {%- if deployment_target == "cloud_run" %} 같은 조건 블록으로, 하나의 템플릿이 사용자 선택에 따라 다른 결과물을 낳는다. 선택값을 manifest.yaml로 저장해 두면 나중에 "업그레이드"도 가능하다는 설계가 특히 배울 만하다.

실습 아이디어

cookiecutter로 "FastAPI 또는 Flask를 고르면 그에 맞는 app.pyDockerfile이 나오는" 미니 템플릿을 만들어보자. 선택값을 .mychoice.yaml로 남기고, 두 번째 실행 때 그 값을 읽어오게 한다.

6-4. Google ADK로 에이전트 만들기

스캐폴드가 찍어주는 에이전트 코드 자체가 ADK 입문서다. Agent(이름·모델·지시문·도구), App(루트 에이전트를 감싸는 실행 단위), Gemini(모델 + 재시도 옵션), 함수 도구(tools=[get_weather, ...])의 조립을 보여준다.

# scaffold/agents/adk/app/agent.py (Jinja2 템플릿)
root_agent = Agent(
    name="root_agent",
    model=Gemini(model="gemini-flash-latest",
                 retry_options=types.HttpRetryOptions(attempts=3)),
    instruction="You are a helpful AI assistant ...",
    tools=[get_weather, get_current_time],
)
app = App(root_agent=root_agent, name="{{cookiecutter.agent_directory}}")
실습 아이디어

도구 함수 하나(def get_time(): ...)를 더 만들어 tools=에 추가하고, 지시문을 바꿔 "한국어로만 답하는 에이전트"로 개조해보자. 로컬 키(AI Studio)만으로 run 가능.

6-5. 평가 주도 개발 (Quality Flywheel)

agents-cli의 진짜 차별점. "만들고 끝"이 아니라 측정→개선 루프를 코드로 제공한다. eval generate(데이터셋으로 에이전트 추론 → 트레이스) → eval grade(LLM 심판이 메트릭으로 채점) → eval dataset synthesize(LLM이 가상 사용자로 멀티턴 시나리오 생성) → eval compare(두 결과 비교) → eval analyze(실패 군집화) → eval optimize(평가 데이터로 프롬프트 자동 튜닝).

한눈에

에이전트 품질을 "감"이 아니라 시험 점수로 다룬다. 문제집(dataset)을 만들고 → 에이전트가 풀게 하고 → 채점하고(LLM 심판) → 틀린 유형을 모아 보고 → 프롬프트를 고쳐 점수를 올린다. 머신러닝의 "train/eval" 루프를 에이전트에 옮긴 것.

실습 아이디어

질문 5개짜리 작은 eval 데이터셋(JSON)을 만들어 eval generateeval grade를 돌려보고, 지시문을 한 번 바꾼 뒤 eval compare로 점수 변화를 확인해보자.

6-6. GCP 배포 & A2A 등록

같은 에이전트를 cloud_run·agent_runtime·gke 세 환경에 올려보며 차이를 익힌다. uv sync --frozen으로 빌드해 uvicorn으로 8080에 서빙하는 컨테이너, Terraform의 Workload Identity Federation·Cloud Build, 그리고 publish가 REST로 Gemini Enterprise에 A2A 에이전트 카드를 등록하는 흐름까지. 엔터프라이즈 네트워킹(PSC, DNS 피어링) 옵션도 노출된다.

# scaffold/base_templates/python/Dockerfile
FROM python:3.12-slim
RUN pip install --no-cache-dir uv==0.8.13
RUN uv sync --frozen
CMD ["uv","run","uvicorn","{{cookiecutter.agent_directory}}.fast_api_app:app",
     "--host","0.0.0.0","--port","8080"]
실습 아이디어

GCP 무료 크레딧으로 deploy --deployment-target cloud_run을 먼저 성공시키고, 같은 프로젝트를 agent_runtime으로도 배포해 둘의 로그·트레이스 차이를 비교해보자.

7하드웨어 / 시스템 요구사항

로컬 실습은 가볍다 — GPU도, 무거운 서버도 필요 없다.

구분요구사항
운영체제크로스 플랫폼 (Linux · macOS · Windows). UTF-8 stdout 강제로 윈도우도 배려)
필수 런타임Python 3.11+ · uv(Astral) · Node.js(스킬 설치용)
로컬 개발(만들기·실행·평가)GCP 불필요 — AI Studio API 키(GEMINI_API_KEY)만 있으면 create·run·eval 동작
배포 시Google Cloud 프로젝트 + 결제 + gcloud. Cloud Run/GKE는 Docker·kubectl·terraform 추가
하드웨어일반 노트북으로 충분. 모델 추론은 클라우드(Gemini)에서 일어나므로 로컬 GPU 불필요
인증 3종① gcloud ADC(기본 자격증명) · ② AI Studio 키 · ③ Express/Vertex API 키. 코드가 GOOGLE_GENAI_USE_VERTEXAI를 적절히 토글
정리하면

"배우는 단계"는 노트북 + 무료 AI Studio 키면 끝이다. GCP 결제·배포는 "실제로 클라우드에 올릴 때"만 필요하다. 입문 장벽이 낮게 설계돼 있다.

8직접 해볼 수 있는 실습 과제

난이도별 5단계 — 위에서부터 차례로.

LEVEL 1 · 입문설치~첫 실행, 30분

코딩 에이전트에 스킬 꽂고, 에이전트 하나 생성·실행

uvx google-agents-cli setup으로 CLI+스킬을 설치하고(또는 npx skills add google/agents-cli), agents-cli scaffold create my-first-agent로 프로젝트를 만든 뒤, AI Studio 키를 넣고 agents-cli run "안녕"으로 로컬 실행까지 성공시키기. 목표: 4개 이름(repo/PyPI/명령/import)이 같은 물건임을 몸으로 익히기.

LEVEL 2 · 초급스킬 읽기·쓰기, 1~2시간

SKILL.md 해부하고, 내 미니 스킬 만들기

skills/google-agents-cli-scaffold/SKILL.md를 열어 머리말(name·description·metadata)과 본문 가드레일을 분석한다. 그다음 트리거 문구 3개 + "Do NOT use for …" 1줄이 들어간 내 SKILL.md를 작성해 npx skills add ./내스킬로 꽂고, 트리거 문구로 호출되는지 확인. 목표: 스킬이 "에이전트용 매뉴얼"임을 이해.

LEVEL 3 · 중급평가 루프, 반나절

Quality Flywheel 한 바퀴 돌리기

질문 5개짜리 eval 데이터셋을 만들어 eval generateeval grade로 점수를 내고, eval analyze로 실패 유형을 본다. 지시문(instruction)을 한 번 고친 뒤 eval compare로 전/후 점수를 비교. 목표: 에이전트 품질을 "감"이 아니라 "숫자"로 다루는 감각.

LEVEL 4 · 중상급실제 배포, 하루

같은 에이전트를 Cloud Run + Agent Runtime 둘 다 배포

GCP 무료 크레딧으로 deploy --deployment-target cloud_run을 성공시키고, 이어서 agent_runtime으로도 배포한다. 두 배포의 Dockerfile/서빙 방식, Cloud Trace·Cloud Logging 출력을 비교. 목표: "서버리스 컨테이너 vs 관리형 리즈닝 엔진"의 차이를 체감.

LEVEL 5 · 고급엔터프라이즈/내부구조, 1~2일

Gemini Enterprise 등록 또는 CLI 내부 개조

(A) publish gemini-enterprise로 Agent Runtime 배포를 등록하고 A2A 에이전트 카드가 어떻게 만들어지는지 추적한다. 또는 (B) _click.py의 LazyGroup을 읽고, 새 서브명령 하나(agents-cli hello)를 add_lazy_command로 추가해본다. 목표: 등록 프로토콜(A2A) 또는 CLI 아키텍처를 직접 손대보기.

9관련 기술 심화 학습 로드맵

이 저장소를 출발점으로, 6주 코스.

주차주제핵심 키워드 · 할 것
1주차파이썬 CLI + uvClick(그룹·옵션·LazyGroup), uv/uvx 패키지·실행, rich 출력. → LEVEL 1·2 실습
2주차에이전트 스킬 생태계SKILL.md 포맷, npx skills(vercel-labs/skills), Claude Code 플러그인·Gemini CLI 확장. 다른 트렌딩 스킬 레포(addyosmani/agent-skills 등)와 비교
3주차Google ADK 기초Agent·App·Gemini·tools, 함수 도구, 멀티에이전트. agentic_rag 템플릿 분석
4주차평가 주도 개발LLM-as-judge, 데이터셋 합성, 메트릭, 실패 군집화, 프롬프트 자동 최적화. Vertex AI Eval Service
5주차GCP 배포·IaCCloud Run·Agent Runtime·GKE, Dockerfile(uv), Terraform, Workload Identity Federation, Cloud Build
6주차A2A·엔터프라이즈·관측A2A 프로토콜·에이전트 카드, Gemini Enterprise 등록, Cloud Trace/Logging, BigQuery 에이전트 분석

10핵심 키워드 사전

문서·코드에서 계속 마주칠 용어들.

프레임워크
ADK (Agent Development Kit)
구글의 오픈소스 에이전트 개발 프레임워크. Agent/App/Gemini/tools로 에이전트를 조립한다. Python·TS·Go·Java 지원. agents-cli가 만드는 모든 결과물의 토대.
플랫폼
Gemini Enterprise (구 Vertex AI)
구글 클라우드의 에이전트 플랫폼. 예전 이름 "Vertex AI"가 "Gemini Enterprise Agent Platform"으로 리브랜딩됐다. 스킬에 옛 이름→새 이름 매핑표가 들어 있는 이유. 에이전트 배포·등록·평가의 무대.
배포 타깃
Agent Runtime (리즈닝 엔진)
구글 관리형 에이전트 실행 환경. 0.6.0부터 ADK 웹 + A2A + 리즈닝 엔진을 한 컨테이너로 서빙한다. --deployment-target agent_runtime. 인프라를 직접 관리하지 않아도 되는 가장 "매니지드"한 선택.
프로토콜
A2A (Agent-to-Agent) · 에이전트 카드
에이전트끼리 서로를 발견·호출하기 위한 표준 프로토콜. "에이전트 카드"는 그 에이전트의 능력·엔드포인트를 적은 명함 같은 메타데이터. publish가 이 카드를 만들어 Gemini Enterprise에 등록한다.
에이전트 제어 문서
Agent Skill / SKILL.md
코딩 에이전트가 읽고 따르는 마크다운 플레이북. YAML 머리말(name·description·metadata) + 본문(단계 게이트·금지사항). agents-cli의 진짜 본체가 바로 이 7개 파일.
도구
uv · uvx (Astral)
Rust로 만든 초고속 파이썬 패키지·실행 도구. uvx는 "설치 없이 패키지를 즉석 실행"(npx의 파이썬판). agents-cli는 시작 시 uv를 필수로 요구하고, 컨테이너 빌드도 uv sync --frozen을 쓴다.
스킬 설치기
npx skills (vercel-labs/skills)
SKILL.md를 여러 코딩 에이전트의 설정 폴더에 꽂아주는 CLI. npx skills add google/agents-cli 한 줄로 Claude Code·Codex 등 감지된 IDE에 스킬을 배포한다. agents-cli의 setup이 내부적으로 이걸 호출.
생성기
cookiecutter + Jinja2
프로젝트 뼈대 생성 도구 + 템플릿 엔진. {{변수}}·{%- if %}로 사용자 선택에 따라 다른 파일을 찍어낸다. agents-cli의 4언어×4배포타깃 스캐폴딩이 전부 이 방식.
CLI 패턴
LazyGroup (Click 지연 로딩)
서브명령 모듈을 "실행할 때만" import해 CLI 시작을 빠르게 하는 Click 패턴. --help는 짧은 설명만 읽어 import 0회. 명령이 많은 CLI의 필수 최적화.
평가
LLM-as-judge · Quality Flywheel
LLM에게 에이전트 출력을 채점시키는 평가 방식. agents-cli는 이를 생성→채점→합성→비교→분석→최적화의 순환(품질 플라이휠)으로 묶어, 에이전트 품질을 데이터로 끌어올린다.
보안 인프라
Workload Identity Federation (WIF)
서비스 계정 키 파일 없이, 외부 ID(GitHub Actions 등)가 GCP 리소스에 안전하게 접근하게 하는 연합 인증. agents-cli의 Terraform이 CI/CD용으로 자동 설정한다. 키 유출 위험을 줄이는 현대적 방식.

11참고 링크

더 깊이 파고들기 위한 공식 자료.