From crazy-professor
Divergence generator. Produces 10 unhinged provocations for any topic using random archetype + random provocation word + random PO operator (De Bono's Provocation Operation). Four voices: first-principles-jester, labyrinth-librarian, systems-alchemist, radagast-brown (a warm, forest- dwelling caretaker archetype that asks what needs shelter rather than optimization). Output is never advice, always a deliberately strange nudge away from the obvious. Use when feeling stuck, when the first idea feels too normal, when a feature needs a weirder starting point, when a brainstorm needs a destabilizer, or when a plan feels like it converged too fast. Trigger phrases: "crazy professor", "provoke me", "break my thinking", "give me weird ideas", "divergence", "shake this up", "destabilize", "unstick me", "too normal", "weirder starting point", "unhinged thinker", "nudge away from obvious", "radagast", "radagast der braune", "cozy provocation", "gentler nudge", "waldhaft". Chat-Mode (`--chat` flag, since v0.5.0): four archetypes in 3-round distilled dialog producing curated 20-idea output (5 per archetype) with Codex-based scoring. Lab (`--lab` flag, since v0.13.0): opens a static review browser for triaging existing outputs. Since v0.14.0: wildness dial (`--dial 0-100`, default 60) steers the wild/tame cost mix; every single-run extracts 3 transferable concepts between provocations and experiment; harvest mode (`--harvest`) triages pending runs and lands kept experiments into the user's TODO system. Duet (`--duet [a,b]` flag, since v0.15.0): two archetypes cross-pollinate in ~4 LLM calls (no Codex) and distill to 6 ideas — the mid-tier between single-run and chat; without an explicit pair the picker derives a max-tension diagonal.
How this skill is triggered — by the user, by Claude, or both
Slash command
/crazy-professor:crazy-professorThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Divergence generator for creative ideation. Not an advisor. Not a
lab/index.htmlprompt-templates/chat-curator.mdprompt-templates/chat-round-1-wrapper.mdprompt-templates/chat-round-2-wrapper.mdprompt-templates/first-principles-jester.mdprompt-templates/labyrinth-librarian.mdprompt-templates/radagast-brown.mdprompt-templates/systems-alchemist.mdreferences/hard-rules.mdreferences/operating-instructions.mdreferences/roadmap.mdresources/chat-output-template.mdresources/duet-output-template.mdresources/field-notes-schema.mdresources/output-template.mdresources/po-operators.mdresources/provocation-words.txtresources/retired-words.txtscripts/picker.pyDivergence generator for creative ideation. Not an advisor. Not a coach. A deliberately unhinged thinker whose only job is to produce strange but anchored provocations the user would not have reached on their own.
The plugin catalog enforces English trigger phrases in YAML frontmatter. The user works primarily in German. The following German phrases should also activate this skill:
"verrueckter professor", "professor", "spinn herum", "bring mich raus aus der spur", "gib mir wilde ideen", "steck mich fest", "ideen ausbrechen", "wilde provokationen", "das ist zu normal", "brauche was verdrehtes", "zu gerade gedacht", "stoss mich an".
| Trigger | Mode | Output |
|---|---|---|
/crazy <topic> | Single-Run (default, ~30s, 1 LLM call) | 10 provocations + 3 extracted concepts + 1 next experiment |
/crazy <topic> --dial <0-100> | Single-Run with wildness dial (default 60) | Same, with dial-steered wild/tame cost mix |
/crazy <topic> --duet [a,b] | Duet-Mode (~1 min, ~4 LLM calls, no Codex) | Two voices cross-pollinate → 6 distilled ideas + 1 next experiment |
/crazy <topic> --chat | Chat-Mode (~2-4 min, ~10 LLM calls + Codex) | 4×5 distilled ideas + Top-3 + 1 next experiment |
/crazy --lab | Lab (browser-only, no LLM) | Static review surface for an existing output |
/crazy --harvest | Harvest (dialog, no generation) | Verdicts for pending runs + kept experiments landed in TODO system |
The full step-by-step (Steps 1-5 single, C1-C6 chat, D1-D5 duet, L1
lab, H1-H4 harvest, plus the topic-resolution contract) lives in
<repo-root>/skills/crazy-professor/references/operating-instructions.md.
Load that file before generating any output.
The full Hard Rules block (output-is-never-advice, warning-banner,
goal-respect, anchor-or-it-doesnt-count, exactly-one-experiment,
no-cross-archetype-contamination, cost-mix-corridor,
concepts-are-movement-material), plus Museum-Clause, Chat-Mode
Museum-Clause, Field-Test-Rule, Harvest Rules, Radagast-Activation
status, and Review Rubric, lives in
<repo-root>/skills/crazy-professor/references/hard-rules.md. Load
that file before generating any output.
| Archetype | Purpose | Voice |
|---|---|---|
first-principles-jester | Illegalizes conventions. Breaks down a habit into atoms, declares one atom illegal, rebuilds. | Naive, playful, never cynical. |
labyrinth-librarian | Imports mechanisms from distant fields. Opens in mykology/meteorology/ornithology/architecture, translates the mechanism back. | Quiet, learned, never pedantic. |
systems-alchemist | Rewires flows. Maps the topic as input/output/overflow/leak/wall and re-routes one element. | Precise, observational, like a process engineer drawing a flow diagram. |
radagast-brown | Protects the useful-uselessness. Asks what needs care, shelter, slowness — defends a part of the system against optimization. | Softly distracted but never dumb. Speaks in living creatures and natural time. |
See the four files in
<repo-root>/skills/crazy-professor/prompt-templates/ for full voice
rules and verbotenes Vokabular per archetype. The radagast-brown.md
template additionally carries the Activation Amendments (binding
conditions for Radagast outputs since 2026-04-23).
Single Python helper, stdlib-only:
picker.py — deterministic stochastic-element selection with
built-in variation-guard. Reads field-notes.md, the active word
pool, and the retired list. Writes JSON to stdout. Modes: --mode single (default), --mode chat, --mode duet (with optional
--pair a,b). --dial 0-100 (default 60) maps
to a cost_mix_target (wild/tame over 10 provocations) and weights
the operator pick. The skill's only required external call. If
Python is unavailable, prose fallback in
operating-instructions.md Step 2.All file paths in this SKILL.md, in references/, and in
commands/crazy.md are written relative to the plugin repo root
(<repo-root> = crazy-professor/). This makes them resolvable
regardless of which file the reader is currently in.
crazy-professor/ (repo root = plugin root)
|-- .claude-plugin/
| |-- marketplace.json
| \-- plugin.json
|-- commands/
| \-- crazy.md (/crazy slash command)
|-- docs/
| |-- PROJECT.md, CAPABILITIES.md, ARCHITECTURE.md, CHANGELOG.md
| |-- chat-mode-flow.md (canonical flow spec)
| |-- VERSIONING.md
| |-- plans/ (master plans + historical phase plans)
| \-- specs/ (active specs only)
\-- skills/
\-- crazy-professor/
|-- SKILL.md (this file, ~125 lines)
|-- prompt-templates/
| |-- first-principles-jester.md
| |-- labyrinth-librarian.md
| |-- systems-alchemist.md
| |-- radagast-brown.md (with Activation Amendments)
| |-- chat-round-1-wrapper.md
| |-- chat-round-2-wrapper.md
| \-- chat-curator.md
|-- references/ (load-on-demand)
| |-- operating-instructions.md (Steps 1-5, C1-C6, L1)
| |-- hard-rules.md
| \-- roadmap.md
|-- resources/
| |-- provocation-words.txt
| |-- retired-words.txt
| |-- po-operators.md
| |-- field-notes-schema.md
| |-- output-template.md
| \-- chat-output-template.md
|-- lab/
| \-- index.html (static review surface, browser-only)
\-- scripts/
\-- picker.py (the only helper script)
Single + Chat outputs land in the target project's .agent-memory/
(not the plugin repo):
.agent-memory/lab/crazy-professor/
|-- field-notes.md (one line per run, single+chat mixed)
|-- experiments-backlog.md (harvest fallback target for kept experiments)
|-- YYYY-MM-DD-HHMM-<topic-slug>.md (single-run output)
\-- chat/
\-- YYYY-MM-DD-HHMM-<topic-slug>.md (chat-mode output)
The Phase 4-8 subsystems (telemetry, patch-suggester, run-planner,
voice/word-pool/cross-pollination linters, eval-suite, telegram
dialogue scaffold, browser playground, ideation-lab v2 design) were
rolled back on 2026-05-02. Reason: 18 runs total, 0 telemetry records,
0 patch suggestions, 0 telegram dialogues — Phase 4-8 was built before
Phase 1-3 produced a data stream that could justify it. See
<repo-root>/docs/CHANGELOG.md v0.13.0 entry.
If something from those subsystems is later needed: git history is
the archive (git show <commit>:<path> to retrieve).
Provides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.
npx claudepluginhub dynamic-dome/crazy-professor --plugin crazy-professor