▄▄▄▄▄▄▄▄▄▄▄▄
▄██▀░░░░░░░░░░░▀██▄
▄█▀░░░░░░░░░░░░░░░░░▀█▄
█▀░░▄▄ ▄▄░▀█
█░▄▀ ▀▄ ▄▀ ▀▄░█
█░█ ● █ ▄▄ █ ● █░█
█░█▄ ▄▀ █▓▓█ ▀▄ ▄█░█
█░░▀▀▀▀ ▀▓▓▀ ▀▀▀▀░░█
▀█░░░░░░▀▀ ▀▀▀▀ ▀▀░░░░░░█▀
▀█▄░░░░░░░░░░░░░░░░░▄█▀
▄▓▓▓▓▀██▄▄▄▄▄▄▄▄▄▄▄▄██▀▓▓▓▓▄Skuf compiles to native code via C, ships with UglyBoot, and keeps syntax minimal so LLMs can read, write, and reason about your code with fewer tokens and less ambiguity.
Designed from the ground up so AI writes better code, faster.
No curly braces, no semicolons, no `function` keyword. Every construct is short and unambiguous. LLMs spend fewer tokens parsing and generating Skuf than equivalent C, Go, or Java.
Skuf avoids synonyms and syntactic sugar that create branching choices for a model. One loop, one branch, one way to declare a function. Less ambiguity = higher-quality AI code on the first try.
The entire grammar fits in a single context window. An AI agent can internalize the full language spec without retrieval — no documentation lookups needed.
Compiles .skf to C, then to a native binary. No VM, no garbage collector pauses. Your code runs as fast as hand-written C.
@ai annotations, require/ensure contracts, |> pipe operator, structured JSON errors, --explain and --spec output designed for agent consumption.
Compact .skf for AI agents, human-readable .unskf for developers. Same code, two views. ~50-60% token reduction in compact form.
Everything an LLM needs, nothing it doesn't.
mod main
fn main():
>> "Hello from Skuf!"#Safely divide two integers
fn safe_divide(a, b) -> int:
req b != 0
r := a / b
ens r * b == a
~ rresult := 5 |> double |> add_one |> squareuse uglyboot.http
use uglyboot.log
mod main
fn main():
app := http.app()
app.get("/", |_|:
log.info("hello_hit", { p: "/" })
res.text(200, "Hello, world!")
)
http.listen(app, 8080)type Result[T]:
Ok(T)
Err(string)
type Shape:
Circle(radius)
Rect(width, height)tst "addition":
!! add(1, 2) == 3
!! add(0, 0) == 0
tst "factorial":
!! factorial(5) == 120Write compact .skf for AI, read verbose .unskf for humans.
fn add(a, b) -> int:
~ a + b
fn greet(name) -> string:
~ "Hello, " + namefunction add(a: int, b: int) -> int:
return a + b
function greet(name: string) -> string:
return "Hello, " + name~50-60% token reduction in .skf vs .unskf
A complete toolchain that speaks AI natively.
skuf buildCompile .skf to native binary via C
skuf runOne-step build and execute
skuf explainPlain-English code description
skuf specToken-efficient module spec for LLM prompts
skuf testRun built-in tests
skuf unskfConvert to human-readable format
--json-errorsStructured errors AI agents can parse without regex
UglyBootBuilt-in HTTP server framework
No regex parsing needed. AI agents fix issues in one shot.
[
{
"file": "src/main.skf",
"line": 7,
"col": 3,
"code": "E0110",
"msg": "expected expression",
"hint": "res"
}
]Build the compiler, write your first program, and let AI handle the rest.
# Build the compiler
make build
# Write your first program
cat > src/main.skf << 'EOF'
mod main
fn main():
>> "Hello from Skuf!"
EOF
# Compile and run
skuf run src/main.skf