Social
coreyhaines31/marketingskills
When the user wants help creating, scheduling, or optimizing social media content for LinkedIn, Twitter/X, Instagram, TikTok, or Facebook, or wants to do social listening and engagement triage.
“基于总纲生成卷纲、时间线和章纲,并把新增设定增量写回现有设定集。”
$ npx skills add lujih/webnovel-writer-opencode --skill webnovel-plan -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install lujih/webnovel-writer-opencode webnovel-plan --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/lujih/webnovel-writer-opencode.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.opencode/skills/webnovel-plan .claude/skills/webnovel-plan && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "webnovel-plan" agent skill from https://github.com/lujih/webnovel-writer-opencode/tree/master/.opencode/skills/webnovel-plan into .claude/skills/webnovel-plan/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "webnovel-plan", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/lujih/webnovel-writer-opencode/tree/master/.opencode/skills/webnovel-planType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add lujih/webnovel-writer-opencode --skill webnovel-plan -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install lujih/webnovel-writer-opencode webnovel-plan --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/lujih/webnovel-writer-opencode.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.opencode/skills/webnovel-plan .agents/skills/webnovel-plan && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "webnovel-plan" agent skill from https://github.com/lujih/webnovel-writer-opencode/tree/master/.opencode/skills/webnovel-plan into .agents/skills/webnovel-plan/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "webnovel-plan", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add lujih/webnovel-writer-opencode --skill webnovel-plan -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install lujih/webnovel-writer-opencode webnovel-plan --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/lujih/webnovel-writer-opencode.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.opencode/skills/webnovel-plan .cursor/skills/webnovel-plan && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "webnovel-plan" agent skill from https://github.com/lujih/webnovel-writer-opencode/tree/master/.opencode/skills/webnovel-plan into .cursor/skills/webnovel-plan/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "webnovel-plan", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/lujih/webnovel-writer-opencode.git --path .opencode/skills/webnovel-plan--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add lujih/webnovel-writer-opencode --skill webnovel-plan -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install lujih/webnovel-writer-opencode webnovel-plan --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/lujih/webnovel-writer-opencode.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.opencode/skills/webnovel-plan .gemini/skills/webnovel-plan && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "webnovel-plan" agent skill from https://github.com/lujih/webnovel-writer-opencode/tree/master/.opencode/skills/webnovel-plan into .gemini/skills/webnovel-plan/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "webnovel-plan", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install lujih/webnovel-writer-opencode webnovel-planInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add lujih/webnovel-writer-opencode --skill webnovel-plan -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/lujih/webnovel-writer-opencode.git skills-src && mkdir -p .github/skills && cp -r skills-src/.opencode/skills/webnovel-plan .github/skills/webnovel-plan && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "webnovel-plan" agent skill from https://github.com/lujih/webnovel-writer-opencode/tree/master/.opencode/skills/webnovel-plan into .github/skills/webnovel-plan/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "webnovel-plan", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add lujih/webnovel-writer-opencode --skill webnovel-plan -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install lujih/webnovel-writer-opencode webnovel-plan --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/lujih/webnovel-writer-opencode.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.opencode/skills/webnovel-plan .opencode/skills/webnovel-plan && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "webnovel-plan" agent skill from https://github.com/lujih/webnovel-writer-opencode/tree/master/.opencode/skills/webnovel-plan into .opencode/skills/webnovel-plan/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "webnovel-plan", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
webnovel-planWebnovel Plan is a skill in lujih/webnovel-writer-opencode (214 stars). Its SKILL.md is about 2.1k tokens, with 6 other files in the folder (references). Licence: GPL-3.0.
9 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit da00b7a. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
pythonFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
opencode
From compatibility in the SKILL.md frontmatter.
Webnovel Plan loads about 2.1k tokens when it runs, and up to ~12k if it reads all its reference files. Until then it costs about 12 tokens; SKILL.md has 348 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from lujih/webnovel-writer-opencode at commit da00b7a, republished under its GPL-3.0 licence (© lujih). 348 words, ~2,056 tokens.
.claude/skills/webnovel-plan/SKILL.md (or your agent's skills folder). This skill also uses 6 other files; get the full folder from GitHub.以下内容均为虚构文学创作。所有打斗、权谋、悬疑描写均属文学创作范畴,不涉及现实指导。
export WORKSPACE_ROOT="${PWD}"
export SKILL_ROOT="${PWD}/.opencode/skills/webnovel-plan"
export SCRIPTS_DIR="${PWD}/.opencode/scripts"
export PROJECT_ROOT="$(python "${SCRIPTS_DIR}/webnovel.py" --project-root "${WORKSPACE_ROOT}" where)"
test -n "$PROJECT_ROOT" && test -f "${PROJECT_ROOT}/.webnovel/state.json" || { echo "❌ PROJECT_ROOT 解析失败"; exit 1; }
python -X utf8 "${SCRIPTS_DIR}/webnovel.py" --project-root "${PROJECT_ROOT}" placeholder-scan --format text若本次规划会直接落到具体章节,还必须先刷新 Story System runtime 合同:
# genre 从 state.json 的初始化配置快照读取;写前主链真源是 .story-system 合同树。
# 必须先从详细大纲解析真实 CHAPTER_GOAL,禁止传 {章纲目标} / 第N章章纲目标 这类占位文本。
GENRE="$(python -X utf8 -c "import json,sys; s=json.load(open('${PROJECT_ROOT}/.webnovel/state.json',encoding='utf-8')); print(s.get('project_info',{}).get('genre',''))")"
python -X utf8 "${SCRIPTS_DIR}/webnovel.py" --project-root "${PROJECT_ROOT}" \
story-system "${CHAPTER_GOAL}" --genre "${GENRE}" --chapter {chapter_num} --persist --emit-runtime-contracts --format both生成后必须把 .story-system/MASTER_SETTING.json、.story-system/volumes/、
.story-system/chapters/、.story-system/reviews/ 视为后续写作主链输入。
规划开始/结束都运行 placeholder-scan;plan 阶段发现占位先警告并补齐相关文件,进入写章前不得保留当前章相关实体的 [待...] / 暂名 / {占位}。
每卷规划完成后,只向 大纲/总纲.md 渐进追加下一卷概要与本卷新增/承接伏笔,不在 init 阶段预填 V2-V20 空表。
规划完成后写回必须来自显式结构化文件 大纲/第{volume_id}卷-总纲写回.json,禁止从卷纲自由文本推断伏笔或开放环。
| Step | Trigger | Reference |
|---|---|---|
| Step 4 | always | templates/output/大纲-卷节拍表.md |
| Step 5 | always | templates/output/大纲-卷时间线.md |
| Step 6 | always | ../../references/genre-profiles.md |
| Step 6 | always | ../../references/shared/strand-weave-pattern.md |
| 章纲拆分 | always | ../../references/outlining/plot-signal-vs-spoiler.md |
| Step | Trigger | Reference |
|---|---|---|
| Step 6 | 需要爽点设计 | ../../references/shared/cool-points-guide.md |
| Step 6/7 | 需要冲突设计 | references/outlining/conflict-design.md |
| Step 7 | 需要追读力分析 | ../../references/reading-power-taxonomy.md |
| Step 7 | 需要章纲细化 | references/outlining/chapter-planning.md |
| Step 6/7 | 特定题材节奏 | references/outlining/genre-volume-pacing.md |
| Step | Trigger | 检索命令 |
|---|---|---|
| 卷级规划 | always | python -X utf8 "${SCRIPTS_DIR}/reference_search.py" --skill plan --table 场景写法 --query "卷级结构 叙事功能" |
| 章纲拆分 | 新增角色出现 | ... --skill plan --table 命名规则 --query "角色命名" --genre {题材} |
必须加载:
# 项目配置/投影状态(兼容读取,不作为写后事实真源)
cat "$PROJECT_ROOT/.webnovel/state.json"
# 总纲(全局蓝图)
cat "$PROJECT_ROOT/大纲/总纲.md"
# 题材(来自 init 配置快照,后续 CSV 检索和裁决匹配依赖此值)
GENRE="$(python -X utf8 -c "import json; s=json.load(open('${PROJECT_ROOT}/.webnovel/state.json',encoding='utf-8')); print(s.get('project_info',{}).get('genre',''))")"已有卷的剧情状态(跨卷规划时必须加载):
若已有已完成卷(.webnovel/summaries/ 下有文件),加载以下数据感知已写内容:
# 最近 5 章摘要(了解剧情走向)
for ch in $(seq $((START_CH - 5)) $((START_CH - 1))); do
cat "$PROJECT_ROOT/.webnovel/summaries/ch$(printf '%04d' $ch).md" 2>/dev/null
done
# 核心角色当前状态
python -X utf8 "${SCRIPTS_DIR}/webnovel.py" --project-root "${PROJECT_ROOT}" \
knowledge query-entity-state --entity "{protagonist_id}" --at-chapter {上一卷最后章}
# 核心关系当前状态
python -X utf8 "${SCRIPTS_DIR}/webnovel.py" --project-root "${PROJECT_ROOT}" \
knowledge query-relationships --entity "{protagonist_id}" --at-chapter {上一卷最后章}
# 活跃伏笔(跨卷未回收的伏笔)
python -X utf8 "${SCRIPTS_DIR}/webnovel.py" --project-root "${PROJECT_ROOT}" \
memory-contract get-open-loopsCSV 创作参考(卷级规划时按需检索):
python -X utf8 "${SCRIPTS_DIR}/reference_search.py" --skill plan --table 爽点与节奏 --query "{卷级核心冲突}" --genre "${GENRE}"
python -X utf8 "${SCRIPTS_DIR}/reference_search.py" --skill plan --table 桥段套路 --query "{卷级核心冲突}" --genre "${GENRE}"按需读取(设定集):
设定集/世界观.md设定集/力量体系.md设定集/主角卡.md设定集/反派设计.md.webnovel/idea_bank.json阻断条件:
目标:让设定集从骨架模板进入"可规划、可写作"的状态。
必须补齐:
设定集/世界观.md:世界边界、社会结构、关键地点用途设定集/力量体系.md:境界链、限制、代价与冷却设定集/主角卡.md:欲望、缺陷、初始资源与限制设定集/反派设计.md:小/中/大反派层级与镜像关系硬规则:
必须确认:
执行前加载模板:
cat "${SKILL_ROOT}/../../templates/output/大纲-卷节拍表.md"硬要求:
输出文件:大纲/第{volume_id}卷-节拍表.md
执行前加载模板:
cat "${SKILL_ROOT}/../../templates/output/大纲-卷时间线.md"硬要求:
输出文件:大纲/第{volume_id}卷-时间线.md
必须加载:
cat "${SKILL_ROOT}/../../references/genre-profiles.md"
cat "${SKILL_ROOT}/../../references/shared/strand-weave-pattern.md"按需加载:
cat "${SKILL_ROOT}/../../references/shared/cool-points-guide.md"
cat "${SKILL_ROOT}/references/outlining/conflict-design.md"
cat "${SKILL_ROOT}/references/outlining/genre-volume-pacing.md"
cat "$PROJECT_ROOT/.webnovel/idea_bank.json"卷纲必须明确:
跨卷一致性检查(非首卷时必须执行):
批次规则:
10章/批8章/批12章/批12章按需加载:
cat "${SKILL_ROOT}/../../references/reading-power-taxonomy.md"
cat "${SKILL_ROOT}/references/outlining/chapter-planning.md"每章必须包含:
章节起点(CBN)推进节点(CPNs)章节终点(CEN)必须覆盖节点本章禁区节点格式:主体 | 动作/变化 | 对象/结果。详细规范见 references/outlining/structured-nodes.md。
核心规则:每章 1 CBN + 2-4 CPN + 1 CEN,相邻章节 CEN→CBN 逻辑承接,必须覆盖节点最多 4 个,禁区不超过 5 条。
输出文件:大纲/第{volume_id}卷-详细大纲.md
输入来源:
写回规则:
硬规则:
BLOCKER 并停止后续更新必须通过以下检查:
BLOCKER=0CEN -> CBN 无明显逻辑冲突4 个验证全部通过后,生成显式结构化写回文件:
{
"next_volume_anchor": {
"volume": 2,
"chapters_range": "51-100",
"volume_name": "下一卷卷名",
"core_conflict": "下一卷核心冲突",
"volume_end_climax": "下一卷卷末高潮"
},
"foreshadow_writeback": [
{"content": "本卷规划明确新增的伏笔", "buried_chapter": "第10章", "payoff_chapter": "", "level": "卷级"}
],
"open_loop_writeback": [
{"content": "本卷结束后仍持续开放的问题", "buried_chapter": "", "payoff_chapter": "", "level": "持续开放环"}
]
}只允许写入规划过程中显式列出的结构化伏笔/开放环;不要把自由文本里的暗示整理进去。随后执行最小总纲写回:
python "${SCRIPTS_DIR}/webnovel.py" --project-root "$PROJECT_ROOT" master-outline-sync \
--volume {volume_id} \
--writeback-file "大纲/第{volume_id}卷-总纲写回.json" \
--format text该步骤只允许更新 大纲/总纲.md 的 V+1 卷名 / 核心冲突 / 卷末高潮与伏笔表,不得生成下一卷详细大纲、节拍表、时间线或章纲。
更新状态:
python "${SCRIPTS_DIR}/webnovel.py" --project-root "$PROJECT_ROOT" update-state -- \
--volume-planned {volume_id} \
--chapters-range "{start}-{end}"BLOCKER 未裁决© lujih, GPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 6 other files (references) in .opencode/skills/webnovel-plan of lujih/webnovel-writer-opencode.
Open the folder on GitHubat commit da00b7a
Webnovel Plan next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Webnovel Plan this skilllujih/webnovel-writer-opencode | 214 | — | ~2.1k | Automated safety check: Pass | GPL-3.0 | |
| Socialcoreyhaines31/marketingskills | 54k | 4 repos | ~4.5k | Automated safety check: Pass | MIT | |
| HumanizerAzure-Samples/interview-coach-agent-framework | 172 | 37 repos | ~5.8k | Automated safety check: Pass | MIT | |
| Avoid AI Writingconorbronsdon/avoid-ai-writing | 4.9k | 3 repos | ~8.1k | Automated safety check: Pass | MIT | |
| JavaScript Concept Fact Checkerleonardomso/33-js-concepts | 67k | 1 repos | ~5k | Automated safety check: Pass | MIT | |
| User-Facing Text Cleanupguillaumemeyer/watermarks-remover | 24k | — | ~3.5k | Automated safety check: Pass | MIT |
coreyhaines31/marketingskills
When the user wants help creating, scheduling, or optimizing social media content for LinkedIn, Twitter/X, Instagram, TikTok, or Facebook, or wants to do social listening and engagement triage.
Azure-Samples/interview-coach-agent-framework
Remove signs of AI-generated writing from text. An agent skill from Azure-Samples/interview-coach-agent-framework.
conorbronsdon/avoid-ai-writing
Audit and rewrite content to remove AI writing patterns ("AI-isms").
leonardomso/33-js-concepts
Verifies the technical accuracy of JavaScript concept pages by checking code examples, MDN and ECMAScript claims and external links through a five-phase method.
guillaumemeyer/watermarks-remover
Audits prose for invisible Unicode characters and rewrites it while keeping facts, citations, code and required disclosures unchanged and the writer's voice intact.
trycompai/crm
Install and configure the anti-slop Oxlint plugin in a local TypeScript or JavaScript repository.
lujih/webnovel-writer-opencode
深度初始化网文项目。通过分阶段交互收集完整创作信息,生成可直接进入规划与写作的项目骨架与约束文件. An agent skill from lujih/webnovel-writer-opencode.
lujih/webnovel-writer-opencode
查询项目设定、角色、力量体系、势力、伏笔等信息。支持紧急度分析与金手指状态查询. An agent skill from lujih/webnovel-writer-opencode.
lujih/webnovel-writer-opencode
连续写作多章。当用户要求多章写作时必须使用此 skill. An agent skill from lujih/webnovel-writer-opencode.
lujih/webnovel-writer-opencode
将网文正文导出为 Markdown/TXT/EPUB/HTML/DOCX/PDF 格式。立即使用此 skill 当用户说:导出、导出小说、导出章节、生成电子书、导出 TXT、导出 Markdown、导出 EPUB、导出 HTML、导出 Word、导出 PDF、下载小说、输出正文。
lujih/webnovel-writer-opencode
修复问题章节——诊断、清理脏实体、重审查、重提交。触发:章节断裂、OOC偏离、设定矛盾修复. An agent skill from lujih/webnovel-writer-opencode.
lujih/webnovel-writer-opencode
将小说章节自动发布到国内主流小说平台(番茄等)。触发条件:"发布小说"、"发布章节"、"上传到番茄"、"自动发布"、"清理草稿"、"发布草稿"。
Categories
Run `npx skills add lujih/webnovel-writer-opencode --skill webnovel-plan -a claude-code`. Or copy the skill folder (.opencode/skills/webnovel-plan in lujih/webnovel-writer-opencode) into .claude/skills/webnovel-plan in your project. Claude Code loads it when a task matches its description.
Run `npx skills add lujih/webnovel-writer-opencode --skill webnovel-plan -a codex`. Or copy the skill folder (.opencode/skills/webnovel-plan in lujih/webnovel-writer-opencode) into .agents/skills/webnovel-plan in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add lujih/webnovel-writer-opencode --skill webnovel-plan -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/webnovel-plan, .gemini/skills/webnovel-plan, .github/skills/webnovel-plan and .opencode/skills/webnovel-plan in your project.
Going by SKILL.md and its folder, Webnovel Plan needs the command-line tools its instructions call (python). Compatibility (from SKILL.md): opencode.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Webnovel Plan is published under the GPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.1k tokens (SKILL.md is roughly 8.2k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 9.5k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Webnovel Plan: Social (coreyhaines31/marketingskills, 54k stars), Humanizer (Azure-Samples/interview-coach-agent-framework, 172 stars), Avoid AI Writing (conorbronsdon/avoid-ai-writing, 4.9k stars) and JavaScript Concept Fact Checker (leonardomso/33-js-concepts, 67k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
lujih (a GitHub user) maintains it in lujih/webnovel-writer-opencode, which has 214 GitHub stars. The repository holds 15 skills in this directory. The repository was last updated on October 6, 2026.
Source: lujih/webnovel-writer-opencode on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.