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:
@@ -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).
|
||||
Reference in New Issue
Block a user