Configuración

Modos personalizados

Puedes crear modos personalizados para adaptar el comportamiento de Bob a tareas o flujos de trabajo específicos. Los modos personalizados en Bob Shell funcionan de manera similar a los modos de Bob IDE.

¿Por qué usar modos personalizados en Bob Shell?

  • Flujos de trabajo optimizados para shell: Crea modos diseñados específicamente para tareas de desarrollo basadas en terminal
  • Seguridad en la línea de comandos: Restringe los modos a operaciones seguras cuando se trabaja en entornos de producción
  • Comportamiento específico del entorno: Configura modos que se adaptan a diferentes entornos de shell
  • Compatible con la automatización: Diseña modos que funcionen perfectamente en sesiones tanto interactivas como no interactivas
  • Estandarización del equipo: Comparte modos específicos de shell con tu equipo para flujos de trabajo consistentes

Qué incluye un modo personalizado

Los modos personalizados en Bob Shell usan la misma estructura central que los modos de Bob IDE:

PropiedadDescripciónConsideraciones específicas para shell
slugIdentificador interno únicoUsado en argumentos de línea de comandos:
bob --chat-mode=my-mode
nameNombre para mostrar en la UISe muestra en el selector de modos de la sesión interactiva
descriptionDescripción corta que aparece en el selector de modosExplica brevemente el propósito de tu modo
roleDefinitionIdentidad y experiencia centralDebe considerar el contexto de shell y los flujos de trabajo de línea de comandos
groupsConjuntos de herramientas y acceso a archivos permitidosLos permisos de ejecución de comandos son críticos en entornos de shell
whenToUseGuía de selección de modosAyuda a Bob Shell a elegir los modos apropiados para las tareas
customInstructionsDirectrices de comportamiento específicas o reglas para el modoPuede hacer referencia a patrones de desarrollo de Bob Shell

Herramientas disponibles

Grupos de herramientas disponibles

  • read: Leer archivos y directorios
  • edit: Modificar archivos (puede restringirse con fileRegex)
  • browser: Usar automatización del navegador
  • command: Ejecutar comandos de terminal
  • mcp: Acceder a servidores MCP

Crear modos personalizados

Archivos de configuración

Bob Shell usa el mismo formato de configuración que Bob IDE, admitiendo tanto YAML (preferido) como JSON.

Modos globales

Crea o edita ~/.bob/custom_modes.yaml para modos disponibles en todos los proyectos:

customModes:
  - slug: shell-debug
    name: 🐛 Shell Debugger
    roleDefinition: >-
      You are a debugging specialist focused on command-line troubleshooting.
      You excel at analyzing shell output, environment variables, and system logs.
    whenToUse: Use for debugging shell scripts, command failures, and environment issues.
    customInstructions: |-
      When debugging:
      - Always check environment variables first
      - Examine command exit codes
      - Review relevant log files
      - Test commands in isolation before suggesting fixes
    groups:
      - read
      - command
      - browser

Modos específicos del proyecto

Crea o edita .bob/custom_modes.yaml en la raíz de tu proyecto:

customModes:
  - slug: deploy-helper
    name: 🚀 Deployment Assistant
    roleDefinition: You are a deployment specialist for this project's infrastructure.
    whenToUse: Use for deployment tasks, infrastructure changes, and release management.
    customInstructions: |-
      Deployment guidelines:
      - Always verify the target environment before running commands
      - Check for running processes that might be affected
      - Validate configuration files before applying changes
      - Create backups before destructive operations
    groups:
      - read
      - - edit
        - fileRegex: \.(yaml|yml|sh|env)$
          description: Configuration and script files only
      - command

Selección de modo desde la línea de comandos

Especifica un modo al iniciar Bob Shell:

# Iniciar Bob Shell en un modo específico
bob --chat-mode=shell-debug

# Combinar con otras opciones
bob --chat-mode=deploy-helper --sandbox

Cambio de modo en sesión interactiva

En modo interactivo, cambia de modo usando slash commands:

# Cambiar a un modo personalizado
/mode shell-debug

# O usa el slug del modo directamente
/shell-debug

Configuraciones específicas para shell

Modo de seguridad en producción

Crea un modo enfocado en la seguridad para entornos de producción:

customModes:
  - slug: prod-ops
    name: 🔒 Production Operations
    roleDefinition: >-
      You are a production operations specialist with a strong focus on safety.
      You never run destructive commands without explicit confirmation.
    whenToUse: Use when working with production systems or sensitive environments.
    customInstructions: |-
      Production safety rules:
      - NEVER run destructive commands without explicit user confirmation
      - Always verify the target environment before any operation
      - Suggest dry-run options when available
      - Check for active connections or processes before changes
      - Recommend backup procedures before modifications
    groups:
      - read
      - browser
      # Note: No edit or command groups for maximum safety

Modo de desarrollo de scripts

Crea un modo para el desarrollo de scripts de shell:

customModes:
  - slug: script-dev
    name: 📜 Script Developer
    roleDefinition: >-
      You are a shell scripting expert specializing in bash, zsh, and POSIX-compliant scripts.
    whenToUse: Use for creating, debugging, or improving shell scripts.
    customInstructions: |-
      Shell scripting best practices:
      - Use shellcheck-compliant syntax
      - Include proper error handling with set -e and set -u
      - Add usage documentation at the top of scripts
      - Quote variables to prevent word splitting
      - Provide exit codes for different error conditions
    groups:
      - read
      - - edit
        - fileRegex: \.(sh|bash|zsh)$
          description: Shell script files only
      - command

