Skip to content

Building a Chrome Extension (D3.js + Javascript + HTML + CSS)

Open in ChatGPT ↗
Ask ChatGPT about this page
Open in Claude ↗
Ask Claude about this page
Copied!

Build a D3.js Sankey diagram Chrome extension using Warp — scaffold, debug, coordinate multiple agents, and publish to the Chrome Web Store.

  1. Set up your environment and create a new Chrome Extension project

    Section titled “Set up your environment and create a new Chrome Extension project”

    Our goal: build a Chrome extension called “Sankey Stone” that visualizes flows using D3.js.

    Files created during setup

    • manifest.json
    • popup.html
    • popup.css
    • popup.js
    • Icon images (icon16.png, icon32.png, icon48.png, etc.)

    Enable Developer Mode in Chrome and load the project:

    chrome://extensions → Developer Mode → Load unpacked → Select your project folder

  2. After fixing missing icons, the extension loads but initially shows only “Loading diagram.”

    Debug this by taking a screenshot and feeding it to an AI agent for context by asking:

    It says loading diagram — why isn’t the chart appearing?

    An agent reviews the error and regenerates the popup.js so the Sankey chart appears using D3.js.

    Result: a working, interactive diagram rendered inside the extension popup.

  3. Initialize a Git repository and commit:

    Terminal window
    git init
    git add .
    git commit -m "Initial Sankey Stone extension"

    The developer asks the agent to create a GitHub repo and push the code.

    The agent handles authentication, creates the remote repo, and pushes all files automatically.

  4. Launch a simple local web server with a test page that outputs traffic flow data. The extension reads this data and updates the Sankey diagram dynamically.

    Transcript example prompt:

    Update the test data page so that it generates random labels and different contexts when I hit the regenerate button.

    The agent edits the test page so that clicking the Regenerate Test Page button updates the diagram in real time.

  5. The video demonstrates running multiple agents in parallel. Each agent receives a different task:

    AgentTask
    #1Update the test data page to randomize labels and values
    #2Change the refresh page button to regenerate the chart in a different style
    #3Generate a useful README file for the project

    You can approve actions automatically by enabling Auto‑approve all agent actions so background updates run without manual confirmation.

  6. After the data layer works, now you can iterate on appearance:

    Apply new color themes and improve the layout.

    Changes applied:

    • Support for multiple color themes and improved node layout.
    • Hovering over links highlights connected nodes.
    • Users can drag nodes to rearrange the layout.
    • Added a “Switch Style” button to cycle between themes.

    To support exporting diagrams, you can ask:

    Add a button to download this image as a PNG.

    The Warp agent writes the JS logic for PNG export and verifies that clicking the button saves a screenshot of the diagram.

  7. Create a settings page where users can store API keys:

    Add a settings page to enter the Anthropic API key and test it.
    • The page allows testing the key to ensure it works.
    • API keys are stored locally in the browser, not sent to a server.
  8. Package and submit the extension:

    Terminal window
    zip -r sankey_stone.zip *

    Upload the ZIP file to https://chrome.google.com/webstore/devconsole and follow the prompts.


By following these transcript‑based steps, you can recreate the same workflow:

  • Scaffold a Chrome extension with D3.js.
  • Debug manifest and icon issues.
  • Use agents to generate and refine code.
  • Introduce multi‑agent parallel tasks for UI, data, and docs.
  • Add interactivity, themes, and export options.
  • Create an API key setup screen.
  • Package and publish to the Chrome Web Store.