cc-dev-template 0.1.20 → 0.1.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/bin/install.js CHANGED
@@ -20,7 +20,7 @@ console.log('='.repeat(50));
20
20
  console.log(`Installing to ${CLAUDE_DIR}...`);
21
21
 
22
22
  // Create directories
23
- const dirs = ['agents', 'commands', 'scripts', 'skills', 'mcp-servers'];
23
+ const dirs = ['agents', 'commands', 'scripts', 'skills', 'hooks', 'mcp-servers'];
24
24
  dirs.forEach(dir => {
25
25
  fs.mkdirSync(path.join(CLAUDE_DIR, dir), { recursive: true });
26
26
  });
@@ -92,6 +92,34 @@ if (fs.existsSync(skillsDir)) {
92
92
  console.log(' No skills to install');
93
93
  }
94
94
 
95
+ // Copy hooks
96
+ console.log('\nHooks:');
97
+ const hooksDir = path.join(SRC_DIR, 'hooks');
98
+ if (fs.existsSync(hooksDir)) {
99
+ const hookScripts = fs.readdirSync(hooksDir).filter(f => f.endsWith('.sh'));
100
+ const hookConfigs = fs.readdirSync(hooksDir).filter(f => f.endsWith('.json'));
101
+
102
+ // Copy shell scripts and make executable
103
+ hookScripts.forEach(file => {
104
+ const src = path.join(hooksDir, file);
105
+ const dest = path.join(CLAUDE_DIR, 'hooks', file);
106
+ fs.copyFileSync(src, dest);
107
+ fs.chmodSync(dest, 0o755); // Make executable
108
+ console.log(` ${file}`);
109
+ });
110
+
111
+ // Copy JSON configs to scripts dir for merging later
112
+ hookConfigs.forEach(file => {
113
+ const src = path.join(hooksDir, file);
114
+ const dest = path.join(CLAUDE_DIR, 'scripts', file);
115
+ fs.copyFileSync(src, dest);
116
+ });
117
+
118
+ console.log(`✓ ${hookScripts.length} hooks installed`);
119
+ } else {
120
+ console.log(' No hooks to install');
121
+ }
122
+
95
123
  // Install MCP servers
96
124
  console.log('\nMCP Servers:');
97
125
  const mcpServersDir = path.join(SRC_DIR, 'mcp-servers');
@@ -198,7 +226,10 @@ if (fs.existsSync(mergeSettingsPath)) {
198
226
  const configs = [
199
227
  { file: 'yaml-validation-hook.json', name: 'YAML validation hook' },
200
228
  { file: 'read-guard-hook.json', name: 'Context guard for large reads' },
201
- { file: 'statusline-config.json', name: 'Custom status line' }
229
+ { file: 'statusline-config.json', name: 'Custom status line' },
230
+ { file: 'orchestration-hook.json', name: 'Orchestration guidance hook' },
231
+ { file: 'bash-overflow-hook.json', name: 'Bash overflow guard hook' },
232
+ { file: 'bash-precheck-hook.json', name: 'Bash precheck hook' }
202
233
  ];
203
234
 
204
235
  configs.forEach(({ file, name }) => {
@@ -225,6 +256,7 @@ Installed to:
225
256
  Commands: ${CLAUDE_DIR}/commands/
226
257
  Scripts: ${CLAUDE_DIR}/scripts/
227
258
  Skills: ${CLAUDE_DIR}/skills/
259
+ Hooks: ${CLAUDE_DIR}/hooks/
228
260
  MCP Servers: ${CLAUDE_DIR}/mcp-servers/
229
261
  Settings: ${CLAUDE_DIR}/settings.json
230
262
  `);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cc-dev-template",
3
- "version": "0.1.20",
3
+ "version": "0.1.22",
4
4
  "description": "Structured AI-assisted development framework for Claude Code",
5
5
  "bin": {
6
6
  "cc-dev-template": "./bin/install.js"
@@ -125,7 +125,7 @@ async function main() {
125
125
  hookSpecificOutput: {
126
126
  hookEventName: "PreToolUse",
127
127
  permissionDecision: "deny",
128
- permissionDecisionReason: `This file (~${estimatedTokens.toLocaleString()} tokens, ${formatSize(fileSizeBytes)}) would consume significant context. Use Grep to find relevant sections first, then Read with offset/limit parameters to read specific portions. If you need the full file, use \`cat ${filePath}\` via Bash.`
128
+ permissionDecisionReason: `This file (~${estimatedTokens.toLocaleString()} tokens, ${formatSize(fileSizeBytes)}) would consume significant context. Use Grep to find relevant sections first, then Read with offset/limit parameters to read specific portions. If you need the full file, use multiple parallel Read calls with offset/limit to read it in chunks.`
129
129
  }
130
130
  };
131
131