Skip to content

Instantly share code, notes, and snippets.

@dodyg
Created February 27, 2026 07:03
Show Gist options
  • Select an option

  • Save dodyg/9a69b4adef493f004cdfb00dee1b39bf to your computer and use it in GitHub Desktop.

Select an option

Save dodyg/9a69b4adef493f004cdfb00dee1b39bf to your computer and use it in GitHub Desktop.
Install and sync dotnet artisan skills to your project for opencode agent
#!/bin/bash
set -e
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
REPO_URL="https://github.com/novotnyllc/dotnet-artisan"
VENDOR_DIR="$SCRIPT_DIR/vendors/dotnet-artisan"
SKILLS_DIR="$SCRIPT_DIR/skills"
FORCE_UPDATE="${1:-}"
echo "πŸ”„ Syncing dotnet-artisan skills..."
echo ""
if [ -d "$VENDOR_DIR" ]; then
echo "πŸ“¦ Updating existing clone..."
(cd "$VENDOR_DIR" && git fetch origin && git reset --hard origin/main)
else
echo "πŸ“¦ Cloning dotnet-artisan..."
mkdir -p "$VENDOR_DIR"
git clone --depth 1 "$REPO_URL" "$VENDOR_DIR"
fi
echo ""
echo "πŸ“‹ Copying skills to .opencode/skills/..."
mkdir -p "$SKILLS_DIR"
SYNCED=0
SKIPPED=0
UPDATED=0
for skill_dir in "$VENDOR_DIR/skills/"*/; do
skill_name=$(basename "$skill_dir")
target_dir="$SKILLS_DIR/$skill_name"
if [ -d "$target_dir" ] && [ "$FORCE_UPDATE" = "--force" ]; then
rm -rf "$target_dir"
cp -r "$skill_dir" "$SKILLS_DIR/"
echo " ↻ $skill_name (updated)"
UPDATED=$((UPDATED + 1))
elif [ -d "$target_dir" ]; then
echo " Β· $skill_name (exists)"
SKIPPED=$((SKIPPED + 1))
else
cp -r "$skill_dir" "$SKILLS_DIR/"
echo " βœ“ $skill_name"
SYNCED=$((SYNCED + 1))
fi
done
TOTAL=$((SYNCED + SKIPPED + UPDATED))
echo ""
echo "βœ… Done!"
echo " Total: $TOTAL skills"
echo " New: $SYNCED"
echo " Updated: $UPDATED"
echo " Skipped: $SKIPPED"
echo ""
echo "πŸ“ Skills location: $SKILLS_DIR"
echo "πŸ’‘ Run with --force to update existing skills"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment