Files
autocoder/examples/OPTIMIZE_CONFIG.md
Marian Paul f1b48be10e feat: increase command limit to 100 and add optimization guide
Changes:
- Increase command limit from 50 to 100 per project
- Add examples/OPTIMIZE_CONFIG.md with optimization strategies
- Update all documentation references (50 → 100)
- Update tests for new limit

Rationale:
- 50 was too restrictive for projects with many tools (Flutter, etc.)
- Users were unknowingly exceeding limit by listing subcommands
- 100 provides headroom while maintaining security
- New guide teaches wildcard optimization (flutter* vs listing each subcommand)

UI feedback idea: Show command count and optimization suggestions
(tracked for Phase 3 or future enhancement)
2026-01-22 13:29:33 +01:00

5.6 KiB

How to Optimize Your allowed_commands.yaml

The Problem

Your config might have redundant commands like this:

commands:
  - name: flutter
  - name: flutter*           # ← This already covers EVERYTHING below!
  - name: flutter test       # ← Redundant
  - name: flutter test --coverage  # ← Redundant
  - name: flutter build apk        # ← Redundant
  - name: flutter build ios        # ← Redundant
  # ... 20+ more flutter commands

Result: 65 commands when you only need ~10-15

How Wildcards Work

When you have flutter*, it matches:

  • flutter (the base command)
  • flutter test
  • flutter test --coverage
  • flutter build apk
  • flutter build ios
  • flutter run
  • ANY command starting with "flutter"

You don't need to list every subcommand separately!

Example: GOD-APP Optimization

Before (65 commands)

commands:
  # Flutter
  - name: flutter
  - name: flutter*
  - name: flutter test
  - name: flutter test --coverage
  - name: flutter test --exclude-tags=golden,integration
  - name: flutter test --tags=golden
  - name: flutter test --tags=golden --update-goldens
  - name: flutter test --verbose
  - name: flutter drive
  - name: flutter test integration_test/
  - name: flutter build apk
  - name: flutter build apk --debug
  - name: flutter build apk --release
  - name: flutter build appbundle
  - name: flutter build ios
  - name: flutter build ios --debug
  - name: flutter build ipa
  - name: flutter build web
  - name: flutter pub get
  - name: flutter pub upgrade
  - name: flutter doctor
  - name: flutter clean
  # ... and more

  # Dart
  - name: dart
  - name: dartfmt
  - name: dartanalyzer
  - name: dart format
  - name: dart analyze
  - name: dart fix
  - name: dart pub

After (15 commands)

commands:
  # Flutter & Dart (wildcards cover all subcommands)
  - name: flutter*
    description: All Flutter SDK commands

  - name: dart*
    description: All Dart language tools

  # Testing tools
  - name: patrol
    description: Patrol integration testing (if needed separately)

  # Coverage tools
  - name: lcov
    description: Code coverage tool

  - name: genhtml
    description: Generate HTML coverage reports

  # Android tools
  - name: adb*
    description: Android Debug Bridge commands

  - name: gradle*
    description: Gradle build system

  # iOS tools (macOS only)
  - name: xcrun*
    description: Xcode developer tools

  - name: xcodebuild
    description: Xcode build system

  - name: simctl
    description: iOS Simulator control

  - name: ios-deploy
    description: Deploy to iOS devices

  # Project scripts
  - name: ./scripts/*.sh
    description: All project build/test scripts

Reduced from 65 → 15 commands (77% reduction!)

Optimization Checklist

For each group of commands, ask:

"Do I have the base command AND a wildcard?"

# Bad (redundant)
- name: flutter
- name: flutter*

# Good (just the wildcard)
- name: flutter*

The wildcard already matches the base command!

"Am I listing subcommands individually?"

# Bad (verbose)
- name: flutter test
- name: flutter test --coverage
- name: flutter build apk
- name: flutter run

# Good (one wildcard)
- name: flutter*

"Can I group multiple scripts?"

# If you can't use wildcards for scripts, at least group them logically
- name: ./scripts/test.sh
- name: ./scripts/build.sh
- name: ./scripts/integration_test.sh

These are fine - scripts need explicit paths. But if you have 20+ scripts, consider if they're all necessary.

Common Wildcards

Instead of... Use... Covers
flutter, flutter test, flutter build, flutter run flutter* All flutter commands
dart, dart format, dart analyze, dart pub dart* All dart commands
npm, npm install, npm run, npm test npm* All npm commands
cargo, cargo build, cargo test, cargo run cargo* All cargo commands
git, git status, git commit, git push Just git Git is in global defaults

When NOT to Optimize

Keep separate entries when:

  1. Different base commands: swift and swiftc are different (though swift* covers both)
  2. Documentation clarity: Sometimes listing helps future developers understand what's needed
  3. Argument restrictions (Phase 3): If you'll add argument validation later

Quick Optimization Script

To see what you can reduce:

# Count commands by prefix
grep "^  - name:" .autocoder/allowed_commands.yaml | \
  sed 's/^  - name: //' | \
  cut -d' ' -f1 | \
  sort | uniq -c | sort -rn

If you see multiple commands with the same prefix, use a wildcard!

UI Feedback (Future Enhancement)

Great suggestion! Here's what a UI could show:

⚠️  Config Optimization Available

Your config has 65 commands. We detected opportunities to reduce it:

• 25 flutter commands → Use flutter* (saves 24 entries)
• 8 dart commands → Use dart* (saves 7 entries)
• 12 adb commands → Use adb* (saves 11 entries)

[Optimize Automatically] [Keep As-Is]

Potential reduction: 65 → 23 commands

Or during config editing:

📊 Command Usage Stats

flutter*        : 25 subcommands detected
dart*           : 8 subcommands detected
./scripts/*.sh  : 7 scripts detected

💡 Tip: Using wildcards covers all subcommands automatically

This would be a great addition to Phase 3 or beyond!

Your GOD-APP Optimization

Here's what you could do:

Current: 65 commands (exceeds 50 limit, config rejected!)

Optimized: ~15 commands using wildcards

Would you like me to create an optimized version of your GOD-APP config?