An English-shaped scripting language for LLMs and anyone who wants quick scripts without Python's footguns.
Project description
cr8script
An English-shaped scripting language for LLMs and anyone who wants quick scripts without Python's footguns. One file. No build. No imports. Reads the way you'd describe the work out loud.
Website: cr8script.com -- language tour, animated atlas, and a playable demo.
Quick start
Install from PyPI:
pip install cr8script
cr8script examples/tour.cr8 # the language tour
cr8script # REPL
Or run from a clone -- no install needed:
python3 cr8script.py examples/tour.cr8 # the language tour
python3 cr8script.py # REPL
python3 cr8script.py --test # run the golden suite
Python 3.9+. One file, no dependencies either way.
A taste
let sales = [
{ product: "widget", region: "east", amount: 12.50 },
{ product: "gadget", region: "east", amount: 8.00 },
{ product: "widget", region: "west", amount: 15.00 },
{ product: "doodad", region: "east", amount: 99.00 },
]
let by_product = sales
| group by product
| summarize { total: sum(amount), n: length(items) }
| sort by total descending
for each row in by_product
show f"{row.product}: {row.total} across {row.n} order(s)"
end
doodad: 99 across 1 order(s)
widget: 27.5 across 2 order(s)
gadget: 8 across 1 order(s)
examples/tour.cr8 walks the rest of the language end-to-end.
What makes it different
- Reads like English.
is greater than,is at least,for each,where,sort by. No==,!=,>=,<=. - Honest types. No truthy/falsy.
"5" + 3is an error.5 is "5"is an error.if 0 thenis an error. - Honest decimals.
0.1 + 0.2is exactly0.3. One number type. - No null surprises. Only
nothing. Indexing a missing key returnsnothing; typing the wrong field name is a hard error with a "did you mean" hint. - Immutable by default.
letis forever;varopts into change. - Pipelines as a first-class verb set.
where,sort by,take,map,group by,summarize-- bare names inside resolve to record fields. - Errors that teach. Every error names the line, the value, and a one-line hint.
- LLM-shaped diagnostics.
--check-jsonemits structured{ line, message, hint }so a model can self-correct before running.
For language models
Three files are aimed at agents and the humans wiring them up:
LLMS.md-- condensed grammar + rules sheet. Read this first.AGENTS.md-- system-prompt template, tool definitions, and the self-correction loop spelled out for an integrator.LLM_MAP.md-- typed planning-graph layer that can sit between prompt and.cr8generation.examples/agent_loop/-- a broken.cr8file, the actual--check-jsonJSON output, and the corrected version. The end-to-end demo of cr8 -> diagnostics -> fix.examples/llm_map/-- a first LLM-map prototype and rendered HTML view for the hot air balloon game.
The self-correction loop:
python3 cr8script.py --check-json file.cr8 # structured diagnostics
python3 cr8script.py file.cr8 # run
Status
v1.1. Single-file Python interpreter (cr8script.py, ~2.8k lines):
lexer, parser, tree-walking evaluator, REPL, static checker, ten golden
tests. The language is independent of Python -- only the bootstrap is.
Built-in modules: math, http, time, json, csv. Top-level:
length, sum, count, average, min, max, range, to_text,
to_number, keys, type, assert. Strings support f"..."
interpolation.
Out of scope until pulled by a real use case: regex, file I/O, dates, modules / imports, async. Not on the roadmap: classes (values, not objects).
Layout
cr8script.py single-file interpreter
LLMS.md rules-and-grammar sheet for LLMs
AGENTS.md system-prompt template + agent tool definitions
LLM_MAP.md typed planning-graph format for LLM-first workflows
BENCHMARKS.md benchmark plan focused on tokens-to-correctness
examples/
hello, tour, load_test, make_game, make_mindmap
agent_loop/ broken -> diagnostics -> fixed (the LLM self-correction demo)
llm_map/ JSON planning graph + rendered HTML prototype
api_ingest fetch JSON, summarize, emit CSV
validate list of records -> { ok, errors } per item
report_md structured data -> markdown report
tools/
render_llm_map.py map JSON -> self-contained HTML/SVG view
check_map.py validate map JSON; check map<->code drift
testdata/ golden tests
game.html a small playable demo (output of make_game.cr8)
More
python3 cr8script.py --check file.cr8 # static checks (human output)
python3 cr8script.py --check-json file.cr8 # static checks (JSON output)
python3 cr8script.py --lex file.cr8 # token dump (debugging)
python3 cr8script.py --ast file.cr8 # AST dump (debugging)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file cr8script-1.2.0.tar.gz.
File metadata
- Download URL: cr8script-1.2.0.tar.gz
- Upload date:
- Size: 30.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f553ef7172721f3387a6840dfc2ea5e1e734cbfeecf76a51da893310837cf5bb
|
|
| MD5 |
f03a89423c9499ecc0788bfe6e272fc6
|
|
| BLAKE2b-256 |
33923d65a611631eb56603f564109081d344960eb9f9ecff3658d015649072cf
|
File details
Details for the file cr8script-1.2.0-py3-none-any.whl.
File metadata
- Download URL: cr8script-1.2.0-py3-none-any.whl
- Upload date:
- Size: 30.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
22a9c546615ca31418da3f35574eb47e86bdc4f87fa799481962d5f66bf6fb87
|
|
| MD5 |
b05478651a6e87f26797bf7d64c107d2
|
|
| BLAKE2b-256 |
d9eca66666dc61e3998eef091faff2420e4c2bb6d5ee77173d529412f5ab3c46
|