feat(publish): generate Claude Code plugin + marketplace from personas#14
Merged
Conversation
A new product-* family member (beside product-manager / product-marketer): turns raw signal into knowledge the team can trust. Identity + 14 skills (the 7-star synthesis/evidence spine — atomic-synthesis, keep-the-receipt, reuse-before-coin, weight-the-evidence, triangulate, mark-the-dissent, curate-the-repository, name-and-fight-bias — plus the broad research loop) and 4 knowledge docs. Authority-grounded: Sharon (atomic research), Travis (strength of evidence), Braun & Clarke (thematic analysis), Popper (falsification), Denzin (triangulation), Hall, Torres, Fitzpatrick. Differentiator: rigorous synthesis + evidence discipline + living-knowledge curation, not interviewing. It reads each source for what it IS (a PRD is intent, a call is user evidence, a competitor page is marketing) and proposes receipted, deduplicated, stanced beliefs — propose, never decide. Source only (core/ + instance-template/); agents/ + .claude-plugin/ regenerate via `truecast publish`. Untouched: the in-progress publish work. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Add `truecast publish` — turns each persona into a native Claude Code plugin (agents/<name>.md + .claude-plugin/plugin.json) and a repo-root marketplace.json, so personas install via `/plugin install <name>@truecast` with no restart. - renderSystemPrompt refactored onto a required PromptTransport (subagent|plugin), with a byte-identical subagent golden over all shipped personas - writeContained: no-follow safe writer (blocks symlinked-output-path escape) - --check drift gate (CI), --settings consuming-repo snippet (no autoUpdate) - runs `claude plugin validate --strict` on its own output when available - add the product-researcher persona; regenerate the published surface - README + docs status table updated Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The persona is a public, reusable artifact; it must not carry one company's specifics. Replaced domain-investing/web3 examples (the "Domain Investment Platform"/"Doma" twin; the "bonding timer" job) with product-agnostic ones (export button; Guided Setup vs Onboarding Wizard; a progress bar), and dropped a persona.toml comment naming a downstream consumer. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Take the author name as the substring before the first `<` instead of a regex tag-strip — the result can never contain `<`, clearing CodeQL's HTML-injection finding. Behavior unchanged for real author strings. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- README: lead with plugin install (no restart); CLI reframed as the control path; @TrueCast explained as a one-time npm-style scope; "publish your own teammate" reframed to "contribute to the catalog" (PR your core/, a maintainer publishes) with self-publish as the private/internal escape hatch - docs/README, docs/install: plugin path up top; index + blurb updated - docs/authoring-personas: add a Publishing section - CHANGELOG: Added entry for publish + plugin install + product-researcher - fix roster 9 -> 10 (product-researcher) everywhere it's enumerated Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…how-to) Per the curated-catalog decision, we don't ask people to publish their own marketplace — they PR their persona's core/ here and a maintainer publishes it. Remove the "Publish your own marketplace" walkthrough from the README and the self-publish suggestion from authoring-personas; make "ride a teammate along" a plain copy-the-snippet step (no publish command needed). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
… code Thin the em-dashes, break the rule-of-three lists, drop the precious bits, and de-clunk a few sentences across the plugin-install, CLI, contribute, and ride-along sections. No new claims; re-verified the install commands, the ten-persona roster, and the publish flag list against src/cli.ts and the code. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…s Nock A seed-stage investor persona: reads the Pull (haunting vs FOMO), tests earned secrets to destruction (the four-follow-up test, two-of-three bar), trusts revealed preferences over the TAM slide, weighs the new bar (icebergs, not the commodity playbook), and runs the dinner test — then renders a real verdict and amplifies the founder. 15 skills + 3 knowledge files; read-only tools. Distilled from Nikunj Kothari's open-source Nock (MIT, 53 real meetings + his Balancing Act essays), attributed in knowledge/seed-investing-lens.md. Every quote verified verbatim against the source (fidelity audit); financial-structure and later-stage diligence are explicitly out of scope. Eleventh official persona. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…roduct-manager) Co-Authored-By: Claude Fable 5 <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
Adds
truecast publish— generates a native Claude Code plugin per persona (agents/<name>.md+.claude-plugin/plugin.json) plus a repo-rootmarketplace.json, so personas install via/plugin marketplace add wastedcode/truecast→/plugin install <name>@truecastwith no restart. Also adds the product-researcher persona and regenerates the published surface.How
renderSystemPromptrefactored onto a requiredPromptTransport(subagent|plugin) — one renderer, all surfaces. Subagent output is pinned byte-identical by a golden over every shipped persona.writeContained— a no-follow safe writer that blocks a symlinked-output-path escape (a cloned hostile repo can't redirect a write outside the repo).--checkdrift gate (for CI),--settingsconsuming-repo snippet (noautoUpdate), andclaude plugin validate --stricton its own output whenclaudeis on PATH.Test plan
pnpm lint && pnpm typecheck && pnpm test && pnpm buildall green (157 tests)truecast publish→ 10 personas,claude plugin validate --strictpasses;truecast publish --checkcleanauthorized_keysPoC🤖 Generated with Claude Code