Awesome
genie - Your CLI assistant 🧞♂️
Your personal assistant for the CLI that helps you:
- run commands
- generate images
- generate music
- summarize comments (supports multiple languages)
- document code
- get information about anything related to tech directly from the CLI
- maintain a chat session with the genie for advanced context understanding
Features
Welcome
Overview
The Genie CLI provides a set of commands to help developers use AI to automate tasks, generate documentation, and improve their workflow. This documentation covers the available commands, their usage, and examples to help you get started with the Genie CLI.
You can support the development of Genie by contributing to the project or making a donation. You can also make donations using the support
command in the Genie CLI.
Once you have made a donation, you can use the verify
command to verify your donation and get access to additional features and benefits later on.
If you've donated, a big thank you from genie!
Configurations
genie init
The init
command is used to store your API keys, session IDs, and ignore list file paths. By running this command, you can configure the Genie CLI to access external services and customize its behavior.
Ignore List File Paths
When configuring the Genie CLI, you can specify ignore patterns to exclude certain files or directories from processing. This can be useful for skipping test files, build directories, or other irrelevant content.
The ignore list is a file that contains a list of files and directories that you want to exclude from your project. This is highly important to reduce the token count and improve the performance of the analysis. Create an ignore list file anywhere on your system and provide the path to it during the genie init
command.
This is a text file with the name ignorelist.txt
that contains a list of files and directories to ignore. For example:
node_modules
dist
build
API Keys
The Genie CLI requires API keys to access external services for text-to-image generation, text-to-music generation, and other features. You can obtain API keys from the respective service providers and store them securely using the genie init
command.
Commands
1. do
The do
command allows you to execute commands that you might not remember. Leveraging the power of AI, Genie can help you run commands without having to remember them. Just type in what you want to do, and Genie will take care of the rest.
Usage:
genie do "prompt"
Flags:
--safe
: Run the command in safe mode, which ensures that the command is executed only if it is safe to do so.
Description:
- AI-Powered Command Execution: Execute commands using natural language prompts.
- Helpful for Beginners: Ideal for beginners who may not be familiar with command-line syntax.
2. image
The image
command is used to generate images from text. This can be useful for generating any kind of image from text, such as diagrams, charts, or illustrations.
Usage:
genie image "prompt"
Description:
- Text-to-Image Generation: Converts text prompts into images.
- Versatile Use Cases: Can be used for creating diagrams, charts, illustrations, and more.
Note: When using the gemini engine, make sure you pass the SSID and API key as environment variables.
The SSID is the __Secure-1PSID
cookie value from the browser after logging into the Gemini website.
3. music
The music
command allows you to generate music based on a text prompt. This can be useful for creating background music, soundtracks, or other audio content.
Usage:
genie music "prompt"
Flags:
--d
: Specify the duration of the generated music. (Default: 8 seconds, max: 15 seconds)--logs
: Display logs during music generation.
Description:
- Text-to-Music Generation: Converts text prompts into music.
- Customizable Duration: Set the duration of the generated music.
- Real-Time Logs: Option to display logs during music generation.
4. tell
The tell
command is used to generate text responses to questions or prompts. This can be useful for generating responses to queries, providing information, or creating conversational content about the CLI.
Usage:
genie tell "prompt"
Flags:
--include-dir
: Include the current directory snapshot in the request for better context.
Description:
- Text Response Generation: Generates text responses to prompts.
- Conversational AI: Provides information and answers questions in a conversational format.
5. summarize
The summarize
command generates a structured markdown summary of comments within your project files. This is useful for creating documentation and reviewing code.
For this command to work, you need to have comments in your code that are marked as headings and subheadings. Genie will automatically detect these comments and generate a markdown summary based on them.
Example of comments in code:
In python:
# genie:heading: This is a heading
# genie:subheading: This is a subheading
or in javascript:
// genie:heading: This is a heading
// genie:subheading: This is a subheading
Make sure to match the exact format for the comments to be detected correctly. The format is genie:heading:
for headings and genie:subheading:
for subheadings. Remember to add a space after the colon and before the text. Also add a space after the comment marker (#
or //
) and before the genie
keyword.
This command can be used in relation to the document
command to generate summaries of the codebase.
Usage:
genie summarize
Flags:
--email
: Send the generated markdown summary as a PDF via email.--support
: Lists the supported languages for comment detection.--filename
: Specify the filename for the generated markdown summary.
Description:
- Automatic Detection: Scans project files for comments marked as headings and subheadings.
- Multi-Language Support: Supports multiple programming languages by recognizing various comment markers.
- Email Integration: Option to send the generated markdown summary as a PDF via email.
- Ignore Patterns: Customizable ignore patterns to exclude specific files or directories.
6. document
The document
command generates documentation for your file and integrates it with genie comments. This can then be useful to get easier summaries of your code and to understand the codebase better.
Usage:
genie document
Flags:
--file
: Specify the file to generate documentation for. (Required flag)
Description:
- Automatic Documentation Generation: Generates documentation for your codebase.
- Integrates with Genie Comments: Utilizes genie comments to create structured documentation.
- Customizable Output: Specify the file to generate documentation for.
7. chat
Note: The chat
command is only available for supporters of the Genie project.
The chat
command opens a chat interface where you can interact with Genie in a conversational manner. This can be useful for asking questions, getting help, or exploring the capabilities of the Genie CLI.
Usage:
genie chat
Flags:
--safe
: Run the command in safe mode, which ensures that the conversation is safe and appropriate.
Description:
- Conversational Interface: Interact with Genie in a chat-like environment.
- AI-Powered Responses: Get answers to questions and prompts in a conversational format.
Conclusion
The Genie CLI is a powerful tool that helps streamline your development workflow by automating tasks, generating documentation, and more. By using the available commands, you can improve your productivity and maintain a consistent project structure.
For more information, visit the Genie About Page.
Points to remember while testing the app
-
Do not forget to run the
init
command before running any other command -
The
generate
command with Gemini Engine currently only works on local and not on the build, i am working on a fix. It works on the build directly with the GPT engine. -
Make sure you provide a valid ignorelist.txt file path when you
init
the app. This file is like.gitignore
and contains the files that you want to ignore when passing prompts to the model. This is done to make sure to stay within the model token limits. -
The
music
command uses the music-gen model from the replicate API. Make sure you have the correct API key stored in the keyring. -
Run the
docs
command to open the documentation in the browser.
Instructions
- Clone the repository
git clone https://github.com/harshalranjhani/genie.git
- Enter the directory
cd genie
- Install the dependencies
go mod tidy
- Get going
go run main.go
Useful Links
Need help?
Feel free to contact me on LinkedIn
if (youEnjoyed) {
starThisRepository();
}