From daydream-dictation
Voice-driven document authoring using the Daydream Dictation workflow. Activates when the user is dictating design documents, mentions a Daydream project, refers to Prompts documents or dd-current-dictation-project, or starts a dictation session.
How this skill is triggered — by the user, by Claude, or both
Slash command
/daydream-dictation:daydream-dictationThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
This skill covers voice parsing, prompt logging, commit discipline, and project initialization. The agent's job is to create well structured documents that capture everything that user has expressed.
This skill covers voice parsing, prompt logging, commit discipline, and project initialization. The agent's job is to create well structured documents that capture everything that user has expressed.
If the user asks questions about the process itself — "what is Phase 1?", "how does this work?", "what should I do next?" — activate the /dd-teach skill to handle the explanation.
Phase 1 — Structured Daydreaming. The user talks out loud about their idea for 20–60 minutes. They don't edit, don't review, and don't look at what the agent is writing. The agent captures everything and organizes it into the document as the user speaks. The agent is free to ask clarifying questions or make suggestions, but recognize that the user won't be back to answer them until much later. Flag open items inline and keep going. Write notes about uncertain factors and plan to return to them later when a decision is made or an inference is confirmed.
Phase 2 — Response and Agent Engagement. The user engages with the agent's replies from Phase 1, top to bottom. They answer questions, fill in gaps, and add anything that comes up. When the user has caught up on all the agent responses, the agent should suggest running /dd-gap-analysis and facilitate that if the user agrees, or the user might suggest this themselves unprompted.
Phase 3 — Diff Review. The user opens the pull request and reads the actual diff. They leave inline comments with feedback or talk to the agent directly; the agent addresses review comments and new prompts, commiting additional changes to the same pull request. Because every prompt is also recorded in each commit, the user has a record of what dictation caused which changes. When satisfied, the user approves and merges.
When the user tells you which project to work on:
dd_switch_project.py with the project slug or name. This sets dd-current-dictation-project and verifies the project files exist. Do this as your very first action.
python3 ${CLAUDE_PLUGIN_ROOT}/scripts/dd_switch_project.py "ProjectSlug"
For new projects, use dd_init_project.py instead (it switches automatically after creation)..claude/ (e.g., .claude/dd-voice-variants.md). If found, familiarize yourself with the substitutions so you can apply them throughout the session. See ${CLAUDE_SKILL_DIR}/example-voice-variants.md for the expected format.dd-current-dictation-project State FileA plain text file at the repo root containing the absolute path to the currently active project folder. Not tracked by git (should be listed in .gitignore).
The UserPromptSubmit hook reads this folder path and dynamically finds the Prompts file inside it, where it appends the raw text prompt. The raw prompts are very useful in phase 3 in particular.
The file is not automatically cleared between sessions — it persists. Always update it with the script when the user names a project they want to work on.
Important: Automating this with SessionStart hook-based clearing has been tried but it causes sessions to hang on startup. Stop/SessionEnd hooks clear too aggressively (after every response). We may revisit improving this script to clear on session end in the future.
/daydream-dictationAliases: /daydream-dictation, /dictate-daydream
Runs the session-start workflow:
.claude/dd-voice-variants.md if presentdd_init_project.py to create itdd_switch_project.py to set the active project (skip if dd_init_project.py just ran — it switches automatically)With argument: /daydream-dictation "My New Project" — if the project exists, start it; if not, create it first via the script.
Prompts are typically raw voice transcriptions. Parse them as speech, not text:
The user is in a creative flow state and will not be reading the agent's responses. The agent's job:
TODO-<Slug>.md<!-- clarify: did the user mean X or Y? --> so it surfaces in Phase 2The user is now reading the agent's responses from Phase 1 and engaging interactively. The dynamic shifts from monologue to conversation. The user usually starts from the oldest response first and works down, so responses will still be overlapping.
<!-- clarify: ... -->)TODO-<Slug>.md and remove inline markers/dd-gap-analysis. Don't push — the user may want to add more firstThe user is reviewing the pull request diff. They may leave inline comments on the PR, talk to the agent directly, or both.
Every project has a companion Prompts document (Prompts-<Slug>.md) that logs every prompt used during sessions. This is a permanent record.
Prompts-ddMetadiscussion — the hook fires before you set dd-current-dictation-project, so the first prompt of any session is logged there. This is correct and intentional. Do not move it into the project's Prompts document.If prompts were not captured automatically, add them manually in order. Use the conversation history to reconstruct exact wording. Number sequentially from the last captured entry. Commit with a note that entries were backfilled. Immediately notify the user that something is wrong with the prompt logging. If hook failures persist across sessions, suggest reporting it as a bug on the skill's GitHub repo.
Sometimes two sessions will attempt to use the same number and merging the prompts file becomes difficult. How you resolve this isn't particularly important as long as none of the prompts are lost. If you can tell which prompts came before the others, go ahead and try to put them first, but it's no sweat if the numbering doesn't exactly match chronologically. Try to deduplicate prompt numbers if you can, but how you fix it (57/57 becomes 57/58, or 57/57 becomes 57a/57b) should use your best judgement. Don't try to make two Prompts files for the same project.
The Daydream document is the root artifact of an entire design or creative endeavor. It captures all the central ideas, summarizes everything that is essential about the design, and references other documents that contain specialized knowledge. In order to work on any part of the project, everything in the Daydream document should be understood.
The Daydream document doesn't need every piece of information about the design in it. Plenty can be kept in companion documents — translations in a string table, large datasets in a CSV, detailed technical decisions in the Decision Trace. The Daydream document should focus on desired outcomes, not implementation details. Decisions about frameworks, specific vendors, or which toolkit performs best shouldn't be in the Daydream document. Those decisions should be recorded, but not in the core Daydream document.
The TODO document (TODO-<Slug>.md) tracks outstanding work that comes up during dictation, responses, or review. Each item should have a status and should be marked complete when finished. The TODO document is the canonical list — inline references in the Daydream doc or other files are just pointers back here.
Here's an example format that includes a source of when the TODO came up:
## Pending
- [ ] Define the networking protocol for multiplayer sessions *(Phase 1 dictation)*
- [ ] Decide on a save file format — binary vs JSON vs SQLite *(gap analysis Q4)*
- [ ] Add error handling for when the server is unreachable *(PR #3 review)*
## Complete
- [x] Write the initial project overview *(Phase 1 dictation)*
- [x] Document the three core gameplay loops *(Phase 1 dictation)*
Always use dd_init_project.py — never manually create project files.
python3 ${CLAUDE_SKILL_DIR}/../../scripts/dd_init_project.py "Project Name"
python3 ${CLAUDE_SKILL_DIR}/../../scripts/dd_init_project.py --project-root /path "Project Name"
The script creates <Slug>/Daydream-<Slug>.md, TODO-<Slug>.md, Prompts-<Slug>.md, sets dd-current-dictation-project, and commits.
If the folder already exists, don't re-run the script — use dd_switch_project.py to set the active project. It verifies that the expected files exist.
Project root resolution: CLI --project-root → .claude/dd-projects-root file → repo root.
By default, project folders are created at the repo root. If a user wants all Daydream projects in a subdirectory (e.g., docs/ or design/), they can create .claude/dd-projects-root containing the absolute path to that directory. This is useful for repos where the root is cluttered or where design documents belong in a specific subtree. The file is a single line — just the path, no other syntax.
dd-current-dictation-project points to nonexistent folder → run dd_switch_project.py with the correct slugDaydream-<Slug>.md or TODO-<Slug>.md missing → create missing files manually with matching header formatDesignDoc-<Slug>.mdexists, but Daydream-<Slug>.md does not → This is an old naming convention, update the filename to Daydream-<Slug>.md. Make a pull request with just the rename in it.DesignDoc-<Slug>exists, but Daydream-<Slug>.md does not → This is an old naming convention, update the filename to Daydream-<Slug>.md. Make a pull request with just the rename in it.TechDesign-<Slug>.md or TDD-<Slug>.md exists → This is an old naming convention, rename to DecisionTrace-<Slug>.md. Make a pull request with just the rename in it.If the user is done working on a specific project, you can clear the active project with the switch project script:
python3 ${CLAUDE_PLUGIN_ROOT}/scripts/dd_switch_project.py --clear
Prompts will then log to Prompts-ddMetadiscussion at the repo root.
**[Item N — not yet documented]****Name** *(working name)*TODO-<Slug>.md (canonical list). May be referenced inline where contextually useful, but their official status is tracked in the TODO-<SLUG>.md.CLAUDE.md inside the project folder (e.g., Campfire/CLAUDE.md). Use this for project-specific rules like localization requirements.These are not created by dd_init_project.py — create them when a project needs them.
DecisionTrace-<Slug>.md — Decision trace maintained by the implementing agent. Records technical choices (technologies, architecture, tradeoffs) that were made in order to execute on the design doc's goals. The Decision Trace should also document which options were NOT chosen and why (pros and cons are helpful, any dealbreakers). Dated entries under topical sections. Also defines testing instrumentation and the integration test suite. The implementing agent should not edit the main design document, but should update the Decision Trace to record technical choices. If the two documents disagree, the design doc wins. Figure out a new answer to the decision that meets the Daydream requirements and update the Decision Trace and implementation with the new decision. Decision Trace choices are not set in stone, if requirements change, the agent should discuss changing the Decision Trace choices if they no longer fit, and keep them up to date.StringTable-<Slug>.md — User-facing strings with translations, organized by string key. When a new string is added to the design, its translations go in the string table in the same commit.DebugTools-<Slug>.md — Debug commands, cheat codes, test shortcuts — anything that won't ship in the final version. Keeps debug-only features out of the main design doc.When the user says to switch projects:
dd_switch_project.py with the new project's slug — this is your first action
python3 ${CLAUDE_PLUGIN_ROOT}/scripts/dd_switch_project.py "NewProjectSlug"
When the user says "address the comments on the PR" or similar:
Version control is required. The diff review phase depends on being able to see before/after. If the user doesn't have VCS set up, walk them through setting up Git before proceeding.
git — full support; first-class defaulthg — Mercurialperforce (alias: p4) — Perforceunity-vcs (alias: plastic) — Unity Version Control / Plastic SCMcustom — unsupported VCS; manage checkpoints conversationally.claude/dd-vcs file — user-supplied override.git/ → git; .hg/ → hg; .plastic/ → unity-vcs; .p4config or P4CONFIG env var → perforcedd- Naming PrefixAny file or artifact that lives outside a project folder and is part of the Daydream Dictation system must be prefixed with dd-. This distinguishes skill infrastructure from the user's work.
Exception: Prompts-ddMetadiscussion — the Prompts- prefix wins because its identity is as a Prompts document first.
npx claudepluginhub ecnassianer/daydream-dictation --plugin daydream-dictationMulti-project Manus-style planning with coordinator pattern. Supports project switching, separate planning/source paths, and cross-machine sync via git. Creates task_plan.md, findings.md, and progress.md.
Manages TASKS.md, CREATOR.md, and creator-memory/ files for task tracking and persistent context in creative projects. Automatically captures tasks from conversation, supports session start checklists, and weekly maintenance.
Persists task plans, findings, and progress as markdown files so work survives context loss and /clear. Use for multi-step projects or tasks requiring 5+ tool calls.