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
- Retry the installation once — transient installer failures often resolve
- Inspect package.json in the remotionRoot to confirm the dependency was actually added; if not, add it manually and run the package manager install
- Check that the package manager resolved to the correct workspace and that node_modules contains the skill
- 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
- Verify package.json in the remotionRoot after installs in monorepos
- Run the installer manually once to see its real output
- Ensure the package manager resolves dependencies inside the remotionRoot
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
- The remover finished, but
- A skill is already being installed or removed. Please try…
- Asset was not found in public/.
- assetPath must be a non-empty public-folder path, or an…
- Cannot create an undo entry without snapshots
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)