import path from "node:path";
import { exists } from "../fsx.ts";
import type { TargetAdapter, TargetContext } from "../types.ts";
import { anyExists, scopeRoot, skillDirActions } from "./common.ts";

/**
 * Cursor — ~/.cursor/skills/designpaca/ (전역) 또는 .cursor/skills/designpaca/ (프로젝트).
 *
 * Cursor 는 Agent Skills 규약을 네이티브로 읽는다. 시작 시 자기 경로(.cursor/skills)와
 * 중립 경로(.agents/skills)를 살피고, 호환 경로(.claude/skills · .codex/skills)까지 함께
 * 읽는다 — 그래서 SKILL.md 를 변환 없이 그대로 복사하면 끝난다.
 *
 * 예전엔 .cursor/rules/designpaca.mdc 로 변환했지만 그 접근은 버렸다. 규칙 파일은
 * 프론트매터가 다르고 본문이 통째로 프롬프트에 들어가는 규약이라 설명만 띄우고
 * 본문·references 는 필요할 때 여는 스킬 방식이 맞다. 이제 전역 설치도 된다.
 */
export const cursor: TargetAdapter = {
  id: "cursor",
  label: "Cursor",
  hint: "~/.cursor/skills/designpaca — SKILL.md 그대로 (전역 지원)",
  scopes: ["user", "project"],

  async detect(ctx: TargetContext) {
    return anyExists([path.join(ctx.home, ".cursor"), path.join(ctx.cwd, ".cursor")]);
  },

  async plan(ctx: TargetContext) {
    const root = scopeRoot(
      ctx,
      [".cursor", "skills", "designpaca"],
      [".cursor", "skills", "designpaca"],
    );
    return {
      target: this.id,
      scope: ctx.scope,
      root,
      actions: skillDirActions(root, ctx.skill),
      alreadyInstalled: await exists(path.join(root, "SKILL.md")),
    };
  },
};
