mirror of
https://github.com/garrytan/gstack.git
synced 2026-05-02 11:45:20 +02:00
feat: add /setup-team-dashboard skill, post-ship leaderboard callout
Interactive 8-step setup skill for deploying dashboard + edge functions. Post-ship callout shows team leaderboard after successful sync. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,118 @@
|
||||
# /setup-team-dashboard
|
||||
|
||||
Interactive setup for the gstack team dashboard, regression alerts, and weekly digest.
|
||||
|
||||
**Prerequisites:**
|
||||
- Supabase project created (https://app.supabase.com)
|
||||
- GitHub OAuth configured in Supabase Auth settings
|
||||
- `gstack sync setup` completed (team sync working)
|
||||
|
||||
## Steps
|
||||
|
||||
### Step 1: Check Supabase CLI
|
||||
|
||||
```bash
|
||||
which supabase || echo "NOT_INSTALLED"
|
||||
```
|
||||
|
||||
If NOT_INSTALLED, tell the user:
|
||||
```
|
||||
Install the Supabase CLI:
|
||||
brew install supabase/tap/supabase
|
||||
```
|
||||
Wait for confirmation before continuing.
|
||||
|
||||
### Step 2: Link project
|
||||
|
||||
Ask the user for their Supabase project ref (found in project settings or URL).
|
||||
|
||||
```bash
|
||||
cd <project-root>
|
||||
supabase link --project-ref <ref>
|
||||
```
|
||||
|
||||
If already linked, skip.
|
||||
|
||||
### Step 3: Run migrations
|
||||
|
||||
```bash
|
||||
supabase db push
|
||||
```
|
||||
|
||||
This creates the `team_settings`, `alert_cooldowns` tables and `create_team()` RPC function.
|
||||
|
||||
### Step 4: Deploy edge functions
|
||||
|
||||
Deploy all 3 edge functions:
|
||||
|
||||
```bash
|
||||
supabase functions deploy dashboard --no-verify-jwt
|
||||
supabase functions deploy regression-alert
|
||||
supabase functions deploy weekly-digest
|
||||
```
|
||||
|
||||
Note: `dashboard` uses `--no-verify-jwt` because it serves a public HTML page (auth happens client-side).
|
||||
|
||||
### Step 5: Set up database webhook for regression alerts
|
||||
|
||||
Tell the user to go to Supabase Dashboard > Database > Webhooks and create:
|
||||
- **Name:** regression-alert
|
||||
- **Table:** eval_runs
|
||||
- **Events:** INSERT
|
||||
- **Type:** Supabase Edge Function
|
||||
- **Function:** regression-alert
|
||||
|
||||
### Step 6: Set up pg_cron for weekly digest
|
||||
|
||||
Tell the user to enable the `pg_cron` extension in Supabase Dashboard > Database > Extensions.
|
||||
|
||||
Then run in the SQL editor:
|
||||
```sql
|
||||
select cron.schedule(
|
||||
'weekly-digest',
|
||||
'0 9 * * 1', -- Every Monday at 9am UTC
|
||||
$$
|
||||
select net.http_post(
|
||||
url := '<supabase-url>/functions/v1/weekly-digest',
|
||||
headers := '{"Authorization": "Bearer <service-role-key>"}'::jsonb,
|
||||
body := '{}'::jsonb
|
||||
);
|
||||
$$
|
||||
);
|
||||
```
|
||||
|
||||
Replace `<supabase-url>` and `<service-role-key>` with actual values.
|
||||
|
||||
### Step 7: Configure Slack webhook
|
||||
|
||||
Ask the user for their Slack webhook URL (from https://api.slack.com/messaging/webhooks).
|
||||
|
||||
```bash
|
||||
gstack team set slack-webhook <url>
|
||||
gstack team set digest-enabled true
|
||||
```
|
||||
|
||||
### Step 8: Verify
|
||||
|
||||
Open the dashboard URL:
|
||||
```
|
||||
https://<project-ref>.supabase.co/functions/v1/dashboard
|
||||
```
|
||||
|
||||
Expected: login page with "Sign in with GitHub" button. After login, dashboard shows team data.
|
||||
|
||||
Test regression alert:
|
||||
```bash
|
||||
# Push a test eval with low pass rate to trigger alert
|
||||
gstack eval push <test-file>
|
||||
```
|
||||
|
||||
Check Slack channel for the regression alert.
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
- **"Function not found"**: Re-run `supabase functions deploy <name>`
|
||||
- **OAuth redirect fails**: Check that `<project>.supabase.co/functions/v1/dashboard` is in your Supabase Auth redirect URLs
|
||||
- **No data on dashboard**: Run `gstack sync pull` to verify data exists, then check browser console for errors
|
||||
- **Regression alert not firing**: Check Database > Webhooks in Supabase dashboard, verify the webhook is active
|
||||
- **Weekly digest not sending**: Check Extensions > pg_cron is enabled, verify the cron schedule in SQL editor
|
||||
@@ -425,6 +425,12 @@ Substitute actual values from the preceding steps. Use `0` for Greptile fields i
|
||||
~/.claude/skills/gstack/bin/gstack-sync push-transcript 2>/dev/null || true
|
||||
```
|
||||
|
||||
3. Leaderboard callout (non-fatal): After sync, show the user their position on the team leaderboard this week:
|
||||
```bash
|
||||
~/.claude/skills/gstack/bin/gstack-eval leaderboard 2>/dev/null | head -15 || true
|
||||
```
|
||||
If leaderboard data is available, print the table. If sync is not configured or no data exists, silently skip.
|
||||
|
||||
---
|
||||
|
||||
## Important Rules
|
||||
|
||||
Reference in New Issue
Block a user