Forging your experience...

The Definitive Learning Platform

Master
AI-Powered
Coding Tools

Claude Code · Ollama + Gemma 4 · GitHub Copilot

Scroll to explore

Learning Path

Your Roadmap to Mastery

Six phases, from first install to advanced workflows. Each phase builds on the last.

01

Environment Setup

Install Node.js, Git for Windows, Claude Code CLI, Ollama, and pull Gemma 4. Verify everything works.

  • Install Git for Windows
  • irm https://claude.ai/install.ps1 | iex
  • ollama pull gemma4
  • Run claude --version to verify
02

Claude Code Fundamentals

Learn to navigate projects, edit files, run commands, and have conversations with your codebase.

  • Run claude in any project to start
  • Ask questions about your code
  • Let Claude edit files and run tests
  • Use /help to see all commands
03

CLAUDE.md & Memory

Give Claude persistent context with instruction files and let it learn automatically from your corrections.

  • Create CLAUDE.md in your project root
  • Run /init to auto-generate instructions
  • Organize rules in .claude/rules/
  • Use auto memory for learned preferences
04

Local AI with Ollama + Gemma 4

Run frontier-level AI locally. Understand model sizes, thinking modes, and multimodal inputs.

  • Choose model size: E2B, E4B, 26B, or 31B
  • ollama launch claude --model gemma4
  • Enable thinking with <|think|>
  • Pass images and audio for multimodal tasks
05

GitHub Copilot & Multi-Tool Workflows

Combine Claude Code with GitHub Copilot for the ultimate coding setup. Know when to use which tool.

  • Copilot for inline autocomplete
  • Claude Code for agentic multi-file tasks
  • Copilot Chat in VS Code sidebar
  • Use both together without conflicts
06

Advanced Patterns & Deployment

Skills, hooks, subagents, CI/CD integration, headless mode, and team workflows at scale.

  • Create custom skills for repeatable tasks
  • Use hooks for pre/post command logic
  • GitHub Actions with Claude Code
  • Team-wide CLAUDE.md deployment

Deep Dive

Claude Code

An agentic coding tool by Anthropic that reads your codebase, edits files, runs commands, and integrates with your entire dev stack.

Installation

Get Started in 60 Seconds

Requires Git for Windows. Install it first from git-scm.com, then open PowerShell:

irm https://claude.ai/install.ps1 | iex

Verify with:

claude --version
curl -fsSL https://claude.ai/install.sh | bash

Then start in any project:

cd your-project
claude

Requires a Pro, Max, Team, Enterprise, or Console account. Auto-updates in the background.

Commands

Essential Commands

claudeStart interactive session
/initGenerate CLAUDE.md for project
/helpList all available commands
/memoryView and manage memory files
/compactCompress context window
claude updateUpdate to latest version
claude doctorDiagnose installation issues
Security

Permission Modes

Claude Code asks permission before running commands or editing files. Three built-in modes:

Ask — Confirms every action (most safe)
Auto-edit — Auto-approves file edits, asks for commands
Full auto — Runs everything autonomously (fastest)

Start with Ask mode. Graduate to auto-edit when you trust the workflow.

Capabilities

What Claude Code Does

  • Reads and understands your entire codebase
  • Edits multiple files in coordinated changes
  • Runs shell commands, tests, and builds
  • Creates commits and pull requests
  • Connects external tools via MCP servers
  • Runs custom agent teams (subagents)
  • Works in Terminal, VS Code, JetBrains, Desktop, Web
Tips

Best Practices

  • Be specific in your requests — "fix the login bug in auth.ts" beats "fix bugs"
  • Let Claude explore first — "what does this codebase do?" before asking for changes
  • Use /compact in long sessions to free context space
  • Write a CLAUDE.md so Claude knows project conventions from the start
  • Review changes before committing — Claude is good, but verify

Configuration

Understanding CLAUDE.md

Markdown files that give Claude persistent instructions. Written by you, read at the start of every session.

File Hierarchy

Where to Place CLAUDE.md Files

Organization
C:\Program Files\ClaudeCode\CLAUDE.md Company-wide standards managed by IT
User
~/.claude/CLAUDE.md Your personal preferences for all projects
Project
./CLAUDE.md or ./.claude/CLAUDE.md Team-shared project instructions (via Git)
Local
./CLAUDE.local.md Personal project-specific prefs (gitignored)

More specific files take precedence. All discovered files concatenate — they don't override.

Writing Tips

