@fprad0/skill-master-mcp 0.0.11 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (337) hide show
  1. package/CHANGELOG.md +96 -83
  2. package/README.md +472 -443
  3. package/VERSION.md +9 -9
  4. package/bin/lib/bootstrap-global-core.mjs +34 -0
  5. package/bin/lib/client-config.mjs +293 -268
  6. package/bin/lib/doctor-core.mjs +202 -0
  7. package/bin/lib/menu-core.mjs +1629 -1154
  8. package/bin/lib/operation-result.mjs +59 -0
  9. package/bin/lib/register-clients-core.mjs +247 -0
  10. package/bin/lib/skill-installation.mjs +215 -0
  11. package/bin/lib/update-cli-core.mjs +117 -0
  12. package/bin/skill-master-activation.mjs +163 -163
  13. package/bin/skill-master-bootstrap-global.mjs +61 -49
  14. package/bin/skill-master-configure-private-registry.mjs +3 -3
  15. package/bin/skill-master-doctor.mjs +239 -181
  16. package/bin/skill-master-eval-activation.mjs +32 -32
  17. package/bin/skill-master-install-global-skills.mjs +59 -97
  18. package/bin/skill-master-install-project-skills.mjs +97 -0
  19. package/bin/skill-master-menu.mjs +406 -320
  20. package/bin/skill-master-register-clients.mjs +232 -98
  21. package/bin/skill-master-success-skills.mjs +307 -307
  22. package/bin/skill-master-update.mjs +121 -72
  23. package/bin/skill-master.mjs +3 -3
  24. package/dist/activation.d.ts.map +1 -1
  25. package/dist/activation.js +12 -0
  26. package/dist/activation.js.map +1 -1
  27. package/dist/prompt-router.d.ts.map +1 -1
  28. package/dist/prompt-router.js +19 -0
  29. package/dist/prompt-router.js.map +1 -1
  30. package/dist/recommender.d.ts.map +1 -1
  31. package/dist/recommender.js +4 -1
  32. package/dist/recommender.js.map +1 -1
  33. package/docs/architecture/APRENDIZADO_DE_IMPLEMENTACOES_BEM_SUCEDIDAS.md +125 -125
  34. package/docs/architecture/ARQUITETURA_AUTO_UPDATE.md +9 -9
  35. package/docs/architecture/PLANO_MASTER_ACIONAMENTO_AUTOMATICO_E_APRENDIZADO.md +341 -341
  36. package/docs/architecture/REDE_SEGURA_DE_SKILLS.md +148 -148
  37. package/docs/operations/GUIA_MULTI_COMPUTADOR.md +262 -255
  38. package/docs/operations/GUIA_NPM_PRIVADO.md +294 -294
  39. package/docs/operations/GUIA_NPM_PUBLICO.md +147 -147
  40. package/docs/operations/MENU_VISUAL_EVIDENCE_2026-06-28.md +66 -0
  41. package/docs/operations/assets/menu-frame-compact.html +76 -0
  42. package/docs/operations/assets/menu-frame-compact.png +0 -0
  43. package/docs/operations/assets/menu-frame-large.html +84 -0
  44. package/docs/operations/assets/menu-frame-large.png +0 -0
  45. package/docs/operations/assets/menu-frame-running.html +80 -0
  46. package/docs/operations/assets/menu-frame-running.png +0 -0
  47. package/docs/operations/cross-platform-auth-transfer/ANALISE_COMPATIBILIDADE_MCP_2026-06-28.md +140 -0
  48. package/docs/operations/cross-platform-auth-transfer/README_TRANSFERENCIA.md +85 -0
  49. package/docs/operations/reborn-menu-cyberpunk-transfer/ANALISE_MENU_REBORN_CYBERPUNK_2026-06-28.md +174 -0
  50. package/docs/operations/reborn-menu-cyberpunk-transfer/HANDOFF_IMPLEMENTACAO_REBORN_CYBERPUNK_2026-06-28.md +119 -0
  51. package/docs/operations/reborn-menu-cyberpunk-transfer/ORDEM_DE_EXECUCAO_MENU_REBORN_CYBERPUNK.md +134 -0
  52. package/docs/operations/reborn-menu-cyberpunk-transfer/README_TRANSFERENCIA.md +84 -0
  53. package/docs/operations/reborn-menu-cyberpunk-transfer/README_TRANSFERENCIA_REBORN_PACKAGE.md +56 -0
  54. package/docs/operations/reborn-menu-cyberpunk-transfer/references/cyan-hud-frame-sheet.jpg +0 -0
  55. package/docs/operations/reborn-menu-cyberpunk-transfer/references/cyberpunk-pattern-sheet.jpg +0 -0
  56. package/docs/operations/reborn-menu-cyberpunk-transfer/references/fluid-workflow-windows.gif +0 -0
  57. package/docs/operations/token-economy-transfer/ANALISE_AVANCADA_ECONOMIA_TOKENS_2026-06-30.md +141 -0
  58. package/docs/operations/token-economy-transfer/PLANO_DEV_SENIOR_MASTER_TOKEN_ECONOMY_2026-06-30.md +171 -0
  59. package/docs/operations/token-economy-transfer/README_TRANSFERENCIA_TOKEN_ECONOMY.md +31 -0
  60. package/docs/planning/MENU_RUNTIME_CORRECTION_PLAN_2026-06-30.md +551 -0
  61. package/docs/planning/V0_0_9_APROVACAO_CRITICA_MENSAGENS_DE_VENDA.md +85 -85
  62. package/docs/planning/V0_0_9_FONTES_E_CRITERIOS_DE_AUTORIDADE.md +139 -139
  63. package/docs/planning/V0_0_9_MATRIZ_SKILLS_MULTIDISCIPLINARES.md +105 -105
  64. package/docs/planning/V0_0_9_POLITICA_MORAL_CATOLICA_PARA_IA.md +181 -181
  65. package/docs/planning/V0_0_9_PROMPTS_EXECUCAO.md +59 -59
  66. package/docs/planning/V0_0_9_ROADMAP_DISCERNIMENTO_E_CONHECIMENTO_AMPLO.md +181 -181
  67. package/docs/prompt-tasks/PROMPT_TASK_001_BOOTSTRAP_SKILL_MASTER_MCP.md +6 -0
  68. package/docs/prompt-tasks/PROMPT_TASK_002_AUTO_UPDATE_LAUNCHER.md +6 -0
  69. package/docs/prompt-tasks/PROMPT_TASK_003_REMOTE_MANIFEST_AND_RELEASES.md +6 -0
  70. package/docs/prompt-tasks/PROMPT_TASK_004_MULTI_USER_DISTRIBUTION.md +6 -0
  71. package/docs/prompt-tasks/PROMPT_TASK_005_SECURITY_AND_QUALITY_GATE.md +6 -0
  72. package/docs/prompt-tasks/PROMPT_TASK_006_MASTER_ACIONAMENTO_APRENDIZADO.md +83 -0
  73. package/docs/prompt-tasks/PROMPT_TASK_007_PERSONA_ORQUESTRADORA.md +88 -0
  74. package/docs/prompt-tasks/PROMPT_TASK_008_PROMPT_ROUTER_MODOS_ATIVACAO.md +156 -0
  75. package/docs/prompt-tasks/PROMPT_TASK_009_PIPELINE_APRENDIZADO_SUCESSO.md +105 -0
  76. package/docs/prompt-tasks/PROMPT_TASK_010_EVALS_GOVERNANCA_ATIVACAO.md +119 -0
  77. package/docs/prompt-tasks/PROMPT_TASK_011_MENU_NOTIFICACOES_NOTION.md +120 -0
  78. package/docs/prompt-tasks/PROMPT_TASK_012_MENU_CYBERPUNK_PIXEL_FRAME.md +123 -0
  79. package/docs/prompt-tasks/PROMPT_TASK_013_MENU_FLUID_DNA_ANIMATION.md +114 -0
  80. package/docs/prompt-tasks/PROMPT_TASK_014_MENU_FUNCTIONAL_PARITY_QA.md +157 -0
  81. package/docs/prompt-tasks/PROMPT_TASK_015_TRANSFER_RELEASE_HANDOFF.md +127 -0
  82. package/docs/prompt-tasks/PROMPT_TASK_016_CROSS_PLATFORM_MCP_AUTH_REGISTRATION.md +107 -0
  83. package/docs/prompt-tasks/PROMPT_TASK_018_NPM_PUBLISH_2FA_SETUP.md +80 -0
  84. package/docs/prompt-tasks/PROMPT_TASK_019_TOKEN_ECONOMY_GLOBAL_SKILLS.md +56 -0
  85. package/docs/prompt-tasks/PROMPT_TASK_MASTER_EXECUTOR.md +6 -0
  86. package/docs/skill-candidates/v0.0.10/cli-creator/LICENSE.txt +201 -201
  87. package/docs/skill-candidates/v0.0.10/cli-creator/SKILL.md +160 -160
  88. package/docs/skill-candidates/v0.0.10/cli-creator/agents/openai.yaml +4 -4
  89. package/docs/skill-candidates/v0.0.10/cli-creator/references/agent-cli-patterns.md +154 -154
  90. package/docs/skill-candidates/v0.0.10/developer-workstation-ops/SKILL.md +32 -32
  91. package/docs/skill-candidates/v0.0.10/figma/LICENSE.txt +1 -1
  92. package/docs/skill-candidates/v0.0.10/figma/SKILL.md +42 -42
  93. package/docs/skill-candidates/v0.0.10/figma/agents/openai.yaml +14 -14
  94. package/docs/skill-candidates/v0.0.10/figma/assets/figma-small.svg +3 -3
  95. package/docs/skill-candidates/v0.0.10/figma/assets/icon.svg +28 -28
  96. package/docs/skill-candidates/v0.0.10/figma/references/figma-mcp-config.md +35 -35
  97. package/docs/skill-candidates/v0.0.10/figma/references/figma-tools-and-prompts.md +34 -34
  98. package/docs/skill-candidates/v0.0.10/figma-code-connect-components/LICENSE.TXT +1 -1
  99. package/docs/skill-candidates/v0.0.10/figma-code-connect-components/SKILL.md +349 -349
  100. package/docs/skill-candidates/v0.0.10/figma-code-connect-components/agents/openai.yaml +14 -14
  101. package/docs/skill-candidates/v0.0.10/figma-code-connect-components/assets/figma-small.svg +3 -3
  102. package/docs/skill-candidates/v0.0.10/figma-code-connect-components/assets/icon.svg +28 -28
  103. package/docs/skill-candidates/v0.0.10/figma-code-connect-components/references/mapping-checklist.md +7 -7
  104. package/docs/skill-candidates/v0.0.10/figma-code-connect-components/scripts/normalize_node_id.py +25 -25
  105. package/docs/skill-candidates/v0.0.10/figma-create-design-system-rules/LICENSE.TXT +1 -1
  106. package/docs/skill-candidates/v0.0.10/figma-create-design-system-rules/SKILL.md +537 -537
  107. package/docs/skill-candidates/v0.0.10/figma-create-design-system-rules/agents/openai.yaml +14 -14
  108. package/docs/skill-candidates/v0.0.10/figma-create-design-system-rules/assets/figma-small.svg +3 -3
  109. package/docs/skill-candidates/v0.0.10/figma-create-design-system-rules/assets/icon.svg +28 -28
  110. package/docs/skill-candidates/v0.0.10/figma-create-design-system-rules/references/rule-template.md +15 -15
  111. package/docs/skill-candidates/v0.0.10/figma-create-design-system-rules/scripts/check_agents_md.sh +9 -9
  112. package/docs/skill-candidates/v0.0.10/figma-generate-design/LICENSE.TXT +1 -1
  113. package/docs/skill-candidates/v0.0.10/figma-generate-design/SKILL.md +341 -341
  114. package/docs/skill-candidates/v0.0.10/figma-generate-design/agents/openai.yaml +14 -14
  115. package/docs/skill-candidates/v0.0.10/figma-generate-design/assets/figma-small.svg +3 -3
  116. package/docs/skill-candidates/v0.0.10/figma-generate-design/assets/icon.svg +28 -28
  117. package/docs/skill-candidates/v0.0.10/figma-generate-design/maintainers.yml +1 -1
  118. package/docs/skill-candidates/v0.0.10/figma-generate-library/LICENSE.TXT +1 -1
  119. package/docs/skill-candidates/v0.0.10/figma-generate-library/SKILL.md +314 -314
  120. package/docs/skill-candidates/v0.0.10/figma-generate-library/agents/openai.yaml +14 -14
  121. package/docs/skill-candidates/v0.0.10/figma-generate-library/assets/figma-small.svg +3 -3
  122. package/docs/skill-candidates/v0.0.10/figma-generate-library/assets/icon.svg +28 -28
  123. package/docs/skill-candidates/v0.0.10/figma-generate-library/maintainers.yml +3 -3
  124. package/docs/skill-candidates/v0.0.10/figma-generate-library/references/code-connect-setup.md +260 -260
  125. package/docs/skill-candidates/v0.0.10/figma-generate-library/references/component-creation.md +1014 -1014
  126. package/docs/skill-candidates/v0.0.10/figma-generate-library/references/discovery-phase.md +518 -518
  127. package/docs/skill-candidates/v0.0.10/figma-generate-library/references/documentation-creation.md +834 -834
  128. package/docs/skill-candidates/v0.0.10/figma-generate-library/references/error-recovery.md +540 -540
  129. package/docs/skill-candidates/v0.0.10/figma-generate-library/references/naming-conventions.md +527 -527
  130. package/docs/skill-candidates/v0.0.10/figma-generate-library/references/token-creation.md +962 -962
  131. package/docs/skill-candidates/v0.0.10/figma-generate-library/scripts/bindVariablesToComponent.js +110 -110
  132. package/docs/skill-candidates/v0.0.10/figma-generate-library/scripts/cleanupOrphans.js +127 -127
  133. package/docs/skill-candidates/v0.0.10/figma-generate-library/scripts/createComponentWithVariants.js +148 -148
  134. package/docs/skill-candidates/v0.0.10/figma-generate-library/scripts/createDocumentationPage.js +139 -139
  135. package/docs/skill-candidates/v0.0.10/figma-generate-library/scripts/createSemanticTokens.js +108 -108
  136. package/docs/skill-candidates/v0.0.10/figma-generate-library/scripts/createVariableCollection.js +49 -49
  137. package/docs/skill-candidates/v0.0.10/figma-generate-library/scripts/inspectFileStructure.js +121 -121
  138. package/docs/skill-candidates/v0.0.10/figma-generate-library/scripts/rehydrateState.js +92 -92
  139. package/docs/skill-candidates/v0.0.10/figma-generate-library/scripts/validateCreation.js +83 -83
  140. package/docs/skill-candidates/v0.0.10/figma-implement-design/LICENSE.txt +1 -1
  141. package/docs/skill-candidates/v0.0.10/figma-implement-design/SKILL.md +258 -258
  142. package/docs/skill-candidates/v0.0.10/figma-implement-design/agents/openai.yaml +14 -14
  143. package/docs/skill-candidates/v0.0.10/figma-implement-design/assets/figma-small.svg +3 -3
  144. package/docs/skill-candidates/v0.0.10/figma-implement-design/assets/icon.svg +28 -28
  145. package/docs/skill-candidates/v0.0.10/figma-use/LICENSE.TXT +1 -1
  146. package/docs/skill-candidates/v0.0.10/figma-use/SKILL.md +233 -233
  147. package/docs/skill-candidates/v0.0.10/figma-use/agents/openai.yaml +14 -14
  148. package/docs/skill-candidates/v0.0.10/figma-use/assets/figma-small.svg +3 -3
  149. package/docs/skill-candidates/v0.0.10/figma-use/assets/icon.svg +28 -28
  150. package/docs/skill-candidates/v0.0.10/figma-use/maintainers.yml +1 -1
  151. package/docs/skill-candidates/v0.0.10/figma-use/references/api-reference.md +301 -301
  152. package/docs/skill-candidates/v0.0.10/figma-use/references/common-patterns.md +512 -512
  153. package/docs/skill-candidates/v0.0.10/figma-use/references/component-patterns.md +488 -488
  154. package/docs/skill-candidates/v0.0.10/figma-use/references/effect-style-patterns.md +123 -123
  155. package/docs/skill-candidates/v0.0.10/figma-use/references/gotchas.md +599 -599
  156. package/docs/skill-candidates/v0.0.10/figma-use/references/maintainers.yml +12 -12
  157. package/docs/skill-candidates/v0.0.10/figma-use/references/plugin-api-patterns.md +513 -513
  158. package/docs/skill-candidates/v0.0.10/figma-use/references/plugin-api-standalone.d.ts +11293 -11293
  159. package/docs/skill-candidates/v0.0.10/figma-use/references/plugin-api-standalone.index.md +441 -441
  160. package/docs/skill-candidates/v0.0.10/figma-use/references/text-style-patterns.md +203 -203
  161. package/docs/skill-candidates/v0.0.10/figma-use/references/validation-and-recovery.md +109 -109
  162. package/docs/skill-candidates/v0.0.10/figma-use/references/variable-patterns.md +354 -354
  163. package/docs/skill-candidates/v0.0.10/figma-use/references/working-with-design-systems/maintainers.yml +9 -9
  164. package/docs/skill-candidates/v0.0.10/figma-use/references/working-with-design-systems/wwds-components--creating.md +17 -17
  165. package/docs/skill-candidates/v0.0.10/figma-use/references/working-with-design-systems/wwds-components--using.md +17 -17
  166. package/docs/skill-candidates/v0.0.10/figma-use/references/working-with-design-systems/wwds-components.md +50 -50
  167. package/docs/skill-candidates/v0.0.10/figma-use/references/working-with-design-systems/wwds-effect-styles.md +52 -52
  168. package/docs/skill-candidates/v0.0.10/figma-use/references/working-with-design-systems/wwds-text-styles.md +90 -90
  169. package/docs/skill-candidates/v0.0.10/figma-use/references/working-with-design-systems/wwds-variables--creating.md +13 -13
  170. package/docs/skill-candidates/v0.0.10/figma-use/references/working-with-design-systems/wwds-variables--using.md +13 -13
  171. package/docs/skill-candidates/v0.0.10/figma-use/references/working-with-design-systems/wwds-variables.md +64 -64
  172. package/docs/skill-candidates/v0.0.10/figma-use/references/working-with-design-systems/wwds.md +41 -41
  173. package/docs/skill-candidates/v0.0.10/frontend-design/LICENSE.txt +177 -177
  174. package/docs/skill-candidates/v0.0.10/frontend-design/SKILL.md +55 -55
  175. package/docs/skill-candidates/v0.0.10/frontend-ui-ux-systems/SKILL.md +32 -32
  176. package/docs/skill-candidates/v0.0.10/github/SKILL.md +74 -74
  177. package/docs/skill-candidates/v0.0.10/github/agents/openai.yaml +6 -6
  178. package/docs/skill-candidates/v0.0.10/github/assets/github-small.svg +3 -3
  179. package/docs/skill-candidates/v0.0.10/image-graphic-design-rendering/SKILL.md +28 -28
  180. package/docs/skill-candidates/v0.0.10/language-quality-pt-en-fr-it-ru/SKILL.md +28 -28
  181. package/docs/skill-candidates/v0.0.10/math-physics-reasoning/SKILL.md +28 -28
  182. package/docs/skill-candidates/v0.0.10/mcp-builder/LICENSE.txt +201 -201
  183. package/docs/skill-candidates/v0.0.10/mcp-builder/SKILL.md +236 -236
  184. package/docs/skill-candidates/v0.0.10/mcp-builder/reference/evaluation.md +601 -601
  185. package/docs/skill-candidates/v0.0.10/mcp-builder/reference/mcp_best_practices.md +249 -249
  186. package/docs/skill-candidates/v0.0.10/mcp-builder/reference/node_mcp_server.md +969 -969
  187. package/docs/skill-candidates/v0.0.10/mcp-builder/reference/python_mcp_server.md +718 -718
  188. package/docs/skill-candidates/v0.0.10/mcp-builder/scripts/connections.py +151 -151
  189. package/docs/skill-candidates/v0.0.10/mcp-builder/scripts/evaluation.py +373 -373
  190. package/docs/skill-candidates/v0.0.10/mcp-builder/scripts/example_evaluation.xml +22 -22
  191. package/docs/skill-candidates/v0.0.10/mcp-builder/scripts/requirements.txt +2 -2
  192. package/docs/skill-candidates/v0.0.10/mcp-client-readiness/SKILL.md +31 -31
  193. package/docs/skill-candidates/v0.0.10/openai-docs/LICENSE.txt +201 -201
  194. package/docs/skill-candidates/v0.0.10/openai-docs/SKILL.md +161 -161
  195. package/docs/skill-candidates/v0.0.10/openai-docs/agents/openai.yaml +14 -14
  196. package/docs/skill-candidates/v0.0.10/openai-docs/assets/openai-small.svg +3 -3
  197. package/docs/skill-candidates/v0.0.10/openai-docs/references/latest-model.md +37 -37
  198. package/docs/skill-candidates/v0.0.10/openai-docs/references/prompting-guide.md +244 -244
  199. package/docs/skill-candidates/v0.0.10/openai-docs/references/upgrade-guide.md +181 -181
  200. package/docs/skill-candidates/v0.0.10/openai-docs/scripts/fetch-codex-manual.mjs +598 -598
  201. package/docs/skill-candidates/v0.0.10/openai-docs/scripts/resolve-latest-model-info.js +147 -147
  202. package/docs/skill-candidates/v0.0.10/playwright/NOTICE.txt +14 -14
  203. package/docs/skill-candidates/v0.0.10/playwright/SKILL.md +147 -147
  204. package/docs/skill-candidates/v0.0.10/playwright/agents/openai.yaml +6 -6
  205. package/docs/skill-candidates/v0.0.10/playwright/assets/playwright-small.svg +3 -3
  206. package/docs/skill-candidates/v0.0.10/playwright/references/cli.md +116 -116
  207. package/docs/skill-candidates/v0.0.10/playwright/references/workflows.md +95 -95
  208. package/docs/skill-candidates/v0.0.10/playwright/scripts/playwright_cli.sh +25 -25
  209. package/docs/skill-candidates/v0.0.10/polyglot-backend-engineering/SKILL.md +32 -32
  210. package/docs/skill-candidates/v0.0.10/screenshot/LICENSE.txt +201 -201
  211. package/docs/skill-candidates/v0.0.10/screenshot/SKILL.md +267 -267
  212. package/docs/skill-candidates/v0.0.10/screenshot/agents/openai.yaml +6 -6
  213. package/docs/skill-candidates/v0.0.10/screenshot/assets/screenshot-small.svg +5 -5
  214. package/docs/skill-candidates/v0.0.10/screenshot/scripts/ensure_macos_permissions.sh +54 -54
  215. package/docs/skill-candidates/v0.0.10/screenshot/scripts/macos_display_info.swift +22 -22
  216. package/docs/skill-candidates/v0.0.10/screenshot/scripts/macos_permissions.swift +40 -40
  217. package/docs/skill-candidates/v0.0.10/screenshot/scripts/macos_window_info.swift +126 -126
  218. package/docs/skill-candidates/v0.0.10/screenshot/scripts/take_screenshot.ps1 +163 -163
  219. package/docs/skill-candidates/v0.0.10/screenshot/scripts/take_screenshot.py +585 -585
  220. package/docs/skill-candidates/v0.0.10/skill-master-orchestrator/SKILL.md +62 -62
  221. package/docs/skill-candidates/v0.0.10/skill-master-orchestrator/agents/openai.yaml +4 -4
  222. package/docs/skill-candidates/v0.0.10/skill-master-orchestrator/references/activation-policy.md +77 -77
  223. package/docs/skill-candidates/v0.0.10/skill-master-orchestrator/references/human-approval-policy.md +83 -83
  224. package/docs/skill-candidates/v0.0.10/skill-master-orchestrator/references/persona-dev-senior-master.md +46 -46
  225. package/docs/skill-candidates/v0.0.10/terminal-menu-operations/SKILL.md +30 -30
  226. package/docs/skill-candidates/v0.0.10/terminal-pixel-art-tui/SKILL.md +43 -43
  227. package/docs/skill-candidates/v0.0.10/webapp-testing/LICENSE.txt +201 -201
  228. package/docs/skill-candidates/v0.0.10/webapp-testing/SKILL.md +95 -95
  229. package/docs/skill-candidates/v0.0.10/webapp-testing/examples/console_logging.py +34 -34
  230. package/docs/skill-candidates/v0.0.10/webapp-testing/examples/element_discovery.py +39 -39
  231. package/docs/skill-candidates/v0.0.10/webapp-testing/examples/static_html_automation.py +32 -32
  232. package/docs/skill-candidates/v0.0.10/webapp-testing/scripts/with_server.py +105 -105
  233. package/docs/skill-candidates/v0.0.10/winui-app/LICENSE.txt +201 -201
  234. package/docs/skill-candidates/v0.0.10/winui-app/SKILL.md +94 -94
  235. package/docs/skill-candidates/v0.0.10/winui-app/agents/openai.yaml +5 -5
  236. package/docs/skill-candidates/v0.0.10/winui-app/config.yaml +50 -50
  237. package/docs/skill-candidates/v0.0.10/winui-app/references/_sections.md +96 -96
  238. package/docs/skill-candidates/v0.0.10/winui-app/references/accessibility-input-and-localization.md +51 -51
  239. package/docs/skill-candidates/v0.0.10/winui-app/references/build-run-and-launch-verification.md +72 -72
  240. package/docs/skill-candidates/v0.0.10/winui-app/references/community-toolkit-controls-and-helpers.md +57 -57
  241. package/docs/skill-candidates/v0.0.10/winui-app/references/controls-layout-and-adaptive-ui.md +84 -84
  242. package/docs/skill-candidates/v0.0.10/winui-app/references/foundation-environment-audit-and-remediation.md +82 -82
  243. package/docs/skill-candidates/v0.0.10/winui-app/references/foundation-setup-and-project-selection.md +67 -67
  244. package/docs/skill-candidates/v0.0.10/winui-app/references/foundation-template-first-recovery.md +62 -62
  245. package/docs/skill-candidates/v0.0.10/winui-app/references/foundation-winui-app-structure.md +62 -62
  246. package/docs/skill-candidates/v0.0.10/winui-app/references/motion-animations-and-polish.md +45 -45
  247. package/docs/skill-candidates/v0.0.10/winui-app/references/performance-diagnostics-and-responsiveness.md +46 -46
  248. package/docs/skill-candidates/v0.0.10/winui-app/references/sample-source-map.md +37 -37
  249. package/docs/skill-candidates/v0.0.10/winui-app/references/shell-navigation-and-windowing.md +67 -67
  250. package/docs/skill-candidates/v0.0.10/winui-app/references/styling-theming-materials-and-icons.md +71 -71
  251. package/docs/skill-candidates/v0.0.10/winui-app/references/testing-debugging-and-review-checklists.md +77 -77
  252. package/docs/skill-candidates/v0.0.10/winui-app/references/windows-app-sdk-lifecycle-notifications-and-deployment.md +52 -52
  253. package/docs/skill-candidates/v0.0.11/frontend-dev-guidelines/SKILL.md +398 -398
  254. package/docs/skill-candidates/v0.0.11/frontend-dev-guidelines/resources/common-patterns.md +330 -330
  255. package/docs/skill-candidates/v0.0.11/frontend-dev-guidelines/resources/complete-examples.md +871 -871
  256. package/docs/skill-candidates/v0.0.11/frontend-dev-guidelines/resources/component-patterns.md +501 -501
  257. package/docs/skill-candidates/v0.0.11/frontend-dev-guidelines/resources/data-fetching.md +766 -766
  258. package/docs/skill-candidates/v0.0.11/frontend-dev-guidelines/resources/file-organization.md +501 -501
  259. package/docs/skill-candidates/v0.0.11/frontend-dev-guidelines/resources/loading-and-error-states.md +500 -500
  260. package/docs/skill-candidates/v0.0.11/frontend-dev-guidelines/resources/performance.md +405 -405
  261. package/docs/skill-candidates/v0.0.11/frontend-dev-guidelines/resources/routing-guide.md +363 -363
  262. package/docs/skill-candidates/v0.0.11/frontend-dev-guidelines/resources/styling-guide.md +427 -427
  263. package/docs/skill-candidates/v0.0.11/frontend-dev-guidelines/resources/typescript-standards.md +417 -417
  264. package/docs/skill-candidates/v0.0.11/git-version-control-ops/SKILL.md +34 -34
  265. package/docs/skill-candidates/v0.0.11/go-engineering/SKILL.md +34 -34
  266. package/docs/skill-candidates/v0.0.11/java-engineering/SKILL.md +34 -34
  267. package/docs/skill-candidates/v0.0.11/javascript-engineering/SKILL.md +34 -34
  268. package/docs/skill-candidates/v0.0.11/json-contract-design/SKILL.md +34 -34
  269. package/docs/skill-candidates/v0.0.11/multi-client-mcp-ops/SKILL.md +36 -36
  270. package/docs/skill-candidates/v0.0.11/nextjs/SKILL.md +745 -745
  271. package/docs/skill-candidates/v0.0.11/nextjs/agents/openai.yaml +3 -3
  272. package/docs/skill-candidates/v0.0.11/nextjs/references/app-router-files.md +94 -94
  273. package/docs/skill-candidates/v0.0.11/python-engineering/SKILL.md +34 -34
  274. package/docs/skill-candidates/v0.0.11/ruby-engineering/SKILL.md +34 -34
  275. package/docs/skill-candidates/v0.0.11/senior-fullstack/SKILL.md +209 -209
  276. package/docs/skill-candidates/v0.0.11/senior-fullstack/references/architecture_patterns.md +103 -103
  277. package/docs/skill-candidates/v0.0.11/senior-fullstack/references/development_workflows.md +103 -103
  278. package/docs/skill-candidates/v0.0.11/senior-fullstack/references/tech_stack_guide.md +103 -103
  279. package/docs/skill-candidates/v0.0.11/senior-fullstack/scripts/code_quality_analyzer.py +114 -114
  280. package/docs/skill-candidates/v0.0.11/senior-fullstack/scripts/fullstack_scaffolder.py +114 -114
  281. package/docs/skill-candidates/v0.0.11/senior-fullstack/scripts/project_scaffolder.py +114 -114
  282. package/docs/skill-candidates/v0.0.11/shadcn/SKILL.md +573 -573
  283. package/docs/skill-candidates/v0.0.11/shadcn/agents/openai.yaml +3 -3
  284. package/docs/skill-candidates/v0.0.11/sql-postgresql-engineering/SKILL.md +34 -34
  285. package/docs/skill-candidates/v0.0.11/terminal-shell-ops/SKILL.md +34 -34
  286. package/docs/skill-candidates/v0.0.11/typescript-expert/SKILL.md +429 -429
  287. package/docs/skill-candidates/v0.0.11/typescript-expert/references/tsconfig-strict.json +91 -91
  288. package/docs/skill-candidates/v0.0.11/typescript-expert/references/typescript-cheatsheet.md +383 -383
  289. package/docs/skill-candidates/v0.0.11/typescript-expert/references/utility-types.ts +335 -335
  290. package/docs/skill-candidates/v0.0.11/typescript-expert/scripts/ts_diagnostic.py +203 -203
  291. package/docs/skill-candidates/v0.0.11/ui-component-primitives/SKILL.md +34 -34
  292. package/docs/skill-candidates/v0.0.11/web-mobile-design-systems/SKILL.md +34 -34
  293. package/docs/skill-candidates/v0.0.11/windows-linux-platform-ops/SKILL.md +34 -34
  294. package/docs/skill-candidates/v0.0.12/context-compression-handoff/SKILL.md +47 -0
  295. package/docs/skill-candidates/v0.0.12/csharp-senior-master-engineering/SKILL.md +32 -0
  296. package/docs/skill-candidates/v0.0.12/css-senior-master-engineering/SKILL.md +32 -0
  297. package/docs/skill-candidates/v0.0.12/go-senior-master-engineering/SKILL.md +32 -0
  298. package/docs/skill-candidates/v0.0.12/html-senior-master-engineering/SKILL.md +32 -0
  299. package/docs/skill-candidates/v0.0.12/javascript-senior-master-engineering/SKILL.md +32 -0
  300. package/docs/skill-candidates/v0.0.12/json-senior-master-engineering/SKILL.md +32 -0
  301. package/docs/skill-candidates/v0.0.12/prompt-budget-gate/SKILL.md +46 -0
  302. package/docs/skill-candidates/v0.0.12/python-senior-master-engineering/SKILL.md +32 -0
  303. package/docs/skill-candidates/v0.0.12/react-senior-master-engineering/SKILL.md +32 -0
  304. package/docs/skill-candidates/v0.0.12/ruby-senior-master-engineering/SKILL.md +32 -0
  305. package/docs/skill-candidates/v0.0.12/senior-master-code-optimizer/SKILL.md +48 -0
  306. package/docs/skill-candidates/v0.0.12/sql-senior-master-engineering/SKILL.md +31 -0
  307. package/docs/skill-candidates/v0.0.12/token-economy-orchestrator/SKILL.md +38 -0
  308. package/docs/skill-candidates/v0.0.12/typescript-senior-master-engineering/SKILL.md +35 -0
  309. package/docs/skill-candidates/v0.0.9/ai-ethics-human-dignity/SKILL.md +32 -32
  310. package/docs/skill-candidates/v0.0.9/broad-domain-router/SKILL.md +41 -41
  311. package/docs/skill-candidates/v0.0.9/catholic-moral-discernment/SKILL.md +31 -31
  312. package/docs/skill-candidates/v0.0.9/engineering-systems-master/SKILL.md +31 -31
  313. package/docs/skill-candidates/v0.0.9/language-quality-pt-en-fr/SKILL.md +28 -28
  314. package/docs/skill-candidates/v0.0.9/math-science-reasoning/SKILL.md +29 -29
  315. package/docs/skill-candidates/v0.0.9/philosophy-sociology-discernment/SKILL.md +28 -28
  316. package/docs/skill-candidates/v0.0.9/professional-boundary-triage/SKILL.md +40 -40
  317. package/docs/skill-candidates/v0.0.9/release-ethics-gate/SKILL.md +32 -32
  318. package/docs/skill-candidates/v0.0.9/source-authority-reviewer/SKILL.md +31 -31
  319. package/examples/client-configs/claude-code.commands.md +21 -17
  320. package/examples/client-configs/claude-code.project.mcp.json +18 -18
  321. package/examples/client-configs/claude-desktop.macos.json +18 -18
  322. package/examples/client-configs/claude-desktop.windows.json +20 -20
  323. package/examples/client-configs/codex.windows.toml +11 -11
  324. package/examples/client-configs/gemini-code-assist.intellij.mcp.json +18 -18
  325. package/examples/client-configs/gemini.linux.settings.json +21 -21
  326. package/examples/client-configs/gemini.windows.settings.json +23 -23
  327. package/examples/client-configs/generic-stdio.json +16 -16
  328. package/manifests/channels/beta.json +26 -26
  329. package/manifests/channels/stable.json +27 -27
  330. package/network/approved-skills.json +54 -54
  331. package/network/unapproved-skill-candidates.json +110 -110
  332. package/package.json +87 -78
  333. package/scripts/configure-private-registry.mjs +208 -208
  334. package/scripts/lib/private-registry.mjs +97 -97
  335. package/scripts/render-menu-evidence.mjs +130 -0
  336. package/scripts/verify-menu-actions.mjs +117 -115
  337. package/sources.json +11 -11
