Handle /skills command - list available skills. Args: args: Command arguments context: Command context Returns: LocalCommandResult
(args: str, context: CommandContext)
| 220 | |
| 221 | |
| 222 | def skills_command_call(args: str, context: CommandContext) -> LocalCommandResult: |
| 223 | """ |
| 224 | Handle /skills command - list available skills. |
| 225 | |
| 226 | Args: |
| 227 | args: Command arguments |
| 228 | context: Command context |
| 229 | |
| 230 | Returns: |
| 231 | LocalCommandResult |
| 232 | """ |
| 233 | try: |
| 234 | from ..skills.loader import get_all_skills |
| 235 | # Pass project_root to find skills in project directories |
| 236 | skills = get_all_skills(project_root=context.cwd or context.workspace_root) |
| 237 | except Exception: |
| 238 | skills = [] |
| 239 | |
| 240 | if not skills: |
| 241 | return LocalCommandResult( |
| 242 | type="text", |
| 243 | value="No skills available. Add skills to ~/.clawcodex/skills/ or ./.clawcodex/skills/.", |
| 244 | ) |
| 245 | |
| 246 | lines = ["Available skills:", ""] |
| 247 | for skill in skills: |
| 248 | lines.append(f" {skill.name}") |
| 249 | lines.append(f" {skill.description}") |
| 250 | if skill.when_to_use: |
| 251 | lines.append(f" When to use: {skill.when_to_use}") |
| 252 | lines.append("") |
| 253 | |
| 254 | return LocalCommandResult( |
| 255 | type="text", |
| 256 | value="\n".join(lines), |
| 257 | ) |
| 258 | |
| 259 | |
| 260 | def exit_command_call(args: str, context: CommandContext) -> LocalCommandResult: |
no test coverage detected