chore(skills): enhance atlas skill with author-system pipeline

Added 6 reference subfiles for the per-system body catalog authoring
pipeline:
- author-system.md — full 7-step workflow (wiki analysis → astrophysics
  → Miri naming → Paula gate → Paula+Ozzie dual review → integrity
  check → commit)
- wiki-analysis.md — extraction logic, 7-questions framework, population
  heuristics
- naming-brief.md — Miri prompt template (wiki-derived register, collision
  avoidance, all inhabited + stations in one pass)
- review-paula.md — narrative/political integrity checklist
- review-ozzie.md — player experience + astrophysical sanity checklist
  (reads wiki for exception justification)
- integrity-check.md — automated pre-commit verification rules

SKILL.md updated with author-system section and Agent tool permission.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-03-25 14:20:14 +01:00
co-authored by Claude Opus 4.6
parent cd3a9d1c87
commit 62a7cc0223
7 changed files with 385 additions and 3 deletions
+30 -3
View File
@@ -2,10 +2,11 @@
name: atlas
description: >
Query and manage celestial bodies and stations in systems.db. Use when the user
says "atlas", "show system", "list bodies", "list stations", "populate bodies",
"show body", or invokes /atlas. Wraps the Rust atlas CLI binary.
says "atlas", "show system", "list bodies", "list stations", "author system",
"show body", or invokes /atlas. Wraps the Rust atlas CLI binary. Also provides
the full per-system authoring pipeline via "author-system" subcommand.
user-invocable: true
allowed-tools: Bash, Read, Grep, Glob
allowed-tools: Bash, Read, Grep, Glob, Write, Edit, Agent
---
# Atlas Skill
@@ -125,6 +126,32 @@ System (star_systems)
Bodies have a self-referential `parent_body_id` for moons → planet relationships.
Stations reference `orbits_body_id` for what they orbit.
## Author System (Full Pipeline)
```bash
/atlas author-system "GJ XXX"
```
Walks a single system through the complete body catalog authoring pipeline.
See `references/author-system.md` for the full workflow.
**Steps:**
1. Wiki analysis → build context from index.md + gttr.md
2. Astrophysical skeleton → generate bodies from star type rules
3. Naming → spawn Miri (wiki-derived register, collision avoidance)
4. Narrative review → Paula gate (names, population, stations vs wiki)
5. Dual quality review → Paula (narrative) + Ozzie (experience + astrophysics)
6. Mechanical integrity check
7. Commit + sync-wiki + git commit
**Review references:**
- `references/author-system.md` — full step-by-step workflow
- `references/wiki-analysis.md` — extraction logic and 7-questions framework
- `references/naming-brief.md` — Miri prompt template
- `references/review-paula.md` — Paula's review checklist
- `references/review-ozzie.md` — Ozzie's review checklist (includes astrophysical sanity)
- `references/integrity-check.md` — automated verification rules
## Scope — A True Atlas
This skill will grow to cover the full geographic hierarchy of the Reach:
@@ -0,0 +1,98 @@
# Author System — Full Pipeline
Process a single star system from wiki analysis to committed body catalog.
## Invocation
```
/atlas author-system "GJ XXX"
```
## Step 1: Wiki Analysis
Read `wiki/star-systems/{slug}/index.md` and `wiki/star-systems/{slug}/gttr.md`.
Build understanding of:
- System identity: name, sector, hop, wave, topology, apertures, star type
- Economic character: what does the system produce, import, export?
- Cultural heritage: founding culture, corridor, exception archetype
- Industrial affiliation: MVG, DSMC, Gate Corp, Prometheus, Agricultural Syndic
- Named bodies/locations already in the wiki text
- Population (if wiki specifies)
- The 7 questions (see `references/wiki-analysis.md`)
This context feeds all subsequent steps but is NOT written to the JSON.
## Step 2: Astrophysical Skeleton
Run `tooling/atlas author "{system_id}"` to generate the base proposal JSON.
Enrich with realistic body counts per star type:
- G/F stars: 8+ planets
- K stars: 7+ planets
- M dwarfs: 6+ planets
- A/B hot stars: 6+ planets
Always include: oort cloud, asteroid belt (unless wiki contradicts), gas giant
(most systems have one), horizon station.
Moons: 1 per habitable planet, 2-3 per gas giant, max 4.
Fill physical parameters:
- surface_gravity from mass_class (terrestrial 0.2-1.1, dwarf 0.01-0.15)
- orbital_period from orbit position + star luminosity
- rotation_period from orbital mechanics + tidal considerations
- atmosphere/biome/hydrosphere from habitable zone position
Fill structural fields from wiki context:
- economic_role, industrial_corridor, settlement_pattern
- Add stations where wiki implies: transit hub → orbital, industrial → manufacturing station, research → research station, agricultural exporter → freight terminal
Write the enriched proposal to `docs/atlas/proposals/{id}.json`.
## Step 3: Naming
Spawn Miri (subagent_type: miri). See `references/naming-brief.md` for the
full prompt template.
Key rules:
- Miri reads the wiki text directly — derives naming register from THAT
- Names ALL inhabited bodies AND ALL stations in one pass
- Checks for collisions against existing DB names
- Uninhabited bodies get proper_name = null (body_id is the label)
Update the proposal JSON with Miri's names.
## Step 4: Narrative Review (Paula Gate)
Spawn Paula (subagent_type: paula). See `references/review-paula.md`.
Format the proposal as a markdown table and present to Paula with the
wiki text. Paula reviews for narrative/political coherence.
Loop Steps 3-4 until Paula approves.
## Step 5: Dual Quality Review
Spawn Paula + Ozzie in parallel. See `references/review-paula.md` and
`references/review-ozzie.md`.
Both review the proposal JSON + wiki. Both must approve before commit.
Either can flag issues that loop back to Step 3.
## Step 6: Integrity Check
Run automated checks per `references/integrity-check.md`. Fix any
failures before proceeding.
## Step 7: Commit
```bash
tooling/atlas commit-system docs/atlas/proposals/{id}.json
tooling/atlas sync-wiki "{system_id}"
git add docs/atlas/proposals/{id}.json wiki/star-systems/{slug}/index.md
git commit -m "data(atlas): author {system_name} ({system_id}) — {named bodies summary}"
```
Post-commit: verify topology section survived sync-wiki. If missing,
restore from star-map.json data and recommit.
@@ -0,0 +1,50 @@
# Integrity Check — Automated Verification
Run these checks on the proposal JSON before commit. All must pass.
## Checks
1. **Inhabited bodies have names:**
Every body with `inhabited: true` must have `proper_name` set (not null).
2. **Uninhabited bodies have no names:**
Every body with `inhabited: false` must have `proper_name: null`.
Exception: bodies that serve as named research outposts (e.g., "Corrosion
Bench") where the name IS the body's identity.
3. **All stations have names:**
Every station must have `proper_name` set. Use the station_id as the
name if the station has no cultural name (e.g., "GJ406g-S1" for an
anonymous fuel depot).
4. **No name collisions:**
```sql
SELECT proper_name FROM bodies WHERE proper_name IS NOT NULL
UNION SELECT proper_name FROM stations WHERE proper_name IS NOT NULL
```
No proposed name may duplicate an existing name in the database.
5. **Body count minimum:**
- G/F stars: ≥ 8 planets (excluding moons, belts, oort)
- K stars: ≥ 7 planets
- M dwarfs: ≥ 6 planets
- A/B stars: ≥ 6 planets
6. **Required structures:**
- Oort cloud body present
- Horizon station present with `has_gate_infrastructure: true`
- At least 1 asteroid belt (unless wiki explicitly contradicts)
7. **Orbit consistency:**
- `orbit_index` increases monotonically for top-level bodies
- No duplicate `orbit_index` at the same parent level
- Moon `orbit_index` starts at 1 within parent
8. **Parent references valid:**
- Every moon's `parent_body_id` references a body in the same proposal
- Every station's `orbits_body_id` references a body in the same proposal
## Running the Check
Parse the proposal JSON and verify each rule programmatically. Report
all failures, not just the first one.
@@ -0,0 +1,41 @@
# Miri Naming Brief Template
## Spawn Prompt
```
Name bodies and stations for {system_name} ({system_id}).
Read wiki/star-systems/{slug}/index.md and wiki/star-systems/{slug}/gttr.md.
{star_type}, {sector}, {topology} with {apertures} apertures, {wave}.
{one-line summary of system character from wiki}.
Names needed:
{list each inhabited body and station that needs a proper_name}
Register: derive the naming register from the wiki text. The wiki already
carries the cultural variation from the corridor authoring. Read the wiki
voice — the names should match the culture described THERE, not a lookup
table.
Collision avoidance — these names are already in use:
{query: SELECT proper_name FROM bodies WHERE proper_name IS NOT NULL
UNION SELECT proper_name FROM stations WHERE proper_name IS NOT NULL}
Name ALL inhabited bodies AND ALL stations in one pass.
Uninhabited bodies do NOT get names (proper_name stays null).
ONE name + one-line rationale per location. Message only, no file.
```
## Rules
- Wiki names override Miri: if the wiki already names a body or station,
USE THAT NAME. Do not invent alternatives.
- Do not translate names in the notes field — translations flatten the name
into a label.
- Station names should not be generic descriptions of function ("Transit Hub",
"The Exchange"). They should feel like real place names that happened to
be assigned to transit/exchange facilities.
- Every inhabited body and every station MUST get a proper_name.
- Uninhabited bodies MUST have proper_name = null (body_id is the UI label).
@@ -0,0 +1,71 @@
# Ozzie Review Checklist
Ozzie reviews for player experience quality AND astrophysical sanity.
## Spawn Prompt
```
Review the body catalog proposal for {system_name} ({system_id}).
Read:
- wiki/star-systems/{slug}/index.md
- wiki/star-systems/{slug}/gttr.md
- docs/atlas/proposals/{id}.json
You are reviewing from two angles: player experience and astrophysical
integrity.
## Player Experience
1. **Does this system feel like a real place?** Read the body table as
if you were a player opening the navigator. Does it have character,
or is it generic? Would you want to visit?
2. **Is there at least one interesting detail?** An empty habitable
moon nobody claimed. A research outpost with a functional name. A
gas giant with rings. Something the player notices.
3. **Orbital schematic test:** Picture the system in the orbital
schematic wireframe (star → concentric orbits → bodies). Does it
look good? Is there visual variety — not all bodies clumped at the
same distance?
4. **Does the system have texture?** Are there enough bodies to feel
like a real star system? (Minimum 6 planets for any star.) Are
there moons, belts, gas giants — not just habitable worlds?
## Astrophysical Sanity
Review as an astronomer. Check against the wiki — if the wiki states
an explicit reason for an exception (variable star, subgiant, binary
companion, unusual stellar history), the body catalog should reflect
that exception. If no exception is stated, standard astrophysics applies.
5. **Body count for star type:** G/F → 8+, K → 7+, M → 6+, A/B → 6+.
Is the count met?
6. **Habitable zone position:** Is the habitable planet at the right
orbital distance for this spectral type? M-dwarfs: close in (short
orbital periods). A/B stars: far out (long orbital periods).
7. **Orbital periods:** Do they increase monotonically outward? Are
they plausible for the star's luminosity? Inner planets: days to
months. Habitable zone: months to a year. Outer: years.
8. **Surface gravity:** Terrestrial 0.2-1.2g. Dwarf/moon 0.01-0.15g.
Gas giants: null. Does mass_class match gravity?
9. **Tidal locking:** Close-in M-dwarf planets and moons should be
tidally locked (rotation_period ≈ orbital_period × 24).
10. **Atmosphere consistency:** Barren inner planets: none. Habitable:
breathable. Venus-analogs: toxic. Frozen outer: thin or none.
Gas giants: dense. Do any bodies have impossible atmospheres?
11. **Binary/exotic handling:** If the star is binary, are bodies
on plausible orbits (circumbinary or around one component)? If
exotic (white dwarf, subgiant, variable), does the body catalog
reflect the stellar physics?
Respond with: APPROVE, or specific issues to fix (with rationale).
```
@@ -0,0 +1,42 @@
# Paula Review Checklist
Paula reviews the proposal JSON + wiki for narrative and political integrity.
## Spawn Prompt
```
Review the body catalog proposal for {system_name} ({system_id}).
Read:
- wiki/star-systems/{slug}/index.md
- wiki/star-systems/{slug}/gttr.md
- docs/atlas/proposals/{id}.json
Check the following against the wiki's established narrative:
1. **Names vs cultural voice:** Do the proper_names fit the cultural
register established in the wiki text? A Japanese-heritage system
should have Japanese-register names. A Commonwealth system should
have institutional names. Does anything jar?
2. **Population vs narrative role:** Do the population numbers make
sense for this system's described economic and political role?
A "modest transit waypoint" shouldn't have 3B people. A "major
manufacturing base" shouldn't have 50M.
3. **Stations vs power dynamics:** Do the station placements reflect
the political and economic dynamics described in the wiki? If the
wiki describes a corporate-controlled system, is there a corporate
station? If the wiki describes a research mandate, is there a
research facility?
4. **Coherence:** Read the body catalog as a table. Does it tell a
story that's consistent with the wiki's narrative? Would a reader
of the wiki be surprised by anything in the body catalog?
5. **Contradictions:** Does anything in the body catalog directly
contradict the wiki's faction notes, silence topic, or calibration
note?
Respond with: APPROVE, or specific issues to fix (with rationale).
```
@@ -0,0 +1,53 @@
# Wiki Analysis Framework
## What to Extract
Read `wiki/star-systems/{slug}/index.md` and `gttr.md`. Build context for:
### Identity
- System proper name (from wiki heading, may differ from DB)
- Star type and spectral class
- Sector, hop distance, settlement wave
- Gate topology and aperture count
### Economy & Culture
- Economic character (from Supply Dependency section)
- Cultural heritage (from Calibration Note or Faction Notes)
- Industrial corridor affiliation (MVG, DSMC, Gate Corp, Prometheus, Agricultural Syndic)
- Exception archetype if applicable (Early Arrival, Corporate Reset, Refugee Colony, Idealist Exception, Gate Silence Survivor, Perpetual Founder Stamp)
### Existing Names
- Any body names mentioned in the wiki text (planets, moons, stations)
- Any location names (cities, districts, facilities)
- These MUST be used in the proposal — do not invent alternatives
### Population
- Wiki population number (from frontmatter or text)
- If not specified, estimate from system role and hop distance
## The 7 Questions
Derive answers from the wiki text. These guide naming, population,
and station decisions:
1. **What do people do here?** → economic_role for inhabited bodies
2. **Who holds power?** → governance implications for station types
3. **What is the main tension?** → narrative character of the system
4. **What does the Assembly mean here?** → institutional presence level
5. **Relationship to nearest hub?** → transit infrastructure needs
6. **Oldest living thing?** → cultural depth and naming age
7. **What is this system afraid of?** → vulnerability that shapes infrastructure
## Population Heuristics
When wiki doesn't specify:
| Topology | Wave 1-2 | Wave 3-4 | Wave 5 |
|----------|----------|----------|--------|
| Hub (5+) | 2-5B | 1-3B | 100-500M |
| Junction (3-4) | 1-3B | 500M-2B | 50-200M |
| Loop/Through (2) | 500M-2B | 200M-1B | 20-100M |
| Dead end/Spur (1-2) | 200M-1B | 50-500M | 5-50M |
Adjust for: system role (capital → higher, research → lower), industrial
corridor (manufacturing → higher), agricultural character (dispersed → moderate).