Sentry Php SDK
getsentry/sentry-for-ai
Full Sentry SDK setup for PHP. An agent skill from getsentry/sentry-for-ai.
PHP coding rules: style, patterns, security, testing. An agent skill from softspark/ai-toolkit.
$ npx skills add softspark/ai-toolkit --skill php-rules -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install softspark/ai-toolkit php-rules --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/softspark/ai-toolkit.git skills-src && mkdir -p .claude/skills && cp -r skills-src/app/skills/php-rules .claude/skills/php-rules && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "php-rules" agent skill from https://github.com/softspark/ai-toolkit/tree/main/app/skills/php-rules into .claude/skills/php-rules/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "php-rules", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/softspark/ai-toolkit/tree/main/app/skills/php-rulesType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add softspark/ai-toolkit --skill php-rules -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install softspark/ai-toolkit php-rules --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/softspark/ai-toolkit.git skills-src && mkdir -p .agents/skills && cp -r skills-src/app/skills/php-rules .agents/skills/php-rules && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "php-rules" agent skill from https://github.com/softspark/ai-toolkit/tree/main/app/skills/php-rules into .agents/skills/php-rules/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "php-rules", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add softspark/ai-toolkit --skill php-rules -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install softspark/ai-toolkit php-rules --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/softspark/ai-toolkit.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/app/skills/php-rules .cursor/skills/php-rules && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "php-rules" agent skill from https://github.com/softspark/ai-toolkit/tree/main/app/skills/php-rules into .cursor/skills/php-rules/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "php-rules", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/softspark/ai-toolkit.git --path app/skills/php-rules--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add softspark/ai-toolkit --skill php-rules -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install softspark/ai-toolkit php-rules --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/softspark/ai-toolkit.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/app/skills/php-rules .gemini/skills/php-rules && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "php-rules" agent skill from https://github.com/softspark/ai-toolkit/tree/main/app/skills/php-rules into .gemini/skills/php-rules/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "php-rules", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install softspark/ai-toolkit php-rulesInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add softspark/ai-toolkit --skill php-rules -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/softspark/ai-toolkit.git skills-src && mkdir -p .github/skills && cp -r skills-src/app/skills/php-rules .github/skills/php-rules && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "php-rules" agent skill from https://github.com/softspark/ai-toolkit/tree/main/app/skills/php-rules into .github/skills/php-rules/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "php-rules", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add softspark/ai-toolkit --skill php-rules -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install softspark/ai-toolkit php-rules --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/softspark/ai-toolkit.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/app/skills/php-rules .opencode/skills/php-rules && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "php-rules" agent skill from https://github.com/softspark/ai-toolkit/tree/main/app/skills/php-rules into .opencode/skills/php-rules/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "php-rules", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
php-rulesPHP coding rules: style, patterns, security, testing. An agent skill from softspark/ai-toolkit.
Php Rules is an agent skill from softspark/ai-toolkit. PHP coding rules: style, patterns, security, testing. Triggers: .php, composer.json, Laravel, Symfony, PHPUnit, PSR-12, Composer.
Its SKILL.md is about 3.8k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Backend & APIs, covering Backend development. It works with PHP, Laravel and Symfony. The repository describes itself as: Professional-grade AI coding toolkit: 94 skills, 44 agents, multi-platform (Claude, Cursor, Windsurf, Copilot, Gemini, Cline, Roo Code, Aider, Augment, Antigravity, Codex CLI… The licence is Apache-2.0.
Read from SKILL.md and the folder at commit d64db2b. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
ReadFrom allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
composerphpFrom the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
github.comsymfony.comFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Php Rules loads about 3.8k tokens when it runs. Until then it costs about 35 tokens; SKILL.md has 1,771 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check noted patterns worth knowing about, such as sudo or a known installer.
- Use `.env` files for local secrets. Use Vault or SSM for production.- Never commit `.env` to version control. Commit `.env.example` as template.Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from softspark/ai-toolkit at commit d64db2b, republished under its Apache-2.0 licence (© softspark). 1,771 words, ~3,848 tokens.
.claude/skills/php-rules/SKILL.md (or your agent's skills folder).These rules come from app/rules/php/ in ai-toolkit. They cover
the project's standards for coding style, frameworks, patterns,
security, and testing in PHP. Apply them when writing or
reviewing PHP code.
declare(strict_types=1) at the top of every file.public const MAX_RETRIES = 3).Interface or prefix with contract name (project convention).private readonly string $name;.string|int. Use intersection types: Countable&Iterator.enum (PHP 8.1) for fixed sets of values. Use backed enums for persistence.readonly classes (PHP 8.2) for immutable DTOs.public function __construct(private string $name).never return type for functions that throw or exit.new User(name: 'Ada', age: 36).$user?->address?->city.array_map($this->transform(...), $items).use statements: classes, functions, constants.require/include for class loading. Use Composer autoloader.RuntimeException or LogicException.match with throw for exhaustive error mapping..php-cs-fixer.dist.php for formatting rules.composer analyse (PHPStan) and composer format (Pint) in CI.Route::get('/users/{user}', ...).class StoreUserRequest extends FormRequest.scopeActive().UserResource::collection($users).config() helper for configuration. Never access env() outside config files.hasMany, belongsTo, belongsToMany, morphMany.User::with('posts.comments')->get() to prevent N+1.$fillable or $guarded on models. Prefer $fillable (explicit whitelist).upsert() for bulk insert-or-update operations.cursor() for memory-efficient iteration over large result sets.#[Route('/api/users', methods: ['GET'])].services.yaml.$em->getRepository(User::class).bin/console doctrine:migrations:diff and migrate.@PrePersist, @PostUpdate) for entity events.camelCase property names, JSON output is camelCase with zero configuration.api_platform.name_converter: CamelCaseToSnakeCaseNameConverter globally. Known side-effect (api-platform/core #6101): overrides the project-wide MetadataAwareNameConverter, affecting Messenger serializers, custom normalizers, and CLI JSON output — not just the HTTP API.#[SerializedName] only when justified: legacy field alias during rename, external contract mapping, ObjectNormalizer cross-version stabilization. Community practice (Symfony docs, Sylius, SymfonyCasts): prefer clean property/getter naming over aliases. When using, document the reason next to the attribute.ObjectNormalizer produces isActive natively for a isActive(): bool getter (symfony/symfony #62353). Older #[SerializedName('isActive')] aliases added for pre-7.3.5 ObjectNormalizer (which produced active) are redundant after upgrade — remove them.isActive() + getIsActive() on the same property — ObjectNormalizer treats them as two fields and serializes ambiguously. Keep one (isXxx() for booleans, getXxx() otherwise).#[ApiResource] attribute for automatic CRUD endpoint generation.ApiResource DTOs drive JSON keys directly (see Symfony Serializer above). Write them in camelCase — that is both the Symfony default and the dominant JSON API convention.operation_name in extraProperties for dispatch metadata (e.g., extraProperties: ['operation_name' => 'club_activate']). The key operation_name and its snake_case values are framework metadata, not JSON wire keys — keeping them snake_case is expected.wire:model for two-way data binding on form inputs.$rules property for inline validation on component properties.wire:loading for loading state indicators.class DomainException extends RuntimeException.throw new UserNotFoundException(userId: $id).match with default => throw for exhaustive error mapping.set_exception_handler() for global uncaught exception handling.enum Status: string.from() for strict conversion, tryFrom() for nullable safe conversion.public function label(): string.readonly class Money { ... }.app() helper in services.illuminate/collections for data manipulation.map(), filter(), reduce() for declarative data transformation.LazyCollection for memory-efficient processing of large datasets.yield) for lazy iteration over large result sets.collect() pipeline over nested loops.dispatch() for fire-and-forget. Use Bus::chain() for sequential jobs.ShouldQueue interface on jobs, listeners, and mailables.$tries, $timeout, $backoff on job classes.batch() for parallel job execution with completion callback.ShouldQueue on listeners for async event handling.DB::raw() without parameterization: SQL injection risk.DB::raw($input).whereIn() with arrays, not string interpolation for IN clauses.DB::select(DB::raw(...)) must use ? placeholders.{{ }}. Never use {!! !!} with user data.htmlspecialchars() with ENT_QUOTES when outputting outside Blade.Content-Security-Policy headers to restrict inline scripts.strip_tags() only as a secondary measure, not primary defense.@csrf directive in all Blade forms.VerifyCsrfToken middleware (enabled by default in Laravel).X-CSRF-TOKEN header for AJAX requests from SPA frontends.password_hash() with PASSWORD_ARGON2ID or PASSWORD_BCRYPT.ThrottleRequests middleware.$this->authorize('update', $post) in controllers.Gate::before() for super-admin bypass, nothing else.can:permission for route-level authorization.Content-Type header.storage/ with Storage::disk().upload_max_filesize.$fillable on Eloquent models. Never use $guarded = [].$request->all() to create().forceFill() and forceCreate() usage (bypasses guarding)..env files for local secrets. Use Vault or SSM for production..env to version control. Commit .env.example as template.config() helper, never env() outside of config files (caching issue).APP_DEBUG=false in production. Debug mode leaks sensitive data.FooTest.php in tests/ mirroring src/ namespace structure.tests/Unit/. Integration tests: tests/Integration/ or tests/Feature/.phpunit.xml.dist at project root.@group annotations for test categorization.#[Test] attribute (PHP 8) or test prefix for test methods.setUp() / tearDown() for per-test initialization and cleanup.#[DataProvider('dataMethodName')] for parameterized tests.testMethodName_Scenario_ExpectedResult or descriptive snake_case.test('description', function () { ... }) for test cases.it('should do something', ...) for BDD-style descriptions.beforeEach() / afterEach() for setup and teardown.dataset() for shared test data across multiple tests.->with([...]) for inline parameterized tests.$this->assertSame() for strict equality (type + value).$this->assertInstanceOf(Foo::class, $result) for type checks.$this->expectException(FooException::class) before the throwing call.$this->assertCount(), $this->assertContains() for collections.expect($value)->toBe(), ->toBeInstanceOf(), ->toThrow().$mock = Mockery::mock(UserRepository::class).$mock->shouldReceive('find')->with(1)->andReturn($user).$mock->shouldHaveReceived('save')->once().Mockery::close() in tearDown() or afterEach().spy() to verify interactions without stubbing.RefreshDatabase trait for database test isolation.$this->actingAs($user) for authenticated request testing.$this->getJson('/api/users')->assertOk()->assertJsonCount(3).User::factory()->create() for test data.Bus::fake(), Event::fake(), Mail::fake() for side-effect assertion.php artisan test --parallel for faster Laravel test execution.--coverage-html for visual coverage reports.Http::fake().© softspark, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in app/skills/php-rules of softspark/ai-toolkit.
Open the folder on GitHubat commit d64db2b
Php Rules next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Php Rules this skillsoftspark/ai-toolkit | 179 | — | ~3.8k | Automated safety check: Notes | Apache-2.0 | |
| Sentry Php SDKgetsentry/sentry-for-ai | 268 | — | ~3.7k | Automated safety check: Notes | Apache-2.0 | |
| PHP ProJeffallan/claude-skills | 12k | — | ~1.6k | Automated safety check: Notes | MIT | |
| Php ProAratKruglik/claude-laravel | 155 | — | ~984 | Automated safety check: Notes | None | |
| Php Framework Auditwgpsec/AboutSecurity | 1.8k | — | ~767 | Automated safety check: Notes | None | |
| Configuring Horizoncoollabsio/coolify | 63k | 4 repos | ~898 | Automated safety check: Pass | MIT |
getsentry/sentry-for-ai
Full Sentry SDK setup for PHP. An agent skill from getsentry/sentry-for-ai.
Jeffallan/claude-skills
Writes strictly typed modern PHP 8.3+ for Laravel, Symfony and plain projects, with PHPStan level 9, PHPUnit or Pest tests, typed DTOs and secure defaults.
AratKruglik/claude-laravel
A skill your agent uses when building PHP applications with modern PHP 8.3+ features, Laravel, or Symfony frameworks.
wgpsec/AboutSecurity
PHP 框架特定安全审计。当在 PHP 白盒审计中已识别目标使用特定框架、 需要检查框架特有安全机制和常见配置缺陷时触发。
coollabsio/coolify
A skill your agent uses whenever the user mentions Horizon by name in a Laravel context.
coollabsio/coolify
ACTIVATE when the user works on authentication in Laravel. An agent skill from coollabsio/coolify.
softspark/ai-toolkit
Prepare or verify a project QA environment with source identity, readiness, browser access, evidence paths and owned cleanup.
softspark/ai-toolkit
Accessibility validator: WCAG 2.1 AA, EN 301 549, EAA. An agent skill from softspark/ai-toolkit.
softspark/ai-toolkit
Analyzes code quality, complexity, patterns across codebase.
softspark/ai-toolkit
Drives a brief, specification, issue or existing PR through implementation, review, tests and QA to a ready PR.
softspark/ai-toolkit
Direct technical voice for docs, README, user-facing text. An agent skill from softspark/ai-toolkit.
softspark/ai-toolkit
Detect/generate/debug CI pipeline config (GitHub Actions, GitLab CI).
Categories
PHP coding rules: style, patterns, security, testing. An agent skill from softspark/ai-toolkit. Php Rules is an agent skill from softspark/ai-toolkit. PHP coding rules: style, patterns, security, testing.
Php Rules fits situations like: tasks that involve Backend development.
Run `npx skills add softspark/ai-toolkit --skill php-rules -a claude-code`. Or copy the skill folder (app/skills/php-rules in softspark/ai-toolkit) into .claude/skills/php-rules in your project. Claude Code loads it when a task matches its description.
Run `npx skills add softspark/ai-toolkit --skill php-rules -a codex`. Or copy the skill folder (app/skills/php-rules in softspark/ai-toolkit) into .agents/skills/php-rules in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add softspark/ai-toolkit --skill php-rules -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/php-rules, .gemini/skills/php-rules, .github/skills/php-rules and .opencode/skills/php-rules in your project.
Going by SKILL.md and its folder, Php Rules needs the command-line tools its instructions call (composer and php). Its frontmatter pre-approves these tools: Read.
SKILL.md names 2 domains. As links in the text: github.com and symfony.com. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (mentions a .env file), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
Php Rules is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.8k tokens (SKILL.md is roughly 15k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Php Rules: Sentry Php SDK (getsentry/sentry-for-ai, 268 stars), PHP Pro (Jeffallan/claude-skills, 12k stars), Php Pro (AratKruglik/claude-laravel, 155 stars) and Php Framework Audit (wgpsec/AboutSecurity, 1.8k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
softspark (a GitHub user) maintains it in softspark/ai-toolkit, which has 179 GitHub stars. The repository holds 112 skills in this directory. The repository was last updated on October 7, 2026.
Source: softspark/ai-toolkit on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.