Skip to content

Setup

Setup

Make the project folder, give Claude Code the brief, add the data, and let Claude set up Python.

Nothing is built in this lesson. You set up what every later step depends on: the project folder, the brief that tells Claude Code what the system is, the tools it needs, and the council's public data.

Steps 1 and 3 are done in VS Code and your browser. Every other step is a prompt you paste into Claude Code, in order.

By the end of this lesson

A folder containing CLAUDE.md, a .venv with pandas and openpyxl, a data/ folder with the contract rules, three months of spend, the Contracts Finder export and four committee papers, and empty .claude/skills, .claude/agents, scripts and outputs folders.

Before you start

Two tools are needed for the whole guide. Install anything missing, then tick it off.

PrerequisiteVS Code is installed

Download VS Code from code.visualstudio.com and install it.

Open it once to check that it starts. You will work in it for the whole guide.

PrerequisiteClaude Code is installed and signed in

Install Claude Code by following the installation steps in the Claude Code docs.

Open a terminal, type claude and press enter, then sign in when it asks. Type /exit when you're done.

Steps

Step 1.1Make a folder, open it, and start Claude Code

Everything lives in one folder, and Claude Code only ever looks at the folder you start it in.

  1. Open VS Code.
  2. Choose File › Open Folder.
  3. Go to your Desktop, click New Folder, and name it procurement-audit-planner.
  4. Select it and click Open.
  5. Choose View › Terminal to open a panel at the bottom.
  6. Type claude in that panel and press enter.

What to expect

  • VS Code shows the empty procurement-audit-planner folder in the left-hand panel.
  • Claude Code is running in the terminal panel at the bottom. Every prompt from now on goes there.

What you should see after step 1.1

Illustration, not a screenshot. Your file names and counts may differ.
Step 1.2Hand over the project brief

CLAUDE.md is the brief. Claude Code reads it at the start of every session in this folder.

It describes the whole system: the problem it solves, the data sources, how the parts fit together, and a specification for each skill, each sub-agent and the agent team. Later prompts say “described in CLAUDE.md”, and this is where Claude looks.

It also fixes the rules that hold at every step. Python computes every number. Every quote, figure and rating traces to a source. Outputs describe risk indicators to investigate, never wrongdoing.

PromptCreates CLAUDE.md
Create a file called CLAUDE.md in this folder with exactly the content between the two marker lines below. Do not add, remove or reword anything, and do not include the marker lines.

----- BEGIN CLAUDE.md -----
# CLAUDE.md: Procurement Audit Planning Agent (West Berkshire Council)

An agentic system that plans an internal audit of procurement for West Berkshire
Council from its public data: it turns the council's purchasing rulebook into
testable rules, analyses the full spend population against them, folds in past
audit history, rates the risks, and produces a complete, cross-checked audit
planning pack for a human auditor to approve.

This file describes the ENTIRE target system. Where this file is silent,
PromptThen ask
What do you know about this project?

What to expect

  • Claude writes CLAUDE.md and confirms it.
  • Its answer summarises the system and its design principles, and says what is still missing, such as the data.

What you should see after step 1.2

Illustration, not a screenshot. Green files are new in this step. Your file names and counts may differ.
Step 1.3Download the data folder

The system works from four kinds of public data: the council's Contract Rules, three months of spend over £500, its Contracts Finder notices, and four Governance Committee papers.

They come as one folder called data, with the exact file names the skills and agents expect. The same files are in the course repository if you would rather take them from there.

  1. Download data.zip (2.2 MB).
  2. Unzip it. You get a folder called data.
  3. Move that data folder into your procurement-audit-planner folder, next to CLAUDE.md. You can drag it onto the left-hand panel in VS Code.

What to expect

  • The left-hand panel in VS Code shows a folder called data, holding contract-rules.pdf, contracts.csv and two folders, spend and committee.
  • spend holds three Excel workbooks and committee holds four PDFs.

What you should see after step 1.3

