packages/shared/src/in-app-agent/server/skills/generated/raw/v4-project-migration.md
Use this as the canonical v4 platform migration workflow. A coding agent should execute the SDK and code changes using the SDK and trace-level evaluator upgrade workflows; the Langfuse in-app agent can execute the project steps and produce the same code handoff.
Fetch the applicable pages before taking action:
Discover the current API or tool schema before writes; the evaluator endpoints are unstable.
npx langfuse-cli or bunx langfuse-cli; a global installation is optional.LANGFUSE_PUBLIC_KEY, LANGFUSE_SECRET_KEY, and LANGFUSE_BASE_URL in their environment. Never ask them to paste secrets into the conversation or commit credentials.npx langfuse-cli api __schema. Inspect each resource and action with --help before use, and request machine-readable output with --json.https://langfuse.com/docs/deprecated-api-migration.md with stable section anchors for programmatic use.curl in scripts and CI, generated API clients, SDK API namespaces such as langfuse.api.* and langfuse.api.legacy.*, notebooks, dashboards, and data pipelines. Inventory them by searching for /api/public paths and the deprecated endpoint names, not only for client libraries.status is active. Report paused/inactive rules separately; do not reactivate or migrate them unless requested.list and get as the source of truth for legacy trace rules. If a bulk page fails, retry with limit=1 and report unreadable entries as blockers.For every active legacy rule, record:
| Field | Required decision |
|---|---|
| Existing rule | Name, evaluator, active status, filters, sampling, and variable mappings |
| New target | Trace to one observation; dataset/dataset run to experiment |
| Selector | Stable observation name/type plus any propagated trace-attribute filters |
| Mapping | Every evaluator variable mapped exactly once to a supported source and optional JSONPath |
| Required data | Exact input, output, metadata, or tool-call fields that must exist on the target observation |
| Code handoff | Missing observation fields or attributes that the coding agent must add |
| Cutover | How the new rule will be verified before the legacy rule is disabled |
references/trace-evaluator-upgrade.md; do not ask it to rediscover project configuration from code.If the available project interface cannot read or update a legacy rule, provide the exact Evaluators UI action and retain it as an explicit blocker rather than claiming completion.
Switching an integration to enriched-only output is a breaking change for downstream consumers; enabling the dual source (legacy plus enriched observations) is additive and safe. Fetch the documented upgrade paths and follow them instead of restating export mechanics from memory:
Key takeaways:
Effects outside Langfuse — spell these out per configured integration before the enriched-only cutover:
manual action, not ready, until the user confirms consumers handle the new schema.Return one row per area with ready, changed, manual action, or blocked:
Include direct UI links and the evaluator migration contract so an off-platform coding agent and the in-app agent can continue from the same facts.