Effective Instructions

  • Keep it under 200 lines per file
  • Use markdown headers and bullets
  • Be specific: "Use 2-space indentation" not "Format code properly"
  • Include build/test commands
  • Remove conflicting or outdated rules
  • Use @path/to/file to import other files
Rules System

.claude/rules/ Directory

your-project/
├── .claude/
│   ├── CLAUDE.md
│   └── rules/
│       ├── code-style.md
│       ├── testing.md
│       └── security.md

Rules can be path-scoped with YAML frontmatter:

---
paths:
  - "src/api/**/*.ts"
---
# API Rules
- Validate all inputs
- Use standard error format
Auto Memory

Claude Learns Automatically

Auto memory lets Claude save notes for itself across sessions — build commands, debugging insights, your preferences.

/memoryBrowse and manage saved memories
MEMORY.mdIndex file (first 200 lines loaded)

Stored at ~/.claude/projects/<project>/memory/

Auto memory is plain markdown you can read, edit, or delete anytime.

Example

Sample CLAUDE.md

# Project Instructions

## Build
- `npm run dev` to start dev server
- `npm test` to run jest tests

## Code Style
- Use TypeScript strict mode
- 2-space indentation
- Prefer named exports
- API handlers in src/api/handlers/

## Workflow
- Run tests before committing
- Use conventional commits
- Never push to main directly

## Architecture
@docs/architecture.md

Reference

Claude Code Slash Commands

Type / in Claude Code to see all available commands. Here is the complete reference.

Session Management

/clearClear conversation history and free context. Aliases: /reset, /new
/compact [instructions]Compress conversation with optional focus instructions
/resume [session]Resume by ID/name or open picker. Alias: /continue
/rename [name]Rename current session, shows in prompt bar
/branch [name]Branch conversation at this point. Alias: /fork
/rewindRewind to a previous point. Alias: /checkpoint
/exitExit the CLI. Alias: /quit
/export [filename]Export conversation as plain text
/copy [N]Copy last (or Nth) assistant response to clipboard

Configuration & Setup

/initGenerate CLAUDE.md guide for your project
/configOpen Settings (theme, model, output). Alias: /settings
/memoryEdit CLAUDE.md, toggle auto-memory, view entries
/permissionsManage allow/ask/deny tool rules. Alias: /allowed-tools
/model [model]Select or change AI model. Arrow keys for effort
/effort [low|med|high|max]Set model effort. max = Opus 4.6 only
/fast [on|off]Toggle fast mode on or off
/themeChange color theme (light, dark, colorblind)
/color [color]Set prompt bar color for this session
/keybindingsOpen keybindings configuration
/terminal-setupConfigure terminal keybindings (Shift+Enter etc.)

Tools & Integrations

/hooksView hook configurations for tool events
/mcpManage MCP server connections and OAuth auth
/pluginManage Claude Code plugins
/skillsList available skills
/agentsManage agent configurations
/ideManage IDE integrations and status
/chromeConfigure Claude in Chrome settings
/add-dir <path>Add working directory for file access

Analytics & Debugging

/costShow token usage statistics
/usageShow plan limits and rate limit status
/statsVisualize daily usage, sessions, streaks
/contextVisualize context usage as a colored grid
/diffInteractive diff viewer for uncommitted changes
/doctorDiagnose and verify your installation
/insightsAnalyze your Claude Code sessions
/helpShow help and available commands

Account & Workflow

/loginSign in to Anthropic account
/logoutSign out from your account
/plan [desc]Enter plan mode, optionally with a task
/ultraplan <prompt>Draft plan, review in browser, execute
/security-reviewAnalyze branch changes for vulnerabilities
/tasksList and manage background tasks
/schedule [desc]Create/list Cloud scheduled tasks
/remote-controlMake session available from claude.ai. Alias: /rc
/desktopContinue session in Desktop app. Alias: /app

Community & Extras

/btw <question>Ask a quick side question without polluting context
/voiceToggle push-to-talk voice dictation
/feedback [report]Submit feedback or bug report
/release-notesInteractive changelog version picker
/powerupQuick interactive feature lessons with demos
/statuslineConfigure Claude Code's status line
/extra-usageConfigure extra usage for rate limits
/upgradeOpen upgrade page for higher plan tier
/privacy-settingsView and update privacy settings (Pro/Max)
/mobileQR code for Claude mobile app
/stickersOrder Claude Code stickers

Bundled Skills (Slash Commands)

