101 lines
2.9 KiB
Markdown
101 lines
2.9 KiB
Markdown
# Lightweight IDE Detection
|
|
|
|
Minimal-token environment detection to optimize BMAD task execution without consuming significant context window space.
|
|
|
|
[[LLM: This micro-task uses <100 tokens to detect IDE environment and cache results for session reuse]]
|
|
|
|
## Quick Detection Process
|
|
|
|
### Single Command Detection (50-100 tokens)
|
|
|
|
```bash
|
|
# Lightweight IDE detection with caching
|
|
if [ -f "tmp/ide-detected.txt" ]; then
|
|
DETECTED_IDE=$(cat tmp/ide-detected.txt)
|
|
else
|
|
mkdir -p tmp
|
|
if [ -n "$CURSOR_SESSION" ] || pgrep -f "cursor" > /dev/null; then
|
|
DETECTED_IDE="cursor"
|
|
elif [ -n "$CLAUDE_CODE_CLI" ] || [ -n "$CLAUDE_CLI" ]; then
|
|
DETECTED_IDE="claude-code"
|
|
elif [ -n "$REPLIT_DB_URL" ] || [ -n "$REPL_ID" ]; then
|
|
DETECTED_IDE="roo"
|
|
elif pgrep -f "windsurf" > /dev/null; then
|
|
DETECTED_IDE="windsurf"
|
|
elif pgrep -f "trae" > /dev/null; then
|
|
DETECTED_IDE="trae"
|
|
elif code --list-extensions 2>/dev/null | grep -q "cline"; then
|
|
DETECTED_IDE="cline"
|
|
elif [ -n "$GEMINI_API_KEY" ] && pgrep -f "gemini" > /dev/null; then
|
|
DETECTED_IDE="gemini"
|
|
elif code --list-extensions 2>/dev/null | grep -q "copilot"; then
|
|
DETECTED_IDE="github-copilot"
|
|
else
|
|
DETECTED_IDE="cli"
|
|
fi
|
|
echo "$DETECTED_IDE" > tmp/ide-detected.txt
|
|
fi
|
|
|
|
# Set execution mode based on detected IDE
|
|
case $DETECTED_IDE in
|
|
cursor|claude-code|windsurf|trae|roo|cline|gemini|github-copilot)
|
|
APPROVAL_REQUIRED=false
|
|
BATCH_COMMANDS=false
|
|
USE_IDE_TOOLS=true
|
|
;;
|
|
cli)
|
|
APPROVAL_REQUIRED=true
|
|
BATCH_COMMANDS=true
|
|
USE_IDE_TOOLS=false
|
|
;;
|
|
esac
|
|
|
|
echo "IDE: $DETECTED_IDE | Use IDE Tools: $USE_IDE_TOOLS | Batch: $BATCH_COMMANDS"
|
|
```
|
|
|
|
## Tool Adaptation Logic
|
|
|
|
**Based on detected IDE, adapt command execution:**
|
|
|
|
- **IDE Detected**: Use native tools, no approval prompts
|
|
- **CLI Mode**: Batch commands with `&&` chaining
|
|
- **Unknown**: Default to CLI mode with batching
|
|
|
|
## Usage in Tasks
|
|
|
|
**Replace individual bash calls with environment-aware execution:**
|
|
|
|
```bash
|
|
# Instead of multiple separate commands:
|
|
# git log --oneline -10
|
|
# git log --grep="interface"
|
|
# git status
|
|
|
|
# Use single batched command when in CLI mode:
|
|
if [ "$BATCH_COMMANDS" = "true" ]; then
|
|
echo "=== Git Analysis ===" && \
|
|
git log --oneline -10 && \
|
|
echo "=== Interface Changes ===" && \
|
|
git log --oneline -20 --grep="interface|API|contract" && \
|
|
echo "=== Status ===" && \
|
|
git status
|
|
else
|
|
# Use IDE-native tools when available
|
|
echo "Using IDE-integrated git tools"
|
|
fi
|
|
```
|
|
|
|
## Session Caching
|
|
|
|
- **First detection**: ~100 tokens
|
|
- **Subsequent uses**: ~10 tokens (read cached result)
|
|
- **Cache location**: `tmp/ide-detected.txt`
|
|
- **Cache duration**: Per session
|
|
|
|
## Success Criteria
|
|
|
|
- [ ] Minimal token usage (<100 tokens initial, <10 tokens cached)
|
|
- [ ] Accurate IDE detection for all supported environments
|
|
- [ ] Eliminates approval prompts in IDE environments
|
|
- [ ] Batches commands effectively in CLI mode
|
|
- [ ] Caches results for session reuse |