From 78a56174b156384903e88ea2b1617ca320a8026e Mon Sep 17 00:00:00 2001 From: Affaan Mustafa Date: Tue, 10 Mar 2026 20:22:23 -0700 Subject: [PATCH] docs: tighten perl support guidance --- README.md | 5 +++-- README.zh-CN.md | 2 +- rules/perl/coding-style.md | 2 +- rules/perl/hooks.md | 2 +- rules/perl/patterns.md | 2 +- rules/perl/security.md | 2 +- rules/perl/testing.md | 2 +- skills/perl-patterns/SKILL.md | 4 ++++ skills/perl-security/SKILL.md | 6 +++++- 9 files changed, 18 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index bed8a0d3..20f5341b 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ ![Perl](https://img.shields.io/badge/-Perl-39457E?logo=perl&logoColor=white) ![Markdown](https://img.shields.io/badge/-Markdown-000000?logo=markdown&logoColor=white) -> **50K+ stars** | **6K+ forks** | **30 contributors** | **7 languages supported** | **Anthropic Hackathon Winner** +> **50K+ stars** | **6K+ forks** | **30 contributors** | **5 languages supported** | **Anthropic Hackathon Winner** --- @@ -366,6 +366,7 @@ everything-claude-code/ | |-- python/ # Python specific | |-- golang/ # Go specific | |-- perl/ # Perl specific (NEW) +| |-- swift/ # Swift specific | |-- hooks/ # Trigger-based automations | |-- README.md # Hook documentation, recipes, and customization guide @@ -832,7 +833,7 @@ Please contribute! See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines. ### Ideas for Contributions -- Language-specific skills (Rust, C#, Swift, Kotlin) — Go, Python, Java, Perl already included +- Language-specific skills (Rust, C#, Kotlin, Java) — Go, Python, Perl, Swift, and TypeScript already included - Framework-specific configs (Rails, Laravel, FastAPI, NestJS) — Django, Spring Boot already included - DevOps agents (Kubernetes, Terraform, AWS, Docker) - Testing strategies (different frameworks, visual regression) diff --git a/README.zh-CN.md b/README.zh-CN.md index 45171f64..2eb08d7a 100644 --- a/README.zh-CN.md +++ b/README.zh-CN.md @@ -488,7 +488,7 @@ node tests/hooks/hooks.test.js ### 贡献想法 -- 特定语言的技能(Rust、C#、Swift、Kotlin)- 现已包含 Go、Python、Java、Perl! +- 特定语言的技能(Rust、C#、Kotlin、Java)- 现已包含 Go、Python、Perl、Swift 和 TypeScript! - 特定框架的配置(Django、Rails、Laravel) - DevOps 代理(Kubernetes、Terraform、AWS) - 测试策略(不同框架) diff --git a/rules/perl/coding-style.md b/rules/perl/coding-style.md index 6e522c65..9c7fbb2f 100644 --- a/rules/perl/coding-style.md +++ b/rules/perl/coding-style.md @@ -8,7 +8,7 @@ paths: --- # Perl Coding Style -> This file extends [common/coding-style.md](../common/coding-style.md) with Perl specific content. +> This file extends [common/coding-style.md](../common/coding-style.md) with Perl-specific content. ## Standards diff --git a/rules/perl/hooks.md b/rules/perl/hooks.md index c8dc850b..0b6daadd 100644 --- a/rules/perl/hooks.md +++ b/rules/perl/hooks.md @@ -8,7 +8,7 @@ paths: --- # Perl Hooks -> This file extends [common/hooks.md](../common/hooks.md) with Perl specific content. +> This file extends [common/hooks.md](../common/hooks.md) with Perl-specific content. ## PostToolUse Hooks diff --git a/rules/perl/patterns.md b/rules/perl/patterns.md index ad03fa59..a2f7b4f6 100644 --- a/rules/perl/patterns.md +++ b/rules/perl/patterns.md @@ -8,7 +8,7 @@ paths: --- # Perl Patterns -> This file extends [common/patterns.md](../common/patterns.md) with Perl specific content. +> This file extends [common/patterns.md](../common/patterns.md) with Perl-specific content. ## Repository Pattern diff --git a/rules/perl/security.md b/rules/perl/security.md index 3df3cd75..c87fefca 100644 --- a/rules/perl/security.md +++ b/rules/perl/security.md @@ -8,7 +8,7 @@ paths: --- # Perl Security -> This file extends [common/security.md](../common/security.md) with Perl specific content. +> This file extends [common/security.md](../common/security.md) with Perl-specific content. ## Taint Mode diff --git a/rules/perl/testing.md b/rules/perl/testing.md index c1755ada..d451699b 100644 --- a/rules/perl/testing.md +++ b/rules/perl/testing.md @@ -8,7 +8,7 @@ paths: --- # Perl Testing -> This file extends [common/testing.md](../common/testing.md) with Perl specific content. +> This file extends [common/testing.md](../common/testing.md) with Perl-specific content. ## Framework diff --git a/skills/perl-patterns/SKILL.md b/skills/perl-patterns/SKILL.md index c6ad5031..c08d1826 100644 --- a/skills/perl-patterns/SKILL.md +++ b/skills/perl-patterns/SKILL.md @@ -16,6 +16,10 @@ Idiomatic Perl 5.36+ patterns and best practices for building robust, maintainab - Designing Perl module architecture - Migrating pre-5.36 code to modern Perl +## How It Works + +Apply these patterns as a bias toward modern Perl 5.36+ defaults: signatures, explicit modules, focused error handling, and testable boundaries. The examples below are meant to be copied as starting points, then tightened for the actual app, dependency stack, and deployment model in front of you. + ## Core Principles ### 1. Use `v5.36` Pragma diff --git a/skills/perl-security/SKILL.md b/skills/perl-security/SKILL.md index 1dce40ec..679c577d 100644 --- a/skills/perl-security/SKILL.md +++ b/skills/perl-security/SKILL.md @@ -17,6 +17,10 @@ Comprehensive security guidelines for Perl applications covering input validatio - Executing system commands from Perl - Writing DBI database queries +## How It Works + +Start with taint-aware input boundaries, then move outward: validate and untaint inputs, keep filesystem and process execution constrained, and use parameterized DBI queries everywhere. The examples below show the safe defaults this skill expects you to apply before shipping Perl code that touches user input, the shell, or the network. + ## Taint Mode Perl's taint mode (`-T`) tracks data from external sources and prevents it from being used in unsafe operations without explicit validation. @@ -197,7 +201,7 @@ sub safe_path($base_dir, $user_path) { // die "Path does not exist\n"; my $base_real = realpath($base_dir) // die "Base dir does not exist\n"; - die "Path traversal blocked\n" unless $real =~ /^\Q$base_real\E\//; + die "Path traversal blocked\n" unless $real =~ /^\Q$base_real\E(?:\/|\z)/; return $real; } ```