Awesome-claude-code codeigniter-knowledge
CodeIgniter 4 framework knowledge base. Provides CI4 MVC architecture, DDD integration, persistence, services, security (Shield auth, Filters authorization, CSRF), event system, queue (codeigniter4/queue jobs, workers, retry), infrastructure components (cache, HTTP client, email, throttler), testing, and antipatterns for CodeIgniter PHP projects.
install
source · Clone the upstream repo
git clone https://github.com/dykyi-roman/awesome-claude-code
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/dykyi-roman/awesome-claude-code "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/codeigniter-knowledge" ~/.claude/skills/dykyi-roman-awesome-claude-code-codeigniter-knowledge && rm -rf "$T"
manifest:
skills/codeigniter-knowledge/SKILL.mdsource content
CodeIgniter Knowledge Base
Quick reference for CodeIgniter 4 framework patterns and PHP implementation guidelines. CodeIgniter 4 is a complete rewrite of the framework, built for PHP 8.1+ with namespaces, autoloading, and a modern MVC architecture. It remains lightweight and fast while providing the tools needed for professional application development.
Core Principles
MVC Architecture
Request → index.php → Bootstrap → Routing → Filters (before) → Controller → Service/Model → View → Filters (after) → Response
Key principles:
- Lightweight core with minimal overhead
- HMVC-capable via modules (app/Modules/)
- Services container for dependency management
- Filters as middleware equivalent
- Entity classes for data hydration
Quick Checklists
DDD-Compatible CI4 Project
- Domain logic extracted from Models into Domain layer
- Repository interfaces defined in Domain, implemented in Infrastructure
- Value Objects used instead of primitive types for domain concepts
- CI4 Models used only as persistence adapters
- Services registered in Config\Services for dependency injection
- Business rules not in Controllers or Filters
- Domain Events dispatched through domain
port (not CI4 Events directly)EventDispatcherInterface - Input validation at Controller level (not in Domain)
- Shield Groups/Permissions used only at Filter/Route level; Domain uses Specifications
- Queue job handlers delegate to Application UseCases
- Infrastructure components (Cache, HTTP Client, Email) accessed via domain ports
Clean Architecture Checks
- No
in Domain layeruse CodeIgniter\... - No direct database access outside Repository implementations
- Controllers delegate to Application Services / Use Cases
- DTOs used for cross-layer data transfer
- Config\Services wires interfaces to implementations
- Entities are framework-free domain objects (not CI4 Entity)
Common Violations Quick Reference
| Violation | Where to Look | Severity |
|---|---|---|
| Business logic in Controller | | Critical |
| Domain depends on CI4 framework | in Domain classes | Critical |
| Direct DB queries in Controller | in Controllers | Critical |
| Model contains business rules | Complex in Model methods | Warning |
| Missing input validation | Controllers without | Warning |
| God Controller | Controllers > 300 lines | Warning |
| Shield UserIdentity in Domain | in Domain layer | Critical |
| Queue in Domain | in Domain layer | Critical |
| Cache/HTTP Client in Domain | or in Domain | Critical |
| Missing queue resilience | Jobs without / | Warning |
| Hardcoded config values | Magic strings instead of | Info |
PHP 8.4 CodeIgniter Patterns
Controller (Thin, Delegates to Service)
<?php declare(strict_types=1); namespace App\Controllers\Api; use App\Controllers\BaseController; use CodeIgniter\HTTP\ResponseInterface; final class OrderController extends BaseController { public function __construct( private readonly OrderService $orderService, ) {} public function show(string $id): ResponseInterface { $order = $this->orderService->findById($id); return $this->response->setJSON(['id' => $order->id, 'status' => $order->status->value]); } }
Service (Application Layer)
<?php declare(strict_types=1); namespace App\Services; final readonly class OrderService { public function __construct( private OrderRepositoryInterface $orders, private EventDispatcherInterface $events, ) {} public function confirm(string $orderId): void { $order = $this->orders->findById($orderId) ?? throw new OrderNotFoundException($orderId); $order->confirm(); $this->orders->save($order); $this->events->dispatch(new OrderConfirmedEvent($order->id())); } }
Model as Repository Adapter
<?php declare(strict_types=1); namespace App\Models; use CodeIgniter\Model; final class OrderModel extends Model { protected $table = 'orders'; protected $primaryKey = 'id'; protected $returnType = OrderEntity::class; protected $allowedFields = ['customer_id', 'status', 'total', 'notes']; protected $useTimestamps = true; }
References
For detailed information, load these reference files:
-- CI4 MVC structure, modules, directory layoutreferences/architecture.md
-- Domain extraction, Repository pattern, Value Objects in CI4references/ddd-integration.md
-- Controllers, Filters, RESTful routing, validationreferences/routing-http.md
-- CI4 Model, Query Builder, Entity classes, migrationsreferences/persistence.md
-- Services class, custom registration, DI patternsreferences/dependency-injection.md
-- CIUnitTestCase, DatabaseTestTrait, feature testing, mockingreferences/testing.md
-- Shield authentication/authorization, Filters, CSRF, password hashing with DDDreferences/security.md
-- CI4 Events, domain event dispatching, lifecycle events, testingreferences/event-system.md
-- codeigniter4/queue jobs, workers, retry, chained jobs, queue events with DDDreferences/queue.md
-- Cache, CURLRequest HTTP client, Email, Throttler with DDD portsreferences/infrastructure-components.md
-- Common violations with detection patterns and fixesreferences/antipatterns.md