
Security News
White House Authorizes Private Companies to Conduct Offensive Cyber Operations
A new federal program will let vetted U.S. cybersecurity firms help investigate and disrupt foreign cybercrime groups under government direction.
@wastedcode/truecast
Advanced tools
Install and run portable, versioned expert personas in Claude Code.
The expert teammates Claude Code doesn't ship with.
Install portable, versioned expert personas — a product manager, an architect, a security reviewer — into any project, run them in Claude Code, and keep your own customizations when the author improves them.
Status: working end-to-end — install · update · list · remove · doctor · prompt · publish,
with a per-persona ownership ledger, atomic updates, and a sandboxed git/GitHub fetch. Verified driving real
Claude Code sessions (as a subagent and as a standalone agent); publish generates a Claude Code plugin
marketplace (validated with claude plugin validate). Pre-1.0; the self-improving loop is next.
A persona is a small, greppable corpus + an identity, split into two owners:
core/ — the provider's craft: agent.md (identity) + skills/ + knowledge/, indexed by
persona.toml. Read-only; one global copy; you adopt updates deliberately.instance/ — your per-project job (mandate.md) + accumulated notes (work.md). Yours,
committed in your repo, never touched by an update.A bundled example: personas/product-manager/.
You could paste "act like a security expert" into your prompt. Two reasons not to:
Install straight into a live Claude Code session:
/plugin marketplace add wastedcode/truecast
/plugin install product-manager@truecast
/reload-plugins
Now talk to the teammate by name. You only type @truecast at install; it's the marketplace the plugin
comes from, like an npm scope. Swap product-manager for any of the eleven official personas:
product-researcher, vc-seed, software-engineer, software-architect, security-engineer, qa,
infrastructure, product-marketer, ui-ux-designer, sales.
The first time you run a plugin teammate with no job set, it asks what the project needs and writes its own
mandate.md. Want a global, versioned copy you update on your terms, with an ownership ledger that keeps
your edits when the author ships changes? Use the truecast CLI below.
Plugin updates are pull-based: when the catalog ships a new persona version, grab it with
/plugin marketplace update truecast (or claude plugin update <name>@truecast for one persona) — or
make it automatic per marketplace: /plugin → Marketplaces → truecast → Enable auto-update
(third-party marketplaces have it off by default). Details in
docs/managing-personas.md.
truecast CLInpm install -g @wastedcode/truecast # installs the `truecast` command
truecast --help
Or from source:
git clone https://github.com/wastedcode/truecast && cd truecast
pnpm install && pnpm build
npm link # puts `truecast` on your PATH
Requires Node ≥ 22. Pre-1.0: the CLI and the programmatic API may change between 0.x minors — see
docs → Stability.
The plugin path above is the fast lane. The CLI is the control lane: a global, versioned copy you update deliberately, with a per-persona ownership ledger so your customizations survive an update.
cd your-project
truecast install <git-url-or-path>[@version][#subpath]
# examples
truecast install https://github.com/wastedcode/truecast#personas/product-manager # an official persona
truecast install ./personas/product-manager # local path
truecast install https://github.com/you/persona@1.2.0 # a GitHub release tag
truecast install https://github.com/you/monorepo#personas/pm # a persona in a sub-directory
The eleven official personas (product-manager, product-researcher, vc-seed, software-engineer,
software-architect, security-engineer, qa, infrastructure, product-marketer, ui-ux-designer,
sales) live in this repo under personas/ — install any with …/truecast#personas/<name>.
Then write the persona's job for this project in .truecast/agents/<name>/instance/mandate.md.
However you install it — plugin (the recommended path) or CLI — a persona runs as a native Claude Code
subagent. Its body carries an index of the persona's skills (each with a one-line summary and the
path to Read), so the persona pulls the right skill on demand. Verified: given an open-ended task it
Reads the matching SKILL.md files itself, then applies them. (The CLI additionally materializes the
subagent at ~/.claude/agents/<name>.md and symlinks the craft into your project.)
@agent-<name>)Restart Claude Code after a CLI install (the plugin path above needs no restart), then bring it into a normal session:
> have the product-manager pressure-test this idea: an AI that auto-prioritizes my to-dos
Claude delegates to the subagent (it's listed under /agents, and you can @agent-product-manager it
explicitly). The subagent runs with the tools the persona declares (tools in its persona.toml),
reads its mandate.md for the project job, and Reads the skills it needs.
claude (the persona is the main agent)Run a full claude session that is the persona — its whole craft loaded as the system prompt.
truecast prompt emits that composed prompt; pipe it into claude:
cd your-project # the project where you ran `truecast install`
claude --append-system-prompt "$(truecast prompt product-manager)" \
--allowed-tools Read Grep WebSearch WebFetch \
--model opus
Now the whole session thinks like the persona. --allowed-tools restricts it to the tools the persona
declares (a main agent otherwise has the full toolset); --model matches its modelHint. (truecast prompt <name> just prints the system prompt — --append-system-prompt-file <file> works too.)
truecast runs one curated catalog, the marketplace this repo publishes, so a user adds it once and
installs everything as <name>@truecast. To get your persona in, open a PR here with your
personas/<name>/core/ (the source: agent.md, skills/, knowledge/, persona.toml). You don't
generate plugin files or run publish; a maintainer publishes it into the catalog when your PR lands.
Start from docs/authoring-personas.md and CONTRIBUTING.md.
Put a teammate in a project so everyone working in it gets the same one, with nothing to install by hand.
Add this to the repo's .claude/settings.json and commit it:
{
"extraKnownMarketplaces": {
"truecast": { "source": { "source": "github", "repo": "wastedcode/truecast" } }
},
"enabledPlugins": ["product-manager@truecast"]
}
When someone opens the repo in Claude Code and trusts the folder, Claude Code offers to install the teammate for them. The expert travels with the code, not with each person's setup. Only commit this for a marketplace you control, and review what a marketplace ships before you trust a folder.
truecast list [--check] [--project] # what's installed; running vs latest; what's attached here
truecast update [<name>] [--dry-run] # adopt newer craft; classified (patch/minor/major); your instance untouched
truecast remove <name> [--global] # detach from this project (keeps instance/), or purge globally
truecast doctor [--fix] # inspect + repair (drift, dangling pointer, stale artifacts)
See docs/managing-personas.md for the full model (consent, drift/--force,
the discriminated update outcomes).
install resolves the project (the nearest enclosing git repo, or --project <path>), fetches the persona into a
global cache (~/.truecast/personas/<name>/), symlinks the craft into the project, scaffolds your
editable instance/, and materializes the subagent at ~/.claude/agents/<name>.md — whose body indexes
the skills/knowledge for the persona to Read on demand (skills are not copied as global slash-
commands; they're the persona's private craft). Every file truecast writes is tracked in a per-persona
ledger (owned.json), under a per-persona lock, so concurrent installs never collide and truecast
never clobbers a file it doesn't own.
publish is the parallel path. Instead of materializing into ~/.claude, it generates the committed
plugin and marketplace files that Claude Code installs from.
docs/ — install, managing personas,
authoring personas, and a shipped-vs-planned status table. (Kept in step
with the code: a feature isn't done until it's documented.)
pnpm install
pnpm typecheck && pnpm test && pnpm lint && pnpm build
Requires Node ≥ 22 and pnpm. License: MIT. Design notes live in internal/ (git-ignored).
FAQs
Install and run portable, versioned expert personas in Claude Code.
The npm package @wastedcode/truecast receives a total of 6 weekly downloads. As such, @wastedcode/truecast popularity was classified as not popular.
We found that @wastedcode/truecast demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
A new federal program will let vetted U.S. cybersecurity firms help investigate and disrupt foreign cybercrime groups under government direction.

Research
/Security News
The campaign amassed more than 75,000 installs by targeting Russian-speaking users seeking access to blocked services.

Company News
Open source maintainers are under more pressure than ever. We're raising our open source program from the Team plan to the Business plan, free.