defaultSkillRoots function

({List<SkillRoot> projectRoots, List<SkillRoot> userRoots}) defaultSkillRoots({
  1. required String cwd,
  2. String? homeDir,
})

The default skill roots for a host.

Project: .fah/skills + .agents/skills (first-party), then the third-party Agent Skills locations .claude/skills, .github/skills, .codex/skills, plus Claude's .claude/commands (flat command files). User (when a home directory exists): the same set under ~, plus ~/.copilot/skills and ~/.claude/commands. Web/sandbox hosts pass their sandbox cwd and no home (the sandbox FS carries project skills).

Implementation

({List<SkillRoot> projectRoots, List<SkillRoot> userRoots}) defaultSkillRoots({
  required String cwd,
  String? homeDir,
}) {
  return (
    projectRoots: [
      SkillRoot('$cwd/.fah/skills', SkillSource.fah),
      SkillRoot('$cwd/.agents/skills', SkillSource.agents),
      SkillRoot('$cwd/.claude/skills', SkillSource.claude),
      SkillRoot('$cwd/.github/skills', SkillSource.copilot),
      SkillRoot('$cwd/.codex/skills', SkillSource.codex),
      SkillRoot('$cwd/.claude/commands', SkillSource.claude, commandDir: true),
    ],
    userRoots: homeDir == null
        ? const <SkillRoot>[]
        : [
            SkillRoot('$homeDir/.fah/skills', SkillSource.fah),
            SkillRoot('$homeDir/.agents/skills', SkillSource.agents),
            SkillRoot('$homeDir/.claude/skills', SkillSource.claude),
            SkillRoot('$homeDir/.copilot/skills', SkillSource.copilot),
            SkillRoot('$homeDir/.codex/skills', SkillSource.codex),
            SkillRoot(
              '$homeDir/.claude/commands',
              SkillSource.claude,
              commandDir: true,
            ),
          ],
  );
}