luminariumlisted
Install: claude install-skill eric-cielo/moflo
# /luminarium — Project Dashboard Link
Surface the URL for The Luminarium (the moflo daemon's localhost UI) for the project that this session is running in. No prompts, no confirmations — print the link and stop.
## Procedure
1. **Find the project root.** Walk up from `process.cwd()` looking for a `.moflo/` directory. The session's cwd is almost always the project root, so check there first.
2. **Read `.moflo/daemon.lock`.** It's a JSON file written by the daemon at bind time. The dashboard port is the `port` field:
```json
{ "pid": 12345, "port": 33421, "startedAt": "...", ... }
```
- If the file exists and `port` is a valid number → the daemon is running and bound. Use that port.
- If the file is missing or `port` is absent/invalid → the daemon is not running. See step 4.
3. **Print the link** in a single line, with the path verbatim — Claude Code renders it as clickable:
```
The Luminarium: http://localhost:<port>
```
Nothing else. No banner, no follow-up question, no "what would you like to do?".
4. **If the daemon isn't running** (no lock file, or unparseable), say so in one line and offer the start command — don't run it:
```
The moflo daemon isn't running for this project. Start it with: npx flo daemon start
```
## Why read the lock, not compute the port
The port is project-deterministic (sha256(projectRoot) mapped into 33000–33999), but if the deterministic port was already taken at bind time the daemon scans forward an