Permisos de ejecución de comandos

Restringir el acceso a comandos

Controla qué comandos puede ejecutar un modo omitiendo el grupo command:

customModes:
  - slug: safe-reviewer
    name: 👀 Safe Code Reviewer
    roleDefinition: You are a code reviewer focused on analysis, not modification.
    whenToUse: Use for code reviews and analysis without making changes.
    groups:
      - read
      - browser
      # No command or edit groups - read-only mode

Permitir comandos específicos

Usa la configuración de herramientas allowed de Bob Shell con modos personalizados en tu archivo de configuración:

{
  "tools": {
    "allowed": [
      "run_shell_command(git status)",
      "run_shell_command(git log)",
      "run_shell_command(git diff)"
    ]
  }
}

Comportamiento interactivo vs. no interactivo

Diseñar para ambos modos

Crea modos que funcionen bien en sesiones tanto interactivas como no interactivas:

customModes:
  - slug: test-runner
    name: 🧪 Test Runner
    roleDefinition: >-
      You are a testing specialist who runs and analyzes test suites.
      You adapt your output based on the running context.
    whenToUse: Use for running tests, analyzing test results, and debugging test failures.
    customInstructions: |-
      Testing guidelines:
      - In interactive mode: Provide detailed explanations and suggestions
      - In non-interactive mode: Focus on concise, actionable output
      - Always report test results clearly
      - Suggest fixes for failing tests
    groups:
      - read
      - command

Uso no interactivo

Usa modos en modo no interactivo:

# Usar un modo diseñado para automatización
bob --chat-mode=test-runner -p "Run the test suite and report failures"

# Combinar con procesamiento de salida
bob --chat-mode=test-runner -p "Run tests" --hide-intermediary-output > results.txt

Instrucciones específicas del modo a través de archivos

Instrucciones basadas en directorios

Crea archivos de instrucciones específicos del modo en .bob/rules-{mode-slug}/:

01-environment-checks.md
02-common-issues.md
03-debugging-steps.md
custom_modes.yaml

Ejemplo de archivo de instrucciones (.bob/rules-shell-debug/01-environment-checks.md):

# Environment Debugging Checklist

When debugging shell issues, always check:

1. **Environment Variables**: PATH, SHELL, TERM, and application-specific variables
2. **Shell Configuration**: .bashrc, .zshrc, .profile files
3. **System State**: Current working directory, file permissions, disk space
4. **Command Availability**: Use `command -v <cmd>` to verify commands exist

Instrucciones en archivo único (alternativa)

Alternativamente, usa un archivo único .bobrules-{mode-slug} en la raíz de tu workspace.

Precedencia de configuración

Las configuraciones de modo se aplican en este orden:

  1. Argumentos de línea de comandos (--chat-mode=mode-slug)
  2. Modos a nivel de proyecto (.bob/custom_modes.yaml
  3. Modos a nivel de usuario (~/.bob/custom_modes.yaml)
  4. Modos a nivel de sistema (ubicaciones específicas de la plataforma)
  5. Modos predeterminados

Sandboxing con modos personalizados

Combina modos personalizados con la función sandbox de Bob Shell para experimentar de forma segura:

# Iniciar un modo personalizado en sandbox
bob --chat-mode=script-dev --sandbox

# Usar con sandbox de Docker
bob --chat-mode=deploy-helper --sandbox

Migrar modos desde Bob IDE

Diferencias clave

Al migrar modos personalizados de Bob IDE a Bob Shell:

AspectoBob IDEBob Shell
Interacción con la UIInterfaz visual con panelesInterfaz basada en terminal
Edición de archivosDiffs y vistas previas en el editorVista de diff en CLI o editor externo
Ejecución de comandosTerminal integradaEjecución directa en shell
Cambio de modoMenú desplegable de UI o slash commandsSlash commands o argumentos de CLI
ConfiguraciónUI de configuración + archivosSolo archivos de configuración

Lista de verificación para la adaptación

Al adaptar modos de Bob IDE para Bob Shell:

  • Revisa roleDefinition para incluir contexto específico de shell
  • Actualiza customInstructions para hacer referencia a flujos de trabajo de línea de comandos
  • Considera la seguridad de la ejecución de comandos en la configuración de groups
  • Prueba el modo en sesiones tanto interactivas como no interactivas
  • Verifica que el manejo de rutas de archivos funcione en el contexto de shell
  • Prueba con el modo sandbox si corresponde

Ejemplo de migración

Modo original de Bob IDE:

customModes:
  - slug: code-reviewer
    name: 👀 Code Reviewer
    roleDefinition: You are a code reviewer who provides detailed feedback.
    groups:
      - read
      - browser

Adaptado para Bob Shell:

customModes:
  - slug: code-reviewer
    name: 👀 Code Reviewer
    roleDefinition: >-
      You are a code reviewer who provides detailed feedback.
      You work efficiently in terminal environments and provide clear, actionable suggestions.
    whenToUse: Use for code reviews, pull request analysis, and code quality checks.
    customInstructions: |-
      Code review guidelines:
      - Provide feedback in a structured format suitable for terminal output
      - Reference specific line numbers and file paths
      - Suggest concrete improvements with examples
      - Format output for easy parsing if used in non-interactive mode
    groups:
      - read
      - command  # Added for git operations
      - browser
¿Cómo es este tema?