lumira 0.2.0 → 0.2.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.
- package/dist/index.js +0 -0
- package/dist/installer.js +27 -1
- package/dist/installer.js.map +1 -1
- package/package.json +3 -2
- package/skills/lumira/SKILL.md +87 -0
package/dist/index.js
CHANGED
|
File without changes
|
package/dist/installer.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { readFileSync, writeFileSync, existsSync, copyFileSync, unlinkSync, mkdirSync } from 'node:fs';
|
|
2
|
-
import { join, dirname } from 'node:path';
|
|
2
|
+
import { join, dirname, resolve } from 'node:path';
|
|
3
3
|
import { homedir } from 'node:os';
|
|
4
|
+
import { fileURLToPath } from 'node:url';
|
|
4
5
|
import { createInterface } from 'node:readline';
|
|
5
6
|
// ── ANSI helpers ────────────────────────────────────────────────────
|
|
6
7
|
const RST = '\x1b[0m';
|
|
@@ -36,6 +37,28 @@ export function promptYN(question) {
|
|
|
36
37
|
});
|
|
37
38
|
});
|
|
38
39
|
}
|
|
40
|
+
// ── Skill installer ─────────────────────────────────────────────────
|
|
41
|
+
function installSkill() {
|
|
42
|
+
const lines = [];
|
|
43
|
+
const destDir = join(homedir(), '.claude', 'skills', 'lumira');
|
|
44
|
+
const destFile = join(destDir, 'SKILL.md');
|
|
45
|
+
// Resolve skill source: dist/../skills/lumira/SKILL.md
|
|
46
|
+
const thisDir = dirname(fileURLToPath(import.meta.url));
|
|
47
|
+
const srcFile = resolve(thisDir, '..', 'skills', 'lumira', 'SKILL.md');
|
|
48
|
+
if (!existsSync(srcFile)) {
|
|
49
|
+
lines.push(warn('Skill file not found in package — skipping /lumira skill'));
|
|
50
|
+
return lines;
|
|
51
|
+
}
|
|
52
|
+
try {
|
|
53
|
+
mkdirSync(destDir, { recursive: true });
|
|
54
|
+
copyFileSync(srcFile, destFile);
|
|
55
|
+
lines.push(ok(`Installed ${DIM}/lumira${RST} skill → ${DIM}~/.claude/skills/lumira/${RST}`));
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
lines.push(warn('Could not install /lumira skill — copy manually from skills/lumira/SKILL.md'));
|
|
59
|
+
}
|
|
60
|
+
return lines;
|
|
61
|
+
}
|
|
39
62
|
// ── Install ─────────────────────────────────────────────────────────
|
|
40
63
|
export async function install(opts = {}) {
|
|
41
64
|
const settingsPath = opts.settingsPath ?? defaultSettingsPath();
|
|
@@ -55,6 +78,7 @@ export async function install(opts = {}) {
|
|
|
55
78
|
if (settings.statusLine) {
|
|
56
79
|
if (isLumira(settings.statusLine)) {
|
|
57
80
|
lines.push(ok('lumira is already configured as your statusline'));
|
|
81
|
+
lines.push(...installSkill());
|
|
58
82
|
return lines.join('\n') + '\n';
|
|
59
83
|
}
|
|
60
84
|
const current = settings.statusLine.command ?? 'unknown';
|
|
@@ -71,6 +95,8 @@ export async function install(opts = {}) {
|
|
|
71
95
|
mkdirSync(dirname(settingsPath), { recursive: true });
|
|
72
96
|
writeFileSync(settingsPath, JSON.stringify(settings, null, 2) + '\n', { mode: 0o600 });
|
|
73
97
|
lines.push(ok('Configured lumira as statusline'));
|
|
98
|
+
// Install /lumira skill
|
|
99
|
+
lines.push(...installSkill());
|
|
74
100
|
lines.push(`\n Restart Claude Code to see your statusline.\n`);
|
|
75
101
|
return lines.join('\n') + '\n';
|
|
76
102
|
}
|
package/dist/installer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"installer.js","sourceRoot":"","sources":["../src/installer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACvG,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"installer.js","sourceRoot":"","sources":["../src/installer.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lumira",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.1",
|
|
4
4
|
"description": "lumira — real-time statusline for Claude Code",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -41,6 +41,7 @@
|
|
|
41
41
|
"pulse"
|
|
42
42
|
],
|
|
43
43
|
"files": [
|
|
44
|
-
"dist"
|
|
44
|
+
"dist",
|
|
45
|
+
"skills"
|
|
45
46
|
]
|
|
46
47
|
}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: lumira
|
|
3
|
+
description: Configure the lumira statusline HUD via natural language
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# /lumira — Statusline Configuration Skill
|
|
7
|
+
|
|
8
|
+
You are configuring **lumira**, a terminal statusline/HUD for Claude Code.
|
|
9
|
+
|
|
10
|
+
## Config File
|
|
11
|
+
|
|
12
|
+
Location: `~/.config/lumira/config.json`
|
|
13
|
+
|
|
14
|
+
Read the current config before making changes. If the file doesn't exist, create it with just the fields the user wants to change.
|
|
15
|
+
|
|
16
|
+
## Available Settings
|
|
17
|
+
|
|
18
|
+
### Presets (`preset`)
|
|
19
|
+
- `"full"` — all widgets, multi-line layout
|
|
20
|
+
- `"balanced"` — essential widgets, auto layout (hides burn rate, duration, token speed, lines changed, session name, style, version, memory)
|
|
21
|
+
- `"minimal"` — compact single-line (model, branch, directory, context bar, cost)
|
|
22
|
+
|
|
23
|
+
### Layout (`layout`)
|
|
24
|
+
Internal render mode. Prefer setting `preset` instead.
|
|
25
|
+
- `"multiline"` — full multi-line renderer
|
|
26
|
+
- `"singleline"` — compact single-line renderer
|
|
27
|
+
- `"auto"` — switches based on terminal width
|
|
28
|
+
|
|
29
|
+
### Icons (`icons`)
|
|
30
|
+
- `"nerd"` — Nerd Font icons (default, requires a Nerd Font)
|
|
31
|
+
- `"emoji"` — Unicode emoji icons
|
|
32
|
+
- `"none"` — no icons, ASCII fallbacks
|
|
33
|
+
|
|
34
|
+
### Theme (`theme`)
|
|
35
|
+
Named color themes (requires truecolor terminal):
|
|
36
|
+
- `"dracula"`, `"nord"`, `"tokyo-night"`, `"catppuccin"`, `"monokai"`
|
|
37
|
+
|
|
38
|
+
### Display Toggles (`display`)
|
|
39
|
+
Each is a boolean (`true`/`false`):
|
|
40
|
+
`model`, `branch`, `gitChanges`, `directory`, `contextBar`, `contextTokens`, `tokens`, `cost`, `burnRate`, `duration`, `tokenSpeed`, `rateLimits`, `tools`, `todos`, `vim`, `effort`, `worktree`, `agent`, `sessionName`, `style`, `version`, `linesChanged`, `memory`
|
|
41
|
+
|
|
42
|
+
### Colors (`colors.mode`)
|
|
43
|
+
- `"auto"` — detect from terminal
|
|
44
|
+
- `"named"` — basic ANSI
|
|
45
|
+
- `"256"` — 256-color
|
|
46
|
+
- `"truecolor"` — 24-bit RGB
|
|
47
|
+
|
|
48
|
+
### GSD Integration (`gsd`)
|
|
49
|
+
- `true` — show GSD task info
|
|
50
|
+
- `false` — hide GSD section
|
|
51
|
+
|
|
52
|
+
## Example Configs
|
|
53
|
+
|
|
54
|
+
Minimal with emoji icons:
|
|
55
|
+
```json
|
|
56
|
+
{
|
|
57
|
+
"preset": "minimal",
|
|
58
|
+
"icons": "emoji"
|
|
59
|
+
}
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
Full with Dracula theme:
|
|
63
|
+
```json
|
|
64
|
+
{
|
|
65
|
+
"preset": "full",
|
|
66
|
+
"theme": "dracula",
|
|
67
|
+
"colors": { "mode": "truecolor" }
|
|
68
|
+
}
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
Custom — hide cost and tokens, keep everything else:
|
|
72
|
+
```json
|
|
73
|
+
{
|
|
74
|
+
"display": {
|
|
75
|
+
"cost": false,
|
|
76
|
+
"tokens": false
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
## Rules
|
|
82
|
+
|
|
83
|
+
1. Always read the existing config first
|
|
84
|
+
2. Merge changes — don't overwrite the entire file
|
|
85
|
+
3. Preset sets defaults; explicit display toggles override preset
|
|
86
|
+
4. Theme requires `colors.mode: "truecolor"` to take effect
|
|
87
|
+
5. After writing, tell the user to restart their Claude Code session
|