find-null-pointer-issues
Detects null pointer issues in PHP code. Finds property/method access on null, missing null checks, nullable returns without handling, optional chaining gaps.
Best use case
find-null-pointer-issues is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Detects null pointer issues in PHP code. Finds property/method access on null, missing null checks, nullable returns without handling, optional chaining gaps.
Teams using find-null-pointer-issues should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/find-null-pointer-issues/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How find-null-pointer-issues Compares
| Feature / Agent | find-null-pointer-issues | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Detects null pointer issues in PHP code. Finds property/method access on null, missing null checks, nullable returns without handling, optional chaining gaps.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# Null Pointer Detection
Analyze PHP code for null pointer dereference issues.
## Detection Patterns
### 1. Nullable Return Without Check
```php
// BUG: No null check after find
$user = $repository->find($id);
$user->getName(); // May be null
// BUG: Chained calls on nullable
$order = $this->orderRepository->findByUser($userId);
$order->getItems()->first()->getProduct(); // Multiple null risks
```
### 2. Missing Null Coalescing
```php
// BUG: Direct access to optional array key
$name = $data['user']['name']; // May not exist
// FIXED:
$name = $data['user']['name'] ?? 'default';
```
### 3. Method Calls on Nullable Type
```php
// Type hint: public function getUser(): ?User
// BUG: No null handling
$user = $service->getUser();
echo $user->getEmail(); // $user may be null
// FIXED:
$user = $service->getUser();
if ($user !== null) {
echo $user->getEmail();
}
```
### 4. Collection First/Last on Empty
```php
// BUG: first() on potentially empty collection
$items = $repository->findByStatus('active');
$first = $items->first(); // Returns false/null if empty
$first->process(); // Crash if empty
// FIXED:
$first = $items->first();
if ($first !== null) {
$first->process();
}
```
### 5. Optional Chaining Gaps
```php
// BUG: Inconsistent null safety
$name = $user?->getProfile()->getName(); // getProfile may return null
// FIXED:
$name = $user?->getProfile()?->getName();
```
### 6. Constructor Null Assignment
```php
// BUG: Uninitialized property access
class Order {
private ?Customer $customer;
public function getCustomerName(): string {
return $this->customer->getName(); // $customer not initialized
}
}
```
### 7. Doctrine/Eloquent Relationship Nulls
```php
// BUG: Relationship may be null
$order->getCustomer()->getAddress(); // Customer may be null
// BUG: Collection method on null relation
$user->getOrders()->filter(...); // getOrders may return null
```
## Grep Patterns
```bash
# Nullable return types
Grep: "function\s+\w+\([^)]*\)\s*:\s*\?" --glob "**/*.php"
# find() without null check
Grep: "->find\([^)]+\)\s*;" --glob "**/*.php"
# Chained calls after nullable
Grep: "\?>\w+\([^)]*\)->\w+" --glob "**/*.php"
# first()/last() usage
Grep: "->(first|last)\(\)\s*->" --glob "**/*.php"
```
## Severity Classification
| Pattern | Severity |
|---------|----------|
| find() without null check | 🟠 Major |
| Chained calls on nullable | 🟠 Major |
| first()/last() on collection | 🟡 Minor |
| Missing null coalescing | 🟡 Minor |
| Uninitialized property | 🔴 Critical |
## Output Format
```markdown
### Null Pointer: [Description]
**Severity:** 🔴/🟠/🟡
**Location:** `file.php:line`
**Type:** [Nullable Return|Missing Check|Chained Access|...]
**Issue:**
Variable may be null when accessed.
**Code:**
```php
// Problematic code
```
**Fix:**
```php
// With null check
```
```Related Skills
find-type-issues
Detects type issues in PHP code. Finds implicit type coercion, mixed types in comparisons, unsafe casting, type mismatches in returns.
find-resource-leaks
Detects resource leaks in PHP code. Finds unclosed file handles, database connections not released, streams not freed, missing finally blocks, temporary files not cleaned.
find-race-conditions
Detects race conditions in PHP code. Finds shared mutable state, check-then-act patterns, TOCTOU vulnerabilities, concurrent modification issues.
find-logic-errors
Detects logic errors in PHP code. Finds incorrect conditions, wrong operators, missing switch cases, inverted logic, short-circuit evaluation issues.
find-infinite-loops
Detects infinite loop risks in PHP code. Finds missing break conditions, incorrect loop variables, unbounded recursion, circular references.
find-exception-issues
Detects exception handling issues in PHP code. Finds swallowed exceptions, generic catches, missing exception handling, re-throwing without context, exception in finally.
find-boundary-issues
Detects boundary issues in PHP code. Finds array index out of bounds, empty collection access, off-by-one errors, integer overflow, string length issues.
create-null-object
Generates Null Object pattern for PHP 8.4. Creates safe default implementations eliminating null checks. Includes unit tests.
bug-root-cause-finder
Root cause analysis methods for PHP bugs. Provides 5 Whys technique, fault tree analysis, git bisect guidance, and stack trace parsing.
yii-knowledge
Yii framework knowledge base. Provides Yii3 modular architecture, DDD integration, PSR-7/PSR-15 compliance, persistence, DI, security (RBAC, auth), event system (PSR-14), queue/jobs, infrastructure components (cache, rate limiter, HTTP client), testing, and antipatterns for Yii PHP projects.
troubleshooting-template
Generates troubleshooting guides and FAQ sections for PHP projects. Creates problem-solution documentation.
trace-request-lifecycle
Traces full request lifecycle from Router through Middleware, Controller, UseCase, Repository to Response. Documents HTTP methods, routes, middleware stack, response codes, and error handling paths.