@fprad0/skill-master-mcp 0.0.11 → 0.0.12

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 (65) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/README.md +32 -3
  3. package/VERSION.md +3 -3
  4. package/bin/lib/client-config.mjs +25 -0
  5. package/bin/lib/menu-core.mjs +469 -101
  6. package/bin/lib/skill-installation.mjs +215 -0
  7. package/bin/skill-master-doctor.mjs +51 -4
  8. package/bin/skill-master-install-global-skills.mjs +3 -41
  9. package/bin/skill-master-install-project-skills.mjs +97 -0
  10. package/bin/skill-master-menu.mjs +91 -6
  11. package/bin/skill-master-register-clients.mjs +58 -3
  12. package/docs/operations/GUIA_MULTI_COMPUTADOR.md +8 -1
  13. package/docs/operations/MENU_VISUAL_EVIDENCE_2026-06-28.md +66 -0
  14. package/docs/operations/assets/menu-frame-compact.html +76 -0
  15. package/docs/operations/assets/menu-frame-compact.png +0 -0
  16. package/docs/operations/assets/menu-frame-large.html +84 -0
  17. package/docs/operations/assets/menu-frame-large.png +0 -0
  18. package/docs/operations/assets/menu-frame-running.html +80 -0
  19. package/docs/operations/assets/menu-frame-running.png +0 -0
  20. package/docs/operations/cross-platform-auth-transfer/ANALISE_COMPATIBILIDADE_MCP_2026-06-28.md +140 -0
  21. package/docs/operations/cross-platform-auth-transfer/README_TRANSFERENCIA.md +85 -0
  22. package/docs/operations/reborn-menu-cyberpunk-transfer/ANALISE_MENU_REBORN_CYBERPUNK_2026-06-28.md +174 -0
  23. package/docs/operations/reborn-menu-cyberpunk-transfer/HANDOFF_IMPLEMENTACAO_REBORN_CYBERPUNK_2026-06-28.md +119 -0
  24. package/docs/operations/reborn-menu-cyberpunk-transfer/ORDEM_DE_EXECUCAO_MENU_REBORN_CYBERPUNK.md +134 -0
  25. package/docs/operations/reborn-menu-cyberpunk-transfer/README_TRANSFERENCIA.md +84 -0
  26. package/docs/operations/reborn-menu-cyberpunk-transfer/README_TRANSFERENCIA_REBORN_PACKAGE.md +56 -0
  27. package/docs/operations/reborn-menu-cyberpunk-transfer/references/cyan-hud-frame-sheet.jpg +0 -0
  28. package/docs/operations/reborn-menu-cyberpunk-transfer/references/cyberpunk-pattern-sheet.jpg +0 -0
  29. package/docs/operations/reborn-menu-cyberpunk-transfer/references/fluid-workflow-windows.gif +0 -0
  30. package/docs/prompt-tasks/PROMPT_TASK_001_BOOTSTRAP_SKILL_MASTER_MCP.md +6 -0
  31. package/docs/prompt-tasks/PROMPT_TASK_002_AUTO_UPDATE_LAUNCHER.md +6 -0
  32. package/docs/prompt-tasks/PROMPT_TASK_003_REMOTE_MANIFEST_AND_RELEASES.md +6 -0
  33. package/docs/prompt-tasks/PROMPT_TASK_004_MULTI_USER_DISTRIBUTION.md +6 -0
  34. package/docs/prompt-tasks/PROMPT_TASK_005_SECURITY_AND_QUALITY_GATE.md +6 -0
  35. package/docs/prompt-tasks/PROMPT_TASK_006_MASTER_ACIONAMENTO_APRENDIZADO.md +83 -0
  36. package/docs/prompt-tasks/PROMPT_TASK_007_PERSONA_ORQUESTRADORA.md +88 -0
  37. package/docs/prompt-tasks/PROMPT_TASK_008_PROMPT_ROUTER_MODOS_ATIVACAO.md +156 -0
  38. package/docs/prompt-tasks/PROMPT_TASK_009_PIPELINE_APRENDIZADO_SUCESSO.md +105 -0
  39. package/docs/prompt-tasks/PROMPT_TASK_010_EVALS_GOVERNANCA_ATIVACAO.md +119 -0
  40. package/docs/prompt-tasks/PROMPT_TASK_011_MENU_NOTIFICACOES_NOTION.md +120 -0
  41. package/docs/prompt-tasks/PROMPT_TASK_012_MENU_CYBERPUNK_PIXEL_FRAME.md +123 -0
  42. package/docs/prompt-tasks/PROMPT_TASK_013_MENU_FLUID_DNA_ANIMATION.md +114 -0
  43. package/docs/prompt-tasks/PROMPT_TASK_014_MENU_FUNCTIONAL_PARITY_QA.md +157 -0
  44. package/docs/prompt-tasks/PROMPT_TASK_015_TRANSFER_RELEASE_HANDOFF.md +127 -0
  45. package/docs/prompt-tasks/PROMPT_TASK_016_CROSS_PLATFORM_MCP_AUTH_REGISTRATION.md +107 -0
  46. package/docs/prompt-tasks/PROMPT_TASK_018_NPM_PUBLISH_2FA_SETUP.md +80 -0
  47. package/docs/prompt-tasks/PROMPT_TASK_MASTER_EXECUTOR.md +6 -0
  48. package/docs/skill-candidates/v0.0.12/csharp-senior-master-engineering/SKILL.md +32 -0
  49. package/docs/skill-candidates/v0.0.12/css-senior-master-engineering/SKILL.md +32 -0
  50. package/docs/skill-candidates/v0.0.12/go-senior-master-engineering/SKILL.md +32 -0
  51. package/docs/skill-candidates/v0.0.12/html-senior-master-engineering/SKILL.md +32 -0
  52. package/docs/skill-candidates/v0.0.12/javascript-senior-master-engineering/SKILL.md +32 -0
  53. package/docs/skill-candidates/v0.0.12/json-senior-master-engineering/SKILL.md +32 -0
  54. package/docs/skill-candidates/v0.0.12/python-senior-master-engineering/SKILL.md +32 -0
  55. package/docs/skill-candidates/v0.0.12/react-senior-master-engineering/SKILL.md +32 -0
  56. package/docs/skill-candidates/v0.0.12/ruby-senior-master-engineering/SKILL.md +32 -0
  57. package/docs/skill-candidates/v0.0.12/senior-master-code-optimizer/SKILL.md +48 -0
  58. package/docs/skill-candidates/v0.0.12/sql-senior-master-engineering/SKILL.md +31 -0
  59. package/docs/skill-candidates/v0.0.12/typescript-senior-master-engineering/SKILL.md +35 -0
  60. package/examples/client-configs/claude-code.commands.md +11 -7
  61. package/manifests/channels/beta.json +6 -6
  62. package/manifests/channels/stable.json +8 -8
  63. package/package.json +9 -1
  64. package/scripts/render-menu-evidence.mjs +130 -0
  65. package/scripts/verify-menu-actions.mjs +2 -0
