Claude-code-plugins-plus-skills cursor-tab-completion
git clone https://github.com/jeremylongshore/claude-code-plugins-plus-skills
T=$(mktemp -d) && git clone --depth=1 https://github.com/jeremylongshore/claude-code-plugins-plus-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/plugins/saas-packs/cursor-pack/skills/cursor-tab-completion" ~/.claude/skills/jeremylongshore-claude-code-plugins-plus-skills-cursor-tab-completion && rm -rf "$T"
plugins/saas-packs/cursor-pack/skills/cursor-tab-completion/SKILL.mdCursor Tab Completion
Master Cursor's AI-powered Tab completion system. Tab uses a specialized Cursor model trained for inline code prediction -- it learns from your accept/reject behavior to improve over time.
How Tab Works
- You type code in the editor
- Cursor's model predicts what comes next based on: current file, open tabs, recent edits, project rules
- Ghost text (gray text) appears inline
- You decide: Tab to accept, Esc to dismiss
// You type: function validateEmail(email: string) // Ghost text appears: function validateEmail(email: string): boolean { const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; ← gray ghost text return emailRegex.test(email); }
Key Bindings
| Action | macOS | Windows/Linux |
|---|---|---|
| Accept full suggestion | | |
| Accept word-by-word | | |
| Dismiss suggestion | | |
| Force trigger | | |
Word-by-word acceptance (
Cmd+→) is powerful for partial suggestions. If the AI suggests a complete function but you only want the signature, accept word-by-word until you have what you need, then type your own body.
Tab Completion Settings
Access via
Cursor Settings > Tab:
| Setting | Purpose | Recommendation |
|---|---|---|
| Tab Completion | Master on/off toggle | Keep enabled |
| Trigger in comments | Generate comment text | Disable for less noise |
| Accept suggestion keybinding | Remap Tab to another key | Default (Tab) works best |
| Suggestion delay | Time before ghost text appears | Lower = faster but more flicker |
Disabling Tab for Comments
If Tab suggestions in comments are distracting:
Cursor Settings > Tab Completion > uncheck Trigger in comments
Context That Improves Completions
Tab quality depends heavily on available context:
- Current file: The model reads the full file you are editing
- Open editor tabs: Files open in other tabs provide pattern context
- Recent edits: Changes you have made in the last few minutes
- Project rules:
or.cursor/rules/*.mdc
content.cursorrules - Codebase index: If indexed, the model uses semantic code search
Tips for Better Suggestions
// BAD: Tab has no context about what you want function process(data) { // GOOD: Type signature gives Tab strong signal function processPayment( amount: number, currency: 'USD' | 'EUR', paymentMethod: PaymentMethod ): Promise<PaymentResult> {
Write descriptive function names and type signatures first. Tab uses these as strong signals for generating the body.
Using Comments as Prompts
// Parse CSV file, skip header row, return array of objects with typed fields function parseCSV(filepath: string): Promise<Record<string, string>[]> { // Tab will generate the full implementation based on the comment above }
Tab vs Other AI Features
| Feature | Trigger | Scope | Speed |
|---|---|---|---|
| Tab | Automatic while typing | Single completion | Instant (~100ms) |
| Inline Edit (Cmd+K) | Manual selection + prompt | Selected code block | ~2-5 seconds |
| Chat (Cmd+L) | Manual prompt | Conversational | ~3-10 seconds |
| Composer (Cmd+I) | Manual prompt | Multi-file | ~5-30 seconds |
Tab is the only feature that runs continuously as you type. It is optimized for speed over capability -- simple completions, not complex reasoning.
Important Limitations
- No custom models for Tab: Even with BYOK (Bring Your Own Key), Tab always uses Cursor's proprietary model. Custom API keys apply to Chat and Composer only.
- No reasoning: Tab predicts the next tokens; it does not reason about correctness. Always review suggestions.
- Context window: Tab sees less context than Chat or Composer. For complex logic, use Cmd+K or Cmd+L instead.
Conflict Resolution
If Tab conflicts with other extensions:
- Disable GitHub Copilot:
> search "Copilot" > Disable. Running both causes duplicate ghost text.Extensions - Disable TabNine / Codeium: Same issue -- only one inline completion provider should be active.
- VS Code IntelliSense: Tab and IntelliSense coexist. IntelliSense handles imports/completions, Tab handles multi-line generation.
Remap if needed:
Cmd+K Cmd+S > search acceptCursorTabSuggestion > assign new key.
Measuring Tab Effectiveness
Tab gets better with usage. The model learns from:
- Accepts (Tab): Reinforces the pattern
- Rejects (Esc): Discourages similar suggestions
- Partial accepts (Cmd+→): Signals which parts were useful
After a few days on a project, Tab suggestions become noticeably more aligned with your coding style.
Enterprise Considerations
- Tab suggestions are generated using Cursor's proprietary model -- not configurable via API keys
- Privacy Mode applies to Tab: with Privacy Mode on, code sent for Tab predictions has zero data retention
- Tab is included in all Cursor plans (Free tier has limited daily uses)
- No audit logging for individual Tab completions