xiaohongshu
xiaohongshu
Download firmware hex files and configurator builds for an INAV release
Full skill instructions
This skill downloads firmware hex files from inav-nightly and configurator builds from GitHub Actions CI.
Ask the user for the release version (e.g., "9.0.0-RC2").
VERSION="<user-provided>"
gh release list --repo iNavFlight/inav-nightly --limit 10
cd inav
git log -1 --format="%h %s" HEAD
NIGHTLY_TAG="<matching-tag>" # e.g., v9.0.0-20251129.175
mkdir -p claude/release-manager/downloads/firmware-${VERSION}
cd claude/release-manager/downloads/firmware-${VERSION}
gh release download ${NIGHTLY_TAG} --repo iNavFlight/inav-nightly --pattern "*.hex"
ls *.hex | wc -l # Should be ~219 files
Remove the CI build suffix and add RC number if applicable:
# For RC releases (e.g., 9.0.0-RC2):
# Changes: inav_9.0.0_ZEEZF7_ci-20251129-0e9f842.hex -> inav_9.0.0_RC2_ZEEZF7.hex
RC_NUM="RC2" # Set to empty string for final releases
for f in *.hex; do
# Extract target name (between version and _ci-)
target=$(echo "$f" | sed -E 's/inav_[0-9]+\.[0-9]+\.[0-9]+_(.*)_ci-.*/\1/')
version=$(echo "$f" | sed -E 's/inav_([0-9]+\.[0-9]+\.[0-9]+)_.*/\1/')
if [ -n "$RC_NUM" ]; then
newname="inav_${version}_${RC_NUM}_${target}.hex"
else
newname="inav_${version}_${target}.hex"
fi
mv "$f" "$newname"
done
# Verify renamed files
ls *.hex | head -5
cd inav-configurator
gh run list --limit 10 --json databaseId,headBranch,status,conclusion
CRITICAL: Keep each platform in separate subdirectories to prevent cross-platform contamination.
RUN_ID="<run-id>"
# Create platform-specific directories
BASE_DIR="claude/release-manager/downloads/configurator-${VERSION}"
mkdir -p "${BASE_DIR}"/{linux,macos,windows}
# Download all artifacts to temp directory
cd "${BASE_DIR}"
mkdir -p _temp
cd _temp
gh run download ${RUN_ID} --repo iNavFlight/inav-configurator
# Move Linux artifacts
find . -name "*linux*" -o -name "*_DEB" -o -name "*_RPM" | while read artifact; do
find "$artifact" -type f -exec mv {} ../linux/ \;
done
# Move macOS artifacts
find . -name "*MacOS*" -o -name "*darwin*" -o -name "*_DMG" | while read artifact; do
find "$artifact" -type f -exec mv {} ../macos/ \;
done
# Move Windows artifacts
find . -name "*Win*" -o -name "*_MSI" | while read artifact; do
find "$artifact" -type f -exec mv {} ../windows/ \;
done
# Remove temp directory and empty subdirs
cd ..
rm -rf _temp
echo "=== Linux artifacts ==="
ls -lh linux/
echo "=== macOS artifacts ==="
ls -lh macos/
echo "=== Windows artifacts ==="
ls -lh windows/
CRITICAL: Before upload, verify DMGs don't contain Windows executables.
cd macos/
for dmg in *.dmg; do
echo "Verifying: $dmg"
# Mount the DMG
hdiutil attach "$dmg" -quiet
# Find mount point
MOUNT_POINT=$(hdiutil info | grep "/Volumes/INAV" | awk '{print $3}')
# Check for Windows executables (SHOULD BE NONE)
echo " Checking for .exe files..."
EXE_COUNT=$(find "$MOUNT_POINT" -name "*.exe" 2>/dev/null | wc -l)
if [ "$EXE_COUNT" -gt 0 ]; then
echo " ❌ ERROR: Found .exe files in macOS DMG!"
find "$MOUNT_POINT" -name "*.exe"
else
echo " ✅ No .exe files found"
fi
# Check architecture
echo " Checking architecture..."
APP_PATH=$(find "$MOUNT_POINT" -name "*.app" -maxdepth 2 | head -1)
if [ -n "$APP_PATH" ]; then
BINARY="$APP_PATH/Contents/MacOS/inav-configurator"
if [ -f "$BINARY" ]; then
ARCH=$(lipo -info "$BINARY" 2>/dev/null | tail -1)
echo " Architecture: $ARCH"
fi
fi
# Unmount
hdiutil detach "$MOUNT_POINT" -quiet
echo ""
done
cd ..
After downloading, report:
Downloads will be organized as:
claude/release-manager/downloads/
├── firmware-<version>/ # Hex files (flat)
│ ├── inav_9.0.0_RC2_MATEKF405.hex
│ └── ...
└── configurator-<version>/ # Configurator packages (BY PLATFORM)
├── linux/
│ ├── INAV-Configurator_linux_x64_9.0.0.deb
│ └── ...
├── macos/
│ ├── INAV-Configurator_MacOS_arm64_9.0.0.dmg
│ └── ...
└── windows/
├── INAV-Configurator_Win64_9.0.0.msi
└── ...
Why platform separation? In the 9.0.0 release, a Windows .exe was found inside a Mac DMG. The cause is uncertain, but platform separation and verification help prevent this type of contamination.
After downloads complete, the human must:
xiaohongshu
technical spec
product ux expert
database patterns
Conduct multi-agent task orchestration and workflow coordination.
Initialize project with Conductor artifacts (product definition,
Expert in web animations, transitions, and motion design using Framer Motion and CSS
Creates Mermaid and ASCII diagrams for flowcharts, architecture, ERDs, state machines, mindmaps, and more. Use when user mentions diagram, flowchart, mermaid, ASCII diagram, text diagram, terminal diagram, visualize, C4, mindmap, architecture diagram, sequence diagram, ERD, or needs visual docume...
PostgreSQL bindings for H3 hexagonal grid system. Use when working with H3 cells in Postgres, including spatial indexing, geometry/geography integration, and raster analysis.
Context-Driven Development skill for projects using Conductor. Use this skill when you detect a `conductor/` directory in the project, when working on tasks defined in a `plan.md` file, or when the user asks about tracks, specs, or plans. Automatically applies TDD workflow, tracks task completion...
Display project status, active tracks, and next actions
Official Stakpak application containerization standard operating procedure, a step-by-step guidline to properly dockerize applications. This is a rule book curated by the Stakpak Team.
Generate, edit, and beat-sync AI video with leading models in one workspace.
The world's fastest calendar for remote work
Transform Your Design with AI Designer by ImgCreator.ai
Revolutionizing Video Production with AI-Powered Creativity
Extend an image past the frame and let AI fill the new aspect ratio.
Discover your celebrity doppelgänger with StarByFace!
ChainClarity explains 700+ crypto whitepapers in plain English, with layered summaries, comparisons, research tools, alerts, and a $4.99 Pro plan.
Opus.ai: Revolutionize Your Web Experience