Add RFC-0052: Splitting Perfetto skills across hosts (#8355)

Proposes how to split `ai/skills/perfetto/` so the coding agent bundle,
the UI (#8266), google3 and Android CLI each get the subset they can
run, without comment markers or hand copies.

Content is written against named actions, each file declares the actions
it requires, and one generator builds each host's bundle and a report of
what it dropped. The RFC includes a prototype plan on `android_memory/`
on top of #8266.
tree: 22d964292f6dba3620266e3414576b707cb865c8
  1. .github/
  2. media/
  3. .gitignore
  4. 0001-stdlib-doc-enhancements.md
  5. 0002-multitrace-clock-sync.md
  6. 0003-simpleperf-proto-import.md
  7. 0004-clone-write-into-file-sessions.md
  8. 0005-provider-endpoint-system.md
  9. 0006-extension-server-authentication.md
  10. 0007-community-maintained-code.md
  11. 0008-tracebox-explicit-daemon-management.md
  12. 0009-embeddable-ui.md
  13. 0010-smb-scraping-remote-producers.md
  14. 0011-subset-string-filter-rules.md
  15. 0012-trace-provenance-metadata.md
  16. 0013-named-trace-buffers.md
  17. 0014-tracing-protocol-redesign.md
  18. 0015-perf-counters-refactor.md
  19. 0016-merged-trace-clock.md
  20. 0017-out-of-tree-protos.md
  21. 0018-trace-processor-shell-subcommands.md
  22. 0019-trace-processor-parse-cache.md
  23. 0020-trees.md
  24. 0021-trace-processor-report-subcommand.md
  25. 0022-release-automation.md
  26. 0023-updatable-track-event.md
  27. 0024-ui-vite-migration.md
  28. 0025-ai-in-perfetto.md
  29. 0026-distributing-skills-to-coding-agents.md
  30. 0027-public-profiling-protos.md
  31. 0028-tracing-protocol-routing.md
  32. 0029-intelletto.md
  33. 0030-trace-bundled-extensions.md
  34. 0031-trace-processor-warm-sessions.md
  35. 0032-embedded-assistant.md
  36. 0033-llm-framework.md
  37. 0034-context-injection.md
  38. 0035-tools-and-skills.md
  39. 0036-external-agent-mcp.md
  40. 0037-declarative-slice-formatting.md
  41. 0038-firehose-debundling-smb-compression.md
  42. 0039-track-grouping-dimensions.md
  43. 0040-perfettosql-next.md
  44. 0041-perfettosql-next-operator-reference.md
  45. 0042-deferred-tables.md
  46. 0043-discoverable-full-trace-aggregations.md
  47. 0044-data-source-alias.md
  48. 0045-symbolization.md
  49. 0046-tracing-v2-shared-ring-buffer-chunk-abi.md
  50. 0047-perfetto-dev-blog.md
  51. 0048-backend-agnostic-unwind-interface.md
  52. 0049-async-profiling.md
  53. 0050-tracebuffer-v3.md
  54. 0051-trace-processor-python-lazy-relations.md
  55. 0052-splitting-skills-across-hosts.md
  56. README.md
  57. template.md
README.md

Perfetto RFCs

This repository is set up to automatically manage RFCs (Request for Comments) with GitHub Discussions integration.

TL;DR

  • Directly push changes to the rfcs branch without any review.
  • Any commit will trigger a creation/update of a matching entry in the GitHub Discussions page.
  • Hold the discussion in the GitHub Discussions entry.
  • Use GitHub permalink to quote inline snippets of the doc.

We are deliberately lax on the definition of RFC to keep the process lax and have a low-barrier process to both document and discuss design decisions of any size and controversy level.

📋 Overview

When you push or update an RFC markdown file, the system automatically:

  • 📝 Creates/updates a corresponding GitHub Discussion
  • 🔗 Links the discussion back to the source file
  • 💬 Enables collaborative feedback through discussions

📝 Creating an RFC

File Naming Convention

RFC files must follow this naming pattern: <RFC_NUMBER>-<title-with-hyphens>.md

Examples:

  • 0001-buffer.md
  • 0002-ui-taskbar.md
  • 0123-authentication-strategy.md

Important: The RFC number must be exactly 4 digits (zero-padded).

Directory Structure

repository-root/
├── 0001-buffer.md
├── 0002-ui-taskbar.md
├── media/
│   ├── 0001/
│   │   ├── buffer1.png
│   │   └── buffer2.svg
│   └── 0002/
│       └── ui-screenshot1.png
├── .github/
│   ├── workflows/
│   │   └── rfc-automation.yml
│   └── scripts/
│       └── sync_rfc_to_discussion.py
└── .markdownlint.json

Media Files

All images (SVG or PNG) should be placed in /media/<RFC_NUMBER>/:

  • ✅ /media/0001/diagram.png
  • ✅ /media/0001/architecture.svg
  • ✅ /media/0002/screenshot.png
  • ❌ /images/diagram.png (wrong location)
  • ❌ /media/diagram.png (missing RFC number directory)

You are strongly encouraged to use draw.io / diagrams.net for your diagrams as it is able to embed metadata in both svg and png files, allowing for later re-editing.

If you use VSCode, you might find these two extensions particularly useful:

  1. Draw.io integration particularly useful, as it allows to create diagrams directly within VSCode simply by creating a new empy xxx.drawio.{svg,png} file.

  2. markdownlint

🚀 Workflow

  1. Checkout/create the rfcs branch:

    git checkout -b rfcs -t origin/rfcs
    
  2. Create your RFC:: Copy the rfc-template.md

  3. Add content: Edit your RFC file with your markdown content. Include:

    • Problem statement
    • Proposed solution
    • Alternatives considered
    • Implementation details
    • References to media files if needed
  4. Add media files (optional):

    mkdir -p media/0001
    touch media/0001/diagram.drawio.png
    # Edit with vscode or app.diagrams.net
    
  5. Commit and push:

    git add 0001-buffer.md media/0001/
    git commit -m "Add RFC-0001: Buffer Management"
    git push
    
  6. Automated actions:

    • Markdown linter runs automatically
    • GitHub Discussion is created/updated
    • Team can comment and provide feedback

💬 GitHub Discussions

Each RFC automatically gets a GitHub Discussion created in the repository. The discussion:

  • Contains the full RFC content
  • Links back to the source file
  • Updates when the RFC file is modified
  • Serves as the central place for team feedback