/start-11-2.en
Lesson command
$ npx -y skills add minicoohei/ai-agent-camp --agent claude-codeHow it fires
How this command gets triggered: by you, by Claude, or both.
- Fires itselfClaude auto-loads it when your prompt matches the work.
- You can call itInvoke it directly when you want it.
- Slash command
/start-11-2.en
Context preview
What this command does when you run it.
Lesson command
Command definition
start-11-2.en.mddescription: "Lesson command"
chapter: "courses/aiagent/lesson03-core/module11-github-actions"
prerequisites: ["start-11-1"]
duration: "~35 min"
level: "intermediate"
tags: ["github-actions", "secrets", "google-api"]
nonInteractiveMode: incompatible
๐ Lesson 11-2: Automated Testing and Deployment
๐ What You'll Do
**Lesson 11-2: GitHub Actions and API Integration**!
| Item | Details | |------|------| | Goal | Build automated data retrieval and processing pipelines using Secrets in GitHub Actions for Google API integration | | Duration | ~35 min | | Skills used | GitHub Actions, Repository Secrets, Google API | | Prerequisites | Lesson 11-1 completed, GitHub repository | | Course page | [Module 11: GitHub Actions](https://ai-agent.camp/en/course/module-11) alongside this lesson |
**Session flow:** 1. Configure Repository Secrets 2. Call APIs from workflows 3. Execute automated data retrieval and processing
By the end of this session, you will have a secure API integration pipeline using Secrets.
> **๐ก Hint**: If the AI response stops midway, type "please continue" or "keep going" to resume. This is a Cursor behavior, not a malfunction.
---
๐ฏ Readiness Check
Let's first check that everything is ready.
**AskQuestion configuration:**
{
"title": "๐ฏ Pre-session check",
"questions": [{
"id": "readiness",
"prompt": "Are you ready?",
"options": [
{"id": "ready", "label": "Ready! Let's start"},
{"id": "check_prereq", "label": "Check prerequisites"},
{"id": "view_html", "label": "View the course page first"},
{"id": "different_lesson", "label": "Go to a different lesson"}
]
}]
}(ready โ Go to Step 1) (check_prereq โ Run prerequisite verification) (view_html โ Show course page path) (different_lesson โ Display module list)
---
๐ Step 1: Configure Repository Secrets
Use AskQuestion to choose "Proceed / Just review the example / Skip".
**AskQuestion configuration:**
{
"title": "๐ Step 1: Configure Repository Secrets",
"questions": [{
"id": "step_action",
"prompt": "What would you like to do with this step?",
"options": [
{"id": "practice", "label": "Proceed"},
{"id": "review", "label": "Just review the example"},
{"id": "skip", "label": "Skip"}
]
}]
}**Guidance after selection:** Input:
Please explain the GitHub Repository Secrets configuration procedure.
Configuration location: Repository > Settings > Secrets and variables > Actions
The following Secrets are to be configured:
- GOOGLE_CREDENTIALS (service account key)
- SLACK_WEBHOOK (for notifications)
**Expected result:** The Secrets configuration procedure is explained. Actual configuration is done via the GitHub Web UI.
---
๐ Step 2: Google Authentication Workflow
Use AskQuestion to choose "Proceed / Just review the example / Skip".
**AskQuestion configuration:**
{
"title": "๐ Step 2: Google Authentication Workflow",
"questions": [{
"id": "step_action",
"prompt": "What would you like to do with this step?",
"options": [
{"id": "practice", "label": "Proceed"},
{"id": "review", "label": "Just review the example"},
{"id": "skip", "label": "Skip"}
]
}]
}**Guidance after selection:** Input:
> **Recommendation**: If possible, prioritize Workload Identity Federation (OIDC). > When using service account keys, minifying the JSON to a single line before saving to Secrets makes it less likely to break.
Please create the .github/workflows/google-auth.yml file with the following content:
name: Google API Integration
on:
workflow_dispatch:
inputs:
operation:
description: 'Operation to execute'
required: true
default: 'test'
type: choice
options:
- test
- fetch_data
- update_sheet
jobs:
google-operation:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Install dependencies
run: |
uv add google-auth google-auth-oauthlib google-api-python-client
- name: Create credentials file
run: |
printf '%s' '${{ secrets.GOOGLE_CREDENTIALS }}' > credentials.json
chmod 600 credentials.json
- name: Test Google auth
if: github.event.inputs.operation == 'test'
run: |
python -c "
from google.oauth2 import service_account
import json
try:
creds = service_account.Credentials.from_service_account_file('credentials.json')
print('Google authentication successful!')
print(f'Service account: {creds.service_account_email}')
except Exception as e:
print(f'Authentication error: {e}')
exit(1)
"
- name: Cleanup credentials
if: always()
run: rm -f credentials.json**Expected result:** A workflow for secure Google authentication is created.
---
๐ Step 3: Data Retrieval Pipeline
Use AskQuestion to choose "Proceed / Just review the example / Skip".
**AskQuestion configuration:**
{
"title": "๐ Step 3: Data Retrieval Pipeline",
"questions": [{
"id": "step_action",
"prompt": "What would you like to do with this step?",
"options": [
{"id": "practice", "label": "Proceed"},
{"id": "review", "label": "Just review the example"},
{"id": "skip", "label": "Skip"}
]
}]
}**Guidance after selection:** Input:
Please create the .github/workflows/data-pipeline.yml file with the following content:
name: Data Pipeline
on:
schedule:
- cron: '0 1 * * *' # Daily at 01:00 UTC
workflow_dispatch:
jobs:
data-pipeline:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/cheRead more
description: "Lesson command" chapter: "courses/aiagent/lesson03-core/module11-github-actions" prerequisites: ["start-11-1"] duration: "~35 min" level: "intermediate" tags: ["github-actions", "secrets", "google-api"] nonInteractiveMode: incompatible
๐ Lesson 11-2: Automated Testing and Deployment
๐ What You'll Do
**Lesson 11-2: GitHub Actions and API Integration**!
| Item | Details | |------|------| | Goal | Build automated data retrieval and processing pipelines using Secrets in GitHub Actions for Google API integration | | Duration | ~35 min | | Skills used | GitHub Actions, Repository Secrets, Google API | | Prerequisites | Lesson 11-1 completed, GitHub repository | | Course page | [Module 11: GitHub Actions](https://ai-agent.camp/en/course/module-11) alongside this lesson |
**Session flow:** 1. Configure Repository Secrets 2. Call APIs from workflows 3. Execute automated data retrieval and processing
By the end of this session, you will have a secure API integration pipeline using Secrets.
> **๐ก Hint**: If the AI response stops midway, type "please continue" or "keep going" to resume. This is a Cursor behavior, not a malfunction.
---
๐ฏ Readiness Check
Let's first check that everything is ready.
**AskQuestion configuration:**
{
"title": "๐ฏ Pre-session check",
"questions": [{
"id": "readiness",
"prompt": "Are you ready?",
"options": [
{"id": "ready", "label": "Ready! Let's start"},
{"id": "check_prereq", "label": "Check prerequisites"},
{"id": "view_html", "label": "View the course page first"},
{"id": "different_lesson", "label": "Go to a different lesson"}
]
}]
}(ready โ Go to Step 1) (check_prereq โ Run prerequisite verification) (view_html โ Show course page path) (different_lesson โ Display module list)
---
๐ Step 1: Configure Repository Secrets
Use AskQuestion to choose "Proceed / Just review the example / Skip".
**AskQuestion configuration:**
{
"title": "๐ Step 1: Configure Repository Secrets",
"questions": [{
"id": "step_action",
"prompt": "What would you like to do with this step?",
"options": [
{"id": "practice", "label": "Proceed"},
{"id": "review", "label": "Just review the example"},
{"id": "skip", "label": "Skip"}
]
}]
}**Guidance after selection:** Input:
Please explain the GitHub Repository Secrets configuration procedure. Configuration location: Repository > Settings > Secrets and variables > Actions The following Secrets are to be configured: - GOOGLE_CREDENTIALS (service account key) - SLACK_WEBHOOK (for notifications)
**Expected result:** The Secrets configuration procedure is explained. Actual configuration is done via the GitHub Web UI.
---
๐ Step 2: Google Authentication Workflow
Use AskQuestion to choose "Proceed / Just review the example / Skip".
**AskQuestion configuration:**
{
"title": "๐ Step 2: Google Authentication Workflow",
"questions": [{
"id": "step_action",
"prompt": "What would you like to do with this step?",
"options": [
{"id": "practice", "label": "Proceed"},
{"id": "review", "label": "Just review the example"},
{"id": "skip", "label": "Skip"}
]
}]
}**Guidance after selection:** Input:
> **Recommendation**: If possible, prioritize Workload Identity Federation (OIDC). > When using service account keys, minifying the JSON to a single line before saving to Secrets makes it less likely to break.
Please create the .github/workflows/google-auth.yml file with the following content:
name: Google API Integration
on:
workflow_dispatch:
inputs:
operation:
description: 'Operation to execute'
required: true
default: 'test'
type: choice
options:
- test
- fetch_data
- update_sheet
jobs:
google-operation:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Install dependencies
run: |
uv add google-auth google-auth-oauthlib google-api-python-client
- name: Create credentials file
run: |
printf '%s' '${{ secrets.GOOGLE_CREDENTIALS }}' > credentials.json
chmod 600 credentials.json
- name: Test Google auth
if: github.event.inputs.operation == 'test'
run: |
python -c "
from google.oauth2 import service_account
import json
try:
creds = service_account.Credentials.from_service_account_file('credentials.json')
print('Google authentication successful!')
print(f'Service account: {creds.service_account_email}')
except Exception as e:
print(f'Authentication error: {e}')
exit(1)
"
- name: Cleanup credentials
if: always()
run: rm -f credentials.json**Expected result:** A workflow for secure Google authentication is created.
---
๐ Step 3: Data Retrieval Pipeline
Use AskQuestion to choose "Proceed / Just review the example / Skip".
**AskQuestion configuration:**
{
"title": "๐ Step 3: Data Retrieval Pipeline",
"questions": [{
"id": "step_action",
"prompt": "What would you like to do with this step?",
"options": [
{"id": "practice", "label": "Proceed"},
{"id": "review", "label": "Just review the example"},
{"id": "skip", "label": "Skip"}
]
}]
}**Guidance after selection:** Input:
Please create the .github/workflows/data-pipeline.yml file with the following content:
name: Data Pipeline
on:
schedule:
- cron: '0 1 * * *' # Daily at 01:00 UTC
workflow_dispatch:
jobs:
data-pipeline:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/cheAI Agent Training for Non-Engineers - Complete Guide to Claude Code / Cursor / Codex ### โ ๏ธ Before you clone Official repository (maintained by the authors): Running AI agents from this repo grants them shell, file-write, and external-API permissions on your
Other commands on ai-agent-camp.
- /check-setup.en
Top-level alias โ see lesson/check-setup.en.md for the full body.
Open command - /check-setup.es
Alias de nivel superior โ el cuerpo completo estรก en lesson/check-setup.es.md.
Open command - /check-setup
Top-level alias โ see lesson/check-setup.md for the full body.
Open command - /check-security.en
Lesson command
Open command - /check-security.es
Lesson command
Open command - /check-security
Lesson command
Open command

