Add Claude Code hooks and release skill

- PostToolUse hook: auto-format .rs files with rustfmt after edit
- PreToolUse hook: block direct edits to Cargo.lock
- /release skill: build .deb and inspect package metadata

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Ole-Morten Duesund 2026-02-16 13:44:00 +01:00
commit 1f216243f0
4 changed files with 68 additions and 0 deletions

View file

@ -0,0 +1,16 @@
#!/bin/bash
# Block direct edits to Cargo.lock — it should only change via cargo
INPUT=$(cat)
FILE_PATH=$(echo "$INPUT" | jq -r '.tool_input.file_path // empty')
if [[ "$FILE_PATH" == *"Cargo.lock" ]]; then
echo '{
"hookSpecificOutput": {
"hookEventName": "PreToolUse",
"permissionDecision": "deny",
"permissionDecisionReason": "Cargo.lock is auto-generated. Use cargo to update dependencies."
}
}'
else
exit 0
fi

8
.claude/hooks/format-rs.sh Executable file
View file

@ -0,0 +1,8 @@
#!/bin/bash
# Auto-format Rust files after Edit/Write
INPUT=$(cat)
FILE_PATH=$(echo "$INPUT" | jq -r '.tool_input.file_path // empty')
if [[ "$FILE_PATH" == *.rs ]]; then
rustfmt --edition 2021 "$FILE_PATH" 2>/dev/null || true
fi

27
.claude/settings.json Normal file
View file

@ -0,0 +1,27 @@
{
"hooks": {
"PostToolUse": [
{
"matcher": "Edit|Write",
"hooks": [
{
"type": "command",
"command": "$CLAUDE_PROJECT_DIR/.claude/hooks/format-rs.sh",
"statusMessage": "Formatting Rust code..."
}
]
}
],
"PreToolUse": [
{
"matcher": "Edit|Write",
"hooks": [
{
"type": "command",
"command": "$CLAUDE_PROJECT_DIR/.claude/hooks/block-cargo-lock.sh"
}
]
}
]
}
}

View file

@ -0,0 +1,17 @@
---
name: release
description: Build claudify .deb package and show build info
disable-model-invocation: true
---
# Release
Build the claudify .deb package and verify the output.
## Steps
1. Run `cargo tauri build` from the project root
2. Show the build output path and file size
3. Inspect the .deb package metadata with `dpkg-deb --info`
4. List the .deb package contents with `dpkg-deb --contents`
5. Report the package name, version, architecture, and installed size