
Trigger
- 1 installs
- 12 repo stars
- Updated April 26, 2026
- bytesagain/ai-skills
trigger is a Claude skill wrapping a CLI event-trigger toolkit for webhooks, file watchers, and condition-based automation.
About
This skill is a CLI event-trigger toolkit covering webhook handlers, file watchers, condition-based automation, event logging, and chain triggers. It exposes commands to run, list, add, check status of, and export triggers. A developer uses it to automate trigger-based tasks in a workflow.
- Event trigger toolkit with webhook handlers, file watchers, and condition-based automation
- Commands: trigger run, list, add, status, export, help
- Stores data in ~/.local/share/trigger/, configurable via TRIGGER_DIR
Trigger by the numbers
- 1 all-time installs (skills.sh)
- Ranked #1,983 of 2,715 Automation & Workflows skills by installs in the Skillselion catalog
- Data as of Jul 27, 2026 (Skillselion catalog sync)
trigger capabilities & compatibility
- Use cases
- orchestration
- Pricing
- Free
What trigger says it does
Set up event triggers with webhooks, file watchers, and automation. Use when adding rules, planning flows, tracking events, reviewing triggers, building chains.
Event trigger toolkit — webhook handlers, file watchers, condition-based automation, event logging, and chain triggers.
npx skills add https://github.com/bytesagain/ai-skills --skill triggerAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 1 |
|---|---|
| repo stars | ★ 12 |
| Last updated | April 26, 2026 |
| Repository | bytesagain/ai-skills ↗ |
What it does
Set up webhooks, file watchers, and condition-based automation chains from a CLI.
Who is it for?
setting up webhook and file-watcher automation from the terminal
Skip if: hosted or production-grade event orchestration
When should I use this skill?
adding rules, planning flows, tracking events, or building trigger chains
What you get
Provides a CLI to define and run webhook, file-watcher, and condition-based triggers.
By the numbers
- 6 documented commands
Files
Trigger
Event trigger toolkit — webhook handlers, file watchers, condition-based automation, event logging, and chain triggers.
Commands
| Command | Description |
|---|---|
trigger run | Execute main function |
trigger list | List all items |
trigger add <item> | Add new item |
trigger status | Show current status |
trigger export <format> | Export data |
trigger help | Show help |
Usage
# Show help
trigger help
# Quick start
trigger runExamples
# Run with defaults
trigger run
# Check status
trigger status
# Export results
trigger export jsonHow It Works
Tips
- Run
trigger helpfor all commands - Data stored in
~/.local/share/trigger/
When to Use
- to automate trigger tasks in your workflow
- for batch processing trigger operations
Output
Returns formatted output to stdout. Redirect to a file with trigger run > output.txt.
Configuration
Set TRIGGER_DIR environment variable to change the data directory. Default: ~/.local/share/trigger/
--- Powered by BytesAgain | bytesagain.com Feedback & Feature Requests: https://bytesagain.com/feedback
#!/usr/bin/env bash
# Trigger — productivity tool
# Powered by BytesAgain | bytesagain.com | hello@bytesagain.com
set -euo pipefail
DATA_DIR="${HOME}/.local/share/trigger"
mkdir -p "$DATA_DIR"
_log() { echo "$(date '+%m-%d %H:%M') $1: $2" >> "$DATA_DIR/history.log"; }
_version() { echo "trigger v2.0.0"; }
_help() {
echo "Trigger v2.0.0 — productivity toolkit"
echo ""
echo "Usage: trigger <command> [args]"
echo ""
echo "Commands:"
echo " add Add"
echo " plan Plan"
echo " track Track"
echo " review Review"
echo " streak Streak"
echo " remind Remind"
echo " prioritize Prioritize"
echo " archive Archive"
echo " tag Tag"
echo " timeline Timeline"
echo " report Report"
echo " weekly-review Weekly Review"
echo " stats Summary statistics"
echo " export <fmt> Export (json|csv|txt)"
echo " status Health check"
echo " help Show this help"
echo " version Show version"
echo ""
echo "Data: $DATA_DIR"
}
_stats() {
echo "=== Trigger Stats ==="
local total=0
for f in "$DATA_DIR"/*.log; do
[ -f "$f" ] || continue
local name=$(basename "$f" .log)
local c=$(wc -l < "$f")
total=$((total + c))
echo " $name: $c entries"
done
echo " ---"
echo " Total: $total entries"
echo " Data size: $(du -sh "$DATA_DIR" 2>/dev/null | cut -f1)"
echo " Since: $(head -1 "$DATA_DIR/history.log" 2>/dev/null | cut -d'|' -f1 || echo 'N/A')"
}
_export() {
local fmt="${1:-json}"
local out="$DATA_DIR/export.$fmt"
case "$fmt" in
json)
echo "[" > "$out"
local first=1
for f in "$DATA_DIR"/*.log; do
[ -f "$f" ] || continue
local name=$(basename "$f" .log)
while IFS='|' read -r ts val; do
[ $first -eq 1 ] && first=0 || echo "," >> "$out"
printf ' {"type":"%s","time":"%s","value":"%s"}' "$name" "$ts" "$val" >> "$out"
done < "$f"
done
echo "" >> "$out"
echo "]" >> "$out"
;;
csv)
echo "type,time,value" > "$out"
for f in "$DATA_DIR"/*.log; do
[ -f "$f" ] || continue
local name=$(basename "$f" .log)
while IFS='|' read -r ts val; do
echo "$name,$ts,$val" >> "$out"
done < "$f"
done
;;
txt)
echo "=== Trigger Export ===" > "$out"
for f in "$DATA_DIR"/*.log; do
[ -f "$f" ] || continue
echo "--- $(basename "$f" .log) ---" >> "$out"
cat "$f" >> "$out"
echo "" >> "$out"
done
;;
*) echo "Formats: json, csv, txt"; return 1 ;;
esac
echo "Exported to $out ($(wc -c < "$out") bytes)"
}
_status() {
echo "=== Trigger Status ==="
echo " Version: v2.0.0"
echo " Data dir: $DATA_DIR"
echo " Entries: $(cat "$DATA_DIR"/*.log 2>/dev/null | wc -l) total"
echo " Disk: $(du -sh "$DATA_DIR" 2>/dev/null | cut -f1)"
local last=$(tail -1 "$DATA_DIR/history.log" 2>/dev/null || echo "never")
echo " Last activity: $last"
echo " Status: OK"
}
_search() {
local term="${1:?Usage: trigger search <term>}"
echo "Searching for: $term"
local found=0
for f in "$DATA_DIR"/*.log; do
[ -f "$f" ] || continue
local matches=$(grep -i "$term" "$f" 2>/dev/null || true)
if [ -n "$matches" ]; then
echo " --- $(basename "$f" .log) ---"
echo "$matches" | while read -r line; do
echo " $line"
found=$((found + 1))
done
fi
done
[ $found -eq 0 ] && echo " No matches found."
}
_recent() {
echo "=== Recent Activity ==="
if [ -f "$DATA_DIR/history.log" ]; then
tail -20 "$DATA_DIR/history.log" | while IFS='' read -r line; do
echo " $line"
done
else
echo " No activity yet."
fi
}
# Main dispatch
case "${1:-help}" in
add)
shift
if [ $# -eq 0 ]; then
echo "Recent add entries:"
tail -20 "$DATA_DIR/add.log" 2>/dev/null || echo " No entries yet. Use: trigger add <input>"
else
local input="$*"
local ts=$(date '+%Y-%m-%d %H:%M')
echo "$ts|$input" >> "$DATA_DIR/add.log"
local total=$(wc -l < "$DATA_DIR/add.log")
echo " [Trigger] add: $input"
echo " Saved. Total add entries: $total"
_log "add" "$input"
fi
;;
plan)
shift
if [ $# -eq 0 ]; then
echo "Recent plan entries:"
tail -20 "$DATA_DIR/plan.log" 2>/dev/null || echo " No entries yet. Use: trigger plan <input>"
else
local input="$*"
local ts=$(date '+%Y-%m-%d %H:%M')
echo "$ts|$input" >> "$DATA_DIR/plan.log"
local total=$(wc -l < "$DATA_DIR/plan.log")
echo " [Trigger] plan: $input"
echo " Saved. Total plan entries: $total"
_log "plan" "$input"
fi
;;
track)
shift
if [ $# -eq 0 ]; then
echo "Recent track entries:"
tail -20 "$DATA_DIR/track.log" 2>/dev/null || echo " No entries yet. Use: trigger track <input>"
else
local input="$*"
local ts=$(date '+%Y-%m-%d %H:%M')
echo "$ts|$input" >> "$DATA_DIR/track.log"
local total=$(wc -l < "$DATA_DIR/track.log")
echo " [Trigger] track: $input"
echo " Saved. Total track entries: $total"
_log "track" "$input"
fi
;;
review)
shift
if [ $# -eq 0 ]; then
echo "Recent review entries:"
tail -20 "$DATA_DIR/review.log" 2>/dev/null || echo " No entries yet. Use: trigger review <input>"
else
local input="$*"
local ts=$(date '+%Y-%m-%d %H:%M')
echo "$ts|$input" >> "$DATA_DIR/review.log"
local total=$(wc -l < "$DATA_DIR/review.log")
echo " [Trigger] review: $input"
echo " Saved. Total review entries: $total"
_log "review" "$input"
fi
;;
streak)
shift
if [ $# -eq 0 ]; then
echo "Recent streak entries:"
tail -20 "$DATA_DIR/streak.log" 2>/dev/null || echo " No entries yet. Use: trigger streak <input>"
else
local input="$*"
local ts=$(date '+%Y-%m-%d %H:%M')
echo "$ts|$input" >> "$DATA_DIR/streak.log"
local total=$(wc -l < "$DATA_DIR/streak.log")
echo " [Trigger] streak: $input"
echo " Saved. Total streak entries: $total"
_log "streak" "$input"
fi
;;
remind)
shift
if [ $# -eq 0 ]; then
echo "Recent remind entries:"
tail -20 "$DATA_DIR/remind.log" 2>/dev/null || echo " No entries yet. Use: trigger remind <input>"
else
local input="$*"
local ts=$(date '+%Y-%m-%d %H:%M')
echo "$ts|$input" >> "$DATA_DIR/remind.log"
local total=$(wc -l < "$DATA_DIR/remind.log")
echo " [Trigger] remind: $input"
echo " Saved. Total remind entries: $total"
_log "remind" "$input"
fi
;;
prioritize)
shift
if [ $# -eq 0 ]; then
echo "Recent prioritize entries:"
tail -20 "$DATA_DIR/prioritize.log" 2>/dev/null || echo " No entries yet. Use: trigger prioritize <input>"
else
local input="$*"
local ts=$(date '+%Y-%m-%d %H:%M')
echo "$ts|$input" >> "$DATA_DIR/prioritize.log"
local total=$(wc -l < "$DATA_DIR/prioritize.log")
echo " [Trigger] prioritize: $input"
echo " Saved. Total prioritize entries: $total"
_log "prioritize" "$input"
fi
;;
archive)
shift
if [ $# -eq 0 ]; then
echo "Recent archive entries:"
tail -20 "$DATA_DIR/archive.log" 2>/dev/null || echo " No entries yet. Use: trigger archive <input>"
else
local input="$*"
local ts=$(date '+%Y-%m-%d %H:%M')
echo "$ts|$input" >> "$DATA_DIR/archive.log"
local total=$(wc -l < "$DATA_DIR/archive.log")
echo " [Trigger] archive: $input"
echo " Saved. Total archive entries: $total"
_log "archive" "$input"
fi
;;
tag)
shift
if [ $# -eq 0 ]; then
echo "Recent tag entries:"
tail -20 "$DATA_DIR/tag.log" 2>/dev/null || echo " No entries yet. Use: trigger tag <input>"
else
local input="$*"
local ts=$(date '+%Y-%m-%d %H:%M')
echo "$ts|$input" >> "$DATA_DIR/tag.log"
local total=$(wc -l < "$DATA_DIR/tag.log")
echo " [Trigger] tag: $input"
echo " Saved. Total tag entries: $total"
_log "tag" "$input"
fi
;;
timeline)
shift
if [ $# -eq 0 ]; then
echo "Recent timeline entries:"
tail -20 "$DATA_DIR/timeline.log" 2>/dev/null || echo " No entries yet. Use: trigger timeline <input>"
else
local input="$*"
local ts=$(date '+%Y-%m-%d %H:%M')
echo "$ts|$input" >> "$DATA_DIR/timeline.log"
local total=$(wc -l < "$DATA_DIR/timeline.log")
echo " [Trigger] timeline: $input"
echo " Saved. Total timeline entries: $total"
_log "timeline" "$input"
fi
;;
report)
shift
if [ $# -eq 0 ]; then
echo "Recent report entries:"
tail -20 "$DATA_DIR/report.log" 2>/dev/null || echo " No entries yet. Use: trigger report <input>"
else
local input="$*"
local ts=$(date '+%Y-%m-%d %H:%M')
echo "$ts|$input" >> "$DATA_DIR/report.log"
local total=$(wc -l < "$DATA_DIR/report.log")
echo " [Trigger] report: $input"
echo " Saved. Total report entries: $total"
_log "report" "$input"
fi
;;
weekly-review)
shift
if [ $# -eq 0 ]; then
echo "Recent weekly-review entries:"
tail -20 "$DATA_DIR/weekly-review.log" 2>/dev/null || echo " No entries yet. Use: trigger weekly-review <input>"
else
local input="$*"
local ts=$(date '+%Y-%m-%d %H:%M')
echo "$ts|$input" >> "$DATA_DIR/weekly-review.log"
local total=$(wc -l < "$DATA_DIR/weekly-review.log")
echo " [Trigger] weekly-review: $input"
echo " Saved. Total weekly-review entries: $total"
_log "weekly-review" "$input"
fi
;;
stats) _stats ;;
export) shift; _export "$@" ;;
search) shift; _search "$@" ;;
recent) _recent ;;
status) _status ;;
help|--help|-h) _help ;;
version|--version|-v) _version ;;
*)
echo "Unknown command: $1"
echo "Run 'trigger help' for available commands."
exit 1
;;
esac