gitlab-wiki について
gitlab-wikiは、`glab api`でGitLabプロジェクトのWikiを管理するスキルです。プロジェクト文書を扱うチーム向けに、ページの取得・編集・削除や添付ファイルのアップロードを行えます。
主な機能
- 01Wikiページの一覧表示と取得
- 02ページの作成・更新・削除
- 03画像などの添付ファイルのアップロード
- 04複数のページ形式への対応
- 05ページ一覧のページネーション
活用シーン
- 01プロジェクト文書ページの作成
- 02Wiki内容の更新やバックアップ
- 03ページ用の図のアップロード
- 04プロジェクト間でのWikiページ移行
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ grandcamel/ gitlab-assistant-skills --skill gitlab-wikiインストール後、Claude Code で/gitlab-wikiを入力して読み込まれたか確認します。
詳細
Wiki スキル
glab api の raw エンドポイント呼び出しを使用した、GitLab の Wiki ページ管理です。
クイックリファレンス
| 操作 | コマンドパターン | リスク |
|---|---|---|
| ページを一覧表示 | glab api projects/:id/wikis | - |
| ページを取得 | glab api projects/:id/wikis/:slug | - |
| ページを作成 | glab api projects/:id/wikis -X POST -f ... | ⚠️ |
| ページを更新 | glab api projects/:id/wikis/:slug -X PUT -f ... | ⚠️ |
| ページを削除 | glab api projects/:id/wikis/:slug -X DELETE | ⚠️⚠️ |
| 添付ファイルをアップロード | glab api projects/:id/wikis/attachments -X POST ... | ⚠️ |
リスクの凡例:- 安全 | ⚠️ 注意 | ⚠️⚠️ 警告 | ⚠️⚠️⚠️ 危険
このスキルを使用する場面
必ず使用する場合:
- ユーザーが「wiki」、「wiki page」、「documentation page」と言及した場合
- ユーザーが GitLab でプロジェクトのドキュメントを作成・編集したい場合
- ユーザーが Wiki のスラッグまたはコンテンツに言及した場合
- ユーザーが Wiki に画像をアップロードしたい場合
使用しない場合:
- ユーザーが README ファイルを求めている場合(gitlab-file を使用)
- ユーザーが Wiki コンテンツを検索したい場合(
wiki_blobsスコープを指定して gitlab-search を使用) - ユーザーが外部ドキュメントを求めている場合(GitLab Wiki ではないもの)
API の前提条件
必須のトークンスコープ: api
権限:
- Wiki の読み取り:Reporter 以上(プライベートリポジトリの場合)
- Wiki への書き込み:Developer 以上(またはプロジェクトの設定による)
注: プロジェクトで Wiki が有効になっている必要があります。
利用可能なコマンド
Wiki ページを一覧表示
# List all wiki pages
glab api projects/123/wikis --method GET
# With pagination
glab api projects/123/wikis --paginate
# Using project path
glab api "projects/$(echo 'mygroup/myproject' | jq -Rr @uri)/wikis"
Wiki ページを取得
# Get page by slug
glab api projects/123/wikis/home --method GET
# Get page with spaces in slug (URL-encode)
glab api "projects/123/wikis/$(echo 'Getting Started' | jq -Rr @uri)" --method GET
# Get nested page
glab api "projects/123/wikis/$(echo 'docs/installation' | jq -Rr @uri)" --method GET
# Get page with specific version
glab api "projects/123/wikis/home?version=abc123" --method GET
# Render HTML
glab api "projects/123/wikis/home?render_html=true" --method GET
Wiki ページを作成
# Create simple page
glab api projects/123/wikis --method POST \
-f title="Getting Started" \
-f content="# Getting Started\n\nWelcome to the project!"
# Create with Markdown format
glab api projects/123/wikis --method POST \
-f title="Installation Guide" \
-f content="# Installation\n\n## Prerequisites\n\n- Node.js 18+\n- npm" \
-f format="markdown"
# Create with custom slug
glab api projects/123/wikis --method POST \
-f title="API Reference" \
-f slug="api-docs" \
-f content="# API Documentation\n\nEndpoints..."
# Create nested page (using directory in slug)
glab api projects/123/wikis --method POST \
-f title="Database Setup" \
-f slug="guides/database-setup" \
-f content="# Database Setup\n\nConfiguration steps..."
Wiki ページを更新
# Update content
glab api "projects/123/wikis/$(echo 'Getting Started' | jq -Rr @uri)" --method PUT \
-f content="# Getting Started\n\n## Updated content\n\nNew information..."
# Update title and content
glab api projects/123/wikis/home --method PUT \
-f title="Home Page" \
-f content="# Welcome\n\nUpdated home page content."
# Change format (markdown, rdoc, asciidoc)
glab api projects/123/wikis/readme --method PUT \
-f format="asciidoc" \
-f content="= README\n\nAsciidoc content here."
Wiki ページを削除
# Delete page
glab api projects/123/wikis/old-page --method DELETE
# Delete nested page (URL-encode)
glab api "projects/123/wikis/$(echo 'drafts/temp-page' | jq -Rr @uri)" --method DELETE
添付ファイルをアップロード
# Upload image
glab api projects/123/wikis/attachments --method POST \
-F "[email protected]"
# The response contains the markdown link to use
# {"file_name":"screenshot.png","file_path":"uploads/...","branch":"master","link":{"url":"...","markdown":""}}
Wiki ページのオプション
| オプション | 型 | 説明 |
|---|---|---|
title | string | ページのタイトル(作成時は必須) |
slug | string | ページの URL スラッグ(指定されていない場合、タイトルから自動生成) |
content | string | ページのコンテンツ |
format | string | コンテンツ形式:markdown(デフォルト)、rdoc、asciidoc |
形式のサポート
| 形式 | 拡張子 | 説明 |
|---|---|---|
markdown | .md | GitHub 形式の Markdown |
rdoc | .rdoc | Ruby ドキュメント形式 |
asciidoc | .asciidoc | AsciiDoc 形式 |
org | .org | Org モード形式 |
よくあるワークフロー
ワークフロー 1:ドキュメント構成を作成
project_id=123
# Create home page
glab api projects/$project_id/wikis --method POST \
-f title="Home" \
-f content="# Project Wiki\n\n- [Getting Started](Getting-Started)\n- [API Reference](API-Reference)\n- [FAQ](FAQ)"
# Create getting started guide
glab api projects/$project_id/wikis --method POST \
-f title="Getting Started" \
-f content="# Getting Started\n\n## Installation\n\n\`\`\`bash\nnpm install\n\`\`\`"
# Create API reference
glab api projects/$project_id/wikis --method POST \
-f title="API Reference" \
-f content="# API Reference\n\n## Endpoints\n\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /users | List users |"
ワークフロー 2:Wiki コンテンツをバックアップ
# List all pages and save content
mkdir -p wiki_backup
glab api projects/123/wikis --paginate | jq -r '.[].slug' | while read slug; do
echo "Backing up: $slug"
glab api "projects/123/wikis/$(echo "$slug" | jq -Rr @uri)" | \
jq -r '.content' > "wiki_backup/${slug//\//_}.md"
done
ワークフロー 3:Wiki コンテンツを移行
# Get page from source project
content=$(glab api projects/123/wikis/home | jq -r '.content')
title=$(glab api projects/123/wikis/home | jq -r '.title')
# Create in target project
glab api projects/456/wikis --method POST \
-f title="$title" \
-f content="$content"
ワークフロー 4:Wiki ページに画像を追加
# 1. Upload image
response=$(glab api projects/123/wikis/attachments --method POST -F "[email protected]")
# 2. Get markdown link
markdown_link=$(echo "$response" | jq -r '.link.markdown')
# 3. Update page to include image
current_content=$(glab api projects/123/wikis/architecture | jq -r '.content')
new_content="$current_content
## Diagram
$markdown_link"
glab api projects/123/wikis/architecture --method PUT \
-f content="$new_content"
ワークフロー 5:すべての Wiki ページをタイトル付きで一覧表示
glab api projects/123/wikis --paginate | \
jq -r '.[] | "[\(.title)](\(.slug))"'
Wiki スラッグ
スラッグは、タイトルを URL で使用できる形式にしたものです。
- スペースはハイフンになります:
Getting Started→Getting-Started - 特殊文字は削除されます
- 大文字・小文字は保持されます
階層化されたページでは、スラッグにディレクトリ構造を使用します。
guides/installationはguides/の下にページを作成します
トラブルシューティング
| 問題 | 原因 | 解決策 |
|---|---|---|
| 404 Not Found | Wiki が無効、またはページが存在しない | プロジェクト設定で Wiki を有効にし、スラッグを確認してください |
| 403 Forbidden | 書き込み権限がない | Developer 以上のロールが必要です。または Wiki の権限を確認してください |
| コンテンツが空 | エンコードの問題 | コンテンツ文字列のエスケープを確認してください |
| スラッグが一致しない | 自動生成されたスラッグが異なる | slug パラメーターを明示的に設定してください |
| アップロードに失敗する | コンテンツタイプが正しくない | ファイルのアップロードには -F フラグを使用してください |
ベストプラクティス
- わかりやすいスラッグを使用する:読みやすく、一貫性のある URL にします
- ホームページを作成する:ホームページまたはインデックスページから始めます
- 相対リンクを使用する:スラッグを使って Wiki ページ間をリンクします
- 構成を整理する:整理にはスラッグのディレクトリを使用します
- 画像を含める:わかりやすさのため、スクリーンショットや図をアップロードします
関連ドキュメント
コメント
Markdown 対応