Your New Superpower Starts Here
We're so glad you're here. This course is designed to help you feel confident, excited, and empowered with Claude Code. There are no silly questions, no wrong answers, and no pressure to be an expert by the end. You're already great at what you do — we're just giving you a new tool to make you unstoppable.
"People rarely succeed unless they have fun in what they are doing." — Dale Carnegie
What we'll walk through together today
/clear is your best friendWhat it is and what makes it different
Presenter: Jeremy Proffitt
Three things working together: orchestration + tools + AI models
The Orchestration Layer
Model Context Protocol
You tell Claude Code what you need in plain English. The orchestration layer figures out which AI model and tools to use, then delivers the result back to you. You stay in control — it's your copilot, not your replacement.
Way more than you'd expect
Describe what you want → get working code.
Paste an error — Claude traces and patches.
Second pair of eyes on any MR.
Rename, restructure across files.
Terraform, pipelines, cloud resources.
READMEs, API docs, diagrams.
Jira, GitLab MRs, Confluence.
Explore codebases, explain things.
| Autocomplete | Code Assist: Tab-complete as you type Claude Code: Task-oriented, not keystroke-oriented |
| Context | Code Assist: You @-mention files manually Claude Code: Autonomously reads, greps, discovers |
| Autonomy | Code Assist: You ask, apply manually Claude Code: Multi-step: write → test → fix → commit |
| Shell & Tools | Code Assist: Limited terminal Claude Code: Full shell + MCP (GitLab, Jira, Dynatrace, etc.) |
| Sub-agents | Code Assist: None Claude Code: Spawns parallel agents for research & validation |
They're complementary! Use Code Assist for fast autocomplete while you type. Use Claude Code to hand off entire tasks end-to-end.
The word agent means different things
Presenter: Jeremy Proffitt
The word "agent" means different things depending on who's talking — let's clear that up
Generically, an agent is anything that combines AI with an orchestration layer to perform multi-step tasks autonomously.
Think: "AI that can do things on its own, not just answer questions."
People also call the prompt that drives an agent an "agent" — because in many systems the prompt is the agent. The instructions and the thing doing the work get blurred together.
In Claude Code, an agent is a prompt file that the orchestration layer can pick up and use to accomplish tasks. You don't call them directly — Claude decides when to use them based on what you're asking for.
Skills are also prompt files — but you call them explicitly with a slash command. No guessing. You say "run this" and it runs.
The key difference in Claude Code:
Agents are picked up automatically by the orchestrator when it thinks they'll help.
Skills are invoked explicitly by you with a /command.
Both are just prompt files under the hood — the difference is who decides when to use them.
How we've customized Claude Code for our teams
How your code stays safe from prompt to response
Claude Code on
your machine
Code, answers,
and actions
AWS Bedrock does not store or train on your prompts or code. What you send is processed and discarded — nothing lingers.
Bedrock provides model-level guardrails. The ACA Gateway adds authentication, safety policies, and usage tracking on top.
Every request is tracked through the ACA Gateway — we know who's using what, how much, and can audit at any time.
When Claude says no — and what to do about it
AWS Bedrock Guardrails are safety filters built into the AI infrastructure. They automatically block requests that could violate content policies — protecting you, Ally, and our customers.
/rewind to undo the last message and try again/clear to clear context and start fresh
This is what a guardrail block looks like — it's not an error, just a safety filter doing its job.
Pro tip: Keep prompts professional. No swearing needed — Claude understands plain English just fine! 😊
What limits exist, what they look like, and how to get more
Each user has an ACU (Anthropic Compute Unit) limit per rolling window. Heavy usage — like large file processing or long sessions — can hit this ceiling. The window resets automatically, usually within an hour.
To request a temporary increase: Your Sr. Director can reset or raise your limit directly in the ACA Management Portal — fast, self-serve, no ticket needed! 🚀
Usage threshold alerts are reviewed by leadership. Sr. Directors can approve, deny, or delegate limit increases for their teams — all time-boxed and auditable.
Good news: Limits exist to ensure fair access across all teams — not to slow you down. If you genuinely need more, the process is easy and fast!
Rolling out to all users — see your own ACU consumption and your team's at a glance
Real-time ACU balance, usage history (7–90 days), estimated cost, and per-model breakdown — all in one place.
Leaders see consumption grouped by manager, total ACUs, request counts, and cost — always know where usage is concentrated.
Coming soon to everyone: The usage dashboard is actively rolling out. Once available, check it anytime to understand your own consumption and proactively manage your limits.
The error you'll see if your enablement wave hasn't arrived — and exactly what to do next
If Claude Code launches but a request comes back with API Error: 403 and UNAUTHORIZED_GROUP_ACCESS_ERROR, your account hasn't been added to an enablement wave yet. Nothing is broken — you're just a little early!
Complete the Claude Code training in Workday if you haven't already. That's the gate that gets you added to an upcoming enablement wave — easy and self-paced!
Enablement waves run twice a week, the week after your Claude Code enablement. Once your wave runs, access switches on automatically — no ticket, no manual steps.
After your wave completes, just restart Claude Code. The 403 disappears and you're in. Seeing this error means install worked and you're already talking to Ally's gateway — the last puzzle piece is the AD group sync.
You're on the list — hang tight! This error is a normal part of the rollout. Finish training, let the wave run, and we'll see you on the other side.
Claude builds the first draft. Then you refine it — just like talking to a colleague:
Each prompt refines what's already there. You don't start over — you steer.
Guidance (CLAUDE.md) + Prompt (what you want) + Iteration (refine as you go) = this entire deck. No design tools. No templates. Just conversation.
Your control panel — configure Claude to work the way you do
Presenter: Jackson Sykes
settings.json?Your control panel for Claude Code — everything from permissions to environment variables
// settings.json — full shape { "permissions": { "allow": [...], "deny": [...] }, "defaultMode": "default", "env": { "AWS_REGION": "us-east-1", "NODE_ENV": "development" }, "hooks": { "PreToolUse": [...], "PostToolUse": [...] }, "mcpServers": { "jira": { "..." }, "gitlab": { "..." } } }
Allow & deny rules that control what Claude can do without asking. We'll deep-dive on this next.
Sets your starting permission mode: default, acceptEdits, or plan.
Environment variables injected into every Bash command Claude runs. Great for AWS region, Node env, proxy settings.
Shell commands that run before or after Claude uses a tool. Automate linting, notifications, guardrails.
Connect external tools (Jira, GitLab, Confluence) so Claude can use them natively.
📖 Full reference: code.claude.com/docs/en/settings
settings.json — Tips & Quick WinsHandy things you can configure right away
Run /update-config and describe what you want in plain English. Claude writes the correct JSON for you.
Claude auto-appends a Co-Authored-By trailer to commits & PRs. Customize or disable it:
{
"attribution": {
"commit": "Created using Lightspeed 🚀\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
"pr": "" // empty = hide from PRs
}
}
Inject env vars into every Bash command Claude runs — no export needed:
{
"env": {
"AWS_REGION": "us-east-1",
"NODE_ENV": "development"
}
}
Add the $schema line and VS Code / Cursor gives you autocomplete + validation:
{
"$schema": "https://json.schemastore.org/claude-code-settings.json",
...
}
settings.json — Three LayersRight file, right scope — user, project, or local override
~/.claude/settings.json
Applies to every project on your machine. Your personal defaults.
// Personal defaults — applies to all your projects { "defaultMode": "acceptEdits", "permissions": { "allow": ["Read", "Glob", "Grep"] }, "env": { "AWS_REGION": "us-east-1" } }
.claude/settings.json
Committed to git. Shared with your whole team. Use for team guardrails.
// Team rules — committed to the repo { "permissions": { "allow": ["Bash(npm *)", "Bash(terraform fmt *)"], "deny": ["Bash(rm -rf *)", "Bash(git push --force *)"] } }
.claude/settings.local.json
Gitignored. Your personal tweaks for this project only.
// Personal, local-only — never committed to the repo { "permissions": { "allow": ["Bash(docker *)"] }, "mcpServers": { "my-local-tool": { "..." } } }
These three layers sit below Ally's managed settings layer, which cannot be overridden by any file you control. Deny always wins — any deny rule at any level blocks the action.
Change how Claude approves actions — set defaultMode in settings.json
default
— recommended starting point
Standard behavior: prompts for permission on first use of each tool. You see everything before it happens.
acceptEdits
— great for active coding sessions
Auto-accepts file edits and common filesystem ops (mkdir, touch, mv, cp) in your working directory. Bash still prompts.
plan
— read-only, safe exploration
Claude can analyze and explain but cannot modify files or run commands. Perfect for code review or exploring an unfamiliar repo.
bypassPermissions
DISABLED AT ALLY
Skips all permission prompts entirely. Intended only for isolated containers or VMs — never developer workstations.
🚫 Disabled in Ally's managed settings. Cannot be enabled by any user or project config.
// Set in any settings.json layer { "defaultMode": "acceptEdits" }
Claude Code asks before it acts — every time it wants to touch your system
Every action that touches your filesystem, shell, or the internet triggers a prompt. You see exactly what Claude wants to do before it happens — always.
💡 Read-only operations (ls, cat, grep, git status, etc.) run without any prompt — they're built-in safe commands.
Use /permissions at any time to view and manage all your active allow & deny rules.
Know exactly what you're agreeing to before you press a key
Allows this single action right now. Next time Claude wants to do the same thing, it asks again.
✅ Best for: one-off commands you're evaluating. No long-term commitment.
Allows this pattern until you close Claude Code. Remembered in memory, not written to disk.
✅ Best for: repetitive tasks within a working session (running tests, linting, builds).
Bash commands: writes to settings.json — persists permanently across all sessions.
File edits & writes: held in memory only — resets at session end, same as "for session."
✅ Best for: Bash commands you've verified safe. File edit approvals will re-prompt next session.
Blocks the action. Claude stops and reports it was denied. Nothing is written to disk.
✅ Best for: anything that looks wrong, risky, or unexpected.
💡 Tip — Tab to amend
Press Tab on Yes or No to add context. Instead of a bare "No," amend it to "No, use TypeScript instead of Python" — Claude adjusts on the spot.
💡 Tip — Ctrl+E to explain
Press Ctrl+E to see a detailed breakdown of what the command will do, plus a risk score (low, medium, high) so you can make an informed decision.
Match tools by name, or scope Bash with glob-style command filters
Use the exact tool name to allow or deny it entirely:
"Read" // all file reads "Glob" // file pattern matching "Grep" // search in files "Write" // new file creation "Edit" // file edits / diffs "WebFetch" // outbound HTTP calls "WebSearch" // web search "Bash" // ALL bash (use carefully!)
Scope Bash permissions to specific command patterns:
"Bash(npm *)" // npm install, test, run… "Bash(git status *)" // read-only git info "Bash(terraform fmt *)" // tf formatting only "Bash(ls *)" // ls only — NOT lsof "Bash(ls*)" // ls AND lsof (no boundary)
⚠ Space before * enforces a word boundary. Bash(ls *) matches ls -la but not lsof. Shell operators (&&, |, ;) split compound commands — each subcommand needs its own matching rule.
Block patterns you never want Claude to run:
"Bash(rm -rf *)" // recursive delete "Bash(git push --force *)" // force push "Bash(wget *)" // download tool "Bash(sudo *)" // privilege escalation "Read(.env)" // block reading .env files "Read(*.env)" // block local.env, etc.
MCP tools (mcp__server__tool) and domain-scoped fetches:
"mcp__jira__*" // all Jira tools "mcp__gitlab__*" // all GitLab tools "mcp__jira__search_issues" // one specific tool "WebFetch(domain:ally.com)" // fetches to ally.com only "Agent(Explore)" // allow/deny a subagent
💡 Tip: Run /update-config to have Claude write or update your settings.json interactively.
Allowing WebFetch alone doesn't block curl in Bash — add a deny rule for Bash(curl *) if needed, or use sandbox mode for full network control.
The real security risk isn't the prompt — it's ignoring it
When a system generates too many prompts, people stop reading them and click through on autopilot. Security systems don't fail because they're broken — they fail because they're ignored.
In Claude Code, this looks like: Claude asks to run npm install, you approve. It asks again. You approve. And again. By the 10th prompt, you're not reading. You just hit yes. That's the risk.
Reduce noise on known-safe actions so you have full attention on the prompts that actually matter — the ones touching sensitive files, pushing code, or running infrastructure commands.
plan mode when exploring — zero action prompts by design. Great for code review or unfamiliar repos.acceptEdits during active coding — file edits stop prompting, Bash still does./fewer-permission-prompts — Claude tunes your config to your actual workflow so noise drops without you guessing.A practical guide for setting up your personal settings.json
Pre-allow these. Zero risk, maximum convenience.
"Read" "Glob" "Grep" "Bash(ls *)" "Bash(cat *)" "Bash(git log *)" "Bash(git status *)" "Bash(git diff *)"
Allow per-project once you trust the context.
"Write" "Edit" "Bash(npm *)" "Bash(terraform fmt *)" "Bash(terraform plan *)" "Bash(docker build *)" "mcp__jira__*" "mcp__gitlab__*"
Always prompt. Add these to deny.
"Bash(rm -rf *)" "Bash(git push --force *)" "Bash(curl *)" "Bash(sudo *)" "Bash(chmod 777 *)" "Bash(terraform apply *)" "Bash(terraform destroy *)"
💡 Quick setup: Run /fewer-permission-prompts — Claude analyzes your transcript history and auto-suggests the right allow rules for your exact workflow.
Sessions, Tokens, and Working Memory
A token is roughly 4 characters of text — the unit Claude thinks in
Here's a real sentence broken into tokens — every ~4 characters is one token:
"Claude Code is a powerful tool for you!" — ~10 tokens
Everything Claude reads and writes costs tokens. The more tokens in your conversation, the more it costs — and the harder it is for Claude to remember early details.
That's roughly 150,000 words or ~500 pages. Sounds huge — but code, file contents, and tool results add up fast.
Different models for different jobs — like choosing the right tool from a toolbox
Most capable. Deep reasoning. Best for complex multi-step tasks.
Fast & capable. Great balance of speed and quality.
Lightweight. Quick lookups and simple tasks.
💡 Techniques multiply capability: A single model working alone is good. Multiple agents with expert personas blending outcomes — like asking a room full of experts instead of one engineer — is significantly better for complex tasks.
Start, resume, rewind, and branch your work
Presenter: Blaise Moses
A session is your running conversation with Claude — it remembers everything until you clear it
claude from your project root opens a new session with a fresh context window.
Every message, tool call, and file read builds shared context. Claude saves everything to the session.
Sessions survive restarts. Pick up exactly where you left off with claude --continue.
Rewind to any earlier point in a conversation with /rewind. Fix mistakes without restarting from scratch.
Fork a session with /branch to explore two approaches simultaneously. Compare results side-by-side.
🔒 Private & Local: Sessions are stored locally on your machine, not in the cloud. Your conversations are private to you.
Pro Tip: Even if Claude Code closes unexpectedly, your session is safe. claude --continue picks up from the last completed step.
Sessions are scoped by folder — each project keeps its own independent history. Let's see how that works →
Sessions are scoped to the folder you launch from — each project keeps its own independent history
Each folder has its own sessions. Start Claude Code from your project root and your conversation history stays organized.
Advanced: Fork a session to explore two approaches in parallel, or rewind to any earlier point in a conversation.
From Terminal
Within Claude Code
Let's see this in action →
The key commands for managing your sessions
claudeStart a new session from your project root.
/resumeBrowse and jump back into any past session.
/rewindRoll back to an earlier point in the conversation without restarting.
/branchFork the session to explore two approaches in parallel.
Claude's working memory is powerful — but it works best when we keep things focused
Can you do 17 tasks? Absolutely. But not all at once in your head.
Claude is built to handle complex tasks. It has native techniques — planning mode, subagents, task lists — designed exactly for this.
Big tasks need to be chunked into smaller pieces. A technique is required — and we'll teach you several.
/clear, planning mode, subagents, and task lists — all techniques for working within the window.
Claude Code can spawn specialized subagents to work in parallel without bloating your context
When Claude Code faces a complex task, it launches subagents — independent workers that run in parallel, each with their own context window. Results come back as concise summaries, keeping your main context clean.
You can just ask Claude to use subagents. Say "use subagents to research this" or "explore these files in parallel."
Deep codebase research — searches across files, patterns, and naming conventions
Designs implementation strategies, identifies files and architectural tradeoffs
Runs shell commands, git operations, builds, and tests in isolation
Key takeaway: Subagents are why Claude Code handles large tasks without hitting context limits — heavy lifting happens outside your main conversation.
/clear CommandReset conversation context and stay sharp
claude --resumeTo start a truly new session: exit Claude Code (Ctrl+D) and run claude again.
/clear as Cost ControlEvery token in your context window is re-sent to the API on every single turn
A bloated context means you're paying for old, irrelevant tokens with every message you send. Clearing between unrelated tasks keeps costs down and quality up.
You update website text (HTML/CSS context), then need to change a backend function (Python context). Without /clear, every backend message carries the full HTML conversation — you're paying for irrelevant tokens and getting worse results.
/clearContext reset — stop paying for HTML tokens
Rule of thumb: If the next task doesn't need anything from the current conversation, /clear first.
Think First, Build Second
Separate research from implementation for complex tasks
Claude explores your codebase, reads files, and researches the problem without making changes
A detailed implementation plan is written to a file with specific steps and approach
Clear the conversation to free up the full context window for execution
Reference the plan.md — Claude follows it step-by-step with maximum context available
The plan persists as a file on disk, surviving context clears and compaction. Claude gets maximum context to execute each step precisely.
Plans can be executed one step at a time, using /clear between steps. Each step gets a fresh context window — so a 10-step plan effectively gets 10x the context.
About .md files: Claude generates plans, docs, and reports as Markdown (.md) files — lightweight text that renders beautifully in GitLab and Confluence. Ask Claude to convert them to Word, PDF, or HTML anytime.
It's where everything you just learned starts
Presenter: Trevor Lewis
The difference isn't length — it's that one briefing gives the tool what it needs
Key insight: Google rewards keywords. Claude rewards context.
Three things — none of them are magic words
What the model needs to know — the document, team composition, allocation details
What's fixed — the deadline, team size, things that can't be assumed away
What you want back — specific format, not just “sprint planning”
The whole skill: What does it need to know? What's fixed? What do I want back?
Pick one, try it Monday — the briefing structure works for all of them
Inputs: the situation, what you've already considered
Constraints: what's fixed, what you can't change
Output: options with tradeoffs
Inputs: the document, who's reading it
Constraints: how long, what they need to know
Output: the format you need
Inputs: the draft, your goal for it
Constraints: who it's for, what kind of feedback helps
Output: structured critique
Inputs. Constraints. Output shape. — You already know how to communicate this way. The tool is new; the skill isn't.
Take a task you already know well — and try it three ways
The way you'd type into Google. See what comes back.
Inputs, constraints, output shape. See what comes back.
Find where the difference actually lives.
Look closely at what comes back. Iterate. Refine the prompt, not just the response.
What it needs to know.
What's fixed.
What you want back.
You don't walk up to a colleague and say “do thing, here.” You give them context. You tell them what's fixed. You tell them what you want back. You already know how to communicate this way.
CLAUDE.md, Memory, and Rules
Persistent instructions that Claude reads every time it starts
~/dev/payments-api — shared via repo
Location: Project root
Coding standards, conventions, architecture rules, build commands. Committed to git — everyone on the project gets the same instructions.
Location: ~/.claude/projects/*/memory/
Claude auto-saves learned patterns and decisions per project. Survives across sessions. Local to your machine.
Location: Home directory
Personal preferences, team conventions, org-wide standards. Applied to every project you open with Claude Code.
Location: ~/.claude/rules/
Enforceable constraints like "always use Ally modules" or "require all tfvars variables". Always loaded, always enforced.
Key Insight: All config files are loaded into context at the start of every conversation — they count toward your token budget. Keep them concise. Use rules/*.md for detailed constraints so CLAUDE.md stays lean.