Skill Hunting.
- Search with gh CLI
Use this regex path filter:
path:/^./.?(opencode|ai|llm|claude|codex|agents|pi|cursor|factory)/skills?/.*.md$/
Example:
gh search code "zellij path:/^./.?(opencode|ai|llm|claude|codex|agents|pi|cursor|factory)/skills?/.*.md$/"
--limit 20
--json repository,path,url
- Download the full skill directory (using gh download )
Given a result path like .pi/skills/terminal/zellij/SKILL.md , download the directory (.pi/skills/terminal/zellij/ ), not only one file.
Install once (if needed)
gh extension install yuler/gh-download
REPO="owner/repo" SKILL_FILE_PATH=".pi/skills/terminal/zellij/SKILL.md" SKILL_DIR_PATH="$(dirname "$SKILL_FILE_PATH")"
DOTFILES_ROOT="${DOTFILE_REPO_ROOT:-$(git rev-parse --show-toplevel)}" STAGING_ROOT="${DOTFILES_ROOT}/ai/files/skills-research" mkdir -p "$STAGING_ROOT"
Download directory directly from GitHub without cloning full repo
gh download "$REPO" "$SKILL_DIR_PATH" --outdir "$STAGING_ROOT"
echo "Downloaded: $STAGING_ROOT/$(basename "$SKILL_DIR_PATH")"
- Categorize and move to ${DOTFILES_ROOT}/ai/files/skills/{category}
Pick a category from existing dirs under ${DOTFILES_ROOT}/ai/files/skills/ .
DOTFILES_ROOT="${DOTFILE_REPO_ROOT:-$(git rev-parse --show-toplevel)}" SKILLS_ROOT="${DOTFILES_ROOT}/ai/files/skills"
Show available categories
find "$SKILLS_ROOT" -mindepth 1 -maxdepth 1 -type d -printf "%f\n" | sort
Inputs
DOWNLOADED_DIR="${DOTFILES_ROOT}/ai/files/skills-research/zellij" SKILL_NAME="zellij" CATEGORY="shells" # choose from existing categories above
TARGET_DIR="${SKILLS_ROOT}/${CATEGORY}/${SKILL_NAME}" mkdir -p "$(dirname "$TARGET_DIR")" mv "$DOWNLOADED_DIR" "$TARGET_DIR"
echo "Stored at: $TARGET_DIR"
Done Criteria
-
You used gh search code with the regex above.
-
You downloaded the skill directory (not just SKILL.md ).
-
You moved it to ${DOTFILES_ROOT}/ai/files/skills/{category}/{skill-name} using an existing category.