SYMBOL INDEX (54 symbols across 17 files) FILE: src/commands/install.ts type InstallSourceInfo (line 15) | interface InstallSourceInfo { function isLocalPath (line 25) | function isLocalPath(source: string): boolean { function isGitUrl (line 37) | function isGitUrl(source: string): boolean { function getRepoName (line 50) | function getRepoName(repoUrl: string): string | null { function expandPath (line 61) | function expandPath(source: string): string { function isPathInside (line 71) | function isPathInside(targetPath: string, targetDir: string): boolean { function installSkill (line 83) | async function installSkill(source: string, options: InstallOptions): Pr... function printPostInstallHints (line 189) | function printPostInstallHints(isProject: boolean): void { function installFromLocal (line 199) | async function installFromLocal( function installSingleLocalSkill (line 231) | async function installSingleLocalSkill( function installSpecificSkill (line 272) | async function installSpecificSkill( function installFromRepo (line 321) | async function installFromRepo( function buildMetadataFromSource (line 485) | function buildMetadataFromSource( function buildGitMetadata (line 498) | function buildGitMetadata(sourceInfo: InstallSourceInfo, subpath: string... function buildLocalMetadata (line 508) | function buildLocalMetadata(sourceInfo: InstallSourceInfo, skillDir: str... function warnIfConflict (line 521) | async function warnIfConflict(skillName: string, targetPath: string, isP... function getDirectorySize (line 561) | function getDirectorySize(dirPath: string): number { function formatSize (line 580) | function formatSize(bytes: number): string { FILE: src/commands/list.ts function listSkills (line 7) | function listSkills(): void { FILE: src/commands/manage.ts function manageSkills (line 10) | async function manageSkills(): Promise { FILE: src/commands/read.ts function readSkill (line 8) | function readSkill(skillNames: string[] | string): void { FILE: src/commands/remove.ts function removeSkill (line 8) | function removeSkill(skillName: string): void { FILE: src/commands/sync.ts type SyncOptions (line 10) | interface SyncOptions { function syncAgentsMd (line 18) | async function syncAgentsMd(options: SyncOptions = {}): Promise { FILE: src/commands/update.ts function updateSkills (line 14) | async function updateSkills(skillNames: string[] | string | undefined): ... function updateSkillFromDir (line 152) | function updateSkillFromDir(targetPath: string, sourceDir: string): void { function isPathInside (line 165) | function isPathInside(targetPath: string, targetDir: string): boolean { FILE: src/types.ts type Skill (line 1) | interface Skill { type SkillLocation (line 8) | interface SkillLocation { type InstallOptions (line 14) | interface InstallOptions { type SkillMetadata (line 20) | interface SkillMetadata { FILE: src/utils/agents-md.ts function parseCurrentSkills (line 6) | function parseCurrentSkills(content: string): string[] { function generateSkillsXml (line 23) | function generateSkillsXml(skills: Skill[]): string { function replaceSkillsSection (line 67) | function replaceSkillsSection(content: string, newSection: string): stri... function removeSkillsSection (line 98) | function removeSkillsSection(content: string): string { FILE: src/utils/dirs.ts function getSkillsDir (line 7) | function getSkillsDir(projectLocal: boolean = false, universal: boolean ... function getSearchDirs (line 18) | function getSearchDirs(): string[] { FILE: src/utils/marketplace-skills.ts constant ANTHROPIC_MARKETPLACE_SKILLS (line 5) | const ANTHROPIC_MARKETPLACE_SKILLS = [ FILE: src/utils/skill-metadata.ts constant SKILL_METADATA_FILE (line 4) | const SKILL_METADATA_FILE = '.openskills.json'; type SkillSourceType (line 6) | type SkillSourceType = 'git' | 'github' | 'local'; type SkillSourceMetadata (line 8) | interface SkillSourceMetadata { function readSkillMetadata (line 17) | function readSkillMetadata(skillDir: string): SkillSourceMetadata | null { function writeSkillMetadata (line 29) | function writeSkillMetadata(skillDir: string, metadata: SkillSourceMetad... FILE: src/utils/skill-names.ts function normalizeSkillNames (line 1) | function normalizeSkillNames(input: string[] | string | undefined): stri... FILE: src/utils/skills.ts function isDirectoryOrSymlinkToDirectory (line 10) | function isDirectoryOrSymlinkToDirectory(entry: Dirent, parentDir: strin... function findAllSkills (line 30) | function findAllSkills(): Skill[] { function findSkill (line 69) | function findSkill(skillName: string): SkillLocation | null { FILE: src/utils/yaml.ts function extractYamlField (line 4) | function extractYamlField(content: string, field: string): string { function hasValidFrontmatter (line 12) | function hasValidFrontmatter(content: string): boolean { FILE: tests/integration/e2e.test.ts function runCli (line 12) | function runCli(args: string, cwd?: string): { stdout: string; stderr: s... function createTestSkill (line 31) | function createTestSkill(dir: string, name: string, description: string ... FILE: tests/utils/skills.test.ts function createSkill (line 16) | function createSkill(baseDir: string, skillName: string, description: st... function createSymlinkedSkill (line 33) | function createSymlinkedSkill( function createBrokenSymlink (line 59) | function createBrokenSymlink(skillsDir: string, skillName: string): void {