KINTO Tech Blog
Claude Code

まだClaude Codeを素のまま使ってますか?― Android開発者がSubAgents & Skillsを試してみた

Cover Image for まだClaude Codeを素のまま使ってますか?― Android開発者がSubAgents & Skillsを試してみた

この記事は KINTOテクノロジーズアドベントカレンダー2025 の3日目の記事です🎅🎄

はじめに

はじめまして。KINTOテクノロジーズでAndroidアプリ開発を担当しているJongSeokです。

Claude Codeを使ってAndroid開発をしながら、SubAgents機能は少し使っていました。
使っているうちに、もっと効率よく使えるんじゃないかと思い始めて、いろいろ調べてみました。
そしたら最近発表された Skills という機能も見つけました。

この機会に SubAgents と Skills、両方試してみたので、その内容をまとめてみました。

1. SubAgents?

一言で言うと 「別の作業スペースを持つ専門家」 です。

普通にClaude Codeと会話すると、すべてが一つのコンテキスト(会話の流れ)に入ります。
でもSubAgentsは別のコンテキストで作業して、結果だけ報告してくれます。
チームで例えると、リーダーが専門家に仕事を任せて結果報告を受けるイメージですね。

1.1 主な特徴

特徴 説明
独立したコンテキスト メインの会話を汚さない
専門化されたプロンプト 役割に特化した指示を設定できる
ツール権限の制限 必要な機能だけ許可できる

1.2 作り方

SubAgentsを作る方法は2つあります。

1. コマンドで作成(推奨)

Claude Codeでは /agents コマンドで簡単に作成できます。

List Make
List make

Projectに定義されているAgentsの確認や、新規作成ができます。

2. 直接ファイルを作成
.claude/agents/ フォルダに .md ファイルを追加して作ることもできます。
tree

1.3 活用例:kotlin-method-namer

Kotlinでメソッド名を考えるのは意外と悩むポイントです。
そこで、Android/Kotlinのスタイルに合ったメソッド名を提案してくれるSubAgentを作ってみました。

どんな時に使う?

  • メソッドの機能を英語でどう表現するか迷う時
  • Kotlinの命名規則に合っているか確認したい時
  • より良いメソッド名の候補が欲しい時
---
name: kotlin-method-namer
description: Expert for suggesting Android/Kotlin method names
tools: Read, Glob, Grep
model: sonnet
color: cyan
---

You are an expert Android Kotlin developer specializing in 
creating clear, idiomatic method names.
...

(Full version)

DEMO
SubAgentsは直接指定して呼ぶ必要があります。
color: cyanを設定したので、Agentが実行されているのが分かります。
AgentDemo

DEMOの結果
result
initializeVariable()という名前を提案してくれました。

このように、SubAgentsは特定の作業に特化したAgentsを作れます。
繰り返し発生する専門的な作業があれば、SubAgentsにしてみると効率が上がるかもしれません。

2. Skills?

一言で言うと 「自分だけの業務ガイドブック」 です。

SubAgentsが別の作業スペースを持つ専門家だとすれば、
Skillsはメインエージェントに専門知識を追加するイメージです。

Claudeが作業する時に参考にするガイドブックを事前に作っておくと、
関連する作業を依頼した時に自動で認識して使ってくれます。

2.1 主な特徴

特徴 説明
メインコンテキストに統合 SubAgentsと違い、別空間ではなくメインの会話で動作
自動認識 (Auto-invoked) 関連する作業を依頼すると、Claudeが自動で使用
Progressive Disclosure 必要な情報だけを段階的にロード
Deterministic スクリプト実行で一貫性のある結果を保証

2.2 Progressive Disclosureとは?

Skillsの核心となる設計原則です。
一度にすべての内容をロードせず、段階的に必要な情報だけを取得します。

段階 ロードされる内容 タイミング
1段階 name, description 起動時にシステムプロンプトへロード
2段階 SKILL.md 本文 関連する作業を依頼した時
3段階 追加ファイル (scripts, references など) 必要な時だけ

整理されたガイドブックのように、目次 → 該当チャプター → 付録の順で必要なものだけ読む方式です。
これにより、複数のSkillsをインストールしてもコンテキストを無駄にせず使えます。

2.3 作り方

.claude/skills/ フォルダ内にスキルフォルダを作成し、SKILL.md ファイルを追加します。

project/
└── .claude/
    └── skills/
        └── your-skill-name/
            └── SKILL.md

SKILL.md

---
name: wildcard-import-fixer
description: Converts wildcard imports (e.g., import java.util.*) to specific imports in Kotlin/Java files.
allowed-tools: Bash, Read, Glob, Grep
---

YAML Frontmatter

項目 ルール 必須
name 小文字 + ハイフン使用、64文字以下
description 200文字以下、Claudeがいつ使うか判断する重要な部分
version バージョン管理用 (例: 1.0.0) -

SKILL.md 本文

  • 500行以下推奨
  • 長くなったら別ファイルに分離 (例: reference.md, scripts/)

セキュリティ

  • APIキー、パスワードなどの機密情報をハードコーディング禁止
  • 信頼できるソースのスキルのみインストール

💡 SubAgentsとの違い

  • SubAgents: .claude/agents/ファイル名.md (ファイル単位)
  • Skills: .claude/skills/スキル名/SKILL.md (フォルダ単位)

