Skip to content
Back to skills

Reef

ASecurity

Launch the coral-reef dashboard (auto-install, build, and start)

  • 11 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 23, 2026
ai-agentsgobashsqlnodegitapibackend

Works with

  • claude code
  • api

Security analysis

A92/100
  • mediumUses curl or wget to download content
  • mediumInstalls packages at runtime which could introduce malicious dependencies

Pro shows the line behind each finding and how to fix it

Scanned September 23, 2026

npx -y skills add kangig94/coral --skill reef --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Reef?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Reef
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/kangig94-reef/badge)](https://www.skillsdirectory.com/skills/kangig94-reef)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: reef
description: Launch the coral-reef dashboard (auto-install, build, and start)
argument-hint: "[--rebuild]"
---

# Coral Reef Dashboard

> **ARCHIVED — not a live skill.** Moved out of `skills/` so it is not discovered or
> exposed to users (Claude Code recursively registers every `skills/<name>/SKILL.md`; there
> is no frontmatter/naming flag to hide one in place). `coral-reef` development is paused.
> To re-enable: move this directory back to `skills/reef/`. Note the data dir
> (`~/.claude/coral-reef/`) still hardcodes `~/.claude` and does not yet honor
> `CLAUDE_CONFIG_DIR` — fix that in the `coral-reef` server repo before re-enabling.

Launch the coral-reef dashboard. Handles installation, updates, builds, and startup automatically.

The runtime injects `Base directory for this skill:` which resolves to this skill's installed path.
From there, the plugin root is two levels up, and `coral-reef/` sits as a sibling directory.

## Constants

```
REPO_URL = "https://github.com/kangig94/coral-reef"
REEF_DATA_DIR = ~/.claude/coral-reef/
REEF_PORT = 3100
```

## Protocol

### Step 1 — Resolve Paths

Derive the plugin root from the base directory injected by the framework:

```
PLUGIN_ROOT = resolve(base_directory, "../..")
REEF_DIR = resolve(PLUGIN_ROOT, "coral-reef")
```

Verify `PLUGIN_ROOT` contains `package.json` with `"name": "coral"` as a sanity check.

### Step 2 — Ensure Data Directory

```bash
mkdir -p ~/.claude/coral-reef
```

This is coral-reef's permanent SQLite storage location, surviving `/tmp` reboots.

### Step 3 — Clone or Update

Check if `REEF_DIR` exists:

- **Not exists**: `git clone ${REPO_URL} ${REEF_DIR}`
- **Exists with `.git/`**: `cd ${REEF_DIR} && git pull --ff-only`
- **Exists without `.git/`**: warn user and skip update (manual install)

### Step 4 — Dependency Resolution

Detect the install layout by checking if this is a nested plugin install or a dev workspace:

```bash
# Read coral-reef's package.json
cd ${REEF_DIR}
```

Check if the `coral` dependency in `package.json` points to the correct location:

- **Dev workspace layout** (`~/workspace/coral-reef` sibling to `~/workspace/coral`):
  The `coral` dependency should be `"file:../coral"`. Leave as-is.

- **Nested plugin install** (`${PLUGIN_ROOT}/coral-reef/` inside `${PLUGIN_ROOT}/`):
  The `coral` dependency should be `"file:.."` (parent is the plugin root = coral itself).
  If it currently says `"file:../coral"`, rewrite it to `"file:.."`.

Rewrite logic (only when nested):
```bash
# Read package.json, replace "file:../coral" with "file:.." in the coral dependency
```

Use `jq` or a JSON-safe read/write to avoid breaking package.json.

### Step 5 — Install and Build

```bash
cd ${REEF_DIR}
npm install
npm run build
```

If `--rebuild` argument is provided, always run the full install + build even if `node_modules/` exists.

If no `--rebuild` and `node_modules/` exists and `bridge/` (build output) exists, skip install/build and go straight to start.

### Step 6 — Start Server

Check if coral-reef is already running on port 3100:

```bash
curl -s http://localhost:3100/api/system/health
```

- **Already running**: inform user, skip to Step 7
- **Not running**: start in background:
  ```bash
  cd ${REEF_DIR} && node dist/server/index.js &
  ```
  Wait up to 5 seconds for the health endpoint to respond.

### Step 7 — Open Browser

```bash
open http://localhost:3100  # macOS
xdg-open http://localhost:3100  # Linux
```

Report the dashboard URL to the user.

## Error Handling

| Scenario | Action |
|----------|--------|
| `git clone` fails | Report error with URL, suggest manual clone |
| `git pull --ff-only` fails | Warn about local changes, suggest `--rebuild` after manual resolution |
| `npm install` fails | Show error output, check if coral dependency path is correct |
| `npm run build` fails | Show error output, suggest `--rebuild` to retry clean |
| Port 3100 in use by non-reef process | Warn user, show what's on the port |
| `PLUGIN_ROOT` sanity check fails | Error: cannot determine coral plugin root |

## Notes

- The dashboard data persists at `~/.claude/coral-reef/db.sqlite` across sessions
- The server connects to the coral backend via SSE for live updates
- If the coral backend is not running, the dashboard still shows historical data from SQLite
- Use `--rebuild` to force a clean install + build (useful after coral updates)

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.