Render a single ghostwriter profile in full — identity, style fingerprint, voice samples, taboos, source URLs. Read-only.
Scanned 6/5/2026
Install via CLI
openskills install event4u-app/agent-config---
model_tier: inherit
name: ghostwriter:show
pack: gtm-marketing
tier: 2
cluster: ghostwriter
sub: show
skills: [ghostwriter]
description: Render a single ghostwriter profile in full — identity, style fingerprint, voice samples, taboos, source URLs. Read-only.
suggestion:
eligible: true
trigger_description: "show ghostwriter profile, inspect public-figure voice, view ghostwriter details, what does this profile contain"
trigger_context: "user wants to inspect a single captured ghostwriter profile before writing with it or deciding to refresh / delete it"
workspaces:
- agent-config-maintainer
packs:
- meta
---
# /ghostwriter:show
Read-only render of a single `agents/reference/ghostwriter/<slug>.md` profile.
Surfaces every field needed to decide whether to consume the voice
(`/ghostwriter:write`), refresh it (`/ghostwriter:fetch <slug>
--force-refresh`), or delete it (`/ghostwriter:delete`).
## Steps
### 1. Resolve target
Argument shapes:
- `/ghostwriter:show <slug>` → positional slug.
- `/ghostwriter:show <n>` → numeric index from the most recent
`/ghostwriter:list` ordering (re-derive by listing slugs sorted
ascending; index is 1-based).
- `/ghostwriter:show` → interactive — print the same numbered table
as [`/ghostwriter:list`](list.md) and ask the user to pick one
by number or slug, one question per turn.
Resolution table:
| State | Action |
|---|---|
| File missing | Abort. Print: *"No profile at `agents/reference/ghostwriter/<slug>.md`. Run `/ghostwriter:list` to see what exists."* |
| File present, `fictional: true` | Print a one-line warning before rendering: *"⚠️ This is a package-side fixture, not a real-person profile."* Then render normally. |
| File present, real | Render (Step 2) |
### 2. Render
Print the profile as fenced sections in the user's language. Sections,
in order:
1. **Header** — name, slug, public-figure category.
2. **Identity** — `role_or_title`, `era`, source URLs as a bullet list,
`fetched_at`, `attestation_recorded_at`, `confidence`.
3. **Source provenance** — `count`, `last_fetched_at`, `types` (bullet
list), `verification`. If `verification: user-asserted`, prefix the
section header with `⚠️`.
4. **Style fingerprint** — `sentence_length_avg`, `vocab_register`,
`opener_patterns`, `closer_patterns`, `hashtag_rules`, `emoji_rules`,
`paragraph_cadence`.
5. **Free-form notes** — `style.free_form_notes` verbatim.
6. **Voice samples** — each sample as a fenced quote block with the
source URL underneath. Truncate samples > 200 words with `[…]` and
note the cap.
7. **Taboos** — bullet list.
8. **Body — `# Notes`** — the in-file Notes section, verbatim (may be
empty for fresh fetches).
### 3. Footer hints
After the rendered profile, print the available next actions:
```
Next:
/ghostwriter:write --as=<slug> # draft in this voice
/ghostwriter:fetch <slug> --force-refresh # rebuild from scratch
/ghostwriter:delete <slug> # hard-delete the file
```
### 4. Stale + user-asserted surface
If `last_fetched_at` is > 90 days old, append a one-line warning:
```
⚠️ Last fetched YYYY-MM-DD (>90 days). Consider /ghostwriter:fetch <slug> --force-refresh.
```
If `verification: user-asserted`, append:
```
⚠️ Profile is user-asserted (no host-fetched verification). Style fidelity may be lower.
```
Non-blocking.
## Rules
- **Read-only.** Do not modify, move, or write the file.
- **Do NOT commit, push, or open a PR.** No git ops.
- **Do NOT redact voice samples by topic.** The whole sample (capped at
200 words per `ghostwriter-schema`) is part of the schema contract;
partial rendering would mislead the consumer about the captured
style.
- **Do NOT auto-trigger a re-fetch on stale profiles.** Surface the
warning and let the user run `/ghostwriter:fetch <slug>
--force-refresh` explicitly.
- **Do NOT consume `personas/*.md` or `.agent-user.md`.** Wrong
primitive — those are not ghostwriters.
## See also
- [`/ghostwriter`](../ghostwriter.md) — parent cluster.
- [`/ghostwriter:list`](list.md) — index of profiles (use first to pick a slug).
- [`/ghostwriter:fetch`](fetch.md) — refresh path; `--force-refresh` rebuilds from scratch.
- [`/ghostwriter:delete`](delete.md) — hard-delete the profile.
- [`/ghostwriter:write`](write.md) — consume the rendered voice.
- [`ghostwriter-schema`](../../../docs/contracts/ghostwriter-schema.md) — field definitions used here.
No comments yet. Be the first to comment!