diff --git a/PROMPT.md b/PROMPT.md
new file mode 100644
index 000000000..6c2c5b194
--- /dev/null
+++ b/PROMPT.md
@@ -0,0 +1,710 @@
+# π MEGA PROMPT: Hybrid TypeScript/C++ Package System
+
+**Version**: 1.0
+**Last Updated**: January 2026
+**For**: AI Assistants working on 3-frontend package bootstrap system
+
+---
+
+## π― PROJECT ESSENCE
+
+This is a **hybrid TypeScript/C++ bootloader system** that powers a modular package architecture. Three frontends (CLI, Qt6, Next.js) act as **entry points** that bootstrap a NestJS-based package system. The system is pragmatic: schemas are improvable, not sacred; patterns come from functional programming; and delightfulness matters.
+
+### The Mental Model
+
+```
+βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
+β User Input β
+β (CLI / Qt6 GUI / Next.js Web) β
+ββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββββββββββββ
+ β
+ βΌ
+ ββββββββββββββββ
+ β Bootloader β β Frontend-specific logic
+ β (3x) β - Routes/state management
+ ββββββββββββββββ
+ β
+ βΌ
+ ββββββββββββββββ
+ β Package β β Central coordinator
+ β System β - Loads packages from /packages/
+ β (NestJS) β - Manages seed data & schemas
+ ββββββββββββββββ
+ β
+ ββββββββ΄βββββββ
+ βΌ βΌ
+ ββββββββββ ββββββββββ
+ β DBAL β β C++ β
+ β Layer β β Daemonsβ
+ β β β(Media) β
+ ββββββββββ ββββββββββ
+ β β
+ ββββββββ¬βββββββ
+ βΌ
+ ββββββββββββββββ
+ β Database β
+ β(PostgreSQL) β
+ ββββββββββββββββ
+```
+
+**Key Principle**: Seed data lives in `/packages/*/seed/`, not scattered elsewhere. Schemas are single source of truth but improvable.
+
+---
+
+## π PRIORITY READING (In Order)
+
+1. **IMMEDIATE_FIXES.md** β - What's actually broken right now
+2. **claude.md** - System overview and patterns
+3. **agents.md** - Agent guidelines for this codebase
+4. **README.md** - Project structure and setup
+5. **ROADMAP.md** (if exists) - Vision and evolution
+6. **docs/** - Architecture, testing, deployment guides
+7. **schemas/** - Data models (understand but improve if needed)
+
+---
+
+## ποΈ ARCHITECTURE AT A GLANCE
+
+### Three Frontends (Each a Bootloader)
+
+| Frontend | Purpose | Tech Stack | Startup Flow |
+|----------|---------|-----------|--------------|
+| **CLI** | Command-line interface | TypeScript/Node | Read config β Load packages β Execute |
+| **Qt6** | Desktop GUI application | C++/Qt6 | Parse Qt resources β Load packages β Render |
+| **Next.js** | Web application | TypeScript/React | HTTP request β Load packages β Render page |
+
+**Critical**: Each frontend is a **bootloader**. It doesn't contain business logicβit loads and orchestrates packages.
+
+### Package System (The Heart)
+
+```
+/packages/
+βββ [package-name]/
+β βββ seed/ β REAL seed data (not /dbal/shared/seeds/)
+β β βββ metadata.json β Package manifest
+β β βββ page-config/ β Routes/pages
+β β βββ workflow/ β Automation workflows
+β β βββ credential/ β API credentials
+β β βββ component/ β UI components
+β β βββ [entity-type]/ β Other entity types
+β βββ src/ β Business logic (if TypeScript package)
+β βββ package.json
+β βββ README.md
+```
+
+**Pattern**: Each package is self-contained. Seed data describes what the package does. Business logic implements it.
+
+### DBAL Layer (Database Access)
+
+- **Phase 2** (Current): TypeScript DBAL in `/dbal/development/`
+- **Phase 3** (Future): C++ daemon in `/dbal/production/`
+- **Shared**: YAML schemas at `/dbal/shared/api/schema/entities/` (source of truth)
+
+**Rule**: Always use `getDBALClient()` from `@/dbal`, never raw Prisma.
+
+### Schemas: Two Layers
+
+| Layer | Location | Purpose | Editable? |
+|-------|----------|---------|-----------|
+| **Entity Schemas** | `/dbal/shared/api/schema/entities/*.yaml` | Database structure (source of truth) | Yes, improve as needed |
+| **Validation Schemas** | `/schemas/seed-data/*.schema.json` | Seed data validation | Yes, extend for new features |
+| **Package Schemas** | `/schemas/package-schemas/*.schema.json` | Package system architecture | Yes, treat as blueprint |
+
+**Philosophy**: Schemas are **improvable**. If they lack features, extend them. They're not dogma.
+
+---
+
+## π¨ DESIGN PHILOSOPHY (How to Think)
+
+### 1. Functional Programming First
+
+```typescript
+// β
GOOD: Functional, pure, composable
+const loadPackage = (path: string) => readJSON(path);
+const filterActive = (packages: Package[]) => packages.filter(p => p.active);
+const orchestrate = pipe(loadPackages, filterActive, initializeAll);
+
+// β BAD: Imperative, class-heavy, side effects
+class PackageManager {
+ private packages: Package[] = [];
+ async load(path) { this.packages = await readJSON(path); }
+ async filter() { this.packages = this.packages.filter(p => p.active); }
+}
+```
+
+### 2. Make It Delightful
+
+- Code should be obvious. If it requires 20 comments, refactor it.
+- Styling matters. Use Tailwind (web), Qt stylesheets (desktop), ANSI colors (CLI).
+- Error messages should hint at solutions, not just fail.
+- Performance should feel snappy.
+
+### 3. Schemas Are Improvable
+
+```json
+// If schema lacks what you need:
+// 1. Document the gap
+// 2. Extend the schema
+// 3. Update examples
+// 4. Move on
+
+// Example: Script schema is JSON AST, but n8n-style is simpler for visual GUIs
+{
+ "trigger": "http.post",
+ "input": { "body": "{ name, email }" },
+ "steps": [
+ { "action": "validate.email", "target": "$input.email" },
+ { "action": "db.create", "table": "users", "data": "$input" }
+ ],
+ "output": { "userId": "$steps[1].id" }
+}
+// This coexists with JSON AST for complex logic. Both are valid.
+```
+
+### 4. No Magic, No Lua
+
+- **No Lua**: JSON is sufficient for visual scripting (n8n, Scratch patterns).
+- **No magic imports**: Be explicit. Use dependency injection.
+- **No hidden state**: Logs should explain what's happening.
+
+### 5. GUIs Over Raw Input
+
+```typescript
+// β RAW: User types CSS directly
+
+
+// β
GUI: Dropdowns + composition
+,
+ fontSize: ,
+ layout: ,
+ }}
+/>
+```
+
+---
+
+## π PROJECT STRUCTURE
+
+```
+.
+βββ IMMEDIATE_FIXES.md β Current priorities
+βββ claude.md System overview
+βββ agents.md Agent guidelines
+βββ README.md Project intro
+βββ ROADMAP.md Vision & evolution
+β
+βββ docs/ Architecture & guides
+β βββ TESTING_GUIDE.md
+β βββ DEPLOYMENT.md
+β βββ COMPONENTS.md
+β βββ ...
+β
+βββ schemas/ Data model definitions
+β βββ seed-data/ Validation schemas for seed files
+β β βββ page-config.schema.json
+β β βββ workflow.schema.json
+β β βββ component.schema.json
+β β βββ ...
+β βββ package-schemas/ Package system definitions
+β βββ metadata_schema.json
+β βββ entities_schema.json
+β βββ ...
+β
+βββ packages/ Modular packages (REAL seed data here)
+β βββ package-name/
+β β βββ seed/
+β β β βββ metadata.json
+β β β βββ page-config/
+β β β βββ workflow/
+β β β βββ ...
+β β βββ src/ (if TypeScript package)
+β β βββ package.json
+β βββ ...
+β
+βββ dbal/ Database abstraction layer
+β βββ development/ TypeScript DBAL (Phase 2, current)
+β β βββ src/
+β β βββ prisma/
+β β βββ package.json
+β βββ production/ C++ DBAL (Phase 3, future)
+β β βββ include/
+β β βββ src/
+β β βββ CMakeLists.txt
+β βββ shared/
+β βββ api/schema/entities/ YAML entity schemas (source of truth)
+β βββ seeds/ Bootstrap seeds (minimal)
+β βββ docs/
+β
+βββ frontends/ Entry points (bootloaders)
+β βββ cli/ TypeScript CLI
+β β βββ src/commands/
+β β βββ package.json
+β βββ qt6/ C++ Qt6 desktop GUI
+β β βββ src/
+β β βββ CMakeLists.txt
+β βββ nextjs/ TypeScript/React web
+β βββ src/app/
+β βββ src/components/
+β βββ package.json
+β
+βββ old/ Pre-refactor reference code
+β βββ [legacy patterns for understanding changes]
+β
+βββ [support files]
+ βββ package.json
+ βββ tsconfig.json
+ βββ CMakeLists.txt
+ βββ ...
+```
+
+---
+
+## π§ CORE PATTERNS
+
+### Pattern 1: Functional Package Loading
+
+```typescript
+// β
GOOD: Pure, composable, testable
+const loadPackageMetadata = (path: string): Promise =>
+ readJSON(`${path}/seed/metadata.json`);
+
+const loadPackageSeed = (path: string, entityType: string): Promise =>
+ readJSON(`${path}/seed/${entityType}/data.json`).catch(() => []);
+
+const initializePackages = async (packagePaths: string[]) =>
+ Promise.all(packagePaths.map(async (path) => ({
+ metadata: await loadPackageMetadata(path),
+ pages: await loadPackageSeed(path, 'page-config'),
+ workflows: await loadPackageSeed(path, 'workflow'),
+ })));
+```
+
+### Pattern 2: Schema-Driven Validation
+
+```typescript
+// Validate seed data against schema
+const validateSeedData = (data: unknown, schemaPath: string): ValidationResult => {
+ const schema = loadSchema(schemaPath);
+ const validator = ajv.compile(schema);
+ const valid = validator(data);
+
+ return {
+ valid,
+ errors: validator.errors || [],
+ };
+};
+
+// Usage
+const result = validateSeedData(seedData, '/schemas/seed-data/workflow.schema.json');
+if (!result.valid) {
+ console.error('Seed validation failed:', result.errors);
+}
+```
+
+### Pattern 3: Bootloader Flow (Frontend-Agnostic)
+
+```typescript
+// Each frontend implements this flow differently, but structure is same
+interface BootloaderFlow {
+ 1_readConfig: () => Promise;
+ 2_loadPackages: (config: Config) => Promise;
+ 3_validatePackages: (packages: Package[]) => Promise;
+ 4_initializeDatabase: (packages: Package[]) => Promise;
+ 5_renderUI: (packages: Package[]) => Promise;
+}
+
+// CLI Implementation
+async function cliBootloader() {
+ const config = readConfigFile('./metabuilder.config.json');
+ const packages = await loadPackagesFromDisk(config.packagesDir);
+ const validation = await validatePackages(packages);
+
+ if (!validation.valid) {
+ console.error('Validation failed:', validation.errors);
+ process.exit(1);
+ }
+
+ await initializeDatabase(packages);
+ await cliRender(packages);
+}
+
+// Qt6 Implementation
+async function qt6Bootloader() {
+ const config = readConfigFromResources();
+ const packages = await loadPackagesFromDisk(config.packagesDir);
+ const validation = await validatePackages(packages);
+
+ if (!validation.valid) {
+ showErrorDialog(validation.errors);
+ return;
+ }
+
+ await initializeDatabase(packages);
+ qt6Render(packages);
+}
+
+// Next.js Implementation
+export async function pageBootloader() {
+ const config = loadConfigFromEnv();
+ const packages = await loadPackagesFromDisk(config.packagesDir);
+ const validation = await validatePackages(packages);
+
+ if (!validation.valid) {
+ return NextResponse.json({ error: validation.errors }, { status: 400 });
+ }
+
+ await initializeDatabase(packages);
+ return renderNextPage(packages);
+}
+```
+
+### Pattern 4: N8N-Style Workflows (Over JSON AST)
+
+```json
+// Simple, visual, drop-and-drop friendly
+{
+ "id": "workflow_user_signup",
+ "name": "User Signup Flow",
+ "trigger": {
+ "type": "form.submit",
+ "formId": "form_signup"
+ },
+ "steps": [
+ {
+ "id": "validate_email",
+ "action": "validate.email",
+ "input": { "email": "$trigger.email" },
+ "onError": "step_show_error"
+ },
+ {
+ "id": "check_exists",
+ "action": "db.query",
+ "query": "SELECT id FROM users WHERE email = $1",
+ "params": ["$validate_email.input.email"],
+ "onSuccess": "step_check_result"
+ },
+ {
+ "id": "check_result",
+ "action": "condition",
+ "if": "$check_exists.rows.length > 0",
+ "then": "step_error_exists",
+ "else": "step_create_user"
+ },
+ {
+ "id": "create_user",
+ "action": "db.insert",
+ "table": "users",
+ "data": {
+ "email": "$trigger.email",
+ "name": "$trigger.name",
+ "createdAt": "now()"
+ }
+ },
+ {
+ "id": "send_email",
+ "action": "email.send",
+ "to": "$trigger.email",
+ "template": "welcome",
+ "vars": { "name": "$trigger.name" }
+ },
+ {
+ "id": "redirect_success",
+ "action": "response.redirect",
+ "url": "/welcome"
+ },
+ {
+ "id": "error_exists",
+ "action": "response.error",
+ "status": 409,
+ "message": "Email already registered"
+ },
+ {
+ "id": "show_error",
+ "action": "response.error",
+ "status": 400,
+ "message": "$validate_email.error"
+ }
+ ],
+ "output": {
+ "success": "$create_user.id",
+ "message": "User created successfully"
+ }
+}
+```
+
+This is **simpler than JSON AST**, **visual-friendly**, and **platform-agnostic**.
+
+### Pattern 5: GUI Designer, Not Raw Input
+
+```typescript
+// Component: StyleBuilder (instead of