cc-dev-template 0.1.4 → 0.1.6

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
@@ -2,11 +2,21 @@
2
2
 
3
3
  const fs = require('fs');
4
4
  const path = require('path');
5
+ const os = require('os');
5
6
  const { execSync } = require('child_process');
6
7
 
8
+ // Parse command line arguments
9
+ const args = process.argv.slice(2);
10
+ const isProjectLevel = args.includes('--project');
11
+
7
12
  const SRC_DIR = path.join(__dirname, '..', 'src');
8
- const CLAUDE_DIR = path.join(process.env.HOME, '.claude');
13
+ const CLAUDE_DIR = isProjectLevel
14
+ ? path.join(process.cwd(), '.claude')
15
+ : path.join(os.homedir(), '.claude');
9
16
 
17
+ const installMode = isProjectLevel ? 'project-level' : 'user-level';
18
+ console.log(`\nCC Dev Template - ${installMode} installation`);
19
+ console.log('='.repeat(50));
10
20
  console.log(`Installing to ${CLAUDE_DIR}...`);
11
21
 
12
22
  // Create directories
@@ -78,20 +88,6 @@ if (fs.existsSync(skillsDir)) {
78
88
  });
79
89
  console.log(`✓ ${skills.length} skills installed`);
80
90
 
81
- // Copy skill-specific scripts to global scripts directory
82
- const orchScriptsDir = path.join(skillsDir, 'orchestration', 'scripts');
83
- if (fs.existsSync(orchScriptsDir)) {
84
- const orchScripts = fs.readdirSync(orchScriptsDir).filter(f => f.endsWith('.js'));
85
- orchScripts.forEach(file => {
86
- fs.copyFileSync(
87
- path.join(orchScriptsDir, file),
88
- path.join(CLAUDE_DIR, 'scripts', file)
89
- );
90
- });
91
- if (orchScripts.length) {
92
- console.log(`✓ Orchestration skill scripts copied to scripts/`);
93
- }
94
- }
95
91
  } else {
96
92
  console.log(' No skills to install');
97
93
  }
@@ -160,6 +156,17 @@ Installed to:
160
156
  Scripts: ${CLAUDE_DIR}/scripts/
161
157
  Skills: ${CLAUDE_DIR}/skills/
162
158
  Settings: ${CLAUDE_DIR}/settings.json
