export type SkillLinkState = 'absent' | 'linked' | 'frozen';
export interface SkillInfo {
    name: string;
    userPath: string;
    hasSkillMd: boolean;
}
export interface ProjectSkillState extends SkillInfo {
    state: SkillLinkState;
    target?: string;
}
export declare function userSkillsRoot(): string;
export declare function listUserSkills(): SkillInfo[];
export declare function projectSkillsDir(projectDir: string): string;
export declare function projectSkillPath(projectDir: string, name: string): string;
export declare function inspectProjectSkill(projectDir: string, name: string): ProjectSkillState | null;
export type AddResult = 'linked' | 'copied' | 'skipped-linked' | 'skipped-frozen' | 'skipped-absent';
export declare function addSkillToProject(projectDir: string, name: string): AddResult;
export declare function removeSkillFromProject(projectDir: string, name: string): boolean;
export declare function freezeSkillInProject(projectDir: string, name: string): boolean;
export declare function unfreezeSkillInProject(projectDir: string, name: string): boolean;
/**
 * Bulk link every user-level skill into the project. Idempotent:
 * - absent → symlink（或回退 cpSync）
 * - linked → 保留
 * - frozen → 保留（用户已 freeze 的不重建）
 */
export declare function syncAllSkillsToProject(projectDir: string): {
    linked: number;
    copied: number;
    kept: number;
};
/**
 * 把 bundled skills（npm 包内 skills/）拷贝到 ~/.coral/skills/。
 *
 * 默认 non-destructive：已存在的 skill 目录保留，不覆盖用户改动。
 * `force=true`（v0.51.2+）：用 bundled 的 SKILL.md 覆盖（升级 sps-cli 后拉新 SOP）。
 *   注意：force 会覆盖用户对 ~/.coral/skills/<name>/ 的直接编辑。如想保留定制，
 *   先 `sps skill freeze <name> --project <p>` 把它固化到项目级（项目级副本不受
 *   sync 影响）。
 *
 * Bundled → user 必须是 cpSync，因为 npm 包路径会随重装变化，symlink 会失效。
 */
export declare function syncBundledSkillsToUser(bundledSkillsDir: string, opts?: {
    force?: boolean;
}): {
    copied: number;
    updated: number;
    skipped: number;
};
/**
 * 把 .claude/skills/ 条目追加到 .gitignore（幂等）。
 * 项目级 skill 是 symlink 到本机 ~/.coral/，不该进仓库。
 */
export declare function ensureSkillsGitignore(projectDir: string): void;
//# sourceMappingURL=skillStore.d.ts.map