Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

List Skills Command Laravel Package

stolt/list-skills-command

Drop-in Symfony Console command to list and introspect AI skill files from the CLI. Shows available skills, detailed metadata with verbose mode (name/version/description), basic validation, and filtering by tag or stable version.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture Fit

  • Niche Use Case: The package is highly specialized for AI skill discovery within PHP projects, specifically targeting projects using a custom llms.txt or similar skill definition format (e.g., SKILL.md files). This aligns well with modular CLI-driven PHP applications (e.g., tooling, automation, or AI agent frameworks).
  • Symfony Console Dependency: Requires a Symfony Console-based CLI application, which is common in Laravel (via laravel/framework or standalone symfony/console). However, Laravel’s native Artisan CLI is not directly compatible without abstraction.
  • Extensibility: The package follows a plugin-like architecture, where skills are discovered dynamically from filesystem conventions. This is a good fit for composable CLI tools but may require customization for non-standard project structures.

Integration Feasibility

  • Laravel Compatibility:
    • Low: Laravel’s Artisan does not natively support Symfony Console commands without a bridge (e.g., spatie/laravel-artisan-commands or custom integration).
    • Workaround: The package could be integrated as a standalone CLI tool (e.g., php vendor/bin/list-skills) or wrapped in a Laravel command via a facade.
  • Dependency Conflicts:
    • Requires Symfony Console ^5.0|^6.0|^7.0|^8.0 (Laravel 10+ uses Symfony 6.3/7.0, so no major conflicts).
    • Uses ergebnis/agent-detector (lightweight, no known conflicts).
    • stolt/skill-validator is a private package (dependency risk; may need forking or replacement).

Technical Risk

  • Skill Discovery Convention:
    • Relies on SKILL.md files in a project’s skills/ directory (or similar). Deviations (e.g., custom paths, naming) would require configuration overrides.
    • Risk: False positives/negatives if project structure differs.
  • Validation Logic:
    • Uses stolt/skill-validator for SKILL.md parsing. If this package is abandoned or changes, the command may break.
  • Performance:
    • Scans filesystem for skills on every run. For large projects, this could be slow (though caching could mitigate this).
  • Output Formats:
    • JSON/Markdown outputs are useful for CI/AI agents but may require additional parsing in Laravel contexts (e.g., for dynamic command generation).

Key Questions

  1. Project Alignment:
    • Does the Laravel project use a modular skill-based architecture (e.g., plugins, micro-services) where this tool would add value?
    • Are skills defined in SKILL.md files, or would custom parsing logic be needed?
  2. Integration Strategy:
    • Should this be a standalone CLI tool (e.g., php artisan list-skills) or a Laravel Artisan command (requiring a wrapper)?
  3. Dependency Management:
    • Is stolt/skill-validator acceptable as a dependency, or should validation logic be replicated?
  4. Extensibility Needs:
    • Would additional filters (e.g., by skill type, author) be required?
  5. Performance:
    • For large projects, should skill discovery be cached (e.g., in a config file or database)?

Integration Approach

Stack Fit

  • Symfony Console Dependency:
    • Laravel’s Artisan is not directly compatible, but the package can be integrated via:
      1. Standalone CLI: Install globally (composer global require) and invoke via php vendor/bin/list-skills.
      2. Artisan Wrapper: Create a custom Laravel command that shells out to the package or uses its logic via a facade.
      3. Symfony Console Integration: For projects already using Symfony Console (e.g., Laravel Octane CLI tools), direct integration is trivial.
  • PHP Version:
    • Requires PHP 8.2+ (Laravel 10+ meets this; older versions would need a fork or polyfills).
  • Output Consumption:
    • JSON output is ideal for APIs/CI, while Markdown/table formats suit developer tooling. Laravel could consume JSON to dynamically generate UI or documentation.

