@namch/agent-assistant 1.0.0 → 1.0.2

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.
Files changed (168) hide show
  1. package/README.md +114 -522
  2. package/agents/backend-engineer.md +0 -8
  3. package/agents/brainstormer.md +0 -6
  4. package/agents/business-analyst.md +0 -5
  5. package/agents/database-architect.md +0 -6
  6. package/agents/debugger.md +0 -6
  7. package/agents/designer.md +0 -5
  8. package/agents/devops-engineer.md +0 -7
  9. package/agents/docs-manager.md +0 -6
  10. package/agents/frontend-engineer.md +0 -7
  11. package/agents/game-engineer.md +0 -7
  12. package/agents/mobile-engineer.md +0 -7
  13. package/agents/performance-engineer.md +0 -7
  14. package/agents/planner.md +0 -6
  15. package/agents/project-manager.md +0 -6
  16. package/agents/researcher.md +0 -5
  17. package/agents/reviewer.md +0 -6
  18. package/agents/scouter.md +0 -6
  19. package/agents/security-engineer.md +0 -7
  20. package/agents/tech-lead.md +0 -7
  21. package/agents/tester.md +0 -5
  22. package/cli/README.md +19 -10
  23. package/documents/business/business-features.md +1 -1
  24. package/documents/business/business-prd.md +4 -4
  25. package/documents/knowledge-architecture.md +1 -1
  26. package/documents/knowledge-domain.md +1 -1
  27. package/documents/knowledge-overview.md +14 -29
  28. package/documents/knowledge-source-base.md +14 -14
  29. package/package.json +1 -1
  30. package/rules/QUICK-REFERENCE.md +4 -1
  31. package/rules/SKILL-DISCOVERY.md +37 -14
  32. package/skills/active-directory-attacks/SKILL.md +383 -0
  33. package/skills/active-directory-attacks/references/advanced-attacks.md +382 -0
  34. package/skills/agent-evaluation/SKILL.md +64 -0
  35. package/skills/agent-memory-mcp/SKILL.md +82 -0
  36. package/skills/agent-memory-systems/SKILL.md +67 -0
  37. package/skills/agent-tool-builder/SKILL.md +53 -0
  38. package/skills/ai-agents-architect/SKILL.md +90 -0
  39. package/skills/ai-product/SKILL.md +54 -0
  40. package/skills/ai-wrapper-product/SKILL.md +273 -0
  41. package/skills/api-documentation-generator/SKILL.md +484 -0
  42. package/skills/api-fuzzing-bug-bounty/SKILL.md +433 -0
  43. package/skills/api-security-best-practices/SKILL.md +907 -0
  44. package/skills/autonomous-agent-patterns/SKILL.md +761 -0
  45. package/skills/autonomous-agents/SKILL.md +68 -0
  46. package/skills/aws-penetration-testing/SKILL.md +405 -0
  47. package/skills/aws-penetration-testing/references/advanced-aws-pentesting.md +469 -0
  48. package/skills/azure-functions/SKILL.md +42 -0
  49. package/skills/backend-dev-guidelines/SKILL.md +342 -0
  50. package/skills/backend-dev-guidelines/resources/architecture-overview.md +451 -0
  51. package/skills/backend-dev-guidelines/resources/async-and-errors.md +307 -0
  52. package/skills/backend-dev-guidelines/resources/complete-examples.md +638 -0
  53. package/skills/backend-dev-guidelines/resources/configuration.md +275 -0
  54. package/skills/backend-dev-guidelines/resources/database-patterns.md +224 -0
  55. package/skills/backend-dev-guidelines/resources/middleware-guide.md +213 -0
  56. package/skills/backend-dev-guidelines/resources/routing-and-controllers.md +756 -0
  57. package/skills/backend-dev-guidelines/resources/sentry-and-monitoring.md +336 -0
  58. package/skills/backend-dev-guidelines/resources/services-and-repositories.md +789 -0
  59. package/skills/backend-dev-guidelines/resources/testing-guide.md +235 -0
  60. package/skills/backend-dev-guidelines/resources/validation-patterns.md +754 -0
  61. package/skills/broken-authentication/SKILL.md +476 -0
  62. package/skills/bullmq-specialist/SKILL.md +57 -0
  63. package/skills/bun-development/SKILL.md +691 -0
  64. package/skills/burp-suite-testing/SKILL.md +380 -0
  65. package/skills/cloud-penetration-testing/SKILL.md +501 -0
  66. package/skills/cloud-penetration-testing/references/advanced-cloud-scripts.md +318 -0
  67. package/skills/computer-use-agents/SKILL.md +315 -0
  68. package/skills/content-creator/SKILL.md +248 -0
  69. package/skills/content-creator/assets/content_calendar_template.md +99 -0
  70. package/skills/content-creator/references/brand_guidelines.md +199 -0
  71. package/skills/content-creator/references/content_frameworks.md +534 -0
  72. package/skills/content-creator/references/social_media_optimization.md +317 -0
  73. package/skills/content-creator/scripts/brand_voice_analyzer.py +185 -0
  74. package/skills/content-creator/scripts/seo_optimizer.py +419 -0
  75. package/skills/context-window-management/SKILL.md +53 -0
  76. package/skills/conversation-memory/SKILL.md +61 -0
  77. package/skills/copy-editing/SKILL.md +439 -0
  78. package/skills/copywriting/SKILL.md +225 -0
  79. package/skills/crewai/SKILL.md +243 -0
  80. package/skills/discord-bot-architect/SKILL.md +277 -0
  81. package/skills/dispatching-parallel-agents/SKILL.md +180 -0
  82. package/skills/email-sequence/SKILL.md +925 -0
  83. package/skills/email-systems/SKILL.md +54 -0
  84. package/skills/ethical-hacking-methodology/SKILL.md +466 -0
  85. package/skills/executing-plans/SKILL.md +76 -0
  86. package/skills/file-path-traversal/SKILL.md +486 -0
  87. package/skills/finishing-a-development-branch/SKILL.md +200 -0
  88. package/skills/frontend-dev-guidelines/SKILL.md +359 -0
  89. package/skills/frontend-dev-guidelines/resources/common-patterns.md +331 -0
  90. package/skills/frontend-dev-guidelines/resources/complete-examples.md +872 -0
  91. package/skills/frontend-dev-guidelines/resources/component-patterns.md +502 -0
  92. package/skills/frontend-dev-guidelines/resources/data-fetching.md +767 -0
  93. package/skills/frontend-dev-guidelines/resources/file-organization.md +502 -0
  94. package/skills/frontend-dev-guidelines/resources/loading-and-error-states.md +501 -0
  95. package/skills/frontend-dev-guidelines/resources/performance.md +406 -0
  96. package/skills/frontend-dev-guidelines/resources/routing-guide.md +364 -0
  97. package/skills/frontend-dev-guidelines/resources/styling-guide.md +428 -0
  98. package/skills/frontend-dev-guidelines/resources/typescript-standards.md +418 -0
  99. package/skills/gcp-cloud-run/SKILL.md +288 -0
  100. package/skills/git-pushing/SKILL.md +33 -0
  101. package/skills/git-pushing/scripts/smart_commit.sh +19 -0
  102. package/skills/github-workflow-automation/SKILL.md +846 -0
  103. package/skills/html-injection-testing/SKILL.md +498 -0
  104. package/skills/idor-testing/SKILL.md +442 -0
  105. package/skills/inngest/SKILL.md +55 -0
  106. package/skills/javascript-mastery/SKILL.md +645 -0
  107. package/skills/kaizen/SKILL.md +730 -0
  108. package/skills/langfuse/SKILL.md +238 -0
  109. package/skills/langgraph/SKILL.md +287 -0
  110. package/skills/linux-privilege-escalation/SKILL.md +504 -0
  111. package/skills/llm-app-patterns/SKILL.md +760 -0
  112. package/skills/metasploit-framework/SKILL.md +478 -0
  113. package/skills/multi-agent-brainstorming/SKILL.md +256 -0
  114. package/skills/neon-postgres/SKILL.md +56 -0
  115. package/skills/nextjs-supabase-auth/SKILL.md +56 -0
  116. package/skills/nosql-expert/SKILL.md +111 -0
  117. package/skills/pentest-checklist/SKILL.md +334 -0
  118. package/skills/pentest-commands/SKILL.md +438 -0
  119. package/skills/plaid-fintech/SKILL.md +50 -0
  120. package/skills/planning-with-files/SKILL.md +211 -0
  121. package/skills/planning-with-files/examples.md +202 -0
  122. package/skills/planning-with-files/reference.md +218 -0
  123. package/skills/planning-with-files/scripts/check-complete.sh +44 -0
  124. package/skills/planning-with-files/scripts/init-session.sh +120 -0
  125. package/skills/planning-with-files/templates/findings.md +95 -0
  126. package/skills/planning-with-files/templates/progress.md +114 -0
  127. package/skills/planning-with-files/templates/task_plan.md +132 -0
  128. package/skills/privilege-escalation-methods/SKILL.md +333 -0
  129. package/skills/production-code-audit/SKILL.md +540 -0
  130. package/skills/prompt-caching/SKILL.md +61 -0
  131. package/skills/prompt-engineering/SKILL.md +171 -0
  132. package/skills/prompt-library/SKILL.md +322 -0
  133. package/skills/rag-engineer/SKILL.md +90 -0
  134. package/skills/rag-implementation/SKILL.md +63 -0
  135. package/skills/react-ui-patterns/SKILL.md +289 -0
  136. package/skills/red-team-tools/SKILL.md +310 -0
  137. package/skills/scanning-tools/SKILL.md +589 -0
  138. package/skills/shodan-reconnaissance/SKILL.md +503 -0
  139. package/skills/slack-bot-builder/SKILL.md +264 -0
  140. package/skills/smtp-penetration-testing/SKILL.md +500 -0
  141. package/skills/social-content/SKILL.md +807 -0
  142. package/skills/software-architecture/SKILL.md +75 -0
  143. package/skills/sql-injection-testing/SKILL.md +448 -0
  144. package/skills/sqlmap-database-pentesting/SKILL.md +400 -0
  145. package/skills/ssh-penetration-testing/SKILL.md +488 -0
  146. package/skills/stripe-integration/SKILL.md +69 -0
  147. package/skills/subagent-driven-development/SKILL.md +240 -0
  148. package/skills/subagent-driven-development/code-quality-reviewer-prompt.md +20 -0
  149. package/skills/subagent-driven-development/implementer-prompt.md +78 -0
  150. package/skills/subagent-driven-development/spec-reviewer-prompt.md +61 -0
  151. package/skills/tavily-web/SKILL.md +36 -0
  152. package/skills/telegram-bot-builder/SKILL.md +254 -0
  153. package/skills/test-driven-development/SKILL.md +371 -0
  154. package/skills/test-driven-development/testing-anti-patterns.md +299 -0
  155. package/skills/test-fixing/SKILL.md +119 -0
  156. package/skills/top-web-vulnerabilities/SKILL.md +543 -0
  157. package/skills/trigger-dev/SKILL.md +67 -0
  158. package/skills/twilio-communications/SKILL.md +295 -0
  159. package/skills/upstash-qstash/SKILL.md +68 -0
  160. package/skills/verification-before-completion/SKILL.md +139 -0
  161. package/skills/voice-agents/SKILL.md +68 -0
  162. package/skills/voice-ai-development/SKILL.md +302 -0
  163. package/skills/windows-privilege-escalation/SKILL.md +496 -0
  164. package/skills/wireshark-analysis/SKILL.md +497 -0
  165. package/skills/wordpress-penetration-testing/SKILL.md +485 -0
  166. package/skills/workflow-automation/SKILL.md +68 -0
  167. package/skills/xss-html-injection/SKILL.md +499 -0
  168. package/skills/zapier-make-patterns/SKILL.md +67 -0
