This skill should be used when the user asks to "write a module", "draft content", "write module 2", "start writing", "generate lab content", or "create the workshop content". It wraps showroom:create-lab and showroom:create-demo to generate Showroom AsciiDoc from approved module outlines.
npx claudepluginhub rhpds/rhdp-publishing-house-skillsThis skill uses the workspace's default tool permissions.
---
Guides Next.js Cache Components and Partial Prerendering (PPR): 'use cache' directives, cacheLife(), cacheTag(), revalidateTag() for caching, invalidation, static/dynamic optimization. Auto-activates on cacheComponents: true.
Processes PDFs: extracts text/tables/images, merges/splits/rotates pages, adds watermarks, creates/fills forms, encrypts/decrypts, OCRs scans. Activates on PDF mentions or output requests.
Share bugs, ideas, or general feedback.
You write Showroom content by wrapping existing showroom skills with Publishing House context. You do NOT write AsciiDoc directly — you invoke the appropriate showroom skill and provide it with the right inputs from the project's spec.
See @rhdp-publishing-house/skills/writer/references/writing-standards.md for writing standards.
publishing-house/manifest.yaml to understand project statewriting phase (or that approval is completed)project.type to determine content type (workshop or demo)project.autonomy for behavior modeCheck what the user requested:
--continue context. Complete one fully before starting the next.Never write modules in parallel. The showroom skill uses --continue <previous-module-path>
to maintain narrative continuity, and both nav.adoc and the manifest are updated after each
module. Concurrent writes would cause conflicts and break story flow.
Read lifecycle.phases.writing.modules from the manifest to find module status.
If the requested module is already drafted or approved:
Read the existing content file first. It may have been modified by a human since the writer agent last touched it. Present what exists:
"Module N has existing content at [file path]. It may have been modified since it was initially drafted. Would you like to:
- Continue from current content — add to or refine what's there
- Re-draft from scratch — regenerate from the module outline (overwrites current content)
- Move to the next pending module"
If the user chooses to continue, read the existing content and provide it as additional context to the showroom skill alongside the module outline. Preserve human edits.
If a prior module is still pending (not in order):
"Module [N-1] hasn't been written yet. Modules should be written in order for story continuity. Write Module [N-1] first, or proceed with Module N anyway?"
Read the module's outline file from publishing-house/spec/modules/.
The manifest's lifecycle.phases.writing.modules[N].name maps to the outline filename.
Module outlines are named module-NN-<title>.md (e.g., module-01-overview.md).
Read the full outline. Extract:
Also read publishing-house/spec/design.md for:
Based on project.type in the manifest:
project.type: workshop)Inform the user:
"Using
showroom:create-labto write Module N: [title]."
Invoke showroom:create-lab with:
content/ (or the Showroom content root if different)--new for the first module, --continue <previous-module-path> for subsequentThe showroom skill will ask its own follow-up questions. Answer them from the module outline and design spec. If the outline doesn't cover something the skill asks, ask the user.
project.type: demo)Inform the user:
"Using
showroom:create-demoto write Module N: [title]."
Invoke showroom:create-demo with:
content/--new for first module, --continue <previous-module-path> for subsequentAfter the showroom skill finishes generating content:
content/modules/ROOT/pages/content/modules/ROOT/nav.adoc includes the new module{attribute} placeholdersScreenshot placeholders: If the generated content contains screenshot placeholders (e.g., image::screenshot-name.png[] with placeholder alt text), note them in the report-back and offer automation:
"Module N contains [N] screenshot placeholder(s). Once you have a running environment, I can capture them automatically with Playwright. Let me know when your environment is up."
Update the module's status in lifecycle.phases.writing.modules:
writing:
modules:
- name: "Module 1: [Title]"
status: drafted
content_file: content/modules/ROOT/pages/03-module-01-title.adoc
Add the content file path so the editor agent knows where to find it.
Do not change lifecycle.phases.writing.status or lifecycle.current_phase.
Phase-level transitions are managed by the orchestrator.
After updating the manifest, inform the user:
"Module N: [Title] — drafted. Content:
content/modules/ROOT/pages/[filename][If outline sections were missed: "Note: The following outline sections were not fully covered: [list]. Consider revising or flagging for the editor."]
Next pending module: Module [N+1] — or say 'edit' to start technical editing."
When the user requests "write conclusion" or all modules are drafted:
drafted or approved statuspending, inform the user and do not proceed0X-conclusion.adoc that consolidates references
and learning outcomes from all modulesdraftedsite.yml, ui-config.yml, antora.yml on first invocation