@fprad0/skill-master-mcp 1.0.0 → 1.0.1

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 (38) hide show
  1. package/CHANGELOG.md +9 -3
  2. package/README.md +2 -2
  3. package/VERSION.md +4 -4
  4. package/bin/lib/client-config.mjs +11 -9
  5. package/bin/lib/menu-core.mjs +241 -70
  6. package/bin/skill-master-activation.mjs +3 -1
  7. package/bin/skill-master-menu.mjs +127 -17
  8. package/bin/skill-master-success-skills.mjs +52 -2
  9. package/docs/operations/assets/menu-frame-compact.html +78 -75
  10. package/docs/operations/assets/menu-frame-dna-hero.html +87 -0
  11. package/docs/operations/assets/menu-frame-fine-helix.html +89 -0
  12. package/docs/operations/assets/menu-frame-large.html +86 -83
  13. package/docs/operations/assets/menu-frame-running.html +82 -79
  14. package/docs/operations/assets/menu-frame-score-10-contact-sheet.html +184 -0
  15. package/docs/planning/mcp-1.0.0/00_RESUMO_EXECUTIVO_AUDITORIA_MENU.md +118 -0
  16. package/docs/planning/mcp-1.0.0/01_MATRIZ_TESTES_MENU_E_RESULTADOS.md +250 -0
  17. package/docs/planning/mcp-1.0.0/02_PLANO_CORRECAO_ATIVAR_SKILL_APRENDIDA.md +200 -0
  18. package/docs/planning/mcp-1.0.0/03_PLANO_COMPATIBILIDADE_WINDOWS_LINUX_MACOS.md +167 -0
  19. package/docs/planning/mcp-1.0.0/04_PLANO_UI_CYBERPUNK_PIXEL_ART_E_PERFORMANCE.md +165 -0
  20. package/docs/planning/mcp-1.0.0/05_PROMPT_TASK_EXECUCAO_CORRECOES.md +151 -0
  21. package/docs/planning/mcp-1.0.0/06_CHECKLIST_REGRESSAO_PRE_RELEASE.md +159 -0
  22. package/docs/planning/mcp-1.0.0/07_RELATORIO_APLICACAO_CORRECOES_MENU_SKILL_MASTER.md +136 -0
  23. package/docs/planning/mcp-1.0.0/08_AUDITORIA_CRITICA_MENU_NOTA_E_DNA_REFINADO.md +184 -0
  24. package/docs/planning/mcp-1.0.0/prompt-tasks-nota-10-10/00_PROMPT_TASK_MASTER_NOTA_10_10.md +103 -0
  25. package/docs/planning/mcp-1.0.0/prompt-tasks-nota-10-10/01_PROMPT_TASK_FINE_HELIX_DNA.md +116 -0
  26. package/docs/planning/mcp-1.0.0/prompt-tasks-nota-10-10/02_PROMPT_TASK_DNA_HERO_BOOT_AND_MOTION.md +109 -0
  27. package/docs/planning/mcp-1.0.0/prompt-tasks-nota-10-10/03_PROMPT_TASK_MENU_UX_HELP_ERROR_COPY.md +99 -0
  28. package/docs/planning/mcp-1.0.0/prompt-tasks-nota-10-10/04_PROMPT_TASK_EVIDENCE_RENDERER_1_0_0.md +97 -0
  29. package/docs/planning/mcp-1.0.0/prompt-tasks-nota-10-10/05_PROMPT_TASK_CROSS_PLATFORM_UTF8_MOJIBAKE.md +99 -0
  30. package/docs/planning/mcp-1.0.0/prompt-tasks-nota-10-10/06_PROMPT_TASK_VISUAL_REGRESSION_QA.md +105 -0
  31. package/docs/planning/mcp-1.0.0/prompt-tasks-nota-10-10/07_PROMPT_TASK_PRE_RELEASE_SCORE_GATE_10_10.md +104 -0
  32. package/docs/planning/mcp-1.0.0/prompt-tasks-nota-10-10/README_ORDEM_EXECUCAO_NOTA_10_10.md +77 -0
  33. package/manifests/channels/beta.json +7 -7
  34. package/manifests/channels/stable.json +8 -8
  35. package/package.json +16 -14
  36. package/scripts/render-menu-evidence.mjs +115 -49
  37. package/scripts/verify-menu-actions.mjs +13 -8
  38. package/scripts/verify-menu-visual.mjs +90 -0
