fix: install.sh — section GLOBAL : détection skills sans sous-dossier catégorie
Problème : .codex/skills/ha-log-investigator/SKILL.md n'a pas de niveau catégorie contrairement à .claude/skills/infra/ha-log-investigator/SKILL.md. Le parsing cat/skill était donc faux pour codex (cat=skill, skill="SKILL"). Fix : - gen_global_section() détecte la profondeur via le nombre de / dans le chemin - cat_name vide si skill directement sous skills/ (structure codex) - find exclut les dossiers cachés (*.system*, etc.) via -not -path '*/.*' - preview_script g: construit le chemin selon présence ou non de cat_name Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
+18
-3
@@ -597,10 +597,21 @@ gen_global_section() {
|
|||||||
[[ -z "$base" ]] && continue
|
[[ -z "$base" ]] && continue
|
||||||
while IFS= read -r skill_md; do
|
while IFS= read -r skill_md; do
|
||||||
rel="${skill_md#${base}/skills/}"
|
rel="${skill_md#${base}/skills/}"
|
||||||
cat_name="${rel%%/*}"; rest="${rel#*/}"; skill_name="${rest%%/*}"
|
local path_part="${rel%/SKILL.md}"
|
||||||
|
local slashes="${path_part//[^\/]/}"
|
||||||
|
local cat_name skill_name display
|
||||||
|
if [[ "${#slashes}" -ge 1 ]]; then
|
||||||
|
cat_name="${path_part%%/*}"
|
||||||
|
skill_name="${path_part#*/}"
|
||||||
|
display="${cat_name}/${skill_name}"
|
||||||
|
else
|
||||||
|
cat_name=""
|
||||||
|
skill_name="$path_part"
|
||||||
|
display="$skill_name"
|
||||||
|
fi
|
||||||
ver=$(grep "^version:" "$skill_md" 2>/dev/null | head -1 | awk '{print $2}')
|
ver=$(grep "^version:" "$skill_md" 2>/dev/null | head -1 | awk '{print $2}')
|
||||||
global_lines+=("g:${agent}|${cat_name}|${skill_name}\t ${GRV_GRAY}${cat_name}/${skill_name}${RESET} ${GRV_GRAY}[${agent}]${RESET} ${GRV_GRAY}v${ver:-?}${RESET}")
|
global_lines+=("g:${agent}|${cat_name}|${skill_name}\t ${GRV_GRAY}${display}${RESET} ${GRV_GRAY}[${agent}]${RESET} ${GRV_GRAY}v${ver:-?}${RESET}")
|
||||||
done < <(find "${base}/skills" -name "SKILL.md" 2>/dev/null | sort)
|
done < <(find "${base}/skills" -name "SKILL.md" -not -path '*/.*' 2>/dev/null | sort)
|
||||||
done
|
done
|
||||||
if [[ ${#global_lines[@]} -eq 0 ]]; then
|
if [[ ${#global_lines[@]} -eq 0 ]]; then
|
||||||
printf "d:-\t${GRV_GRAY} (aucun skill installé globalement)${RESET}\n"
|
printf "d:-\t${GRV_GRAY} (aucun skill installé globalement)${RESET}\n"
|
||||||
@@ -664,7 +675,11 @@ elif [[ "$type" == "g" || ( "$type" == "d" && "$value" != "-" && "$value" != "se
|
|||||||
hermes) base="$HOME/.hermes" ;;
|
hermes) base="$HOME/.hermes" ;;
|
||||||
*) exit 0 ;;
|
*) exit 0 ;;
|
||||||
esac
|
esac
|
||||||
|
if [[ -n "$cat_name" ]]; then
|
||||||
skill_file="${base}/skills/${cat_name}/${skill_name}/SKILL.md"
|
skill_file="${base}/skills/${cat_name}/${skill_name}/SKILL.md"
|
||||||
|
else
|
||||||
|
skill_file="${base}/skills/${skill_name}/SKILL.md"
|
||||||
|
fi
|
||||||
if [[ -f "$skill_file" ]]; then
|
if [[ -f "$skill_file" ]]; then
|
||||||
if command -v bat &>/dev/null; then
|
if command -v bat &>/dev/null; then
|
||||||
bat --style=numbers,header --color=always --language=markdown "$skill_file"
|
bat --style=numbers,header --color=always --language=markdown "$skill_file"
|
||||||
|
|||||||
Reference in New Issue
Block a user