promptis README

[!NOTE]
For English version, please refer to README-en.md.
GitHub Copilot Chatは実装に関する質問をプロンプトで行うことができますが、このプロンプトを逐一打ち込む負荷が高いことによって次のような問題が生じていました。
- 時間と生産性の問題
- 頻繁なプロンプト入力によりコーディングが中断され、集中力の低下や生産性の減少を招く
- コンテキストの再説明に時間を要し、作業フローの非効率化につながる
- 品質と一貫性の問題
- 短いプロンプトでは開発者の意図を完全に伝えきれず、生成されるコードの品質や適切性が低下する
- 異なるプロンプトの使用により、生成されるコードのスタイルや方針に一貫性がなくなり、プロジェクト全体の統一性が損なわれる
Promptisは、これらの問題を解決するために、GitHub Copilot Chatを活用してプロンプト実行を半自動化するVisual Studio Code (VS Code) Extensionです。

Merits
- プロンプト入力の手間を軽減: プロンプトの自動実行により、手動での入力作業を減らし、開発に集中できる
- 一貫性のあるコードレビュー: プロンプトの統一により、コードの品質と一貫性を向上
- 迅速なフィードバック: プロンプトの自動実行により、コードレビューやフィードバックの速度が向上し、開発サイクルが短縮される
- 柔軟な出力制御: 出力モード設定により、ChatWindowの負荷を軽減しながら大量のファイルレビューを実行可能
How to Install
インターネット経由でインストールする場合
Extensions for Visual Studio CodeのPromptisからインストールしてください。
インターネットに接続できない端末にインストールする場合
- インターネットに接続できる端末を用いて、ReleaseページからExtensionの実体である
.vsixファイルをダウンロードしてください。
- ダウンロードした
.vsixファイルをインターネットに接続できない端末に配布してください。
- 接続できない端末において、VS Codeの「拡張機能」メニューの「VSIX からのインストール」から
vsixファイルをインストールしてください。
Usage
Promptisは、GitHub Copilot Chatを利用してプロンプト実行を半自動化するためのExtensionです。
ソースコードや設定ファイルに対するレビュー観点等のプロンプトをMarkdownファイル(群)としてディレクトリに準備しておき、
Chatウィンドウから @promptis に対して指示(コマンド)を出すことで、そのコマンドに対応するプロンプトを連続して実行することができます。例えば、chatHandler.tsとapi.tsに対してコード基準を満たしているかをレビューさせる場合は、次のように指示します。
@promptis /codereviewCodeStandards #file:chatHandler.ts #file:api.ts
/codereviewCodeStandards等のコマンドと、プロンプト格納ディレクトリが1:1に対応しており、その配下にあるプロンプトファイル(拡張子: .md)をPromptisが再帰的に読み込み、連続実行します。
指示できるコマンドは次のとおりです。
コマンドマップ
| コマンド名 |
実行内容 |
codereviewCodeStandards |
コード基準に関する一連のコードレビューを行う |
codereviewFunctional |
機能観点のコードレビューを行う |
codereviewNonFunctional |
非機能観点のコードレビューを行う |
reverseEngineering |
ソースコードに対するリバースエンジニアリングを行う |
drawDiagrams |
ソースコードから図式を作成する |
プロンプト例については、生成AI エンジニアリング活用ガイドにも公開しており、圧縮ファイルはこちらからダウンロードいただけます。
チャット変数
GitHub Copilot Chatで利用できるチャットコンテキストのうち、#<file | folder>はそのままご利用いただけます。
[!NOTE]
VSCode version 1.100以降では、#fileによるサジェストが表示されなくなりましたが、#を入力した後のサジェストを利用することで引き続きファイル指定ができます。また、Chatウィンドウにファイルやディレクトリをドラッグ&ドロップすることで、自動的にファイル参照を追加することも可能です。
Promptisではさらに、次のチャット変数を利用できます。
| チャット変数 |
説明 |
例 |
#dir:[Directory] |
プロンプト中に#dirを含めることで、プロンプトを適用するディレクトリを指定できる。指定したディレクトリ配下の全ファイルに対してプロンプトが実行される。また、#dir:path/to/dirの形式で直接ディレクトリを指定することも可能。 |
@promptis /codereviewCodeStandards #dir |
#filter:[GlobPattern] |
プロンプト中に#filter:[GlobPattern]を含めることで、#dir指定によって抽出されたファイルのうち、GlobPatternに合致するもののみを適用対象として絞り込める。指定できるパターンについてはGlobPatternを参照。 |
@promptis /codereviewCodeStandards #dir #filter:**/*.{ts,js} |
プロンプトファイルのFront Matter
プロンプトファイル(.md)にFront Matter形式でapplyToフィールドを指定することで、特定のファイル拡張子やパターンにのみプロンプトを適用することができます。パスはワークスペースルートからの相対パスで指定します。これにより、ファイルタイプごとに異なるレビュー観点を持つことが可能になります。
基本形式
---
applyTo: "*.java"
---
あなたは極めて優秀なJavaプログラマーで、Javaコーディング規約に対する責任を持っています。
...
このプロンプトは.javaファイルに対してのみ適用されます。
複数拡張子の指定
配列形式で複数の拡張子を指定できます:
---
applyTo: ["*.java", "*.kt"]
---
Globパターンの使用
より柔軟なパターンマッチングも可能です:
---
applyTo: "src/**/*.py"
---
除外パターンの使用
!で始まるパターンを使用することで、特定のファイルを除外できます。パターンは順序通りに評価され、後のパターンが優先されます。
基本的な除外
---
applyTo:
- "**/*.tsx" # すべての.tsxファイルを含める
- "!**/*.stories.tsx" # Storybookファイルは除外
---
このプロンプトは.tsxファイルに適用されますが、.stories.tsxファイルは除外されます。
再度includeパターン
除外したファイルの中から特定のファイルのみを含めることも可能です:
---
applyTo:
- "**/*.ts" # すべての.tsファイルを含める
- "!**/*.spec.ts" # テストファイルは除外
- "src/special.spec.ts" # でもこのファイルは含める
---
複雑な例
---
applyTo:
- "src/**/*.ts" # srcディレクトリ配下の全.tsファイル
- "!src/test/**/*.ts" # testディレクトリは除外
- "!src/**/*.generated.ts" # 生成ファイルは除外
- "src/test/critical.ts" # 特定のテストファイルは含める
---
パターン評価の順序
パターンは配列の順序通りに評価され、後のパターンが優先されます:
---
# パターン1: 通常の除外
applyTo:
- "*.ts" # すべての.tsファイルを含める
- "!*.spec.ts" # テストファイルは除外
# → *.spec.ts は除外される
---
---
# パターン2: 逆順(後のパターンが優先)
applyTo:
- "!*.spec.ts" # テストファイルを除外(しかし次のパターンで上書き)
- "*.ts" # すべての.tsファイルを含める
# → *.spec.ts も含まれる(後のパターンが優先)
---
注意: 除外パターン(!)のみを指定した場合、デフォルトでは何もマッチしません。必ず少なくとも1つのincludeパターンを指定してください。
後方互換性
applyToフィールドが未指定の場合、そのプロンプトは全てのファイルに適用されます(既存の動作と同じ)。
使用例
例えば、以下のようなプロンプトファイル構成の場合:
prompts/codestandards/
├── 01_java_readability.md (applyTo: "*.java")
├── 02_java_naming.md (applyTo: "*.java")
├── 03_python_pep8.md (applyTo: "*.py")
├── 04_typescript_style.md (applyTo: ["*.ts", "*.tsx"])
├── 05_general_security.md (applyTo未指定 = 全ファイル対象)
└── 06_sql_injection.md (applyTo: "*.sql")
Main.javaをレビューする場合 → 01_java_readability.md、02_java_naming.md、05_general_security.mdが適用される
app.pyをレビューする場合 → 03_python_pep8.md、05_general_security.mdが適用される
component.tsxをレビューする場合 → 04_typescript_style.md、05_general_security.mdが適用される
Requirements
Extension Settings
| 設定項目 |
type |
デフォルト値 |
設定内容 |
codeReview.codeStandardPath |
string |
|
コードレビュープロンプト格納ディレクトリの絶対パス(コード基準観点) |
codeReview.functionalPath |
string |
|
コードレビュープロンプト格納ディレクトリの絶対パス(機能観点) |
codeReview.nonFunctionalPath |
string |
|
コードレビュープロンプト格納ディレクトリの絶対パス(非機能観点) |
reverseEngineering.promptsPath |
string |
|
リバースエンジニアリング用プロンプト格納ディレクトリの絶対パス |
drawDiagrams.promptsPath |
string |
|
図式生成用のプロンプト用ディレクトリの絶対パス |
prompt.excludeFilePatterns |
array of string |
|
プロンプト格納ディレクトリ配下のプロンプトファイルのうち、実行しないファイル名のパターン(ex., **/dir/*.md)。記述できるパターンはminimatch-cheat-sheetを参照。 |
promptis.output.mode |
string |
chat-only |
出力モード。chat-onlyはChatWindowに結果を表示、file-onlyはファイルのみに出力しChatWindowの負荷を軽減 |
chat.outputPath |
string |
|
チャット内容のバックアップ出力先ディレクトリの絶対パス(file-onlyモード時は必須) |
telemetry.enable |
boolean |
true |
利用状況を示すテレメトリ情報の送信可否 |
Telemetry
本Extensionは、利用状況を収集し本Extensionの改善を図る目的で、テレメトリを弊社サーバに送信します。収集するデータは次のとおりで、個人を特定する情報は含まれません。
| 項目名 |
説明 |
具体例 |
| 実行コマンド |
上述の「コマンドマップ」で示すコマンド名 |
codereviewCodeStandards |
| 言語設定 |
ユーザのVS Codeの言語設定 |
en |
| VS Codeのバージョン |
ユーザのVS Codeのバージョン |
1.94.1 |
| OS |
ユーザのOS |
linux |
| 本拡張のID |
本拡張のID |
tis.promptis |
| 本拡張のバージョン |
本拡張のバージョン |
1.0.0 |
| マシンID |
VS Codeをインストールしたマシンを識別するID。ユーザのプライバシーを保護するため、VS Codeが生成するハッシュ化された値を使用。 |
3917c36ba8b94f2521fda9b5f94b783364a838148a87e5cfa3506eb6690e69a5 |
なお、テレメトリ送信はユーザ設定で無効化できます。
- VS Code全体でテレメトリを無効にしたい場合は
telemetry.telemetryLevelを参照の上、望む値へ変更してください。
- 本Extensionのテレメトリのみ無効にしたい場合は、Promptisの
telemetry.enable設定をfalseに変更してください。
Support
- VS Codeの最新バージョンを含め2世代前までのバージョンをサポートします
- 本Extensionのバグや機能要望については、Issuesにて受け付けています
License
Apache-2.0 License
Acknowledgements
TIS株式会社 産業ビジネス第3事業部 産業モダナイゼーションビジネス部の津田 浩一氏、中泉 卓馬氏に心より感謝申し上げます。
お二人は本Extensionのオリジナル実装を行い、その成果創出とOSS公開に大きく貢献してくださいました。