@@ -1,14 +1,17 @@
1
1
  #!/usr/bin/env node
2
+ import { spawnSync } from 'node:child_process';
2
3
  import { mkdirSync, writeFileSync } from 'node:fs';
3
4
  import os from 'node:os';
4
5
  import path, { dirname } from 'node:path';
5
6
  import { fileURLToPath } from 'node:url';
6
7
  import {
7
8
  appendCodexServer,
9
+ buildClaudeCodeAddArgs,
8
10
  buildCodexBlock,
9
11
  buildJsonMcpSnippet,
10
12
  buildSkillMasterServerConfig,
11
13
  defaultClientConfigPaths,
14
+ formatShellCommand,
12
15
  mergeMcpServer,
13
16
  writeJson,
14
17
  } from './lib/client-config.mjs';
@@ -30,14 +33,18 @@ Uso:
30
33
  skill-master-register-clients --write-snippets
31
34
  skill-master-register-clients --apply-codex
32
35
  skill-master-register-clients --apply-claude
36
+ skill-master-register-clients --apply-claude-code
33
37
  skill-master-register-clients --apply-gemini
34
38
  skill-master-register-clients --apply-antigravity
35
39
  skill-master-register-clients --apply-all
36
40
  skill-master-register-clients --apply-codex --force
41
+ skill-master-register-clients --apply-claude-code --claude-code-scope user
37
42
 
38
43
  Registra o servidor MCP skill_master como stdio usando Node absoluto e o
39
44
  entrypoint absoluto do pacote. Isso evita falhas de PATH em Windows, Linux,
40
45
  macOS e apps desktop que nao herdam o terminal.
