Agentic AI with Java: Live Cohort
Claude Code

Introduction

What Claude Code is, how it works under the hood, and how its core features fit together before you start building.

A large language model on its own is like a brain sitting on a table. It can think, explain and write code as text, but it cannot open your project, run your tests or fix the file that is actually broken. To do real work, the brain needs a body.

Claude Code is that body.

It is an agentic coding tool from Anthropic. You run it inside your project, describe what you want, and it reads files, edits code, runs commands, checks the result and repeats until the task is complete. You stay in charge: you approve what it is allowed to do, you can stop it at any point, and you verify the final result.

The big picture

How Claude Code fits together

There are three parts to keep in mind:

PartWhat it does
The modelClaude (Opus, Sonnet or Haiku) does the reasoning: understanding code, planning steps and deciding what to do next
The harnessClaude Code itself. It gives the model tools, manages the context window, asks for permissions, saves checkpoints and keeps the session history
Your projectThe folder, terminal, git repository and tests that Claude Code works on

The word agentic simply means the model can act, not just answer. Each time Claude uses a tool, the result comes back and informs the next step. This repeated cycle is called the agentic loop, and you will see it in action in Section 4.

Where you can use Claude Code

Claude Code runs on several surfaces. They all use the same engine, so your CLAUDE.md, settings and MCP servers work everywhere.

SurfaceBest for
Terminal (CLI)Full feature set. This is what we use throughout these docs
VS Code and CursorInline diffs and a chat panel inside the editor, or the CLI inside the integrated terminal
JetBrains IDEsIntelliJ IDEA, PyCharm, WebStorm and others through a plugin
Desktop appRunning several sessions side by side with visual diff review
Web and mobileLong-running tasks in the cloud at claude.ai/code

We work mostly in the terminal inside VS Code. Even when you prefer a graphical panel, some configuration (like hooks) still happens in the terminal, so being comfortable with the CLI pays off.

Core concepts at a glance

You will meet each of these in detail later. For now, get familiar with the names.

ConceptOne-line meaningSection
Agentic loopGather context, take action, verify results, repeat4
Permission modesHow much Claude can do without asking you4
CheckpointsAutomatic restore points for files Claude edits4
CLAUDE.mdA markdown file of project instructions Claude reads every session5
Context windowEverything Claude can "see" right now: chat, files, outputs, instructions5, 6
Slash commandsShortcuts like /init, /clear, /compact, /model6
Sub-agentsHelper agents with their own context that return a summary7
WorktreesSeparate working folders for parallel branches7
SkillsReusable instructions or workflows, invoked as /skill-name9
SpecsWritten specifications that drive the implementation9, 10
MCPAn open protocol to connect Claude Code to tools like GitHub11
HooksScripts that run automatically on events, like after every editOfficial docs

The .claude folder

Most of your Claude Code setup lives in plain files. That is good news: you can read them, review them in pull requests and share them with your team through git.

your-project/
├── CLAUDE.md                  # shared project instructions
├── CLAUDE.local.md            # your personal notes (add to .gitignore)
├── .mcp.json                  # MCP servers shared with the team
└── .claude/
    ├── settings.json          # shared settings and permission rules
    ├── settings.local.json    # your personal settings (gitignored)
    ├── agents/
    │   └── api-contract-extractor.md
    └── skills/
        └── telusko-status/
            └── SKILL.md
File or folderPurposeCommit to git?
CLAUDE.mdShared project instructions (can also live at .claude/CLAUDE.md)Yes
CLAUDE.local.mdYour personal notes for this projectNo
.claude/settings.jsonShared settings such as permission rulesYes
.claude/settings.local.jsonYour personal settings for this projectNo
.claude/agents/Custom sub-agentsYes
.claude/skills/Custom skillsYes
.mcp.jsonMCP servers shared with the teamYes, without secrets

There is also a user-level folder at ~/.claude/ in your home directory. Settings, skills and agents placed there apply to every project on your machine.

Spec-driven, not vibe-driven

There are two ways to build with AI. The first is "vibe coding": describe the app in one line, accept whatever comes back, and keep saying "no, not like that" until it looks right. It is fun for a weekend demo. It burns tokens, wastes time and produces code nobody fully understands.

The second is spec-driven development. Before asking for code, you write down what you want: the API contract, the data shapes, the rules, what is in scope and what is not, and how to verify it. Claude then builds against that spec, and you check the result against the same spec.

This is an old software engineering idea. It simply becomes much more powerful when the one reading your spec can also write the code. That is the approach we follow throughout these docs.

Done is not the same as verified

An AI can tell you a task is done. Only you can confirm it is verified. Run the app, read the diff and test the edge cases before you commit. If something breaks in production, the responsibility is yours, not the model's.

Official references

Start with What is Claude Code and move through the sidebar in order. Each section builds on the previous one.


Written By: Shramik Masti

How is this guide?

Last updated on