@topmindspace/tms-skills 2.0.0 → 2.0.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/CHANGELOG.md +139 -123
- package/README.md +126 -103
- package/bin/tms-skills.js +160 -160
- package/package.json +48 -48
- package/top-ppt-html/README.md +254 -253
- package/top-ppt-html/SKILL.md +111 -111
- package/top-ppt-html/assets/examples/2026-09-09-architecture-graphite-dark.html +3873 -3926
- package/top-ppt-html/assets/examples/2026-09-09-architecture-graphite-dark.model.json +167 -167
- package/top-ppt-html/assets/examples/2026-09-09-architecture-spectrum.html +3873 -3926
- package/top-ppt-html/assets/examples/2026-09-09-architecture-spectrum.model.json +167 -167
- package/top-ppt-html/assets/examples/2026-09-09-presentation-apple-mono.html +4272 -4325
- package/top-ppt-html/assets/examples/2026-09-09-presentation-apple-mono.model.json +320 -320
- package/top-ppt-html/assets/examples/2026-09-09-presentation-brand-red.html +4272 -4325
- package/top-ppt-html/assets/examples/2026-09-09-presentation-brand-red.model.json +320 -320
- package/top-ppt-html/assets/examples/2026-09-09-presentation-business-blue.html +4272 -4325
- package/top-ppt-html/assets/examples/2026-09-09-presentation-business-blue.model.json +320 -320
- package/top-ppt-html/assets/examples/2026-09-09-research-deep-teal.html +5474 -5527
- package/top-ppt-html/assets/examples/2026-09-09-research-deep-teal.model.json +913 -913
- package/top-ppt-html/assets/examples/2026-09-09-research-indigo-violet.html +5474 -5527
- package/top-ppt-html/assets/examples/2026-09-09-research-indigo-violet.model.json +913 -913
- package/top-ppt-html/assets/examples/2026-09-09-research-mckinsey.html +5474 -5527
- package/top-ppt-html/assets/examples/2026-09-09-research-mckinsey.model.json +913 -913
- package/top-ppt-html/assets/examples/2026-09-09-research-warm-sand.html +5474 -5527
- package/top-ppt-html/assets/examples/2026-09-09-research-warm-sand.model.json +913 -913
- package/top-ppt-html/assets/pptx-export.js +1944 -1944
- package/top-ppt-html/assets/style-gallery.html +559 -589
- package/top-ppt-html/assets/templates/architecture.html +3675 -3728
- package/top-ppt-html/assets/templates/engine.css +787 -840
- package/top-ppt-html/assets/templates/presentation.html +3685 -3738
- package/top-ppt-html/assets/templates/research.html +3964 -4017
- package/top-ppt-html/assets/templates/ui.js +520 -520
- package/top-ppt-html/assets/theme-overview-architecture.png +0 -0
- package/top-ppt-html/assets/theme-overview-presentation.png +0 -0
- package/top-ppt-html/assets/theme-overview-research.png +0 -0
- package/top-ppt-html/assets/theme-overview.png +0 -0
- package/top-ppt-html/evals/prompts.csv +15 -15
- package/top-ppt-html/evals/rubric.schema.json +25 -25
- package/top-ppt-html/evals/run_evals.py +220 -220
- package/top-ppt-html/evals/trace.example.json +16 -16
- package/top-ppt-html/package-lock.json +175 -0
- package/top-ppt-html/package.json +30 -35
- package/top-ppt-html/references/charts-basic.md +624 -624
- package/top-ppt-html/references/charts-discipline.md +108 -108
- package/top-ppt-html/references/charts-extended.md +482 -482
- package/top-ppt-html/references/charts.md +28 -28
- package/top-ppt-html/references/components-atoms.md +624 -624
- package/top-ppt-html/references/components.md +30 -30
- package/top-ppt-html/references/content-rules.md +490 -490
- package/top-ppt-html/references/design-system-engine.md +235 -235
- package/top-ppt-html/references/design-system.md +471 -478
- package/top-ppt-html/references/failure-modes.md +214 -214
- package/top-ppt-html/references/high-fidelity.md +127 -127
- package/top-ppt-html/references/icons.md +397 -397
- package/top-ppt-html/references/industry-benchmark.md +105 -105
- package/top-ppt-html/references/infographics-stats.md +308 -308
- package/top-ppt-html/references/infographics-structure.md +226 -226
- package/top-ppt-html/references/infographics.md +43 -43
- package/top-ppt-html/references/layout-grammar.md +315 -315
- package/top-ppt-html/references/layouts-architecture.md +108 -108
- package/top-ppt-html/references/layouts-combo.md +600 -600
- package/top-ppt-html/references/layouts-research.md +160 -160
- package/top-ppt-html/references/modes.md +254 -254
- package/top-ppt-html/references/outline-design.md +275 -275
- package/top-ppt-html/references/playbook.md +266 -266
- package/top-ppt-html/references/pptx-export.md +209 -209
- package/top-ppt-html/references/reform-plan.md +252 -252
- package/top-ppt-html/references/styles.md +336 -370
- package/top-ppt-html/references/tech-design.md +138 -138
- package/top-ppt-html/scripts/audit_css.py +109 -109
- package/top-ppt-html/scripts/audit_docs.py +176 -176
- package/top-ppt-html/scripts/audit_skill.py +220 -220
- package/top-ppt-html/scripts/audit_styles.py +293 -351
- package/top-ppt-html/scripts/build_examples.py +2276 -2276
- package/top-ppt-html/scripts/build_pptx.js +2380 -2380
- package/top-ppt-html/scripts/capture_theme_overview.js +78 -78
- package/top-ppt-html/scripts/checks_html.py +127 -127
- package/top-ppt-html/scripts/cross_verify.py +294 -294
- package/top-ppt-html/scripts/env_probe.py +158 -158
- package/top-ppt-html/scripts/extract_model.py +210 -210
- package/top-ppt-html/scripts/extract_snippet.py +374 -374
- package/top-ppt-html/scripts/gen_channel_a.js +214 -214
- package/top-ppt-html/scripts/layout-constants.json +3309 -3377
- package/top-ppt-html/scripts/layout_slots.json +830 -830
- package/top-ppt-html/scripts/lib_layout_regions.js +412 -412
- package/top-ppt-html/scripts/measure_height.py +178 -178
- package/top-ppt-html/scripts/model-schema.json +547 -547
- package/top-ppt-html/scripts/negative_tests.py +307 -307
- package/top-ppt-html/scripts/package_skill.py +291 -291
- package/top-ppt-html/scripts/prepare_images.py +341 -341
- package/top-ppt-html/scripts/probe_image_export.py +188 -188
- package/top-ppt-html/scripts/quality_gate.py +301 -301
- package/top-ppt-html/scripts/regression.py +307 -308
- package/top-ppt-html/scripts/render_compare.py +275 -275
- package/top-ppt-html/scripts/render_from_model.py +698 -698
- package/top-ppt-html/scripts/scaffold_report.py +1054 -1054
- package/top-ppt-html/scripts/section-file-map.json +104 -104
- package/top-ppt-html/scripts/sync_runtime.py +662 -662
- package/top-ppt-html/scripts/validate_pptx.py +1510 -1510
- package/top-ppt-html/scripts/validate_report.py +1456 -1456
package/bin/tms-skills.js
CHANGED
|
@@ -1,160 +1,160 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
/**
|
|
3
|
-
* tms-skills — TopMindspace agent skills installer
|
|
4
|
-
*
|
|
5
|
-
* Usage (GitHub is the primary install source — npm publish is optional):
|
|
6
|
-
* npx github:topmindspace/tms-skills list
|
|
7
|
-
* npx github:topmindspace/tms-skills install top-ppt-html
|
|
8
|
-
* npx github:topmindspace/tms-skills install top-ppt-html --to ./skills-out
|
|
9
|
-
* npx @topmindspace/tms-skills install top-ppt-html # only after npm publish
|
|
10
|
-
*/
|
|
11
|
-
'use strict';
|
|
12
|
-
|
|
13
|
-
const fs = require('fs');
|
|
14
|
-
const path = require('path');
|
|
15
|
-
|
|
16
|
-
const ROOT = path.resolve(__dirname, '..');
|
|
17
|
-
// Skills live at repo root (one directory per skill with SKILL.md).
|
|
18
|
-
const INFRA_DIRS = new Set(['bin', 'docs', 'scripts', 'node_modules', 'dist', 'release-assets']);
|
|
19
|
-
|
|
20
|
-
function die(msg, code = 1) {
|
|
21
|
-
console.error(msg);
|
|
22
|
-
process.exit(code);
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
function skillDir(skillId) {
|
|
26
|
-
return path.join(ROOT, skillId);
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
function listSkillIds() {
|
|
30
|
-
return fs
|
|
31
|
-
.readdirSync(ROOT, { withFileTypes: true })
|
|
32
|
-
.filter((d) => d.isDirectory() && !INFRA_DIRS.has(d.name) && !d.name.startsWith('.'))
|
|
33
|
-
.filter((d) => fs.existsSync(path.join(ROOT, d.name, 'SKILL.md')))
|
|
34
|
-
.map((d) => d.name)
|
|
35
|
-
.sort();
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
function readSkillMeta(skillId) {
|
|
39
|
-
const skillPath = skillDir(skillId);
|
|
40
|
-
const skillMd = path.join(skillPath, 'SKILL.md');
|
|
41
|
-
if (!fs.existsSync(skillMd)) return { id: skillId, description: '' };
|
|
42
|
-
const text = fs.readFileSync(skillMd, 'utf8');
|
|
43
|
-
const m = text.match(/^---\r?\n([\s\S]*?)\r?\n---/);
|
|
44
|
-
if (!m) return { id: skillId, description: '' };
|
|
45
|
-
const desc = (m[1].match(/^description:\s*"(.*)"\s*$/m) || m[1].match(/^description:\s*(.+)\s*$/m) || [])[1] || '';
|
|
46
|
-
return { id: skillId, description: String(desc).slice(0, 120) };
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
function resolveDefaultTarget() {
|
|
50
|
-
const candidates = [
|
|
51
|
-
path.join(process.cwd(), '.agents', 'skills'),
|
|
52
|
-
path.join(process.cwd(), '.claude', 'skills'),
|
|
53
|
-
path.join(process.cwd(), '.mimocode', 'skills'),
|
|
54
|
-
path.join(process.env.HOME || process.env.USERPROFILE || '', '.claude', 'skills'),
|
|
55
|
-
path.join(process.env.HOME || process.env.USERPROFILE || '', '.agents', 'skills'),
|
|
56
|
-
];
|
|
57
|
-
for (const dir of candidates) {
|
|
58
|
-
if (dir && fs.existsSync(path.dirname(dir))) {
|
|
59
|
-
return dir;
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
return path.join(process.cwd(), '.agents', 'skills');
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
function copyDir(src, dest) {
|
|
66
|
-
fs.mkdirSync(dest, { recursive: true });
|
|
67
|
-
for (const entry of fs.readdirSync(src, { withFileTypes: true })) {
|
|
68
|
-
const s = path.join(src, entry.name);
|
|
69
|
-
const d = path.join(dest, entry.name);
|
|
70
|
-
if (entry.isDirectory()) {
|
|
71
|
-
if (entry.name === 'node_modules' || entry.name === 'dist' || entry.name === '__pycache__') continue;
|
|
72
|
-
copyDir(s, d);
|
|
73
|
-
} else if (entry.isFile()) {
|
|
74
|
-
if (entry.name.endsWith('.pyc')) continue;
|
|
75
|
-
fs.copyFileSync(s, d);
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
function install(skillId, targetRoot) {
|
|
81
|
-
const src = skillDir(skillId);
|
|
82
|
-
if (!fs.existsSync(path.join(src, 'SKILL.md'))) {
|
|
83
|
-
die(`Skill not found: ${skillId}\nAvailable: ${listSkillIds().join(', ') || '(none)'}`);
|
|
84
|
-
}
|
|
85
|
-
const dest = path.join(targetRoot, skillId);
|
|
86
|
-
fs.mkdirSync(targetRoot, { recursive: true });
|
|
87
|
-
if (fs.existsSync(dest)) {
|
|
88
|
-
fs.rmSync(dest, { recursive: true, force: true });
|
|
89
|
-
}
|
|
90
|
-
copyDir(src, dest);
|
|
91
|
-
console.log(`Installed ${skillId}`);
|
|
92
|
-
console.log(` from ${src}`);
|
|
93
|
-
console.log(` to ${dest}`);
|
|
94
|
-
console.log('');
|
|
95
|
-
console.log('Optional (PPTX export only):');
|
|
96
|
-
console.log(` cd "${dest}" && npm install`);
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
function usage() {
|
|
100
|
-
console.log(`tms-skills — install TopMindspace agent skills
|
|
101
|
-
|
|
102
|
-
Usage:
|
|
103
|
-
tms-skills list
|
|
104
|
-
tms-skills install <skill-id> [--to <dir>]
|
|
105
|
-
tms-skills help
|
|
106
|
-
|
|
107
|
-
Examples:
|
|
108
|
-
npx github:topmindspace/tms-skills list
|
|
109
|
-
npx github:topmindspace/tms-skills install top-ppt-html
|
|
110
|
-
npx github:topmindspace/tms-skills install top-ppt-html --to ./.agents/skills
|
|
111
|
-
|
|
112
|
-
# Optional npm package (only after @topmindspace/tms-skills is published):
|
|
113
|
-
npx @topmindspace/tms-skills install top-ppt-html
|
|
114
|
-
`);
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
function main(argv) {
|
|
118
|
-
const args = argv.slice(2);
|
|
119
|
-
const cmd = args[0];
|
|
120
|
-
|
|
121
|
-
if (!cmd || cmd === 'help' || cmd === '--help' || cmd === '-h') {
|
|
122
|
-
usage();
|
|
123
|
-
return;
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
if (cmd === 'list' || cmd === 'ls') {
|
|
127
|
-
const ids = listSkillIds();
|
|
128
|
-
if (!ids.length) {
|
|
129
|
-
console.log('No skills found in package.');
|
|
130
|
-
return;
|
|
131
|
-
}
|
|
132
|
-
for (const id of ids) {
|
|
133
|
-
const meta = readSkillMeta(id);
|
|
134
|
-
console.log(`${id}`);
|
|
135
|
-
if (meta.description) console.log(` ${meta.description}…`);
|
|
136
|
-
}
|
|
137
|
-
return;
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
if (cmd === 'install') {
|
|
141
|
-
const skillId = args[1];
|
|
142
|
-
if (!skillId || skillId.startsWith('-')) {
|
|
143
|
-
die('Missing skill id.\n\n' + usage());
|
|
144
|
-
}
|
|
145
|
-
let to = null;
|
|
146
|
-
for (let i = 2; i < args.length; i++) {
|
|
147
|
-
if (args[i] === '--to' || args[i] === '-t') {
|
|
148
|
-
to = args[++i];
|
|
149
|
-
if (!to) die('Option --to requires a directory path.');
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
const targetRoot = to ? path.resolve(to) : resolveDefaultTarget();
|
|
153
|
-
install(skillId, targetRoot);
|
|
154
|
-
return;
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
die(`Unknown command: ${cmd}\n\n` + usage());
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
main(process.argv);
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* tms-skills — TopMindspace agent skills installer
|
|
4
|
+
*
|
|
5
|
+
* Usage (GitHub is the primary install source — npm publish is optional):
|
|
6
|
+
* npx github:topmindspace/tms-skills list
|
|
7
|
+
* npx github:topmindspace/tms-skills install top-ppt-html
|
|
8
|
+
* npx github:topmindspace/tms-skills install top-ppt-html --to ./skills-out
|
|
9
|
+
* npx @topmindspace/tms-skills install top-ppt-html # only after npm publish
|
|
10
|
+
*/
|
|
11
|
+
'use strict';
|
|
12
|
+
|
|
13
|
+
const fs = require('fs');
|
|
14
|
+
const path = require('path');
|
|
15
|
+
|
|
16
|
+
const ROOT = path.resolve(__dirname, '..');
|
|
17
|
+
// Skills live at repo root (one directory per skill with SKILL.md).
|
|
18
|
+
const INFRA_DIRS = new Set(['bin', 'docs', 'scripts', 'node_modules', 'dist', 'release-assets']);
|
|
19
|
+
|
|
20
|
+
function die(msg, code = 1) {
|
|
21
|
+
console.error(msg);
|
|
22
|
+
process.exit(code);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
function skillDir(skillId) {
|
|
26
|
+
return path.join(ROOT, skillId);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
function listSkillIds() {
|
|
30
|
+
return fs
|
|
31
|
+
.readdirSync(ROOT, { withFileTypes: true })
|
|
32
|
+
.filter((d) => d.isDirectory() && !INFRA_DIRS.has(d.name) && !d.name.startsWith('.'))
|
|
33
|
+
.filter((d) => fs.existsSync(path.join(ROOT, d.name, 'SKILL.md')))
|
|
34
|
+
.map((d) => d.name)
|
|
35
|
+
.sort();
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
function readSkillMeta(skillId) {
|
|
39
|
+
const skillPath = skillDir(skillId);
|
|
40
|
+
const skillMd = path.join(skillPath, 'SKILL.md');
|
|
41
|
+
if (!fs.existsSync(skillMd)) return { id: skillId, description: '' };
|
|
42
|
+
const text = fs.readFileSync(skillMd, 'utf8');
|
|
43
|
+
const m = text.match(/^---\r?\n([\s\S]*?)\r?\n---/);
|
|
44
|
+
if (!m) return { id: skillId, description: '' };
|
|
45
|
+
const desc = (m[1].match(/^description:\s*"(.*)"\s*$/m) || m[1].match(/^description:\s*(.+)\s*$/m) || [])[1] || '';
|
|
46
|
+
return { id: skillId, description: String(desc).slice(0, 120) };
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
function resolveDefaultTarget() {
|
|
50
|
+
const candidates = [
|
|
51
|
+
path.join(process.cwd(), '.agents', 'skills'),
|
|
52
|
+
path.join(process.cwd(), '.claude', 'skills'),
|
|
53
|
+
path.join(process.cwd(), '.mimocode', 'skills'),
|
|
54
|
+
path.join(process.env.HOME || process.env.USERPROFILE || '', '.claude', 'skills'),
|
|
55
|
+
path.join(process.env.HOME || process.env.USERPROFILE || '', '.agents', 'skills'),
|
|
56
|
+
];
|
|
57
|
+
for (const dir of candidates) {
|
|
58
|
+
if (dir && fs.existsSync(path.dirname(dir))) {
|
|
59
|
+
return dir;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return path.join(process.cwd(), '.agents', 'skills');
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
function copyDir(src, dest) {
|
|
66
|
+
fs.mkdirSync(dest, { recursive: true });
|
|
67
|
+
for (const entry of fs.readdirSync(src, { withFileTypes: true })) {
|
|
68
|
+
const s = path.join(src, entry.name);
|
|
69
|
+
const d = path.join(dest, entry.name);
|
|
70
|
+
if (entry.isDirectory()) {
|
|
71
|
+
if (entry.name === 'node_modules' || entry.name === 'dist' || entry.name === '__pycache__') continue;
|
|
72
|
+
copyDir(s, d);
|
|
73
|
+
} else if (entry.isFile()) {
|
|
74
|
+
if (entry.name.endsWith('.pyc')) continue;
|
|
75
|
+
fs.copyFileSync(s, d);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
function install(skillId, targetRoot) {
|
|
81
|
+
const src = skillDir(skillId);
|
|
82
|
+
if (!fs.existsSync(path.join(src, 'SKILL.md'))) {
|
|
83
|
+
die(`Skill not found: ${skillId}\nAvailable: ${listSkillIds().join(', ') || '(none)'}`);
|
|
84
|
+
}
|
|
85
|
+
const dest = path.join(targetRoot, skillId);
|
|
86
|
+
fs.mkdirSync(targetRoot, { recursive: true });
|
|
87
|
+
if (fs.existsSync(dest)) {
|
|
88
|
+
fs.rmSync(dest, { recursive: true, force: true });
|
|
89
|
+
}
|
|
90
|
+
copyDir(src, dest);
|
|
91
|
+
console.log(`Installed ${skillId}`);
|
|
92
|
+
console.log(` from ${src}`);
|
|
93
|
+
console.log(` to ${dest}`);
|
|
94
|
+
console.log('');
|
|
95
|
+
console.log('Optional (PPTX export only):');
|
|
96
|
+
console.log(` cd "${dest}" && npm install`);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
function usage() {
|
|
100
|
+
console.log(`tms-skills — install TopMindspace agent skills
|
|
101
|
+
|
|
102
|
+
Usage:
|
|
103
|
+
tms-skills list
|
|
104
|
+
tms-skills install <skill-id> [--to <dir>]
|
|
105
|
+
tms-skills help
|
|
106
|
+
|
|
107
|
+
Examples:
|
|
108
|
+
npx github:topmindspace/tms-skills list
|
|
109
|
+
npx github:topmindspace/tms-skills install top-ppt-html
|
|
110
|
+
npx github:topmindspace/tms-skills install top-ppt-html --to ./.agents/skills
|
|
111
|
+
|
|
112
|
+
# Optional npm package (only after @topmindspace/tms-skills is published):
|
|
113
|
+
npx @topmindspace/tms-skills install top-ppt-html
|
|
114
|
+
`);
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
function main(argv) {
|
|
118
|
+
const args = argv.slice(2);
|
|
119
|
+
const cmd = args[0];
|
|
120
|
+
|
|
121
|
+
if (!cmd || cmd === 'help' || cmd === '--help' || cmd === '-h') {
|
|
122
|
+
usage();
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
if (cmd === 'list' || cmd === 'ls') {
|
|
127
|
+
const ids = listSkillIds();
|
|
128
|
+
if (!ids.length) {
|
|
129
|
+
console.log('No skills found in package.');
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
for (const id of ids) {
|
|
133
|
+
const meta = readSkillMeta(id);
|
|
134
|
+
console.log(`${id}`);
|
|
135
|
+
if (meta.description) console.log(` ${meta.description}…`);
|
|
136
|
+
}
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
if (cmd === 'install') {
|
|
141
|
+
const skillId = args[1];
|
|
142
|
+
if (!skillId || skillId.startsWith('-')) {
|
|
143
|
+
die('Missing skill id.\n\n' + usage());
|
|
144
|
+
}
|
|
145
|
+
let to = null;
|
|
146
|
+
for (let i = 2; i < args.length; i++) {
|
|
147
|
+
if (args[i] === '--to' || args[i] === '-t') {
|
|
148
|
+
to = args[++i];
|
|
149
|
+
if (!to) die('Option --to requires a directory path.');
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
const targetRoot = to ? path.resolve(to) : resolveDefaultTarget();
|
|
153
|
+
install(skillId, targetRoot);
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
die(`Unknown command: ${cmd}\n\n` + usage());
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
main(process.argv);
|
package/package.json
CHANGED
|
@@ -1,48 +1,48 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@topmindspace/tms-skills",
|
|
3
|
-
"version": "2.0.
|
|
4
|
-
"description": "TopMindspace 智能体技能 monorepo — 通过 GitHub npx 安装技能(top-ppt-html 等)。",
|
|
5
|
-
"license": "MIT",
|
|
6
|
-
"author": "TopMindspace",
|
|
7
|
-
"repository": {
|
|
8
|
-
"type": "git",
|
|
9
|
-
"url": "git+https://github.com/topmindspace/tms-skills.git"
|
|
10
|
-
},
|
|
11
|
-
"homepage": "https://github.com/topmindspace/tms-skills#readme",
|
|
12
|
-
"bugs": {
|
|
13
|
-
"url": "https://github.com/topmindspace/tms-skills/issues"
|
|
14
|
-
},
|
|
15
|
-
"keywords": [
|
|
16
|
-
"agent-skills",
|
|
17
|
-
"ai-skills",
|
|
18
|
-
"slides",
|
|
19
|
-
"pptx",
|
|
20
|
-
"report",
|
|
21
|
-
"top-ppt-html"
|
|
22
|
-
],
|
|
23
|
-
"type": "commonjs",
|
|
24
|
-
"bin": {
|
|
25
|
-
"tms-skills": "bin/tms-skills.js"
|
|
26
|
-
},
|
|
27
|
-
"files": [
|
|
28
|
-
"bin",
|
|
29
|
-
"top-ppt-html",
|
|
30
|
-
"README.md",
|
|
31
|
-
"LICENSE",
|
|
32
|
-
"CHANGELOG.md"
|
|
33
|
-
],
|
|
34
|
-
"engines": {
|
|
35
|
-
"node": ">=18"
|
|
36
|
-
},
|
|
37
|
-
"scripts": {
|
|
38
|
-
"list": "node bin/tms-skills.js list",
|
|
39
|
-
"install:skills": "node bin/tms-skills.js install top-ppt-html",
|
|
40
|
-
"check": "python top-ppt-html/scripts/package_skill.py --check",
|
|
41
|
-
"privacy": "python scripts/ci_privacy_scan.py",
|
|
42
|
-
"audit": "python top-ppt-html/scripts/audit_styles.py && python top-ppt-html/scripts/audit_docs.py && python top-ppt-html/scripts/audit_skill.py && python top-ppt-html/scripts/audit_css.py",
|
|
43
|
-
"package:skill": "python top-ppt-html/scripts/package_skill.py"
|
|
44
|
-
},
|
|
45
|
-
"publishConfig": {
|
|
46
|
-
"access": "public"
|
|
47
|
-
}
|
|
48
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "@topmindspace/tms-skills",
|
|
3
|
+
"version": "2.0.2",
|
|
4
|
+
"description": "TopMindspace 智能体技能 monorepo — 通过 GitHub npx 安装技能(top-ppt-html 等)。",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"author": "TopMindspace",
|
|
7
|
+
"repository": {
|
|
8
|
+
"type": "git",
|
|
9
|
+
"url": "git+https://github.com/topmindspace/tms-skills.git"
|
|
10
|
+
},
|
|
11
|
+
"homepage": "https://github.com/topmindspace/tms-skills#readme",
|
|
12
|
+
"bugs": {
|
|
13
|
+
"url": "https://github.com/topmindspace/tms-skills/issues"
|
|
14
|
+
},
|
|
15
|
+
"keywords": [
|
|
16
|
+
"agent-skills",
|
|
17
|
+
"ai-skills",
|
|
18
|
+
"slides",
|
|
19
|
+
"pptx",
|
|
20
|
+
"report",
|
|
21
|
+
"top-ppt-html"
|
|
22
|
+
],
|
|
23
|
+
"type": "commonjs",
|
|
24
|
+
"bin": {
|
|
25
|
+
"tms-skills": "bin/tms-skills.js"
|
|
26
|
+
},
|
|
27
|
+
"files": [
|
|
28
|
+
"bin",
|
|
29
|
+
"top-ppt-html",
|
|
30
|
+
"README.md",
|
|
31
|
+
"LICENSE",
|
|
32
|
+
"CHANGELOG.md"
|
|
33
|
+
],
|
|
34
|
+
"engines": {
|
|
35
|
+
"node": ">=18"
|
|
36
|
+
},
|
|
37
|
+
"scripts": {
|
|
38
|
+
"list": "node bin/tms-skills.js list",
|
|
39
|
+
"install:skills": "node bin/tms-skills.js install top-ppt-html",
|
|
40
|
+
"check": "python top-ppt-html/scripts/package_skill.py --check",
|
|
41
|
+
"privacy": "python scripts/ci_privacy_scan.py",
|
|
42
|
+
"audit": "python top-ppt-html/scripts/audit_styles.py && python top-ppt-html/scripts/audit_docs.py && python top-ppt-html/scripts/audit_skill.py && python top-ppt-html/scripts/audit_css.py",
|
|
43
|
+
"package:skill": "python top-ppt-html/scripts/package_skill.py"
|
|
44
|
+
},
|
|
45
|
+
"publishConfig": {
|
|
46
|
+
"access": "public"
|
|
47
|
+
}
|
|
48
|
+
}
|