NAME
Langertha::Raider::Packs - Pack discovery, loading, and management for raider personas and power bundles
VERSION
version 0.503
DESCRIPTION
Finds and loads the packs of a workspace (ADR 0012): named bundles of skill text, persona defaults and requested tools that raider stacks onto the mission.
build_packs
my $packs = Langertha::Raider::Packs::build_packs(
root => '/path/to/project', # workspace root
home => '/home/me', # optional
);
Returns a Langertha::Raider::Packs::Collection of every pack found. A pack is a directory with an optional pack.yml and an optional SKILL.md (without one it contributes no skill text). They are searched in these places; a pack name found in an earlier place hides the same name in a later one, so a bundled pack can be replaced by a project or home pack of its name, not by one from $RAIDER_PACK_DIRS:
- 1.
project: <root>/.raider/packs/<name>/ - 2.
home: ~/.raider/packs/<name>/, ~ beinghome, else$ENV{HOME}, else the user's home from the password database - 4.
env: the directories in$RAIDER_PACK_DIRS(colon separated)
Each pack keeps the kind of place it came from as "origin" in Langertha::Raider::Packs::Pack. When root is the home directory, its .raider/packs/ counts as home.
A pack directory that cannot be loaded (a pack.yml that is not valid YAML or not a mapping, a value of the wrong type) is skipped and listed in "skipped_packs" in Langertha::Raider::Packs::Collection; a pack of the same name further down the search order takes its place. It never stops the start.
Project packs are loaded right away, like the detect: rules of the project's own config: the workspace trust decision of ADR 0004, which is meant to gate both, does not exist yet.
pack.yml knows these keys; others are ignored:
exclusive_group-- the group the pack belongs to, defaultpower. Packs ofpowerstack; of any other group (the bundled personas usepersona) only one is active at a time.enabled_by_default-- true: the pack is on unless something names the packs explicitly (the bundledcaveman).tools-- built-in tool servers the pack requests, today onlyperl("requested_tools" in Langertha::Raider::Packs::Collection). A request, not a grant.detect-- the pack's default detection rule (Langertha::Raider::Detect);detect:in .raider.yml replaces it per pack.
ENVIRONMENT
RAIDER_PACK_DIRS
Colon-separated directories searched for packs after the bundled ones.
HOME
The home whose .raider/packs/ is searched, when no home is passed.
SUPPORT
Issues
Please report bugs and feature requests on GitHub 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.