How to Build a Professional Claude Code Workflow for Spring Boot Case Studies
When working on a technical case study, one of the easiest approaches is to upload the PDF to an AI assistant and say:
Read this case study and implement it.It may work.
But it is not how I want to use Claude.
My goal is to use Claude Code more like a professional software engineering environment:
Case Study PDF
↓
Requirement Analysis
↓
Architecture
↓
Principal Engineer Review
↓
Implementation Plan
↓
Feature-by-Feature Development
↓
Testing
↓
Architecture / Code Review
↓
Final Verificationn this article, I will build that environment from scratch for a Java 25 + Spring Boot 4 case study.
We will create two implementations:
Implementation 1 — Simple Professional Setup
CLAUDE.md
ROLE.md
SKILL.md
Case Study PDFThis version is easier to understand when learning Claude Code.
Implementation 2 — Advanced and Token-Efficient Setup
CLAUDE.md
.claude/rules/
.claude/agents/
.claude/skills/
RTK
Context isolationThis version is closer to how I would configure a serious development project.
Also, there is no recommended single SKILLS.md file in the current Claude Code structure. Reusable skills are created as folders containing a SKILL.md, for example:
.claude/skills/analyze-case/SKILL.mdClaude Code can discover these skills and expose them as commands such as /analyze-case
What Are We Building?
Assume that a company gives us the following file:
case-study.pdfOur fictional case study asks us to implement an Inventory Reservation API.
The technology requirements are:
Java 25
Spring Boot 4
Maven
Spring Data JPA
PostgreSQL
Docker
JUnitSome example requirements from the PDF could be:
POST /api/v1/inventory/{sku}/reserve
POST /api/v1/inventory/{sku}/release
GET /api/v1/inventory/{sku}Business rules:
A reservation cannot reduce stock below zero.
Concurrent reservations must not oversell inventory.
Invalid reservation quantities must return HTTP 400.
Unknown products must return HTTP 404.
All database schema changes must use migrations.
Critical business rules must have automated tests.The important point is that the PDF remains the source of truth.
Claude should not invent requirements just because something would normally be implemented in a Spring Boot application.
Prerequisites
I am using Windows in this example.
Claude Pro currently includes access to Claude Code, and the same Claude account can be used to authenticate the terminal client. Claude and Claude Code usage share the plan’s usage allowance.
Install Claude Code:
winget install Anthropic.ClaudeCodeVerify:
claude --versionThen start it:
claudeAuthenticate using your Claude Pro account.
One useful billing detail: if your machine has an ANTHROPIC_API_KEY configured, Claude Code can use API authentication instead of your subscription login. If your intention is specifically to use your Pro allocation, check the active authentication method.
Create the Project
Create a new directory:
mkdir spring-boot-claude-case-study
cd spring-boot-claude-case-studyInitialize Git:
git initCreate the basic directories:
mkdir case
mkdir docs
mkdir .claudePut the company PDF here:
case/case-study.pdfOur starting project becomes:
spring-boot-claude-case-study/
│
├── case/
│ └── case-study.pdf
│
├── docs/
│
├── .claude/
│
└── CLAUDE.mdNow we can start designing the Claude environment.
Implementation 1 — Simple Professional Setup
The first implementation intentionally keeps the architecture simple.
We will use:
CLAUDE.md
↓
ROLE.md
↓
Skills
↓
Spring Boot projectOur project will look like this:
spring-boot-claude-case-study/
│
├── CLAUDE.md
│
├── case/
│ └── case-study.pdf
│
├── docs/
│ ├── ROLE.md
│ ├── CASE_REQUIREMENTS.md
│ ├── ARCHITECTURE.md
│ └── IMPLEMENTATION_PLAN.md
│
├── .claude/
│ └── skills/
│ ├── analyze-case/
│ │ └── SKILL.md
│ ├── implement-feature/
│ │ └── SKILL.md
│ └── verify-project/
│ └── SKILL.md
│
├── src/
├── pom.xml
└── README.mdStep 1 — Create CLAUDE.md
CLAUDE.md is the persistent project instruction file.
Claude Code loads project instructions when a session starts, so this is the place for information Claude should know throughout the project: architecture constraints, build commands, coding conventions, and important workflows. Anthropic recommends keeping these instructions concise; the documentation suggests targeting fewer than roughly 200 lines because larger files consume more context and are followed less reliably.
Create:
CLAUDE.mdwith:
# Project
This repository implements the Spring Boot case study defined in:
`case/case-study.pdf`
The PDF is the primary source of truth.
Never invent missing business requirements.
If a requirement is ambiguous, document the assumption before implementation.
@docs/ROLE.md
# Technology
- Java 25
- Spring Boot 4
- Maven
- Spring Data JPA
- PostgreSQL
- Docker
- JUnit
# Architecture
Use clear boundaries between:
- Controller
- Application / Service
- Domain
- Persistence
- Infrastructure
Controllers must not contain business logic.
Controllers must not access repositories directly.
Do not expose JPA entities directly through REST APIs.
Prefer constructor injection.
# Workflow
For non-trivial work:
1. Understand the requirement.
2. Identify the requirement ID.
3. Inspect the relevant code.
4. Create a short implementation plan.
5. Implement the smallest complete change.
6. Add tests.
7. Run tests.
8. Review the implementation.
# Case Study
Before implementation:
- Analyze the PDF.
- Create `docs/CASE_REQUIREMENTS.md`.
- Assign IDs such as FR-001, BR-001 and NFR-001.
- Keep implementation traceable to those IDs.
# Database
Use database migrations.
Do not rely on Hibernate automatic schema mutation for production.
# Testing
Business rules require automated tests.
Include:
- happy paths
- validation failures
- boundary cases
- persistence behavior
- concurrency behavior where required
# Definition of Done
A requirement is complete when:
- the requirement is implemented
- relevant tests pass
- error cases are handled
- no unrelated code is changed
- no unresolved TODO is introducedNotice this line:
@docs/ROLE.mdClaude Code supports importing additional instruction files through the @path syntax. Imported content is expanded into the startup context.
Instead of manually creating CLAUDE.md, Claude Code can analyze the existing project and generate an initial version automatically.
First, open a terminal in the root directory of the Spring Boot project:
cd C:\Projects\spring-boot-claude-case-studyThe directory should already contain at least the basic project structure:
spring-boot-claude-case-study/
│
├── pom.xml
├── src/
│ ├── main/
│ └── test/
│
├── case/
│ └── case-study.pdf
│
└── README.mdThen start Claude Code:
claudeInside Claude Code, run:
/initClaude analyzes the repository and automatically creates an initial:
CLAUDE.mdThe workflow is therefore:
Spring Boot Project
│
▼
claude
│
▼
/init
│
▼
Claude analyzes repository
│
▼
CLAUDE.mdFor example:
> /init
Analyzing your codebase...
Reading pom.xml...
Inspecting src/main/java...
Inspecting src/test/java...
Checking project documentation...
Creating CLAUDE.md...The resulting CLAUDE.md may look conceptually similar to:
# Project Overview
This is a Spring Boot application built with Maven.
## Build
```bash
./mvnw clean verifyThat makes this implementation simple, although we will improve its token behavior in Implementation 2.
Step 2 — Create ROLE.md
Create:
docs/ROLE.md# Role — Principal Spring Boot Engineer
Act as a Principal Engineer responsible for delivering a production-quality
Spring Boot solution.
Your responsibilities are:
- translate business requirements into technical requirements
- identify ambiguous requirements
- challenge unnecessary complexity
- define clear architectural boundaries
- identify transaction risks
- identify concurrency risks
- identify persistence problems
- identify security problems
- require appropriate automated testing
## Architecture Principles
Prefer the simplest architecture that satisfies the requirements.
Do not introduce:
- microservices
- message brokers
- distributed caching
- event sourcing
- unnecessary design patterns
unless the case requirements justify them.
## Spring Boot Principles
Prefer:
- constructor injection
- Bean Validation
- explicit DTOs
- centralized exception handling
- explicit transaction boundaries
- database migrations
- structured logging
## Persistence
Review:
- indexes
- transaction boundaries
- N+1 problems
- optimistic locking
- pessimistic locking
- concurrent updates
## Decision Making
For important architectural decisions document:
1. Problem
2. Alternatives
3. Decision
4. Reason
5. Trade-offs
6. ConsequencesThis is now imported by CLAUDE.md.
Every session therefore starts with the role available.
Step 3 — Create the Case Analysis Skill
Create:
.claude/skills/analyze-case/SKILL.md---
name: analyze-case
description: Analyze the Spring Boot case study before implementation.
disable-model-invocation: true
---
Analyze:
`case/case-study.pdf`
Do not implement source code.
Extract:
1. Functional requirements
2. Business rules
3. Non-functional requirements
4. Entities
5. Relationships
6. API requirements
7. Validation requirements
8. Persistence requirements
9. Transaction requirements
10. Concurrency requirements
11. Security requirements
12. Testing expectations
13. Ambiguities
14. Assumptions
Assign IDs:
- FR-001...
- BR-001...
- NFR-001...
Write the result to:
`docs/CASE_REQUIREMENTS.md`
Do not invent requirements unsupported by the PDF.I use:
disable-model-invocation: truebecause I want this workflow to run only when I explicitly execute:
/analyze-caseClaude Code currently supports this field specifically for manually controlled workflows.
Step 4 — Create the Implementation Skill
Create:
.claude/skills/implement-feature/SKILL.md---
name: implement-feature
description: Implement one case-study requirement with tests.
disable-model-invocation: true
---
Implement requirement:
$ARGUMENTS
Before implementation:
1. Read the requirement from `docs/CASE_REQUIREMENTS.md`.
2. Inspect only relevant source files.
3. Identify affected components.
4. Create a short implementation plan.
5. Identify required tests.
Then implement the smallest complete solution.
Rules:
- do not implement unrelated requirements
- do not perform unrelated refactoring
- preserve existing behavior
- add automated tests
- handle failure cases
- follow the project architecture
After implementation:
1. Run relevant tests.
2. Report changed files.
3. Explain how the requirement was satisfied.
4. Report unresolved risks.Claude Code makes text passed after the skill command available as $ARGUMENTS.
Therefore:
/implement-feature FR-003becomes a repeatable engineering workflow.
Step 5 — Create the Verification Skill
Create:
.claude/skills/verify-project/SKILL.md---
name: verify-project
description: Verify the completed Spring Boot case study.
disable-model-invocation: true
---
Verify the complete project.
Check:
1. Compilation
2. Unit tests
3. Integration tests
4. Requirement coverage
5. Input validation
6. Exception handling
7. Transaction boundaries
8. Persistence behavior
9. Concurrency behavior
10. Security concerns
11. Dead code
12. TODOs
13. Unused dependencies
Run the appropriate Maven commands.
Return:
## Build
## Tests
## Requirement Coverage
## Architecture Issues
## Remaining Risks
## Result
PASS or FAILStep 6 — Start Claude
From the project root:
claudeCheck which instructions are loaded:
/contextClaude Code’s /context command displays the current context usage, including loaded CLAUDE.md and memory files.
Step 7 — Analyze the PDF
Run:
/analyze-caseClaude should produce something similar to:
# Case Requirements
## Functional Requirements
### FR-001
The system shall return inventory information by SKU.
### FR-002
The system shall allow inventory reservation.
### FR-003
The system shall allow inventory release.
## Business Rules
### BR-001
Available inventory must never become negative.
### BR-002
Reservation quantity must be greater than zero.
## Non-Functional Requirements
### NFR-001
Concurrent reservations must not cause overselling.
### NFR-002
Database schema changes must be version controlled.Instead of working from a large PDF throughout the entire development process, we now have a concise engineering specification.
Step 8 — Create the Architecture
Now tell Claude:
Read docs/CASE_REQUIREMENTS.md.
Design the minimum production-quality Spring Boot architecture required
for this case study.
Write it to docs/ARCHITECTURE.md.
Do not implement source code yet.Example architecture:
HTTP
│
▼
InventoryController
│
▼
InventoryService
│
▼
InventoryRepository
│
▼
PostgreSQLPossible package structure:
com.example.inventory
│
├── controller
├── dto
├── service
├── domain
├── repository
├── exception
└── configurationStep 9 — Create the Implementation Plan
Prompt:
Create docs/IMPLEMENTATION_PLAN.md.
Break the project into small vertical slices.
Every task must reference its FR, BR or NFR IDs.
Do not implement anything yet.Example:
# Implementation Plan
## Phase 1
Project bootstrap and database configuration.
Requirements:
NFR-002
## Phase 2
Inventory query endpoint.
Requirements:
FR-001
## Phase 3
Inventory reservation.
Requirements:
FR-002
BR-001
BR-002
## Phase 4
Concurrency protection.
Requirements:
NFR-001
## Phase 5
Inventory release.
Requirements:
FR-003
## Phase 6
Final verification.Step 10 — Implement One Requirement at a Time
Now development becomes controlled.
/implement-feature FR-001Then:
/implement-feature FR-002Then:
/implement-feature NFR-001This is significantly better than:
Implement the entire PDF.because every change remains tied to an explicit requirement.
Implementation 1 Workflow
The complete flow is:
case-study.pdf
↓
/analyze-case
↓
CASE_REQUIREMENTS.md
↓
ARCHITECTURE.md
↓
IMPLEMENTATION_PLAN.md
↓
/implement-feature FR-001
↓
Tests
↓
/implement-feature FR-002
↓
Tests
↓
/verify-projectThis implementation is already useful.
However, there is one problem.
Both:
CLAUDE.mdand:
ROLE.mdare entering the main context.
For a larger project, we can do better.
Implementation 2 — Advanced and Token-Efficient Setup
The second implementation separates always-needed knowledge from task-specific knowledge.
Our new architecture becomes:
CLAUDE.md
│
Small always-on context
│
┌───────────────┼────────────────┐
│ │ │
Rules Skills Agents
│ │ │
Path-specific On-demand Specialized role
│
▼
Separate Context
│
▼
RTK
│
Compact shell outputClaude Code supports path-scoped rules under .claude/rules/, reusable skills under .claude/skills/, and project subagents under .claude/agents/.
Our project now becomes
spring-boot-claude-case-study/
│
├── CLAUDE.md
│
├── case/
│ └── case-study.pdf
│
├── docs/
│ ├── ROLE.md
│ ├── CASE_REQUIREMENTS.md
│ ├── ARCHITECTURE.md
│ └── IMPLEMENTATION_PLAN.md
│
├── .claude/
│ │
│ ├── agents/
│ │ └── principal-spring-engineer.md
│ │
│ ├── rules/
│ │ ├── java.md
│ │ └── testing.md
│ │
│ └── skills/
│ ├── analyze-case/
│ │ └── SKILL.md
│ ├── architecture-review/
│ │ └── SKILL.md
│ ├── implement-feature/
│ │ └── SKILL.md
│ └── verify-project/
│ └── SKILL.md
│
├── src/
├── pom.xml
└── README.mdStep 1 — Reduce CLAUDE.md
In this implementation, remove:
@docs/ROLE.mdbecause imported files also consume startup context.
Use a smaller CLAUDE.md
# Project
Implement the case study defined in:
`case/case-study.pdf`
The PDF is the source of truth.
Never invent business requirements.
# Technology
- Java 25
- Spring Boot 4
- Maven
- PostgreSQL
- Spring Data JPA
- Docker
# Workflow
Before coding:
1. identify the requirement ID
2. understand the requirement
3. inspect relevant code
4. create a short plan
5. implement
6. test
7. verify
Do not implement multiple unrelated requirements in one change.
# Architecture
Controllers handle HTTP concerns only.
Business logic belongs in services/domain components.
Repositories handle persistence only.
Do not expose JPA entities through REST APIs.
# Case Study
Requirements are tracked in:
`docs/CASE_REQUIREMENTS.md`
Architecture is documented in:
`docs/ARCHITECTURE.md`Step 2 — Create Path-Specific Java Rules
Create:
.claude/rules/java.md---
paths:
- "src/main/**/*.java"
---
# Java Rules
- Prefer constructor injection.
- Avoid field injection.
- Use explicit request and response DTOs.
- Validate external input.
- Keep transaction boundaries explicit.
- Avoid unnecessary abstractions.
- Avoid catch-all Exception handling.
- Never expose JPA entities through public APIs.These rules are relevant when Claude works with matching Java files instead of polluting every task with Java-specific guidance.
Claude Code supports paths frontmatter for this exact type of conditional rule.
Step 3 — Create Testing Rules
Create:
.claude/rules/testing.md---
paths:
- "src/test/**/*.java"
---
# Testing Rules
- Test behavior rather than implementation details.
- Every business rule must have automated coverage.
- Include negative cases.
- Avoid unnecessary mocking.
- Prefer integration tests when framework or database behavior matters.
- Concurrency requirements require concurrency tests.Step 4 — Convert the Principal Engineer Role into a Subagent
Instead of forcing ROLE.md into every conversation, create a specialized agent.
.claude/agents/principal-spring-engineer.md---
name: principal-spring-engineer
description: Reviews Spring Boot requirements, architecture and implementation from a Principal Engineer perspective.
tools: Read, Grep, Glob
model: sonnet
---
You are the Principal Spring Boot Engineer for this project.
Before performing an architectural review, read:
`docs/ROLE.md`
Evaluate:
- requirement coverage
- architecture boundaries
- domain design
- persistence
- transactions
- concurrency
- security
- performance
- testability
- unnecessary complexity
Do not modify source code during an architecture review.
Return:
## Findings
## Risks
## Recommended Changes
## Trade-offs
## Missing TestsProject-specific subagents are stored under:
.claude/agents/and can be shared with the repository. They execute in their own context rather than filling the primary conversation with every file they inspect.
Step 5 — Isolate PDF Analysis
Now improve:
.claude/skills/analyze-case/SKILL.md---
name: analyze-case
description: Analyze the Spring Boot case-study PDF.
disable-model-invocation: true
context: fork
agent: Explore
---
Analyze:
`case/case-study.pdf`
Extract:
- functional requirements
- business rules
- non-functional requirements
- entities
- APIs
- validation
- persistence
- transactions
- concurrency
- security
- tests
- ambiguities
- assumptions
Assign:
FR-001...
BR-001...
NFR-001...
Write the result to:
`docs/CASE_REQUIREMENTS.md`
Do not implement application code.
Do not invent requirements.The important part is:
context: forkClaude Code can execute a skill in a separate subagent context. The result returns to the primary conversation, while the large intermediate exploration stays isolated.
For a PDF analysis or a large repository investigation, this is extremely useful.
Step 6 — Add an Architecture Review Skill
Create:
.claude/skills/architecture-review/SKILL.md---
name: architecture-review
description: Review the proposed Spring Boot architecture.
disable-model-invocation: true
context: fork
agent: principal-spring-engineer
---
Review:
- docs/CASE_REQUIREMENTS.md
- docs/ARCHITECTURE.md
- the current project structure
Evaluate:
1. Requirement coverage
2. Layer boundaries
3. Domain boundaries
4. Persistence
5. Transactions
6. Concurrency
7. Security
8. Performance
9. Testability
10. Unnecessary complexity
Return:
## Critical Issues
## Major Issues
## Minor Issues
## Recommended Changes
## Missing TestsNow architecture review becomes:
/architecture-reviewand runs using our Principal Engineer agent.
Step 7 — Keep Implementation in the Main Context
Our implementation skill can remain:
/implement-feature FR-002I deliberately do not automatically fork every implementation task.
When Claude is actively changing several related project files, keeping the coding work in the current context can be useful.
Use isolation mainly for:
PDF research
repository exploration
architecture review
large verificationrather than blindly applying it everywhere.
Step 8 — Isolate Final Verification
Update:
.claude/skills/verify-project/SKILL.md---
name: verify-project
description: Perform final case-study verification.
disable-model-invocation: true
context: fork
agent: general-purpose
---
Verify the project.
Check:
- Maven build
- automated tests
- requirement coverage
- transaction boundaries
- concurrency behavior
- validation
- error handling
- architecture violations
- TODOs
- unused code
- unused dependencies
Compare the implementation against:
`docs/CASE_REQUIREMENTS.md`
Return:
## Build
## Tests
## Requirement Traceability
## Problems
## Remaining Risks
## ResultAdding RTK — Rust Token Killer
We have optimized instructions and context.
There is one more source of token consumption:
terminal output.
For example:
git status
git diff
git log
mvn test
grep
find
dockercan produce large amounts of text.
This is where RTK — Rust Token Killer comes in.
RTK is a CLI proxy that filters and compresses command output before the result reaches the model. The project explicitly notes that its percentage claims refer to shell-output reduction, not an equivalent percentage reduction in your Claude subscription usage or bill. Its own token counters are also estimates rather than an exact model tokenizer
Installing RTK on Windows
Current RTK releases support a native Windows Claude Code hook, so a recent version does not require WSL for automatic rewriting.
The easiest installation is:
winget install rtk-ai.rtkAlternatively, download:
rtk-x86_64-pc-windows-msvc.zipfrom the RTK GitHub releases.
Get Noyan Germiyanoğlu’s stories in your inbox
Join Medium for free to get updates from this writer.
Extract:
rtk.exefor example to:
C:\Users\Noyan\.local\bin\rtk.exeThen add:
C:\Users\Noyan\.local\binto your user PATH
Verify RTK
Open a new PowerShell window.
Run:
rtk --versionThen:
rtk gainrtk gain is also a useful check that you installed Rust Token Killer rather than another unrelated tool with the same rtk name
Connect RTK to Claude Code
Run:
rtk init -gYou may see:
Patch existing C:\Users\Noyan\.claude\settings.json? [y/N]Choose:
yThis allows RTK to add its Claude Code hook.
Telemetry may also be offered:
Enable anonymous telemetry? [y/N]This is optional and unrelated to whether token filtering works.
If you prefer it disabled:
NYou can also disable it later:
rtk telemetry disableVerify the Claude Hook
Run:
rtk init --showA successful configuration looks similar to:
rtk Configuration:
[ok] Hook: rtk hook claude
[ok] RTK.md: C:\Users\Noyan\.claude\RTK.md
[ok] Global (~/.claude/CLAUDE.md): @RTK.md reference
[ok] settings.json: RTK hook configuredRestart Claude Code after installing the hook.
How RTK Works
Without RTK:
Claude
│
│ git status
▼
Shell
│
▼
Git
│
│ large raw output
▼
Claude ContextWith RTK:
Claude
│
│ git status
▼
PreToolUse Hook
│
▼
RTK
│
▼
Git
│
▼
Filter / Group / Deduplicate / Truncate
│
▼
Compact output
│
▼
Claude ContextWith the hook installed, Claude can still request:
git statuswhile the hook transparently rewrites supported shell operations through RTK.
The same project currently lists ecosystems including Git, Docker, Maven and Gradle among its supported command families.
One Important RTK Limitation
RTK’s Claude Code hook operates on shell/Bash tool calls.
Claude Code’s built-in:
Read
Grep
Globtools do not pass through the RTK shell hook.
Therefore:
Claude built-in Read
│
└── RTK does not intercept itwhile:
Claude shell command
│
▼
RTK hook
│
▼
filtered outputRTK should therefore be treated as another optimization layer, not as the entire token-management strategy.
Test RTK with the Spring Boot Project
Start Claude:
claudeAsk:
Check the current git status.Then:
Show the current changes.Then:
Run the relevant Maven tests.Exit Claude and run:
rtk gainFor more history:
rtk gain --historyThis gives you visibility into how much command output RTK has filtered.
Complete Professional Workflow
Now both implementations come together.
Implementation 1 — Simple Professional Setup
1. Initialize the Project
/init2. Check Initial Context
/context3. Analyze the Case Study
/analyze-case4. Check Context After Case Analysis
/context5. Compact Case Analysis Context — If Necessary
/compact preserve extracted FR-, BR- and NFR- requirements, ambiguities, assumptions and generated CASE_REQUIREMENTS.md6. Clear Context
/clear7. Implement FR-001
/implement-feature FR-0018. Check FR-001 Context
/context9. Compact FR-001 Context — If Necessary
/compact preserve FR-001, implementation decisions, changed files, failing tests, unresolved risks and next action10. Clear Context
/clear11. Implement FR-002 and Business Rules
/implement-feature FR-002 BR-001 BR-00212. Check FR-002 Context
/context13. Compact FR-002 Context — If Necessary
/compact preserve FR-002, BR-001, BR-002, implementation decisions, changed files, failing tests, unresolved risks and next action14. Clear Context
/clear15. Implement NFR-001
/implement-feature NFR-00116. Check NFR-001 Context
/context17. Compact NFR-001 Context — If Necessary
/compact preserve NFR-001, locking strategy, transaction decisions, concurrency tests, changed files, failing tests and next action18. Clear Context
/clear19. Implement FR-003
/implement-feature FR-00320. Check FR-003 Context
/context21. Compact FR-003 Context — If Necessary
/compact preserve FR-003, implementation decisions, changed files, failing tests, unresolved risks and next action22. Clear Context
/clear23. Verify the Project
/verify-project24. Check Verification Context
/context25. Compact Verification Context — If Necessary
/compact preserve build results, test results, requirement coverage, failures, unresolved issues and next action26. Exit Claude Code
/exit27. Run Maven Verification
.\mvnw.cmd clean verify28. Check Git Status
git status29. Check Git History
git historyImplementation 2 — Advanced and Token-Efficient Setup
1. Verify RTK Integration
rtk init --show2. Start Claude Code
claude3. Initialize the Project
/init4. Check Initial Context
/context5. Analyze the Case Study in an Isolated Context
/analyze-case6. Check Context After Case Analysis
/context7. Clear Context
/clear8. Run Architecture Review
/architecture-review9. Check Architecture Review Context
/context10. Compact Architecture Review Context — If Necessary
/compact preserve requirement IDs, architecture decisions, review findings, transaction decisions, concurrency decisions, unresolved risks and next action11. Clear Context
/clear12. Implement FR-001
/implement-feature FR-00113. Check FR-001 Context
/context14. Compact FR-001 Context — If Necessary
/compact preserve FR-001, implementation decisions, changed files, test results, failing tests, unresolved risks and next action15. Clear Context
/clear16. Implement FR-002 and Business Rules
/implement-feature FR-002 BR-001 BR-00217. Check FR-002 Context
/context18. Compact FR-002 Context — If Necessary
/compact preserve FR-002, BR-001, BR-002, implementation decisions, transaction boundaries, changed files, failing tests, unresolved risks and next action19. Clear Context
/clear20. Implement NFR-001
/implement-feature NFR-00121. Check NFR-001 Context
/context22. Compact NFR-001 Context — If Necessary
/compact preserve NFR-001, locking strategy, transaction decisions, concurrency tests, changed files, failing tests, unresolved risks and next action23. Clear Context
/clear24. Implement FR-003
/implement-feature FR-00325. Check FR-003 Context
/context26. Compact FR-003 Context — If Necessary
/compact preserve FR-003, implementation decisions, changed files, test results, unresolved risks and next action27. Clear Context
/clear28. Verify the Project in an Isolated Context
/verify-project29. Check Verification Context
/context30. Compact Verification Context — If Necessary
/compact preserve build results, test results, requirement coverage, failures, unresolved risks and next action31. Exit Claude Code
/exit32. Check RTK Token Savings
rtk gain33. Check RTK Savings History
rtk gain --history34. Run Maven Verification
.\mvnw.cmd clean verify35. Check Git Status
git status36. Check Git History
git log --oneline🎯 Conclusion
Using Claude Code for a Spring Boot case study becomes much more effective when the workflow is structured instead of relying on one large prompt.
Rather than asking Claude to read a PDF and implement everything at once, we can separate the work into clear stages:
/init
/analyze-case
/architecture-review
/implement-feature
/verify-projectThis gives us a workflow that is:
- structured
- repeatable
- easier to review
- easier to debug
- requirement-driven
- more token-efficient
- closer to a real engineering process
CLAUDE.md defines the project-wide rules, while Skills provide reusable workflows for tasks such as case analysis, feature implementation, and verification.
In the advanced setup, we can improve the process further by using:
.claude/rulesfor path-specific instructions.claude/agentsfor specialized roles such as a Principal Spring Boot Engineercontext: forkfor isolated analysis and verification/contextto monitor context usage/compactto reduce long-running conversations/clearwhen moving to a new phase- RTK to reduce unnecessary shell output sent back to Claude
The main idea is not to make Claude generate more code.
It is to make Claude work inside a controlled engineering workflow.
Instead of:
Read this case study and implement everything.
we can work with:
Analyze the requirements, review the architecture, implement one requirement at a time, verify the result, and keep the context under control
This makes Claude Code much more useful for real Spring Boot case studies, especially when the project contains many requirements, business rules, tests, architectural decisions, and long development sessions.
Happy Coding!
🤝 Connect with Me
- GitHub: My Github Profile
- LinkedIn: My LinkedIn Profile
- Stack Overflow: My Stack Overflow Profile









