tech-hub-skills 1.5.1 ā 1.5.2
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/.claude/LICENSE +21 -21
- package/.claude/README.md +291 -291
- package/.claude/bin/cli.js +266 -266
- package/.claude/bin/copilot.js +182 -182
- package/.claude/bin/postinstall.js +42 -42
- package/.claude/commands/README.md +336 -336
- package/.claude/commands/ai-engineer.md +104 -104
- package/.claude/commands/aws.md +143 -143
- package/.claude/commands/azure.md +149 -149
- package/.claude/commands/backend-developer.md +108 -108
- package/.claude/commands/code-review.md +399 -399
- package/.claude/commands/compliance-automation.md +747 -747
- package/.claude/commands/compliance-officer.md +108 -108
- package/.claude/commands/data-engineer.md +113 -113
- package/.claude/commands/data-governance.md +102 -102
- package/.claude/commands/data-scientist.md +123 -123
- package/.claude/commands/database-admin.md +109 -109
- package/.claude/commands/devops.md +160 -160
- package/.claude/commands/docker.md +160 -160
- package/.claude/commands/enterprise-dashboard.md +613 -613
- package/.claude/commands/finops.md +184 -184
- package/.claude/commands/frontend-developer.md +108 -108
- package/.claude/commands/gcp.md +143 -143
- package/.claude/commands/ml-engineer.md +115 -115
- package/.claude/commands/mlops.md +187 -187
- package/.claude/commands/network-engineer.md +109 -109
- package/.claude/commands/optimization-advisor.md +329 -329
- package/.claude/commands/orchestrator.md +623 -623
- package/.claude/commands/platform-engineer.md +102 -102
- package/.claude/commands/process-automation.md +226 -226
- package/.claude/commands/process-changelog.md +184 -184
- package/.claude/commands/process-documentation.md +484 -484
- package/.claude/commands/process-kanban.md +324 -324
- package/.claude/commands/process-versioning.md +214 -214
- package/.claude/commands/product-designer.md +104 -104
- package/.claude/commands/project-starter.md +443 -443
- package/.claude/commands/qa-engineer.md +109 -109
- package/.claude/commands/security-architect.md +135 -135
- package/.claude/commands/sre.md +109 -109
- package/.claude/commands/system-design.md +126 -126
- package/.claude/commands/technical-writer.md +101 -101
- package/.claude/package.json +46 -46
- package/.claude/roles/ai-engineer/skills/01-prompt-engineering/README.md +252 -252
- package/.claude/roles/ai-engineer/skills/01-prompt-engineering/prompt_ab_tester.py +356 -356
- package/.claude/roles/ai-engineer/skills/01-prompt-engineering/prompt_template_manager.py +274 -274
- package/.claude/roles/ai-engineer/skills/01-prompt-engineering/token_cost_estimator.py +324 -324
- package/.claude/roles/ai-engineer/skills/02-rag-pipeline/README.md +448 -448
- package/.claude/roles/ai-engineer/skills/02-rag-pipeline/document_chunker.py +336 -336
- package/.claude/roles/ai-engineer/skills/02-rag-pipeline/rag_pipeline.sql +213 -213
- package/.claude/roles/ai-engineer/skills/03-agent-orchestration/README.md +599 -599
- package/.claude/roles/ai-engineer/skills/04-llm-guardrails/README.md +735 -735
- package/.claude/roles/ai-engineer/skills/05-vector-embeddings/README.md +711 -711
- package/.claude/roles/ai-engineer/skills/06-llm-evaluation/README.md +777 -777
- package/.claude/roles/azure/skills/01-infrastructure-fundamentals/README.md +264 -264
- package/.claude/roles/azure/skills/02-data-factory/README.md +264 -264
- package/.claude/roles/azure/skills/03-synapse-analytics/README.md +264 -264
- package/.claude/roles/azure/skills/04-databricks/README.md +264 -264
- package/.claude/roles/azure/skills/05-functions/README.md +264 -264
- package/.claude/roles/azure/skills/06-kubernetes-service/README.md +264 -264
- package/.claude/roles/azure/skills/07-openai-service/README.md +264 -264
- package/.claude/roles/azure/skills/08-machine-learning/README.md +264 -264
- package/.claude/roles/azure/skills/09-storage-adls/README.md +264 -264
- package/.claude/roles/azure/skills/10-networking/README.md +264 -264
- package/.claude/roles/azure/skills/11-sql-cosmos/README.md +264 -264
- package/.claude/roles/azure/skills/12-event-hubs/README.md +264 -264
- package/.claude/roles/code-review/skills/01-automated-code-review/README.md +394 -394
- package/.claude/roles/code-review/skills/02-pr-review-workflow/README.md +427 -427
- package/.claude/roles/code-review/skills/03-code-quality-gates/README.md +518 -518
- package/.claude/roles/code-review/skills/04-reviewer-assignment/README.md +504 -504
- package/.claude/roles/code-review/skills/05-review-analytics/README.md +540 -540
- package/.claude/roles/data-engineer/skills/01-lakehouse-architecture/README.md +550 -550
- package/.claude/roles/data-engineer/skills/01-lakehouse-architecture/bronze_ingestion.py +337 -337
- package/.claude/roles/data-engineer/skills/01-lakehouse-architecture/medallion_queries.sql +300 -300
- package/.claude/roles/data-engineer/skills/02-etl-pipeline/README.md +580 -580
- package/.claude/roles/data-engineer/skills/03-data-quality/README.md +579 -579
- package/.claude/roles/data-engineer/skills/04-streaming-pipelines/README.md +608 -608
- package/.claude/roles/data-engineer/skills/05-performance-optimization/README.md +547 -547
- package/.claude/roles/data-governance/skills/01-data-catalog/README.md +112 -112
- package/.claude/roles/data-governance/skills/02-data-lineage/README.md +129 -129
- package/.claude/roles/data-governance/skills/03-data-quality-framework/README.md +182 -182
- package/.claude/roles/data-governance/skills/04-access-control/README.md +39 -39
- package/.claude/roles/data-governance/skills/05-master-data-management/README.md +40 -40
- package/.claude/roles/data-governance/skills/06-compliance-privacy/README.md +46 -46
- package/.claude/roles/data-scientist/skills/01-eda-automation/README.md +230 -230
- package/.claude/roles/data-scientist/skills/01-eda-automation/eda_generator.py +446 -446
- package/.claude/roles/data-scientist/skills/02-statistical-modeling/README.md +264 -264
- package/.claude/roles/data-scientist/skills/03-feature-engineering/README.md +264 -264
- package/.claude/roles/data-scientist/skills/04-predictive-modeling/README.md +264 -264
- package/.claude/roles/data-scientist/skills/05-customer-analytics/README.md +264 -264
- package/.claude/roles/data-scientist/skills/06-campaign-analysis/README.md +264 -264
- package/.claude/roles/data-scientist/skills/07-experimentation/README.md +264 -264
- package/.claude/roles/data-scientist/skills/08-data-visualization/README.md +264 -264
- package/.claude/roles/devops/skills/01-cicd-pipeline/README.md +264 -264
- package/.claude/roles/devops/skills/02-container-orchestration/README.md +264 -264
- package/.claude/roles/devops/skills/03-infrastructure-as-code/README.md +264 -264
- package/.claude/roles/devops/skills/04-gitops/README.md +264 -264
- package/.claude/roles/devops/skills/05-environment-management/README.md +264 -264
- package/.claude/roles/devops/skills/06-automated-testing/README.md +264 -264
- package/.claude/roles/devops/skills/07-release-management/README.md +264 -264
- package/.claude/roles/devops/skills/08-monitoring-alerting/README.md +264 -264
- package/.claude/roles/devops/skills/09-devsecops/README.md +265 -265
- package/.claude/roles/finops/skills/01-cost-visibility/README.md +264 -264
- package/.claude/roles/finops/skills/02-resource-tagging/README.md +264 -264
- package/.claude/roles/finops/skills/03-budget-management/README.md +264 -264
- package/.claude/roles/finops/skills/04-reserved-instances/README.md +264 -264
- package/.claude/roles/finops/skills/05-spot-optimization/README.md +264 -264
- package/.claude/roles/finops/skills/06-storage-tiering/README.md +264 -264
- package/.claude/roles/finops/skills/07-compute-rightsizing/README.md +264 -264
- package/.claude/roles/finops/skills/08-chargeback/README.md +264 -264
- package/.claude/roles/ml-engineer/skills/01-mlops-pipeline/README.md +566 -566
- package/.claude/roles/ml-engineer/skills/02-feature-engineering/README.md +655 -655
- package/.claude/roles/ml-engineer/skills/03-model-training/README.md +704 -704
- package/.claude/roles/ml-engineer/skills/04-model-serving/README.md +845 -845
- package/.claude/roles/ml-engineer/skills/05-model-monitoring/README.md +874 -874
- package/.claude/roles/mlops/skills/01-ml-pipeline-orchestration/README.md +264 -264
- package/.claude/roles/mlops/skills/02-experiment-tracking/README.md +264 -264
- package/.claude/roles/mlops/skills/03-model-registry/README.md +264 -264
- package/.claude/roles/mlops/skills/04-feature-store/README.md +264 -264
- package/.claude/roles/mlops/skills/05-model-deployment/README.md +264 -264
- package/.claude/roles/mlops/skills/06-model-observability/README.md +264 -264
- package/.claude/roles/mlops/skills/07-data-versioning/README.md +264 -264
- package/.claude/roles/mlops/skills/08-ab-testing/README.md +264 -264
- package/.claude/roles/mlops/skills/09-automated-retraining/README.md +264 -264
- package/.claude/roles/platform-engineer/skills/01-internal-developer-platform/README.md +153 -153
- package/.claude/roles/platform-engineer/skills/02-self-service-infrastructure/README.md +57 -57
- package/.claude/roles/platform-engineer/skills/03-slo-sli-management/README.md +59 -59
- package/.claude/roles/platform-engineer/skills/04-developer-experience/README.md +57 -57
- package/.claude/roles/platform-engineer/skills/05-incident-management/README.md +73 -73
- package/.claude/roles/platform-engineer/skills/06-capacity-management/README.md +59 -59
- package/.claude/roles/product-designer/skills/01-requirements-discovery/README.md +407 -407
- package/.claude/roles/product-designer/skills/02-user-research/README.md +382 -382
- package/.claude/roles/product-designer/skills/03-brainstorming-ideation/README.md +437 -437
- package/.claude/roles/product-designer/skills/04-ux-design/README.md +496 -496
- package/.claude/roles/product-designer/skills/05-product-market-fit/README.md +376 -376
- package/.claude/roles/product-designer/skills/06-stakeholder-management/README.md +412 -412
- package/.claude/roles/security-architect/skills/01-pii-detection/README.md +319 -319
- package/.claude/roles/security-architect/skills/02-threat-modeling/README.md +264 -264
- package/.claude/roles/security-architect/skills/03-infrastructure-security/README.md +264 -264
- package/.claude/roles/security-architect/skills/04-iam/README.md +264 -264
- package/.claude/roles/security-architect/skills/05-application-security/README.md +264 -264
- package/.claude/roles/security-architect/skills/06-secrets-management/README.md +264 -264
- package/.claude/roles/security-architect/skills/07-security-monitoring/README.md +264 -264
- package/.claude/roles/system-design/skills/01-architecture-patterns/README.md +337 -337
- package/.claude/roles/system-design/skills/02-requirements-engineering/README.md +264 -264
- package/.claude/roles/system-design/skills/03-scalability/README.md +264 -264
- package/.claude/roles/system-design/skills/04-high-availability/README.md +264 -264
- package/.claude/roles/system-design/skills/05-cost-optimization-design/README.md +264 -264
- package/.claude/roles/system-design/skills/06-api-design/README.md +264 -264
- package/.claude/roles/system-design/skills/07-observability-architecture/README.md +264 -264
- package/.claude/roles/system-design/skills/08-process-automation/PROCESS_TEMPLATE.md +336 -336
- package/.claude/roles/system-design/skills/08-process-automation/README.md +521 -521
- package/.claude/roles/system-design/skills/08-process-automation/ai_prompt_generator.py +744 -744
- package/.claude/roles/system-design/skills/08-process-automation/automation_recommender.py +688 -688
- package/.claude/roles/system-design/skills/08-process-automation/plan_generator.py +679 -679
- package/.claude/roles/system-design/skills/08-process-automation/process_analyzer.py +528 -528
- package/.claude/roles/system-design/skills/08-process-automation/process_parser.py +684 -684
- package/.claude/roles/system-design/skills/08-process-automation/role_matcher.py +615 -615
- package/.claude/skills/README.md +336 -336
- package/.claude/skills/ai-engineer.md +104 -104
- package/.claude/skills/aws.md +143 -143
- package/.claude/skills/azure.md +149 -149
- package/.claude/skills/backend-developer.md +108 -108
- package/.claude/skills/code-review.md +399 -399
- package/.claude/skills/compliance-automation.md +747 -747
- package/.claude/skills/compliance-officer.md +108 -108
- package/.claude/skills/data-engineer.md +113 -113
- package/.claude/skills/data-governance.md +102 -102
- package/.claude/skills/data-scientist.md +123 -123
- package/.claude/skills/database-admin.md +109 -109
- package/.claude/skills/devops.md +160 -160
- package/.claude/skills/docker.md +160 -160
- package/.claude/skills/enterprise-dashboard.md +613 -613
- package/.claude/skills/finops.md +184 -184
- package/.claude/skills/frontend-developer.md +108 -108
- package/.claude/skills/gcp.md +143 -143
- package/.claude/skills/ml-engineer.md +115 -115
- package/.claude/skills/mlops.md +187 -187
- package/.claude/skills/network-engineer.md +109 -109
- package/.claude/skills/optimization-advisor.md +329 -329
- package/.claude/skills/orchestrator.md +623 -623
- package/.claude/skills/platform-engineer.md +102 -102
- package/.claude/skills/process-automation.md +226 -226
- package/.claude/skills/process-changelog.md +184 -184
- package/.claude/skills/process-documentation.md +484 -484
- package/.claude/skills/process-kanban.md +324 -324
- package/.claude/skills/process-versioning.md +214 -214
- package/.claude/skills/product-designer.md +104 -104
- package/.claude/skills/project-starter.md +443 -443
- package/.claude/skills/qa-engineer.md +109 -109
- package/.claude/skills/security-architect.md +135 -135
- package/.claude/skills/sre.md +109 -109
- package/.claude/skills/system-design.md +126 -126
- package/.claude/skills/technical-writer.md +101 -101
- package/.gitattributes +2 -2
- package/GITHUB_COPILOT.md +106 -106
- package/README.md +192 -184
- package/package.json +16 -8
package/.claude/bin/cli.js
CHANGED
|
@@ -1,266 +1,266 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
const fs = require("fs");
|
|
4
|
-
const path = require("path");
|
|
5
|
-
const { execSync } = require("child_process");
|
|
6
|
-
const { installCopilotInstructions } = require("./copilot");
|
|
7
|
-
|
|
8
|
-
const SKILLS_DIR = path.join(__dirname, "..");
|
|
9
|
-
const VERSION = require("../package.json").version;
|
|
10
|
-
|
|
11
|
-
const colors = {
|
|
12
|
-
reset: "\x1b[0m",
|
|
13
|
-
bright: "\x1b[1m",
|
|
14
|
-
cyan: "\x1b[36m",
|
|
15
|
-
green: "\x1b[32m",
|
|
16
|
-
yellow: "\x1b[33m",
|
|
17
|
-
red: "\x1b[31m",
|
|
18
|
-
magenta: "\x1b[35m",
|
|
19
|
-
};
|
|
20
|
-
|
|
21
|
-
function print(msg, color = "reset") {
|
|
22
|
-
console.log(`${colors[color]}${msg}${colors.reset}`);
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
function printBanner() {
|
|
26
|
-
console.log(`
|
|
27
|
-
${colors.cyan}āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
|
|
28
|
-
ā TECH HUB SKILLS - AI Agent Skills for Claude ā
|
|
29
|
-
ā 110+ Production-Ready Skills ā
|
|
30
|
-
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā${colors.reset}
|
|
31
|
-
`);
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
function copyDir(src, dest) {
|
|
35
|
-
if (!fs.existsSync(dest)) {
|
|
36
|
-
fs.mkdirSync(dest, { recursive: true });
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
const entries = fs.readdirSync(src, { withFileTypes: true });
|
|
40
|
-
|
|
41
|
-
for (const entry of entries) {
|
|
42
|
-
const srcPath = path.join(src, entry.name);
|
|
43
|
-
const destPath = path.join(dest, entry.name);
|
|
44
|
-
|
|
45
|
-
// Skip bin, node_modules, package.json
|
|
46
|
-
if (
|
|
47
|
-
["bin", "node_modules", "package.json", "package-lock.json"].includes(
|
|
48
|
-
entry.name
|
|
49
|
-
)
|
|
50
|
-
) {
|
|
51
|
-
continue;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
if (entry.isDirectory()) {
|
|
55
|
-
copyDir(srcPath, destPath);
|
|
56
|
-
} else {
|
|
57
|
-
fs.copyFileSync(srcPath, destPath);
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
function install(options = {}) {
|
|
63
|
-
const isGlobal = options.global;
|
|
64
|
-
const targetDir = isGlobal
|
|
65
|
-
? path.join(require("os").homedir(), ".claude")
|
|
66
|
-
: path.join(process.cwd(), ".claude");
|
|
67
|
-
|
|
68
|
-
print(`\nš¦ Installing Tech Hub Skills to: ${targetDir}`, "cyan");
|
|
69
|
-
|
|
70
|
-
// Copy skills and roles
|
|
71
|
-
const skillsSrc = path.join(SKILLS_DIR, "tech_hub_skills", "skills");
|
|
72
|
-
const rolesSrc = path.join(SKILLS_DIR, "tech_hub_skills", "roles");
|
|
73
|
-
const skillsDest = path.join(targetDir, "skills");
|
|
74
|
-
const rolesDest = path.join(targetDir, "roles");
|
|
75
|
-
const commandsDest = path.join(targetDir, "commands");
|
|
76
|
-
|
|
77
|
-
if (fs.existsSync(skillsSrc)) {
|
|
78
|
-
print(" Copying skills...", "yellow");
|
|
79
|
-
copyDir(skillsSrc, skillsDest);
|
|
80
|
-
|
|
81
|
-
print(" Copying commands...", "yellow");
|
|
82
|
-
copyDir(skillsSrc, commandsDest);
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
if (fs.existsSync(rolesSrc)) {
|
|
86
|
-
print(" Copying roles...", "yellow");
|
|
87
|
-
copyDir(rolesSrc, rolesDest);
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
// Install GitHub Copilot instructions if requested (project-level only)
|
|
91
|
-
if (options.copilot && !isGlobal) {
|
|
92
|
-
print("\nš¤ Installing GitHub Copilot integration...", "cyan");
|
|
93
|
-
installCopilotInstructions({ force: options.force });
|
|
94
|
-
} else if (options.copilot && isGlobal) {
|
|
95
|
-
print(
|
|
96
|
-
"\nā ļø Copilot integration is only available for project-level installs",
|
|
97
|
-
"yellow"
|
|
98
|
-
);
|
|
99
|
-
print(
|
|
100
|
-
" (Copilot instructions must be in project .github/ directory)",
|
|
101
|
-
"yellow"
|
|
102
|
-
);
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
// Count installed files
|
|
106
|
-
const skillCount = fs.existsSync(skillsDest)
|
|
107
|
-
? fs.readdirSync(skillsDest).filter((f) => f.endsWith(".md")).length
|
|
108
|
-
: 0;
|
|
109
|
-
|
|
110
|
-
print(`\nā Installation complete!`, "green");
|
|
111
|
-
print(` Location: ${targetDir}`, "cyan");
|
|
112
|
-
print(` Skills: ${skillCount} role files installed`, "cyan");
|
|
113
|
-
print(` Roles: 16+ specialized agents`, "cyan");
|
|
114
|
-
if (options.copilot && !isGlobal) {
|
|
115
|
-
print(` Copilot: .github/copilot-instructions.md`, "cyan");
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
print(`\n${colors.bright}Next Steps:${colors.reset}`);
|
|
119
|
-
if (options.copilot && !isGlobal) {
|
|
120
|
-
print(" GitHub Copilot:");
|
|
121
|
-
print(" 1. Open VSCode with GitHub Copilot enabled");
|
|
122
|
-
print(" 2. Copilot will automatically use the instructions");
|
|
123
|
-
print(" 3. Try: // Using AI Engineer approach for RAG pipeline");
|
|
124
|
-
print("");
|
|
125
|
-
}
|
|
126
|
-
print(" Claude Code:");
|
|
127
|
-
print(" 1. Open Claude Code in your project");
|
|
128
|
-
print(" 2. Use /orchestrator or @orchestrator to start");
|
|
129
|
-
print(
|
|
130
|
-
" 3. Or invoke specific roles: /ai-engineer, /security-architect, etc."
|
|
131
|
-
);
|
|
132
|
-
|
|
133
|
-
print(`\n${colors.bright}Example:${colors.reset}`);
|
|
134
|
-
if (options.copilot && !isGlobal) {
|
|
135
|
-
print(" Copilot: // Apply Security Architect best practices");
|
|
136
|
-
}
|
|
137
|
-
print(' Claude: /orchestrator "Build a customer churn prediction model"');
|
|
138
|
-
print(' Claude: @orchestrator "Build a customer churn prediction model"');
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
function init(options = {}) {
|
|
142
|
-
printBanner();
|
|
143
|
-
|
|
144
|
-
if (options.enterprise) {
|
|
145
|
-
print("\nš¢ ENTERPRISE MODE", "magenta");
|
|
146
|
-
print(" Mandatory: Security Architect + Data Governance", "yellow");
|
|
147
|
-
print("\n Use in Claude Code:", "cyan");
|
|
148
|
-
print(' @project-starter --enterprise "Your project description"');
|
|
149
|
-
} else {
|
|
150
|
-
print("\nš¦ Standard Mode", "cyan");
|
|
151
|
-
print("\n Use in Claude Code:", "cyan");
|
|
152
|
-
print(' @project-starter "Your project description"');
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
function list() {
|
|
157
|
-
printBanner();
|
|
158
|
-
|
|
159
|
-
const roles = [
|
|
160
|
-
{
|
|
161
|
-
name: "Orchestrator",
|
|
162
|
-
skills: "Routes all",
|
|
163
|
-
focus: "Project coordination",
|
|
164
|
-
},
|
|
165
|
-
{ name: "AI Engineer", skills: "8", focus: "LLMs, RAG, Agents" },
|
|
166
|
-
{ name: "Data Engineer", skills: "9", focus: "Pipelines, Lakehouse" },
|
|
167
|
-
{ name: "ML Engineer", skills: "9", focus: "Training, Serving, MLOps" },
|
|
168
|
-
{ name: "Data Scientist", skills: "8", focus: "Analytics, Modeling" },
|
|
169
|
-
{ name: "Security Architect", skills: "7", focus: "PII, IAM, Compliance" },
|
|
170
|
-
{ name: "System Design", skills: "8", focus: "Architecture, Scalability" },
|
|
171
|
-
{ name: "Platform Engineer", skills: "6", focus: "IDP, SLOs" },
|
|
172
|
-
{
|
|
173
|
-
name: "Data Governance",
|
|
174
|
-
skills: "6",
|
|
175
|
-
focus: "Catalog, Lineage, Quality",
|
|
176
|
-
},
|
|
177
|
-
{ name: "DevOps", skills: "9", focus: "CI/CD, Containers, IaC" },
|
|
178
|
-
{ name: "MLOps", skills: "9", focus: "Experiments, Registry" },
|
|
179
|
-
{ name: "FinOps", skills: "8", focus: "Cost Optimization" },
|
|
180
|
-
{ name: "Azure", skills: "12", focus: "Azure Services" },
|
|
181
|
-
{ name: "Code Review", skills: "5", focus: "PR Automation, Quality Gates" },
|
|
182
|
-
{ name: "Product Designer", skills: "6", focus: "Requirements, UX" },
|
|
183
|
-
];
|
|
184
|
-
|
|
185
|
-
print("\nAvailable Roles:\n", "bright");
|
|
186
|
-
console.log(" Role Skills Focus");
|
|
187
|
-
console.log(" āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā");
|
|
188
|
-
|
|
189
|
-
for (const role of roles) {
|
|
190
|
-
const name = role.name.padEnd(20);
|
|
191
|
-
const skills = role.skills.toString().padEnd(8);
|
|
192
|
-
console.log(` ${name} ${skills} ${role.focus}`);
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
print("\n Total: 110+ skills across 16+ roles", "cyan");
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
function showHelp() {
|
|
199
|
-
printBanner();
|
|
200
|
-
console.log(`
|
|
201
|
-
${colors.bright}Usage:${colors.reset}
|
|
202
|
-
npx tech-hub-skills <command> [options]
|
|
203
|
-
|
|
204
|
-
${colors.bright}Commands:${colors.reset}
|
|
205
|
-
install Install skills to current project (Claude Code)
|
|
206
|
-
install --copilot Install with GitHub Copilot integration
|
|
207
|
-
install --global Install skills globally (~/.claude)
|
|
208
|
-
install --force Force overwrite existing installation
|
|
209
|
-
init Initialize project with guided setup
|
|
210
|
-
init --enterprise Enterprise mode with security + governance
|
|
211
|
-
list List all available roles and skills
|
|
212
|
-
help Show this help message
|
|
213
|
-
|
|
214
|
-
${colors.bright}Options:${colors.reset}
|
|
215
|
-
--copilot, -c Add GitHub Copilot instructions (.github/copilot-instructions.md)
|
|
216
|
-
--global, -g Install globally to ~/.claude (not available with --copilot)
|
|
217
|
-
--force, -f Overwrite existing files
|
|
218
|
-
--enterprise, -E Enterprise mode (for init command)
|
|
219
|
-
|
|
220
|
-
${colors.bright}Examples:${colors.reset}
|
|
221
|
-
npx tech-hub-skills install
|
|
222
|
-
npx tech-hub-skills install --copilot
|
|
223
|
-
npx tech-hub-skills install --global
|
|
224
|
-
npx tech-hub-skills init --enterprise
|
|
225
|
-
npx tech-hub-skills list
|
|
226
|
-
|
|
227
|
-
${colors.bright}After Installation:${colors.reset}
|
|
228
|
-
Claude Code: @orchestrator "Your project description"
|
|
229
|
-
GitHub Copilot: // Using AI Engineer approach for RAG pipeline
|
|
230
|
-
`);
|
|
231
|
-
}
|
|
232
|
-
|
|
233
|
-
// Parse arguments
|
|
234
|
-
const args = process.argv.slice(2);
|
|
235
|
-
const command = args[0];
|
|
236
|
-
const options = {
|
|
237
|
-
global: args.includes("--global") || args.includes("-g"),
|
|
238
|
-
enterprise: args.includes("--enterprise") || args.includes("-E"),
|
|
239
|
-
copilot: args.includes("--copilot") || args.includes("-c"),
|
|
240
|
-
force: args.includes("--force") || args.includes("-f"),
|
|
241
|
-
};
|
|
242
|
-
|
|
243
|
-
switch (command) {
|
|
244
|
-
case "install":
|
|
245
|
-
printBanner();
|
|
246
|
-
install(options);
|
|
247
|
-
break;
|
|
248
|
-
case "init":
|
|
249
|
-
init(options);
|
|
250
|
-
break;
|
|
251
|
-
case "list":
|
|
252
|
-
list();
|
|
253
|
-
break;
|
|
254
|
-
case "help":
|
|
255
|
-
case "--help":
|
|
256
|
-
case "-h":
|
|
257
|
-
showHelp();
|
|
258
|
-
break;
|
|
259
|
-
case "version":
|
|
260
|
-
case "--version":
|
|
261
|
-
case "-v":
|
|
262
|
-
console.log(`tech-hub-skills v${VERSION}`);
|
|
263
|
-
break;
|
|
264
|
-
default:
|
|
265
|
-
showHelp();
|
|
266
|
-
}
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
const fs = require("fs");
|
|
4
|
+
const path = require("path");
|
|
5
|
+
const { execSync } = require("child_process");
|
|
6
|
+
const { installCopilotInstructions } = require("./copilot");
|
|
7
|
+
|
|
8
|
+
const SKILLS_DIR = path.join(__dirname, "..");
|
|
9
|
+
const VERSION = require("../package.json").version;
|
|
10
|
+
|
|
11
|
+
const colors = {
|
|
12
|
+
reset: "\x1b[0m",
|
|
13
|
+
bright: "\x1b[1m",
|
|
14
|
+
cyan: "\x1b[36m",
|
|
15
|
+
green: "\x1b[32m",
|
|
16
|
+
yellow: "\x1b[33m",
|
|
17
|
+
red: "\x1b[31m",
|
|
18
|
+
magenta: "\x1b[35m",
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
function print(msg, color = "reset") {
|
|
22
|
+
console.log(`${colors[color]}${msg}${colors.reset}`);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
function printBanner() {
|
|
26
|
+
console.log(`
|
|
27
|
+
${colors.cyan}āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
|
|
28
|
+
ā TECH HUB SKILLS - AI Agent Skills for Claude ā
|
|
29
|
+
ā 110+ Production-Ready Skills ā
|
|
30
|
+
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā${colors.reset}
|
|
31
|
+
`);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
function copyDir(src, dest) {
|
|
35
|
+
if (!fs.existsSync(dest)) {
|
|
36
|
+
fs.mkdirSync(dest, { recursive: true });
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
const entries = fs.readdirSync(src, { withFileTypes: true });
|
|
40
|
+
|
|
41
|
+
for (const entry of entries) {
|
|
42
|
+
const srcPath = path.join(src, entry.name);
|
|
43
|
+
const destPath = path.join(dest, entry.name);
|
|
44
|
+
|
|
45
|
+
// Skip bin, node_modules, package.json
|
|
46
|
+
if (
|
|
47
|
+
["bin", "node_modules", "package.json", "package-lock.json"].includes(
|
|
48
|
+
entry.name
|
|
49
|
+
)
|
|
50
|
+
) {
|
|
51
|
+
continue;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
if (entry.isDirectory()) {
|
|
55
|
+
copyDir(srcPath, destPath);
|
|
56
|
+
} else {
|
|
57
|
+
fs.copyFileSync(srcPath, destPath);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
function install(options = {}) {
|
|
63
|
+
const isGlobal = options.global;
|
|
64
|
+
const targetDir = isGlobal
|
|
65
|
+
? path.join(require("os").homedir(), ".claude")
|
|
66
|
+
: path.join(process.cwd(), ".claude");
|
|
67
|
+
|
|
68
|
+
print(`\nš¦ Installing Tech Hub Skills to: ${targetDir}`, "cyan");
|
|
69
|
+
|
|
70
|
+
// Copy skills and roles
|
|
71
|
+
const skillsSrc = path.join(SKILLS_DIR, "tech_hub_skills", "skills");
|
|
72
|
+
const rolesSrc = path.join(SKILLS_DIR, "tech_hub_skills", "roles");
|
|
73
|
+
const skillsDest = path.join(targetDir, "skills");
|
|
74
|
+
const rolesDest = path.join(targetDir, "roles");
|
|
75
|
+
const commandsDest = path.join(targetDir, "commands");
|
|
76
|
+
|
|
77
|
+
if (fs.existsSync(skillsSrc)) {
|
|
78
|
+
print(" Copying skills...", "yellow");
|
|
79
|
+
copyDir(skillsSrc, skillsDest);
|
|
80
|
+
|
|
81
|
+
print(" Copying commands...", "yellow");
|
|
82
|
+
copyDir(skillsSrc, commandsDest);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
if (fs.existsSync(rolesSrc)) {
|
|
86
|
+
print(" Copying roles...", "yellow");
|
|
87
|
+
copyDir(rolesSrc, rolesDest);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
// Install GitHub Copilot instructions if requested (project-level only)
|
|
91
|
+
if (options.copilot && !isGlobal) {
|
|
92
|
+
print("\nš¤ Installing GitHub Copilot integration...", "cyan");
|
|
93
|
+
installCopilotInstructions({ force: options.force });
|
|
94
|
+
} else if (options.copilot && isGlobal) {
|
|
95
|
+
print(
|
|
96
|
+
"\nā ļø Copilot integration is only available for project-level installs",
|
|
97
|
+
"yellow"
|
|
98
|
+
);
|
|
99
|
+
print(
|
|
100
|
+
" (Copilot instructions must be in project .github/ directory)",
|
|
101
|
+
"yellow"
|
|
102
|
+
);
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
// Count installed files
|
|
106
|
+
const skillCount = fs.existsSync(skillsDest)
|
|
107
|
+
? fs.readdirSync(skillsDest).filter((f) => f.endsWith(".md")).length
|
|
108
|
+
: 0;
|
|
109
|
+
|
|
110
|
+
print(`\nā Installation complete!`, "green");
|
|
111
|
+
print(` Location: ${targetDir}`, "cyan");
|
|
112
|
+
print(` Skills: ${skillCount} role files installed`, "cyan");
|
|
113
|
+
print(` Roles: 16+ specialized agents`, "cyan");
|
|
114
|
+
if (options.copilot && !isGlobal) {
|
|
115
|
+
print(` Copilot: .github/copilot-instructions.md`, "cyan");
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
print(`\n${colors.bright}Next Steps:${colors.reset}`);
|
|
119
|
+
if (options.copilot && !isGlobal) {
|
|
120
|
+
print(" GitHub Copilot:");
|
|
121
|
+
print(" 1. Open VSCode with GitHub Copilot enabled");
|
|
122
|
+
print(" 2. Copilot will automatically use the instructions");
|
|
123
|
+
print(" 3. Try: // Using AI Engineer approach for RAG pipeline");
|
|
124
|
+
print("");
|
|
125
|
+
}
|
|
126
|
+
print(" Claude Code:");
|
|
127
|
+
print(" 1. Open Claude Code in your project");
|
|
128
|
+
print(" 2. Use /orchestrator or @orchestrator to start");
|
|
129
|
+
print(
|
|
130
|
+
" 3. Or invoke specific roles: /ai-engineer, /security-architect, etc."
|
|
131
|
+
);
|
|
132
|
+
|
|
133
|
+
print(`\n${colors.bright}Example:${colors.reset}`);
|
|
134
|
+
if (options.copilot && !isGlobal) {
|
|
135
|
+
print(" Copilot: // Apply Security Architect best practices");
|
|
136
|
+
}
|
|
137
|
+
print(' Claude: /orchestrator "Build a customer churn prediction model"');
|
|
138
|
+
print(' Claude: @orchestrator "Build a customer churn prediction model"');
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
function init(options = {}) {
|
|
142
|
+
printBanner();
|
|
143
|
+
|
|
144
|
+
if (options.enterprise) {
|
|
145
|
+
print("\nš¢ ENTERPRISE MODE", "magenta");
|
|
146
|
+
print(" Mandatory: Security Architect + Data Governance", "yellow");
|
|
147
|
+
print("\n Use in Claude Code:", "cyan");
|
|
148
|
+
print(' @project-starter --enterprise "Your project description"');
|
|
149
|
+
} else {
|
|
150
|
+
print("\nš¦ Standard Mode", "cyan");
|
|
151
|
+
print("\n Use in Claude Code:", "cyan");
|
|
152
|
+
print(' @project-starter "Your project description"');
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
function list() {
|
|
157
|
+
printBanner();
|
|
158
|
+
|
|
159
|
+
const roles = [
|
|
160
|
+
{
|
|
161
|
+
name: "Orchestrator",
|
|
162
|
+
skills: "Routes all",
|
|
163
|
+
focus: "Project coordination",
|
|
164
|
+
},
|
|
165
|
+
{ name: "AI Engineer", skills: "8", focus: "LLMs, RAG, Agents" },
|
|
166
|
+
{ name: "Data Engineer", skills: "9", focus: "Pipelines, Lakehouse" },
|
|
167
|
+
{ name: "ML Engineer", skills: "9", focus: "Training, Serving, MLOps" },
|
|
168
|
+
{ name: "Data Scientist", skills: "8", focus: "Analytics, Modeling" },
|
|
169
|
+
{ name: "Security Architect", skills: "7", focus: "PII, IAM, Compliance" },
|
|
170
|
+
{ name: "System Design", skills: "8", focus: "Architecture, Scalability" },
|
|
171
|
+
{ name: "Platform Engineer", skills: "6", focus: "IDP, SLOs" },
|
|
172
|
+
{
|
|
173
|
+
name: "Data Governance",
|
|
174
|
+
skills: "6",
|
|
175
|
+
focus: "Catalog, Lineage, Quality",
|
|
176
|
+
},
|
|
177
|
+
{ name: "DevOps", skills: "9", focus: "CI/CD, Containers, IaC" },
|
|
178
|
+
{ name: "MLOps", skills: "9", focus: "Experiments, Registry" },
|
|
179
|
+
{ name: "FinOps", skills: "8", focus: "Cost Optimization" },
|
|
180
|
+
{ name: "Azure", skills: "12", focus: "Azure Services" },
|
|
181
|
+
{ name: "Code Review", skills: "5", focus: "PR Automation, Quality Gates" },
|
|
182
|
+
{ name: "Product Designer", skills: "6", focus: "Requirements, UX" },
|
|
183
|
+
];
|
|
184
|
+
|
|
185
|
+
print("\nAvailable Roles:\n", "bright");
|
|
186
|
+
console.log(" Role Skills Focus");
|
|
187
|
+
console.log(" āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā");
|
|
188
|
+
|
|
189
|
+
for (const role of roles) {
|
|
190
|
+
const name = role.name.padEnd(20);
|
|
191
|
+
const skills = role.skills.toString().padEnd(8);
|
|
192
|
+
console.log(` ${name} ${skills} ${role.focus}`);
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
print("\n Total: 110+ skills across 16+ roles", "cyan");
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
function showHelp() {
|
|
199
|
+
printBanner();
|
|
200
|
+
console.log(`
|
|
201
|
+
${colors.bright}Usage:${colors.reset}
|
|
202
|
+
npx tech-hub-skills <command> [options]
|
|
203
|
+
|
|
204
|
+
${colors.bright}Commands:${colors.reset}
|
|
205
|
+
install Install skills to current project (Claude Code)
|
|
206
|
+
install --copilot Install with GitHub Copilot integration
|
|
207
|
+
install --global Install skills globally (~/.claude)
|
|
208
|
+
install --force Force overwrite existing installation
|
|
209
|
+
init Initialize project with guided setup
|
|
210
|
+
init --enterprise Enterprise mode with security + governance
|
|
211
|
+
list List all available roles and skills
|
|
212
|
+
help Show this help message
|
|
213
|
+
|
|
214
|
+
${colors.bright}Options:${colors.reset}
|
|
215
|
+
--copilot, -c Add GitHub Copilot instructions (.github/copilot-instructions.md)
|
|
216
|
+
--global, -g Install globally to ~/.claude (not available with --copilot)
|
|
217
|
+
--force, -f Overwrite existing files
|
|
218
|
+
--enterprise, -E Enterprise mode (for init command)
|
|
219
|
+
|
|
220
|
+
${colors.bright}Examples:${colors.reset}
|
|
221
|
+
npx tech-hub-skills install
|
|
222
|
+
npx tech-hub-skills install --copilot
|
|
223
|
+
npx tech-hub-skills install --global
|
|
224
|
+
npx tech-hub-skills init --enterprise
|
|
225
|
+
npx tech-hub-skills list
|
|
226
|
+
|
|
227
|
+
${colors.bright}After Installation:${colors.reset}
|
|
228
|
+
Claude Code: @orchestrator "Your project description"
|
|
229
|
+
GitHub Copilot: // Using AI Engineer approach for RAG pipeline
|
|
230
|
+
`);
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
// Parse arguments
|
|
234
|
+
const args = process.argv.slice(2);
|
|
235
|
+
const command = args[0];
|
|
236
|
+
const options = {
|
|
237
|
+
global: args.includes("--global") || args.includes("-g"),
|
|
238
|
+
enterprise: args.includes("--enterprise") || args.includes("-E"),
|
|
239
|
+
copilot: args.includes("--copilot") || args.includes("-c"),
|
|
240
|
+
force: args.includes("--force") || args.includes("-f"),
|
|
241
|
+
};
|
|
242
|
+
|
|
243
|
+
switch (command) {
|
|
244
|
+
case "install":
|
|
245
|
+
printBanner();
|
|
246
|
+
install(options);
|
|
247
|
+
break;
|
|
248
|
+
case "init":
|
|
249
|
+
init(options);
|
|
250
|
+
break;
|
|
251
|
+
case "list":
|
|
252
|
+
list();
|
|
253
|
+
break;
|
|
254
|
+
case "help":
|
|
255
|
+
case "--help":
|
|
256
|
+
case "-h":
|
|
257
|
+
showHelp();
|
|
258
|
+
break;
|
|
259
|
+
case "version":
|
|
260
|
+
case "--version":
|
|
261
|
+
case "-v":
|
|
262
|
+
console.log(`tech-hub-skills v${VERSION}`);
|
|
263
|
+
break;
|
|
264
|
+
default:
|
|
265
|
+
showHelp();
|
|
266
|
+
}
|