Adam Bandel


Prompt Development Kit

May 2025
Type: desktop
Code: 33k lines
Files: 241
Active: May 2025 — May 2025
Stack:
TypeScriptReactTauriRustSQLiteReactFlow
Tags:
aideveloper-toolsautomation

Overview

Prompt Development Kit (PDK) is a cross-platform desktop application for building, organizing, and managing complex AI prompt workflows. It provides a visual node-based editor where users can create prompt sequences, manage variables across scopes, and integrate code context from their projects directly into prompts.

The application bridges the gap between simple prompt copy-paste workflows and programmatic prompt engineering, offering a visual interface for prompt development without requiring coding knowledge.

Screenshots

Flow Canvas

Node Editor

Code Context Builder

Problem

Prompt engineering for LLMs often involves:

Existing solutions force users into either plain text files (no structure) or full programming (high barrier). PDK provides a middle ground: visual prompt composition with variables, versioning, and code integration.

Approach

Stack

Challenges

Outcomes

The application successfully handles complex prompt workflows:

Key technical wins:

Implementation Notes

The variable system uses a `` syntax with three scopes:

// Variable resolution priority
1. Code context variables (auto-generated from file scans)
2. Flow-specific variables (scoped to current flow)
3. Global variables (available everywhere)

The database schema includes 16 tables tracking flows, nodes, variables, versions, and soft-deleted items:

-- Core tables for flow/node versioning
CREATE TABLE flow_versions (
  id INTEGER PRIMARY KEY,
  flow_id INTEGER,
  version TEXT,
  snapshot TEXT,  -- JSON snapshot of flow state
  created_at TEXT
);

CREATE TABLE node_versions (
  id INTEGER PRIMARY KEY,
  node_id INTEGER,
  version TEXT,
  snapshot TEXT,
  created_at TEXT
);

The code context builder scans project directories and generates variables:

// Parallel file scanning with Rayon
files.par_iter()
    .filter(|f| matches_patterns(f, &include_patterns, &exclude_patterns))
    .map(|f| read_and_tokenize(f))
    .collect()

Related Posts

No posts yet.