Communityコーディング&開発github.com

SkillDoAI/skilldo

Skilldo はコードベースを読み取り、AIエージェントがライブラリを問題なく利用できるようにする SKILLS.md を生成します。

skilldo とは?

Skilldo は、ソフトウェアライブラリのための SKILL.md ファイルを自動生成する7段階のLLMパイプラインです。ソースファイル、ドキュメント、依存関係、バージョンなどのライブラリメタデータを収集し、コンパクトな真偽値表を抽出した上で、SKILL.md を生成・レビュー・テスト検証します。Anthropic、OpenAI、Gemini、OpenAI互換プロバイダ、さらに Ollama や CLI ツール(Claude、Codex、Gemini)など多様なLLMバックエンドをサポートしており、Python、JavaScript/TypeScript、Go、Rust、Java の主要言語に対応しています。設定は TOML ファイルで管理し、生成・レビュー・テストの各ステージで異なるモデルを指定できるほか、コンテナ内でのテスト実行やテレメトリ収集(ローカル限定)などの高度な機能も提供します。開発者は Skilldo を使うことで、AIエージェントがライブラリのAPIを正確に理解・利用できるようにするためのドキュメントを効率的に作成・保守できます。

対応✓Claude Code✓Codex CLI~Cursor✓Gemini CLI
npx skills add SkillDoAI/skilldo

Installed? Explore more コーディング&開発 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

Skilldo CLI

Skilldo は、ソフトウェアライブラリの SKILL.md ファイルを生成する7段階のLLMパイプラインです: 抽出 → マッピング → 学習 → 事実 → 生成 → レビュー → テスト

ステージ1〜3 でライブラリのメタデータ(ソースファイル、ドキュメント、依存関係、バージョン)を収集します。 ステージ4(事実)では、ステージ1〜3から否定的なアサーションを含むコンパクトな真偽値表を抽出します。 ステージ5で SKILL.md を生成し、ステージ6で正確性と安全性をレビュー、ステージ7で生成されたテストコードを使って検証します。

インストール

# Homebrew
brew install skilldoai/tap/skilldo

# ソースから
cargo install --path .

クイックスタート

# 現在のリポジトリの SKILL.md を生成
skilldo generate

# 特定のリポジトリパスを指定
skilldo generate /path/to/library

# 言語を明示的に指定
skilldo generate --language python

# 特定の設定ファイルを使用
skilldo generate --config skilldo.toml

設定 (skilldo.toml)

Skilldo は TOML 設定ファイルを使用します。skilldo.toml をリポジトリのルートに配置するか、--config で指定します。

最小設定 (単一プロバイダ)

[llm]
provider_type = "anthropic"          # anthropic, openai, gemini, openai-compatible, chatgpt
model = "claude-sonnet-4-6"
api_key_env = "ANTHROPIC_API_KEY"  # キーを含む環境変数名

[generation]
max_retries = 10                # lint/テスト失敗時の再試行回数
# telemetry = true              # オプトイン: 実行ログを ~/.skilldo/runs.csv に記録

ステージごとのモデル上書き

レビューステージとテストステージで異なるモデルを使用できます:

[llm]
provider_type = "anthropic"
model = "claude-sonnet-4-6"
api_key_env = "ANTHROPIC_API_KEY"

[generation]
enable_test = true
enable_review = true
test_mode = "thorough"          # thorough, quick, adaptive, minimal

[generation.review_llm]
provider_type = "openai"
model = "gpt-5.2"
api_key_env = "OPENAI_API_KEY"

[generation.test_llm]
provider_type = "openai"
model = "gpt-5.2"
api_key_env = "OPENAI_API_KEY"

ローカルモデル (Ollama)

[llm]
provider_type = "openai-compatible"
model = "qwen3-coder:latest"
base_url = "http://localhost:11434/v1"
api_key_env = "none"            # Ollama はキーを必要としません

CLI プロバイダ (既存のCLIツールをLLMバックエンドとして使用)

[llm]
provider_type = "cli"
model = "claude-sonnet-4-6"
cli_command = "claude"
cli_args = ["-p", "--no-session-persistence", "--output-format", "text", "--dangerously-skip-permissions"]
request_timeout_secs = 900

サポートされているCLIツール:claude、codex、gemini。プロンプトは標準入力からパイプされ、応答は標準出力から取得されます。

オプション:CLI がシステムプロンプトをネイティブに受け入れる方法を宣言します:

cli_system_args = ["--system-prompt-file"]  # claude の場合(一時ファイルから読み取る)
# cli_system_args = ["-s"]            # codex の場合

