Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Generate blessed widgets for Node.js terminal UIs with boxes, lists, forms, and dashboard layouts.
.claude/skills/a5c-ai-blessed-widget-generator/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-04 | ✗→✓ | ▲ Improved | 22% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 5% | 0% |
| case-08 | ✗→✓ | ▲ Improved | -3% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 61% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 33% | 0% |
Generate blessed widgets for Node.js terminal UIs.
Invoke this skill when you need to:
| Parameter | Type | Required | Description | |-----------|------|----------|-------------| | projectName | string | Yes | Project name | | layout | string | No | Layout type (dashboard, form, list) | | widgets | array | No | Widget definitions |
javascriptconst blessed = require('blessed'); const contrib = require('blessed-contrib'); // Create screen const screen = blessed.screen({ smartCSR: true, title: 'System Dashboard', }); // Create grid layout const grid = new contrib.grid({ rows: 12, cols: 12, screen: screen, }); // CPU Line Chart const cpuLine = grid.set(0, 0, 4, 6, contrib.line, { style: { line: 'yellow', text: 'green', baseline: 'black' }, xLabelPadding: 3, xPadding: 5, showLegend: true, label: 'CPU Usage', }); // Memory Gauge const memGauge = grid.set(0, 6, 4, 6, contrib.gauge, { label: 'Memory Usage', stroke: 'green', fill: 'white', }); // Log Box const logBox = grid.set(4, 0, 4, 12, contrib.log, { fg: 'green', selectedFg: 'green', label: 'Logs', }); // Process Table const processTable = grid.set(8, 0, 4, 12, contrib.table, { keys: true, fg: 'white', selectedFg: 'white', selectedBg: 'blue', interactive: true, label: 'Processes', columnSpacing: 4, columnWidth: [10, 30, 10, 10], }); // Update data function updateDashboard() { // CPU data cpuLine.setData([{ title: 'CPU', x: ['1', '2', '3', '4', '5'], y: [Math.random() * 100, Math.random() * 100, Math.random() * 100, Math.random() * 100, Math.random() * 100], }]); // Memory memGauge.setPercent(Math.random() * 100); // Logs logBox.log(`[${new Date().toISOString()}] System event`); // Processes processTable.setData({ headers: ['PID', 'Name', 'CPU', 'MEM'], data: [ ['1234', 'node', '2.5%', '150MB'], ['5678', 'chrome', '15.2%', '500MB'], ], }); screen.render(); } // Key bindings screen.key(['escape', 'q', 'C-c'], () => process.exit(0)); // Update interval setInterval(updateDashboard, 1000); updateDashboard(); screen.render();
javascriptconst blessed = require('blessed'); const screen = blessed.screen({ smartCSR: true, title: 'Configuration Form', }); const form = blessed.form({ parent: screen, keys: true, left: 'center', top: 'center', width: 60, height: 20, border: { type: 'line' }, style: { border: { fg: 'blue' } }, }); // Input field blessed.text({ parent: form, top: 1, left: 2, content: 'Username:', }); const usernameInput = blessed.textbox({ parent: form, name: 'username', top: 1, left: 12, height: 1, width: 40, inputOnFocus: true, style: { fg: 'white', bg: 'black' }, }); // Password field blessed.text({ parent: form, top: 3, left: 2, content: 'Password:', }); const passwordInput = blessed.textbox({ parent: form, name: 'password', top: 3, left: 12, height: 1, width: 40, censor: true, inputOnFocus: true, style: { fg: 'white', bg: 'black' }, }); // Submit button const submitBtn = blessed.button({ parent: form, name: 'submit', content: ' Submit ', top: 6, left: 'center', shrink: true, style: { fg: 'white', bg: 'blue', focus: { bg: 'green' }, }, }); submitBtn.on('press', () => { form.submit(); }); form.on('submit', (data) => { console.log('Form data:', data); process.exit(0); }); screen.key(['escape', 'q'], () => process.exit(0)); screen.render();
json{ "dependencies": { "blessed": "^0.1.81", "blessed-contrib": "^4.10.1" } }
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 14,066 | 10,124 | -28% | 1 | 1 | 0% | 3,006 | 3,578 | +19% | 0 | 0 | — |
case-02 | fail→fail | 11,571 | 10,459 | -10% | 1 | 1 | 0% | 2,339 | 3,710 | +59% | 0 | 0 | — |
case-03 | fail→fail | 11,203 | 7,477 | -33% | 1 | 1 | 0% | 2,136 | 2,958 | +38% | 0 | 0 | — |
case-04 | fail→pass | 10,806 | 5,117 | -53% | 1 | 1 | 0% | 2,018 | 2,470 | +22% | 0 | 0 | — |
case-05 | fail→pass | 12,637 | 6,000 | -53% | 1 | 1 | 0% | 2,293 | 2,407 | +5% | 0 | 0 | — |
case-06 | fail→fail | 18,214 | 6,020 | -67% | 1 | 1 | 0% | 4,319 | 2,715 | -37% | 0 | 0 | — |
case-07 | fail→fail | 10,178 | 7,179 | -29% | 1 | 1 | 0% | 2,172 | 2,956 | +36% | 0 | 0 | — |
case-08 | fail→pass | 16,308 | 5,376 | -67% | 1 | 1 | 0% | 2,525 | 2,440 | -3% | 0 | 0 | — |
case-09 | fail→pass | 7,530 | 4,283 | -43% | 1 | 1 | 0% | 1,393 | 2,248 | +61% | 0 | 0 | — |
case-10 | fail→fail | 12,554 | 9,738 | -22% | 1 | 1 | 0% | 2,573 | 3,637 | +41% | 0 | 0 | — |
case-11 | fail→pass | 11,128 | 6,355 | -43% | 1 | 1 | 0% | 2,066 | 2,739 | +33% | 0 | 0 | — |
case-12 | fail→pass | 8,781 | 4,716 | -46% | 1 | 1 | 0% | 1,506 | 2,346 | +56% | 0 | 0 | — |
case-13 | fail→pass | 12,132 | 3,835 | -68% | 1 | 1 | 0% | 2,110 | 2,118 | +0% | 0 | 0 | — |
case-14 | fail→fail | 13,389 | 4,866 | -64% | 1 | 1 | 0% | 2,562 | 2,450 | -4% | 0 | 0 | — |
case-15 | fail→pass | 11,466 | 5,989 | -48% | 1 | 1 | 0% | 2,204 | 2,451 | +11% | 0 | 0 | — |
case-16 | fail→pass | 11,822 | 6,170 | -48% | 1 | 1 | 0% | 1,897 | 2,457 | +30% | 0 | 0 | — |
case-17 | fail→pass | 13,664 | 3,272 | -76% | 1 | 1 | 0% | 2,551 | 2,035 | -20% | 0 | 0 | — |
case-18 | fail→pass | 10,955 | 3,321 | -70% | 1 | 1 | 0% | 1,988 | 2,067 | +4% | 0 | 0 | — |
case-19 | fail→pass | 10,352 | 4,182 | -60% | 1 | 1 | 0% | 1,971 | 2,081 | +6% | 0 | 0 | — |
case-20 | fail→fail | 12,495 | 14,284 | +14% | 1 | 1 | 0% | 2,787 | 4,729 | +70% | 0 | 0 | — |
case-21 | fail→fail | 19,081 | 17,580 | -8% | 1 | 1 | 0% | 4,052 | 5,459 | +35% | 0 | 0 | — |
case-22 | fail→fail | 14,433 | 9,791 | -32% | 1 | 1 | 0% | 3,369 | 3,570 | +6% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +55 percentage points is the difference between those two pass rates over the 22 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.