/simplifySimplify and clean up code
/batchBatch operations across multiple files
/debugDebug an issue with Claude's help
/loopIterative loop until condition is met
/install-github-appSet up Claude GitHub Actions app
/install-slack-appInstall Claude Slack app (OAuth flow)
/reload-pluginsReload all active plugins

CLI Reference

CLI Flags & Arguments

Launch-time flags that customize how Claude Code behaves. Run claude --help for a quick overview.

Core

Session & Conversation

claudeStart interactive session
claude "query"Start with initial prompt
claude -p "query"Print mode (pipe-friendly)
claude -cContinue most recent conversation
claude -r <id>Resume session by ID/name
claude -n "name"Name the session
claude updateUpdate to latest version
claude auth loginSign in (--console for API billing)
claude auth statusShow auth status as JSON
claude doctorDiagnose installation
claude agentsList all configured subagents
claude mcpConfigure MCP servers
claude pluginManage plugins
Model & Behavior

Model & Permission Flags

--modelSet model (sonnet, opus, or full name)
--effortSet effort: low, medium, high, max
--permission-modedefault, acceptEdits, plan, auto, dontAsk
--enable-auto-modeUnlock auto mode in Shift+Tab cycle
--allowedToolsTools that execute without prompting
--disallowedToolsTools removed from model context
--toolsRestrict which built-in tools are available
--agentSpecify agent for session
--agentsDefine custom subagents via JSON
System Prompts

Prompt Customization

--system-promptReplace entire default prompt
--system-prompt-fileReplace with file contents
--append-system-promptAppend to default prompt
--append-system-prompt-fileAppend file contents to prompt

For most use cases, use append flags. They preserve Claude's built-in capabilities while adding your requirements.

Output & Formats

Output Control

--output-formattext, json, or stream-json
--json-schemaValidated JSON matching a schema
--max-turnsLimit agentic turns (print mode)
--max-budget-usdMaximum dollar spend before stopping
--fallback-modelAuto-fallback when overloaded
--verboseFull turn-by-turn output
--debugDebug mode with category filtering
Advanced

Worktrees, Remote & Advanced

--worktree, -wIsolated git worktree session
--tmuxCreate tmux session (with --worktree)
--remoteNew web session on claude.ai
--remote-controlStart Remote Control server
--teleportResume web session in local terminal
--chromeEnable Chrome browser integration
--bareMinimal mode: skip hooks, skills, plugins
--add-dirAdd extra working directories
--mcp-configLoad MCP servers from JSON
--settingsLoad additional settings JSON
--init-onlyRun init hooks then exit

Automation

Hooks

User-defined shell commands, HTTP endpoints, or LLM prompts that execute automatically at specific lifecycle points. The power-user feature.

Concept

What Are Hooks?

Hooks fire at specific points during a Claude Code session. When an event fires and a matcher matches, Claude Code passes JSON context to your handler. Hooks have 4 types:

command — Run a shell command. Input via stdin, output via exit codes + stdout
http — POST JSON to a URL endpoint. Response body for decisions
prompt — Single-turn LLM evaluation with yes/no JSON decision
agent — Multi-turn subagent that can use tools (Read, Grep, Glob) to verify

Hooks are configured in JSON settings files at user, project, or local scope.

All Events

Hook Lifecycle Events

Every event in Claude Code's lifecycle where hooks can fire:

Session Lifecycle

SessionStartSession begins or resumes
SessionEndSession terminates
UserPromptSubmitUser submits a prompt (can block)
InstructionsLoadedCLAUDE.md or rules loaded
ConfigChangeSettings file changes (can block)
CwdChangedWorking directory changes
FileChangedWatched file changes on disk

Tool Lifecycle

PreToolUseBefore tool executes (can block/allow/deny/defer)
PostToolUseAfter tool succeeds
PostToolUseFailureAfter tool fails
PermissionRequestPermission dialog appears (can allow/deny)
PermissionDeniedAuto-mode denies tool (can retry)

Agents & Tasks

SubagentStartSubagent spawned
SubagentStopSubagent finished
TaskCreatedTask being created (can block)
TaskCompletedTask marked complete (can block)
TeammateIdleTeam member about to idle (can block)

Completion & Misc

StopClaude finishes (can prevent stopping)
StopFailureTurn ends due to API error
NotificationNotification sent to user
PreCompactBefore context compaction
PostCompactAfter compaction completes
WorktreeCreateWorktree being created
WorktreeRemoveWorktree being removed
ElicitationMCP server requests user input
ElicitationResultUser responds to MCP elicitation
Config Locations

Where to Define Hooks

