Skip to content
Back to skills

Init

ASecurity

Initialize mind-reader plugin - creates directories, generates baseline script, runs initial computation

  • 6 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added February 7, 2026
toolspythonbash

Works with

  • claude code
  • cli

Security analysis

A93/100
  • highCreates or modifies cron jobs for persistent execution

Pro shows the line behind each finding and how to fix it

Scanned February 10, 2026

npx -y skills add rjroy/vibe-garden --skill init --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Init?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Init
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/rjroy-init/badge)](https://www.skillsdirectory.com/skills/rjroy-init)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
description: Initialize mind-reader plugin - creates directories, generates baseline script, runs initial computation
user-invocable: true
---

# Initialize mind-reader

Set up the mind-reader plugin for first use.

## Steps

0. **Check and install sentiment analysis (optional)**

Check if vaderSentiment is available:

```bash
python3 -c "from vaderSentiment.vaderSentiment import SentimentIntensityAnalyzer; print('VADER available')" 2>/dev/null || echo "VADER not installed"
```

If not installed, ask the user if they want sentiment analysis:
- **Yes**: Install vaderSentiment into the plugin's venv:
  ```bash
  cd ${CLAUDE_PLUGIN_ROOT}
  uv sync --group sentiment
  ```
  Then update the hook shebang to use the plugin's Python:
  ```bash
  sed -i "1s|.*|#!${CLAUDE_PLUGIN_ROOT}/.venv/bin/python3|" ${CLAUDE_PLUGIN_ROOT}/scripts/hook.py
  sed -i "1s|.*|#!${CLAUDE_PLUGIN_ROOT}/.venv/bin/python3|" ${CLAUDE_PLUGIN_ROOT}/scripts/baseline.py
  ```
- **No**: Skip. Temporal detection (session duration, prompt count, unusual hours) works without it.

1. **Create directory structure**

Create the mind-reader data directory:

```bash
mkdir -p ~/.claude/mind-reader/sessions
```

2. **Generate update-baseline.sh script**

Create the baseline update script at `~/.claude/mind-reader/update-baseline.sh`:

```bash
#!/bin/bash
# Update mind-reader baseline from Claude Code history
# Run via cron: 0 3 * * * ~/.claude/mind-reader/update-baseline.sh

PLUGIN_CACHE="$HOME/.claude/plugins/cache/vibe-garden/mind-reader"

# Find latest version (sort -V handles semantic versioning)
if [ -d "$PLUGIN_CACHE" ]; then
    LATEST_VERSION=$(ls "$PLUGIN_CACHE" | sort -V | tail -1)
    PLUGIN_ROOT="$PLUGIN_CACHE/$LATEST_VERSION"
else
    echo "Error: Plugin cache not found at $PLUGIN_CACHE" >&2
    exit 1
fi

# Use plugin's venv Python if available, otherwise system python3
if [ -x "$PLUGIN_ROOT/.venv/bin/python3" ]; then
    PYTHON="$PLUGIN_ROOT/.venv/bin/python3"
else
    PYTHON="python3"
fi

"$PYTHON" "$PLUGIN_ROOT/scripts/baseline.py"
```

Make it executable:

```bash
chmod +x ~/.claude/mind-reader/update-baseline.sh
```

3. **Validate history.jsonl**

Check that `~/.claude/history.jsonl` exists and is valid:

```bash
if [ ! -f ~/.claude/history.jsonl ]; then
    echo "Error: ~/.claude/history.jsonl not found."
    echo "Claude Code creates this file automatically when used."
    exit 1
fi

# Check it's valid JSON lines (sample first 10 lines)
head -10 ~/.claude/history.jsonl | while read line; do
    echo "$line" | python3 -c "import sys,json; json.load(sys.stdin)" 2>/dev/null || {
        echo "Warning: history.jsonl may contain invalid JSON"
        break
    }
done
```

4. **Run initial baseline computation**

Run the baseline computation script (using the same Python as the hook):

```bash
${CLAUDE_PLUGIN_ROOT}/scripts/baseline.py
```

If fewer than 10 sessions exist, warn the user:
> Your history has fewer than 10 sessions. Baseline statistics may be unreliable. Continue using Claude Code normally and re-run `/mind-reader:init` later for better baseline data.

5. **Create default settings.json**

If `~/.claude/mind-reader/settings.json` doesn't exist, create it with defaults:

```json
{
  "enabled": true,
  "temporal": {
    "enabled": true,
    "duration_threshold": "p95",
    "prompt_threshold": "p95",
    "check_hours": true
  },
  "sentiment": {
    "enabled": true,
    "window_size": 5,
    "threshold": -0.2,
    "min_prompts": 3,
    "cooldown_prompts": 10
  },
  "quiet_until": null
}
```

6. **Output crontab entry**

Display the crontab entry for the user to add manually:

```
Add this line to your crontab (run `crontab -e`):

0 3 * * * ~/.claude/mind-reader/update-baseline.sh >> ~/.claude/mind-reader/cron.log 2>&1

This runs the baseline update daily at 3 AM.
```

## Success Criteria

- `~/.claude/mind-reader/` directory exists with `sessions/` subdirectory
- `update-baseline.sh` is executable
- `baseline.json` exists (even if with `insufficient_data: true`)
- `settings.json` exists with default values
- Crontab entry is displayed for user to add

## Notes

- The plugin does NOT auto-modify crontab (user must add manually)
- Sentiment analysis (VADER) is optional; temporal detection works without it
- If user declines sentiment setup, set `sentiment.enabled: false` in settings.json
- Settings can be customized by editing `~/.claude/mind-reader/settings.json`

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.