laraavel chat instruction file
This commit is contained in:
162
copilot-ai-guidelines.instructions.md
Normal file
162
copilot-ai-guidelines.instructions.md
Normal file
@@ -0,0 +1,162 @@
|
||||
# Copilot Configuration for Laravel AI Guidelines
|
||||
|
||||
This file is intended to be used with GitHub Copilot or any AI code assistant.
|
||||
It enforces the rules defined in **ai-guidelines.md** and ensures consistent,
|
||||
optimized, secure, and validated Laravel 12.x code generation.
|
||||
|
||||
## 📌 Configuration Instructions
|
||||
|
||||
Place this file in one of the following locations:
|
||||
|
||||
```
|
||||
/.copilot/config.json
|
||||
```
|
||||
|
||||
or
|
||||
|
||||
```
|
||||
/.github/copilot-instructions.md
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# ✅ Copilot Instructions (Auto-Formatting, Auto-Validation, Optimized Laravel 12.x Code)
|
||||
|
||||
Copilot MUST follow these rules for all Laravel code:
|
||||
|
||||
---
|
||||
|
||||
## 1️⃣ General Laravel Code Rules
|
||||
|
||||
- Always write **clean, readable, maintainable** Laravel code.
|
||||
- Follow **Laravel 12.x documentation**: https://laravel.com/docs/12.x/releases
|
||||
- Use PSR-12 formatting.
|
||||
- Follow naming conventions:
|
||||
- Classes → PascalCase
|
||||
- Methods/variables → camelCase
|
||||
- Database → snake_case
|
||||
- Functions must be short and meaningful.
|
||||
- Avoid unnecessary complexity.
|
||||
|
||||
---
|
||||
|
||||
## 2️⃣ Controllers (Thin Controllers Only)
|
||||
|
||||
- Must always use **try/catch**.
|
||||
- Must always use **FormRequest validation**, never inline validation.
|
||||
- Must return **standardized JSON responses** using ApiResponseTrait.
|
||||
- Must use correct HTTP status codes:
|
||||
- 200 OK
|
||||
- 201 Created
|
||||
- 400 Bad Request
|
||||
- 401 Unauthorized
|
||||
- 404 Not Found
|
||||
- 422 Validation Error
|
||||
- 500 Server Error
|
||||
- No DB logic allowed inside controllers.
|
||||
|
||||
---
|
||||
|
||||
## 3️⃣ Services (Business Logic)
|
||||
|
||||
- All core logic must be placed here.
|
||||
- Must always use try/catch and log exceptions.
|
||||
- Must use optimized Eloquent:
|
||||
- select()
|
||||
- when()
|
||||
- with()
|
||||
- paginate()
|
||||
- Use DB::transaction for multi-step operations.
|
||||
- Never return JSON (controller handles responses).
|
||||
|
||||
---
|
||||
|
||||
## 4️⃣ Models
|
||||
|
||||
- Use $fillable or $guarded.
|
||||
- Use casts for JSON, arrays, and booleans.
|
||||
- Use relationships and scopes.
|
||||
- No business logic inside models.
|
||||
|
||||
---
|
||||
|
||||
## 5️⃣ Validation (Strict)
|
||||
|
||||
- Must always use FormRequest.
|
||||
- All input must be validated.
|
||||
- Never trust raw request data.
|
||||
|
||||
---
|
||||
|
||||
## 6️⃣ API Response Standardization
|
||||
|
||||
Use ApiResponseTrait:
|
||||
|
||||
```
|
||||
success(data, message, status)
|
||||
error(message, status)
|
||||
```
|
||||
|
||||
- Every success/error response must use these wrappers.
|
||||
|
||||
---
|
||||
|
||||
## 7️⃣ Jobs / Queues
|
||||
|
||||
- All heavy tasks must be queued using Jobs.
|
||||
- Jobs must use try/catch and log errors.
|
||||
- Never handle heavy tasks inside controller/service.
|
||||
|
||||
---
|
||||
|
||||
## 8️⃣ Performance Rules
|
||||
|
||||
- Never return entire tables → must use pagination.
|
||||
- Avoid N+1 → always use eager loading.
|
||||
- Use select() to reduce data load.
|
||||
- Use indexes in migrations.
|
||||
- Optimize filters using when().
|
||||
- Use caching for repeated queries.
|
||||
|
||||
---
|
||||
|
||||
## 9️⃣ Security Rules
|
||||
|
||||
- Hash passwords, never store plain text.
|
||||
- Validate all inputs.
|
||||
- Sanitize user data.
|
||||
- Prevent SQL/XSS injection.
|
||||
- Do not expose stack traces in responses.
|
||||
|
||||
---
|
||||
|
||||
## 🔟 Forbidden
|
||||
|
||||
Copilot must NOT:
|
||||
|
||||
- Use Repository Pattern.
|
||||
- Use SOLID over-engineered architecture.
|
||||
- Write raw SQL inside controllers.
|
||||
- Put business logic inside controllers.
|
||||
- Write nested DB queries inside loops.
|
||||
- Generate large unpaginated queries.
|
||||
- Return raw models in API.
|
||||
|
||||
---
|
||||
|
||||
# 🎯 Final Result
|
||||
|
||||
Copilot will now automatically generate:
|
||||
|
||||
- Clean Laravel 12.x code
|
||||
- Always validated
|
||||
- Always optimized
|
||||
- Always readable
|
||||
- Always secure
|
||||
- Always using try/catch
|
||||
- Always using proper HTTP codes
|
||||
- Always using Laravel best practices
|
||||
|
||||
---
|
||||
|
||||
**End of Copilot Configuration**
|
||||
234
laravel-coding-standard.instructions.md
Normal file
234
laravel-coding-standard.instructions.md
Normal file
@@ -0,0 +1,234 @@
|
||||
# Laravel Coding Standards for Copilot (With Examples)
|
||||
## Version 1.0
|
||||
|
||||
This document defines the official Laravel coding standards enforced by Copilot for writing clean, secure, readable, and optimized code.
|
||||
|
||||
---
|
||||
|
||||
# 1. General Coding Rules
|
||||
|
||||
- Follow PSR-12 formatting.
|
||||
- Use camelCase for variables & methods.
|
||||
- Use PascalCase for classes.
|
||||
- Use snake_case for database columns and tables.
|
||||
- Limit functions to a clear, single responsibility.
|
||||
|
||||
### Example
|
||||
```php
|
||||
class UserProfileService
|
||||
{
|
||||
public function getFullName(User $user): string
|
||||
{
|
||||
return "{$user->first_name} {$user->last_name}";
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# 2. Controller Standards
|
||||
|
||||
- Must remain thin.
|
||||
- Use FormRequest for validation.
|
||||
- Wrap logic in try/catch.
|
||||
- Return standardized JSON responses.
|
||||
- Use correct HTTP status codes.
|
||||
|
||||
### Example
|
||||
```php
|
||||
class UserController extends Controller
|
||||
{
|
||||
use ApiResponseTrait;
|
||||
|
||||
public function update(UpdateUserRequest $request, User $user)
|
||||
{
|
||||
try {
|
||||
$updated = $this->service->updateProfile($user, $request->validated());
|
||||
return $this->success($updated, 'Profile updated', 200);
|
||||
} catch (\Throwable $e) {
|
||||
Log::error('Update failed: '.$e->getMessage());
|
||||
return $this->error('Unable to update profile', 500);
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# 3. FormRequest Validation
|
||||
|
||||
- All inputs must be validated.
|
||||
- No inline validator inside controllers.
|
||||
|
||||
### Example
|
||||
```php
|
||||
class UpdateUserRequest extends FormRequest
|
||||
{
|
||||
public function rules(): array
|
||||
{
|
||||
return [
|
||||
'first_name' => 'required|string|max:150',
|
||||
'last_name' => 'required|string|max:150',
|
||||
'phone' => 'nullable|digits_between:10,12'
|
||||
];
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# 4. Service Layer Standards
|
||||
|
||||
- Wrap heavy logic in try/catch.
|
||||
- Log exceptions.
|
||||
- Use DB transactions for multi-step operations.
|
||||
- Use optimized Eloquent queries.
|
||||
|
||||
### Example
|
||||
```php
|
||||
class UserProfileService
|
||||
{
|
||||
public function updateProfile(User $user, array $data)
|
||||
{
|
||||
try {
|
||||
return DB::transaction(function () use ($user, $data) {
|
||||
$user->update($data);
|
||||
return $user->fresh();
|
||||
});
|
||||
} catch (\Throwable $e) {
|
||||
Log::error('Service error: '.$e->getMessage());
|
||||
throw $e;
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# 5. Models
|
||||
|
||||
- Use fillable/guarded.
|
||||
- Use casts.
|
||||
- Use accessors/mutators where needed.
|
||||
- Use query scopes.
|
||||
|
||||
### Example
|
||||
```php
|
||||
class User extends Model
|
||||
{
|
||||
protected $fillable = ['first_name','last_name','email','phone'];
|
||||
|
||||
protected $casts = [
|
||||
'is_active' => 'boolean',
|
||||
'email_verified_at' => 'datetime'
|
||||
];
|
||||
|
||||
public function scopeActive($query)
|
||||
{
|
||||
return $query->where('is_active', true);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# 6. API Response Formatting
|
||||
|
||||
Use a shared trait.
|
||||
|
||||
### Example
|
||||
```php
|
||||
trait ApiResponseTrait
|
||||
{
|
||||
protected function success($data = null, $message = 'Success', $code = 200)
|
||||
{
|
||||
return response()->json([
|
||||
'status' => true,
|
||||
'message' => $message,
|
||||
'data' => $data
|
||||
], $code);
|
||||
}
|
||||
|
||||
protected function error($message = 'Error', $code = 500)
|
||||
{
|
||||
return response()->json([
|
||||
'status' => false,
|
||||
'message' => $message
|
||||
], $code);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# 7. Jobs & Queue Standards
|
||||
|
||||
- Heavy tasks must be queued.
|
||||
- Wrap in try/catch.
|
||||
|
||||
### Example
|
||||
```php
|
||||
class SendReportJob implements ShouldQueue
|
||||
{
|
||||
public function handle()
|
||||
{
|
||||
try {
|
||||
// generate report
|
||||
} catch (\Throwable $e) {
|
||||
Log::error('Report job failed: ' . $e->getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# 8. Linting (Pint)
|
||||
|
||||
### Install
|
||||
```
|
||||
composer require laravel/pint --dev
|
||||
```
|
||||
|
||||
### Run
|
||||
```
|
||||
./vendor/bin/pint
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# 9. Static Analysis (PHPStan)
|
||||
|
||||
### Install
|
||||
```
|
||||
composer require --dev phpstan/phpstan
|
||||
```
|
||||
|
||||
### Run
|
||||
```
|
||||
vendor/bin/phpstan analyse
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# 10. OpenTelemetry (Monitoring & Logs)
|
||||
|
||||
### Install
|
||||
```
|
||||
composer require open-telemetry/opentelemetry-laravel
|
||||
```
|
||||
|
||||
### Publish
|
||||
```
|
||||
php artisan vendor:publish --provider="OpenTelemetry\Laravel\ServiceProvider"
|
||||
```
|
||||
|
||||
### Enable auto-instrumentation
|
||||
```
|
||||
php artisan otel:install
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# Final Notes
|
||||
This standard ensures Copilot always writes clean, secure, maintainable, and production-ready Laravel code.
|
||||
27
promptcommand.instructions.md
Normal file
27
promptcommand.instructions.md
Normal file
@@ -0,0 +1,27 @@
|
||||
# Prompt / Command Storage for Assistant
|
||||
|
||||
- Created: 2025-11-28
|
||||
- Location: `.github/instructions/promptcommand.instructions.md`
|
||||
- Purpose: Store each user prompt/command so the assistant can reference and follow them on further actions.
|
||||
|
||||
---
|
||||
|
||||
## Entry 1 (User Prompt)
|
||||
|
||||
Timestamp: 2025-11-28
|
||||
|
||||
User request:
|
||||
"what ever i am giving prompt here and command store in separate promptcommand.instructions.md file in .github/instructions from there you can follow wait for my next instruction (See <attachments> above for file contents. You may not need to search or read the file again.)"
|
||||
|
||||
Assistant handling rules for this file:
|
||||
|
||||
- Do not modify or remove entries in this file without explicit permission from the user.
|
||||
- For each future prompt or command the user provides in this chat, append a new numbered entry here with timestamp and the raw text.
|
||||
- Before executing any action based on entries in this file, the assistant will confirm with the user unless the user explicitly instructs otherwise.
|
||||
- This file is authoritative for prompt/command history used by the assistant; the assistant will read from it when the user asks it to follow stored commands.
|
||||
|
||||
---
|
||||
|
||||
## Status
|
||||
|
||||
- Assistant will now wait for the user's next instruction.
|
||||
Reference in New Issue
Block a user