run method

  1. @override
Future<void> run()
override

Run the command

Implementation

@override
Future<void> run() async {
  try {
    final loader = SkillLoader(skillsPath: skillsPath);
    final skills = await loader.loadAll();

    if (skills.isEmpty) {
      print('No skills found in $skillsPath');
      return;
    }

    // Sort skills by name
    skills.sort((a, b) => a.name.compareTo(b.name));

    print('Available Skills (${skills.length}):');
    print('');

    for (final skill in skills) {
      print('  ${skill.name}');
      if (skill.description.isNotEmpty) {
        print('    ${skill.description}');
      }
      if (skill.metadata.hasDependencies) {
        print('    Depends on: ${skill.metadata.dependencies.join(', ')}');
      }
      if (skill.metadata.hasVersionRequirement) {
        print('    Requires ServerPod: ${skill.metadata.minServerpodVersion}');
      }
      if (skill.metadata.tags.isNotEmpty) {
        print('    Tags: ${skill.metadata.tags.join(', ')}');
      }
      print('');
    }
  } catch (e) {
    stderr.writeln('Error loading skills: $e');
    exit(1);
  }
}