cli_system_args が設定されている場合、指示は標準入力に連結される代わりに、ネイティブのシステムチャンネルを通じて送信されます。

カスタムベースURL (Bedrock、Vertex AI、プロキシ)

すべてのプロバイダはカスタムエンドポイント用のオプションの base_url をサポートしています:

# AWS Bedrock 経由の Anthropic
[llm]
provider_type = "anthropic"
base_url = "https://bedrock-runtime.us-east-1.amazonaws.com"

# Google Vertex AI 経由の Gemini
[llm]
provider_type = "gemini"
base_url = "https://us-central1-aiplatform.googleapis.com"

コンテナ設定 (オプション)

[generation.container]
runtime = "podman"              # docker または podman
timeout = 120                   # 秒
cleanup = true
# setup_commands = ["apt-get update && apt-get install -y cmake"]  # 依存関係/テストの前に実行

コマンド

skilldo generate [PATH]

ライブラリリポジトリの SKILL.md を生成します。\n主要なフラグ:

  • --language <LANG> — 言語を強制指定 (python, javascript, rust, go, java)。省略時は自動検出
  • --config <PATH> — 設定ファイルのパス(デフォルト: ./skilldo.toml または ~/.config/skilldo/config.toml)
  • --model <MODEL> — LLMモデルを上書き
  • --provider <PROVIDER> — LLMプロバイダ: anthropic, openai, chatgpt, gemini, openai-compatible
  • --base-url <URL> — openai-compatible プロバイダのベースURL
  • -i, --input <PATH> — 既存の SKILL.md を参照用として更新に使用
  • -o <PATH> — 出力ファイル(デフォルト: SKILL.md)
  • --debug-stage-files <DIR> — デバッグ用に各パイプラインステージの生出力をダンプ
  • --replay-from <DIR> — 以前の --debug-stage-files 実行から抽出/マッピング/学習のキャッシュされた出力を読み込み、それらのLLM呼び出しをスキップ。反復時間を約15分から約5分に短縮
  • --no-test — テスト検証をスキップ
  • --no-review — レビュー検証をスキップ
  • --no-security-scan — YARA/Unicode/インジェクションスキャンをスキップ
  • --no-parallel — 抽出/マッピング/学習を逐次実行(ローカルモデル用)
  • --best-effort — エラーが発生しても終了コード0で終了
  • --telemetry / --no-telemetry — 実行ログのオン/オフ
  • --container — テストエージェントをコンテナ内で実行(デフォルト: uv/cargo を使用したベアメタル)
  • --install-source <MODE> — テストエージェントがコード検証のためにライブラリをインストールする方法: registry (crates.io/PyPI/npm から、デフォルト)、local-install (ローカルリポジトリをマウントしてパッケージマネージャ経由でビルド)、local-mount (リポジトリをマウントしてモジュールパスを直接設定、ビルドステップなし)
  • --source-path <PATH> — local-install/local-mount モード用のローカルソースパス
  • --test-mode <MODE> — thorough はすべてのパターンをテスト(デフォルト)、quick は最大3つをテストして高速反復、minimal は1つをテスト、adaptive は1つから開始して拡大
  • --review-model <MODEL> / --review-provider <PROVIDER> — レビューステージのみのモデル/プロバイダを上書き
  • --test-model <MODEL> / --test-provider <PROVIDER> — テストコード生成ステージのみのモデル/プロバイダを上書き
  • --max-retries <N> — 生成→検証の最大再試行回数(デフォルト: 設定ファイルの値)
  • --skill-version <VER> — 自動検出の代わりにフロントマターで特定のライブラリバージョンを強制指定(例: "2.1.0")
  • --version-from <STRATEGY> — バージョン検出方法: package (Cargo.toml/pyproject.toml)、git-tag、branch、commit
  • -q, --quiet — 情報出力を抑制(警告/エラーのみ表示)
  • -v, --verbose — 詳細なデバッグ出力を表示(RUST_LOG=debug と同等)
  • --request-timeout <SECS> — LLMリクエストのタイムアウトを秒単位で上書き(デフォルト: 120)
  • --dry-run — テスト用にモックLLMクライアントを使用(API呼び出しなし)

skilldo lint <PATH>

SKILL.md の構造エラー(フロントマター、セクション、コードブロック)をリントします。

skilldo review <PATH>

既存の SKILL.md を正確性と安全性についてLLM駆動でレビューします。

主要なフラグ:

  • --config <PATH> — LLM設定を含む設定ファイル

skilldo config check --config <PATH>

設定ファイルの正しさを検証します。

skilldo auth login|status|logout

OAuthを使用するプロバイダ(例: ChatGPT)のOAuthトークンを管理します。

