Token导航 LogoToken导航

Agent Skill · 研究检索

fable-dev(寓言开发)

fable-dev 用于查找、检索和筛选相关信息,适合在 OpenClaw 中需要根据关键词、任务场景或来源线索快速定位候选结果时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

fable-dev 是研究检索类 Agent Skill,可用宿主为 OpenClaw,通过ClawHub获取,权限为操作浏览器;许可证为 MIT-0,第三方扫描已通过,按安装量在研究检索类的 73,675 个 Skill 里排第 28,112。

总安装 3,272周安装 135GitHub Stars 公开资料未说明下载 1,069核验 2026-05-01

安装说明

本站只整理中文说明,不托管安装包,也不代用户安装。
GitHub
许可证
MIT-0
版本
0.0.0

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:fable-dev(寓言开发)
来源仓库:https://github.com/anoldgh/fable-dev
安装命令:
openclaw skills install fable-dev
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 OpenClaw 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

ClawHubOpenClaw
openclaw skills install fable-dev

这个 Skill 是做什么的

研究检索类 Skill 主要解决「找资料、核对事实、把来源整理清楚」的问题,通常会让助手先检索再总结。

用于处理 Fable 代码库的开发和维护。适合修改、调试或扩展 Electron + React 应用。覆盖架构设计、编码规范和构建流程。fable-dev 属于研究检索类 Skill,可作为该场景下的辅助能力补充。使用时需确认项目结构和依赖版本兼容性。安装前建议检查维护状态和是否会触发本地命令执行。

上手步骤

4 步
  1. 1

    确认自己的宿主工具

    公开资料标注支持 OpenClaw;先确认自己用的是其中之一,再按对应工具的 Skills 目录放置。

  2. 2

    拿到安装命令

    可以直接复制的命令是 openclaw skills install fable-dev;命令里的占位符换成自己的路径或密钥再执行。

  3. 3

    安装后重启宿主

    命令执行完要完全退出宿主工具再打开,让新装的 Skill 被重新扫描到,否则列表里可能看不到。

  4. 4

    按最小权限试用

    它需要操作浏览器,先在测试目录或测试账号里跑,确认没问题再放到正式项目。

常见问题

6 条

fable-dev 怎么安装?

在终端执行 openclaw skills install fable-dev。装完完全退出宿主工具再打开,让它重新扫描本地 Skill。

fable-dev 支持哪些 AI 工具?

公开资料标注支持 OpenClaw。其他工具只要能读取本地 Skill 目录,一般也能手动放进去,但要自己确认触发方式是否一致。

fable-dev 需要什么权限?

权限级别是操作浏览器。该 Skill 可能涉及浏览器控制能力,使用时可能读取或操作网页内容,需要在受控环境中确认权限边界。

fable-dev 是免费的吗?

来源标注的许可证是 MIT-0。本站不代收任何费用,也不托管安装包;能否商用、要不要署名,以许可证原文为准。

fable-dev 用的人多吗?

公开数据是累计安装 3,272 次,近一周安装 135 次,下载 1,069 次。这些数字来自第三方目录统计,只能当作热度参考,不代表质量或安全性。

fable-dev 安全吗?

第三方扫描结果为通过,但这只覆盖已知的静态检查项,不能替代自己读一遍源码和安装命令。

值得选的地方和要先想清楚的地方

值得选的地方

  • 专注 OpenClaw 一种宿主,触发方式和使用习惯不用来回切换。
  • 许可证明确为 MIT-0,商用和分发边界好判断。
  • 第三方扫描已通过,常见的高风险行为没有命中。

先想清楚的地方

  • 第三方目录整理,版本更新和行为细节以来源仓库为准。

适不适合你

更适合

  • 已经在用 OpenClaw,想直接扩展它能力的人。
  • 需要处理研究检索类任务、又不想每次都手写提示词的人。
  • 需要许可证清楚、并且有第三方扫描结果的团队项目。

不太适合

  • 需要厂商级技术支持和 SLA 的生产系统。

研究检索类 Skill 对比

6 个同类
Skill总安装GitHub 星权限许可证扫描
find-skills

寻找技能 · Codex、Claude

31,199,81316,486操作浏览器MIT有提醒
self-improving-agent

