Sign in and launch Source
Sign in to your Acquia account. From the dashboard, launch Acquia Source.

Acquia Source · DDEV · Claude Code
From a blank folder to a working Storybook migration, connected Acquia Source site, and an exported evaluation report.
Before you start
Prepare the hosted Canvas site that will receive your migrated components and page.
Sign in to your Acquia account. From the dashboard, launch Acquia Source.

Choose the organization that will own the new site.

On the Sites page, select Create Site.

Find Acquia Site Template and select it.

Enter a short, recognizable site label and select Start Building. Wait until Source finishes creating the site.

Build the DDEV and Storybook project locally in one blank folder.
Create and enter a folder for the migration. The installer builds the project in this folder.
mkdir freelygive-migration
cd freelygive-migrationThe installer is linked from the Canvas AI Migrations project page on Drupal.org.

Run the current installer command:
curl -fSSL https://canvas.drupalstarforge.ai/install.sh | bashChoose Simple Acquia Source. This creates a Storybook component library connected to a hosted Source site.

When asked for a project name, press Enter to use the current folder name.

The first installation builds containers and installs Storybook, browser tooling, Claude Code, and the migration skills.


The wizard needs the Drupal API endpoint and the visitor-facing website address.
At the end of installation, answer Y when asked whether to set up the Acquia Source connection.

ddev canvas-setup.https://<site-uuid>.cms.acquia.sitehttps://<site-domain>.acquia.siteFrom the Source sites list, select Edit Site. When the editor opens, copy only the origin from the address bar: https:// plus the hostname ending in .cms.acquia.site.

source.acquia.com/sites/… is the Source dashboard, not the CMS/API endpoint.
Return to the Source Sites list and copy the value in the Domain column. Include https:// when entering it in Terminal.

canvas-ai as the OAuth client name.api as the JSON:API prefix.
.env. Never include it in screenshots, documentation, chat messages, or Git.Authorize the local Canvas tools to read and write the Source site.
Open the direct link printed by the wizard. You can also navigate to Configuration → Simple OAuth → Clients.

Select Add API client.

Use the values printed by the terminal wizard.
Select Save.
Return to Terminal, press Enter, and answer Y when asked to test the connection.
OAuth token obtained successfully.
JSON:API endpoint is reachable.
API setup complete!
Use Claude Code inside DDEV to inspect the source site and assemble the new page.
Storybook opens automatically when installation finishes. It contains the component library and example page the migration will replace.

Reopen it later with:
ddev launch :6006From the project folder, run:
ddev claude
The first time, sign in through the browser and select Authorize.

Inside Claude Code, enter:
/building-ui https://freelygive.io/ and name the storybook page example-pages-freelygive--freely-give and after you are done export it to Source right away
Choose Like-for-like when asked for the approach, then choose the desired fidelity. Claude inspects the site, creates or reuses components, assembles the page, and checks the result.

For a long-running demonstration, use Shift+Tab to switch to auto mode after reviewing Claude Code's permissions and risks.

When it finishes, leave Claude Code with exit.
Run the evaluation in a new Terminal from the project folder.
No Python virtual environment is required. Grade the migrated Storybook page:
ddev eval ABP_PAGE_STORY_ID=example-pages-freelygive--freely-give gradeView the newest scoreboard:
ddev eval viewExport it as an HTML report:
ddev eval exportNext session
For later sessions, the routine is short:
cd /path/to/your/migration-project
ddev start
ddev claudeTo run the evaluation again:
ddev eval ABP_PAGE_STORY_ID=example-pages-freelygive--freely-give grade
ddev eval view
ddev eval export.env contains Source URLs and OAuth credentials and must remain uncommitted.