first
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
# CLAUDE.md — ApiPilot
|
||||
|
||||
Questo file estende [AGENT.md](AGENT.md) con note specifiche per Claude / agenti di coding. Le regole comuni (architettura, sicurezza, testing, documentazione) si trovano in AGENT.md e sono obbligatorie. Consultalo prima di ogni modifica.
|
||||
|
||||
## Prompt interno per Claude (non divulgare)
|
||||
|
||||
Quando modifichi ApiPilot:
|
||||
|
||||
1. **Inizia sempre leggendo AGENT.md e CHANGELOG.md** per capire lo stato attuale.
|
||||
2. **Preferisci modifiche minimali e generiche**: la libreria è passthrough. La logica di dominio è nel backend ospite.
|
||||
3. **Non introdurre riferimenti a specifiche entità** nel nucleo (es. `invoice`, `workspace`, `tenant`).
|
||||
4. **Cap rigorosamente ogni lista/struttura iniettata** nel contesto del modello: dimensioni massime, troncamento chiaro.
|
||||
5. **Anti-meta-commento / anti-thinking-leak**:
|
||||
- Le funzioni pubbliche (specie in adapter) restituiscono dati pronti per essere mandati al modello.
|
||||
- Non includere debug, pensieri o meta-commenti nei valori di ritorno.
|
||||
- Nei messaggi di errore evita frasi autoriferite ("io", "questo tool") quando possibile.
|
||||
6. **Per modifiche alle strutture `TypedDict`**: aggiorna in parallelo i test corrispondenti; rompere compatibilità qui richiede bump di versione appropriato in CHANGELOG.
|
||||
7. **Quando tocchi `openapi_parser`**: verifica che i parametri `in: header` siano sempre esclusi dal catalogo. Non aggiungere parametri tecnologici per errore.
|
||||
8. **Quando tocchi `core._run_endpoint`**:
|
||||
- Non permettere all'argomento agente di risolvere arbitrariamente il nome della funzione Python; la mappatura è statica.
|
||||
- Riporta in `ExecuteResponse.error` status_code ed endpoint senza stacktrace internamente.
|
||||
9. **Quando tocchi gli endpoints HTTP in `fastapi.py`**:
|
||||
- Assicurati che `require_auth_for_http=True` + `get_current_user != None` dia sempre 401 senza token.
|
||||
- Nessun parametro URL permetta di scegliere nomi di file, rotte, credenziali.
|
||||
10. **Ciclo di verifica minimo prima di dichiarare completato**:
|
||||
```
|
||||
pytest -q
|
||||
ruff check apipilot tests examples
|
||||
```
|
||||
|
||||
## Regole specifiche ApiPilot in aggiunta ad AGENT.md
|
||||
|
||||
- I nomi dei tool devono essere identificatori validi e corti: `a-zA-Z0-9_`.
|
||||
- Le descrizioni dei tool sono scritte per il modello, non per l'utente finale: devono spiegare **quando** usare il tool, non **come** è implementato.
|
||||
- `tools_for(user)` deve sempre ritornare una lista nuova (non condivisa) per evitare side-effect.
|
||||
- Ogni adapter deve preservare `tool_call_id` in modo trasparente (cfr. `OpenAIAdapter.make_tool_result`).
|
||||
|
||||
## Note su versionamento Qwen / modelli quantizzati
|
||||
|
||||
- Le descrizioni dei parametri non devono contenere meta-stringhe tipo "pensa bene prima di...", ma essere istruzioni operative concrete.
|
||||
- Evita enum molto lunghe (>20 valori) iniettate nello schema: meglio rimpiazzarle con `type: string` e descrizione che rimandi a un tool di lookup.
|
||||
- Dove possibile, rimpicciolisci `max_response_size` prima di affidarti al troncamento generico; esponi come configurazione per-tool.
|
||||
|
||||
Per qualsiasi domanda che questi due file non coprano, documenta la decisione nel CHANGELOG e aggiorna questo doc o AGENT.md coerentemente.
|
||||
Reference in New Issue
Block a user