Claude代码插件
一个精心策划的插件市场,通过为开发工作流程键入钩子来扩展Claude Code。这个存储库提供了现成的插件和共享的TypeScript实用程序,用于创建自己的插件。
概述
该市场包含三个为现代开发工作流程设计的生产就绪插件:
- github编排 -GitHub工作流编排,包括分支上下文、提交增强和CI管理
- nextjs-supabase-ai-sdk开发 -通过抽检、类型检查和测试来加强开发质量
- 项目背景 -上下文发现、文件夹验证和文档管理
所有插件都利用共享的TypeScript实用程序来实现一致的行为、全面的类型安全和自动日志记录。Hooks是具有完整类型定义的自执行TypeScript文件。
快速开始
安装
- 将此市场添加到您的
.claude/settings.json:
{
"extraKnownMarketplaces": {
"constellos": {
"source": {
"source": "directory",
"path": "./.claude-plugin"
}
}
}
}- 使用CLI安装插件:
claude plugin install github-orchestration@constellos
claude plugin install nextjs-supabase-ai-sdk-dev@constellos
claude plugin install project-context@constellos或者在您的设置中启用它们:
{
"enabledPlugins": {
"github-orchestration@constellos": true,
"nextjs-supabase-ai-sdk-dev@constellos": true,
"project-context@constellos": true
}
}可用插件
GitHub编排(github-orchestration)
目的: 全面的GitHub工作流编排,用于问题驱动的开发,具有自动上下文发现和提交增强功能。
主要特点:
- 在会话开始时显示当前分支的链接GitHub问题
- 显示分支同步状态(远程跟踪分支和源/主)
- 列出可用于工作的未决问题
- 自动提交带有任务上下文和git预告片的子代理工作
- 从计划文件自动创建/更新GitHub问题
- 使用任务和问题元数据增强提交
- 在会话结束时使用CI检查PR状态并预览URL报告
- 在远程环境中安装GitHub CLI
挂钩:
- 会话开始 (
install-github.ts)-安装GitHub CLI(非阻塞) - 会话开始 (
add-github-context.ts)-显示分支问题上下文和同步状态(非阻塞) - PostTool使用\[写入|编辑\] (
sync-plan-to-issue.ts)-将计划文件同步到GitHub问题(非阻塞) - PostToolUse〔Bash〕 (
enhance-commit-context.ts)-用任务元数据丰富提交(非阻塞) - 子代理停止 (
commit-task.ts)-自动提交代理工作(非阻塞) - 停止 (
commit-session-check-pr-status.ts)-会话提交和PR检查(渐进式阻止)
使用案例:
- 通过分支链接进行问题驱动开发
- 具有自动提交文档的多代理工作流
- 结束会话前的PR准备情况检查
- 通过丰富的提交自动化任务文档
文档:
______________________________________________________________________
Next.js开发工具(nextjs-supabase-ai-sdk-dev)
目的: 通过在Next.js、Supabase和AI SDK项目的文件和项目级别进行自动检查来强制执行代码质量。
主要特点:
- 每次编辑时进行每个文件的质量检查(ESLint、TypeScript、TSDoc)
- 修改测试文件时自动执行测试
- 在会话结束时进行全面的项目范围验证(阻塞)
- 在远程环境中安装Vercel和Supabase CLI
- 鼓励用户界面开发人员代理完成后进行用户界面审查
- 在SubagentStop钩子中记录所有任务工具调用的上下文
挂钩:
- 会话开始 (
install-vercel.ts,install-supabase.ts)-CLI安装(非阻塞) - 预工具使用\[任务\] (共享
log-task-call.ts)-任务上下文日志记录(非阻塞) - PostTool使用\[任务\] (共享
log-task-result.ts)-任务结果记录(非阻塞) - PostTool使用\[任务\] (
encourage-ui-review.ts)UI审查鼓励(非阻塞) - PostTool使用\[写入|编辑\] (
check-file-eslint.ts)-文件ESLint(非阻塞、信息性) - PostTool使用\[写入|编辑\] (
check-file-types.ts)-文件上的TypeScript(非阻塞、信息性) - PostTool使用\[写入|编辑\] (
check-file-tsdoc.ts)-TSDoc验证(非阻塞、信息性) - PostTool使用\[写入|编辑测试文件\] (
check-file-vitest-results.ts)-测试执行(非阻塞、信息性) - 停止 (
check-global-eslint.ts)-项目范围内的ESLint(封堵) - 停止 (
check-global-types.ts)-项目范围的TypeScript(阻塞) - 停止 (
check-global-vitest-results.ts)-完整的测试套件(阻塞)
使用案例:
- Next.js应用程序开发
- 需要严格类型安全的TypeScript项目
- 具有全面测试套件的项目
- 执行代码质量标准的团队
- 需要预推送验证的CI/CD工作流程
文档: 插件/nextjs-supabase-ai-sdk开发/README.md
______________________________________________________________________
项目背景(project-context)
目的: 自动发现和链接文档,验证项目结构,并为Claude Code工作流提供智能指导。
主要特点:
- 读取项目文件时发现并链接CLAUDE.md文件
- 验证.claude目录结构(代理、技能、规则、钩子)
- 对文件操作强制执行基于计划的路径范围
- 验证规则文件是否需要正确的必需技能元数据
- 鼓励根据用户提示更新上下文
- 将WebFetch重定向到文档URL的降价版本
- 创建PLAN.md符号链接到活动计划文件
- 全面的任务跟踪和记录
挂钩:
- 用户提示: (
encourage-context-review.ts)-上下文更新鼓励(非阻塞) - 预工具使用\[任务\] (共享
log-task-call.ts)-任务日志记录(非阻塞) - 预工具使用\[写入|编辑\] (共享
validate-folder-structure-write.ts)-文件夹验证(阻止违规行为) - 预工具使用\[写入|编辑\] (共享
validate-rules-file.ts)-规则验证(阻止错误) - 预工具使用\[Bash\] (共享
validate-folder-structure-mkdir.ts)-mkdir验证(阻止无效路径) - 预工具使用\[WebFetch\] (
try-markdown-page.ts)-Markdown URL首选项(非屏蔽) - PostTool使用\[任务\] (共享
log-task-result.ts)-任务结果记录(非阻塞) - PostTool使用\[写入|编辑\] (
create-plan-symlink.ts)-计划符号链接创建(非阻塞) - PostTool使用\[写入|编辑\] (共享
enforce-plan-scoping.ts)-计划范围执行(可以阻止) - PostTool使用\[阅读\] (
add-folder-context.ts)-上下文发现(非阻塞) - PostTool使用\[阅读\] (共享
enforce-plan-scoping.ts)-阅读范围指南(非阻塞)
使用案例:
- 需要有组织文档的大型代码库
- 具有.claude目录结构的项目
- 计划驱动的开发工作流程
- 文档密集型项目
- 执行项目结构标准的团队
- 以研究为导向的发展(降价优先)
______________________________________________________________________
建筑
.
├── .claude-plugin/
│ └── marketplace.json # Marketplace definition
│
├── shared/ # Shared utilities for all plugins
│ ├── types/
│ │ └── types.ts # Hook type definitions
│ ├── hooks/
│ │ ├── utils/ # Hook utilities (I/O, debug, etc.)
│ │ ├── log-task-call.ts # PreToolUse[Task] hook
│ │ ├── log-task-result.ts # PostToolUse[Task] hook
│ │ ├── validate-folder-structure-write.ts
│ │ ├── validate-folder-structure-mkdir.ts
│ │ ├── validate-rules-file.ts
│ │ └── enforce-plan-scoping.ts
│ └── rules/ # Rule documentation
│
└── plugins/ # Individual marketplace plugins
├── github-orchestration/
│ ├── .claude-plugin/plugin.json
│ ├── README.md
│ └── hooks/
│ ├── hooks.json
│ ├── install-github.ts
│ ├── add-github-context.ts
│ ├── sync-plan-to-issue.ts
│ ├── enhance-commit-context.ts
│ ├── commit-task.ts
│ └── commit-session-check-pr-status.ts
│
├── nextjs-supabase-ai-sdk-dev/
│ ├── .claude-plugin/plugin.json
│ ├── README.md
│ └── hooks/
│ ├── hooks.json
│ ├── install-vercel.ts
│ ├── install-supabase.ts
│ ├── check-file-eslint.ts
│ ├── check-file-types.ts
│ ├── check-file-tsdoc.ts
│ ├── check-file-vitest-results.ts
│ ├── encourage-ui-review.ts
│ ├── check-global-eslint.ts
│ ├── check-global-types.ts
│ └── check-global-vitest-results.ts
│
└── project-context/
├── .claude-plugin/plugin.json
├── README.md
└── hooks/
├── hooks.json
├── encourage-context-review.ts
├── add-folder-context.ts
├── create-plan-symlink.ts
└── try-markdown-page.ts创建自己的插件
1.创建插件目录结构
mkdir -p plugins/my-plugin/.claude-plugin
mkdir -p plugins/my-plugin/hooks2.创建 plugin.json
{
"name": "my-plugin",
"version": "0.1.0",
"description": "My custom plugin",
"author": { "name": "your-name" }
}3.创建 hooks/hooks.json
重要提示: 钩子必须包裹在 "hooks" 对象。
{
"description": "My plugin hooks",
"hooks": {
"SessionStart": [
{
"hooks": [
{
"type": "command",
"command": "npx tsx ${CLAUDE_PLUGIN_ROOT}/hooks/my-hook.ts"
}
]
}
]
}
}4.创建挂钩文件 hooks/my-hook.ts
import type { SessionStartInput, SessionStartHookOutput } from '../../../shared/types/types.js';
import { runHook } from '../../../shared/hooks/utils/io.js';
async function handler(input: SessionStartInput): Promise {
return {
hookSpecificOutput: {
hookEventName: 'SessionStart',
additionalContext: 'My hook executed!',
},
};
}
export { handler };
runHook(handler);5.添加到marketplace.json
{
"plugins": [
{
"name": "my-plugin",
"source": "./plugins/my-plugin"
}
]
}6.创建README.md
按照官方的Claude Code模式记录你的插件。请参阅现有的插件README以获取示例。
共享公用设施
所有插件都可以从 shared/ 一致行为文件夹:
类型(shared/types/types.ts)
所有Claude Code钩子事件的完整TypeScript类型:
- 会话开始、会话结束、停止
- 预工具使用、后工具使用
- 子代理启动、子代理停止
- 用户提示:
- 还有更多
挂钩实用程序(shared/hooks/utils/)
- io.ts -stdin/stdout JSON处理和
runHook带自动日志记录的包装器 - debug.ts -使用JSONL输出调试日志记录
.claude/logs/hook-events.json - 转录本 -解析Claude转录JSONL文件
- 亚氏族国家 -保存/加载/分析子代理上下文和文件操作
- 任务状态 -PreToolUse\[任务\]的任务状态管理→ 子代理停止流
- 软件包管理器 -从锁文件中检测npm/yarn/pnpm/bun
- toml.ts -用于配置文件的简单TOML解析器
- 用于解决事件的主剂 -检测工具事件是来自主代理还是子代理
发展
测试
npm run typecheck # TypeScript type checking
npm run lint # ESLint
npm run test # Vitest
npm run test:watch # Vitest watch mode调试日志记录
启用调试输出:
DEBUG=* claude # All debug output
DEBUG=plugin-name claude # Specific plugin调试日志将写入 .claude/logs/hook-events.json JSONL格式。
本地测试
编辑插件文件后:
- 退出Claude Code会话
- 开始新会话
- 更改将自动加载
故障排除
插件未加载
问题: 插件未出现在Claude Code中或钩子未触发
解决方案:
- 验证
.claude/settings.json具有正确的市场路径和启用的插件 - 检查插件缓存:
~/.claude/plugins/cache/ - 重新安装插件:
claude plugin uninstall --scope project my-plugin@constellos
claude plugin install --scope project my-plugin@constellos- 重新启动Claude Code会话
钩子不射击
问题: 钩子已注册但未执行
解决方案:
- 验证
hooks.json具有正确的格式"hooks"包装对象 - 检查
.claude/logs/hook-events.json用于钩子执行日志 - 确保使用挂钩文件路径
${CLAUDE_PLUGIN_ROOT}变量 - 重新安装插件以刷新缓存
何时重新启动与重新安装
需要新会话 (退出并重新启动Claude Code):
- 更改为
.claude/settings.json - 在市场上添加/删除插件
- 更改marketplace.json
需要插件重新安装 (无需重新启动会话):
- 更改为
hooks/hooks.json - 钩子实现文件(.ts)的更改
- 共享实用程序的更改
- Bug修复或改进
重新安装命令:
claude plugin uninstall --scope project my-plugin@constellos
claude plugin install --scope project my-plugin@constellosClaude Worktree启动器(cw)
此存储库包括 claude-worktree.sh,一个为Claude Code会话创建独立git工作树的实用脚本。每个会话都有自己的分支和工作树,实现了无冲突的并行开发。
特性
- 孤立的工作树: 在以下位置创建工作树
~/.claude-worktrees/{repo}/{branch-name} - 自动分支命名: 生成唯一的分支名称,如
claude-kind-marmot-s7y8gh44 - 新鲜远程状态: 始终从最新版本获取并创建工作树
origin/main或origin/master - 插件缓存刷新: 自动重新安装插件,以确保工作树使用当前的插件代码
- 工作树检测: 如果已经在工作树中,请先导航到父仓库
- 选项卡完成: 从已知位置自动完成仓库名称
- 回购快捷方式: 按名称跳转到任何仓库或
owner/repo路径
设置
添加到您的 ~/.bashrc 或 ~/.zshrc:
# Claude Worktree launcher with tab completion
source ~/constellos/claude-code/claude-worktree.sh然后重新加载shell:
source ~/.bashrc # or source ~/.zshrc您将看到: cw: Claude worktree command ready (tab completion enabled)
用法
# From current directory
cw
# Jump to a repo by name (searches ~/constellos, ~/celestian-dev, ~/)
cw lazyjobs
cw nodes-md
# Jump to a repo by owner/name
cw celestian-dev/lazyjobs
cw constellos/claude-code
# Pass CLI flags to Claude
cw --verbose
cw lazyjobs --no-context选项卡完成
cw laz # → lazyjobs
cw celestian-dev/ # → shows all repos in ~/celestian-dev/
cw con # → constellos/已知的回购地点
脚本搜索这些目录(按顺序):
~/constellos/~/celestian-dev/~/
运作原理
- 从参数(如果提供)解析repo或使用当前目录
- 检测您是否在git存储库中(如果不是,则正常启动Claude)
- 如果在工作树中,请先导航到父存储库
- 从远程主分支获取最新消息
- 在以下位置创建新工作台
~/.claude-worktrees/{repo}/{branch-name} - 刷新项目范围的插件缓存
- 在工作树中启动Claude Code
- Claude退出时返回工作树目录
依赖项
git-Git版本控制jq-JSON处理器(可选,用于插件缓存刷新)
如果需要,安装jq:
# macOS
brew install jq
# Ubuntu/Debian
sudo apt install jqNode md MCP服务器(基于Elysia)
这 节点md 该项目包括一个用Elysia和Supabase构建的定制MCP服务器。这可作为使用Bun运行时构建MCP服务器的参考实现。
建筑
- 框架: 艾莉西亚 -Fast Bun web框架
- 数据库:持久存储的基础
- 协议:模型上下文协议SDK
位置
~/constellos/nodes-md/apps/mcp/
├── src/
│ └── index.ts # MCP server implementation
├── package.json # Dependencies
└── tsconfig.json # TypeScript config可用工具
| 工具 | 说明 |
|---|---|
hello | 简单的hello world测试工具 |
create_nodeset | 在数据库中创建新节点集 |
运行服务器
cd ~/constellos/nodes-md/apps/mcp
bun install
bun run src/index.ts环境变量
SUPABASE_URL=your-supabase-url
SUPABASE_SECRET_KEY=your-service-role-key
PORT=3001 # Optional, defaults to 3001用作参考
此实现演示了:
- 使用MCP SDK设置Elysia服务器
- Supabase客户端初始化
- 工具定义模式
- 类型安全的数据库操作
文档
综合文件:
- CLAUDE.md -详细的技术文档和架构
- 单个插件自述文件 -带有钩子、配置和用法的插件特定文档
技能文档 .claude/skills/:
- claude插件 -插件开发指南
- 克劳德钩子 -钩子类型和图案
- 克劳德技能 -代理技能
- 克劳德命令 -Slash命令
- 克劳德特工 -子代理配置
需求
- Node.js 18+
- 克劳德代码CLI
- TypeScript(通过tsx)
许可证
麻省理工学院
贡献
欢迎投稿!请确保:
- 所有钩子都是可自执行的TypeScript文件
- 正确打字使用
shared/types/types.ts - 测试通过(
npm test) - 类型检查通过(
npm run typecheck) - ESLint通过(
npm run lint) - 遵循官方的Claude Code插件模式
- 用全面的自述文件记录新插件
