A six-letter word guessing game — like Wordle, but harder.
Built as a fun side project using Claude Code to explore what AI-assisted development looks like end-to-end.
- Guess a valid 6-letter word in 7 tries
- After each guess, tiles reveal how close you were:
- Green — correct letter, correct position
- Yellow — correct letter, wrong position
- Gray — letter not in the word
- Switch between Daily mode (one word per day) and Practice mode (unlimited games)
- Hint Mode highlights words in the word list that are still possible solutions given your guesses
- Hard Mode requires each guess to use all confirmed letters
- React + TypeScript
- Vite for bundling
- Vitest for unit tests
- Cloudflare Pages for deployment
npm install
npm run devThen open http://localhost:5173 in your browser.
npm test # run unit tests
npm run build # production build → dist/The solution pool is derived from dwyl/english-words. Words are filtered through a Python pipeline that excludes past-tense verbs, plurals, proper nouns, and uncommon words.
python3 scripts/build-wordlist.pyThis produces five categorized files under dictionary/words/:
| File | Description |
|---|---|
words_6letter_valid.json |
Common 6-letter words used as puzzle solutions |
words_6letter_past_tense.json |
Regular past-tense verbs ending in -ed (valid guesses only) |
words_6letter_plural.json |
Regular plurals and 3rd-person singular verbs ending in -s/-es (valid guesses only) |
words_6letter_proper_noun.json |
Proper nouns — names, places, etc. (valid guesses only) |
words_6letter_uncommon.json |
Words below the frequency threshold (valid guesses only) |
Words are excluded from the solution pool in order of priority:
- Past tense — regular -ed verbs detected by root lookup (e.g. WALKED → WALK). Words ending in -ied and adjectives like GIFTED or CURSED are kept.
- Plural / 3rd-person — words whose root exists in the dictionary after stripping -s, -es, or -ies.
- Proper nouns — words that appear in
/usr/share/dict/wordsonly in capitalized form, indicating they are names or places. - Uncommon — words with a Zipf frequency below 3.0 (out of 8) as measured by the
wordfreqlibrary. Adjust viaZIPF_THRESHOLDinscripts/build-wordlist.py.
Excluded words are still accepted as valid guesses.
Bug reports, word list suggestions, and feature requests are welcome — please open an issue.
To propose a word list change, edit the relevant _INCLUSIONS or _EXCEPTIONS sets in scripts/build-wordlist.py and open a pull request. The filtering logic and thresholds are documented above.
MIT © michaelkaplan13