~ / rigs / harunkurtdev / ros2-claude-code-template

harunkurtdev/ros2-claude-code-template

No description.

↗ GitHub ★ 215 no license updated 4mo ago project Claude Code
share on X
ARCHETYPE
Fort Knox
Deny lists, pre-tool hooks, sandboxing. Nothing touches prod without a signature.
CONTEXT TAX · EVERY TURN
~5.5k tokens
Moderate · median rig: 2.3k · breakdown
GUARDRAILS
4/5
Blocks destructive commands · Protects secrets · No YOLO mode · Sandbox or ask-first rules · details

Copy this rig

# review before running: this installs third-party code
$ npx degit harunkurtdev/ros2-claude-code-template/.claude ./rig-ros2-claude-code-template  # inspect, then merge into .claude/

MCP servers are added to Claude Code at local scope; env vars are shown as YOUR_… placeholders — we never store values. Files are fetched with degit into a separate folder so you can review before merging.

$ npx degit harunkurtdev/ros2-claude-code-template/.claude/skills/behaviortree_node_creation .claude/skills/behaviortree_node_creation
$ npx degit harunkurtdev/ros2-claude-code-template/.claude/skills/extending_claude_config .claude/skills/extending_claude_config
$ npx degit harunkurtdev/ros2-claude-code-template/.claude/skills/gz-build .claude/skills/gz-build
$ npx degit harunkurtdev/ros2-claude-code-template/.claude/skills/gz-ecs-overview .claude/skills/gz-ecs-overview
$ npx degit harunkurtdev/ros2-claude-code-template/.claude/skills/gz-test .claude/skills/gz-test
$ npx degit harunkurtdev/ros2-claude-code-template/.claude/skills/nav2_behavior_tree .claude/skills/nav2_behavior_tree
$ npx degit harunkurtdev/ros2-claude-code-template/.claude/skills/nav2_controllers .claude/skills/nav2_controllers
$ npx degit harunkurtdev/ros2-claude-code-template/.claude/skills/nav2_core_interfaces .claude/skills/nav2_core_interfaces
$ npx degit harunkurtdev/ros2-claude-code-template/.claude/skills/nav2_costmap .claude/skills/nav2_costmap
$ npx degit harunkurtdev/ros2-claude-code-template/.claude/skills/nav2_localization .claude/skills/nav2_localization
$ npx degit harunkurtdev/ros2-claude-code-template/.claude/skills/nav2_planners .claude/skills/nav2_planners
$ npx degit harunkurtdev/ros2-claude-code-template/.claude/skills/nav2_servers .claude/skills/nav2_servers
$ npx degit harunkurtdev/ros2-claude-code-template/.claude/skills/new-component .claude/skills/new-component
$ npx degit harunkurtdev/ros2-claude-code-template/.claude/skills/new-system .claude/skills/new-system
$ npx degit harunkurtdev/ros2-claude-code-template/.claude/skills/new_nav2_plugin .claude/skills/new_nav2_plugin
$ npx degit harunkurtdev/ros2-claude-code-template/.claude/skills/new_ros2_package .claude/skills/new_ros2_package
$ npx degit harunkurtdev/ros2-claude-code-template/.claude/skills/new_ros2_workspace .claude/skills/new_ros2_workspace
$ npx degit harunkurtdev/ros2-claude-code-template/.claude/skills/ros2_bag .claude/skills/ros2_bag
$ npx degit harunkurtdev/ros2-claude-code-template/.claude/skills/ros2_control_hardware_interface .claude/skills/ros2_control_hardware_interface
$ npx degit harunkurtdev/ros2-claude-code-template/.claude/skills/ros2_controller_creation .claude/skills/ros2_controller_creation
$ npx degit harunkurtdev/ros2-claude-code-template/.claude/skills/ros2_diagnostics .claude/skills/ros2_diagnostics
$ npx degit harunkurtdev/ros2-claude-code-template/.claude/skills/ros2_launch_config .claude/skills/ros2_launch_config
$ npx degit harunkurtdev/ros2-claude-code-template/.claude/skills/ros2_lifecycle .claude/skills/ros2_lifecycle
$ npx degit harunkurtdev/ros2-claude-code-template/.claude/skills/ros2_messaging .claude/skills/ros2_messaging
$ npx degit harunkurtdev/ros2-claude-code-template/.claude/skills/ros2_node_creation .claude/skills/ros2_node_creation
$ npx degit harunkurtdev/ros2-claude-code-template/.claude/skills/ros2_service_action .claude/skills/ros2_service_action
$ npx degit harunkurtdev/ros2-claude-code-template/.claude/skills/ros2_testing .claude/skills/ros2_testing
$ npx degit harunkurtdev/ros2-claude-code-template/.claude/skills/ros2_transforms .claude/skills/ros2_transforms
$ npx degit harunkurtdev/ros2-claude-code-template/.claude/skills/vda5050_integration .claude/skills/vda5050_integration
$ curl -fsSL --create-dirs -o .claude/agents/behaviortree-reviewer.md https://raw.githubusercontent.com/harunkurtdev/ros2-claude-code-template/master/.claude/agents/behaviortree-reviewer.md
$ curl -fsSL --create-dirs -o .claude/agents/clean-arch-architect.md https://raw.githubusercontent.com/harunkurtdev/ros2-claude-code-template/master/.claude/agents/clean-arch-architect.md
$ curl -fsSL --create-dirs -o .claude/agents/ecs-architect.md https://raw.githubusercontent.com/harunkurtdev/ros2-claude-code-template/master/.claude/agents/ecs-architect.md
$ curl -fsSL --create-dirs -o .claude/agents/gz-style-reviewer.md https://raw.githubusercontent.com/harunkurtdev/ros2-claude-code-template/master/.claude/agents/gz-style-reviewer.md
$ curl -fsSL --create-dirs -o .claude/agents/ros2-controllers-reviewer.md https://raw.githubusercontent.com/harunkurtdev/ros2-claude-code-template/master/.claude/agents/ros2-controllers-reviewer.md
$ curl -fsSL --create-dirs -o .claude/agents/ros2-style-reviewer.md https://raw.githubusercontent.com/harunkurtdev/ros2-claude-code-template/master/.claude/agents/ros2-style-reviewer.md
$ curl -fsSL --create-dirs -o .claude/agents/vda5050-reviewer.md https://raw.githubusercontent.com/harunkurtdev/ros2-claude-code-template/master/.claude/agents/vda5050-reviewer.md

