Course Page: Claude Code: A Highly Agentic Coding Assistant – DeepLearning.AI
Lesson 2: Setup & Codebase Understanding
The course begins with a Retrieval-Augmented Generation (RAG) chatbot example. Here, Claude Code is used to agentically explore the codebase and summarize its architecture. For example, the instructor asks a high-level question about the codebase and Claude responds by identifying key files and describing the end-to-end flow of a user query through the system. This quickly surfaces how the front-end, API endpoints, and RAG components work together. A key takeaway is using the /init command: /init scans the project and generates a CLAUDE.md file documenting the codebase (entry points, commands, style, etc.), effectively giving Claude persistent memory about the project. This makes Claude Code aware of project conventions (tests, linting commands, etc.) every time it’s run.
Lesson 3: Adding Features
After understanding the codebase, Lesson 3 covers adding features. The instructor demonstrates best practices for providing context to Claude: explicitly reference the relevant files using @filename and enter “plan mode” before coding. For example, to make sources in the chatbot’s UI clickable links, they open the terminal, use @ to tag the front-end and back-end files needing changes, then press Shift+Tab twice to switch to plan mode. Claude Code first outlines a detailed change plan, which the developer reviews and approves, and only then applies the edits. This two-step approach (plan then implement) ensures that large, multi-file feature changes are done systematically.
Lesson 4: Testing, Debugging, & Refactoring
Lesson 4 focuses on test-driven development and error fixing. The instructor notes that the chatbot lacks automated tests, so they prompt Claude Code to generate tests for the critical modules (AIGenerator.py, rag_system.py, search_tools.py, etc.). These tests reveal that the application is failing to process queries correctly. Claude is then guided to run the tests, identify the failing logic, and fix the underlying bug. Importantly, they use extended thinking (e.g. “think a lot”) to allocate more reasoning for this complex task. By starting with test creation, the approach avoids blindly asking for fixes and instead builds a safety net: tests are added, run, and their failures drive the refactoring. In effect, Claude helps debug and refactor the code in a disciplined way, ensuring each fix is validated by the new tests.
Lesson 5: Parallel Development with Git Worktrees
Lesson 5 introduces Git worktrees for parallel feature development. The instructor shows that you can run multiple Claude Code sessions simultaneously, but to avoid conflicts, you first create separate Git worktrees (e.g. ui_feature, testing_feature, quality_feature). Each worktree is effectively an isolated copy of the repo. They also create a custom Claude command (.claude/commands/implement-feature.md) to streamline instructions. For instance, in one worktree Claude adds a dark/light toggle to the UI, in another it enhances the test suite, and in a third it adds linting and formatting tools. After all sessions finish, the changes from each branch can be merged. Throughout, the instructor uses Git worktrees so that parallel Claude agents modify disjoint branches and later merge them – with Claude even helping to manage commits – thus avoiding overwriting work.
Lesson 6: GitHub Integration & Hooks
In Lesson 6, Claude Code is connected to GitHub. The instructor uses the /install-GitHub-app command to add Claude Code as a GitHub App on the repository. This enables Claude to work on pull requests and issues. GitHub Actions workflows are installed (via provided YAML) so that every future PR is automatically reviewed by Claude (checking code quality, security, etc.). We see an example: after pushing changes, Claude opens a pull request on GitHub which includes the action config. This PR shows out-of-the-box code-review templates (e.g. analyzing files, suggesting fixes) with Claude as a “teammate” reviewing the code. They also demonstrate issue handling: a new issue is created to revert a UI header change, and by tagging Claude the issue, Claude generates a PR that applies the fix. In summary, Lesson 6 shows how Claude Code’s SDK and GitHub integration allow commands like /issue or /pr to be used on GitHub directly – enabling the assistant to respond to feedback, fix bugs, and refactor code via the GitHub interface.
Lesson 7: Refactoring Notebooks & Creating a Dashboard
Lesson 7 shifts to data analysis. The example is a Jupyter notebook analyzing e-commerce CSV data. The instructor has Claude Code refactor this notebook into a cleaner dashboard. They provide a detailed prompt that references the notebook and folders, and specifies requirements: extract data-loading logic and metric calculations into separate Python modules, improve visualizations, add configuration and documentation (requirements.txt, README), etc… Claude uses its “read notebook” tool to parse the existing notebook cells, then generates a refactored notebook with helper files. The result is much cleaner: object-oriented Python scripts load and process data, compute metrics, and the notebook itself focuses on visual output. All of this is done via the Claude prompts: as they say, after running the prompt “we should expect to see not only some powerful visualizations, but also other files with helper functions” for loading data and calculating metrics. The lesson shows that Claude Code can decompose a messy notebook into modular code + a polished dashboard notebook, validating each step by checking the outputs as it goes.
Lesson 8: Figma Mockup to Web App
The final lesson highlights using design and testing tools. The instructor connects to a Figma design mockup via the Claude Code MCP (My Computer Proxy) for Figma and to a Playwright MCP for browser automation. They start a new Next.js project, then add the Figma and Playwright MCP servers to Claude. The key prompt is: instruct Claude to analyze the Figma layer (imported via the Figma dev-mode MCP) and build the corresponding UI in Next.js using a chart library, then use Playwright to verify it. In practice, Claude uses the Figma MCP tools like “Get image” and “Get code” to fetch assets and structure from the mockup, installs any missing dependencies, and scaffolds React components to match the design. Once the code is generated, they launch Playwright to open the local app (localhost:3000) and take a screenshot, confirming the generated UI matches the mockup. The instructor remarks how this automates a task that would “have taken days” into mere minutes. Finally, they extend the example by having Claude query a web search tool to find real Federal Reserve data (CPI, etc.) and integrate it into the dashboard – showing that Claude can also fetch and incorporate live data sources into the generated app.
Sources: The above summary is based on the official Claude Code course notes and prompts for Lessons 2–8, which detail the steps and best practices demonstrated in each lesson. Each point is drawn from those lesson transcripts and notes.
Further Reading
AI Agents vs Agentic AI: What’s the Difference and Why Does It Matter? | by Edwin Lisowski | Medium
