AI-Agent-Skills-SiteKit
view release on metacpan or search on metacpan
# AI Agent Skills Site Kit
Small metadata and URL helpers for [AI Agent Skills](https://aiagentskills.net), a curated directory for discovering Claude skills, Codex skills, and AI agent workflows.
## Useful links
- Website: <https://aiagentskills.net>
- [AI agent skills directory](https://aiagentskills.net/skills/): browse curated agent skills.
- [Claude and Codex skill search](https://aiagentskills.net/skills/?q=seo): build stable search URLs for skill discovery.
- [Submit an AI agent skill](https://aiagentskills.net/submit/): submit a useful public skill for review.
- [AI agent skills blog](https://aiagentskills.net/blog/): read guides and updates.
- [Agent workflow skills](https://aiagentskills.net/category/agent-workflows/): browse workflow and automation skills.
- [Code generation skills](https://aiagentskills.net/category/code-generation/): browse development-focused skills.
## What this package does
Each ecosystem package exposes tiny helpers for site metadata and stable URL construction. It is intentionally boring: no network calls, no hidden behavior, and no claim that this is an official SDK.
## Common API
- `homeUrl` / `home_url`: homepage URL.
- `skillsUrl` / `skills_url`: skills directory URL.
- `searchUrl(query)` / `search_url(query)`: skills search URL.
- `submitUrl` / `submit_url`: skill submission URL.
- `blogUrl` / `blog_url`: blog URL.
- `categoryUrl(slug)` / `category_url(slug)`: category URL.
- `skillUrl(slug)` / `skill_url(slug)`: individual skill URL.
- `metadata`: brand, homepage, description, canonical pages, and tags.
## License
MIT.
lib/AI/Agent/Skills/SiteKit.pm view on Meta::CPAN
package AI::Agent::Skills::SiteKit;
use strict;
use warnings;
use Exporter 'import';
use URI::Escape qw(uri_escape);
our $VERSION = '0.1.0';
our @EXPORT_OK = qw(home_url skills_url search_url submit_url blog_url category_url skill_url url_for metadata);
sub base_url { return 'https://aiagentskills.net' }
sub clean_slug { my $s = shift // ''; $s =~ s!^/+!!; $s =~ s!/+$!!; return $s; }
sub url_for { my $clean = clean_slug(shift // ''); return $clean eq '' ? base_url() : base_url() . '/' . $clean . '/'; }
sub home_url { return base_url() }
sub skills_url { return url_for('skills') }
sub submit_url { return url_for('submit') }
sub blog_url { return url_for('blog') }
sub category_url { return url_for('category/' . clean_slug(shift)) }
sub skill_url { return url_for('skill/' . clean_slug(shift)) }
sub search_url { my $q = shift // ''; $q =~ s/^\s+|\s+$//g; return $q eq '' ? skills_url() : base_url() . '/skills/?q=' . uri_escape($q); }
sub metadata {
return {
name => 'AI Agent Skills',
homepage => base_url(),
description => 'Curated directory for Claude skills, Codex skills, and AI agent workflows.',
tags => [qw(aiagentskills skills agents claude codex)],
};
t/sitekit.t view on Meta::CPAN
use strict;
use warnings;
use Test::More tests => 8;
use lib 'lib';
use AI::Agent::Skills::SiteKit qw(home_url skills_url search_url submit_url blog_url category_url skill_url metadata);
is(home_url(), 'https://aiagentskills.net', 'homepage');
is(skills_url(), 'https://aiagentskills.net/skills/', 'skills');
is(submit_url(), 'https://aiagentskills.net/submit/', 'submit');
is(blog_url(), 'https://aiagentskills.net/blog/', 'blog');
is(category_url('agent-workflows'), 'https://aiagentskills.net/category/agent-workflows/', 'category');
is(skill_url('seo-article-writer'), 'https://aiagentskills.net/skill/seo-article-writer/', 'skill');
is(search_url('codex skills'), 'https://aiagentskills.net/skills/?q=codex%20skills', 'search');
is(metadata()->{homepage}, 'https://aiagentskills.net', 'metadata homepage');
( run in 1.874 second using v1.01-cache-2.11-cpan-9581c071862 )