dsh-chapter-whale 0.0.0-stage → 0.4.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +216 -2
- package/RELEASE_STATUS.md +61 -0
- package/THIRD_PARTY_NOTICES.md +16 -0
- package/assets/chapter-whale-overview.png +0 -0
- package/assets/screenshots/01-automation.png +0 -0
- package/assets/screenshots/02-dashboard.png +0 -0
- package/assets/screenshots/03-free-channels.png +0 -0
- package/assets/screenshots/04-chapters.png +0 -0
- package/assets/screenshots/05-memory.png +0 -0
- package/assets/screenshots/06-creative-brief.png +0 -0
- package/assets/screenshots/07-model-settings.png +0 -0
- package/backend/fanqie_auto_publish/README.md +133 -0
- package/backend/fanqie_auto_publish/login.py +42 -0
- package/backend/fanqie_auto_publish/publication_safety.py +306 -0
- package/backend/fanqie_auto_publish/publish.py +1100 -0
- package/backend/fanqie_auto_publish/requirements.txt +2 -0
- package/backend/integration/README.md +72 -0
- package/backend/integration/__init__.py +2 -0
- package/backend/integration/bridge.py +1158 -0
- package/backend/integration/chapter_versions.py +706 -0
- package/backend/integration/character_state.py +435 -0
- package/backend/integration/context_budget.py +131 -0
- package/backend/integration/continuity.py +246 -0
- package/backend/integration/costs.py +652 -0
- package/backend/integration/credential_codec.py +40 -0
- package/backend/integration/daily_word_goal.py +92 -0
- package/backend/integration/editorial_recovery.py +71 -0
- package/backend/integration/editorial_release.py +158 -0
- package/backend/integration/failure_info.py +108 -0
- package/backend/integration/fallback_budget.py +88 -0
- package/backend/integration/free_channels.py +175 -0
- package/backend/integration/free_pool.py +179 -0
- package/backend/integration/length_policy.py +36 -0
- package/backend/integration/local_completion.py +511 -0
- package/backend/integration/memory_extraction.py +160 -0
- package/backend/integration/memory_library.py +798 -0
- package/backend/integration/model_roles.py +307 -0
- package/backend/integration/ofm_runtime.py +191 -0
- package/backend/integration/ofm_service.mjs +24 -0
- package/backend/integration/owned_service.py +44 -0
- package/backend/integration/planning_failover.py +102 -0
- package/backend/integration/planning_output.py +88 -0
- package/backend/integration/provider_circuit.py +33 -0
- package/backend/integration/provider_client.py +190 -0
- package/backend/integration/providers.py +221 -0
- package/backend/integration/quality_gate.py +249 -0
- package/backend/integration/quality_score.py +245 -0
- package/backend/integration/reasoning.py +26 -0
- package/backend/integration/recovery.py +237 -0
- package/backend/integration/resource_policy.py +81 -0
- package/backend/integration/retrieval_config.py +44 -0
- package/backend/integration/retrieval_health.py +46 -0
- package/backend/integration/retry_budget.py +76 -0
- package/backend/integration/revision_plan.py +414 -0
- package/backend/integration/revision_workflow.py +134 -0
- package/backend/integration/scene_writer.py +97 -0
- package/backend/integration/scenes.py +153 -0
- package/backend/integration/scheduler.py +917 -0
- package/backend/integration/secret_store.py +208 -0
- package/backend/integration/serial_delivery.py +363 -0
- package/backend/integration/serial_service.py +255 -0
- package/backend/integration/studio.py +383 -0
- package/backend/integration/style_profile.py +290 -0
- package/backend/integration/style_stats.py +138 -0
- package/backend/integration/ten_chapter_delivery.py +621 -0
- package/backend/integration/text_checks.py +56 -0
- package/backend/integration/version_history.py +231 -0
- package/backend/integration/watchdog.py +73 -0
- package/backend/integration/workflow.py +112 -0
- package/backend/integration/writer_runner.py +997 -0
- package/backend/manager/__init__.py +1 -0
- package/backend/manager/ai_tools.py +216 -0
- package/backend/manager/app.py +1338 -0
- package/backend/manager/audit_inventory.py +52 -0
- package/backend/manager/device_access.py +211 -0
- package/backend/manager/free_model_api.py +64 -0
- package/backend/manager/job_progress.py +18 -0
- package/backend/manager/provider_api.py +141 -0
- package/backend/manager/role_checks.py +126 -0
- package/backend/manager/runtime_health.py +48 -0
- package/backend/manager/static/app.js +402 -0
- package/backend/manager/static/costs.js +90 -0
- package/backend/manager/static/editorial.css +510 -0
- package/backend/manager/static/free-models.css +28 -0
- package/backend/manager/static/free-models.js +86 -0
- package/backend/manager/static/index.html +140 -0
- package/backend/manager/static/memory.js +58 -0
- package/backend/manager/static/ofm-channel-card.css +1 -0
- package/backend/manager/static/ofm-channel-card.js +17169 -0
- package/backend/manager/static/pair.html +27 -0
- package/backend/manager/static/pair.js +17 -0
- package/backend/manager/static/providers.css +86 -0
- package/backend/manager/static/providers.js +181 -0
- package/backend/manager/static/studio.css +243 -0
- package/backend/manager/static/style.css +28 -0
- package/backend/manager/worker.py +182 -0
- package/backend/vendor/ofm-source-lock.json +105 -0
- package/backend/vendor/our-free-model-source/LICENSE +21 -0
- package/backend/vendor/our-free-model-source/package.json +79 -0
- package/backend/vendor/our-free-model-source/packages/standalone/channels/business.mjs +69193 -0
- package/backend/vendor/our-free-model-source/packages/standalone/channels/contracts.mjs +37 -0
- package/backend/vendor/our-free-model-source/packages/standalone/channels/credentials.mjs +59 -0
- package/backend/vendor/our-free-model-source/packages/standalone/channels/images.mjs +44 -0
- package/backend/vendor/our-free-model-source/packages/standalone/channels/runtime.mjs +139 -0
- package/backend/vendor/our-free-model-source/packages/standalone/channels/worker.mjs +154 -0
- package/backend/vendor/our-free-model-source/packages/standalone/cli.mjs +56 -0
- package/backend/vendor/our-free-model-source/packages/standalone/eac.mjs +122 -0
- package/backend/vendor/our-free-model-source/packages/standalone/login-terminal.mjs +64 -0
- package/backend/vendor/our-free-model-source/packages/standalone/management.mjs +330 -0
- package/backend/vendor/our-free-model-source/packages/standalone/open-external.mjs +19 -0
- package/backend/vendor/our-free-model-source/packages/standalone/package.json +36 -0
- package/backend/vendor/our-free-model-source/packages/standalone/service.mjs +348 -0
- package/backend/vendor/our-free-model-source/packages/standalone/vite.config.mjs +22 -0
- package/backend/vendor/our-free-model-source/packages/standalone/web/_ofm-provider-list-D9WP3xjp.js +1 -0
- package/backend/vendor/our-free-model-source/packages/standalone/web/app.css +1 -0
- package/backend/vendor/our-free-model-source/packages/standalone/web/app.js +13 -0
- package/backend/vendor/our-free-model-source/packages/standalone/web/assets.json +12 -0
- package/backend/vendor/our-free-model-source/packages/standalone/web/channels-DtR2ayCL.js +414 -0
- package/backend/vendor/our-free-model-source/packages/standalone/web/channels-kEN3gKhj.js +1029 -0
- package/backend/vendor/our-free-model-source/packages/standalone/web/index.html +12 -0
- package/backend/vendor/our-free-model-source/packages/standalone/web/models-ishsHIe7.js +1 -0
- package/backend/vendor/our-free-model-source/packages/standalone/web/search-RZVy3Eoo.js +1 -0
- package/backend/vendor/our-free-model-source/packages/standalone/web/settings-DYjyfDI2.js +1 -0
- package/backend/vendor/our-free-model-source/packages/standalone/web/splash.html +324 -0
- package/backend/vendor/our-free-model-source/packages/standalone/web/usage-BOibUWax.js +1 -0
- package/backend/vendor/our-free-model-source/packages/standalone/web/visibility-data-9WWAmLOB.js +1 -0
- package/backend/vendor/our-free-model-source/packages/standalone/web/x-CzfajR1e.js +1 -0
- package/backend/vendor/our-free-model-source/src/adapter.js +829 -0
- package/backend/vendor/our-free-model-source/src/aggregate.js +727 -0
- package/backend/vendor/our-free-model-source/src/anthropic.js +834 -0
- package/backend/vendor/our-free-model-source/src/catalog.js +605 -0
- package/backend/vendor/our-free-model-source/src/chan-relay.js +193 -0
- package/backend/vendor/our-free-model-source/src/channel.js +40 -0
- package/backend/vendor/our-free-model-source/src/combos.js +179 -0
- package/backend/vendor/our-free-model-source/src/core/completion.js +191 -0
- package/backend/vendor/our-free-model-source/src/core/runtime.js +391 -0
- package/backend/vendor/our-free-model-source/src/core/stats.js +98 -0
- package/backend/vendor/our-free-model-source/src/deferred-response.js +44 -0
- package/backend/vendor/our-free-model-source/src/eac-login.js +115 -0
- package/backend/vendor/our-free-model-source/src/eac-user.js +83 -0
- package/backend/vendor/our-free-model-source/src/eac.js +276 -0
- package/backend/vendor/our-free-model-source/src/effort.js +280 -0
- package/backend/vendor/our-free-model-source/src/egress.js +842 -0
- package/backend/vendor/our-free-model-source/src/failure.js +39 -0
- package/backend/vendor/our-free-model-source/src/feed.js +310 -0
- package/backend/vendor/our-free-model-source/src/forward.js +1328 -0
- package/backend/vendor/our-free-model-source/src/http.js +581 -0
- package/backend/vendor/our-free-model-source/src/image-pricing.js +12 -0
- package/backend/vendor/our-free-model-source/src/kilo.js +168 -0
- package/backend/vendor/our-free-model-source/src/local-optimize.js +446 -0
- package/backend/vendor/our-free-model-source/src/messages.js +429 -0
- package/backend/vendor/our-free-model-source/src/open-external.js +35 -0
- package/backend/vendor/our-free-model-source/src/picks.js +197 -0
- package/backend/vendor/our-free-model-source/src/probe.js +236 -0
- package/backend/vendor/our-free-model-source/src/providers/index.js +215 -0
- package/backend/vendor/our-free-model-source/src/providers/registry.json +4927 -0
- package/backend/vendor/our-free-model-source/src/push.js +92 -0
- package/backend/vendor/our-free-model-source/src/recovery.js +131 -0
- package/backend/vendor/our-free-model-source/src/reload.js +307 -0
- package/backend/vendor/our-free-model-source/src/route/classify.js +542 -0
- package/backend/vendor/our-free-model-source/src/sponsor.js +209 -0
- package/backend/vendor/our-free-model-source/src/store.js +555 -0
- package/backend/vendor/our-free-model-source/src/stream.js +540 -0
- package/backend/vendor/our-free-model-source/src/token-saver/index.js +151 -0
- package/backend/vendor/our-free-model-source/src/token-saver/inject.js +434 -0
- package/backend/vendor/our-free-model-source/src/token-saver/prompts.js +239 -0
- package/backend/vendor/our-free-model-source/src/token-saver/rtk/applyFilter.js +39 -0
- package/backend/vendor/our-free-model-source/src/token-saver/rtk/autodetect.js +171 -0
- package/backend/vendor/our-free-model-source/src/token-saver/rtk/constants.js +142 -0
- package/backend/vendor/our-free-model-source/src/token-saver/rtk/filters/buildOutput.js +142 -0
- package/backend/vendor/our-free-model-source/src/token-saver/rtk/filters/dedupLog.js +58 -0
- package/backend/vendor/our-free-model-source/src/token-saver/rtk/filters/find.js +64 -0
- package/backend/vendor/our-free-model-source/src/token-saver/rtk/filters/gitDiff.js +123 -0
- package/backend/vendor/our-free-model-source/src/token-saver/rtk/filters/gitLog.js +114 -0
- package/backend/vendor/our-free-model-source/src/token-saver/rtk/filters/gitStatus.js +128 -0
- package/backend/vendor/our-free-model-source/src/token-saver/rtk/filters/grep.js +52 -0
- package/backend/vendor/our-free-model-source/src/token-saver/rtk/filters/ls.js +103 -0
- package/backend/vendor/our-free-model-source/src/token-saver/rtk/filters/readNumbered.js +37 -0
- package/backend/vendor/our-free-model-source/src/token-saver/rtk/filters/searchList.js +64 -0
- package/backend/vendor/our-free-model-source/src/token-saver/rtk/filters/smartTruncate.js +27 -0
- package/backend/vendor/our-free-model-source/src/token-saver/rtk/filters/tree.js +42 -0
- package/backend/vendor/our-free-model-source/src/token-saver/rtk/hitLine.js +83 -0
- package/backend/vendor/our-free-model-source/src/token-saver/rtk/index.js +384 -0
- package/backend/vendor/our-free-model-source/src/token-saver/rtk/registry.js +57 -0
- package/backend/vendor/our-free-model-source/src/trust.js +184 -0
- package/backend/vendor/our-free-model-source/src/updater.js +1034 -0
- package/backend/vendor/our-free-model-source/src/upstream.js +591 -0
- package/backend/vendor/our-free-model-source/src/vault-anchor.js +2 -0
- package/backend/vendor/our-free-model-source/src/vault-data.js +3 -0
- package/backend/vendor/our-free-model-source/src/vault.js +213 -0
- package/backend/vendor/our-free-model-source/vendor/channel-pack/LICENSE +21 -0
- package/backend/vendor/our-free-model-source/vendor/channel-pack/qoder-auth-wasm.wasm +0 -0
- package/backend/vendor/our-free-model-source/vendor/dsh-std/LICENSE +21 -0
- package/backend/webnovel-writer/.claude/agents/anti-ai-detector.md +182 -0
- package/backend/webnovel-writer/.claude/agents/consistency-checker.md +179 -0
- package/backend/webnovel-writer/.claude/agents/context-agent.md +350 -0
- package/backend/webnovel-writer/.claude/agents/continuity-checker.md +254 -0
- package/backend/webnovel-writer/.claude/agents/data-agent.md +436 -0
- package/backend/webnovel-writer/.claude/agents/dialogue-reality-enforcer.md +357 -0
- package/backend/webnovel-writer/.claude/agents/high-point-checker.md +145 -0
- package/backend/webnovel-writer/.claude/agents/ooc-checker.md +217 -0
- package/backend/webnovel-writer/.claude/agents/pacing-checker.md +216 -0
- package/backend/webnovel-writer/.claude/genres/dark/dark-plot-patterns.md +105 -0
- package/backend/webnovel-writer/.claude/genres/dark/power-struggle.md +108 -0
- package/backend/webnovel-writer/.claude/genres/dark/survival-cost.md +98 -0
- package/backend/webnovel-writer/.claude/genres/dog-blood-romance/character-archetypes.md +582 -0
- package/backend/webnovel-writer/.claude/genres/dog-blood-romance/emotional-tension.md +578 -0
- package/backend/webnovel-writer/.claude/genres/dog-blood-romance/plot-templates.md +213 -0
- package/backend/webnovel-writer/.claude/genres/dog-blood-romance/romance-pacing.md +574 -0
- package/backend/webnovel-writer/.claude/genres/dog-blood-romance/romance-tropes.md +528 -0
- package/backend/webnovel-writer/.claude/genres/dog-blood-romance/sweet-moments.md +620 -0
- package/backend/webnovel-writer/.claude/genres/dog-blood-romance/torture-points.md +612 -0
- package/backend/webnovel-writer/.claude/genres/period-drama/ancient-dialogue.md +288 -0
- package/backend/webnovel-writer/.claude/genres/period-drama/character-design.md +268 -0
- package/backend/webnovel-writer/.claude/genres/period-drama/historical-setting.md +278 -0
- package/backend/webnovel-writer/.claude/genres/period-drama/palace-intrigue.md +268 -0
- package/backend/webnovel-writer/.claude/genres/period-drama/plot-patterns.md +276 -0
- package/backend/webnovel-writer/.claude/genres/realistic/character-depth.md +234 -0
- package/backend/webnovel-writer/.claude/genres/realistic/dialogue-authenticity.md +284 -0
- package/backend/webnovel-writer/.claude/genres/realistic/plot-logic.md +273 -0
- package/backend/webnovel-writer/.claude/genres/realistic/reality-anchoring.md +229 -0
- package/backend/webnovel-writer/.claude/genres/realistic/social-issues.md +232 -0
- package/backend/webnovel-writer/.claude/genres/rules-mystery/clue-design.md +524 -0
- package/backend/webnovel-writer/.claude/genres/rules-mystery/core-elements.md +431 -0
- package/backend/webnovel-writer/.claude/genres/rules-mystery/detective-design.md +560 -0
- package/backend/webnovel-writer/.claude/genres/rules-mystery/revelation-design.md +472 -0
- package/backend/webnovel-writer/.claude/genres/rules-mystery/structure-pacing.md +520 -0
- package/backend/webnovel-writer/.claude/genres/rules-mystery/suspect-management.md +497 -0
- package/backend/webnovel-writer/.claude/genres/rules-mystery/trick-design.md +507 -0
- package/backend/webnovel-writer/.claude/genres/xuanhuan/cultivation-levels.md +476 -0
- package/backend/webnovel-writer/.claude/genres/xuanhuan/power-systems.md +373 -0
- package/backend/webnovel-writer/.claude/genres/xuanhuan/xuanhuan-cool-points.md +672 -0
- package/backend/webnovel-writer/.claude/genres/xuanhuan/xuanhuan-plot-patterns.md +547 -0
- package/backend/webnovel-writer/.claude/genres/zhihu-short/character-quick-build.md +190 -0
- package/backend/webnovel-writer/.claude/genres/zhihu-short/emotional-peaks.md +236 -0
- package/backend/webnovel-writer/.claude/genres/zhihu-short/ending-patterns.md +217 -0
- package/backend/webnovel-writer/.claude/genres/zhihu-short/genre-templates.md +224 -0
- package/backend/webnovel-writer/.claude/genres/zhihu-short/hook-techniques.md +151 -0
- package/backend/webnovel-writer/.claude/genres/zhihu-short/pacing-rhythm.md +190 -0
- package/backend/webnovel-writer/.claude/genres/zhihu-short/plot-compression.md +207 -0
- package/backend/webnovel-writer/.claude/references/entity-management-spec.md +296 -0
- package/backend/webnovel-writer/.claude/scripts/__init__.py +19 -0
- package/backend/webnovel-writer/.claude/scripts/archive_manager.py +592 -0
- package/backend/webnovel-writer/.claude/scripts/backup_manager.py +485 -0
- package/backend/webnovel-writer/.claude/scripts/chapter_paths.py +84 -0
- package/backend/webnovel-writer/.claude/scripts/context_pack_builder.py +514 -0
- package/backend/webnovel-writer/.claude/scripts/data_modules/__init__.py +50 -0
- package/backend/webnovel-writer/.claude/scripts/data_modules/api_client.py +628 -0
- package/backend/webnovel-writer/.claude/scripts/data_modules/config.py +268 -0
- package/backend/webnovel-writer/.claude/scripts/data_modules/entity_linker.py +255 -0
- package/backend/webnovel-writer/.claude/scripts/data_modules/index_manager.py +1209 -0
- package/backend/webnovel-writer/.claude/scripts/data_modules/migrate_state_to_sqlite.py +361 -0
- package/backend/webnovel-writer/.claude/scripts/data_modules/rag_adapter.py +651 -0
- package/backend/webnovel-writer/.claude/scripts/data_modules/sql_state_manager.py +545 -0
- package/backend/webnovel-writer/.claude/scripts/data_modules/state_manager.py +1257 -0
- package/backend/webnovel-writer/.claude/scripts/data_modules/style_sampler.py +500 -0
- package/backend/webnovel-writer/.claude/scripts/data_modules/tests/__init__.py +1 -0
- package/backend/webnovel-writer/.claude/scripts/extract_chapter_context.py +227 -0
- package/backend/webnovel-writer/.claude/scripts/golden_three_checker.py +570 -0
- package/backend/webnovel-writer/.claude/scripts/init_project.py +585 -0
- package/backend/webnovel-writer/.claude/scripts/project_locator.py +94 -0
- package/backend/webnovel-writer/.claude/scripts/requirements.txt +9 -0
- package/backend/webnovel-writer/.claude/scripts/security_utils.py +589 -0
- package/backend/webnovel-writer/.claude/scripts/status_reporter.py +985 -0
- package/backend/webnovel-writer/.claude/scripts/token_budget_report.md +120 -0
- package/backend/webnovel-writer/.claude/scripts/update_state.py +691 -0
- package/backend/webnovel-writer/.claude/scripts/workflow_manager.py +504 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-init/SKILL.md +178 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-init/references/creativity/creative-combination.md +511 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-init/references/creativity/inspiration-collection.md +298 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-init/references/creativity/market-positioning.md +421 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-init/references/creativity/selling-points.md +684 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-init/references/genre-tropes.md +183 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-init/references/system-data-flow.md +43 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-init/references/worldbuilding/character-design.md +111 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-init/references/worldbuilding/faction-systems.md +179 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-init/references/worldbuilding/power-systems.md +160 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-init/references/worldbuilding/setting-consistency.md +215 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-init/references/worldbuilding/world-rules.md +86 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-plan/SKILL.md +155 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-plan/references/cool-points-guide.md +312 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-plan/references/outlining/chapter-planning.md +295 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-plan/references/outlining/conflict-design.md +277 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-plan/references/outlining/outline-structure.md +210 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-plan/references/outlining/plot-frameworks.md +240 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-plan/references/strand-weave-pattern.md +106 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-query/SKILL.md +151 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-query/references/advanced/foreshadowing.md +120 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-query/references/system-data-flow.md +336 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-query/references/tag-specification.md +155 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-resume/SKILL.md +165 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-resume/references/system-data-flow.md +43 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-resume/references/workflow-resume.md +139 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-review/SKILL.md +139 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-review/references/common-mistakes.md +96 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-review/references/cool-points-guide.md +312 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-review/references/core-constraints.md +75 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-review/references/pacing-control.md +129 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-review/references/strand-weave-pattern.md +106 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/SKILL.md +524 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//344/272/211/351/234/270/346/265/201/chapter-hard-constraints.md +19 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//344/272/211/351/234/270/346/265/201/combat-scenes.md +18 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//344/272/211/351/234/270/346/265/201/continuity-summary.md +33 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//344/272/211/351/234/270/346/265/201/desire-description.md +314 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//344/272/211/351/234/270/346/265/201/dialogue-writing.md +13 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//344/272/211/351/234/270/346/265/201/emotion-psychology.md +13 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//344/272/211/351/234/270/346/265/201/examples.md +55 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//344/272/211/351/234/270/346/265/201/extract-state.md +126 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//344/272/211/351/234/270/346/265/201/genre-writer.md +179 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//344/272/211/351/234/270/346/265/201/opening-three.md +18 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//344/272/211/351/234/270/346/265/201/outline-master.md +59 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//344/272/211/351/234/270/346/265/201/outline-polish.md +39 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//344/272/211/351/234/270/346/265/201/outline-rewrite.md +70 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//344/272/211/351/234/270/346/265/201/outline-volume.md +89 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//344/272/211/351/234/270/346/265/201/polish-guide.md +349 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//344/272/211/351/234/270/346/265/201/polish.md +47 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//344/272/211/351/234/270/346/265/201/review.md +31 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//344/272/211/351/234/270/346/265/201/scene-description.md +14 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//344/272/211/351/234/270/346/265/201/substyle-writer.md +91 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//344/272/211/351/234/270/346/265/201/typesetting.md +60 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//344/272/211/351/234/270/346/265/201/writer-base.md +76 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//344/272/211/351/234/270/346/265/201/writing-user-prompt.md +92 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//346/234/235/345/240/202/346/235/203/350/260/213/346/265/201/chapter-hard-constraints.md +19 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//346/234/235/345/240/202/346/235/203/350/260/213/346/265/201/combat-scenes.md +18 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//346/234/235/345/240/202/346/235/203/350/260/213/346/265/201/continuity-summary.md +33 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//346/234/235/345/240/202/346/235/203/350/260/213/346/265/201/desire-description.md +314 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//346/234/235/345/240/202/346/235/203/350/260/213/346/265/201/dialogue-writing.md +13 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//346/234/235/345/240/202/346/235/203/350/260/213/346/265/201/emotion-psychology.md +13 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//346/234/235/345/240/202/346/235/203/350/260/213/346/265/201/examples.md +57 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//346/234/235/345/240/202/346/235/203/350/260/213/346/265/201/extract-state.md +126 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//346/234/235/345/240/202/346/235/203/350/260/213/346/265/201/genre-writer.md +179 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//346/234/235/345/240/202/346/235/203/350/260/213/346/265/201/opening-three.md +18 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//346/234/235/345/240/202/346/235/203/350/260/213/346/265/201/outline-master.md +59 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//346/234/235/345/240/202/346/235/203/350/260/213/346/265/201/outline-polish.md +39 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//346/234/235/345/240/202/346/235/203/350/260/213/346/265/201/outline-rewrite.md +70 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//346/234/235/345/240/202/346/235/203/350/260/213/346/265/201/outline-volume.md +89 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//346/234/235/345/240/202/346/235/203/350/260/213/346/265/201/polish-guide.md +349 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//346/234/235/345/240/202/346/235/203/350/260/213/346/265/201/polish.md +47 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//346/234/235/345/240/202/346/235/203/350/260/213/346/265/201/review.md +31 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//346/234/235/345/240/202/346/235/203/350/260/213/346/265/201/scene-description.md +14 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//346/234/235/345/240/202/346/235/203/350/260/213/346/265/201/substyle-writer.md +101 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//346/234/235/345/240/202/346/235/203/350/260/213/346/265/201/typesetting.md +60 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//346/234/235/345/240/202/346/235/203/350/260/213/346/265/201/writer-base.md +76 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//346/234/235/345/240/202/346/235/203/350/260/213/346/265/201/writing-user-prompt.md +92 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//347/247/215/347/224/260/346/265/201/chapter-hard-constraints.md +19 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//347/247/215/347/224/260/346/265/201/combat-scenes.md +18 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//347/247/215/347/224/260/346/265/201/continuity-summary.md +33 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//347/247/215/347/224/260/346/265/201/desire-description.md +314 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//347/247/215/347/224/260/346/265/201/dialogue-writing.md +13 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//347/247/215/347/224/260/346/265/201/emotion-psychology.md +13 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//347/247/215/347/224/260/346/265/201/examples.md +61 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//347/247/215/347/224/260/346/265/201/extract-state.md +126 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//347/247/215/347/224/260/346/265/201/genre-writer.md +179 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//347/247/215/347/224/260/346/265/201/opening-three.md +18 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//347/247/215/347/224/260/346/265/201/outline-master.md +59 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//347/247/215/347/224/260/346/265/201/outline-polish.md +39 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//347/247/215/347/224/260/346/265/201/outline-rewrite.md +70 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//347/247/215/347/224/260/346/265/201/outline-volume.md +89 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//347/247/215/347/224/260/346/265/201/polish-guide.md +349 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//347/247/215/347/224/260/346/265/201/polish.md +47 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//347/247/215/347/224/260/346/265/201/review.md +31 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//347/247/215/347/224/260/346/265/201/scene-description.md +14 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//347/247/215/347/224/260/346/265/201/substyle-writer.md +87 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//347/247/215/347/224/260/346/265/201/typesetting.md +60 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//347/247/215/347/224/260/346/265/201/writer-base.md +76 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/alt-history//347/247/215/347/224/260/346/265/201/writing-user-prompt.md +92 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//344/270/247/345/260/270/346/261/202/347/224/237/346/265/201/chapter-hard-constraints.md +19 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//344/270/247/345/260/270/346/261/202/347/224/237/346/265/201/combat-scenes.md +18 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//344/270/247/345/260/270/346/261/202/347/224/237/346/265/201/continuity-summary.md +33 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//344/270/247/345/260/270/346/261/202/347/224/237/346/265/201/desire-description.md +314 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//344/270/247/345/260/270/346/261/202/347/224/237/346/265/201/dialogue-writing.md +13 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//344/270/247/345/260/270/346/261/202/347/224/237/346/265/201/emotion-psychology.md +13 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//344/270/247/345/260/270/346/261/202/347/224/237/346/265/201/examples.md +57 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//344/270/247/345/260/270/346/261/202/347/224/237/346/265/201/extract-state.md +126 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//344/270/247/345/260/270/346/261/202/347/224/237/346/265/201/genre-writer.md +191 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//344/270/247/345/260/270/346/261/202/347/224/237/346/265/201/opening-three.md +18 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//344/270/247/345/260/270/346/261/202/347/224/237/346/265/201/outline-master.md +59 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//344/270/247/345/260/270/346/261/202/347/224/237/346/265/201/outline-polish.md +39 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//344/270/247/345/260/270/346/261/202/347/224/237/346/265/201/outline-rewrite.md +70 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//344/270/247/345/260/270/346/261/202/347/224/237/346/265/201/outline-volume.md +89 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//344/270/247/345/260/270/346/261/202/347/224/237/346/265/201/polish-guide.md +349 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//344/270/247/345/260/270/346/261/202/347/224/237/346/265/201/polish.md +47 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//344/270/247/345/260/270/346/261/202/347/224/237/346/265/201/review.md +31 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//344/270/247/345/260/270/346/261/202/347/224/237/346/265/201/scene-description.md +14 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//344/270/247/345/260/270/346/261/202/347/224/237/346/265/201/substyle-writer.md +110 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//344/270/247/345/260/270/346/261/202/347/224/237/346/265/201/typesetting.md +60 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//344/270/247/345/260/270/346/261/202/347/224/237/346/265/201/writer-base.md +76 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//344/270/247/345/260/270/346/261/202/347/224/237/346/265/201/writing-user-prompt.md +92 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//345/233/244/350/264/247/346/265/201/chapter-hard-constraints.md +19 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//345/233/244/350/264/247/346/265/201/combat-scenes.md +18 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//345/233/244/350/264/247/346/265/201/continuity-summary.md +33 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//345/233/244/350/264/247/346/265/201/desire-description.md +314 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//345/233/244/350/264/247/346/265/201/dialogue-writing.md +13 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//345/233/244/350/264/247/346/265/201/emotion-psychology.md +13 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//345/233/244/350/264/247/346/265/201/examples.md +51 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//345/233/244/350/264/247/346/265/201/extract-state.md +126 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//345/233/244/350/264/247/346/265/201/genre-writer.md +191 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//345/233/244/350/264/247/346/265/201/opening-three.md +18 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//345/233/244/350/264/247/346/265/201/outline-master.md +59 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//345/233/244/350/264/247/346/265/201/outline-polish.md +39 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//345/233/244/350/264/247/346/265/201/outline-rewrite.md +70 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//345/233/244/350/264/247/346/265/201/outline-volume.md +89 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//345/233/244/350/264/247/346/265/201/polish-guide.md +349 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//345/233/244/350/264/247/346/265/201/polish.md +47 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//345/233/244/350/264/247/346/265/201/review.md +31 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//345/233/244/350/264/247/346/265/201/scene-description.md +14 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//345/233/244/350/264/247/346/265/201/substyle-writer.md +98 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//345/233/244/350/264/247/346/265/201/typesetting.md +60 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//345/233/244/350/264/247/346/265/201/writer-base.md +76 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//345/233/244/350/264/247/346/265/201/writing-user-prompt.md +92 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//345/244/251/347/201/276/346/261/202/347/224/237/346/265/201/chapter-hard-constraints.md +19 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//345/244/251/347/201/276/346/261/202/347/224/237/346/265/201/combat-scenes.md +18 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//345/244/251/347/201/276/346/261/202/347/224/237/346/265/201/continuity-summary.md +33 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//345/244/251/347/201/276/346/261/202/347/224/237/346/265/201/desire-description.md +314 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//345/244/251/347/201/276/346/261/202/347/224/237/346/265/201/dialogue-writing.md +13 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//345/244/251/347/201/276/346/261/202/347/224/237/346/265/201/emotion-psychology.md +13 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//345/244/251/347/201/276/346/261/202/347/224/237/346/265/201/examples.md +59 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//345/244/251/347/201/276/346/261/202/347/224/237/346/265/201/extract-state.md +126 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//345/244/251/347/201/276/346/261/202/347/224/237/346/265/201/genre-writer.md +191 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//345/244/251/347/201/276/346/261/202/347/224/237/346/265/201/opening-three.md +18 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//345/244/251/347/201/276/346/261/202/347/224/237/346/265/201/outline-master.md +59 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//345/244/251/347/201/276/346/261/202/347/224/237/346/265/201/outline-polish.md +39 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//345/244/251/347/201/276/346/261/202/347/224/237/346/265/201/outline-rewrite.md +70 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//345/244/251/347/201/276/346/261/202/347/224/237/346/265/201/outline-volume.md +89 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//345/244/251/347/201/276/346/261/202/347/224/237/346/265/201/polish-guide.md +349 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//345/244/251/347/201/276/346/261/202/347/224/237/346/265/201/polish.md +47 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//345/244/251/347/201/276/346/261/202/347/224/237/346/265/201/review.md +31 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//345/244/251/347/201/276/346/261/202/347/224/237/346/265/201/scene-description.md +14 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//345/244/251/347/201/276/346/261/202/347/224/237/346/265/201/substyle-writer.md +105 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//345/244/251/347/201/276/346/261/202/347/224/237/346/265/201/typesetting.md +60 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//345/244/251/347/201/276/346/261/202/347/224/237/346/265/201/writer-base.md +76 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/apocalypse//345/244/251/347/201/276/346/261/202/347/224/237/346/265/201/writing-user-prompt.md +92 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//346/234/253/350/267/257/346/261/202/347/224/237/chapter-hard-constraints.md +19 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//346/234/253/350/267/257/346/261/202/347/224/237/combat-scenes.md +18 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//346/234/253/350/267/257/346/261/202/347/224/237/continuity-summary.md +33 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//346/234/253/350/267/257/346/261/202/347/224/237/desire-description.md +315 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//346/234/253/350/267/257/346/261/202/347/224/237/dialogue-writing.md +13 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//346/234/253/350/267/257/346/261/202/347/224/237/emotion-psychology.md +13 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//346/234/253/350/267/257/346/261/202/347/224/237/examples.md +55 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//346/234/253/350/267/257/346/261/202/347/224/237/extract-state.md +126 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//346/234/253/350/267/257/346/261/202/347/224/237/genre-writer.md +120 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//346/234/253/350/267/257/346/261/202/347/224/237/opening-three.md +18 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//346/234/253/350/267/257/346/261/202/347/224/237/outline-master.md +59 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//346/234/253/350/267/257/346/261/202/347/224/237/outline-polish.md +39 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//346/234/253/350/267/257/346/261/202/347/224/237/outline-rewrite.md +70 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//346/234/253/350/267/257/346/261/202/347/224/237/outline-volume.md +89 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//346/234/253/350/267/257/346/261/202/347/224/237/polish-guide.md +350 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//346/234/253/350/267/257/346/261/202/347/224/237/polish.md +47 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//346/234/253/350/267/257/346/261/202/347/224/237/review.md +31 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//346/234/253/350/267/257/346/261/202/347/224/237/scene-description.md +14 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//346/234/253/350/267/257/346/261/202/347/224/237/substyle-writer.md +160 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//346/234/253/350/267/257/346/261/202/347/224/237/typesetting.md +60 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//346/234/253/350/267/257/346/261/202/347/224/237/writer-base.md +76 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//346/234/253/350/267/257/346/261/202/347/224/237/writing-user-prompt.md +92 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//346/235/203/350/260/213/345/200/276/350/275/247/chapter-hard-constraints.md +19 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//346/235/203/350/260/213/345/200/276/350/275/247/combat-scenes.md +18 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//346/235/203/350/260/213/345/200/276/350/275/247/continuity-summary.md +33 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//346/235/203/350/260/213/345/200/276/350/275/247/desire-description.md +315 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//346/235/203/350/260/213/345/200/276/350/275/247/dialogue-writing.md +13 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//346/235/203/350/260/213/345/200/276/350/275/247/emotion-psychology.md +13 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//346/235/203/350/260/213/345/200/276/350/275/247/examples.md +55 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//346/235/203/350/260/213/345/200/276/350/275/247/extract-state.md +126 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//346/235/203/350/260/213/345/200/276/350/275/247/genre-writer.md +120 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//346/235/203/350/260/213/345/200/276/350/275/247/opening-three.md +18 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//346/235/203/350/260/213/345/200/276/350/275/247/outline-master.md +59 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//346/235/203/350/260/213/345/200/276/350/275/247/outline-polish.md +39 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//346/235/203/350/260/213/345/200/276/350/275/247/outline-rewrite.md +70 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//346/235/203/350/260/213/345/200/276/350/275/247/outline-volume.md +89 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//346/235/203/350/260/213/345/200/276/350/275/247/polish-guide.md +350 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//346/235/203/350/260/213/345/200/276/350/275/247/polish.md +47 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//346/235/203/350/260/213/345/200/276/350/275/247/review.md +31 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//346/235/203/350/260/213/345/200/276/350/275/247/scene-description.md +14 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//346/235/203/350/260/213/345/200/276/350/275/247/substyle-writer.md +163 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//346/235/203/350/260/213/345/200/276/350/275/247/typesetting.md +60 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//346/235/203/350/260/213/345/200/276/350/275/247/writer-base.md +76 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//346/235/203/350/260/213/345/200/276/350/275/247/writing-user-prompt.md +92 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//351/273/221/346/232/227/344/277/256/344/273/231/chapter-hard-constraints.md +19 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//351/273/221/346/232/227/344/277/256/344/273/231/combat-scenes.md +18 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//351/273/221/346/232/227/344/277/256/344/273/231/continuity-summary.md +33 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//351/273/221/346/232/227/344/277/256/344/273/231/desire-description.md +315 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//351/273/221/346/232/227/344/277/256/344/273/231/dialogue-writing.md +13 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//351/273/221/346/232/227/344/277/256/344/273/231/emotion-psychology.md +13 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//351/273/221/346/232/227/344/277/256/344/273/231/examples.md +51 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//351/273/221/346/232/227/344/277/256/344/273/231/extract-state.md +126 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//351/273/221/346/232/227/344/277/256/344/273/231/genre-writer.md +120 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//351/273/221/346/232/227/344/277/256/344/273/231/opening-three.md +18 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//351/273/221/346/232/227/344/277/256/344/273/231/outline-master.md +59 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//351/273/221/346/232/227/344/277/256/344/273/231/outline-polish.md +39 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//351/273/221/346/232/227/344/277/256/344/273/231/outline-rewrite.md +70 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//351/273/221/346/232/227/344/277/256/344/273/231/outline-volume.md +89 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//351/273/221/346/232/227/344/277/256/344/273/231/polish-guide.md +350 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//351/273/221/346/232/227/344/277/256/344/273/231/polish.md +47 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//351/273/221/346/232/227/344/277/256/344/273/231/review.md +31 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//351/273/221/346/232/227/344/277/256/344/273/231/scene-description.md +14 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//351/273/221/346/232/227/344/277/256/344/273/231/substyle-writer.md +144 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//351/273/221/346/232/227/344/277/256/344/273/231/typesetting.md +60 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//351/273/221/346/232/227/344/277/256/344/273/231/writer-base.md +76 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dark//351/273/221/346/232/227/344/277/256/344/273/231/writing-user-prompt.md +92 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//350/261/252/351/227/250/344/277/256/347/275/227/345/234/272/chapter-hard-constraints.md +19 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//350/261/252/351/227/250/344/277/256/347/275/227/345/234/272/combat-scenes.md +18 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//350/261/252/351/227/250/344/277/256/347/275/227/345/234/272/continuity-summary.md +33 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//350/261/252/351/227/250/344/277/256/347/275/227/345/234/272/desire-description.md +314 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//350/261/252/351/227/250/344/277/256/347/275/227/345/234/272/dialogue-writing.md +13 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//350/261/252/351/227/250/344/277/256/347/275/227/345/234/272/emotion-psychology.md +13 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//350/261/252/351/227/250/344/277/256/347/275/227/345/234/272/examples.md +61 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//350/261/252/351/227/250/344/277/256/347/275/227/345/234/272/extract-state.md +126 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//350/261/252/351/227/250/344/277/256/347/275/227/345/234/272/genre-writer.md +174 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//350/261/252/351/227/250/344/277/256/347/275/227/345/234/272/opening-three.md +18 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//350/261/252/351/227/250/344/277/256/347/275/227/345/234/272/outline-master.md +59 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//350/261/252/351/227/250/344/277/256/347/275/227/345/234/272/outline-polish.md +39 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//350/261/252/351/227/250/344/277/256/347/275/227/345/234/272/outline-rewrite.md +70 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//350/261/252/351/227/250/344/277/256/347/275/227/345/234/272/outline-volume.md +89 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//350/261/252/351/227/250/344/277/256/347/275/227/345/234/272/polish-guide.md +349 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//350/261/252/351/227/250/344/277/256/347/275/227/345/234/272/polish.md +47 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//350/261/252/351/227/250/344/277/256/347/275/227/345/234/272/review.md +31 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//350/261/252/351/227/250/344/277/256/347/275/227/345/234/272/scene-description.md +14 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//350/261/252/351/227/250/344/277/256/347/275/227/345/234/272/substyle-writer.md +109 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//350/261/252/351/227/250/344/277/256/347/275/227/345/234/272/typesetting.md +60 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//350/261/252/351/227/250/344/277/256/347/275/227/345/234/272/writer-base.md +76 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//350/261/252/351/227/250/344/277/256/347/275/227/345/234/272/writing-user-prompt.md +92 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//350/277/275/345/246/273/347/201/253/350/221/254/345/234/272/chapter-hard-constraints.md +19 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//350/277/275/345/246/273/347/201/253/350/221/254/345/234/272/combat-scenes.md +18 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//350/277/275/345/246/273/347/201/253/350/221/254/345/234/272/continuity-summary.md +33 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//350/277/275/345/246/273/347/201/253/350/221/254/345/234/272/desire-description.md +314 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//350/277/275/345/246/273/347/201/253/350/221/254/345/234/272/dialogue-writing.md +13 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//350/277/275/345/246/273/347/201/253/350/221/254/345/234/272/emotion-psychology.md +13 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//350/277/275/345/246/273/347/201/253/350/221/254/345/234/272/examples.md +65 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//350/277/275/345/246/273/347/201/253/350/221/254/345/234/272/extract-state.md +126 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//350/277/275/345/246/273/347/201/253/350/221/254/345/234/272/genre-writer.md +174 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//350/277/275/345/246/273/347/201/253/350/221/254/345/234/272/opening-three.md +18 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//350/277/275/345/246/273/347/201/253/350/221/254/345/234/272/outline-master.md +59 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//350/277/275/345/246/273/347/201/253/350/221/254/345/234/272/outline-polish.md +39 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//350/277/275/345/246/273/347/201/253/350/221/254/345/234/272/outline-rewrite.md +70 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//350/277/275/345/246/273/347/201/253/350/221/254/345/234/272/outline-volume.md +89 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//350/277/275/345/246/273/347/201/253/350/221/254/345/234/272/polish-guide.md +349 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//350/277/275/345/246/273/347/201/253/350/221/254/345/234/272/polish.md +47 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//350/277/275/345/246/273/347/201/253/350/221/254/345/234/272/review.md +31 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//350/277/275/345/246/273/347/201/253/350/221/254/345/234/272/scene-description.md +14 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//350/277/275/345/246/273/347/201/253/350/221/254/345/234/272/substyle-writer.md +110 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//350/277/275/345/246/273/347/201/253/350/221/254/345/234/272/typesetting.md +60 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//350/277/275/345/246/273/347/201/253/350/221/254/345/234/272/writer-base.md +76 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//350/277/275/345/246/273/347/201/253/350/221/254/345/234/272/writing-user-prompt.md +92 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//351/253/230/347/224/234/346/213/211/346/211/257/chapter-hard-constraints.md +19 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//351/253/230/347/224/234/346/213/211/346/211/257/combat-scenes.md +18 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//351/253/230/347/224/234/346/213/211/346/211/257/continuity-summary.md +33 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//351/253/230/347/224/234/346/213/211/346/211/257/desire-description.md +314 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//351/253/230/347/224/234/346/213/211/346/211/257/dialogue-writing.md +13 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//351/253/230/347/224/234/346/213/211/346/211/257/emotion-psychology.md +13 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//351/253/230/347/224/234/346/213/211/346/211/257/examples.md +83 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//351/253/230/347/224/234/346/213/211/346/211/257/extract-state.md +126 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//351/253/230/347/224/234/346/213/211/346/211/257/genre-writer.md +174 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//351/253/230/347/224/234/346/213/211/346/211/257/opening-three.md +18 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//351/253/230/347/224/234/346/213/211/346/211/257/outline-master.md +59 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//351/253/230/347/224/234/346/213/211/346/211/257/outline-polish.md +39 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//351/253/230/347/224/234/346/213/211/346/211/257/outline-rewrite.md +70 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//351/253/230/347/224/234/346/213/211/346/211/257/outline-volume.md +89 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//351/253/230/347/224/234/346/213/211/346/211/257/polish-guide.md +349 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//351/253/230/347/224/234/346/213/211/346/211/257/polish.md +47 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//351/253/230/347/224/234/346/213/211/346/211/257/review.md +31 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//351/253/230/347/224/234/346/213/211/346/211/257/scene-description.md +14 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//351/253/230/347/224/234/346/213/211/346/211/257/substyle-writer.md +119 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//351/253/230/347/224/234/346/213/211/346/211/257/typesetting.md +60 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//351/253/230/347/224/234/346/213/211/346/211/257/writer-base.md +76 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/dog-blood-romance//351/253/230/347/224/234/346/213/211/346/211/257/writing-user-prompt.md +92 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//344/271/241/351/207/216/347/246/201/345/277/214/346/265/201/chapter-hard-constraints.md +19 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//344/271/241/351/207/216/347/246/201/345/277/214/346/265/201/combat-scenes.md +18 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//344/271/241/351/207/216/347/246/201/345/277/214/346/265/201/continuity-summary.md +33 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//344/271/241/351/207/216/347/246/201/345/277/214/346/265/201/desire-description.md +315 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//344/271/241/351/207/216/347/246/201/345/277/214/346/265/201/dialogue-writing.md +13 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//344/271/241/351/207/216/347/246/201/345/277/214/346/265/201/emotion-psychology.md +13 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//344/271/241/351/207/216/347/246/201/345/277/214/346/265/201/examples.md +53 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//344/271/241/351/207/216/347/246/201/345/277/214/346/265/201/extract-state.md +126 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//344/271/241/351/207/216/347/246/201/345/277/214/346/265/201/genre-writer.md +176 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//344/271/241/351/207/216/347/246/201/345/277/214/346/265/201/opening-three.md +18 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//344/271/241/351/207/216/347/246/201/345/277/214/346/265/201/outline-master.md +59 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//344/271/241/351/207/216/347/246/201/345/277/214/346/265/201/outline-polish.md +39 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//344/271/241/351/207/216/347/246/201/345/277/214/346/265/201/outline-rewrite.md +70 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//344/271/241/351/207/216/347/246/201/345/277/214/346/265/201/outline-volume.md +89 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//344/271/241/351/207/216/347/246/201/345/277/214/346/265/201/polish-guide.md +350 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//344/271/241/351/207/216/347/246/201/345/277/214/346/265/201/polish.md +47 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//344/271/241/351/207/216/347/246/201/345/277/214/346/265/201/review.md +31 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//344/271/241/351/207/216/347/246/201/345/277/214/346/265/201/scene-description.md +14 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//344/271/241/351/207/216/347/246/201/345/277/214/346/265/201/substyle-writer.md +82 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//344/271/241/351/207/216/347/246/201/345/277/214/346/265/201/typesetting.md +60 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//344/271/241/351/207/216/347/246/201/345/277/214/346/265/201/writer-base.md +76 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//344/271/241/351/207/216/347/246/201/345/277/214/346/265/201/writing-user-prompt.md +92 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//347/231/275/344/272/213/346/211/213/350/211/272/346/265/201/chapter-hard-constraints.md +19 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//347/231/275/344/272/213/346/211/213/350/211/272/346/265/201/combat-scenes.md +18 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//347/231/275/344/272/213/346/211/213/350/211/272/346/265/201/continuity-summary.md +33 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//347/231/275/344/272/213/346/211/213/350/211/272/346/265/201/desire-description.md +315 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//347/231/275/344/272/213/346/211/213/350/211/272/346/265/201/dialogue-writing.md +13 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//347/231/275/344/272/213/346/211/213/350/211/272/346/265/201/emotion-psychology.md +13 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//347/231/275/344/272/213/346/211/213/350/211/272/346/265/201/examples.md +59 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//347/231/275/344/272/213/346/211/213/350/211/272/346/265/201/extract-state.md +126 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//347/231/275/344/272/213/346/211/213/350/211/272/346/265/201/genre-writer.md +176 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//347/231/275/344/272/213/346/211/213/350/211/272/346/265/201/opening-three.md +18 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//347/231/275/344/272/213/346/211/213/350/211/272/346/265/201/outline-master.md +59 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//347/231/275/344/272/213/346/211/213/350/211/272/346/265/201/outline-polish.md +39 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//347/231/275/344/272/213/346/211/213/350/211/272/346/265/201/outline-rewrite.md +70 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//347/231/275/344/272/213/346/211/213/350/211/272/346/265/201/outline-volume.md +89 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//347/231/275/344/272/213/346/211/213/350/211/272/346/265/201/polish-guide.md +350 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//347/231/275/344/272/213/346/211/213/350/211/272/346/265/201/polish.md +47 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//347/231/275/344/272/213/346/211/213/350/211/272/346/265/201/review.md +31 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//347/231/275/344/272/213/346/211/213/350/211/272/346/265/201/scene-description.md +14 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//347/231/275/344/272/213/346/211/213/350/211/272/346/265/201/substyle-writer.md +94 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//347/231/275/344/272/213/346/211/213/350/211/272/346/265/201/typesetting.md +60 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//347/231/275/344/272/213/346/211/213/350/211/272/346/265/201/writer-base.md +76 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//347/231/275/344/272/213/346/211/213/350/211/272/346/265/201/writing-user-prompt.md +92 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//351/251/261/351/202/252/344/270/226/345/256/266/346/265/201/chapter-hard-constraints.md +19 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//351/251/261/351/202/252/344/270/226/345/256/266/346/265/201/combat-scenes.md +18 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//351/251/261/351/202/252/344/270/226/345/256/266/346/265/201/continuity-summary.md +33 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//351/251/261/351/202/252/344/270/226/345/256/266/346/265/201/desire-description.md +315 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//351/251/261/351/202/252/344/270/226/345/256/266/346/265/201/dialogue-writing.md +13 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//351/251/261/351/202/252/344/270/226/345/256/266/346/265/201/emotion-psychology.md +13 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//351/251/261/351/202/252/344/270/226/345/256/266/346/265/201/examples.md +57 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//351/251/261/351/202/252/344/270/226/345/256/266/346/265/201/extract-state.md +126 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//351/251/261/351/202/252/344/270/226/345/256/266/346/265/201/genre-writer.md +176 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//351/251/261/351/202/252/344/270/226/345/256/266/346/265/201/opening-three.md +18 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//351/251/261/351/202/252/344/270/226/345/256/266/346/265/201/outline-master.md +59 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//351/251/261/351/202/252/344/270/226/345/256/266/346/265/201/outline-polish.md +39 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//351/251/261/351/202/252/344/270/226/345/256/266/346/265/201/outline-rewrite.md +70 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//351/251/261/351/202/252/344/270/226/345/256/266/346/265/201/outline-volume.md +89 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//351/251/261/351/202/252/344/270/226/345/256/266/346/265/201/polish-guide.md +350 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//351/251/261/351/202/252/344/270/226/345/256/266/346/265/201/polish.md +47 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//351/251/261/351/202/252/344/270/226/345/256/266/346/265/201/review.md +31 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//351/251/261/351/202/252/344/270/226/345/256/266/346/265/201/scene-description.md +14 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//351/251/261/351/202/252/344/270/226/345/256/266/346/265/201/substyle-writer.md +95 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//351/251/261/351/202/252/344/270/226/345/256/266/346/265/201/typesetting.md +60 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//351/251/261/351/202/252/344/270/226/345/256/266/346/265/201/writer-base.md +76 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/folk-horror//351/251/261/351/202/252/344/270/226/345/256/266/346/265/201/writing-user-prompt.md +92 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//345/205/213/347/263/273/347/224/237/345/255/230/346/265/201/chapter-hard-constraints.md +19 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//345/205/213/347/263/273/347/224/237/345/255/230/346/265/201/combat-scenes.md +18 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//345/205/213/347/263/273/347/224/237/345/255/230/346/265/201/continuity-summary.md +33 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//345/205/213/347/263/273/347/224/237/345/255/230/346/265/201/desire-description.md +315 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//345/205/213/347/263/273/347/224/237/345/255/230/346/265/201/dialogue-writing.md +13 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//345/205/213/347/263/273/347/224/237/345/255/230/346/265/201/emotion-psychology.md +13 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//345/205/213/347/263/273/347/224/237/345/255/230/346/265/201/examples.md +51 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//345/205/213/347/263/273/347/224/237/345/255/230/346/265/201/extract-state.md +126 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//345/205/213/347/263/273/347/224/237/345/255/230/346/265/201/genre-writer.md +179 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//345/205/213/347/263/273/347/224/237/345/255/230/346/265/201/opening-three.md +18 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//345/205/213/347/263/273/347/224/237/345/255/230/346/265/201/outline-master.md +59 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//345/205/213/347/263/273/347/224/237/345/255/230/346/265/201/outline-polish.md +39 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//345/205/213/347/263/273/347/224/237/345/255/230/346/265/201/outline-rewrite.md +70 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//345/205/213/347/263/273/347/224/237/345/255/230/346/265/201/outline-volume.md +89 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//345/205/213/347/263/273/347/224/237/345/255/230/346/265/201/polish-guide.md +350 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//345/205/213/347/263/273/347/224/237/345/255/230/346/265/201/polish.md +47 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//345/205/213/347/263/273/347/224/237/345/255/230/346/265/201/review.md +31 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//345/205/213/347/263/273/347/224/237/345/255/230/346/265/201/scene-description.md +14 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//345/205/213/347/263/273/347/224/237/345/255/230/346/265/201/substyle-writer.md +94 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//345/205/213/347/263/273/347/224/237/345/255/230/346/265/201/typesetting.md +60 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//345/205/213/347/263/273/347/224/237/345/255/230/346/265/201/writer-base.md +76 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//345/205/213/347/263/273/347/224/237/345/255/230/346/265/201/writing-user-prompt.md +92 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//347/245/236/347/247/230/345/255/246/350/260/203/346/237/245/346/265/201/chapter-hard-constraints.md +19 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//347/245/236/347/247/230/345/255/246/350/260/203/346/237/245/346/265/201/combat-scenes.md +18 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//347/245/236/347/247/230/345/255/246/350/260/203/346/237/245/346/265/201/continuity-summary.md +33 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//347/245/236/347/247/230/345/255/246/350/260/203/346/237/245/346/265/201/desire-description.md +315 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//347/245/236/347/247/230/345/255/246/350/260/203/346/237/245/346/265/201/dialogue-writing.md +13 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//347/245/236/347/247/230/345/255/246/350/260/203/346/237/245/346/265/201/emotion-psychology.md +13 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//347/245/236/347/247/230/345/255/246/350/260/203/346/237/245/346/265/201/examples.md +53 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//347/245/236/347/247/230/345/255/246/350/260/203/346/237/245/346/265/201/extract-state.md +126 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//347/245/236/347/247/230/345/255/246/350/260/203/346/237/245/346/265/201/genre-writer.md +179 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//347/245/236/347/247/230/345/255/246/350/260/203/346/237/245/346/265/201/opening-three.md +18 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//347/245/236/347/247/230/345/255/246/350/260/203/346/237/245/346/265/201/outline-master.md +59 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//347/245/236/347/247/230/345/255/246/350/260/203/346/237/245/346/265/201/outline-polish.md +39 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//347/245/236/347/247/230/345/255/246/350/260/203/346/237/245/346/265/201/outline-rewrite.md +70 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//347/245/236/347/247/230/345/255/246/350/260/203/346/237/245/346/265/201/outline-volume.md +89 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//347/245/236/347/247/230/345/255/246/350/260/203/346/237/245/346/265/201/polish-guide.md +350 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//347/245/236/347/247/230/345/255/246/350/260/203/346/237/245/346/265/201/polish.md +47 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//347/245/236/347/247/230/345/255/246/350/260/203/346/237/245/346/265/201/review.md +31 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//347/245/236/347/247/230/345/255/246/350/260/203/346/237/245/346/265/201/scene-description.md +14 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//347/245/236/347/247/230/345/255/246/350/260/203/346/237/245/346/265/201/substyle-writer.md +90 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//347/245/236/347/247/230/345/255/246/350/260/203/346/237/245/346/265/201/typesetting.md +60 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//347/245/236/347/247/230/345/255/246/350/260/203/346/237/245/346/265/201/writer-base.md +76 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//347/245/236/347/247/230/345/255/246/350/260/203/346/237/245/346/265/201/writing-user-prompt.md +92 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//351/200/224/345/276/204/346/231/213/345/215/207/346/265/201/chapter-hard-constraints.md +19 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//351/200/224/345/276/204/346/231/213/345/215/207/346/265/201/combat-scenes.md +18 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//351/200/224/345/276/204/346/231/213/345/215/207/346/265/201/continuity-summary.md +33 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//351/200/224/345/276/204/346/231/213/345/215/207/346/265/201/desire-description.md +315 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//351/200/224/345/276/204/346/231/213/345/215/207/346/265/201/dialogue-writing.md +13 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//351/200/224/345/276/204/346/231/213/345/215/207/346/265/201/emotion-psychology.md +13 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//351/200/224/345/276/204/346/231/213/345/215/207/346/265/201/examples.md +53 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//351/200/224/345/276/204/346/231/213/345/215/207/346/265/201/extract-state.md +126 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//351/200/224/345/276/204/346/231/213/345/215/207/346/265/201/genre-writer.md +179 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//351/200/224/345/276/204/346/231/213/345/215/207/346/265/201/opening-three.md +18 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//351/200/224/345/276/204/346/231/213/345/215/207/346/265/201/outline-master.md +59 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//351/200/224/345/276/204/346/231/213/345/215/207/346/265/201/outline-polish.md +39 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//351/200/224/345/276/204/346/231/213/345/215/207/346/265/201/outline-rewrite.md +70 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//351/200/224/345/276/204/346/231/213/345/215/207/346/265/201/outline-volume.md +89 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//351/200/224/345/276/204/346/231/213/345/215/207/346/265/201/polish-guide.md +350 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//351/200/224/345/276/204/346/231/213/345/215/207/346/265/201/polish.md +47 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//351/200/224/345/276/204/346/231/213/345/215/207/346/265/201/review.md +31 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//351/200/224/345/276/204/346/231/213/345/215/207/346/265/201/scene-description.md +14 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//351/200/224/345/276/204/346/231/213/345/215/207/346/265/201/substyle-writer.md +86 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//351/200/224/345/276/204/346/231/213/345/215/207/346/265/201/typesetting.md +60 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//351/200/224/345/276/204/346/231/213/345/215/207/346/265/201/writer-base.md +76 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/mystic-sequence//351/200/224/345/276/204/346/231/213/345/215/207/346/265/201/writing-user-prompt.md +92 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//345/256/205/346/226/227/351/200/206/350/242/255/chapter-hard-constraints.md +19 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//345/256/205/346/226/227/351/200/206/350/242/255/combat-scenes.md +18 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//345/256/205/346/226/227/351/200/206/350/242/255/continuity-summary.md +33 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//345/256/205/346/226/227/351/200/206/350/242/255/desire-description.md +314 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//345/256/205/346/226/227/351/200/206/350/242/255/dialogue-writing.md +13 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//345/256/205/346/226/227/351/200/206/350/242/255/emotion-psychology.md +13 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//345/256/205/346/226/227/351/200/206/350/242/255/examples.md +61 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//345/256/205/346/226/227/351/200/206/350/242/255/extract-state.md +126 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//345/256/205/346/226/227/351/200/206/350/242/255/genre-writer.md +171 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//345/256/205/346/226/227/351/200/206/350/242/255/opening-three.md +18 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//345/256/205/346/226/227/351/200/206/350/242/255/outline-master.md +59 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//345/256/205/346/226/227/351/200/206/350/242/255/outline-polish.md +39 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//345/256/205/346/226/227/351/200/206/350/242/255/outline-rewrite.md +70 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//345/256/205/346/226/227/351/200/206/350/242/255/outline-volume.md +89 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//345/256/205/346/226/227/351/200/206/350/242/255/polish-guide.md +349 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//345/256/205/346/226/227/351/200/206/350/242/255/polish.md +47 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//345/256/205/346/226/227/351/200/206/350/242/255/review.md +31 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//345/256/205/346/226/227/351/200/206/350/242/255/scene-description.md +14 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//345/256/205/346/226/227/351/200/206/350/242/255/substyle-writer.md +80 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//345/256/205/346/226/227/351/200/206/350/242/255/typesetting.md +60 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//345/256/205/346/226/227/351/200/206/350/242/255/writer-base.md +76 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//345/256/205/346/226/227/351/200/206/350/242/255/writing-user-prompt.md +92 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//345/256/253/346/226/227/346/235/203/350/260/213/chapter-hard-constraints.md +19 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//345/256/253/346/226/227/346/235/203/350/260/213/combat-scenes.md +18 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//345/256/253/346/226/227/346/235/203/350/260/213/continuity-summary.md +33 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//345/256/253/346/226/227/346/235/203/350/260/213/desire-description.md +314 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//345/256/253/346/226/227/346/235/203/350/260/213/dialogue-writing.md +13 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//345/256/253/346/226/227/346/235/203/350/260/213/emotion-psychology.md +13 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//345/256/253/346/226/227/346/235/203/350/260/213/examples.md +63 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//345/256/253/346/226/227/346/235/203/350/260/213/extract-state.md +126 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//345/256/253/346/226/227/346/235/203/350/260/213/genre-writer.md +171 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//345/256/253/346/226/227/346/235/203/350/260/213/opening-three.md +18 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//345/256/253/346/226/227/346/235/203/350/260/213/outline-master.md +59 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//345/256/253/346/226/227/346/235/203/350/260/213/outline-polish.md +39 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//345/256/253/346/226/227/346/235/203/350/260/213/outline-rewrite.md +70 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//345/256/253/346/226/227/346/235/203/350/260/213/outline-volume.md +89 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//345/256/253/346/226/227/346/235/203/350/260/213/polish-guide.md +349 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//345/256/253/346/226/227/346/235/203/350/260/213/polish.md +47 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//345/256/253/346/226/227/346/235/203/350/260/213/review.md +31 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//345/256/253/346/226/227/346/235/203/350/260/213/scene-description.md +14 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//345/256/253/346/226/227/346/235/203/350/260/213/substyle-writer.md +110 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//345/256/253/346/226/227/346/235/203/350/260/213/typesetting.md +60 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//345/256/253/346/226/227/346/235/203/350/260/213/writer-base.md +76 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//345/256/253/346/226/227/346/235/203/350/260/213/writing-user-prompt.md +92 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//346/234/235/345/240/202/350/201/224/345/247/273/chapter-hard-constraints.md +19 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//346/234/235/345/240/202/350/201/224/345/247/273/combat-scenes.md +18 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//346/234/235/345/240/202/350/201/224/345/247/273/continuity-summary.md +33 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//346/234/235/345/240/202/350/201/224/345/247/273/desire-description.md +314 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//346/234/235/345/240/202/350/201/224/345/247/273/dialogue-writing.md +13 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//346/234/235/345/240/202/350/201/224/345/247/273/emotion-psychology.md +13 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//346/234/235/345/240/202/350/201/224/345/247/273/examples.md +67 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//346/234/235/345/240/202/350/201/224/345/247/273/extract-state.md +126 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//346/234/235/345/240/202/350/201/224/345/247/273/genre-writer.md +171 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//346/234/235/345/240/202/350/201/224/345/247/273/opening-three.md +18 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//346/234/235/345/240/202/350/201/224/345/247/273/outline-master.md +59 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//346/234/235/345/240/202/350/201/224/345/247/273/outline-polish.md +39 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//346/234/235/345/240/202/350/201/224/345/247/273/outline-rewrite.md +70 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//346/234/235/345/240/202/350/201/224/345/247/273/outline-volume.md +89 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//346/234/235/345/240/202/350/201/224/345/247/273/polish-guide.md +349 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//346/234/235/345/240/202/350/201/224/345/247/273/polish.md +47 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//346/234/235/345/240/202/350/201/224/345/247/273/review.md +31 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//346/234/235/345/240/202/350/201/224/345/247/273/scene-description.md +14 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//346/234/235/345/240/202/350/201/224/345/247/273/substyle-writer.md +83 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//346/234/235/345/240/202/350/201/224/345/247/273/typesetting.md +60 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//346/234/235/345/240/202/350/201/224/345/247/273/writer-base.md +76 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/period-drama//346/234/235/345/240/202/350/201/224/345/247/273/writing-user-prompt.md +92 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//350/201/214/345/234/272/351/200/206/350/242/255/chapter-hard-constraints.md +19 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//350/201/214/345/234/272/351/200/206/350/242/255/combat-scenes.md +18 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//350/201/214/345/234/272/351/200/206/350/242/255/continuity-summary.md +33 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//350/201/214/345/234/272/351/200/206/350/242/255/desire-description.md +314 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//350/201/214/345/234/272/351/200/206/350/242/255/dialogue-writing.md +13 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//350/201/214/345/234/272/351/200/206/350/242/255/emotion-psychology.md +13 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//350/201/214/345/234/272/351/200/206/350/242/255/examples.md +63 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//350/201/214/345/234/272/351/200/206/350/242/255/extract-state.md +126 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//350/201/214/345/234/272/351/200/206/350/242/255/genre-writer.md +145 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//350/201/214/345/234/272/351/200/206/350/242/255/opening-three.md +18 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//350/201/214/345/234/272/351/200/206/350/242/255/outline-master.md +59 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//350/201/214/345/234/272/351/200/206/350/242/255/outline-polish.md +39 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//350/201/214/345/234/272/351/200/206/350/242/255/outline-rewrite.md +70 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//350/201/214/345/234/272/351/200/206/350/242/255/outline-volume.md +89 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//350/201/214/345/234/272/351/200/206/350/242/255/polish-guide.md +349 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//350/201/214/345/234/272/351/200/206/350/242/255/polish.md +47 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//350/201/214/345/234/272/351/200/206/350/242/255/review.md +31 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//350/201/214/345/234/272/351/200/206/350/242/255/scene-description.md +14 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//350/201/214/345/234/272/351/200/206/350/242/255/substyle-writer.md +73 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//350/201/214/345/234/272/351/200/206/350/242/255/typesetting.md +60 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//350/201/214/345/234/272/351/200/206/350/242/255/writer-base.md +76 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//350/201/214/345/234/272/351/200/206/350/242/255/writing-user-prompt.md +92 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//351/203/275/345/270/202/345/274/202/350/203/275/chapter-hard-constraints.md +19 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//351/203/275/345/270/202/345/274/202/350/203/275/combat-scenes.md +18 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//351/203/275/345/270/202/345/274/202/350/203/275/continuity-summary.md +33 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//351/203/275/345/270/202/345/274/202/350/203/275/desire-description.md +314 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//351/203/275/345/270/202/345/274/202/350/203/275/dialogue-writing.md +13 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//351/203/275/345/270/202/345/274/202/350/203/275/emotion-psychology.md +13 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//351/203/275/345/270/202/345/274/202/350/203/275/examples.md +65 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//351/203/275/345/270/202/345/274/202/350/203/275/extract-state.md +126 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//351/203/275/345/270/202/345/274/202/350/203/275/genre-writer.md +145 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//351/203/275/345/270/202/345/274/202/350/203/275/opening-three.md +18 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//351/203/275/345/270/202/345/274/202/350/203/275/outline-master.md +59 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//351/203/275/345/270/202/345/274/202/350/203/275/outline-polish.md +39 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//351/203/275/345/270/202/345/274/202/350/203/275/outline-rewrite.md +70 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//351/203/275/345/270/202/345/274/202/350/203/275/outline-volume.md +89 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//351/203/275/345/270/202/345/274/202/350/203/275/polish-guide.md +349 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//351/203/275/345/270/202/345/274/202/350/203/275/polish.md +47 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//351/203/275/345/270/202/345/274/202/350/203/275/review.md +31 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//351/203/275/345/270/202/345/274/202/350/203/275/scene-description.md +14 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//351/203/275/345/270/202/345/274/202/350/203/275/substyle-writer.md +63 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//351/203/275/345/270/202/345/274/202/350/203/275/typesetting.md +60 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//351/203/275/345/270/202/345/274/202/350/203/275/writer-base.md +76 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//351/203/275/345/270/202/345/274/202/350/203/275/writing-user-prompt.md +92 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//351/203/275/345/270/202/346/210/220/351/225/277/chapter-hard-constraints.md +19 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//351/203/275/345/270/202/346/210/220/351/225/277/combat-scenes.md +18 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//351/203/275/345/270/202/346/210/220/351/225/277/continuity-summary.md +33 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//351/203/275/345/270/202/346/210/220/351/225/277/desire-description.md +314 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//351/203/275/345/270/202/346/210/220/351/225/277/dialogue-writing.md +13 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//351/203/275/345/270/202/346/210/220/351/225/277/emotion-psychology.md +13 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//351/203/275/345/270/202/346/210/220/351/225/277/examples.md +61 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//351/203/275/345/270/202/346/210/220/351/225/277/extract-state.md +126 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//351/203/275/345/270/202/346/210/220/351/225/277/genre-writer.md +145 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//351/203/275/345/270/202/346/210/220/351/225/277/opening-three.md +18 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//351/203/275/345/270/202/346/210/220/351/225/277/outline-master.md +59 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//351/203/275/345/270/202/346/210/220/351/225/277/outline-polish.md +39 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//351/203/275/345/270/202/346/210/220/351/225/277/outline-rewrite.md +70 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//351/203/275/345/270/202/346/210/220/351/225/277/outline-volume.md +89 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//351/203/275/345/270/202/346/210/220/351/225/277/polish-guide.md +349 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//351/203/275/345/270/202/346/210/220/351/225/277/polish.md +47 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//351/203/275/345/270/202/346/210/220/351/225/277/review.md +31 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//351/203/275/345/270/202/346/210/220/351/225/277/scene-description.md +14 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//351/203/275/345/270/202/346/210/220/351/225/277/substyle-writer.md +64 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//351/203/275/345/270/202/346/210/220/351/225/277/typesetting.md +60 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//351/203/275/345/270/202/346/210/220/351/225/277/writer-base.md +76 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/realistic//351/203/275/345/270/202/346/210/220/351/225/277/writing-user-prompt.md +92 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//345/257/206/345/256/244/350/260/203/346/237/245/346/265/201/chapter-hard-constraints.md +19 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//345/257/206/345/256/244/350/260/203/346/237/245/346/265/201/combat-scenes.md +18 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//345/257/206/345/256/244/350/260/203/346/237/245/346/265/201/continuity-summary.md +33 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//345/257/206/345/256/244/350/260/203/346/237/245/346/265/201/desire-description.md +315 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//345/257/206/345/256/244/350/260/203/346/237/245/346/265/201/dialogue-writing.md +13 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//345/257/206/345/256/244/350/260/203/346/237/245/346/265/201/emotion-psychology.md +13 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//345/257/206/345/256/244/350/260/203/346/237/245/346/265/201/examples.md +49 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//345/257/206/345/256/244/350/260/203/346/237/245/346/265/201/extract-state.md +126 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//345/257/206/345/256/244/350/260/203/346/237/245/346/265/201/genre-writer.md +143 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//345/257/206/345/256/244/350/260/203/346/237/245/346/265/201/opening-three.md +18 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//345/257/206/345/256/244/350/260/203/346/237/245/346/265/201/outline-master.md +59 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//345/257/206/345/256/244/350/260/203/346/237/245/346/265/201/outline-polish.md +39 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//345/257/206/345/256/244/350/260/203/346/237/245/346/265/201/outline-rewrite.md +70 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//345/257/206/345/256/244/350/260/203/346/237/245/346/265/201/outline-volume.md +89 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//345/257/206/345/256/244/350/260/203/346/237/245/346/265/201/polish-guide.md +350 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//345/257/206/345/256/244/350/260/203/346/237/245/346/265/201/polish.md +47 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//345/257/206/345/256/244/350/260/203/346/237/245/346/265/201/review.md +31 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//345/257/206/345/256/244/350/260/203/346/237/245/346/265/201/scene-description.md +14 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//345/257/206/345/256/244/350/260/203/346/237/245/346/265/201/substyle-writer.md +98 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//345/257/206/345/256/244/350/260/203/346/237/245/346/265/201/typesetting.md +60 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//345/257/206/345/256/244/350/260/203/346/237/245/346/265/201/writer-base.md +76 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//345/257/206/345/256/244/350/260/203/346/237/245/346/265/201/writing-user-prompt.md +92 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//350/247/204/345/210/231/347/224/237/345/255/230/346/265/201/chapter-hard-constraints.md +19 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//350/247/204/345/210/231/347/224/237/345/255/230/346/265/201/combat-scenes.md +18 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//350/247/204/345/210/231/347/224/237/345/255/230/346/265/201/continuity-summary.md +33 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//350/247/204/345/210/231/347/224/237/345/255/230/346/265/201/desire-description.md +315 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//350/247/204/345/210/231/347/224/237/345/255/230/346/265/201/dialogue-writing.md +13 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//350/247/204/345/210/231/347/224/237/345/255/230/346/265/201/emotion-psychology.md +13 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//350/247/204/345/210/231/347/224/237/345/255/230/346/265/201/examples.md +53 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//350/247/204/345/210/231/347/224/237/345/255/230/346/265/201/extract-state.md +126 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//350/247/204/345/210/231/347/224/237/345/255/230/346/265/201/genre-writer.md +143 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//350/247/204/345/210/231/347/224/237/345/255/230/346/265/201/opening-three.md +18 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//350/247/204/345/210/231/347/224/237/345/255/230/346/265/201/outline-master.md +59 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//350/247/204/345/210/231/347/224/237/345/255/230/346/265/201/outline-polish.md +39 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//350/247/204/345/210/231/347/224/237/345/255/230/346/265/201/outline-rewrite.md +70 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//350/247/204/345/210/231/347/224/237/345/255/230/346/265/201/outline-volume.md +89 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//350/247/204/345/210/231/347/224/237/345/255/230/346/265/201/polish-guide.md +350 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//350/247/204/345/210/231/347/224/237/345/255/230/346/265/201/polish.md +47 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//350/247/204/345/210/231/347/224/237/345/255/230/346/265/201/review.md +31 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//350/247/204/345/210/231/347/224/237/345/255/230/346/265/201/scene-description.md +14 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//350/247/204/345/210/231/347/224/237/345/255/230/346/265/201/substyle-writer.md +94 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//350/247/204/345/210/231/347/224/237/345/255/230/346/265/201/typesetting.md +60 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//350/247/204/345/210/231/347/224/237/345/255/230/346/265/201/writer-base.md +76 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//350/247/204/345/210/231/347/224/237/345/255/230/346/265/201/writing-user-prompt.md +92 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//350/257/241/345/261/200/346/216/250/346/274/224/346/265/201/chapter-hard-constraints.md +19 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//350/257/241/345/261/200/346/216/250/346/274/224/346/265/201/combat-scenes.md +18 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//350/257/241/345/261/200/346/216/250/346/274/224/346/265/201/continuity-summary.md +33 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//350/257/241/345/261/200/346/216/250/346/274/224/346/265/201/desire-description.md +315 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//350/257/241/345/261/200/346/216/250/346/274/224/346/265/201/dialogue-writing.md +13 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//350/257/241/345/261/200/346/216/250/346/274/224/346/265/201/emotion-psychology.md +13 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//350/257/241/345/261/200/346/216/250/346/274/224/346/265/201/examples.md +53 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//350/257/241/345/261/200/346/216/250/346/274/224/346/265/201/extract-state.md +126 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//350/257/241/345/261/200/346/216/250/346/274/224/346/265/201/genre-writer.md +143 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//350/257/241/345/261/200/346/216/250/346/274/224/346/265/201/opening-three.md +18 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//350/257/241/345/261/200/346/216/250/346/274/224/346/265/201/outline-master.md +59 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//350/257/241/345/261/200/346/216/250/346/274/224/346/265/201/outline-polish.md +39 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//350/257/241/345/261/200/346/216/250/346/274/224/346/265/201/outline-rewrite.md +70 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//350/257/241/345/261/200/346/216/250/346/274/224/346/265/201/outline-volume.md +89 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//350/257/241/345/261/200/346/216/250/346/274/224/346/265/201/polish-guide.md +350 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//350/257/241/345/261/200/346/216/250/346/274/224/346/265/201/polish.md +47 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//350/257/241/345/261/200/346/216/250/346/274/224/346/265/201/review.md +31 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//350/257/241/345/261/200/346/216/250/346/274/224/346/265/201/scene-description.md +14 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//350/257/241/345/261/200/346/216/250/346/274/224/346/265/201/substyle-writer.md +94 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//350/257/241/345/261/200/346/216/250/346/274/224/346/265/201/typesetting.md +60 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//350/257/241/345/261/200/346/216/250/346/274/224/346/265/201/writer-base.md +76 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/rules-mystery//350/257/241/345/261/200/346/216/250/346/274/224/346/265/201/writing-user-prompt.md +92 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//345/272/237/345/234/237/346/224/271/351/200/240/346/265/201/chapter-hard-constraints.md +19 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//345/272/237/345/234/237/346/224/271/351/200/240/346/265/201/combat-scenes.md +18 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//345/272/237/345/234/237/346/224/271/351/200/240/346/265/201/continuity-summary.md +33 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//345/272/237/345/234/237/346/224/271/351/200/240/346/265/201/desire-description.md +314 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//345/272/237/345/234/237/346/224/271/351/200/240/346/265/201/dialogue-writing.md +13 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//345/272/237/345/234/237/346/224/271/351/200/240/346/265/201/emotion-psychology.md +13 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//345/272/237/345/234/237/346/224/271/351/200/240/346/265/201/examples.md +59 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//345/272/237/345/234/237/346/224/271/351/200/240/346/265/201/extract-state.md +126 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//345/272/237/345/234/237/346/224/271/351/200/240/346/265/201/genre-writer.md +188 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//345/272/237/345/234/237/346/224/271/351/200/240/346/265/201/opening-three.md +18 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//345/272/237/345/234/237/346/224/271/351/200/240/346/265/201/outline-master.md +59 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//345/272/237/345/234/237/346/224/271/351/200/240/346/265/201/outline-polish.md +39 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//345/272/237/345/234/237/346/224/271/351/200/240/346/265/201/outline-rewrite.md +70 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//345/272/237/345/234/237/346/224/271/351/200/240/346/265/201/outline-volume.md +89 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//345/272/237/345/234/237/346/224/271/351/200/240/346/265/201/polish-guide.md +349 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//345/272/237/345/234/237/346/224/271/351/200/240/346/265/201/polish.md +47 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//345/272/237/345/234/237/346/224/271/351/200/240/346/265/201/review.md +31 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//345/272/237/345/234/237/346/224/271/351/200/240/346/265/201/scene-description.md +14 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//345/272/237/345/234/237/346/224/271/351/200/240/346/265/201/substyle-writer.md +96 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//345/272/237/345/234/237/346/224/271/351/200/240/346/265/201/typesetting.md +60 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//345/272/237/345/234/237/346/224/271/351/200/240/346/265/201/writer-base.md +76 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//345/272/237/345/234/237/346/224/271/351/200/240/346/265/201/writing-user-prompt.md +92 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//346/230/237/351/231/205/346/226/207/346/230/216/346/265/201/chapter-hard-constraints.md +19 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//346/230/237/351/231/205/346/226/207/346/230/216/346/265/201/combat-scenes.md +18 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//346/230/237/351/231/205/346/226/207/346/230/216/346/265/201/continuity-summary.md +33 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//346/230/237/351/231/205/346/226/207/346/230/216/346/265/201/desire-description.md +314 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//346/230/237/351/231/205/346/226/207/346/230/216/346/265/201/dialogue-writing.md +13 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//346/230/237/351/231/205/346/226/207/346/230/216/346/265/201/emotion-psychology.md +13 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//346/230/237/351/231/205/346/226/207/346/230/216/346/265/201/examples.md +61 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//346/230/237/351/231/205/346/226/207/346/230/216/346/265/201/extract-state.md +126 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//346/230/237/351/231/205/346/226/207/346/230/216/346/265/201/genre-writer.md +188 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//346/230/237/351/231/205/346/226/207/346/230/216/346/265/201/opening-three.md +18 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//346/230/237/351/231/205/346/226/207/346/230/216/346/265/201/outline-master.md +59 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//346/230/237/351/231/205/346/226/207/346/230/216/346/265/201/outline-polish.md +39 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//346/230/237/351/231/205/346/226/207/346/230/216/346/265/201/outline-rewrite.md +70 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//346/230/237/351/231/205/346/226/207/346/230/216/346/265/201/outline-volume.md +89 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//346/230/237/351/231/205/346/226/207/346/230/216/346/265/201/polish-guide.md +349 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//346/230/237/351/231/205/346/226/207/346/230/216/346/265/201/polish.md +47 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//346/230/237/351/231/205/346/226/207/346/230/216/346/265/201/review.md +31 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//346/230/237/351/231/205/346/226/207/346/230/216/346/265/201/scene-description.md +14 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//346/230/237/351/231/205/346/226/207/346/230/216/346/265/201/substyle-writer.md +86 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//346/230/237/351/231/205/346/226/207/346/230/216/346/265/201/typesetting.md +60 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//346/230/237/351/231/205/346/226/207/346/230/216/346/265/201/writer-base.md +76 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//346/230/237/351/231/205/346/226/207/346/230/216/346/265/201/writing-user-prompt.md +92 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//346/234/272/347/224/262/346/210/230/344/272/211/346/265/201/chapter-hard-constraints.md +19 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//346/234/272/347/224/262/346/210/230/344/272/211/346/265/201/combat-scenes.md +18 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//346/234/272/347/224/262/346/210/230/344/272/211/346/265/201/continuity-summary.md +33 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//346/234/272/347/224/262/346/210/230/344/272/211/346/265/201/desire-description.md +314 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//346/234/272/347/224/262/346/210/230/344/272/211/346/265/201/dialogue-writing.md +13 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//346/234/272/347/224/262/346/210/230/344/272/211/346/265/201/emotion-psychology.md +13 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//346/234/272/347/224/262/346/210/230/344/272/211/346/265/201/examples.md +55 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//346/234/272/347/224/262/346/210/230/344/272/211/346/265/201/extract-state.md +126 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//346/234/272/347/224/262/346/210/230/344/272/211/346/265/201/genre-writer.md +188 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//346/234/272/347/224/262/346/210/230/344/272/211/346/265/201/opening-three.md +18 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//346/234/272/347/224/262/346/210/230/344/272/211/346/265/201/outline-master.md +59 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//346/234/272/347/224/262/346/210/230/344/272/211/346/265/201/outline-polish.md +39 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//346/234/272/347/224/262/346/210/230/344/272/211/346/265/201/outline-rewrite.md +70 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//346/234/272/347/224/262/346/210/230/344/272/211/346/265/201/outline-volume.md +89 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//346/234/272/347/224/262/346/210/230/344/272/211/346/265/201/polish-guide.md +349 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//346/234/272/347/224/262/346/210/230/344/272/211/346/265/201/polish.md +47 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//346/234/272/347/224/262/346/210/230/344/272/211/346/265/201/review.md +31 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//346/234/272/347/224/262/346/210/230/344/272/211/346/265/201/scene-description.md +14 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//346/234/272/347/224/262/346/210/230/344/272/211/346/265/201/substyle-writer.md +82 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//346/234/272/347/224/262/346/210/230/344/272/211/346/265/201/typesetting.md +60 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//346/234/272/347/224/262/346/210/230/344/272/211/346/265/201/writer-base.md +76 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/scifi//346/234/272/347/224/262/346/210/230/344/272/211/346/265/201/writing-user-prompt.md +92 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//345/207/241/344/272/272/346/265/201/chapter-hard-constraints.md +19 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//345/207/241/344/272/272/346/265/201/combat-scenes.md +18 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//345/207/241/344/272/272/346/265/201/continuity-summary.md +34 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//345/207/241/344/272/272/346/265/201/desire-description.md +314 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//345/207/241/344/272/272/346/265/201/dialogue-writing.md +13 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//345/207/241/344/272/272/346/265/201/emotion-psychology.md +13 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//345/207/241/344/272/272/346/265/201/examples.md +53 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//345/207/241/344/272/272/346/265/201/extract-state.md +126 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//345/207/241/344/272/272/346/265/201/genre-writer.md +197 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//345/207/241/344/272/272/346/265/201/opening-three.md +18 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//345/207/241/344/272/272/346/265/201/outline-master.md +60 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//345/207/241/344/272/272/346/265/201/outline-polish.md +39 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//345/207/241/344/272/272/346/265/201/outline-rewrite.md +71 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//345/207/241/344/272/272/346/265/201/outline-volume.md +90 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//345/207/241/344/272/272/346/265/201/polish-guide.md +349 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//345/207/241/344/272/272/346/265/201/polish.md +47 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//345/207/241/344/272/272/346/265/201/review.md +31 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//345/207/241/344/272/272/346/265/201/scene-description.md +14 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//345/207/241/344/272/272/346/265/201/substyle-writer.md +92 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//345/207/241/344/272/272/346/265/201/typesetting.md +60 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//345/207/241/344/272/272/346/265/201/writer-base.md +76 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//345/207/241/344/272/272/346/265/201/writing-user-prompt.md +92 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//345/256/227/351/227/250/346/210/220/351/225/277/346/265/201/chapter-hard-constraints.md +19 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//345/256/227/351/227/250/346/210/220/351/225/277/346/265/201/combat-scenes.md +18 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//345/256/227/351/227/250/346/210/220/351/225/277/346/265/201/continuity-summary.md +33 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//345/256/227/351/227/250/346/210/220/351/225/277/346/265/201/desire-description.md +314 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//345/256/227/351/227/250/346/210/220/351/225/277/346/265/201/dialogue-writing.md +13 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//345/256/227/351/227/250/346/210/220/351/225/277/346/265/201/emotion-psychology.md +13 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//345/256/227/351/227/250/346/210/220/351/225/277/346/265/201/examples.md +57 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//345/256/227/351/227/250/346/210/220/351/225/277/346/265/201/extract-state.md +126 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//345/256/227/351/227/250/346/210/220/351/225/277/346/265/201/genre-writer.md +197 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//345/256/227/351/227/250/346/210/220/351/225/277/346/265/201/opening-three.md +18 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//345/256/227/351/227/250/346/210/220/351/225/277/346/265/201/outline-master.md +60 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//345/256/227/351/227/250/346/210/220/351/225/277/346/265/201/outline-polish.md +39 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//345/256/227/351/227/250/346/210/220/351/225/277/346/265/201/outline-rewrite.md +71 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//345/256/227/351/227/250/346/210/220/351/225/277/346/265/201/outline-volume.md +90 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//345/256/227/351/227/250/346/210/220/351/225/277/346/265/201/polish-guide.md +349 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//345/256/227/351/227/250/346/210/220/351/225/277/346/265/201/polish.md +47 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//345/256/227/351/227/250/346/210/220/351/225/277/346/265/201/review.md +31 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//345/256/227/351/227/250/346/210/220/351/225/277/346/265/201/scene-description.md +14 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//345/256/227/351/227/250/346/210/220/351/225/277/346/265/201/substyle-writer.md +12 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//345/256/227/351/227/250/346/210/220/351/225/277/346/265/201/typesetting.md +60 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//345/256/227/351/227/250/346/210/220/351/225/277/346/265/201/writer-base.md +76 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//345/256/227/351/227/250/346/210/220/351/225/277/346/265/201/writing-user-prompt.md +92 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//347/203/255/350/241/200/345/215/207/347/272/247/346/265/201/chapter-hard-constraints.md +19 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//347/203/255/350/241/200/345/215/207/347/272/247/346/265/201/combat-scenes.md +18 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//347/203/255/350/241/200/345/215/207/347/272/247/346/265/201/continuity-summary.md +33 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//347/203/255/350/241/200/345/215/207/347/272/247/346/265/201/desire-description.md +314 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//347/203/255/350/241/200/345/215/207/347/272/247/346/265/201/dialogue-writing.md +13 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//347/203/255/350/241/200/345/215/207/347/272/247/346/265/201/emotion-psychology.md +13 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//347/203/255/350/241/200/345/215/207/347/272/247/346/265/201/examples.md +65 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//347/203/255/350/241/200/345/215/207/347/272/247/346/265/201/extract-state.md +126 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//347/203/255/350/241/200/345/215/207/347/272/247/346/265/201/genre-writer.md +197 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//347/203/255/350/241/200/345/215/207/347/272/247/346/265/201/opening-three.md +18 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//347/203/255/350/241/200/345/215/207/347/272/247/346/265/201/outline-master.md +60 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//347/203/255/350/241/200/345/215/207/347/272/247/346/265/201/outline-polish.md +39 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//347/203/255/350/241/200/345/215/207/347/272/247/346/265/201/outline-rewrite.md +71 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//347/203/255/350/241/200/345/215/207/347/272/247/346/265/201/outline-volume.md +90 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//347/203/255/350/241/200/345/215/207/347/272/247/346/265/201/polish-guide.md +349 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//347/203/255/350/241/200/345/215/207/347/272/247/346/265/201/polish.md +47 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//347/203/255/350/241/200/345/215/207/347/272/247/346/265/201/review.md +31 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//347/203/255/350/241/200/345/215/207/347/272/247/346/265/201/scene-description.md +14 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//347/203/255/350/241/200/345/215/207/347/272/247/346/265/201/substyle-writer.md +177 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//347/203/255/350/241/200/345/215/207/347/272/247/346/265/201/typesetting.md +60 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//347/203/255/350/241/200/345/215/207/347/272/247/346/265/201/writer-base.md +76 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//347/203/255/350/241/200/345/215/207/347/272/247/346/265/201/writing-user-prompt.md +92 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//350/213/237/351/201/223/346/265/201/chapter-hard-constraints.md +19 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//350/213/237/351/201/223/346/265/201/combat-scenes.md +18 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//350/213/237/351/201/223/346/265/201/continuity-summary.md +34 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//350/213/237/351/201/223/346/265/201/desire-description.md +314 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//350/213/237/351/201/223/346/265/201/dialogue-writing.md +13 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//350/213/237/351/201/223/346/265/201/emotion-psychology.md +13 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//350/213/237/351/201/223/346/265/201/examples.md +53 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//350/213/237/351/201/223/346/265/201/extract-state.md +126 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//350/213/237/351/201/223/346/265/201/genre-writer.md +197 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//350/213/237/351/201/223/346/265/201/opening-three.md +18 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//350/213/237/351/201/223/346/265/201/outline-master.md +60 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//350/213/237/351/201/223/346/265/201/outline-polish.md +39 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//350/213/237/351/201/223/346/265/201/outline-rewrite.md +71 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//350/213/237/351/201/223/346/265/201/outline-volume.md +90 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//350/213/237/351/201/223/346/265/201/polish-guide.md +349 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//350/213/237/351/201/223/346/265/201/polish.md +47 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//350/213/237/351/201/223/346/265/201/review.md +31 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//350/213/237/351/201/223/346/265/201/scene-description.md +14 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//350/213/237/351/201/223/346/265/201/substyle-writer.md +103 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//350/213/237/351/201/223/346/265/201/typesetting.md +60 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//350/213/237/351/201/223/346/265/201/writer-base.md +76 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/xuanhuan//350/213/237/351/201/223/346/265/201/writing-user-prompt.md +92 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//346/202/254/345/277/265/346/217/255/347/247/230/chapter-hard-constraints.md +19 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//346/202/254/345/277/265/346/217/255/347/247/230/combat-scenes.md +18 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//346/202/254/345/277/265/346/217/255/347/247/230/continuity-summary.md +33 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//346/202/254/345/277/265/346/217/255/347/247/230/desire-description.md +314 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//346/202/254/345/277/265/346/217/255/347/247/230/dialogue-writing.md +13 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//346/202/254/345/277/265/346/217/255/347/247/230/emotion-psychology.md +13 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//346/202/254/345/277/265/346/217/255/347/247/230/examples.md +55 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//346/202/254/345/277/265/346/217/255/347/247/230/extract-state.md +126 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//346/202/254/345/277/265/346/217/255/347/247/230/genre-writer.md +168 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//346/202/254/345/277/265/346/217/255/347/247/230/opening-three.md +18 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//346/202/254/345/277/265/346/217/255/347/247/230/outline-master.md +60 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//346/202/254/345/277/265/346/217/255/347/247/230/outline-polish.md +39 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//346/202/254/345/277/265/346/217/255/347/247/230/outline-rewrite.md +71 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//346/202/254/345/277/265/346/217/255/347/247/230/outline-volume.md +90 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//346/202/254/345/277/265/346/217/255/347/247/230/polish-guide.md +349 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//346/202/254/345/277/265/346/217/255/347/247/230/polish.md +47 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//346/202/254/345/277/265/346/217/255/347/247/230/review.md +31 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//346/202/254/345/277/265/346/217/255/347/247/230/scene-description.md +14 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//346/202/254/345/277/265/346/217/255/347/247/230/substyle-writer.md +65 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//346/202/254/345/277/265/346/217/255/347/247/230/typesetting.md +60 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//346/202/254/345/277/265/346/217/255/347/247/230/writer-base.md +76 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//346/202/254/345/277/265/346/217/255/347/247/230/writing-user-prompt.md +92 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//346/203/205/346/204/237/345/217/215/346/235/200/chapter-hard-constraints.md +19 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//346/203/205/346/204/237/345/217/215/346/235/200/combat-scenes.md +18 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//346/203/205/346/204/237/345/217/215/346/235/200/continuity-summary.md +33 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//346/203/205/346/204/237/345/217/215/346/235/200/desire-description.md +314 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//346/203/205/346/204/237/345/217/215/346/235/200/dialogue-writing.md +13 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//346/203/205/346/204/237/345/217/215/346/235/200/emotion-psychology.md +13 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//346/203/205/346/204/237/345/217/215/346/235/200/examples.md +53 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//346/203/205/346/204/237/345/217/215/346/235/200/extract-state.md +126 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//346/203/205/346/204/237/345/217/215/346/235/200/genre-writer.md +168 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//346/203/205/346/204/237/345/217/215/346/235/200/opening-three.md +18 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//346/203/205/346/204/237/345/217/215/346/235/200/outline-master.md +60 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//346/203/205/346/204/237/345/217/215/346/235/200/outline-polish.md +39 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//346/203/205/346/204/237/345/217/215/346/235/200/outline-rewrite.md +71 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//346/203/205/346/204/237/345/217/215/346/235/200/outline-volume.md +90 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//346/203/205/346/204/237/345/217/215/346/235/200/polish-guide.md +349 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//346/203/205/346/204/237/345/217/215/346/235/200/polish.md +47 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//346/203/205/346/204/237/345/217/215/346/235/200/review.md +31 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//346/203/205/346/204/237/345/217/215/346/235/200/scene-description.md +14 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//346/203/205/346/204/237/345/217/215/346/235/200/substyle-writer.md +81 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//346/203/205/346/204/237/345/217/215/346/235/200/typesetting.md +60 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//346/203/205/346/204/237/345/217/215/346/235/200/writer-base.md +76 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//346/203/205/346/204/237/345/217/215/346/235/200/writing-user-prompt.md +92 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//351/253/230/350/203/275/345/217/215/350/275/254/chapter-hard-constraints.md +19 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//351/253/230/350/203/275/345/217/215/350/275/254/combat-scenes.md +18 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//351/253/230/350/203/275/345/217/215/350/275/254/continuity-summary.md +33 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//351/253/230/350/203/275/345/217/215/350/275/254/desire-description.md +314 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//351/253/230/350/203/275/345/217/215/350/275/254/dialogue-writing.md +13 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//351/253/230/350/203/275/345/217/215/350/275/254/emotion-psychology.md +13 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//351/253/230/350/203/275/345/217/215/350/275/254/examples.md +51 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//351/253/230/350/203/275/345/217/215/350/275/254/extract-state.md +126 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//351/253/230/350/203/275/345/217/215/350/275/254/genre-writer.md +168 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//351/253/230/350/203/275/345/217/215/350/275/254/opening-three.md +18 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//351/253/230/350/203/275/345/217/215/350/275/254/outline-master.md +60 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//351/253/230/350/203/275/345/217/215/350/275/254/outline-polish.md +39 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//351/253/230/350/203/275/345/217/215/350/275/254/outline-rewrite.md +71 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//351/253/230/350/203/275/345/217/215/350/275/254/outline-volume.md +90 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//351/253/230/350/203/275/345/217/215/350/275/254/polish-guide.md +349 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//351/253/230/350/203/275/345/217/215/350/275/254/polish.md +47 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//351/253/230/350/203/275/345/217/215/350/275/254/review.md +31 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//351/253/230/350/203/275/345/217/215/350/275/254/scene-description.md +14 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//351/253/230/350/203/275/345/217/215/350/275/254/substyle-writer.md +81 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//351/253/230/350/203/275/345/217/215/350/275/254/typesetting.md +60 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//351/253/230/350/203/275/345/217/215/350/275/254/writer-base.md +76 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/prompts/genres/zhihu-short//351/253/230/350/203/275/345/217/215/350/275/254/writing-user-prompt.md +92 -0
- package/backend/webnovel-writer/.claude/skills/webnovel-write/references/core-constraints.md +115 -0
- package/backend/webnovel-writer/.claude/templates/genres//344/277/256/344/273/231.md +103 -0
- package/backend/webnovel-writer/.claude/templates/genres//345/217/244/350/250/200.md +253 -0
- package/backend/webnovel-writer/.claude/templates/genres//345/244/232/345/255/220/345/244/232/347/246/217.md +198 -0
- package/backend/webnovel-writer/.claude/templates/genres//346/233/277/350/272/253/346/226/207.md +194 -0
- package/backend/webnovel-writer/.claude/templates/genres//347/213/227/350/241/200/350/250/200/346/203/205.md +187 -0
- package/backend/webnovel-writer/.claude/templates/genres//347/216/260/345/256/236/351/242/230/346/235/220.md +262 -0
- package/backend/webnovel-writer/.claude/templates/genres//347/237/245/344/271/216/347/237/255/347/257/207.md +239 -0
- package/backend/webnovel-writer/.claude/templates/genres//347/263/273/347/273/237/346/265/201.md +93 -0
- package/backend/webnovel-writer/.claude/templates/genres//350/247/204/345/210/231/346/200/252/350/260/210.md +301 -0
- package/backend/webnovel-writer/.claude/templates/genres//351/203/275/345/270/202/345/274/202/350/203/275.md +95 -0
- package/backend/webnovel-writer/.claude/templates/genres//351/273/221/346/232/227/351/242/230/346/235/220.md +200 -0
- package/backend/webnovel-writer/.claude/templates/golden-finger-templates.md +337 -0
- package/backend/webnovel-writer/LICENSE +674 -0
- package/backend/webnovel-writer/README.md +529 -0
- package/backend/webnovel-writer/backend/dependencies.py +88 -0
- package/backend/webnovel-writer/backend/main.py +72 -0
- package/backend/webnovel-writer/backend/requirements.txt +11 -0
- package/backend/webnovel-writer/backend/routers/__init__.py +2 -0
- package/backend/webnovel-writer/backend/routers/ai.py +505 -0
- package/backend/webnovel-writer/backend/routers/chapters.py +864 -0
- package/backend/webnovel-writer/backend/routers/characters.py +563 -0
- package/backend/webnovel-writer/backend/routers/entities.py +219 -0
- package/backend/webnovel-writer/backend/routers/fanqie.py +197 -0
- package/backend/webnovel-writer/backend/routers/outlines.py +474 -0
- package/backend/webnovel-writer/backend/routers/projects.py +733 -0
- package/backend/webnovel-writer/backend/routers/rag.py +195 -0
- package/backend/webnovel-writer/backend/services/__init__.py +2 -0
- package/backend/webnovel-writer/backend/services/activity_logger.py +60 -0
- package/backend/webnovel-writer/backend/services/ai_service.py +878 -0
- package/backend/webnovel-writer/backend/services/creative_brief.py +110 -0
- package/backend/webnovel-writer/backend/services/fanqie_publisher.py +1205 -0
- package/backend/webnovel-writer/backend/services/genre_catalog.py +1405 -0
- package/backend/webnovel-writer/backend/services/genre_writer_agent.py +170 -0
- package/backend/webnovel-writer/backend/services/project_prompt_store.py +643 -0
- package/backend/webnovel-writer/backend/services/projects_manager.py +407 -0
- package/backend/webnovel-writer/backend/services/prompt_fallbacks.py +773 -0
- package/backend/webnovel-writer/backend/services/reset_derived_data.py +45 -0
- package/backend/webnovel-writer/backend/services/skill_executor.py +7701 -0
- package/backend/webnovel-writer/backend/services/usage_meter.py +21 -0
- package/backend/webnovel-writer/backend/services/writer_tools.py +324 -0
- package/backend/webnovel-writer/backend/utils.py +60 -0
- package/client.js +4942 -0
- package/cordis.patch.yml +18 -0
- package/docs/distribution.md +97 -0
- package/docs/plan/PROGRESS.md +658 -0
- package/docs/plan/STATE.json +374 -0
- package/docs/quickstart.md +203 -0
- package/docs/screenshots.md +57 -0
- package/icon.svg +17 -0
- package/index.js +1076 -0
- package/locale/en.json +6 -0
- package/locale/zh.json +6 -0
- package/managed-runtime.mjs +186 -0
- package/package.json +113 -4
- package/runtime-download.json +6 -0
- package/runtime-manifest.json +3409 -0
- package/screenshots.json +10 -0
- package/scripts/check-release.mjs +41 -0
|
@@ -0,0 +1,306 @@
|
|
|
1
|
+
"""Local publication evidence, durable writes and process locks (no credentials)."""
|
|
2
|
+
from __future__ import annotations
|
|
3
|
+
|
|
4
|
+
import hashlib
|
|
5
|
+
import json
|
|
6
|
+
import os
|
|
7
|
+
import threading
|
|
8
|
+
import time
|
|
9
|
+
import uuid
|
|
10
|
+
from contextlib import contextmanager
|
|
11
|
+
from datetime import datetime, timezone
|
|
12
|
+
from pathlib import Path
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class PublicationBlocked(RuntimeError):
|
|
16
|
+
"""A stable reason code, deliberately excluding page/exception contents."""
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def utc_now():
|
|
20
|
+
return datetime.now(timezone.utc).isoformat()
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def read_json_strict(path):
|
|
24
|
+
try:
|
|
25
|
+
return json.loads(Path(path).read_text(encoding="utf-8"))
|
|
26
|
+
except (OSError, ValueError) as exc:
|
|
27
|
+
raise PublicationBlocked("invalid_json") from exc
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
def replace_with_retry(source,target):
|
|
31
|
+
"""Windows sharing/AV contention only; never delete target to force a write."""
|
|
32
|
+
for attempt in range(6):
|
|
33
|
+
try:return os.replace(source,target)
|
|
34
|
+
except PermissionError as exc:
|
|
35
|
+
if os.name!='nt' or getattr(exc,'winerror',None) not in (5,32,33) or attempt==5:raise
|
|
36
|
+
time.sleep(.05*(2**attempt))
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
def atomic_json(path, data):
|
|
40
|
+
path = Path(path)
|
|
41
|
+
path.parent.mkdir(parents=True, exist_ok=True)
|
|
42
|
+
temporary = path.with_name(path.name + "." + uuid.uuid4().hex + ".tmp")
|
|
43
|
+
try:
|
|
44
|
+
with temporary.open("x", encoding="utf-8") as stream:
|
|
45
|
+
json.dump(data, stream, ensure_ascii=False, indent=2)
|
|
46
|
+
stream.flush()
|
|
47
|
+
os.fsync(stream.fileno())
|
|
48
|
+
replace_with_retry(temporary, path)
|
|
49
|
+
finally:
|
|
50
|
+
temporary.unlink(missing_ok=True)
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
_locks = threading.local()
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
@contextmanager
|
|
57
|
+
def file_lock(path):
|
|
58
|
+
"""Nonblocking OS lock; released by the OS after death. Never kill/check PIDs.
|
|
59
|
+
|
|
60
|
+
The inode is permanent: removing lock files permits two owners. Same-thread
|
|
61
|
+
nesting is supported; other threads/processes are refused, not queued.
|
|
62
|
+
"""
|
|
63
|
+
path = Path(path).resolve()
|
|
64
|
+
key = os.path.normcase(str(path))
|
|
65
|
+
held = getattr(_locks, "held", None)
|
|
66
|
+
if held is None:
|
|
67
|
+
held = _locks.held = {}
|
|
68
|
+
if key in held:
|
|
69
|
+
held[key] += 1
|
|
70
|
+
try:
|
|
71
|
+
yield path
|
|
72
|
+
finally:
|
|
73
|
+
held[key] -= 1
|
|
74
|
+
return
|
|
75
|
+
path.parent.mkdir(parents=True, exist_ok=True)
|
|
76
|
+
with path.open("a+b") as stream:
|
|
77
|
+
stream.seek(0, os.SEEK_END)
|
|
78
|
+
if stream.tell() == 0:
|
|
79
|
+
stream.write(b"\0")
|
|
80
|
+
stream.flush()
|
|
81
|
+
stream.seek(0)
|
|
82
|
+
try:
|
|
83
|
+
if os.name == "nt":
|
|
84
|
+
import msvcrt
|
|
85
|
+
msvcrt.locking(stream.fileno(), msvcrt.LK_NBLCK, 1)
|
|
86
|
+
else:
|
|
87
|
+
import fcntl
|
|
88
|
+
fcntl.flock(stream.fileno(), fcntl.LOCK_EX | fcntl.LOCK_NB)
|
|
89
|
+
except OSError as exc:
|
|
90
|
+
raise PublicationBlocked("resource_busy") from exc
|
|
91
|
+
held[key] = 1
|
|
92
|
+
try:
|
|
93
|
+
yield path
|
|
94
|
+
finally:
|
|
95
|
+
del held[key]
|
|
96
|
+
stream.seek(0)
|
|
97
|
+
if os.name == "nt":
|
|
98
|
+
msvcrt.locking(stream.fileno(), msvcrt.LK_UNLCK, 1)
|
|
99
|
+
else:
|
|
100
|
+
fcntl.flock(stream.fileno(), fcntl.LOCK_UN)
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
def queue_lock(root):
|
|
104
|
+
return file_lock(Path(root) / ".publication" / "queue.lock")
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
def account_lock(state_path):
|
|
108
|
+
return file_lock(Path(state_path).with_name(".publication-account.lock"))
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
def digest_file(path):
|
|
112
|
+
return hashlib.sha256(Path(path).read_bytes()).hexdigest()
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
def creative_contract_hash(project):
|
|
116
|
+
"""Chat history is advisory; only confirmed requirements bind a review."""
|
|
117
|
+
path = Path(project) / ".webnovel" / "creative_brief.json"
|
|
118
|
+
document = read_json_strict(path) if path.exists() else {"brief":{}}
|
|
119
|
+
brief = document.get("brief") if isinstance(document, dict) else None
|
|
120
|
+
if not isinstance(brief, dict) or any(not isinstance(v, str) for v in brief.values()):
|
|
121
|
+
raise PublicationBlocked("invalid_creative_contract")
|
|
122
|
+
values = {k:v.strip() for k,v in brief.items() if v.strip()}
|
|
123
|
+
learning=document.get("learning",{})
|
|
124
|
+
if not isinstance(learning,dict) or not isinstance(learning.get("guide",""),str):
|
|
125
|
+
raise PublicationBlocked("invalid_creative_contract")
|
|
126
|
+
if learning.get("guide","").strip():values["__learned_guide__"]=learning["guide"].strip()
|
|
127
|
+
style_path=Path(project)/".webnovel"/"style_profile.json"
|
|
128
|
+
if style_path.exists():
|
|
129
|
+
import sys
|
|
130
|
+
root=str(Path(__file__).resolve().parents[1])
|
|
131
|
+
if root not in sys.path:sys.path.insert(0,root)
|
|
132
|
+
from integration import style_profile
|
|
133
|
+
style=style_profile.digest(project=project)
|
|
134
|
+
if style:values["__style_profile__"]=style
|
|
135
|
+
memory_path=Path(project)/".webnovel"/"shared_memory.json"
|
|
136
|
+
if memory_path.exists() or memory_path.is_symlink():
|
|
137
|
+
import sys
|
|
138
|
+
root=str(Path(__file__).resolve().parents[1])
|
|
139
|
+
if root not in sys.path:sys.path.insert(0,root)
|
|
140
|
+
from integration import memory_library
|
|
141
|
+
decisions=memory_library.contract(project)
|
|
142
|
+
if decisions:values["__author_memory__"]=decisions
|
|
143
|
+
if not values:
|
|
144
|
+
return ""
|
|
145
|
+
return hashlib.sha256(json.dumps(values, ensure_ascii=False, sort_keys=True).encode("utf-8")).hexdigest()
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
def qualification_contract_matches(project, chapter, receipt, current_hash=None):
|
|
149
|
+
"""Narrow, evidenced author scope: a future-only change need not revoke51.
|
|
150
|
+
|
|
151
|
+
This never manufactures a review or replaces its old contract. Only an
|
|
152
|
+
exact preserved source/receipt and explicitly approved current contract
|
|
153
|
+
can inherit the earlier qualification; another edit invalidates the scope.
|
|
154
|
+
"""
|
|
155
|
+
current_hash=creative_contract_hash(project) if current_hash is None else current_hash
|
|
156
|
+
if not isinstance(receipt,dict):return False
|
|
157
|
+
if receipt.get('creative_contract_hash','')==current_hash:return True
|
|
158
|
+
if type(chapter) is not int or chapter!=51:return False
|
|
159
|
+
try:
|
|
160
|
+
root=Path(project).resolve();folder=root/'.webnovel/qualification_scopes'
|
|
161
|
+
scope_path=folder/'0051.json'
|
|
162
|
+
if folder.is_symlink() or scope_path.is_symlink():return False
|
|
163
|
+
scope=read_json_strict(scope_path)
|
|
164
|
+
if not isinstance(scope,dict) or scope.get('schema')!=1 or scope.get('approved') is not True:return False
|
|
165
|
+
if scope.get('chapter')!=chapter or scope.get('project')!=str(root):return False
|
|
166
|
+
if scope.get('current_contract')!=current_hash or scope.get('original_contract')!=receipt.get('creative_contract_hash'):return False
|
|
167
|
+
origin_path=Path(scope['origin_record'])
|
|
168
|
+
if origin_path.is_symlink() or origin_path.resolve()!=folder/'0051-origin.json':return False
|
|
169
|
+
if digest_file(origin_path)!=scope.get('origin_record_sha256'):return False
|
|
170
|
+
origin=read_json_strict(origin_path)
|
|
171
|
+
if origin.get('project')!=str(root) or origin.get('chapter')!=chapter:return False
|
|
172
|
+
original=origin.get('qualified_receipt')
|
|
173
|
+
if not isinstance(original,dict) or receipt!=original:return False
|
|
174
|
+
source=Path(receipt['destination'])
|
|
175
|
+
if source.is_symlink() or source.resolve().parent!=root/'正文':return False
|
|
176
|
+
if str(source.resolve())!=origin.get('source'):return False
|
|
177
|
+
sha=digest_file(source)
|
|
178
|
+
if sha!=receipt.get('sha256') or sha!=scope.get('source_sha256') or sha!=origin.get('source_sha256'):return False
|
|
179
|
+
raw=source.read_text(encoding='utf-8-sig')
|
|
180
|
+
return review_eligible(receipt.get('review'),body_digest(raw),root,chapter)
|
|
181
|
+
except (OSError,ValueError,KeyError,TypeError,PublicationBlocked):return False
|
|
182
|
+
|
|
183
|
+
|
|
184
|
+
def normalized_body(text):
|
|
185
|
+
return "\n".join(line.rstrip() for line in text.replace("\r\n", "\n").replace("\r", "\n").split("\n")).strip()
|
|
186
|
+
|
|
187
|
+
|
|
188
|
+
def body_digest(text):
|
|
189
|
+
return hashlib.sha256(normalized_body(text).encode("utf-8")).hexdigest()
|
|
190
|
+
|
|
191
|
+
|
|
192
|
+
def _quality_pass_ok(review,body_sha256=None,project=None,chapter=None):
|
|
193
|
+
"""质量通过分支再交由唯一门禁复查;旧的无分项回执保持兼容。"""
|
|
194
|
+
try:
|
|
195
|
+
import sys
|
|
196
|
+
root=str(Path(__file__).resolve().parents[1])
|
|
197
|
+
if root not in sys.path:sys.path.insert(0,root)
|
|
198
|
+
from integration import quality_gate
|
|
199
|
+
return quality_gate.pass_ok(review,body_sha256,project,chapter)
|
|
200
|
+
except Exception:
|
|
201
|
+
return False
|
|
202
|
+
|
|
203
|
+
|
|
204
|
+
def review_eligible(review,body_sha256,project=None,chapter=None):
|
|
205
|
+
if not isinstance(review,dict):return False
|
|
206
|
+
if review.get("success") is True and review.get("review_decision")=="pass" and review.get("needs_revision",False) is False:
|
|
207
|
+
return _quality_pass_ok(review,body_sha256,project,chapter)
|
|
208
|
+
if review.get('review_decision')=='waived_by_author_rule':
|
|
209
|
+
from integration.editorial_release import valid
|
|
210
|
+
auth=review.get('author_rule_authorization',{})
|
|
211
|
+
if not isinstance(auth,dict):return False
|
|
212
|
+
if project is not None and str(Path(auth.get('project','')).resolve()).casefold()!=str(Path(project).resolve()).casefold():return False
|
|
213
|
+
if chapter is not None and (type(auth.get('chapter')) is not int or auth['chapter']!=chapter):return False
|
|
214
|
+
return valid(review,body_sha256)
|
|
215
|
+
if review.get("review_decision")!="waived_by_E":return False
|
|
216
|
+
import sys
|
|
217
|
+
root=str(Path(__file__).resolve().parents[1])
|
|
218
|
+
if root not in sys.path:sys.path.insert(0,root)
|
|
219
|
+
from integration import model_roles
|
|
220
|
+
config=model_roles.load_config();authorization=review.get("executor_authorization",{})
|
|
221
|
+
return (model_roles.enabled(config) and config.get("review_policy")=="e_decides" and isinstance(authorization,dict)
|
|
222
|
+
and authorization.get("approved") is True and authorization.get("role")=="E" and authorization.get("policy")=="e_decides"
|
|
223
|
+
and authorization.get("body_sha256")==body_sha256)
|
|
224
|
+
|
|
225
|
+
|
|
226
|
+
def journal_path(source):
|
|
227
|
+
return Path(source).with_name(Path(source).name + ".publish.json")
|
|
228
|
+
|
|
229
|
+
|
|
230
|
+
def requires_reconciliation(record):
|
|
231
|
+
"""A local pre-submit marker cannot overrule observed remote side effects."""
|
|
232
|
+
return isinstance(record, dict) and (
|
|
233
|
+
record.get('state') in {'submitting', 'unconfirmed', 'platform_confirmed'}
|
|
234
|
+
or bool(record.get('submitted_at'))
|
|
235
|
+
or record.get('reason') in {
|
|
236
|
+
'existing_chapter_requires_reconciliation', 'existing_chapter_not_draft', 'publish_settings_timeout',
|
|
237
|
+
'submission_transition_timeout', 'publish_subprocess_timeout',
|
|
238
|
+
})
|
|
239
|
+
|
|
240
|
+
|
|
241
|
+
def valid_receipt(path, book=None, chapter_id=None, account=None):
|
|
242
|
+
"""An old TXT alone is never publication evidence."""
|
|
243
|
+
path = Path(path)
|
|
244
|
+
evidence = journal_path(path)
|
|
245
|
+
if not evidence.exists():
|
|
246
|
+
return None
|
|
247
|
+
record = read_json_strict(evidence)
|
|
248
|
+
if not isinstance(record, dict):
|
|
249
|
+
return None
|
|
250
|
+
checks = (
|
|
251
|
+
record.get("schema") == 1,
|
|
252
|
+
record.get("state") == "platform_confirmed",
|
|
253
|
+
record.get("platform_status") == "已发布",
|
|
254
|
+
record.get("verification") == "chapter_list_and_body",
|
|
255
|
+
isinstance(record.get("verified_at"), str) and bool(record["verified_at"]),
|
|
256
|
+
isinstance(record.get("account"), str) and bool(record["account"]),
|
|
257
|
+
isinstance(record.get("book_url"), str) and record["book_url"].startswith("https://fanqienovel.com/"),
|
|
258
|
+
record.get("file_sha256") == digest_file(path),
|
|
259
|
+
book is None or record.get("book") == book,
|
|
260
|
+
chapter_id is None or record.get("chapter_id") == chapter_id,
|
|
261
|
+
account is None or record.get("account") == account,
|
|
262
|
+
)
|
|
263
|
+
return record if all(checks) else None
|
|
264
|
+
|
|
265
|
+
|
|
266
|
+
def archive_confirmed(source, destination, receipt):
|
|
267
|
+
source, destination = Path(source), Path(destination)
|
|
268
|
+
if receipt.get("state") != "platform_confirmed" or receipt.get("file_sha256") != digest_file(source):
|
|
269
|
+
raise PublicationBlocked("archive_evidence_mismatch")
|
|
270
|
+
if valid_receipt(source, receipt["book"], receipt["chapter_id"], receipt["account"]) != receipt:
|
|
271
|
+
raise PublicationBlocked("archive_receipt_missing")
|
|
272
|
+
destination.parent.mkdir(parents=True, exist_ok=True)
|
|
273
|
+
if destination.exists() or journal_path(destination).exists():
|
|
274
|
+
raise PublicationBlocked("archive_collision")
|
|
275
|
+
# Receipt first, then non-overwriting link/unlink on this same-volume queue.
|
|
276
|
+
# A crash at any step leaves evidence; it never permits a new submit.
|
|
277
|
+
atomic_json(journal_path(destination), receipt)
|
|
278
|
+
os.link(source, destination)
|
|
279
|
+
if digest_file(source) != receipt["file_sha256"]:
|
|
280
|
+
raise PublicationBlocked("queue_changed")
|
|
281
|
+
source.unlink()
|
|
282
|
+
|
|
283
|
+
|
|
284
|
+
def validate_origin_plan(plan, files, book, account):
|
|
285
|
+
"""Recheck the reviewed source and queue bytes under the publisher lock."""
|
|
286
|
+
if not isinstance(plan, dict) or plan.get("schema") != 1 or plan.get("book") != book or plan.get("account") != account:
|
|
287
|
+
raise PublicationBlocked("origin_plan_identity_mismatch")
|
|
288
|
+
project = Path(plan.get("project", "")).resolve()
|
|
289
|
+
receipts = read_json_strict(project / ".webnovel" / "writer_receipts.json")
|
|
290
|
+
contract_hash = creative_contract_hash(project)
|
|
291
|
+
entries = plan.get("chapters", [])
|
|
292
|
+
if not isinstance(receipts, dict) or len(entries) != len(files):
|
|
293
|
+
raise PublicationBlocked("origin_plan_chapters_mismatch")
|
|
294
|
+
for entry, queued in zip(entries, files):
|
|
295
|
+
source = Path(entry.get("source", "")).resolve()
|
|
296
|
+
if source.parent != (project / "正文").resolve() or source.is_symlink():
|
|
297
|
+
raise PublicationBlocked("origin_source_path_mismatch")
|
|
298
|
+
from integration.length_policy import require
|
|
299
|
+
require(project, source.read_text(encoding="utf-8-sig"), entry.get("chapter_id"))
|
|
300
|
+
receipt = receipts.get(str(entry.get("chapter_id")), {})
|
|
301
|
+
review = receipt.get("review", {}) if isinstance(receipt, dict) else {}
|
|
302
|
+
if (entry.get("filename") != Path(queued).name or entry.get("file_sha256") != digest_file(queued) or
|
|
303
|
+
entry.get("source_sha256") != digest_file(source) or receipt.get("destination") != str(source) or
|
|
304
|
+
receipt.get("sha256") != digest_file(source) or not qualification_contract_matches(project,entry.get('chapter_id'),receipt,contract_hash) or
|
|
305
|
+
not review_eligible(review,body_digest(source.read_text(encoding="utf-8-sig")),project,entry.get('chapter_id'))):
|
|
306
|
+
raise PublicationBlocked("origin_review_or_content_mismatch")
|