NAME

Langertha::Raider::SkillResolver - Internal chain of skill resolvers: a skill name to its directory and SKILL.md

VERSION

version 0.504

SYNOPSIS

# Internal to Langertha-Raider -- no API promise.
my $resolver = Langertha::Raider::SkillResolver->new(
  resolvers => [
    Langertha::Raider::SkillResolver::Catalog->new( catalog => $context->skill_catalog ),
  ],
);
my $skill = $resolver->resolve('getty-perl-core');
# { name => 'getty-perl-core', dir => '/abs/.claude/skills/getty-perl-core',
#   file => '/abs/.claude/skills/getty-perl-core/SKILL.md' }  or undef

DESCRIPTION

Internal module. Its interface may change without notice.

The one interface through which a skill an agent declares is found when it is briefed (ADR 0020 §6): an ordered chain of resolvers, each an object with a resolve($name) method that returns { name, dir, file } or nothing. The first resolver that knows the name wins.

The chain of an application is "skill_resolver" in Langertha::Raider::Context, built from "skill_resolvers" in Langertha::Raider::Context: the skill catalogue of the context (Langertha::Raider::SkillResolver::Catalog), then -- in the Claude layout -- the skills of the sources in skilletor.json, read straight from the source without installing them (Langertha::Raider::SkillResolver::Skilletor).

A resolver may also answer why_unresolved($name) with a reason for a name it knows of but cannot serve (a template, a source that cannot be fetched); "why_unresolved" asks them.

resolvers

The resolvers, first asked first. Defaults to none (nothing resolves).

resolve

my $skill = $resolver->resolve('superpowers:brainstorming');

The { name, dir, file } of the first resolver that knows $name, or undef.

why_unresolved

my $reason = $resolver->why_unresolved('tpl');   # 'skilletor: ...' or undef

The first reason a resolver of the chain gives for $name not resolving (a resolver without a why_unresolved method has none), or undef.

SEE ALSO

SUPPORT

Issues

Please report bugs and feature requests at https://github.com/Getty/langertha-raider/issues.

IRC

Join #langertha on irc.perl.org or message Getty directly.

CONTRIBUTING

Contributions are welcome! Please fork the repository and submit a pull request.

AUTHOR

Torsten Raudssus <torsten@raudssus.de> https://raudssus.de/

COPYRIGHT AND LICENSE

This software is copyright (c) 2026 by Torsten Raudssus.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.

https://raudssus.de/