readiness-check
Skill11 starsChanged 12 days agoMITView on GitHub
Verify all OpenCode plugin services are healthy and ready. Use when diagnosing plugin issues, after deployment, or when services like Whisper, TTS, Supabase, or Telegram aren't working.
- Reads credentials
- Installs packages
5 other projects use a version of this.
Adopted by
Most recently taken up by
- microsoft/cat-agent-skillstheir own version, first seen Nov 8, 2026
- mypip-io/skillstheir own version, first seen Nov 1, 2026
- ARCASSystems/FounderOStheir own version, first seen Oct 24, 2026
- microsoft/aibast-agents-librarytheir own version, first seen Oct 13, 2026
- dzianisv/opencode-mobiletheir own version, first seen Jul 30, 2026
Other versions5 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 5
- dzianisv/opencode-mobile★ 295same name
- microsoft/cat-agent-skills★ 101same name
- microsoft/aibast-agents-library★ 8same name
- ARCASSystems/FounderOS★ 7same name
- mypip-io/skills★ 1same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository6 other files it gives its agents.
- AGENTS.mdAGENTS.md
- agent-evaluationSkill
- feature-workflowSkill
- opencode-session-dbSkill
- plugin-testingSkill
- opencode-slack-integrationSkill
The file
We split this skill into the rules it gives an agent
8 rules. 0 are common, 6 are distinctive, and 2 are very specific to this project.
0
Common
Most of the 5 edited versions we read keep these.
6
Distinctive
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 11
Verify that all OpenCode plugin services are healthy and operational.
- Distinctive: line 15
Run these commands to verify all services:
- Distinctive: line 67
If not running: Start with the command above
- Very specific: line 68
If model loading fails: Check Python dependencies (pip install openai-whisper)
- Distinctive: line 112
If socket missing: The TTS plugin auto-starts the server on first use
- Very specific: line 114
Check logs in ~/.config/opencode/coqui/
- Distinctive: line 137
Restart OpenCode: after deploying for changes to take effect.
- Distinctive: line 217
Expected: All migrations show both Local and Remote columns with matching timestamps.
“Common” is measured: kept by at least 6 in 10 of the 5 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Readiness Check
Verify that all OpenCode plugin services are healthy and operational.
Quick Health Check
Run these commands to verify all services:
# 1. Check Whisper STT server
curl -s http://localhost:8787/health
# 2. Check Coqui TTS server
echo '{"text":"test", "output":"/tmp/test.wav"}' | nc -U ~/.config/opencode/coqui/tts.sock
# 3. Check running processes
ps aux | grep -E "whisper_server|tts_server" | grep -v grep
# 4. Check Supabase RLS (requires .env with SUPABASE_ANON_KEY)
source .env && curl -s "https://slqxwymujuoipyiqscrl.supabase.co/rest/v1/telegram_replies?select=id&limit=1" \
-H "apikey: $SUPABASE_ANON_KEY" -H "Authorization: Bearer $SUPABASE_ANON_KEY"
# 5. Check Supabase migrations are in sync
supabase migration listService Details
Whisper STT Server
Purpose: Transcribes voice messages from Telegram to text.
Location: whisper/whisper_server.py
Default Port: 8787
Start Command:
cd /path/to/opencode-reflection-plugin/whisper
python3 whisper_server.py --port 8787 &Health Check:
curl -s http://localhost:8787/healthExpected Response:
{
"status": "healthy",
"model_loaded": true,
"current_model": "base",
"available_models": ["tiny", "tiny.en", "base", "base.en", "small", "small.en", "medium", "medium.en", "large-v2", "large-v3"]
}Troubleshooting:
- If not running: Start with the command above
- If model loading fails: Check Python dependencies (
pip install openai-whisper) - For faster startup: Use
--model tiny(lower quality but faster)
Coqui TTS Server
Purpose: Generates speech audio from text responses.
Location: ~/.config/opencode/coqui/tts_server.py
Socket Path: ~/.config/opencode/coqui/tts.sock
PID File: ~/.config/opencode/coqui/server.pid
Health Check:
# Check socket exists
ls -la ~/.config/opencode/coqui/tts.sock
# Check process is running
cat ~/.config/opencode/coqui/server.pid
ps aux | grep "$(cat ~/.config/opencode/coqui/server.pid)"
# Test TTS generation
echo '{"text":"Hello, this is a test.", "output":"/tmp/test_tts.wav"}' | nc -U ~/.config/opencode/coqui/tts.sockExpected Response:
{"success": true, "output": "/tmp/test_tts.wav"}Verify Audio:
# Check file was created
file /tmp/test_tts.wav
# Expected: RIFF (little-endian) data, WAVE audio, Microsoft PCM, 16 bit, mono 48000 Hz
# Play audio (macOS)
afplay /tmp/test_tts.wavTroubleshooting:
- If socket missing: The TTS plugin auto-starts the server on first use
- To manually restart:
kill $(cat ~/.config/opencode/coqui/server.pid)then trigger TTS - Check logs in
~/.config/opencode/coqui/
Plugin Deployment
Plugin Location: ~/.config/opencode/plugin/
Check Deployed Plugins:
ls -la ~/.config/opencode/plugin/Expected Files:
reflection-3.ts- Judge layer for task verificationtts.ts- Text-to-speech with Telegram integration
Deploy from Source:
cp /path/to/opencode-reflection-plugin/tts.ts ~/.config/opencode/plugin/
cp /path/to/opencode-reflection-plugin/reflection-3.ts ~/.config/opencode/plugin/reflection.tsRestart OpenCode after deploying for changes to take effect.
TTS Configuration
Config File: ~/.config/opencode/tts.json
View Current Config:
cat ~/.config/opencode/tts.jsonExample Configuration:
{
"enabled": true,
"engine": "coqui",
"os": {
"voice": "Samantha",
"rate": 200
},
"coqui": {
"model": "jenny",
"device": "cpu",
"language": "en",
"serverMode": true
},
"telegram": {
"enabled": true,
"uuid": "your-uuid-here",
"sendText": true,
"sendVoice": true,
"receiveReplies": true
},
"whisper": {
"enabled": true,
"model": "base",
"port": 8787
}
}Supabase Backend Verification
RLS Policy Check
The telegram_replies table requires proper RLS policies for:
- SELECT with anon key (enables Realtime subscriptions)
- mark_reply_processed RPC function (marks replies as handled)
Test SELECT Policy:
source .env && curl -s "https://slqxwymujuoipyiqscrl.supabase.co/rest/v1/telegram_replies?select=id,uuid,processed,created_at&order=created_at.desc&limit=3" \
-H "apikey: $SUPABASE_ANON_KEY" \
-H "Authorization: Bearer $SUPABASE_ANON_KEY" | jq '.'Expected: Array of reply objects (not an error)
Test RPC Function:
source .env && curl -s "https://slqxwymujuoipyiqscrl.supabase.co/rest/v1/rpc/mark_reply_processed" \
-X POST \
-H "apikey: $SUPABASE_ANON_KEY" \
-H "Authorization: Bearer $SUPABASE_ANON_KEY" \
-H "Content-Type: application/json" \
-d '{"p_reply_id": "00000000-0000-0000-0000-000000000000"}' | jq '.'Expected: true or false (not a permission error)
Migration Sync Check
supabase migration listExpected: All migrations show both Local and Remote columns with matching timestamps.
If migrations are out of sync:
# If remote has migrations not in local
supabase migration repair --status reverted <migration_id>
# Then push local migrations
supabase db pushEdge Functions Check
# List deployed functions
supabase functions list
# Check function logs
supabase functions logs telegram-webhook --tail
supabase functions logs send-notify --tailTelegram Integration Verification
1. Check Telegram Config
cat ~/.config/opencode/tts.json | jq '.telegram'Required fields:
enabled: trueuuid: Your user UUID from/startcommandreceiveReplies: true(for two-way communication)
2. Test Outbound Notifications
Trigger a TTS event and check if notification was sent:
# Check recent notifications in Supabase
source .env && curl -s "https://slqxwymujuoipyiqscrl.supabase.co/rest/v1/telegram_notifications?select=id,message,created_at&order=created_at.desc&limit=3" \
-H "apikey: $SUPABASE_ANON_KEY" \
-H "Authorization: Bearer $SUPABASE_ANON_KEY" | jq '.'3. Test Inbound Replies
Send a message to the Telegram bot, then check if it appears:
# Check for unprocessed replies
source .env && curl -s "https://slqxwymujuoipyiqscrl.supabase.co/rest/v1/telegram_replies?select=id,reply_text,is_voice,processed,created_at&processed=eq.false&order=created_at.desc&limit=5" \
-H "apikey: $SUPABASE_ANON_KEY" \
-H "Authorization: Bearer $SUPABASE_ANON_KEY" | jq '.'4. Test Voice Transcription
Send a voice message to the bot, then verify transcription:
# Check if Whisper is running
curl -s http://localhost:8787/health | jq '.'
# Voice messages will have is_voice=true and reply_text populated after transcriptionCommon Issues
| Issue | Cause | Solution |
| Whisper not responding | Server not started | python3 whisper_server.py --port 8787 & |
| Coqui socket missing | Server not started | Trigger any TTS action or restart OpenCode |
| Supabase module error | Dependency missing | Add to ~/.config/opencode/package.json and run bun install |
| Telegram not working | Missing UUID | Get UUID from Telegram bot with /start |
| Voice messages not transcribed | Whisper not running | Start Whisper server |
| RLS permission denied | Missing SELECT policy | Deploy 20240117000000_fix_replies_rls.sql migration |
| Realtime not receiving | Anon key blocked by RLS | Deploy RLS fix migration with SELECT policy for anon |
| mark_reply_processed fails | RPC function missing | Deploy RLS fix migration with SECURITY DEFINER function |
| Migrations out of sync | Remote has unknown migrations | Run supabase migration repair then supabase db push |
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

