RaycastからSlackに定型メッセージを送るextensionを作りました
概要
Slack Templated Message というExtensionを作成しました。
Raycast Storeからインストールできます。もし興味ありましたら試してみてください。
例えば勤怠連絡などSlackに頻繁に同じメッセージを送信する際に、Raycastからサクッと送信できます。
事前に送信するメッセージやチャンネルを登録し、それらをRaycastからいつでも呼び出せます。
使い方
インストール/認証
Extension管理画面のInstall From Storeから, Slack Templated Message
と検索してください。
最初にコマンド実行しようとすると認証を促されます。
ブラウザに遷移するのでOauthの設定をしてください。
テンプレート管理
Create Slack Template
コマンドで、送信するメッセージのテンプレを作成できます。
- テンプレの名前
- メッセージ内容
- 投稿先チャンネル
- スレッド ID (スレッドにリプライする形で送信したい場合)
スレッドIDはスレッド元メッセージのリンクの末尾の、p1234567891234567みたいな部分です。
例) https://{workspace名}.slack.com/archives/{チャンネルID}/p1234567891234567
申し訳程度に date, timeなどの変数も使用できるようにしています。
例えば date は 2025-03-08, time は 15:03 のように変換されます。
またImport Templates
,Export Templates
コマンドで、テンプレート一覧をJsonで管理できるようにしています。
メッセージ送信
Send Slack Message
コマンドで、先ほど作成したテンプレートメッセージを送信できます。
また既存のテンプレートの編集/削除もここから実施できます。 (cmd+k)
Store公開まで
実装
基本的にはこちらのドキュメントに沿って進めていきます。
Create Extension
コマンドで諸々埋めて作成すると、初期プロジェクトが作成されます。
コードを書いてnpm run dev
を実行すると、raycastから呼び出せるようになります。
またhot reloadもしてくれるので動作確認しながらの実装も楽です。
なお今回のExtensionはほぼ Cursor (Claude-3.5-Sonnet) で実装しました。
RaycastのapiやUtilityを使用するところは多少細かめに指示をする必要がありましたが、それ以外の箇所は概ねスムーズに書いてくれました。
事前にapi一覧など眺めておいておくと良さそうです。
公開準備
コマンドの命名規則やスクショの準備などをまとめたガイドラインがあるのでそれに則って修正します。npm run lint
,npm run build
がパスしないといけないので合わせて確認します。
これらの仕組みはCursorと組み合わせるとかなりスムーズに進めやすかったです。
以下のように指示するとスムーズに進められたのでおすすめです。
- (ガイドラインをcontextとした上で)「ガイドラインをチェックリスト形式にまとめて、現状のプロジェクトをレビューして」
- 「コードを修正したら毎回 lint,buildを実行してパスするまで修正して」
またスクリーンショットやアイコンは専用ツールも用意されています。
PR作成-Mergeまで
https://github.com/raycast/extensions にPRを出します。
npm run publish
でPR作成できるみたいですが、私は自分でforkしてPR作成しました。
初回レビューまでおよそ1-2週ほどかかるので気長に待ちます。
レビューの際は greptile というAI botが動いているようでした。
styleだけでなくロジック面も正しそうなコメントしていたので精度も良さそうです。
AIが書いたコードをAIがレビューしていて、時代を感じました。
公開完了
PRがマージされるとStoreに自動で公開されます。
まとめ
Extensionを作るための仕組みがかなり整っていて、ほぼ初めてでしたがスムーズに進められました。
それらの仕組みは生成AIとも相性が良く、正しい状態をドキュメントやlinterで確認できることが重要だと思いました。
Discussion
はじめまして!(リリースおめでとうございます🎉)
普段Slackで、HRMOS勤怠を使った打刻をしているのですが mentionの指定に一手間必要だった(結果できたのでHappy!)ので備忘録として残しておきます
話は単純で、WebからSlackにログイン→Webからメッセージ送信しNetworkタブから mentionに相当する文字列を見つけてそれを「Send Slack Message」の
Message
部分にいれるということをしました🙏