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:
| Propiedad | Descripción | Consideraciones específicas para shell |
|---|---|---|
slug | Identificador interno único | Usado en argumentos de línea de comandos:bob --chat-mode=my-mode |
name | Nombre para mostrar en la UI | Se muestra en el selector de modos de la sesión interactiva |
description | Descripción corta que aparece en el selector de modos | Explica brevemente el propósito de tu modo |
roleDefinition | Identidad y experiencia central | Debe considerar el contexto de shell y los flujos de trabajo de línea de comandos |
groups | Conjuntos de herramientas y acceso a archivos permitidos | Los permisos de ejecución de comandos son críticos en entornos de shell |
whenToUse | Guía de selección de modos | Ayuda a Bob Shell a elegir los modos apropiados para las tareas |
customInstructions | Directrices de comportamiento específicas o reglas para el modo | Puede hacer referencia a patrones de desarrollo de Bob Shell |
Herramientas disponibles
Grupos de herramientas disponibles
read: Leer archivos y directoriosedit: Modificar archivos (puede restringirse confileRegex)browser: Usar automatización del navegadorcommand: Ejecutar comandos de terminalmcp: 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
- browserModos 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
- commandSelecció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 --sandboxCambio 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-debugConfiguraciones 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 safetyModo 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
- commandPermisos 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 modePermitir 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
- commandUso 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.txtInstrucciones 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}/:
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 existInstrucciones 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:
- Argumentos de línea de comandos (
--chat-mode=mode-slug) - Modos a nivel de proyecto (
.bob/custom_modes.yaml - Modos a nivel de usuario (
~/.bob/custom_modes.yaml) - Modos a nivel de sistema (ubicaciones específicas de la plataforma)
- 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 --sandboxMigrar modos desde Bob IDE
Diferencias clave
Al migrar modos personalizados de Bob IDE a Bob Shell:
| Aspecto | Bob IDE | Bob Shell |
|---|---|---|
| Interacción con la UI | Interfaz visual con paneles | Interfaz basada en terminal |
| Edición de archivos | Diffs y vistas previas en el editor | Vista de diff en CLI o editor externo |
| Ejecución de comandos | Terminal integrada | Ejecución directa en shell |
| Cambio de modo | Menú desplegable de UI o slash commands | Slash commands o argumentos de CLI |
| Configuración | UI de configuración + archivos | Solo archivos de configuración |
Lista de verificación para la adaptación
Al adaptar modos de Bob IDE para Bob Shell:
- Revisa
roleDefinitionpara incluir contexto específico de shell - Actualiza
customInstructionspara 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
- browserAdaptado 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
- browserReglas personalizadas
Las reglas personalizadas influyen en cómo Bob Shell responde a tus solicitudes en el entorno de terminal, alineando la salida con tus preferencias específicas y los requisitos del proyecto. Puedes controlar el estilo de código, el enfoque de documentación y los procesos de toma de decisiones.
Personas de agentes
Crea archivos de persona reutilizables que definen el rol, el enfoque y el acceso a tools de un subagent. Define en qué se fija un subagent, cómo formatea su salida y qué no puede hacer.