~/.claude/settings.jsonAll projects (user scope)
.claude/settings.jsonSingle project (commit to repo)
.claude/settings.local.jsonPersonal project (gitignored)
Managed policyOrganization-wide (admin)
Plugin hooksBundled with plugin
Skill/agent frontmatterYAML in component file
Exit Codes

How Hooks Respond

Exit 0 — Success. stdout parsed for JSON. Tool call proceeds.
Exit 2 — Blocking error. stderr fed to Claude. Tool call blocked.
Other — Non-blocking error. stderr in verbose mode. Execution continues.

Or return JSON on exit 0 for richer control:

{
  "hookSpecificOutput": {
    "hookEventName": "PreToolUse",
    "permissionDecision": "deny",
    "permissionDecisionReason": "Destructive command blocked"
  }
}
Example

Block Destructive Commands

A PreToolUse hook that prevents rm -rf:

{
  "hooks": {
    "PreToolUse": [{
      "matcher": "Bash",
      "hooks": [{
        "type": "command",
        "if": "Bash(rm *)",
        "command": ".claude/hooks/block-rm.sh"
      }]
    }]
  }
}

The script reads JSON stdin, checks the command, and returns permissionDecision: "deny" if it contains rm -rf.

Async & Advanced

Background & Prompt Hooks

  • Async hooks — Add "async": true to run in background while Claude continues
  • Prompt hooks — LLM evaluates conditions with yes/no JSON response
  • Agent hooks — Subagent with tool access verifies before deciding
  • HTTP hooks — POST to a URL, response body for decisions
  • PowerShell — Set "shell": "powershell" for Windows hooks
  • MCP matching — Use mcp__server__tool patterns in matchers
  • disableAllHooks — Temporarily turn off all hooks in settings
  • Run claude --debug to see hook execution details

Local AI

Ollama + Gemma 4

Run frontier-level AI on your own hardware. No cloud, no API keys, full privacy.

Setup

Getting Started with Ollama

Ollama is a local AI runtime. Install it, pull a model, and start chatting — or launch Claude Code with it.

1
Install Ollama

Download from ollama.com/download for Windows, macOS, or Linux.

2
Pull Gemma 4
ollama pull gemma4
3
Run it
ollama run gemma4
4
Launch with Claude Code
ollama launch claude --model gemma4
Models

Gemma 4 Model Sizes

ModelSizeContextBest For
E2B7.2 GB128KMobile & edge devices
E4B9.6 GB128KLaptops, daily coding
26B18 GB256KWorkstation MoE power
31B20 GB256KMax local intelligence

E4B is the sweet spot for most developers. 26B uses Mixture-of-Experts with only 3.8B active params.

Features

What Makes Gemma 4 Special

  • Multimodal — text, image, and audio input (E2B/E4B)
  • Thinking mode — configurable reasoning with <|think|>
  • Native tool calling — function calling for agentic workflows
  • System prompts — native system role support
  • Variable resolution — token budgets for image detail control
  • 128K–256K context — process long documents locally
Config

Recommended Settings

For best results with Gemma 4:

temperature1.0
top_p0.95
top_k64

For thinking mode, include <|think|> at the start of the system prompt. In multi-turn conversations, strip thoughts from history — only keep final responses.

Multi-Tool Strategy

GitHub Copilot & Others

Different tools shine in different areas. Use them together for maximum productivity.

GitHub Copilot

Complete Feature Set

Copilot lives inside your editor and provides AI assistance through multiple surfaces:

  • Ghost text autocomplete — real-time inline code suggestions as you type
  • Copilot Chat — sidebar conversations (Ctrl+Alt+I) for multi-turn Q&A
  • Inline chat — in-place code edits (Ctrl+I) right in the editor
  • Quick chat — lightweight panel (Ctrl+Shift+Alt+L) for fast questions
  • Agent mode — autonomous multi-file editing with tool access
  • CLIcode chat from terminal for outside-editor access
  • PR summaries — auto-generated pull request descriptions
  • Works with VS Code, JetBrains, Visual Studio, Neovim, Xcode
Slash Commands

Chat Slash Commands

Type / in any Copilot Chat input:

/clearStart a new chat session
/explainExplain how active editor code works
/fixPropose a fix for problems in selected code
/fixTestFailureFind and fix a failing test
/helpQuick reference for using Copilot
/newCreate a new project scaffold
/testsGenerate unit tests for selected code
/compactCompress conversation context
/searchSearch workspace for code (also @vscode)
/newNotebookCreate a new Jupyter notebook
/setupTestsSet up test framework for project
/initGenerate workspace instructions file
/create-promptCreate reusable .prompt.md file
/planResearch and plan with Plan agent
/deleteDelete a conversation
/renameRename a conversation
@ Participants