サポートされている言語

言語エコシステム検出方法
Pythonpip/uv, pyproject.toml, setup.py*.py, pyproject.toml
JavaScript/TypeScriptnpm, package.json*.js, *.ts, package.json
Gogo modules, go.mod*.go, go.mod
Rustcargo, Cargo.toml*.rs, Cargo.toml
JavaMaven/Gradle, pom.xml, build.gradle*.java, pom.xml, build.gradle

設定 (skilldo.toml)

主要な [generation] フィールド:

フィールド値説明
languagepython, javascript (または typescript/ts/js)、rust、go、java自動検出を上書き
security_context"api-client" または省略APIクライアントSDK(認証情報/認証について扱う)のセキュリティスキャンを緩和
redact_env_vars["VAR_NAME", ...]テスト出力/ログで環境変数の値を ***REDACTED*** でマスク
custom_instructions"""..."""生成ステージのリポジトリ固有の指示(スタイル/コンテンツルールを上書き)
enable_testtrue/falseテスト検証の有効/無効(デフォルト: true)
enable_reviewtrue/falseレビュー検証の有効/無効(デフォルト: true)
test_modethorough/quick/minimal/adaptiveすべて/最大3/1/1つ以上のパターンをテスト
max_retries整数生成→検証の最大再試行回数(デフォルト: 10)

モデル通信

モデルは出力内のHTMLコメントを通じて不確実性を報告します(最終的な SKILL.md の前に削除されます):

  • <!-- SKILLDO-CONFLICT: description --> — ドキュメントとコードの競合を発見
  • <!-- SKILLDO-UNVERIFIED: description --> — モデルがソースから検証できなかったAPI

これらを表示するには RUST_LOG=info または RUST_LOG=debug を使用してください。CONFLICT は info レベルで、UNVERIFIED は warn レベルでログ出力されます。

一般的なワークフロー

Anthropic で生成

source ~/.anthropic
skilldo generate --provider anthropic --model claude-sonnet-4-6

OpenAI で生成

source ~/.openai
skilldo generate --provider openai --model gpt-5.2

ローカル Ollama で生成

skilldo generate --provider openai-compatible --model qwen3-coder:latest --base-url http://localhost:11434/v1

バッチ生成(複数リポジトリ)

for repo in /path/to/repos/*/; do
  skilldo generate "$repo" --config shared-config.toml --best-effort
done

APIクライアントSDKの生成

# skilldo.toml — APIキー/認証を扱うライブラリ向け
[generation]
security_context = "api-client"
redact_env_vars = ["MY_API_KEY"]
export MY_API_KEY="..."  # テスト検証に必要
skilldo generate . --config skilldo.toml

リプレイによる高速プロンプト反復

# キャッシュを一度取得
skilldo generate /path/to/lib --debug-stage-files /tmp/cache -o /tmp/baseline.md

# プロンプトを反復(生成ステージのみ実行、約5分 vs 約15分)
skilldo generate /path/to/lib --replay-from /tmp/cache -o /tmp/variant.md

パイプラインステージのデバッグ

skilldo generate . --debug-stage-files ./debug-output/
# 書き出されるファイル: 1-extract.md, 2-map.md, 3-learn.md, 4-create-raw.md, 4-create-system.md, facts.md,
#                        5-review-*.txt, 6-normalized.md

既存の SKILL.md をレビュー

skilldo review SKILL.md --config skilldo.toml

テレメトリ

telemetry = true の場合、各実行は ~/.skilldo/runs.csv に行を追加します:

  • タイムスタンプ、言語、ライブラリ名、バージョン
  • 使用されたモデルとプロバイダ(生成、レビュー、テスト)
  • 成功/失敗、再試行回数、実行時間、失敗の詳細

データはローカルのみに保存され、どこにも送信されません。

トラブルシューティング

  • 「テストファイルが見つかりません」 — 警告でありエラーではありません。パイプラインはテスト由来のパターンなしで続行します。検出が間違っている場合は --language を使用して上書きしてください。
  • テスト失敗がループする — 最初のパスでは --test-mode minimal または --no-test を試してください。
  • レート制限 — 設定の retry_delay を増やすか、ローカルモデルに切り替えてください。
  • OAuthエラー — skilldo auth status --config <path> を実行してトークンの状態を確認してください。
  • install_source エラー(非Python) — local-install/local-mount はPythonでのみ機能します。他の言語ではデフォルトの registry を使用してください。

ドキュメント

完全なドキュメント — 設定、言語、アーキテクチャ、認証、ベストプラクティス、テレメトリ: docs/

関連スキル