docs(skill): plotjuggler-plugin authoring skill for AI agents#151
Merged
Conversation
A distilled, author-oriented fast path for implementing plugins against this SDK, layered on top of the existing docs (which stay the full reference): family decision tree, correct headers/macros per family, one CMake story covering Conan / pixi / submodule acquisition, the consolidated load-bearing rules, and per-family references with compile-checked API skeletons. Content was verified against the SDK headers and examples, reviewed by two independent agents plus Codex, and cross-audited against the official plugin fleet (pj-official-plugins @ SDK 0.17.0) to align the taught patterns with shipping practice (SchemaHandler-first parsers, delegated-ingest _parser_config forwarding, thread-tag-accurate threading rules). Markdown-only under .claude/skills/ — no installed artifact changes, no version bump. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
A new Claude Code skill,
.claude/skills/plotjuggler-plugin/, that gives an AI agent (or a human in a hurry) the author-oriented fast path for implementing a plugin against this SDK. The existingpj_plugins/docs/guides remain the full reference; the skill is a navigator + gotcha-sheet + skeleton provider on top:plotjuggler_sdk::plugin_sdk), the manifest two-copies story, and 8 consolidated load-bearing rules.How it was validated
examples/in this repo.onStop()join-deadlock in a skeleton, config-round-trip stubs, thread-rule precision, and more).parse()override demoted to legacy note),_parser_configforwarding for delegated ingest,[thread-safe]-tag-accurate threading,system_clock(neverhigh_resolution_clock) for receive timestamps.SDK issues surfaced during the review (not fixed here — for triage)
pj_plugins/docs/message-parser-guide.md:89shows#include <pj_base/sdk/message_parser_plugin_base.hpp>— the header lives underpj_plugins/sdk/; copying the guide is a compile error.parse()route the header marks "will be deprecated"; consider restructuring aroundregisterSchemaHandler().pj_base,pj_dialog_sdk); none showsfind_package(plotjuggler_sdk COMPONENTS plugin_sdk)or thepj_plugin_sdkumbrella — the biggest external-author trap.CLAUDE.mdsays "16 struct headers / 15 codecs" anddocs/builtin_type.mdomitsPlotMarkers; the enum has 17 concrete types incl.kPlotMarkers(which has a codec).ARCHITECTURE.md§2 module diagram stale on the parser-base location (already acknowledged inpj_plugins/CLAUDE.md).mock_dialog.cpp/mock_source_with_dialog.cppomitstandardButtonsonbuttonBox, which the dialog guide calls a MUST — copying the example yields a buttonless dialog.data-source-guide.mddoesn't document the_parser_configinjection/forwarding convention for delegated sources.pj-official-plugins issues surfaced (separate repo — for triage)
data_stream_mqtt/udp/zmqstamp messages withstd::chrono::high_resolution_clock(since-boot on MSVC/libc++) — should besystem_clock; three near-identical one-line fixes.toolbox_fftrow-index timestamps + discardedappendRecordstatuses (self-acknowledged TODO pending ScatterXY).parser_json/parser_protobufdialogs miss theusing …::onValueChanged;name-hiding guard (latent).toolbox_quaterniondialogmanifest()lacksid.PJ_DIALOG_PLUGIN(discovery pays an instantiation).Versioning
Markdown-only under
.claude/skills/— invisible to package consumers → no version bump per the release rules. No build/test run needed (nothing in the build graph changed); pre-commit hooks passed.🤖 Generated with Claude Code