#prompt #cargo #prompting #markdown #minify #llm #recursion

app cargo-prompt

Recursively minify and concatenate source code into a markdown document for llm prompting

5 releases

Uses new Rust 2024

0.1.6 Mar 8, 2025
0.1.5 Mar 7, 2025
0.1.4 Feb 16, 2025

#126 in Cargo plugins

Download history 323/week @ 2025-02-11 36/week @ 2025-02-18 9/week @ 2025-02-25 244/week @ 2025-03-04 27/week @ 2025-03-11

378 downloads per month

MIT license

51KB
867 lines

cargo-prompt

Recursively minify and concatenate source code into a markdown document for llm prompting. Optionally remove comments / documentation. Items in .gitignore are automatically excluded.

This can be useful for LLM assisted development when rapidly prompting with updated code, or when there is too much code to fit in the allowed context window.

install

cargo install cargo-prompt

run

cd my_cargo_project/
cargo prompt

remove comments / documentation

cd my_cargo_project/
cargo prompt -r

redirect to a file

cd my_cargo_project/
cargo prompt > saved_prompt.txt

target specific directory

cargo prompt /path/to/src/

other languages

javascript

cargo prompt -j
cargo prompt --javascript

python

cargo prompt -p
cargo prompt --python

java

cargo prompt --java

c / c++

cargo prompt -c
cargo prompt --c-cpp

csharp

cargo prompt -i
cargo prompt --csharp

php

cargo prompt -q
cargo prompt --php

ruby

cargo prompt --ruby

swift

cargo prompt -s
cargo prompt --swift

typescript

cargo prompt -t
cargo prompt --typescript

kotlin

cargo prompt -k
cargo prompt --kotlin

go

cargo prompt -g
cargo prompt --go

r

cargo prompt -r

matlab

cargo prompt -m
cargo prompt --matlab

vb

cargo prompt -v
cargo prompt --vbnet

perl

cargo prompt --perl

scala

cargo prompt --scala

dart

cargo prompt -d
cargo prompt --dart

groovy

cargo prompt --groovy

julia

cargo prompt --julia

haskell

cargo prompt --haskell

shell

cargo prompt --shell

lua

cargo prompt -l
cargo prompt --lua

all languages

cargo prompt -a
cargo prompt --all

example input

fizzbuzz/fizzbuzz.rs:

// Functions that "don't" return a value, actually return the unit type `()`
fn fizzbuzz(n: u32) -> () {
    if is_divisible_by(n, 15) {
        println!("fizzbuzz");
    } else if is_divisible_by(n, 3) {
        println!("fizz");
    } else if is_divisible_by(n, 5) {
        println!("buzz");
    } else {
        println!("{}", n);
    }
}

example output

# fizzbuzz

## ./fizzbuzz.rs

```rust
fn fizzbuzz(n:u32)->(){if is_divisible_by(n,15){println!("fizzbuzz");}else if is_divisible_by(n,3){println!("fizz");}else if is_divisible_by(n,5){println!("buzz");}else{println!("{}",n);}}
```

todo

Dependencies

~8–16MB
~212K SLoC