diff --git a/doc/docs.md b/doc/docs.md
index f18f7c6a54..939175473b 100644
--- a/doc/docs.md
+++ b/doc/docs.md
@@ -61,6 +61,7 @@ For more details and troubleshooting, please visit the [vab GitHub repository](h
* [Hello world](#hello-world)
+* [Running a project folder](#running-a-project-folder-with-several-files)
* [Comments](#comments)
* [Functions](#functions)
* [Returning multiple values](#returning-multiple-values)
@@ -189,6 +190,42 @@ This means that a "hello world" program in V is as simple as
println('hello world')
```
+## Running a project folder with several files
+
+Suppose you have a folder with several .v files in it, where one of them
+contains your `main()` function, and the other files have other helper
+functions, perhaps organized by topics, but still *not yet* structured
+enough, to be their own separate reusable modules, and you want to compile
+them all into one program.
+
+In other languages, you would have to use includes or a build system,
+to enumerate all files, compile them separately to object files,
+then link them into one final executable.
+
+In V however, you can compile and run the whole folder of .v files together,
+using just: `v .` and `v run .` . Passing parameters also works, so you can
+do: `v run . --yourparam some_other_stuff`
+
+The above will first compile your files into a single program (named
+after your folder/project), and then it will execute the program with
+`--yourparam some_other_stuff` passed to it as CLI parameters.
+
+Your program can then use the CLI parameters like this:
+```v
+import os
+
+println(os.args)
+```
+
+NB: after a successfull run, `v run .` will delete the generated executable.
+If you want to keep it, use `v -keepc run .` instead, or just compile
+manually with `v .` .
+
+NB: any V compiler flags should be passed *before* the `run` command,
+Everything after the source file/folder, will be passed to the program
+as is, it will not be processed by V.
+
+
## Comments
```v
|