migrate-app-to-flows
Skill6 starsChanged 9 days agoApache-2.0View on GitHub
MUST be used when migrating a legacy Dune app to the new Flows app hosting infrastructure. Orchestrates the full migration: audits current state, updates app.json to appsApi infra, delegates auth wiring to setup-flows-auth, creates or updates manifest.json network permissions, and updates deploy scripts to @cognite/cli. Use this whenever a user says 'migrate to Flows', 'migrate to new infra', 'move from dune to flows', 'migrate legacy app', or wants to move their existing app to the new Flows app hosting.
In this repository34 other files it gives its agents.
- aura-reviewSkill
- call-cognite-functionSkill
- code-qualitySkill
- connect-atlas-mcpSkill
- correctness-and-error-handlingSkill
- create-agentSkill
- create-client-toolSkill
- dependencies-auditSkill
- designSkill
- dm-graph-traversalSkill
- dm-limits-and-best-practicesSkill
- flows-app-briefSkill
- flows-code-reviewSkill
- flows-design-reviewSkill
- flows-external-app-submitSkill
- flows-review-checksSkill
- graph-viewerSkill
- handle-startup-stateSkill
- hide-show-shellSkill
- integrate-atlas-chatSkill
- integrate-file-viewerSkill
- integrate-fusion-agentSkill
- integrate-todo-listSkill
- performanceSkill
- pull-changes-resolve-conflictsSkill
- reveal-3dSkill
- securitySkill
- setup-flows-authSkill
- setup-python-toolsSkill
- skill-creatorSkill
- start-flows-appSkill
- test-coverageSkill
- tygenSkill
- use-topbarSkill
The file
We split this skill into the rules it gives an agent
6 rules. About 0 are common, 0 are distinctive, and 6 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈0
Distinctive · estimate
This author's own choices. Worth a look.
6
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 15
Read app.json, package.json, vite.config.ts, and manifest.json (if present).
- Very specific: line 33
If infra is already "appsApi", skip this step.
- Very specific: line 65
Run the setup-flows-auth skill now.
- Very specific: line 107
Use full origin (scheme + hostname) in sources, not just the hostname.
- Very specific: line 110
If no external calls exist, leave "network": [].
- Very specific: line 128
Keep all other scripts (start, build, test, etc.) unchanged.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Migrate App to Flows Infrastructure
Orchestrates the full migration of a legacy Dune app to the new Flows app hosting (appsApi). Works through each area in order, skipping any already in the correct state.
Step 1 — Audit current state
Read app.json, package.json, vite.config.ts, and manifest.json (if present).
Report a concise summary before making any changes:
Migration audit:
✗ app.json: missing infra field → will add "infra": "appsApi"
✗ Auth: DuneAuthProvider in use → will run setup-flows-auth
✗ manifest.json: missing → will create
✓ Deploy script: already uses @cognite/cliThen proceed through Steps 2–5.
Step 2 — Update app.json
If infra is already "appsApi", skip this step. Otherwise:
Fix legacy deployment key format first. Many POC apps use "deployment" (singular, plain object). The CLI requires "deployments" (plural, array). If the file has the old format, rename the key and wrap the value in an array before proceeding:
// Before (legacy)
{
"deployment": { "org": "...", "project": "...", ... }
}
// After (correct)
{
"deployments": [{ "org": "...", "project": "...", ... }]
}Then add "infra": "appsApi":
{
"name": "My App",
"externalId": "my-app",
"versionTag": "0.0.1",
"infra": "appsApi",
"deployments": [...]
}Step 3 — Set up Flows auth
Run the setup-flows-auth skill now. It handles everything auth-related: package installation, Vite plugin updates, entry file changes, and wiring up connectToHostApp.
Step 4 — Create or update manifest.json
The Flows host uses manifest.json to enforce a Content Security Policy for the app. It must exist at the repo root.
Create if missing:
{
"manifestVersion": 1,
"permissions": {
"network": []
}
}Populate network permissions by scanning for outbound calls to external domains:
grep -rn "fetch\|axios\|new XMLHttpRequest" src/ --include="*.ts" --include="*.tsx"For each group of external URLs found, add an entry to the network array using the sources/directives shape:
{
"manifestVersion": 1,
"permissions": {
"network": [
{
"sources": ["https://api.example.com", "https://maps.googleapis.com"],
"directives": ["connect-src"]
}
]
}
}Rules:
- Use full origin (scheme + hostname) in
sources, not just the hostname. "connect-src"coversfetch/XMLHttpRequest. Use"img-src"for image URLs,"font-src"for fonts.- The CDF cluster URL is allowed automatically; do not list it.
- If no external calls exist, leave
"network": []. - Flag any dynamic URLs the user needs to verify manually.
Step 5 — Update deploy scripts
Replace any dune deploy or npx @cognite/dune commands in package.json:
{
"scripts": {
"deploy": "npx @cognite/cli@latest apps deploy --interactive",
"deploy-preview": "npx @cognite/cli@latest apps deploy --interactive"
}
}Keep all other scripts (start, build, test, etc.) unchanged.
Step 6 — Final check
grep -rn "DuneAuthProvider\|useDune\|@cognite/dune" src/ vite.config.ts 2>/dev/nullList any remaining hits for the user to resolve. Then report:
Migration complete:
✓ app.json: infra set to "appsApi", deployments key is an array
✓ Auth: setup-flows-auth applied
✓ manifest.json: network permissions set
✓ Deploy scripts: updated to @cognite/cliThen tell the user exactly what to do next:
Next steps:
1. Run `npm run dev` to start the dev server
2. Open Fusion and verify the app loads and CDF data appears correctly
3. When happy, deploy with: npx @cognite/cli@latest apps deploy --interactiveDoes it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

