{
  "schemaVersion": "1.0",
  "item": {
    "slug": "kameleondb",
    "name": "KameleonDB",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/marcosnataqs/kameleondb",
    "canonicalUrl": "https://clawhub.ai/marcosnataqs/kameleondb",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/kameleondb",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=kameleondb",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "README.md",
      "SKILL.md",
      "examples/schema.json",
      "examples/workflow.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/kameleondb"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/kameleondb",
    "agentPageUrl": "https://openagent3.xyz/skills/kameleondb/agent",
    "manifestUrl": "https://openagent3.xyz/skills/kameleondb/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/kameleondb/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "When to Use This",
        "body": "Use KameleonDB when you need to:\n\nRemember information across conversations - Store contacts, companies, tasks, notes\nTrack entities and relationships - Connect customers to orders, projects to tasks\nBuild knowledge bases - Accumulate facts, documents, insights over time\nIngest external data - Store API responses, CSV imports, web scraping results\nCreate custom CRM/PM systems - Track leads, deals, projects, tickets\nStore user preferences - Remember settings, history, favorites\nMaintain session state - Persist data between agent runs\nQuery historical data - Search, filter, analyze stored information"
      },
      {
        "title": "Why Agents Choose This",
        "body": "No Upfront Planning: Start storing data immediately. Don't know all fields yet? Add them later when you discover them.\n\nLearn as You Go: Found a new field in your data? Just add it. Old records won't break.\n\nQuery Like a Database: Generate SQL queries to search, filter, join, and analyze your data.\n\nSelf-Optimizing: Get hints when queries slow down, with exact commands to speed them up.\n\nTrack Your Reasoning: Every schema change records why you made it, building an audit trail."
      },
      {
        "title": "Setup (One-Time)",
        "body": "# Install\npip install kameleondb\n\n# Set database location (SQLite - no server needed)\nexport KAMELEONDB_URL=\"sqlite:///./kameleondb.db\"\n\n# Initialize\nkameleondb admin init\n\n# Done! Start using it.\n\nNote: For production, use PostgreSQL instead of SQLite. Set KAMELEONDB_URL=\"postgresql://user:pass@localhost/dbname\" and run pip install kameleondb[postgresql]."
      },
      {
        "title": "💡 Tip: Remember Your Database",
        "body": "To get the most out of KameleonDB as your persistent layer, consider noting your database location and preferred usage patterns in your memory files. This helps you leverage it consistently across sessions.\n\nExample notes you might keep:\n\nDatabase URL: sqlite:///path/to/your-memory.db\nUse for: contacts, tasks, knowledge bases, entity tracking\nKey commands: schema list, data insert, data list, query run"
      },
      {
        "title": "Scenario 1: Track Contacts You Meet",
        "body": "# Check what exists\nkameleondb --json schema list\n# Returns: {\"entities\": []}\n\n# Create Contact tracking\nkameleondb --json schema create Contact \\\n  --field \"name:string:required\" \\\n  --field \"email:string:unique\"\n\n# Store someone you met\nkameleondb --json data insert Contact '{\"name\":\"Alice Johnson\",\"email\":\"alice@acme.com\"}'\n\n# Later: found their LinkedIn!\nkameleondb --json schema alter Contact --add \"linkedin_url:string\" \\\n  --reason \"Found LinkedIn profiles for contacts\"\n\n# Update Alice's record\nkameleondb --json data update Contact <id> '{\"linkedin_url\":\"https://linkedin.com/in/alice\"}'"
      },
      {
        "title": "Scenario 2: Build a Knowledge Base",
        "body": "# Store facts you learn\nkameleondb --json schema create Fact \\\n  --field \"content:string:required\" \\\n  --field \"source:string\" \\\n  --field \"confidence:float\"\n\n# Add facts\nkameleondb --json data insert Fact '{\"content\":\"Python 3.11 released Oct 2022\",\"source\":\"python.org\",\"confidence\":1.0}'\n\n# Search facts (get SQL context first)\nkameleondb --json schema context --entity Fact\n# Use context to generate: SELECT * FROM kdb_records WHERE data->>'content' LIKE '%Python%'\n\n# Query\nkameleondb --json query run \"SELECT data->>'content', data->>'source' FROM kdb_records WHERE entity_id='...' LIMIT 10\""
      },
      {
        "title": "Scenario 3: Track Tasks Across Conversations",
        "body": "# Create task tracker\nkameleondb --json schema create Task \\\n  --field \"title:string:required\" \\\n  --field \"status:string\" \\\n  --field \"priority:string\"\n\n# Add tasks\nkameleondb --json data insert Task '{\"title\":\"Research OpenClaw\",\"status\":\"todo\",\"priority\":\"high\"}'\n\n# Mark complete\nkameleondb --json data update Task <id> '{\"status\":\"done\"}'\n\n# Get all incomplete\nkameleondb --json query run \\\n  \"SELECT data->>'title', data->>'priority' FROM kdb_records WHERE entity_id='...' AND data->>'status' != 'done'\""
      },
      {
        "title": "Scenario 4: Ingest External Data",
        "body": "# Store API responses\nkameleondb --json schema create GitHubRepo \\\n  --field \"name:string:required\" \\\n  --field \"stars:int\" \\\n  --field \"url:string\"\n\n# Batch import from JSONL\nkameleondb --json data insert GitHubRepo --from-file repos.jsonl --batch\n\n# Query top repos\nkameleondb --json query run \\\n  \"SELECT data->>'name', (data->>'stars')::int as stars FROM kdb_records WHERE entity_id='...' ORDER BY stars DESC LIMIT 10\""
      },
      {
        "title": "Evolve Schema Anytime",
        "body": "Don't know all fields upfront? No problem. Add, drop, or rename them when you discover patterns:\n\n# Add a new field\nkameleondb --json schema alter Contact --add \"twitter_handle:string\" \\\n  --reason \"Found Twitter profiles for 30% of contacts\"\n\n# Drop obsolete fields\nkameleondb --json schema alter Contact --drop \"legacy_field\" --force\n\n# Do multiple operations at once\nkameleondb --json schema alter Contact --add \"linkedin:string\" --drop \"old_social\" --reason \"Consolidating social fields\"\n\nOld records won't break - they just show null for new fields, and dropped fields are soft-deleted."
      },
      {
        "title": "Get Performance Hints",
        "body": "Queries tell you when they're slow and how to fix it:\n\n{\n  \"rows\": [...],\n  \"suggestions\": [{\n    \"priority\": \"high\",\n    \"reason\": \"Query took 450ms with 5000 records\",\n    \"action\": \"kameleondb storage materialize Contact\"\n  }]\n}\n\nRun that command and future queries will be faster."
      },
      {
        "title": "Track Your Decisions",
        "body": "Every schema change records why you made it:\n\nkameleondb --json admin changelog\n# See: who added what field, when, and why"
      },
      {
        "title": "Query with SQL",
        "body": "Get schema context, generate SQL, execute it:\n\n# Get schema to understand structure\nkameleondb --json schema context --entity Contact\n\n# Generate SQL based on structure\n# Execute with built-in validation\nkameleondb --json query run \"SELECT ... FROM ...\""
      },
      {
        "title": "All Available Commands",
        "body": "Add --json to any command for machine-readable output.\n\nSchema: list, create, describe, alter, drop, info, context\nData: insert, get, update, delete, list, link, unlink, get-linked, info\nQuery: run\nStorage: status, materialize, dematerialize\nAdmin: init, info, changelog"
      },
      {
        "title": "The alter Command (Schema Evolution)",
        "body": "Instead of separate add-field and drop-field commands, use the unified alter:\n\n# Add a field\nkameleondb --json schema alter Contact --add \"phone:string:indexed\"\n\n# Drop a field\nkameleondb --json schema alter Contact --drop legacy_field --force\n\n# Rename a field\nkameleondb --json schema alter Contact --rename \"old_name:new_name\"\n\n# Multiple operations at once\nkameleondb --json schema alter Contact --add \"new:string\" --drop old --reason \"Cleanup\""
      },
      {
        "title": "The link/unlink Commands (M2M Relationships)",
        "body": "For many-to-many relationships:\n\n# Link a product to tags\nkameleondb --json data link Product abc123 tags tag-1\nkameleondb --json data link Product abc123 tags -t tag-1 -t tag-2 -t tag-3\n\n# Unlink\nkameleondb --json data unlink Product abc123 tags tag-1\nkameleondb --json data unlink Product abc123 tags --all\n\n# Get linked records\nkameleondb --json data get-linked Product abc123 tags\n\nRun kameleondb --help or kameleondb <command> --help for details."
      },
      {
        "title": "Problem: \"I need to remember people I interact with\"",
        "body": "# Start simple\nkameleondb --json schema create Person --field \"name:string:required\"\nkameleondb --json data insert Person '{\"name\":\"Alice\"}'\n\n# Learn more over time\nkameleondb --json schema alter Person --add \"email:string\"\nkameleondb --json schema alter Person --add \"company:string\"\nkameleondb --json schema alter Person --add \"last_contacted:datetime\"\n\n# Update as you learn\nkameleondb --json data update Person <id> '{\"email\":\"alice@example.com\",\"last_contacted\":\"2026-02-07\"}'"
      },
      {
        "title": "Problem: \"I'm scraping data and don't know the structure upfront\"",
        "body": "# Create generic entity\nkameleondb --json schema create ScrapedData --field \"source:string\" --field \"raw:json\"\n\n# Store everything\nkameleondb --json data insert ScrapedData '{\"source\":\"website.com\",\"raw\":{\"title\":\"...\",\"data\":{...}}}'\n\n# Discover patterns, then structure it\nkameleondb --json schema alter ScrapedData --add \"title:string\"\nkameleondb --json schema alter ScrapedData --add \"price:float\"\n\n# Migrate data progressively as you normalize it"
      },
      {
        "title": "Problem: \"I need to track tasks but requirements keep changing\"",
        "body": "# Start minimal\nkameleondb --json schema create Task --field \"title:string:required\"\n\n# Add status tracking\nkameleondb --json schema alter Task --add \"status:string\"\n\n# Add priority later\nkameleondb --json schema alter Task --add \"priority:string\"\n\n# Add assignee when team grows\nkameleondb --json schema alter Task --add \"assigned_to:string\"\n\n# Add tags for categorization\nkameleondb --json schema alter Task --add \"tags:json\"\n\n# Schema grows with your needs - no migrations!"
      },
      {
        "title": "Problem: \"I need to query across multiple entities\"",
        "body": "# Create related entities\nkameleondb --json schema create Project --field \"name:string\"\nkameleondb --json schema create Task \\\n  --field \"title:string\" \\\n  --field \"project_id:string\"\n\n# Get schema context for SQL generation\nkameleondb --json schema context --entity Project --entity Task\n# Returns: detailed schema with SQL patterns for JOIN\n\n# Generate and execute JOIN query\nkameleondb --json query run \\\n  \"SELECT p.data->>'name' as project, t.data->>'title' as task\n   FROM kdb_records p\n   JOIN kdb_records t ON t.data->>'project_id' = p.id::text\n   WHERE p.entity_id='...' AND t.entity_id='...'\""
      },
      {
        "title": "First Time Setup",
        "body": "# Install\npip install kameleondb\n\n# Configure (SQLite for testing - no server needed)\nexport KAMELEONDB_URL=\"sqlite:///./kameleondb.db\"\n\n# Initialize\nkameleondb admin init\n\n# You're ready!"
      },
      {
        "title": "Check What You Have",
        "body": "# List all entities\nkameleondb --json schema list\n\n# See entity details\nkameleondb --json schema describe <entity-name>\n\n# View changelog\nkameleondb --json admin changelog"
      },
      {
        "title": "Common Operations",
        "body": "# Create entity\nkameleondb --json schema create <Entity> --field \"name:type\"\n\n# Add field\nkameleondb --json schema alter <Entity> --add \"field:type\"\n\n# Insert data\nkameleondb --json data insert <Entity> '{\"field\":\"value\"}'\n\n# Get by ID\nkameleondb --json data get <Entity> <id>\n\n# Update\nkameleondb --json data update <Entity> <id> '{\"field\":\"new_value\"}'\n\n# Query with SQL\nkameleondb --json query run \"SELECT ... FROM kdb_records WHERE ...\""
      },
      {
        "title": "Field Types",
        "body": "Common types: string, int, float, bool, datetime, json\n\nModifiers: required, unique, indexed\n\nExamples: \"email:string:unique\", \"score:int:indexed\", \"tags:json\""
      },
      {
        "title": "Next Steps",
        "body": "Try it: kameleondb admin init → kameleondb --json schema create Test --field \"note:string\" → kameleondb --json data insert Test '{\"note\":\"my first record\"}'\n\n\nReal use case: Think about what you need to track (contacts, tasks, facts, etc.) and create an entity for it\n\n\nEvolve it: As you discover new fields, add them with schema alter\n\n\nQuery it: Use schema context to understand structure, then query with SQL\n\n\nOptimize it: If queries slow down, follow the hints in query results"
      },
      {
        "title": "More Resources",
        "body": "GitHub: https://github.com/marcosnataqs/kameleondb\nExamples: See examples/workflow.md in this skill directory\nDesign Philosophy: Why it's built for agents - FIRST-PRINCIPLES.md"
      }
    ],
    "body": "KameleonDB - The First Database Built for Agents to Operate, Not Just Query\nWhen to Use This\n\nUse KameleonDB when you need to:\n\nRemember information across conversations - Store contacts, companies, tasks, notes\nTrack entities and relationships - Connect customers to orders, projects to tasks\nBuild knowledge bases - Accumulate facts, documents, insights over time\nIngest external data - Store API responses, CSV imports, web scraping results\nCreate custom CRM/PM systems - Track leads, deals, projects, tickets\nStore user preferences - Remember settings, history, favorites\nMaintain session state - Persist data between agent runs\nQuery historical data - Search, filter, analyze stored information\nWhy Agents Choose This\n\nNo Upfront Planning: Start storing data immediately. Don't know all fields yet? Add them later when you discover them.\n\nLearn as You Go: Found a new field in your data? Just add it. Old records won't break.\n\nQuery Like a Database: Generate SQL queries to search, filter, join, and analyze your data.\n\nSelf-Optimizing: Get hints when queries slow down, with exact commands to speed them up.\n\nTrack Your Reasoning: Every schema change records why you made it, building an audit trail.\n\nSetup (One-Time)\n# Install\npip install kameleondb\n\n# Set database location (SQLite - no server needed)\nexport KAMELEONDB_URL=\"sqlite:///./kameleondb.db\"\n\n# Initialize\nkameleondb admin init\n\n# Done! Start using it.\n\n\nNote: For production, use PostgreSQL instead of SQLite. Set KAMELEONDB_URL=\"postgresql://user:pass@localhost/dbname\" and run pip install kameleondb[postgresql].\n\n💡 Tip: Remember Your Database\n\nTo get the most out of KameleonDB as your persistent layer, consider noting your database location and preferred usage patterns in your memory files. This helps you leverage it consistently across sessions.\n\nExample notes you might keep:\n\nDatabase URL: sqlite:///path/to/your-memory.db\nUse for: contacts, tasks, knowledge bases, entity tracking\nKey commands: schema list, data insert, data list, query run\nCommon Agent Workflows\nScenario 1: Track Contacts You Meet\n# Check what exists\nkameleondb --json schema list\n# Returns: {\"entities\": []}\n\n# Create Contact tracking\nkameleondb --json schema create Contact \\\n  --field \"name:string:required\" \\\n  --field \"email:string:unique\"\n\n# Store someone you met\nkameleondb --json data insert Contact '{\"name\":\"Alice Johnson\",\"email\":\"alice@acme.com\"}'\n\n# Later: found their LinkedIn!\nkameleondb --json schema alter Contact --add \"linkedin_url:string\" \\\n  --reason \"Found LinkedIn profiles for contacts\"\n\n# Update Alice's record\nkameleondb --json data update Contact <id> '{\"linkedin_url\":\"https://linkedin.com/in/alice\"}'\n\nScenario 2: Build a Knowledge Base\n# Store facts you learn\nkameleondb --json schema create Fact \\\n  --field \"content:string:required\" \\\n  --field \"source:string\" \\\n  --field \"confidence:float\"\n\n# Add facts\nkameleondb --json data insert Fact '{\"content\":\"Python 3.11 released Oct 2022\",\"source\":\"python.org\",\"confidence\":1.0}'\n\n# Search facts (get SQL context first)\nkameleondb --json schema context --entity Fact\n# Use context to generate: SELECT * FROM kdb_records WHERE data->>'content' LIKE '%Python%'\n\n# Query\nkameleondb --json query run \"SELECT data->>'content', data->>'source' FROM kdb_records WHERE entity_id='...' LIMIT 10\"\n\nScenario 3: Track Tasks Across Conversations\n# Create task tracker\nkameleondb --json schema create Task \\\n  --field \"title:string:required\" \\\n  --field \"status:string\" \\\n  --field \"priority:string\"\n\n# Add tasks\nkameleondb --json data insert Task '{\"title\":\"Research OpenClaw\",\"status\":\"todo\",\"priority\":\"high\"}'\n\n# Mark complete\nkameleondb --json data update Task <id> '{\"status\":\"done\"}'\n\n# Get all incomplete\nkameleondb --json query run \\\n  \"SELECT data->>'title', data->>'priority' FROM kdb_records WHERE entity_id='...' AND data->>'status' != 'done'\"\n\nScenario 4: Ingest External Data\n# Store API responses\nkameleondb --json schema create GitHubRepo \\\n  --field \"name:string:required\" \\\n  --field \"stars:int\" \\\n  --field \"url:string\"\n\n# Batch import from JSONL\nkameleondb --json data insert GitHubRepo --from-file repos.jsonl --batch\n\n# Query top repos\nkameleondb --json query run \\\n  \"SELECT data->>'name', (data->>'stars')::int as stars FROM kdb_records WHERE entity_id='...' ORDER BY stars DESC LIMIT 10\"\n\nHow It Works for Agents\nEvolve Schema Anytime\n\nDon't know all fields upfront? No problem. Add, drop, or rename them when you discover patterns:\n\n# Add a new field\nkameleondb --json schema alter Contact --add \"twitter_handle:string\" \\\n  --reason \"Found Twitter profiles for 30% of contacts\"\n\n# Drop obsolete fields\nkameleondb --json schema alter Contact --drop \"legacy_field\" --force\n\n# Do multiple operations at once\nkameleondb --json schema alter Contact --add \"linkedin:string\" --drop \"old_social\" --reason \"Consolidating social fields\"\n\n\nOld records won't break - they just show null for new fields, and dropped fields are soft-deleted.\n\nGet Performance Hints\n\nQueries tell you when they're slow and how to fix it:\n\n{\n  \"rows\": [...],\n  \"suggestions\": [{\n    \"priority\": \"high\",\n    \"reason\": \"Query took 450ms with 5000 records\",\n    \"action\": \"kameleondb storage materialize Contact\"\n  }]\n}\n\n\nRun that command and future queries will be faster.\n\nTrack Your Decisions\n\nEvery schema change records why you made it:\n\nkameleondb --json admin changelog\n# See: who added what field, when, and why\n\nQuery with SQL\n\nGet schema context, generate SQL, execute it:\n\n# Get schema to understand structure\nkameleondb --json schema context --entity Contact\n\n# Generate SQL based on structure\n# Execute with built-in validation\nkameleondb --json query run \"SELECT ... FROM ...\"\n\nAll Available Commands\n\nAdd --json to any command for machine-readable output.\n\nSchema: list, create, describe, alter, drop, info, context Data: insert, get, update, delete, list, link, unlink, get-linked, info Query: run Storage: status, materialize, dematerialize Admin: init, info, changelog\n\nThe alter Command (Schema Evolution)\n\nInstead of separate add-field and drop-field commands, use the unified alter:\n\n# Add a field\nkameleondb --json schema alter Contact --add \"phone:string:indexed\"\n\n# Drop a field\nkameleondb --json schema alter Contact --drop legacy_field --force\n\n# Rename a field\nkameleondb --json schema alter Contact --rename \"old_name:new_name\"\n\n# Multiple operations at once\nkameleondb --json schema alter Contact --add \"new:string\" --drop old --reason \"Cleanup\"\n\nThe link/unlink Commands (M2M Relationships)\n\nFor many-to-many relationships:\n\n# Link a product to tags\nkameleondb --json data link Product abc123 tags tag-1\nkameleondb --json data link Product abc123 tags -t tag-1 -t tag-2 -t tag-3\n\n# Unlink\nkameleondb --json data unlink Product abc123 tags tag-1\nkameleondb --json data unlink Product abc123 tags --all\n\n# Get linked records\nkameleondb --json data get-linked Product abc123 tags\n\n\nRun kameleondb --help or kameleondb <command> --help for details.\n\nReal Agent Problems Solved\nProblem: \"I need to remember people I interact with\"\n# Start simple\nkameleondb --json schema create Person --field \"name:string:required\"\nkameleondb --json data insert Person '{\"name\":\"Alice\"}'\n\n# Learn more over time\nkameleondb --json schema alter Person --add \"email:string\"\nkameleondb --json schema alter Person --add \"company:string\"\nkameleondb --json schema alter Person --add \"last_contacted:datetime\"\n\n# Update as you learn\nkameleondb --json data update Person <id> '{\"email\":\"alice@example.com\",\"last_contacted\":\"2026-02-07\"}'\n\nProblem: \"I'm scraping data and don't know the structure upfront\"\n# Create generic entity\nkameleondb --json schema create ScrapedData --field \"source:string\" --field \"raw:json\"\n\n# Store everything\nkameleondb --json data insert ScrapedData '{\"source\":\"website.com\",\"raw\":{\"title\":\"...\",\"data\":{...}}}'\n\n# Discover patterns, then structure it\nkameleondb --json schema alter ScrapedData --add \"title:string\"\nkameleondb --json schema alter ScrapedData --add \"price:float\"\n\n# Migrate data progressively as you normalize it\n\nProblem: \"I need to track tasks but requirements keep changing\"\n# Start minimal\nkameleondb --json schema create Task --field \"title:string:required\"\n\n# Add status tracking\nkameleondb --json schema alter Task --add \"status:string\"\n\n# Add priority later\nkameleondb --json schema alter Task --add \"priority:string\"\n\n# Add assignee when team grows\nkameleondb --json schema alter Task --add \"assigned_to:string\"\n\n# Add tags for categorization\nkameleondb --json schema alter Task --add \"tags:json\"\n\n# Schema grows with your needs - no migrations!\n\nProblem: \"I need to query across multiple entities\"\n# Create related entities\nkameleondb --json schema create Project --field \"name:string\"\nkameleondb --json schema create Task \\\n  --field \"title:string\" \\\n  --field \"project_id:string\"\n\n# Get schema context for SQL generation\nkameleondb --json schema context --entity Project --entity Task\n# Returns: detailed schema with SQL patterns for JOIN\n\n# Generate and execute JOIN query\nkameleondb --json query run \\\n  \"SELECT p.data->>'name' as project, t.data->>'title' as task\n   FROM kdb_records p\n   JOIN kdb_records t ON t.data->>'project_id' = p.id::text\n   WHERE p.entity_id='...' AND t.entity_id='...'\"\n\nQuick Reference\nFirst Time Setup\n# Install\npip install kameleondb\n\n# Configure (SQLite for testing - no server needed)\nexport KAMELEONDB_URL=\"sqlite:///./kameleondb.db\"\n\n# Initialize\nkameleondb admin init\n\n# You're ready!\n\nCheck What You Have\n# List all entities\nkameleondb --json schema list\n\n# See entity details\nkameleondb --json schema describe <entity-name>\n\n# View changelog\nkameleondb --json admin changelog\n\nCommon Operations\n# Create entity\nkameleondb --json schema create <Entity> --field \"name:type\"\n\n# Add field\nkameleondb --json schema alter <Entity> --add \"field:type\"\n\n# Insert data\nkameleondb --json data insert <Entity> '{\"field\":\"value\"}'\n\n# Get by ID\nkameleondb --json data get <Entity> <id>\n\n# Update\nkameleondb --json data update <Entity> <id> '{\"field\":\"new_value\"}'\n\n# Query with SQL\nkameleondb --json query run \"SELECT ... FROM kdb_records WHERE ...\"\n\nField Types\n\nCommon types: string, int, float, bool, datetime, json\n\nModifiers: required, unique, indexed\n\nExamples: \"email:string:unique\", \"score:int:indexed\", \"tags:json\"\n\nNext Steps\n\nTry it: kameleondb admin init → kameleondb --json schema create Test --field \"note:string\" → kameleondb --json data insert Test '{\"note\":\"my first record\"}'\n\nReal use case: Think about what you need to track (contacts, tasks, facts, etc.) and create an entity for it\n\nEvolve it: As you discover new fields, add them with schema alter\n\nQuery it: Use schema context to understand structure, then query with SQL\n\nOptimize it: If queries slow down, follow the hints in query results\n\nMore Resources\nGitHub: https://github.com/marcosnataqs/kameleondb\nExamples: See examples/workflow.md in this skill directory\nDesign Philosophy: Why it's built for agents - FIRST-PRINCIPLES.md"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/marcosnataqs/kameleondb",
    "publisherUrl": "https://clawhub.ai/marcosnataqs/kameleondb",
    "owner": "marcosnataqs",
    "version": "0.1.5",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/kameleondb",
    "downloadUrl": "https://openagent3.xyz/downloads/kameleondb",
    "agentUrl": "https://openagent3.xyz/skills/kameleondb/agent",
    "manifestUrl": "https://openagent3.xyz/skills/kameleondb/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/kameleondb/agent.md"
  }
}