claude-code-templates 1.22.1 → 1.24.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 (3) hide show
  1. package/README.md +56 -0
  2. package/package.json +1 -1
  3. package/src/index.js +69 -7
package/README.md CHANGED
@@ -38,6 +38,7 @@ npx claude-code-templates@latest --health-check
38
38
  | **Commands** | Custom slash commands for development tasks | `/generate-tests`, `/check-file`, `/optimize-bundle` |
39
39
  | **Agents** | AI specialists for specific domains | API security audit, React performance, database optimization |
40
40
  | **MCPs** | External service integrations | GitHub, databases, development tools |
41
+ | **Skills** | Modular capabilities with progressive disclosure | PDF processing, algorithmic art, MCP builder |
41
42
  | **Analytics** | Real-time monitoring dashboard | Live session tracking, usage statistics, exports |
42
43
 
43
44
  ## 🛠️ Supported Technologies
@@ -95,6 +96,61 @@ npx claude-code-templates@latest --remove-agent customer-support
95
96
 
96
97
  The agents use the Claude Code SDK internally to provide specialized AI assistance with domain-specific knowledge and best practices.
97
98
 
99
+ ## 🎨 Skills (Anthropic Format)
100
+
101
+ Install modular capabilities that Claude loads dynamically using Anthropic's progressive disclosure pattern:
102
+
103
+ ```bash
104
+ # Install individual skills
105
+ npx claude-code-templates@latest --skill pdf-processing-pro
106
+ npx claude-code-templates@latest --skill algorithmic-art
107
+ npx claude-code-templates@latest --skill mcp-builder
108
+
109
+ # Install multiple skills
110
+ npx claude-code-templates@latest --skill pdf-anthropic,docx,xlsx,pptx
111
+ ```
112
+
113
+ ### Featured Skills
114
+
115
+ #### 🎨 Creative & Design
116
+ - **algorithmic-art** - Create generative art using p5.js with seeded randomness
117
+ - **canvas-design** - Design beautiful visual art in .png and .pdf formats
118
+ - **slack-gif-creator** - Create animated GIFs optimized for Slack
119
+
120
+ #### 💻 Development & Technical
121
+ - **mcp-builder** - Guide for creating high-quality MCP servers
122
+ - **artifacts-builder** - Build complex HTML artifacts with React and Tailwind
123
+ - **webapp-testing** - Test local web applications using Playwright
124
+ - **skill-creator** - Guide for creating effective skills
125
+
126
+ #### 📄 Document Processing
127
+ - **pdf-processing-pro** - Production-ready PDF toolkit (forms, tables, OCR)
128
+ - **pdf-anthropic** - Anthropic's comprehensive PDF manipulation toolkit
129
+ - **docx** - Create, edit, and analyze Word documents
130
+ - **xlsx** - Create, edit, and analyze Excel spreadsheets
131
+ - **pptx** - Create, edit, and analyze PowerPoint presentations
132
+
133
+ #### 🏢 Enterprise & Communication
134
+ - **brand-guidelines** - Apply Anthropic's official brand guidelines
135
+ - **internal-comms** - Write internal communications (reports, newsletters, FAQs)
136
+ - **theme-factory** - Style artifacts with professional themes
137
+
138
+ ### Skills Architecture
139
+
140
+ Skills follow Anthropic's progressive disclosure pattern:
141
+ - **Metadata** - Always loaded (name, description)
142
+ - **Instructions** - Loaded when skill is triggered
143
+ - **Resources** - Reference files loaded only when needed
144
+ - **Scripts** - Execute without loading code into context
145
+
146
+ ### Attribution
147
+
148
+ Skills from [anthropics/skills](https://github.com/anthropics/skills):
149
+ - **Open Source** (Apache 2.0): algorithmic-art, mcp-builder, skill-creator, artifacts-builder, and more
150
+ - **Source-Available** (Reference): docx, pdf-anthropic, pptx, xlsx
151
+
152
+ See [ANTHROPIC_ATTRIBUTION.md](cli-tool/components/skills/ANTHROPIC_ATTRIBUTION.md) for complete license information.
153
+
98
154
  ## 📖 Documentation
99
155
 
100
156
  **[📚 Complete Documentation](https://docs.aitmpl.com/)** - Comprehensive guides, examples, and API reference
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claude-code-templates",
3
- "version": "1.22.1",
3
+ "version": "1.24.0",
4
4
  "description": "CLI tool to setup Claude Code configurations with framework-specific commands, automation hooks and MCP Servers for your projects",
5
5
  "main": "src/index.js",
6
6
  "bin": {
package/src/index.js CHANGED
@@ -1395,8 +1395,12 @@ async function installIndividualSkill(skillName, targetDir, options) {
1395
1395
  console.log(chalk.blue(`💡 Installing skill: ${skillName}`));
1396
1396
 
1397
1397
  try {
1398
+ // Skills can be in format: "skill-name" or "category/skill-name"
1399
+ // Extract the actual skill name (last part of the path)
1400
+ const skillBaseName = skillName.includes('/') ? skillName.split('/').pop() : skillName;
1401
+
1398
1402
  // Skills always use SKILL.md as the main file (Anthropic standard)
1399
- // Format: skills/skill-name/SKILL.md
1403
+ // Format: skills/category/skill-name/SKILL.md
1400
1404
  const githubUrl = `https://raw.githubusercontent.com/davila7/claude-code-templates/main/cli-tool/components/skills/${skillName}/SKILL.md`;
1401
1405
 
1402
1406
  console.log(chalk.gray(`📥 Downloading from GitHub (main branch)...`));
@@ -1405,7 +1409,8 @@ async function installIndividualSkill(skillName, targetDir, options) {
1405
1409
  if (!response.ok) {
1406
1410
  if (response.status === 404) {
1407
1411
  console.log(chalk.red(`❌ Skill "${skillName}" not found`));
1408
- console.log(chalk.yellow('Available skills: pdf-processing, excel-analysis, git-commit-helper, email-composer'));
1412
+ console.log(chalk.yellow('💡 Tip: Use format "category/skill-name" (e.g., creative-design/algorithmic-art)'));
1413
+ console.log(chalk.yellow('Available categories: creative-design, development, document-processing, enterprise-communication'));
1409
1414
  return false;
1410
1415
  }
1411
1416
  throw new Error(`HTTP ${response.status}: ${response.statusText}`);
@@ -1413,16 +1418,15 @@ async function installIndividualSkill(skillName, targetDir, options) {
1413
1418
 
1414
1419
  const skillContent = await response.text();
1415
1420
 
1416
- // Check if there are additional files to download (e.g., referenced .md files)
1421
+ // Check if there are additional files to download (e.g., referenced .md files, scripts, reference)
1417
1422
  const additionalFiles = {};
1418
1423
 
1419
- // Look for references to additional files like [FORMS.md](FORMS.md)
1420
- const referencePattern = /\[([A-Z_]+\.md)\]\(\1\)/g;
1424
+ // 1. Look for references to additional files like [FORMS.md](FORMS.md) or [reference](./reference/)
1425
+ const referencePattern = /\[([A-Z_]+\.md)\]\(\1\)|\[.*?\]\(\.\/([a-z_]+)\/\)/g;
1421
1426
  let match;
1422
- const skillBaseName = skillName;
1423
1427
 
1424
1428
  while ((match = referencePattern.exec(skillContent)) !== null) {
1425
- const referencedFile = match[1];
1429
+ const referencedFile = match[1] || match[2];
1426
1430
  const referencedUrl = githubUrl.replace('SKILL.md', referencedFile);
1427
1431
 
1428
1432
  try {
@@ -1442,6 +1446,64 @@ async function installIndividualSkill(skillName, targetDir, options) {
1442
1446
  }
1443
1447
  }
1444
1448
 
1449
+ // 2. Try to download common directories (scripts/, reference/) from GitHub API
1450
+ const githubApiUrl = `https://api.github.com/repos/davila7/claude-code-templates/contents/cli-tool/components/skills/${skillName}`;
1451
+
1452
+ try {
1453
+ const dirResponse = await fetch(githubApiUrl, {
1454
+ headers: {
1455
+ 'Accept': 'application/vnd.github.v3+json',
1456
+ 'User-Agent': 'claude-code-templates'
1457
+ }
1458
+ });
1459
+
1460
+ if (dirResponse.ok) {
1461
+ const dirContents = await dirResponse.json();
1462
+
1463
+ // Find directories (scripts, reference, templates)
1464
+ for (const item of dirContents) {
1465
+ if (item.type === 'dir' && ['scripts', 'reference', 'templates'].includes(item.name)) {
1466
+ console.log(chalk.gray(`📂 Found directory: ${item.name}/`));
1467
+
1468
+ // Fetch directory contents recursively
1469
+ const subdirResponse = await fetch(item.url, {
1470
+ headers: {
1471
+ 'Accept': 'application/vnd.github.v3+json',
1472
+ 'User-Agent': 'claude-code-templates'
1473
+ }
1474
+ });
1475
+
1476
+ if (subdirResponse.ok) {
1477
+ const subdirContents = await subdirResponse.json();
1478
+
1479
+ for (const file of subdirContents) {
1480
+ if (file.type === 'file') {
1481
+ try {
1482
+ const fileResponse = await fetch(file.download_url);
1483
+ if (fileResponse.ok) {
1484
+ const fileContent = await fileResponse.text();
1485
+ const isExecutable = file.name.endsWith('.py') || file.name.endsWith('.sh');
1486
+
1487
+ additionalFiles[`.claude/skills/${skillBaseName}/${item.name}/${file.name}`] = {
1488
+ content: fileContent,
1489
+ executable: isExecutable
1490
+ };
1491
+ console.log(chalk.green(`✓ Downloaded: ${item.name}/${file.name}`));
1492
+ }
1493
+ } catch (err) {
1494
+ console.log(chalk.gray(` (Could not download ${item.name}/${file.name})`));
1495
+ }
1496
+ }
1497
+ }
1498
+ }
1499
+ }
1500
+ }
1501
+ }
1502
+ } catch (error) {
1503
+ // GitHub API access optional, continue if not available
1504
+ console.log(chalk.gray(` (Could not access GitHub API for directory listing)`));
1505
+ }
1506
+
1445
1507
  // Create .claude/skills/skill-name directory (Anthropic standard structure)
1446
1508
  const skillsDir = path.join(targetDir, '.claude', 'skills');
1447
1509
  const skillSubDir = path.join(skillsDir, skillBaseName);