disler / indydevtools

An opinionated, Agentic Engineering toolbox powered by LLM Agents to solve problems autonomously.
https://pypi.org/project/indydevtools/
69 stars 11 forks source link
agentic agents indydevtools llm multi-agent

IndyDevTools

An opinionated, Agentic Engineering toolbox powered by LLM Agents to solve problems autonomously.

IndyDevTools Logo

Table of Contents

Usage, maintenance plan, and usage guide of this tool

Tool Overview

Principles

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.

> USE THE RIGHT TOOL (AGENT) FOR THE JOB

> EVERYTHING IS A FUNCTION

> GREAT QUESTIONS YIELD GREAT ANSWERS

> CREATE REUSABLE BUILDING BLOCKS

> Prompts (Agents) are THE new fundamental unit of programming

Directory Structure

models > modules/ > commands/ > main

Upcoming Tool (Live, Planned, Maybe)

Tool Guide

✍️ Simple Prompt System (idt sps)

Use case

Get Started

  1. Install IndyDevTools
    pip install indydevtools
  2. Initialize and view the configuration file for the Simple Prompt System
    idt sps config
    • This will print open your configuration file in your default editor based on the file type, allowing you to view, open and edit your prompt templates.
  3. Add or edit prompt templates in the configuration file as needed.
  4. Run a test command to execute a prompt
    idt sps prompt -a "pyq" -p "reverse a string"
  5. Verify the output of the prompt in the console.
  6. Open the config with idt sps config and add your own prompt templates for rapid reuse.
    • I recommend using the prompt_template: <absolute path to .txt file> feature to store your prompts in a text file.
    • Use the idt config dir to open the directory where the configuration file is stored. You can store your prompt templates (*.txt) in this directory.

sps Commands

idt sps help

sps Example Config File Example & Prompt Calls

Example Configuration File
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: 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}}"
Example /Users/ravix/Library/Application Support/indy_dev_tools/bash_prompt.txt File
How do I: {{prompt}} in bash?
Example Calls for the Configuration File

Application Flow Diagram

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 Next


πŸ“Ή Multi Agent Youtube Metadata Generation (idt yt)

Use case

Get Started

  1. Install IndyDevTools
    pip install indydevtools
  2. View and initialize the configuration file
    idt yt config (or idt config view)
    • This will create the configuration file if it doesn't exist and the /drafts and /final directories in the operating directory.
  3. Edit the configuration file to add your openai key and path to your audio/video files
  4. Run a test command
    idt yt thumb create -p "bird writing code"

    or

    idt yt titles create -r "Using AI Coding Assistants to code faster than ever"
  5. Make sure the thumbnail was created in the <config.yt.operating_dir>/drafts directory
  6. Run the full metadata generation command
    idt yt gen-meta-auto
  7. See Commands for more information

yt Commands

Application Flow Diagram

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 Next

The Configuration File

The configuration file is the primary source of truth for all the tools in the IndyDevTools suite.

config Commands

Structure

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>

Developer Commands

(deploy, publish)

Deploy

Install

Video Series

Join the discussion - watch the videos that created this tool.

Resources