💡 摘要
该项目为Claude Code工具使用提供基于模式的建议和权限控制。
🎯 适合人群
软件开发人员代码审查员DevOps工程师技术团队负责人质量保证测试人员
🤖 AI 吐槽: “看起来很能打,但别让配置把人劝退。”
安全分析严重风险
风险:Critical。建议检查:是否执行 shell/命令行指令。以最小权限运行,并在生产环境启用前审计代码与依赖。
.claude
Pattern-based suggestions and guardrails for Claude Code tool usage via PreToolUse/PostToolUse hooks.
Overview
The pattern-detector system hooks into Claude Code's PreToolUse and PostToolUse events to provide:
- Context-aware suggestions when patterns are detected in tool inputs
- Permission controls (ask/deny) for dangerous operations
- Automatic skill recommendations based on code patterns
Patterns
Patterns are markdown files in .claude/patterns/ with YAML frontmatter that match against tool inputs:
--- name: prefer-option-over-null description: Suggest Option type instead of null/undefined event: PostToolUse tool: Edit|Write glob: "**/*.ts" pattern: "\bnull\b|\bundefined\b" action: context level: info tag: code-smell --- Use `Option<A>` from Effect instead of `null` or `undefined`: ```typescript // Avoid const findUser = (id: string): User | null => ... // Prefer const findUser = (id: string): Option.Option<User> => ...
## Pattern Schema
Frontmatter fields (from `patterns/schema.ts`):
- `name`: Unique identifier for the pattern
- `description`: Human-readable description
- `event`: "PreToolUse" | "PostToolUse" (default: PostToolUse)
- `tool`: Regex matching tool names (default: ".*")
- `glob`: Optional glob pattern for file paths (e.g., "**/*.ts")
- `pattern`: Regex matching tool input content (command, new_string, content, etc.)
- `action`: "context" | "ask" | "deny" (default: context)
- `level`: "critical" | "high" | "medium" | "warning" | "info" (default: info)
- `tag`: Optional XML tag for context blocks (default: "pattern-suggestion")
### Actions
- `context`: Add suggestion to PostToolUse response
- `ask`: Prompt user for permission (PreToolUse only)
- `deny`: Block the operation with reason (PreToolUse only)
### Content Matching
The pattern detector searches these fields in order:
1. `command` (Bash)
2. `new_string` (Edit)
3. `content` (Write)
4. `pattern` (Grep)
5. `query` (WebSearch)
6. `url` (WebFetch)
7. `prompt` (WebFetch)
Falls back to JSON.stringify(tool_input) if none match.
## Testing
`test/TestClaude.ts` provides tool shape constructors for testing patterns:
```typescript
import * as TestClaude from "./.claude/test/TestClaude"
import { runPatternDetector } from "./.claude/hooks/pattern-detector"
// Create pre/post hook inputs
const bashHook = TestClaude.Bash({ command: "rm -rf /" })
const editHook = TestClaude.Edit({
file_path: "/foo.ts",
old_string: "old",
new_string: "null"
})
// Test against patterns
const output = await runPatternDetector(bashHook.pre)
// or
const output = await runPatternDetector(editHook.post)
Each tool constructor returns { pre, post } shapes with correct tool_name and hook_event_name.
Files
hooks/pattern-detector.ts: Main hook implementation (PreToolUse/PostToolUse)patterns/schema.ts: Pattern frontmatter Schema definitionspatterns/TEMPLATE.md: Template for new patternspatterns/dangerous-commands/: PreToolUse ask/deny patternspatterns/code-smells/: PostToolUse context suggestionstest/TestClaude.ts: Tool shape constructors for testingCLAUDE.md: Project guidelines referencing pattern system
五维分析
清晰度8/10
创新性7/10
实用性9/10
完整性7/10
可维护性8/10
优缺点分析
优点
- 通过模式检测增强代码安全性。
- 提供上下文感知的建议。
- 允许对风险操作进行权限控制。
缺点
- 需要维护模式文件。
- 可能会给新用户带来复杂性。
- 依赖于Claude Code工具。
相关技能
免责声明:本内容来源于 GitHub 开源项目,仅供展示和评分分析使用。
版权归原作者所有 front-depiction.
