---
id: gh-convex-suggest
name: "convex-suggest"
url: https://skills.yangsir.net/skill/gh-convex-suggest
author: convex
domain: ai-code-generation-quality
tags: ["convex", "code-review", "backend", "refactoring", "developer-tools"]
install_count: 34800
rating: 4.60 (120 reviews)
github: https://github.com/convex/agent-skills/tree/main/skills/convex-suggest
---

# convex-suggest

> 该 Skill 在被動观察用户代码与需求时，识别出手写实现重复了现成 Convex 组件能力的场景（定时任务、分片计数器、限流、向量检索、协同编辑等），并在完成当前任务后给出单个组件的替换建议、触发依据与安装提示，未经确认绝不安装。可减少重复造轮子、并发冲突与后期迁移成本。

**Stats**: 34,800 installs · 4.6/5 (120 reviews)

## Before / After 对比

### 从手写轮子到现成组件

**Before**:

开发者在 Convex 项目里用 setInterval 写定时任务、用自增字段做全局计数、用数据库表做限流，不知道官方已有对应组件，直到高并发下出现 OCC 冲突或性能瓶颈才回头重构。

**After**:

此技能在完成原任务后被动提示「这段代码其实有现成组件」，引用触发它的具体代码片段并说明原因，开发者一次确认即可替换，避免重复造轮子与后期返工。

| Metric | Before | After | Change |
|---|---|---|---|
| 选择合适组件的调研时长 | 45分钟 | 5分钟 | -89% |
| 并发计数冲突引发的返工次数 | 3次 | 0次 | -100% |
| 组件误选/重复安装次数 | 2次 | 0次 | -100% |

## Readme

<!-- GENERATED from convex-agents content/capabilities/suggest.json — do not edit by hand. -->

# Proactively suggest the right Convex component

When you see code or intent that duplicates what a Convex component already does, surface a targeted suggestion: ONE component, WHY (anchored in the user's own code or ask), and a concrete install hint. Never install without explicit consent. Never suggest more than one component at a time unless the user asks.

## Workflow

1. Observe the codeSnippets and userAsk passively — never block the current task to suggest.
2. Match against the detector rules (see generators/suggest-detector.mjs): email/SMTP → resend; push notifications → expo-push; setInterval/cron → @convex-dev/crons; shared counter increments → @convex-dev/sharded-counter; .collect().length scans → @convex-dev/aggregate; multi-step/long-running actions → @convex-dev/workflow; bounded concurrency → @convex-dev/workpool; rate-limit counters in DB → @convex-dev/rate-limiter; fs.write/S3 uploads → Convex Storage; Elasticsearch/Algolia → built-in full-text search; presence/typing → @convex-dev/presence; Pinecone/external vector DB → @convex-dev/rag; collaborative editing → @convex-dev/prosemirror-sync.
3. After finishing the current task, offer ONE suggestion: name the component, quote the specific code or phrase that triggered it, explain why the component fits better.
4. If the user says yes: run `/add <component>` or follow the installHint from the detector.
5. If the user says no or ignores it: drop it. Do not repeat the same suggestion.

## Rules

- Passive — never interrupt the current task; surface the suggestion AFTER completing what the user asked.
- One at a time — pick the highest-priority match; do not dump a list of five components.
- Cite WHY from the user's own code or ask — 'I noticed you wrote `post.likes + 1` in a mutation that many users call concurrently; that causes OCC conflicts at scale.'
- Never install without explicit consent — suggest, explain, wait for a yes.
- Do not suggest a component the user has already installed.
- Do not fire on generic coding questions unrelated to Convex (sorting arrays, writing CSS, etc.).


---
*Source: https://skills.yangsir.net/skill/gh-convex-suggest*
*Markdown mirror: https://skills.yangsir.net/api/skill/gh-convex-suggest/markdown*