Skip to content

扩展格式

dsh-cc 直接消费 Claude Code 的扩展格式:hooks.jsonSKILL.md、插件 plugin.json 清单和 .claude/agents/*.md 子代理定义,都无需转换即可挂载到 dsh-cc 的扩展点上。本页是一个索引:对每个扩展面给出文件位置、最小骨架,以及 深入讲解行为的指南链接。

hooks — hooks.json

文件位置: 一个 hooks.json,或设置文件中的 hooks 键,通过 @dsh-cc/hooks-claude-codeconfigPath 配置传入(cc preset 自带一个跟踪 在仓库根部的 hooks.json)。该路径是进程级的:相对路径在加载时按进程的启动 cwd 解析。读取/解析失败是被兜底的——bridge 只记录警告、不注册任何 hook。

最小骨架(一个事件、一个 matcher、一个带显式 timeoutcommand hook;单 hook 默认为 600 000 毫秒):

json
{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [
          { "type": "command", "command": "./scripts/gate.sh", "timeout": 5000 }
        ]
      }
    ]
  }
}

支持四种执行器类型:commandhttp,以及——默认关闭、由 enablePromptHooks / enableAgentHooks 配置开启——promptagent (二者都 fork 一个一次性子代理)。支持 18 种 hook 事件;配置里不支持的事件 在分组解析之前就被忽略。

完整内容: /guide/hooks

skills — SKILL.md

文件位置: 一个 skill 是 <name>/SKILL.md 目录包,位于以下根目录之一, 按优先级排列(rank 越低,同名冲突时越优先):

Rank来源路径
100managedconfig.managedDir
200project<projectRoot>/.claude/skills
300user<dshHome>/skills
400additional每个 config.additionalDirs

project root 是包含 .git 的最近祖先目录;没有则用当前 cwd。旧式 .claude/commands/*.md 文件也会被加载,并在元数据中标记为 deprecated。 harness 原生的文件系统提供方还会追加 <projectRoot>/.dsh/skills<projectRoot>/.agents/skills~/.agents/skills 这些根目录(完整的合并根目录清单见技能指南)。

最小骨架:

markdown
---
name: my-skill
description: What the skill does and when to use it
---

Body with $ARGUMENTS substitution and optional inline-shell !`cmd` commands.

已知 frontmatter 字段包括 allowed-toolsargument-hintmodel(含 inherit)、user-invocabledisable-model-invocationcontext(含 fork)、when_to_usepaths。name 必须是 kebab-case 才能注册。声明 paths 的 skill 是条件式的:在 Read/Write/Edit 工具触碰匹配文件之前不会 出现在目录中。

完整内容: /guide/skills

plugins — plugin.json

文件位置: 插件根目录持有 .claude-plugin/plugin.json(首选)或顶层 plugin.json(旧式)。插件状态是双 home 制:默认发现逻辑将 enabledPlugins(按 claude-user → dsh-user → project → local 级联,后读 文件按键覆盖)与两个 home 合并后的 plugins/installed_plugins.json 求交集 ——Claude home $CLAUDE_CONFIG_DIR(否则 ~/.claude)保持完全可读,dsh home $DSH_HOME(否则 ~/.dsh)是写入根目录,同名键 dsh 条目获胜。显式 pluginDirs 则改为扁平展开:本身或一层子目录中持有 .claude-plugin/plugin.json 或顶层 plugin.json 的目录。

最小骨架:

json
{
  "name": "my-plugin",
  "version": "1.0.0",
  "description": "What the plugin provides"
}

name 必填且为 kebab-case。组件字段有 commandsagentsskillshooksmcpServerssettings;省略 commands 时加载器扫描 commands/*.md。未知的顶层字段被忽略。每个组件挂载到对应的宿主 seam (commandssubagentsskillshooksmcpsettings);seam 缺失 的组件会被报告为 skipped,不会让整个加载失败。agents 以插件名为命名空间 挂载,因此 Task 工具通过限定 id(plugin:agent)派发它们。

完整内容: /guide/plugins

subagents — .claude/agents/*.md

文件位置: 从会话工作目录可见的 .claude/agents 目录——project 层是从 project root 向上走找到的最近 .claude/agents,user 层是 ~/.claude/agents。 project 遮蔽 user(包内捆绑层在两者之下)。定义以文件 basename 为键,该名字 即成为 subagent_type

最小骨架:

markdown
---
description: When to delegate to this agent
tools: Read, Grep, Glob
model: haiku
---

The agent's system prompt, written as the markdown body.

description 成为何时使用的指引;tools/disallowedTools 编译为有效的 allow/deny 工具限制;model(含 inherit)通过 ccModelRoutes 别名服务 解析;effortpermissionModemaxTurnsinitialPromptbackgroundmemoryskillsmcpServershooksisolation 都会透传。未知字段 被忽略;已知字段的坏值在加载时大声失败。保留类型 general-purpose(全新 spawn)和 fork(继承会话的 fork)是哨兵名——名为 fork.md 的工作区文件 不可达。

完整内容: /guide/subagents

下一步

dsh-cc 不是 Claude Code,也不是 Claude Code 的包装器。与 Anthropic 无关联,亦未获其背书。