Terminal, package managers & the Claude landscape
Before diving into agents and MCP servers, it pays to get the basic toolbox right: what the Claude product family actually consists of, why the terminal is your primary interface for agentic work, and how packages, environments and licenses fit together.
The Claude product landscape
Think of Anthropic's developer products as layers, from raw building block to finished product:
- Claude API — raw model access. You send messages to the Messages API and get completions back. Everything else is built on top of this.
- Claude SDK — the official client libraries (Python, TypeScript and more) that wrap the API with typed requests, streaming helpers and error handling.
- Claude Agent SDK — a framework for building your own agents. It ships the agent loop, built-in tools (file access, bash, search) and context management, so you supply a prompt and options instead of hand-rolling the loop.
- Claude Code — a ready-made coding agent as a CLI, built on that same stack. You install it, point it at a project folder, and it reads, edits and runs code for you.
Exam note: the CCAF exam focuses on Claude Code, the Agent SDK, the API and MCP. Claude Chat and Cowork are end-user products and out of scope.
Terminal & shell basics
The terminal is a text window into your machine; the shell is the program
inside it that interprets your commands. bash (the "Bourne Again Shell") is
the classic on Linux, zsh is the macOS default — for our purposes they
behave almost identically. Your editor shows files; the shell does things:
cd projects/my-app # change directory
ls # list files (Windows cmd: dir)
pwd # where am I?
Why care? Agentic tools live in the terminal. Claude Code runs there, install scripts run there, and when an agent executes a bash command you should be able to read what it is doing. CLI fluency is a core skill for this certification, not a nice-to-have.
Installing Claude Code
The official install goes through npm:
npm install -g @anthropic-ai/claude-code
There are also native installers — curl -fsSL https://claude.ai/install.sh | bash
on macOS/Linux, or irm https://claude.ai/install.ps1 | iex in PowerShell on
Windows. Once installed, open a terminal in a project folder and run:
claude
Package managers & registries
Nobody writes an HTTP client from scratch. A registry is a public index of reusable packages; a package manager is the CLI that downloads them and tracks versions:
- npm installs JavaScript/TypeScript packages from npmjs.com
- pip installs Python packages from PyPI (pypi.org)
npm install axios # JS: HTTP client
pip install requests beautifulsoup4 # Python: HTTP + HTML parsing
Anyone can publish to these registries, so read the trust signals before you depend on a package: weekly downloads, last release date, open issues, and whether it's maintained by a known organization.
Virtual environments & uv
Two Python projects on one machine will eventually want two different versions
of the same package. Virtual environments solve this by giving each project
its own isolated set of installed packages. The classic workflow is
python -m venv .venv plus activation — workable, but clunky.
uv is the modern all-in-one: environment manager, package manager and Python version manager in a single fast tool.
uv init my-scraper # new project with pyproject.toml
uv add requests # add a dependency (env is handled for you)
Mini hands-on: fetch a webpage
Python, with requests + BeautifulSoup:
import requests
from bs4 import BeautifulSoup
response = requests.get("https://example.com")
soup = BeautifulSoup(response.text, "html.parser")
print(soup.title.string)
for link in soup.find_all("a"):
print(link.get("href"))
The JavaScript equivalent with the built-in fetch:
const response = await fetch("https://example.com");
const html = await response.text();
const title = html.match(/<title>(.*?)<\/title>/)[1];
console.log(title);
Same idea in both: request the page, then extract what you need.
Open-source licenses in 60 seconds
Code is protected by copyright by default — no license means you may not legally reuse it. Open-source licenses grant you rights up front:
- MIT — do almost anything (use, modify, sell), as long as you keep the copyright notice.
- Apache-2.0 — like MIT, plus an explicit patent grant from contributors, which larger companies often prefer.
Important: using an MIT-licensed dependency does not make your app open source. You ship the notice; your own code stays yours, closed source and all.
Glossary
- CI/CD — Continuous Integration / Continuous Delivery: automation that builds, tests and deploys your code on every push.
- Headless agent — an agent that runs without a UI or a human watching, triggered by a schedule or webhook. This becomes relevant later with the Agent SDK.
- REPL — Read-Eval-Print Loop: an interactive prompt (like
pythonornode) that evaluates each line as you type it.