NAME

DBIO::Skills - Runtime access to the AI agent skills bundled with DBIO

VERSION

version 0.900000

SYNOPSIS

# whatever drivers are loaded expose their skills automatically
use DBIO::PostgreSQL;

my $md = DBIO->skill('postgresql-database');   # markdown text
my @names = DBIO::Skills->skills;              # everything available now

# from a connected schema (adds the schema's own driver + overrides)
my $md = $schema->skill('mysql-database');

DESCRIPTION

DBIO is developed with the help of AI coding agents. To keep that work consistent, each DBIO repository carries a set of agent skills — short, focused briefing documents an agent loads when working inside the repository.

The skill sources live under .claude/skills/ in each source repository (a dot-directory, deliberately excluded from the CPAN tarball). What is shipped is, for each distribution, the skills it owns: they are packaged into the distribution's sharedir under skills/ (see Dist::Zilla::Plugin::DBIO::GatherSkills). This module exposes those bundled skills at runtime.

Discovery is fully dynamic: when a DBIO driver is loaded, its distribution is registered (from the core driver-load path), and all skills found in that distribution's sharedir become available — no skill is ever named in code.

Skill categories

  • Shared family skills — owned by, and shipped from, the DBIO core distribution (dbio-coordination, dbio-core, dbio-driver-development, dbio-perl-syntax, dbio-perl-class-patterns, dbio-moo-moose, karr).

  • The [@DBIO] release skill (dbio-perl-release) — owned by the Dist-Zilla-PluginBundle-DBIO distribution.

  • Per-driver skills — owned by each DBIO-<driver> distribution: dbio-<driver> (using the driver) and dbio-<driver>-database (the underlying database).

For contributors

You do not need any special tooling. Clone a repository and you get normal files. Edit a skill's SKILL.md where it lives in the repo you are working in and commit it. Shared family skills are canonical in the dbio core repo; make the change there (or note it) so it propagates. Maintainers reconcile the hardlinks at release time with the manage-skills tool.

METHODS

register_dist

DBIO::Skills->register_dist('DBIO-PostgreSQL');

Mark a distribution as loaded so its bundled skills become available. Called automatically from the core driver-load path; rarely needed by hand.

register_class

DBIO::Skills->register_class('DBIO::PostgreSQL::Storage');

Derive the distribution that owns a DBIO class (DBIO::DB2::StorageDBIO-DB2, DBIO::MySQL::Storage::MariaDBDBIO-MySQL) and register it. Called from the core driver-load path and from "skill" in DBIO::Schema.

canonical_name

my $key = DBIO::Skills->canonical_name('db2-database'); # 'dbio-db2-database'

Normalise a skill name to its canonical dbio- form. Used by callers (e.g. "skill" in DBIO::Schema) that key their own overrides the same way.

skill

my $markdown = DBIO::Skills->skill('postgresql-database');

Return the markdown text of the named skill, or undef if no loaded distribution provides it. The leading dbio- is optional, so both 'db2-database' and 'dbio-db2-database' resolve.

skills

my @names = DBIO::Skills->skills;

Return the sorted list of skill names available from all currently loaded distributions (full dbio-... names).

AUTHOR

DBIO & DBIx::Class Authors

COPYRIGHT AND LICENSE

Copyright (C) 2026 DBIO Authors Portions Copyright (C) 2005-2025 DBIx::Class Authors Based on DBIx::Class, heavily modified.

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