davenov-cc 1.0.0

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.
Files changed (65) hide show
  1. package/README.md +106 -0
  2. package/bin/cli.js +16 -0
  3. package/commands/davenov:cc:interview.md +12 -0
  4. package/commands/davenov:cc:rule.md +275 -0
  5. package/commands/davenov:cc:update.md +21 -0
  6. package/install.js +144 -0
  7. package/package.json +35 -0
  8. package/skills/davenov:cc:expert-build-nostr/SKILL.md +183 -0
  9. package/skills/davenov:cc:expert-build-nostr/references/custom-protocols.md +390 -0
  10. package/skills/davenov:cc:expert-build-nostr/references/data-exchange-patterns.md +484 -0
  11. package/skills/davenov:cc:expert-build-nostr/references/encryption-nip44.md +258 -0
  12. package/skills/davenov:cc:expert-build-nostr/references/event-kinds.md +239 -0
  13. package/skills/davenov:cc:expert-build-nostr/references/key-management.md +300 -0
  14. package/skills/davenov:cc:expert-build-nostr/references/nips-overview.md +177 -0
  15. package/skills/davenov:cc:expert-build-nostr/references/nostr-tools-api.md +351 -0
  16. package/skills/davenov:cc:expert-build-nostr/references/protocol-fundamentals.md +161 -0
  17. package/skills/davenov:cc:expert-build-nostr/references/pubsub-patterns.md +402 -0
  18. package/skills/davenov:cc:expert-build-nostr/references/relay-management.md +352 -0
  19. package/skills/davenov:cc:expert-build-nostr/references/scaling-considerations.md +413 -0
  20. package/skills/davenov:cc:expert-build-nostr/templates/basic-client.ts +187 -0
  21. package/skills/davenov:cc:expert-build-nostr/templates/custom-event-schema.ts +474 -0
  22. package/skills/davenov:cc:expert-build-nostr/templates/pubsub-handler.ts +395 -0
  23. package/skills/davenov:cc:expert-build-nostr/workflows/add-encryption.md +246 -0
  24. package/skills/davenov:cc:expert-build-nostr/workflows/custom-event-kinds.md +266 -0
  25. package/skills/davenov:cc:expert-build-nostr/workflows/debug-nostr.md +313 -0
  26. package/skills/davenov:cc:expert-build-nostr/workflows/implement-pubsub.md +234 -0
  27. package/skills/davenov:cc:expert-build-nostr/workflows/manage-relays.md +295 -0
  28. package/skills/davenov:cc:expert-build-nostr/workflows/setup-client.md +141 -0
  29. package/skills/davenov:cc:expert-convex-nextjs/SKILL.md +140 -0
  30. package/skills/davenov:cc:expert-convex-nextjs/references/debugging.md +46 -0
  31. package/skills/davenov:cc:expert-convex-nextjs/references/function-patterns.md +118 -0
  32. package/skills/davenov:cc:expert-convex-nextjs/references/schema-design.md +155 -0
  33. package/skills/davenov:cc:expert-convex-nextjs/references/ssr-auth.md +118 -0
  34. package/skills/davenov:cc:expert-evolu-nextjs/SKILL.md +190 -0
  35. package/skills/davenov:cc:expert-evolu-nextjs/references/installation.md +38 -0
  36. package/skills/davenov:cc:expert-evolu-nextjs/references/instance-setup.md +92 -0
  37. package/skills/davenov:cc:expert-evolu-nextjs/references/mutations.md +101 -0
  38. package/skills/davenov:cc:expert-evolu-nextjs/references/nextjs-integration.md +119 -0
  39. package/skills/davenov:cc:expert-evolu-nextjs/references/owner-management.md +78 -0
  40. package/skills/davenov:cc:expert-evolu-nextjs/references/queries.md +121 -0
  41. package/skills/davenov:cc:expert-evolu-nextjs/references/schema-definition.md +64 -0
  42. package/skills/davenov:cc:expert-evolu-nextjs/references/troubleshooting.md +81 -0
  43. package/skills/davenov:cc:expert-evolu-nextjs/references/validation.md +81 -0
  44. package/skills/davenov:cc:expert-nextjs-16/SKILL.md +220 -0
  45. package/skills/davenov:cc:expert-nextjs-16/references/architecture.md +225 -0
  46. package/skills/davenov:cc:expert-nextjs-16/references/authentication.md +429 -0
  47. package/skills/davenov:cc:expert-nextjs-16/references/cache-components.md +350 -0
  48. package/skills/davenov:cc:expert-nextjs-16/references/data-fetching.md +344 -0
  49. package/skills/davenov:cc:expert-nextjs-16/references/deployment-docker.md +308 -0
  50. package/skills/davenov:cc:expert-nextjs-16/references/deployment-vercel.md +248 -0
  51. package/skills/davenov:cc:expert-nextjs-16/references/devtools-mcp.md +275 -0
  52. package/skills/davenov:cc:expert-nextjs-16/references/migration-from-15.md +288 -0
  53. package/skills/davenov:cc:expert-nextjs-16/references/performance.md +397 -0
  54. package/skills/davenov:cc:expert-nextjs-16/references/proxy.md +304 -0
  55. package/skills/davenov:cc:expert-nextjs-16/references/security.md +316 -0
  56. package/skills/davenov:cc:expert-nextjs-16/references/server-actions.md +429 -0
  57. package/skills/davenov:cc:expert-nextjs-16/references/server-client-components.md +328 -0
  58. package/skills/davenov:cc:expert-nextjs-16/references/testing.md +418 -0
  59. package/skills/davenov:cc:expert-nextjs-16/workflows/add-feature.md +361 -0
  60. package/skills/davenov:cc:expert-nextjs-16/workflows/build-new-app.md +266 -0
  61. package/skills/davenov:cc:expert-nextjs-16/workflows/debug-app.md +273 -0
  62. package/skills/davenov:cc:expert-nextjs-16/workflows/migrate-from-15.md +352 -0
  63. package/skills/davenov:cc:expert-nextjs-16/workflows/optimize-performance.md +357 -0
  64. package/skills/davenov:cc:expert-nextjs-16/workflows/ship-app.md +355 -0
  65. package/skills/davenov:cc:expert-nextjs-16/workflows/write-tests.md +397 -0
