| Unified voice content generation pipeline with mandatory validation and HOOK-GATE, VALIDATE, REFINE, VARIETY-GATE, JOY-CHECK, ANTI-AI, CLOSE-GATE, OUTPUT, CLEANUP. Use when writing articles, blog posts, or any content that uses a voice profile. Use for "write article", "blog post", "write in voice", "generate content", "draft article", "write about".
npx skills add https://github.com/notque/vexjoy-agent --skill voice-writer
> Mandatory enforcement: This pipeline is REQUIRED for all voice-profiled content. No article should be published without passing all 13 phase gates.
LOAD → GROUND → STATS-CHECKPOINT → GENERATE → HOOK-GATE → VALIDATE → REFINE → VARIETY-GATE → JOY-CHECK → ANTI-AI → CLOSE-GATE → OUTPUT → CLEANUP
Each phase runs as a SEPARATE agent dispatch. The orchestrator (parent session) dispatches one agent per phase sequentially. Each agent:
No single agent runs multiple phases. This ensures each phase gets a fresh context window with the full voice profile loaded, preventing context drift and ensuring the voice is the primary authority at every step. An orchestrator that attempts to combine phases or skip agent dispatches is violating this rule.
Phase artifacts are files on disk, not context passed between agents. Each phase reads and writes to well-known paths:
| Phase | Input Artifact | Output Artifact |
|-------|---------------|-----------------|
| 1. LOAD | User request + existing draft (if any) | .voice-phase/01-load.json (profile metadata, paths) |
| 2. GROUND | .voice-phase/01-load.json + source material | .voice-phase/02-grounding.md |
| 3. STATS-CHECKPOINT | .voice-phase/01-load.json | .voice-phase/03-stats-baseline.json |
| 4. GENERATE | .voice-phase/02-grounding.md + stats baseline | .voice-phase/04-draft.md |
| 5. HOOK-GATE | .voice-phase/04-draft.md | .voice-phase/05-hook-score.json + updated draft |
| 6. VALIDATE | .voice-phase/04-draft.md (or updated) | .voice-phase/06-validation-report.json |
| 7. REFINE | Draft + .voice-phase/06-validation-report.json | .voice-phase/07-refined-draft.md |
| 8. VARIETY-GATE | .voice-phase/07-refined-draft.md | .voice-phase/08-variety-score.json + updated draft |
| 9. JOY-CHECK | Latest draft | .voice-phase/09-joy-report.json + updated draft |
| 10. ANTI-AI | Latest draft | .voice-phase/10-antiai-report.json + updated draft |
| 11. CLOSE-GATE | Latest draft | .voice-phase/11-close-score.json + updated draft |
| 12. OUTPUT | Latest draft + all reports | Final file in content/posts/ + .voice-pipeline-complete |
| 13. CLEANUP | All .voice-phase/ artifacts | Summary report (artifacts cleaned up) |
The orchestrator creates .voice-phase/ directory at the start and each agent writes its artifact there. Phase N agent MUST verify Phase N-1 artifact exists before starting.
Every phase agent prompt MUST include:
/home/feedgen/.claude/skills/{voice_profile}/skill/SKILL.md"/home/feedgen/.claude/skills/{voice_profile}/references/samples/"profile.json at /home/feedgen/.claude/skills/{voice_profile}/profile.json".voice-phase/NN-name.ext"Where {voice_profile} is the voice skill selected in Phase 1 (e.g., voice-myprofile, voice-myvoice).
Environment: The orchestrator sets VOICE_WRITER_ACTIVE=1 before dispatching any phase agent. This allows the pipeline-phase-gate hook to permit writes to content/posts/.
Goal: Load the correct voice profile and all reference materials.
Steps:
export VOICE_WRITER_ACTIVE=1 (allows pipeline-phase-gate to permit writes during pipeline execution)voice-* skill in ~/.claude/skills/ — run ls ~/.claude/skills/ | grep voice- to see available profilesprofile.json and all files under references/CLAUDE.md for structural conventions (front matter template, slug rules, tags)Gate: Voice profile loaded and confirmed. Profile name echoed back. Proceed.
Goal: Anchor the article in lived experience, not abstraction.
Steps:
Gate: Grounding document exists with: problem statement, personal experience, concrete details, single insight. All must be specific, not abstract.
Goal: Establish baseline metrics for the voice profile to validate against later.
Steps:
Gate: Metrics targets recorded. Baseline established. Proceed.
Goal: Produce the first complete draft using the loaded voice profile.
Steps:
Gate: Complete draft exists with front matter, body, and closing. Draft is in the target voice. Proceed.
Goal: Ensure the opening paragraph arrests attention with specificity.
Steps:
Gate: Hook score >= 8. If < 8, rewrite and re-score. Max 3 attempts. If still < 8 after 3 attempts, flag for human review but proceed.
Goal: Verify the draft matches the voice profile's statistical fingerprint.
Steps:
voice-validator skillGate: All metrics within acceptable range OR deviations documented with justification. No banned patterns present.
Goal: Fix validation failures and polish prose quality.
Steps:
Gate: All previously failed metrics now pass. Prose reads naturally. Proceed.
Goal: Ensure sentence and paragraph rhythm creates natural reading texture.
Steps:
Gate: All three sentence clusters >= 15%. Every paragraph is 3 sentences or fewer (no walls of text), with at least 1 single-sentence paragraph per 500 words. Variety score (stddev of sentence lengths) >= 8.0. If any check fails, rewrite and re-measure. Max 3 attempts.
Goal: Verify the article frames its content on the joy side, not the grievance side.
Steps:
joy-check skillGate: Joy-check passes. Article is on the joy side of the spectrum.
Goal: Strip all AI-sounding patterns from the content.
Steps:
~/.claude/skills/ from ~/private-skills when installed)CRITICAL: Voice profile overrides anti-AI rules. When the anti-AI editor flags
a pattern that exists in the selected voice profile's corpus (writing samples, phrase bank,
or signature patterns), the voice profile wins. The anti-AI editor removes generic
AI patterns. It does NOT remove patterns that are documented in the voice profile
as authentic human writing, even if those patterns overlap with common AI tells.
Examples of voice-authentic patterns the anti-AI editor should preserve (do not remove):
Gate: Anti-AI editor passes. Zero AI-flagged patterns remain. Voice-authentic patterns preserved.
Goal: Ensure the closing avoids formulaic patterns and uses an authentic voice-profiled ending.
Steps:
Gate: Closing uses a pattern other than the lazy uncertainty default. Closing score >= 7. No summary, no callback, no grand statement. If < 7, rewrite using a different closing mode and re-score. Max 3 attempts.
Goal: Produce the final deliverable.
Steps:
YYYY-MM-DD-slug.mdcontent/posts/Write .voice-pipeline-complete in the project root with JSON:
{
"pipeline": "voice-writer",
"completed_at": "<ISO timestamp>",
"target_file": "<relative path to the content/posts/ file>",
"phases_passed": ["LOAD", "GROUND", "STATS-CHECKPOINT", "GENERATE", "HOOK-GATE", "VALIDATE", "REFINE", "VARIETY-GATE", "JOY-CHECK", "ANTI-AI", "CLOSE-GATE", "OUTPUT", "CLEANUP"]
}
Gate: File written. All scores reported. Pipeline marker written. User can review.
Goal: Clear working state and summarize.
Steps:
http://<IP>:1313/posts/<slug-without-date>/Gate: Summary delivered. Pipeline complete.
Extract cognitive patterns and thinking fingerprints from any text. Use this skill when the user wants to analyze how someone thinks, understand cognitive style, profile writing or speech patterns, compare thinking styles between people, asks "what's my thinking style", "analyze how this person reasons", "cognitive profile", "thinking pattern", "DHDNA", "digital DNA", or wants to understand the mind behind any text. Also trigger when the user provides text and wants deeper insight into the author's reasoning patterns, decision-making style, or cognitive signature.
GSAP animation reference for HyperFrames. Covers gsap.to(), from(), fromTo(), easing, stagger, defaults, timelines (gsap.timeline(), position parameter, labels, nesting, playback), and performance (transforms, will-change, quickTo). Use when writing GSAP animations in HyperFrames compositions.
配图助手 - 把文章/模块内容转成统一风格、少字高可读的 16:9 信息图提示词;先定“需要几张图+每张讲什么”,再压缩文案与隐喻,最后输出可直接复制的生图提示词并迭代。
| YouTube clip generation and editing with automated workflows — pull source video, slice highlights, add captions, and export.
Best practices for writing Remotion animations that stay intuitive for agents and editable in Remotion Studio Visual Mode.
YouTube transcript extraction and content reformatting: given a YouTube video URL, opens the video's transcript panel, extracts all timestamped segments, and transforms the raw transcript into summaries, chapter outlines, Twitter/X threads, blog posts, or notable quotes. Use when the user shares a YouTube URL or video link, asks to summarize a video, get a transcript, extract content from a YouTube video, get YouTube captions, extract YouTube captions, download YouTube captions, transcribe YouTube video, YouTube video to text, make a thread from YouTube, YouTube to blog post, YouTube to article, pull transcript from YouTube, YouTube content extraction, convert YouTube to text, video to transcript. Also applies when user wants to reformat any YouTube video content into structured output (chapters, threads, blog articles, key quotes).
跨境电商全链路自动化工具。集成1688采集、智能清洗、多平台上架(微信小店/Shopify/TikTok)、推广方案(关键词/竞品分析/广告文案)、短视频创作(MoviePy竖屏视频)、一键代发、爆品挖掘(趋势聚合+6维评分)、闲鱼二手选品捡漏(品牌识别/虚标过滤/捡漏评分/价格监控)、全自动流水线(挖掘→采集→清洗→上架→推广→视频)。
生成历史名人现代访谈短视频文案,通过古今反差与网络热梗的爆笑结合,创作具有传播力的虚构趣味内容
Take notque/voice-writer from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.