Ship a share-react skill for social-media-tools that turns any React component into one dark-mode social card — a rendered static preview (up to three states), the implementation code, and a full typed props table — then wire it into the router, templates, reference docs, README, tests, and release metadata so it ships as a first-class share-* skill.
Read and implement all steps in the plan at docs/plans/add-share-react-skill.md — Add a share-react skill to social-media-tools. Verify against the plan's Tests, Verification, and Acceptance Criteria before reporting done. If everything passed, mark completion in docs/plans/add-share-react-skill.md — tick each step's [x] marker and each criterion's - [x], set status: completed — and re-render the HTML from the spec. If any check failed, leave status: in-progress and say which.
More ways to run this plan — goal & workflow prompts, file path
Achieve this goal: Add a share-react skill to social-media-tools. The plan at docs/plans/add-share-react-skill.md describes one approach — use it as reference, but optimize for the outcome. Fan out across parallel subagents where that serves the outcome. Verify against the plan's Tests, Verification, and Acceptance Criteria before reporting done. If everything passed, mark completion in docs/plans/add-share-react-skill.md — tick each step's [x] marker and each criterion's - [x], set status: completed — and re-render the HTML from the spec. If any check failed, leave status: in-progress and say which.
Run a workflow to implement the plan at docs/plans/add-share-react-skill.md — Add a share-react skill to social-media-tools. Brief subagents with the plan file at docs/plans/add-share-react-skill.md. Reserve a final verification phase for the lead agent, not a subagent. Verify against the plan's Tests, Verification, and Acceptance Criteria before reporting done. If everything passed, mark completion in docs/plans/add-share-react-skill.md — tick each step's [x] marker and each criterion's - [x], set status: completed — and re-render the HTML from the spec. If any check failed, leave status: in-progress and say which.
add-share-react-skill.html
docs/plans/add-share-react-skill.html
docs/plans/add-share-react-skill.md
Context
The story behind this plan — what prompted the work and why it matters now.
social-media-tools ships eleven share-* skills built on one skeleton: locate plugin assets, load SOCIAL.md , capture input, reuse-check, run the security-scrub gate , draft platform-aware copy, populate a {{VARIABLE}} card template, persistent-save to docs/media/social/ , Playwright-screenshot the card, and deliver. The closest siblings — share-github and share-selection — render code into snippet-card.html . None of them shows a component's rendered appearance or its API.
React developers want to share a component as three things at once: what it looks like, how it is built, and how to use it (its props). share-react fills that gap by combining a visual preview, the implementation, and a typed props table in a single card.
Design decisions locked during clarify and the alignment stress-test:
Preview = static mockup. Claude reads the component and hand-builds an HTML/CSS approximation of its rendered output (up to three states). There is no React or Babel runtime, so the existing static screenshot pipeline works unchanged. The two live-render approaches become Wish List flags.
Input = path or selection, equal footing. Accept a .tsx / .jsx file path argument or an IDE selection / pasted code block (mirroring share-selection 's capture).
Props = full API, types first. Parse the component's TypeScript Props interface / type alias or propTypes for name · type · required · default · description, falling back to inference from JSX usage when no explicit types exist.
Router = any React file. The social-share router sends any .tsx / .jsx selection to share-react . This intentionally makes share-react the default for React files, intercepting the generic snippet path; a plain non-React snippet still falls through to share-selection .
A new skill is not a single file: it touches the SKILL.md , a new card template, a props reference, the social-share router, references/variables.md , the README, the repo-root CLAUDE.md row, the CHANGELOG.md , plugin.json keywords, the marketplace.json version, and committed tests.
Files that change
Every file this plan touches, and what happens to each one.
kit/plugins/social-media-tools/skills/share-react/SKILL.mdnew share-react skill workflowreferences/props-extraction.mdnew props parsing + row renderingkit/plugins/social-media-tools/templates/react-card.htmlnew preview + code + props cardkit/plugins/social-media-tools/skills/social-share/SKILL.mdmodified add .tsx/.jsx router rulekit/plugins/social-media-tools/references/variables.mdmodified document react-card variables- kit/plugins/social-media-tools/
README.mdmodified skill + card-type tables, treeCHANGELOG.mdmodified v2.11.0 entry
kit/plugins/social-media-tools/.claude-plugin/plugin.jsonmodified add react keywords.claude-plugin/marketplace.jsonmodified bump to 2.11.0 + tagsCLAUDE.mdmodified update plugin table row- tests/social-media-tools/
test-react-card-smoke.shnew objective smoke testtest-share-react-registration.shnew wiring / registration testREADME.mdnew manual E2E run instructions
Steps
The step-by-step work, in order — each step says what to do, why it matters, and how to check it worked.
Tests
The tests that prove the change does what it promises.
Definition of done
The plan counts as done when every statement below is true — check each one off as you verify it.
Final check
One last pass to confirm the whole change works end to end.
Load the plugin with claude --plugin-dir ./kit/plugins/social-media-tools , then confirm end-to-end:
Typed component. Run share-react against a sample Button.tsx with a TS Props interface and confirm one card shows a rendered preview (up to 3 states), the implementation code, and a full props table; a matching react-*.html + .png land in docs/media/social/ ; copy panels are present; and the security-scrub gate fired in the transcript.
Inference fallback. Run it against an untyped .jsx component and confirm the props table is inference-populated without crashing.
Router. Ask "share this component" with a .tsx selected and confirm the router dispatches to share-react , not share-selection .
Tests. Run bash tests/social-media-tools/test-react-card-smoke.sh and bash tests/social-media-tools/test-share-react-registration.sh — both exit 0.
Release metadata. Run /validate-plugin social-media-tools and confirm marketplace.json parses and the version reads 2.11.0 .
Wrapping up
Three gates that must all pass before this plan is marked completed.
Completion Report
No items to report — all requirements met.