159
+ `);
163
160
 
164
- Restart Claude Code to pick up changes.
161
+ if (isProjectLevel) {
162
+ console.log(`Project-level installation complete.
163
+ You can commit .claude/ to version control to share with your team.
164
+ Claude Code will use project-level settings with user-level as fallback.
165
165
  `);
166
+ } else {
167
+ console.log(`User-level installation complete.
168
+ These settings are available globally across all your projects.
169
+ `);
170
+ }
171
+
172
+ console.log('Restart Claude Code to pick up changes.');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cc-dev-template",
3
- "version": "0.1.4",
3
+ "version": "0.1.6",
4
4
  "description": "Structured AI-assisted development framework for Claude Code",
5
5
  "bin": {
6
6
  "cc-dev-template": "./bin/install.js"
@@ -0,0 +1,95 @@
1
+ ---
2
+ name: create-agent-skills
3
+ description: Expert guidance for creating, modifying, and auditing Claude Code skills. This skill should be used when the user asks to "create a skill", "build a new skill", "audit skills", "review my skills", "update a skill", "modify a skill", "improve a skill", or mentions skill development, SKILL.md files, or progressive disclosure.
4
+ ---
5
+
6
+ # Create Agent Skills
7
+
8
+ Expert guidance for building Claude Code skills correctly. Skills are prompts with progressive disclosure—they teach Claude how to perform specific tasks repeatedly and reliably.
9
+
10
+ ## Why Skills Exist
11
+
12
+ Skills solve one problem: **context window efficiency through progressive disclosure**.
13
+
14
+ Without skills, complex workflows require loading thousands of lines of instructions upfront. With skills:
15
+ - **Level 1**: Metadata (~100 words) loads at startup for all skills
16
+ - **Level 2**: SKILL.md body (1,500-2,000 words) loads only when triggered
17
+ - **Level 3**: references/, scripts/, assets/ load only when needed
18
+
19
+ This means Claude can have access to unlimited specialized knowledge without paying the context cost until actually needed.
20
+
21
+ ## What To Do Now
22
+
23
+ Determine what the user wants to accomplish with skills.
24
+
25
+ <step name="Understand Intent">
26
+ Ask the user what they want to do:
27
+
28
+ Use `AskUserQuestion` with these options:
29
+ - **Create a new skill** - Build a skill from scratch through guided conversation
30
+ - **Audit existing skills** - Review all skills for best practices compliance
31
+ - **Modify a skill** - Update or improve an existing skill
32
+ - **Something else** - Free-form request for other needs
33
+ </step>
34
+
35
+ <step name="Route to Workflow">
36
+ Based on the user's choice:
37
+
38
+ | Choice | Action |
39
+ |--------|--------|
40
+ | Create a new skill | Read `references/create.md` |
41
+ | Audit existing skills | Read `references/audit.md` |
42
+ | Modify a skill | Read `references/modify.md` |
43
+ | Something else | Help them find the right workflow |
44
+
45
+ Reading the workflow file is mandatory—it contains the detailed instructions for that workflow.
46
+ </step>
47
+
48
+ ## Core Skill Principles (Quick Reference)
49
+
50
+ Before routing, understand these fundamentals that apply to ALL skill work:
51
+
52
+ ### A Skill IS a Prompt
53
+ SKILL.md is not documentation about the skill—it IS what Claude reads when the skill activates. Write it as instructions TO Claude, using imperative form.
54
+
55
+ ### Description = Discovery
56
+ The frontmatter `description` field determines when Claude triggers the skill. Include:
57
+ - Third-person phrasing: "This skill should be used when..."
58
+ - Specific trigger phrases users would say
59
+ - Max 1024 characters
60
+
61
+ ### Structure Matters
62
+ ```
63
+ skill-name/
64
+ ├── SKILL.md # Required: lean router (1,500-2,000 words max)
65
+ ├── references/ # Detailed docs loaded as needed
66
+ ├── scripts/ # Executable utilities (token-efficient)
67
+ └── assets/ # Files used in output, never read into context
68
+ ```
69
+
70
+ ### Writing Style
71
+ - **Imperative form**: "Parse the file", "Validate the input"
72
+ - **Never second person**: Avoid phrases like "should parse" or "can validate" with pronouns
73
+ - **Objective instructional tone**: Facts and directives, not suggestions
74
+
75
+ For complete principles, each workflow will load `references/principles.md` as needed.
76
+
77
+ ## Skill Locations
78
+
79
+ Skills can exist at two levels:
80
+
81
+ | Level | Path | Scope |
82
+ |-------|------|-------|
83
+ | User | `~/.claude/skills/` | Available in all projects |
84
+ | Project | `.claude/skills/` | Shared with team via git |
85
+
86
+ The audit workflow discovers skills at both levels automatically.
87
+
88
+ ## Bundled Scripts
89
+
90
+ This skill includes utility scripts for validation and discovery:
91
+
92
+ - **`scripts/find-skills.js`** - Discovers all skills at user/project levels
93
+ - **`scripts/validate-skill.js`** - Validates a skill against best practices
94
+
95
+ Run scripts via: `node ~/.claude/skills/create-agent-skills/scripts/[script-name].js`
@@ -0,0 +1,334 @@
1
+ # Audit Existing Skills
2
+
3
+ This workflow discovers and reviews all installed skills against best practices. Use it to identify skills that need improvement and ensure consistency across skill libraries.
4
+
5
+ ## Purpose
6
+
7
+ Systematically review skills to identify:
8
+ - Structural issues (missing files, wrong format)
9
+ - Description problems (vague, wrong person, missing triggers)
10
+ - Writing style violations (second person, negative framing)
11
+ - Progressive disclosure failures (oversized SKILL.md, unreferenced resources)
12
+ - Missing or broken references
13
+
14
+ **Success looks like:** A comprehensive report of all skills with specific, actionable findings for any that need improvement.
15
+
16
+ ## Before Starting
17
+
18
+ Read `references/principles.md` if not already familiar with skill standards.
19
+
20
+ ## Workflow
21
+
22
+ <steps>
23
+
24
+ <step name="Discover All Skills">
25
+ Find skills at both user and project levels.
26
+
27
+ **Locations to scan:**
28
+ ```
29
+ ~/.claude/skills/ # User-level skills
30
+ .claude/skills/ # Project-level skills (current project)
31
+ src/skills/ # Source skills (if in dev-template)
32
+ ```
33
+
34
+ **Run the discovery script:**
35
+ ```bash
36
+ node ~/.claude/skills/create-agent-skills/scripts/find-skills.js
37
+ ```
38
+
39
+ Or manually scan:
40
+ ```bash
41
+ # User-level
42
+ ls -la ~/.claude/skills/*/SKILL.md 2>/dev/null
43
+
44
+ # Project-level
45
+ ls -la .claude/skills/*/SKILL.md 2>/dev/null
46
+
47
+ # Source (dev-template)
48
+ ls -la src/skills/*/SKILL.md 2>/dev/null
49
+ ```
50
+
51
+ **For each skill found, record:**
52
+ - Full path to SKILL.md
53
+ - Skill name (directory name)
54
+ - Location type (user/project/source)
55
+ </step>
56
+
57
+ <step name="Ask Audit Scope">
58
+ Determine what to audit.
59
+
60
+ Use `AskUserQuestion`:
61
+ - **All skills** - Review everything discovered
62
+ - **User-level only** - Just ~/.claude/skills/
63
+ - **Project-level only** - Just .claude/skills/
64
+ - **Specific skill** - Name the skill to audit
65
+
66
+ If user selects "Specific skill," ask which one from the discovered list.
67
+ </step>
68
+
69
+ <step name="Audit Each Skill">
70
+ For each skill in scope, perform these checks:
71
+
72
+ ### Check 1: Structure Validation
73
+
74
+ **Verify:**
75
+ - [ ] SKILL.md exists
76
+ - [ ] SKILL.md has YAML frontmatter (starts with `---`)
77
+ - [ ] Frontmatter has `name` field
78
+ - [ ] Frontmatter has `description` field
79
+ - [ ] `name` matches directory name
80
+ - [ ] `name` is hyphen-case (lowercase, hyphens only)
81
+
82
+ **Record issues:**
83
+ ```
84
+ STRUCTURAL: [skill-name] - [specific issue]
85
+ ```
86
+
87
+ ### Check 2: Description Quality
88
+
89
+ **Read the description and verify:**
90
+ - [ ] Under 1024 characters
91
+ - [ ] Uses third person ("This skill should be used when...")
92
+ - [ ] Contains specific trigger phrases (quoted examples of what users say)
93
+ - [ ] Explains WHEN to use, not just WHAT it does
94
+ - [ ] Not overly detailed about implementation
95
+
96
+ **Red flags:**
97
+ - Starts with "Use this skill" (wrong person)
98
+ - No quoted trigger phrases
99
+ - Only describes functionality, not activation scenarios
100
+ - Over 1024 characters
101
+
102
+ **Record issues:**
103
+ ```
104
+ DESCRIPTION: [skill-name] - [specific issue]
105
+ ```
106
+
107
+ ### Check 3: Writing Style
108
+
109
+ **Scan SKILL.md body for:**
110
+
111
+ **Second person violations:**
112
+ - "you should"
113
+ - "you can"
114
+ - "you need"
115
+ - "you might"
116
+ - "you will"
117
+ - "your"
118
+
119
+ **Passive voice (less critical but note):**
120
+ - "should be"
121
+ - "can be"
122
+ - "is done"
123
+
124
+ **Negative framing:**
125
+ - "don't"
126
+ - "never"
127
+ - "avoid"
128
+ - "do not"
129
+
130
+ **Record issues:**
131
+ ```
132
+ STYLE: [skill-name] - Found [count] instances of second person ("you should", etc.)
133
+ STYLE: [skill-name] - Found negative framing: "[example]"
134
+ ```
135
+
136
+ ### Check 4: Size Analysis
137
+
138
+ **Measure:**
139
+ - Word count of SKILL.md body (excluding frontmatter)
140
+ - Line count of SKILL.md
141
+
142
+ **Thresholds:**
143
+ | Metric | Good | Warning | Problem |
144
+ |--------|------|---------|---------|
145
+ | Words | <2,000 | 2,000-3,500 | >3,500 |
146
+ | Lines | <300 | 300-500 | >500 |
147
+
148
+ **If oversized:**
149
+ - Check if references/ directory exists
150
+ - If no references/, skill needs restructuring
151
+
152
+ **Record issues:**
153
+ ```
154
+ SIZE: [skill-name] - SKILL.md is [X] words ([Y] lines) - consider moving content to references/
155
+ ```
156
+
157
+ ### Check 5: Progressive Disclosure
158
+
159
+ **Check structure:**
160
+ - Does skill have references/ directory?
161
+ - Does skill have scripts/ directory?
162
+ - Does SKILL.md reference these resources?
163
+
164
+ **Verify references are used:**
165
+ - For each file in references/, check if SKILL.md mentions it
166
+ - For each file in scripts/, check if SKILL.md mentions it
167
+ - Flag unreferenced resources
168
+
169
+ **Record issues:**
170
+ ```
171
+ DISCLOSURE: [skill-name] - references/patterns.md exists but is never referenced in SKILL.md
172
+ DISCLOSURE: [skill-name] - Large SKILL.md with no references/ directory
173
+ ```
174
+
175
+ ### Check 6: Reference Integrity
176
+
177
+ **For every path mentioned in SKILL.md:**
178
+ - `references/*.md` files exist
179
+ - `scripts/*.js` or `scripts/*.py` files exist
180
+ - `assets/*` files exist
181
+
182
+ **Record issues:**
183
+ ```
184
+ BROKEN: [skill-name] - References `references/workflow.md` but file doesn't exist
185
+ ```
186
+ </step>
187
+
188
+ <step name="Generate Report">
189
+ Compile findings into a structured report.
190
+
191
+ **Report format:**
192
+
193
+ ```markdown
194
+ # Skill Audit Report
195
+
196
+ Generated: [timestamp]
197
+ Skills audited: [count]
198
+ Location(s): [user/project/source]
199
+
200
+ ## Summary
201
+
202
+ | Status | Count |
203
+ |--------|-------|
204
+ | Passing | [X] |
205
+ | Warnings | [Y] |
206
+ | Failing | [Z] |
207
+
208
+ ## Skills Passing All Checks
209
+
210
+ - skill-name-1
211
+ - skill-name-2
212
+
213
+ ## Skills with Warnings
214
+
215
+ ### [skill-name]
216
+ - SIZE: SKILL.md is 2,500 words - consider refactoring
217
+
218
+ ## Skills with Failures
219
+
220
+ ### [skill-name]
221
+ - STRUCTURAL: Missing `description` in frontmatter
222
+ - STYLE: Found 15 instances of second person
223
+ - BROKEN: References `scripts/validate.py` but file missing
224
+
225
+ ## Recommendations
226
+
227
+ [Prioritized list of what to fix first]
228
+ ```
229
+
230
+ **Present the report to the user.**
231
+ </step>
232
+
233
+ <step name="Offer Fixes">
234
+ After presenting the report, offer to fix issues.
235
+
236
+ Use `AskUserQuestion`:
237
+ - **Fix all auto-fixable issues** - Apply safe fixes automatically
238
+ - **Fix specific skill** - Work on one skill at a time
239
+ - **Just the report** - No fixes, user will handle manually
240
+ - **Create modification tasks** - Add to todo list for later
241
+
242
+ **Auto-fixable issues:**
243
+ - Second person → imperative form conversion
244
+ - Negative framing → positive framing conversion
245
+ - Missing frontmatter fields (can prompt for values)
246
+
247
+ **Manual-fix-required issues:**
248
+ - Oversized SKILL.md (needs content decisions)
249
+ - Missing referenced files (needs content creation)
250
+ - Vague descriptions (needs user input on triggers)
251
+
252
+ If user wants fixes, transition to `references/modify.md` for each skill that needs work.
253
+ </step>
254
+
255
+ </steps>
256
+
257
+ ## Audit Checklist (Quick Reference)
258
+
259
+ For quick manual audits, use this checklist:
260
+
261
+ ### Must Pass
262
+ - [ ] SKILL.md exists with valid YAML frontmatter
263
+ - [ ] `name` and `description` fields present
264
+ - [ ] `name` matches directory name (hyphen-case)
265
+ - [ ] `description` under 1024 characters
266
+ - [ ] `description` uses third person
267
+ - [ ] `description` has trigger phrases
268
+ - [ ] No second person in body
269
+ - [ ] All referenced files exist
270
+
271
+ ### Should Pass
272
+ - [ ] SKILL.md under 2,000 words
273
+ - [ ] Uses imperative form throughout
274
+ - [ ] Positive framing (no "don't", "never")
275
+ - [ ] references/ used for heavy content
276
+ - [ ] All resources in skill directory are referenced
277
+
278
+ ### Nice to Have
279
+ - [ ] Examples included
280
+ - [ ] Clear section structure
281
+ - [ ] Scripts for deterministic operations
282
+
283
+ ## Common Audit Findings
284
+
285
+ ### Finding: Many Skills Use Second Person
286
+
287
+ **Pattern:** "You should...", "You can...", "You need..."
288
+
289
+ **Fix approach:**
290
+ ```
291
+ Before: "You should parse the config file first."
292
+ After: "Parse the config file first."
293
+
294
+ Before: "You can use grep to search."
295
+ After: "Use grep to search."
296
+
297
+ Before: "If you need to validate, you should run the tests."
298
+ After: "To validate, run the tests."
299
+ ```
300
+
301
+ ### Finding: Descriptions Are Vague
302
+
303
+ **Pattern:** "Helps with X" or "Provides Y guidance"
304
+
305
+ **Fix approach:**
306
+ 1. Ask user what they say when they need this skill
307
+ 2. Collect 5-10 trigger phrases
308
+ 3. Rewrite in third person with phrases
309
+
310
+ ### Finding: SKILL.md Is Too Large
311
+
312
+ **Pattern:** >3,000 words with no references/
313
+
314
+ **Fix approach:**
315
+ 1. Identify logical sections
316
+ 2. Move detailed content to references/
317
+ 3. Keep routing and essential knowledge in SKILL.md
318
+ 4. Add explicit references: "For detailed patterns, read `references/patterns.md`"
319
+
320
+ ### Finding: Unreferenced Resources
321
+
322
+ **Pattern:** Files exist in references/ or scripts/ but SKILL.md doesn't mention them
323
+
324
+ **Fix approach:**
325
+ 1. Determine if resource is needed
326
+ 2. If needed, add reference in SKILL.md
327
+ 3. If not needed, consider removing
328
+
329
+ ## Output
330
+
331
+ The audit produces:
332
+ 1. **Report** - Comprehensive findings for all audited skills
333
+ 2. **Recommendations** - Prioritized list of improvements
334
+ 3. **Optional fixes** - Automated corrections for simple issues