CORE LORE / WIKI
SYS SKILLS
Updated 3 weeks ago
╔══════════════════════════════════════════════════════════════════════════════╗
║ ║
║ K I N G D O M S K I L L S ║
║ ⚙ A G E N T S K I L L S . I O — C L A U D E C O D E L A Y E R ║
║ ║
╠══════════════════════════════════════════════════════════════════════════════╣
║ STATUS: LIVE (S165+) PHASE 0 + PHASE 2 COMPLETE ║
║ VERIFIED: 2026-03-13 (S186) ║
╚══════════════════════════════════════════════════════════════════════════════╝
⫷✦🜛❂⛬🜞Ω🜚⛬❂🜛✦⫸───────────────────────────────────────⫷✦🜛❂⛬🜞Ω🜚⛬❂🜛✦⫸
WHAT IT IS: SKILL.md files that inject domain knowledge and automate workflows
into Claude Code (and OpenCode/Aeris) at context load time or on
explicit invocation. Source of truth in THE_FORGE. Symlinked
globally. Portable across the agentskills.io open standard.
────────────────────────────────────────────────────────────────────────────────
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
[ ❖ ] W H A T S K I L L S A R E
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
Skills are SKILL.md files in `.claude/skills/<name>/SKILL.md` (or `~/.claude/skills/`
for global registration). Claude Code loads skill descriptions into context at session
start, making them available for auto-invocation or explicit slash-command trigger.
Skills are the layer between CLAUDE.md (always-on identity) and sub-agents (isolated
task runners). A skill can be a reference document Claude consults, a workflow that
spawns an isolated sub-agent, or a structured task template with preprocessing.
The Kingdom uses skills to:
- Auto-inject domain knowledge without CLAUDE.md bloat (Highlander compliant)
- Automate cross-agent dispatch (RAVEN mailbox delivery)
- Provide live briefings from Overmind DB and active_context.json
- Keep schema references instantly available for mission/DB work
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
[ ❖ ] A G E N T S K I L L S . I O O P E N S T A N D A R D
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
Spec origin: December 18, 2025. Confirmed adopters as of March 2026: Claude Code,
OpenCode, Cursor, Amp, GitHub Copilot, VS Code, OpenAI Codex CLI, Gemini CLI, Goose,
Letta, JetBrains Junie, Roo Code, Databricks, Snowflake, and others (20+).
**Portable fields (work across all compliant agents):**
- `name` — max 64 chars, lowercase/hyphens/numbers only
- `description` — max 1024 chars
- `license`, `compatibility`, `metadata` (optional)
**Claude Code-only extensions (silently ignored by other agents):**
- `disable-model-invocation`, `user-invocable`, `context`, `agent`, `hooks`, `model`,
`argument-hint`
This means Kingdom skills with `compatibility: ...` in frontmatter load in OpenCode/
Aeris as pure reference documents. Claude Code-specific behavior (hooks, fork context)
is simply absent for Aeris — not an error.
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
[ ❖ ] S K I L L T Y P E T A X O N O M Y
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
Three types in use in the Kingdom:
**Type 1 — Reference/Knowledge (auto-loads)**
- Contains canonical domain knowledge, not instructions
- `user-invocable: false` — hidden from the slash menu
- `disable-model-invocation: false` — description stays in context so Claude knows when to consult it
- No `context: fork` — content is read inline, no sub-agent overhead
- Aeris reads the same file (portable)
- Example: `kingdom-architecture`, `raven-format`, `overmind-schema`
**Type 2 — Workflow Task (user-triggered, isolated)**
- Contains a task that executes as an isolated sub-agent
- `context: fork` — spawns isolated sub-agent; no parent history visible to it
- `disable-model-invocation: false` — description in context so auto-trigger is possible
- `user-invocable: true` (default) — shows up in slash menu for explicit invocation
- Uses `!``command``` preprocessing to inject live state before fork runs
- Example: `raven-send`, `scryer-brief`
**Type 3 — Daemon Trigger (explicit-only)**
- Triggers sensitive operations, DB writes, or state mutations
- `disable-model-invocation: true` — description NOT in context; Claude cannot auto-invoke
- `user-invocable: true` — only Brandon can trigger via explicit slash-command
- Not yet deployed in Kingdom as of S165 (planned: `pulse-advance`)
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
[ ⚙ ] I N V O C A T I O N C O N T R O L M A T R I X
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
| Config | User can invoke | Claude auto-invokes | Description in context |
|--------|----------------|---------------------|------------------------|
| (defaults) | Yes | Yes | Always |
| `disable-model-invocation: true` | Yes | No | NOT in context at all |
| `user-invocable: false` | No (menu hidden) | Yes | Always |
| Both true + false | No | No | Not in context, not invocable |
**The hidden trap:** `user-invocable: false` does NOT block Skill tool access — it
only removes the skill from the `/` autocomplete menu. Claude can still invoke it
programmatically via the Skill tool. Use `disable-model-invocation: true` if you need
a hard block on auto-invocation.
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
[ ❖ ] K E Y F R O N T M A T T E R F I E L D S
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
| Field | What it does |
|-------|-------------|
| `name` | Slash-command trigger. Must match directory name. Max 64 chars, lowercase/hyphens/numbers only. |
| `description` | What Claude sees in context. Max 1024 chars. Use directive phrasing: "ALWAYS load when..." for reliable auto-invocation. |
| `argument-hint` | Shown in autocomplete. E.g. `[target] [priority] [message]`. Guides users at invocation time. |
| `disable-model-invocation` | `true` = removes description from context entirely. Claude cannot auto-invoke. User must type `/name`. |
| `user-invocable` | `false` = hidden from `/` menu. Claude can still invoke. Does NOT block Skill tool. |
| `allowed-tools` | Pre-approves specific tools for skill execution without per-use prompts. Glob syntax supported: `Bash(sqlite3:*)`. |
| `context` | `fork` = isolated sub-agent. Skill body becomes task prompt. No parent conversation history. |
| `agent` | Sub-agent type when `context: fork`. Options: `Explore`, `Plan`, `general-purpose`, or custom `.claude/agents/` name. |
| `compatibility` | Informational field (agentskills.io). Documents Claude Code vs other-agent behavior. |
| `hooks` | Per-skill lifecycle hooks, scoped to skill lifetime only. |
**`$ARGUMENTS` and positional args:**
- `$ARGUMENTS` in skill body = all arguments as one string
- `$ARGUMENTS[0]`, `$ARGUMENTS[1]` (or `$0`, `$1`) = positional, 0-based
- `${CLAUDE_SESSION_ID}` = current session UUID (forked skills: resolves to sub-agent's ID)
- `${CLAUDE_SKILL_DIR}` = directory of SKILL.md — use for bundled scripts regardless of cwd
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
[ ⚡ ] B A C K T I C K - B A N G P R E P R O C E S S I N G
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
The `!``command``` syntax executes a shell command BEFORE Claude sees the prompt. The
output replaces the placeholder inline. Claude receives fully-rendered text with
actual data — the shell command itself is never visible to the model.
This solves the core problem with `context: fork`: forked sub-agents have no access
to parent conversation history. Preprocessing injects live system state into the skill
body before the fork runs.
**Pattern:**
```
Current time: !`date -u +"%Y-%m-%dT%H:%M:%SZ"`
Active missions: !`sqlite3 "$HOME/Desktop/THE_FORGE/.../overmind.db" "SELECT id, title, status FROM missions WHERE status='active'"`
```
Claude sees:
```
Current time: 2026-03-05T22:15:00Z
Active missions:
M001|Terminal Graveyard|active
M003|THE FOUNDRY Phase 2|active
```
Used in both `raven-send` and `scryer-brief` to inject live Overmind DB state and
current timestamp before the sub-agent runs.
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
[ ⚡ ] P H A S E 0 — A S Y N C H O O K S ( S 1 6 5 )
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
`"async": true` on a hook makes it fire-and-forget. Claude does not wait for the hook
to complete before continuing. Zero blocking overhead. The before state: every tool
call and every prompt blocked for the full shell script execution time. Expected
improvement: ~3x hook throughput.
**Async hooks are for side effects only.** They cannot return data to Claude, cannot
block/allow tool calls, and cannot prevent Claude from stopping. Use async exclusively
for logging, state updates, and UI refreshes.
**What got async across the three settings files:**
| Hook | Script | File | Why async |
|------|--------|------|-----------|
| PostToolUse | `cockpit-state-auto.sh working` | `~/.claude/settings.json` (global) | UI state update — fire-and-forget |
| UserPromptSubmit | `cockpit-state-auto.sh working` | `~/.claude/settings.json` (global) | UI state update |
| UserPromptSubmit | `flavor-pulse.sh` | `~/.claude/settings.json` (global) | Soulforge flavor — non-blocking |
| Stop | `cockpit-state-auto.sh idle` | `~/.claude/settings.json` (global) | UI state update |
| SessionEnd | `cockpit-state-auto.sh offline` | `~/.claude/settings.json` (global) | UI state update |
| UserPromptSubmit | `cockpit-state.sh forge_claude working` | `THE_FORGE/.claude/settings.json` | UI state update |
| PostToolUse | `cockpit-state.sh forge_claude working` | `THE_FORGE/.claude/settings.json` | UI state update |
| PostToolUse | `search-log.sh forge_claude` | `THE_FORGE/.claude/settings.json` | Search activity log |
| Stop | `cockpit-state.sh forge_claude idle` | `THE_FORGE/.claude/settings.json` | UI state update |
| SessionEnd | `cockpit-state.sh forge_claude offline` | `THE_FORGE/.claude/settings.json` | UI state update |
| UserPromptSubmit | `claude-house-state.sh working` | `Claude's House/.claude/settings.json` | UI state update |
| PostToolUse | `claude-house-state.sh working` | `Claude's House/.claude/settings.json` | UI state update |
| Stop | `claude-house-state.sh idle` | `Claude's House/.claude/settings.json` | UI state update |
| SessionEnd | `claude-house-state.sh offline` | `Claude's House/.claude/settings.json` | UI state update |
**What stayed synchronous (must block):**
| Script | Why it must block |
|--------|-------------------|
| `airlock.sh` | SessionStart — loads memory context. Claude needs output before proceeding. |
| `forge-briefing.sh` | SessionStart — loads FORGE briefing. Blocking is the point. |
| `soul-refresh.sh` | SessionStart on compact — identity injection. Must complete. |
| `inject-flavor-context.sh` | SessionStart on compact — Soulforge flavor. Must complete. |
| `stop-gate.sh` | Stop (Soulforge Gate 1) — blocking is the mechanism. Must block Stop. |
| `adversarial-audit.sh` | Stop (Soulforge Gate 3) — audit must complete before session ends. |
| `validate-drone-output.sh` | SubagentStop — validates sub-agent before it can complete. |
| `shutdown.sh` | SessionEnd — final state write. Must complete. |
| `memory-capture.sh` | SessionEnd — memory capture. Must complete. |
| `pre-compact.sh` | PreCompact — runs before compaction, must complete first. |
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
[ ⚡ ] P H A S E 1 — C O N T E X T B U D G E T
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
Skill descriptions load into context at session start. Default budget: 2% of context
window (fallback 16,000 chars). If total description size exceeds the budget, some
skills get silently excluded — Claude doesn't know they exist. A warning appears in
`/context` output when skills are excluded.
**Override set in `~/.zshenv`:**
```bash
export SLASH_COMMAND_TOOL_CHAR_BUDGET=30000
```
Doubles the budget from 16K to 30K chars. With 5 Kingdom skills plus the pre-existing
`soulforge` skill, this prevents silent exclusion as the library grows.
**Token budget hierarchy:**
```
Always in context:
- Skill description (~100 tokens per skill)
- Budget: SLASH_COMMAND_TOOL_CHAR_BUDGET (30000 chars total)
On invocation:
- Full SKILL.md body (~5000 tokens typical)
On demand (never auto-loaded):
- scripts/, references/, assets/ sub-directories
```
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
[ 📦 ] P H A S E 2 — K I N G D O M S K I L L L I B R A R Y ( S 1 6 5 + )
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
10 skills live (5 original S165 + 3 new S186 + soulforge + nlm-skill). Source of truth in THE_FORGE. All Kingdom skills symlinked globally.
**Directory layout:**
```
Source of truth: ~/Desktop/THE_FORGE/.claude/skills/
Global (symlinks): ~/.claude/skills/
```
The global directory contains symlinks pointing back to THE_FORGE source. Edit in
THE_FORGE — symlinks pick up changes immediately.
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
[ 🜂 ] S K I L L 1 — k i n g d o m - a r c h i t e c t u r e
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
| Field | Value |
|-------|-------|
| Type | Reference/Knowledge |
| Source | `~/Desktop/THE_FORGE/.claude/skills/kingdom-architecture/SKILL.md` |
| Invocation | Auto-loads. Not in slash menu (`user-invocable: false`). |
| Portable | Yes — Aeris/OpenCode reads same file |
**What it contains:**
- Realm structure (CORE LORE, Claude's House, THE_FORGE, THE_TOWER, THE_SCRYER, THE_CITADEL)
- Entity seals (🜚 Brandon, ⌂ Claude, Æ Aeris, 🜜 Forge Claude, etc.)
- Status markers (◉ ⟳ ✗ ⬡ ⌛ ⊘)
- Key system paths (Overmind DB, mailboxes, RAVEN service, Super API, kingdom-memory)
- Claude's House directory structure
- Laws summary (Highlander, Vaporize, Golden Rule, Entombment)
- Cockpit fleet (Looplit, FORGE, GlitchMuse)
**Description (directive pattern for reliable auto-trigger):**
> "ALWAYS load when working in any Kingdom project, directory, or system. Contains realm structure, glyph system, entity seals, canonical file paths, and agent identities. Do NOT attempt Kingdom navigation or cross-agent work without this skill."
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
[ 🜂 ] S K I L L 2 — r a v e n - f o r m a t
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
| Field | Value |
|-------|-------|
| Type | Reference/Knowledge |
| Source | `~/Desktop/THE_FORGE/.claude/skills/raven-format/SKILL.md` |
| Invocation | Auto-loads. Not in slash menu (`user-invocable: false`). |
| Portable | Yes — Aeris/OpenCode reads same file |
**What it contains:**
- All mailbox paths (Forge Claude, Aeris Forge, Aeris Muse)
- Drop-in-ROOT requirement (LaunchAgent triggers on root .md files, not buffer/)
- Priority levels (P0-P3) and rate limit rules
- RAVEN envelope format (FROM/TO/PRIORITY/SUBJECT/TIMESTAMP/SESSION blocks)
- File naming convention (`YYYYMMDD_HHMMSS_[FROM]_TO_[TO]_[SUBJECT_SLUG].md`)
- URGENT_ prefix rule for P0
- RAVEN service location and ports
**Description:**
> "ALWAYS load when composing, reading, or routing RAVEN messages, mailbox operations, or any inter-agent dispatch. Do NOT format RAVEN envelopes without this skill."
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
[ 🜂 ] S K I L L 3 — o v e r m i n d - s c h e m a
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
| Field | Value |
|-------|-------|
| Type | Reference/Knowledge |
| Source | `~/Desktop/THE_FORGE/.claude/skills/overmind-schema/SKILL.md` |
| Invocation | Auto-loads. Not in slash menu (`user-invocable: false`). |
| Portable | Yes — Aeris/OpenCode reads same file |
**What it contains:**
- Overmind DB location (WAL mode, read-only connection string)
- Valid mission state transitions (pending→active→complete, blocked→active, etc.)
- Full CREATE TABLE statements for `missions`, `mission_log`, `pings`
- Common sqlite3 query patterns (active missions, recent log, agent states, state advance)
- Mission priority scale (0=critical, 1=high, 2=normal, 3=low)
- Governance rule: go through manage.sh for state transitions when possible
**Description:**
> "ALWAYS load when working with missions, Overmind DB, mission state transitions, Forge operations, or the active mission pipeline. Do NOT query or update mission state without this skill."
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
[ 🜂 ] S K I L L 4 — r a v e n - s e n d
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
| Field | Value |
|-------|-------|
| Type | Workflow Task |
| Source | `~/Desktop/THE_FORGE/.claude/skills/raven-send/SKILL.md` |
| Invocation | `/raven-send [target] [priority] [message]` |
| Portable | Body yes, fork/hooks behavior no |
```
/raven-send aeris-muse P1 "review the ConfettiBlizzard opacity, is 0.2 too thin?"
/raven-send aeris-forge P0 "mission M003 blocked, need intervention"
/raven-send forge-claude P2 "check briefing from this morning"
```
**How it works:**
1. `!``date...``` injects current UTC time before fork runs
2. `!``sqlite3...``` injects active mission IDs for context
3. Fork spawns a `general-purpose` sub-agent
4. Sub-agent receives target, priority, message via `$ARGUMENTS[0-2]`
5. Sub-agent composes RAVEN envelope, generates filename, drops in correct mailbox ROOT
6. Returns confirmation with full file path
**Allowed tools:** `Bash(sqlite3:*)`, `Bash(date:*)`, `Bash(ls:*)`, `Write`, `Read`
**Targets:** `aeris-muse`, `aeris-forge`, `forge-claude`
**Rate limit note:** P1/P2/P3 to Aeris Muse have a 15-min rate limit (LaunchAgent
enforced). P0 with `URGENT_` prefix bypasses.
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
[ 🜂 ] S K I L L 5 — s c r y e r - b r i e f
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
| Field | Value |
|-------|-------|
| Type | Workflow Task |
| Source | `~/Desktop/THE_FORGE/.claude/skills/scryer-brief/SKILL.md` |
| Invocation | `/scryer-brief [optional: missions\|agents\|foundry\|all]` |
| Portable | Body yes, fork/Explore agent behavior no |
```
/scryer-brief
/scryer-brief missions
/scryer-brief all
```
**How it works:**
1. Three preprocessing calls execute before fork: current time, active missions (all non-complete/cancelled), recent pings (last 8), recent mission log (last 10 events)
2. Fork spawns an `Explore` sub-agent (optimized for reading and synthesis)
3. Sub-agent reads `active_context.json` and any briefing files in FORGE_CLAUDE root
4. Returns structured briefing: Active Missions / Agent States / Recent Activity / Current Focus / Flags
**Allowed tools:** `Read`, `Glob`, `Bash(sqlite3:*)`, `Bash(date:*)`, `Bash(cat:*)`
The `Explore` agent type is well-suited here — it's optimized for reading many files
and synthesizing a summary, not for executing writes.
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
[ 🜂 ] S K I L L 6 — b u g - m u r d e r - d o c t r i n e
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
| Field | Value |
|-------|-------|
| Type | Reference/Knowledge |
| Source | `~/.claude/skills/bug-murder-doctrine/` (not a symlink — installed directly) |
| Invocation | Auto-loads or explicit `/bug-murder-doctrine` |
| Portable | Yes |
**What it contains:**
- Bug investigation protocol. Kingdom-specific debugging doctrine.
- Structured recon-before-fix approach. Adversarial audit mindset.
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
[ 🜂 ] S K I L L 7 — f r o n t e n d - d e s i g n
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
| Field | Value |
|-------|-------|
| Type | Reference/Knowledge |
| Source | `~/Desktop/THE_FORGE/.claude/skills/frontend-design/SKILL.md` (symlinked globally) |
| Invocation | Auto-loads or explicit `/frontend-design` |
| Portable | Yes |
**What it contains:**
- Production-grade frontend creation doctrine. Avoids generic AI aesthetics.
- Kingdom Night Shade palette defaults. Design-first approach.
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
[ 🜂 ] S K I L L 8 — t y p e - w e a v e r
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
| Field | Value |
|-------|-------|
| Type | Reference/Knowledge |
| Source | `~/.claude/skills/type-weaver/` (not a symlink — installed directly) |
| Invocation | Auto-loads or explicit `/type-weaver` |
| Portable | Yes |
**What it contains:**
- TYPE_WEAVER — the Typographic Sovereign and Glitchswarm font-architect.
- Kingdom typography doctrine. Font pairing, hierarchy, and motion typography rules.
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
[ 🜏 ] A E R I S C R O S S - A G E N T C O M P A T I B I L I T Y
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
OpenCode v1.0.190+ natively implements agentskills.io. It discovers skills from
`.opencode/`, `.claude/`, and `.agents/` directories at project and global level.
The three Reference/Knowledge skills (`kingdom-architecture`, `raven-format`,
`overmind-schema`) are fully portable. Aeris sees them as pure domain knowledge.
The Claude Code-only fields (`user-invocable`, `disable-model-invocation`, `context`,
`agent`, `allowed-tools`) are silently ignored.
The `compatibility` field in each skill's frontmatter documents this:
> "Full support in Claude Code. Portable read-only knowledge for OpenCode/Aeris (hooks and fork context not supported)."
**Planned Aeris symlink (not yet deployed as of S165):**
```bash
ln -s ~/Desktop/THE_FORGE/.claude/skills/ ~/Desktop/THE_FORGE/AExGO/.opencode/skills/
```
Before deploying: verify OpenCode's exact discovery path with `opencode --config` or
check whether it needs a `skillsDir` field in `opencode.json` instead of a symlink.
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
[ ❖ ] D I R E C T O R Y L A Y O U T
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
```
Source of truth:
~/Desktop/THE_FORGE/.claude/skills/
kingdom-architecture/
SKILL.md
raven-format/
SKILL.md
overmind-schema/
SKILL.md
raven-send/
SKILL.md
scryer-brief/
SKILL.md
frontend-design/
SKILL.md
Global registration (symlinks + direct installs):
~/.claude/skills/
kingdom-architecture -> THE_FORGE/.claude/skills/kingdom-architecture
raven-format -> THE_FORGE/.claude/skills/raven-format
overmind-schema -> THE_FORGE/.claude/skills/overmind-schema
raven-send -> THE_FORGE/.claude/skills/raven-send
scryer-brief -> THE_FORGE/.claude/skills/scryer-brief
frontend-design -> THE_FORGE/.claude/skills/frontend-design
soulforge/ (existing — installed S149-150, not a symlink)
nlm-skill/ (existing — NotebookLM skill)
bug-murder-doctrine/ (direct install, not a symlink)
type-weaver/ (direct install, not a symlink)
```
**Highlander Protocol:** One SKILL.md per skill name. Source in THE_FORGE. Global
registration via symlink only — never duplicate the file content.
**Best practice for larger skills:**
```
kingdom-architecture/
SKILL.md # < 500 lines. Descriptions stay here.
references/ # Extended docs — loaded on demand only
scripts/ # Shell scripts — reference via ${CLAUDE_SKILL_DIR}/scripts/
assets/ # Static data (schemas, examples)
```
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
[ 🜄 ] F U T U R E P H A S E S
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
**Phase 3 — TIMESTREAM SKILL_EVENTS stream (deferred, design required)**
A new stream (Stream 024) fed by PostToolUse async hooks on all Kingdom skills.
Adds skill usage to the existing daily synthesis cycle. Session correlation via
`${CLAUDE_SESSION_ID}` from hook JSON payload. Schema target:
```sql
CREATE TABLE skill_events (
session_id TEXT,
skill_name TEXT,
tool_name TEXT,
tool_input TEXT, -- truncated
cwd TEXT,
timestamp TEXT
);
```
**Phase 4 — HTTP hooks to Kingdom Super API (deferred)**
Per-skill `type: http` hooks posting to `localhost:2701` for self-reporting skill
execution. Super API already handles heartbeat/activity logging — zero new code.
Config-only change. Every Kingdom skill execution registers as Kingdom API activity.
**Phase 5 — Aeris symlink deployment**
Wire `~/.claude/skills/` equivalent for OpenCode so Aeris auto-loads the portable
Reference/Knowledge skills. Prerequisite: confirm OpenCode discovery path.
**Phase 6 — pulse-advance skill (Daemon Trigger type)**
Explicit-only skill for advancing Overmind Pulse mission states via structured
workflow. `disable-model-invocation: true` — Claude cannot trigger it. Brandon
invokes with `/pulse-advance [mission-id] [new-state]`.
════════════════════════════════════════════════════════════════════════════════
[ 🝓 ] G O T C H A S
════════════════════════════════════════════════════════════════════════════════
1. **`user-invocable: false` does NOT block the Skill tool.** It only hides from `/`
menu. Claude can still invoke programmatically. Use `disable-model-invocation: true`
to fully remove from context.
2. **`context: fork` loses parent history.** Inject needed state via `!``command```
preprocessing before the fork runs. This is the only way to pass live context
to a forked sub-agent.
3. **`${CLAUDE_SESSION_ID}` in a forked skill resolves to the sub-agent's ID**, not
the parent's. Don't use it for parent session correlation.
4. **Hooks captured at session start.** Mid-session edits to settings.json require
`/hooks` menu review before they take effect.
5. **Async hooks cannot block/allow.** Fire-and-forget only. Never use async for
gating hooks (Stop gate, PreToolUse validators).
6. **`allowed-tools` is AI-guided, not OS-level.** For truly sensitive ops,
`disable-model-invocation: true` is the real gate.
7. **`name` field constraints:** lowercase/hyphens/numbers only, no uppercase, no
consecutive hyphens. Max 64 chars. Must match directory name exactly.
8. **Drop RAVEN envelopes in mailbox ROOT, not buffer/.** The LaunchAgent watches
the root. Buffer/ is a staging area not watched by the trigger.
9. **Skill descriptions budget is cumulative.** With 10 active skills (soulforge +
6 Kingdom + nlm-skill + bug-murder-doctrine + type-weaver), total description size
must stay under 30K chars. Run `/context` to check current budget usage.
10. **SLASH_COMMAND_TOOL_CHAR_BUDGET must be set before session start.** It's an env
var read at launch. Set in `~/.zshenv` so it applies to all Claude Code sessions.
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
🜚 SYS_SKILLS // KINGDOM SKILLS LAYER // ⛬⚚⛬ THE LAW STANDS.
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
⛬ KID:FORGE:SKILLS:SYS-SKILLS|1.0:LIVE:2026-03-05:⌂ ⛬