Merge into .claude/settings.json (project) or ~/.claude/settings.json (user). Hook commands reference scripts in the source repo — copy those too.

{
  "permissions": {
    "deny": [
      "Bash(sudo:*)",
      "Bash(docker:*)",
      "Bash(rm -rf /*)",
      "Bash(git push --force:*)",
      "Bash(git reset --hard:*)",
      "Read(./.env)",
      "Read(./.env.*)",
      "Read(~/.ssh/**)"
    ],
    "ask": [
      "Bash(git push:*)",
      "Bash(rm -rf build*)",
      "Bash(rm -rf install*)",
      "Bash(rm -rf log*)"
    ]
  }
}

Skills (29)

Subagents (7)

behaviortree-reviewer
model: sonnet
Use proactively before opening a PR that adds or changes BehaviorTree.CPP nodes or BehaviorTree.ROS2 wrappers (<redacted>, TreeExecutionServer). Reviews a diff against BT.CPP v4 conventions — node bas
clean-arch-architect
model: sonnet
Use when a design decision touches Clean Architecture boundaries in a ROS 2 project — which layer a new behaviour belongs to, whether a port belongs in domain or application, whether a new node should
ecs-architect
model: sonnet
Use when a design decision touches the gz-sim ECS — where new state should live, which system phase should write it, how to avoid coupling, whether to add a component vs. a member variable, whether a
gz-style-reviewer
model: sonnet
Use proactively before opening any gz-sim PR. Reviews a diff against the project's C++17 style, ECS conventions, plugin registration patterns, CMake structure, test placement, Migration.md / Changelog
ros2-controllers-reviewer
model: sonnet
Use proactively before opening a PR that adds or changes a ros2_control controller, broadcaster, or hardware component (incl. URDF <ros2_control> bringup). Reviews a diff against ros2_controllers / ro
ros2-style-reviewer
model: sonnet
Use proactively before opening any ROS 2 / Nav 2 PR. Reviews a diff against this template's Clean Architecture, ROS 2 communication, lifecycle, testing, and Nav 2 plugin conventions. Returns a punch l
vda5050-reviewer
model: sonnet
Use proactively before opening a PR that touches a VDA 5050 connector / fleet bridge. Reviews a diff against VDA 5050 v3.0.0 protocol compliance (topics, QoS, header rules, base/horizon, action state

Slash commands (23)

/build/gz-build/gz-changelog/gz-lint/gz-new-component/gz-new-system/gz-test/lint/nav2/new-agent/new-bt-node/new-command/new-controller/new-hardware/new-launch/new-nav2-plugin/new-node/new-package/new-skill/new-vda5050-connector/new-workspace/ros2/test

Permissions

deny (8)
Bash(sudo:*)
Bash(docker:*)
Bash(rm -rf /*)
Bash(git push --force:*)
Bash(git reset --hard:*)
Read(./.env)
Read(./.env.*)
Read(~/.ssh/**)
ask (4)
Bash(git push:*)
Bash(rm -rf build*)
Bash(rm -rf install*)
Bash(rm -rf log*)
allow (61)
Bash(colcon build:*)
Bash(colcon test:*)
Bash(colcon test-result:*)
Bash(colcon list:*)
Bash(colcon graph:*)
Bash(ros2:*)
Bash(rosdep:*)
Bash(vcs:*)
Bash(rviz2:*)
Bash(rqt:*)
Bash(rqt_graph:*)
Bash(rqt_console:*)
Bash(rqt_plot:*)
Bash(rqt_tf_tree:*)
Bash(ament_uncrustify:*)
Bash(ament_cpplint:*)
Bash(ament_flake8:*)
Bash(ament_pep257:*)
Bash(ament_xmllint:*)
Bash(ament_copyright:*)
Bash(pre-commit run:*)
Bash(clang-format:*)
Bash(clang-tidy:*)
Bash(pytest:*)
Bash(python3:*)
Bash(python:*)
Bash(pip install:*)
Bash(python3 -m pip install:*)
Bash(cmake:*)
Bash(make:*)
Bash(ninja:*)
Bash(ctest:*)
Bash(bazel build:*)
Bash(bazel test:*)
Bash(bazel query:*)
Bash(gz sim:*)
Bash(gz topic:*)
Bash(gz model:*)
Bash(gz log:*)
Bash(gz service:*)
Bash(gz param:*)
Bash(cppcheck:*)
Bash(xvfb-run:*)
Bash(rg:*)
Bash(find:*)
Bash(grep:*)
Bash(tree:*)
Bash(wc:*)
Bash(file:*)
Bash(ls:*)
Bash(git status)
Bash(git diff:*)
Bash(git log:*)
Bash(git show:*)
Bash(git branch:*)
Bash(git add:*)
Bash(git commit:*)
WebFetch(domain:docs.ros.org)
WebFetch(domain:navigation.ros.org)
WebFetch(domain:design.ros2.org)

Similar rigs

copied ✓