index-cataloglisted
Install: claude install-skill produtoramaxvision/maxvision
# Index catalog
Argument: `$ARGUMENTS` — flags `--bootstrap` (default if no index exists) | `--rebuild` (force local build) | `--force` (re-download even if fresh)
## Workflow
### 1. Resolve cache path
```bash
set -euo pipefail
CACHE_DIR=~/.claude/cache/maxvision
mkdir -p "$CACHE_DIR"
INDEX_DB="$CACHE_DIR/index.db"
INDEX_BAK="$CACHE_DIR/index.db.bak"
```
### 2. Decide mode
- If `$ARGUMENTS` contains `--rebuild`, build locally via `python -m scripts.build_index` from `${CLAUDE_PLUGIN_ROOT}` (skip to step 3b).
- Else if `gh` is not authenticated (`gh auth status` fails), fall back to local rebuild after confirming with the user.
- Else if `index.db` exists and is < 24 h old AND `--force` is not in `$ARGUMENTS`, report cached state and exit.
- Else download from release (step 3a, default).
### 3a. Download path (default — pulls release artifact)
```bash
set -euo pipefail
# Backup current index before any overwrite
[ -f "$INDEX_DB" ] && cp -f "$INDEX_DB" "$INDEX_BAK"
gh release download catalog-index-latest \
-R produtoramaxvision/maxvision \
-p 'index.db.gz' -p 'index.db.sha256' \
--dir "$CACHE_DIR" --clobber
# Manifest produced by build-index.yml lists relative paths; cd before -c
( cd "$CACHE_DIR" && sha256sum -c index.db.sha256 ) || {
echo "SECURITY: sha256 mismatch on index.db.gz — aborting" >&2
rm -f "$CACHE_DIR/index.db.gz" "$CACHE_DIR/index.db.sha256"
exit 2
}
gunzip -f "$CACHE_DIR/index.db.gz"
```
### 3b. Local rebuild path (--rebuild or gh-not-authe