自我改进 Agent · OpenClaw

16,464,0023,396接触敏感数据MIT-0通过
soultrace

灵魂追踪 · Codex、Claude

7,588,94412需要联网未明确有提醒
self-improving

自我完善 · OpenClaw

6,829,2841,046需要联网MIT-0通过
microsoft-foundry

微软代工厂 · Codex、Claude

6,614,144764调用外部服务未明确有提醒
fable-dev

寓言开发 · 本页

3,272—操作浏览器MIT-0通过

按安装量取同分类前几名;数字来自第三方目录统计,只作热度参考,不代表质量结论。

SKILL.md 原文

name
fable-dev
description
>

Fable Development Guide

Fable is a creative-writing desktop app: Electron + React 19 + Vite + TanStack Query + Plate.js frontend, Node.js + SQLite + custom indexed filesystem backend, Google ADK for AI features.

Critical Invariant

Every file can have children, not just folders. FileNode.children exists on ANY node regardless of category. A text document can contain child documents (chapters containing scenes). Never assume only folders have children.

parentId and siblingIndex are computed by buildFileTree() at runtime — never persist them.

Where Does My Code Go?

digraph code_placement {
    rankdir=TB;
    node [shape=diamond];
    "Used by both\
frontend & backend?" -> "src/shared/" [label="yes"];
    "Used by both\
frontend & backend?" -> "Runs in\
Node.js only?" [label="no"];
    "Runs in\
Node.js only?" -> "IPC handler?" [label="yes"];
    "Runs in\
Node.js only?" -> "React component\
or hook?" [label="no"];
    "IPC handler?" -> "src/backend/handlers/" [label="yes"];
    "IPC handler?" -> "src/backend/services/" [label="no"];
    "React component\
or hook?" -> "src/frontend/components/" [label="component"];
    "React component\
or hook?" -> "src/frontend/hooks/" [label="hook"];
    "React component\
or hook?" -> "src/frontend/services/" [label="service/singleton"];

    node [shape=box];
    "src/shared/" [style=filled, fillcolor="#e8f5e9"];
    "src/backend/handlers/" [style=filled, fillcolor="#e3f2fd"];
    "src/backend/services/" [style=filled, fillcolor="#e3f2fd"];
    "src/frontend/components/" [style=filled, fillcolor="#fff3e0"];
    "src/frontend/hooks/" [style=filled, fillcolor="#fff3e0"];
    "src/frontend/services/" [style=filled, fillcolor="#fff3e0"];
}

Shared code constraint: src/shared/ must NOT import browser APIs, Node.js APIs, or React.

How Do I Access / Mutate Data?

digraph data_access {
    rankdir=TB;
    node [shape=diamond];
    "Inside React\
component?" -> "Use query hooks" [label="yes"];
    "Inside React\
component?" -> "Use queryService\
singleton" [label="no\
(command, service)"];

    "Need to mutate\
file tree?" -> "queryService.mutations.*\
(optimistic updates)" [label="always"];
    "Need to read\
file content?" -> "readFileContent()\
helper (cache-first)" [label="preferred"];

    node [shape=box];
    "Use query hooks" [style=filled, fillcolor="#e8f5e9"];
    "Use queryService\
singleton" [style=filled, fillcolor="#e8f5e9"];
    "queryService.mutations.*\
(optimistic updates)" [style=filled, fillcolor="#fff3e0"];
    "readFileContent()\
helper (cache-first)" [style=filled, fillcolor="#fff3e0"];
}

**Never call window.api.* directly for tree mutations** — always go through queryService.mutations.* which handles optimistic updates and rollback.

Key Directories

DirectoryWhat to find
src/types.tsAll shared types (FileNode, FileMetadata, ChatSession, Agent, etc.)
src/shared/Code shared by both processes (graph, agentFlow, toolDescriptors, search)
src/backend/handlers/IPC handlers: file, project, agent, agentFlow
src/backend/services/IndexedFsService, UserDataService, ReferenceIndexService, agent/
src/backend/services/agent/AI system: AdkRunner, ToolFactory, providers, ChatDatabaseService
src/frontend/components/All React components (chat/, graph/, fileViewer/, collectionViewer/)
src/frontend/services/commandInfra/VS Code-style commands, keybindings, context keys
src/frontend/services/query/TanStack Query: queryService, mutations, treeTransformations
src/frontend/hooks/Custom hooks: useFileTree, useChat, useAgentFlowRun, etc.
src/frontend/styles/plate/Plate.js editor plugins and kits
src/locales/{en,zh-CN}/i18n translations (8 namespaces)
e2e/Playwright E2E tests
electron/preload.tsIPC bridge — window.api.* definitions
src/global.d.tsTypeScript declarations for Window.api

