fix: install.sh — read et fzf lisent depuis /dev/tty (compatibilité curl | bash)
Sans </dev/tty, stdin est le pipe curl et les prompts interactifs (question fzf, question installation fzf) ne répondent pas. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
+1
-2
@@ -2,8 +2,7 @@
|
|||||||
.claude/
|
.claude/
|
||||||
|
|
||||||
# Fichiers de travail personnels (notes, brouillons)
|
# Fichiers de travail personnels (notes, brouillons)
|
||||||
claude_code_skills_installer_guidelines_md.md
|
|
||||||
future-list_skill.md
|
|
||||||
|
|
||||||
# Fichiers temporaires système
|
# Fichiers temporaires système
|
||||||
*.tmp
|
*.tmp
|
||||||
|
|||||||
@@ -0,0 +1,153 @@
|
|||||||
|
# Consignes Claude Code — Système d’installation de Skills
|
||||||
|
|
||||||
|
tu est un expert senior en devellopement de script bash pour linux (debian ou ubuntu)
|
||||||
|
tu es egalement un expret en creation de skill pour des agents ia : claude code, codex, gemini cli, hermes agent et tu connais bien la structure du skill et des dossiers attendu
|
||||||
|
|
||||||
|
tu t'exprimera avec moi en francais comprehensible par un novice.
|
||||||
|
tes commentaires de code seront egalement en francais
|
||||||
|
|
||||||
|
tu analysera quels outils sont les plus utile pour develloper mon projet
|
||||||
|
tu deploiera un plan de devellopement avant toute ecriture de code
|
||||||
|
|
||||||
|
## Objectif général
|
||||||
|
|
||||||
|
Développer un système simple, autonome et robuste permettant :
|
||||||
|
- un repo comme base de mes skills_perso
|
||||||
|
- d’installer des skills IA via une commande shell ;
|
||||||
|
- d’activer/désactiver des skills ;
|
||||||
|
- de gérer les dépendances minimales ;
|
||||||
|
- de fonctionner principalement avec :
|
||||||
|
- `bash`
|
||||||
|
- `curl`
|
||||||
|
- `wget`
|
||||||
|
- `git`
|
||||||
|
|
||||||
|
|
||||||
|
Le système doit être pensé pour Debian/Linux principalement.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Philosophie du projet
|
||||||
|
|
||||||
|
Le système doit être :
|
||||||
|
|
||||||
|
- minimaliste ;
|
||||||
|
- autonome ;
|
||||||
|
- facilement portable ;
|
||||||
|
- lisible ;
|
||||||
|
- maintenable ;
|
||||||
|
- compatible self-hosted ;
|
||||||
|
- orienté CLI ;
|
||||||
|
- compatible avec des agents IA locaux.
|
||||||
|
|
||||||
|
Éviter :
|
||||||
|
|
||||||
|
- les frameworks lourds ;
|
||||||
|
- les installateurs complexes ;
|
||||||
|
- les dépendances Python inutiles ;
|
||||||
|
- Node.js ;
|
||||||
|
- Docker ;
|
||||||
|
- les services système complexes.
|
||||||
|
|
||||||
|
Le système doit pouvoir fonctionner sur :
|
||||||
|
|
||||||
|
- Debian ;
|
||||||
|
- Ubuntu ;
|
||||||
|
- Proxmox ;
|
||||||
|
- VM Linux légères ;
|
||||||
|
- mini-PC ;
|
||||||
|
- environnements homelab.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Fonctionnalités attendues
|
||||||
|
|
||||||
|
|
||||||
|
un repo perso de stockage de mes skills perso.
|
||||||
|
tu definira la structure des dossier affin d'avoir un classement des skill judicieux, evolutif
|
||||||
|
|
||||||
|
## Installation de skills sur le poste client
|
||||||
|
|
||||||
|
Exemple attendu :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
curl -fsSL https://gitea.maison43.duckdns.org/gilles/mes_skills/install.sh | bash
|
||||||
|
```
|
||||||
|
|
||||||
|
tu fera un brainstorming sur la meilleur outils pour generer ce script d'installation
|
||||||
|
|
||||||
|
Voici mes 1ere investigation ; rien n'est obligatoire.
|
||||||
|
Le système doit :
|
||||||
|
- un script bash
|
||||||
|
- installer uniquement les dépendances nécessaires ;
|
||||||
|
- detecter quels agent ia est installe sur le systeme
|
||||||
|
- detecter quels skills sont deja installer en global
|
||||||
|
- cloner ou copier le dépôt de skill dans un repertoire temporaire;
|
||||||
|
- demander pour quels agent je dois installer
|
||||||
|
- demander si installer en global ou dans dossier projet ( dossier actuel ou je lance la commande)
|
||||||
|
- proposer un menu avec la liste des skills installable/deja installe, a mettre a jours
|
||||||
|
- selectionner les skils via clavier felche haut, bas; space, esc, enter
|
||||||
|
- gerer un versioning des skill
|
||||||
|
- detecter de nouveaux skill intalle en local et non present dans mon repo ( possibilite d'uploader vers mon repo git un new skill)
|
||||||
|
|
||||||
|
|
||||||
|
tu pourra verifier sur les site suivant la structure d'un skill:
|
||||||
|
- https://code.claude.com/docs/fr/skills
|
||||||
|
- https://developers.openai.com/codex/skills
|
||||||
|
- https://geminicli.com/docs/cli/skills/
|
||||||
|
- https://hermes-agent.nousresearch.com/docs/guides/work-with-skills
|
||||||
|
|
||||||
|
## Suggestion
|
||||||
|
|
||||||
|
Exemple :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
https://github.com/NousResearch/hermes-agent/blob/main/scripts/install.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
analyse se script, sa mecanique me semble correspondre a ce que je veux
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Détection automatique
|
||||||
|
|
||||||
|
Le script doit détecter automatiquement :
|
||||||
|
|
||||||
|
- présence de `git`
|
||||||
|
- présence de `curl`
|
||||||
|
- présence de `wget`
|
||||||
|
- présence de `python3`
|
||||||
|
- présence de `uv`
|
||||||
|
- présence de `docker`
|
||||||
|
- présence de `podman`
|
||||||
|
|
||||||
|
Puis adapter l’installation.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Gestion Python
|
||||||
|
|
||||||
|
Si un skill nécessite Python :
|
||||||
|
|
||||||
|
Préférer :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python3 -m venv
|
||||||
|
```
|
||||||
|
|
||||||
|
ou idéalement :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
uv venv
|
||||||
|
```
|
||||||
|
|
||||||
|
Éviter :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
pip install globalement
|
||||||
|
```
|
||||||
|
|
||||||
|
Chaque skill doit idéalement avoir son environnement isolé.
|
||||||
|
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
# en vrac, liste de skill a creer
|
||||||
|
|
||||||
|
- home assistant : debug log, automatisation, dashboard optimization, service, entitie
|
||||||
|
- esphome ; creation, debuggazge amelioration
|
||||||
|
- esp32 : iot vias esp32, analyse puce et gpio, platformio, webserver, wifi,ap, ds18b20, dht22, relay, switch, rules, ota, ethernet, carte kincony
|
||||||
|
- traducteur de page markdown ( ne pas traduire les lien ), screen, touchscreen
|
||||||
|
- docker compose expert
|
||||||
|
- analyse reseau
|
||||||
|
- proxmox
|
||||||
|
- opensense expert
|
||||||
|
- serveur dns api
|
||||||
|
- cura printer
|
||||||
|
- bash expert
|
||||||
|
- rpi expert for iot
|
||||||
|
- nodered writer
|
||||||
|
- linux hardware optimisation
|
||||||
|
- selhosted homelab
|
||||||
|
- tuto ia ; ollama, hermes claude code, gemini cli, codex
|
||||||
|
- web page designer for laptop/smartphone
|
||||||
|
- matrix selfhosted expert (synapse)
|
||||||
|
- python coding expert, rust
|
||||||
|
- zigbee expert
|
||||||
|
- weewx expert ( merge old database)
|
||||||
|
- mqtt optimizer
|
||||||
|
- coral et expert image analyser
|
||||||
|
- create plan de dev pour un app selhosted
|
||||||
|
- debian et ubuntu optimizer
|
||||||
|
- asus tuf gaming (recherche internet evolution compatibilite avec linux)
|
||||||
|
- ia selfhosted ollazma, lmstudio cpu, nvidia, intel arc
|
||||||
|
- expert jardinnage
|
||||||
|
- expert diy et iot (recherche web)
|
||||||
+2
-2
@@ -76,7 +76,7 @@ _install_fzf_binary() {
|
|||||||
install_fzf() {
|
install_fzf() {
|
||||||
warn "fzf non trouvé."
|
warn "fzf non trouvé."
|
||||||
echo -e " ${GRV_FG}Installer fzf ? [o/N]${RESET} \c"
|
echo -e " ${GRV_FG}Installer fzf ? [o/N]${RESET} \c"
|
||||||
read -r answer
|
read -r answer </dev/tty
|
||||||
[[ "$answer" != "o" && "$answer" != "O" ]] && err "fzf requis. Abandon." && exit 1
|
[[ "$answer" != "o" && "$answer" != "O" ]] && err "fzf requis. Abandon." && exit 1
|
||||||
if command -v apt-get &>/dev/null; then
|
if command -v apt-get &>/dev/null; then
|
||||||
debug "Installation via apt"
|
debug "Installation via apt"
|
||||||
@@ -392,7 +392,7 @@ LIST_EOF
|
|||||||
--prompt="Skills > " \
|
--prompt="Skills > " \
|
||||||
--header="$legend" \
|
--header="$legend" \
|
||||||
--bind="tab:execute-silent($cycle_script '$STATE_FILE' '$fns_file' {n})+reload($list_script)" \
|
--bind="tab:execute-silent($cycle_script '$STATE_FILE' '$fns_file' {n})+reload($list_script)" \
|
||||||
< <(bash "$list_script") > /dev/null || true
|
< <(bash "$list_script") > /dev/null </dev/tty || true
|
||||||
|
|
||||||
rm -f "$cycle_script" "$list_script" "$fns_file"
|
rm -f "$cycle_script" "$list_script" "$fns_file"
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user