Claude 102
layout: cover kicker: Claude Code · Power user title: Claude 102 subtitle: Stop babysitting it. Make it yours.
layout: statement kicker: Where 101 left off title: 101 made you productive. 102 is about leverage — running it hands-off, in parallel, wired into your stack.
layout: agenda title: What we'll cover items:
- { topic: Plan first, desc: "explore before it touches anything" }
- { topic: Headless mode, desc: "claude in scripts, pipes, CI" }
- { topic: Worktrees, desc: "run several Claudes at once" }
- { topic: Subagents, desc: "parallel, isolated, specialized" }
- { topic: MCP, desc: "connect it to your tools & data" }
- { topic: Hooks, commands, skills, desc: "automate and package workflows" }
layout: steps kicker: The habit that pays off most title: Plan before you build steps:
- { title: "Plan mode", desc: "Shift+Tab to it — reads, can't edit", icon: "lucide:glasses" }
- { title: Read, desc: "let it gather the relevant files", icon: "lucide:book-open" }
- { title: Review, desc: "check the plan, correct course cheaply", icon: "lucide:list-checks" }
- { title: Build, desc: "switch to normal mode, let it run", icon: "lucide:hammer" }
layout: define kicker: No TUI required term: Headless mode (-p) definition: claude -p "…" runs one prompt, prints the answer, and exits — so Claude becomes a command you can pipe and script. points:
- "Pipe data in: logs, diffs, anything on stdin"
- "Drop it into Makefiles, git hooks, CI jobs"
- "--output-format json when another program reads the result"
layout: default kicker: Headless in practice title: It's just another shell command
Same engine as interactive — your CLAUDE.md, permissions, and settings all still apply.
layout: define kicker: Parallelism, part 1 term: Git worktrees definition: claude -w branch runs a session in its own worktree — separate files, separate branch — so several Claudes work at once without stepping on each other. points:
- "One on a refactor, one on a bugfix, no collisions"
- "Add --tmux to get a visible pane per session"
- "Resume any of them: claude -c, or -r by name"
layout: define kicker: Parallelism, part 2 term: Subagents definition: Specialized assistants that run in their own isolated context — Claude hands off a slice of work and gets back just the conclusion. points:
- "Keeps your main context clean — only the result returns"
- "Run several at once for big investigations"
- "Built-ins: Explore (read-only), Plan, general-purpose"
layout: code-explain kicker: Subagents title: Define your own notes:
- "name + description — Claude auto-delegates based on this."
- "tools — restrict what it can touch (here: read-only)."
- "Body is its system prompt — the role and what to look for."
- "Drop in .claude/agents/ — or just say 'use a subagent to review this'."
---
name: security-reviewer
description: Reviews code for vulnerabilities
tools: Read, Grep, Glob
---
You are a security engineer. Review for injection,
auth flaws, and secrets in code. Give line refs + fixes.
layout: define kicker: Wiring it into your world term: MCP — Model Context Protocol definition: A standard way to connect Claude to external tools and data — GitHub, Jira, Slack, Postgres, your own services. points:
- "claude mcp add to wire up a server; /mcp to manage in-session"
- "Tools load on-demand, so they don't bloat context"
- "Turns 'check the DB' or 'find the ticket' into things it can just do"
layout: default kicker: MCP title: Add a server
Now you can ask "what's the schema of the orders table?" and it actually queries Postgres.
layout: vs kicker: Two ways to steer it title: CLAUDE.md vs hooks left: { title: "CLAUDE.md", items: ["Advisory — it should follow", "Natural language", "Good for style & conventions", "Can be ignored under load"] } right: { title: "Hooks", items: ["Deterministic — always fire", "Shell scripts on lifecycle events", "Good for guarantees", "Format, block, notify, gate"] } label: vs
layout: code-explain kicker: Hooks title: Auto-format on every edit notes:
- "PostToolUse fires after a tool runs."
- "matcher Edit|Write scopes it to file changes."
- "The command runs for real — formatting is now guaranteed, not hoped for."
- "Other events: PreToolUse (gate/block), Stop, Notification."
{ "hooks": { "PostToolUse": [{
"matcher": "Edit|Write",
"hooks": [{ "type": "command",
"command": "prettier --write $FILE" }]
}]}}
layout: panels kicker: Package your workflows title: Custom commands & skills panels:
- { icon: "lucide:slash", title: "Slash commands", items: [".claude/commands/fix-lint.md", "becomes /fix-lint", "args + injected shell output"] }
- { icon: "lucide:box", title: "Skills", items: [".claude/skills/", "fuller, auto-triggered workflows", "Claude pulls them in when relevant"] }
- { icon: "lucide:user", title: "Personal vs project", items: ["~/.claude/ — all your projects", ".claude/ — this repo, shared in git"] }
- { icon: "lucide:repeat", title: "Why bother", items: ["stop re-typing the same prompt", "encode the team's way of working"] }
layout: reference kicker: Cheat sheet title: Power-user flags & shortcuts groups:
- { title: Flags, items: [{ term: "-p", desc: "print mode (headless)" }, { term: "-c / -r", desc: "continue / resume a session" }, { term: "-w", desc: "worktree isolation" }, { term: "--model / --effort", desc: "pick model / reasoning" }] }
- { title: Keys, items: [{ term: "Esc Esc", desc: "rewind the conversation" }, { term: "Ctrl+B", desc: "background a running task" }, { term: "Ctrl+T", desc: "toggle the task list" }, { term: "Ctrl+O", desc: "verbose output" }] }