davenov-cc 1.0.6 โ†’ 1.0.8

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/README.md CHANGED
@@ -10,7 +10,6 @@ Slash commands that can be invoked with `/<command-name>`:
10
10
 
11
11
  - **davenov:cc:interview** - Interview mode for expanding specifications
12
12
  - **davenov:cc:rule** - Create or modify Claude Code rules
13
- - **davenov:cc:update** - Update to latest version and sync to ~/.claude/
14
13
 
15
14
  ### Skills
16
15
 
@@ -33,12 +32,16 @@ That's it! The installer will copy all commands and skills to `~/.claude/`.
33
32
 
34
33
  ## Updating
35
34
 
36
- Update from any directory using the slash command:
35
+ ### `/davenov:cc:update`
36
+
37
+ The easiest way โ€” just run this slash command from any Claude Code session:
37
38
 
38
39
  ```
39
40
  /davenov:cc:update
40
41
  ```
41
42
 
43
+ ### Manual update
44
+
42
45
  Or run the npx command directly:
43
46
 
44
47
  ```bash
package/bin/cli.js CHANGED
@@ -86,44 +86,48 @@ function removeRecursive(target) {
86
86
  return true;
87
87
  }
88
88
 
89
- async function uninstall(rl) {
90
- console.log("\n๐Ÿ—‘๏ธ Claude Code Customizations Uninstaller\n");
91
- console.log(`Target: ${CLAUDE_DIR}\n`);
92
-
93
- // Check what's installed
94
- const installed = [];
89
+ function getItemsToOverwrite() {
90
+ const toOverwrite = [];
95
91
  for (const [dir, items] of Object.entries(INSTALLED_ITEMS)) {
96
92
  for (const item of items) {
97
93
  const fullPath = path.join(CLAUDE_DIR, dir, item);
98
94
  if (fs.existsSync(fullPath)) {
99
- installed.push({ dir, item, fullPath });
95
+ toOverwrite.push({ dir, item, fullPath });
100
96
  }
101
97
  }
102
98
  }
99
+ return toOverwrite;
100
+ }
101
+
102
+ async function uninstall(rl) {
103
+ console.log("\n๐Ÿ—‘๏ธ Davenov CC Collection โ€” Uninstaller\n");
104
+
105
+ // Check what's installed
106
+ const installed = getItemsToOverwrite();
103
107
 
104
108
  if (installed.length === 0) {
105
- console.log("No davenov-cc customizations found to uninstall.");
109
+ console.log("Nothing from Davenov CC found. Already clean! ๐Ÿงน\n");
106
110
  return;
107
111
  }
108
112
 
109
- console.log("Found installed customizations:");
113
+ console.log("Found these installed:");
110
114
  for (const { dir, item } of installed) {
111
- console.log(` - ${dir}/${item}`);
115
+ console.log(` ${dir}/${item}`);
112
116
  }
113
117
  console.log();
114
118
 
115
119
  if (!AUTO_OVERRIDE) {
116
120
  const answer = await prompt(
117
121
  rl,
118
- "Do you want to remove these customizations? (y/N): "
122
+ "Remove all of these? (y/N): "
119
123
  );
120
124
 
121
125
  if (answer.toLowerCase() !== "y") {
122
- console.log("\nUninstall cancelled.");
126
+ console.log("\nAll good, keeping everything in place. ๐Ÿ‘\n");
123
127
  return;
124
128
  }
125
129
  } else {
126
- console.log("Auto-override enabled, proceeding...");
130
+ console.log("Auto-override enabled, cleaning up...");
127
131
  }
128
132
 
129
133
  console.log("\nRemoving...\n");
@@ -131,18 +135,17 @@ async function uninstall(rl) {
131
135
  let removed = 0;
132
136
  for (const { dir, item, fullPath } of installed) {
133
137
  if (removeRecursive(fullPath)) {
134
- console.log(` โœ“ ${dir}/${item}`);
138
+ console.log(` โœ“ ${dir}/${item}`);
135
139
  removed++;
136
140
  }
137
141
  }
138
142
 
139
- console.log(`\nโœ… Uninstall complete! Removed ${removed} item(s).\n`);
143
+ console.log(`\nโœ… Done! Removed ${removed} item(s).`);
144
+ console.log(" Come back anytime! ๐Ÿ‘‹\n");
140
145
  }
141
146
 
142
147
  async function install(rl) {
143
- console.log("\n๐Ÿ“ฆ Claude Code Customizations Installer\n");
144
- console.log(`Source: ${SOURCE_DIR}`);
145
- console.log(`Target: ${CLAUDE_DIR}\n`);
148
+ console.log("\nโœจ Davenov CC Collection\n");
146
149
 
147
150
  // Check what we have to install
148
151
  const available = CUSTOMIZATION_DIRS.filter((dir) =>
@@ -150,40 +153,38 @@ async function install(rl) {
150
153
  );
151
154
 
152
155
  if (available.length === 0) {
153
- console.log("No customizations found to install.");
156
+ console.log("Hmm, nothing to install here. That's weird.");
154
157
  process.exit(0);
155
158
  }
156
159
 
157
- console.log("Available customizations:");
160
+ console.log("๐Ÿ“ฆ What's in the box:");
158
161
  for (const dir of available) {
159
162
  const srcPath = path.join(SOURCE_DIR, dir);
160
163
  const fileCount = countFiles(srcPath);
161
- console.log(` - ${dir}/ (${fileCount} files)`);
164
+ console.log(` ${dir}/ โ†’ ${fileCount} files`);
162
165
  }
163
166
  console.log();
164
167
 
165
- // Check for existing files
166
- const existing = available.filter((dir) =>
167
- fs.existsSync(path.join(CLAUDE_DIR, dir))
168
- );
168
+ // Check for actual file conflicts (not just directory existence)
169
+ const itemsToOverwrite = getItemsToOverwrite();
169
170
 
170
- if (existing.length > 0) {
171
- console.log("โš ๏ธ The following directories already exist:");
172
- for (const dir of existing) {
173
- console.log(` - ${path.join(CLAUDE_DIR, dir)}`);
171
+ if (itemsToOverwrite.length > 0) {
172
+ console.log("โš ๏ธ Heads up! These will be overwritten:");
173
+ for (const { dir, item } of itemsToOverwrite) {
174
+ console.log(` ${dir}/${item}`);
174
175
  }
175
176
  console.log();
176
177
 
177
178
  if (AUTO_OVERRIDE) {
178
- console.log("Auto-override enabled, proceeding...");
179
+ console.log("Auto-override enabled, let's go...");
179
180
  } else {
180
181
  const answer = await prompt(
181
182
  rl,
182
- "Do you want to overwrite existing files? (y/N): "
183
+ "Cool with that? (y/N): "
183
184
  );
184
185
 
185
186
  if (answer.toLowerCase() !== "y") {
186
- console.log("\nInstallation cancelled.");
187
+ console.log("\nNo worries, nothing changed. Catch you later! ๐Ÿ‘‹");
187
188
  rl.close();
188
189
  process.exit(0);
189
190
  }
@@ -193,22 +194,20 @@ async function install(rl) {
193
194
  // Ensure .claude directory exists
194
195
  if (!fs.existsSync(CLAUDE_DIR)) {
195
196
  fs.mkdirSync(CLAUDE_DIR, { recursive: true });
196
- console.log(`Created ${CLAUDE_DIR}`);
197
197
  }
198
198
 
199
199
  // Install each directory
200
- console.log("\nInstalling...\n");
200
+ console.log("Installing the good stuff...\n");
201
201
 
202
202
  for (const dir of available) {
203
203
  const srcPath = path.join(SOURCE_DIR, dir);
204
204
  const destPath = path.join(CLAUDE_DIR, dir);
205
205
 
206
- console.log(` ${dir}/`);
206
+ console.log(` โœ“ ${dir}/`);
207
207
  copyRecursive(srcPath, destPath);
208
208
  }
209
209
 
210
- console.log("\nโœ… Installation complete!\n");
211
- console.log("Your customizations are now available in Claude Code.");
210
+ console.log("\n๐Ÿš€ You're all set! Go build something!\n");
212
211
  }
213
212
 
214
213
  async function main() {
@@ -1,12 +1,12 @@
1
1
  ---
2
- description: Update davenov-cc-collection to latest version and sync to ~/.claude/
2
+ description: Update Davenov CC (skills & slash commands collection) to the latest version
3
3
  allowed-tools:
4
4
  - Bash
5
5
  ---
6
6
 
7
- # Update davenov-cc-collection
7
+ # Update Davenov CC Collection
8
8
 
9
- Download the latest version from npm and install to ~/.claude/.
9
+ This command updates the **davenov-cc** npm package โ€” a collection of Claude Code skills and slash commands โ€” to the latest version and syncs them to your `~/.claude/` folder.
10
10
 
11
11
  ## Instructions
12
12
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "davenov-cc",
3
- "version": "1.0.6",
3
+ "version": "1.0.8",
4
4
  "description": "Claude Code customizations - skills and slash commands for enhanced AI-assisted development",
5
5
  "bin": {
6
6
  "davenov-cc": "./bin/cli.js"