> For the complete documentation index, see [llms.txt](https://notes123.vladimir-vinarsky.me/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://notes123.vladimir-vinarsky.me/user-friendly-scripts.md).

# User-friendly scripts

## Motivation

Using scripts from the command line can be very discouraging for the new or after long time returning user. I would like to set up an ecosystem, which has an internal logic which makes it more easy to start using scripts from the start and also when returning back.

> Designed with a beginner in mind

## User friendliness

1. Getting help from the script is easy
2. Having a video tutorial
3. Availability of test files to see if the scripts are working the way you want
4. Having the same syntax/logic across the scripts
5. Creating a log of the actions which happened
6. Being able to revert the action of the script&#x20;

## Friendly script - example

## 1. Getting help from the script is easy

Typing the name of the script without any arguments gives you:

1. usage
2. examples of use
3. option to start a command line tutorial
4. Link to a website/with gif of the tutorial

## 2. Having a video tutorial

Use the [vhs from charm\_](https://github.com/charmbracelet/vhs?tab=readme-ov-file#tutorial) to create a gif tutorial showing functionality of the script

## 3. Availability of the test files

Every script should have a dedicated website where you can download the files to test the script on.

Additionally, would be great to be able to get this from the command line&#x20;

## 4. Consistency of the syntax

* same flags for the common stuff
* expect the same structure of folders
* ???

## 5. Creating a log of the actions which were done

* Create a document with the exact command which was run&#x20;
* List of files it run on
* Output which was created
* Date
* Name and version of the script

## 6. Being able to "revert" the action of the script

* never delete the original files
* create the output in a new file/folder
* create  a script which when run reverts the action (renaming etc.)
