{"record":{"id":"18ff7cf67465a46d","repo":"Fission-AI/OpenSpec","slug":"skipping-legacy-legacy-root-migration-because","errorCode":null,"errorMessage":"Skipping legacy ${legacy.root}/ migration because the directory resolves outside this project.","messagePattern":"Skipping legacy (.+?)/ migration because the directory resolves outside this project\\.","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/core/migration.ts","lineNumber":182,"sourceCode":"    if (!tool.skillsDir) continue;\n    if (toolIds && !toolIds.includes(tool.value)) continue;\n\n    for (const legacy of LEGACY_TOOL_ROOTS[tool.value] ?? []) {\n      const legacyTiming = legacy.timing ?? 'before-generation';\n      if (legacyTiming !== timing) continue;\n      if (legacy.root === tool.skillsDir) continue;\n      // Without an explicit tool list, only moves that need no consent run.\n      if (apply && !toolIds && legacy.needsConsent) continue;\n      const legacyRootPath = path.join(projectPath, legacy.root);\n      if (!fs.existsSync(legacyRootPath)) continue;\n      try {\n        FileSystemUtils.assertProjectArtifactPath(projectPath, legacyRootPath);\n        FileSystemUtils.assertProjectArtifactPath(\n          projectPath,\n          path.join(projectPath, tool.skillsDir)\n        );\n      } catch {\n        console.warn(\n          `Skipping legacy ${legacy.root}/ migration because the directory resolves outside this project.`\n        );\n        continue;\n      }\n\n      const skills = migrateSkillDirs(\n        projectPath,\n        tool.skillsDir,\n        legacy.root,\n        apply,\n        legacyTiming === 'after-generation'\n      );\n      const commands = migrateCommandFiles(projectPath, tool, legacy.root, apply);\n\n      if (apply) {\n        removeDirIfEmpty(path.join(legacyRootPath, 'skills'));\n        removeDirIfEmpty(path.join(legacyRootPath, 'workflows'));\n        removeDirIfEmpty(legacyRootPath);","sourceCodeStart":164,"sourceCodeEnd":200,"githubUrl":"https://github.com/Fission-AI/OpenSpec/blob/6926ccb18afa4ff621112813e9968334576ee11a/src/core/migration.ts#L164-L200","documentation":"Error \"Skipping legacy ${legacy.root}/ migration because the directory resolves outside this project.\" thrown in Fission-AI/OpenSpec.","triggerScenarios":"Thrown at src/core/migration.ts:182 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"}