)]}'
{
  "commit": "a7694ec9b0393dfe0c9ee504bccb7475619b89a7",
  "tree": "3603d6180ce0a9954c9fa1ad0c7dad6d6bdcf715",
  "parents": [
    "5162072bc3a92ecc8cc366d922a86aebfaf55a9e"
  ],
  "author": {
    "name": "Lalit Maganti",
    "email": "lalitm@google.com",
    "time": "Fri Jun 05 18:38:18 2026 +0100"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Fri Jun 05 17:38:18 2026 +0000"
  },
  "message": "ai: refactor multiple skills -\u003e single skill (#6156)\n\nThis CL changes the approach of ahving N skills, each of which is\ndoing a specific thing with Perfetto to instead be a single skill\nwhich internally has a tree of references/workflows guiding the\nagent on how to work with traces.\n\nThe reason for this change is that we\u0027ve found it\u0027s quite painful\nfor folks to juggle N skills and it\u0027s easy to accidentally only\ninstall partial set of skills. This is problematic as then the\nagent can get very confused and go in circles.\n\nIf we instead have everything packaged in a single skill and\nthen give strong guidance on how to \"route\" itself, it makes it a\nlot easier. There\u0027s also nice advantages when it comes to\nthings like sharing common scripts and fragments - we can reference\nother files using relative paths in a way which would be very\ndifficult if we were instead using N skills and couldn\u0027t count on\nall skills necessarily being installed.",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "d6fd94dc713d6ecd26ab3589784dff9381449e92",
      "old_mode": 33188,
      "old_path": "ai/extensions/README.md",
      "new_id": "00859ea61138d9ea3ac487c8dbfbeea515cca182",
      "new_mode": 33188,
      "new_path": "ai/extensions/README.md"
    },
    {
      "type": "modify",
      "old_id": "10f56a1c6f4693ffc55b729fbd9bdfc2107ab5b3",
      "old_mode": 33188,
      "old_path": "ai/skills/README.md",
      "new_id": "075d7c739c07a1102b0c4a68bbe6643e0fca72fc",
      "new_mode": 33188,
      "new_path": "ai/skills/README.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8e6927324ef1e712a061458eedca294b8d1a0b2e",
      "new_mode": 33188,
      "new_path": "ai/skills/perfetto/EVAL.txtpb"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "7bd004e070f3d858797501b30100f816f8ca5b22",
      "new_mode": 33188,
      "new_path": "ai/skills/perfetto/SKILL-template.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "99475db81d1f54636e1c8a1467f9e3b51fe75eda",
      "new_mode": 33188,
      "new_path": "ai/skills/perfetto/environment-references/setup-bundled.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "d070a4fe4e796ead4eb32fa1069184a07c938e0c",
      "new_mode": 33188,
      "new_path": "ai/skills/perfetto/environment-references/setup-standalone.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "4c72da3c741a4e27a79a51a1e7b574110d7fe65d",
      "new_mode": 33188,
      "new_path": "ai/skills/perfetto/infra-references/querying.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "a3de7d747fa35f930e0e1f8469ec0c59ee1d48ac",
      "new_mode": 33188,
      "new_path": "ai/skills/perfetto/workflows/android_memory/heap_dump.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "25d0a77188a2af89d65fe08fa63573700b2d0654",
      "new_mode": 33188,
      "new_path": "ai/skills/perfetto/workflows/android_memory/heap_dump_caching_optimizer.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "61ff394e870fb35374aa93864ac87a393cd35dbf",
      "new_mode": 33188,
      "new_path": "ai/skills/perfetto/workflows/android_memory/heap_dump_cluster.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "17f3c11f92da70564214c8d615d25fdbf0334109",
      "new_mode": 33188,
      "new_path": "ai/skills/perfetto/workflows/android_memory/scripts/cluster_paths.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "d39e9a7183c9fcec4f9520073383ee58157cd2c3",
      "new_mode": 33188,
      "new_path": "ai/skills/perfetto/workflows/android_memory/scripts/query_heap_references.sql"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "7a70f2f028b0b8d0450069ad8a26e30119f16216",
      "new_mode": 33188,
      "new_path": "ai/skills/perfetto/workflows/android_memory/scripts/query_most_repeated_objects.sql"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "65ff832102d60e22b24ae7410e8167defea43c70",
      "new_mode": 33188,
      "new_path": "ai/skills/perfetto/workflows/android_memory/scripts/query_size_frequencies.sql"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "d4ddb1a8bef085c60b1869395a9d8203eacd6b9b",
      "new_mode": 33188,
      "new_path": "ai/skills/perfetto/workflows/android_memory/scripts/summarize_clusters.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "f5820a8c01e2061f69c1098c353d61ac4a84b6ee",
      "new_mode": 33188,
      "new_path": "ai/skills/perfetto/workflows/android_memory/scripts/triage_dominator_path.sql"
    },
    {
      "type": "delete",
      "old_id": "c78ce1c9a03a6c75ac15b9d1add5b0788e47d26d",
      "old_mode": 33188,
      "old_path": "ai/skills/targets.json",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "modify",
      "old_id": "de0163f84e0ab109f59f0edbe91bb4b8c51b8ac3",
      "old_mode": 33188,
      "old_path": "docs/getting-started/using-ai.md",
      "new_id": "c80df25b1f90adab9c1e052b71ef99cef7ac64aa",
      "new_mode": 33188,
      "new_path": "docs/getting-started/using-ai.md"
    },
    {
      "type": "modify",
      "old_id": "b4fe9756c242cc23fbd3189669db384da4a4cf93",
      "old_mode": 33261,
      "old_path": "tools/check_extension_manifests.py",
      "new_id": "67fbb87d8983a83848c98108ab43fe57cc52f810",
      "new_mode": 33261,
      "new_path": "tools/check_extension_manifests.py"
    },
    {
      "type": "modify",
      "old_id": "b39e0f59a7fef026e91e091959c832c2cb72ab5c",
      "old_mode": 33261,
      "old_path": "tools/release/build_ai_agents.py",
      "new_id": "ca61d0fc0df0bcbf54e2282d03e95df24a0e0dec",
      "new_mode": 33261,
      "new_path": "tools/release/build_ai_agents.py"
    }
  ]
}