46
+
47
+ Para Claude Code, o registrador usa o CLI oficial: claude mcp add.
41
48
  `);
42
49
  process.exit(0);
43
50
  }
@@ -48,22 +55,63 @@ const codexConfig = readValue('--codex-config', clientPaths.codex);
48
55
  const claudeConfig = readValue('--claude-config', clientPaths.claude);
49
56
  const geminiConfig = readValue('--gemini-config', clientPaths.gemini);
50
57
  const antigravityConfig = readValue('--antigravity-config', clientPaths.antigravity);
58
+ const claudeCodeScope = readValue('--claude-code-scope', 'user');
59
+ const claudeCodeCommand = readValue('--claude-code-command', 'claude');
51
60
 
52
61
  const applyAll = has('--apply-all');
53
62
  const applyCodex = applyAll || has('--apply-codex');
54
63
  const applyClaude = applyAll || has('--apply-claude');
64
+ const applyClaudeCode = applyAll || has('--apply-claude-code');
55
65
  const applyGemini = applyAll || has('--apply-gemini');
56
66
  const applyAntigravity = applyAll || has('--apply-antigravity');
57
- const writeSnippets = applyAll || has('--write-snippets') || !(applyCodex || applyClaude || applyGemini || applyAntigravity);
67
+ const writeSnippets = applyAll || has('--write-snippets') || !(applyCodex || applyClaude || applyClaudeCode || applyGemini || applyAntigravity);
58
68
  const force = has('--force');
59
69
  const serverConfig = buildSkillMasterServerConfig({ rootDir });
60
70
  const codexBlock = buildCodexBlock(serverConfig);
61
71
  const jsonSnippet = buildJsonMcpSnippet(serverConfig);
72
+ const claudeCodeArgs = buildClaudeCodeAddArgs(serverConfig, { scope: claudeCodeScope });
73
+
74
+ function commandExists(command) {
75
+ const lookup = process.platform === 'win32' ? 'where' : 'command';
76
+ const lookupArgs = process.platform === 'win32' ? [command] : ['-v', command];
77
+ const result = spawnSync(lookup, lookupArgs, { shell: process.platform !== 'win32', stdio: 'ignore' });
78
+ return result.status === 0;
79
+ }
80
+
81
+ function runClaudeCodeRegistration() {
82
+ if (!commandExists(claudeCodeCommand)) {
83
+ return {
84
+ ok: false,
85
+ skipped: true,
86
+ message: `Claude Code CLI '${claudeCodeCommand}' not found; run manually: ${formatShellCommand(claudeCodeCommand, claudeCodeArgs)}`,
87
+ };
88
+ }
89
+
90
+ const result = spawnSync(claudeCodeCommand, claudeCodeArgs, {
91
+ encoding: 'utf8',
92
+ stdio: ['ignore', 'pipe', 'pipe'],
93
+ });
94
+ const output = `${result.stdout ?? ''}${result.stderr ?? ''}`.trim();
95
+
96
+ return {
97
+ ok: result.status === 0,
98
+ skipped: false,
99
+ message: result.status === 0
100
+ ? `Claude Code registered via ${formatShellCommand(claudeCodeCommand, claudeCodeArgs)}`
101
+ : `Claude Code registration failed (${result.status ?? 'unknown'}): ${output || 'no output'}`,
102
+ };
103
+ }
62
104
 
63
105
  const writeSnippetsFiles = () => {
64
106
  mkdirSync(snippetsDir, { recursive: true });
65
107
  writeFileSync(path.join(snippetsDir, 'codex.config.toml'), codexBlock.trimStart(), 'utf8');
66
108
  writeJson(path.join(snippetsDir, 'claude_desktop_config.skill_master.json'), jsonSnippet);
109
+ writeFileSync(
110
+ path.join(snippetsDir, 'claude-code.commands.md'),
111
+ `# Claude Code - registrar skill_master\n\n\`\`\`bash\n${formatShellCommand(claudeCodeCommand, claudeCodeArgs)}\n\`\`\`\n\nDepois reinicie a sessao do Claude Code e valide com:\n\n\`\`\`bash\nclaude mcp list\n\`\`\`\n`,
112
+ 'utf8',
113
+ );
114
+ writeJson(path.join(snippetsDir, 'claude-code.project.mcp.json'), jsonSnippet);
67
115
  writeJson(path.join(snippetsDir, 'gemini.settings.skill_master.json'), jsonSnippet);
68
116
  writeJson(path.join(snippetsDir, 'antigravity.mcp_config.skill_master.json'), jsonSnippet);
69
117
  };
@@ -78,7 +126,14 @@ if (applyCodex) {
78
126
  }
79
127
  if (applyClaude) {
80
128
  mergeMcpServer(claudeConfig, serverConfig, { recoverInvalidJson: force });
81
- actions.push(`Claude config merged at ${claudeConfig}`);
129
+ actions.push(`Claude Desktop config merged at ${claudeConfig}`);
130
+ }
131
+ if (applyClaudeCode) {
132
+ const result = runClaudeCodeRegistration();
133
+ actions.push(result.message);
134
+ if (!result.ok && !result.skipped) {
135
+ process.exitCode = 1;
136
+ }
82
137
  }
