Install
$ agentstack add skill-dreamaker-ta-unprompted-unprompted ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Unprompted
Reads ~/.claude/projects and ~/.codex/sessions, runs a purely statistical analysis, and writes a self-contained HTML report to the user's machine.
The insight is comparative, not a score: the same person is measurably a different collaborator on different projects. The report contrasts two poles (project × day), names what is conspicuously absent, and points at moments that contradict each other.
On top of the report sits one playful layer: persona compresses the same measured rates into a four-letter MBTI-style AI-use type — a parody that says so — and you turn it into a write-up and a bespoke HTML card.
Run it
node bin/unprompted.mjs scan # pass 1: what's there. No analysis.
node bin/unprompted.mjs report # pass 2: analyze + write HTML
node bin/unprompted.mjs persona # same corpus, one four-letter parody type
bin/unprompted.mjs sits next to this file. Node ≥ 20.19, zero dependencies — nothing to install. If a relative path fails, use the absolute skill directory (commonly ~/.claude/skills/unprompted/bin/unprompted.mjs, or ~/.agents/skills/unprompted/bin/unprompted.mjs under Codex).
Workflow
- Scan first. Run
scanand show the user the project list and counts.
They should recognize themselves in the numbers before anything is analyzed — if the row for their main project says 12 utterances, something is wrong with the read, not with them.
- Settle the scope before analyzing. If the user already named a project —
or clearly asked for everything — respect that and don't re-ask. Otherwise ask exactly one question: analyze all projects, or one specific project? Offer the scanned project names (top few by utterance count) as the choices. Project names are last path segments like TextBook; match what the user says against the scan list case-insensitively and by substring, and if it's ambiguous, show the candidates instead of guessing. Whatever they pick, carry the same --project / --from / --to flags through every command that follows.
- Report. Run
report --opento write the HTML and open it in their
browser. Relay the digest that the command prints.
- Persona. Run
personawith the same scope flags. Then retell it in the
conversation's language (see Language below): keep the four-letter code as printed, translate the type name and essence faithfully, and make the write-up genuinely fun — but every claim must point at a number from the command's output. The letters are nicknames for measured rates; say so in the write-up. A flat axis is told as "no signal", never as a trait. insufficient gets the same honesty as an empty report: not enough to type, full stop — don't pad it.
- The persona card. When the user wants the persona (they asked for it, or
said yes to the offer), hand-write a bespoke self-contained HTML card and save it to ~/.unprompted/persona-.html, then offer to open it. Design it fresh every run — palette, motif and layout keyed to the type and its numbers, so no two people (and no two scopes) get the same card. Hard constraints, restated in references/persona.md:
- Self-contained like the report: everything inline, no CDN, no web fonts,
no remote images, no ``. It must render complete offline.
- Contents are the persona only: the code, translated name and essence, the
four axes with their real percentages and rates, your narrative lines. Nothing else from the sessions — no verbatim quotes, no timestamps, no file paths, no session IDs.
- Written in the conversation's language.
- Read the tier honestly.
full/noPoles/sparse/emptyare all
valid outcomes. empty is not an error — say plainly that there wasn't enough to work with and stop. Do not pad a thin report into a thick one.
- Naming is opt-in. Only if the user asks for LLM-generated names: run
naming-payload, show them the exact JSON, and send it only after they say yes. Details in references/naming.md.
Language
Adapt to the conversation, not to the tool. The CLI prints English labels and numbers; everything you produce on top of it — the digest retelling, the persona write-up, the persona card — is written in the language the user is speaking with you. English question → English write-up and English card; Chinese question → Chinese write-up and Chinese card; any other language → translate the type name and essence faithfully instead of inventing a new archetype. The four-letter code, dimension ids and numbers stay exactly as printed.
Rules you must honor
- Quotes stay in the file.
reportdeliberately prints no verbatim
utterances. The HTML is local; your context is not. Pass --quotes N only when the user asks you to discuss specific things they said. persona prints no quotes at all, by construction.
- Never put an API key in a flag or in a file.
namereads
UNPROMPTED_API_KEY or OPENAI_API_KEY from the environment and refuses without --confirm. Do not work around either guard.
- Don't copy session data anywhere. No summaries into repo files, no
pasting ~/.claude contents into the conversation. The user's history stays where it is. The persona card carries only what persona printed.
- Report what the analysis found, not what would be flattering. The tone is
observational and specific. The core report is not a personality test, not a diagnosis, and not therapy language. If the user asks "is this bad", the honest answer is that it's a description of behavior, not a verdict on them.
- The persona is a parody and says so. It compresses real measured rates
into four letters for fun. Present it with its numbers, never as psychology, never as an assessment of ability or character. If the user asks whether to take it seriously: the numbers are real, the letters are a costume.
- Some content is filtered out before analysis and its removal is never
quantified in the report. That is intentional. Don't reconstruct or report on what was filtered.
Command reference
| Command | What it does | | --- | --- | | scan | Project list, utterance counts, date ranges, dropped-by-rule counts. | | report | Analyze and write the HTML. --open, --out , --no-html, --quiet, --json, --quotes N. | | persona | Four measured axes → one four-letter parody type. Numbers only, no quotes. --json. | | naming-payload | Print the exact bytes naming would send. Sends nothing. | | name | Send one naming request. Needs --confirm and an env key. |
Scope flags for report / persona / naming-payload: --project (repeatable), --from , --to , --exclude-recent-days. Source overrides: --claude-dir, --codex-dir, --tz-offset .
node bin/unprompted.mjs --help prints all of it.
Reference
references/report-tiers.md— what each of the four tiers contains, and how
to talk about a degraded one.
references/dimensions.md— what the measured dimensions mean, so you can
explain a gap without inventing a mechanism for it.
references/persona.md— the persona axes, the sixteen types, the card
constraints, and the tone rules for the parody layer.
references/naming.md— the opt-in LLM naming flow and its guarantees.references/privacy.md— what is read, what leaves the machine, what never does.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: Dreamaker-TA
- Source: Dreamaker-TA/unprompted
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.