remotion-dev/remotion · error

The installer finished, but

Error message

The installer finished, but ${skill} was not found in the project. Please try again.

What it means

After running the package-manager install for a skill, changeRemotionSkill re-reads the skills info and verifies the skill now reports installedInProject === true. If the installer exited successfully but the skill is still not detected in the project, the state is inconsistent, so this error is thrown and the caller is asked to retry.

Solutions

  1. Retry the installation once — transient installer failures often resolve
  2. Inspect package.json in the remotionRoot to confirm the dependency was actually added; if not, add it manually and run the package manager install
  3. Check that the package manager resolved to the correct workspace and that node_modules contains the skill
  4. Run the install command manually in the remotionRoot to see the real installer output

Example fix

// before: trusting the API result blindly
await installSkill('@remotion/captions');
// after: verify and retry
try {
  await installSkill('@remotion/captions');
} catch {
  await installSkill('@remotion/captions'); // retry once, or check package.json manually
}
Defensive patterns

Strategy: retry

Validate before calling

const info = await getRemotionSkillsInfo();
if (!info.skills.some((s) => s.name === skill && s.installedInProject)) {
  // not installed yet — fix environment before calling install
}

Try / catch

try {
  await installSkill(skill);
} catch (e) {
  if (e.message.includes('was not found in the project')) {
    await installSkill(skill); // retry once; then inspect package.json manually
  }
}

Prevention

When it happens

Trigger: Calling installRemotionSkillHandler where the install command completes (exit 0) but the subsequent getRemotionSkillsInfo lookup finds no project installation — e.g. the package manager installed to the wrong workspace, the install silently no-op'd, or package.json was not updated.

Common situations: Monorepo/hoisting placing the dependency outside the remotionRoot; a package manager (pnpm/yarn workspaces) resolving the package differently than expected; a locked/failed package.json write.

Related errors


AI-assisted analysis of remotion-dev/remotion@46a3a6bf13 (2026-09-18). Data as JSON: /api/errors/0bc271c487cbf509. Report an issue: GitHub.

Appendix: source

Thrown at packages/studio-server/src/preview-server/routes/install-remotion-skill.ts:117

				child.stderr.on('data', onData);
				child.on('error', reject);
				child.on('close', (code, signal) => {
					if (code === 0) {
						resolve();
					} else {
						reject(
							new Error(
								`Could not ${action} ${skill} (exit code ${code}, signal ${signal}). ${output.trim()}`,
							),
						);
					}
				});
			});

			const info = getRemotionSkillsInfo({remotionRoot});
			const updatedSkill = info.skills.find(({name}) => name === skill);
			if (action === 'install' && !updatedSkill?.installedInProject) {
				throw new Error(
					`The installer finished, but ${skill} was not found in the project. Please try again.`,
				);
			}

			if (
				action === 'remove' &&
				(removingGlobally
					? updatedSkill?.installedGlobally
					: updatedSkill?.installedInProject)
			) {
				throw new Error(
					`The remover finished, but ${skill} is still installed ${removingGlobally ? 'globally' : 'in the project'}. Please try again.`,
				);
			}

			RenderInternals.Log.info(
				{indent: false, logLevel},
				RenderInternals.chalk.gray('╰─ '),

View on GitHub (pinned to 46a3a6bf13)