|
|
@@ -1,192 +1,80 @@
|
|
|
---
|
|
|
name: webnovel-query
|
|
|
-description: Queries project settings for characters, powers, factions, items, and foreshadowing. Supports urgency analysis and golden finger status. Activates when user asks about story elements or /webnovel-query.
|
|
|
+description: 查询项目设定、角色、力量体系、势力、伏笔等信息。支持紧急度分析与金手指状态查询。
|
|
|
allowed-tools: Read Grep Bash AskUserQuestion
|
|
|
---
|
|
|
|
|
|
# Information Query Skill
|
|
|
|
|
|
-## Project Root Guard(必须先确认)
|
|
|
+## Use when
|
|
|
|
|
|
-- Claude Code 的“工作区根目录”不一定等于“书项目根目录”。常见结构:工作区为 `D:\wk\xiaoshuo`,书项目为 `D:\wk\xiaoshuo\凡人资本论`。
|
|
|
-- 必须先解析真实书项目根(必须包含 `.webnovel/state.json`),后续所有读写路径都以该目录为准。
|
|
|
-- **禁止**在插件目录 `${CLAUDE_PLUGIN_ROOT}/` 下读取或写入项目文件
|
|
|
+用户询问关于故事设定、角色、力量体系、势力、伏笔、金手指、节奏等项目内信息时触发。
|
|
|
|
|
|
-环境设置(bash 命令执行前):
|
|
|
-```bash
|
|
|
-export WORKSPACE_ROOT="${CLAUDE_PROJECT_DIR:-$PWD}"
|
|
|
-
|
|
|
-if [ -z "${CLAUDE_PLUGIN_ROOT}" ] || [ ! -d "${CLAUDE_PLUGIN_ROOT}/skills/webnovel-query" ]; then
|
|
|
- echo "ERROR: 未设置 CLAUDE_PLUGIN_ROOT 或缺少目录: ${CLAUDE_PLUGIN_ROOT}/skills/webnovel-query" >&2
|
|
|
- exit 1
|
|
|
-fi
|
|
|
-export SKILL_ROOT="${CLAUDE_PLUGIN_ROOT}/skills/webnovel-query"
|
|
|
-
|
|
|
-if [ -z "${CLAUDE_PLUGIN_ROOT}" ] || [ ! -d "${CLAUDE_PLUGIN_ROOT}/scripts" ]; then
|
|
|
- echo "ERROR: 未设置 CLAUDE_PLUGIN_ROOT 或缺少目录: ${CLAUDE_PLUGIN_ROOT}/scripts" >&2
|
|
|
- exit 1
|
|
|
-fi
|
|
|
-export SCRIPTS_DIR="${CLAUDE_PLUGIN_ROOT}/scripts"
|
|
|
-
|
|
|
-export PROJECT_ROOT="$(python "${SCRIPTS_DIR}/webnovel.py" --project-root "${WORKSPACE_ROOT}" where)"
|
|
|
-```
|
|
|
-
|
|
|
-## Workflow Checklist
|
|
|
-
|
|
|
-Copy and track progress:
|
|
|
+## 项目根保护
|
|
|
|
|
|
+```bash
|
|
|
+export WORKSPACE_ROOT=”${CLAUDE_PROJECT_DIR:-$PWD}”
|
|
|
+export SCRIPTS_DIR=”${CLAUDE_PLUGIN_ROOT}/scripts”
|
|
|
+export SKILL_ROOT=”${CLAUDE_PLUGIN_ROOT}/skills/webnovel-query”
|
|
|
+export PROJECT_ROOT=”$(python “${SCRIPTS_DIR}/webnovel.py” --project-root “${WORKSPACE_ROOT}” where)”
|
|
|
```
|
|
|
-信息查询进度:
|
|
|
-- [ ] Step 1: 识别查询类型
|
|
|
-- [ ] Step 2: 加载对应参考文件
|
|
|
-- [ ] Step 3: 加载项目数据 (state.json)
|
|
|
-- [ ] Step 4: 确认上下文充足
|
|
|
-- [ ] Step 5: 执行查询
|
|
|
-- [ ] Step 6: 格式化输出
|
|
|
-```
|
|
|
-
|
|
|
----
|
|
|
-
|
|
|
-## Reference Loading Levels (strict, lazy)
|
|
|
-
|
|
|
-- L0: 先识别查询类型,不预加载全部参考。
|
|
|
-- L1: 所有查询仅加载基础数据流规范。
|
|
|
-- L2: 仅按查询类型加载对应专题参考。
|
|
|
|
|
|
-### L1 (minimum)
|
|
|
-- [system-data-flow.md](references/system-data-flow.md)
|
|
|
+- `PROJECT_ROOT` 必须包含 `.webnovel/state.json`
|
|
|
+- **禁止**在 `${CLAUDE_PLUGIN_ROOT}/` 下读取或写入项目文件
|
|
|
|
|
|
-### L2 (conditional by query type)
|
|
|
-- 伏笔查询:[foreshadowing.md](references/advanced/foreshadowing.md)
|
|
|
-- 节奏查询:[strand-weave-pattern.md](../../references/shared/strand-weave-pattern.md)
|
|
|
-- 标签格式查询:[tag-specification.md](references/tag-specification.md)
|
|
|
+## 查询类型识别
|
|
|
|
|
|
-Do not load two or more L2 files unless the user request clearly spans multiple query types.
|
|
|
-
|
|
|
-## Step 1: 识别查询类型
|
|
|
-
|
|
|
-| 关键词 | 查询类型 | 需加载 |
|
|
|
+| 关键词 | 查询类型 | 数据源 |
|
|
|
|--------|---------|--------|
|
|
|
-| 角色/主角/配角 | 标准查询 | system-data-flow.md |
|
|
|
-| 境界/筑基/金丹 | 标准查询 | system-data-flow.md |
|
|
|
-| 伏笔/紧急伏笔 | 伏笔分析 | foreshadowing.md |
|
|
|
-| 金手指/系统 | 金手指状态 | system-data-flow.md |
|
|
|
-| 节奏/Strand | 节奏分析 | strand-weave-pattern.md |
|
|
|
+| 角色/主角/配角 | 标准查询 | 主角卡.md, 角色库/ |
|
|
|
+| 境界/筑基/金丹 | 标准查询 | 力量体系.md |
|
|
|
+| 宗门/势力/地点 | 标准查询 | 世界观.md |
|
|
|
+| 伏笔/紧急伏笔 | 伏笔分析 | state.json + foreshadowing.md |
|
|
|
+| 金手指/系统 | 金手指状态 | state.json |
|
|
|
+| 节奏/Strand | 节奏分析 | state.json + strand-weave-pattern.md |
|
|
|
| 标签/实体格式 | 格式查询 | tag-specification.md |
|
|
|
|
|
|
-## Step 2: 加载对应参考文件
|
|
|
-
|
|
|
-**所有查询必须执行**:
|
|
|
-```bash
|
|
|
-cat "${SKILL_ROOT}/references/system-data-flow.md"
|
|
|
-```
|
|
|
-
|
|
|
-**伏笔查询额外执行**:
|
|
|
-```bash
|
|
|
-cat "${SKILL_ROOT}/references/advanced/foreshadowing.md"
|
|
|
-```
|
|
|
-
|
|
|
-**节奏查询额外执行**:
|
|
|
-```bash
|
|
|
-cat "${SKILL_ROOT}/../../references/shared/strand-weave-pattern.md"
|
|
|
-```
|
|
|
-
|
|
|
-**标签格式查询额外执行**:
|
|
|
-```bash
|
|
|
-cat "${SKILL_ROOT}/references/tag-specification.md"
|
|
|
-```
|
|
|
-
|
|
|
-## Step 3: 加载项目数据
|
|
|
-
|
|
|
-```bash
|
|
|
-cat "$PROJECT_ROOT/.webnovel/state.json"
|
|
|
-```
|
|
|
-
|
|
|
-## Step 4: 确认上下文充足
|
|
|
+## 引用加载策略
|
|
|
|
|
|
-**检查清单**:
|
|
|
-- [ ] 查询类型已识别
|
|
|
-- [ ] 对应参考文件已加载
|
|
|
-- [ ] state.json 已加载
|
|
|
-- [ ] 知道在哪里搜索答案
|
|
|
+先识别查询类型,再按需加载:
|
|
|
|
|
|
-**如有缺失 → 返回对应 Step**
|
|
|
+| 查询类型 | Reference |
|
|
|
+|---------|-----------|
|
|
|
+| 所有查询 | `references/system-data-flow.md` |
|
|
|
+| 伏笔分析 | `references/advanced/foreshadowing.md` |
|
|
|
+| 节奏分析 | `references/shared/strand-weave-pattern.md` |
|
|
|
+| 格式查询 | `references/tag-specification.md` |
|
|
|
|
|
|
-## Step 5: 执行查询
|
|
|
+不得同时加载两个以上 L2 文件,除非用户请求明确跨多类型。
|
|
|
|
|
|
-### 标准查询
|
|
|
+## 查询流程
|
|
|
|
|
|
-| 关键词 | 搜索目标 |
|
|
|
-|--------|---------|
|
|
|
-| 角色/主角/配角 | 主角卡.md, 角色库/ |
|
|
|
-| 境界/实力 | 力量体系.md |
|
|
|
-| 宗门/势力 | 世界观.md |
|
|
|
-| 物品/宝物 | 物品库/ |
|
|
|
-| 地点/秘境 | 世界观.md |
|
|
|
+1. **识别查询类型**:根据用户关键词匹配上表
|
|
|
+2. **加载参考**:只加载该类型需要的 reference
|
|
|
+3. **加载数据**:`cat “$PROJECT_ROOT/.webnovel/state.json”`
|
|
|
+4. **确认上下文充足**:查询类型已识别 + 参考已加载 + state 已加载
|
|
|
+5. **执行查询**:按类型检索对应数据源
|
|
|
+6. **格式化输出**:按下方模板输出
|
|
|
|
|
|
-### 伏笔紧急度分析
|
|
|
-
|
|
|
-**三层分类**(来自 foreshadowing.md):
|
|
|
-- **核心伏笔**: 主线剧情 - 权重 3.0x
|
|
|
-- **支线伏笔**: 配角/支线 - 权重 2.0x
|
|
|
-- **装饰伏笔**: 氛围/细节 - 权重 1.0x
|
|
|
-
|
|
|
-**紧急度公式**:
|
|
|
-```
|
|
|
-紧急度 = (已过章节 / 目标章节) × 层级权重
|
|
|
-```
|
|
|
-
|
|
|
-**状态判定**:
|
|
|
-- 🔴 Critical: 超过目标 OR 核心 >20 章
|
|
|
-- 🟡 Warning: >80% 目标 OR 支线 >30 章
|
|
|
-- 🟢 Normal: 计划范围内
|
|
|
-
|
|
|
-**快速分析**:
|
|
|
-```bash
|
|
|
-python "${SCRIPTS_DIR}/webnovel.py" --project-root "$PROJECT_ROOT" status -- --focus urgency
|
|
|
-```
|
|
|
-
|
|
|
-### 金手指状态
|
|
|
-
|
|
|
-输出包含:
|
|
|
-- 基本信息(名称/类型/激活章节)
|
|
|
-- 当前等级和进度
|
|
|
-- 已解锁技能及冷却
|
|
|
-- 待解锁技能预览
|
|
|
-- 升级条件
|
|
|
-- 发展建议
|
|
|
-
|
|
|
-### Strand 节奏分析
|
|
|
-
|
|
|
-**快速分析**:
|
|
|
-```bash
|
|
|
-python "${SCRIPTS_DIR}/webnovel.py" --project-root "$PROJECT_ROOT" status -- --focus strand
|
|
|
-```
|
|
|
-
|
|
|
-**检查警告**:
|
|
|
-- Quest >5 连续章
|
|
|
-- Fire >10 章未出现
|
|
|
-- Constellation >15 章未出现
|
|
|
-
|
|
|
-## Step 6: 格式化输出
|
|
|
+## 输出格式
|
|
|
|
|
|
```markdown
|
|
|
# 查询结果:{关键词}
|
|
|
|
|
|
-## 📊 概要
|
|
|
+## 概要
|
|
|
- **匹配类型**: {type}
|
|
|
- **数据源**: state.json + 设定集 + 大纲
|
|
|
- **匹配数量**: X 条
|
|
|
|
|
|
-## 🔍 详细信息
|
|
|
+## 详细信息
|
|
|
+{结构化数据,含文件路径和行号}
|
|
|
|
|
|
-### 1. Runtime State (state.json)
|
|
|
-{结构化数据}
|
|
|
-**Source**: `.webnovel/state.json` (lines XX-XX)
|
|
|
+## 数据一致性检查
|
|
|
+{state.json 与静态文件的差异,若无差异则省略}
|
|
|
+```
|
|
|
|
|
|
-### 2. 设定集匹配结果
|
|
|
-{匹配内容,含文件路径和行号}
|
|
|
+## 边界与失败恢复
|
|
|
|
|
|
-## ⚠️ 数据一致性检查
|
|
|
-{state.json 与静态文件的差异}
|
|
|
-```
|
|
|
+- 只读操作,不修改任何项目文件
|
|
|
+- 若数据源缺失,明确告知用户缺少什么文件
|
|
|
+- 若查询无匹配,返回空结果并建议检查范围
|