Migration Path

  1. Evaluation Phase:
    • Test the package in a sandbox project with a mock skills/ directory to validate skill discovery and output formats.
    • Verify compatibility with Laravel’s dependency resolver (e.g., composer require conflicts).
  2. Integration Options:
    • Option A (Recommended for CLI Tools):
      • Install via Composer (composer require stolt/list-skills-command).
      • Add a custom Artisan command that shells out to the package:
        // app/Console/Commands/ListSkills.php
        namespace App\Console\Commands;
        use Illuminate\Console\Command;
        use Symfony\Component\Process\Process;
        use Symfony\Component\Process\Exception\ProcessFailedException;
        
        class ListSkills extends Command
        {
            protected $signature = 'skills:list {--verbose : Show skill metadata}';
            protected $description = 'List AI skills in the project';
        
            public function handle()
            {
                $process = new Process(['vendor/bin/list-skills', $this->option('verbose') ? '--verbose' : '']);
                $process->run();
                if (!$process->isSuccessful()) {
                    throw new ProcessFailedException($process);
                }
                $this->output->write($process->getOutput());
            }
        }
        
    • Option B (For Deep Integration):
      • Fork the package to replace stolt/skill-validator with a Laravel-compatible validator (e.g., using Laravel’s File facade).
      • Extend ListSkillsCommand to integrate with Laravel’s service container (e.g., for caching or event dispatching).
  3. Configuration:
    • Expose skill directory paths via Laravel config (e.g., config/skills.php) to override defaults.
    • Example:
      // config/skills.php
      return [
          'directory' => base_path('custom-skills'),
          'validation' => env('SKILLS_VALIDATION', true),
      ];
      

Compatibility

  • Laravel-Specific Considerations:
    • Artisan Compatibility: Shelling out to the package avoids direct Symfony Console conflicts but adds process management overhead.
    • Service Container: The package does not use Laravel’s DI container, so integration would require manual instantiation or a facade.
    • Testing: Tests assume Symfony Console; Laravel’s testing tools (e.g., Artisan::call) would need adaptation.
  • Output Parsing:
    • JSON output can be parsed in Laravel for dynamic use (e.g., generating API docs or admin panels):
      $output = shell_exec('vendor/bin/list-skills --format-json');
      $skills = json_decode($output, true);
      

Sequencing

  1. Phase 1: Proof of Concept
    • Install the package and test skill discovery in a non-Laravel environment.
    • Validate output formats (CLI, JSON, Markdown) against project needs.
  2. Phase 2: Laravel Integration
    • Choose between shelling out or wrapping the command.
    • Implement configuration overrides for skill paths.
  3. Phase 3: Extensions
    • Add Laravel-specific features (e.g., caching, event triggers for skill changes).
    • Explore dynamic skill registration (e.g., via service providers).
  4. Phase 4: Documentation
    • Update Laravel-specific usage docs (e.g., custom commands, config options).

Operational Impact

Maintenance

  • Dependency Updates:
    • Monitor stolt/skill-validator and ergebnis/agent-detector for breaking changes (both are niche packages with low activity).
    • Laravel’s Symfony components (Console) are actively maintained, reducing risk.
  • Skill Schema Evolution:
    • If SKILL.md format changes (e.g., new metadata fields), the package may need updates. Forking or patching could be necessary.
  • Configuration Drift:
    • Custom skill paths or validation rules may require ongoing maintenance if project structure evolves.

Support

  • Troubleshooting:
    • Issues likely stem from:
      • Incorrect skill file locations or formats.
      • Symfony Console/Laravel Artisan integration bugs (e.g., process failures).
      • Validation errors from stolt/skill-validator.
    • Debugging may require inspecting raw SKILL.md files or Symfony Console logs.
  • Community:
    • Limited stars/dependents suggest low community support. Issues may require direct engagement with the maintainer.
  • Fallbacks:
    • For critical projects, replicate validation logic or use a more stable alternative (e.g., custom parser).

Scaling

  • Performance:
    • Filesystem scanning is the primary bottleneck. Mitigations:
      • Cache skill metadata in Laravel’s cache driver (e.g., cache()->remember()).
      • Use Laravel’s filesystem events to invalidate cache on skill file changes.
    • For thousands of skills, consider a database-backed registry (e.g., skills table with name, version, description).
  • **
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
ilhamsyabani/laravel-volt-starter
thethunderturner/filament-latex
ghostcompiler/laravel-querybuilder
webrek/laravel-telescope-mongodb
anousss007/blatui
zatona-eg/zatona-eg-api
cocosmos/filament-sticky-save-bar
patrickbussmann/oauth2-apple
3brs/enterprise-security-bundle
anousss007/vigilance
supportpal/eloquent-model
ardenexal/fhir-models
laravel-at/laravel-image-sanitize
romalytar/yammi-audit-log-laravel
ardenexal/fhir-validation
arshaviras/weather-widget
laravel-chronicle/core
sunchayn/nimbus
daikazu/eloquent-salesforce-objects
unseen-codes/chat