{"owner":"BehaviorTree","repo":"BehaviorTree.CPP","hasSkills":true,"totalSkillsCount":1,"totalTokensCount":1176,"categories":["claude-rule"],"hasMcp":false,"mcpConfig":null,"found":["CLAUDE.md"],"skills":{"CLAUDE.md":"# CLAUDE.md\n\nThis file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.\n\n## Build Commands\n\n```bash\n# Plain CMake (recommended for development)\nmkdir build && cmake -S . -B build && cmake --build build --parallel\n\n# With Conan (CMake 3.23+ required)\nconan install . -s build_type=Release --build=missing\ncmake --preset conan-release\ncmake --build --preset conan-release\n\n# Pixi/Conda\npixi run build\n```\n\nRequires CMake 3.16.3+ and C++17 compiler. The project exports `CMAKE_EXPORT_COMPILE_COMMANDS=ON` by default.\n\n## Testing\n\n```bash\n# Run all tests via CTest\nctest --test-dir build\n\n# Run test executable directly\n./build/tests/behaviortree_cpp_test\n\n# Run specific test\n./build/tests/behaviortree_cpp_test --gtest_filter=\"TestName*\"\n\n# Pixi\npixi run test\n```\n\nTest files are in `tests/` using Google Test. Key test categories: `gtest_blackboard.cpp`, `gtest_factory.cpp`, `gtest_tree.cpp`, `gtest_sequence.cpp`, `gtest_fallback.cpp`, `gtest_parallel.cpp`, `gtest_decorator.cpp`, `gtest_reactive.cpp`, `gtest_ports.cpp`, `gtest_port_type_rules.cpp`.\n\n## Linting and Formatting\n\n```bash\n# Pre-commit hooks (clang-format, codespell)\npre-commit install\npre-commit run -a\n\n# Clang-tidy (requires clangd-21, build must exist for compile_commands.json)\n./run_clang_tidy.sh [build_path]\n```\n\nInstall clang-tidy-21:\n```bash\nwget https://apt.llvm.org/llvm.sh && chmod +x llvm.sh\nsudo ./llvm.sh 21\nsudo apt install clangd-21 clang-tidy-21\n```\n\nCode style: Google C++ with 90-char line limit, 2-space indent. See `.clang-format` and `.clang-tidy` for details.\n\n## Architecture\n\n**Namespace:** `BT::`\n**Library:** `behaviortree_cpp`\n\n### Node Hierarchy\n\nAll behavior tree nodes inherit from `TreeNode` (`include/behaviortree_cpp/tree_node.h`):\n\n- **LeafNode**: `ActionNode`, `ConditionNode` - user-defined tasks and checks\n- **ControlNode**: `SequenceNode`, `FallbackNode`, `ParallelNode`, `ReactiveSequence`, `ReactiveFallback`, `SwitchNode`, `IfThenElseNode`, `WhileDoElseNode`\n- **DecoratorNode**: `InverterNode`, `RetryNode`, `RepeatNode`, `TimeoutNode`, `DelayNode`, `SubtreeNode`\n\n### Node Status\n\n`TreeNodeStatus`: `IDLE`, `RUNNING`, `SUCCESS`, `FAILURE`, `SKIPPED`\n\n### Key Components\n\n| Component | Location | Purpose |\n|-----------|----------|---------|\n| `BehaviorTreeFactory` | `bt_factory.h` | Node registration, XML parsing, tree creation |\n| `Blackboard` | `blackboard.h` | Shared typed key-value storage between nodes |\n| Port System | `basic_types.h` | Type-safe dataflow: `InputPort<T>`, `OutputPort<T>`, `BidirectionalPort<T>` |\n| XML Parser | `xml_parsing.cpp` | Loads trees from XML with type validation |\n| Script Parser | `scripting/` | Embedded expression language for conditions |\n\n### Port System Rules\n\nPorts enable type-safe data passing between nodes via the Blackboard:\n- Same-typed ports always connect\n- Generic ports (`AnyTypeAllowed`, `BT::Any`) accept any type\n- `std::string` output acts as \"universal donor\" (converts via `convertFromString<T>`)\n- Type locks after first strongly-typed write\n- Reserved names: `name`, `ID`, names starting with `_`\n\nSee `docs/PORT_CONNECTION_RULES.md` for detailed rules.\n\n### Source Layout\n\n```\nsrc/\n├── *.cpp              # Core: tree_node, blackboard, xml_parsing, bt_factory\n├── actions/           # Built-in action nodes\n├── controls/          # Control flow nodes (sequence, fallback, parallel, etc.)\n├── decorators/        # Decorator nodes (retry, repeat, timeout, etc.)\n└── loggers/           # Logging infrastructure (Groot2, SQLite, file)\n\ninclude/behaviortree_cpp/\n├── *.h                # Public API headers\n├── controls/          # Control node headers\n├── decorators/        # Decorator node headers\n├── loggers/           # Logger headers\n├── scripting/         # Script parser (lexy-based)\n└── contrib/           # Third-party contributions\n```\n\n### Integration Points\n\n- **Groot2**: Visual editor integration via ZeroMQ (`BTCPP_GROOT_INTERFACE` option)\n- **ROS2**: Auto-detected via `ament_cmake`, uses colcon build\n- **Conan**: Package manager support for non-ROS builds\n\n### Vendored Dependencies\n\nAll in `3rdparty/`: TinyXML2, cppzmq, flatbuffers, lexy, minicoro, minitrace. Controlled via `USE_VENDORED_*` CMake options.\n\n## Contributing\n\n- Run `pre-commit run -a` and `./run_clang_tidy.sh` before PRs\n- Bug fixes should include a failing test that passes after the fix\n- Consider API/ABI compatibility implications\n"},"files":{"CLAUDE.md":"# CLAUDE.md\n\nThis file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.\n\n## Build Commands\n\n```bash\n# Plain CMake (recommended for development)\nmkdir build && cmake -S . -B build && cmake --build build --parallel\n\n# With Conan (CMake 3.23+ required)\nconan install . -s build_type=Release --build=missing\ncmake --preset conan-release\ncmake --build --preset conan-release\n\n# Pixi/Conda\npixi run build\n```\n\nRequires CMake 3.16.3+ and C++17 compiler. The project exports `CMAKE_EXPORT_COMPILE_COMMANDS=ON` by default.\n\n## Testing\n\n```bash\n# Run all tests via CTest\nctest --test-dir build\n\n# Run test executable directly\n./build/tests/behaviortree_cpp_test\n\n# Run specific test\n./build/tests/behaviortree_cpp_test --gtest_filter=\"TestName*\"\n\n# Pixi\npixi run test\n```\n\nTest files are in `tests/` using Google Test. Key test categories: `gtest_blackboard.cpp`, `gtest_factory.cpp`, `gtest_tree.cpp`, `gtest_sequence.cpp`, `gtest_fallback.cpp`, `gtest_parallel.cpp`, `gtest_decorator.cpp`, `gtest_reactive.cpp`, `gtest_ports.cpp`, `gtest_port_type_rules.cpp`.\n\n## Linting and Formatting\n\n```bash\n# Pre-commit hooks (clang-format, codespell)\npre-commit install\npre-commit run -a\n\n# Clang-tidy (requires clangd-21, build must exist for compile_commands.json)\n./run_clang_tidy.sh [build_path]\n```\n\nInstall clang-tidy-21:\n```bash\nwget https://apt.llvm.org/llvm.sh && chmod +x llvm.sh\nsudo ./llvm.sh 21\nsudo apt install clangd-21 clang-tidy-21\n```\n\nCode style: Google C++ with 90-char line limit, 2-space indent. See `.clang-format` and `.clang-tidy` for details.\n\n## Architecture\n\n**Namespace:** `BT::`\n**Library:** `behaviortree_cpp`\n\n### Node Hierarchy\n\nAll behavior tree nodes inherit from `TreeNode` (`include/behaviortree_cpp/tree_node.h`):\n\n- **LeafNode**: `ActionNode`, `ConditionNode` - user-defined tasks and checks\n- **ControlNode**: `SequenceNode`, `FallbackNode`, `ParallelNode`, `ReactiveSequence`, `ReactiveFallback`, `SwitchNode`, `IfThenElseNode`, `WhileDoElseNode`\n- **DecoratorNode**: `InverterNode`, `RetryNode`, `RepeatNode`, `TimeoutNode`, `DelayNode`, `SubtreeNode`\n\n### Node Status\n\n`TreeNodeStatus`: `IDLE`, `RUNNING`, `SUCCESS`, `FAILURE`, `SKIPPED`\n\n### Key Components\n\n| Component | Location | Purpose |\n|-----------|----------|---------|\n| `BehaviorTreeFactory` | `bt_factory.h` | Node registration, XML parsing, tree creation |\n| `Blackboard` | `blackboard.h` | Shared typed key-value storage between nodes |\n| Port System | `basic_types.h` | Type-safe dataflow: `InputPort<T>`, `OutputPort<T>`, `BidirectionalPort<T>` |\n| XML Parser | `xml_parsing.cpp` | Loads trees from XML with type validation |\n| Script Parser | `scripting/` | Embedded expression language for conditions |\n\n### Port System Rules\n\nPorts enable type-safe data passing between nodes via the Blackboard:\n- Same-typed ports always connect\n- Generic ports (`AnyTypeAllowed`, `BT::Any`) accept any type\n- `std::string` output acts as \"universal donor\" (converts via `convertFromString<T>`)\n- Type locks after first strongly-typed write\n- Reserved names: `name`, `ID`, names starting with `_`\n\nSee `docs/PORT_CONNECTION_RULES.md` for detailed rules.\n\n### Source Layout\n\n```\nsrc/\n├── *.cpp              # Core: tree_node, blackboard, xml_parsing, bt_factory\n├── actions/           # Built-in action nodes\n├── controls/          # Control flow nodes (sequence, fallback, parallel, etc.)\n├── decorators/        # Decorator nodes (retry, repeat, timeout, etc.)\n└── loggers/           # Logging infrastructure (Groot2, SQLite, file)\n\ninclude/behaviortree_cpp/\n├── *.h                # Public API headers\n├── controls/          # Control node headers\n├── decorators/        # Decorator node headers\n├── loggers/           # Logger headers\n├── scripting/         # Script parser (lexy-based)\n└── contrib/           # Third-party contributions\n```\n\n### Integration Points\n\n- **Groot2**: Visual editor integration via ZeroMQ (`BTCPP_GROOT_INTERFACE` option)\n- **ROS2**: Auto-detected via `ament_cmake`, uses colcon build\n- **Conan**: Package manager support for non-ROS builds\n\n### Vendored Dependencies\n\nAll in `3rdparty/`: TinyXML2, cppzmq, flatbuffers, lexy, minicoro, minitrace. Controlled via `USE_VENDORED_*` CMake options.\n\n## Contributing\n\n- Run `pre-commit run -a` and `./run_clang_tidy.sh` before PRs\n- Bug fixes should include a failing test that passes after the fix\n- Consider API/ABI compatibility implications\n"},"items":[{"name":"CLAUDE.md","path":"CLAUDE.md","rawUrl":"https://raw.githubusercontent.com/BehaviorTree/BehaviorTree.CPP/HEAD/CLAUDE.md","title":"Claude Agent Guidelines & System Prompt","category":"claude-rule","format":"markdown","content":"# CLAUDE.md\n\nThis file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.\n\n## Build Commands\n\n```bash\n# Plain CMake (recommended for development)\nmkdir build && cmake -S . -B build && cmake --build build --parallel\n\n# With Conan (CMake 3.23+ required)\nconan install . -s build_type=Release --build=missing\ncmake --preset conan-release\ncmake --build --preset conan-release\n\n# Pixi/Conda\npixi run build\n```\n\nRequires CMake 3.16.3+ and C++17 compiler. The project exports `CMAKE_EXPORT_COMPILE_COMMANDS=ON` by default.\n\n## Testing\n\n```bash\n# Run all tests via CTest\nctest --test-dir build\n\n# Run test executable directly\n./build/tests/behaviortree_cpp_test\n\n# Run specific test\n./build/tests/behaviortree_cpp_test --gtest_filter=\"TestName*\"\n\n# Pixi\npixi run test\n```\n\nTest files are in `tests/` using Google Test. Key test categories: `gtest_blackboard.cpp`, `gtest_factory.cpp`, `gtest_tree.cpp`, `gtest_sequence.cpp`, `gtest_fallback.cpp`, `gtest_parallel.cpp`, `gtest_decorator.cpp`, `gtest_reactive.cpp`, `gtest_ports.cpp`, `gtest_port_type_rules.cpp`.\n\n## Linting and Formatting\n\n```bash\n# Pre-commit hooks (clang-format, codespell)\npre-commit install\npre-commit run -a\n\n# Clang-tidy (requires clangd-21, build must exist for compile_commands.json)\n./run_clang_tidy.sh [build_path]\n```\n\nInstall clang-tidy-21:\n```bash\nwget https://apt.llvm.org/llvm.sh && chmod +x llvm.sh\nsudo ./llvm.sh 21\nsudo apt install clangd-21 clang-tidy-21\n```\n\nCode style: Google C++ with 90-char line limit, 2-space indent. See `.clang-format` and `.clang-tidy` for details.\n\n## Architecture\n\n**Namespace:** `BT::`\n**Library:** `behaviortree_cpp`\n\n### Node Hierarchy\n\nAll behavior tree nodes inherit from `TreeNode` (`include/behaviortree_cpp/tree_node.h`):\n\n- **LeafNode**: `ActionNode`, `ConditionNode` - user-defined tasks and checks\n- **ControlNode**: `SequenceNode`, `FallbackNode`, `ParallelNode`, `ReactiveSequence`, `ReactiveFallback`, `SwitchNode`, `IfThenElseNode`, `WhileDoElseNode`\n- **DecoratorNode**: `InverterNode`, `RetryNode`, `RepeatNode`, `TimeoutNode`, `DelayNode`, `SubtreeNode`\n\n### Node Status\n\n`TreeNodeStatus`: `IDLE`, `RUNNING`, `SUCCESS`, `FAILURE`, `SKIPPED`\n\n### Key Components\n\n| Component | Location | Purpose |\n|-----------|----------|---------|\n| `BehaviorTreeFactory` | `bt_factory.h` | Node registration, XML parsing, tree creation |\n| `Blackboard` | `blackboard.h` | Shared typed key-value storage between nodes |\n| Port System | `basic_types.h` | Type-safe dataflow: `InputPort<T>`, `OutputPort<T>`, `BidirectionalPort<T>` |\n| XML Parser | `xml_parsing.cpp` | Loads trees from XML with type validation |\n| Script Parser | `scripting/` | Embedded expression language for conditions |\n\n### Port System Rules\n\nPorts enable type-safe data passing between nodes via the Blackboard:\n- Same-typed ports always connect\n- Generic ports (`AnyTypeAllowed`, `BT::Any`) accept any type\n- `std::string` output acts as \"universal donor\" (converts via `convertFromString<T>`)\n- Type locks after first strongly-typed write\n- Reserved names: `name`, `ID`, names starting with `_`\n\nSee `docs/PORT_CONNECTION_RULES.md` for detailed rules.\n\n### Source Layout\n\n```\nsrc/\n├── *.cpp              # Core: tree_node, blackboard, xml_parsing, bt_factory\n├── actions/           # Built-in action nodes\n├── controls/          # Control flow nodes (sequence, fallback, parallel, etc.)\n├── decorators/        # Decorator nodes (retry, repeat, timeout, etc.)\n└── loggers/           # Logging infrastructure (Groot2, SQLite, file)\n\ninclude/behaviortree_cpp/\n├── *.h                # Public API headers\n├── controls/          # Control node headers\n├── decorators/        # Decorator node headers\n├── loggers/           # Logger headers\n├── scripting/         # Script parser (lexy-based)\n└── contrib/           # Third-party contributions\n```\n\n### Integration Points\n\n- **Groot2**: Visual editor integration via ZeroMQ (`BTCPP_GROOT_INTERFACE` option)\n- **ROS2**: Auto-detected via `ament_cmake`, uses colcon build\n- **Conan**: Package manager support for non-ROS builds\n\n### Vendored Dependencies\n\nAll in `3rdparty/`: TinyXML2, cppzmq, flatbuffers, lexy, minicoro, minitrace. Controlled via `USE_VENDORED_*` CMake options.\n\n## Contributing\n\n- Run `pre-commit run -a` and `./run_clang_tidy.sh` before PRs\n- Bug fixes should include a failing test that passes after the fix\n- Consider API/ABI compatibility implications\n","isInternal":false,"tokens":1176,"sizeBytes":4508}],"systemPromptSnippet":"<yakaai_skills repo=\"BehaviorTree/BehaviorTree.CPP\">\n<!-- File: CLAUDE.md (Tokens: ~1176 | Category: claude-rule) -->\n# CLAUDE.md\n\nThis file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.\n\n## Build Commands\n\n```bash\n# Plain CMake (recommended for development)\nmkdir build && cmake -S . -B build && cmake --build build --parallel\n\n# With Conan (CMake 3.23+ required)\nconan install . -s build_type=Release --build=missing\ncmake --preset conan-release\ncmake --build --preset conan-release\n\n# Pixi/Conda\npixi run build\n```\n\nRequires CMake 3.16.3+ and C++17 compiler. The project exports `CMAKE_EXPORT_COMPILE_COMMANDS=ON` by default.\n\n## Testing\n\n```bash\n# Run all tests via CTest\nctest --test-dir build\n\n# Run test executable directly\n./build/tests/behaviortree_cpp_test\n\n# Run specific test\n./build/tests/behaviortree_cpp_test --gtest_filter=\"TestName*\"\n\n# Pixi\npixi run test\n```\n\nTest files are in `tests/` using Google Test. Key test categories: `gtest_blackboard.cpp`, `gtest_factory.cpp`, `gtest_tree.cpp`, `gtest_sequence.cpp`, `gtest_fallback.cpp`, `gtest_parallel.cpp`, `gtest_decorator.cpp`, `gtest_reactive.cpp`, `gtest_ports.cpp`, `gtest_port_type_rules.cpp`.\n\n## Linting and Formatting\n\n```bash\n# Pre-commit hooks (clang-format, codespell)\npre-commit install\npre-commit run -a\n\n# Clang-tidy (requires clangd-21, build must exist for compile_commands.json)\n./run_clang_tidy.sh [build_path]\n```\n\nInstall clang-tidy-21:\n```bash\nwget https://apt.llvm.org/llvm.sh && chmod +x llvm.sh\nsudo ./llvm.sh 21\nsudo apt install clangd-21 clang-tidy-21\n```\n\nCode style: Google C++ with 90-char line limit, 2-space indent. See `.clang-format` and `.clang-tidy` for details.\n\n## Architecture\n\n**Namespace:** `BT::`\n**Library:** `behaviortree_cpp`\n\n### Node Hierarchy\n\nAll behavior tree nodes inherit from `TreeNode` (`include/behaviortree_cpp/tree_node.h`):\n\n- **LeafNode**: `ActionNode`, `ConditionNode` - user-defined tasks and checks\n- **ControlNode**: `SequenceNode`, `FallbackNode`, `ParallelNode`, `ReactiveSequence`, `ReactiveFallback`, `SwitchNode`, `IfThenElseNode`, `WhileDoElseNode`\n- **DecoratorNode**: `InverterNode`, `RetryNode`, `RepeatNode`, `TimeoutNode`, `DelayNode`, `SubtreeNode`\n\n### Node Status\n\n`TreeNodeStatus`: `IDLE`, `RUNNING`, `SUCCESS`, `FAILURE`, `SKIPPED`\n\n### Key Components\n\n| Component | Location | Purpose |\n|-----------|----------|---------|\n| `BehaviorTreeFactory` | `bt_factory.h` | Node registration, XML parsing, tree creation |\n| `Blackboard` | `blackboard.h` | Shared typed key-value storage between nodes |\n| Port System | `basic_types.h` | Type-safe dataflow: `InputPort<T>`, `OutputPort<T>`, `BidirectionalPort<T>` |\n| XML Parser | `xml_parsing.cpp` | Loads trees from XML with type validation |\n| Script Parser | `scripting/` | Embedded expression language for conditions |\n\n### Port System Rules\n\nPorts enable type-safe data passing between nodes via the Blackboard:\n- Same-typed ports always connect\n- Generic ports (`AnyTypeAllowed`, `BT::Any`) accept any type\n- `std::string` output acts as \"universal donor\" (converts via `convertFromString<T>`)\n- Type locks after first strongly-typed write\n- Reserved names: `name`, `ID`, names starting with `_`\n\nSee `docs/PORT_CONNECTION_RULES.md` for detailed rules.\n\n### Source Layout\n\n```\nsrc/\n├── *.cpp              # Core: tree_node, blackboard, xml_parsing, bt_factory\n├── actions/           # Built-in action nodes\n├── controls/          # Control flow nodes (sequence, fallback, parallel, etc.)\n├── decorators/        # Decorator nodes (retry, repeat, timeout, etc.)\n└── loggers/           # Logging infrastructure (Groot2, SQLite, file)\n\ninclude/behaviortree_cpp/\n├── *.h                # Public API headers\n├── controls/          # Control node headers\n├── decorators/        # Decorator node headers\n├── loggers/           # Logger headers\n├── scripting/         # Script parser (lexy-based)\n└── contrib/           # Third-party contributions\n```\n\n### Integration Points\n\n- **Groot2**: Visual editor integration via ZeroMQ (`BTCPP_GROOT_INTERFACE` option)\n- **ROS2**: Auto-detected via `ament_cmake`, uses colcon build\n- **Conan**: Package manager support for non-ROS builds\n\n### Vendored Dependencies\n\nAll in `3rdparty/`: TinyXML2, cppzmq, flatbuffers, lexy, minicoro, minitrace. Controlled via `USE_VENDORED_*` CMake options.\n\n## Contributing\n\n- Run `pre-commit run -a` and `./run_clang_tidy.sh` before PRs\n- Bug fixes should include a failing test that passes after the fix\n- Consider API/ABI compatibility implications\n</yakaai_skills>"}