From claude-resources
Converts conversation context into zpaper blog articles via zpaper-writer subagent. Gathers topics, trials, code, images; anonymizes sensitive info; preserves verbatim dialogue with --conversation. Explicit triggers only.
npx claudepluginhub takazudo/claude-resourcesThis skill uses the workspace's default tool permissions.
Convert the current conversation into a zpaper blog article by crafting a detailed writing brief and delegating to the `zpaper-writer` subagent.
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.
Guides building MCP servers enabling LLMs to interact with external services via tools. Covers best practices, TypeScript/Node (MCP SDK), Python (FastMCP).
Share bugs, ideas, or general feedback.
Convert the current conversation into a zpaper blog article by crafting a detailed writing brief and delegating to the zpaper-writer subagent.
--conversationWhen $ARGUMENTS contains --conversation, the article must preserve the actual
conversation as-is. This means:
NEVER summarize the conversation. Reproduce the actual dialogue flow faithfully.
Keep casual utterances. Words like 「なるほど」「ふーん」「どう思う?」「OK」
「hum...」are meaningful conversational texture — they make the article sound natural and human. Removing them makes it look AI-auto-written.
Minimal rewriting only. Typo fixes and light formatting are OK. Do NOT
restructure, condense, or rephrase the user's words beyond that.
PRESERVE THE ORIGINAL LANGUAGE. DO NOT TRANSLATE. This is critical. If the
conversation was in English, keep it in English. If it was in Japanese, keep it
in Japanese. If it was mixed, keep both languages as-is. Translating the
conversation to Japanese destroys the original text — it is a total loss of the
source material the user wanted to preserve. The whole point of --conversation
is to capture the raw dialogue, and translation defeats that purpose. The
surrounding frontmatter title and any minimal scaffolding headings MAY be in
Japanese, but the conversation body itself must remain in its original language.
Include the brief in the writing prompt with explicit instruction:
"This is a conversation-style article with --conversation mode. Preserve the
dialogue verbatim IN THE ORIGINAL LANGUAGE. Only fix typos and apply vocabulary
rules. Do NOT summarize, restructure, or translate. If the conversation is in
English, the article body must remain in English."
Review the conversation history and identify:
Before crafting the writing brief, scan the gathered context for client-identifying information:
acme-corp, some-client)some-project, SomeComponent)Exception: Takazudo's personal projects and Takazudo Modular are public — keep them as-is.
If images were provided in the conversation (attached screenshots, diagrams, etc.):
Determine the article slug from the topic (e.g., 20260209-package-json-organization)
Create the image directory in the zpaper repo:
mkdir -p $HOME/repos/w/zpaper/doc/public/img/articles/YYYYMMDD-slug/
Copy each image to that directory with a descriptive filename:
cp /path/to/source/image.png $HOME/repos/w/zpaper/doc/public/img/articles/YYYYMMDD-slug/descriptive-name.png
Record the image paths for the writing brief. The markdown reference format is:

Create a detailed, self-contained prompt that the writer subagent can use without any conversation context. The brief must include:
doc/src/content/docs/overview/tags.md.The brief must not contain any client-identifying information. All confidential details should have been purged in Step 1.3.
The brief should be written so that someone with zero context could write the full article from it alone.
Use the Agent tool to spawn the zpaper-writer subagent with run_in_background: true so the user is not blocked during writing:
Agent tool:
subagent_type: zpaper-writer
run_in_background: true
prompt: [the detailed writing brief from Step 2]
The subagent will:
--conversation is specified)sidebar_position using the formula 999999999999 - YYYYMMDDHHMM (ensures newest articles appear first)doc/src/content/docs/articles/)After the subagent completes, report:
/convert-to-article when ready to publish to the blog/convert-to-article