Illustration, not a screenshot. Green files are new in this step. Your file names and counts may differ.
Step 1.4Set up Python and check the data

Claude Code installs the tools it needs when you ask. This is the first step that needs them: Python with pandas and openpyxl for the spend workbooks, and pdftotext for the PDFs.

Real data rarely matches a brief exactly. Finding the differences now stops the agents failing later on a file they didn't expect.

Asking for aggregates only keeps whole datasets out of Claude's context window, one of the brief's rules.

PromptPaste into Claude Code
First set up the tools this project needs. Create a Python virtual environment in .venv with pandas and openpyxl, and list both in requirements.txt. If pdftotext and pdfinfo (from poppler) aren't installed, install poppler with the right package manager for this computer.

Then look at data/ and compare it with the Data sources table in CLAUDE.md. Inspect the files with .head(), .info() and aggregates only; never print whole tables.

Report: each expected file present or missing; the real format of the spend workbooks (sheet name, which row holds the header, date type, row count); how many contracts.csv rows belong to the council; and every mismatch with CLAUDE.md. Don't change any file.

What to expect

  • Claude Code asks your permission before it installs anything. Approve each request.
  • A short list of differences, for example that the header row sits on a different line in one workbook.
  • If Claude finds a real mismatch with the brief, decide whether to fix the data or the brief before moving on.
Claude Code · replay
> First set up the tools this project needs…
● Bash(python3 -m venv .venv && .venv/bin/pip install pandas openpyxl)
● Bash(which pdftotext pdfinfo)
● Bash(find data -type f | sort)
● Bash(.venv/bin/python -c '…profile each workbook with .head() and .info()…')
3 workbooks · sheet 'Data to publish' · header on row 1 in one file, row 2 in the others
Date column already datetime · 10,607 rows in total
contracts.csv: 150 rows, 141 for the council under 3 spellings
Every file CLAUDE.md lists is present. Two things matter for later: the header row moves between workbooks, and about a fifth of spend rows name the supplier only as 'Redacted'.
Shortened from one real run. Your counts will differ with different months of data.

What you should see after step 1.4

Illustration, not a screenshot. Green files are new in this step. Your file names and counts may differ.
Step 1.5Create the project folders

Every skill, agent, script and output has a fixed home. Creating the folders now means each later step only adds files.

.claude/skills/ holds instructions Claude can follow. .claude/agents/ holds the agents: the sub-agents first, then the team in lesson 4. scripts/ holds the Python the spend analyst writes and, later, the QA checks. outputs/ holds everything the system produces.

A folder whose name starts with a dot is hidden in Finder and File Explorer. VS Code shows it in the left-hand panel.

PromptPaste into Claude Code
Create four empty folders in this project: .claude/skills, .claude/agents, scripts and outputs.

What to expect

  • Claude asks permission before creating them. Say yes.
  • The four folders appear in VS Code's left-hand panel.

What you should see after step 1.5

Illustration, not a screenshot. Green files are new in this step. Your file names and counts may differ.

Check

A few questions on the ideas behind this lesson.

1. When does Claude Code read CLAUDE.md?

What you have built so far

1 of 11 files

Nothing is built yet, and that is the point. Claude Code now has the brief it reads every session, the public data, the folders each later step writes into, and a Python environment. Everything from here adds files to this folder.

  • ✓ builtThe briefCLAUDE.md
  • not yetTestable rulesoutputs/rules.json
  • not yetSpend indicatorsoutputs/analytics.json
  • not yetAudit historyoutputs/history.json
  • not yetRisk registeroutputs/risk-register.md
  • not yetAuditor decisionsoutputs/auditor-comments.md
  • not yetPlanning memooutputs/planning-memo.md
  • not yetRisk-control matrixoutputs/risk-control-matrix.md
  • not yetAudit programoutputs/audit-program.md
  • not yetChallengesoutputs/challenges.md
  • not yetQA review and sign-offoutputs/review.md