@@ -1,181 +1,239 @@
1
- #!/usr/bin/env node
2
- import { spawnSync } from 'node:child_process';
3
- import { existsSync, readFileSync } from 'node:fs';
4
- import os from 'node:os';
5
- import path from 'node:path';
6
- import { fileURLToPath } from 'node:url';
7
- import {
8
- assessCodexConfigContent,
9
- assessMcpServerConfig,
10
- defaultClientConfigPaths,
11
- } from './lib/client-config.mjs';
12
-
13
- const here = path.dirname(fileURLToPath(import.meta.url));
14
- const rootDir = path.resolve(here, '..');
15
- const args = process.argv.slice(2);
16
- const has = (flag) => args.includes(flag);
17
-
18
- if (has('--help') || has('-h')) {
19
- console.log(`Skill Master Doctor
20
-
21
- Uso:
22
- skill-master-doctor
23
- skill-master-doctor --strict
24
-
25
- Valida pacote, binarios, skills globais e registro MCP em Codex, Claude,
26
- Gemini e Antigravity. Nao publica versoes e nao altera configuracoes.
27
-
28
- O registro recomendado usa Node absoluto + bin/skill-master.mjs absoluto para
29
- evitar falhas de PATH em apps desktop no Windows, Linux e macOS.
30
- `);
31
- process.exit(0);
32
- }
33
-
34
- const REQUIRED_GLOBAL_SKILLS = [
35
- 'catholic-moral-discernment',
36
- 'ai-ethics-human-dignity',
37
- 'professional-boundary-triage',
38
- 'broad-domain-router',
39
- 'language-quality-pt-en-fr',
40
- 'math-science-reasoning',
41
- 'philosophy-sociology-discernment',
42
- 'engineering-systems-master',
43
- 'source-authority-reviewer',
44
- 'release-ethics-gate',
45
- 'mcp-client-readiness',
46
- 'terminal-menu-operations',
47
- 'terminal-pixel-art-tui',
48
- ];
49
-
50
- const REQUIRED_BINS = [
51
- 'skill-master-menu',
52
- 'skill-master-mcp',
53
- 'skill-master-update',
54
- 'skill-master-bootstrap-global',
55
- 'skill-master-install-global-skills',
56
- 'skill-master-register-clients',
57
- 'skill-master-doctor',
58
- ];
59
-
60
- function readJson(filePath) {
61
- if (!existsSync(filePath)) return { present: false, invalid: false, value: null };
62
- try {
63
- const raw = readFileSync(filePath, 'utf8').trim();
64
- return { present: true, invalid: false, value: raw ? JSON.parse(raw) : {} };
65
- } catch {
66
- return { present: true, invalid: true, value: null };
67
- }
68
- }
69
-
70
- function commandExists(command) {
71
- const lookup = process.platform === 'win32' ? 'where' : 'command';
72
- const lookupArgs = process.platform === 'win32' ? [command] : ['-v', command];
73
- const result = spawnSync(lookup, lookupArgs, { shell: process.platform !== 'win32', stdio: 'ignore' });
74
- return result.status === 0;
75
- }
76
-
77
- function jsonClientState(filePath) {
78
- const parsed = readJson(filePath);
79
- if (parsed.invalid) {
80
- return {
81
- filePath,
82
- present: true,
83
- configured: false,
84
- mode: 'invalid-json',
85
- command: null,
86
- };
87
- }
88
-
89
- const server = parsed.value?.mcpServers?.skill_master;
90
- const assessment = assessMcpServerConfig(server);
91
- return {
92
- filePath,
93
- present: parsed.present,
94
- configured: assessment.robust,
95
- mode: assessment.mode,
96
- command: assessment.command,
97
- };
98
- }
99
-
100
- function codexState(filePath) {
101
- if (!existsSync(filePath)) {
102
- return { filePath, present: false, configured: false, mode: 'missing', command: null };
103
- }
104
-
105
- const content = readFileSync(filePath, 'utf8');
106
- const assessment = assessCodexConfigContent(content);
107
- return {
108
- filePath,
109
- present: true,
110
- configured: assessment.robust,
111
- mode: assessment.mode,
112
- command: assessment.command,
113
- };
114
- }
115
-
116
- function resultLine(ok, label, detail) {
117
- const marker = ok ? 'OK' : 'NO';
118
- return `[${marker}] ${label}${detail ? ` - ${detail}` : ''}`;
119
- }
120
-
121
- const packageJsonState = readJson(path.join(rootDir, 'package.json'));
122
- const packageJson = packageJsonState.value;
123
- const globalSkillsRoot = path.join(process.env.CODEX_HOME ?? path.join(os.homedir(), '.codex'), 'skills');
124
- const installedSkills = REQUIRED_GLOBAL_SKILLS.filter((skill) => existsSync(path.join(globalSkillsRoot, skill, 'SKILL.md')));
125
- const missingSkills = REQUIRED_GLOBAL_SKILLS.filter((skill) => !installedSkills.includes(skill));
126
-
127
- const clientPaths = defaultClientConfigPaths();
128
- const clients = [
129
- ['Codex', codexState(clientPaths.codex)],
130
- ['Claude Desktop', jsonClientState(clientPaths.claude)],
131
- ['Gemini CLI', jsonClientState(clientPaths.gemini)],
132
- ['Antigravity', jsonClientState(clientPaths.antigravity)],
133
- ];
134
-
135
- const binResults = REQUIRED_BINS.map((bin) => [bin, commandExists(bin)]);
136
- const allBinsOk = binResults.every(([, ok]) => ok);
137
- const allSkillsOk = missingSkills.length === 0;
138
- const allClientsOk = clients.every(([, state]) => state.configured);
139
- const packageOk = packageJson?.name === '@fprad0/skill-master-mcp';
140
-
141
- console.log('Skill Master Doctor');
142
- console.log(`- Root: ${rootDir}`);
143
- console.log(`- Package: ${packageJson?.name ?? 'unknown'}@${packageJson?.version ?? 'unknown'}`);
144
- console.log('');
145
-
146
- console.log(resultLine(packageOk, 'Pacote local reconhecido', packageOk ? packageJson.version : 'package.json inesperado'));
147
- console.log(resultLine(allBinsOk, 'Binarios globais no PATH', binResults.filter(([, ok]) => !ok).map(([bin]) => bin).join(', ') || 'todos encontrados'));
148
- for (const [bin, ok] of binResults) {
149
- console.log(` ${resultLine(ok, bin)}`);
150
- }
151
-
152
- console.log('');
153
- console.log(resultLine(allSkillsOk, `Skills globais ${installedSkills.length}/${REQUIRED_GLOBAL_SKILLS.length}`, missingSkills.join(', ') || 'todas instaladas'));
154
- console.log(`- Skills root: ${globalSkillsRoot}`);
155
-
156
- console.log('');
157
- for (const [name, state] of clients) {
158
- const detail = state.configured
159
- ? `${state.mode} em ${state.filePath}`
160
- : state.present
161
- ? `presente, mas mode=${state.mode} command=${state.command ?? 'nao encontrado'} em ${state.filePath}`
162
- : `ausente em ${state.filePath}`;
163
- console.log(resultLine(state.configured, `${name} configurado`, detail));
164
- }
165
-
166
- const ready = packageOk && allBinsOk && allSkillsOk && allClientsOk;
167
- console.log('');
168
- console.log(resultLine(ready, 'Readiness global', ready ? 'pronto' : 'requer acao'));
169
-
170
- if (!ready) {
171
- console.log('');
172
- console.log('Proximo comando recomendado:');
173
- console.log(' skill-master-register-clients --apply-all --force');
174
- console.log(' skill-master-menu --run bootstrap-global --yes');
175
- console.log('');
176
- console.log('Depois reinicie Codex, Claude, Gemini e Antigravity.');
177
- }
178
-
179
- if (has('--strict') && !ready) {
180
- process.exitCode = 1;
181
- }
1
+ #!/usr/bin/env node
2
+ import { existsSync, readFileSync } from 'node:fs';
3
+ import os from 'node:os';
4
+ import path from 'node:path';
5
+ import process from 'node:process';
6
+ import { fileURLToPath } from 'node:url';
7
+ import {
8
+ assessCodexConfigContent,
9
+ assessMcpServerConfig,
10
+ defaultClientConfigPaths,
11
+ } from './lib/client-config.mjs';
12
+ import { diagnoseReadiness, recommendedActionsForDiagnosis } from './lib/doctor-core.mjs';
13
+ import { resolveClaudeCodeCommand, runCapturedCommand } from './lib/register-clients-core.mjs';
14
+
15
+ const here = path.dirname(fileURLToPath(import.meta.url));
16
+ const rootDir = path.resolve(here, '..');
17
+ const args = process.argv.slice(2);
18
+ const has = (flag) => args.includes(flag);
19
+
20
+ if (has('--help') || has('-h')) {
21
+ console.log(`Skill Master Doctor
22
+
23
+ Uso:
24
+ skill-master-doctor
25
+ skill-master-doctor --strict
26
+
27
+ Valida pacote, binarios, skills globais e registro MCP em Codex, Claude,
28
+ Claude Code, Gemini e Antigravity. Nao publica versoes e nao altera configuracoes.
29
+
30
+ O registro recomendado usa Node absoluto + bin/skill-master.mjs absoluto para
31
+ evitar falhas de PATH em apps desktop no Windows, Linux e macOS.
32
+ `);
33
+ process.exit(0);
34
+ }
35
+
36
+ const REQUIRED_GLOBAL_SKILLS = [
37
+ 'catholic-moral-discernment',
38
+ 'ai-ethics-human-dignity',
39
+ 'professional-boundary-triage',
40
+ 'broad-domain-router',
41
+ 'language-quality-pt-en-fr',
42
+ 'math-science-reasoning',
43
+ 'philosophy-sociology-discernment',
44
+ 'engineering-systems-master',
45
+ 'source-authority-reviewer',
46
+ 'release-ethics-gate',
47
+ 'mcp-client-readiness',
48
+ 'terminal-menu-operations',
49
+ 'terminal-pixel-art-tui',
50
+ 'senior-master-code-optimizer',
51
+ 'typescript-senior-master-engineering',
52
+ 'python-senior-master-engineering',
53
+ 'javascript-senior-master-engineering',
54
+ 'go-senior-master-engineering',
55
+ 'sql-senior-master-engineering',
56
+ 'json-senior-master-engineering',
57
+ 'ruby-senior-master-engineering',
58
+ 'react-senior-master-engineering',
59
+ 'html-senior-master-engineering',
60
+ 'css-senior-master-engineering',
61
+ 'csharp-senior-master-engineering',
62
+ ];
63
+
64
+ const REQUIRED_BINS = [
65
+ 'skill-master-menu',
66
+ 'skill-master-mcp',
67
+ 'skill-master-update',
68
+ 'skill-master-bootstrap-global',
69
+ 'skill-master-install-global-skills',
70
+ 'skill-master-install-project-skills',
71
+ 'skill-master-register-clients',
72
+ 'skill-master-doctor',
73
+ ];
74
+
75
+ function readJson(filePath) {
76
+ if (!existsSync(filePath)) return { present: false, invalid: false, value: null };
77
+ try {
78
+ const raw = readFileSync(filePath, 'utf8').trim();
79
+ return { present: true, invalid: false, value: raw ? JSON.parse(raw) : {} };
80
+ } catch {
81
+ return { present: true, invalid: true, value: null };
82
+ }
83
+ }
84
+
85
+ function commandExists(command) {
86
+ const lookup = process.platform === 'win32' ? 'where' : 'which';
87
+ const result = runCapturedCommand(lookup, [command]);
88
+ return result.status === 0;
89
+ }
90
+
91
+ function claudeCodeState() {
92
+ const resolved = resolveClaudeCodeCommand('claude', {
93
+ platform: process.platform,
94
+ });
95
+
96
+ if (!resolved.found || !resolved.command) {
97
+ return {
98
+ filePath: 'claude CLI',
99
+ present: false,
100
+ configured: false,
101
+ optionalMissing: true,
102
+ mode: 'cli-missing',
103
+ command: null,
104
+ };
105
+ }
106
+
107
+ const result = runCapturedCommand(resolved.command, ['mcp', 'list'], {
108
+ env: process.env,
109
+ });
110
+ const output = `${result.stdout ?? ''}${result.stderr ?? ''}`;
111
+ const configured = /skill[-_]master/i.test(output);
112
+
113
+ return {
114
+ filePath: resolved.command,
115
+ present: true,
116
+ configured,
117
+ mode: configured ? 'claude-cli' : result.status === 0 ? 'missing' : 'list-failed',
118
+ command: configured ? 'claude mcp list' : output.trim() || null,
119
+ };
120
+ }
121
+
122
+ function jsonClientState(filePath) {
123
+ const parsed = readJson(filePath);
124
+ if (parsed.invalid) {
125
+ return {
126
+ filePath,
127
+ present: true,
128
+ configured: false,
129
+ mode: 'invalid-json',
130
+ command: null,
131
+ };
132
+ }
133
+
134
+ const server = parsed.value?.mcpServers?.skill_master;
135
+ const assessment = assessMcpServerConfig(server);
136
+ return {
137
+ filePath,
138
+ present: parsed.present,
139
+ configured: assessment.robust,
140
+ mode: assessment.mode,
141
+ command: assessment.command,
142
+ };
143
+ }
144
+
145
+ function codexState(filePath) {
146
+ if (!existsSync(filePath)) {
147
+ return { filePath, present: false, configured: false, mode: 'missing', command: null };
148
+ }
149
+
150
+ const content = readFileSync(filePath, 'utf8');
151
+ const assessment = assessCodexConfigContent(content);
152
+ return {
153
+ filePath,
154
+ present: true,
155
+ configured: assessment.robust,
156
+ mode: assessment.mode,
157
+ command: assessment.command,
158
+ };
159
+ }
160
+
161
+ function resultLine(ok, label, detail) {
162
+ const marker = ok ? 'OK' : 'NO';
163
+ return `[${marker}] ${label}${detail ? ` - ${detail}` : ''}`;
164
+ }
165
+
166
+ const packageJsonState = readJson(path.join(rootDir, 'package.json'));
167
+ const packageJson = packageJsonState.value;
168
+ const globalSkillsRoot = path.join(process.env.CODEX_HOME ?? path.join(os.homedir(), '.codex'), 'skills');
169
+ const installedSkills = REQUIRED_GLOBAL_SKILLS.filter((skill) => existsSync(path.join(globalSkillsRoot, skill, 'SKILL.md')));
170
+ const missingSkills = REQUIRED_GLOBAL_SKILLS.filter((skill) => !installedSkills.includes(skill));
171
+
172
+ const clientPaths = defaultClientConfigPaths();
173
+ const clients = [
174
+ ['Codex', codexState(clientPaths.codex)],
175
+ ['Claude Desktop', jsonClientState(clientPaths.claude)],
176
+ ['Claude Code', claudeCodeState()],
177
+ ['Gemini CLI', jsonClientState(clientPaths.gemini)],
178
+ ['Antigravity', jsonClientState(clientPaths.antigravity)],
179
+ ];
180
+
181
+ const binResults = REQUIRED_BINS.map((bin) => [bin, commandExists(bin)]);
182
+ const allBinsOk = binResults.every(([, ok]) => ok);
183
+ const allSkillsOk = missingSkills.length === 0;
184
+ const packageOk = packageJson?.name === '@fprad0/skill-master-mcp';
185
+ const diagnosis = diagnoseReadiness({
186
+ packageOk,
187
+ packageJson,
188
+ binResults,
189
+ missingSkills,
190
+ clients,
191
+ });
192
+ const recommendedActions = recommendedActionsForDiagnosis(diagnosis, clients);
193
+
194
+ console.log('Skill Master Doctor');
195
+ console.log(`- Root: ${rootDir}`);
196
+ console.log(`- Package: ${packageJson?.name ?? 'unknown'}@${packageJson?.version ?? 'unknown'}`);
197
+ console.log('');
198
+
199
+ console.log(resultLine(packageOk, 'Pacote local reconhecido', packageOk ? packageJson.version : 'package.json inesperado'));
200
+ console.log(resultLine(allBinsOk, 'Binarios globais no PATH', binResults.filter(([, ok]) => !ok).map(([bin]) => bin).join(', ') || 'todos encontrados'));
201
+ for (const [bin, ok] of binResults) {
202
+ console.log(` ${resultLine(ok, bin)}`);
203
+ }
204
+
205
+ console.log('');
206
+ console.log(resultLine(allSkillsOk, `Skills globais ${installedSkills.length}/${REQUIRED_GLOBAL_SKILLS.length}`, missingSkills.join(', ') || 'todas instaladas'));
207
+ console.log(`- Skills root: ${globalSkillsRoot}`);
208
+
209
+ console.log('');
210
+ for (const [name, state] of clients) {
211
+ const label = state.optionalMissing ? `${name} opcional` : `${name} configurado`;
212
+ const detail = state.configured
213
+ ? state.optionalMissing
214
+ ? `CLI nao encontrado; pule se voce nao usa Claude Code neste computador`
215
+ : `${state.mode} em ${state.filePath}`
216
+ : state.present
217
+ ? `presente, mas mode=${state.mode} command=${state.command ?? 'nao encontrado'} em ${state.filePath}`
218
+ : `ausente em ${state.filePath}`;
219
+ console.log(resultLine(state.configured, label, detail));
220
+ }
221
+
222
+ console.log('');
223
+ console.log(resultLine(diagnosis.ready, 'Readiness global', diagnosis.ready ? 'pronto' : diagnosis.mode));
224
+
225
+ if (!diagnosis.ready) {
226
+ console.log('');
227
+ console.log(`Falha dominante: ${diagnosis.dominantFailure}`);
228
+ console.log('');
229
+ console.log('Proximo comando recomendado:');
230
+ for (const action of recommendedActions) {
231
+ console.log(` ${action}`);
232
+ }
233
+ console.log('');
234
+ console.log('Depois reinicie Codex, Claude Desktop, Claude Code, Gemini e Antigravity quando aplicar a correcao recomendada.');
235
+ }
236
+
237
+ if (has('--strict') && !diagnosis.ready) {
238
+ process.exitCode = 1;
239
+ }
@@ -1,32 +1,32 @@
1
- #!/usr/bin/env node
2
-
3
- import { runActivationEvals } from '../dist/activation-evals.js';
4
-
5
- const report = runActivationEvals();
6
- const asJson = process.argv.includes('--json');
7
-
8
- if (asJson) {
9
- console.log(JSON.stringify(report, null, 2));
10
- } else {
11
- console.log('Skill Master Activation Evals');
12
- console.log(`- Generated at: ${report.generatedAt}`);
13
- console.log(`- Total: ${report.total}`);
14
- console.log(`- Passed: ${report.passed}`);
15
- console.log(`- Failed: ${report.failed}`);
16
- console.log(`- Accuracy: ${(report.accuracy * 100).toFixed(1)}%`);
17
- console.log(`- False positives: ${report.falsePositives}`);
18
- console.log(`- False negatives: ${report.falseNegatives}`);
19
- console.log(`- Correct blocks: ${report.correctBlocks}`);
20
- console.log(`- Recommendation: ${report.recommendation}`);
21
-
22
- const failed = report.results.filter((result) => !result.passed);
23
- if (failed.length > 0) {
24
- console.log('');
25
- console.log('Failed cases:');
26
- for (const result of failed) {
27
- console.log(`- ${result.case.id}: ${result.findings.join('; ')}`);
28
- }
29
- }
30
- }
31
-
32
- process.exitCode = report.recommendation === 'balanced-ready' ? 0 : 1;
1
+ #!/usr/bin/env node
2
+
3
+ import { runActivationEvals } from '../dist/activation-evals.js';
4
+
5
+ const report = runActivationEvals();
6
+ const asJson = process.argv.includes('--json');
7
+
8
+ if (asJson) {
9
+ console.log(JSON.stringify(report, null, 2));
10
+ } else {
11
+ console.log('Skill Master Activation Evals');
12
+ console.log(`- Generated at: ${report.generatedAt}`);
13
+ console.log(`- Total: ${report.total}`);
14
+ console.log(`- Passed: ${report.passed}`);
15
+ console.log(`- Failed: ${report.failed}`);
16
+ console.log(`- Accuracy: ${(report.accuracy * 100).toFixed(1)}%`);
17
+ console.log(`- False positives: ${report.falsePositives}`);
18
+ console.log(`- False negatives: ${report.falseNegatives}`);
19
+ console.log(`- Correct blocks: ${report.correctBlocks}`);
20
+ console.log(`- Recommendation: ${report.recommendation}`);
21
+
22
+ const failed = report.results.filter((result) => !result.passed);
23
+ if (failed.length > 0) {
24
+ console.log('');
25
+ console.log('Failed cases:');
26
+ for (const result of failed) {
27
+ console.log(`- ${result.case.id}: ${result.findings.join('; ')}`);
28
+ }
29
+ }
30
+ }
31
+
32
+ process.exitCode = report.recommendation === 'balanced-ready' ? 0 : 1;
@@ -1,97 +1,59 @@
1
- #!/usr/bin/env node
2
- import { existsSync, readdirSync, cpSync, mkdirSync } from 'node:fs';
3
- import os from 'node:os';
4
- import path from 'node:path';
5
- import { fileURLToPath } from 'node:url';
6
-
7
- const here = path.dirname(fileURLToPath(import.meta.url));
8
- const rootDir = path.resolve(here, '..');
9
- const defaultSource = path.join(rootDir, 'docs', 'skill-candidates');
10
- const defaultTarget = path.join(process.env.CODEX_HOME ?? path.join(os.homedir(), '.codex'), 'skills');
11
-
12
- const args = process.argv.slice(2);
13
- const has = (flag) => args.includes(flag);
14
- const readValue = (flag, fallback) => {
15
- const index = args.indexOf(flag);
16
- return index >= 0 ? args[index + 1] : fallback;
17
- };
18
-
19
- if (has('--help')) {
20
- console.log(`Skill Master global skills installer
21
-
22
- Uso:
23
- skill-master-install-global-skills
24
- skill-master-install-global-skills --overwrite
25
- skill-master-install-global-skills --dry-run
26
- skill-master-install-global-skills --target ~/.codex/skills
27
- skill-master-install-global-skills --source ./docs/skill-candidates/v0.0.11
28
-
29
- Instala as skills globais embutidas em CODEX_HOME/skills ou ~/.codex/skills.
30
- Quando --source aponta para docs/skill-candidates, todas as pastas versionadas v*
31
- sao lidas.
32
- `);
33
- process.exit(0);
34
- }
35
-
36
- const source = readValue('--source', defaultSource);
37
- const target = readValue('--target', defaultTarget);
38
- const overwrite = has('--overwrite');
39
- const dryRun = has('--dry-run');
40
-
41
- if (!existsSync(source)) {
42
- console.error(`[skill_master] Source not found: ${source}`);
43
- process.exit(1);
44
- }
45
-
46
- const listSkillSources = (sourcePath) => {
47
- const entries = readdirSync(sourcePath, { withFileTypes: true });
48
- const directSkills = entries
49
- .filter((entry) => entry.isDirectory() && existsSync(path.join(sourcePath, entry.name, 'SKILL.md')))
50
- .map((entry) => ({ name: entry.name, path: path.join(sourcePath, entry.name) }));
51
-
52
- if (directSkills.length) {
53
- return directSkills;
54
- }
55
-
56
- return entries
57
- .filter((entry) => entry.isDirectory())
58
- .flatMap((entry) => {
59
- const versionPath = path.join(sourcePath, entry.name);
60
- return readdirSync(versionPath, { withFileTypes: true })
61
- .filter((skillEntry) => skillEntry.isDirectory() && existsSync(path.join(versionPath, skillEntry.name, 'SKILL.md')))
62
- .map((skillEntry) => ({ name: skillEntry.name, path: path.join(versionPath, skillEntry.name) }));
63
- })
64
- .sort((left, right) => left.name.localeCompare(right.name));
65
- };
66
-
67
- const skills = listSkillSources(source);
68
-
69
- if (!dryRun) {
70
- mkdirSync(target, { recursive: true });
71
- }
72
-
73
- const installed = [];
74
- const skipped = [];
75
-
76
- for (const skill of skills) {
77
- const from = skill.path;
78
- const to = path.join(target, skill.name);
79
- if (existsSync(to) && !overwrite) {
80
- skipped.push(skill.name);
81
- continue;
82
- }
83
- if (!dryRun) {
84
- cpSync(from, to, { recursive: true, force: overwrite });
85
- }
86
- installed.push(skill.name);
87
- }
88
-
89
- console.log('[skill_master] Global skills installer');
90
- console.log(`- Source: ${source}`);
91
- console.log(`- Target: ${target}`);
92
- console.log(`- Installed: ${installed.length}`);
93
- console.log(`- Skipped: ${skipped.length}`);
94
- if (dryRun) console.log('- Dry run: no files were written.');
95
- if (installed.length) console.log(`- Installed skills: ${installed.join(', ')}`);
96
- if (skipped.length) console.log(`- Skipped skills: ${skipped.join(', ')}`);
97
- console.log('[skill_master] Restart or rescan Codex to load new global skills.');
1
+ #!/usr/bin/env node
2
+ import { existsSync } from 'node:fs';
3
+ import os from 'node:os';
4
+ import path from 'node:path';
5
+ import { fileURLToPath } from 'node:url';
6
+ import { installSkillsToTarget, listSkillSources } from './lib/skill-installation.mjs';
7
+
8
+ const here = path.dirname(fileURLToPath(import.meta.url));
9
+ const rootDir = path.resolve(here, '..');
10
+ const defaultSource = path.join(rootDir, 'docs', 'skill-candidates');
11
+ const defaultTarget = path.join(process.env.CODEX_HOME ?? path.join(os.homedir(), '.codex'), 'skills');
12
+
13
+ const args = process.argv.slice(2);
14
+ const has = (flag) => args.includes(flag);
15
+ const readValue = (flag, fallback) => {
16
+ const index = args.indexOf(flag);
17
+ return index >= 0 ? args[index + 1] : fallback;
18
+ };
19
+
20
+ if (has('--help')) {
21
+ console.log(`Skill Master global skills installer
22
+
23
+ Uso:
24
+ skill-master-install-global-skills
25
+ skill-master-install-global-skills --overwrite
26
+ skill-master-install-global-skills --dry-run
27
+ skill-master-install-global-skills --target ~/.codex/skills
28
+ skill-master-install-global-skills --source ./docs/skill-candidates/v0.0.11
29
+
30
+ Instala as skills globais embutidas em CODEX_HOME/skills ou ~/.codex/skills.
31
+ Quando --source aponta para docs/skill-candidates, todas as pastas versionadas v*
32
+ sao lidas.
33
+ `);
34
+ process.exit(0);
35
+ }
36
+
37
+ const source = readValue('--source', defaultSource);
38
+ const target = readValue('--target', defaultTarget);
39
+ const overwrite = has('--overwrite');
40
+ const dryRun = has('--dry-run');
41
+
42
+ if (!existsSync(source)) {
43
+ console.error(`[skill_master] Source not found: ${source}`);
44
+ process.exit(1);
45
+ }
46
+
47
+ const skills = listSkillSources(source);
48
+
49
+ const { installed, skipped } = installSkillsToTarget({ skills, target, overwrite, dryRun });
50
+
51
+ console.log('[skill_master] Global skills installer');
52
+ console.log(`- Source: ${source}`);
53
+ console.log(`- Target: ${target}`);
54
+ console.log(`- Installed: ${installed.length}`);
55
+ console.log(`- Skipped: ${skipped.length}`);
56
+ if (dryRun) console.log('- Dry run: no files were written.');
57
+ if (installed.length) console.log(`- Installed skills: ${installed.join(', ')}`);
58
+ if (skipped.length) console.log(`- Skipped skills: ${skipped.join(', ')}`);
59
+ console.log('[skill_master] Restart or rescan Codex to load new global skills.');