The straight-forward installation guide. No fluff.
- Claude Code installed and running
- Git (for GitHub marketplace)
- Trust enabled for your repositories (for team installation)
That's it. No Python environment needed—schlock is a Claude Code plugin with vendored dependencies.
Install schlock for your personal use across all projects.
# Add the GitHub marketplace
/plugin marketplace add 27Bslash6/schlock
# Install the plugin
/plugin install schlock@schlock
# Run setup wizard
/schlock:setupWhat just happened:
- Added 27Bslash6/schlock GitHub repo as a plugin marketplace
- Installed schlock from that marketplace
- Setup wizard configures advertising blocker and creates
.claude/hooks/schlock-config.yaml
# Add the marketplace
/plugin marketplace add 27Bslash6/schlock
# Open plugin browser
/plugin
# Select "Browse Plugins" → find schlock → installThen run /schlock:setup to configure.
# Check available commands (should see /schlock:setup, /schlock:validate)
/help
# Check plugin status
/plugin
# → "Manage Plugins" → schlock should be listed and enabledFile created:
.claude/hooks/schlock-config.yaml(after running setup wizard)
What's working:
- Safety validation (always on, automatic)
- Audit logging (always on, automatic)
- Advertising blocker (if enabled in wizard)
Ensure all team members get schlock automatically when they trust your repository.
Add to .claude/settings.json in your repository root:
{
"extraKnownMarketplaces": {
"schlock": {
"source": {
"source": "github",
"repo": "27Bslash6/schlock"
}
}
},
"plugins": {
"schlock@schlock": {
"enabled": true
}
}
}What this does:
extraKnownMarketplaces: Makes the schlock marketplace availableplugins: Automatically installs and enables schlock when repo is trusted
git add .claude/settings.json
git commit -m "Add schlock plugin for team"
git pushWhen team members clone/pull your repository:
- Claude Code prompts: "Do you trust this repository folder?"
- They click: "Trust folder"
- Automatic install: Claude Code installs schlock marketplace and plugin
- Run setup: Team members run
/schlock:setupto configure preferences
Important: Each team member still runs /schlock:setup individually to set their preferences (e.g., advertising blocker on/off).
To enforce team-wide settings, commit .claude/hooks/schlock-config.yaml:
# Generate config via wizard
/schlock:setup
# Commit shared config
git add .claude/hooks/schlock-config.yaml
git commit -m "Add team schlock configuration"
git pushTeam members inherit this config but can override in ~/.config/schlock/config.yaml.
Schlock uses a three-layer configuration system (highest priority last):
- Plugin defaults:
data/safety_rules.yaml(read-only, shipped with plugin) - User overrides:
~/.config/schlock/config.yaml(personal preferences) - Project overrides:
.claude/hooks/schlock-config.yaml(per-project, shared with team)
Example workflow:
- Plugin ships with advertising blocker enabled
- User disables it globally in
~/.config/schlock/config.yaml - Project requires it in
.claude/hooks/schlock-config.yaml(takes precedence)
See CONFIGURATION.md for advanced configuration options.
/schlock:setupWizard configures:
- Advertising blocker (enable/disable)
- Generates
.claude/hooks/schlock-config.yaml - Backs up previous config (if exists)
Wizard output:
# Auto-generated by /schlock:setup wizard
_metadata:
generated_at: "2025-12-01T12:00:00Z"
wizard_version: "0.2.1"
last_modified_by: "setup-wizard"
commit_filter:
enabled: true
rules:
advertising:
enabled: true # or false, based on your choiceRe-run /schlock:setup to change settings. Previous config is backed up automatically:
- Backup location:
.claude/hooks/schlock-config.yaml.backup.YYYYMMDDTHHMMSS
After installation, verify schlock is working:
-
/helpshows/schlock:setupand/schlock:validatecommands -
/pluginshows schlock as enabled -
.claude/hooks/schlock-config.yamlexists (after wizard) - Test blocked command: Claude should refuse
Bash(rm -rf /) - Audit log created:
~/.config/schlock/audit.jsonlexists after command validation - (If enabled) Advertising blocker works: Try committing with "Generated with Claude Code" in message
Check marketplace:
/plugin marketplace list
# Should see "schlock" (from 27Bslash6/schlock)Re-add marketplace:
/plugin marketplace remove schlock
/plugin marketplace add 27Bslash6/schlock
/plugin install schlock@schlockVerify plugin is enabled:
/plugin
# → "Manage Plugins" → check schlock statusEnable if disabled:
/plugin enable schlock@schlockCheck directory permissions:
# Ensure .claude/hooks/ is writable
mkdir -p .claude/hooks
ls -la .claude/hooks/Manual config:
Create .claude/hooks/schlock-config.yaml manually:
_metadata:
generated_at: "2025-12-01T12:00:00Z"
wizard_version: "0.2.1"
last_modified_by: "manual"
commit_filter:
enabled: true
rules:
advertising:
enabled: trueCheck .claude/settings.json syntax:
# Validate JSON
python -m json.tool .claude/settings.jsonEnsure repository is trusted:
- Claude Code must prompt to trust the repository
- If already trusted, try closing/reopening the folder
- Check Claude Code logs for trust-related errors
Check hook is registered:
# Verify hooks/pre_tool_use.py exists in plugin directory
/plugin
# → "Manage Plugins" → schlock → check hooksCheck audit log:
# Should show validation attempts
cat ~/.config/schlock/audit.jsonlIf empty, hook isn't running. File a bug at: https://github.com/27Bslash6/schlock/issues
/plugin uninstall schlock@schlockWhat's removed:
- Plugin files from Claude Code
- Slash commands (
/schlock:setup,/schlock:validate) - Hooks (no more safety validation)
What's kept:
- Configuration files:
.claude/hooks/schlock-config.yaml,~/.config/schlock/config.yaml - Audit logs:
~/.config/schlock/audit.jsonl
# Remove project config
rm .claude/hooks/schlock-config.yaml
rm .claude/hooks/schlock-config.yaml.backup.*
# Remove user config (optional)
rm ~/.config/schlock/config.yaml
# Remove audit logs (optional)
rm ~/.config/schlock/audit.jsonl/plugin marketplace remove schlockAfter installation:
- Configure preferences: Run
/schlock:setup - Test blocking: Try
Bash(rm -rf /)(Claude should refuse) - Review rules: Check
data/safety_rules.yamlfor all 40 security rules - Customize: See CONFIGURATION.md for advanced options
- Share with team: Add to
.claude/settings.jsonfor automatic team installation
- Issues: https://github.com/27Bslash6/schlock/issues
- Discussions: https://github.com/27Bslash6/schlock/discussions
- Security: security@27b.io
- Documentation: README.md | CONFIGURATION.md