package/README.md ADDED
@@ -0,0 +1,106 @@
1
+ # Claude Code Customizations Collection
2
+
3
+ A personal collection of Claude Code customizations including skills and slash commands.
4
+
5
+ ## Contents
6
+
7
+ ### Commands (`commands/`)
8
+
9
+ Slash commands that can be invoked with `/<command-name>`:
10
+
11
+ - **davenov:cc:interview** - Interview mode for expanding specifications
12
+ - **davenov:cc:rule** - Create or modify Claude Code rules
13
+ - **davenov:cc:update** - Update to latest version and sync to ~/.claude/
14
+
15
+ ### Skills (`skills/`)
16
+
17
+ Skills provide Claude with domain-specific knowledge and workflows:
18
+
19
+ - **davenov:cc:expert-convex-nextjs** - Building full-stack apps with Convex backend and Next.js frontend
20
+ - **davenov:cc:expert-evolu-nextjs** - Local-first apps with Evolu and Next.js (offline-first, e2e encryption)
21
+ - **davenov:cc:expert-nextjs-16** - Next.js 16 patterns including Cache Components, Server Actions, and more
22
+ - **davenov:cc:expert-build-nostr** - Building Nostr applications for decentralized data exchange
23
+
24
+ ## Installation
25
+
26
+ Requires Node.js (no additional dependencies).
27
+
28
+ ```bash
29
+ npx davenov-cc
30
+ ```
31
+
32
+ That's it! The installer will copy all commands and skills to `~/.claude/`.
33
+
34
+ ## Updating
35
+
36
+ Update from any directory using the slash command:
37
+
38
+ ```
39
+ /davenov:cc:update
40
+ ```
41
+
42
+ Or run the npx command directly:
43
+
44
+ ```bash
45
+ npx davenov-cc@latest
46
+ ```
47
+
48
+ The `@latest` tag ensures you get the newest version.
49
+
50
+ ### Behavior with existing files
51
+
52
+ - **Merges directories** - Existing directories are preserved, not deleted
53
+ - **Overwrites matching files** - Files with the same path get overwritten
54
+ - **Preserves unrelated files** - Your other customizations in `~/.claude/` remain untouched
55
+
56
+ > **Note:** If you delete a file from this repo, it won't be removed from `~/.claude/` on reinstall. Manually delete unwanted files or remove the entire `~/.claude/commands/` or `~/.claude/skills/` directory before reinstalling for a clean slate.
57
+
58
+ ## Structure
59
+
60
+ ```
61
+ .
62
+ ├── bin/
63
+ │ └── cli.js # npx entry point
64
+ ├── commands/ # Slash commands (*.md files)
65
+ │ ├── davenov:cc:interview.md
66
+ │ ├── davenov:cc:rule.md
67
+ │ └── davenov:cc:update.md
68
+ ├── skills/ # Skills with references and workflows
69
+ │ └── <skill-name>/
70
+ │ ├── SKILL.md # Main skill definition
71
+ │ ├── references/ # Reference documentation
72
+ │ ├── workflows/ # Step-by-step workflows
73
+ │ └── templates/ # Code templates (optional)
74
+ ├── package.json # npm package configuration
75
+ ├── install.js # Installation script
76
+ └── README.md
77
+ ```
78
+
79
+ ## Adding new customizations
80
+
81
+ ### Adding a command
82
+
83
+ Create a new `.md` file in `commands/`:
84
+
85
+ ```bash
86
+ commands/my-command.md
87
+ ```
88
+
89
+ ### Adding a skill
90
+
91
+ Create a new directory in `skills/` with at least a `SKILL.md`:
92
+
93
+ ```bash
94
+ skills/my-skill/
95
+ ├── SKILL.md
96
+ ├── references/
97
+ │ └── ...
98
+ └── workflows/
99
+ └── ...
100
+ ```
101
+
102
+ After adding new customizations, run `node install.js` again to install them.
103
+
104
+ ## Acknowledgments
105
+
106
+ Most resources in this collection were created with the help of [taches-cc-resources](https://github.com/glittercowboy/taches-cc-resources), an excellent toolkit for building Claude Code customizations.
package/bin/cli.js ADDED
@@ -0,0 +1,16 @@
1
+ #!/usr/bin/env node
2
+
3
+ const path = require('path');
4
+ const { spawn } = require('child_process');
5
+
6
+ // Run install.js from the package root with --auto-override
7
+ const installScript = path.join(__dirname, '..', 'install.js');
8
+
9
+ const child = spawn(process.execPath, [installScript, '--auto-override'], {
10
+ stdio: 'inherit',
11
+ cwd: path.join(__dirname, '..')
12
+ });
13
+
14
+ child.on('close', (code) => {
15
+ process.exit(code);
16
+ });
@@ -0,0 +1,12 @@
1
+ ---
2
+ argument-hint: [spec-file]
3
+ description: Interview me to expand the spec
4
+ ---
5
+
6
+ Here's the current spec:
7
+
8
+ @$ARGUMENTS
9
+
10
+ Interview me in detail using the AskUserQuestion tool about literally anything: technical implementation, UI & UX, concerns, tradeoffs, etc. but make sure the questions are not obvious.
11
+
12
+ Be very in-depth and continue interviewing me until it's complete, then write the spec back to $ARGUMENTS.
@@ -0,0 +1,275 @@
1
+ ---
2
+ name: rule
3
+ description: Create or modify Claude Code rules with best practices guidance
4
+ argument-hint: <description of the rule>
5
+ allowed-tools:
6
+ - Read
7
+ - Write
8
+ - Glob
9
+ - Bash
10
+ - AskUserQuestion
11
+ ---
12
+
13
+ <objective>
14
+ Create or modify Claude Code rule files (.md) that follow best practices for the `.claude/rules/` system.
15
+
16
+ Rules provide focused, well-organized instructions that Claude automatically loads as project memory.
17
+ </objective>
18
+
19
+ <context>
20
+ Before proceeding, gather context about existing rules:
21
+
22
+ ```bash
23
+ # Check for existing user-level rules
24
+ ls -la ~/.claude/rules/ 2>/dev/null || echo "No user-level rules directory"
25
+
26
+ # Check for existing project-level rules (if in a project)
27
+ ls -la .claude/rules/ 2>/dev/null || echo "No project-level rules directory"
28
+ ```
29
+
30
+ Read any relevant existing rules to understand current patterns.
31
+ </context>
32
+
33
+ <process>
34
+
35
+ <step name="validate_input">
36
+ **Check if description was provided:**
37
+
38
+ - **With arguments ($ARGUMENTS):** Use as the rule description/intent
39
+ - **Without arguments:** Use AskUserQuestion to get the rule description:
40
+ - header: "Rule Intent"
41
+ - question: "What behavior or guideline should this rule enforce? Describe what you want Claude to do or avoid."
42
+ - options:
43
+ - "Code style" — formatting, naming conventions, patterns
44
+ - "Workflow" — processes, git conventions, testing requirements
45
+ - "Architecture" — file structure, dependencies, design patterns
46
+ </step>
47
+
48
+ <step name="determine_scope">
49
+ Use AskUserQuestion to determine rule scope:
50
+
51
+ - header: "Rule Scope"
52
+ - question: "Where should this rule be saved?"
53
+ - options:
54
+ - "User-level (~/.claude/rules/)" — applies to all your projects
55
+ - "Project-level (.claude/rules/)" — applies only to current project
56
+ </step>
57
+
58
+ <step name="determine_path_specificity">
59
+ Use AskUserQuestion to determine if rule should be path-specific:
60
+
61
+ - header: "Path Scope"
62
+ - question: "Should this rule apply to all files or only specific file types/paths?"
63
+ - options:
64
+ - "All files (Recommended)" — rule loads unconditionally
65
+ - "Specific paths" — rule only loads when working with matching files
66
+ </step>
67
+
68
+ <step name="gather_path_patterns" condition="if path-specific selected">
69
+ Use AskUserQuestion to gather path patterns:
70
+
71
+ - header: "File Patterns"
72
+ - question: "What file patterns should this rule apply to? (e.g., 'src/**/*.ts', '**/*.test.js')"
73
+ - options:
74
+ - "TypeScript/JavaScript" — src/**/*.{ts,tsx,js,jsx}
75
+ - "Tests" — **/*.{test,spec}.{ts,tsx,js,jsx}
76
+ - "API routes" — src/api/**/*.ts
77
+ - multiSelect: true
78
+
79
+ If user selects "Other", validate their custom glob pattern.
80
+ </step>
81
+
82
+ <step name="analyze_and_clarify">
83
+ Analyze the rule description for:
84
+
85
+ 1. **Clarity**: Is the intent unambiguous?
86
+ 2. **Actionability**: Can Claude act on this?
87
+ 3. **Specificity**: Is it precise enough to follow consistently?
88
+ 4. **Conflict potential**: Could it contradict common patterns?
89
+
90
+ If any issues found, use AskUserQuestion to clarify:
91
+
92
+ - header: "Clarification"
93
+ - question: "[Specific question about ambiguity]"
94
+ - options: [Context-appropriate options]
95
+
96
+ Common clarifications needed:
97
+ - "Always" vs "prefer" vs "when appropriate"
98
+ - Specific file types or directories
99
+ - Exception cases
100
+ - Priority relative to other guidelines
101
+ </step>
102
+
103
+ <step name="determine_organization">
104
+ Use AskUserQuestion to determine file organization:
105
+
106
+ - header: "Organization"
107
+ - question: "How should this rule be organized?"
108
+ - options:
109
+ - "New file (Recommended)" — create dedicated rule file
110
+ - "Add to existing" — append to an existing rule file
111
+ - "Subdirectory" — organize under a category folder
112
+ </step>
113
+
114
+ <step name="generate_filename">
115
+ Generate a descriptive filename:
116
+
117
+ - Use lowercase with hyphens
118
+ - Be descriptive but concise (e.g., `code-style.md`, `testing-conventions.md`)
119
+ - Match the rule's topic
120
+
121
+ If subdirectory selected, determine category:
122
+ - `frontend/` — React, CSS, UI patterns
123
+ - `backend/` — API, database, server patterns
124
+ - `tooling/` — build, CI/CD, scripts
125
+ - `general/` — cross-cutting concerns
126
+ </step>
127
+
128
+ <step name="compose_rule">
129
+ Compose the rule following best practices:
130
+
131
+ **Structure:**
132
+ ```markdown
133
+ ---
134
+ paths:
135
+ - "pattern/**/*.ext" # Only if path-specific
136
+ ---
137
+
138
+ # [Rule Title]
139
+
140
+ [Brief context - 1-2 sentences explaining why this rule exists]
141
+
142
+ ## Guidelines
143
+
144
+ - [Specific, actionable guideline]
145
+ - [Another guideline]
146
+
147
+ ## Examples
148
+
149
+ ### Do
150
+ [Good example with explanation]
151
+
152
+ ### Don't
153
+ [Bad example with explanation]
154
+ ```
155
+
156
+ **Best Practices to Follow:**
157
+ 1. **Be specific**: "Use camelCase for variables" not "follow naming conventions"
158
+ 2. **Be actionable**: Each point should be something Claude can do
159
+ 3. **Provide examples**: Show what good and bad look like
160
+ 4. **Explain rationale**: Help Claude understand *why*
161
+ 5. **Keep focused**: One topic per file
162
+ 6. **Use imperative mood**: "Use X" not "You should use X"
163
+ 7. **Avoid redundancy**: Don't repeat what's in other rules
164
+ </step>
165
+
166
+ <step name="validate_rule">
167
+ Before writing, validate the rule:
168
+
169
+ 1. **Check for conflicts** with existing rules:
170
+ ```bash
171
+ grep -r "[key terms]" ~/.claude/rules/ .claude/rules/ 2>/dev/null
172
+ ```
173
+
174
+ 2. **Verify clarity**: Each guideline should pass the "can Claude act on this?" test
175
+
176
+ 3. **Check length**: Rules should be scannable, not walls of text
177
+
178
+ If validation finds issues, refine the rule content.
179
+ </step>
180
+
181
+ <step name="create_directories">
182
+ Ensure the target directory exists:
183
+
184
+ ```bash
185
+ # For user-level rules
186
+ mkdir -p ~/.claude/rules/
187
+
188
+ # For project-level rules
189
+ mkdir -p .claude/rules/
190
+ ```
191
+
192
+ If using subdirectory organization:
193
+ ```bash
194
+ mkdir -p [target-path]/[subdirectory]/
195
+ ```
196
+ </step>
197
+
198
+ <step name="write_rule">
199
+ Write the rule file to the determined path:
200
+
201
+ ```bash
202
+ # Construct full path based on scope and organization decisions
203
+ ```
204
+
205
+ Write the composed rule content to the file.
206
+ </step>
207
+
208
+ <step name="confirm">
209
+ Display confirmation:
210
+
211
+ ```
212
+ Rule created: [full path]
213
+
214
+ [Rule title]
215
+ Scope: [user-level | project-level]
216
+ Applies to: [all files | specific paths]
217
+
218
+ Preview:
219
+ ---
220
+ [First few lines of the rule]
221
+ ---
222
+
223
+ The rule will be automatically loaded in future Claude sessions.
224
+ ```
225
+ </step>
226
+
227
+ </process>
228
+
229
+ <best_practices>
230
+ ## Rule Writing Best Practices
231
+
232
+ **DO:**
233
+ - Keep rules focused on one topic
234
+ - Use descriptive filenames
235
+ - Provide concrete examples
236
+ - Explain the "why" behind guidelines
237
+ - Use path-specific rules only when truly needed
238
+ - Test that guidelines are actionable
239
+
240
+ **DON'T:**
241
+ - Create overly broad "catch-all" rules
242
+ - Duplicate guidelines across multiple files
243
+ - Use vague language ("be careful", "consider")
244
+ - Add path frontmatter unless genuinely path-specific
245
+ - Create rules for one-off preferences
246
+ - Include time-sensitive information
247
+ </best_practices>
248
+
249
+ <validation_questions>
250
+ When reviewing a rule, verify:
251
+
252
+ 1. **Necessity**: Does this rule add value not covered elsewhere?
253
+ 2. **Clarity**: Could another developer understand and follow this?
254
+ 3. **Consistency**: Does it align with existing rules?
255
+ 4. **Scope**: Is the path specificity appropriate?
256
+ 5. **Actionability**: Can Claude act on every guideline?
257
+ 6. **Examples**: Are good/bad examples clear?
258
+ </validation_questions>
259
+
260
+ <output>
261
+ - Rule file at determined path
262
+ - Confirmation with preview
263
+ </output>
264
+
265
+ <success_criteria>
266
+ - [ ] Rule description obtained and understood
267
+ - [ ] Scope (user vs project) determined
268
+ - [ ] Path specificity determined (if applicable)
269
+ - [ ] Ambiguities clarified through questions
270
+ - [ ] Rule follows best practices structure
271
+ - [ ] No conflicts with existing rules
272
+ - [ ] Directory structure created
273
+ - [ ] Rule file written successfully
274
+ - [ ] Confirmation displayed
275
+ </success_criteria>
@@ -0,0 +1,21 @@
1
+ ---
2
+ description: Update davenov-cc-collection to latest version and sync to ~/.claude/
3
+ allowed-tools:
4
+ - Bash
5
+ ---
6
+
7
+ # Update davenov-cc-collection
8
+
9
+ Download the latest version from npm and install to ~/.claude/.
10
+
11
+ ## Instructions
12
+
13
+ Run the npx command to fetch and install the latest version:
14
+
15
+ ```bash
16
+ npx davenov-cc@latest
17
+ ```
18
+
19
+ The `@latest` tag ensures npm fetches the newest version, bypassing any cached versions.
20
+
21
+ Report the results to the user.
package/install.js ADDED
@@ -0,0 +1,144 @@
1
+ #!/usr/bin/env node
2
+
3
+ const fs = require("fs");
4
+ const path = require("path");
5
+ const os = require("os");
6
+ const readline = require("readline");
7
+
8
+ const CLAUDE_DIR = path.join(os.homedir(), ".claude");
9
+ const SOURCE_DIR = __dirname;
10
+
11
+ // Parse command line arguments
12
+ const args = process.argv.slice(2);
13
+ const AUTO_OVERRIDE = args.includes("--auto-override");
14
+
15
+ // Directories to install
16
+ const CUSTOMIZATION_DIRS = ["commands", "skills"];
17
+
18
+ function createReadlineInterface() {
19
+ return readline.createInterface({
20
+ input: process.stdin,
21
+ output: process.stdout,
22
+ });
23
+ }
24
+
25
+ async function prompt(rl, question) {
26
+ return new Promise((resolve) => {
27
+ rl.question(question, resolve);
28
+ });
29
+ }
30
+
31
+ function copyRecursive(src, dest) {
32
+ const stats = fs.statSync(src);
33
+
34
+ if (stats.isDirectory()) {
35
+ if (!fs.existsSync(dest)) {
36
+ fs.mkdirSync(dest, { recursive: true });
37
+ }
38
+
39
+ const entries = fs.readdirSync(src);
40
+ for (const entry of entries) {
41
+ copyRecursive(path.join(src, entry), path.join(dest, entry));
42
+ }
43
+ } else {
44
+ fs.copyFileSync(src, dest);
45
+ }
46
+ }
47
+
48
+ function countFiles(dir) {
49
+ let count = 0;
50
+ if (!fs.existsSync(dir)) return 0;
51
+
52
+ const entries = fs.readdirSync(dir);
53
+ for (const entry of entries) {
54
+ const fullPath = path.join(dir, entry);
55
+ const stats = fs.statSync(fullPath);
56
+ if (stats.isDirectory()) {
57
+ count += countFiles(fullPath);
58
+ } else {
59
+ count++;
60
+ }
61
+ }
62
+ return count;
63
+ }
64
+
65
+ async function main() {
66
+ console.log("\n📦 Claude Code Customizations Installer\n");
67
+ console.log(`Source: ${SOURCE_DIR}`);
68
+ console.log(`Target: ${CLAUDE_DIR}\n`);
69
+
70
+ // Check what we have to install
71
+ const available = CUSTOMIZATION_DIRS.filter((dir) =>
72
+ fs.existsSync(path.join(SOURCE_DIR, dir))
73
+ );
74
+
75
+ if (available.length === 0) {
76
+ console.log("No customizations found to install.");
77
+ process.exit(0);
78
+ }
79
+
80
+ console.log("Available customizations:");
81
+ for (const dir of available) {
82
+ const srcPath = path.join(SOURCE_DIR, dir);
83
+ const fileCount = countFiles(srcPath);
84
+ console.log(` - ${dir}/ (${fileCount} files)`);
85
+ }
86
+ console.log();
87
+
88
+ // Check for existing files
89
+ const existing = available.filter((dir) =>
90
+ fs.existsSync(path.join(CLAUDE_DIR, dir))
91
+ );
92
+
93
+ const rl = createReadlineInterface();
94
+
95
+ if (existing.length > 0) {
96
+ console.log("⚠️ The following directories already exist:");
97
+ for (const dir of existing) {
98
+ console.log(` - ${path.join(CLAUDE_DIR, dir)}`);
99
+ }
100
+ console.log();
101
+
102
+ if (AUTO_OVERRIDE) {
103
+ console.log("Auto-override enabled, proceeding...");
104
+ } else {
105
+ const answer = await prompt(
106
+ rl,
107
+ "Do you want to overwrite existing files? (y/N): "
108
+ );
109
+
110
+ if (answer.toLowerCase() !== "y") {
111
+ console.log("\nInstallation cancelled.");
112
+ rl.close();
113
+ process.exit(0);
114
+ }
115
+ }
116
+ }
117
+
118
+ // Ensure .claude directory exists
119
+ if (!fs.existsSync(CLAUDE_DIR)) {
120
+ fs.mkdirSync(CLAUDE_DIR, { recursive: true });
121
+ console.log(`Created ${CLAUDE_DIR}`);
122
+ }
123
+
124
+ // Install each directory
125
+ console.log("\nInstalling...\n");
126
+
127
+ for (const dir of available) {
128
+ const srcPath = path.join(SOURCE_DIR, dir);
129
+ const destPath = path.join(CLAUDE_DIR, dir);
130
+
131
+ console.log(` ${dir}/`);
132
+ copyRecursive(srcPath, destPath);
133
+ }
134
+
135
+ console.log("\n✅ Installation complete!\n");
136
+ console.log("Your customizations are now available in Claude Code.");
137
+
138
+ rl.close();
139
+ }
140
+
141
+ main().catch((err) => {
142
+ console.error("Error:", err.message);
143
+ process.exit(1);
144
+ });
package/package.json ADDED
@@ -0,0 +1,35 @@
1
+ {
2
+ "name": "davenov-cc",
3
+ "version": "1.0.0",
4
+ "description": "Claude Code customizations - skills and slash commands for enhanced AI-assisted development",
5
+ "bin": {
6
+ "davenov-cc": "./bin/cli.js"
7
+ },
8
+ "repository": {
9
+ "type": "git",
10
+ "url": "git+https://github.com/kaladivo/davenov-cc-collection.git"
11
+ },
12
+ "keywords": [
13
+ "claude",
14
+ "claude-code",
15
+ "ai",
16
+ "skills",
17
+ "commands",
18
+ "customizations"
19
+ ],
20
+ "author": "kaladivo",
21
+ "license": "MIT",
22
+ "bugs": {
23
+ "url": "https://github.com/kaladivo/davenov-cc-collection/issues"
24
+ },
25
+ "homepage": "https://github.com/kaladivo/davenov-cc-collection#readme",
26
+ "engines": {
27
+ "node": ">=16.0.0"
28
+ },
29
+ "files": [
30
+ "bin/",
31
+ "commands/",
32
+ "skills/",
33
+ "install.js"
34
+ ]
35
+ }