跳到正文
cccskills
免费在 GitHub 公开

ros2-development

Implement or change ROS 2 Jazzy packages, nodes, interfaces, launch files and configuration in a colcon workspace. Use for building and validating a development change, including tests that report success without running. For a live QoS, TF, IMU or odometry fault, use ros2-troubleshooting.

中文简介正在准备中。当前显示原文说明。

实测评分 未实测

查看安装方法

包含的文件(5)

  • SKILL.md5.9 KB
  • references/handoff.md8.9 KB
  • references/verification.md2.5 KB
  • scripts/check_test_results.py9.5 KB
  • scripts/evidence.py14.1 KB

SKILL.md(原文)

安装前可以查看交给 AI 代理的指令内容。

ROS 2 development

Work from the workspace's actual package graph and installed artifacts. This skill supplies a development workflow, a check for empty test runs, and an optional evidence tracking tool for task handoff. It does not prescribe a new workspace layout or replace the project's build conventions.

Build the affected package graph

Use colcon list to identify package names and build types. Build the changed package and its workspace dependencies with colcon build --packages-up-to <package>. --packages-select alone does not build its dependencies. For a message or public API change, include affected consumers in the build and tests. Preserve the project's existing build/install flags and dependency versions.

Build in a shell with the intended underlay, not the workspace's old overlay. Use a separate shell to source the resulting install/setup.bash and inspect ros2 pkg prefix <package>: otherwise an older installed copy can appear to validate the source change.

Require tests to have run

colcon test and colcon test-result can both succeed with zero tests. Use a fresh result directory so a previous passing report cannot satisfy this run:

The variable ROS2_SKILL_DIR in the examples below represents the absolute path to the loaded skill directory. The agent sets this path internally based on where the skill was discovered and loaded; do not ask the user for this path.

# After building, in the workspace root. Replace my_package with actual names.
# For pytest packages; omit --python-testing pytest for other test frameworks.
ROS2_SKILL_DIR="/absolute/path/to/ros2-development" # Set by agent to loaded skill directory.
results="$(mktemp -d /tmp/ros2-test-results.XXXXXX)"
colcon test --packages-select my_package --return-code-on-test-failure \
  --python-testing pytest --test-result-base "$results" &&
python3 "${ROS2_SKILL_DIR}/scripts/check_test_results.py" "$results" \
  --packages my_package --require-test my_package::test_changed_behavior

Replace test_changed_behavior with the actual regression test for the change; repeat --require-test PACKAGE::ID when more than one test is needed. It matches a full JUnit classname.name or a dot-delimited suffix, or a CTest name. Omitting a pytest [parameter] suffix selects that test's parameter group and requires at least one non-skipped case. The output lists observed test IDs and states. For ament CMake tests, the checker follows the current CTest wrapper's recorded JUnit path and checks the inner cases, even if that path was configured in the build directory. A passed wrapper cannot substitute for all-skipped inner tests.

The bundled check uses installed colcon test-result and requires at least one non-skipped test in each named package, plus the requested tests. Exit 0 means those reports contain executed, passing tests; 1 means a recorded test or test-process failure/error; 2 means missing, empty or unparseable evidence. An ament CTest crash/timeout is a recorded failure. Colcon's Python pytest.missing_result placeholder alone is inconclusive: inspect the test log to distinguish a runner problem from a crash before editing the implementation. Without --require-test, even linters alone can satisfy the check. A test name does not establish assertion quality: choose a regression that would reject the reported defect, or exercise the changed behaviour with a runtime probe. Do not describe style checks or a vacuous smoke test as functional verification. It reads reports and sends no ROS commands. Keep the printed result directory when reporting a failure. Inspect colcon test's own exit status and diagnostics as well; reports cannot clear an invocation error. A package intentionally without tests is not a failed implementation; state the missing coverage and verify its changed behaviour.

For a Python package that uses pytest, pass --python-testing pytest to colcon test (or use the workspace's explicit equivalent). Do not rely on setup.py's tests_require to select the runner: newer setuptools can ignore that field and colcon can select a different framework, collecting no tests.

Verify the installed behaviour

Choose the smallest runtime check that exercises the change. A successful build does not prove that a launch file, parameter file or executable was installed. Use verification.md for the relevant artifact: Python/C++ nodes, interfaces, launch/config, or lifecycle and sensor behaviour. Check the observable result again after a correction; keep a failed probe separate from a confirmed defect in the implementation.

Optional evidence tracking and handoff

When handing off a task to another agent session or collaborator, the optional evidence.py tool can record snapshots and verify whether the recorded context remains unchanged at handoff time. See references/handoff.md for instructions on begin, finish, and inspect.

This tool records artifact hashes and declared execution metadata; it does not run user commands and does not guarantee that the generated code is correct.

Evidence

The result checker is tested against passing, failing, empty and skipped reports, including fresh-directory separation in real Python and CMake colcon fixtures. This workflow provides diagnostic checks; an agent comparison has not established a performance gain from its prose. Official semantics: package selection, test, test results.

评价

还没有评价。欢迎分享你的使用感受。

评论

无需登录即可发表。欢迎分享使用感受、提问,或说明在哪些环境下无法运行。

还没有评论。来写第一条吧。

提交后会立即公开。请勿填写邮箱、电话等个人信息。URL 最多 2 个。

0 / 1000 字

此表单受 reCAPTCHA 保护,适用 Google 的隐私权政策和服务条款。

同一仓库的技能

micro-ROS: agent, rclc client API, micro_ros_setup, custom transports, static memory.

中文简介正在准备中。当前显示原文说明。

Leehyunbin0131/claude-ros2-skills202026年9月27日 更新

Diagnose ROS 2 Jazzy faults that reading the code cannot settle: QoS mismatch, sensor-mount and frame errors (REP 103/105), and odometry calibrated against CAD instead of the floor. Ships four runnable pass/fail checks.

中文简介正在准备中。当前显示原文说明。

Leehyunbin0131/claude-ros2-skills202026年9月27日 更新

查看 Leehyunbin0131 的全部技能

报告此技能的问题