opencode-skills-collection 1.0.186 → 1.0.187
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundled-skills/.antigravity-install-manifest.json +5 -1
- package/bundled-skills/3d-web-experience/SKILL.md +152 -37
- package/bundled-skills/agent-evaluation/SKILL.md +1088 -26
- package/bundled-skills/agent-memory-systems/SKILL.md +1037 -25
- package/bundled-skills/agent-tool-builder/SKILL.md +668 -16
- package/bundled-skills/ai-agents-architect/SKILL.md +271 -31
- package/bundled-skills/ai-product/SKILL.md +716 -26
- package/bundled-skills/ai-wrapper-product/SKILL.md +450 -44
- package/bundled-skills/algolia-search/SKILL.md +867 -15
- package/bundled-skills/autonomous-agents/SKILL.md +1033 -26
- package/bundled-skills/aws-serverless/SKILL.md +1046 -35
- package/bundled-skills/azure-functions/SKILL.md +1318 -19
- package/bundled-skills/browser-automation/SKILL.md +1065 -28
- package/bundled-skills/browser-extension-builder/SKILL.md +159 -32
- package/bundled-skills/bullmq-specialist/SKILL.md +347 -16
- package/bundled-skills/clerk-auth/SKILL.md +796 -15
- package/bundled-skills/computer-use-agents/SKILL.md +1870 -28
- package/bundled-skills/context-window-management/SKILL.md +271 -18
- package/bundled-skills/conversation-memory/SKILL.md +453 -24
- package/bundled-skills/crewai/SKILL.md +252 -46
- package/bundled-skills/discord-bot-architect/SKILL.md +1207 -34
- package/bundled-skills/docs/integrations/jetski-cortex.md +3 -3
- package/bundled-skills/docs/integrations/jetski-gemini-loader/README.md +1 -1
- package/bundled-skills/docs/maintainers/repo-growth-seo.md +3 -3
- package/bundled-skills/docs/maintainers/skills-update-guide.md +1 -1
- package/bundled-skills/docs/users/bundles.md +1 -1
- package/bundled-skills/docs/users/claude-code-skills.md +1 -1
- package/bundled-skills/docs/users/gemini-cli-skills.md +1 -1
- package/bundled-skills/docs/users/getting-started.md +1 -1
- package/bundled-skills/docs/users/kiro-integration.md +1 -1
- package/bundled-skills/docs/users/usage.md +4 -4
- package/bundled-skills/docs/users/visual-guide.md +4 -4
- package/bundled-skills/email-systems/SKILL.md +646 -26
- package/bundled-skills/faf-expert/SKILL.md +221 -0
- package/bundled-skills/faf-wizard/SKILL.md +252 -0
- package/bundled-skills/file-uploads/SKILL.md +212 -11
- package/bundled-skills/firebase/SKILL.md +646 -16
- package/bundled-skills/gcp-cloud-run/SKILL.md +1117 -32
- package/bundled-skills/graphql/SKILL.md +1026 -27
- package/bundled-skills/hubspot-integration/SKILL.md +804 -19
- package/bundled-skills/idea-darwin/SKILL.md +120 -0
- package/bundled-skills/inngest/SKILL.md +431 -16
- package/bundled-skills/interactive-portfolio/SKILL.md +342 -44
- package/bundled-skills/langfuse/SKILL.md +296 -41
- package/bundled-skills/langgraph/SKILL.md +259 -50
- package/bundled-skills/micro-saas-launcher/SKILL.md +343 -44
- package/bundled-skills/neon-postgres/SKILL.md +572 -15
- package/bundled-skills/nextjs-supabase-auth/SKILL.md +269 -21
- package/bundled-skills/notion-template-business/SKILL.md +371 -44
- package/bundled-skills/personal-tool-builder/SKILL.md +537 -44
- package/bundled-skills/plaid-fintech/SKILL.md +825 -19
- package/bundled-skills/prompt-caching/SKILL.md +438 -25
- package/bundled-skills/rag-engineer/SKILL.md +271 -29
- package/bundled-skills/salesforce-development/SKILL.md +912 -19
- package/bundled-skills/satori/SKILL.md +54 -0
- package/bundled-skills/scroll-experience/SKILL.md +381 -44
- package/bundled-skills/segment-cdp/SKILL.md +817 -19
- package/bundled-skills/shopify-apps/SKILL.md +1475 -19
- package/bundled-skills/slack-bot-builder/SKILL.md +1162 -28
- package/bundled-skills/telegram-bot-builder/SKILL.md +152 -37
- package/bundled-skills/telegram-mini-app/SKILL.md +445 -44
- package/bundled-skills/trigger-dev/SKILL.md +916 -27
- package/bundled-skills/twilio-communications/SKILL.md +1310 -28
- package/bundled-skills/upstash-qstash/SKILL.md +898 -27
- package/bundled-skills/vercel-deployment/SKILL.md +637 -39
- package/bundled-skills/viral-generator-builder/SKILL.md +132 -37
- package/bundled-skills/voice-agents/SKILL.md +937 -27
- package/bundled-skills/voice-ai-development/SKILL.md +375 -46
- package/bundled-skills/workflow-automation/SKILL.md +982 -29
- package/bundled-skills/zapier-make-patterns/SKILL.md +772 -27
- package/package.json +1 -1
|
@@ -1,13 +1,20 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: telegram-mini-app
|
|
3
|
-
description:
|
|
3
|
+
description: Expert in building Telegram Mini Apps (TWA) - web apps that run
|
|
4
|
+
inside Telegram with native-like experience. Covers the TON ecosystem,
|
|
5
|
+
Telegram Web App API, payments, user authentication, and building viral mini
|
|
6
|
+
apps that monetize.
|
|
4
7
|
risk: unknown
|
|
5
|
-
source:
|
|
6
|
-
date_added:
|
|
8
|
+
source: vibeship-spawner-skills (Apache 2.0)
|
|
9
|
+
date_added: 2026-02-27
|
|
7
10
|
---
|
|
8
11
|
|
|
9
12
|
# Telegram Mini App
|
|
10
13
|
|
|
14
|
+
Expert in building Telegram Mini Apps (TWA) - web apps that run inside Telegram
|
|
15
|
+
with native-like experience. Covers the TON ecosystem, Telegram Web App API,
|
|
16
|
+
payments, user authentication, and building viral mini apps that monetize.
|
|
17
|
+
|
|
11
18
|
**Role**: Telegram Mini App Architect
|
|
12
19
|
|
|
13
20
|
You build apps where 800M+ Telegram users already are. You understand
|
|
@@ -15,6 +22,15 @@ the Mini App ecosystem is exploding - games, DeFi, utilities, social
|
|
|
15
22
|
apps. You know TON blockchain and how to monetize with crypto. You
|
|
16
23
|
design for the Telegram UX paradigm, not traditional web.
|
|
17
24
|
|
|
25
|
+
### Expertise
|
|
26
|
+
|
|
27
|
+
- Telegram Web App API
|
|
28
|
+
- TON blockchain
|
|
29
|
+
- Mini App UX
|
|
30
|
+
- TON Connect
|
|
31
|
+
- Viral mechanics
|
|
32
|
+
- Crypto payments
|
|
33
|
+
|
|
18
34
|
## Capabilities
|
|
19
35
|
|
|
20
36
|
- Telegram Web App API
|
|
@@ -34,7 +50,6 @@ Getting started with Telegram Mini Apps
|
|
|
34
50
|
|
|
35
51
|
**When to use**: When starting a new Mini App
|
|
36
52
|
|
|
37
|
-
```javascript
|
|
38
53
|
## Mini App Setup
|
|
39
54
|
|
|
40
55
|
### Basic Structure
|
|
@@ -101,7 +116,6 @@ bot.command('app', (ctx) => {
|
|
|
101
116
|
});
|
|
102
117
|
});
|
|
103
118
|
```
|
|
104
|
-
```
|
|
105
119
|
|
|
106
120
|
### TON Connect Integration
|
|
107
121
|
|
|
@@ -109,7 +123,6 @@ Wallet connection for TON blockchain
|
|
|
109
123
|
|
|
110
124
|
**When to use**: When building Web3 Mini Apps
|
|
111
125
|
|
|
112
|
-
```python
|
|
113
126
|
## TON Connect Integration
|
|
114
127
|
|
|
115
128
|
### Setup
|
|
@@ -169,7 +182,6 @@ function PaymentButton({ amount, to }) {
|
|
|
169
182
|
return <button onClick={handlePay}>Pay {amount} TON</button>;
|
|
170
183
|
}
|
|
171
184
|
```
|
|
172
|
-
```
|
|
173
185
|
|
|
174
186
|
### Mini App Monetization
|
|
175
187
|
|
|
@@ -177,7 +189,6 @@ Making money from Mini Apps
|
|
|
177
189
|
|
|
178
190
|
**When to use**: When planning Mini App revenue
|
|
179
191
|
|
|
180
|
-
```javascript
|
|
181
192
|
## Mini App Monetization
|
|
182
193
|
|
|
183
194
|
### Revenue Streams
|
|
@@ -227,58 +238,448 @@ function ReferralShare() {
|
|
|
227
238
|
- Leaderboards
|
|
228
239
|
- Achievement badges
|
|
229
240
|
- Referral bonuses
|
|
241
|
+
|
|
242
|
+
### Mini App UX Patterns
|
|
243
|
+
|
|
244
|
+
UX specific to Telegram Mini Apps
|
|
245
|
+
|
|
246
|
+
**When to use**: When designing Mini App interfaces
|
|
247
|
+
|
|
248
|
+
## Mini App UX
|
|
249
|
+
|
|
250
|
+
### Platform Conventions
|
|
251
|
+
| Element | Implementation |
|
|
252
|
+
|---------|----------------|
|
|
253
|
+
| Main Button | tg.MainButton |
|
|
254
|
+
| Back Button | tg.BackButton |
|
|
255
|
+
| Theme | tg.themeParams |
|
|
256
|
+
| Haptics | tg.HapticFeedback |
|
|
257
|
+
|
|
258
|
+
### Main Button
|
|
259
|
+
```javascript
|
|
260
|
+
const tg = window.Telegram.WebApp;
|
|
261
|
+
|
|
262
|
+
// Show main button
|
|
263
|
+
tg.MainButton.setText('Continue');
|
|
264
|
+
tg.MainButton.show();
|
|
265
|
+
tg.MainButton.onClick(() => {
|
|
266
|
+
// Handle click
|
|
267
|
+
submitForm();
|
|
268
|
+
});
|
|
269
|
+
|
|
270
|
+
// Loading state
|
|
271
|
+
tg.MainButton.showProgress();
|
|
272
|
+
// ...
|
|
273
|
+
tg.MainButton.hideProgress();
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
### Theme Adaptation
|
|
277
|
+
```css
|
|
278
|
+
:root {
|
|
279
|
+
--tg-theme-bg-color: var(--tg-theme-bg-color, #ffffff);
|
|
280
|
+
--tg-theme-text-color: var(--tg-theme-text-color, #000000);
|
|
281
|
+
--tg-theme-button-color: var(--tg-theme-button-color, #3390ec);
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
body {
|
|
285
|
+
background: var(--tg-theme-bg-color);
|
|
286
|
+
color: var(--tg-theme-text-color);
|
|
287
|
+
}
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
### Haptic Feedback
|
|
291
|
+
```javascript
|
|
292
|
+
// Light feedback
|
|
293
|
+
tg.HapticFeedback.impactOccurred('light');
|
|
294
|
+
|
|
295
|
+
// Success
|
|
296
|
+
tg.HapticFeedback.notificationOccurred('success');
|
|
297
|
+
|
|
298
|
+
// Selection
|
|
299
|
+
tg.HapticFeedback.selectionChanged();
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
## Sharp Edges
|
|
303
|
+
|
|
304
|
+
### Not validating initData from Telegram
|
|
305
|
+
|
|
306
|
+
Severity: HIGH
|
|
307
|
+
|
|
308
|
+
Situation: Backend trusts user data without verification
|
|
309
|
+
|
|
310
|
+
Symptoms:
|
|
311
|
+
- Trusting client data blindly
|
|
312
|
+
- No server-side validation
|
|
313
|
+
- Using initDataUnsafe directly
|
|
314
|
+
- Security audit failures
|
|
315
|
+
|
|
316
|
+
Why this breaks:
|
|
317
|
+
initData can be spoofed.
|
|
318
|
+
Security vulnerability.
|
|
319
|
+
Users can impersonate others.
|
|
320
|
+
Data tampering possible.
|
|
321
|
+
|
|
322
|
+
Recommended fix:
|
|
323
|
+
|
|
324
|
+
## Validating initData
|
|
325
|
+
|
|
326
|
+
### Why Validate
|
|
327
|
+
- initData contains user info
|
|
328
|
+
- Must verify it came from Telegram
|
|
329
|
+
- Prevent spoofing/tampering
|
|
330
|
+
|
|
331
|
+
### Node.js Validation
|
|
332
|
+
```javascript
|
|
333
|
+
import crypto from 'crypto';
|
|
334
|
+
|
|
335
|
+
function validateInitData(initData, botToken) {
|
|
336
|
+
const params = new URLSearchParams(initData);
|
|
337
|
+
const hash = params.get('hash');
|
|
338
|
+
params.delete('hash');
|
|
339
|
+
|
|
340
|
+
// Sort and join
|
|
341
|
+
const dataCheckString = Array.from(params.entries())
|
|
342
|
+
.sort(([a], [b]) => a.localeCompare(b))
|
|
343
|
+
.map(([k, v]) => `${k}=${v}`)
|
|
344
|
+
.join('\n');
|
|
345
|
+
|
|
346
|
+
// Create secret key
|
|
347
|
+
const secretKey = crypto
|
|
348
|
+
.createHmac('sha256', 'WebAppData')
|
|
349
|
+
.update(botToken)
|
|
350
|
+
.digest();
|
|
351
|
+
|
|
352
|
+
// Calculate hash
|
|
353
|
+
const calculatedHash = crypto
|
|
354
|
+
.createHmac('sha256', secretKey)
|
|
355
|
+
.update(dataCheckString)
|
|
356
|
+
.digest('hex');
|
|
357
|
+
|
|
358
|
+
return calculatedHash === hash;
|
|
359
|
+
}
|
|
360
|
+
```
|
|
361
|
+
|
|
362
|
+
### Using in API
|
|
363
|
+
```javascript
|
|
364
|
+
app.post('/api/action', (req, res) => {
|
|
365
|
+
const { initData } = req.body;
|
|
366
|
+
|
|
367
|
+
if (!validateInitData(initData, process.env.BOT_TOKEN)) {
|
|
368
|
+
return res.status(401).json({ error: 'Invalid initData' });
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
// Safe to use data
|
|
372
|
+
const params = new URLSearchParams(initData);
|
|
373
|
+
const user = JSON.parse(params.get('user'));
|
|
374
|
+
// ...
|
|
375
|
+
});
|
|
376
|
+
```
|
|
377
|
+
|
|
378
|
+
### TON Connect not working on mobile
|
|
379
|
+
|
|
380
|
+
Severity: HIGH
|
|
381
|
+
|
|
382
|
+
Situation: Wallet connection fails on mobile Telegram
|
|
383
|
+
|
|
384
|
+
Symptoms:
|
|
385
|
+
- Works on desktop, fails mobile
|
|
386
|
+
- Wallet app doesn't open
|
|
387
|
+
- Connection stuck
|
|
388
|
+
- Users can't pay
|
|
389
|
+
|
|
390
|
+
Why this breaks:
|
|
391
|
+
Deep linking issues.
|
|
392
|
+
Wallet app not opening.
|
|
393
|
+
Return URL problems.
|
|
394
|
+
Different behavior iOS vs Android.
|
|
395
|
+
|
|
396
|
+
Recommended fix:
|
|
397
|
+
|
|
398
|
+
## TON Connect Mobile Issues
|
|
399
|
+
|
|
400
|
+
### Common Problems
|
|
401
|
+
1. Wallet doesn't open
|
|
402
|
+
2. Return to Mini App fails
|
|
403
|
+
3. Transaction confirmation lost
|
|
404
|
+
|
|
405
|
+
### Fixes
|
|
406
|
+
```jsx
|
|
407
|
+
// Use correct manifest
|
|
408
|
+
const manifestUrl = 'https://your-domain.com/tonconnect-manifest.json';
|
|
409
|
+
|
|
410
|
+
// Ensure HTTPS
|
|
411
|
+
// Localhost won't work on mobile
|
|
412
|
+
|
|
413
|
+
// Handle connection states
|
|
414
|
+
const [tonConnectUI] = useTonConnectUI();
|
|
415
|
+
|
|
416
|
+
useEffect(() => {
|
|
417
|
+
return tonConnectUI.onStatusChange((wallet) => {
|
|
418
|
+
if (wallet) {
|
|
419
|
+
console.log('Connected:', wallet.account.address);
|
|
420
|
+
}
|
|
421
|
+
});
|
|
422
|
+
}, []);
|
|
423
|
+
```
|
|
424
|
+
|
|
425
|
+
### Testing
|
|
426
|
+
- Test on real devices
|
|
427
|
+
- Test with multiple wallets (Tonkeeper, OpenMask)
|
|
428
|
+
- Test both iOS and Android
|
|
429
|
+
- Use ngrok for local dev + mobile test
|
|
430
|
+
|
|
431
|
+
### Fallback
|
|
432
|
+
```jsx
|
|
433
|
+
// Show QR for desktop
|
|
434
|
+
// Show wallet list for mobile
|
|
435
|
+
<TonConnectButton />
|
|
436
|
+
// Automatically handles this
|
|
437
|
+
```
|
|
438
|
+
|
|
439
|
+
### Mini App feels slow and janky
|
|
440
|
+
|
|
441
|
+
Severity: MEDIUM
|
|
442
|
+
|
|
443
|
+
Situation: App lags, slow transitions, poor UX
|
|
444
|
+
|
|
445
|
+
Symptoms:
|
|
446
|
+
- Slow initial load
|
|
447
|
+
- Laggy interactions
|
|
448
|
+
- Users complaining about speed
|
|
449
|
+
- High bounce rate
|
|
450
|
+
|
|
451
|
+
Why this breaks:
|
|
452
|
+
Too much JavaScript.
|
|
453
|
+
No code splitting.
|
|
454
|
+
Large bundle size.
|
|
455
|
+
No loading optimization.
|
|
456
|
+
|
|
457
|
+
Recommended fix:
|
|
458
|
+
|
|
459
|
+
## Mini App Performance
|
|
460
|
+
|
|
461
|
+
### Bundle Size
|
|
462
|
+
- Target < 200KB gzipped
|
|
463
|
+
- Use code splitting
|
|
464
|
+
- Lazy load routes
|
|
465
|
+
- Tree shake dependencies
|
|
466
|
+
|
|
467
|
+
### Quick Wins
|
|
468
|
+
```jsx
|
|
469
|
+
// Lazy load heavy components
|
|
470
|
+
const HeavyChart = lazy(() => import('./HeavyChart'));
|
|
471
|
+
|
|
472
|
+
// Optimize images
|
|
473
|
+
<img loading="lazy" src="..." />
|
|
474
|
+
|
|
475
|
+
// Use CSS instead of JS animations
|
|
476
|
+
```
|
|
477
|
+
|
|
478
|
+
### Loading Strategy
|
|
479
|
+
```jsx
|
|
480
|
+
function App() {
|
|
481
|
+
const [ready, setReady] = useState(false);
|
|
482
|
+
|
|
483
|
+
useEffect(() => {
|
|
484
|
+
// Show skeleton immediately
|
|
485
|
+
// Load data in background
|
|
486
|
+
Promise.all([
|
|
487
|
+
loadUserData(),
|
|
488
|
+
loadAppConfig(),
|
|
489
|
+
]).then(() => setReady(true));
|
|
490
|
+
}, []);
|
|
491
|
+
|
|
492
|
+
if (!ready) return <Skeleton />;
|
|
493
|
+
return <MainApp />;
|
|
494
|
+
}
|
|
495
|
+
```
|
|
496
|
+
|
|
497
|
+
### Vite Optimization
|
|
498
|
+
```javascript
|
|
499
|
+
// vite.config.js
|
|
500
|
+
export default {
|
|
501
|
+
build: {
|
|
502
|
+
rollupOptions: {
|
|
503
|
+
output: {
|
|
504
|
+
manualChunks: {
|
|
505
|
+
vendor: ['react', 'react-dom'],
|
|
506
|
+
}
|
|
507
|
+
}
|
|
508
|
+
}
|
|
509
|
+
}
|
|
510
|
+
};
|
|
511
|
+
```
|
|
512
|
+
|
|
513
|
+
### Custom buttons instead of MainButton
|
|
514
|
+
|
|
515
|
+
Severity: MEDIUM
|
|
516
|
+
|
|
517
|
+
Situation: App has custom submit buttons that feel non-native
|
|
518
|
+
|
|
519
|
+
Symptoms:
|
|
520
|
+
- Custom submit buttons
|
|
521
|
+
- MainButton never used
|
|
522
|
+
- Inconsistent UX
|
|
523
|
+
- Users confused about actions
|
|
524
|
+
|
|
525
|
+
Why this breaks:
|
|
526
|
+
MainButton is expected UX.
|
|
527
|
+
Custom buttons feel foreign.
|
|
528
|
+
Inconsistent with Telegram.
|
|
529
|
+
Users don't know what to tap.
|
|
530
|
+
|
|
531
|
+
Recommended fix:
|
|
532
|
+
|
|
533
|
+
## Using MainButton Properly
|
|
534
|
+
|
|
535
|
+
### When to Use MainButton
|
|
536
|
+
- Form submission
|
|
537
|
+
- Primary actions
|
|
538
|
+
- Continue/Next flows
|
|
539
|
+
- Checkout/Payment
|
|
540
|
+
|
|
541
|
+
### Implementation
|
|
542
|
+
```javascript
|
|
543
|
+
const tg = window.Telegram.WebApp;
|
|
544
|
+
|
|
545
|
+
// Show for forms
|
|
546
|
+
function showMainButton(text, onClick) {
|
|
547
|
+
tg.MainButton.setText(text);
|
|
548
|
+
tg.MainButton.onClick(onClick);
|
|
549
|
+
tg.MainButton.show();
|
|
550
|
+
}
|
|
551
|
+
|
|
552
|
+
// Hide when not needed
|
|
553
|
+
function hideMainButton() {
|
|
554
|
+
tg.MainButton.hide();
|
|
555
|
+
tg.MainButton.offClick();
|
|
556
|
+
}
|
|
557
|
+
|
|
558
|
+
// Loading state
|
|
559
|
+
function setMainButtonLoading(loading) {
|
|
560
|
+
if (loading) {
|
|
561
|
+
tg.MainButton.showProgress();
|
|
562
|
+
tg.MainButton.disable();
|
|
563
|
+
} else {
|
|
564
|
+
tg.MainButton.hideProgress();
|
|
565
|
+
tg.MainButton.enable();
|
|
566
|
+
}
|
|
567
|
+
}
|
|
568
|
+
```
|
|
569
|
+
|
|
570
|
+
### React Hook
|
|
571
|
+
```jsx
|
|
572
|
+
function useMainButton(text, onClick, visible = true) {
|
|
573
|
+
const tg = window.Telegram?.WebApp;
|
|
574
|
+
|
|
575
|
+
useEffect(() => {
|
|
576
|
+
if (!tg) return;
|
|
577
|
+
|
|
578
|
+
if (visible) {
|
|
579
|
+
tg.MainButton.setText(text);
|
|
580
|
+
tg.MainButton.onClick(onClick);
|
|
581
|
+
tg.MainButton.show();
|
|
582
|
+
} else {
|
|
583
|
+
tg.MainButton.hide();
|
|
584
|
+
}
|
|
585
|
+
|
|
586
|
+
return () => {
|
|
587
|
+
tg.MainButton.offClick(onClick);
|
|
588
|
+
};
|
|
589
|
+
}, [text, onClick, visible]);
|
|
590
|
+
}
|
|
230
591
|
```
|
|
231
592
|
|
|
232
|
-
##
|
|
593
|
+
## Validation Checks
|
|
594
|
+
|
|
595
|
+
### No initData Validation
|
|
596
|
+
|
|
597
|
+
Severity: HIGH
|
|
598
|
+
|
|
599
|
+
Message: Not validating initData - security vulnerability.
|
|
600
|
+
|
|
601
|
+
Fix action: Implement server-side initData validation with hash verification
|
|
602
|
+
|
|
603
|
+
### Missing Telegram Web App Script
|
|
604
|
+
|
|
605
|
+
Severity: HIGH
|
|
606
|
+
|
|
607
|
+
Message: Telegram Web App script not included.
|
|
233
608
|
|
|
234
|
-
|
|
609
|
+
Fix action: Add <script src='https://telegram.org/js/telegram-web-app.js'></script>
|
|
235
610
|
|
|
236
|
-
|
|
237
|
-
Bad user experience.
|
|
238
|
-
Jarring transitions.
|
|
239
|
-
Users don't trust it.
|
|
611
|
+
### Not Calling tg.ready()
|
|
240
612
|
|
|
241
|
-
|
|
242
|
-
Match Telegram colors.
|
|
243
|
-
Use native-feeling UI.
|
|
244
|
-
Test in both light/dark.
|
|
613
|
+
Severity: MEDIUM
|
|
245
614
|
|
|
246
|
-
|
|
615
|
+
Message: Not calling tg.ready() - Telegram may show loading state.
|
|
247
616
|
|
|
248
|
-
|
|
249
|
-
Touch targets too small.
|
|
250
|
-
Doesn't fit in Telegram UI.
|
|
251
|
-
Scrolling issues.
|
|
617
|
+
Fix action: Call window.Telegram.WebApp.ready() when app is ready
|
|
252
618
|
|
|
253
|
-
|
|
254
|
-
Test on real phones.
|
|
255
|
-
Touch-friendly buttons.
|
|
256
|
-
Fit within Telegram frame.
|
|
619
|
+
### Not Using Telegram Theme
|
|
257
620
|
|
|
258
|
-
|
|
621
|
+
Severity: MEDIUM
|
|
259
622
|
|
|
260
|
-
|
|
261
|
-
Poor perceived performance.
|
|
262
|
-
High exit rate.
|
|
263
|
-
Confusion.
|
|
623
|
+
Message: Not adapting to Telegram theme colors.
|
|
264
624
|
|
|
265
|
-
|
|
266
|
-
Loading indicators.
|
|
267
|
-
Progressive loading.
|
|
268
|
-
Optimistic updates.
|
|
625
|
+
Fix action: Use CSS variables from tg.themeParams for colors
|
|
269
626
|
|
|
270
|
-
|
|
627
|
+
### Missing Viewport Meta Tag
|
|
271
628
|
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
629
|
+
Severity: MEDIUM
|
|
630
|
+
|
|
631
|
+
Message: Missing viewport meta tag for mobile.
|
|
632
|
+
|
|
633
|
+
Fix action: Add <meta name='viewport' content='width=device-width, initial-scale=1.0'>
|
|
634
|
+
|
|
635
|
+
## Collaboration
|
|
636
|
+
|
|
637
|
+
### Delegation Triggers
|
|
638
|
+
|
|
639
|
+
- bot|command|handler -> telegram-bot-builder (Bot integration)
|
|
640
|
+
- TON|smart contract|blockchain -> blockchain-defi (TON blockchain features)
|
|
641
|
+
- react|vue|frontend -> frontend (Frontend framework)
|
|
642
|
+
- viral|referral|share -> viral-generator-builder (Viral mechanics)
|
|
643
|
+
- game|gamification -> gamification-loops (Game mechanics)
|
|
644
|
+
|
|
645
|
+
### Tap-to-Earn Game
|
|
646
|
+
|
|
647
|
+
Skills: telegram-mini-app, gamification-loops, telegram-bot-builder
|
|
648
|
+
|
|
649
|
+
Workflow:
|
|
650
|
+
|
|
651
|
+
```
|
|
652
|
+
1. Design game mechanics
|
|
653
|
+
2. Build Mini App with tap mechanics
|
|
654
|
+
3. Add referral/viral features
|
|
655
|
+
4. Integrate TON payments
|
|
656
|
+
5. Bot for notifications/onboarding
|
|
657
|
+
6. Launch and grow
|
|
658
|
+
```
|
|
659
|
+
|
|
660
|
+
### DeFi Mini App
|
|
661
|
+
|
|
662
|
+
Skills: telegram-mini-app, blockchain-defi, frontend
|
|
663
|
+
|
|
664
|
+
Workflow:
|
|
665
|
+
|
|
666
|
+
```
|
|
667
|
+
1. Design DeFi feature (swap, stake, etc.)
|
|
668
|
+
2. Integrate TON Connect
|
|
669
|
+
3. Build transaction UI
|
|
670
|
+
4. Add wallet management
|
|
671
|
+
5. Implement security measures
|
|
672
|
+
6. Deploy and audit
|
|
673
|
+
```
|
|
278
674
|
|
|
279
675
|
## Related Skills
|
|
280
676
|
|
|
281
677
|
Works well with: `telegram-bot-builder`, `frontend`, `blockchain-defi`, `viral-generator-builder`
|
|
282
678
|
|
|
283
679
|
## When to Use
|
|
284
|
-
|
|
680
|
+
|
|
681
|
+
- User mentions or implies: telegram mini app
|
|
682
|
+
- User mentions or implies: TWA
|
|
683
|
+
- User mentions or implies: telegram web app
|
|
684
|
+
- User mentions or implies: TON app
|
|
685
|
+
- User mentions or implies: mini app
|