CodeSpeak Quick Start: Build a Project From Scratch
This quick start guide will walk you through creating a CodeSpeak project from scratch. We will build a project that runs with Python and uv.
Prerequisites
Install uv
CodeSpeak uses uv as its Python package manager.
curl -LsSf https://astral.sh/uv/install.sh | shRestart your terminal (or run source ~/.bashrc / source ~/.zshrc), then verify:
uv --versionGet an Anthropic API key
CodeSpeak is BYOK (Bring Your Own Key). Get an API key at platform.claude.com/settings/keys.
You can provide the key in two ways:
- Paste it when CodeSpeak prompts you (this creates an
.env.localfile in your project directory) - Set the environment variable:
export ANTHROPIC_API_KEY=<your-key>
Install CodeSpeak
uv tool install codespeak-cliVerify the installation:
codespeak --versionLog in
codespeak loginLog in with Google or email/password.
Create new project
# New project dir
mkdir my-project
cd my-project
# Initialise a CodeSpeak project
codespeak initCodeSpeak will create a directory structure and initialise a git repo:
my-project
โโโ .codespeak # Internal state used by CodeSpeak
โโโ .git
โโโ .gitignore
โโโ codespeak.json # CodeSpeak project configuration
โโโ spec
โโโ main.cs.md # A sample spec, edit to specify what you want to build Edit the spec
Open spec/main.cs.md in your favourite editor, and type away. Here's an example that may be fun to start with:
# Funny Geese Demo
The app animates geese (๐ชฟ) bouncing around the screen, tumbling.
## UX
A click on a free space creates a new medium-sized goose flying in a random direction.
A click on a goose makes it bigger. When a goose gets too big it disappears with an animated pop.
## Technology
- Use pure HTML + JS
- Use Tailwind CSS for stylingNow, it's time to build your project:
codespeak build # You will be asked for an Anthropic API keyWhen the build is finished, you'll see a message in the terminal:
โญโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ CodeSpeak Progress โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฎ
โ โ Process specification (0. โ
โ โ Extract technical requirements from spec (13.1s) โ
โ โ Validating required tools (0.5s) โ
โ โ Detect dependencies on external APIs and services (7.2s) - No external APIs found โ
โ โ Check configuration of external APIs (0.0s) - No external APIs found โ
โ โ Setup project (0.0s) โ
โ โ Implement specification (56.1s) โ
โ โฐโ โ Collect context & plan work (55.8s) โ
โ โ Generate CLI usage examples (0.0s) - No applicable actions โ
โ โ Run sanity checks and fix problems with code (0.0s) โ
โ โฐโ โ Running validation (pass 1) (0.0s) โ
โ โ Analyze source code and plan tests (0.0s) โ
โ โ Generate and fix tests (0.0s) โ
โ App built successfully. โ
โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ
An HTML file will be created in the project dir, you can open it with your browser:
.
โโโ codespeak.json
โโโ index.html # <--- open this file
โโโ spec
โโโ main.cs.mdEnjoy the flying geese!
Adding a new feature
To improve your project, you can edit the spec and build again. CodeSpeak will turn the diff in the spec into a diff in the code. For example, let's add a slider to slow down/speed up the geese:
A click on a free space creates a new medium-sized goose flying in a random dire
A click on a goose makes it bigger. When a goose gets too big it diappears with an animated pop.
+## UI
+
+The bottom-right corner has a speed slider:
+- in the middle by default
+- moving the slider to the left slows the geese down
+- moving to the right speeds them up
+
## Technology
- Use pure HTML + JSNow, let's build again:
codespeak buildThe code has been updated. Check out the new version.
Adding a Django back-end
Let's go for something more serious than just a self-contained HTML page:
A click on a goose makes it bigger. When a goose gets too big it diappears with
## UI
+### Speed Slider
+
The bottom-right corner has a speed slider:
- in the middle by default
- moving the slider to the left slows the geese down
- moving to the right speeds them up
+### Stats
+
+In the top-right corner, a leaderboard of all players is displayed. For exach player, it shows:
+- name
+- number of geese created
+- number of geese popped ๐
+
+Every player gets a random name from a list of names built by combining a cute adjective with an animal name, e.g. "Huggable Alpaca" and an emoji avatar, e.g. ๐ฆ.
+
+Stats are updated in real time.
+
## Technology
-- Use pure HTML + JS
+- HTML + JS
+- Django
- Use Tailwind CSS for stylingBuild the project:
codespeak buildNow, you can start the Django server:
uv run manage.py runserverOpen the page in your browser, the URL is in your console (usually http://127.0.0.1:8000).
Remove a feature
If something doesn't seem like a good idea, edit the spec to remove it:
The bottom-right corner has a speed slider:
In the top-right corner, a leaderboard of all players is displayed. For exach player, it shows:
- name
- number of geese created
-- number of geese popped ๐
Every player gets a random name from a list of names built by combining a cute adjective with an animal name, e.g. "Huggable Alpaca" and an emoji avatar, e.g. ๐ฆ.Build the project to see the changes:
codespeak build --skip-testsFixing bugs
If you see that something is not right, first try to fix the spec:
In the top-right corner, a leaderboard of all players is displayed. For exach pl
- number of geese created
Every player gets a random name from a list of names built by combining a cute adjective with an animal name, e.g. "Huggable Alpaca" and an emoji avatar, e.g. ๐ฆ.
+Match emojis to the animals used (don't use animals that don't have emojis).
Stats are updated in real time.Let's see if it helps:
codespeak build --skip-testsGreat! The bug is fixed for new users.
To reset the DB in a django app (old emojis are probably stuck from previous runs):
python manage.py flushFix bugs with Code Change Requests
Let's say we see that the number of geese is computed incorrectly for some reason. This is not a problem with the spec, it's a bug in the implementation. To fix it, tell CodeSpeak what's wrong in a Code Change Request:
codespeak change -m "Number of geese displayed is off by 1"CodeSpeak will try its best to fix the bug.
See Also
- CodeSpeak in Mixed Projects: Add a Feature to Django Oscar
Walk through adding a dashboard report to Django Oscar using CodeSpeak mixed mode. - CodeSpeak Quick Start: Work in an Existing Project
Walk through adding a feature to an existing code base using CodeSpeak mixed mode.