Common Task Recipes

Read references/recipes.md for detailed step-by-step procedures including:

  • Adding a new IPC channel (5-step checklist)
  • Adding a new command (5-step checklist)
  • Adding a new file subType (8-step checklist)
  • Adding a new agent tool (6-step checklist)
  • Adding a new sidebar panel or editor handler
  • Adding i18n strings

Architecture at a Glance

Read references/architecture.md for the full breakdown. Key mental model:

Frontend (React) --window.api.*--> Preload --IPC--> Backend handlers --> Services --> Disk
                 <--transport push events--  <--IPC--  ProjectManager <-- IndexedFsService events
  • State: TanStack Query is single source of truth. staleTime: Infinity everywhere.
  • File tree: Event-driven push from backend, never polled. useFileTree sets up listener.
  • Mutations: createTreeMutation factory: optimistic update -> IPC call -> rollback on error.
  • Commands: VS Code-style CommandService + ContextService + KeybindingService.
  • Editor routing: ContentViewer dispatches by subType first, then category.
  • AI: Google ADK with multi-provider LLM registry. See references/agent-system.md.

i18n Checklist

  • 8 namespaces: common, fileExplorer, chat, project, editor, agentBuilder, graph, agentDefinition
  • In components: const { t } = useTranslation("namespace")
  • Outside React: import i18n from "@/src/i18n/i18n"; i18n.t("ns:key")
  • Always add keys to BOTH en and zh-CN

Build, Lint & Test

npm run dev:electron     # Dev mode (Vite + Electron)
npm run build            # Production build
npm run check            # Lint + format + TypeScript check
npm run test:e2e         # Playwright E2E tests (headless)
npm run test:e2e:headed  # E2E with visible browser
  • Path alias: @/* maps to repo root
  • Formatting: Prettier (double quotes, 4-space indent, semicolons)
  • Always run E2E tests you wrote before committing

Pitfalls

  1. Any node can have children — not just folders
  2. parentId/siblingIndex are derived — never persist
  3. Tree mutations must be pure — treeTransformations.ts returns new arrays, never mutate
  4. Always add i18n to BOTH locales — en and zh-CN
  5. Toolbar renders via portal — #file-toolbar-portal in TopBar, not inside editor DOM
  6. Input elements suppress keybindings — useKeybindings checks event.target tag
  7. subType controls routing — checked before category in ContentViewer
  8. Binary files use base64 over IPC — text uses UTF-8
  9. STRUCTURAL_FILE_CHANGES control broadcasts — content "update" does NOT re-push tree
  10. Add Window.api types — update src/global.d.ts when adding IPC channels
  11. Shared code is process-agnostic — src/shared/ cannot import browser or Node APIs
  12. Tool descriptors are shared — toolDescriptors.ts serves both UI commands and LLM agents
  13. Every user-facing data element needs a tooltip

References

ReferenceUse when
references/architecture.mdUnderstanding layers, IPC channels, backend services, frontend providers
references/command-system.mdWorking with commands, keybindings, context keys, when clauses
references/workspace-structure.mdOn-disk file layout, metadata schema, storage guidelines
references/agent-system.mdAI features: providers, streaming, tools, planning mode, chat persistence
references/recipes.mdStep-by-step procedures for common development tasks

平台分布

OpenClaw

94.94%
按下载量换算1,015

安全审计

VirusTotal

通过

ClawScan

通过

Static analysis

通过

权限和风险

操作浏览器

该 Skill 可能涉及浏览器控制能力,使用时可能读取或操作网页内容,需要在受控环境中确认权限边界。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。目前只有一个公开来源,建议同时核对源仓库。

继续浏览同类 Skills