Initial commit

This commit is contained in:
Zhongwei Li
2025-11-30 08:20:09 +08:00
commit 2c67e6b9e5
4 changed files with 183 additions and 0 deletions

View File

@@ -0,0 +1,11 @@
{
"name": "formatter",
"description": "Auto-format code files after editing using hooks",
"version": "1.0.0",
"author": {
"name": "Jeremy Longshore"
},
"hooks": [
"./hooks/hooks.json"
]
}

3
README.md Normal file
View File

@@ -0,0 +1,3 @@
# formatter
Auto-format code files after editing using hooks

124
hooks/hooks.json Normal file
View File

@@ -0,0 +1,124 @@
{
"description": "Automatically formats code files after editing using Prettier, demonstrating best practices for PostToolUse hooks and event-driven automation",
"version": "2.0.0",
"author": "claude-code-examples",
"lastUpdated": "2025-10-11",
"hooks": {
"PostToolUse": [
{
"description": "Auto-format code files after Write or Edit operations",
"matcher": "Write|Edit",
"priority": 100,
"enabled": true,
"hooks": [
{
"type": "command",
"command": "${CLAUDE_PLUGIN_ROOT}/scripts/format.sh",
"description": "Runs Prettier formatter on supported file types (JS, TS, JSON, CSS, MD)",
"timeout": 5000,
"continueOnError": true,
"environment": {
"NODE_ENV": "production",
"PRETTIER_CONFIG": "${CLAUDE_PLUGIN_ROOT}/config/.prettierrc"
}
}
]
}
],
"PreToolUse": [
{
"description": "Optional: Validate file format before editing (disabled by default)",
"matcher": "Edit",
"priority": 50,
"enabled": false,
"hooks": [
{
"type": "command",
"command": "${CLAUDE_PLUGIN_ROOT}/scripts/validate-format.sh",
"description": "Checks if file is already formatted to avoid unnecessary changes",
"timeout": 3000,
"continueOnError": true
}
]
}
]
},
"configuration": {
"supportedExtensions": [
".js", ".jsx", ".ts", ".tsx", ".json",
".css", ".scss", ".less", ".md", ".mdx",
".yaml", ".yml", ".html", ".vue", ".svelte"
],
"prettierOptions": {
"semi": true,
"singleQuote": true,
"tabWidth": 2,
"trailingComma": "es5",
"printWidth": 100,
"bracketSpacing": true,
"arrowParens": "avoid"
},
"excludePatterns": [
"node_modules/**",
"dist/**",
"build/**",
"*.min.js",
"*.min.css",
"vendor/**"
]
},
"troubleshooting": {
"commonIssues": [
{
"issue": "Formatter not running",
"solutions": [
"Ensure Node.js is installed: node --version",
"Check if npx is available: which npx",
"Verify script permissions: ls -la scripts/format.sh",
"Check hook is enabled in this config"
]
},
{
"issue": "Files not formatting correctly",
"solutions": [
"Check if Prettier is installed globally or locally",
"Verify file type is supported",
"Check for .prettierignore file blocking formatting",
"Look for syntax errors preventing formatting"
]
},
{
"issue": "Performance issues",
"solutions": [
"Consider disabling for large files",
"Adjust timeout value if needed",
"Use excludePatterns to skip unnecessary files"
]
}
],
"debugMode": {
"enable": "export FORMATTER_DEBUG=true",
"logLocation": "${CLAUDE_PLUGIN_ROOT}/logs/formatter.log"
}
},
"examples": [
{
"scenario": "Format JavaScript file after editing",
"trigger": "Claude uses Edit tool on app.js",
"action": "PostToolUse hook triggers format.sh",
"result": "app.js is formatted with Prettier"
},
{
"scenario": "Create new React component",
"trigger": "Claude uses Write tool to create Button.jsx",
"action": "PostToolUse hook triggers after file creation",
"result": "Button.jsx is automatically formatted"
},
{
"scenario": "Edit configuration file",
"trigger": "Claude edits package.json",
"action": "PostToolUse hook formats JSON",
"result": "package.json has consistent formatting"
}
]
}

45
plugin.lock.json Normal file
View File

@@ -0,0 +1,45 @@
{
"$schema": "internal://schemas/plugin.lock.v1.json",
"pluginId": "gh:jeremylongshore/claude-code-plugins-plus:plugins/examples/formatter",
"normalized": {
"repo": null,
"ref": "refs/tags/v20251128.0",
"commit": "0de18019c097059b83c9e3165543ee4adf58738e",
"treeHash": "e45077928d3fd08c8ed0b8c94028b571b89be85eeafd0b1319a8d7c28ab44369",
"generatedAt": "2025-11-28T10:18:27.826598Z",
"toolVersion": "publish_plugins.py@0.2.0"
},
"origin": {
"remote": "git@github.com:zhongweili/42plugin-data.git",
"branch": "master",
"commit": "aa1497ed0949fd50e99e70d6324a29c5b34f9390",
"repoRoot": "/Users/zhongweili/projects/openmind/42plugin-data"
},
"manifest": {
"name": "formatter",
"description": "Auto-format code files after editing using hooks",
"version": "1.0.0"
},
"content": {
"files": [
{
"path": "README.md",
"sha256": "e422947bc422ed013b98bda021d3ef55a2a3e870155d2bb4682f8f1522a6b84e"
},
{
"path": "hooks/hooks.json",
"sha256": "857111b98d67033b2f4cf90ffc82d3bfdb516dd9a669db8d73e4471655f48d78"
},
{
"path": ".claude-plugin/plugin.json",
"sha256": "6f3ecf57414a89ab43f659f41efd868d527d478a5d76b77b23467569c87a902d"
}
],
"dirSha256": "e45077928d3fd08c8ed0b8c94028b571b89be85eeafd0b1319a8d7c28ab44369"
},
"security": {
"scannedAt": null,
"scannerVersion": null,
"flags": []
}
}