Chat Participants

Type @ to invoke domain-specific experts:

@workspaceContext about project structure and code interaction
@vscodeContext about VS Code commands and features
@terminalContext about terminal shell and contents
@githubGitHub-specific skills (issues, PRs, repos)
@azureAzure services, deployment, and management
# Variables

Context Variables

Type # to attach specific context:

#fileInclude a specific file's content
#selectionCurrently selected text
#codebaseFull codebase context
#terminalSelectionTerminal output
#functionCurrent function or method
#classCurrent class
#blockCurrent code block
#lineCurrent line of code
#commentCurrent comment
#symCurrent symbol
#pathFile path
#projectProject context
#fetchFetch content from a URL
Agent Modes

Agent Types & Permissions

Choose how Copilot operates in chat:

Agent — Autonomous multi-file edits, runs terminal commands, uses tools
Plan — Research and plan without making changes
Ask — Q&A only, no code modifications

Session types: Local (interactive in editor), Background, or Cloud.

Permission levels control tool approval autonomy.

Customization

Extending Copilot

  • .github/copilot-instructions.md — project-wide custom instructions
  • .prompt.md files — reusable prompt templates
  • Custom agents — specialized .agent.md workflows
  • MCP servers — connect external tools and APIs
  • Checkpoints — auto-snapshots for rollback
  • Vision — attach images/screenshots as context
  • Agent Debug view — inspect raw prompts and tool payloads
Comparison

When to Use What

TaskClaude CodeGitHub CopilotOllama Local
Inline autocomplete★★★
Multi-file refactor★★★★★★★
Codebase Q&A★★★★★
Run commands/tests★★★
Git workflow★★★★★
Privacy / offline★★★
Free tier★★★★★

The ideal setup: Copilot for real-time autocomplete, Claude Code for complex tasks, Ollama for offline/private work.

Workflow

Using Them Together

  1. Start typing — Copilot suggests inline completions
  2. Hit a wall — ask Copilot Chat for explanations
  3. Need multi-file changes — switch to Claude Code CLI
  4. Working offline — use Ollama + Gemma 4 locally
  5. Code review — Claude Code creates the PR with description
  6. Sensitive code — keep it local with Ollama

Memory Station

Flashcards & Quick Recall

Click any card to flip it. Practice until you can answer without peeking. Spaced repetition: review today, tomorrow, then in 3 days.

Set 1 / 3

Quick Reference

Cheat Sheet

Claude Code CLI

claudeStart session
claude "task"One-shot prompt
claude -p "q"Print mode (pipe-friendly)
claude --resumeResume last session
claude --model opusUse specific model
claude --effort highSet effort level
claude --worktreeIsolated git worktree
claude --bare -pMinimal fast mode
claude doctorDiagnose installation
claude agentsList subagents

Key Slash Commands

/initGenerate CLAUDE.md
/memoryManage memory
/compactCompress context
/configOpen settings
/hooksView hook configs
/plan [desc]Enter plan mode
/diffInteractive diff viewer
/security-reviewSecurity scan changes
/btw <q>Side question
/voicePush-to-talk dictation

Ollama

ollama pull gemma4Download model
ollama run gemma4Chat locally
ollama listShow installed models
ollama rm gemma4Remove model
ollama serveStart API server
ollama launch claude --model gemma4Claude + Gemma 4

Copilot Essentials

/explainExplain code
/fixPropose fix
/testsGenerate tests
@workspaceProject context
@terminalTerminal context
#fileInclude specific file
#codebaseFull codebase context
Ctrl+Alt+IOpen Chat view
Ctrl+IInline chat
TabAccept ghost text

Hook Events

PreToolUseBlock/allow tools
PostToolUseAfter tool success
StopPrevent stopping
SessionStartLoad context
UserPromptSubmitFilter prompts
TaskCompletedEnforce quality gates
exit 0Allow (parse JSON)
exit 2Block (stderr → Claude)

CLAUDE.md Patterns

./CLAUDE.mdProject-wide
~/.claude/CLAUDE.mdUser-wide
./CLAUDE.local.mdPersonal+gitignored
.claude/rules/*.mdModular rules
@path/to/fileImport syntax
paths: ["**/*.ts"]Scoped rules frontmatter