add
This commit is contained in:
222
docs/advanced-setup.md
Normal file
222
docs/advanced-setup.md
Normal file
@ -0,0 +1,222 @@
|
||||
# Claude Code Advanced Setup Guide
|
||||
|
||||
## 🔧 Terminal環境との統合
|
||||
|
||||
### tmux統合
|
||||
```bash
|
||||
# .tmux.conf に追加
|
||||
bind-key c command-prompt -p "claude prompt:" "new-window 'claude \"%1\"'"
|
||||
bind-key C send-keys "claude " C-m
|
||||
|
||||
# Claude Code専用のtmuxセッション
|
||||
alias claude-session='tmux new-session -s claude -d "claude --resume" \; attach'
|
||||
```
|
||||
|
||||
### Vim/Neovim統合
|
||||
```vim
|
||||
" .vimrc または init.vim
|
||||
" Claude Codeに現在のファイルを送る
|
||||
nnoremap <leader>cc :!claude "このコードをレビューして: $(cat %)"<CR>
|
||||
nnoremap <leader>ce :!claude "このエラーを解決して: $(cat %)"<CR>
|
||||
|
||||
" 選択範囲をClaude Codeに送る
|
||||
vnoremap <leader>cs :w !claude "この部分を説明して"<CR>
|
||||
```
|
||||
|
||||
## 🤖 AI連携パターン
|
||||
|
||||
### 1. ChatGPT → Claude Code パイプライン
|
||||
```bash
|
||||
# ChatGPTの会話ログをClaude Codeに渡す
|
||||
function ai-handoff() {
|
||||
local chatgpt_log="$1"
|
||||
claude "以下のChatGPTとの会話を踏まえて、実装を進めてください: $(cat $chatgpt_log)"
|
||||
}
|
||||
|
||||
# 使用例
|
||||
ai-handoff ~/chatgpt-logs/feature-design.md
|
||||
```
|
||||
|
||||
### 2. 複数AIの比較検証
|
||||
```bash
|
||||
# 同じプロンプトを複数のAIに送る
|
||||
function ai-compare() {
|
||||
local prompt="$1"
|
||||
echo "=== Claude Code ===" > ai-comparison.md
|
||||
claude "$prompt" >> ai-comparison.md
|
||||
echo -e "\n=== ChatGPT ===" >> ai-comparison.md
|
||||
# ChatGPT CLIがある場合
|
||||
# chatgpt "$prompt" >> ai-comparison.md
|
||||
}
|
||||
```
|
||||
|
||||
## 🔌 MCP (Model Context Protocol) 活用
|
||||
|
||||
### 基本的なMCPツール設定
|
||||
```json
|
||||
// ~/.claude/claude_desktop_config.json
|
||||
{
|
||||
"mcpServers": {
|
||||
"filesystem": {
|
||||
"command": "npx",
|
||||
"args": ["-y", "@modelcontextprotocol/server-filesystem"],
|
||||
"env": {
|
||||
"FILESYSTEM_ROOT": "/home/user/projects"
|
||||
}
|
||||
},
|
||||
"github": {
|
||||
"command": "npx",
|
||||
"args": ["-y", "@modelcontextprotocol/server-github"],
|
||||
"env": {
|
||||
"GITHUB_TOKEN": "your-token"
|
||||
}
|
||||
},
|
||||
"postgres": {
|
||||
"command": "npx",
|
||||
"args": ["-y", "@modelcontextprotocol/server-postgres"],
|
||||
"env": {
|
||||
"DATABASE_URL": "postgresql://localhost/mydb"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### カスタムMCPサーバー例
|
||||
```python
|
||||
# custom-mcp-server.py
|
||||
import asyncio
|
||||
from mcp.server import Server
|
||||
from mcp.types import Tool, TextContent
|
||||
|
||||
app = Server("custom-tools")
|
||||
|
||||
@app.tool()
|
||||
async def search_codebase(query: str) -> TextContent:
|
||||
"""コードベース全体を検索"""
|
||||
result = await asyncio.create_subprocess_exec(
|
||||
"rg", query, "--json",
|
||||
stdout=asyncio.subprocess.PIPE
|
||||
)
|
||||
stdout, _ = await result.communicate()
|
||||
return TextContent(text=stdout.decode())
|
||||
|
||||
if __name__ == "__main__":
|
||||
app.run()
|
||||
```
|
||||
|
||||
## 🚀 実践的なワークフロー
|
||||
|
||||
### 1. ドキュメント駆動開発
|
||||
```bash
|
||||
# ChatGPTで設計 → Claude Codeで実装
|
||||
function design-to-code() {
|
||||
local design_doc="$1"
|
||||
|
||||
# 設計ドキュメントをCLAUDE.mdに追加
|
||||
echo "## 設計仕様" >> CLAUDE.md
|
||||
cat "$design_doc" >> CLAUDE.md
|
||||
|
||||
# Claude Codeセッション開始
|
||||
claude "この設計に基づいて実装を開始してください"
|
||||
}
|
||||
```
|
||||
|
||||
### 2. エラー解決フロー
|
||||
```bash
|
||||
# エラーログを自動的にClaude Codeに送る
|
||||
function debug-with-claude() {
|
||||
local error_log="/tmp/last-error.log"
|
||||
|
||||
# エラーをキャプチャ
|
||||
"$@" 2> "$error_log"
|
||||
|
||||
if [ $? -ne 0 ]; then
|
||||
claude "このエラーを解決してください: $(cat $error_log)"
|
||||
fi
|
||||
}
|
||||
|
||||
# 使用例
|
||||
debug-with-claude npm test
|
||||
```
|
||||
|
||||
### 3. コードレビュー自動化
|
||||
```bash
|
||||
# Git pre-commit hook
|
||||
#!/bin/bash
|
||||
# .git/hooks/pre-commit
|
||||
|
||||
changed_files=$(git diff --cached --name-only)
|
||||
if [ -n "$changed_files" ]; then
|
||||
echo "$changed_files" | xargs cat | \
|
||||
claude "これらの変更をレビューして、問題があれば指摘してください"
|
||||
fi
|
||||
```
|
||||
|
||||
## 🔧 Arch Linux / macOS 固有の設定
|
||||
|
||||
### Arch Linux
|
||||
```bash
|
||||
# AURヘルパーとの統合
|
||||
function aur-with-claude() {
|
||||
local package="$1"
|
||||
yay -G "$package"
|
||||
cd "$package"
|
||||
claude "このPKGBUILDをレビューして、セキュリティ上の問題がないか確認してください"
|
||||
}
|
||||
```
|
||||
|
||||
### macOS
|
||||
```bash
|
||||
# Homebrew formula作成支援
|
||||
function brew-formula-helper() {
|
||||
local app_name="$1"
|
||||
claude "Homebrew formulaを作成してください: $app_name"
|
||||
}
|
||||
```
|
||||
|
||||
## 📊 パフォーマンス最適化
|
||||
|
||||
### tmuxでの並列実行
|
||||
```bash
|
||||
# 複数のClaude Codeセッションを並列実行
|
||||
function claude-parallel() {
|
||||
tmux new-session -d -s claude1 "claude 'タスク1を実行'"
|
||||
tmux new-session -d -s claude2 "claude 'タスク2を実行'"
|
||||
tmux new-session -d -s claude3 "claude 'タスク3を実行'"
|
||||
}
|
||||
```
|
||||
|
||||
### リソース監視
|
||||
```bash
|
||||
# Claude Code実行中のリソース使用状況を監視
|
||||
function claude-monitor() {
|
||||
claude "$@" &
|
||||
local pid=$!
|
||||
|
||||
while kill -0 $pid 2>/dev/null; do
|
||||
ps -p $pid -o %cpu,%mem,cmd
|
||||
sleep 1
|
||||
done
|
||||
}
|
||||
```
|
||||
|
||||
## 🔐 セキュリティ考慮事項
|
||||
|
||||
1. **APIキーの管理**
|
||||
```bash
|
||||
# 環境変数を使用
|
||||
export ANTHROPIC_API_KEY="$(pass show anthropic/api-key)"
|
||||
```
|
||||
|
||||
2. **サンドボックス実行**
|
||||
```bash
|
||||
# Firejailを使用 (Arch Linux)
|
||||
alias claude-safe='firejail --private claude'
|
||||
```
|
||||
|
||||
3. **監査ログ**
|
||||
```bash
|
||||
# すべてのClaude Codeセッションを記録
|
||||
alias claude='script -a ~/claude-logs/$(date +%Y%m%d-%H%M%S).log claude'
|
||||
```
|
104
docs/guides/archlinux-safety.md
Normal file
104
docs/guides/archlinux-safety.md
Normal file
@ -0,0 +1,104 @@
|
||||
# Arch LinuxでのClaude Code安全利用ガイド
|
||||
|
||||
## 推奨セットアップ
|
||||
|
||||
### 1. systemd-nspawnコンテナ(最も推奨)
|
||||
|
||||
```bash
|
||||
# インストール
|
||||
sudo pacman -S arch-install-scripts systemd-container
|
||||
|
||||
# コンテナ作成
|
||||
sudo mkdir -p /var/lib/machines/claude-sandbox
|
||||
sudo pacstrap -c /var/lib/machines/claude-sandbox base base-devel git nodejs npm python
|
||||
|
||||
# コンテナ起動
|
||||
sudo systemd-nspawn -bD /var/lib/machines/claude-sandbox
|
||||
|
||||
# ホストディレクトリをバインド
|
||||
sudo systemd-nspawn -bD /var/lib/machines/claude-sandbox \
|
||||
--bind-ro=/home/$USER/projects:/projects
|
||||
```
|
||||
|
||||
### 2. Firejailサンドボックス
|
||||
|
||||
```bash
|
||||
# インストール
|
||||
sudo pacman -S firejail
|
||||
|
||||
# 基本的な使用
|
||||
firejail --noprofile --private claude
|
||||
|
||||
# より厳格な設定
|
||||
firejail --noprofile --private --noroot --nosound --no3d claude
|
||||
```
|
||||
|
||||
### 3. 安全なpacmanフック
|
||||
|
||||
`/etc/pacman.d/hooks/claude-safety.hook`:
|
||||
```ini
|
||||
[Trigger]
|
||||
Operation = Install
|
||||
Operation = Upgrade
|
||||
Operation = Remove
|
||||
Type = Package
|
||||
Target = *
|
||||
|
||||
[Action]
|
||||
Description = Claude Code安全チェック
|
||||
When = PreTransaction
|
||||
Exec = /usr/local/bin/claude-pacman-check.sh
|
||||
```
|
||||
|
||||
### 4. ZFSまたはBtrfsスナップショット
|
||||
|
||||
```bash
|
||||
# Btrfsの場合
|
||||
sudo btrfs subvolume snapshot -r / /.snapshots/$(date +%Y%m%d-%H%M%S)
|
||||
|
||||
# 自動スナップショット
|
||||
sudo pacman -S snapper
|
||||
sudo snapper -c root create-config /
|
||||
sudo snapper -c root create --description "Before Claude Code"
|
||||
```
|
||||
|
||||
### 5. 監査とロギング
|
||||
|
||||
```bash
|
||||
# auditdで監視
|
||||
sudo pacman -S audit
|
||||
sudo systemctl enable --now auditd
|
||||
|
||||
# 特定のコマンドを監査
|
||||
sudo auditctl -a always,exit -F path=/usr/bin/rm -F perm=x
|
||||
```
|
||||
|
||||
## Claude Code設定
|
||||
|
||||
`~/.claude/settings.json`:
|
||||
```json
|
||||
{
|
||||
"hooks": {
|
||||
"before_bash": "/usr/local/bin/claude-arch-safety-check.sh"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## 緊急時の復旧
|
||||
|
||||
1. **Btrfsスナップショットから復元**
|
||||
```bash
|
||||
sudo btrfs subvolume list /
|
||||
sudo btrfs subvolume set-default <ID> /
|
||||
```
|
||||
|
||||
2. **systemd-nspawnコンテナのリセット**
|
||||
```bash
|
||||
sudo rm -rf /var/lib/machines/claude-sandbox
|
||||
# 再作成
|
||||
```
|
||||
|
||||
3. **パッケージの整合性チェック**
|
||||
```bash
|
||||
sudo pacman -Qkk
|
||||
```
|
141
docs/guides/custom-commands.md
Normal file
141
docs/guides/custom-commands.md
Normal file
@ -0,0 +1,141 @@
|
||||
# Claude Code カスタムコマンドガイド
|
||||
|
||||
## 概要
|
||||
|
||||
Claude Codeでは、プロジェクト固有またはユーザー固有のカスタムスラッシュコマンドを作成できます。
|
||||
|
||||
## カスタムコマンドの種類
|
||||
|
||||
### 1. プロジェクトコマンド
|
||||
- 場所: `.claude/commands/`
|
||||
- プレフィックス: `/project:`
|
||||
- スコープ: 現在のプロジェクト内
|
||||
|
||||
### 2. ユーザーコマンド
|
||||
- 場所: `~/.claude/commands/`
|
||||
- プレフィックス: `/user:`
|
||||
- スコープ: すべてのプロジェクト
|
||||
|
||||
## 作成したカスタムコマンド
|
||||
|
||||
### 基本ヘルプ
|
||||
```
|
||||
/project:help
|
||||
```
|
||||
Claude Codeの拡張ヘルプを表示します。
|
||||
|
||||
### カテゴリ別ヘルプ
|
||||
```
|
||||
/project:help/shortcuts # ショートカットキー詳細
|
||||
/project:help/quickref # クイックリファレンス
|
||||
/project:help/safety # 安全利用ガイド
|
||||
```
|
||||
|
||||
## カスタムコマンドの作成方法
|
||||
|
||||
### 基本構造
|
||||
```markdown
|
||||
---
|
||||
name: コマンド名
|
||||
description: コマンドの説明
|
||||
bash: 実行前のbashコマンド(オプション)
|
||||
---
|
||||
|
||||
# コマンドの内容
|
||||
|
||||
ここにMarkdown形式でコマンドの内容を記述
|
||||
```
|
||||
|
||||
### 例: 新しいコマンドの作成
|
||||
```bash
|
||||
# プロジェクトコマンドとして作成
|
||||
mkdir -p .claude/commands
|
||||
echo "プロジェクト固有の情報" > .claude/commands/project-info.md
|
||||
|
||||
# ユーザーコマンドとして作成
|
||||
mkdir -p ~/.claude/commands
|
||||
echo "個人的なスニペット" > ~/.claude/commands/snippets.md
|
||||
```
|
||||
|
||||
## 高度な機能
|
||||
|
||||
### 1. 引数の使用
|
||||
```markdown
|
||||
---
|
||||
name: search
|
||||
description: コードベースを検索
|
||||
---
|
||||
|
||||
$ARGUMENTSを検索します。
|
||||
```
|
||||
|
||||
使用例: `/project:search TODO`
|
||||
|
||||
### 2. bashコマンドの実行
|
||||
```markdown
|
||||
---
|
||||
bash: date +"%Y-%m-%d %H:%M:%S"
|
||||
---
|
||||
|
||||
現在時刻: $BASH_OUTPUT
|
||||
```
|
||||
|
||||
### 3. ファイル参照
|
||||
```markdown
|
||||
---
|
||||
name: readme
|
||||
---
|
||||
|
||||
@README.md
|
||||
|
||||
上記はプロジェクトのREADMEです。
|
||||
```
|
||||
|
||||
### 4. ネストされたコマンド
|
||||
```
|
||||
.claude/commands/
|
||||
├── help.md # /project:help
|
||||
├── help/
|
||||
│ ├── shortcuts.md # /project:help/shortcuts
|
||||
│ └── safety.md # /project:help/safety
|
||||
```
|
||||
|
||||
## 使用上のヒント
|
||||
|
||||
1. **命名規則**
|
||||
- わかりやすい名前を使用
|
||||
- ハイフンまたはアンダースコアで単語を区切る
|
||||
- 短く覚えやすい名前を選ぶ
|
||||
|
||||
2. **説明の重要性**
|
||||
- `description`フィールドは必ず記入
|
||||
- コマンドの目的を明確に
|
||||
|
||||
3. **保守性**
|
||||
- 定期的に使わないコマンドは削除
|
||||
- 類似コマンドは統合を検討
|
||||
|
||||
## トラブルシューティング
|
||||
|
||||
### コマンドが表示されない
|
||||
- ファイルが`.md`拡張子であることを確認
|
||||
- 正しいディレクトリに配置されているか確認
|
||||
- YAMLフロントマターの構文を確認
|
||||
|
||||
### bashコマンドが実行されない
|
||||
- `bash:`フィールドの構文を確認
|
||||
- コマンドの実行権限を確認
|
||||
|
||||
## 今後の拡張案
|
||||
|
||||
1. **チームでの共有**
|
||||
- `.claude/commands/`をGitで管理
|
||||
- チーム共通のコマンドセットを作成
|
||||
|
||||
2. **テンプレート化**
|
||||
- よく使うパターンをテンプレート化
|
||||
- プロジェクトタイプ別のコマンドセット
|
||||
|
||||
3. **自動化**
|
||||
- プロジェクト初期化時にコマンドを自動生成
|
||||
- 使用頻度に基づく最適化
|
156
docs/guides/custom-help-setup.md
Normal file
156
docs/guides/custom-help-setup.md
Normal file
@ -0,0 +1,156 @@
|
||||
# Claude Code カスタムヘルプ機能のセットアップ
|
||||
|
||||
## 概要
|
||||
|
||||
Claude Codeの標準ヘルプを拡張し、ショートカットキー、公式ドキュメントへのリンク、便利なTipsを統合したカスタムヘルプシステムです。
|
||||
|
||||
## インストール
|
||||
|
||||
### 1. zshrcへの追加
|
||||
|
||||
`.zshrc`に以下を追加:
|
||||
|
||||
```bash
|
||||
# Claude Code ヘルパー関数の読み込み
|
||||
source "$HOME/git/claude/scripts/claude-zsh-functions.sh"
|
||||
```
|
||||
|
||||
または、直接関数を.zshrcに追加:
|
||||
|
||||
```bash
|
||||
# Claude Code拡張ヘルプ
|
||||
function claude-help() {
|
||||
bash "$HOME/git/claude/scripts/claude-help.sh" "$@"
|
||||
}
|
||||
|
||||
# エイリアス
|
||||
alias ch='claude-help'
|
||||
alias cr='claude-readme'
|
||||
```
|
||||
|
||||
### 2. スクリプトの配置
|
||||
|
||||
```bash
|
||||
# スクリプトディレクトリの作成
|
||||
mkdir -p ~/git/claude/scripts
|
||||
|
||||
# 実行権限の付与
|
||||
chmod +x ~/git/claude/scripts/claude-help.sh
|
||||
chmod +x ~/git/claude/scripts/claude-zsh-functions.sh
|
||||
```
|
||||
|
||||
## 使用方法
|
||||
|
||||
### 基本コマンド
|
||||
|
||||
```bash
|
||||
# 全体のヘルプを表示
|
||||
claude-help
|
||||
|
||||
# カテゴリ別ヘルプ
|
||||
claude-help shortcuts # ショートカットキー詳細
|
||||
claude-help options # 起動オプション詳細
|
||||
claude-help docs # 公式ドキュメントリンク
|
||||
|
||||
# エイリアス使用
|
||||
ch # claude-helpの短縮形
|
||||
cr # クイックリファレンス表示
|
||||
cs # 安全モードでClaude Code起動
|
||||
```
|
||||
|
||||
### 利用可能な関数
|
||||
|
||||
| 関数名 | 説明 | 使用例 |
|
||||
|--------|------|--------|
|
||||
| `claude-help` | 拡張ヘルプを表示 | `claude-help [カテゴリ]` |
|
||||
| `claude-readme` | クイックリファレンス | `claude-readme` |
|
||||
| `claude-safe` | 安全チェック付き起動 | `claude-safe` |
|
||||
| `claude-session` | セッション管理 | `claude-session list` |
|
||||
| `claude-edit-config` | CLAUDE.md編集 | `claude-edit-config` |
|
||||
| `claude-docs` | 公式ドキュメントを開く | `claude-docs settings` |
|
||||
|
||||
## Claude Code内でのカスタムコマンド化
|
||||
|
||||
### 方法1: エイリアスとして設定
|
||||
|
||||
`~/.claude/settings.json`に追加:
|
||||
|
||||
```json
|
||||
{
|
||||
"aliases": {
|
||||
"help+": "!bash ~/git/claude/scripts/claude-help.sh",
|
||||
"shortcuts": "!bash ~/git/claude/scripts/claude-help.sh shortcuts"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 方法2: スラッシュコマンドとして実装
|
||||
|
||||
Claude Code内で以下のように使用:
|
||||
|
||||
```
|
||||
/help+
|
||||
```
|
||||
|
||||
※ 現在のClaude Codeではカスタムスラッシュコマンドの追加は制限されている可能性があります。
|
||||
|
||||
## カスタマイズ
|
||||
|
||||
### ヘルプ内容の編集
|
||||
|
||||
`scripts/claude-help.sh`を編集して、独自の内容を追加:
|
||||
|
||||
```bash
|
||||
show_category "🔧 カスタムセクション"
|
||||
cat << 'EOF'
|
||||
独自の内容をここに追加
|
||||
EOF
|
||||
```
|
||||
|
||||
### 新しいカテゴリの追加
|
||||
|
||||
```bash
|
||||
case "$1" in
|
||||
"custom"|"c")
|
||||
show_category "カスタムカテゴリ"
|
||||
# 内容を追加
|
||||
;;
|
||||
esac
|
||||
```
|
||||
|
||||
## トラブルシューティング
|
||||
|
||||
### スクリプトが見つからない
|
||||
|
||||
パスを確認:
|
||||
```bash
|
||||
which claude-help
|
||||
echo $HOME/git/claude/scripts/claude-help.sh
|
||||
```
|
||||
|
||||
### 実行権限エラー
|
||||
|
||||
```bash
|
||||
chmod +x ~/git/claude/scripts/*.sh
|
||||
```
|
||||
|
||||
### zsh関数が読み込まれない
|
||||
|
||||
```bash
|
||||
# .zshrcを再読み込み
|
||||
source ~/.zshrc
|
||||
```
|
||||
|
||||
## 今後の拡張案
|
||||
|
||||
1. **インタラクティブメニュー**
|
||||
- fzfを使った選択式ヘルプ
|
||||
- カテゴリの動的選択
|
||||
|
||||
2. **オンラインヘルプの統合**
|
||||
- 最新のドキュメントを自動取得
|
||||
- コミュニティTipsの表示
|
||||
|
||||
3. **パーソナライズ**
|
||||
- 使用頻度に基づくヘルプの最適化
|
||||
- ユーザー独自のTips追加機能
|
50
docs/guides/safety-guide.md
Normal file
50
docs/guides/safety-guide.md
Normal file
@ -0,0 +1,50 @@
|
||||
# Claude Code 安全利用ガイド
|
||||
|
||||
## 推奨される安全対策
|
||||
|
||||
### 1. バックアップ
|
||||
- 重要なファイルは必ずバックアップ
|
||||
- Gitでバージョン管理
|
||||
- Time Machineやスナップショット機能を活用
|
||||
|
||||
### 2. Hooksによる制御
|
||||
```json
|
||||
// ~/.claude/settings.json
|
||||
{
|
||||
"hooks": {
|
||||
"before_bash": "~/.claude/hooks/command-check.sh"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 3. 段階的な実行
|
||||
- まず `--dry-run` オプションで確認
|
||||
- 小さな変更から始める
|
||||
- 破壊的な操作は避ける
|
||||
|
||||
### 4. 環境の分離
|
||||
優先度順:
|
||||
1. **Dockerコンテナ** - 最も安全
|
||||
2. **仮想マシン** - 完全な分離
|
||||
3. **専用ユーザー** - 権限を制限
|
||||
4. **作業用ディレクトリ** - 影響範囲を限定
|
||||
|
||||
### 5. Claude Codeへの指示
|
||||
CLAUDE.mdに安全ルールを記載:
|
||||
```markdown
|
||||
## 安全ルール
|
||||
- `rm -rf` は使用禁止
|
||||
- システムファイルの変更禁止
|
||||
- sudoコマンドは確認を求める
|
||||
- 実行前に影響範囲を説明する
|
||||
```
|
||||
|
||||
### 6. モニタリング
|
||||
- コマンド履歴の確認
|
||||
- ファイルシステムの変更監視
|
||||
- 定期的なログレビュー
|
||||
|
||||
## 緊急時の対応
|
||||
1. Ctrl+C で即座に停止
|
||||
2. プロセスの強制終了
|
||||
3. スナップショットから復元
|
Reference in New Issue
Block a user