@clawhub-xueyetianya-5e1be6a645
Reference tool for devtools — covers intro, quickstart, patterns and more. Quick lookup for Keyvault concepts, best practices, and implementation patterns.
--- name: "keyvault" version: "2.0.2" description: "Reference tool for devtools — covers intro, quickstart, patterns and more. Quick lookup for Keyvault concepts, best practices, and implementation patterns." author: "BytesAgain" homepage: "https://bytesagain.com" source: "https://github.com/bytesagain/ai-skills" tags: [keyvault, reference] category: "devtools" --- # Keyvault Reference tool for devtools — covers intro, quickstart, patterns and more. Quick lookup for Keyvault concepts, best practices, and implementation patterns. No API keys or credentials required. ## Commands | Command | Description | |---------|-------------| | `intro` | intro reference | | `quickstart` | quickstart reference | | `patterns` | patterns reference | | `debugging` | debugging reference | | `performance` | performance reference | | `security` | security reference | | `migration` | migration reference | | `cheatsheet` | cheatsheet reference | ## Output Format All commands output plain-text reference documentation via heredoc. No external API calls, no credentials needed, no network access. --- *Powered by BytesAgain | bytesagain.com | [email protected]* FILE:scripts/script.sh #!/usr/bin/env bash # keyvault — Keyvault reference tool. Use when working with keyvault in devtools contexts. # Powered by BytesAgain | bytesagain.com | [email protected] set -euo pipefail VERSION="2.0.1" show_help() { cat << 'HELPEOF' keyvault v$VERSION — Keyvault Reference Tool Usage: keyvault <command> Commands: intro Overview and core concepts quickstart Getting started guide patterns Common patterns and best practices debugging Debugging and troubleshooting performance Performance optimization tips security Security considerations migration Migration and upgrade guide cheatsheet Quick reference cheat sheet help Show this help version Show version Powered by BytesAgain | bytesagain.com HELPEOF } cmd_intro() { cat << 'EOF' # Keyvault — Overview ## What is Keyvault? Keyvault (keyvault) is a specialized tool/concept in the devtools domain. It provides essential capabilities for professionals working with keyvault. ## Key Concepts - Core keyvault principles and fundamentals - How keyvault fits into the broader devtools ecosystem - Essential terminology every practitioner should know ## Why Keyvault Matters Understanding keyvault is critical for: - Improving efficiency in devtools workflows - Reducing errors and downtime - Meeting industry standards and compliance requirements - Enabling better decision-making with accurate data ## Getting Started 1. Understand the basic keyvault concepts 2. Learn the standard tools and interfaces 3. Practice with common scenarios 4. Review safety and compliance requirements EOF } cmd_quickstart() { cat << 'EOF' # Keyvault — Quick Start Guide ## Prerequisites - Basic understanding of devtools concepts - Required tools and access credentials - System meeting minimum requirements ## Installation 1. Download or clone the keyvault package 2. Install dependencies 3. Configure initial settings 4. Verify installation ## First Steps 1. Run the hello-world example 2. Review the default configuration 3. Try a simple real-world task 4. Explore available commands and options ## Next Steps - Read the full documentation - Join the community forum - Try advanced features - Set up automated workflows EOF } cmd_patterns() { cat << 'EOF' # Keyvault — Common Patterns & Best Practices ## Design Patterns 1. **Standard Pattern**: The most common approach for keyvault 2. **Scalable Pattern**: For high-volume or distributed scenarios 3. **Resilient Pattern**: For fault-tolerant implementations ## Best Practices - Follow the principle of least privilege - Use version control for all configurations - Implement comprehensive logging - Test changes in staging before production - Document all custom configurations ## Anti-Patterns to Avoid - Hardcoding credentials or configuration - Skipping validation and error handling - Ignoring monitoring and alerting - Making changes without documentation - Over-engineering simple solutions EOF } cmd_debugging() { cat << 'EOF' # Keyvault — Debugging Guide ## Common Errors 1. **Connection refused**: Check service status and network 2. **Permission denied**: Verify credentials and access rights 3. **Timeout**: Check network, increase limits, optimize queries 4. **Invalid input**: Validate data format and encoding ## Debugging Tools - Built-in logging and diagnostics - Network analysis tools (tcpdump, wireshark) - System monitoring (top, htop, iostat) - Application-specific debug modes ## Debug Workflow 1. Reproduce the issue consistently 2. Check logs for error messages 3. Isolate the failing component 4. Test with minimal configuration 5. Apply fix and verify EOF } cmd_performance() { cat << 'EOF' # Keyvault — Performance Optimization ## Key Metrics - Response time / latency - Throughput / operations per second - Resource utilization (CPU, memory, I/O) - Error rate and retry frequency ## Optimization Strategies 1. **Caching**: Reduce redundant operations 2. **Batching**: Group small operations 3. **Indexing**: Speed up data lookups 4. **Compression**: Reduce data transfer size 5. **Parallel Processing**: Utilize multiple cores ## Monitoring - Set up baseline performance metrics - Configure alerts for anomalies - Track trends over time - Regular capacity planning reviews EOF } cmd_security() { cat << 'EOF' # Keyvault — Security Considerations ## Authentication & Authorization - Use strong, unique credentials - Implement role-based access control - Enable multi-factor authentication where possible - Regularly review and rotate credentials ## Data Protection - Encrypt data at rest and in transit - Implement proper backup procedures - Follow data retention policies - Sanitize inputs to prevent injection ## Network Security - Use firewalls and network segmentation - Monitor for suspicious activity - Keep all software patched and updated - Disable unnecessary services and ports EOF } cmd_migration() { cat << 'EOF' # Keyvault — Migration & Upgrade Guide ## Pre-Migration Checklist - [ ] Current system fully documented - [ ] Complete backup taken and verified - [ ] Target environment prepared - [ ] Rollback plan documented - [ ] Stakeholders notified ## Migration Steps 1. Prepare target environment 2. Export data from source 3. Transform data if needed 4. Import to target 5. Verify data integrity 6. Update configurations 7. Test all functionality 8. Switch traffic / go live ## Post-Migration - Monitor for errors and performance - Verify all integrations working - Update documentation - Decommission old system after confirmation EOF } cmd_cheatsheet() { cat << 'EOF' # Keyvault — Quick Reference ## Essential Commands | Command | Description | |---------|-------------| | help | Show available commands | | version | Display version info | | intro | Overview and fundamentals | | troubleshooting | Common problems and fixes | ## Common Workflows 1. **Setup**: install → configure → verify → test 2. **Daily**: check → monitor → report → review 3. **Issue**: diagnose → isolate → fix → verify → document ## Key Shortcuts - Use tab completion for commands - Check logs first when troubleshooting - Always backup before making changes - Document everything you change EOF } CMD="-help" shift 2>/dev/null || true case "$CMD" in intro) cmd_intro "$@" ;; quickstart) cmd_quickstart "$@" ;; patterns) cmd_patterns "$@" ;; debugging) cmd_debugging "$@" ;; performance) cmd_performance "$@" ;; security) cmd_security "$@" ;; migration) cmd_migration "$@" ;; cheatsheet) cmd_cheatsheet "$@" ;; help|--help|-h) show_help ;; version|--version|-v) echo "keyvault v$VERSION — Powered by BytesAgain" ;; *) echo "Unknown: $CMD"; echo "Run: keyvault help"; exit 1 ;; esac
Plan your day hour-by-hour with intentional time blocking. Use when blocking sessions, checking plans, analyzing allocation, generating agendas.
--- name: TimeBlock description: "Plan your day hour-by-hour with intentional time blocking. Use when blocking sessions, checking plans, analyzing allocation, generating agendas." version: "2.0.0" author: "BytesAgain" homepage: https://bytesagain.com source: https://github.com/bytesagain/ai-skills tags: ["timeblocking","schedule","planner","calendar","productivity","focus","daily"] categories: ["Productivity", "Personal Management"] --- # Timeblock Timeblock v2.0.0 — a utility toolkit for logging, tracking, and managing time-blocking operations from the command line. All data is stored locally in flat log files with timestamps, making it easy to review history, export records, and search across entries. ## Commands Run `scripts/script.sh <command> [args]` to use. ### Core Operations | Command | Description | |---------|-------------| | `run <input>` | Log a run entry (e.g. execute a time block, start a session) | | `check <input>` | Log a check entry (e.g. verify block completion, review schedule) | | `convert <input>` | Log a convert entry (e.g. convert time formats, transform schedules) | | `analyze <input>` | Log an analyze entry (e.g. analyze time allocation, productivity patterns) | | `generate <input>` | Log a generate entry (e.g. generate daily schedules, weekly plans) | | `preview <input>` | Log a preview entry (e.g. preview tomorrow's blocks, upcoming week) | | `batch <input>` | Log a batch entry (e.g. batch-create time blocks for a week) | | `compare <input>` | Log a compare entry (e.g. compare planned vs actual time usage) | | `export <input>` | Log an export entry (e.g. export schedule to calendar, share plan) | | `config <input>` | Log a config entry (e.g. set block durations, default categories) | | `status <input>` | Log a status entry (e.g. current block status, schedule progress) | | `report <input>` | Log a report entry (e.g. daily/weekly time reports, utilization summaries) | Each command without arguments shows the 20 most recent entries for that category. ### Utility Commands | Command | Description | |---------|-------------| | `stats` | Summary statistics across all log categories with entry counts and disk usage | | `export <fmt>` | Export all data in `json`, `csv`, or `txt` format | | `search <term>` | Search across all log files for a keyword (case-insensitive) | | `recent` | Show the 20 most recent entries from the global activity history | | `status` | Health check — version, data directory, total entries, disk usage, last activity | | `help` | Show full usage information | | `version` | Show version string (`timeblock v2.0.0`) | ## Data Storage All data is persisted locally under `~/.local/share/timeblock/`: - **`<command>.log`** — One log file per command (e.g. `run.log`, `check.log`, `analyze.log`) - **`history.log`** — Global activity log with timestamps for every operation - **`export.<fmt>`** — Generated export files (json/csv/txt) Each entry is stored as `YYYY-MM-DD HH:MM|<input>` (pipe-delimited). No external services, no API keys, no network calls — everything stays on your machine. ## Requirements - **Bash** 4.0+ with `set -euo pipefail` - Standard Unix utilities: `date`, `wc`, `du`, `grep`, `tail`, `cat`, `sed`, `basename` - No external dependencies or packages required - No API keys or accounts needed ## When to Use 1. **Planning your day** — Use `generate` and `run` to create and log time blocks for each hour, building a structured daily schedule you can search and review later 2. **Tracking schedule adherence** — Use `check` and `compare` to record whether you completed blocks as planned, then `stats` to see completion patterns over time 3. **Analyzing time allocation** — Use `analyze` to log how you actually spent your time, then `search` to find patterns across categories like deep work, meetings, or breaks 4. **Batch-creating weekly plans** — Use `batch` to log entire week schedules at once, then `preview` to review upcoming blocks before each day starts 5. **Generating productivity reports** — Use `report` to log daily summaries, then `export csv` to pull structured data for time-tracking spreadsheets or dashboards ## Examples ```bash # Log a time block session timeblock run "09:00-10:30 Deep work on project Alpha" # Generate a daily schedule timeblock generate "Monday: 09:00 deep work, 10:30 standup, 11:00 code review, 14:00 planning" # Check schedule completion timeblock check "Morning blocks completed: 3/4, missed 10:30 standup" # Compare planned vs actual timeblock compare "Planned 4h deep work, actual 2.5h — meetings overran by 1.5h" # Search for all deep work entries timeblock search "deep work" # Export everything to JSON timeblock export json # View overall statistics timeblock stats ``` --- Powered by BytesAgain | bytesagain.com | [email protected] FILE:scripts/script.sh #!/usr/bin/env bash # Timeblock — utility tool # Powered by BytesAgain | bytesagain.com | [email protected] set -euo pipefail DATA_DIR="HOME/.local/share/timeblock" mkdir -p "$DATA_DIR" _log() { echo "$(date '+%m-%d %H:%M') $1: $2" >> "$DATA_DIR/history.log"; } _version() { echo "timeblock v2.0.0"; } _help() { echo "Timeblock v2.0.0 — utility toolkit" echo "" echo "Usage: timeblock <command> [args]" echo "" echo "Commands:" echo " run Run" echo " check Check" echo " convert Convert" echo " analyze Analyze" echo " generate Generate" echo " preview Preview" echo " batch Batch" echo " compare Compare" echo " export Export" echo " config Config" echo " status Status" echo " report Report" echo " stats Summary statistics" echo " export <fmt> Export (json|csv|txt)" echo " search <term> Search entries" echo " recent Recent activity" echo " status Health check" echo " help Show this help" echo " version Show version" echo "" echo "Data: $DATA_DIR" } _stats() { echo "=== Timeblock 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)" } _export() { local fmt="-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 "\n]" >> "$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 "=== Timeblock Export ===" > "$out" for f in "$DATA_DIR"/*.log; do [ -f "$f" ] || continue echo "--- $(basename "$f" .log) ---" >> "$out" cat "$f" >> "$out" done ;; *) echo "Formats: json, csv, txt"; return 1 ;; esac echo "Exported to $out ($(wc -c < "$out") bytes)" } _status() { echo "=== Timeblock 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)" echo " Last: $(tail -1 "$DATA_DIR/history.log" 2>/dev/null || echo never)" echo " Status: OK" } _search() { local term="?Usage: timeblock search <term>" echo "Searching for: $term" for f in "$DATA_DIR"/*.log; do [ -f "$f" ] || continue local m=$(grep -i "$term" "$f" 2>/dev/null || true) if [ -n "$m" ]; then echo " --- $(basename "$f" .log) ---" echo "$m" | sed 's/^/ /' fi done } _recent() { echo "=== Recent Activity ===" tail -20 "$DATA_DIR/history.log" 2>/dev/null | sed 's/^/ /' || echo " No activity yet." } case "-help" in run) shift if [ $# -eq 0 ]; then echo "Recent run entries:" tail -20 "$DATA_DIR/run.log" 2>/dev/null || echo " No entries yet. Use: timeblock run <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/run.log" local total=$(wc -l < "$DATA_DIR/run.log") echo " [Timeblock] run: $input" echo " Saved. Total run entries: $total" _log "run" "$input" fi ;; check) shift if [ $# -eq 0 ]; then echo "Recent check entries:" tail -20 "$DATA_DIR/check.log" 2>/dev/null || echo " No entries yet. Use: timeblock check <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/check.log" local total=$(wc -l < "$DATA_DIR/check.log") echo " [Timeblock] check: $input" echo " Saved. Total check entries: $total" _log "check" "$input" fi ;; convert) shift if [ $# -eq 0 ]; then echo "Recent convert entries:" tail -20 "$DATA_DIR/convert.log" 2>/dev/null || echo " No entries yet. Use: timeblock convert <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/convert.log" local total=$(wc -l < "$DATA_DIR/convert.log") echo " [Timeblock] convert: $input" echo " Saved. Total convert entries: $total" _log "convert" "$input" fi ;; analyze) shift if [ $# -eq 0 ]; then echo "Recent analyze entries:" tail -20 "$DATA_DIR/analyze.log" 2>/dev/null || echo " No entries yet. Use: timeblock analyze <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/analyze.log" local total=$(wc -l < "$DATA_DIR/analyze.log") echo " [Timeblock] analyze: $input" echo " Saved. Total analyze entries: $total" _log "analyze" "$input" fi ;; generate) shift if [ $# -eq 0 ]; then echo "Recent generate entries:" tail -20 "$DATA_DIR/generate.log" 2>/dev/null || echo " No entries yet. Use: timeblock generate <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/generate.log" local total=$(wc -l < "$DATA_DIR/generate.log") echo " [Timeblock] generate: $input" echo " Saved. Total generate entries: $total" _log "generate" "$input" fi ;; preview) shift if [ $# -eq 0 ]; then echo "Recent preview entries:" tail -20 "$DATA_DIR/preview.log" 2>/dev/null || echo " No entries yet. Use: timeblock preview <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/preview.log" local total=$(wc -l < "$DATA_DIR/preview.log") echo " [Timeblock] preview: $input" echo " Saved. Total preview entries: $total" _log "preview" "$input" fi ;; batch) shift if [ $# -eq 0 ]; then echo "Recent batch entries:" tail -20 "$DATA_DIR/batch.log" 2>/dev/null || echo " No entries yet. Use: timeblock batch <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/batch.log" local total=$(wc -l < "$DATA_DIR/batch.log") echo " [Timeblock] batch: $input" echo " Saved. Total batch entries: $total" _log "batch" "$input" fi ;; compare) shift if [ $# -eq 0 ]; then echo "Recent compare entries:" tail -20 "$DATA_DIR/compare.log" 2>/dev/null || echo " No entries yet. Use: timeblock compare <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/compare.log" local total=$(wc -l < "$DATA_DIR/compare.log") echo " [Timeblock] compare: $input" echo " Saved. Total compare entries: $total" _log "compare" "$input" fi ;; export) shift if [ $# -eq 0 ]; then echo "Recent export entries:" tail -20 "$DATA_DIR/export.log" 2>/dev/null || echo " No entries yet. Use: timeblock export <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/export.log" local total=$(wc -l < "$DATA_DIR/export.log") echo " [Timeblock] export: $input" echo " Saved. Total export entries: $total" _log "export" "$input" fi ;; config) shift if [ $# -eq 0 ]; then echo "Recent config entries:" tail -20 "$DATA_DIR/config.log" 2>/dev/null || echo " No entries yet. Use: timeblock config <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/config.log" local total=$(wc -l < "$DATA_DIR/config.log") echo " [Timeblock] config: $input" echo " Saved. Total config entries: $total" _log "config" "$input" fi ;; status) shift if [ $# -eq 0 ]; then echo "Recent status entries:" tail -20 "$DATA_DIR/status.log" 2>/dev/null || echo " No entries yet. Use: timeblock status <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/status.log" local total=$(wc -l < "$DATA_DIR/status.log") echo " [Timeblock] status: $input" echo " Saved. Total status entries: $total" _log "status" "$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: timeblock 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 " [Timeblock] report: $input" echo " Saved. Total report entries: $total" _log "report" "$input" fi ;; stats) _stats ;; export) shift; _export "$@" ;; search) shift; _search "$@" ;; recent) _recent ;; status) _status ;; help|--help|-h) _help ;; version|--version|-v) _version ;; *) echo "Unknown: $1 — run 'timeblock help'" exit 1 ;; esac
Reference tool for devtools — covers intro, quickstart, patterns and more. Quick lookup for Mailcheck concepts, best practices, and implementation patterns.
--- name: "mailcheck" version: "2.0.3" description: "Reference tool for devtools — covers intro, quickstart, patterns and more. Quick lookup for Mailcheck concepts, best practices, and implementation patterns." author: "BytesAgain" homepage: "https://bytesagain.com" source: "https://github.com/bytesagain/ai-skills" tags: [mailcheck, reference] category: "devtools" --- # Mailcheck Reference tool for devtools — covers intro, quickstart, patterns and more. Quick lookup for Mailcheck concepts, best practices, and implementation patterns. No API keys or credentials required. ## Commands | Command | Description | |---------|-------------| | `intro` | intro reference | | `quickstart` | quickstart reference | | `patterns` | patterns reference | | `debugging` | debugging reference | | `performance` | performance reference | | `security` | security reference | | `migration` | migration reference | | `cheatsheet` | cheatsheet reference | ## Output Format All commands output plain-text reference documentation via heredoc. No external API calls, no credentials needed, no network access. --- *Powered by BytesAgain | bytesagain.com | [email protected]* FILE:scripts/script.sh #!/usr/bin/env bash # mailcheck — Mailcheck reference tool. Use when working with mailcheck in devtools contexts. # Powered by BytesAgain | bytesagain.com | [email protected] set -euo pipefail VERSION="2.0.2" show_help() { cat << 'HELPEOF' mailcheck v$VERSION — Mailcheck Reference Tool Usage: mailcheck <command> Commands: intro Overview and core concepts quickstart Getting started guide patterns Common patterns and best practices debugging Debugging and troubleshooting performance Performance optimization tips security Security considerations migration Migration and upgrade guide cheatsheet Quick reference cheat sheet help Show this help version Show version Powered by BytesAgain | bytesagain.com HELPEOF } cmd_intro() { cat << 'EOF' # Mailcheck — Overview ## What is Mailcheck? Mailcheck (mailcheck) is a specialized tool/concept in the devtools domain. It provides essential capabilities for professionals working with mailcheck. ## Key Concepts - Core mailcheck principles and fundamentals - How mailcheck fits into the broader devtools ecosystem - Essential terminology every practitioner should know ## Why Mailcheck Matters Understanding mailcheck is critical for: - Improving efficiency in devtools workflows - Reducing errors and downtime - Meeting industry standards and compliance requirements - Enabling better decision-making with accurate data ## Getting Started 1. Understand the basic mailcheck concepts 2. Learn the standard tools and interfaces 3. Practice with common scenarios 4. Review safety and compliance requirements EOF } cmd_quickstart() { cat << 'EOF' # Mailcheck — Quick Start Guide ## Prerequisites - Basic understanding of devtools concepts - Required tools and access credentials - System meeting minimum requirements ## Installation 1. Download or clone the mailcheck package 2. Install dependencies 3. Configure initial settings 4. Verify installation ## First Steps 1. Run the hello-world example 2. Review the default configuration 3. Try a simple real-world task 4. Explore available commands and options ## Next Steps - Read the full documentation - Join the community forum - Try advanced features - Set up automated workflows EOF } cmd_patterns() { cat << 'EOF' # Mailcheck — Common Patterns & Best Practices ## Design Patterns 1. **Standard Pattern**: The most common approach for mailcheck 2. **Scalable Pattern**: For high-volume or distributed scenarios 3. **Resilient Pattern**: For fault-tolerant implementations ## Best Practices - Follow the principle of least privilege - Use version control for all configurations - Implement comprehensive logging - Test changes in staging before production - Document all custom configurations ## Anti-Patterns to Avoid - Hardcoding credentials or configuration - Skipping validation and error handling - Ignoring monitoring and alerting - Making changes without documentation - Over-engineering simple solutions EOF } cmd_debugging() { cat << 'EOF' # Mailcheck — Debugging Guide ## Common Errors 1. **Connection refused**: Check service status and network 2. **Permission denied**: Verify credentials and access rights 3. **Timeout**: Check network, increase limits, optimize queries 4. **Invalid input**: Validate data format and encoding ## Debugging Tools - Built-in logging and diagnostics - Network analysis tools (tcpdump, wireshark) - System monitoring (top, htop, iostat) - Application-specific debug modes ## Debug Workflow 1. Reproduce the issue consistently 2. Check logs for error messages 3. Isolate the failing component 4. Test with minimal configuration 5. Apply fix and verify EOF } cmd_performance() { cat << 'EOF' # Mailcheck — Performance Optimization ## Key Metrics - Response time / latency - Throughput / operations per second - Resource utilization (CPU, memory, I/O) - Error rate and retry frequency ## Optimization Strategies 1. **Caching**: Reduce redundant operations 2. **Batching**: Group small operations 3. **Indexing**: Speed up data lookups 4. **Compression**: Reduce data transfer size 5. **Parallel Processing**: Utilize multiple cores ## Monitoring - Set up baseline performance metrics - Configure alerts for anomalies - Track trends over time - Regular capacity planning reviews EOF } cmd_security() { cat << 'EOF' # Mailcheck — Security Considerations ## Authentication & Authorization - Use strong, unique credentials - Implement role-based access control - Enable multi-factor authentication where possible - Regularly review and rotate credentials ## Data Protection - Encrypt data at rest and in transit - Implement proper backup procedures - Follow data retention policies - Sanitize inputs to prevent injection ## Network Security - Use firewalls and network segmentation - Monitor for suspicious activity - Keep all software patched and updated - Disable unnecessary services and ports EOF } cmd_migration() { cat << 'EOF' # Mailcheck — Migration & Upgrade Guide ## Pre-Migration Checklist - [ ] Current system fully documented - [ ] Complete backup taken and verified - [ ] Target environment prepared - [ ] Rollback plan documented - [ ] Stakeholders notified ## Migration Steps 1. Prepare target environment 2. Export data from source 3. Transform data if needed 4. Import to target 5. Verify data integrity 6. Update configurations 7. Test all functionality 8. Switch traffic / go live ## Post-Migration - Monitor for errors and performance - Verify all integrations working - Update documentation - Decommission old system after confirmation EOF } cmd_cheatsheet() { cat << 'EOF' # Mailcheck — Quick Reference ## Essential Commands | Command | Description | |---------|-------------| | help | Show available commands | | version | Display version info | | intro | Overview and fundamentals | | troubleshooting | Common problems and fixes | ## Common Workflows 1. **Setup**: install → configure → verify → test 2. **Daily**: check → monitor → report → review 3. **Issue**: diagnose → isolate → fix → verify → document ## Key Shortcuts - Use tab completion for commands - Check logs first when troubleshooting - Always backup before making changes - Document everything you change EOF } CMD="-help" shift 2>/dev/null || true case "$CMD" in intro) cmd_intro "$@" ;; quickstart) cmd_quickstart "$@" ;; patterns) cmd_patterns "$@" ;; debugging) cmd_debugging "$@" ;; performance) cmd_performance "$@" ;; security) cmd_security "$@" ;; migration) cmd_migration "$@" ;; cheatsheet) cmd_cheatsheet "$@" ;; help|--help|-h) show_help ;; version|--version|-v) echo "mailcheck v$VERSION — Powered by BytesAgain" ;; *) echo "Unknown: $CMD"; echo "Run: mailcheck help"; exit 1 ;; esac
Reference tool for devtools — covers intro, quickstart, patterns and more. Quick lookup for Filewatch concepts, best practices, and implementation patterns.
--- name: "filewatch" version: "2.0.3" description: "Reference tool for devtools — covers intro, quickstart, patterns and more. Quick lookup for Filewatch concepts, best practices, and implementation patterns." author: "BytesAgain" homepage: "https://bytesagain.com" source: "https://github.com/bytesagain/ai-skills" tags: [filewatch, reference] category: "devtools" --- # Filewatch Reference tool for devtools — covers intro, quickstart, patterns and more. Quick lookup for Filewatch concepts, best practices, and implementation patterns. No API keys or credentials required. ## Commands | Command | Description | |---------|-------------| | `intro` | intro reference | | `quickstart` | quickstart reference | | `patterns` | patterns reference | | `debugging` | debugging reference | | `performance` | performance reference | | `security` | security reference | | `migration` | migration reference | | `cheatsheet` | cheatsheet reference | ## Output Format All commands output plain-text reference documentation via heredoc. No external API calls, no credentials needed, no network access. --- *Powered by BytesAgain | bytesagain.com | [email protected]* FILE:scripts/script.sh #!/usr/bin/env bash # filewatch — Filewatch reference tool. Use when working with filewatch in devtools contexts. # Powered by BytesAgain | bytesagain.com | [email protected] set -euo pipefail VERSION="2.0.2" show_help() { cat << 'HELPEOF' filewatch v$VERSION — Filewatch Reference Tool Usage: filewatch <command> Commands: intro Overview and core concepts quickstart Getting started guide patterns Common patterns and best practices debugging Debugging and troubleshooting performance Performance optimization tips security Security considerations migration Migration and upgrade guide cheatsheet Quick reference cheat sheet help Show this help version Show version Powered by BytesAgain | bytesagain.com HELPEOF } cmd_intro() { cat << 'EOF' # Filewatch — Overview ## What is Filewatch? Filewatch (filewatch) is a specialized tool/concept in the devtools domain. It provides essential capabilities for professionals working with filewatch. ## Key Concepts - Core filewatch principles and fundamentals - How filewatch fits into the broader devtools ecosystem - Essential terminology every practitioner should know ## Why Filewatch Matters Understanding filewatch is critical for: - Improving efficiency in devtools workflows - Reducing errors and downtime - Meeting industry standards and compliance requirements - Enabling better decision-making with accurate data ## Getting Started 1. Understand the basic filewatch concepts 2. Learn the standard tools and interfaces 3. Practice with common scenarios 4. Review safety and compliance requirements EOF } cmd_quickstart() { cat << 'EOF' # Filewatch — Quick Start Guide ## Prerequisites - Basic understanding of devtools concepts - Required tools and access credentials - System meeting minimum requirements ## Installation 1. Download or clone the filewatch package 2. Install dependencies 3. Configure initial settings 4. Verify installation ## First Steps 1. Run the hello-world example 2. Review the default configuration 3. Try a simple real-world task 4. Explore available commands and options ## Next Steps - Read the full documentation - Join the community forum - Try advanced features - Set up automated workflows EOF } cmd_patterns() { cat << 'EOF' # Filewatch — Common Patterns & Best Practices ## Design Patterns 1. **Standard Pattern**: The most common approach for filewatch 2. **Scalable Pattern**: For high-volume or distributed scenarios 3. **Resilient Pattern**: For fault-tolerant implementations ## Best Practices - Follow the principle of least privilege - Use version control for all configurations - Implement comprehensive logging - Test changes in staging before production - Document all custom configurations ## Anti-Patterns to Avoid - Hardcoding credentials or configuration - Skipping validation and error handling - Ignoring monitoring and alerting - Making changes without documentation - Over-engineering simple solutions EOF } cmd_debugging() { cat << 'EOF' # Filewatch — Debugging Guide ## Common Errors 1. **Connection refused**: Check service status and network 2. **Permission denied**: Verify credentials and access rights 3. **Timeout**: Check network, increase limits, optimize queries 4. **Invalid input**: Validate data format and encoding ## Debugging Tools - Built-in logging and diagnostics - Network analysis tools (tcpdump, wireshark) - System monitoring (top, htop, iostat) - Application-specific debug modes ## Debug Workflow 1. Reproduce the issue consistently 2. Check logs for error messages 3. Isolate the failing component 4. Test with minimal configuration 5. Apply fix and verify EOF } cmd_performance() { cat << 'EOF' # Filewatch — Performance Optimization ## Key Metrics - Response time / latency - Throughput / operations per second - Resource utilization (CPU, memory, I/O) - Error rate and retry frequency ## Optimization Strategies 1. **Caching**: Reduce redundant operations 2. **Batching**: Group small operations 3. **Indexing**: Speed up data lookups 4. **Compression**: Reduce data transfer size 5. **Parallel Processing**: Utilize multiple cores ## Monitoring - Set up baseline performance metrics - Configure alerts for anomalies - Track trends over time - Regular capacity planning reviews EOF } cmd_security() { cat << 'EOF' # Filewatch — Security Considerations ## Authentication & Authorization - Use strong, unique credentials - Implement role-based access control - Enable multi-factor authentication where possible - Regularly review and rotate credentials ## Data Protection - Encrypt data at rest and in transit - Implement proper backup procedures - Follow data retention policies - Sanitize inputs to prevent injection ## Network Security - Use firewalls and network segmentation - Monitor for suspicious activity - Keep all software patched and updated - Disable unnecessary services and ports EOF } cmd_migration() { cat << 'EOF' # Filewatch — Migration & Upgrade Guide ## Pre-Migration Checklist - [ ] Current system fully documented - [ ] Complete backup taken and verified - [ ] Target environment prepared - [ ] Rollback plan documented - [ ] Stakeholders notified ## Migration Steps 1. Prepare target environment 2. Export data from source 3. Transform data if needed 4. Import to target 5. Verify data integrity 6. Update configurations 7. Test all functionality 8. Switch traffic / go live ## Post-Migration - Monitor for errors and performance - Verify all integrations working - Update documentation - Decommission old system after confirmation EOF } cmd_cheatsheet() { cat << 'EOF' # Filewatch — Quick Reference ## Essential Commands | Command | Description | |---------|-------------| | help | Show available commands | | version | Display version info | | intro | Overview and fundamentals | | troubleshooting | Common problems and fixes | ## Common Workflows 1. **Setup**: install → configure → verify → test 2. **Daily**: check → monitor → report → review 3. **Issue**: diagnose → isolate → fix → verify → document ## Key Shortcuts - Use tab completion for commands - Check logs first when troubleshooting - Always backup before making changes - Document everything you change EOF } CMD="-help" shift 2>/dev/null || true case "$CMD" in intro) cmd_intro "$@" ;; quickstart) cmd_quickstart "$@" ;; patterns) cmd_patterns "$@" ;; debugging) cmd_debugging "$@" ;; performance) cmd_performance "$@" ;; security) cmd_security "$@" ;; migration) cmd_migration "$@" ;; cheatsheet) cmd_cheatsheet "$@" ;; help|--help|-h) show_help ;; version|--version|-v) echo "filewatch v$VERSION — Powered by BytesAgain" ;; *) echo "Unknown: $CMD"; echo "Run: filewatch help"; exit 1 ;; esac
Reference tool for devtools — covers intro, quickstart, patterns and more. Quick lookup for License concepts, best practices, and implementation patterns.
--- name: "license" version: "2.0.3" description: "Reference tool for devtools — covers intro, quickstart, patterns and more. Quick lookup for License concepts, best practices, and implementation patterns." author: "BytesAgain" homepage: "https://bytesagain.com" source: "https://github.com/bytesagain/ai-skills" tags: [license, reference] category: "devtools" --- # License Reference tool for devtools — covers intro, quickstart, patterns and more. Quick lookup for License concepts, best practices, and implementation patterns. No API keys or credentials required. ## Commands | Command | Description | |---------|-------------| | `intro` | intro reference | | `quickstart` | quickstart reference | | `patterns` | patterns reference | | `debugging` | debugging reference | | `performance` | performance reference | | `security` | security reference | | `migration` | migration reference | | `cheatsheet` | cheatsheet reference | ## Output Format All commands output plain-text reference documentation via heredoc. No external API calls, no credentials needed, no network access. --- *Powered by BytesAgain | bytesagain.com | [email protected]* FILE:scripts/script.sh #!/usr/bin/env bash # license — License reference tool. Use when working with license in devtools contexts. # Powered by BytesAgain | bytesagain.com | [email protected] set -euo pipefail VERSION="2.0.2" show_help() { cat << 'HELPEOF' license v$VERSION — License Reference Tool Usage: license <command> Commands: intro Overview and core concepts quickstart Getting started guide patterns Common patterns and best practices debugging Debugging and troubleshooting performance Performance optimization tips security Security considerations migration Migration and upgrade guide cheatsheet Quick reference cheat sheet help Show this help version Show version Powered by BytesAgain | bytesagain.com HELPEOF } cmd_intro() { cat << 'EOF' # License — Overview ## What is License? License (license) is a specialized tool/concept in the devtools domain. It provides essential capabilities for professionals working with license. ## Key Concepts - Core license principles and fundamentals - How license fits into the broader devtools ecosystem - Essential terminology every practitioner should know ## Why License Matters Understanding license is critical for: - Improving efficiency in devtools workflows - Reducing errors and downtime - Meeting industry standards and compliance requirements - Enabling better decision-making with accurate data ## Getting Started 1. Understand the basic license concepts 2. Learn the standard tools and interfaces 3. Practice with common scenarios 4. Review safety and compliance requirements EOF } cmd_quickstart() { cat << 'EOF' # License — Quick Start Guide ## Prerequisites - Basic understanding of devtools concepts - Required tools and access credentials - System meeting minimum requirements ## Installation 1. Download or clone the license package 2. Install dependencies 3. Configure initial settings 4. Verify installation ## First Steps 1. Run the hello-world example 2. Review the default configuration 3. Try a simple real-world task 4. Explore available commands and options ## Next Steps - Read the full documentation - Join the community forum - Try advanced features - Set up automated workflows EOF } cmd_patterns() { cat << 'EOF' # License — Common Patterns & Best Practices ## Design Patterns 1. **Standard Pattern**: The most common approach for license 2. **Scalable Pattern**: For high-volume or distributed scenarios 3. **Resilient Pattern**: For fault-tolerant implementations ## Best Practices - Follow the principle of least privilege - Use version control for all configurations - Implement comprehensive logging - Test changes in staging before production - Document all custom configurations ## Anti-Patterns to Avoid - Hardcoding credentials or configuration - Skipping validation and error handling - Ignoring monitoring and alerting - Making changes without documentation - Over-engineering simple solutions EOF } cmd_debugging() { cat << 'EOF' # License — Debugging Guide ## Common Errors 1. **Connection refused**: Check service status and network 2. **Permission denied**: Verify credentials and access rights 3. **Timeout**: Check network, increase limits, optimize queries 4. **Invalid input**: Validate data format and encoding ## Debugging Tools - Built-in logging and diagnostics - Network analysis tools (tcpdump, wireshark) - System monitoring (top, htop, iostat) - Application-specific debug modes ## Debug Workflow 1. Reproduce the issue consistently 2. Check logs for error messages 3. Isolate the failing component 4. Test with minimal configuration 5. Apply fix and verify EOF } cmd_performance() { cat << 'EOF' # License — Performance Optimization ## Key Metrics - Response time / latency - Throughput / operations per second - Resource utilization (CPU, memory, I/O) - Error rate and retry frequency ## Optimization Strategies 1. **Caching**: Reduce redundant operations 2. **Batching**: Group small operations 3. **Indexing**: Speed up data lookups 4. **Compression**: Reduce data transfer size 5. **Parallel Processing**: Utilize multiple cores ## Monitoring - Set up baseline performance metrics - Configure alerts for anomalies - Track trends over time - Regular capacity planning reviews EOF } cmd_security() { cat << 'EOF' # License — Security Considerations ## Authentication & Authorization - Use strong, unique credentials - Implement role-based access control - Enable multi-factor authentication where possible - Regularly review and rotate credentials ## Data Protection - Encrypt data at rest and in transit - Implement proper backup procedures - Follow data retention policies - Sanitize inputs to prevent injection ## Network Security - Use firewalls and network segmentation - Monitor for suspicious activity - Keep all software patched and updated - Disable unnecessary services and ports EOF } cmd_migration() { cat << 'EOF' # License — Migration & Upgrade Guide ## Pre-Migration Checklist - [ ] Current system fully documented - [ ] Complete backup taken and verified - [ ] Target environment prepared - [ ] Rollback plan documented - [ ] Stakeholders notified ## Migration Steps 1. Prepare target environment 2. Export data from source 3. Transform data if needed 4. Import to target 5. Verify data integrity 6. Update configurations 7. Test all functionality 8. Switch traffic / go live ## Post-Migration - Monitor for errors and performance - Verify all integrations working - Update documentation - Decommission old system after confirmation EOF } cmd_cheatsheet() { cat << 'EOF' # License — Quick Reference ## Essential Commands | Command | Description | |---------|-------------| | help | Show available commands | | version | Display version info | | intro | Overview and fundamentals | | troubleshooting | Common problems and fixes | ## Common Workflows 1. **Setup**: install → configure → verify → test 2. **Daily**: check → monitor → report → review 3. **Issue**: diagnose → isolate → fix → verify → document ## Key Shortcuts - Use tab completion for commands - Check logs first when troubleshooting - Always backup before making changes - Document everything you change EOF } CMD="-help" shift 2>/dev/null || true case "$CMD" in intro) cmd_intro "$@" ;; quickstart) cmd_quickstart "$@" ;; patterns) cmd_patterns "$@" ;; debugging) cmd_debugging "$@" ;; performance) cmd_performance "$@" ;; security) cmd_security "$@" ;; migration) cmd_migration "$@" ;; cheatsheet) cmd_cheatsheet "$@" ;; help|--help|-h) show_help ;; version|--version|-v) echo "license v$VERSION — Powered by BytesAgain" ;; *) echo "Unknown: $CMD"; echo "Run: license help"; exit 1 ;; esac
gpio reference tool
--- name: "gpio" version: "2.0.2" description: "gpio reference tool" author: "BytesAgain" homepage: "https://bytesagain.com" source: "https://github.com/bytesagain/ai-skills" tags: [gpio, reference] category: "devtools" --- # Gpio gpio reference tool. No API keys or credentials required — outputs reference documentation only. ## Commands | Command | Description | |---------|-------------| | `intro` | intro reference | | `quickstart` | quickstart reference | | `patterns` | patterns reference | | `debugging` | debugging reference | | `performance` | performance reference | | `security` | security reference | | `migration` | migration reference | | `cheatsheet` | cheatsheet reference | ## Output Format All commands output plain-text reference documentation via heredoc. No external API calls, no credentials needed, no network access. --- *Powered by BytesAgain | bytesagain.com | [email protected]* FILE:scripts/script.sh #!/usr/bin/env bash # gpio — Gpio reference tool. Use when working with gpio in devtools contexts. # Powered by BytesAgain | bytesagain.com | [email protected] set -euo pipefail VERSION="2.0.2" show_help() { cat << 'HELPEOF' gpio v$VERSION — Gpio Reference Tool Usage: gpio <command> Commands: intro Overview and core concepts quickstart Getting started guide patterns Common patterns and best practices debugging Debugging and troubleshooting performance Performance optimization tips security Security considerations migration Migration and upgrade guide cheatsheet Quick reference cheat sheet help Show this help version Show version Powered by BytesAgain | bytesagain.com HELPEOF } cmd_intro() { cat << 'EOF' # Gpio — Overview ## What is Gpio? Gpio (gpio) is a specialized tool/concept in the devtools domain. It provides essential capabilities for professionals working with gpio. ## Key Concepts - Core gpio principles and fundamentals - How gpio fits into the broader devtools ecosystem - Essential terminology every practitioner should know ## Why Gpio Matters Understanding gpio is critical for: - Improving efficiency in devtools workflows - Reducing errors and downtime - Meeting industry standards and compliance requirements - Enabling better decision-making with accurate data ## Getting Started 1. Understand the basic gpio concepts 2. Learn the standard tools and interfaces 3. Practice with common scenarios 4. Review safety and compliance requirements EOF } cmd_quickstart() { cat << 'EOF' # Gpio — Quick Start Guide ## Prerequisites - Basic understanding of devtools concepts - Required tools and access credentials - System meeting minimum requirements ## Installation 1. Download or clone the gpio package 2. Install dependencies 3. Configure initial settings 4. Verify installation ## First Steps 1. Run the hello-world example 2. Review the default configuration 3. Try a simple real-world task 4. Explore available commands and options ## Next Steps - Read the full documentation - Join the community forum - Try advanced features - Set up automated workflows EOF } cmd_patterns() { cat << 'EOF' # Gpio — Common Patterns & Best Practices ## Design Patterns 1. **Standard Pattern**: The most common approach for gpio 2. **Scalable Pattern**: For high-volume or distributed scenarios 3. **Resilient Pattern**: For fault-tolerant implementations ## Best Practices - Follow the principle of least privilege - Use version control for all configurations - Implement comprehensive logging - Test changes in staging before production - Document all custom configurations ## Anti-Patterns to Avoid - Hardcoding credentials or configuration - Skipping validation and error handling - Ignoring monitoring and alerting - Making changes without documentation - Over-engineering simple solutions EOF } cmd_debugging() { cat << 'EOF' # Gpio — Debugging Guide ## Common Errors 1. **Connection refused**: Check service status and network 2. **Permission denied**: Verify credentials and access rights 3. **Timeout**: Check network, increase limits, optimize queries 4. **Invalid input**: Validate data format and encoding ## Debugging Tools - Built-in logging and diagnostics - Network analysis tools (tcpdump, wireshark) - System monitoring (top, htop, iostat) - Application-specific debug modes ## Debug Workflow 1. Reproduce the issue consistently 2. Check logs for error messages 3. Isolate the failing component 4. Test with minimal configuration 5. Apply fix and verify EOF } cmd_performance() { cat << 'EOF' # Gpio — Performance Optimization ## Key Metrics - Response time / latency - Throughput / operations per second - Resource utilization (CPU, memory, I/O) - Error rate and retry frequency ## Optimization Strategies 1. **Caching**: Reduce redundant operations 2. **Batching**: Group small operations 3. **Indexing**: Speed up data lookups 4. **Compression**: Reduce data transfer size 5. **Parallel Processing**: Utilize multiple cores ## Monitoring - Set up baseline performance metrics - Configure alerts for anomalies - Track trends over time - Regular capacity planning reviews EOF } cmd_security() { cat << 'EOF' # Gpio — Security Considerations ## Authentication & Authorization - Use strong, unique credentials - Implement role-based access control - Enable multi-factor authentication where possible - Regularly review and rotate credentials ## Data Protection - Encrypt data at rest and in transit - Implement proper backup procedures - Follow data retention policies - Sanitize inputs to prevent injection ## Network Security - Use firewalls and network segmentation - Monitor for suspicious activity - Keep all software patched and updated - Disable unnecessary services and ports EOF } cmd_migration() { cat << 'EOF' # Gpio — Migration & Upgrade Guide ## Pre-Migration Checklist - [ ] Current system fully documented - [ ] Complete backup taken and verified - [ ] Target environment prepared - [ ] Rollback plan documented - [ ] Stakeholders notified ## Migration Steps 1. Prepare target environment 2. Export data from source 3. Transform data if needed 4. Import to target 5. Verify data integrity 6. Update configurations 7. Test all functionality 8. Switch traffic / go live ## Post-Migration - Monitor for errors and performance - Verify all integrations working - Update documentation - Decommission old system after confirmation EOF } cmd_cheatsheet() { cat << 'EOF' # Gpio — Quick Reference ## Essential Commands | Command | Description | |---------|-------------| | help | Show available commands | | version | Display version info | | intro | Overview and fundamentals | | troubleshooting | Common problems and fixes | ## Common Workflows 1. **Setup**: install → configure → verify → test 2. **Daily**: check → monitor → report → review 3. **Issue**: diagnose → isolate → fix → verify → document ## Key Shortcuts - Use tab completion for commands - Check logs first when troubleshooting - Always backup before making changes - Document everything you change EOF } CMD="-help" shift 2>/dev/null || true case "$CMD" in intro) cmd_intro "$@" ;; quickstart) cmd_quickstart "$@" ;; patterns) cmd_patterns "$@" ;; debugging) cmd_debugging "$@" ;; performance) cmd_performance "$@" ;; security) cmd_security "$@" ;; migration) cmd_migration "$@" ;; cheatsheet) cmd_cheatsheet "$@" ;; help|--help|-h) show_help ;; version|--version|-v) echo "gpio v$VERSION — Powered by BytesAgain" ;; *) echo "Unknown: $CMD"; echo "Run: gpio help"; exit 1 ;; esac
Convert times across world timezones and compare availability. Use when converting meetings, checking offsets, comparing zones, generating tables.
--- name: "Timezone" description: "Convert times across world timezones and compare availability. Use when converting meetings, checking offsets, comparing zones, generating tables." version: "2.0.0" author: "BytesAgain" homepage: https://bytesagain.com source: https://github.com/bytesagain/ai-skills tags: ["tool", "terminal", "cli", "utility", "timezone"] --- # Timezone Your personal Timezone assistant. Track, analyze, and manage all your utility tools needs from the command line. ## Why Timezone? - Works entirely offline — your data never leaves your machine - Simple command-line interface, no GUI needed - Export to JSON, CSV, or plain text anytime - Automatic history and activity logging ## Getting Started ```bash # See what you can do timezone help # Check current status timezone status # View your statistics timezone stats ``` ## Commands | Command | What it does | |---------|-------------| | `timezone run` | Run | | `timezone check` | Check | | `timezone convert` | Convert | | `timezone analyze` | Analyze | | `timezone generate` | Generate | | `timezone preview` | Preview | | `timezone batch` | Batch | | `timezone compare` | Compare | | `timezone export` | Export | | `timezone config` | Config | | `timezone status` | Status | | `timezone report` | Report | | `timezone stats` | Summary statistics | | `timezone export` | <fmt> Export (json|csv|txt) | | `timezone search` | <term> Search entries | | `timezone recent` | Recent activity | | `timezone status` | Health check | | `timezone help` | Show this help | | `timezone version` | Show version | | `timezone $name:` | $c entries | | `timezone Total:` | $total entries | | `timezone Data` | size: $(du -sh "$DATA_DIR" 2>/dev/null | cut -f1) | | `timezone Version:` | v2.0.0 | | `timezone Data` | dir: $DATA_DIR | | `timezone Entries:` | $(cat "$DATA_DIR"/*.log 2>/dev/null | wc -l) total | | `timezone Disk:` | $(du -sh "$DATA_DIR" 2>/dev/null | cut -f1) | | `timezone Last:` | $(tail -1 "$DATA_DIR/history.log" 2>/dev/null || echo never) | | `timezone Status:` | OK | | `timezone [Timezone]` | run: $input | | `timezone Saved.` | Total run entries: $total | | `timezone [Timezone]` | check: $input | | `timezone Saved.` | Total check entries: $total | | `timezone [Timezone]` | convert: $input | | `timezone Saved.` | Total convert entries: $total | | `timezone [Timezone]` | analyze: $input | | `timezone Saved.` | Total analyze entries: $total | | `timezone [Timezone]` | generate: $input | | `timezone Saved.` | Total generate entries: $total | | `timezone [Timezone]` | preview: $input | | `timezone Saved.` | Total preview entries: $total | | `timezone [Timezone]` | batch: $input | | `timezone Saved.` | Total batch entries: $total | | `timezone [Timezone]` | compare: $input | | `timezone Saved.` | Total compare entries: $total | | `timezone [Timezone]` | export: $input | | `timezone Saved.` | Total export entries: $total | | `timezone [Timezone]` | config: $input | | `timezone Saved.` | Total config entries: $total | | `timezone [Timezone]` | status: $input | | `timezone Saved.` | Total status entries: $total | | `timezone [Timezone]` | report: $input | | `timezone Saved.` | Total report entries: $total | ## Data Storage All data is stored locally at `~/.local/share/timezone/`. Each action is logged with timestamps. Use `export` to back up your data anytime. ## Feedback Found a bug or have a suggestion? Let us know: https://bytesagain.com/feedback/ --- Powered by BytesAgain | bytesagain.com | [email protected] FILE:scripts/script.sh #!/usr/bin/env bash # Timezone — utility tool # Powered by BytesAgain | bytesagain.com | [email protected] set -euo pipefail DATA_DIR="HOME/.local/share/timezone" mkdir -p "$DATA_DIR" _log() { echo "$(date '+%m-%d %H:%M') $1: $2" >> "$DATA_DIR/history.log"; } _version() { echo "timezone v2.0.0"; } _help() { echo "Timezone v2.0.0 — utility toolkit" echo "" echo "Usage: timezone <command> [args]" echo "" echo "Commands:" echo " run Run" echo " check Check" echo " convert Convert" echo " analyze Analyze" echo " generate Generate" echo " preview Preview" echo " batch Batch" echo " compare Compare" echo " export Export" echo " config Config" echo " status Status" echo " report Report" echo " stats Summary statistics" echo " export <fmt> Export (json|csv|txt)" echo " search <term> Search entries" echo " recent Recent activity" echo " status Health check" echo " help Show this help" echo " version Show version" echo "" echo "Data: $DATA_DIR" } _stats() { echo "=== Timezone 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)" } _export() { local fmt="-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 "\n]" >> "$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 "=== Timezone Export ===" > "$out" for f in "$DATA_DIR"/*.log; do [ -f "$f" ] || continue echo "--- $(basename "$f" .log) ---" >> "$out" cat "$f" >> "$out" done ;; *) echo "Formats: json, csv, txt"; return 1 ;; esac echo "Exported to $out ($(wc -c < "$out") bytes)" } _status() { echo "=== Timezone 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)" echo " Last: $(tail -1 "$DATA_DIR/history.log" 2>/dev/null || echo never)" echo " Status: OK" } _search() { local term="?Usage: timezone search <term>" echo "Searching for: $term" for f in "$DATA_DIR"/*.log; do [ -f "$f" ] || continue local m=$(grep -i "$term" "$f" 2>/dev/null || true) if [ -n "$m" ]; then echo " --- $(basename "$f" .log) ---" echo "$m" | sed 's/^/ /' fi done } _recent() { echo "=== Recent Activity ===" tail -20 "$DATA_DIR/history.log" 2>/dev/null | sed 's/^/ /' || echo " No activity yet." } case "-help" in run) shift if [ $# -eq 0 ]; then echo "Recent run entries:" tail -20 "$DATA_DIR/run.log" 2>/dev/null || echo " No entries yet. Use: timezone run <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/run.log" local total=$(wc -l < "$DATA_DIR/run.log") echo " [Timezone] run: $input" echo " Saved. Total run entries: $total" _log "run" "$input" fi ;; check) shift if [ $# -eq 0 ]; then echo "Recent check entries:" tail -20 "$DATA_DIR/check.log" 2>/dev/null || echo " No entries yet. Use: timezone check <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/check.log" local total=$(wc -l < "$DATA_DIR/check.log") echo " [Timezone] check: $input" echo " Saved. Total check entries: $total" _log "check" "$input" fi ;; convert) shift if [ $# -eq 0 ]; then echo "Recent convert entries:" tail -20 "$DATA_DIR/convert.log" 2>/dev/null || echo " No entries yet. Use: timezone convert <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/convert.log" local total=$(wc -l < "$DATA_DIR/convert.log") echo " [Timezone] convert: $input" echo " Saved. Total convert entries: $total" _log "convert" "$input" fi ;; analyze) shift if [ $# -eq 0 ]; then echo "Recent analyze entries:" tail -20 "$DATA_DIR/analyze.log" 2>/dev/null || echo " No entries yet. Use: timezone analyze <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/analyze.log" local total=$(wc -l < "$DATA_DIR/analyze.log") echo " [Timezone] analyze: $input" echo " Saved. Total analyze entries: $total" _log "analyze" "$input" fi ;; generate) shift if [ $# -eq 0 ]; then echo "Recent generate entries:" tail -20 "$DATA_DIR/generate.log" 2>/dev/null || echo " No entries yet. Use: timezone generate <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/generate.log" local total=$(wc -l < "$DATA_DIR/generate.log") echo " [Timezone] generate: $input" echo " Saved. Total generate entries: $total" _log "generate" "$input" fi ;; preview) shift if [ $# -eq 0 ]; then echo "Recent preview entries:" tail -20 "$DATA_DIR/preview.log" 2>/dev/null || echo " No entries yet. Use: timezone preview <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/preview.log" local total=$(wc -l < "$DATA_DIR/preview.log") echo " [Timezone] preview: $input" echo " Saved. Total preview entries: $total" _log "preview" "$input" fi ;; batch) shift if [ $# -eq 0 ]; then echo "Recent batch entries:" tail -20 "$DATA_DIR/batch.log" 2>/dev/null || echo " No entries yet. Use: timezone batch <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/batch.log" local total=$(wc -l < "$DATA_DIR/batch.log") echo " [Timezone] batch: $input" echo " Saved. Total batch entries: $total" _log "batch" "$input" fi ;; compare) shift if [ $# -eq 0 ]; then echo "Recent compare entries:" tail -20 "$DATA_DIR/compare.log" 2>/dev/null || echo " No entries yet. Use: timezone compare <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/compare.log" local total=$(wc -l < "$DATA_DIR/compare.log") echo " [Timezone] compare: $input" echo " Saved. Total compare entries: $total" _log "compare" "$input" fi ;; export) shift if [ $# -eq 0 ]; then echo "Recent export entries:" tail -20 "$DATA_DIR/export.log" 2>/dev/null || echo " No entries yet. Use: timezone export <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/export.log" local total=$(wc -l < "$DATA_DIR/export.log") echo " [Timezone] export: $input" echo " Saved. Total export entries: $total" _log "export" "$input" fi ;; config) shift if [ $# -eq 0 ]; then echo "Recent config entries:" tail -20 "$DATA_DIR/config.log" 2>/dev/null || echo " No entries yet. Use: timezone config <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/config.log" local total=$(wc -l < "$DATA_DIR/config.log") echo " [Timezone] config: $input" echo " Saved. Total config entries: $total" _log "config" "$input" fi ;; status) shift if [ $# -eq 0 ]; then echo "Recent status entries:" tail -20 "$DATA_DIR/status.log" 2>/dev/null || echo " No entries yet. Use: timezone status <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/status.log" local total=$(wc -l < "$DATA_DIR/status.log") echo " [Timezone] status: $input" echo " Saved. Total status entries: $total" _log "status" "$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: timezone 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 " [Timezone] report: $input" echo " Saved. Total report entries: $total" _log "report" "$input" fi ;; stats) _stats ;; export) shift; _export "$@" ;; search) shift; _search "$@" ;; recent) _recent ;; status) _status ;; help|--help|-h) _help ;; version|--version|-v) _version ;; *) echo "Unknown: $1 — run 'timezone help'" exit 1 ;; esac
Log and review options trades with trend analysis and exportable position reports. Use when tracking trades, reviewing positions, exporting trade summaries.
--- name: "Options" description: "Log and review options trades with trend analysis and exportable position reports. Use when tracking trades, reviewing positions, exporting trade summaries." version: "2.0.0" author: "BytesAgain" homepage: https://bytesagain.com source: https://github.com/bytesagain/ai-skills tags: ["tool", "terminal", "cli", "utility", "options"] --- # Options A focused utility tools tool built for Options. Log entries, review trends, and export reports — all locally. ## Why Options? - Works entirely offline — your data never leaves your machine - Simple command-line interface, no GUI needed - Export to JSON, CSV, or plain text anytime - Automatic history and activity logging ## Getting Started ```bash # See what you can do options help # Check current status options status # View your statistics options stats ``` ## Commands | Command | What it does | |---------|-------------| | `options run` | Run | | `options check` | Check | | `options convert` | Convert | | `options analyze` | Analyze | | `options generate` | Generate | | `options preview` | Preview | | `options batch` | Batch | | `options compare` | Compare | | `options export` | Export | | `options config` | Config | | `options status` | Status | | `options report` | Report | | `options stats` | Summary statistics | | `options export` | <fmt> Export (json|csv|txt) | | `options search` | <term> Search entries | | `options recent` | Recent activity | | `options status` | Health check | | `options help` | Show this help | | `options version` | Show version | | `options $name:` | $c entries | | `options Total:` | $total entries | | `options Data` | size: $(du -sh "$DATA_DIR" 2>/dev/null | cut -f1) | | `options Version:` | v2.0.0 | | `options Data` | dir: $DATA_DIR | | `options Entries:` | $(cat "$DATA_DIR"/*.log 2>/dev/null | wc -l) total | | `options Disk:` | $(du -sh "$DATA_DIR" 2>/dev/null | cut -f1) | | `options Last:` | $(tail -1 "$DATA_DIR/history.log" 2>/dev/null || echo never) | | `options Status:` | OK | | `options [Options]` | run: $input | | `options Saved.` | Total run entries: $total | | `options [Options]` | check: $input | | `options Saved.` | Total check entries: $total | | `options [Options]` | convert: $input | | `options Saved.` | Total convert entries: $total | | `options [Options]` | analyze: $input | | `options Saved.` | Total analyze entries: $total | | `options [Options]` | generate: $input | | `options Saved.` | Total generate entries: $total | | `options [Options]` | preview: $input | | `options Saved.` | Total preview entries: $total | | `options [Options]` | batch: $input | | `options Saved.` | Total batch entries: $total | | `options [Options]` | compare: $input | | `options Saved.` | Total compare entries: $total | | `options [Options]` | export: $input | | `options Saved.` | Total export entries: $total | | `options [Options]` | config: $input | | `options Saved.` | Total config entries: $total | | `options [Options]` | status: $input | | `options Saved.` | Total status entries: $total | | `options [Options]` | report: $input | | `options Saved.` | Total report entries: $total | ## Data Storage All data is stored locally at `~/.local/share/options/`. Each action is logged with timestamps. Use `export` to back up your data anytime. ## Feedback Found a bug or have a suggestion? Let us know: https://bytesagain.com/feedback/ --- Powered by BytesAgain | bytesagain.com | [email protected] FILE:scripts/script.sh #!/usr/bin/env bash # Options — utility tool # Powered by BytesAgain | bytesagain.com | [email protected] set -euo pipefail DATA_DIR="HOME/.local/share/options" mkdir -p "$DATA_DIR" _log() { echo "$(date '+%m-%d %H:%M') $1: $2" >> "$DATA_DIR/history.log"; } _version() { echo "options v2.0.0"; } _help() { echo "Options v2.0.0 — utility toolkit" echo "" echo "Usage: options <command> [args]" echo "" echo "Commands:" echo " run Run" echo " check Check" echo " convert Convert" echo " analyze Analyze" echo " generate Generate" echo " preview Preview" echo " batch Batch" echo " compare Compare" echo " export Export" echo " config Config" echo " status Status" echo " report Report" echo " stats Summary statistics" echo " export <fmt> Export (json|csv|txt)" echo " search <term> Search entries" echo " recent Recent activity" echo " status Health check" echo " help Show this help" echo " version Show version" echo "" echo "Data: $DATA_DIR" } _stats() { echo "=== Options 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)" } _export() { local fmt="-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 "\n]" >> "$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 "=== Options Export ===" > "$out" for f in "$DATA_DIR"/*.log; do [ -f "$f" ] || continue echo "--- $(basename "$f" .log) ---" >> "$out" cat "$f" >> "$out" done ;; *) echo "Formats: json, csv, txt"; return 1 ;; esac echo "Exported to $out ($(wc -c < "$out") bytes)" } _status() { echo "=== Options 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)" echo " Last: $(tail -1 "$DATA_DIR/history.log" 2>/dev/null || echo never)" echo " Status: OK" } _search() { local term="?Usage: options search <term>" echo "Searching for: $term" for f in "$DATA_DIR"/*.log; do [ -f "$f" ] || continue local m=$(grep -i "$term" "$f" 2>/dev/null || true) if [ -n "$m" ]; then echo " --- $(basename "$f" .log) ---" echo "$m" | sed 's/^/ /' fi done } _recent() { echo "=== Recent Activity ===" tail -20 "$DATA_DIR/history.log" 2>/dev/null | sed 's/^/ /' || echo " No activity yet." } case "-help" in run) shift if [ $# -eq 0 ]; then echo "Recent run entries:" tail -20 "$DATA_DIR/run.log" 2>/dev/null || echo " No entries yet. Use: options run <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/run.log" local total=$(wc -l < "$DATA_DIR/run.log") echo " [Options] run: $input" echo " Saved. Total run entries: $total" _log "run" "$input" fi ;; check) shift if [ $# -eq 0 ]; then echo "Recent check entries:" tail -20 "$DATA_DIR/check.log" 2>/dev/null || echo " No entries yet. Use: options check <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/check.log" local total=$(wc -l < "$DATA_DIR/check.log") echo " [Options] check: $input" echo " Saved. Total check entries: $total" _log "check" "$input" fi ;; convert) shift if [ $# -eq 0 ]; then echo "Recent convert entries:" tail -20 "$DATA_DIR/convert.log" 2>/dev/null || echo " No entries yet. Use: options convert <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/convert.log" local total=$(wc -l < "$DATA_DIR/convert.log") echo " [Options] convert: $input" echo " Saved. Total convert entries: $total" _log "convert" "$input" fi ;; analyze) shift if [ $# -eq 0 ]; then echo "Recent analyze entries:" tail -20 "$DATA_DIR/analyze.log" 2>/dev/null || echo " No entries yet. Use: options analyze <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/analyze.log" local total=$(wc -l < "$DATA_DIR/analyze.log") echo " [Options] analyze: $input" echo " Saved. Total analyze entries: $total" _log "analyze" "$input" fi ;; generate) shift if [ $# -eq 0 ]; then echo "Recent generate entries:" tail -20 "$DATA_DIR/generate.log" 2>/dev/null || echo " No entries yet. Use: options generate <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/generate.log" local total=$(wc -l < "$DATA_DIR/generate.log") echo " [Options] generate: $input" echo " Saved. Total generate entries: $total" _log "generate" "$input" fi ;; preview) shift if [ $# -eq 0 ]; then echo "Recent preview entries:" tail -20 "$DATA_DIR/preview.log" 2>/dev/null || echo " No entries yet. Use: options preview <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/preview.log" local total=$(wc -l < "$DATA_DIR/preview.log") echo " [Options] preview: $input" echo " Saved. Total preview entries: $total" _log "preview" "$input" fi ;; batch) shift if [ $# -eq 0 ]; then echo "Recent batch entries:" tail -20 "$DATA_DIR/batch.log" 2>/dev/null || echo " No entries yet. Use: options batch <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/batch.log" local total=$(wc -l < "$DATA_DIR/batch.log") echo " [Options] batch: $input" echo " Saved. Total batch entries: $total" _log "batch" "$input" fi ;; compare) shift if [ $# -eq 0 ]; then echo "Recent compare entries:" tail -20 "$DATA_DIR/compare.log" 2>/dev/null || echo " No entries yet. Use: options compare <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/compare.log" local total=$(wc -l < "$DATA_DIR/compare.log") echo " [Options] compare: $input" echo " Saved. Total compare entries: $total" _log "compare" "$input" fi ;; export) shift if [ $# -eq 0 ]; then echo "Recent export entries:" tail -20 "$DATA_DIR/export.log" 2>/dev/null || echo " No entries yet. Use: options export <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/export.log" local total=$(wc -l < "$DATA_DIR/export.log") echo " [Options] export: $input" echo " Saved. Total export entries: $total" _log "export" "$input" fi ;; config) shift if [ $# -eq 0 ]; then echo "Recent config entries:" tail -20 "$DATA_DIR/config.log" 2>/dev/null || echo " No entries yet. Use: options config <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/config.log" local total=$(wc -l < "$DATA_DIR/config.log") echo " [Options] config: $input" echo " Saved. Total config entries: $total" _log "config" "$input" fi ;; status) shift if [ $# -eq 0 ]; then echo "Recent status entries:" tail -20 "$DATA_DIR/status.log" 2>/dev/null || echo " No entries yet. Use: options status <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/status.log" local total=$(wc -l < "$DATA_DIR/status.log") echo " [Options] status: $input" echo " Saved. Total status entries: $total" _log "status" "$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: options 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 " [Options] report: $input" echo " Saved. Total report entries: $total" _log "report" "$input" fi ;; stats) _stats ;; export) shift; _export "$@" ;; search) shift; _search "$@" ;; recent) _recent ;; status) _status ;; help|--help|-h) _help ;; version|--version|-v) _version ;; *) echo "Unknown: $1 — run 'options help'" exit 1 ;; esac
poem reference tool
--- name: "poem" version: "2.0.2" description: "poem reference tool" author: "BytesAgain" homepage: "https://bytesagain.com" source: "https://github.com/bytesagain/ai-skills" tags: [poem, reference] category: "devtools" --- # Poem poem reference tool. No API keys or credentials required — outputs reference documentation only. ## Commands | Command | Description | |---------|-------------| | `intro` | intro reference | | `quickstart` | quickstart reference | | `patterns` | patterns reference | | `debugging` | debugging reference | | `performance` | performance reference | | `security` | security reference | | `migration` | migration reference | | `cheatsheet` | cheatsheet reference | ## Output Format All commands output plain-text reference documentation via heredoc. No external API calls, no credentials needed, no network access. --- *Powered by BytesAgain | bytesagain.com | [email protected]* FILE:scripts/script.sh #!/usr/bin/env bash # poem — Poem reference tool. Use when working with poem in devtools contexts. # Powered by BytesAgain | bytesagain.com | [email protected] set -euo pipefail VERSION="2.0.2" show_help() { cat << 'HELPEOF' poem v$VERSION — Poem Reference Tool Usage: poem <command> Commands: intro Overview and core concepts quickstart Getting started guide patterns Common patterns and best practices debugging Debugging and troubleshooting performance Performance optimization tips security Security considerations migration Migration and upgrade guide cheatsheet Quick reference cheat sheet help Show this help version Show version Powered by BytesAgain | bytesagain.com HELPEOF } cmd_intro() { cat << 'EOF' # Poem — Overview ## What is Poem? Poem (poem) is a specialized tool/concept in the devtools domain. It provides essential capabilities for professionals working with poem. ## Key Concepts - Core poem principles and fundamentals - How poem fits into the broader devtools ecosystem - Essential terminology every practitioner should know ## Why Poem Matters Understanding poem is critical for: - Improving efficiency in devtools workflows - Reducing errors and downtime - Meeting industry standards and compliance requirements - Enabling better decision-making with accurate data ## Getting Started 1. Understand the basic poem concepts 2. Learn the standard tools and interfaces 3. Practice with common scenarios 4. Review safety and compliance requirements EOF } cmd_quickstart() { cat << 'EOF' # Poem — Quick Start Guide ## Prerequisites - Basic understanding of devtools concepts - Required tools and access credentials - System meeting minimum requirements ## Installation 1. Download or clone the poem package 2. Install dependencies 3. Configure initial settings 4. Verify installation ## First Steps 1. Run the hello-world example 2. Review the default configuration 3. Try a simple real-world task 4. Explore available commands and options ## Next Steps - Read the full documentation - Join the community forum - Try advanced features - Set up automated workflows EOF } cmd_patterns() { cat << 'EOF' # Poem — Common Patterns & Best Practices ## Design Patterns 1. **Standard Pattern**: The most common approach for poem 2. **Scalable Pattern**: For high-volume or distributed scenarios 3. **Resilient Pattern**: For fault-tolerant implementations ## Best Practices - Follow the principle of least privilege - Use version control for all configurations - Implement comprehensive logging - Test changes in staging before production - Document all custom configurations ## Anti-Patterns to Avoid - Hardcoding credentials or configuration - Skipping validation and error handling - Ignoring monitoring and alerting - Making changes without documentation - Over-engineering simple solutions EOF } cmd_debugging() { cat << 'EOF' # Poem — Debugging Guide ## Common Errors 1. **Connection refused**: Check service status and network 2. **Permission denied**: Verify credentials and access rights 3. **Timeout**: Check network, increase limits, optimize queries 4. **Invalid input**: Validate data format and encoding ## Debugging Tools - Built-in logging and diagnostics - Network analysis tools (tcpdump, wireshark) - System monitoring (top, htop, iostat) - Application-specific debug modes ## Debug Workflow 1. Reproduce the issue consistently 2. Check logs for error messages 3. Isolate the failing component 4. Test with minimal configuration 5. Apply fix and verify EOF } cmd_performance() { cat << 'EOF' # Poem — Performance Optimization ## Key Metrics - Response time / latency - Throughput / operations per second - Resource utilization (CPU, memory, I/O) - Error rate and retry frequency ## Optimization Strategies 1. **Caching**: Reduce redundant operations 2. **Batching**: Group small operations 3. **Indexing**: Speed up data lookups 4. **Compression**: Reduce data transfer size 5. **Parallel Processing**: Utilize multiple cores ## Monitoring - Set up baseline performance metrics - Configure alerts for anomalies - Track trends over time - Regular capacity planning reviews EOF } cmd_security() { cat << 'EOF' # Poem — Security Considerations ## Authentication & Authorization - Use strong, unique credentials - Implement role-based access control - Enable multi-factor authentication where possible - Regularly review and rotate credentials ## Data Protection - Encrypt data at rest and in transit - Implement proper backup procedures - Follow data retention policies - Sanitize inputs to prevent injection ## Network Security - Use firewalls and network segmentation - Monitor for suspicious activity - Keep all software patched and updated - Disable unnecessary services and ports EOF } cmd_migration() { cat << 'EOF' # Poem — Migration & Upgrade Guide ## Pre-Migration Checklist - [ ] Current system fully documented - [ ] Complete backup taken and verified - [ ] Target environment prepared - [ ] Rollback plan documented - [ ] Stakeholders notified ## Migration Steps 1. Prepare target environment 2. Export data from source 3. Transform data if needed 4. Import to target 5. Verify data integrity 6. Update configurations 7. Test all functionality 8. Switch traffic / go live ## Post-Migration - Monitor for errors and performance - Verify all integrations working - Update documentation - Decommission old system after confirmation EOF } cmd_cheatsheet() { cat << 'EOF' # Poem — Quick Reference ## Essential Commands | Command | Description | |---------|-------------| | help | Show available commands | | version | Display version info | | intro | Overview and fundamentals | | troubleshooting | Common problems and fixes | ## Common Workflows 1. **Setup**: install → configure → verify → test 2. **Daily**: check → monitor → report → review 3. **Issue**: diagnose → isolate → fix → verify → document ## Key Shortcuts - Use tab completion for commands - Check logs first when troubleshooting - Always backup before making changes - Document everything you change EOF } CMD="-help" shift 2>/dev/null || true case "$CMD" in intro) cmd_intro "$@" ;; quickstart) cmd_quickstart "$@" ;; patterns) cmd_patterns "$@" ;; debugging) cmd_debugging "$@" ;; performance) cmd_performance "$@" ;; security) cmd_security "$@" ;; migration) cmd_migration "$@" ;; cheatsheet) cmd_cheatsheet "$@" ;; help|--help|-h) show_help ;; version|--version|-v) echo "poem v$VERSION — Powered by BytesAgain" ;; *) echo "Unknown: $CMD"; echo "Run: poem help"; exit 1 ;; esac
Manage houseplant care with watering and fertilizer schedules. Use when adding plants, tracking watering, scheduling fertilizing, setting care reminders.
--- name: "Plant" description: "Manage houseplant care with watering and fertilizer schedules. Use when adding plants, tracking watering, scheduling fertilizing, setting care reminders." version: "2.0.0" author: "BytesAgain" homepage: https://bytesagain.com source: https://github.com/bytesagain/ai-skills tags: ["organize", "domestic", "plant", "inventory", "household"] --- # Plant Manage Plant data right from your terminal. Built for people who want organize your household without complex setup. ## Why Plant? - Works entirely offline — your data never leaves your machine - Simple command-line interface, no GUI needed - Export to JSON, CSV, or plain text anytime - Automatic history and activity logging ## Getting Started ```bash # See what you can do plant help # Check current status plant status # View your statistics plant stats ``` ## Commands | Command | What it does | |---------|-------------| | `plant add` | Add | | `plant inventory` | Inventory | | `plant schedule` | Schedule | | `plant remind` | Remind | | `plant checklist` | Checklist | | `plant usage` | Usage | | `plant cost` | Cost | | `plant maintain` | Maintain | | `plant log` | Log | | `plant report` | Report | | `plant seasonal` | Seasonal | | `plant tips` | Tips | | `plant stats` | Summary statistics | | `plant export` | <fmt> Export (json|csv|txt) | | `plant search` | <term> Search entries | | `plant recent` | Recent activity | | `plant status` | Health check | | `plant help` | Show this help | | `plant version` | Show version | | `plant $name:` | $c entries | | `plant Total:` | $total entries | | `plant Data` | size: $(du -sh "$DATA_DIR" 2>/dev/null | cut -f1) | | `plant Version:` | v2.0.0 | | `plant Data` | dir: $DATA_DIR | | `plant Entries:` | $(cat "$DATA_DIR"/*.log 2>/dev/null | wc -l) total | | `plant Disk:` | $(du -sh "$DATA_DIR" 2>/dev/null | cut -f1) | | `plant Last:` | $(tail -1 "$DATA_DIR/history.log" 2>/dev/null || echo never) | | `plant Status:` | OK | | `plant [Plant]` | add: $input | | `plant Saved.` | Total add entries: $total | | `plant [Plant]` | inventory: $input | | `plant Saved.` | Total inventory entries: $total | | `plant [Plant]` | schedule: $input | | `plant Saved.` | Total schedule entries: $total | | `plant [Plant]` | remind: $input | | `plant Saved.` | Total remind entries: $total | | `plant [Plant]` | checklist: $input | | `plant Saved.` | Total checklist entries: $total | | `plant [Plant]` | usage: $input | | `plant Saved.` | Total usage entries: $total | | `plant [Plant]` | cost: $input | | `plant Saved.` | Total cost entries: $total | | `plant [Plant]` | maintain: $input | | `plant Saved.` | Total maintain entries: $total | | `plant [Plant]` | log: $input | | `plant Saved.` | Total log entries: $total | | `plant [Plant]` | report: $input | | `plant Saved.` | Total report entries: $total | | `plant [Plant]` | seasonal: $input | | `plant Saved.` | Total seasonal entries: $total | | `plant [Plant]` | tips: $input | | `plant Saved.` | Total tips entries: $total | ## Data Storage All data is stored locally at `~/.local/share/plant/`. Each action is logged with timestamps. Use `export` to back up your data anytime. ## Feedback Found a bug or have a suggestion? Let us know: https://bytesagain.com/feedback/ --- Powered by BytesAgain | bytesagain.com | [email protected] FILE:scripts/script.sh #!/usr/bin/env bash # Plant — home tool # Powered by BytesAgain | bytesagain.com | [email protected] set -euo pipefail DATA_DIR="HOME/.local/share/plant" mkdir -p "$DATA_DIR" _log() { echo "$(date '+%m-%d %H:%M') $1: $2" >> "$DATA_DIR/history.log"; } _version() { echo "plant v2.0.0"; } _help() { echo "Plant v2.0.0 — home toolkit" echo "" echo "Usage: plant <command> [args]" echo "" echo "Commands:" echo " add Add" echo " inventory Inventory" echo " schedule Schedule" echo " remind Remind" echo " checklist Checklist" echo " usage Usage" echo " cost Cost" echo " maintain Maintain" echo " log Log" echo " report Report" echo " seasonal Seasonal" echo " tips Tips" echo " stats Summary statistics" echo " export <fmt> Export (json|csv|txt)" echo " search <term> Search entries" echo " recent Recent activity" echo " status Health check" echo " help Show this help" echo " version Show version" echo "" echo "Data: $DATA_DIR" } _stats() { echo "=== Plant 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)" } _export() { local fmt="-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 "\n]" >> "$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 "=== Plant Export ===" > "$out" for f in "$DATA_DIR"/*.log; do [ -f "$f" ] || continue echo "--- $(basename "$f" .log) ---" >> "$out" cat "$f" >> "$out" done ;; *) echo "Formats: json, csv, txt"; return 1 ;; esac echo "Exported to $out ($(wc -c < "$out") bytes)" } _status() { echo "=== Plant 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)" echo " Last: $(tail -1 "$DATA_DIR/history.log" 2>/dev/null || echo never)" echo " Status: OK" } _search() { local term="?Usage: plant search <term>" echo "Searching for: $term" for f in "$DATA_DIR"/*.log; do [ -f "$f" ] || continue local m=$(grep -i "$term" "$f" 2>/dev/null || true) if [ -n "$m" ]; then echo " --- $(basename "$f" .log) ---" echo "$m" | sed 's/^/ /' fi done } _recent() { echo "=== Recent Activity ===" tail -20 "$DATA_DIR/history.log" 2>/dev/null | sed 's/^/ /' || echo " No activity yet." } case "-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: plant 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 " [Plant] add: $input" echo " Saved. Total add entries: $total" _log "add" "$input" fi ;; inventory) shift if [ $# -eq 0 ]; then echo "Recent inventory entries:" tail -20 "$DATA_DIR/inventory.log" 2>/dev/null || echo " No entries yet. Use: plant inventory <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/inventory.log" local total=$(wc -l < "$DATA_DIR/inventory.log") echo " [Plant] inventory: $input" echo " Saved. Total inventory entries: $total" _log "inventory" "$input" fi ;; schedule) shift if [ $# -eq 0 ]; then echo "Recent schedule entries:" tail -20 "$DATA_DIR/schedule.log" 2>/dev/null || echo " No entries yet. Use: plant schedule <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/schedule.log" local total=$(wc -l < "$DATA_DIR/schedule.log") echo " [Plant] schedule: $input" echo " Saved. Total schedule entries: $total" _log "schedule" "$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: plant 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 " [Plant] remind: $input" echo " Saved. Total remind entries: $total" _log "remind" "$input" fi ;; checklist) shift if [ $# -eq 0 ]; then echo "Recent checklist entries:" tail -20 "$DATA_DIR/checklist.log" 2>/dev/null || echo " No entries yet. Use: plant checklist <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/checklist.log" local total=$(wc -l < "$DATA_DIR/checklist.log") echo " [Plant] checklist: $input" echo " Saved. Total checklist entries: $total" _log "checklist" "$input" fi ;; usage) shift if [ $# -eq 0 ]; then echo "Recent usage entries:" tail -20 "$DATA_DIR/usage.log" 2>/dev/null || echo " No entries yet. Use: plant usage <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/usage.log" local total=$(wc -l < "$DATA_DIR/usage.log") echo " [Plant] usage: $input" echo " Saved. Total usage entries: $total" _log "usage" "$input" fi ;; cost) shift if [ $# -eq 0 ]; then echo "Recent cost entries:" tail -20 "$DATA_DIR/cost.log" 2>/dev/null || echo " No entries yet. Use: plant cost <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/cost.log" local total=$(wc -l < "$DATA_DIR/cost.log") echo " [Plant] cost: $input" echo " Saved. Total cost entries: $total" _log "cost" "$input" fi ;; maintain) shift if [ $# -eq 0 ]; then echo "Recent maintain entries:" tail -20 "$DATA_DIR/maintain.log" 2>/dev/null || echo " No entries yet. Use: plant maintain <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/maintain.log" local total=$(wc -l < "$DATA_DIR/maintain.log") echo " [Plant] maintain: $input" echo " Saved. Total maintain entries: $total" _log "maintain" "$input" fi ;; log) shift if [ $# -eq 0 ]; then echo "Recent log entries:" tail -20 "$DATA_DIR/log.log" 2>/dev/null || echo " No entries yet. Use: plant log <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/log.log" local total=$(wc -l < "$DATA_DIR/log.log") echo " [Plant] log: $input" echo " Saved. Total log entries: $total" _log "log" "$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: plant 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 " [Plant] report: $input" echo " Saved. Total report entries: $total" _log "report" "$input" fi ;; seasonal) shift if [ $# -eq 0 ]; then echo "Recent seasonal entries:" tail -20 "$DATA_DIR/seasonal.log" 2>/dev/null || echo " No entries yet. Use: plant seasonal <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/seasonal.log" local total=$(wc -l < "$DATA_DIR/seasonal.log") echo " [Plant] seasonal: $input" echo " Saved. Total seasonal entries: $total" _log "seasonal" "$input" fi ;; tips) shift if [ $# -eq 0 ]; then echo "Recent tips entries:" tail -20 "$DATA_DIR/tips.log" 2>/dev/null || echo " No entries yet. Use: plant tips <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/tips.log" local total=$(wc -l < "$DATA_DIR/tips.log") echo " [Plant] tips: $input" echo " Saved. Total tips entries: $total" _log "tips" "$input" fi ;; stats) _stats ;; export) shift; _export "$@" ;; search) shift; _search "$@" ;; recent) _recent ;; status) _status ;; help|--help|-h) _help ;; version|--version|-v) _version ;; *) echo "Unknown: $1 — run 'plant help'" exit 1 ;; esac
Use when exploring beer styles, pairing beer with food, calculating ABV for homebrew, finding craft beer recommendations, or learning tasting techniques.
---
name: "Beer — Styles Encyclopedia, Food Pairing & Homebrew Guide"
description: "Use when exploring beer styles, pairing beer with food, calculating ABV for homebrew, finding craft beer recommendations, or learning tasting techniques."
version: "2.0.1"
author: "BytesAgain"
homepage: https://bytesagain.com
source: https://github.com/bytesagain/ai-skills
tags: ["beer", "craft-beer", "homebrew", "brewing", "ipa", "stout", "lifestyle"]
---
# Beer — Styles Encyclopedia, Food Pairing & Homebrew Guide
Your AI beer sommelier. Styles encyclopedia, food pairing guide, ABV calculator, tasting notes framework, and craft beer recommendations.
## Requirements
- bash 4+
## Commands
### styles
Beer style encyclopedia with flavor profiles and examples.
```bash
bash scripts/script.sh styles ipa
bash scripts/script.sh styles stout
bash scripts/script.sh styles lager
bash scripts/script.sh styles wheat
bash scripts/script.sh styles sour
bash scripts/script.sh styles porter
bash scripts/script.sh styles pilsner
bash scripts/script.sh styles list
```
### pair
Beer and food pairing recommendations.
```bash
bash scripts/script.sh pair bbq
bash scripts/script.sh pair pizza
bash scripts/script.sh pair seafood
bash scripts/script.sh pair cheese
bash scripts/script.sh pair dessert
bash scripts/script.sh pair spicy
bash scripts/script.sh pair list
```
### abv
Calculate alcohol by volume for homebrewing.
```bash
bash scripts/script.sh abv 1.050 1.010
```
### taste
Beer tasting notes framework and scoring guide.
```bash
bash scripts/script.sh taste
```
### homebrew
Homebrew recipes and getting started guide.
```bash
bash scripts/script.sh homebrew starter
bash scripts/script.sh homebrew wheat
bash scripts/script.sh homebrew ipa
bash scripts/script.sh homebrew list
```
### shop
Craft beer and gear recommendations.
```bash
bash scripts/script.sh shop craft
bash scripts/script.sh shop gear
bash scripts/script.sh shop glasses
```
### help
Show all commands.
```bash
bash scripts/script.sh help
```
## Output
Structured guides, calculations, and recommendations to stdout.
## Feedback
https://bytesagain.com/feedback/
Powered by BytesAgain | bytesagain.com
FILE:scripts/script.sh
#!/usr/bin/env bash
# beer v2.0.0 — Styles Encyclopedia, Food Pairing & Homebrew Guide
# Powered by BytesAgain | bytesagain.com
set -uo pipefail
VERSION="2.0.1"
# ── Beer Styles ───────────────────────────────────────────
cmd_styles() {
local style="-list"
case "$style" in
ipa)
cat << 'EOF'
🍺 IPA (India Pale Ale)
ABV: 5.5-7.5% (standard) / 7.5-10%+ (Double/Imperial)
IBU: 40-70 (standard) / 60-100+ (Double)
Color: Golden to amber
Sub-styles:
• West Coast IPA — bitter, piney, resinous, dry finish
• New England IPA (NEIPA/Hazy) — juicy, tropical, low bitterness, hazy
• Session IPA — lower ABV (3.5-5%), still hoppy
• Double/Imperial IPA — bigger, bolder, higher ABV
• Brut IPA — bone-dry, champagne-like, effervescent
Flavor Profile:
🍊 Citrus (grapefruit, orange)
🌲 Pine, resin
🥭 Tropical fruit (mango, passion fruit — in NEIPAs)
🌿 Floral, herbal
Classic Examples:
• Lagunitas IPA (West Coast)
• Tree House Julius (NEIPA)
• Pliny the Elder (Double IPA)
• Stone IPA (West Coast classic)
History: Originally brewed in England with extra hops to survive
the sea voyage to India. Modern IPAs are an American reinvention.
EOF
;;
stout)
cat << 'EOF'
🍺 STOUT
ABV: 4-6% (dry) / 8-13% (imperial)
IBU: 25-50
Color: Very dark brown to black
Sub-styles:
• Dry/Irish Stout — light body, roasty, coffee-like (Guinness)
• Milk/Sweet Stout — lactose added, creamy, dessert-like
• Oatmeal Stout — silky, smooth, oat-enhanced body
• Imperial/Russian Stout — big, boozy, intense
• Pastry Stout — adjuncts (vanilla, maple, cinnamon, etc.)
Flavor Profile:
☕ Coffee, espresso
🍫 Dark chocolate, cocoa
🍞 Roasted barley, toast
🍬 Caramel, molasses (in sweeter versions)
Classic Examples:
• Guinness Draught (Dry Irish)
• Left Hand Milk Stout (Sweet)
• Founders Breakfast Stout (Imperial)
• North Coast Old Rasputin (Russian Imperial)
Fun fact: Stout was originally short for "stout porter" —
a stronger version of porter.
EOF
;;
lager)
cat << 'EOF'
🍺 LAGER
ABV: 4-6%
IBU: 8-25
Color: Pale straw to golden
Sub-styles:
• American Lager — light, crisp, mild (Budweiser, Coors)
• Pilsner — more hoppy, floral, spicy (see 'pilsner')
• Helles — malty, bready, Munich-style
• Märzen/Oktoberfest — amber, toasty, malty
• Dunkel — dark, malty, bread crust
• Bock/Doppelbock — strong, malty, 6-10% ABV
Flavor Profile:
🍞 Bread, cracker
🌾 Light grain, cereal
🍯 Mild sweetness
💧 Clean, crisp finish
Classic Examples:
• Augustiner Helles (Munich Helles)
• Paulaner Oktoberfest (Märzen)
• Spaten Dunkel (Dark Lager)
• Ayinger Celebrator (Doppelbock)
Lager vs Ale: Lagers use bottom-fermenting yeast at cold temps
(7-13°C). Ales use top-fermenting yeast at warmer temps (15-24°C).
EOF
;;
wheat|weizen|hefeweizen)
cat << 'EOF'
🍺 WHEAT BEER (Weizen/Hefeweizen)
ABV: 4.5-5.5%
IBU: 8-15
Color: Pale, hazy/cloudy
Sub-styles:
• Hefeweizen — Bavarian, banana & clove, unfiltered
• Witbier/White — Belgian, coriander & orange peel
• American Wheat — clean, less yeast character
• Berliner Weisse — sour, tart, low ABV (3-4%)
• Dunkelweizen — dark wheat, banana bread flavor
Flavor Profile:
🍌 Banana (from yeast esters)
🌿 Clove, spice (from yeast phenols)
🍊 Orange peel (in Witbier)
🍞 Bready, doughy
☁️ Light, refreshing
Classic Examples:
• Weihenstephaner Hefeweissbier (the benchmark)
• Hoegaarden (Belgian Witbier)
• Franziskaner Hefeweizen
• Schneider Weisse
💡 Serve in a tall weizen glass. Pour slowly, swirl the last
inch of beer to pick up yeast sediment, then top off.
EOF
;;
sour)
cat << 'EOF'
🍺 SOUR BEER
ABV: 3-8%
IBU: 0-10 (minimal hop bitterness)
Color: Varies widely
Sub-styles:
• Berliner Weisse — light, tart, wheat-based (3-4%)
• Gose — salty, coriander, wheat, tart
• Lambic — Belgian, spontaneous fermentation, funky
• Gueuze — blend of young and old lambics, complex
• Kriek — lambic with cherries
• Flanders Red — vinous, aged in oak, complex
• Fruited Sour — modern style, big fruit additions
Flavor Profile:
🍋 Tart, acidic
🍒 Fruit (cherry, raspberry, peach)
🧀 Funky, barnyard (in traditional Belgian styles)
🧂 Salt (in Gose)
🍷 Vinous, oaky (in Flanders)
Classic Examples:
• Cantillon Gueuze (Lambic — the gold standard)
• Anderson Valley Gose
• Rodenbach Grand Cru (Flanders Red)
• Duchesse de Bourgogne (Flanders)
Sours are the fastest-growing craft beer category worldwide.
EOF
;;
porter)
cat << 'EOF'
🍺 PORTER
ABV: 4.5-6.5% (standard) / 7-12% (imperial)
IBU: 18-35
Color: Dark brown
Sub-styles:
• English Porter — mild, biscuity, restrained
• American Porter — more assertive, hop-forward
• Baltic Porter — lager-fermented, higher ABV, smooth
• Smoked Porter — rauchbier influence, bacon-like
Flavor Profile:
🍫 Chocolate, cocoa
☕ Light coffee
🍞 Biscuit, toffee
🥜 Nutty, caramel
Classic Examples:
• Fuller's London Porter (English classic)
• Founders Porter (American)
• Sinebrychoff Porter (Baltic)
• Alaskan Smoked Porter
Porter vs Stout: Historically the same beer — stout was a stronger
porter. Today, stouts tend to be more roasty/coffee-forward while
porters are more chocolate/caramel.
EOF
;;
pilsner|pils)
cat << 'EOF'
🍺 PILSNER
ABV: 4-5.5%
IBU: 25-45
Color: Very pale straw to gold
Sub-styles:
• Czech/Bohemian Pilsner — malty, soft, Saaz hops, golden
• German Pilsner — drier, crisper, more bitter, very pale
• Italian Pilsner — dry-hopped, modern twist
Flavor Profile:
🌿 Floral, spicy hops (Saaz, Hallertauer)
🍞 Light bread, cracker
💧 Crisp, clean, dry finish
🍯 Light honey sweetness (Czech style)
Classic Examples:
• Pilsner Urquell (the original, since 1842)
• Bitburger (German)
• Rothaus Tannenzäpfle (German)
• Birrificio Italiano Tipopils (Italian)
Fun fact: Pilsner is the most consumed beer style in the world.
It was invented in Plzeň, Czech Republic in 1842.
EOF
;;
list|*)
cat << 'EOF'
🍺 Beer Styles Encyclopedia:
ipa 🇺🇸 Hoppy, bitter, citrus/tropical
stout 🇮🇪 Dark, roasty, coffee/chocolate
lager 🇩🇪 Clean, crisp, refreshing
wheat 🇩🇪 Cloudy, banana/clove, light
sour 🇧🇪 Tart, funky, fruity
porter 🇬🇧 Dark, chocolatey, malty
pilsner 🇨🇿 Crisp, floral, the world's favorite
Usage: beer styles <style>
EOF
;;
esac
}
# ── Food Pairing ──────────────────────────────────────────
cmd_pair() {
local food="-list"
case "$food" in
bbq|barbecue|grill)
cat << 'EOF'
🍖 BBQ + BEER PAIRING
Smoked Brisket → American Brown Ale, Rauchbier (smoked beer)
Pulled Pork → Amber Ale, Märzen/Oktoberfest
Ribs (sweet glaze) → IPA (bitterness cuts sweetness)
Grilled Sausage → Pilsner, Helles (classic combo)
Grilled Chicken → Wheat beer, Session IPA
Burnt Ends → Imperial Stout (smoke meets roast)
💡 Rule: Match intensity. Heavy meat = bold beer. Light meat = light beer.
EOF
;;
pizza)
cat << 'EOF'
🍕 PIZZA + BEER PAIRING
Margherita → Pilsner, Italian Lager (classic)
Pepperoni → Amber Ale, Vienna Lager
Hawaiian → Wheat beer, Belgian Wit
Meat Lovers → IPA, Pale Ale (hop bitterness cuts fat)
BBQ Chicken → Brown Ale, Amber
Veggie → Saison, Kölsch
White/Truffle → Belgian Tripel, Farmhouse Ale
💡 Pizza and beer is the world's most popular pairing. You literally can't go wrong.
EOF
;;
seafood|fish|sushi)
cat << 'EOF'
🐟 SEAFOOD + BEER PAIRING
Oysters → Dry Stout (Guinness!), Gose
Fish & Chips → English Bitter, Pale Ale
Grilled Salmon → Amber Ale, Belgian Dubbel
Shrimp/Prawns → Pilsner, Witbier
Sushi/Sashimi → Light Lager, Gose, Rice Lager
Lobster → Belgian Tripel, Brut IPA
Ceviche → Gose, Berliner Weisse
Mussels → Belgian Wit, Saison
💡 Light seafood = light beer. Rich seafood = more body is OK.
Salt in Gose mirrors ocean flavors perfectly.
EOF
;;
cheese)
cat << 'EOF'
🧀 CHEESE + BEER PAIRING
Cheddar (mild) → Amber Ale, English Bitter
Cheddar (aged) → IPA, Barleywine
Brie/Camembert → Belgian Wit, Saison, Wheat
Blue Cheese → Imperial Stout, Barleywine (big flavors match)
Gouda → Belgian Dubbel, Brown Ale
Parmesan → Belgian Tripel, Bock
Goat Cheese → Sour beer, Berliner Weisse
Mozzarella → Pilsner, Light Lager
💡 The classic rule: "What grows together goes together."
Belgian cheese + Belgian beer = perfection.
EOF
;;
dessert|sweet)
cat << 'EOF'
🍰 DESSERT + BEER PAIRING
Chocolate Cake → Imperial Stout, Milk Stout
Vanilla Ice Cream → Barrel-aged Stout (affogato-style)
Apple Pie → Hefeweizen, English Cider
Cheesecake → Fruit Lambic, Kriek
Crème Brûlée → Belgian Tripel, Doppelbock
Brownies → Porter, Oatmeal Stout
Tiramisu → Coffee Stout
Fruit Tart → Berliner Weisse, Fruited Sour
💡 Match sweetness levels. If the beer is less sweet than the
dessert, it will taste thin and bitter.
EOF
;;
spicy|hot)
cat << 'EOF'
🌶️ SPICY FOOD + BEER PAIRING
Thai Curry → Wheat beer, Belgian Wit (cooling)
Indian Curry → IPA (controversial but popular), Lager
Mexican/Tacos → Vienna Lager, Amber, Mexican Lager
Korean BBQ → Pilsner, Rice Lager
Sichuan/Mapo Tofu → Wheat beer, Light Lager
Buffalo Wings → IPA, Pale Ale
Jerk Chicken → Red Ale, Brown Ale
💡 High carbonation + lower ABV = best with spicy food.
Alcohol amplifies heat. High-ABV beers make spicy food hotter.
Wheat beers and lagers cool the palate best.
EOF
;;
list|*)
cat << 'EOF'
🍽️ Food Pairing Categories:
bbq 🍖 BBQ & grilled meats
pizza 🍕 Pizza varieties
seafood 🐟 Fish, sushi, shellfish
cheese 🧀 Cheese board pairings
dessert 🍰 Sweet treats
spicy 🌶️ Spicy cuisine
Usage: beer pair <food>
EOF
;;
esac
}
# ── ABV Calculator ────────────────────────────────────────
cmd_abv() {
local og="-"
local fg="-"
if [[ -z "$og" || -z "$fg" ]]; then
cat << 'EOF'
🧮 ABV Calculator
Usage: beer abv <OG> <FG>
OG = Original Gravity (before fermentation)
FG = Final Gravity (after fermentation)
Example: beer abv 1.050 1.010
Common OG ranges by style:
Light Lager: 1.028-1.040
Wheat Beer: 1.044-1.052
Pale Ale: 1.045-1.060
IPA: 1.056-1.075
Stout: 1.036-1.076
Double IPA: 1.065-1.100
Imperial Stout: 1.075-1.115
Barleywine: 1.080-1.120
EOF
return
fi
local abv=$(echo "scale=2; ($og - $fg) * 131.25" | bc 2>/dev/null)
local attenuation=$(echo "scale=1; (($og - $fg) / ($og - 1)) * 100" | bc 2>/dev/null)
local calories=$(echo "scale=0; ((6.9 * (($og - $fg) / (1.775 - $og))) + 4 * (($fg - 1) * 1000 * 0.1)) * 3.55" | bc 2>/dev/null || echo "N/A")
cat << EOF
🧮 ABV Calculation Results
Original Gravity (OG): $og
Final Gravity (FG): $fg
─────────────────────────
ABV: abv%
Apparent Attenuation: attenuation%
Strength Category:
$(if (( $(echo "$abv < 4" | bc -l 2>/dev/null || echo 0) )); then
echo " 🟢 Session (under 4%)"
elif (( $(echo "$abv < 6" | bc -l 2>/dev/null || echo 0) )); then
echo " 🟡 Standard (4-6%)"
elif (( $(echo "$abv < 8" | bc -l 2>/dev/null || echo 0) )); then
echo " 🟠 Strong (6-8%)"
else
echo " 🔴 Very Strong (8%+)"
fi)
EOF
}
# ── Tasting Guide ─────────────────────────────────────────
cmd_taste() {
cat << 'EOF'
🍺 Beer Tasting Framework
APPEARANCE (Look):
Color: Straw → Gold → Amber → Brown → Black
Clarity: Brilliant → Clear → Slight haze → Hazy → Opaque
Head: None → Thin → Moderate → Thick → Rocky
Lacing: None → Minimal → Moderate → Excellent
AROMA (Smell):
□ Malt: bread, biscuit, caramel, chocolate, coffee, roast
□ Hops: floral, citrus, pine, tropical, herbal, spicy
□ Yeast: fruity (banana, apple), spicy (clove, pepper), funky
□ Other: vanilla, bourbon, smoke, sour, mineral
FLAVOR (Taste):
□ Malt character: ___
□ Hop character: ___
□ Bitterness: Low / Medium / High
□ Sweetness: Dry / Off-dry / Medium / Sweet
□ Balance: Malt-forward / Balanced / Hop-forward
MOUTHFEEL (Texture):
□ Body: Light / Medium / Full
□ Carbonation: Low / Medium / High
□ Finish: Short / Medium / Lingering
□ Warmth: None / Mild / Noticeable (from alcohol)
OVERALL IMPRESSION:
□ Score: ___/5
□ Would order again? Y/N
□ Notes: ___
💡 Tip: Serve in proper glassware, pour into a glass (never
drink from the bottle/can), and let strong beers warm slightly.
EOF
}
# ── Homebrew Recipes ──────────────────────────────────────
cmd_homebrew() {
local recipe="-list"
case "$recipe" in
starter|start|beginner)
cat << 'EOF'
🏠 HOMEBREW: Getting Started
EQUIPMENT NEEDED ($50-100 starter kit):
✅ Fermenting bucket or carboy (5 gallon / 19L)
✅ Airlock and stopper
✅ Siphon/auto-siphon + tubing
✅ Bottle capper + caps
✅ Bottles (save ~50 12oz bottles)
✅ Sanitizer (Star San — most important item!)
✅ Hydrometer (measures gravity/ABV)
✅ Large pot (at least 3 gallons / 11L)
✅ Thermometer
FIRST BREW TIPS:
1. Sanitize EVERYTHING. #1 cause of bad beer = infection
2. Start with an extract kit (simpler than all-grain)
3. Control fermentation temperature (18-22°C for ales)
4. Be patient — 2 weeks fermenting + 2 weeks bottle conditioning
5. Your first batch will be drinkable. Your 5th will be good.
PROCESS OVERVIEW:
Brew Day (3-4 hours):
Boil water → Add malt extract → Add hops → Cool → Add yeast
Fermentation (2 weeks):
Seal with airlock → Store at 18-22°C → Wait
Bottling (1-2 hours):
Add priming sugar → Fill bottles → Cap → Wait 2 more weeks
Drink! 🍻
EOF
;;
wheat|weizen)
cat << 'EOF'
🏠 HOMEBREW: American Wheat Beer (5 gallon / 19L)
Target: OG 1.048 | FG 1.010 | ABV 5.0% | IBU 18
INGREDIENTS:
Malt:
• 3.3 lb Wheat LME (liquid malt extract)
• 3.3 lb Pilsner LME
Hops:
• 0.75 oz Cascade (60 min) — bittering
• 0.25 oz Cascade (5 min) — aroma
Yeast:
• Safale WB-06 (wheat beer yeast) or US-05 (clean)
Other:
• 5 oz priming sugar (for bottling)
BREW DAY:
1. Heat 2.5 gal water to 70°C, remove from heat
2. Stir in both LMEs until dissolved
3. Bring to boil, add 0.75 oz Cascade
4. Boil 55 min, add 0.25 oz Cascade
5. Boil 5 more min (60 total)
6. Cool to 20°C, transfer to fermenter
7. Top up to 5 gallons with cold water
8. Pitch yeast, seal with airlock
9. Ferment at 18-20°C for 14 days
10. Bottle with priming sugar, condition 14 days
Easy, refreshing, crowd-pleasing first recipe.
EOF
;;
ipa)
cat << 'EOF'
🏠 HOMEBREW: American IPA (5 gallon / 19L)
Target: OG 1.065 | FG 1.012 | ABV 7.0% | IBU 60
INGREDIENTS:
Malt:
• 6.6 lb Pale LME
• 1 lb Crystal 40L (steep, don't boil)
• 1 lb Munich LME
Hops:
• 1 oz Centennial (60 min) — bittering
• 1 oz Citra (15 min) — flavor
• 1 oz Citra (5 min) — aroma
• 2 oz Citra (dry hop, day 7) — tropical bomb
Yeast:
• Safale US-05 (clean American ale)
Other:
• 5 oz priming sugar
BREW DAY:
1. Steep Crystal 40L in mesh bag at 65-70°C for 30 min
2. Remove bag, add LMEs, bring to boil
3. 60 min: add Centennial
4. 15 min: add 1 oz Citra
5. 5 min: add 1 oz Citra
6. Cool rapidly to 18°C (ice bath)
7. Transfer, top up to 5 gal, pitch yeast
8. Ferment at 18-20°C
9. Day 7: add 2 oz Citra dry hop (in mesh bag)
10. Day 14: bottle, condition 14 days
⚠️ Drink fresh! IPAs are best within 4-6 weeks of brewing.
Hop flavor and aroma fade quickly.
EOF
;;
list|*)
cat << 'EOF'
🏠 Homebrew Recipes:
starter 🔰 Getting started guide & equipment list
wheat 🌾 American Wheat Beer (beginner-friendly)
ipa 🍊 American IPA (intermediate)
Usage: beer homebrew <recipe>
EOF
;;
esac
}
# ── Shopping Recommendations ──────────────────────────────
cmd_shop() {
local category="-all"
case "$category" in
craft)
cat << 'EOF'
🛒 Craft Beer Recommendations
MUST-TRY STYLES (start here):
IPA:
• Sierra Nevada Torpedo (West Coast classic)
• Bell's Two Hearted (balanced, best in class)
• Other Half Green Diamonds (NEIPA)
Stout:
• Guinness Draught (the gateway stout)
• Founders Breakfast Stout (coffee + chocolate)
• Left Hand Milk Stout Nitro (creamy dessert)
Wheat:
• Weihenstephaner Hefeweissbier (world's oldest brewery)
• Hoegaarden (Belgian classic)
• Blue Moon (widely available intro)
Sour:
• Anderson Valley Gose (easy entry point)
• Dogfish Head SeaQuench (gose/kolsch/weisse blend)
Lager:
• Pilsner Urquell (the original pilsner)
• Augustiner Helles (Munich's finest)
WHERE TO BUY:
Online: Tavour, CraftShack, Drizly
Local: Check brewery taprooms and bottle shops
💡 Tip: Buy singles to explore, not six-packs.
Most craft beer shops let you build your own mix pack.
EOF
;;
gear)
cat << 'EOF'
🛒 Beer Gear & Accessories
FOR DRINKING:
• Proper glassware set ($20-40) — makes a real difference
• Bottle opener (get a nice wall-mounted one)
• Growler or crowler for fresh fills from breweries
FOR HOMEBREWING:
Starter Kit ($50-100):
• Northern Brewer Brew Share Enjoy kit
• Brooklyn Brew Shop kits (1 gallon, great for beginners)
• Mr. Beer (simplest possible entry point)
Upgrades ($100-300):
• Wort chiller — cools beer fast, reduces contamination
• Auto-siphon — makes transfers painless
• Temperature controller — consistent fermentation
• Refractometer — instant gravity readings
Going All-Grain ($200-500):
• Mash tun (cooler conversion or dedicated)
• Brew-in-a-bag (BIAB) setup — simplest all-grain method
• Grain mill — fresh-crushed grain = better beer
EOF
;;
glasses|glassware)
cat << 'EOF'
🛒 Beer Glassware Guide
THE RIGHT GLASS MATTERS — here's what to use:
🍺 Pint Glass (Shaker) → American ales, IPAs, stouts
🥂 Tulip → Belgian ales, IPAs, strong ales
🍷 Snifter → Imperial stouts, barleywines, strong
🥃 Teku → Universal craft beer glass (best all-rounder)
🍺 Weizen Glass (tall) → Wheat beers, hefeweizen
🍺 Pilsner Glass (tall) → Pilsners, lagers
🍺 Mug/Stein → Oktoberfest, traditional lagers
🥂 Goblet/Chalice → Belgian Trappist ales
🍺 Stange (slim cylinder) → Kölsch, Altbier
IF YOU BUY ONLY ONE:
→ Teku glass. Designed to work with every style.
Concentrates aromas, looks professional, dishwasher safe.
💡 Always pour beer into a glass. Aroma is 80% of flavor,
and you can't smell beer through a can.
EOF
;;
*)
cat << 'EOF'
🛒 Beer Shopping Categories:
craft 🍺 Craft beer recommendations by style
gear 🔧 Equipment for drinking & homebrewing
glasses 🥂 Glassware guide — which glass for which beer
Usage: beer shop <category>
EOF
;;
esac
}
# ── Help ──────────────────────────────────────────────────
show_help() {
cat << EOF
🍺 beer vVERSION — Styles Encyclopedia, Food Pairing & Homebrew Guide
Usage: beer <command> [args]
Commands:
styles <style> Beer style encyclopedia (ipa, stout, lager, wheat,
sour, porter, pilsner)
pair <food> Food pairing guide (bbq, pizza, seafood, cheese,
dessert, spicy)
abv <OG> <FG> Calculate ABV from gravity readings
taste Tasting notes framework and scoring guide
homebrew <recipe> Homebrew recipes (starter, wheat, ipa)
shop <category> Recommendations (craft, gear, glasses)
help Show this help
version Show version
Examples:
beer styles ipa # Learn about IPA
beer pair bbq # What beer with BBQ?
beer abv 1.050 1.010 # Calculate 5.25% ABV
beer homebrew starter # How to start homebrewing
Related skills: coffee, mealplan, mychef, nutrition-label
📖 More skills: bytesagain.com
EOF
}
# ── Main ──────────────────────────────────────────────────
case "-help" in
styles|style) cmd_styles "-list" ;;
pair|pairing) cmd_pair "-list" ;;
abv) cmd_abv "-" "-" ;;
taste|tasting) cmd_taste ;;
homebrew|brew) cmd_homebrew "-list" ;;
shop) cmd_shop "-all" ;;
help|-h|--help) show_help ;;
version|-v|--version) echo "beer vVERSION" ;;
*) echo "Unknown command: $1"; show_help ;;
esac
Your personal Deadline assistant. Use when you need deadline.
--- name: "Deadline" description: "Your personal Deadline assistant. Use when you need deadline." version: "2.0.0" author: "BytesAgain" homepage: https://bytesagain.com source: https://github.com/bytesagain/ai-skills tags: ["social-media", "copywriting", "creative", "deadline", "writing"] --- # Deadline Your personal Deadline assistant. Track, analyze, and manage all your content creation needs from the command line. ## Why Deadline? - Works entirely offline — your data never leaves your machine - Simple command-line interface, no GUI needed - Export to JSON, CSV, or plain text anytime - Automatic history and activity logging ## Getting Started ```bash # See what you can do deadline help # Check current status deadline status # View your statistics deadline stats ``` ## Commands | Command | What it does | |---------|-------------| | `deadline draft` | Draft | | `deadline edit` | Edit | | `deadline optimize` | Optimize | | `deadline schedule` | Schedule | | `deadline hashtags` | Hashtags | | `deadline hooks` | Hooks | | `deadline cta` | Cta | | `deadline rewrite` | Rewrite | | `deadline translate` | Translate | | `deadline tone` | Tone | | `deadline headline` | Headline | | `deadline outline` | Outline | | `deadline stats` | Summary statistics | | `deadline export` | <fmt> Export (json|csv|txt) | | `deadline search` | <term> Search entries | | `deadline recent` | Recent activity | | `deadline status` | Health check | | `deadline help` | Show this help | | `deadline version` | Show version | | `deadline $name:` | $c entries | | `deadline Total:` | $total entries | | `deadline Data` | size: $(du -sh "$DATA_DIR" 2>/dev/null | cut -f1) | | `deadline Version:` | v2.0.0 | | `deadline Data` | dir: $DATA_DIR | | `deadline Entries:` | $(cat "$DATA_DIR"/*.log 2>/dev/null | wc -l) total | | `deadline Disk:` | $(du -sh "$DATA_DIR" 2>/dev/null | cut -f1) | | `deadline Last:` | $(tail -1 "$DATA_DIR/history.log" 2>/dev/null || echo never) | | `deadline Status:` | OK | | `deadline [Deadline]` | draft: $input | | `deadline Saved.` | Total draft entries: $total | | `deadline [Deadline]` | edit: $input | | `deadline Saved.` | Total edit entries: $total | | `deadline [Deadline]` | optimize: $input | | `deadline Saved.` | Total optimize entries: $total | | `deadline [Deadline]` | schedule: $input | | `deadline Saved.` | Total schedule entries: $total | | `deadline [Deadline]` | hashtags: $input | | `deadline Saved.` | Total hashtags entries: $total | | `deadline [Deadline]` | hooks: $input | | `deadline Saved.` | Total hooks entries: $total | | `deadline [Deadline]` | cta: $input | | `deadline Saved.` | Total cta entries: $total | | `deadline [Deadline]` | rewrite: $input | | `deadline Saved.` | Total rewrite entries: $total | | `deadline [Deadline]` | translate: $input | | `deadline Saved.` | Total translate entries: $total | | `deadline [Deadline]` | tone: $input | | `deadline Saved.` | Total tone entries: $total | | `deadline [Deadline]` | headline: $input | | `deadline Saved.` | Total headline entries: $total | | `deadline [Deadline]` | outline: $input | | `deadline Saved.` | Total outline entries: $total | ## Data Storage All data is stored locally at `~/.local/share/deadline/`. Each action is logged with timestamps. Use `export` to back up your data anytime. ## Feedback Found a bug or have a suggestion? Let us know: https://bytesagain.com/feedback/ --- Powered by BytesAgain | bytesagain.com | [email protected] FILE:scripts/script.sh #!/usr/bin/env bash # Deadline — content tool # Powered by BytesAgain | bytesagain.com | [email protected] set -euo pipefail DATA_DIR="HOME/.local/share/deadline" mkdir -p "$DATA_DIR" _log() { echo "$(date '+%m-%d %H:%M') $1: $2" >> "$DATA_DIR/history.log"; } _version() { echo "deadline v2.0.0"; } _help() { echo "Deadline v2.0.0 — content toolkit" echo "" echo "Usage: deadline <command> [args]" echo "" echo "Commands:" echo " draft Draft" echo " edit Edit" echo " optimize Optimize" echo " schedule Schedule" echo " hashtags Hashtags" echo " hooks Hooks" echo " cta Cta" echo " rewrite Rewrite" echo " translate Translate" echo " tone Tone" echo " headline Headline" echo " outline Outline" echo " stats Summary statistics" echo " export <fmt> Export (json|csv|txt)" echo " search <term> Search entries" echo " recent Recent activity" echo " status Health check" echo " help Show this help" echo " version Show version" echo "" echo "Data: $DATA_DIR" } _stats() { echo "=== Deadline 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)" } _export() { local fmt="-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 "\n]" >> "$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 "=== Deadline Export ===" > "$out" for f in "$DATA_DIR"/*.log; do [ -f "$f" ] || continue echo "--- $(basename "$f" .log) ---" >> "$out" cat "$f" >> "$out" done ;; *) echo "Formats: json, csv, txt"; return 1 ;; esac echo "Exported to $out ($(wc -c < "$out") bytes)" } _status() { echo "=== Deadline 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)" echo " Last: $(tail -1 "$DATA_DIR/history.log" 2>/dev/null || echo never)" echo " Status: OK" } _search() { local term="?Usage: deadline search <term>" echo "Searching for: $term" for f in "$DATA_DIR"/*.log; do [ -f "$f" ] || continue local m=$(grep -i "$term" "$f" 2>/dev/null || true) if [ -n "$m" ]; then echo " --- $(basename "$f" .log) ---" echo "$m" | sed 's/^/ /' fi done } _recent() { echo "=== Recent Activity ===" tail -20 "$DATA_DIR/history.log" 2>/dev/null | sed 's/^/ /' || echo " No activity yet." } case "-help" in draft) shift if [ $# -eq 0 ]; then echo "Recent draft entries:" tail -20 "$DATA_DIR/draft.log" 2>/dev/null || echo " No entries yet. Use: deadline draft <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/draft.log" local total=$(wc -l < "$DATA_DIR/draft.log") echo " [Deadline] draft: $input" echo " Saved. Total draft entries: $total" _log "draft" "$input" fi ;; edit) shift if [ $# -eq 0 ]; then echo "Recent edit entries:" tail -20 "$DATA_DIR/edit.log" 2>/dev/null || echo " No entries yet. Use: deadline edit <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/edit.log" local total=$(wc -l < "$DATA_DIR/edit.log") echo " [Deadline] edit: $input" echo " Saved. Total edit entries: $total" _log "edit" "$input" fi ;; optimize) shift if [ $# -eq 0 ]; then echo "Recent optimize entries:" tail -20 "$DATA_DIR/optimize.log" 2>/dev/null || echo " No entries yet. Use: deadline optimize <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/optimize.log" local total=$(wc -l < "$DATA_DIR/optimize.log") echo " [Deadline] optimize: $input" echo " Saved. Total optimize entries: $total" _log "optimize" "$input" fi ;; schedule) shift if [ $# -eq 0 ]; then echo "Recent schedule entries:" tail -20 "$DATA_DIR/schedule.log" 2>/dev/null || echo " No entries yet. Use: deadline schedule <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/schedule.log" local total=$(wc -l < "$DATA_DIR/schedule.log") echo " [Deadline] schedule: $input" echo " Saved. Total schedule entries: $total" _log "schedule" "$input" fi ;; hashtags) shift if [ $# -eq 0 ]; then echo "Recent hashtags entries:" tail -20 "$DATA_DIR/hashtags.log" 2>/dev/null || echo " No entries yet. Use: deadline hashtags <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/hashtags.log" local total=$(wc -l < "$DATA_DIR/hashtags.log") echo " [Deadline] hashtags: $input" echo " Saved. Total hashtags entries: $total" _log "hashtags" "$input" fi ;; hooks) shift if [ $# -eq 0 ]; then echo "Recent hooks entries:" tail -20 "$DATA_DIR/hooks.log" 2>/dev/null || echo " No entries yet. Use: deadline hooks <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/hooks.log" local total=$(wc -l < "$DATA_DIR/hooks.log") echo " [Deadline] hooks: $input" echo " Saved. Total hooks entries: $total" _log "hooks" "$input" fi ;; cta) shift if [ $# -eq 0 ]; then echo "Recent cta entries:" tail -20 "$DATA_DIR/cta.log" 2>/dev/null || echo " No entries yet. Use: deadline cta <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/cta.log" local total=$(wc -l < "$DATA_DIR/cta.log") echo " [Deadline] cta: $input" echo " Saved. Total cta entries: $total" _log "cta" "$input" fi ;; rewrite) shift if [ $# -eq 0 ]; then echo "Recent rewrite entries:" tail -20 "$DATA_DIR/rewrite.log" 2>/dev/null || echo " No entries yet. Use: deadline rewrite <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/rewrite.log" local total=$(wc -l < "$DATA_DIR/rewrite.log") echo " [Deadline] rewrite: $input" echo " Saved. Total rewrite entries: $total" _log "rewrite" "$input" fi ;; translate) shift if [ $# -eq 0 ]; then echo "Recent translate entries:" tail -20 "$DATA_DIR/translate.log" 2>/dev/null || echo " No entries yet. Use: deadline translate <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/translate.log" local total=$(wc -l < "$DATA_DIR/translate.log") echo " [Deadline] translate: $input" echo " Saved. Total translate entries: $total" _log "translate" "$input" fi ;; tone) shift if [ $# -eq 0 ]; then echo "Recent tone entries:" tail -20 "$DATA_DIR/tone.log" 2>/dev/null || echo " No entries yet. Use: deadline tone <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/tone.log" local total=$(wc -l < "$DATA_DIR/tone.log") echo " [Deadline] tone: $input" echo " Saved. Total tone entries: $total" _log "tone" "$input" fi ;; headline) shift if [ $# -eq 0 ]; then echo "Recent headline entries:" tail -20 "$DATA_DIR/headline.log" 2>/dev/null || echo " No entries yet. Use: deadline headline <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/headline.log" local total=$(wc -l < "$DATA_DIR/headline.log") echo " [Deadline] headline: $input" echo " Saved. Total headline entries: $total" _log "headline" "$input" fi ;; outline) shift if [ $# -eq 0 ]; then echo "Recent outline entries:" tail -20 "$DATA_DIR/outline.log" 2>/dev/null || echo " No entries yet. Use: deadline outline <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/outline.log" local total=$(wc -l < "$DATA_DIR/outline.log") echo " [Deadline] outline: $input" echo " Saved. Total outline entries: $total" _log "outline" "$input" fi ;; stats) _stats ;; export) shift; _export "$@" ;; search) shift; _search "$@" ;; recent) _recent ;; status) _status ;; help|--help|-h) _help ;; version|--version|-v) _version ;; *) echo "Unknown: $1 — run 'deadline help'" exit 1 ;; esac
Log home maintenance tasks, set reminders, and track repair history with checklists. Use when scheduling repairs, tracking appliance upkeep, inventorying.
--- name: "Maintenance" description: "Log home maintenance tasks, set reminders, and track repair history with checklists. Use when scheduling repairs, tracking appliance upkeep, inventorying." version: "2.0.0" author: "BytesAgain" homepage: https://bytesagain.com source: https://github.com/bytesagain/ai-skills tags: ["maintenance", "domestic", "smart-home", "inventory", "household"] --- # Maintenance Maintenance makes home management simple. Record, search, and analyze your data with clear terminal output. ## Why Maintenance? - Works entirely offline — your data never leaves your machine - Simple command-line interface, no GUI needed - Export to JSON, CSV, or plain text anytime - Automatic history and activity logging ## Getting Started ```bash # See what you can do maintenance help # Check current status maintenance status # View your statistics maintenance stats ``` ## Commands | Command | What it does | |---------|-------------| | `maintenance add` | Add | | `maintenance inventory` | Inventory | | `maintenance schedule` | Schedule | | `maintenance remind` | Remind | | `maintenance checklist` | Checklist | | `maintenance usage` | Usage | | `maintenance cost` | Cost | | `maintenance maintain` | Maintain | | `maintenance log` | Log | | `maintenance report` | Report | | `maintenance seasonal` | Seasonal | | `maintenance tips` | Tips | | `maintenance stats` | Summary statistics | | `maintenance export` | <fmt> Export (json|csv|txt) | | `maintenance search` | <term> Search entries | | `maintenance recent` | Recent activity | | `maintenance status` | Health check | | `maintenance help` | Show this help | | `maintenance version` | Show version | | `maintenance $name:` | $c entries | | `maintenance Total:` | $total entries | | `maintenance Data` | size: $(du -sh "$DATA_DIR" 2>/dev/null | cut -f1) | | `maintenance Version:` | v2.0.0 | | `maintenance Data` | dir: $DATA_DIR | | `maintenance Entries:` | $(cat "$DATA_DIR"/*.log 2>/dev/null | wc -l) total | | `maintenance Disk:` | $(du -sh "$DATA_DIR" 2>/dev/null | cut -f1) | | `maintenance Last:` | $(tail -1 "$DATA_DIR/history.log" 2>/dev/null || echo never) | | `maintenance Status:` | OK | | `maintenance [Maintenance]` | add: $input | | `maintenance Saved.` | Total add entries: $total | | `maintenance [Maintenance]` | inventory: $input | | `maintenance Saved.` | Total inventory entries: $total | | `maintenance [Maintenance]` | schedule: $input | | `maintenance Saved.` | Total schedule entries: $total | | `maintenance [Maintenance]` | remind: $input | | `maintenance Saved.` | Total remind entries: $total | | `maintenance [Maintenance]` | checklist: $input | | `maintenance Saved.` | Total checklist entries: $total | | `maintenance [Maintenance]` | usage: $input | | `maintenance Saved.` | Total usage entries: $total | | `maintenance [Maintenance]` | cost: $input | | `maintenance Saved.` | Total cost entries: $total | | `maintenance [Maintenance]` | maintain: $input | | `maintenance Saved.` | Total maintain entries: $total | | `maintenance [Maintenance]` | log: $input | | `maintenance Saved.` | Total log entries: $total | | `maintenance [Maintenance]` | report: $input | | `maintenance Saved.` | Total report entries: $total | | `maintenance [Maintenance]` | seasonal: $input | | `maintenance Saved.` | Total seasonal entries: $total | | `maintenance [Maintenance]` | tips: $input | | `maintenance Saved.` | Total tips entries: $total | ## Data Storage All data is stored locally at `~/.local/share/maintenance/`. Each action is logged with timestamps. Use `export` to back up your data anytime. ## Feedback Found a bug or have a suggestion? Let us know: https://bytesagain.com/feedback/ --- Powered by BytesAgain | bytesagain.com | [email protected] FILE:scripts/script.sh #!/usr/bin/env bash # Maintenance — home tool # Powered by BytesAgain | bytesagain.com | [email protected] set -euo pipefail DATA_DIR="HOME/.local/share/maintenance" mkdir -p "$DATA_DIR" _log() { echo "$(date '+%m-%d %H:%M') $1: $2" >> "$DATA_DIR/history.log"; } _version() { echo "maintenance v2.0.0"; } _help() { echo "Maintenance v2.0.0 — home toolkit" echo "" echo "Usage: maintenance <command> [args]" echo "" echo "Commands:" echo " add Add" echo " inventory Inventory" echo " schedule Schedule" echo " remind Remind" echo " checklist Checklist" echo " usage Usage" echo " cost Cost" echo " maintain Maintain" echo " log Log" echo " report Report" echo " seasonal Seasonal" echo " tips Tips" echo " stats Summary statistics" echo " export <fmt> Export (json|csv|txt)" echo " search <term> Search entries" echo " recent Recent activity" echo " status Health check" echo " help Show this help" echo " version Show version" echo "" echo "Data: $DATA_DIR" } _stats() { echo "=== Maintenance 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)" } _export() { local fmt="-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 "\n]" >> "$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 "=== Maintenance Export ===" > "$out" for f in "$DATA_DIR"/*.log; do [ -f "$f" ] || continue echo "--- $(basename "$f" .log) ---" >> "$out" cat "$f" >> "$out" done ;; *) echo "Formats: json, csv, txt"; return 1 ;; esac echo "Exported to $out ($(wc -c < "$out") bytes)" } _status() { echo "=== Maintenance 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)" echo " Last: $(tail -1 "$DATA_DIR/history.log" 2>/dev/null || echo never)" echo " Status: OK" } _search() { local term="?Usage: maintenance search <term>" echo "Searching for: $term" for f in "$DATA_DIR"/*.log; do [ -f "$f" ] || continue local m=$(grep -i "$term" "$f" 2>/dev/null || true) if [ -n "$m" ]; then echo " --- $(basename "$f" .log) ---" echo "$m" | sed 's/^/ /' fi done } _recent() { echo "=== Recent Activity ===" tail -20 "$DATA_DIR/history.log" 2>/dev/null | sed 's/^/ /' || echo " No activity yet." } case "-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: maintenance 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 " [Maintenance] add: $input" echo " Saved. Total add entries: $total" _log "add" "$input" fi ;; inventory) shift if [ $# -eq 0 ]; then echo "Recent inventory entries:" tail -20 "$DATA_DIR/inventory.log" 2>/dev/null || echo " No entries yet. Use: maintenance inventory <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/inventory.log" local total=$(wc -l < "$DATA_DIR/inventory.log") echo " [Maintenance] inventory: $input" echo " Saved. Total inventory entries: $total" _log "inventory" "$input" fi ;; schedule) shift if [ $# -eq 0 ]; then echo "Recent schedule entries:" tail -20 "$DATA_DIR/schedule.log" 2>/dev/null || echo " No entries yet. Use: maintenance schedule <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/schedule.log" local total=$(wc -l < "$DATA_DIR/schedule.log") echo " [Maintenance] schedule: $input" echo " Saved. Total schedule entries: $total" _log "schedule" "$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: maintenance 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 " [Maintenance] remind: $input" echo " Saved. Total remind entries: $total" _log "remind" "$input" fi ;; checklist) shift if [ $# -eq 0 ]; then echo "Recent checklist entries:" tail -20 "$DATA_DIR/checklist.log" 2>/dev/null || echo " No entries yet. Use: maintenance checklist <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/checklist.log" local total=$(wc -l < "$DATA_DIR/checklist.log") echo " [Maintenance] checklist: $input" echo " Saved. Total checklist entries: $total" _log "checklist" "$input" fi ;; usage) shift if [ $# -eq 0 ]; then echo "Recent usage entries:" tail -20 "$DATA_DIR/usage.log" 2>/dev/null || echo " No entries yet. Use: maintenance usage <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/usage.log" local total=$(wc -l < "$DATA_DIR/usage.log") echo " [Maintenance] usage: $input" echo " Saved. Total usage entries: $total" _log "usage" "$input" fi ;; cost) shift if [ $# -eq 0 ]; then echo "Recent cost entries:" tail -20 "$DATA_DIR/cost.log" 2>/dev/null || echo " No entries yet. Use: maintenance cost <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/cost.log" local total=$(wc -l < "$DATA_DIR/cost.log") echo " [Maintenance] cost: $input" echo " Saved. Total cost entries: $total" _log "cost" "$input" fi ;; maintain) shift if [ $# -eq 0 ]; then echo "Recent maintain entries:" tail -20 "$DATA_DIR/maintain.log" 2>/dev/null || echo " No entries yet. Use: maintenance maintain <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/maintain.log" local total=$(wc -l < "$DATA_DIR/maintain.log") echo " [Maintenance] maintain: $input" echo " Saved. Total maintain entries: $total" _log "maintain" "$input" fi ;; log) shift if [ $# -eq 0 ]; then echo "Recent log entries:" tail -20 "$DATA_DIR/log.log" 2>/dev/null || echo " No entries yet. Use: maintenance log <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/log.log" local total=$(wc -l < "$DATA_DIR/log.log") echo " [Maintenance] log: $input" echo " Saved. Total log entries: $total" _log "log" "$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: maintenance 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 " [Maintenance] report: $input" echo " Saved. Total report entries: $total" _log "report" "$input" fi ;; seasonal) shift if [ $# -eq 0 ]; then echo "Recent seasonal entries:" tail -20 "$DATA_DIR/seasonal.log" 2>/dev/null || echo " No entries yet. Use: maintenance seasonal <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/seasonal.log" local total=$(wc -l < "$DATA_DIR/seasonal.log") echo " [Maintenance] seasonal: $input" echo " Saved. Total seasonal entries: $total" _log "seasonal" "$input" fi ;; tips) shift if [ $# -eq 0 ]; then echo "Recent tips entries:" tail -20 "$DATA_DIR/tips.log" 2>/dev/null || echo " No entries yet. Use: maintenance tips <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/tips.log" local total=$(wc -l < "$DATA_DIR/tips.log") echo " [Maintenance] tips: $input" echo " Saved. Total tips entries: $total" _log "tips" "$input" fi ;; stats) _stats ;; export) shift; _export "$@" ;; search) shift; _search "$@" ;; recent) _recent ;; status) _status ;; help|--help|-h) _help ;; version|--version|-v) _version ;; *) echo "Unknown: $1 — run 'maintenance help'" exit 1 ;; esac
Organize pantry stock, expiry dates, and shopping lists. Use when adding items, checking inventory, scheduling restocks, setting expiry reminders.
--- name: "Pantry" description: "Organize pantry stock, expiry dates, and shopping lists. Use when adding items, checking inventory, scheduling restocks, setting expiry reminders." version: "2.0.0" author: "BytesAgain" homepage: https://bytesagain.com source: https://github.com/bytesagain/ai-skills tags: ["organize", "maintenance", "domestic", "pantry", "inventory"] --- # Pantry Pantry — a fast home management tool. Log anything, find it later, export when needed. ## Why Pantry? - Works entirely offline — your data never leaves your machine - Simple command-line interface, no GUI needed - Export to JSON, CSV, or plain text anytime - Automatic history and activity logging ## Getting Started ```bash # See what you can do pantry help # Check current status pantry status # View your statistics pantry stats ``` ## Commands | Command | What it does | |---------|-------------| | `pantry add` | Add | | `pantry inventory` | Inventory | | `pantry schedule` | Schedule | | `pantry remind` | Remind | | `pantry checklist` | Checklist | | `pantry usage` | Usage | | `pantry cost` | Cost | | `pantry maintain` | Maintain | | `pantry log` | Log | | `pantry report` | Report | | `pantry seasonal` | Seasonal | | `pantry tips` | Tips | | `pantry stats` | Summary statistics | | `pantry export` | <fmt> Export (json|csv|txt) | | `pantry search` | <term> Search entries | | `pantry recent` | Recent activity | | `pantry status` | Health check | | `pantry help` | Show this help | | `pantry version` | Show version | | `pantry $name:` | $c entries | | `pantry Total:` | $total entries | | `pantry Data` | size: $(du -sh "$DATA_DIR" 2>/dev/null | cut -f1) | | `pantry Version:` | v2.0.0 | | `pantry Data` | dir: $DATA_DIR | | `pantry Entries:` | $(cat "$DATA_DIR"/*.log 2>/dev/null | wc -l) total | | `pantry Disk:` | $(du -sh "$DATA_DIR" 2>/dev/null | cut -f1) | | `pantry Last:` | $(tail -1 "$DATA_DIR/history.log" 2>/dev/null || echo never) | | `pantry Status:` | OK | | `pantry [Pantry]` | add: $input | | `pantry Saved.` | Total add entries: $total | | `pantry [Pantry]` | inventory: $input | | `pantry Saved.` | Total inventory entries: $total | | `pantry [Pantry]` | schedule: $input | | `pantry Saved.` | Total schedule entries: $total | | `pantry [Pantry]` | remind: $input | | `pantry Saved.` | Total remind entries: $total | | `pantry [Pantry]` | checklist: $input | | `pantry Saved.` | Total checklist entries: $total | | `pantry [Pantry]` | usage: $input | | `pantry Saved.` | Total usage entries: $total | | `pantry [Pantry]` | cost: $input | | `pantry Saved.` | Total cost entries: $total | | `pantry [Pantry]` | maintain: $input | | `pantry Saved.` | Total maintain entries: $total | | `pantry [Pantry]` | log: $input | | `pantry Saved.` | Total log entries: $total | | `pantry [Pantry]` | report: $input | | `pantry Saved.` | Total report entries: $total | | `pantry [Pantry]` | seasonal: $input | | `pantry Saved.` | Total seasonal entries: $total | | `pantry [Pantry]` | tips: $input | | `pantry Saved.` | Total tips entries: $total | ## Data Storage All data is stored locally at `~/.local/share/pantry/`. Each action is logged with timestamps. Use `export` to back up your data anytime. ## Feedback Found a bug or have a suggestion? Let us know: https://bytesagain.com/feedback/ --- Powered by BytesAgain | bytesagain.com | [email protected] FILE:scripts/script.sh #!/usr/bin/env bash # Pantry — home tool # Powered by BytesAgain | bytesagain.com | [email protected] set -euo pipefail DATA_DIR="HOME/.local/share/pantry" mkdir -p "$DATA_DIR" _log() { echo "$(date '+%m-%d %H:%M') $1: $2" >> "$DATA_DIR/history.log"; } _version() { echo "pantry v2.0.0"; } _help() { echo "Pantry v2.0.0 — home toolkit" echo "" echo "Usage: pantry <command> [args]" echo "" echo "Commands:" echo " add Add" echo " inventory Inventory" echo " schedule Schedule" echo " remind Remind" echo " checklist Checklist" echo " usage Usage" echo " cost Cost" echo " maintain Maintain" echo " log Log" echo " report Report" echo " seasonal Seasonal" echo " tips Tips" echo " stats Summary statistics" echo " export <fmt> Export (json|csv|txt)" echo " search <term> Search entries" echo " recent Recent activity" echo " status Health check" echo " help Show this help" echo " version Show version" echo "" echo "Data: $DATA_DIR" } _stats() { echo "=== Pantry 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)" } _export() { local fmt="-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 "\n]" >> "$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 "=== Pantry Export ===" > "$out" for f in "$DATA_DIR"/*.log; do [ -f "$f" ] || continue echo "--- $(basename "$f" .log) ---" >> "$out" cat "$f" >> "$out" done ;; *) echo "Formats: json, csv, txt"; return 1 ;; esac echo "Exported to $out ($(wc -c < "$out") bytes)" } _status() { echo "=== Pantry 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)" echo " Last: $(tail -1 "$DATA_DIR/history.log" 2>/dev/null || echo never)" echo " Status: OK" } _search() { local term="?Usage: pantry search <term>" echo "Searching for: $term" for f in "$DATA_DIR"/*.log; do [ -f "$f" ] || continue local m=$(grep -i "$term" "$f" 2>/dev/null || true) if [ -n "$m" ]; then echo " --- $(basename "$f" .log) ---" echo "$m" | sed 's/^/ /' fi done } _recent() { echo "=== Recent Activity ===" tail -20 "$DATA_DIR/history.log" 2>/dev/null | sed 's/^/ /' || echo " No activity yet." } case "-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: pantry 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 " [Pantry] add: $input" echo " Saved. Total add entries: $total" _log "add" "$input" fi ;; inventory) shift if [ $# -eq 0 ]; then echo "Recent inventory entries:" tail -20 "$DATA_DIR/inventory.log" 2>/dev/null || echo " No entries yet. Use: pantry inventory <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/inventory.log" local total=$(wc -l < "$DATA_DIR/inventory.log") echo " [Pantry] inventory: $input" echo " Saved. Total inventory entries: $total" _log "inventory" "$input" fi ;; schedule) shift if [ $# -eq 0 ]; then echo "Recent schedule entries:" tail -20 "$DATA_DIR/schedule.log" 2>/dev/null || echo " No entries yet. Use: pantry schedule <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/schedule.log" local total=$(wc -l < "$DATA_DIR/schedule.log") echo " [Pantry] schedule: $input" echo " Saved. Total schedule entries: $total" _log "schedule" "$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: pantry 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 " [Pantry] remind: $input" echo " Saved. Total remind entries: $total" _log "remind" "$input" fi ;; checklist) shift if [ $# -eq 0 ]; then echo "Recent checklist entries:" tail -20 "$DATA_DIR/checklist.log" 2>/dev/null || echo " No entries yet. Use: pantry checklist <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/checklist.log" local total=$(wc -l < "$DATA_DIR/checklist.log") echo " [Pantry] checklist: $input" echo " Saved. Total checklist entries: $total" _log "checklist" "$input" fi ;; usage) shift if [ $# -eq 0 ]; then echo "Recent usage entries:" tail -20 "$DATA_DIR/usage.log" 2>/dev/null || echo " No entries yet. Use: pantry usage <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/usage.log" local total=$(wc -l < "$DATA_DIR/usage.log") echo " [Pantry] usage: $input" echo " Saved. Total usage entries: $total" _log "usage" "$input" fi ;; cost) shift if [ $# -eq 0 ]; then echo "Recent cost entries:" tail -20 "$DATA_DIR/cost.log" 2>/dev/null || echo " No entries yet. Use: pantry cost <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/cost.log" local total=$(wc -l < "$DATA_DIR/cost.log") echo " [Pantry] cost: $input" echo " Saved. Total cost entries: $total" _log "cost" "$input" fi ;; maintain) shift if [ $# -eq 0 ]; then echo "Recent maintain entries:" tail -20 "$DATA_DIR/maintain.log" 2>/dev/null || echo " No entries yet. Use: pantry maintain <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/maintain.log" local total=$(wc -l < "$DATA_DIR/maintain.log") echo " [Pantry] maintain: $input" echo " Saved. Total maintain entries: $total" _log "maintain" "$input" fi ;; log) shift if [ $# -eq 0 ]; then echo "Recent log entries:" tail -20 "$DATA_DIR/log.log" 2>/dev/null || echo " No entries yet. Use: pantry log <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/log.log" local total=$(wc -l < "$DATA_DIR/log.log") echo " [Pantry] log: $input" echo " Saved. Total log entries: $total" _log "log" "$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: pantry 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 " [Pantry] report: $input" echo " Saved. Total report entries: $total" _log "report" "$input" fi ;; seasonal) shift if [ $# -eq 0 ]; then echo "Recent seasonal entries:" tail -20 "$DATA_DIR/seasonal.log" 2>/dev/null || echo " No entries yet. Use: pantry seasonal <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/seasonal.log" local total=$(wc -l < "$DATA_DIR/seasonal.log") echo " [Pantry] seasonal: $input" echo " Saved. Total seasonal entries: $total" _log "seasonal" "$input" fi ;; tips) shift if [ $# -eq 0 ]; then echo "Recent tips entries:" tail -20 "$DATA_DIR/tips.log" 2>/dev/null || echo " No entries yet. Use: pantry tips <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/tips.log" local total=$(wc -l < "$DATA_DIR/tips.log") echo " [Pantry] tips: $input" echo " Saved. Total tips entries: $total" _log "tips" "$input" fi ;; stats) _stats ;; export) shift; _export "$@" ;; search) shift; _search "$@" ;; recent) _recent ;; status) _status ;; help|--help|-h) _help ;; version|--version|-v) _version ;; *) echo "Unknown: $1 — run 'pantry help'" exit 1 ;; esac
Log health symptoms, track patterns, and chart trends. Use when logging symptoms, tracking frequency, charting trends, reviewing patterns.
--- name: "Symptom" description: "Log health symptoms, track patterns, and chart trends. Use when logging symptoms, tracking frequency, charting trends, reviewing patterns." version: "2.0.0" author: "BytesAgain" homepage: https://bytesagain.com source: https://github.com/bytesagain/ai-skills tags: ["fitness", "tracking", "daily", "self-care", "symptom"] --- # Symptom Symptom — a fast health & wellness tool. Log anything, find it later, export when needed. ## Why Symptom? - Works entirely offline — your data never leaves your machine - Simple command-line interface, no GUI needed - Export to JSON, CSV, or plain text anytime - Automatic history and activity logging ## Getting Started ```bash # See what you can do symptom help # Check current status symptom status # View your statistics symptom stats ``` ## Commands | Command | What it does | |---------|-------------| | `symptom log` | Log | | `symptom track` | Track | | `symptom chart` | Chart | | `symptom goal` | Goal | | `symptom remind` | Remind | | `symptom weekly` | Weekly | | `symptom monthly` | Monthly | | `symptom compare` | Compare | | `symptom export` | Export | | `symptom streak` | Streak | | `symptom milestone` | Milestone | | `symptom trend` | Trend | | `symptom stats` | Summary statistics | | `symptom export` | <fmt> Export (json|csv|txt) | | `symptom search` | <term> Search entries | | `symptom recent` | Recent activity | | `symptom status` | Health check | | `symptom help` | Show this help | | `symptom version` | Show version | | `symptom $name:` | $c entries | | `symptom Total:` | $total entries | | `symptom Data` | size: $(du -sh "$DATA_DIR" 2>/dev/null | cut -f1) | | `symptom Version:` | v2.0.0 | | `symptom Data` | dir: $DATA_DIR | | `symptom Entries:` | $(cat "$DATA_DIR"/*.log 2>/dev/null | wc -l) total | | `symptom Disk:` | $(du -sh "$DATA_DIR" 2>/dev/null | cut -f1) | | `symptom Last:` | $(tail -1 "$DATA_DIR/history.log" 2>/dev/null || echo never) | | `symptom Status:` | OK | | `symptom [Symptom]` | log: $input | | `symptom Saved.` | Total log entries: $total | | `symptom [Symptom]` | track: $input | | `symptom Saved.` | Total track entries: $total | | `symptom [Symptom]` | chart: $input | | `symptom Saved.` | Total chart entries: $total | | `symptom [Symptom]` | goal: $input | | `symptom Saved.` | Total goal entries: $total | | `symptom [Symptom]` | remind: $input | | `symptom Saved.` | Total remind entries: $total | | `symptom [Symptom]` | weekly: $input | | `symptom Saved.` | Total weekly entries: $total | | `symptom [Symptom]` | monthly: $input | | `symptom Saved.` | Total monthly entries: $total | | `symptom [Symptom]` | compare: $input | | `symptom Saved.` | Total compare entries: $total | | `symptom [Symptom]` | export: $input | | `symptom Saved.` | Total export entries: $total | | `symptom [Symptom]` | streak: $input | | `symptom Saved.` | Total streak entries: $total | | `symptom [Symptom]` | milestone: $input | | `symptom Saved.` | Total milestone entries: $total | | `symptom [Symptom]` | trend: $input | | `symptom Saved.` | Total trend entries: $total | ## Data Storage All data is stored locally at `~/.local/share/symptom/`. Each action is logged with timestamps. Use `export` to back up your data anytime. ## Feedback Found a bug or have a suggestion? Let us know: https://bytesagain.com/feedback/ --- Powered by BytesAgain | bytesagain.com | [email protected] FILE:scripts/script.sh #!/usr/bin/env bash # Symptom — health tool # Powered by BytesAgain | bytesagain.com | [email protected] set -euo pipefail DATA_DIR="HOME/.local/share/symptom" mkdir -p "$DATA_DIR" _log() { echo "$(date '+%m-%d %H:%M') $1: $2" >> "$DATA_DIR/history.log"; } _version() { echo "symptom v2.0.0"; } _help() { echo "Symptom v2.0.0 — health toolkit" echo "" echo "Usage: symptom <command> [args]" echo "" echo "Commands:" echo " log Log" echo " track Track" echo " chart Chart" echo " goal Goal" echo " remind Remind" echo " weekly Weekly" echo " monthly Monthly" echo " compare Compare" echo " export Export" echo " streak Streak" echo " milestone Milestone" echo " trend Trend" echo " stats Summary statistics" echo " export <fmt> Export (json|csv|txt)" echo " search <term> Search entries" echo " recent Recent activity" echo " status Health check" echo " help Show this help" echo " version Show version" echo "" echo "Data: $DATA_DIR" } _stats() { echo "=== Symptom 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)" } _export() { local fmt="-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 "\n]" >> "$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 "=== Symptom Export ===" > "$out" for f in "$DATA_DIR"/*.log; do [ -f "$f" ] || continue echo "--- $(basename "$f" .log) ---" >> "$out" cat "$f" >> "$out" done ;; *) echo "Formats: json, csv, txt"; return 1 ;; esac echo "Exported to $out ($(wc -c < "$out") bytes)" } _status() { echo "=== Symptom 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)" echo " Last: $(tail -1 "$DATA_DIR/history.log" 2>/dev/null || echo never)" echo " Status: OK" } _search() { local term="?Usage: symptom search <term>" echo "Searching for: $term" for f in "$DATA_DIR"/*.log; do [ -f "$f" ] || continue local m=$(grep -i "$term" "$f" 2>/dev/null || true) if [ -n "$m" ]; then echo " --- $(basename "$f" .log) ---" echo "$m" | sed 's/^/ /' fi done } _recent() { echo "=== Recent Activity ===" tail -20 "$DATA_DIR/history.log" 2>/dev/null | sed 's/^/ /' || echo " No activity yet." } case "-help" in log) shift if [ $# -eq 0 ]; then echo "Recent log entries:" tail -20 "$DATA_DIR/log.log" 2>/dev/null || echo " No entries yet. Use: symptom log <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/log.log" local total=$(wc -l < "$DATA_DIR/log.log") echo " [Symptom] log: $input" echo " Saved. Total log entries: $total" _log "log" "$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: symptom 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 " [Symptom] track: $input" echo " Saved. Total track entries: $total" _log "track" "$input" fi ;; chart) shift if [ $# -eq 0 ]; then echo "Recent chart entries:" tail -20 "$DATA_DIR/chart.log" 2>/dev/null || echo " No entries yet. Use: symptom chart <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/chart.log" local total=$(wc -l < "$DATA_DIR/chart.log") echo " [Symptom] chart: $input" echo " Saved. Total chart entries: $total" _log "chart" "$input" fi ;; goal) shift if [ $# -eq 0 ]; then echo "Recent goal entries:" tail -20 "$DATA_DIR/goal.log" 2>/dev/null || echo " No entries yet. Use: symptom goal <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/goal.log" local total=$(wc -l < "$DATA_DIR/goal.log") echo " [Symptom] goal: $input" echo " Saved. Total goal entries: $total" _log "goal" "$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: symptom 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 " [Symptom] remind: $input" echo " Saved. Total remind entries: $total" _log "remind" "$input" fi ;; weekly) shift if [ $# -eq 0 ]; then echo "Recent weekly entries:" tail -20 "$DATA_DIR/weekly.log" 2>/dev/null || echo " No entries yet. Use: symptom weekly <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/weekly.log" local total=$(wc -l < "$DATA_DIR/weekly.log") echo " [Symptom] weekly: $input" echo " Saved. Total weekly entries: $total" _log "weekly" "$input" fi ;; monthly) shift if [ $# -eq 0 ]; then echo "Recent monthly entries:" tail -20 "$DATA_DIR/monthly.log" 2>/dev/null || echo " No entries yet. Use: symptom monthly <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/monthly.log" local total=$(wc -l < "$DATA_DIR/monthly.log") echo " [Symptom] monthly: $input" echo " Saved. Total monthly entries: $total" _log "monthly" "$input" fi ;; compare) shift if [ $# -eq 0 ]; then echo "Recent compare entries:" tail -20 "$DATA_DIR/compare.log" 2>/dev/null || echo " No entries yet. Use: symptom compare <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/compare.log" local total=$(wc -l < "$DATA_DIR/compare.log") echo " [Symptom] compare: $input" echo " Saved. Total compare entries: $total" _log "compare" "$input" fi ;; export) shift if [ $# -eq 0 ]; then echo "Recent export entries:" tail -20 "$DATA_DIR/export.log" 2>/dev/null || echo " No entries yet. Use: symptom export <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/export.log" local total=$(wc -l < "$DATA_DIR/export.log") echo " [Symptom] export: $input" echo " Saved. Total export entries: $total" _log "export" "$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: symptom 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 " [Symptom] streak: $input" echo " Saved. Total streak entries: $total" _log "streak" "$input" fi ;; milestone) shift if [ $# -eq 0 ]; then echo "Recent milestone entries:" tail -20 "$DATA_DIR/milestone.log" 2>/dev/null || echo " No entries yet. Use: symptom milestone <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/milestone.log" local total=$(wc -l < "$DATA_DIR/milestone.log") echo " [Symptom] milestone: $input" echo " Saved. Total milestone entries: $total" _log "milestone" "$input" fi ;; trend) shift if [ $# -eq 0 ]; then echo "Recent trend entries:" tail -20 "$DATA_DIR/trend.log" 2>/dev/null || echo " No entries yet. Use: symptom trend <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/trend.log" local total=$(wc -l < "$DATA_DIR/trend.log") echo " [Symptom] trend: $input" echo " Saved. Total trend entries: $total" _log "trend" "$input" fi ;; stats) _stats ;; export) shift; _export "$@" ;; search) shift; _search "$@" ;; recent) _recent ;; status) _status ;; help|--help|-h) _help ;; version|--version|-v) _version ;; *) echo "Unknown: $1 — run 'symptom help'" exit 1 ;; esac
Record scores, rank players, and analyze game stats with terminal leaderboards. Use when tracking scores, ranking competitors, reviewing performance.
--- name: "Leaderboard" description: "Record scores, rank players, and analyze game stats with terminal leaderboards. Use when tracking scores, ranking competitors, reviewing performance." version: "2.0.0" author: "BytesAgain" homepage: https://bytesagain.com source: https://github.com/bytesagain/ai-skills tags: ["scores", "tabletop", "gaming", "fun", "leaderboard"] --- # Leaderboard Leaderboard makes gaming & entertainment simple. Record, search, and analyze your data with clear terminal output. ## Why Leaderboard? - Works entirely offline — your data never leaves your machine - Simple command-line interface, no GUI needed - Export to JSON, CSV, or plain text anytime - Automatic history and activity logging ## Getting Started ```bash # See what you can do leaderboard help # Check current status leaderboard status # View your statistics leaderboard stats ``` ## Commands | Command | What it does | |---------|-------------| | `leaderboard roll` | Roll | | `leaderboard score` | Score | | `leaderboard rank` | Rank | | `leaderboard history` | History | | `leaderboard stats` | Stats | | `leaderboard challenge` | Challenge | | `leaderboard create` | Create | | `leaderboard join` | Join | | `leaderboard track` | Track | | `leaderboard leaderboard` | Leaderboard | | `leaderboard reward` | Reward | | `leaderboard reset` | Reset | | `leaderboard stats` | Summary statistics | | `leaderboard export` | <fmt> Export (json|csv|txt) | | `leaderboard search` | <term> Search entries | | `leaderboard recent` | Recent activity | | `leaderboard status` | Health check | | `leaderboard help` | Show this help | | `leaderboard version` | Show version | | `leaderboard $name:` | $c entries | | `leaderboard Total:` | $total entries | | `leaderboard Data` | size: $(du -sh "$DATA_DIR" 2>/dev/null | cut -f1) | | `leaderboard Version:` | v2.0.0 | | `leaderboard Data` | dir: $DATA_DIR | | `leaderboard Entries:` | $(cat "$DATA_DIR"/*.log 2>/dev/null | wc -l) total | | `leaderboard Disk:` | $(du -sh "$DATA_DIR" 2>/dev/null | cut -f1) | | `leaderboard Last:` | $(tail -1 "$DATA_DIR/history.log" 2>/dev/null || echo never) | | `leaderboard Status:` | OK | | `leaderboard [Leaderboard]` | roll: $input | | `leaderboard Saved.` | Total roll entries: $total | | `leaderboard [Leaderboard]` | score: $input | | `leaderboard Saved.` | Total score entries: $total | | `leaderboard [Leaderboard]` | rank: $input | | `leaderboard Saved.` | Total rank entries: $total | | `leaderboard [Leaderboard]` | history: $input | | `leaderboard Saved.` | Total history entries: $total | | `leaderboard [Leaderboard]` | stats: $input | | `leaderboard Saved.` | Total stats entries: $total | | `leaderboard [Leaderboard]` | challenge: $input | | `leaderboard Saved.` | Total challenge entries: $total | | `leaderboard [Leaderboard]` | create: $input | | `leaderboard Saved.` | Total create entries: $total | | `leaderboard [Leaderboard]` | join: $input | | `leaderboard Saved.` | Total join entries: $total | | `leaderboard [Leaderboard]` | track: $input | | `leaderboard Saved.` | Total track entries: $total | | `leaderboard [Leaderboard]` | leaderboard: $input | | `leaderboard Saved.` | Total leaderboard entries: $total | | `leaderboard [Leaderboard]` | reward: $input | | `leaderboard Saved.` | Total reward entries: $total | | `leaderboard [Leaderboard]` | reset: $input | | `leaderboard Saved.` | Total reset entries: $total | ## Data Storage All data is stored locally at `~/.local/share/leaderboard/`. Each action is logged with timestamps. Use `export` to back up your data anytime. ## Feedback Found a bug or have a suggestion? Let us know: https://bytesagain.com/feedback/ --- Powered by BytesAgain | bytesagain.com | [email protected] FILE:scripts/script.sh #!/usr/bin/env bash # Leaderboard — gaming tool # Powered by BytesAgain | bytesagain.com | [email protected] set -euo pipefail DATA_DIR="HOME/.local/share/leaderboard" mkdir -p "$DATA_DIR" _log() { echo "$(date '+%m-%d %H:%M') $1: $2" >> "$DATA_DIR/history.log"; } _version() { echo "leaderboard v2.0.0"; } _help() { echo "Leaderboard v2.0.0 — gaming toolkit" echo "" echo "Usage: leaderboard <command> [args]" echo "" echo "Commands:" echo " roll Roll" echo " score Score" echo " rank Rank" echo " history History" echo " stats Stats" echo " challenge Challenge" echo " create Create" echo " join Join" echo " track Track" echo " leaderboard Leaderboard" echo " reward Reward" echo " reset Reset" echo " stats Summary statistics" echo " export <fmt> Export (json|csv|txt)" echo " search <term> Search entries" echo " recent Recent activity" echo " status Health check" echo " help Show this help" echo " version Show version" echo "" echo "Data: $DATA_DIR" } _stats() { echo "=== Leaderboard 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)" } _export() { local fmt="-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 "\n]" >> "$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 "=== Leaderboard Export ===" > "$out" for f in "$DATA_DIR"/*.log; do [ -f "$f" ] || continue echo "--- $(basename "$f" .log) ---" >> "$out" cat "$f" >> "$out" done ;; *) echo "Formats: json, csv, txt"; return 1 ;; esac echo "Exported to $out ($(wc -c < "$out") bytes)" } _status() { echo "=== Leaderboard 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)" echo " Last: $(tail -1 "$DATA_DIR/history.log" 2>/dev/null || echo never)" echo " Status: OK" } _search() { local term="?Usage: leaderboard search <term>" echo "Searching for: $term" for f in "$DATA_DIR"/*.log; do [ -f "$f" ] || continue local m=$(grep -i "$term" "$f" 2>/dev/null || true) if [ -n "$m" ]; then echo " --- $(basename "$f" .log) ---" echo "$m" | sed 's/^/ /' fi done } _recent() { echo "=== Recent Activity ===" tail -20 "$DATA_DIR/history.log" 2>/dev/null | sed 's/^/ /' || echo " No activity yet." } case "-help" in roll) shift if [ $# -eq 0 ]; then echo "Recent roll entries:" tail -20 "$DATA_DIR/roll.log" 2>/dev/null || echo " No entries yet. Use: leaderboard roll <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/roll.log" local total=$(wc -l < "$DATA_DIR/roll.log") echo " [Leaderboard] roll: $input" echo " Saved. Total roll entries: $total" _log "roll" "$input" fi ;; score) shift if [ $# -eq 0 ]; then echo "Recent score entries:" tail -20 "$DATA_DIR/score.log" 2>/dev/null || echo " No entries yet. Use: leaderboard score <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/score.log" local total=$(wc -l < "$DATA_DIR/score.log") echo " [Leaderboard] score: $input" echo " Saved. Total score entries: $total" _log "score" "$input" fi ;; rank) shift if [ $# -eq 0 ]; then echo "Recent rank entries:" tail -20 "$DATA_DIR/rank.log" 2>/dev/null || echo " No entries yet. Use: leaderboard rank <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/rank.log" local total=$(wc -l < "$DATA_DIR/rank.log") echo " [Leaderboard] rank: $input" echo " Saved. Total rank entries: $total" _log "rank" "$input" fi ;; history) shift if [ $# -eq 0 ]; then echo "Recent history entries:" tail -20 "$DATA_DIR/history.log" 2>/dev/null || echo " No entries yet. Use: leaderboard history <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/history.log" local total=$(wc -l < "$DATA_DIR/history.log") echo " [Leaderboard] history: $input" echo " Saved. Total history entries: $total" _log "history" "$input" fi ;; stats) shift if [ $# -eq 0 ]; then echo "Recent stats entries:" tail -20 "$DATA_DIR/stats.log" 2>/dev/null || echo " No entries yet. Use: leaderboard stats <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/stats.log" local total=$(wc -l < "$DATA_DIR/stats.log") echo " [Leaderboard] stats: $input" echo " Saved. Total stats entries: $total" _log "stats" "$input" fi ;; challenge) shift if [ $# -eq 0 ]; then echo "Recent challenge entries:" tail -20 "$DATA_DIR/challenge.log" 2>/dev/null || echo " No entries yet. Use: leaderboard challenge <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/challenge.log" local total=$(wc -l < "$DATA_DIR/challenge.log") echo " [Leaderboard] challenge: $input" echo " Saved. Total challenge entries: $total" _log "challenge" "$input" fi ;; create) shift if [ $# -eq 0 ]; then echo "Recent create entries:" tail -20 "$DATA_DIR/create.log" 2>/dev/null || echo " No entries yet. Use: leaderboard create <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/create.log" local total=$(wc -l < "$DATA_DIR/create.log") echo " [Leaderboard] create: $input" echo " Saved. Total create entries: $total" _log "create" "$input" fi ;; join) shift if [ $# -eq 0 ]; then echo "Recent join entries:" tail -20 "$DATA_DIR/join.log" 2>/dev/null || echo " No entries yet. Use: leaderboard join <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/join.log" local total=$(wc -l < "$DATA_DIR/join.log") echo " [Leaderboard] join: $input" echo " Saved. Total join entries: $total" _log "join" "$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: leaderboard 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 " [Leaderboard] track: $input" echo " Saved. Total track entries: $total" _log "track" "$input" fi ;; leaderboard) shift if [ $# -eq 0 ]; then echo "Recent leaderboard entries:" tail -20 "$DATA_DIR/leaderboard.log" 2>/dev/null || echo " No entries yet. Use: leaderboard leaderboard <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/leaderboard.log" local total=$(wc -l < "$DATA_DIR/leaderboard.log") echo " [Leaderboard] leaderboard: $input" echo " Saved. Total leaderboard entries: $total" _log "leaderboard" "$input" fi ;; reward) shift if [ $# -eq 0 ]; then echo "Recent reward entries:" tail -20 "$DATA_DIR/reward.log" 2>/dev/null || echo " No entries yet. Use: leaderboard reward <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/reward.log" local total=$(wc -l < "$DATA_DIR/reward.log") echo " [Leaderboard] reward: $input" echo " Saved. Total reward entries: $total" _log "reward" "$input" fi ;; reset) shift if [ $# -eq 0 ]; then echo "Recent reset entries:" tail -20 "$DATA_DIR/reset.log" 2>/dev/null || echo " No entries yet. Use: leaderboard reset <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/reset.log" local total=$(wc -l < "$DATA_DIR/reset.log") echo " [Leaderboard] reset: $input" echo " Saved. Total reset entries: $total" _log "reset" "$input" fi ;; stats) _stats ;; export) shift; _export "$@" ;; search) shift; _search "$@" ;; recent) _recent ;; status) _status ;; help|--help|-h) _help ;; version|--version|-v) _version ;; *) echo "Unknown: $1 — run 'leaderboard help'" exit 1 ;; esac
Create, lint, template, and package Kubernetes Helm charts with checks. Use when scaffolding charts, linting templates, or packaging chart releases.
--- name: helm version: "3.0.1" author: BytesAgain homepage: https://bytesagain.com source: https://github.com/bytesagain/ai-skills license: MIT-0 tags: [helm, tool, utility] description: "Create, lint, template, and package Kubernetes Helm charts with checks. Use when scaffolding charts, linting templates, or packaging chart releases." --- # helm Create, lint, template, and package Kubernetes Helm charts with checks. Use when scaffolding charts, linting templates, or packaging chart releases. ## Commands ### `KUBECONFIG` Path to kubeconfig file ```bash scripts/script.sh KUBECONFIG ``` ### `create` Create a new chart scaffold ```bash scripts/script.sh create <chart> ``` ### `lint` Lint a chart for issues ```bash scripts/script.sh lint <chart> ``` ### `template` Render templates locally (--set key=val, --values file) ```bash scripts/script.sh template <chart> [opts] ``` ### `list` List installed releases ```bash scripts/script.sh list [namespace] ``` ### `status` Show release status and notes ```bash scripts/script.sh status <release> ``` ### `values` Show values (source: chart|deployed) ```bash scripts/script.sh values <chart> [source] ``` ### `repo-add` Add a chart repository ```bash scripts/script.sh repo-add <name> <url> ``` ### `repo-list` List configured repositories ```bash scripts/script.sh repo-list ``` ### `repo-update` Update all repository indexes ```bash scripts/script.sh repo-update ``` ### `search` Search repos and Artifact Hub ```bash scripts/script.sh search <keyword> ``` ### `package` Package chart into .tgz ```bash scripts/script.sh package <chart> [opts] ``` ### `history` Show release revision history ```bash scripts/script.sh history <release> ``` ### `rollback` Rollback to a previous revision ```bash scripts/script.sh rollback <release> [rev] ``` ### `diff` Compare chart with deployed release ```bash scripts/script.sh diff <chart> <release> ``` ## Requirements - helm - curl --- *Powered by BytesAgain | bytesagain.com | [email protected]* FILE:scripts/script.sh #!/usr/bin/env bash ############################################################################### # Helm Chart Helper # A comprehensive Helm chart management tool for Kubernetes deployments. # # Powered by BytesAgain | bytesagain.com | [email protected] # # Requirements: helm (v3+) # # Usage: script.sh <command> [arguments...] # # Commands: # create <chart> Create a new Helm chart scaffold # lint <chart> Lint a chart for issues # template <chart> [args] Render chart templates locally # list [namespace] List installed releases # status <release> Show release status # values <chart> Show chart default values # repo-add <name> <url> Add a Helm repository # repo-list List configured repositories # repo-update Update all repositories # search <keyword> Search for charts # package <chart> Package a chart for distribution # history <release> Show release history # rollback <release> [rev] Rollback a release # diff <chart> <release> Show diff between chart and deployed release # help Show this help message ############################################################################### set -euo pipefail SCRIPT_NAME="$(basename "$0")" DATA_DIR="HOME/.local/share/helm-helper" CHARTS_DIR="DATA_DIR/charts" PACKAGES_DIR="DATA_DIR/packages" LOG_FILE="DATA_DIR/helm-helper.log" # Helm defaults HELM_NAMESPACE="-default" HELM_KUBECONFIG="-" BRAND="Powered by BytesAgain | bytesagain.com | [email protected]" # Colors RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' CYAN='\033[0;36m' BOLD='\033[1m' NC='\033[0m' ############################################################################### # Utility functions ############################################################################### _init() { mkdir -p "$DATA_DIR" "$CHARTS_DIR" "$PACKAGES_DIR" touch "$LOG_FILE" } _log() { local ts ts="$(date '+%Y-%m-%d %H:%M:%S')" echo "[$ts] $*" >> "$LOG_FILE" } _info() { echo -e "GREEN[✓]NC $*"; } _warn() { echo -e "YELLOW[!]NC $*"; } _error() { echo -e "RED[✗]NC $*" >&2; } _header(){ echo -e "BOLDCYAN═══ $* ═══NC"; } _check_helm() { if ! command -v helm &>/dev/null; then _error "helm is not installed or not in PATH." echo "" echo "Install Helm v3:" echo " curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash" echo "" echo " Or via package manager:" echo " macOS: brew install helm" echo " Snap: sudo snap install helm --classic" echo " Chocolatey: choco install kubernetes-helm" echo " apt (Debian): sudo apt-get install helm" echo "" echo " More: https://helm.sh/docs/intro/install/" exit 1 fi # Verify version is v3+ local version version="$(helm version --short 2>/dev/null | head -1)" if [[ "$version" == v2* ]]; then _error "Helm v2 detected ($version). This tool requires Helm v3+." exit 1 fi } _helm() { local args=() if [[ -n "$HELM_NAMESPACE" ]]; then args+=(--namespace "$HELM_NAMESPACE") fi if [[ -n "$HELM_KUBECONFIG" ]]; then args+=(--kubeconfig "$HELM_KUBECONFIG") fi helm "args[@]" "$@" } _helm_global() { local args=() if [[ -n "$HELM_KUBECONFIG" ]]; then args+=(--kubeconfig "$HELM_KUBECONFIG") fi helm "args[@]" "$@" } _resolve_chart_path() { local chart="$1" # If it's a path that exists, use it directly if [[ -d "$chart" ]]; then echo "$chart" return 0 fi # Check in charts dir if [[ -d "CHARTS_DIR/chart" ]]; then echo "CHARTS_DIR/chart" return 0 fi # Check current directory if [[ -d "./chart" ]]; then echo "./chart" return 0 fi # Return as-is (might be a repo reference like stable/nginx) echo "$chart" } ############################################################################### # Command implementations ############################################################################### cmd_create() { local chart="?Usage: $SCRIPT_NAME create <chart-name>" _header "Create Helm Chart" local chart_path="CHARTS_DIR/chart" if [[ -d "$chart_path" ]]; then _warn "Chart directory already exists: $chart_path" read -rp "Overwrite? (y/N): " confirm if [[ "$confirm" != "y" && "$confirm" != "Y" ]]; then _warn "Aborted." return 0 fi rm -rf "$chart_path" fi helm create "$chart_path" 2>&1 || { _error "Failed to create chart" return 1 } _info "Chart created at: $chart_path" echo "" echo -e "BOLDStructure:NC" if command -v tree &>/dev/null; then tree "$chart_path" --charset=utf-8 2>/dev/null || find "$chart_path" -type f | sort | sed "s|chart_path/| |" else find "$chart_path" -type f | sort | sed "s|chart_path/| |" fi echo "" # Show Chart.yaml content echo -e "BOLDChart.yaml:NC" cat "chart_path/Chart.yaml" | sed 's/^/ /' _log "CREATE: chart=$chart path=$chart_path" } cmd_lint() { local chart="?Usage: $SCRIPT_NAME lint <chart>" shift local extra_args=("$@") local chart_path chart_path="$(_resolve_chart_path "$chart")" _header "Lint Chart: $chart" echo -e "BLUEPath:NC $chart_path" echo "" local output exit_code=0 output="$(helm lint "$chart_path" "extra_args[@]" 2>&1)" || exit_code=$? echo "$output" echo "" if [[ $exit_code -eq 0 ]]; then _info "Lint passed — no issues found" # Also do a dry-run template to catch rendering errors echo "" echo -e "BOLDTemplate dry-run check:NC" if helm template "$chart_path" &>/dev/null; then _info "Template rendering OK" else _warn "Template rendering has warnings" fi else _error "Lint found issues (exit code: $exit_code)" fi _log "LINT: chart=$chart exit_code=$exit_code" return $exit_code } cmd_template() { local chart="?Usage: $SCRIPT_NAME template <chart> [--set key=val] [--values file]" shift local extra_args=("$@") local chart_path chart_path="$(_resolve_chart_path "$chart")" _header "Template: $chart" echo -e "BLUEPath:NC $chart_path" echo "" local output output="$(helm template "release-preview" "$chart_path" "extra_args[@]" 2>&1)" || { _error "Template rendering failed" echo "$output" return 1 } # Count resources local resource_count resource_count="$(echo "$output" | grep -c '^kind:' || echo 0)" echo -e "BOLDResources:NC $resource_count" echo "" # Show resource summary echo -e "BOLDResource Summary:NC" echo "$output" | grep -E '^kind:|^ name:' | paste - - 2>/dev/null | while IFS= read -r line; do local kind name kind="$(echo "$line" | grep -oP 'kind:\s*\K\S+' || echo '?')" name="$(echo "$line" | grep -oP 'name:\s*\K\S+' || echo '?')" echo -e " GREEN•NC $kind / $name" done echo "" # Output full YAML echo -e "BOLDFull Output:NC" echo "---" echo "$output" _log "TEMPLATE: chart=$chart resources=$resource_count" } cmd_list() { local namespace="-" _header "Installed Releases" local args=() if [[ -n "$namespace" ]]; then args+=(--namespace "$namespace") echo -e "BLUENamespace:NC $namespace" else args+=(--all-namespaces) echo -e "BLUEScope:NC all namespaces" fi echo "" local output output="$(_helm_global list "args[@]" 2>&1)" || { _error "Failed to list releases: $output" return 1 } if [[ -z "$output" || "$(echo "$output" | wc -l)" -le 1 ]]; then echo "(no releases found)" return 0 fi echo "$output" echo "" local count count="$(echo "$output" | tail -n +2 | wc -l)" _info "$count release(s) found" _log "LIST: namespace=-all count=$count" } cmd_status() { local release="?Usage: $SCRIPT_NAME status <release>" _header "Release Status: $release" local output output="$(_helm status "$release" 2>&1)" || { _error "Failed to get status: $output" echo "" echo "Available releases:" _helm list --short 2>/dev/null | head -20 || echo " (unable to list)" return 1 } echo "$output" echo "" # Show notes separately if they exist local notes notes="$(echo "$output" | sed -n '/^NOTES:/,$ p')" if [[ -n "$notes" ]]; then echo -e "BOLDRelease Notes available above.NC" fi # Show resource status echo "" echo -e "BOLDManifest Resources:NC" _helm get manifest "$release" 2>/dev/null | grep -E '^kind:|^ name:' | paste - - 2>/dev/null | while IFS= read -r line; do local kind name kind="$(echo "$line" | grep -oP 'kind:\s*\K\S+' || echo '?')" name="$(echo "$line" | grep -oP 'name:\s*\K\S+' || echo '?')" echo -e " GREEN•NC $kind / $name" done _log "STATUS: release=$release" } cmd_values() { local chart="?Usage: $SCRIPT_NAME values <chart|release>" local source="-chart" _header "Values: $chart" if [[ "$source" == "deployed" || "$source" == "release" ]]; then # Show values from a deployed release echo -e "BLUESource:NC deployed release" echo "" echo -e "BOLDUser-supplied values:NC" _helm get values "$chart" 2>/dev/null || echo " (none)" echo "" echo -e "BOLDAll computed values:NC" _helm get values "$chart" --all 2>/dev/null || echo " (unable to retrieve)" else # Show default values from chart local chart_path chart_path="$(_resolve_chart_path "$chart")" if [[ -d "$chart_path" ]]; then echo -e "BLUESource:NC local chart at $chart_path" echo "" if [[ -f "chart_path/values.yaml" ]]; then local lines lines="$(wc -l < "chart_path/values.yaml")" echo -e "BOLDvalues.yamlNC ($lines lines):" echo "" cat "chart_path/values.yaml" else _warn "No values.yaml found in chart" fi # Check for additional values files local extra_values extra_values="$(find "$chart_path" -name 'values-*.yaml' -o -name 'values.*.yaml' 2>/dev/null)" || true if [[ -n "$extra_values" ]]; then echo "" echo -e "BOLDAdditional value files:NC" echo "$extra_values" | while IFS= read -r f; do echo " • $(basename "$f")" done fi else # Try helm show values for repo charts echo -e "BLUESource:NC chart repository" echo "" helm show values "$chart" 2>&1 || { _error "Cannot find chart: $chart" return 1 } fi fi _log "VALUES: chart=$chart source=$source" } cmd_repo_add() { local name="?Usage: $SCRIPT_NAME repo-add <name> <url>" local url="?Usage: $SCRIPT_NAME repo-add <name> <url>" _header "Add Repository" echo -e "BLUEName:NC $name" echo -e "BLUEURL:NC $url" echo "" local output output="$(helm repo add "$name" "$url" 2>&1)" || { _error "Failed to add repository: $output" return 1 } _info "$output" # Update repo after adding echo "" echo -e "YELLOWUpdating repository index...NC" helm repo update "$name" 2>&1 || helm repo update 2>&1 _info "Repository '$name' ready to use" echo "" echo " Search with: $SCRIPT_NAME search $name/" _log "REPO-ADD: name=$name url=$url" } cmd_repo_list() { _header "Helm Repositories" local output output="$(helm repo list 2>&1)" || { _warn "No repositories configured or helm repo list failed" echo "" echo "Add a repository:" echo " $SCRIPT_NAME repo-add bitnami https://charts.bitnami.com/bitnami" echo " $SCRIPT_NAME repo-add stable https://charts.helm.sh/stable" return 0 } echo "$output" echo "" local count count="$(echo "$output" | tail -n +2 | wc -l)" _info "$count repository(ies) configured" _log "REPO-LIST: count=$count" } cmd_repo_update() { _header "Update Repositories" local output output="$(helm repo update 2>&1)" || { _error "Failed to update repositories" echo "$output" return 1 } echo "$output" echo "" _info "All repositories updated" _log "REPO-UPDATE: done" } cmd_search() { local keyword="?Usage: $SCRIPT_NAME search <keyword>" shift local extra_args=("$@") _header "Search: $keyword" # Search in repos echo -e "BOLDRepository Charts:NC" local repo_results repo_results="$(helm search repo "$keyword" "extra_args[@]" 2>&1)" || true if [[ -n "$repo_results" && "$repo_results" != *"no results"* ]]; then echo "$repo_results" else echo " (no results in configured repos)" fi echo "" # Search in Artifact Hub echo -e "BOLDArtifact Hub:NC" local hub_results hub_results="$(helm search hub "$keyword" --max-col-width 60 2>&1)" || true if [[ -n "$hub_results" && "$hub_results" != *"no results"* ]]; then echo "$hub_results" | head -25 local hub_count hub_count="$(echo "$hub_results" | tail -n +2 | wc -l)" if [[ "$hub_count" -gt 25 ]]; then echo " ... ($hub_count results, showing first 25)" fi else echo " (no results on Artifact Hub)" fi _log "SEARCH: keyword=$keyword" } cmd_package() { local chart="?Usage: $SCRIPT_NAME package <chart> [--version X.Y.Z]" shift local extra_args=("$@") local chart_path chart_path="$(_resolve_chart_path "$chart")" _header "Package Chart: $chart" echo -e "BLUESource:NC $chart_path" echo -e "BLUEDestination:NC $PACKAGES_DIR" echo "" # Lint first echo -e "YELLOWPre-package lint check...NC" if helm lint "$chart_path" &>/dev/null; then _info "Lint passed" else _warn "Lint warnings detected — packaging anyway" fi # Package local output output="$(helm package "$chart_path" --destination "$PACKAGES_DIR" "extra_args[@]" 2>&1)" || { _error "Failed to package chart: $output" return 1 } echo "$output" echo "" # Show package info local pkg_file pkg_file="$(echo "$output" | grep -oP 'to:\s*\K.*' || echo "$output" | grep -oP '/.*\.tgz')" if [[ -n "$pkg_file" && -f "$pkg_file" ]]; then local pkg_size pkg_size="$(du -h "$pkg_file" | cut -f1)" _info "Package created: $(basename "$pkg_file") ($pkg_size)" else _info "Package created in $PACKAGES_DIR" fi # List all packages echo "" echo -e "BOLDAvailable packages:NC" ls -lh "$PACKAGES_DIR"/*.tgz 2>/dev/null | awk '{print " " $NF " (" $5 ")"}' || echo " (none)" _log "PACKAGE: chart=$chart" } cmd_history() { local release="?Usage: $SCRIPT_NAME history <release>" _header "Release History: $release" local output output="$(_helm history "$release" 2>&1)" || { _error "Failed to get history: $output" return 1 } echo "$output" echo "" local revisions revisions="$(echo "$output" | tail -n +2 | wc -l)" _info "$revisions revision(s)" _log "HISTORY: release=$release revisions=$revisions" } cmd_rollback() { local release="?Usage: $SCRIPT_NAME rollback <release> [revision]" local revision="-" _header "Rollback: $release" if [[ -z "$revision" ]]; then # Show history and ask echo -e "BOLDCurrent history:NC" _helm history "$release" 2>/dev/null echo "" read -rp "Rollback to revision (number): " revision if [[ -z "$revision" ]]; then _warn "Aborted." return 0 fi fi echo -e "BLUERelease:NC $release" echo -e "BLUERevision:NC $revision" echo "" _warn "Rolling back '$release' to revision $revision" local output output="$(_helm rollback "$release" "$revision" 2>&1)" || { _error "Rollback failed: $output" return 1 } _info "$output" _log "ROLLBACK: release=$release revision=$revision" } cmd_diff() { local chart="?Usage: $SCRIPT_NAME diff <chart> <release>" local release="?Usage: $SCRIPT_NAME diff <chart> <release>" local chart_path chart_path="$(_resolve_chart_path "$chart")" _header "Diff: $chart vs deployed $release" # Get deployed manifest local deployed deployed="$(_helm get manifest "$release" 2>/dev/null)" || { _error "Cannot get manifest for release: $release" return 1 } # Render local template local local_template local_template="$(helm template "$release" "$chart_path" 2>/dev/null)" || { _error "Cannot render template for chart: $chart" return 1 } # Create temp files for diff local tmp_deployed tmp_local tmp_deployed="$(mktemp)" tmp_local="$(mktemp)" echo "$deployed" > "$tmp_deployed" echo "$local_template" > "$tmp_local" # Run diff local diff_output diff_output="$(diff --unified=3 "$tmp_deployed" "$tmp_local" 2>/dev/null)" || true rm -f "$tmp_deployed" "$tmp_local" if [[ -z "$diff_output" ]]; then _info "No differences — chart matches deployed release" else echo -e "BOLDDifferences found:NC" echo "" echo "$diff_output" | while IFS= read -r line; do case "$line" in +*) echo -e "GREENlineNC" ;; -*) echo -e "REDlineNC" ;; @*) echo -e "CYANlineNC" ;; *) echo "$line" ;; esac done echo "" local additions deletions additions="$(echo "$diff_output" | grep -c '^+[^+]' || echo 0)" deletions="$(echo "$diff_output" | grep -c '^-[^-]' || echo 0)" echo -e " GREEN+additionsNC additions, RED-deletionsNC deletions" fi _log "DIFF: chart=$chart release=$release" } cmd_help() { cat <<EOF BOLDHelm Chart HelperNC BRAND BOLDUsage:NC $SCRIPT_NAME <command> [arguments...] BOLDConnection:NC Set environment variables to configure: HELM_NAMESPACE Target namespace (default: default) KUBECONFIG Path to kubeconfig file BOLDCommands:NC create <chart> Create a new chart scaffold lint <chart> Lint a chart for issues template <chart> [opts] Render templates locally (--set key=val, --values file) list [namespace] List installed releases status <release> Show release status and notes values <chart> [source] Show values (source: chart|deployed) repo-add <name> <url> Add a chart repository repo-list List configured repositories repo-update Update all repository indexes search <keyword> Search repos and Artifact Hub package <chart> [opts] Package chart into .tgz history <release> Show release revision history rollback <release> [rev] Rollback to a previous revision diff <chart> <release> Compare chart with deployed release help Show this help message BOLDRequirements:NC helm v3+ must be installed and in PATH. kubectl configured for cluster access (for release operations). BOLDData Directory:NC Charts: $CHARTS_DIR Packages: $PACKAGES_DIR BOLDExamples:NC $SCRIPT_NAME create my-app $SCRIPT_NAME lint ./my-app $SCRIPT_NAME template ./my-app --set image.tag=latest $SCRIPT_NAME repo-add bitnami https://charts.bitnami.com/bitnami $SCRIPT_NAME search nginx $SCRIPT_NAME list kube-system $SCRIPT_NAME status my-release $SCRIPT_NAME package ./my-app --version 1.0.0 EOF } ############################################################################### # Main dispatcher ############################################################################### main() { _init local cmd="-help" shift 2>/dev/null || true case "$cmd" in create) _check_helm; cmd_create "$@" ;; lint) _check_helm; cmd_lint "$@" ;; template) _check_helm; cmd_template "$@" ;; list|ls) _check_helm; cmd_list "$@" ;; status) _check_helm; cmd_status "$@" ;; values) _check_helm; cmd_values "$@" ;; repo-add) _check_helm; cmd_repo_add "$@" ;; repo-list) _check_helm; cmd_repo_list "$@" ;; repo-update) _check_helm; cmd_repo_update "$@" ;; search) _check_helm; cmd_search "$@" ;; package|pkg) _check_helm; cmd_package "$@" ;; history) _check_helm; cmd_history "$@" ;; rollback) _check_helm; cmd_rollback "$@" ;; diff) _check_helm; cmd_diff "$@" ;; help|--help|-h) cmd_help ;; *) _error "Unknown command: $cmd" echo "Run '$SCRIPT_NAME help' for usage." exit 1 ;; esac } main "$@"
Reference tool for devtools — covers intro, quickstart, patterns and more. Quick lookup for Manager concepts, best practices, and implementation patterns.
--- name: "manager" version: "2.0.4" description: "Reference tool for devtools — covers intro, quickstart, patterns and more. Quick lookup for Manager concepts, best practices, and implementation patterns." author: "BytesAgain" homepage: "https://bytesagain.com" source: "https://github.com/bytesagain/ai-skills" tags: [manager, reference] category: "devtools" --- # Manager Reference tool for devtools — covers intro, quickstart, patterns and more. Quick lookup for Manager concepts, best practices, and implementation patterns. No API keys or credentials required. ## Commands | Command | Description | |---------|-------------| | `intro` | intro reference | | `quickstart` | quickstart reference | | `patterns` | patterns reference | | `debugging` | debugging reference | | `performance` | performance reference | | `security` | security reference | | `migration` | migration reference | | `cheatsheet` | cheatsheet reference | ## Output Format All commands output plain-text reference documentation via heredoc. No external API calls, no credentials needed, no network access. --- *Powered by BytesAgain | bytesagain.com | [email protected]* FILE:scripts/script.sh #!/usr/bin/env bash # manager — Manager reference tool. Use when working with manager in devtools contexts. # Powered by BytesAgain | bytesagain.com | [email protected] set -euo pipefail VERSION="2.0.3" show_help() { cat << 'HELPEOF' manager v$VERSION — Manager Reference Tool Usage: manager <command> Commands: intro Overview and core concepts quickstart Getting started guide patterns Common patterns and best practices debugging Debugging and troubleshooting performance Performance optimization tips security Security considerations migration Migration and upgrade guide cheatsheet Quick reference cheat sheet help Show this help version Show version Powered by BytesAgain | bytesagain.com HELPEOF } cmd_intro() { cat << 'EOF' # Manager — Overview ## What is Manager? Manager (manager) is a specialized tool/concept in the devtools domain. It provides essential capabilities for professionals working with manager. ## Key Concepts - Core manager principles and fundamentals - How manager fits into the broader devtools ecosystem - Essential terminology every practitioner should know ## Why Manager Matters Understanding manager is critical for: - Improving efficiency in devtools workflows - Reducing errors and downtime - Meeting industry standards and compliance requirements - Enabling better decision-making with accurate data ## Getting Started 1. Understand the basic manager concepts 2. Learn the standard tools and interfaces 3. Practice with common scenarios 4. Review safety and compliance requirements EOF } cmd_quickstart() { cat << 'EOF' # Manager — Quick Start Guide ## Prerequisites - Basic understanding of devtools concepts - Required tools and access credentials - System meeting minimum requirements ## Installation 1. Download or clone the manager package 2. Install dependencies 3. Configure initial settings 4. Verify installation ## First Steps 1. Run the hello-world example 2. Review the default configuration 3. Try a simple real-world task 4. Explore available commands and options ## Next Steps - Read the full documentation - Join the community forum - Try advanced features - Set up automated workflows EOF } cmd_patterns() { cat << 'EOF' # Manager — Common Patterns & Best Practices ## Design Patterns 1. **Standard Pattern**: The most common approach for manager 2. **Scalable Pattern**: For high-volume or distributed scenarios 3. **Resilient Pattern**: For fault-tolerant implementations ## Best Practices - Follow the principle of least privilege - Use version control for all configurations - Implement comprehensive logging - Test changes in staging before production - Document all custom configurations ## Anti-Patterns to Avoid - Hardcoding credentials or configuration - Skipping validation and error handling - Ignoring monitoring and alerting - Making changes without documentation - Over-engineering simple solutions EOF } cmd_debugging() { cat << 'EOF' # Manager — Debugging Guide ## Common Errors 1. **Connection refused**: Check service status and network 2. **Permission denied**: Verify credentials and access rights 3. **Timeout**: Check network, increase limits, optimize queries 4. **Invalid input**: Validate data format and encoding ## Debugging Tools - Built-in logging and diagnostics - Network analysis tools (tcpdump, wireshark) - System monitoring (top, htop, iostat) - Application-specific debug modes ## Debug Workflow 1. Reproduce the issue consistently 2. Check logs for error messages 3. Isolate the failing component 4. Test with minimal configuration 5. Apply fix and verify EOF } cmd_performance() { cat << 'EOF' # Manager — Performance Optimization ## Key Metrics - Response time / latency - Throughput / operations per second - Resource utilization (CPU, memory, I/O) - Error rate and retry frequency ## Optimization Strategies 1. **Caching**: Reduce redundant operations 2. **Batching**: Group small operations 3. **Indexing**: Speed up data lookups 4. **Compression**: Reduce data transfer size 5. **Parallel Processing**: Utilize multiple cores ## Monitoring - Set up baseline performance metrics - Configure alerts for anomalies - Track trends over time - Regular capacity planning reviews EOF } cmd_security() { cat << 'EOF' # Manager — Security Considerations ## Authentication & Authorization - Use strong, unique credentials - Implement role-based access control - Enable multi-factor authentication where possible - Regularly review and rotate credentials ## Data Protection - Encrypt data at rest and in transit - Implement proper backup procedures - Follow data retention policies - Sanitize inputs to prevent injection ## Network Security - Use firewalls and network segmentation - Monitor for suspicious activity - Keep all software patched and updated - Disable unnecessary services and ports EOF } cmd_migration() { cat << 'EOF' # Manager — Migration & Upgrade Guide ## Pre-Migration Checklist - [ ] Current system fully documented - [ ] Complete backup taken and verified - [ ] Target environment prepared - [ ] Rollback plan documented - [ ] Stakeholders notified ## Migration Steps 1. Prepare target environment 2. Export data from source 3. Transform data if needed 4. Import to target 5. Verify data integrity 6. Update configurations 7. Test all functionality 8. Switch traffic / go live ## Post-Migration - Monitor for errors and performance - Verify all integrations working - Update documentation - Decommission old system after confirmation EOF } cmd_cheatsheet() { cat << 'EOF' # Manager — Quick Reference ## Essential Commands | Command | Description | |---------|-------------| | help | Show available commands | | version | Display version info | | intro | Overview and fundamentals | | troubleshooting | Common problems and fixes | ## Common Workflows 1. **Setup**: install → configure → verify → test 2. **Daily**: check → monitor → report → review 3. **Issue**: diagnose → isolate → fix → verify → document ## Key Shortcuts - Use tab completion for commands - Check logs first when troubleshooting - Always backup before making changes - Document everything you change EOF } CMD="-help" shift 2>/dev/null || true case "$CMD" in intro) cmd_intro "$@" ;; quickstart) cmd_quickstart "$@" ;; patterns) cmd_patterns "$@" ;; debugging) cmd_debugging "$@" ;; performance) cmd_performance "$@" ;; security) cmd_security "$@" ;; migration) cmd_migration "$@" ;; cheatsheet) cmd_cheatsheet "$@" ;; help|--help|-h) show_help ;; version|--version|-v) echo "manager v$VERSION — Powered by BytesAgain" ;; *) echo "Unknown: $CMD"; echo "Run: manager help"; exit 1 ;; esac
Validate emails, URLs, phones, dates, and custom patterns. Use when sanitizing input, verifying form fields, checking formats, or enforcing rules.
--- name: validator version: "3.0.1" author: BytesAgain homepage: https://bytesagain.com source: https://github.com/bytesagain/ai-skills license: MIT-0 tags: [validator, tool, utility] description: "Validate emails, URLs, phones, dates, and custom patterns. Use when sanitizing input, verifying form fields, checking formats, or enforcing rules." --- # validator Input validator. ## Commands ### `email` Validate email format ```bash scripts/script.sh email <address> ``` ### `url` Validate URL (+ HTTP check if curl available) ```bash scripts/script.sh url <url> ``` ### `ip` Validate IPv4/IPv6 address ```bash scripts/script.sh ip <address> ``` ### `phone` Validate phone number (7-15 digits) ```bash scripts/script.sh phone <number> ``` ### `date` Validate and parse date string ```bash scripts/script.sh date <string> ``` ### `domain` Validate domain (+ DNS lookup if dig available) ```bash scripts/script.sh domain <name> ``` ### `credit-card` Luhn algorithm check + card type detection ```bash scripts/script.sh credit-card <number> ``` ### `json` Validate JSON syntax ```bash scripts/script.sh json <file> ``` ### `yaml` Validate YAML syntax ```bash scripts/script.sh yaml <file> ``` ### `csv` Validate CSV structure (column consistency) ```bash scripts/script.sh csv <file> ``` ## Requirements - python3 - curl - dig (optional) --- *Powered by BytesAgain | bytesagain.com | [email protected]* FILE:scripts/script.sh #!/usr/bin/env bash # validator — Input validator # Powered by BytesAgain | bytesagain.com | [email protected] set -euo pipefail VERSION="3.0.1" BOLD='\033[1m'; GREEN='\033[0;32m'; RED='\033[0;31m'; RESET='\033[0m' pass() { echo -e " GREEN✓ VALIDRESET $1"; } fail() { echo -e " RED✗ INVALIDRESET $1"; } cmd_email() { local addr="?Usage: validator email <address>" if echo "$addr" | grep -qE '^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$'; then pass "$addr" else fail "$addr — must be [email protected]" return 1 fi } cmd_url() { local url="?Usage: validator url <url>" if echo "$url" | grep -qE '^https?://[a-zA-Z0-9.-]+(\.[a-zA-Z]{2,})(:[0-9]+)?(/.*)?$'; then pass "$url" if command -v curl >/dev/null 2>&1; then local code code=$(curl -sL -o /dev/null -w '%{http_code}' --max-time 5 "$url" 2>/dev/null || echo "000") echo " HTTP status: $code" fi else fail "$url — must start with http:// or https://" return 1 fi } cmd_ip() { local addr="?Usage: validator ip <address>" # IPv4 if echo "$addr" | grep -qE '^([0-9]{1,3}\.){3}[0-9]{1,3}$'; then local valid=true IFS='.' read -ra octets <<< "$addr" for o in "octets[@]"; do if [ "$o" -gt 255 ] 2>/dev/null; then valid=false; fi done if $valid; then pass "$addr (IPv4)" # Check type case "$addr" in 10.*|172.1[6-9].*|172.2[0-9].*|172.3[0-1].*|192.168.*) echo " Type: Private" ;; 127.*) echo " Type: Loopback" ;; 0.*) echo " Type: Reserved" ;; *) echo " Type: Public" ;; esac else fail "$addr — octets must be 0-255" return 1 fi # IPv6 elif echo "$addr" | grep -qE '^([0-9a-fA-F]{0,4}:){2,7}[0-9a-fA-F]{0,4}$'; then pass "$addr (IPv6)" else fail "$addr — not a valid IPv4 or IPv6 address" return 1 fi } cmd_phone() { local num="?Usage: validator phone <number>" local clean clean=$(echo "$num" | tr -d ' ()-.') if echo "$clean" | grep -qE '^\+?[0-9]{7,15}$'; then pass "$num (digits: #clean)" else fail "$num — 7-15 digits expected" return 1 fi } cmd_date() { local str="?Usage: validator date <date-string>" if date -d "$str" >/dev/null 2>&1; then local parsed parsed=$(date -d "$str" '+%Y-%m-%d %H:%M:%S') pass "$str → $parsed" else fail "$str — cannot parse as date" return 1 fi } cmd_json() { local file="?Usage: validator json <file>" [ ! -f "$file" ] && { fail "File not found: $file"; return 1; } if python3 -c "import json; json.load(open('$file'))" 2>/dev/null; then local size size=$(wc -c < "$file") pass "$file (size bytes, valid JSON)" else fail "$file" python3 -c " import json try: json.load(open('$file')) except json.JSONDecodeError as e: print(' Error: line {}, col {}: {}'.format(e.lineno, e.colno, e.msg)) " 2>/dev/null return 1 fi } cmd_yaml() { local file="?Usage: validator yaml <file>" [ ! -f "$file" ] && { fail "File not found: $file"; return 1; } if python3 -c " import sys try: import yaml yaml.safe_load(open('$file')) sys.exit(0) except ImportError: # Fallback: basic syntax check with open('$file') as f: for i, line in enumerate(f, 1): if '\t' in line: print(' Warning: tab character on line {}'.format(i)) sys.exit(0) except yaml.YAMLError as e: print(' Error: {}'.format(e)) sys.exit(1) " 2>/dev/null; then pass "$file (valid YAML)" else fail "$file" return 1 fi } cmd_csv() { local file="?Usage: validator csv <file>" [ ! -f "$file" ] && { fail "File not found: $file"; return 1; } FILE="$file" python3 << 'PYEOF' import csv, os, sys f = os.environ["FILE"] errors = [] cols = None with open(f) as fh: reader = csv.reader(fh) for i, row in enumerate(reader, 1): if cols is None: cols = len(row) elif len(row) != cols: errors.append("Line {}: {} columns (expected {})".format(i, len(row), cols)) if i > 10000: break if errors: print(" \033[0;31m\u2717 INVALID\033[0m {} ({} errors)".format(f, len(errors))) for e in errors[:5]: print(" " + e) sys.exit(1) else: print(" \033[0;32m\u2713 VALID\033[0m {} ({} rows, {} columns)".format(f, i, cols or 0)) PYEOF } cmd_domain() { local name="?Usage: validator domain <domain>" if echo "$name" | grep -qE '^[a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(\.[a-zA-Z]{2,})+$'; then pass "$name (format OK)" if command -v dig >/dev/null 2>&1; then local ip ip=$(dig +short "$name" A 2>/dev/null | head -1) if [ -n "$ip" ]; then echo " DNS: $ip" else echo " DNS: No A record found" fi fi else fail "$name — invalid domain format" return 1 fi } cmd_credit_card() { local num="?Usage: validator credit-card <number>" local clean clean=$(echo "$num" | tr -d ' -') NUM="$clean" python3 << 'PYEOF' import os, sys num = os.environ["NUM"] if not num.isdigit() or len(num) < 13 or len(num) > 19: print(" \033[0;31m\u2717 INVALID\033[0m — must be 13-19 digits") sys.exit(1) # Luhn algorithm digits = [int(d) for d in num] digits.reverse() total = 0 for i, d in enumerate(digits): if i % 2 == 1: d *= 2 if d > 9: d -= 9 total += d if total % 10 == 0: # Detect card type card_type = "Unknown" if num[0] == '4': card_type = "Visa" elif num[:2] in ('51','52','53','54','55'): card_type = "MasterCard" elif num[:2] in ('34','37'): card_type = "Amex" elif num[:4] == '6011' or num[:2] == '65': card_type = "Discover" elif num[:2] == '35': card_type = "JCB" print(" \033[0;32m\u2713 VALID\033[0m Luhn check passed ({})".format(card_type)) else: print(" \033[0;31m\u2717 INVALID\033[0m Luhn check failed") sys.exit(1) PYEOF } show_help() { cat << EOF validator v$VERSION — Input validator Usage: validator <command> <input> Formats: email <address> Validate email format url <url> Validate URL (+ HTTP check if curl available) ip <address> Validate IPv4/IPv6 address phone <number> Validate phone number (7-15 digits) date <string> Validate and parse date string domain <name> Validate domain (+ DNS lookup if dig available) credit-card <number> Luhn algorithm check + card type detection Files: json <file> Validate JSON syntax yaml <file> Validate YAML syntax csv <file> Validate CSV structure (column consistency) help Show this help version Show version Requires: python3 (for json/csv/credit-card). Optional: curl, dig EOF } [ $# -eq 0 ] && { show_help; exit 0; } case "$1" in email) shift; cmd_email "$@" ;; url) shift; cmd_url "$@" ;; ip) shift; cmd_ip "$@" ;; phone) shift; cmd_phone "$@" ;; date) shift; cmd_date "$@" ;; json) shift; cmd_json "$@" ;; yaml) shift; cmd_yaml "$@" ;; csv) shift; cmd_csv "$@" ;; domain) shift; cmd_domain "$@" ;; credit-card) shift; cmd_credit_card "$@" ;; help|-h) show_help ;; version|-v) echo "validator v$VERSION"; echo "Powered by BytesAgain | bytesagain.com | [email protected]" ;; *) echo "Unknown: $1"; show_help; exit 1 ;; esac
Generate and play bingo cards with number calling and verification. Use when running bingo games.
--- name: "bingo" version: "3.0.0" description: "Generate and play bingo cards with number calling and verification. Use when running bingo games." author: "BytesAgain" homepage: "https://bytesagain.com" --- # bingo Generate and play bingo cards with number calling and verification. Use when running bingo games. ## Commands ### `card` ```bash scripts/script.sh card ``` ### `call` ```bash scripts/script.sh call ``` ### `new-game` ```bash scripts/script.sh new-game ``` ### `history` ```bash scripts/script.sh history ``` ### `check` ```bash scripts/script.sh check <numbers> ``` ### `stats` ```bash scripts/script.sh stats ``` ## Data Storage Data stored in `~/.local/share/bingo/`. --- *Powered by BytesAgain | bytesagain.com | [email protected]* FILE:scripts/script.sh #!/usr/bin/env bash set -euo pipefail VERSION="3.0.0" SCRIPT_NAME="bingo" DATA_DIR="$HOME/.local/share/bingo" mkdir -p "$DATA_DIR" # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # Powered by BytesAgain | bytesagain.com | [email protected] _info() { echo "[INFO] $*"; } _error() { echo "[ERROR] $*" >&2; } die() { _error "$@"; exit 1; } cmd_card() { echo ' B I N G O'; for col in 1 2 3 4 5; do printf '%3d %3d %3d %3d %3d ' $(shuf -i $((col*15-14))-$((col*15)) -n 5); done } cmd_call() { echo "Called: $(shuf -i 1-75 -n 1)" } cmd_new_game() { : > $DATA_DIR/calls.txt && echo 'New game started' } cmd_history() { cat $DATA_DIR/calls.txt 2>/dev/null || echo 'No calls yet' } cmd_check() { local numbers="-" [ -z "$numbers" ] && die "Usage: $SCRIPT_NAME check <numbers>" echo 'Checking: $2' } cmd_stats() { echo 'Calls: '$(wc -l < $DATA_DIR/calls.txt 2>/dev/null || echo 0) } cmd_help() { echo "$SCRIPT_NAME v$VERSION" echo "" echo "Commands:" printf " %-25s\n" "card" printf " %-25s\n" "call" printf " %-25s\n" "new-game" printf " %-25s\n" "history" printf " %-25s\n" "check <numbers>" printf " %-25s\n" "stats" printf " %%-25s\n" "help" echo "" echo "Powered by BytesAgain | bytesagain.com | [email protected]" } cmd_version() { echo "$SCRIPT_NAME v$VERSION"; } main() { local cmd="-help" case "$cmd" in card) shift; cmd_card "$@" ;; call) shift; cmd_call "$@" ;; new-game) shift; cmd_new_game "$@" ;; history) shift; cmd_history "$@" ;; check) shift; cmd_check "$@" ;; stats) shift; cmd_stats "$@" ;; help) cmd_help ;; version) cmd_version ;; *) die "Unknown: $cmd" ;; esac } main "$@"
Build DCF models and run comparable analysis for company valuation. Use when modeling cash flows, benchmarking peers, projecting growth, or pitching.
--- name: valuation version: "2.0.0" author: BytesAgain homepage: https://bytesagain.com source: https://github.com/bytesagain/ai-skills license: MIT-0 tags: [valuation, tool, utility] description: "Build DCF models and run comparable analysis for company valuation. Use when modeling cash flows, benchmarking peers, projecting growth, or pitching." --- # Valuation Utility toolkit for tracking and managing valuation-related operations. Log runs, checks, analyses, batch jobs, and reports — all with timestamped history and multi-format export. ## Commands All data commands accept optional input. Without input, they display the 20 most recent entries. With input, they log a new timestamped entry. ### Core Operations | Command | Description | |---------|-------------| | `valuation run [input]` | Log or view run entries — track execution tasks | | `valuation check [input]` | Log or view check entries — record verification tasks | | `valuation convert [input]` | Log or view convert entries — track conversion operations | | `valuation analyze [input]` | Log or view analyze entries — record analysis results | | `valuation generate [input]` | Log or view generate entries — track generation tasks | | `valuation preview [input]` | Log or view preview entries — record preview operations | | `valuation batch [input]` | Log or view batch entries — track batch processing jobs | | `valuation compare [input]` | Log or view comparison entries — track A/B comparisons | | `valuation export [input]` | Log or view export entries — record export operations | | `valuation config [input]` | Log or view config entries — track configuration changes | | `valuation status [input]` | Log or view status entries — record status observations | | `valuation report [input]` | Log or view report entries — record generated reports | ### Utility Commands | Command | Description | |---------|-------------| | `valuation stats` | Show summary statistics: entry counts per category, total entries, and data size | | `valuation export <fmt>` | Export all data in `json`, `csv`, or `txt` format to the data directory | | `valuation search <term>` | Search across all log files for a term (case-insensitive) | | `valuation recent` | Show the 20 most recent entries from the activity history log | | `valuation status` | Health check: version, data directory, total entries, disk usage, last activity | | `valuation help` | Show full command listing | | `valuation version` | Print version string (`valuation v2.0.0`) | > **Note**: The `export` and `status` commands have dual roles. As core operations they log entries (when called with input). As utility commands they perform their special function (export data or show health check when called without arguments or with a format specifier). ## Data Storage All data is stored locally in `~/.local/share/valuation/`: - **Per-command logs**: `run.log`, `check.log`, `analyze.log`, `batch.log`, etc. — one file per command type - **History log**: `history.log` — unified activity log with timestamps - **Export files**: `export.json`, `export.csv`, `export.txt` — generated on demand - **Format**: Each entry is stored as `YYYY-MM-DD HH:MM|<input>` (pipe-delimited) Set the `VALUATION_DIR` environment variable to override the default data directory. ## Requirements - **bash** (with `set -euo pipefail` strict mode) - Standard Unix tools: `date`, `wc`, `du`, `head`, `tail`, `grep`, `basename`, `cat` - No external dependencies or API keys required ## When to Use 1. **Tracking valuation model runs** — Log DCF runs, revenue projections, and model iterations with timestamped records 2. **Recording analysis and comparison results** — Use `analyze` and `compare` to document peer benchmarks, multiples, and scenario comparisons 3. **Managing batch processing pipelines** — Use `batch` and `export` to track large-scale valuation jobs across portfolios 4. **Auditing configuration changes** — Use `config` to log parameter changes (discount rates, growth assumptions, etc.) for reproducibility 5. **Generating compliance reports** — Export all logged data to JSON/CSV/TXT for audit trails, investor presentations, or regulatory filings ## Examples ```bash # Log a valuation run valuation run "DCF model for ACME Corp — 5yr projection, WACC 9.2%" # Record an analysis result valuation analyze "peer comparison: ACME trades at 12x EV/EBITDA vs 15x median" # Log a batch processing job valuation batch "processed 50 portfolio companies for Q4 revaluation" # Track a configuration change valuation config "updated discount rate from 8.5% to 9.2% per board directive" # View recent check entries valuation check # Search for entries related to a specific company valuation search "ACME" # Get summary statistics across all categories valuation stats # Export everything to JSON for dashboard integration valuation export json # Show the 20 most recent activity entries valuation recent ``` ## How It Works Valuation uses a simple append-only log architecture. Each command type writes to its own `.log` file, and all activity is also appended to a central `history.log` for chronological tracking. The `stats` command aggregates counts across all log files. The `export` command reads all logs and serializes them into the requested format (JSON array, CSV with headers, or plain text sections). The `search` command performs case-insensitive grep across all log files. --- Powered by BytesAgain | bytesagain.com | [email protected] FILE:scripts/script.sh #!/usr/bin/env bash # Valuation — utility tool # Powered by BytesAgain | bytesagain.com | [email protected] set -euo pipefail DATA_DIR="HOME/.local/share/valuation" mkdir -p "$DATA_DIR" _log() { echo "$(date '+%m-%d %H:%M') $1: $2" >> "$DATA_DIR/history.log"; } _version() { echo "valuation v2.0.0"; } _help() { echo "Valuation v2.0.0 — utility toolkit" echo "" echo "Usage: valuation <command> [args]" echo "" echo "Commands:" echo " run Run" echo " check Check" echo " convert Convert" echo " analyze Analyze" echo " generate Generate" echo " preview Preview" echo " batch Batch" echo " compare Compare" echo " export Export" echo " config Config" echo " status Status" echo " report Report" echo " stats Summary statistics" echo " export <fmt> Export (json|csv|txt)" echo " search <term> Search entries" echo " recent Recent activity" echo " status Health check" echo " help Show this help" echo " version Show version" echo "" echo "Data: $DATA_DIR" } _stats() { echo "=== Valuation 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)" } _export() { local fmt="-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 "\n]" >> "$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 "=== Valuation Export ===" > "$out" for f in "$DATA_DIR"/*.log; do [ -f "$f" ] || continue echo "--- $(basename "$f" .log) ---" >> "$out" cat "$f" >> "$out" done ;; *) echo "Formats: json, csv, txt"; return 1 ;; esac echo "Exported to $out ($(wc -c < "$out") bytes)" } _status() { echo "=== Valuation 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)" echo " Last: $(tail -1 "$DATA_DIR/history.log" 2>/dev/null || echo never)" echo " Status: OK" } _search() { local term="?Usage: valuation search <term>" echo "Searching for: $term" for f in "$DATA_DIR"/*.log; do [ -f "$f" ] || continue local m=$(grep -i "$term" "$f" 2>/dev/null || true) if [ -n "$m" ]; then echo " --- $(basename "$f" .log) ---" echo "$m" | sed 's/^/ /' fi done } _recent() { echo "=== Recent Activity ===" tail -20 "$DATA_DIR/history.log" 2>/dev/null | sed 's/^/ /' || echo " No activity yet." } case "-help" in run) shift if [ $# -eq 0 ]; then echo "Recent run entries:" tail -20 "$DATA_DIR/run.log" 2>/dev/null || echo " No entries yet. Use: valuation run <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/run.log" local total=$(wc -l < "$DATA_DIR/run.log") echo " [Valuation] run: $input" echo " Saved. Total run entries: $total" _log "run" "$input" fi ;; check) shift if [ $# -eq 0 ]; then echo "Recent check entries:" tail -20 "$DATA_DIR/check.log" 2>/dev/null || echo " No entries yet. Use: valuation check <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/check.log" local total=$(wc -l < "$DATA_DIR/check.log") echo " [Valuation] check: $input" echo " Saved. Total check entries: $total" _log "check" "$input" fi ;; convert) shift if [ $# -eq 0 ]; then echo "Recent convert entries:" tail -20 "$DATA_DIR/convert.log" 2>/dev/null || echo " No entries yet. Use: valuation convert <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/convert.log" local total=$(wc -l < "$DATA_DIR/convert.log") echo " [Valuation] convert: $input" echo " Saved. Total convert entries: $total" _log "convert" "$input" fi ;; analyze) shift if [ $# -eq 0 ]; then echo "Recent analyze entries:" tail -20 "$DATA_DIR/analyze.log" 2>/dev/null || echo " No entries yet. Use: valuation analyze <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/analyze.log" local total=$(wc -l < "$DATA_DIR/analyze.log") echo " [Valuation] analyze: $input" echo " Saved. Total analyze entries: $total" _log "analyze" "$input" fi ;; generate) shift if [ $# -eq 0 ]; then echo "Recent generate entries:" tail -20 "$DATA_DIR/generate.log" 2>/dev/null || echo " No entries yet. Use: valuation generate <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/generate.log" local total=$(wc -l < "$DATA_DIR/generate.log") echo " [Valuation] generate: $input" echo " Saved. Total generate entries: $total" _log "generate" "$input" fi ;; preview) shift if [ $# -eq 0 ]; then echo "Recent preview entries:" tail -20 "$DATA_DIR/preview.log" 2>/dev/null || echo " No entries yet. Use: valuation preview <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/preview.log" local total=$(wc -l < "$DATA_DIR/preview.log") echo " [Valuation] preview: $input" echo " Saved. Total preview entries: $total" _log "preview" "$input" fi ;; batch) shift if [ $# -eq 0 ]; then echo "Recent batch entries:" tail -20 "$DATA_DIR/batch.log" 2>/dev/null || echo " No entries yet. Use: valuation batch <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/batch.log" local total=$(wc -l < "$DATA_DIR/batch.log") echo " [Valuation] batch: $input" echo " Saved. Total batch entries: $total" _log "batch" "$input" fi ;; compare) shift if [ $# -eq 0 ]; then echo "Recent compare entries:" tail -20 "$DATA_DIR/compare.log" 2>/dev/null || echo " No entries yet. Use: valuation compare <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/compare.log" local total=$(wc -l < "$DATA_DIR/compare.log") echo " [Valuation] compare: $input" echo " Saved. Total compare entries: $total" _log "compare" "$input" fi ;; export) shift if [ $# -eq 0 ]; then echo "Recent export entries:" tail -20 "$DATA_DIR/export.log" 2>/dev/null || echo " No entries yet. Use: valuation export <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/export.log" local total=$(wc -l < "$DATA_DIR/export.log") echo " [Valuation] export: $input" echo " Saved. Total export entries: $total" _log "export" "$input" fi ;; config) shift if [ $# -eq 0 ]; then echo "Recent config entries:" tail -20 "$DATA_DIR/config.log" 2>/dev/null || echo " No entries yet. Use: valuation config <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/config.log" local total=$(wc -l < "$DATA_DIR/config.log") echo " [Valuation] config: $input" echo " Saved. Total config entries: $total" _log "config" "$input" fi ;; status) shift if [ $# -eq 0 ]; then echo "Recent status entries:" tail -20 "$DATA_DIR/status.log" 2>/dev/null || echo " No entries yet. Use: valuation status <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/status.log" local total=$(wc -l < "$DATA_DIR/status.log") echo " [Valuation] status: $input" echo " Saved. Total status entries: $total" _log "status" "$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: valuation 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 " [Valuation] report: $input" echo " Saved. Total report entries: $total" _log "report" "$input" fi ;; stats) _stats ;; export) shift; _export "$@" ;; search) shift; _search "$@" ;; recent) _recent ;; status) _status ;; help|--help|-h) _help ;; version|--version|-v) _version ;; *) echo "Unknown: $1 — run 'valuation help'" exit 1 ;; esac
count
--- name: "count" version: "2.0.3" description: "count" author: "BytesAgain" homepage: "https://bytesagain.com" source: "https://github.com/bytesagain/ai-skills" tags: [count, reference] category: "devtools" --- # Count count. No API keys or credentials required — outputs reference documentation only. ## Commands | Command | Description | |---------|-------------| | `intro` | intro reference | | `quickstart` | quickstart reference | | `patterns` | patterns reference | | `debugging` | debugging reference | | `performance` | performance reference | | `security` | security reference | | `migration` | migration reference | | `cheatsheet` | cheatsheet reference | ## Output Format All commands output plain-text reference documentation via heredoc. No external API calls, no credentials needed, no network access. --- *Powered by BytesAgain | bytesagain.com | [email protected]* FILE:scripts/script.sh #!/usr/bin/env bash # count — Count reference tool. Use when working with count in devtools contexts. # Powered by BytesAgain | bytesagain.com | [email protected] set -euo pipefail VERSION="2.0.3" show_help() { cat << 'HELPEOF' count v$VERSION — Count Reference Tool Usage: count <command> Commands: intro Overview and core concepts quickstart Getting started guide patterns Common patterns and best practices debugging Debugging and troubleshooting performance Performance optimization tips security Security considerations migration Migration and upgrade guide cheatsheet Quick reference cheat sheet help Show this help version Show version Powered by BytesAgain | bytesagain.com HELPEOF } cmd_intro() { cat << 'EOF' # Count — Overview ## What is Count? Count (count) is a specialized tool/concept in the devtools domain. It provides essential capabilities for professionals working with count. ## Key Concepts - Core count principles and fundamentals - How count fits into the broader devtools ecosystem - Essential terminology every practitioner should know ## Why Count Matters Understanding count is critical for: - Improving efficiency in devtools workflows - Reducing errors and downtime - Meeting industry standards and compliance requirements - Enabling better decision-making with accurate data ## Getting Started 1. Understand the basic count concepts 2. Learn the standard tools and interfaces 3. Practice with common scenarios 4. Review safety and compliance requirements EOF } cmd_quickstart() { cat << 'EOF' # Count — Quick Start Guide ## Prerequisites - Basic understanding of devtools concepts - Required tools and access credentials - System meeting minimum requirements ## Installation 1. Download or clone the count package 2. Install dependencies 3. Configure initial settings 4. Verify installation ## First Steps 1. Run the hello-world example 2. Review the default configuration 3. Try a simple real-world task 4. Explore available commands and options ## Next Steps - Read the full documentation - Join the community forum - Try advanced features - Set up automated workflows EOF } cmd_patterns() { cat << 'EOF' # Count — Common Patterns & Best Practices ## Design Patterns 1. **Standard Pattern**: The most common approach for count 2. **Scalable Pattern**: For high-volume or distributed scenarios 3. **Resilient Pattern**: For fault-tolerant implementations ## Best Practices - Follow the principle of least privilege - Use version control for all configurations - Implement comprehensive logging - Test changes in staging before production - Document all custom configurations ## Anti-Patterns to Avoid - Hardcoding credentials or configuration - Skipping validation and error handling - Ignoring monitoring and alerting - Making changes without documentation - Over-engineering simple solutions EOF } cmd_debugging() { cat << 'EOF' # Count — Debugging Guide ## Common Errors 1. **Connection refused**: Check service status and network 2. **Permission denied**: Verify credentials and access rights 3. **Timeout**: Check network, increase limits, optimize queries 4. **Invalid input**: Validate data format and encoding ## Debugging Tools - Built-in logging and diagnostics - Network analysis tools (tcpdump, wireshark) - System monitoring (top, htop, iostat) - Application-specific debug modes ## Debug Workflow 1. Reproduce the issue consistently 2. Check logs for error messages 3. Isolate the failing component 4. Test with minimal configuration 5. Apply fix and verify EOF } cmd_performance() { cat << 'EOF' # Count — Performance Optimization ## Key Metrics - Response time / latency - Throughput / operations per second - Resource utilization (CPU, memory, I/O) - Error rate and retry frequency ## Optimization Strategies 1. **Caching**: Reduce redundant operations 2. **Batching**: Group small operations 3. **Indexing**: Speed up data lookups 4. **Compression**: Reduce data transfer size 5. **Parallel Processing**: Utilize multiple cores ## Monitoring - Set up baseline performance metrics - Configure alerts for anomalies - Track trends over time - Regular capacity planning reviews EOF } cmd_security() { cat << 'EOF' # Count — Security Considerations ## Authentication & Authorization - Use strong, unique credentials - Implement role-based access control - Enable multi-factor authentication where possible - Regularly review and rotate credentials ## Data Protection - Encrypt data at rest and in transit - Implement proper backup procedures - Follow data retention policies - Sanitize inputs to prevent injection ## Network Security - Use firewalls and network segmentation - Monitor for suspicious activity - Keep all software patched and updated - Disable unnecessary services and ports EOF } cmd_migration() { cat << 'EOF' # Count — Migration & Upgrade Guide ## Pre-Migration Checklist - [ ] Current system fully documented - [ ] Complete backup taken and verified - [ ] Target environment prepared - [ ] Rollback plan documented - [ ] Stakeholders notified ## Migration Steps 1. Prepare target environment 2. Export data from source 3. Transform data if needed 4. Import to target 5. Verify data integrity 6. Update configurations 7. Test all functionality 8. Switch traffic / go live ## Post-Migration - Monitor for errors and performance - Verify all integrations working - Update documentation - Decommission old system after confirmation EOF } cmd_cheatsheet() { cat << 'EOF' # Count — Quick Reference ## Essential Commands | Command | Description | |---------|-------------| | help | Show available commands | | version | Display version info | | intro | Overview and fundamentals | | troubleshooting | Common problems and fixes | ## Common Workflows 1. **Setup**: install → configure → verify → test 2. **Daily**: check → monitor → report → review 3. **Issue**: diagnose → isolate → fix → verify → document ## Key Shortcuts - Use tab completion for commands - Check logs first when troubleshooting - Always backup before making changes - Document everything you change EOF } CMD="-help" shift 2>/dev/null || true case "$CMD" in intro) cmd_intro "$@" ;; quickstart) cmd_quickstart "$@" ;; patterns) cmd_patterns "$@" ;; debugging) cmd_debugging "$@" ;; performance) cmd_performance "$@" ;; security) cmd_security "$@" ;; migration) cmd_migration "$@" ;; cheatsheet) cmd_cheatsheet "$@" ;; help|--help|-h) show_help ;; version|--version|-v) echo "count v$VERSION — Powered by BytesAgain" ;; *) echo "Unknown: $CMD"; echo "Run: count help"; exit 1 ;; esac
Compress, extract, list, and encrypt ZIP archives in batch. Use when archiving files, extracting packages, listing contents, encrypting backups, or batching.
--- name: zip version: "3.0.1" author: BytesAgain homepage: https://bytesagain.com source: https://github.com/bytesagain/ai-skills license: MIT-0 tags: [zip, tool, utility] description: "Compress, extract, list, and encrypt ZIP archives in batch. Use when archiving files, extracting packages, listing contents, encrypting backups, or batching." --- # zip ZIP archive tool. ## Commands ### `create` Create ZIP archive ```bash scripts/script.sh create <archive.zip> <files...> ``` ### `extract` Extract archive ```bash scripts/script.sh extract <archive.zip> [dir] ``` ### `list` List contents ```bash scripts/script.sh list <archive.zip> ``` ### `add` Add files to archive ```bash scripts/script.sh add <archive.zip> <files...> ``` ### `password` Create encrypted ZIP ```bash scripts/script.sh password <archive> <pass> <files...> ``` ### `info` Archive metadata ```bash scripts/script.sh info <archive.zip> ``` ### `test` Test integrity ```bash scripts/script.sh test <archive.zip> ``` ### `find` Search for files ```bash scripts/script.sh find <archive.zip> <pattern> ``` ### `diff` Compare two archives ```bash scripts/script.sh diff <a1.zip> <a2.zip> ``` ## Requirements - bash 4.0+ --- *Powered by BytesAgain | bytesagain.com | [email protected]* FILE:scripts/script.sh #!/usr/bin/env bash # zip — ZIP archive tool # Powered by BytesAgain | bytesagain.com | [email protected] set -euo pipefail VERSION="3.0.1" BOLD='\033[1m'; GREEN='\033[0;32m'; RED='\033[0;31m'; RESET='\033[0m' die() { echo -e "REDError: $1RESET" >&2; exit 1; } info() { echo -e "GREEN✓RESET $1"; } check_deps() { command -v zip >/dev/null 2>&1 || die "zip not installed. Install: apt install zip / yum install zip" command -v unzip >/dev/null 2>&1 || die "unzip not installed. Install: apt install unzip / yum install unzip" } # === create: create zip archive === cmd_create() { check_deps local archive="?Usage: zip create <archive.zip> <files...>" shift [ $# -eq 0 ] && die "No files specified" zip -rv "$archive" "$@" 2>&1 | while IFS= read -r line; do echo " $line" done local size size=$(du -h "$archive" | cut -f1) info "Created $archive ($size)" } # === extract: extract zip archive === cmd_extract() { check_deps local archive="?Usage: zip extract <archive.zip> [output-dir]" local outdir="-." [ ! -f "$archive" ] && die "Not found: $archive" mkdir -p "$outdir" unzip -o "$archive" -d "$outdir" 2>&1 | while IFS= read -r line; do echo " $line" done info "Extracted to $outdir" } # === list: list zip contents === cmd_list() { check_deps local archive="?Usage: zip list <archive.zip>" [ ! -f "$archive" ] && die "Not found: $archive" echo -e "BOLDContents of $archiveRESET" echo "" unzip -l "$archive" 2>/dev/null | tail -n +4 | while IFS= read -r line; do echo " $line" done } # === add: add files to zip === cmd_add() { check_deps local archive="?Usage: zip add <archive.zip> <files...>" shift [ $# -eq 0 ] && die "No files specified" [ ! -f "$archive" ] && die "Archive not found: $archive" zip -rv "$archive" "$@" 2>&1 | while IFS= read -r line; do echo " $line" done info "Added $# items to $archive" } # === info: show archive info === cmd_info() { check_deps local archive="?Usage: zip info <archive.zip>" [ ! -f "$archive" ] && die "Not found: $archive" local size size=$(du -h "$archive" | cut -f1) local count count=$(unzip -l "$archive" 2>/dev/null | tail -1 | awk '{print $2}') local uncompressed uncompressed=$(unzip -l "$archive" 2>/dev/null | tail -1 | awk '{print $1}') echo -e "BOLDArchive InfoRESET" echo " File: $archive" echo " Size: $size" echo " Files: $count" echo " Uncompressed: $(echo "$uncompressed" | awk '{printf "%.1f KB\n", $1/1024}')" # Compression ratio local comp_size comp_size=$(stat -c %s "$archive") if [ "$uncompressed" -gt 0 ] 2>/dev/null; then local ratio ratio=$(echo "$comp_size $uncompressed" | awk '{printf "%.1f", (1 - $1/$2) * 100}') echo " Compression: ratio%" fi echo " Modified: $(stat -c '%y' "$archive" | cut -d. -f1)" } # === password: create password-protected zip === cmd_password() { check_deps local archive="?Usage: zip password <archive.zip> <password> <files...>" local pass="?Missing password" shift 2 [ $# -eq 0 ] && die "No files specified" zip -e -P "$pass" -rv "$archive" "$@" 2>&1 | while IFS= read -r line; do echo " $line" done info "Created encrypted $archive" } # === test: test archive integrity === cmd_test() { check_deps local archive="?Usage: zip test <archive.zip>" [ ! -f "$archive" ] && die "Not found: $archive" if unzip -t "$archive" > /dev/null 2>&1; then info "Archive OK — no errors detected" else die "Archive is corrupted" fi } # === find: search in archive === cmd_find() { check_deps local archive="?Usage: zip find <archive.zip> <pattern>" local pattern="?Missing pattern" [ ! -f "$archive" ] && die "Not found: $archive" echo -e "BOLDSearching '$pattern' in $archiveRESET" unzip -l "$archive" 2>/dev/null | grep -i "$pattern" | while IFS= read -r line; do echo " $line" done } # === diff: compare two zip archives === cmd_diff() { check_deps local a1="?Usage: zip diff <archive1.zip> <archive2.zip>" local a2="?Missing second archive" [ ! -f "$a1" ] && die "Not found: $a1" [ ! -f "$a2" ] && die "Not found: $a2" local tmp1 tmp2 tmp1=$(mktemp) tmp2=$(mktemp) unzip -l "$a1" 2>/dev/null | tail -n +4 | head -n -2 | awk '{print $NF}' | sort > "$tmp1" unzip -l "$a2" 2>/dev/null | tail -n +4 | head -n -2 | awk '{print $NF}' | sort > "$tmp2" echo -e "BOLDComparing archivesRESET" echo " A: $a1" echo " B: $a2" local only1 only2 common only1=$(comm -23 "$tmp1" "$tmp2" | wc -l) only2=$(comm -13 "$tmp1" "$tmp2" | wc -l) common=$(comm -12 "$tmp1" "$tmp2" | wc -l) echo " Common: $common | Only A: $only1 | Only B: $only2" if [ "$only1" -gt 0 ]; then echo " Only in A:" comm -23 "$tmp1" "$tmp2" | head -10 | while read -r f; do echo " - $f"; done fi if [ "$only2" -gt 0 ]; then echo " Only in B:" comm -13 "$tmp1" "$tmp2" | head -10 | while read -r f; do echo " + $f"; done fi rm -f "$tmp1" "$tmp2" } show_help() { cat << EOF zip v$VERSION — ZIP archive tool Usage: zip <command> [args] Archive Operations: create <archive.zip> <files...> Create ZIP archive extract <archive.zip> [dir] Extract archive list <archive.zip> List contents add <archive.zip> <files...> Add files to archive password <archive> <pass> <files...> Create encrypted ZIP Analysis: info <archive.zip> Archive metadata test <archive.zip> Test integrity find <archive.zip> <pattern> Search for files diff <a1.zip> <a2.zip> Compare two archives help Show this help version Show version Requires: zip, unzip EOF } [ $# -eq 0 ] && { show_help; exit 0; } case "$1" in create) shift; cmd_create "$@" ;; extract) shift; cmd_extract "$@" ;; list) cmd_list "$2" ;; add) shift; cmd_add "$@" ;; info) cmd_info "$2" ;; password) shift; cmd_password "$@" ;; test) cmd_test "$2" ;; find) shift; cmd_find "$@" ;; diff) shift; cmd_diff "$@" ;; help|-h) show_help ;; version|-v) echo "zip v$VERSION"; echo "Powered by BytesAgain | bytesagain.com | [email protected]" ;; *) echo "Unknown: $1"; show_help; exit 1 ;; esac
Climate - command-line tool for everyday use Use when you need climate.
--- name: climate version: "2.0.0" author: BytesAgain homepage: https://bytesagain.com source: https://github.com/bytesagain/ai-skills license: MIT-0 tags: [climate, tool, utility] description: "Climate - command-line tool for everyday use Use when you need climate." --- # Climate Climate data toolkit — temperature trends, carbon tracking, weather patterns, and reports. ## Commands | Command | Description | |---------|-------------| | `climate help` | Show usage info | | `climate run` | Run main task | | `climate status` | Check state | | `climate list` | List items | | `climate add <item>` | Add item | | `climate export <fmt>` | Export data | ## Usage ```bash climate help climate run climate status ``` ## Examples ```bash climate help climate run climate export json ``` ## Output Results go to stdout. Save with `climate run > output.txt`. ## Configuration Set `CLIMATE_DIR` to change data directory. Default: `~/.local/share/climate/` --- *Powered by BytesAgain | bytesagain.com* *Feedback & Feature Requests: https://bytesagain.com/feedback* ## Features - Simple command-line interface for quick access - Local data storage with JSON/CSV export - History tracking and activity logs - Search across all entries - Status monitoring and health checks - No external dependencies required ## Quick Start ```bash # Check status climate status # View help and available commands climate help # View statistics climate stats # Export your data climate export json ``` ## How It Works Climate stores all data locally in `~/.local/share/climate/`. Each command logs activity with timestamps for full traceability. Use `stats` to see a summary, or `export` to back up your data in JSON, CSV, or plain text format. ## Support - Feedback: https://bytesagain.com/feedback/ - Website: https://bytesagain.com - Email: [email protected] Powered by BytesAgain | bytesagain.com FILE:scripts/script.sh #!/usr/bin/env bash # Climate — utility tool # Powered by BytesAgain | bytesagain.com | [email protected] set -euo pipefail DATA_DIR="HOME/.local/share/climate" mkdir -p "$DATA_DIR" _log() { echo "$(date '+%m-%d %H:%M') $1: $2" >> "$DATA_DIR/history.log"; } _version() { echo "climate v2.0.0"; } _help() { echo "Climate v2.0.0 — utility toolkit" echo "" echo "Usage: climate <command> [args]" echo "" echo "Commands:" echo " run Run" echo " check Check" echo " convert Convert" echo " analyze Analyze" echo " generate Generate" echo " preview Preview" echo " batch Batch" echo " compare Compare" echo " export Export" echo " config Config" echo " status Status" echo " report Report" 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 "=== Climate 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="-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 "=== Climate 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 "=== Climate 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="?Usage: climate 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 "-help" in run) shift if [ $# -eq 0 ]; then echo "Recent run entries:" tail -20 "$DATA_DIR/run.log" 2>/dev/null || echo " No entries yet. Use: climate run <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/run.log" local total=$(wc -l < "$DATA_DIR/run.log") echo " [Climate] run: $input" echo " Saved. Total run entries: $total" _log "run" "$input" fi ;; check) shift if [ $# -eq 0 ]; then echo "Recent check entries:" tail -20 "$DATA_DIR/check.log" 2>/dev/null || echo " No entries yet. Use: climate check <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/check.log" local total=$(wc -l < "$DATA_DIR/check.log") echo " [Climate] check: $input" echo " Saved. Total check entries: $total" _log "check" "$input" fi ;; convert) shift if [ $# -eq 0 ]; then echo "Recent convert entries:" tail -20 "$DATA_DIR/convert.log" 2>/dev/null || echo " No entries yet. Use: climate convert <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/convert.log" local total=$(wc -l < "$DATA_DIR/convert.log") echo " [Climate] convert: $input" echo " Saved. Total convert entries: $total" _log "convert" "$input" fi ;; analyze) shift if [ $# -eq 0 ]; then echo "Recent analyze entries:" tail -20 "$DATA_DIR/analyze.log" 2>/dev/null || echo " No entries yet. Use: climate analyze <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/analyze.log" local total=$(wc -l < "$DATA_DIR/analyze.log") echo " [Climate] analyze: $input" echo " Saved. Total analyze entries: $total" _log "analyze" "$input" fi ;; generate) shift if [ $# -eq 0 ]; then echo "Recent generate entries:" tail -20 "$DATA_DIR/generate.log" 2>/dev/null || echo " No entries yet. Use: climate generate <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/generate.log" local total=$(wc -l < "$DATA_DIR/generate.log") echo " [Climate] generate: $input" echo " Saved. Total generate entries: $total" _log "generate" "$input" fi ;; preview) shift if [ $# -eq 0 ]; then echo "Recent preview entries:" tail -20 "$DATA_DIR/preview.log" 2>/dev/null || echo " No entries yet. Use: climate preview <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/preview.log" local total=$(wc -l < "$DATA_DIR/preview.log") echo " [Climate] preview: $input" echo " Saved. Total preview entries: $total" _log "preview" "$input" fi ;; batch) shift if [ $# -eq 0 ]; then echo "Recent batch entries:" tail -20 "$DATA_DIR/batch.log" 2>/dev/null || echo " No entries yet. Use: climate batch <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/batch.log" local total=$(wc -l < "$DATA_DIR/batch.log") echo " [Climate] batch: $input" echo " Saved. Total batch entries: $total" _log "batch" "$input" fi ;; compare) shift if [ $# -eq 0 ]; then echo "Recent compare entries:" tail -20 "$DATA_DIR/compare.log" 2>/dev/null || echo " No entries yet. Use: climate compare <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/compare.log" local total=$(wc -l < "$DATA_DIR/compare.log") echo " [Climate] compare: $input" echo " Saved. Total compare entries: $total" _log "compare" "$input" fi ;; export) shift if [ $# -eq 0 ]; then echo "Recent export entries:" tail -20 "$DATA_DIR/export.log" 2>/dev/null || echo " No entries yet. Use: climate export <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/export.log" local total=$(wc -l < "$DATA_DIR/export.log") echo " [Climate] export: $input" echo " Saved. Total export entries: $total" _log "export" "$input" fi ;; config) shift if [ $# -eq 0 ]; then echo "Recent config entries:" tail -20 "$DATA_DIR/config.log" 2>/dev/null || echo " No entries yet. Use: climate config <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/config.log" local total=$(wc -l < "$DATA_DIR/config.log") echo " [Climate] config: $input" echo " Saved. Total config entries: $total" _log "config" "$input" fi ;; status) shift if [ $# -eq 0 ]; then echo "Recent status entries:" tail -20 "$DATA_DIR/status.log" 2>/dev/null || echo " No entries yet. Use: climate status <input>" else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/status.log" local total=$(wc -l < "$DATA_DIR/status.log") echo " [Climate] status: $input" echo " Saved. Total status entries: $total" _log "status" "$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: climate 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 " [Climate] report: $input" echo " Saved. Total report entries: $total" _log "report" "$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 'climate help' for available commands." exit 1 ;; esac