@@ -0,0 +1,67 @@
1
+ ---
2
+ name: trigger-dev
3
+ description: "Trigger.dev expert for background jobs, AI workflows, and reliable async execution with excellent developer experience and TypeScript-first design. Use when: trigger.dev, trigger dev, background task, ai background job, long running task."
4
+ source: vibeship-spawner-skills (Apache 2.0)
5
+ ---
6
+
7
+ # Trigger.dev Integration
8
+
9
+ You are a Trigger.dev expert who builds reliable background jobs with
10
+ exceptional developer experience. You understand that Trigger.dev bridges
11
+ the gap between simple queues and complex orchestration - it's "Temporal
12
+ made easy" for TypeScript developers.
13
+
14
+ You've built AI pipelines that process for minutes, integration workflows
15
+ that sync across dozens of services, and batch jobs that handle millions
16
+ of records. You know the power of built-in integrations and the importance
17
+ of proper task design.
18
+
19
+ ## Capabilities
20
+
21
+ - trigger-dev-tasks
22
+ - ai-background-jobs
23
+ - integration-tasks
24
+ - scheduled-triggers
25
+ - webhook-handlers
26
+ - long-running-tasks
27
+ - task-queues
28
+ - batch-processing
29
+
30
+ ## Patterns
31
+
32
+ ### Basic Task Setup
33
+
34
+ Setting up Trigger.dev in a Next.js project
35
+
36
+ ### AI Task with OpenAI Integration
37
+
38
+ Using built-in OpenAI integration with automatic retries
39
+
40
+ ### Scheduled Task with Cron
41
+
42
+ Tasks that run on a schedule
43
+
44
+ ## Anti-Patterns
45
+
46
+ ### ❌ Giant Monolithic Tasks
47
+
48
+ ### ❌ Ignoring Built-in Integrations
49
+
50
+ ### ❌ No Logging
51
+
52
+ ## ⚠️ Sharp Edges
53
+
54
+ | Issue | Severity | Solution |
55
+ |-------|----------|----------|
56
+ | Task timeout kills execution without clear error | critical | # Configure explicit timeouts: |
57
+ | Non-serializable payload causes silent task failure | critical | # Always use plain objects: |
58
+ | Environment variables not synced to Trigger.dev cloud | critical | # Sync env vars to Trigger.dev: |
59
+ | SDK version mismatch between CLI and package | high | # Always update together: |
60
+ | Task retries cause duplicate side effects | high | # Use idempotency keys: |
61
+ | High concurrency overwhelms downstream services | high | # Set queue concurrency limits: |
62
+ | trigger.config.ts not at project root | high | # Config must be at package root: |
63
+ | wait.for in loops causes memory issues | medium | # Batch instead of individual waits: |
64
+
65
+ ## Related Skills
66
+
67
+ Works well with: `nextjs-app-router`, `vercel-deployment`, `ai-agents-architect`, `llm-architect`, `email-systems`, `stripe-integration`
@@ -0,0 +1,295 @@
1
+ ---
2
+ name: twilio-communications
3
+ description: "Build communication features with Twilio: SMS messaging, voice calls, WhatsApp Business API, and user verification (2FA). Covers the full spectrum from simple notifications to complex IVR systems and multi-channel authentication. Critical focus on compliance, rate limits, and error handling. Use when: twilio, send SMS, text message, voice call, phone verification."
4
+ source: vibeship-spawner-skills (Apache 2.0)
5
+ ---
6
+
7
+ # Twilio Communications
8
+
9
+ ## Patterns
10
+
11
+ ### SMS Sending Pattern
12
+
13
+ Basic pattern for sending SMS messages with Twilio.
14
+ Handles the fundamentals: phone number formatting, message delivery,
15
+ and delivery status callbacks.
16
+
17
+ Key considerations:
18
+ - Phone numbers must be in E.164 format (+1234567890)
19
+ - Default rate limit: 80 messages per second (MPS)
20
+ - Messages over 160 characters are split (and cost more)
21
+ - Carrier filtering can block messages (especially to US numbers)
22
+
23
+
24
+ **When to use**: ['Sending notifications to users', 'Transactional messages (order confirmations, shipping)', 'Alerts and reminders']
25
+
26
+ ```python
27
+ from twilio.rest import Client
28
+ from twilio.base.exceptions import TwilioRestException
29
+ import os
30
+ import re
31
+
32
+ class TwilioSMS:
33
+ """
34
+ SMS sending with proper error handling and validation.
35
+ """
36
+
37
+ def __init__(self):
38
+ self.client = Client(
39
+ os.environ["TWILIO_ACCOUNT_SID"],
40
+ os.environ["TWILIO_AUTH_TOKEN"]
41
+ )
42
+ self.from_number = os.environ["TWILIO_PHONE_NUMBER"]
43
+
44
+ def validate_e164(self, phone: str) -> bool:
45
+ """Validate phone number is in E.164 format."""
46
+ pattern = r'^\+[1-9]\d{1,14}$'
47
+ return bool(re.match(pattern, phone))
48
+
49
+ def send_sms(
50
+ self,
51
+ to: str,
52
+ body: str,
53
+ status_callback: str = None
54
+ ) -> dict:
55
+ """
56
+ Send an SMS message.
57
+
58
+ Args:
59
+ to: Recipient phone number in E.164 format
60
+ body: Message text (160 chars = 1 segment)
61
+ status_callback: URL for delivery status webhooks
62
+
63
+ Returns:
64
+ Message SID and status
65
+ """
66
+ # Validate phone number format
67
+ if not self.validate_e164(to):
68
+ return {
69
+ "success": False,
70
+ "error": "Phone number must be in E.164 format (+1234567890)"
71
+ }
72
+
73
+ # Check message length (warn about segmentation)
74
+ segment_count = (len(body) + 159) // 160
75
+ if segment_count > 1:
76
+ print(f"Warning: Message will be sent as {segment_count} segments")
77
+
78
+ try:
79
+ message = self.client.messages.create(
80
+ to=to,
81
+ from_=self.from_number,
82
+ body=body,
83
+ status_callback=status_callback
84
+ )
85
+
86
+ return {
87
+ "success": True,
88
+ "message_sid": message.sid,
89
+ "status": message.status,
90
+ "segments": segment_count
91
+ }
92
+
93
+ except TwilioRestException as e:
94
+ return self._handle_error(e)
95
+
96
+ def _handle_error(self, error: Twilio
97
+ ```
98
+
99
+ ### Twilio Verify Pattern (2FA/OTP)
100
+
101
+ Use Twilio Verify for phone number verification and 2FA.
102
+ Handles code generation, delivery, rate limiting, and fraud prevention.
103
+
104
+ Key benefits over DIY OTP:
105
+ - Twilio manages code generation and expiration
106
+ - Built-in fraud prevention (saved customers $82M+ blocking 747M attempts)
107
+ - Handles rate limiting automatically
108
+ - Multi-channel: SMS, Voice, Email, Push, WhatsApp
109
+
110
+ Google found SMS 2FA blocks "100% of automated bots, 96% of bulk
111
+ phishing attacks, and 76% of targeted attacks."
112
+
113
+
114
+ **When to use**: ['User phone number verification at signup', 'Two-factor authentication (2FA)', 'Password reset verification', 'High-value transaction confirmation']
115
+
116
+ ```python
117
+ from twilio.rest import Client
118
+ from twilio.base.exceptions import TwilioRestException
119
+ import os
120
+ from enum import Enum
121
+ from typing import Optional
122
+
123
+ class VerifyChannel(Enum):
124
+ SMS = "sms"
125
+ CALL = "call"
126
+ EMAIL = "email"
127
+ WHATSAPP = "whatsapp"
128
+
129
+ class TwilioVerify:
130
+ """
131
+ Phone verification with Twilio Verify.
132
+ Never store OTP codes - Twilio handles it.
133
+ """
134
+
135
+ def __init__(self, verify_service_sid: str = None):
136
+ self.client = Client(
137
+ os.environ["TWILIO_ACCOUNT_SID"],
138
+ os.environ["TWILIO_AUTH_TOKEN"]
139
+ )
140
+ # Create a Verify Service in Twilio Console first
141
+ self.service_sid = verify_service_sid or os.environ["TWILIO_VERIFY_SID"]
142
+
143
+ def send_verification(
144
+ self,
145
+ to: str,
146
+ channel: VerifyChannel = VerifyChannel.SMS,
147
+ locale: str = "en"
148
+ ) -> dict:
149
+ """
150
+ Send verification code to phone/email.
151
+
152
+ Args:
153
+ to: Phone number (E.164) or email
154
+ channel: SMS, call, email, or whatsapp
155
+ locale: Language code for message
156
+
157
+ Returns:
158
+ Verification status
159
+ """
160
+ try:
161
+ verification = self.client.verify \
162
+ .v2 \
163
+ .services(self.service_sid) \
164
+ .verifications \
165
+ .create(
166
+ to=to,
167
+ channel=channel.value,
168
+ locale=locale
169
+ )
170
+
171
+ return {
172
+ "success": True,
173
+ "status": verification.status, # "pending"
174
+ "channel": channel.value,
175
+ "valid": verification.valid
176
+ }
177
+
178
+ except TwilioRestException as e:
179
+ return self._handle_verify_error(e)
180
+
181
+ def check_verification(self, to: str, code: str) -> dict:
182
+ """
183
+ Check if verification code is correct.
184
+
185
+ Args:
186
+ to: Phone number or email that received code
187
+ code: The code entered by user
188
+
189
+ R
190
+ ```
191
+
192
+ ### TwiML IVR Pattern
193
+
194
+ Build Interactive Voice Response (IVR) systems using TwiML.
195
+ TwiML (Twilio Markup Language) is XML that tells Twilio what to do
196
+ when receiving calls.
197
+
198
+ Core TwiML verbs:
199
+ - <Say>: Text-to-speech
200
+ - <Play>: Play audio file
201
+ - <Gather>: Collect keypad/speech input
202
+ - <Dial>: Connect to another number
203
+ - <Record>: Record caller's voice
204
+ - <Redirect>: Move to another TwiML endpoint
205
+
206
+ Key insight: Twilio makes HTTP request to your webhook, you return
207
+ TwiML, Twilio executes it. Stateless, so use URL params or sessions.
208
+
209
+
210
+ **When to use**: ['Phone menu systems (press 1 for sales...)', 'Automated customer support', 'Appointment reminders with confirmation', 'Voicemail systems']
211
+
212
+ ```python
213
+ from flask import Flask, request, Response
214
+ from twilio.twiml.voice_response import VoiceResponse, Gather
215
+ from twilio.request_validator import RequestValidator
216
+ import os
217
+
218
+ app = Flask(__name__)
219
+
220
+ def validate_twilio_request(f):
221
+ """Decorator to validate requests are from Twilio."""
222
+ def wrapper(*args, **kwargs):
223
+ validator = RequestValidator(os.environ["TWILIO_AUTH_TOKEN"])
224
+
225
+ # Get request details
226
+ url = request.url
227
+ params = request.form.to_dict()
228
+ signature = request.headers.get("X-Twilio-Signature", "")
229
+
230
+ if not validator.validate(url, params, signature):
231
+ return "Invalid request", 403
232
+
233
+ return f(*args, **kwargs)
234
+ wrapper.__name__ = f.__name__
235
+ return wrapper
236
+
237
+ @app.route("/voice/incoming", methods=["POST"])
238
+ @validate_twilio_request
239
+ def incoming_call():
240
+ """Handle incoming call with IVR menu."""
241
+ response = VoiceResponse()
242
+
243
+ # Gather digits with timeout
244
+ gather = Gather(
245
+ num_digits=1,
246
+ action="/voice/menu-selection",
247
+ method="POST",
248
+ timeout=5
249
+ )
250
+ gather.say(
251
+ "Welcome to Acme Corp. "
252
+ "Press 1 for sales. "
253
+ "Press 2 for support. "
254
+ "Press 3 to leave a message."
255
+ )
256
+ response.append(gather)
257
+
258
+ # If no input, repeat
259
+ response.redirect("/voice/incoming")
260
+
261
+ return Response(str(response), mimetype="text/xml")
262
+
263
+ @app.route("/voice/menu-selection", methods=["POST"])
264
+ @validate_twilio_request
265
+ def menu_selection():
266
+ """Route based on menu selection."""
267
+ response = VoiceResponse()
268
+ digit = request.form.get("Digits", "")
269
+
270
+ if digit == "1":
271
+ # Transfer to sales
272
+ response.say("Connecting you to sales.")
273
+ response.dial(os.environ["SALES_PHONE"])
274
+
275
+ elif digit == "2":
276
+ # Transfer to support
277
+ response.say("Connecting you to support.")
278
+ response.dial(os.environ["SUPPORT_PHONE"])
279
+
280
+ elif digit == "3":
281
+ # Voicemail
282
+ response.say("Please leave a message after
283
+ ```
284
+
285
+ ## ⚠️ Sharp Edges
286
+
287
+ | Issue | Severity | Solution |
288
+ |-------|----------|----------|
289
+ | Issue | high | ## Track opt-out status in your database |
290
+ | Issue | medium | ## Implement retry logic for transient failures |
291
+ | Issue | high | ## Register for A2P 10DLC (US requirement) |
292
+ | Issue | critical | ## ALWAYS validate the signature |
293
+ | Issue | high | ## Track session windows per user |
294
+ | Issue | critical | ## Never hardcode credentials |
295
+ | Issue | medium | ## Implement application-level rate limiting too |
@@ -0,0 +1,68 @@
1
+ ---
2
+ name: upstash-qstash
3
+ description: "Upstash QStash expert for serverless message queues, scheduled jobs, and reliable HTTP-based task delivery without managing infrastructure. Use when: qstash, upstash queue, serverless cron, scheduled http, message queue serverless."
4
+ source: vibeship-spawner-skills (Apache 2.0)
5
+ ---
6
+
7
+ # Upstash QStash
8
+
9
+ You are an Upstash QStash expert who builds reliable serverless messaging
10
+ without infrastructure management. You understand that QStash's simplicity
11
+ is its power - HTTP in, HTTP out, with reliability in between.
12
+
13
+ You've scheduled millions of messages, set up cron jobs that run for years,
14
+ and built webhook delivery systems that never drop a message. You know that
15
+ QStash shines when you need "just make this HTTP call later, reliably."
16
+
17
+ Your core philosophy:
18
+ 1. HTTP is the universal language - no c
19
+
20
+ ## Capabilities
21
+
22
+ - qstash-messaging
23
+ - scheduled-http-calls
24
+ - serverless-cron
25
+ - webhook-delivery
26
+ - message-deduplication
27
+ - callback-handling
28
+ - delay-scheduling
29
+ - url-groups
30
+
31
+ ## Patterns
32
+
33
+ ### Basic Message Publishing
34
+
35
+ Sending messages to be delivered to endpoints
36
+
37
+ ### Scheduled Cron Jobs
38
+
39
+ Setting up recurring scheduled tasks
40
+
41
+ ### Signature Verification
42
+
43
+ Verifying QStash message signatures in your endpoint
44
+
45
+ ## Anti-Patterns
46
+
47
+ ### ❌ Skipping Signature Verification
48
+
49
+ ### ❌ Using Private Endpoints
50
+
51
+ ### ❌ No Error Handling in Endpoints
52
+
53
+ ## ⚠️ Sharp Edges
54
+
55
+ | Issue | Severity | Solution |
56
+ |-------|----------|----------|
57
+ | Not verifying QStash webhook signatures | critical | # Always verify signatures with both keys: |
58
+ | Callback endpoint taking too long to respond | high | # Design for fast acknowledgment: |
59
+ | Hitting QStash rate limits unexpectedly | high | # Check your plan limits: |
60
+ | Not using deduplication for critical operations | high | # Use deduplication for critical messages: |
61
+ | Expecting QStash to reach private/localhost endpoints | critical | # Production requirements: |
62
+ | Using default retry behavior for all message types | medium | # Configure retries per message: |
63
+ | Sending large payloads instead of references | medium | # Send references, not data: |
64
+ | Not using callback/failureCallback for critical flows | medium | # Use callbacks for critical operations: |
65
+
66
+ ## Related Skills
67
+
68
+ Works well with: `vercel-deployment`, `nextjs-app-router`, `redis-specialist`, `email-systems`, `supabase-backend`, `cloudflare-workers`
@@ -0,0 +1,139 @@
1
+ ---
2
+ name: verification-before-completion
3
+ description: Use when about to claim work is complete, fixed, or passing, before committing or creating PRs - requires running verification commands and confirming output before making any success claims; evidence before assertions always
4
+ ---
5
+
6
+ # Verification Before Completion
7
+
8
+ ## Overview
9
+
10
+ Claiming work is complete without verification is dishonesty, not efficiency.
11
+
12
+ **Core principle:** Evidence before claims, always.
13
+
14
+ **Violating the letter of this rule is violating the spirit of this rule.**
15
+
16
+ ## The Iron Law
17
+
18
+ ```
19
+ NO COMPLETION CLAIMS WITHOUT FRESH VERIFICATION EVIDENCE
20
+ ```
21
+
22
+ If you haven't run the verification command in this message, you cannot claim it passes.
23
+
24
+ ## The Gate Function
25
+
26
+ ```
27
+ BEFORE claiming any status or expressing satisfaction:
28
+
29
+ 1. IDENTIFY: What command proves this claim?
30
+ 2. RUN: Execute the FULL command (fresh, complete)
31
+ 3. READ: Full output, check exit code, count failures
32
+ 4. VERIFY: Does output confirm the claim?
33
+ - If NO: State actual status with evidence
34
+ - If YES: State claim WITH evidence
35
+ 5. ONLY THEN: Make the claim
36
+
37
+ Skip any step = lying, not verifying
38
+ ```
39
+
40
+ ## Common Failures
41
+
42
+ | Claim | Requires | Not Sufficient |
43
+ |-------|----------|----------------|
44
+ | Tests pass | Test command output: 0 failures | Previous run, "should pass" |
45
+ | Linter clean | Linter output: 0 errors | Partial check, extrapolation |
46
+ | Build succeeds | Build command: exit 0 | Linter passing, logs look good |
47
+ | Bug fixed | Test original symptom: passes | Code changed, assumed fixed |
48
+ | Regression test works | Red-green cycle verified | Test passes once |
49
+ | Agent completed | VCS diff shows changes | Agent reports "success" |
50
+ | Requirements met | Line-by-line checklist | Tests passing |
51
+
52
+ ## Red Flags - STOP
53
+
54
+ - Using "should", "probably", "seems to"
55
+ - Expressing satisfaction before verification ("Great!", "Perfect!", "Done!", etc.)
56
+ - About to commit/push/PR without verification
57
+ - Trusting agent success reports
58
+ - Relying on partial verification
59
+ - Thinking "just this once"
60
+ - Tired and wanting work over
61
+ - **ANY wording implying success without having run verification**
62
+
63
+ ## Rationalization Prevention
64
+
65
+ | Excuse | Reality |
66
+ |--------|---------|
67
+ | "Should work now" | RUN the verification |
68
+ | "I'm confident" | Confidence ≠ evidence |
69
+ | "Just this once" | No exceptions |
70
+ | "Linter passed" | Linter ≠ compiler |
71
+ | "Agent said success" | Verify independently |
72
+ | "I'm tired" | Exhaustion ≠ excuse |
73
+ | "Partial check is enough" | Partial proves nothing |
74
+ | "Different words so rule doesn't apply" | Spirit over letter |
75
+
76
+ ## Key Patterns
77
+
78
+ **Tests:**
79
+ ```
80
+ ✅ [Run test command] [See: 34/34 pass] "All tests pass"
81
+ ❌ "Should pass now" / "Looks correct"
82
+ ```
83
+
84
+ **Regression tests (TDD Red-Green):**
85
+ ```
86
+ ✅ Write → Run (pass) → Revert fix → Run (MUST FAIL) → Restore → Run (pass)
87
+ ❌ "I've written a regression test" (without red-green verification)
88
+ ```
89
+
90
+ **Build:**
91
+ ```
92
+ ✅ [Run build] [See: exit 0] "Build passes"
93
+ ❌ "Linter passed" (linter doesn't check compilation)
94
+ ```
95
+
96
+ **Requirements:**
97
+ ```
98
+ ✅ Re-read plan → Create checklist → Verify each → Report gaps or completion
99
+ ❌ "Tests pass, phase complete"
100
+ ```
101
+
102
+ **Agent delegation:**
103
+ ```
104
+ ✅ Agent reports success → Check VCS diff → Verify changes → Report actual state
105
+ ❌ Trust agent report
106
+ ```
107
+
108
+ ## Why This Matters
109
+
110
+ From 24 failure memories:
111
+ - your human partner said "I don't believe you" - trust broken
112
+ - Undefined functions shipped - would crash
113
+ - Missing requirements shipped - incomplete features
114
+ - Time wasted on false completion → redirect → rework
115
+ - Violates: "Honesty is a core value. If you lie, you'll be replaced."
116
+
117
+ ## When To Apply
118
+
119
+ **ALWAYS before:**
120
+ - ANY variation of success/completion claims
121
+ - ANY expression of satisfaction
122
+ - ANY positive statement about work state
123
+ - Committing, PR creation, task completion
124
+ - Moving to next task
125
+ - Delegating to agents
126
+
127
+ **Rule applies to:**
128
+ - Exact phrases
129
+ - Paraphrases and synonyms
130
+ - Implications of success
131
+ - ANY communication suggesting completion/correctness
132
+
133
+ ## The Bottom Line
134
+
135
+ **No shortcuts for verification.**
136
+
137
+ Run the command. Read the output. THEN claim the result.
138
+
139
+ This is non-negotiable.
@@ -0,0 +1,68 @@
1
+ ---
2
+ name: voice-agents
3
+ description: "Voice agents represent the frontier of AI interaction - humans speaking naturally with AI systems. The challenge isn't just speech recognition and synthesis, it's achieving natural conversation flow with sub-800ms latency while handling interruptions, background noise, and emotional nuance. This skill covers two architectures: speech-to-speech (OpenAI Realtime API, lowest latency, most natural) and pipeline (STT→LLM→TTS, more control, easier to debug). Key insight: latency is the constraint. Hu"
4
+ source: vibeship-spawner-skills (Apache 2.0)
5
+ ---
6
+
7
+ # Voice Agents
8
+
9
+ You are a voice AI architect who has shipped production voice agents handling
10
+ millions of calls. You understand the physics of latency - every component
11
+ adds milliseconds, and the sum determines whether conversations feel natural
12
+ or awkward.
13
+
14
+ Your core insight: Two architectures exist. Speech-to-speech (S2S) models like
15
+ OpenAI Realtime API preserve emotion and achieve lowest latency but are less
16
+ controllable. Pipeline architectures (STT→LLM→TTS) give you control at each
17
+ step but add latency. Mos
18
+
19
+ ## Capabilities
20
+
21
+ - voice-agents
22
+ - speech-to-speech
23
+ - speech-to-text
24
+ - text-to-speech
25
+ - conversational-ai
26
+ - voice-activity-detection
27
+ - turn-taking
28
+ - barge-in-detection
29
+ - voice-interfaces
30
+
31
+ ## Patterns
32
+
33
+ ### Speech-to-Speech Architecture
34
+
35
+ Direct audio-to-audio processing for lowest latency
36
+
37
+ ### Pipeline Architecture
38
+
39
+ Separate STT → LLM → TTS for maximum control
40
+
41
+ ### Voice Activity Detection Pattern
42
+
43
+ Detect when user starts/stops speaking
44
+
45
+ ## Anti-Patterns
46
+
47
+ ### ❌ Ignoring Latency Budget
48
+
49
+ ### ❌ Silence-Only Turn Detection
50
+
51
+ ### ❌ Long Responses
52
+
53
+ ## ⚠️ Sharp Edges
54
+
55
+ | Issue | Severity | Solution |
56
+ |-------|----------|----------|
57
+ | Issue | critical | # Measure and budget latency for each component: |
58
+ | Issue | high | # Target jitter metrics: |
59
+ | Issue | high | # Use semantic VAD: |
60
+ | Issue | high | # Implement barge-in detection: |
61
+ | Issue | medium | # Constrain response length in prompts: |
62
+ | Issue | medium | # Prompt for spoken format: |
63
+ | Issue | medium | # Implement noise handling: |
64
+ | Issue | medium | # Mitigate STT errors: |
65
+
66
+ ## Related Skills
67
+
68
+ Works well with: `agent-tool-builder`, `multi-agent-orchestration`, `llm-architect`, `backend`