@fprad0/skill-master-mcp 0.0.2 → 0.0.3
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 +6 -0
- package/README.md +51 -23
- package/VERSION.md +2 -2
- package/bin/skill-master-menu.mjs +170 -0
- package/manifests/channels/beta.json +5 -5
- package/manifests/channels/stable.json +6 -6
- package/package.json +2 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,12 @@ All notable changes to `skill_master` will be tracked here.
|
|
|
7
7
|
- Prepare a public npm publication path with dedicated workflow and operator guide.
|
|
8
8
|
- Upgrade release automation from Node `20` to Node `22`.
|
|
9
9
|
|
|
10
|
+
## [0.0.3] - 2026-06-26
|
|
11
|
+
|
|
12
|
+
- Add `skill-master-menu` as a human-facing CLI for local status, checks, build, public npm validation, and private registry setup.
|
|
13
|
+
- Keep `skill-master-mcp` reserved for MCP clients over `stdio`.
|
|
14
|
+
- Document public npm install state and global commands.
|
|
15
|
+
|
|
10
16
|
## [0.0.2] - 2026-06-25
|
|
11
17
|
|
|
12
18
|
- Add private-registry setup helpers for Windows, Linux, and Node-based package flows.
|
package/README.md
CHANGED
|
@@ -10,14 +10,15 @@ Criar um MCP capaz de catalogar skills locais e remotas, recomendar as melhores
|
|
|
10
10
|
|
|
11
11
|
## Decisao da versao 00.02
|
|
12
12
|
|
|
13
|
-
A versao `00.02` consolida
|
|
13
|
+
A versao `00.02` consolida:
|
|
14
14
|
|
|
15
|
-
-
|
|
15
|
+
- distribuicao publica por `npmjs.org`
|
|
16
|
+
- distribuicao privada por GitHub Packages
|
|
16
17
|
- manifesto remoto de versao e canal
|
|
17
18
|
- launcher local com verificacao de atualizacao
|
|
18
19
|
- atualizacao por `git pull --ff-only` quando o diretorio estiver limpo
|
|
19
20
|
- fallback seguro quando houver alteracoes locais
|
|
20
|
-
- arquitetura preparada para
|
|
21
|
+
- arquitetura preparada para MCP remoto no futuro
|
|
21
22
|
|
|
22
23
|
## Compatibilidade atual
|
|
23
24
|
|
|
@@ -25,32 +26,38 @@ O projeto agora possui fluxo operacional para:
|
|
|
25
26
|
|
|
26
27
|
- Windows: `scripts/install-skill-master.ps1`, `scripts/update-skill-master.ps1`, `scripts/skill-master-launcher.ps1`
|
|
27
28
|
- Linux: `scripts/install-skill-master.sh`, `scripts/update-skill-master.sh`, `scripts/skill-master-launcher.sh`
|
|
28
|
-
-
|
|
29
|
+
- clientes AI: Codex, Claude Desktop, Claude Code, Gemini CLI, Gemini Code Assist e clientes MCP genericos via stdio
|
|
29
30
|
|
|
30
|
-
Requisitos praticos
|
|
31
|
+
Requisitos praticos:
|
|
31
32
|
|
|
32
|
-
- `git`
|
|
33
|
+
- `git` para o modo clone + launcher
|
|
33
34
|
- `node` `18+`
|
|
34
35
|
- `npm`
|
|
35
|
-
- acesso ao repositorio GitHub configurado
|
|
36
|
+
- acesso ao repositorio GitHub configurado no fluxo privado
|
|
36
37
|
|
|
37
38
|
## Instalacao rapida
|
|
38
39
|
|
|
39
40
|
### Windows
|
|
40
41
|
|
|
41
42
|
```powershell
|
|
42
|
-
|
|
43
|
+
npm install -g @fprad0/skill-master-mcp
|
|
43
44
|
```
|
|
44
45
|
|
|
45
|
-
### Linux
|
|
46
|
+
### Linux / macOS
|
|
46
47
|
|
|
47
48
|
```bash
|
|
48
|
-
|
|
49
|
+
npm install -g @fprad0/skill-master-mcp
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
Se a ideia for apenas testar sem install global:
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
npx -y @fprad0/skill-master-mcp@latest
|
|
49
56
|
```
|
|
50
57
|
|
|
51
58
|
## Instalacao via pacote privado
|
|
52
59
|
|
|
53
|
-
O projeto
|
|
60
|
+
O projeto tambem pode ser distribuido como pacote privado via GitHub Packages.
|
|
54
61
|
|
|
55
62
|
Nome do pacote:
|
|
56
63
|
|
|
@@ -64,7 +71,7 @@ Fluxo resumido:
|
|
|
64
71
|
2. configurar o cliente MCP para executar `npx -y @fprad0/skill-master-mcp@latest`;
|
|
65
72
|
3. reiniciar o cliente.
|
|
66
73
|
|
|
67
|
-
|
|
74
|
+
Atalhos operacionais:
|
|
68
75
|
|
|
69
76
|
- Windows: `powershell -ExecutionPolicy Bypass -File .\scripts\configure-private-registry.ps1 -Validate`
|
|
70
77
|
- Linux: `bash ./scripts/configure-private-registry.sh --validate`
|
|
@@ -87,17 +94,38 @@ Leia:
|
|
|
87
94
|
|
|
88
95
|
## Instalacao via npm publico
|
|
89
96
|
|
|
90
|
-
O
|
|
97
|
+
O pacote publico ja esta disponivel em `npmjs.org`.
|
|
98
|
+
|
|
99
|
+
Comandos principais:
|
|
91
100
|
|
|
92
101
|
```bash
|
|
93
102
|
npm install -g @fprad0/skill-master-mcp
|
|
94
103
|
```
|
|
95
104
|
|
|
96
|
-
|
|
105
|
+
```bash
|
|
106
|
+
npx -y @fprad0/skill-master-mcp@latest
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
Estado atual validado em `2026-06-26`:
|
|
110
|
+
|
|
111
|
+
- pacote publico publicado: `@fprad0/skill-master-mcp@0.0.2`
|
|
112
|
+
- dist-tag `latest` apontando para `0.0.2`
|
|
113
|
+
- workflow `Publish Skill Master to npmjs` concluido com sucesso
|
|
114
|
+
- `npm install` e `npx` confirmados
|
|
115
|
+
|
|
116
|
+
O pacote `0.0.3` adiciona o menu operacional. Depois da publicacao dessa versao, os comandos globais principais ficam:
|
|
97
117
|
|
|
98
|
-
|
|
99
|
-
-
|
|
100
|
-
-
|
|
118
|
+
```bash
|
|
119
|
+
skill-master-mcp
|
|
120
|
+
skill-master-menu
|
|
121
|
+
skill-master-configure-private-registry
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
O `skill-master-mcp` deve continuar reservado para clientes MCP via `stdio`. Para operacao humana, status local e checks, use:
|
|
125
|
+
|
|
126
|
+
```bash
|
|
127
|
+
skill-master-menu
|
|
128
|
+
```
|
|
101
129
|
|
|
102
130
|
Leia:
|
|
103
131
|
|
|
@@ -118,7 +146,7 @@ Os dois caminhos configuram:
|
|
|
118
146
|
|
|
119
147
|
## Compatibilidade com Claude e Gemini
|
|
120
148
|
|
|
121
|
-
A versao `00.02` documenta compatibilidade operacional
|
|
149
|
+
A versao `00.02` documenta compatibilidade operacional ja preparada para:
|
|
122
150
|
|
|
123
151
|
- Claude Desktop
|
|
124
152
|
- Claude Code
|
|
@@ -136,11 +164,11 @@ Leia:
|
|
|
136
164
|
|
|
137
165
|
O `skill_master` pode aprender com as skills ja existentes em cada maquina instalada, mas o compartilhamento entre computadores segue um fluxo seguro:
|
|
138
166
|
|
|
139
|
-
- catalogo local automatico
|
|
140
|
-
- deduplicacao por nome e hash
|
|
141
|
-
- pacote local de contribuicao
|
|
142
|
-
- revisao de risco e privacidade
|
|
143
|
-
- aprovacao humana antes de qualquer distribuicao
|
|
167
|
+
- catalogo local automatico
|
|
168
|
+
- deduplicacao por nome e hash
|
|
169
|
+
- pacote local de contribuicao
|
|
170
|
+
- revisao de risco e privacidade
|
|
171
|
+
- aprovacao humana antes de qualquer distribuicao
|
|
144
172
|
|
|
145
173
|
Ferramentas MCP principais:
|
|
146
174
|
|
package/VERSION.md
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
Versão funcional planejada: `00.02`
|
|
4
4
|
|
|
5
|
-
Versão técnica para empacotamento semântico: `0.0.
|
|
5
|
+
Versão técnica para empacotamento semântico: `0.0.3`
|
|
6
6
|
|
|
7
7
|
## Observação
|
|
8
8
|
|
|
9
|
-
O nome `00.02` será usado na comunicação e nos documentos. Para ferramentas que exigem SemVer, como npm e alguns fluxos de release, usar `0.0.
|
|
9
|
+
O nome `00.02` será usado na comunicação e nos documentos. Para ferramentas que exigem SemVer, como npm e alguns fluxos de release, usar `0.0.3`.
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
import { spawn } from 'node:child_process';
|
|
4
|
+
import { existsSync, readFileSync } from 'node:fs';
|
|
5
|
+
import { dirname, join } from 'node:path';
|
|
6
|
+
import { fileURLToPath } from 'node:url';
|
|
7
|
+
import { createInterface } from 'node:readline/promises';
|
|
8
|
+
import { stdin as input, stdout as output } from 'node:process';
|
|
9
|
+
|
|
10
|
+
const rootDir = dirname(dirname(fileURLToPath(import.meta.url)));
|
|
11
|
+
|
|
12
|
+
const commands = {
|
|
13
|
+
status: {
|
|
14
|
+
label: 'Mostrar status local',
|
|
15
|
+
command: process.execPath,
|
|
16
|
+
args: [fileURLToPath(import.meta.url), '--status'],
|
|
17
|
+
},
|
|
18
|
+
check: {
|
|
19
|
+
label: 'Rodar gate completo',
|
|
20
|
+
command: 'npm',
|
|
21
|
+
args: ['run', 'check'],
|
|
22
|
+
},
|
|
23
|
+
build: {
|
|
24
|
+
label: 'Rodar build',
|
|
25
|
+
command: 'npm',
|
|
26
|
+
args: ['run', 'build'],
|
|
27
|
+
},
|
|
28
|
+
publicNpm: {
|
|
29
|
+
label: 'Validar pacote no npm publico',
|
|
30
|
+
command: 'npm',
|
|
31
|
+
args: [
|
|
32
|
+
'view',
|
|
33
|
+
'@fprad0/skill-master-mcp',
|
|
34
|
+
'version',
|
|
35
|
+
'--registry=https://registry.npmjs.org',
|
|
36
|
+
],
|
|
37
|
+
},
|
|
38
|
+
privateRegistry: {
|
|
39
|
+
label: 'Configurar registry privado GitHub Packages',
|
|
40
|
+
command: process.execPath,
|
|
41
|
+
args: ['scripts/configure-private-registry.mjs', '--validate'],
|
|
42
|
+
},
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
const menuItems = [
|
|
46
|
+
['1', commands.status],
|
|
47
|
+
['2', commands.check],
|
|
48
|
+
['3', commands.build],
|
|
49
|
+
['4', commands.publicNpm],
|
|
50
|
+
['5', commands.privateRegistry],
|
|
51
|
+
];
|
|
52
|
+
|
|
53
|
+
function readJson(relativePath) {
|
|
54
|
+
const target = join(rootDir, relativePath);
|
|
55
|
+
if (!existsSync(target)) {
|
|
56
|
+
return null;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
return JSON.parse(readFileSync(target, 'utf8'));
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
function readText(relativePath) {
|
|
63
|
+
const target = join(rootDir, relativePath);
|
|
64
|
+
if (!existsSync(target)) {
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
return readFileSync(target, 'utf8').trim();
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
function printHelp() {
|
|
72
|
+
console.log(`Skill Master Menu
|
|
73
|
+
|
|
74
|
+
Uso:
|
|
75
|
+
skill-master-menu
|
|
76
|
+
skill-master-menu --status
|
|
77
|
+
skill-master-menu --help
|
|
78
|
+
|
|
79
|
+
O comando de menu e voltado para operacao humana. O binario MCP stdio continua sendo:
|
|
80
|
+
skill-master-mcp
|
|
81
|
+
`);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
function printStatus() {
|
|
85
|
+
const packageJson = readJson('package.json');
|
|
86
|
+
const stableManifest = readJson('manifests/channels/stable.json');
|
|
87
|
+
const versionText = readText('VERSION.md');
|
|
88
|
+
|
|
89
|
+
console.log('Skill Master MCP - status local');
|
|
90
|
+
console.log(`Diretorio: ${rootDir}`);
|
|
91
|
+
console.log(`Pacote: ${packageJson?.name ?? 'nao encontrado'}`);
|
|
92
|
+
console.log(`Semver local: ${packageJson?.version ?? 'nao encontrado'}`);
|
|
93
|
+
console.log(`Manifesto stable: ${stableManifest?.version ?? 'nao encontrado'}`);
|
|
94
|
+
console.log(`Manifesto semver: ${stableManifest?.semver ?? 'nao encontrado'}`);
|
|
95
|
+
|
|
96
|
+
if (versionText) {
|
|
97
|
+
const firstLines = versionText.split('\n').slice(0, 6).join('\n');
|
|
98
|
+
console.log('\nVERSION.md:');
|
|
99
|
+
console.log(firstLines);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
function runCommand(commandConfig) {
|
|
104
|
+
return new Promise((resolve) => {
|
|
105
|
+
console.log(`\n> ${commandConfig.command} ${commandConfig.args.join(' ')}\n`);
|
|
106
|
+
|
|
107
|
+
const child = spawn(commandConfig.command, commandConfig.args, {
|
|
108
|
+
cwd: rootDir,
|
|
109
|
+
env: process.env,
|
|
110
|
+
shell: process.platform === 'win32',
|
|
111
|
+
stdio: 'inherit',
|
|
112
|
+
});
|
|
113
|
+
|
|
114
|
+
child.on('close', (code) => {
|
|
115
|
+
resolve(code ?? 1);
|
|
116
|
+
});
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
async function runInteractiveMenu() {
|
|
121
|
+
const rl = createInterface({ input, output });
|
|
122
|
+
|
|
123
|
+
try {
|
|
124
|
+
while (true) {
|
|
125
|
+
console.log('\nSkill Master Menu');
|
|
126
|
+
for (const [key, item] of menuItems) {
|
|
127
|
+
console.log(` ${key}. ${item.label}`);
|
|
128
|
+
}
|
|
129
|
+
console.log(' 0. Sair');
|
|
130
|
+
|
|
131
|
+
const answer = (await rl.question('\nEscolha uma opcao: ')).trim();
|
|
132
|
+
|
|
133
|
+
if (answer === '0' || answer.toLowerCase() === 'q') {
|
|
134
|
+
return 0;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
const selected = menuItems.find(([key]) => key === answer)?.[1];
|
|
138
|
+
if (!selected) {
|
|
139
|
+
console.log('Opcao invalida.');
|
|
140
|
+
continue;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
const code = await runCommand(selected);
|
|
144
|
+
if (code !== 0) {
|
|
145
|
+
console.log(`\nComando terminou com codigo ${code}.`);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
} finally {
|
|
149
|
+
rl.close();
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
async function main() {
|
|
154
|
+
const args = process.argv.slice(2);
|
|
155
|
+
|
|
156
|
+
if (args.includes('--help') || args.includes('-h')) {
|
|
157
|
+
printHelp();
|
|
158
|
+
return 0;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
if (args.includes('--status')) {
|
|
162
|
+
printStatus();
|
|
163
|
+
return 0;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
return runInteractiveMenu();
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
const exitCode = await main();
|
|
170
|
+
process.exitCode = exitCode;
|
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
"name": "skill_master",
|
|
3
3
|
"channel": "beta",
|
|
4
4
|
"version": "00.02-beta",
|
|
5
|
-
"semver": "0.0.
|
|
6
|
-
"publishedAt": "2026-06-
|
|
5
|
+
"semver": "0.0.3",
|
|
6
|
+
"publishedAt": "2026-06-26T13:05:00-03:00",
|
|
7
7
|
"git": {
|
|
8
8
|
"repo": "https://github.com/FPrad0/skill-master-mcp",
|
|
9
9
|
"branch": "main",
|
|
10
|
-
"commit": "
|
|
10
|
+
"commit": "933b9fe"
|
|
11
11
|
},
|
|
12
12
|
"node": {
|
|
13
13
|
"minimum": "18.0.0"
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"buildCommand": "npm run build"
|
|
20
20
|
},
|
|
21
21
|
"changelog": [
|
|
22
|
-
"Canal beta acompanha
|
|
23
|
-
"
|
|
22
|
+
"Canal beta acompanha o novo binario skill-master-menu.",
|
|
23
|
+
"Menu operacional permite status, checks, build e validacoes npm sem afetar o servidor MCP stdio."
|
|
24
24
|
]
|
|
25
25
|
}
|
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
"name": "skill_master",
|
|
3
3
|
"channel": "stable",
|
|
4
4
|
"version": "00.02",
|
|
5
|
-
"semver": "0.0.
|
|
6
|
-
"publishedAt": "2026-06-
|
|
5
|
+
"semver": "0.0.3",
|
|
6
|
+
"publishedAt": "2026-06-26T13:05:00-03:00",
|
|
7
7
|
"git": {
|
|
8
8
|
"repo": "https://github.com/FPrad0/skill-master-mcp",
|
|
9
9
|
"branch": "main",
|
|
10
|
-
"commit": "
|
|
10
|
+
"commit": "933b9fe"
|
|
11
11
|
},
|
|
12
12
|
"node": {
|
|
13
13
|
"minimum": "18.0.0"
|
|
@@ -19,8 +19,8 @@
|
|
|
19
19
|
"buildCommand": "npm run build"
|
|
20
20
|
},
|
|
21
21
|
"changelog": [
|
|
22
|
-
"
|
|
23
|
-
"
|
|
24
|
-
"
|
|
22
|
+
"Novo binario skill-master-menu para operacao humana local.",
|
|
23
|
+
"Binario skill-master-mcp permanece reservado para clientes MCP via stdio.",
|
|
24
|
+
"README passa a documentar instalacao publica e comandos globais."
|
|
25
25
|
]
|
|
26
26
|
}
|
package/package.json
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fprad0/skill-master-mcp",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.3",
|
|
4
4
|
"private": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"description": "Personal MCP server that catalogs, recommends and reports skills with update-aware metadata.",
|
|
7
7
|
"main": "dist/index.js",
|
|
8
8
|
"bin": {
|
|
9
9
|
"skill-master-configure-private-registry": "./bin/skill-master-configure-private-registry.mjs",
|
|
10
|
+
"skill-master-menu": "./bin/skill-master-menu.mjs",
|
|
10
11
|
"skill-master-mcp": "./bin/skill-master.mjs"
|
|
11
12
|
},
|
|
12
13
|
"files": [
|