一键导入
start-3-1-2
Lesson 3.1.2: Understanding the Basics. Use when the student types /start-3-1-2.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Lesson 3.1.2: Understanding the Basics. Use when the student types /start-3-1-2.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Learn diagram context, Desktop shortcuts, stop hooks, automation, and drift recovery. Use when the student types /start-advanced-claude-workflows.
Learn Ross Mike's planning, context, automation, and product-taste workflows. Use when the student types /start-ross-mike-workflows.
Build Internet Vin's Obsidian context, CLI, and thinking-skill workflows. Use when the student types /start-vin-obsidian-workflows.
Lesson 1.1: Introduction. Use when the student types /start-1-1.
Lesson 1.2: File Exploration & Visualization. Use when the student types /start-1-2.
Lesson 1.3: Working with Files. Use when the student types /start-1-3.
| name | start-3-1-2 |
| description | Lesson 3.1.2: Understanding the Basics. Use when the student types /start-3-1-2. |
| disable-model-invocation | true |
| allowed-tools | ["Read","Write","Bash"] |
Read .claude/skills/_shared/teaching-rules.md and follow it for everything below.
cp -rn .claude/skills/start-3-1-1/assets/* . 2>/dev/null || true
Teaching Script for Claude Code
Welcome back! In 3.1.1 you generated your first image - pretty magical, right?
Now let's understand what's actually happening under the hood.
STOP: Ready to peek behind the curtain?
USER: Yes / Ready
When you asked me to generate that image, I was calling Google's Gemini API on your behalf.
Gemini 3 Pro - codenamed "Nano Banana Pro" - is one of the most powerful image generation models available today.
The cool thing about using the API directly (versus Google's own apps) is that it's slightly more permissive. For example, you can use real celebrities as reference images - something the consumer apps block.
And you get me as your creative partner. I handle all the technical stuff - API calls, session management, file saving - while you focus on the creative vision.
STOP: Make sense so far?
USER: Yes
All the API magic lives in a pre-built script called image_gen.py.
ACTION: Read image_gen.py and show the key function signature for generate()
Here's what you can control:
You don't need to worry about any of that though. Just work with me naturally, and I'll handle the API calls, parameters, and file saving automatically.
Let's try it. Describe any image you'd like to create.
Be descriptive - include subject, setting, lighting, mood. This model is unbelievably good, so really stretch your imagination.
STOP: What would you like to generate?
USER: [Describes an image they want]
ACTION: First call new_session() to clear any previous session (in case user is continuing from 3.1.1). Then generate the image using their description. Use aspect_ratio="1:1" unless user asks for something different, resolution="1K"
[Make a fun/enthusiastic comment about the generated image]
Your image has been saved to the outputs/ folder.
STOP: Open the outputs/ folder in Finder and check it out. What do you think?
USER: [Responds with their reaction]
Here's something powerful: you don't have to start over if it's not perfect.
I remember our conversation, so you can just ask for changes. This is called "iterating" - refining an image step by step.
Even better: I continue the session with Nano Banana, which means it has all its thoughts from before. This leads to much better results when editing - the model understands the full context of what you're trying to achieve.
STOP: Tell me one thing you'd change about your image. Suggest some ideas.
USER: [Describes a change they want]
ACTION: Generate a refined version based on their feedback (this continues the existing session)
Check the outputs/ folder - there's a new version.
STOP: Better? Want to tweak something else? Or shall we continue?
USER: [Responds]
Nice! Let's talk about aspect ratios - the shape of your image.
Here are the common options:
STOP: Quick quiz - which ratio would you use for a presentation slide?
USER: [Answers]
[Respond based on their answer. If they say 16:9 or landscape: "Exactly! The shape should match where you'll use the image." If wrong, gently correct and explain why 16:9 works for presentations.]
Now let's talk resolution - how big and detailed the image is.
Three options:
For this course, we default to 1K so you can iterate quickly. There's no difference in the quality of the creative output - just the resolution.
When you're happy with a result, you can regenerate at 2K for a polished final version. 4K is only necessary if you need something physically printed at large scale.
STOP: Makes sense?
USER: Yes
Quick recap of what you learned:
image_gen.py)In the next lesson, we'll cover the Golden Rules of Prompting - how to write prompts that get amazing results - and how to use reference images for consistent style.
STOP: Ready to continue to 3.1.3?
USER: Yes / Ready
Great! Run /start-3-1-3 when you're ready to continue.
ACTION: End module
For the image generation:
generate() function from image_gen.pyoutputs/new_session()For showing the function signature:
generate() function definition from image_gen.pyIf something goes wrong:
.env file from 3.1.1new_session() to start fresh if neededTerminal limitations:
outputs/ folderOpening images: If a user is having trouble finding an image, offer to open it for them using open [path] (Mac) or start [path] (Windows).
Module 3.1.2 is successful if the student:
ACTION: Silently run the following progress update. Do not mention it to the student.
mkdir -p .fspm
[ -f .fspm/progress.json ] || printf '{"name":null,"completed_lessons":[],"current_lesson":"","last_updated":""}' > .fspm/progress.json
L="cc-pms-3-1-2"; C="cc-pms-3-1-3"; T="$(date -u +%FT%TZ)"
if command -v jq >/dev/null 2>&1; then
tmp=$(mktemp)
jq --arg l "$L" --arg c "$C" --arg t "$T" '.completed_lessons = ((.completed_lessons + [$l]) | unique) | .current_lesson = $c | .last_updated = $t' .fspm/progress.json > "$tmp" && mv "$tmp" .fspm/progress.json
else
python3 - "$L" "$C" "$T" <<'PY'
import json,sys
l,c,t = sys.argv[1:4]
p = ".fspm/progress.json"; d = json.load(open(p))
if l not in d.get("completed_lessons",[]): d.setdefault("completed_lessons",[]).append(l)
d["current_lesson"] = c; d["last_updated"] = t
json.dump(d, open(p,"w"))
PY
fi
Next lesson: Type /start-3-1-3.