83
138
  if (applyGemini) {
84
139
  mergeMcpServer(geminiConfig, serverConfig, { recoverInvalidJson: force });
@@ -95,4 +150,4 @@ console.log(`- Args: ${serverConfig.args.join(' ')}`);
95
150
  for (const action of actions) {
96
151
  console.log(`- ${action}`);
97
152
  }
98
- console.log('- Restart Codex, Claude, Gemini or Antigravity after registration.');
153
+ console.log('- Restart Codex, Claude Desktop, Claude Code, Gemini or Antigravity after registration.');
@@ -57,7 +57,7 @@ skill-master-menu --run doctor
57
57
  skill-master-menu --run bootstrap-global --yes
58
58
  ```
59
59
 
60
- O bootstrap registra Codex, Claude Desktop, Gemini CLI e Antigravity. Depois, reinicie os clientes.
60
+ O bootstrap registra Codex, Claude Desktop, Claude Code, Gemini CLI e Antigravity quando os clientes locais estiverem disponiveis. Depois, reinicie os clientes.
61
61
 
62
62
  ## 3. Instalacao em um novo computador
63
63
 
@@ -155,6 +155,13 @@ skill-master-register-clients --apply-all --force
155
155
  skill-master-menu --run doctor
156
156
  ```
157
157
 
158
+ Para corrigir apenas o Claude Code depois de `npm install -g @fprad0/skill-master-mcp`, use:
159
+
160
+ ```bash
161
+ skill-master-register-clients --apply-claude-code --claude-code-scope user
162
+ claude mcp list
163
+ ```
164
+
158
165
  No modelo clone + launcher, o cliente deve chamar o launcher, nao o `dist/index.js` diretamente.
159
166
 
160
167
  Exemplo conceitual:
@@ -0,0 +1,66 @@
1
+ # Menu Visual Evidence - 2026-06-28
2
+
3
+ ## Objetivo
4
+
5
+ Registrar evidencias da passada Reborn cyberpunk pixel art do `skill-master-menu`:
6
+
7
+ - `overview` com mini-graficos
8
+ - `telemetry` com sparklines e barras
9
+ - `DNA-CORE` como animacao principal no lado direito, evoluida para `DNA CYBER HELIX`, com matriz braille 2x4, canvas mais cheio, paleta cyberpunk harmonica e scan vivo em cadencia mais fluida
10
+ - intro `BOOT-SEQUENCE`, confirmacao visual e estado `running`
11
+ - layout compacto para terminais menores
12
+ - estado visual de execucao antes de transferir para o stream real do comando
13
+
14
+ ## Arquivos de evidencia
15
+
16
+ Gerados pelo script:
17
+
18
+ ```bash
19
+ node scripts/render-menu-evidence.mjs
20
+ ```
21
+
22
+ Arquivos HTML:
23
+
24
+ - `docs/operations/assets/menu-frame-large.html`
25
+ - `docs/operations/assets/menu-frame-compact.html`
26
+ - `docs/operations/assets/menu-frame-running.html`
27
+
28
+ ## O que validar visualmente
29
+
30
+ ### Frame grande
31
+
32
+ - overview com identidade HUD
33
+ - linha de sinal com mini-graficos
34
+ - `DNA-CORE // DNA CYBER HELIX` como painel visual dominante no lado direito
35
+ - dupla helice renderizada em braille/pixel art, com fitas mais encorpadas, pares de base pontilhados e scan em movimento
36
+ - halo pixelado de baixa prioridade ao redor das fitas para preencher melhor o painel sem virar bloco solido
37
+ - paleta por camada: fita cyan, fita ambar, bases azuis, scan branco e grid cinza
38
+ - ciclo de 36 frames com easing senoidal para suavizar a rotacao visual
39
+ - loop visual do menu em 160ms por frame para animacao mais fluida sem alterar os comandos `--run`
40
+ - `details` com hierarquia visual maior que `actions`
41
+ - `telemetry` com barras e sparklines
42
+
43
+ ### Frame compacto
44
+
45
+ - identidade cyberpunk preservada
46
+ - menu continua selecionavel e legivel
47
+ - DNA-CORE e telemetry continuam presentes em versao condensada
48
+
49
+ ### Running state
50
+
51
+ - transicao visual clara entre HUD e stream real do comando
52
+ - acao, area e comando ficam explicitos antes da execucao
53
+
54
+ ### Fluxos extras cobertos por teste
55
+
56
+ - intro `REBORN / SKILL_MASTER`
57
+ - confirmacao `CONFIRMATION GATE`
58
+ - resultado `SUBROUTINE COMPLETE` ou `SUBROUTINE FAILED`
59
+ - saida textual preservada quando nao ha TTY
60
+
61
+ ## Evidencia tecnica
62
+
63
+ - renderer principal: `bin/lib/menu-core.mjs`
64
+ - fluxo interativo: `bin/skill-master-menu.mjs`
65
+ - testes: `src/menu-core.test.ts`
66
+ - validacao: `npm run check`, `node scripts/verify-menu-actions.mjs`, `npm pack --dry-run`
@@ -0,0 +1,76 @@
1
+ <!doctype html>
2
+ <html lang="pt-BR">
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <title>Menu Frame 96x24</title>
6
+ <style>
7
+ :root {
8
+ color-scheme: dark;
9
+ --bg: #060606;
10
+ --panel: #0d0d0d;
11
+ --grid: rgba(255,255,255,0.06);
12
+ --line: rgba(255,255,255,0.25);
13
+ --text: #f3f3f3;
14
+ --muted: #8f949c;
15
+ }
16
+ * { box-sizing: border-box; }
17
+ body {
18
+ margin: 0;
19
+ min-height: 100vh;
20
+ background:
21
+ linear-gradient(var(--grid) 1px, transparent 1px),
22
+ linear-gradient(90deg, var(--grid) 1px, transparent 1px),
23
+ radial-gradient(circle at top, rgba(255,255,255,0.06), transparent 35%),
24
+ var(--bg);
25
+ background-size: 48px 48px, 48px 48px, auto, auto;
26
+ color: var(--text);
27
+ font-family: "Courier New", monospace;
28
+ padding: 32px;
29
+ }
30
+ .frame {
31
+ max-width: max-content;
32
+ background: linear-gradient(180deg, rgba(255,255,255,0.03), rgba(255,255,255,0.01));
33
+ border: 1px solid var(--line);
34
+ box-shadow: 0 0 0 1px rgba(255,255,255,0.04), 0 24px 64px rgba(0,0,0,0.45);
35
+ padding: 20px 24px;
36
+ white-space: pre;
37
+ line-height: 1.1;
38
+ font-size: 13px;
39
+ border-radius: 8px;
40
+ }
41
+ .title {
42
+ margin: 0 0 16px;
43
+ color: var(--muted);
44
+ letter-spacing: 0.12em;
45
+ text-transform: uppercase;
46
+ font-size: 12px;
47
+ }
48
+ </style>
49
+ </head>
50
+ <body>
51
+ <p class="title">Menu Frame 96x24</p>
52
+ <pre class="frame">┏╾────────── OVERVIEW▰▱▱──▰───────────────────────────────────────────────────────────────────╼┓
53
+ ▌ ▱SKILL MASTER MENU ▐
54
+ ▌ version 0.0.11 | channel 00.05 | readiness ready ▐
55
+ ▌ GLOBAL SKILLS 13/13 ▐
56
+ ▌ bundle 54 | drafts 3 | study 8 ▐
57
+ ▌ ▱signal ██▇▅▄▃▃▃ health ██▇▆▄▃▃▃ ▐
58
+ ┗╾────────────────▰▰▰─▱─▱─▱─▱─────────────────────────────────────────────────────────────────╼┛
59
+
60
+ ┌╴───────── ACTIONS▱╍╍──▱───────────────────────────────────────╶┐ ┏╾─── DNA-CORE▰───────────╼┓
61
+ │ ╍ACTION GRID │ ▌ ▱DNA CYBER HELIX / ativa ▐
62
+ │ up/down move enter run q exit │ ▌ ⠁ ⠸⣿⣿⡁ ⠁ ⡸⡻⡻ ▐
63
+ │ . Rejeitar skill candidata │ ▌ ⠈⠻⢿⣷⣦⣄⣀⠄⢀⣤⣴⡾⠞⠊ ▐
64
+ │ . Ativar skill aprendida no workspace │ ▌ ⠁ ⠁⣈⣽⣿⣿⣿⣿⣭⣅⡀ ⠁ ▐
65
+ │ &gt; Ativar skill aprendida global │ ▌ ⣀⣴⣿⠿⠛⠛⠓⠒⠛⠛⠻⢿⣷⣤⡀ ▐
66
+ │ ╍. Abrir resumo para Notion │ ▌ ▱ ⠁ ⠸⣿⣿⡁ ⠁ ⡹⡿⡿ ▐
67
+ └╴───────────▱▱▱─╍─╍─╍─╍────────────────────────────────────────╶┘ ┗╾────▰───────────────────╼┛
68
+ ╭╼═════════ DETAILS▰▱▱══▰═══════════════════════════════════════╾╮ ┌╴─── TELEMETRY▱──────────╶┐
69
+ ▌ ▱DETAIL FOCUS ▐ │ ╍SYSTEM WINDOWS │
70
+ ▌ Ativar skill aprendida global ▐ │ selected area ativacao │
71
+ ▌ area ativacao-skill | action 21/22 ▐ │ dominant skill fronten │
72
+ ▌ -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= ▐ │ bundle 54 ██████████ │
73
+ ▌ ▱Instala uma skill aprendida em CODEX_HOME/skills ou ▐ │ ╍global 13/13 ████████ │
74
+ ╰╼═══════════▰▰▰═▱═▱═▱═▱════════════════════════════════════════╾╯ └╴────▱───────────────────╶┘</pre>
75
+ </body>
76
+ </html>
@@ -0,0 +1,84 @@
1
+ <!doctype html>
2
+ <html lang="pt-BR">
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <title>Menu Frame 120x32</title>
6
+ <style>
7
+ :root {
8
+ color-scheme: dark;
9
+ --bg: #060606;
10
+ --panel: #0d0d0d;
11
+ --grid: rgba(255,255,255,0.06);
12
+ --line: rgba(255,255,255,0.25);
13
+ --text: #f3f3f3;
14
+ --muted: #8f949c;
15
+ }
16
+ * { box-sizing: border-box; }
17
+ body {
18
+ margin: 0;
19
+ min-height: 100vh;
20
+ background:
21
+ linear-gradient(var(--grid) 1px, transparent 1px),
22
+ linear-gradient(90deg, var(--grid) 1px, transparent 1px),
23
+ radial-gradient(circle at top, rgba(255,255,255,0.06), transparent 35%),
24
+ var(--bg);
25
+ background-size: 48px 48px, 48px 48px, auto, auto;
26
+ color: var(--text);
27
+ font-family: "Courier New", monospace;
28
+ padding: 32px;
29
+ }
30
+ .frame {
31
+ max-width: max-content;
32
+ background: linear-gradient(180deg, rgba(255,255,255,0.03), rgba(255,255,255,0.01));
33
+ border: 1px solid var(--line);
34
+ box-shadow: 0 0 0 1px rgba(255,255,255,0.04), 0 24px 64px rgba(0,0,0,0.45);
35
+ padding: 20px 24px;
36
+ white-space: pre;
37
+ line-height: 1.1;
38
+ font-size: 13px;
39
+ border-radius: 8px;
40
+ }
41
+ .title {
42
+ margin: 0 0 16px;
43
+ color: var(--muted);
44
+ letter-spacing: 0.12em;
45
+ text-transform: uppercase;
46
+ font-size: 12px;
47
+ }
48
+ </style>
49
+ </head>
50
+ <body>
51
+ <p class="title">Menu Frame 120x32</p>
52
+ <pre class="frame">┏╾────────── OVERVIEW▰▱▱──▰───────────────────────────────────────────────────────────────────────────────────────────╼┓
53
+ ▌ ▱SKILL MASTER MENU ▐
54
+ ▌ version 0.0.11 | channel 00.05 | readiness ready ▐
55
+ ▌ GLOBAL SKILLS 13/13 ▐
56
+ ▌ bundle 54 | drafts 3 | study 8 ▐
57
+ ▌ signal ██▇▅▄▃▃▃▄▅▄▄ health ██▇▆▄▃▃▃▄▄▄▄ ▐
58
+ ▌ ▱moral-core 10 | frontend-ui 19 | backend-data 10 | ops-clients 12 | knowledge 2 ▐
59
+ ┗╾────────────────────▰▰▰─▱─▱─▱─▱─────────────────────────────────────────────────────────────────────────────────────╼┛
60
+
61
+ ┌╴────────── ACTIONS▱╍╍──▱────────────────────────────────────────────────────╶┐ ┏╾───── DNA-CORE▰───────────────────╼┓
62
+ │ ╍ACTION GRID │ ▌ ▱DNA CYBER HELIX / diagnostico ▐
63
+ │ up/down move enter run q exit │ ▌ ⠁ ⠸⣿⣿⣄ ⠄ ⠅ ⠄ ⠄ ⠅ ⠄ ⠄ ⡽⡻⡻ ⠁ ▐
64
+ │ . Status local │ ▌ ⠈⠛⠿⢿⣷⣶⣤⣄⣀⣀ ⢀⢀⣀⣤⣴⠶⠟⠛⠉ ▐
65
+ │ &gt; Doctor do menu e clientes MCP │ ▌ ⠁ ⠁ ⢉⣙⣿⣿⠿⣿⣿⣿⣭⣅⣀⡀ ⠁ ⠁ ▐
66
+ │ . Rodar gate completo [off] │ ▌ ⢀⣤⣶⣿⠟⠋⠉⠁⠈ ⠈ ⠉⠙⠛⠻⢿⣷⣦⣄ ▐
67
+ │ . Rodar build [off] │ ▌ ⠁ ⠰⣿⣿⡛⠒⠒⠒⠓⠒⠒⠒⠒⠒⠓⠒⠒⠒⠒⠚⡻⣿⡷ ⠁ ▐
68
+ │ . Validar pacote no npm publico │ ▌ ⠈⠻⠿⣿⣶⣦⣤⣠⡀⠠ ⠠ ⣠⣠⣤⡶⠾⠚⠊ ▐
69
+ │ . Atualizar pacote global via npm │ ▌ ⠁ ⠁ ⠈⠉⣛⣻⣿⣿⣶⣾⣿⣯⣉⡀ ⠁ ⠁ ▐
70
+ │ . Configurar registry privado GitHub Packages │ ▌ ⣀⣤⣶⠾⠛⠋⠉ ⠉⠉⠛⠻⠿⣿⣶⣤⣀ ▐
71
+ │ . Modo de ativacao atual │ ▌ ⠁ ⢰⣿⣿⠉ ⠈ ⠉ ⠈ ⠈ ⠉ ⠈ ⠈⠉⢻⢿⢷ ⠁ ▐
72
+ │ ╍ │ ▌ ⠙⠿⣿⣶⣦⣔ ⠐ ⠐ ⠐ ⠐⢀⣰⣤⡶⠷⠓⠁ ▐
73
+ └╴─────────────▱▱▱─╍─╍─╍─╍────────────────────────────────────────────────────╶┘ ▌ ▱frames 8/36 global 13/13 ▐
74
+ ╭╼══════════ DETAILS▰▱▱══▰════════════════════════════════════════════════════╾╮ ┗╾──────▰▰▰─────────────────────────╼┛
75
+ ▌ ▱DETAIL FOCUS ▐ ┌╴───── TELEMETRY▱──────────────────╶┐
76
+ ▌ Doctor do menu e clientes MCP ▐ │ ╍SYSTEM WINDOWS │
77
+ ▌ area diagnostico | action 2/22 ▐ │ selected area diagnostico │
78
+ ▌ -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= ▐ │ dominant skill frontend-ui 19 │
79
+ ▌ Valida pacote, binarios, skills globais e registros em Codex, Claude, Gemin ▐ │ bundle 54 ████████████████ │
80
+ ▌ resultado: Mostra um relatorio GO/NO-GO com proximos comandos recomendados. ▐ │ global 13/13 ████████████████ │
81
+ ▌ ▱exec: /usr/bin/node /tmp/skill-master/bin/skill-master-doctor.mjs ▐ │ ╍skills ▅▇██▇▅▄▄▄▄▅▅ │
82
+ ╰╼═════════════▰▰▰═▱═▱═▱═▱════════════════════════════════════════════════════╾╯ └╴──────▱▱▱─────────────────────────╶┘</pre>
83
+ </body>
84
+ </html>
@@ -0,0 +1,80 @@
1
+ <!doctype html>
2
+ <html lang="pt-BR">
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <title>Menu Running State</title>
6
+ <style>
7
+ :root {
8
+ color-scheme: dark;
9
+ --bg: #060606;
10
+ --panel: #0d0d0d;
11
+ --grid: rgba(255,255,255,0.06);
12
+ --line: rgba(255,255,255,0.25);
13
+ --text: #f3f3f3;
14
+ --muted: #8f949c;
15
+ }
16
+ * { box-sizing: border-box; }
17
+ body {
18
+ margin: 0;
19
+ min-height: 100vh;
20
+ background:
21
+ linear-gradient(var(--grid) 1px, transparent 1px),
22
+ linear-gradient(90deg, var(--grid) 1px, transparent 1px),
23
+ radial-gradient(circle at top, rgba(255,255,255,0.06), transparent 35%),
24
+ var(--bg);
25
+ background-size: 48px 48px, 48px 48px, auto, auto;
26
+ color: var(--text);
27
+ font-family: "Courier New", monospace;
28
+ padding: 32px;
29
+ }
30
+ .frame {
31
+ max-width: max-content;
32
+ background: linear-gradient(180deg, rgba(255,255,255,0.03), rgba(255,255,255,0.01));
33
+ border: 1px solid var(--line);
34
+ box-shadow: 0 0 0 1px rgba(255,255,255,0.04), 0 24px 64px rgba(0,0,0,0.45);
35
+ padding: 20px 24px;
36
+ white-space: pre;
37
+ line-height: 1.1;
38
+ font-size: 13px;
39
+ border-radius: 8px;
40
+ }
41
+ .title {
42
+ margin: 0 0 16px;
43
+ color: var(--muted);
44
+ letter-spacing: 0.12em;
45
+ text-transform: uppercase;
46
+ font-size: 12px;
47
+ }
48
+ </style>
49
+ </head>
50
+ <body>
51
+ <p class="title">Menu Running State</p>
52
+ <pre class="frame">╔╼══════════ RUNNING▰════▰════════════════════════════════════════════════════════════════════════════════════════════╾╗
53
+ ▌▌▱SKILL_MASTER WORKFLOW ONLINE ▐▐
54
+ ▌▌ area diagnostico | launching Doctor do menu e clientes MCP ▐▐
55
+ ▌▌▰pulse █▇▅▄▃▃▄▄▅▄▃▂▂▂▄▆▇█ ▐▐
56
+ ▌▌ &lt;=/===/&gt;-&lt;=/===/&gt;-&lt;=/===/&gt;-&lt;=/===/&gt;-&lt;=/===/&gt;-&lt;=/===/&gt;-&lt;=/===/&gt;-&lt;=/===/&gt;-&lt;=/===/&gt;-&lt;=/===/&gt;-&lt;=/===/&gt;-&lt;=/===/&gt;-&lt;=/===/▐▐
57
+ ▌▌ . | . + . . + . . + . . +. . + . .+ . . +▐▐
58
+ ▌▌▰ + + + + + + + ▐▐
59
+ ▌▌ - - |- -+ - - - - - - - - - - - +- - - - - -+ - - - - - - - - - - - +- - - - - -+ -▐▐
60
+ ▌▌ + + + + + + + ▐▐
61
+ ▌▌▰. | + . .+ . . + . . + . . + . . + . . + . ▐▐
62
+ ▌▌ + + + + + + + ▐▐
63
+ ▌▌ |+ + + + + + + ▐▐
64
+ ▌▌▰ + + + + + + + ▐▐
65
+ ▌▌ ▐▐
66
+ ▌▌ Valida pacote, binarios, skills globais e registros em Codex, Claude, Gemini e Antigravity. ▐▐
67
+ ▌▌▰resultado esperado: Mostra um relatorio GO/NO-GO com proximos comandos recomendados. ▐▐
68
+ ▌▌ exec: /usr/bin/node /tmp/skill-master/bin/skill-master-doctor.mjs ▐▐
69
+ ▌▌ ▐▐
70
+ ▌▌▰handoff: HUD -&gt; stream real do comando ▐▐
71
+ ▌▌ ▐▐
72
+ ▌▌ ▐▐
73
+ ▌▌▰ ▐▐
74
+ ▌▌ ▐▐
75
+ ▌▌ ▐▐
76
+ ▌▌▰ ▐▐
77
+ ▌▌▱ ▐▐
78
+ ╚╼════════════════════▰▰▰═════════════════════════════════════════════════════════════════════════════════════════════╾╝</pre>
79
+ </body>
80
+ </html>
@@ -0,0 +1,140 @@
1
+ # Analise - Compatibilidade MCP Windows Linux macOS
2
+
3
+ Data: 2026-06-28
4
+ Projeto: `@fprad0/skill-master-mcp`
5
+ Status: correcoes aplicadas localmente, publicacao proibida neste computador
6
+
7
+ ## Problema
8
+
9
+ O `skill_master` podia ser instalado corretamente por npm, mas alguns clientes MCP nao conseguiam iniciar o servidor. O ponto mais provavel era a configuracao dos clientes usando:
10
+
11
+ ```text
12
+ command = "skill-master-mcp"
13
+ ```
14
+
15
+ Esse formato depende do `PATH` do processo que abriu o cliente. Em apps desktop no Windows e macOS, e tambem em ambientes Linux com launchers grafico/systemd, o `PATH` pode nao conter a pasta global do npm. Resultado: o pacote esta instalado, mas o cliente diz que nao consegue autorizar/iniciar/encontrar o MCP.
16
+
17
+ ## Limite importante
18
+
19
+ Nenhum pacote npm deve burlar autorizacoes do sistema operacional ou do cliente MCP. A correcao segura e suportada e:
20
+
21
+ - registrar o servidor com executavel Node absoluto;
22
+ - passar o entrypoint `bin/skill-master.mjs` absoluto em `args`;
23
+ - manter bootstrap explicito para alterar configs de usuario;
24
+ - diagnosticar configuracoes antigas como `path-bin` ou `launcher`.
25
+
26
+ ## Correcao aplicada
27
+
28
+ Foi criado um modulo compartilhado:
29
+
30
+ ```text
31
+ bin/lib/client-config.mjs
32
+ ```
33
+
34
+ Ele centraliza:
35
+
36
+ - paths padrao de Codex, Claude Desktop, Gemini e Antigravity;
37
+ - geracao de config MCP robusta;
38
+ - bloco TOML do Codex;
39
+ - snippets JSON;
40
+ - merge de configs JSON;
41
+ - avaliacao de configs robustas vs antigas.
42
+
43
+ Novo padrao de servidor:
44
+
45
+ ```json
46
+ {
47
+ "command": "/caminho/absoluto/para/node",
48
+ "args": ["/caminho/absoluto/para/bin/skill-master.mjs"],
49
+ "env": {
50
+ "SKILL_MASTER_UPDATE_CHANNEL": "stable"
51
+ }
52
+ }
53
+ ```
54
+
55
+ No Codex:
56
+
57
+ ```toml
58
+ [mcp_servers.skill_master]
59
+ command = "/caminho/absoluto/para/node"
60
+ args = ["/caminho/absoluto/para/bin/skill-master.mjs"]
61
+ startup_timeout_sec = 120
62
+
63
+ [mcp_servers.skill_master.env]
64
+ SKILL_MASTER_UPDATE_CHANNEL = "stable"
65
+ ```
66
+
67
+ ## Arquivos alterados
68
+
69
+ ```text
70
+ bin/lib/client-config.mjs
71
+ bin/lib/menu-core.mjs
72
+ bin/skill-master-bootstrap-global.mjs
73
+ bin/skill-master-doctor.mjs
74
+ bin/skill-master-register-clients.mjs
75
+ scripts/verify-menu-actions.mjs
76
+ src/client-config.test.ts
77
+ src/menu-core.test.ts
78
+ package.json
79
+ README.md
80
+ CHANGELOG.md
81
+ docs/operations/GUIA_MULTI_COMPUTADOR.md
82
+ ```
83
+
84
+ Tambem existem arquivos de planejamento visual anteriores em:
85
+
86
+ ```text
87
+ docs/operations/reborn-menu-cyberpunk-transfer/
88
+ docs/prompt-tasks/PROMPT_TASK_012_MENU_CYBERPUNK_PIXEL_FRAME.md
89
+ docs/prompt-tasks/PROMPT_TASK_013_MENU_FLUID_DNA_ANIMATION.md
90
+ docs/prompt-tasks/PROMPT_TASK_014_MENU_FUNCTIONAL_PARITY_QA.md
91
+ docs/prompt-tasks/PROMPT_TASK_015_TRANSFER_RELEASE_HANDOFF.md
92
+ ```
93
+
94
+ ## Validacao executada localmente
95
+
96
+ ```powershell
97
+ npm install
98
+ npm run check
99
+ node bin/skill-master-register-clients.mjs --write-snippets --snippets-dir .tmp-client-snippets
100
+ node bin/skill-master-menu.mjs --status
101
+ node bin/skill-master-doctor.mjs
102
+ ```
103
+
104
+ Resultado:
105
+
106
+ - build passou;
107
+ - 12 arquivos de teste passaram;
108
+ - 55 testes passaram;
109
+ - matriz de 22 acoes do menu passou;
110
+ - manifestos passaram;
111
+ - snippets gerados usam Node absoluto + `bin/skill-master.mjs` absoluto.
112
+
113
+ ## O que validar no computador autorizado
114
+
115
+ ```powershell
116
+ git status --short
117
+ npm install
118
+ npm run check
119
+ npm pack --dry-run
120
+ node bin/skill-master-register-clients.mjs --write-snippets --snippets-dir .tmp-client-snippets
121
+ node bin/skill-master-doctor.mjs
122
+ ```
123
+
124
+ Depois de publicar e instalar globalmente:
125
+
126
+ ```powershell
127
+ npm install -g @fprad0/skill-master-mcp@latest
128
+ skill-master-register-clients --apply-all --force
129
+ skill-master-menu --run doctor
130
+ ```
131
+
132
+ Reiniciar Codex depois do registro.
133
+
134
+ ## Riscos restantes
135
+
136
+ - O usuario ainda precisa permitir que o cliente MCP leia sua configuracao local.
137
+ - macOS Gatekeeper nao deve bloquear scripts npm comuns, mas ambientes corporativos podem ter politicas proprias.
138
+ - Windows pode exigir que Node esteja instalado e acessivel no caminho absoluto gravado.
139
+ - Se o usuario mover/remover a instalacao global depois do registro, e preciso rodar `skill-master-register-clients --apply-all --force` novamente.
140
+