@@ -13,6 +13,7 @@ import {
13
13
  formatRunningActionFrame,
14
14
  formatResultMessage,
15
15
  formatSkillMasterIntroFrame,
16
+ formatSkillMasterDnaHeroFrame,
16
17
  formatStatusReport,
17
18
  getMenuStatus,
18
19
  isInteractiveTerminal,
@@ -42,9 +43,16 @@ const CONTROL = {
42
43
  function parseArgs(argv) {
43
44
  const parsed = {
44
45
  help: false,
46
+ manifest: null,
47
+ overwrite: false,
48
+ prompt: null,
45
49
  status: false,
46
50
  yes: false,
47
51
  run: null,
52
+ prompt: null,
53
+ manifest: null,
54
+ list: false,
55
+ overwrite: false,
48
56
  };
49
57
 
50
58
  for (let i = 0; i < argv.length; i += 1) {
@@ -57,9 +65,21 @@ function parseArgs(argv) {
57
65
  case '--status':
58
66
  parsed.status = true;
59
67
  break;
60
- case '--yes':
61
- parsed.yes = true;
62
- break;
68
+ case '--yes':
69
+ parsed.yes = true;
70
+ break;
71
+ case '--prompt':
72
+ parsed.prompt = argv[++i] ?? null;
73
+ break;
74
+ case '--manifest':
75
+ parsed.manifest = argv[++i] ?? null;
76
+ break;
77
+ case '--list':
78
+ parsed.list = true;
79
+ break;
80
+ case '--overwrite':
81
+ parsed.overwrite = true;
82
+ break;
63
83
  case '--run':
64
84
  parsed.run = argv[++i] ?? null;
65
85
  break;
@@ -79,7 +99,77 @@ function printStatus() {
79
99
  console.log(formatStatusReport(getMenuStatus(rootDir)));
80
100
  }
81
101
 
82
- async function runSelectedAction(action, { yes = false, useColor = false } = {}) {
102
+ function prepareActionForRun(action, args) {
103
+ if (action.key === 'promptRecommendation') {
104
+ if (args.prompt) {
105
+ return {
106
+ ...action,
107
+ description: 'Avalia o prompt informado pelo router local.',
108
+ args: [action.args[0], '--route-prompt', args.prompt],
109
+ };
110
+ }
111
+
112
+ if (!isInteractiveTerminal()) {
113
+ throw new Error('prompt-router precisa de --prompt fora do TTY. Exemplo: skill-master-menu --run prompt-router --prompt "validar menu nota 10"');
114
+ }
115
+ }
116
+
117
+ if (action.key === 'activateLearnedLocal' || action.key === 'activateLearnedGlobal') {
118
+ const target = action.key === 'activateLearnedLocal' ? 'local' : 'global';
119
+ if (args.list) {
120
+ return {
121
+ ...action,
122
+ label: 'Listar drafts de skills aprendidas',
123
+ description: 'Lista manifests disponiveis para aprovacao ou ativacao humana.',
124
+ details: ['Nao instala skill.', 'Use um Manifest listado com --manifest <manifest.json> --yes para ativar.'],
125
+ success: 'Drafts pendentes listados com caminhos de manifest quando existirem.',
126
+ confirmMessage: null,
127
+ args: [action.args[0], '--list'],
128
+ };
129
+ }
130
+
131
+ if (args.manifest) {
132
+ return {
133
+ ...action,
134
+ description: `Ativa a skill aprendida informada em ${target}.`,
135
+ args: [
136
+ action.args[0],
137
+ '--activate',
138
+ args.manifest,
139
+ '--target',
140
+ target,
141
+ ...(args.yes ? ['--yes'] : []),
142
+ ...(args.overwrite ? ['--overwrite'] : []),
143
+ ],
144
+ };
145
+ }
146
+
147
+ if (!isInteractiveTerminal()) {
148
+ if (args.yes) {
149
+ return {
150
+ ...action,
151
+ description: `Ativa automaticamente o unico draft pronto em ${target}, quando existir.`,
152
+ args: [
153
+ action.args[0],
154
+ '--activate-ready',
155
+ '--target',
156
+ target,
157
+ '--yes',
158
+ ...(args.overwrite ? ['--overwrite'] : []),
159
+ ],
160
+ };
161
+ }
162
+
163
+ throw new Error(`A acao ${action.aliases[0]} precisa de selecao explicita fora do TTY. Use: skill-master-menu --run ${action.aliases[0]} --manifest <manifest.json> --yes, ou skill-master-menu --run ${action.aliases[0]} --yes quando exatamente um draft estiver pronto. Para listar manifests: skill-master-menu --run ${action.aliases[0]} --list`);
164
+ }
165
+ }
166
+
167
+ return action;
168
+ }
169
+
170
+ async function runSelectedAction(action, { yes = false, useColor = false, cliArgs = {} } = {}) {
171
+ action = prepareActionForRun(action, { ...cliArgs, yes });
172
+
83
173
  if (action.disabledReason) {
84
174
  throw new Error(`Action ${action.key} is unavailable here: ${action.disabledReason}`);
85
175
  }
@@ -225,6 +315,16 @@ function renderIntro(tick, message) {
225
315
  writeStableFrame(frame, { clear: tick === 0 });
226
316
  }
227
317
 
318
+ function renderDnaHero(tick) {
319
+ const status = getMenuStatus(rootDir);
320
+ const frame = formatSkillMasterDnaHeroFrame(status, tick, {
321
+ columns: process.stdout.columns ?? 120,
322
+ rows: process.stdout.rows ?? 32,
323
+ useColor: true,
324
+ });
325
+ writeStableFrame(frame, { clear: tick === 0 });
326
+ }
327
+
228
328
  function renderConfirmAction(action, tick) {
229
329
  const status = getMenuStatus(rootDir);
230
330
  const frame = formatCyberConfirmFrame(status, action, tick, {
@@ -244,6 +344,14 @@ async function animateIntro(message = 'skill_master assumindo o workflow', frame
244
344
  }
245
345
  }
246
346
 
347
+ async function animateDnaHeroIntro(frames = 5) {
348
+ if (!visualHudAllowed()) return;
349
+ for (let frame = 0; frame < frames; frame += 1) {
350
+ renderDnaHero(frame);
351
+ await sleep(220);
352
+ }
353
+ }
354
+
247
355
  async function animateRunningAction(action, startTick) {
248
356
  for (let frame = 0; frame < 5; frame += 1) {
249
357
  renderRunningAction(action, startTick + frame);
@@ -293,6 +401,7 @@ async function runVisualMenu() {
293
401
  restoreMenuInput();
294
402
 
295
403
  try {
404
+ await animateDnaHeroIntro(5);
296
405
  await animateIntro('skill_master online / carregando menu operacional', 7);
297
406
 
298
407
  while (true) {
@@ -376,19 +485,20 @@ async function main() {
376
485
  if (!actionKey) {
377
486
  throw new Error(`Unknown action: ${args.run}`);
378
487
  }
379
-
380
- const action = commands.find((entry) => entry.key === actionKey);
381
- if (visualHudAllowed()) {
382
- enterVisualScreen();
383
- try {
384
- await animateIntro(`skill_master executando ${action.label}`, 6);
385
- } finally {
386
- leaveVisualScreen();
387
- }
388
- }
389
- const result = await runSelectedAction(action, { yes: args.yes, useColor: isInteractiveTerminal() });
390
- return result.code;
391
- }
488
+
489
+ const action = commands.find((entry) => entry.key === actionKey);
490
+ if (visualHudAllowed()) {
491
+ enterVisualScreen();
492
+ try {
493
+ await animateDnaHeroIntro(4);
494
+ await animateIntro(`skill_master executando ${action.label}`, 6);
495
+ } finally {
496
+ leaveVisualScreen();
497
+ }
498
+ }
499
+ const result = await runSelectedAction(action, { yes: args.yes, useColor: isInteractiveTerminal(), cliArgs: args });
500
+ return result.code;
501
+ }
392
502
 
393
503
  if (!isInteractiveTerminal()) {
394
504
  throw new Error('Interactive menu requires a TTY. Use --run <acao> or --status in automated environments.');
@@ -63,6 +63,7 @@ const parseArgs = (argv) => {
63
63
  parsed.command = 'activate';
64
64
  parsed.manifest = argv[++index] ?? null;
65
65
  } else if (arg === '--activate-interactive') parsed.command = 'activate-interactive';
66
+ else if (arg === '--activate-ready') parsed.command = 'activate-ready';
66
67
  else if (arg === '--yes') parsed.yes = true;
67
68
  else if (arg === '--overwrite') parsed.overwrite = true;
68
69
  else if (arg.startsWith('--target=')) parsed.target = arg.slice('--target='.length);
@@ -103,6 +104,7 @@ Usage:
103
104
  skill-master-success-skills --mark-study-interactive
104
105
  skill-master-success-skills --reject-interactive
105
106
  skill-master-success-skills --activate <manifest.json> --target local|global|<path> --yes
107
+ skill-master-success-skills --activate-ready --target local|global|<path> --yes
106
108
  skill-master-success-skills --activate-interactive --target local|global
107
109
  `);
108
110
  };
@@ -189,7 +191,7 @@ const chooseManifest = async (directory, { readyOnly = true } = {}) => {
189
191
  }
190
192
 
191
193
  if (choices.length === 0) {
192
- throw new Error('No pending success skill drafts found.');
194
+ throw new Error('Nenhum draft pendente encontrado. Gere um pacote com: skill-master-menu --run approval-package. Para revisar a fila: skill-master-menu --run notifications');
193
195
  }
194
196
 
195
197
  const response = await prompts({
@@ -206,6 +208,27 @@ const chooseManifest = async (directory, { readyOnly = true } = {}) => {
206
208
  return response.manifest;
207
209
  };
208
210
 
211
+ const listReadyDrafts = async (directory) => {
212
+ const manifests = await listSuccessSkillDraftManifests(directory);
213
+ const approvedIndex = await readApprovedSkillIndex(approvedSkillIndexPath);
214
+ const ready = [];
215
+
216
+ for (const manifestPath of manifests) {
217
+ const draft = await readSuccessSkillDraft(manifestPath);
218
+ if (!draft || draft.governance.approved) continue;
219
+ const review = await reviewSuccessSkillDraft({ manifestPath, approvedIndex });
220
+ if (review.recommendation === 'ready-for-human-approval') {
221
+ ready.push({
222
+ manifestPath,
223
+ name: draft.candidateSkill.name,
224
+ recommendation: review.recommendation,
225
+ });
226
+ }
227
+ }
228
+
229
+ return ready;
230
+ };
231
+
209
232
  const activate = async ({ manifest, target, yes, overwrite }) => {
210
233
  if (!manifest) throw new Error('Missing manifest path.');
211
234
  const targetRoot = resolveTargetRoot(target);
@@ -241,6 +264,30 @@ const activate = async ({ manifest, target, yes, overwrite }) => {
241
264
  console.log(`- Registro: ${result.approvalRecordPath}`);
242
265
  };
243
266
 
267
+ const activateReady = async ({ directory, target, yes, overwrite }) => {
268
+ const ready = await listReadyDrafts(directory);
269
+
270
+ if (ready.length === 0) {
271
+ throw new Error('No ready learned skill drafts found. Use --approval-package to review pending drafts first.');
272
+ }
273
+
274
+ if (ready.length > 1) {
275
+ console.log('Multiple ready learned skill drafts found:');
276
+ for (const [index, draft] of ready.entries()) {
277
+ console.log(`${index + 1}. ${draft.name}`);
278
+ console.log(` Manifest: ${draft.manifestPath}`);
279
+ }
280
+ throw new Error('Multiple ready drafts require an explicit --activate <manifest.json> selection.');
281
+ }
282
+
283
+ await activate({
284
+ manifest: ready[0].manifestPath,
285
+ target,
286
+ yes,
287
+ overwrite,
288
+ });
289
+ };
290
+
244
291
  const recordDecision = async ({ command, manifest, reason }) => {
245
292
  if (!manifest) throw new Error('Missing manifest path.');
246
293
  if (!reason) throw new Error('Decision commands require --reason.');
@@ -290,8 +337,11 @@ const main = async () => {
290
337
  else if (args.command === 'mark-study' || args.command === 'reject') await recordDecision(args);
291
338
  else if (args.command === 'mark-study-interactive' || args.command === 'reject-interactive') await recordDecisionInteractive(args);
292
339
  else if (args.command === 'activate') await activate(args);
340
+ else if (args.command === 'activate-ready') await activateReady(args);
293
341
  else if (args.command === 'activate-interactive') {
294
- if (!isTty()) throw new Error('Interactive activation requires a TTY.');
342
+ if (!isTty()) {
343
+ throw new Error('Ativacao interativa requer TTY. Em automacao use: skill-master-menu --run activate-learned-local --manifest <manifest.json> --yes. Para listar manifests: skill-master-menu --run activate-learned-local --list');
344
+ }
295
345
  const manifest = await chooseManifest(args.directory);
296
346
  await activate({ ...args, manifest });
297
347
  } else {
@@ -1,76 +1,79 @@
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.12 | channel 00.06 | readiness ready ▐
55
- GLOBAL SKILLS 25/25 ▐
56
- ▌ bundle 66 | drafts 3 | study 8 ▐
57
- ▱signal ▃▂▂▄▅▇██ health ██▇▆▄▃▃▃ ▐
58
- ┗╾────────────────▰▰▰─▱─▱─▱─▱─────────────────────────────────────────────────────────────────╼┛
59
-
60
- ┌╴───────── ACTIONS▱╍╍──▱───────────────────────────────────────╶┐ ┏╾─── DNA-CORE▰───────────╼┓
61
- │ ╍ACTION MATRIX │ ▌ ▱DNA CYBER HELIX / ativa ▐
62
- │ up/down move enter run q exit │ ▌ dual strand / focus ▐
63
- window 21/23 | visible 4 │ ▌ ⠁ ⢰⣿⣿⡗⠒⠒⠓⠓⠒⠒⠚⢿⣿⣿ ⠁ ▐
64
- · Manter skill candidata para estudo │ ▌ ⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟ ▐
65
- · Rejeitar skill candidata │ ▌ ⠄ ⠝⢿⣿⣿⣿⣿⣿⣿⣿⡿⠟⠉ ⠄
66
- ╍&gt; Ativar skill aprendida no workspace │ ▌ ▱ ⢈⣿⣿⣿⣿⣿⣿⣷⣤⡀ ▐
67
- └╴───────────▱▱▱─╍─╍─╍─╍────────────────────────────────────────╶┘ ┗╾────▰───────────────────╼┛
68
- ╭╼═════════ DETAILS▰▱▱══▰═══════════════════════════════════════╾╮ ┌╴─── TELEMETRY▱──────────╶┐
69
- ▱DETAIL FOCUS ▐ ╍SYSTEM WINDOWS │
70
- Ativar skill aprendida no workspace ▐ │ [AREA] ativacao-skill │
71
- ▌ [AREA] ativacao-skill | action 21/23 ▐ │ [LEAD] frontend-ui 22 │
72
- =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ▐ │ bundle 66 ██████████
73
- ▱desc: Instala uma skill aprendida em .codex/skills do projeto ▐ ╍global 25/25 ████████ │
74
- ╰╼═══════════▰▰▰═▱═▱═▱═▱════════════════════════════════════════╾╯ └╴────▱───────────────────╶┘</pre>
75
- </body>
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: #050708;
10
+ --panel: #0b1113;
11
+ --grid: rgba(112, 230, 229, 0.08);
12
+ --line: rgba(112, 230, 229, 0.34);
13
+ --text: #ecffff;
14
+ --muted: #9aa8ad;
15
+ --cyan: #70e6e5;
16
+ --amber: #e5c27a;
17
+ }
18
+ * { box-sizing: border-box; }
19
+ body {
20
+ margin: 0;
21
+ min-height: 100vh;
22
+ background:
23
+ linear-gradient(var(--grid) 1px, transparent 1px),
24
+ linear-gradient(90deg, var(--grid) 1px, transparent 1px),
25
+ radial-gradient(circle at 70% 10%, rgba(112,230,229,0.13), transparent 36%),
26
+ radial-gradient(circle at 20% 80%, rgba(229,194,122,0.09), transparent 30%),
27
+ var(--bg);
28
+ background-size: 42px 42px, 42px 42px, auto, auto, auto;
29
+ color: var(--text);
30
+ font-family: "Courier New", monospace;
31
+ padding: 32px;
32
+ }
33
+ .frame {
34
+ max-width: max-content;
35
+ background: linear-gradient(180deg, rgba(112,230,229,0.05), rgba(255,255,255,0.01));
36
+ border: 1px solid var(--line);
37
+ box-shadow: 0 0 0 1px rgba(112,230,229,0.08), 0 24px 64px rgba(0,0,0,0.48);
38
+ padding: 20px 24px;
39
+ white-space: pre;
40
+ line-height: 1.1;
41
+ font-size: 13px;
42
+ border-radius: 10px;
43
+ }
44
+ .title {
45
+ margin: 0 0 16px;
46
+ color: var(--muted);
47
+ letter-spacing: 0.12em;
48
+ text-transform: uppercase;
49
+ font-size: 12px;
50
+ }
51
+ </style>
52
+ </head>
53
+ <body>
54
+ <p class="title">Menu Frame 96x24</p>
55
+ <pre class="frame">+----------- OVERVIEW#..--#--------------------------------------------------------------------+
56
+ | .SKILL MASTER MENU |
57
+ | version 1.0.1 | channel 1.0.1 | readiness ready |
58
+ | GLOBAL SKILLS 25/25 |
59
+ | bundle 69 | drafts 3 | study 8 |
60
+ | .signal :::-=### health ###=-::: |
61
+ +-----------------###-.-.-.-.------------------------------------------------------------------+
62
+
63
+ +---------- ACTIONS#..--#----------------------------------------+ +---- DNA-CORE#------------+
64
+ | .ACTION MATRIX | | .DNA CYBER HELIX / ativa |
65
+ | up/down move enter run q exit | | fine strand / focus |
66
+ | window 21/23 | visible 4 | | * ************ * |
67
+ | - Manter skill candidata para estudo | | *********** |
68
+ | - Rejeitar skill candidata | | * * ********* * |
69
+ | .&gt; Ativar skill aprendida no workspace | | . ******** |
70
+ +------------###-.-.-.-.-----------------------------------------+ +-----#--------------------+
71
+ +-========= DETAILS#..==#=======================================-+ +---- TELEMETRY#-----------+
72
+ | .DETAIL FOCUS | | .SYSTEM WINDOWS |
73
+ | Ativar skill aprendida no workspace | | [AREA] ativacao-skill |
74
+ | [AREA] ativacao-skill | action 21/23 | | [LEAD] frontend-ui 22 |
75
+ | [WRITES-LOCAL] [RISK:MEDIUM] [CONFIRM] [TTY] | | bundle 69 ########## |
76
+ | .=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- | | .global 25/25 ######## |
77
+ +-===========###=.=.=.=.========================================-+ +-----#--------------------+</pre>
78
+ </body>
76
79
  </html>
@@ -0,0 +1,87 @@
1
+ <!doctype html>
2
+ <html lang="pt-BR">
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <title>DNA Hero Boot</title>
6
+ <style>
7
+ :root {
8
+ color-scheme: dark;
9
+ --bg: #050708;
10
+ --panel: #0b1113;
11
+ --grid: rgba(112, 230, 229, 0.08);
12
+ --line: rgba(112, 230, 229, 0.34);
13
+ --text: #ecffff;
14
+ --muted: #9aa8ad;
15
+ --cyan: #70e6e5;
16
+ --amber: #e5c27a;
17
+ }
18
+ * { box-sizing: border-box; }
19
+ body {
20
+ margin: 0;
21
+ min-height: 100vh;
22
+ background:
23
+ linear-gradient(var(--grid) 1px, transparent 1px),
24
+ linear-gradient(90deg, var(--grid) 1px, transparent 1px),
25
+ radial-gradient(circle at 70% 10%, rgba(112,230,229,0.13), transparent 36%),
26
+ radial-gradient(circle at 20% 80%, rgba(229,194,122,0.09), transparent 30%),
27
+ var(--bg);
28
+ background-size: 42px 42px, 42px 42px, auto, auto, auto;
29
+ color: var(--text);
30
+ font-family: "Courier New", monospace;
31
+ padding: 32px;
32
+ }
33
+ .frame {
34
+ max-width: max-content;
35
+ background: linear-gradient(180deg, rgba(112,230,229,0.05), rgba(255,255,255,0.01));
36
+ border: 1px solid var(--line);
37
+ box-shadow: 0 0 0 1px rgba(112,230,229,0.08), 0 24px 64px rgba(0,0,0,0.48);
38
+ padding: 20px 24px;
39
+ white-space: pre;
40
+ line-height: 1.1;
41
+ font-size: 13px;
42
+ border-radius: 10px;
43
+ }
44
+ .title {
45
+ margin: 0 0 16px;
46
+ color: var(--muted);
47
+ letter-spacing: 0.12em;
48
+ text-transform: uppercase;
49
+ font-size: 12px;
50
+ }
51
+ </style>
52
+ </head>
53
+ <body>
54
+ <p class="title">DNA Hero Boot</p>
55
+ <pre class="frame">+----------- DNA-HERO#----#--------------------------------------------------------------------------------------------+
56
+ | .SKILL_MASTER DNA ONLINE |
57
+ | boot hero / intelligence configuration / terminal-safe animation |
58
+ | package @fprad0/skill-master-mcp | version 1.0.1 | channel 1.0.1 |
59
+ | DNA signal ===-:..:-=###==-=====::..:-== |
60
+ | DNA CYBER HELIX / geral |
61
+ | luminous fine helix / low flicker |
62
+ | * * * * * * **************** * * * * * |
63
+ | ****************** |
64
+ | * * * * * * ****** * ***** * * * * * |
65
+ | ************ |
66
+ | ************ |
67
+ | * * * * * * ***************** * * * * * |
68
+ | *** * *** |
69
+ | * * * * * * ********* **** * * * * * |
70
+ | ******** |
71
+ | ***** ******** |
72
+ | * * * * * * ***************** * * * * * |
73
+ | **** *** |
74
+ | [HELIX] frames 5/48 | global 25/25 |
75
+ | &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;=/===/ |
76
+ | ONLINE | global 25/25 | bundle 69 |
77
+ | |
78
+ | |
79
+ | |
80
+ | |
81
+ | |
82
+ | |
83
+ | |
84
+ | . |
85
+ +---------------------###----------------------------------------------------------------------------------------------+</pre>
86
+ </body>
87
+ </html>
@@ -0,0 +1,89 @@
1
+ <!doctype html>
2
+ <html lang="pt-BR">
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <title>Fine Helix Focus</title>
6
+ <style>
7
+ :root {
8
+ color-scheme: dark;
9
+ --bg: #050708;
10
+ --panel: #0b1113;
11
+ --grid: rgba(112, 230, 229, 0.08);
12
+ --line: rgba(112, 230, 229, 0.34);
13
+ --text: #ecffff;
14
+ --muted: #9aa8ad;
15
+ --cyan: #70e6e5;
16
+ --amber: #e5c27a;
17
+ }
18
+ * { box-sizing: border-box; }
19
+ body {
20
+ margin: 0;
21
+ min-height: 100vh;
22
+ background:
23
+ linear-gradient(var(--grid) 1px, transparent 1px),
24
+ linear-gradient(90deg, var(--grid) 1px, transparent 1px),
25
+ radial-gradient(circle at 70% 10%, rgba(112,230,229,0.13), transparent 36%),
26
+ radial-gradient(circle at 20% 80%, rgba(229,194,122,0.09), transparent 30%),
27
+ var(--bg);
28
+ background-size: 42px 42px, 42px 42px, auto, auto, auto;
29
+ color: var(--text);
30
+ font-family: "Courier New", monospace;
31
+ padding: 32px;
32
+ }
33
+ .frame {
34
+ max-width: max-content;
35
+ background: linear-gradient(180deg, rgba(112,230,229,0.05), rgba(255,255,255,0.01));
36
+ border: 1px solid var(--line);
37
+ box-shadow: 0 0 0 1px rgba(112,230,229,0.08), 0 24px 64px rgba(0,0,0,0.48);
38
+ padding: 20px 24px;
39
+ white-space: pre;
40
+ line-height: 1.1;
41
+ font-size: 13px;
42
+ border-radius: 10px;
43
+ }
44
+ .title {
45
+ margin: 0 0 16px;
46
+ color: var(--muted);
47
+ letter-spacing: 0.12em;
48
+ text-transform: uppercase;
49
+ font-size: 12px;
50
+ }
51
+ </style>
52
+ </head>
53
+ <body>
54
+ <p class="title">Fine Helix Focus</p>
55
+ <pre class="frame">+----------- OVERVIEW#----#--------------------------------------------------------------------------------------------+
56
+ | .SKILL MASTER MENU |
57
+ | version 1.0.1 | channel 1.0.1 | readiness ready |
58
+ | GLOBAL SKILLS 25/25 |
59
+ | bundle 69 | drafts 3 | study 8 |
60
+ | [FOCUS] roteamento / promptRecommendation |
61
+ | signal :-=####=-::- health #=-::::-=-:: |
62
+ | .moral-core 10 | frontend-ui 22 | backend-data 19 | ops-clients 12 | knowledge 2 |
63
+ +---------------------###----------------------------------------------------------------------------------------------+
64
+
65
+ +----------- ACTIONS#----#---------------------------------------------------+ +------ DNA-CORE#----------------------+
66
+ | .ACTION MATRIX | | .DNA CYBER HELIX / roteamento |
67
+ | up/down move enter run q exit | | luminous fine helix / low flicker |
68
+ | window 15/23 | visible 9 | | * * ************** * * |
69
+ | - Instalar skills globais do Skill Master | | ********** |
70
+ | - Instalar skills no projeto atual | | * * * *********** * * |
71
+ | - Ativar MCP global neste computador | | *************** |
72
+ | - Registrar clientes MCP | | **** *** |
73
+ | &gt; Ver recomendacao para um prompt &gt; | | * * ************** * * |
74
+ | - Notificacoes de skills aprendidas | | ******** |
75
+ | - Skills para estudar | | * * ************** * * |
76
+ | - Gerar pacote de aprovacao humana | | **** ***** |
77
+ | .- Manter skill candidata para estudo | | . ***************** |
78
+ +--------------###-----------------------------------------------------------+ +-------###----------------------------+
79
+ +-========== DETAILS#====#==================================================-+ +------ TELEMETRY#---------------------+
80
+ | .DETAIL FOCUS | | .SYSTEM WINDOWS |
81
+ | Ver recomendacao para um prompt | | [AREA] roteamento |
82
+ | [AREA] roteamento | action 15/23 | | [LEAD] frontend-ui 22 |
83
+ | [READ-ONLY] [RISK:LOW] [TTY] | | bundle 69 ################ |
84
+ | =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- | | global 25/25 ################ |
85
+ | desc: Abre um fluxo interativo para avaliar um prompt pelo router local. | | [LINK] cx+ cl+ gm+ ag+ |
86
+ | .detail: Ajuda a decidir se skill-master, skill_master ou skill-master-mcp | | .skills -=###==--=== |
87
+ +-=============###==========================================================-+ +-------###----------------------------+</pre>
88
+ </body>
89
+ </html>