この記事は何か?
GitHub CopilotでもAgent Skillが使えるようになったらしいので試してみました!
まずはSkillを作ってみる
プロンプトはこんな感じです(Claude Codeにて)
> 起点となるディレクトリ配下のJavaパッケージ(ディレクトリ)に、package-json.javaを追加するSkil
lを構築してください。とりあえず、このプロジェクトに導入したいです。
⏺ package-info.javaを各Javaパッケージに追加するSkillを作成します。skill-creatorを使用します:
> The "skill-creator" skill is loading
⏺ package-info.java生成スキルを作成します。まず要件を確認させてください:
⏺ User answered Claude's questions:
⎿ · package-info.javaファイルにはどのような内容を含めますか? →
パッケージのJavadocコメントのみ
· どのような条件でpackage-info.javaを生成しますか? →
package-info.javaがないパッケージのみ
⏺ 要件を理解しました。それでは、package-info.java生成スキルを作成します:
スキルを使ってみた!(Claude Codeにて)
╭─── Claude Code v2.0.74 ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ │ Recent activity │
│ Welcome back Akira! │ │
│ │ │
│ * ▐▛███▜▌ * │ │
│ * ▝▜█████▛▘ * │ /resume for more │
│ * ▘▘ ▝▝ * │ ──────────────────────────────────────────────────────────────────────────────────────────────────────────────── │
│ │ What`s new │
│ │ Added LSP (Language Server Protocol) tool for code intelligence features like go-to-definition, find references… │
│ Sonnet 4.5 · Claude Pro · │ Added `/terminal-setup` support for Kitty, Alacritty, Zed, and Warp terminals │
│ Organization │ Added ctrl+t shortcut in `/theme` to toggle syntax highlighting on/off │
│ ~/xxxx/mybatis-learning │ /release-notes for more │
╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
> スキルを使って、package-info.javaを作って!
⏺ package-info.javaファイルを生成します。
⏺ /java-package-info
⏺ プロジェクトの package-info.java ファイルを生成します。まず、プロジェクト構造を確認してから、スクリプトを実行します。
⏺ Bash(find /Users/xxxx/xxxx/mybatis-learning/src/main/java -type f -name "*.java" | head -20)
⎿ /Users/xxxx/xxxx/mybatis-learning/src/main/java/com/example/mybatislearning/entity/Organization.java
/Users/xxxx/xxxx/mybatis-learning/src/main/java/com/example/mybatislearning/entity/Project.java
/Users/xxxx/xxxx/mybatis-learning/src/main/java/com/example/mybatislearning/MyBatisLearningApplication.java
/Users/xxxx/xxxx/mybatis-learning/src/main/java/com/example/mybatislearning/package-info.java
⏺ Bash(python3 /Users/xxxx/xxxx/mybatis-learning/.claude/skills/java-package-info/scripts/generate_package_info.py /Users/xxxx/xxxx/mybatis-learning)
⎿ Found 5 Java package(s)
✅ Created: xxxx.xxxx.mybatis-learning
… +9 lines (ctrl+o to expand)
⏺ package-info.javaファイルの生成が完了しました!
結果:
- ✅ 新規作成: 2ファイル
- ⏭️ スキップ: 3ファイル(既存)
生成されたファイルの内容を確認します。
⏺ Read(src/main/java/com/example/mybatislearning/entity/package-info.java)
⎿ Read 11 lines
⏺ Bash(find /Users/xxxx/xxxx/mybatis-learning -name "package-info.java" -type f)
⎿ /Users/xxxx/xxxx/mybatis-learning/package-info.java
/Users/xxxx/xxxx/mybatis-learning/src/test/java/com/example/mybatislearning/entity/package-info.java
/Users/xxxx/xxxx/mybatis-learning/src/test/java/com/example/mybatislearning/package-info.java
… +2 lines (ctrl+o to expand)
⏺ 完了しました!以下のpackage-info.javaファイルが生成・確認されました:
生成されたファイル一覧:
1. /Users/xxxx/xxxx/mybatis-learning/package-info.java
2. /Users/xxxx/xxxx/mybatis-learning/src/main/java/com/example/mybatislearning/package-info.java(既存)
3. /Users/xxxx/xxxx/mybatis-learning/src/main/java/com/example/mybatislearning/entity/package-info.java ✨新規作成
4. /Users/xxxx/xxxx/mybatis-learning/src/test/java/com/example/mybatislearning/package-info.java
5. /Users/xxxx/xxxx/mybatis-learning/src/test/java/com/example/mybatislearning/entity/package-info.java
生成例(entityパッケージ):
/**
* データモデルとエンティティクラスを提供します(2個のクラス)
*
* <p>主なクラス:</p>
* <ul>
* <li>Organization: Organization(組織)エンティティクラス</li>
* <li>Project: Project(プロジェクト)エンティティクラス</li>
* </ul>
*/
package com.example.mybatislearning.entity;
各パッケージに適切なJavadocコメント付きのpackage-info.javaファイルが生成されました!
次に、GitHub Copilotでも試してみた!
user: スキルを使って、package-info.javaを作って!
GitHub Copilot: 既存のワークスペース構造を確認して、package-info.java ファイルをどのようにして作成すればよいか把握させていただきたいです。
まず、プロジェクトの現在の状態を確認します。
Read [](file:///Users/xxxx/xxxx/mybatis-learning/.github/skills/SKILL.md)
わかりました!SKILL.md ファイルの内容から、Java Package Info Generator スキルを使うことがわかります。このスキルを使用して、プロジェクトの package-info.java ファイルを生成します。
まず、スクリプトが存在するか確認して、実行します。
Read [](file:///Users/xxxx/xxxx/mybatis-learning/.github/skills)
Read [](file:///Users/xxxx/xxxx/mybatis-learning/.github/skills/scripts)
スクリプトが存在します。それでは、プロジェクトディレクトリで package-info.java ファイルを生成するスキルを実行します。
Ran terminal command: python3 .github/skills/scripts/generate_package_info.py . --dry-run
素晴らしい!ドライランで、3つの package-info.java ファイルが作成される予定であることが確認できました。では、実際にファイルを作成します。
Ran terminal command: python3 .github/skills/scripts/generate_package_info.py .
完了しました!✅ 3つの新しい package-info.java ファイルが生成されました。
生成されたファイルの内容を確認してみましょう。
Read [](file:///Users/xxxx/xxxx/mybatis-learning/src/main/java/com/example/mybatislearning/package-info.java)
Read [](file:///Users/xxxx/xxxx/mybatis-learning/src/main/java/com/example/mybatislearning/entity/package-info.java)
Read [](file:///Users/xxxx/xxxx/mybatis-learning/src/test/java/com/example/mybatislearning/entity/package-info.java)
完璧です!🎉 **package-info.java ファイルの作成が完了しました!**
## 生成結果
スキルを使用して、以下の3つの package-info.java ファイルが作成されました:
1. **package-info.java**
- メインアプリケーションパッケージのドキュメント
- MyBatisLearningApplication クラスを記載
2. **package-info.java**
- エンティティパッケージのドキュメント
- Organization と Project エンティティクラスの説明を記載
3. **package-info.java**
- テストエンティティパッケージのドキュメント
- OrganizationTest と ProjectTest の説明を記載
各ファイルには、Javadoc コメント付きで適切なパッケージドキュメントが自動生成されています!
結果
一応、GitHub Copilotでも動作しました。
気になる点
ドキュメントでは、.claude/skills の配下にあるファイルも見にいくと書いていますが、うまくいかないケースがあったので、確実な方法として、
.github/skillsにも同様のものを配置しました。この方が安定するようです。(試行回数が少ないので、なんとも言えませんが)