An opinionated, Agentic Engineering toolbox powered by LLM Agents to solve problems autonomously.
An opinionated, Agentic Engineering toolbox powered by LLM Agents to solve problems autonomously.
Principles drive decisions, decisions drive actions, actions drive results. Understanding the principles behind a tool will help you understand how to use it, and how to use it effectively.
CRUD[:2]
-> Prefer Create, and Read over Update, and Delete when using AI Agentsidt yt
)idt sps
)idt sora
)idt yt desc chapters
to generate chaptersidt oass
)idt dbro
)idt sps
)idt sps
) allows you to define templates for these prompts and quickly execute them with custom variables, saving you time by reusing your favorite prompts.idt sps prompt -a "pyq" -p "reverse a string"
to see how the system works.idt sps config
to view the configuration file and add your own prompt templates.idt sps prompt -a "pyq" -p "reverse a string" | pbcopy
to copy the output of the prompt to your clipboard and throw it into your code editor.pip install indydevtools
idt sps config
idt sps prompt -a "pyq" -p "reverse a string"
idt sps config
and add your own prompt templates for rapid reuse.
prompt_template: <absolute path to .txt file>
feature to store your prompts in a text file.idt config dir
to open the directory where the configuration file is stored. You can store your prompt templates (*.txt
) in this directory.sps
Commandsidt sps help
idt sps --help
idt sps config
idt sps config -p?
-p
(optional): A flag to only print the configuration file to the console.idt sps prompt
idt sps prompt -a <alias> -p <prompt> -v? <vars> -ns?
-a
: The alias for the prompt template.-p
: The prompt to run.-v
(optional): Custom variables in key=value format separated by commas.-ns
(optional): No stream, don't stream the output of the prompt to the console.idt sps list
idt sps list
idt sps get
idt sps get -a <alias>
-a
: The alias for the prompt template.sps
Example Config File Example & Prompt Callssps:
config_file_path: <path to this config file for you to open and edit>
openai_api_key: <your openai api key will fallback to env var OPENAI_API_KEY>
templates:
- alias: bash
description: Ask a question about bash
name: Bash Prompt
prompt_template: 'mac: bash: how do I: '
variables: []
- alias: bf
prompt_template: /Users/ravix/Library/Application Support/indy_dev_tools/bash_prompt.txt
- alias: pyq
description: Ask a question about python
name: Python Question
prompt_template: 'How do I: {{prompt}} in python?'
variables: []
- alias: midj
description: Create a prompt for text to imagine tool midjourney
name: Midjourney Prompt
prompt_template: "Create a prompt for text to imagine tool midjourney.
Take the prompt below and the ideas in them in a dense, verbose, vivid one paragraph
describing an imagine that midjourney will create.
End the prompt with '--ar {{ratio}} --v {{version}}'. Prompt: {{prompt}}"
/Users/ravix/Library/Application Support/indy_dev_tools/bash_prompt.txt
FileHow do I: {{prompt}} in bash?
idt sps prompt -a bash -p "explain the ping command"
idt sps prompt -a bf -p "get last 10 lines of a file"
idt sps prompt -a pyq -p "reverse a string"
idt sps prompt -a midj -p "write a story about a cat" -v "ratio=16:9,version=1.0"
graph LR
A["I want to call one of my prompts"]
AV["I want to call one of my prompts with variables"]
AA["I want to save/edit this prompt for reuse"]
AAA["I want to list my existing prompts"]
AAAA["I want to view one of my prompts"]
B["I need help with the commands"]
C["I want to view the configuration file"]
subgraph Simple Prompt System
API1["idt sps prompt 'alias' -p 'prompt'"]
API1V["idt sps prompt 'alias' -p 'prompt' -v? 'key1=value1,key2=value2'"]
API2["idt sps --help"]
API3["idt sps list"]
API4["idt sps get -a 'alias'"]
API5["idt sps config"]
API6["idt config view"]
end
subgraph Output
OUTPUT1["Response of your prompt"]
OUTPUT2["Help information"]
OUTPUT3["List of all available prompt templates"]
OUTPUT4["Prompt template for the given alias"]
OUTPUT5["Configuration file content"]
end
A --> API1
AV --> API1V
API1V --> OUTPUT1
AA --> API6
AAA --> API3
AAAA --> API4
B --> API2
C --> API5
API1 --> OUTPUT1
API2 --> OUTPUT2
API3 --> OUTPUT3
API4 --> OUTPUT4
API5 --> OUTPUT5
API6 --> OUTPUT5
idt sps
Improvements / What's Nextidt sps new -a 'alias' -pt 'prompt template' -n? 'name' -d? 'description'
feature to save a new prompt template into the configuration file.idt yt
)idt yt gen-meta-auto
which will walk you through key steps to generate the metadata for your video. It will
final/
directory, it will also output the drafts to the drafts/
directory so you can review them and make any changes if necessary.pip install indydevtools
idt yt config (or idt config view)
/drafts
and /final
directories in the operating directory.idt yt thumb create -p "bird writing code"
or
idt yt titles create -r "Using AI Coding Assistants to code faster than ever"
<config.yt.operating_dir>/drafts
directoryidt yt gen-meta-auto
yt
Commandsidt yt --help
idt yt config
yt titles
Commandsidt yt titles create -r <rough_draft_title> -s? <script_file.txt> -c? <count> -k? <seo_keywords>
-r
: The rough draft title-s
(optional): The script file to use-c
(optional, default 1
): The number of titles to generate-k
(optional): The SEO keywords<config.yt.operating_dir>/drafts/titles.json
yt script
Commandsidt yt script transcribe --file <video_file> --json? <create_json_file> --seconds? <duration_limit_in_sec>
-f
: The path to the video file to transcribe.-j
(optional, default False
): Create an additional JSON file of the transcript with segments and word timestamps.-s
(optional, default 120
): The maximum seconds to process.-j
is used, a JSON file with the transcript will be created in the <config.yt.operating_dir>/transcripts
directory.yt desc
Commandsidt yt desc compose
<config.yt.operating_dir>/draft/descriptions.json
<config.yt.operating_dir>/draft/hashtags.json
<config.yt.operating_dir>/draft/references.txt
(optional)<config.yt.operating_dir>/final/description.txt
idt yt desc create -s <script_file> -r? <rough_draft_title> -c? <count> -k? <seo_keywords>
-s
: The path to the script file.-r
(optional): The rough draft title of the video.-c
(optional, default 3
): The number of descriptions to generate.-k
(optional): SEO keywords to be included in the description.<config.yt.operating_dir>/drafts/descriptions.json
idt yt desc iterate <prompt> <description>
yt tags
Commandsidt yt tags compose
/draft/hashtags.json
/final/hashtags.txt
with a list of tags to use in the video.idt yt tags create --title <rough_draft_title> --keywords <seo_keywords>
--r
: The rough draft title of the video.--k
: The SEO keywords for the video./draft/hashtags.json
.yt refs
Commandsidt yt refs format -r <references> -t <rough_draft_title> -k? <seo_keywords>
-r
: The references (links) to format.-t
: The rough draft title of the video.-k
(optional): The SEO keywords for the video./draft/references.txt
.yt thumb
Commandsidt yt thumb compose
/draft/thumbnail_<count>.png
/final/thumbnail.png
thumbnail to use in the video.idt yt thumb create_from_prompt -c <count>
-c
: The number of thumbnails to create from a selected prompt./drafts/thumbnail_<count>.png
thumbnail drafts to potentially use in the video.idt yt thumb create_prompt -r <rough_draft_title> -k <seo_keywords> -c <count> -a <art_style>
-r
: The rough draft title of the video.-k
: The SEO keywords for the video.-c
: The number of thumbnail prompts to create.-a
: The art style to be used in the thumbnail./draft/thumbnail_prompt.json
with the generated thumbnail prompts.idt yt thumb create -p <prompt> -c <count>
-p
: The prompt to create thumbnail with.-c
: The number of thumbnails to create./draft/thumbnail_<count>.png
thumbnail drafts to potentially use in the video.idt yt thumb rescale -f <image_file_path> -w <width> -h <height> -o <output_file>
-f
: The path to the input image file.-w
(default 1280): The width to rescale the image to.-h
(default 720): The height to rescale the image to.-o
(default input file path): The path to the output image file.graph LR
Z[Rendered YouTube Video]
subgraph Youtube Metadata Automation Tool
A[Generate Youtube Metadata]
B(Transcribe - CODE)
C{Script Ready}
D(Generate Title - LLM AGENT)
E(Generate Description - LLM AGENT)
F(Generate Thumbnails - LLM AGENT)
G(Resize Thumbnails - CODE)
H{Title Ready}
I{Description Ready}
K{Resized Thumbnails Ready}
L[[Review for Upload - MANUAL INPUT]]
N(Format References - CODE)
O{References Ready}
P(Generate Hashtags - LLM AGENT)
Q{Hashtags Ready}
R(Compose Hashtags - CODE)
S(Compose Description - CODE)
T(Compose Title - CODE)
U(Compose Thumbnail - CODE)
end
M[Upload to YouTube]
Z --> A
A --> B
B --> C
C --> D
C --> E
A --> F
F --> G
A --> B
D --> H
E --> I
G --> K
L --> M
A --> N
N --> O
A --> P
P --> Q
O --> S
R --> L
S --> L
T --> L
U --> L
I --> S
H --> T
K --> U
Q --> R
Q --> S
idt yt
Improvements / What's Nextidt yt trending -k <keywords> -n <number of results>
idt yt script extract-seo -s <script_file>
idt yt script research-seo -t <topic> -s <script file> -n <number of results>
thumb iterate
to improve an imagedesc iterate
to improve a descriptiontitles iterate
to improve a descriptionThe configuration file is the primary source of truth for all the tools in the IndyDevTools suite.
config
Commandsidt config view [--only-print|-p]
--only-print
or -p
option to only print the configuration file to the console without opening it in the editor.--only-print
or -p
(optional): A flag to only print the configuration file to the console.idt config edit [--only-print|-p]
idt config view
idt config dir
idt sps
in the same directory as the configuration file.See each tool's documentation for the structure of the configuration file for that tool.
yt:
config_file_path: <path to this config file for you to open and edit>
openai_api_key: <your openai api key will fallback to env var OPENAI_API_KEY>
operating_dir: <Path to your rendered video/audio, also the output path where the /draft and /final assets that will be generated>
sps:
config_file_path: <path to this config file for you to open and edit>
openai_api_key: <your openai api key will fallback to env var OPENAI_API_KEY>
templates:
- alias: <alias>
description: <description>
name: <name>
prompt_template: <prompt_template or absolute file path>
variables:
- default: <default>
description: <description>
name: <name>
(deploy, publish)
pyproject.toml: version
poetry run python scripts/publish_testpypi.py
poetry run python scripts/publish_pypi.py
pip install --upgrade --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple indydevtools
pip install indydevtools
Join the discussion - watch the videos that created this tool.