2.4 活用例: wildcard-import-fixer

💡 Skillsではスクリプトを実行できます。
今回はAndroidプロジェクトなのでKotlinを使用しましたが、Python、JavaScript(npm)なども対応しています。

Kotlinでよくある wildcard import (import java.util.*) を個別のimportに変換するSkillを作ってみました。

どんな時に使う?

  • wildcard importを整理したい時
  • コード品質を改善したい時
  • import文を明確にしたい時

フォルダ構成

.claude/skills/wildcard-import-fixer/
├── SKILL.md                  ← 必須
├── scripts/
│   └── fix-wildcards.kts     ← 任意(自分で追加)
├── templates/
│   └── report_template.html  ← 任意(自分で追加)
├── backups/                  ← 自動生成(スクリプト実行時)
└── reports/                  ← 自動生成(スクリプト実行時)

💡 必須なのは SKILL.md だけです。
その他のファイルやフォルダは用途に合わせて自由に構成できます。

なぜスクリプトを使う?

LLMにコードを毎回生成させると、結果が微妙に変わることがあります。
でもスクリプトを事前に用意しておけば、毎回同じ結果が保証されます。

これがSkillsの Deterministic な特徴です。

SKILL.md

---
name: wildcard-import-fixer
description: Converts wildcard imports (e.g., import java.util.*) to specific imports in Kotlin/Java files.
allowed-tools: Bash, Read, Glob, Grep
---

# Wildcard Import Fixer

Automatically converts wildcard imports to specific imports 
in Kotlin and Java files by analyzing actual class usage in the code.

## Instructions

### Step 1: Analyze the Request
When a user asks to fix wildcard imports:
1. Determine the scope (entire project, specific directory, or single file)
2. Decide if a dry-run preview is appropriate first
3. Check if backups should be created

### Step 2: Run the Fixer Script
Execute the appropriate command based on the scope...

### Step 3: Review Results
After running, check the console output and HTML report...

### Step 4: Handle Edge Cases
If no usage is detected, suggest removing the unused import...

(Full version)

💡 このようにStep形式で指示を書くと、Claudeが順番通りに作業を進めてくれます。

DEMO

SkillsDemo
このデモでは、一度実行した後に /clear で会話をリセットして、もう一度同じ作業を依頼しています。

  • /clear してもSkillsの namedescription は再ロードされる(Progressive Disclosure)
  • スクリプト実行なので、毎回同じ結果が返ってくる(Deterministic)

これがSkillsの強みです。

DEMOの結果
result
結果を一目で確認しやすくhtmlにもするようにしました。

3. SubAgents vs Skills

  • SubAgents: 別室で作業する専門家。結果だけ報告してくれる。
  • Skills: 手元に置いておくマニュアル。必要な時に参照して作業する。

3.1 比較表

項目 SubAgents Skills
コンテキスト 独立(別の作業スペース) メインに統合
呼び出し方 直接指定して呼ぶ 自動認識(Auto-invoked)
ファイル構成 .claude/agents/ファイル名.md .claude/skills/スキル名/SKILL.md
単位 ファイル単位 フォルダ単位
スクリプト実行
向いている作業 複雑なワークフロー、並列作業 繰り返しのルーティン作業

3.2 使い分け

SubAgentsを使う場面

  • コードレビューなど、専門的な視点が必要な時
  • メインの会話を汚したくない時
  • 複数のステップがある複雑な作業

Skillsを使う場面

  • 同じ作業を繰り返す時
  • 一貫した結果が欲しい時(Deterministic)
  • 複数のプロジェクトで再利用したい時

3.3 組み合わせて使う

SubAgentsとSkillsは競合するものではなく、補完関係にあります。

例: PRレビューの自動化

  1. compose-reviewer (SubAgent) がComposeコードをレビュー
  2. kotlin-style-checker (Skill) でスタイルチェック
  3. test-generator (SubAgent) がテストコードを生成

SubAgentが専門的な判断を、Skillが一貫したルールチェックを担当します。

4. まとめ

今回SubAgentsとSkillsを試してみて、使い分けが少し見えてきました。

こんな時は 使うもの
専門的な視点でレビューしてほしい SubAgents
メインの会話を汚したくない SubAgents
同じ作業を毎回同じ結果で実行したい Skills
スクリプトで自動化したい Skills
両方必要な複雑なワークフロー 組み合わせ

まだ使い始めたばかりですが、繰り返しの作業はSkillsに、専門的な判断が必要な作業はSubAgentsに任せると効率が上がりそうです。

興味がある方はぜひ試してみてください!

References

SubAgents

Skills

比較

Facebook

関連記事 | Related Posts

We are hiring!

【プロジェクトマネージャー(iOS/Android/Flutter)】モバイルアプリ開発G/東京

モバイルアプリ開発GについてKINTOテクノロジーズにおける、モバイルアプリ開発のスペシャリストが集まっているグループです。KINTOやmy routeなどのサービスを開発・運用しているグループと協調しながら、品質の高いモバイルアプリを開発し、サービスの発展に貢献することを目標としています。

【クラウドエンジニア】Cloud Infrastructure G/東京・大阪・福岡

KINTO Tech BlogWantedlyストーリーCloud InfrastructureグループについてAWSを主としたクラウドインフラの設計、構築、運用を主に担当しています。

イベント情報