feat: add cargo-lock-manager skill for handling --locked flag issues

- Create skill to manage Cargo.lock updates
- Add scripts for checking and updating lock files
- Document common CI failure patterns and solutions
This commit is contained in:
Benjamin Shafii
2026-02-01 12:50:31 -08:00
parent aadec3aae1
commit 55947111b7
4 changed files with 105 additions and 0 deletions

View File

@@ -0,0 +1,2 @@
.env
*.log

View File

@@ -0,0 +1,67 @@
---
name: cargo-lock-manager
description: |
Manages Cargo.lock file updates and resolves --locked flag issues in CI/CD.
Triggers when user mentions:
- "cargo test --locked failed"
- "cannot update the lock file"
- "Cargo.lock is out of date"
- "PR failed with --locked error"
- "fix Cargo.lock"
---
## Quick Usage (Already Configured)
### Check Cargo.lock status
```bash
cd packages/desktop/src-tauri
cargo check --locked 2>&1 | head -20
```
### Update Cargo.lock locally
```bash
cd packages/desktop/src-tauri
cargo update --workspace
```
### Test with --locked after update
```bash
cd packages/desktop/src-tauri
cargo test --locked
```
## Common Gotchas
- The `--locked` flag prevents automatic updates to Cargo.lock, which is good for reproducible builds but fails when dependencies change.
- PRs often fail because the lock file wasn't committed after dependency updates.
- Running `cargo update` without `--workspace` may not update all workspace members.
## When CI Fails with --locked
### Option 1: Update lock file and commit (Recommended)
```bash
cd packages/desktop/src-tauri
cargo update --workspace
git add Cargo.lock
git commit -m "chore: update Cargo.lock"
git push
```
### Option 2: Use --offline flag (for air-gapped environments)
```bash
cargo test --manifest-path packages/desktop/src-tauri/Cargo.toml --offline
```
## First-Time Setup (If Not Configured)
No setup required. This skill assumes:
- Rust/Cargo is installed
- You're in the openwork repository
- The Tauri app is in `packages/desktop/src-tauri/`
## Prevention Tips
- Always run `cargo check` or `cargo build` after modifying `Cargo.toml` files
- Include `Cargo.lock` changes in the same commit as dependency updates
- Consider adding a pre-commit hook to verify lock file is up to date

View File

@@ -0,0 +1,20 @@
#!/bin/bash
# Check if Cargo.lock is up to date with --locked flag
# Exit 0 if OK, exit 1 if needs update
set -e
CARGO_TOML="${1:-packages/desktop/src-tauri/Cargo.toml}"
echo "🔍 Checking Cargo.lock status for: $CARGO_TOML"
if cargo check --manifest-path "$CARGO_TOML" --locked 2>&1; then
echo "✅ Cargo.lock is up to date"
exit 0
else
echo "❌ Cargo.lock needs update"
echo ""
echo "To fix, run:"
echo " cd $(dirname "$CARGO_TOML") && cargo update --workspace"
exit 1
fi

View File

@@ -0,0 +1,16 @@
#!/bin/bash
# Update Cargo.lock for the Tauri workspace
set -e
CARGO_TOML="${1:-packages/desktop/src-tauri/Cargo.toml}"
WORKDIR=$(dirname "$CARGO_TOML")
echo "📦 Updating Cargo.lock in: $WORKDIR"
cd "$WORKDIR"
cargo update --workspace
echo ""
echo "✅ Cargo.lock updated"
echo "📝 Don't forget to commit the changes!"