/start-11-5.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-5.en
Context preview
What this command does when you run it.
Lesson command
Command definition
start-11-5.en.mddescription: "Lesson command"
chapter: "courses/aiagent/lesson03-core/module11-github-actions"
duration: "~25 min"
prerequisites: ["start-11-1"]
level: "intermediate"
tags: ["github-actions", "deploy", "artifact", "release", "vercel", "github-pages"]
nonInteractiveMode: deferred
๐ Lesson 11-5: Deploy & File Generation with GitHub Actions
๐ What You'll Do
**Lesson 11-5: Deploy & File Generation with GitHub Actions**!
| Item | Details | |------|------| | Goal | Generate build artifacts, deploy to GitHub Pages / Vercel, and auto-generate release notes with GitHub Actions | | Duration | ~25 min | | Skills used | GitHub Actions, GitHub Pages, Vercel CLI, gh CLI | | Prerequisites | Lesson 11-1 completed (understanding of workflow basics) |
**Session flow:** 1. Build artifact generation script 2. Upload and save as artifacts 3. Deploy to GitHub Pages 4. Vercel auto-deploy 5. Auto-generate release notes
By the end of this session, you'll have an automated build โ deploy โ release pipeline.
> **๐ก Hint**: If the AI response stops midway, type "please continue" or "keep going" to resume.
---
๐ฏ Readiness Check
**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": "different_lesson", "label": "Go to a different lesson"}
]
}]
}(ready โ Go to Step 1) (check_prereq โ Verify Lesson 11-1 completion) (different_lesson โ Display module list)
---
๐ Step 1: Generate Build Artifacts
{
"title": "๐ Step 1: Build Artifact Generation",
"questions": [{
"id": "step_action",
"prompt": "Create a step that generates static files using a Python / Node script.",
"options": [
{"id": "practice", "label": "Proceed"},
{"id": "review", "label": "Review types of build artifacts"},
{"id": "skip", "label": "Skip"}
]
}]
}**Guidance after selection:**
Create `tools/build_site.py` (a simple static site generator):
#!/usr/bin/env python3
"""Simple static site generator"""
import os
import json
from datetime import datetime
def build():
os.makedirs("dist", exist_ok=True)
# Generate index.html
html = f"""<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>AI Agent Camp โ Build Artifact</title>
<style>
body {{ font-family: sans-serif; max-width: 800px; margin: 2rem auto; padding: 0 1rem; }}
.meta {{ color: #666; font-size: 0.9rem; }}
</style>
</head>
<body>
<h1>AI Agent Camp</h1>
<p class="meta">Built at: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}</p>
<p>This page was auto-generated by GitHub Actions.</p>
</body>
</html>"""
with open("dist/index.html", "w") as f:
f.write(html)
# Generate build-info.json
info = {
"built_at": datetime.utcnow().isoformat(),
"commit": os.environ.get("GITHUB_SHA", "local"),
"ref": os.environ.get("GITHUB_REF", "local"),
}
with open("dist/build-info.json", "w") as f:
json.dump(info, f, indent=2)
print("Build complete: artifacts generated in the dist/ directory")
if __name__ == "__main__":
build()python tools/build_site.py && ls -la dist/
**Expected result:** `index.html` and `build-info.json` are generated in the `dist/` directory.
---
๐ Step 2: Upload and Save Artifacts
{
"title": "๐ Step 2: Artifact Management",
"questions": [{
"id": "step_action",
"prompt": "Create a workflow that saves build artifacts as GitHub Actions artifacts.",
"options": [
{"id": "practice", "label": "Proceed"},
{"id": "review", "label": "Review how artifacts work"},
{"id": "skip", "label": "Skip"}
]
}]
}**Guidance after selection:**
Create `.github/workflows/build-and-deploy.yml`:
name: Build and Deploy
on:
push:
branches: [main]
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Build site
run: python tools/build_site.py
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: site-build-${{ github.run_number }}
path: dist/
retention-days: 30
- name: Build summary
run: |
echo "## Build Artifacts" >> $GITHUB_STEP_SUMMARY
echo "| File | Size |" >> $GITHUB_STEP_SUMMARY
echo "|---------|-------|" >> $GITHUB_STEP_SUMMARY
for f in dist/*; do
SIZE=$(wc -c < "$f" | tr -d ' ')
echo "| $(basename $f) | ${SIZE} bytes |" >> $GITHUB_STEP_SUMMARY
done**Key points:**
- Use `actions/upload-artifact@v4` to save build artifacts
- Specify retention period with `retention-days` (default is 90 days)
- Display build info in the workflow summary using `$GITHUB_STEP_SUMMARY`
**Expected result:** After workflow execution, an artifact download link appears in the Summary on the Actions tab.
---
๐ Step 3: Deploy to GitHub Pages
{
"title": "๐ Step 3: GitHub Pages Deploy",
"questions": [{
"id": "step_action",
"prompt": "Deploy build artifacts to GitHub Pages.",
"options": [
{"id": "practice", "label": "Proceed"},
{"id": "review", "label": "Review how to configure GitHub Pages"},
{"id": "skip", "label": "Skip"}
]
}]
}**Guidance after selection:**
Add a Pages deploy job to the workflow:
deploy-pages:
needs: build
runs-on: ubuntu-latest
permissions:
pages: write
id-token: write
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5Read more
description: "Lesson command" chapter: "courses/aiagent/lesson03-core/module11-github-actions" duration: "~25 min" prerequisites: ["start-11-1"] level: "intermediate" tags: ["github-actions", "deploy", "artifact", "release", "vercel", "github-pages"] nonInteractiveMode: deferred
๐ Lesson 11-5: Deploy & File Generation with GitHub Actions
๐ What You'll Do
**Lesson 11-5: Deploy & File Generation with GitHub Actions**!
| Item | Details | |------|------| | Goal | Generate build artifacts, deploy to GitHub Pages / Vercel, and auto-generate release notes with GitHub Actions | | Duration | ~25 min | | Skills used | GitHub Actions, GitHub Pages, Vercel CLI, gh CLI | | Prerequisites | Lesson 11-1 completed (understanding of workflow basics) |
**Session flow:** 1. Build artifact generation script 2. Upload and save as artifacts 3. Deploy to GitHub Pages 4. Vercel auto-deploy 5. Auto-generate release notes
By the end of this session, you'll have an automated build โ deploy โ release pipeline.
> **๐ก Hint**: If the AI response stops midway, type "please continue" or "keep going" to resume.
---
๐ฏ Readiness Check
**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": "different_lesson", "label": "Go to a different lesson"}
]
}]
}(ready โ Go to Step 1) (check_prereq โ Verify Lesson 11-1 completion) (different_lesson โ Display module list)
---
๐ Step 1: Generate Build Artifacts
{
"title": "๐ Step 1: Build Artifact Generation",
"questions": [{
"id": "step_action",
"prompt": "Create a step that generates static files using a Python / Node script.",
"options": [
{"id": "practice", "label": "Proceed"},
{"id": "review", "label": "Review types of build artifacts"},
{"id": "skip", "label": "Skip"}
]
}]
}**Guidance after selection:**
Create `tools/build_site.py` (a simple static site generator):
#!/usr/bin/env python3
"""Simple static site generator"""
import os
import json
from datetime import datetime
def build():
os.makedirs("dist", exist_ok=True)
# Generate index.html
html = f"""<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>AI Agent Camp โ Build Artifact</title>
<style>
body {{ font-family: sans-serif; max-width: 800px; margin: 2rem auto; padding: 0 1rem; }}
.meta {{ color: #666; font-size: 0.9rem; }}
</style>
</head>
<body>
<h1>AI Agent Camp</h1>
<p class="meta">Built at: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}</p>
<p>This page was auto-generated by GitHub Actions.</p>
</body>
</html>"""
with open("dist/index.html", "w") as f:
f.write(html)
# Generate build-info.json
info = {
"built_at": datetime.utcnow().isoformat(),
"commit": os.environ.get("GITHUB_SHA", "local"),
"ref": os.environ.get("GITHUB_REF", "local"),
}
with open("dist/build-info.json", "w") as f:
json.dump(info, f, indent=2)
print("Build complete: artifacts generated in the dist/ directory")
if __name__ == "__main__":
build()python tools/build_site.py && ls -la dist/
**Expected result:** `index.html` and `build-info.json` are generated in the `dist/` directory.
---
๐ Step 2: Upload and Save Artifacts
{
"title": "๐ Step 2: Artifact Management",
"questions": [{
"id": "step_action",
"prompt": "Create a workflow that saves build artifacts as GitHub Actions artifacts.",
"options": [
{"id": "practice", "label": "Proceed"},
{"id": "review", "label": "Review how artifacts work"},
{"id": "skip", "label": "Skip"}
]
}]
}**Guidance after selection:**
Create `.github/workflows/build-and-deploy.yml`:
name: Build and Deploy
on:
push:
branches: [main]
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Build site
run: python tools/build_site.py
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: site-build-${{ github.run_number }}
path: dist/
retention-days: 30
- name: Build summary
run: |
echo "## Build Artifacts" >> $GITHUB_STEP_SUMMARY
echo "| File | Size |" >> $GITHUB_STEP_SUMMARY
echo "|---------|-------|" >> $GITHUB_STEP_SUMMARY
for f in dist/*; do
SIZE=$(wc -c < "$f" | tr -d ' ')
echo "| $(basename $f) | ${SIZE} bytes |" >> $GITHUB_STEP_SUMMARY
done**Key points:**
- Use `actions/upload-artifact@v4` to save build artifacts
- Specify retention period with `retention-days` (default is 90 days)
- Display build info in the workflow summary using `$GITHUB_STEP_SUMMARY`
**Expected result:** After workflow execution, an artifact download link appears in the Summary on the Actions tab.
---
๐ Step 3: Deploy to GitHub Pages
{
"title": "๐ Step 3: GitHub Pages Deploy",
"questions": [{
"id": "step_action",
"prompt": "Deploy build artifacts to GitHub Pages.",
"options": [
{"id": "practice", "label": "Proceed"},
{"id": "review", "label": "Review how to configure GitHub Pages"},
{"id": "skip", "label": "Skip"}
]
}]
}**Guidance after selection:**
Add a Pages deploy job to the workflow:
deploy-pages:
needs: build
runs-on: ubuntu-latest
permissions:
pages: write
id-token: write
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5AI 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

