docs: add CLAUDE.md project instructions
Co-Authored-By: Virgil <virgil@lethean.io>
This commit is contained in:
parent
7b5574dc03
commit
936e197f1e
1 changed files with 41 additions and 0 deletions
41
CLAUDE.md
Normal file
41
CLAUDE.md
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
# CLAUDE.md
|
||||
|
||||
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
||||
|
||||
## Project Overview
|
||||
|
||||
`lthn/php-plug-chat` is a PHP library providing chat platform integrations (Discord, Slack, Telegram) for the Plug framework. It depends on `lthn/php` which supplies the core contracts and concerns.
|
||||
|
||||
## Build & Install
|
||||
|
||||
```bash
|
||||
composer install
|
||||
```
|
||||
|
||||
No tests, linter, or CI are configured yet.
|
||||
|
||||
## Architecture
|
||||
|
||||
**Namespace:** `Core\Plug\Chat\` (PSR-4 mapped to `src/`)
|
||||
|
||||
Each chat provider lives in its own subdirectory and implements contracts from `lthn/php` (`Core\Plug\Contract\*`):
|
||||
|
||||
| Contract | Purpose | Discord | Slack | Telegram |
|
||||
|---|---|---|---|---|
|
||||
| `Authenticable` | Auth/credential validation | `Auth` | `Auth` | `Auth` |
|
||||
| `Postable` | Send messages | `Post` | `Post` | `Post` |
|
||||
| `Deletable` | Delete messages | `Delete` | — | `Delete` |
|
||||
| `Readable` | Read bot/chat info | — | — | `Read` |
|
||||
| `Listable` | List chats | — | — | `Chats` |
|
||||
|
||||
**Shared concerns** (from `lthn/php`): `BuildsResponse`, `UsesHttp`, `ManagesTokens`. All classes use `BuildsResponse` + `UsesHttp`; Telegram classes that need stored credentials also use `ManagesTokens`.
|
||||
|
||||
**Auth model:** Discord and Slack use webhook URLs (no OAuth). Telegram uses Bot API tokens.
|
||||
|
||||
## Conventions
|
||||
|
||||
- All files use `declare(strict_types=1)`
|
||||
- Fluent setters for configuration (e.g., `withWebhook()`, `withBotToken()`, `toChatId()`)
|
||||
- All public API methods return `Core\Plug\Response` via `$this->fromHttp()`, `$this->ok()`, or `$this->error()`
|
||||
- Response transform callbacks normalize API-specific data into flat associative arrays
|
||||
- Media is passed as `Illuminate\Support\Collection` items with `url`/`path` keys
|
||||
Loading…
Add table
Reference in a new issue