{"record":{"id":"1ff08d8c7e9c7275","repo":"Fission-AI/OpenSpec","slug":"skipping-legacy-legacyroot-skills-dirname-mi","errorCode":null,"errorMessage":"Skipping legacy ${legacyRoot}/skills/${dirName} migration because it resolves outside this project.","messagePattern":"Skipping legacy (.+?)/skills/(.+?) migration because it resolves outside this project\\.","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/core/migration.ts","lineNumber":247,"sourceCode":"  requireDestination = false\n): { moved: number; kept: number } {\n  const legacySkillsDir = path.join(projectPath, legacyRoot, 'skills');\n  if (!fs.existsSync(legacySkillsDir)) return { moved: 0, kept: 0 };\n  const currentSkillsDir = path.join(projectPath, currentRoot, 'skills');\n  let moved = 0;\n  let kept = 0;\n\n  for (const workflowId of ALL_WORKFLOWS) {\n    const dirName = WORKFLOW_TO_SKILL_DIR[workflowId];\n    const source = path.join(legacySkillsDir, dirName);\n    const sourceSkill = path.join(source, 'SKILL.md');\n    if (!fs.existsSync(sourceSkill)) continue;\n\n    const destination = path.join(currentSkillsDir, dirName);\n    const destinationSkill = path.join(destination, 'SKILL.md');\n    if (requireDestination && !fs.existsSync(destinationSkill)) continue;\n    if (!areProjectArtifacts(projectPath, sourceSkill, destinationSkill)) {\n      console.warn(\n        `Skipping legacy ${legacyRoot}/skills/${dirName} migration because it resolves outside this project.`\n      );\n      continue;\n    }\n    const disposition = classifyManagedFile(sourceSkill, destinationSkill);\n    if (disposition === 'skip') continue;\n    if (disposition === 'keep') {\n      kept++;\n      continue;\n    }\n    if (!apply) {\n      moved++;\n      continue;\n    }\n\n    try {\n      // Move the generated file, never the directory around it. A skill\n      // directory can also hold files the user wrote, and this destination is","sourceCodeStart":229,"sourceCodeEnd":265,"githubUrl":"https://github.com/Fission-AI/OpenSpec/blob/6926ccb18afa4ff621112813e9968334576ee11a/src/core/migration.ts#L229-L265","documentation":"Error \"Skipping legacy ${legacyRoot}/skills/${dirName} migration because it resolves outside this project.\" thrown in Fission-AI/OpenSpec.","triggerScenarios":"Thrown at src/core/migration.ts:247 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"6926ccb18afa4ff621112813e9968334576ee11a","analyzedAt":"2026-08-25T12:29:45.729Z","schemaVersion":2},"datasetVersion":"2026-08-25T16:17:27.014Z"}