mirror of
https://github.com/bmadcode/BMAD-METHOD.git
synced 2025-12-29 16:14:59 +00:00
opencode moved agents back to agent folder
This commit is contained in:
154
.claude/hooks/github-star-reminder.sh
Executable file
154
.claude/hooks/github-star-reminder.sh
Executable file
@@ -0,0 +1,154 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# File: .claude/hooks/github-star-reminder.sh
|
||||
#
|
||||
# AgentVibes - Finally, your AI Agents can Talk Back! Text-to-Speech WITH personality for AI Assistants!
|
||||
# Website: https://agentvibes.org
|
||||
# Repository: https://github.com/paulpreibisch/AgentVibes
|
||||
#
|
||||
# Co-created by Paul Preibisch with Claude AI
|
||||
# Copyright (c) 2025 Paul Preibisch
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
# DISCLAIMER: This software is provided "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
# express or implied, including but not limited to the warranties of
|
||||
# merchantability, fitness for a particular purpose and noninfringement.
|
||||
# In no event shall the authors or copyright holders be liable for any claim,
|
||||
# damages or other liability, whether in an action of contract, tort or
|
||||
# otherwise, arising from, out of or in connection with the software or the
|
||||
# use or other dealings in the software.
|
||||
#
|
||||
# ---
|
||||
#
|
||||
# @fileoverview GitHub Star Reminder System - Gentle daily reminder to star repository
|
||||
# @context Shows a once-per-day reminder to encourage users to support the project without being annoying
|
||||
# @architecture Timestamp-based tracking using daily date comparison in a state file
|
||||
# @dependencies date command for timestamp generation
|
||||
# @entrypoints Called by play-tts.sh router on every TTS execution, sourced or executed directly
|
||||
# @patterns Rate-limiting via file-based state, graceful degradation, user-opt-out support
|
||||
# @related .claude/github-star-reminder.txt (state file), .claude/github-star-reminder-disabled.flag (opt-out)
|
||||
|
||||
# Determine config directory (project-local or global)
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
CLAUDE_DIR="$(dirname "$SCRIPT_DIR")"
|
||||
|
||||
# Check if we have a project-local .claude directory
|
||||
if [[ -d "$CLAUDE_DIR" ]] && [[ "$CLAUDE_DIR" != "$HOME/.claude" ]]; then
|
||||
REMINDER_FILE="$CLAUDE_DIR/github-star-reminder.txt"
|
||||
else
|
||||
REMINDER_FILE="$HOME/.claude/github-star-reminder.txt"
|
||||
mkdir -p "$HOME/.claude"
|
||||
fi
|
||||
|
||||
GITHUB_REPO="https://github.com/paulpreibisch/AgentVibes"
|
||||
|
||||
# @function is_reminder_disabled
|
||||
# @intent Check if GitHub star reminders have been disabled by the user
|
||||
# @why Respect user preferences and provide opt-out mechanism for reminders
|
||||
# @param None
|
||||
# @returns None
|
||||
# @exitcode 0=reminders disabled, 1=reminders enabled
|
||||
# @sideeffects Reads flag files from local/global .claude directories
|
||||
# @edgecases Checks both flag file and "disabled" text in reminder file for backward compatibility
|
||||
# @calledby should_show_reminder
|
||||
# @calls cat for reading reminder file content
|
||||
is_reminder_disabled() {
|
||||
# Check for disable flag file
|
||||
local disable_file_local="$CLAUDE_DIR/github-star-reminder-disabled.flag"
|
||||
local disable_file_global="$HOME/.claude/github-star-reminder-disabled.flag"
|
||||
|
||||
if [[ -f "$disable_file_local" ]] || [[ -f "$disable_file_global" ]]; then
|
||||
return 0 # Disabled
|
||||
fi
|
||||
|
||||
# Check if reminder file contains "disabled"
|
||||
if [[ -f "$REMINDER_FILE" ]]; then
|
||||
local content=$(cat "$REMINDER_FILE" 2>/dev/null)
|
||||
if [[ "$content" == "disabled" ]]; then
|
||||
return 0 # Disabled
|
||||
fi
|
||||
fi
|
||||
|
||||
return 1 # Not disabled
|
||||
}
|
||||
|
||||
# @function should_show_reminder
|
||||
# @intent Determine if reminder should be displayed based on date and disable status
|
||||
# @why Implement once-per-day rate limiting to avoid annoying users
|
||||
# @param None
|
||||
# @returns None
|
||||
# @exitcode 0=should show, 1=should not show
|
||||
# @sideeffects Reads .claude/github-star-reminder.txt for last reminder date
|
||||
# @edgecases Shows reminder if file doesn't exist (first run), compares YYYYMMDD format dates
|
||||
# @calledby Main execution block
|
||||
# @calls is_reminder_disabled, cat, date
|
||||
should_show_reminder() {
|
||||
# Check if disabled first
|
||||
if is_reminder_disabled; then
|
||||
return 1
|
||||
fi
|
||||
|
||||
# If no reminder file exists, show it
|
||||
if [[ ! -f "$REMINDER_FILE" ]]; then
|
||||
return 0
|
||||
fi
|
||||
|
||||
# Read last reminder date
|
||||
LAST_REMINDER=$(cat "$REMINDER_FILE" 2>/dev/null || echo "0")
|
||||
CURRENT_DATE=$(date +%Y%m%d)
|
||||
|
||||
# Show reminder if it's a new day
|
||||
if [[ "$LAST_REMINDER" != "$CURRENT_DATE" ]]; then
|
||||
return 0
|
||||
fi
|
||||
|
||||
return 1
|
||||
}
|
||||
|
||||
# @function show_reminder
|
||||
# @intent Display friendly GitHub star reminder with opt-out instructions
|
||||
# @why Encourage community support while being respectful and non-intrusive
|
||||
# @param None
|
||||
# @returns None
|
||||
# @exitcode Always 0
|
||||
# @sideeffects Updates reminder file with current date, writes to stdout
|
||||
# @edgecases None
|
||||
# @calledby Main execution block when should_show_reminder returns true
|
||||
# @calls date, echo
|
||||
show_reminder() {
|
||||
echo ""
|
||||
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
||||
echo "⭐ Enjoying AgentVibes?"
|
||||
echo ""
|
||||
echo " If you find this project helpful, please consider giving us"
|
||||
echo " a star on GitHub! It helps others discover AgentVibes and"
|
||||
echo " motivates us to keep improving it."
|
||||
echo ""
|
||||
echo " 👉 $GITHUB_REPO"
|
||||
echo ""
|
||||
echo " Thank you for your support! 🙏"
|
||||
echo ""
|
||||
echo " 💡 To disable these reminders, run:"
|
||||
echo " echo \"disabled\" > $REMINDER_FILE"
|
||||
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
||||
echo ""
|
||||
|
||||
# Update the reminder file with today's date
|
||||
date +%Y%m%d > "$REMINDER_FILE"
|
||||
}
|
||||
|
||||
# Main execution
|
||||
if should_show_reminder; then
|
||||
show_reminder
|
||||
fi
|
||||
Reference in New Issue
Block a user