KeiSeiKit-1.0/hooks/decompose-rules-on-edit.sh
Parfii-bot a4e667de10 KeiSeiKit-public — clean state
Single-commit clean baseline after security scrub of niche-tells,
project codenames, internal jargon, and contributor-email leaks.

Contents:
- 100 Rust crates (_primitives/_rust/)
- 37 agent manifests (_manifests/) + generated specs (_generated/)
- 67 user-invocable skills (skills/)
- 33 hooks (hooks/)
- Composition blocks (_blocks/)
- Documentation (docs/, README.md)
- TS adapter packages (_ts_packages/)
- Assembler (_assembler/)
- Roles (_roles/)
- Templates (_templates/)
- Forgejo CI (.forgejo/)

Author: Denis Parfionovich <info@greendragon.info>

License: see LICENSE.
2026-05-01 12:09:03 +08:00

45 lines
1.4 KiB
Bash
Executable file

#!/bin/sh
# decompose-rules-on-edit.sh — PostToolUse:Edit|Write — auto-decompose rules.
# Severity: warn (exit 0; advisory only)
#
# When ~/.claude/rules/<rule>.md is edited, re-run kei-decompose
# decompose-rules so the kei-registry stays fresh. Idempotent (unchanged
# bodies → no-op; changed bodies → supersede chain). Closes the loop:
#
# rule edit → re-decompose → registry updated
# manifest edit → re-assemble (via existing assemble-agents.sh)
# block edit → re-assemble all
#
# After this hook, the assembler picks up new fragment bodies on next
# manifest re-assemble.
#
# Bypass: DECOMPOSE_RULES_BYPASS=1.
[ "${DECOMPOSE_RULES_BYPASS:-0}" = "1" ] && exit 0
command -v jq >/dev/null 2>&1 || exit 0
INPUT=$(cat 2>/dev/null || true)
FILE=$(printf '%s' "$INPUT" | jq -r '.tool_input.file_path // empty' 2>/dev/null)
[ -z "$FILE" ] && exit 0
# Only fire on .md files inside ~/.claude/rules/ (top, specialty/, projects/)
case "$FILE" in
"$HOME/.claude/rules/"*.md) ;;
"$HOME/.claude/rules/specialty/"*.md) ;;
"$HOME/.claude/rules/projects/"*.md) ;;
*) exit 0 ;;
esac
# Skip RULES.md (registry doc, not a rule itself)
case "$FILE" in
*"/RULES.md") exit 0 ;;
esac
# Resolve via PATH (canonical: ~/.cargo/bin/). Bail silently if absent.
KEID=$(command -v kei-decompose 2>/dev/null)
[ -z "$KEID" ] && exit 0
# Re-decompose the entire rules dir (fast — regex-only, idempotent).
"$KEID" decompose-rules >/dev/null 2>&1 || true
exit 0