Software Development with Claude Code
Dani Zysman
AI Curriculum Manager @ DataCamp
/init, then iteratemusic-analytics-api/
app.py # Application entry point
routes.py # API endpoints
models.py # Artist/Album models
analytics.py # Statistics functions
middleware.py # Request logging
config.py # Session settings
CLAUDE.md # <- Project memory file

Rule: If it's longer than a sticky note, it doesn't belong.
> Add error handling to the /artists endpoint.
Done. I've added error handling to /artists (routes.py:9-19):
- Try-except block wrapping retrieval and serialization
- AttributeError handler if the data store isn't initialized
- General exception handler returning error details with 500 status
return jsonify({'error': f'Failed to retrieve artists: {str(e)}'}), 500
> Don't expose exception details to users, that's a security risk. Log internally
and return a generic message. Update CLAUDE.md.
Updated /artists to log errors internally and return a
generic 500 message. CLAUDE.md updated with the convention:
never expose exception details in responses.
Bloated (200+ lines)
# Inventory API
This is an Inventory Management
API built with Flask...
## Full Source Code
### routes.py
from flask import jsonify...
[entire file pasted]
### models.py
[entire file pasted]
## API Documentation
GET /items returns...
Good (15 lines)
# Inventory API
Flask REST API for inventory.
## Commands
- Run: flask run --port 5001
- Test: pytest tests/
## Conventions
- Use type hints
- Keep routes thin
> @routes.py what endpoints does this API have?
API Endpoints (6 GET routes)
Artists
- GET /artists All artists
- GET /artists/<id> Single artist by ID
- GET /artists/<id>/albums Albums for an artist
Albums
- GET /albums All albums
- GET /stats/albums Album popularity statistics
- GET /stats/average-tracks Average track count per album
All endpoints return JSON.
# CLAUDE.md - Music Analytics API A Flask-based REST API for music data analytics, providing endpoints for artists, albums, and statistics. ...## Key Files @routes.py - API endpoint definition @models.py - Artist and Album data models with in-memory store ...
CLAUDE.md gives persistent context. Use @ so Claude always knows your key files.

CLAUDE.md (project, shared)
CLAUDE.local.md (project, personal)
~/.claude/CLAUDE.md (global, personal)
/init andCLAUDE.md → Persistent project contextShift+Tab or /plan → Toggle Plan modethink ... ultrathink → Deep reasoning (5 levels)Software Development with Claude Code