Skip to content

feat(publish): generate Claude Code plugin + marketplace from personas#14

Merged
isingh merged 9 commits into
mainfrom
feat/publish-plugin-marketplace
Jun 13, 2026
Merged

feat(publish): generate Claude Code plugin + marketplace from personas#14
isingh merged 9 commits into
mainfrom
feat/publish-plugin-marketplace

Conversation

@isingh

@isingh isingh commented Jun 13, 2026

Copy link
Copy Markdown
Contributor

What

Adds truecast publish — generates a native Claude Code plugin per persona (agents/<name>.md + .claude-plugin/plugin.json) plus a repo-root marketplace.json, so personas install via /plugin marketplace add wastedcode/truecast/plugin install <name>@truecast with no restart. Also adds the product-researcher persona and regenerates the published surface.

How

  • renderSystemPrompt refactored onto a required PromptTransport (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).
  • --check drift gate (for CI), --settings consuming-repo snippet (no autoUpdate), and claude plugin validate --strict on its own output when claude is on PATH.

Test plan

  • pnpm lint && pnpm typecheck && pnpm test && pnpm build all green (157 tests)
  • truecast publish → 10 personas, claude plugin validate --strict passes; truecast publish --check clean
  • Adversarial: symlinked output leaf/dir refused; verified live against an authorized_keys PoC

🤖 Generated with Claude Code

isingh and others added 2 commits June 13, 2026 21:32
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>
Comment thread src/publish/index.ts Fixed
isingh and others added 7 commits June 13, 2026 22:11
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>
@isingh isingh merged commit 9b7e0f1 into main Jun 13, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants