Fission-AI/OpenSpec · error
Skipping legacy ${legacyRoot}/skills/${dirName} migration be
Error message
Skipping legacy ${legacyRoot}/skills/${dirName} migration because it resolves outside this project. What it means
Error "Skipping legacy ${legacyRoot}/skills/${dirName} migration because it resolves outside this project." thrown in Fission-AI/OpenSpec.
Source
Thrown at src/core/migration.ts:247
requireDestination = false
): { moved: number; kept: number } {
const legacySkillsDir = path.join(projectPath, legacyRoot, 'skills');
if (!fs.existsSync(legacySkillsDir)) return { moved: 0, kept: 0 };
const currentSkillsDir = path.join(projectPath, currentRoot, 'skills');
let moved = 0;
let kept = 0;
for (const workflowId of ALL_WORKFLOWS) {
const dirName = WORKFLOW_TO_SKILL_DIR[workflowId];
const source = path.join(legacySkillsDir, dirName);
const sourceSkill = path.join(source, 'SKILL.md');
if (!fs.existsSync(sourceSkill)) continue;
const destination = path.join(currentSkillsDir, dirName);
const destinationSkill = path.join(destination, 'SKILL.md');
if (requireDestination && !fs.existsSync(destinationSkill)) continue;
if (!areProjectArtifacts(projectPath, sourceSkill, destinationSkill)) {
console.warn(
`Skipping legacy ${legacyRoot}/skills/${dirName} migration because it resolves outside this project.`
);
continue;
}
const disposition = classifyManagedFile(sourceSkill, destinationSkill);
if (disposition === 'skip') continue;
if (disposition === 'keep') {
kept++;
continue;
}
if (!apply) {
moved++;
continue;
}
try {
// Move the generated file, never the directory around it. A skill
// directory can also hold files the user wrote, and this destination isView on GitHub (pinned to 6926ccb18a)
When it happens
Trigger: Thrown at src/core/migration.ts:247 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of Fission-AI/OpenSpec@6926ccb18a (2026-08-25).
Data as JSON: /api/errors/1ff08d8c7e9c7275.
Report an issue: GitHub.