MCPcopy Index your code
hub / github.com/disler/indydevtools

github.com/disler/indydevtools @main

Chat with this repo
repository ↗ · DeepWiki ↗ · + Follow
97 symbols 420 edges 40 files 36 documented · 37%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

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

  • IndyDevTools is a suite of tools focused on solving problems using AI agents.
  • The each tool, down to the code is designed to be highly modular, and composable, so you can use the tools in combination with each other, or use them on their own to solve specific problems.
  • This tool was created to solve problems utilizing agents, and to share ideas, principles, and patterns that can help you thrive in the rapidly expanding age of AI.
  • This repo is highly opinionated, as it's a principle driven project designed to solve specific problems that I run into on a consistent basis.
  • If you have a solution to a problem that you think should be included, feel free to crack open a PR.
  • If you see, or think of a tool that's missing that would be beneficial to all users, feel free to crack open an issue.
  • Feel free to fork it and make it your own.

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

  • Every tool in this toolbox consists of one or more agents designed to solve a specific set of problems.
  • Agent > Code > Manual Input
  • CRUD[:2] -> Prefer Create, and Read over Update, and Delete when using AI Agents

> EVERYTHING IS A FUNCTION

  • Every tool in this toolbox is a function that takes inputs and returns outputs.
  • Every function can be called on it's own in isolation, or used in combination with other functions to create a more complex process.
  • By treating every critical unit of code as a function, we can create a library of reusable building blocks that can be used to solve many problems.

> GREAT QUESTIONS YIELD GREAT ANSWERS

  • At the core of every product, there is a question that it attempts to answer.
  • The quality of the answer is directly proportional to the quality of the question.
  • IndyDevTools attempts to answer the question: "What's the best way to build multi-agent systems that can solve problems autonomously on my behalf?"
  • The harsh truth is that the answer to your question is buried in questions, experiments, failed attempts, and iterations. IndyDevTools is an ongoing experiment to answer the question of how to build multi-agent systems that can solve problems autonomously on your behalf.

> CREATE REUSABLE BUILDING BLOCKS

  • In the age of AI where code, data, and models are becoming a commodity, the most valuable thing you can create is a reusable building block that can be used to solve many problems.
  • Build small, composable, and reusable functions that can be used together, or only one at a time.

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

  • Just like loops, variables, and functions, we treat prompts as a fundamental unit of programming.
  • In the age of AI, prompts are the most powerful way to design, build, and engineer systems that can solve problems autonomously on your behalf.
  • They should be treated with the same level of respect (as time goes on, even more) and care as any other fundamental unit of programming.

Directory Structure

models > modules/ > commands/ > main

Upcoming Tool (Live, Planned, Maybe)

  • [Live ✅] Multi Agent Youtube Metadata Generation (idt yt)
  • [Live ✅] Simple Prompt System (idt sps)
  • [Planned 📆] Sora video generation tool (idt sora)
  • [Planned 📆] Add idt yt desc chapters to generate chapters
  • [Maybe 🟡] OpenAI Assistant tool (idt oass)
  • [Maybe 🟡] Git Diff AI Peer Review (port diffbro) (idt dbro)
  • [Maybe 🟡] Fast Notion Idea Dump

Tool Guide

✍️ Simple Prompt System (idt sps)

  • This tool is a simple system to help you reuse and run your prompts.

Use case

  • If you've created a great prompt and proceeded to lose track of it or forget it this tool is for you. Maybe you built a prompt that debugs code for you, writes tests, generates docs, generates marketing content, helps you ask questions about a topic, or helps you generate ideas. This tool will help you save, edit, run and reuse your prompts.
  • You have a set of prompts that you use frequently and want to streamline the process of running these prompts with different variables.
  • The Simple Prompt System (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.
  • The best way to get started is to run idt sps prompt -a "pyq" -p "reverse a string" to see how the system works.
  • Then you can run idt sps config to view the configuration file and add your own prompt templates.
  • Since this is a CLI app, you can pipe the output of the prompt to a file, or to your clipboard, or right into another command. For example, you can run 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.
  • I recommend you setup .bashrc or .zshrc aliases to make it easier to run your favorite prompts after you've added them to the configuration file.

Get Started

  1. Install IndyDevTools bash pip install indydevtools
  2. Initialize and view the configuration file for the Simple Prompt System bash 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 bash 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.
  7. I recommend using the prompt_template: <absolute path to .txt file> feature to store your prompts in a text file.
  8. 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 - idt sps --help - View all available commands for the Simple Prompt System. ##### idt sps config - idt sps config -p? - Open the configuration file to the console, creates the file if it doesn't exist. - Inputs - -p (optional): A flag to only print the configuration file to the console. - Outputs - The configuration file content printed to the console or opened in the default editor. ##### idt sps prompt - idt sps prompt -a <alias> -p <prompt> -v? <vars> -ns? - Run a prompt using a template with custom variables. - Inputs - -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. - Outputs - The result of the prompt streamed to the console. ##### idt sps list - idt sps list - List all available prompt templates. - Inputs - None - Outputs - The list of all available prompt templates. ##### idt sps get - idt sps get -a <alias> - Get the prompt template for the given alias. - Inputs - -a: The alias for the prompt template. - Outputs - The prompt template.

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
  • 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"

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

  • [+] Add ability to make prompt_template variable a path to a text file that contains your prompt
  • [] Ability to specify which openai model to use for the prompt
  • [] Add idt sps new -a 'alias' -pt 'prompt template' -n? 'name' -d? 'description' feature to save a new prompt template into the configuration file.

📹 Multi Agent Youtube Metadata Generation (idt yt)

  • This tool generates the metadata for a youtube video.

Use case

  • You've just finished rendering a video to upload to youtube, and you need to generate the metadata for the video. This tool will help you generate the title, description, tag

Core symbols most depended-on inside this repo

load_config
called by 19
indy_dev_tools/modules/idt_config.py
prompt_json_response
called by 5
indy_dev_tools/modules/llm.py
make_cap_refs
called by 4
indy_dev_tools/modules/llm.py
generate_directories
called by 3
indy_dev_tools/modules/idt_config.py
write_config
called by 3
indy_dev_tools/modules/idt_config.py
make_thumbnail_file_path
called by 2
indy_dev_tools/models.py
view_config
called by 2
indy_dev_tools/modules/idt_config.py
generate_metadata_flow
called by 2
indy_dev_tools/modules/generate_metadata_flow.py

Shape

Function 63
Class 18
Method 16

Languages

Python100%

Modules by API surface

indy_dev_tools/models.py34 symbols
indy_dev_tools/modules/idt_config.py6 symbols
indy_dev_tools/commands/thumbnails.py6 symbols
indy_dev_tools/modules/llm.py5 symbols
indy_dev_tools/commands/simple_prompt_system.py4 symbols
indy_dev_tools/commands/youtube.py3 symbols
indy_dev_tools/commands/titles.py3 symbols
indy_dev_tools/commands/descriptions.py3 symbols
indy_dev_tools/commands/config.py3 symbols
indy_dev_tools/modules/sps_prompt.py2 symbols
indy_dev_tools/modules/create_thumbnail.py2 symbols
indy_dev_tools/commands/hashtags.py2 symbols

For agents

$ claude mcp add indydevtools \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact