Agent Skills: Update Reverie Inventory Skill

Update the Reverie domain schema inventory when schemas are added or removed. Use when adding new domains, after CI flags inventory mismatches, or periodically to ensure docs match the registry.

UncategorizedID: autumnsgrove/groveengine/update-reverie-inventory

Install this agent skill to your local

pnpm dlx add-skill https://github.com/AutumnsGrove/Lattice/tree/HEAD/.claude/skills/update-reverie-inventory

Skill Files

Browse the full folder contents for update-reverie-inventory.

Download Skill

Loading file tree…

.claude/skills/update-reverie-inventory/SKILL.md

Skill Metadata

Name
update-reverie-inventory
Description
Update the Reverie domain schema inventory when schemas are added or removed. Use when adding new domains, after CI flags inventory mismatches, or periodically to ensure docs match the registry.

Update Reverie Inventory Skill

When to Activate

Activate this skill when:

  • Adding new Reverie domain schemas
  • Removing or deprecating domains
  • The reverie-inventory CI check fails
  • You want to verify inventory matches the schema registry
  • After modifying field counts in existing schemas
  • Adding or removing atmosphere entries

Files Involved

| File | Purpose | | ------------------------------------------------- | --------------------------------------------- | | .github/reverie-inventory.json | Source of truth for schema counts and metadata | | libs/engine/src/lib/reverie/index.ts | Schema registry and domain catalog | | libs/engine/src/lib/reverie/types.ts | DomainId type union and type definitions | | libs/engine/src/lib/reverie/atmosphere.ts | Atmosphere manifold entries | | libs/engine/src/lib/reverie/schemas/**/*.ts | Individual domain schema files | | docs/specs/reverie-spec.md | Reverie specification |

Inventory Structure

The inventory tracks schemas with full metadata:

{
  "schemas": {
    "total": 32,
    "implemented": 32,
    "planned": 0,
    "breakdown": {
      "identity": 3,
      "appearance": 6,
      "content": 3,
      "social": 4,
      "curios": 14,
      "infra": 2
    },
    "byPhase": { "1": 5, "2": 6, "3": 6, "4": 12, "5": 3 }
  },
  "fields": {
    "total": 176,
    "byGroup": { ... }
  },
  "atmospheres": {
    "total": 14,
    "keywords": ["cozy", "cottagecore", ...]
  },
  "domains": [
    { "id": "foliage.accent", "group": "appearance", "phase": 1, "fieldCount": 1, "file": "appearance/accent.ts" }
  ]
}

Step-by-Step Process

1. Count Schema Files

# Count all schema .ts files (excluding index.ts, types.ts, atmosphere.ts)
find libs/engine/src/lib/reverie/schemas -name "*.ts" -type f | wc -l

# List all schema files by group
find libs/engine/src/lib/reverie/schemas -name "*.ts" -type f | sort

2. Count Fields in Each Schema

# Count fields per schema (look for field definitions in the fields object)
# Each key in the fields: { ... } object is a field
grep -c "type:" libs/engine/src/lib/reverie/schemas/**/*.ts

3. Count Atmospheres

# Count atmosphere entries in the manifold
grep -c "keyword:" libs/engine/src/lib/reverie/atmosphere.ts

4. Compare with Inventory

# Read current inventory totals
jq '.schemas.total, .schemas.implemented, .fields.total, .atmospheres.total' .github/reverie-inventory.json

5. Identify Discrepancies

Look for:

  • New schemas: Schema files that exist but aren't in the inventory
  • Removed schemas: Inventory entries without corresponding files
  • Field count changes: Schema field counts that don't match inventory
  • Missing DomainId: Schema IDs not in the DomainId type union
  • Missing registry entries: Schemas not in SCHEMA_REGISTRY
  • Missing catalog entries: Schemas not in DOMAIN_CATALOG

6. Update Inventory JSON

Edit .github/reverie-inventory.json:

  1. Update schema counts:

    "schemas": {
      "total": <file count>,
      "implemented": <implemented count>,
      "planned": <planned count>,
      "breakdown": { <group counts> }
    }
    
  2. Update field counts:

    "fields": {
      "total": <sum of all fieldCount>,
      "byGroup": { <group field sums> }
    }
    
  3. Add/remove domain entries

  4. Update atmospheres if changed

  5. Update metadata:

    "lastUpdated": "YYYY-MM-DD",
    "lastAuditedBy": "claude/<context>"
    

7. Update DomainId Type (if adding new domains)

Edit libs/engine/src/lib/reverie/types.ts:

export type DomainId =
  // Identity
  | "identity.profile"
  | "identity.newdomain"  // Add new domain
  // ...

8. Update Schema Registry (if adding new domains)

Edit libs/engine/src/lib/reverie/index.ts:

  1. Add import for the new schema
  2. Add entry to SCHEMA_REGISTRY
  3. Add/update entry in DOMAIN_CATALOG

9. Commit Changes

git add .github/reverie-inventory.json libs/engine/src/lib/reverie/
git commit -m "docs: update reverie inventory

- Add <domain_id> to inventory
- Update schema total: X -> Y
- Update field total: X -> Y"

Quick Reference Commands

# Count schema files
find libs/engine/src/lib/reverie/schemas -name "*.ts" -type f | wc -l

# List all domain IDs from schema exports
grep -rh "id:" libs/engine/src/lib/reverie/schemas/ | grep -oP '"[a-z]+\.[a-z]+"' | sort -u

# Count atmosphere keywords
grep -c "keyword:" libs/engine/src/lib/reverie/atmosphere.ts

# Count total fields across all schemas
grep -rh "type:" libs/engine/src/lib/reverie/schemas/ | grep -v "import\|export\|DomainSchema\|cursorType\|pollType" | wc -l

# Show inventory summary
jq '{schemas: .schemas.total, implemented: .schemas.implemented, fields: .fields.total, atmospheres: .atmospheres.total}' .github/reverie-inventory.json

# List schemas by group
jq -r '.domains[] | "\(.group)\t\(.id)\t\(.fieldCount) fields"' .github/reverie-inventory.json | sort

Adding a New Domain (Full Checklist)

When adding a new domain schema:

  • [ ] Create schema file: libs/engine/src/lib/reverie/schemas/{group}/{domain}.ts
  • [ ] Export the schema constant with the DomainSchema type
  • [ ] Add the domain ID to DomainId type in types.ts
  • [ ] Import and add to SCHEMA_REGISTRY in index.ts
  • [ ] Add CatalogEntry to DOMAIN_CATALOG in index.ts
  • [ ] Add domain entry to .github/reverie-inventory.json domains array
  • [ ] Update inventory counts (schemas.total, fields.total, breakdowns)
  • [ ] Update lastUpdated and lastAuditedBy
  • [ ] Re-export any domain-specific constants from index.ts
  • [ ] Commit all changes together

CI Integration

The .github/workflows/reverie-inventory.yml workflow:

  • Runs on PRs touching libs/engine/src/lib/reverie/**
  • Counts schema files and compares to inventory
  • Counts field definitions and compares to inventory
  • Counts atmosphere entries and compares to inventory
  • Comments on PRs when there's a mismatch
  • Creates issues for drift on scheduled runs (Fridays)

When CI fails, run this skill to fix the mismatch.

Checklist

Before finishing:

  • [ ] Schema file count matches inventory schemas.total
  • [ ] All schema files have entries in inventory domains array
  • [ ] All domain IDs exist in the DomainId type union
  • [ ] All schemas are in SCHEMA_REGISTRY
  • [ ] All schemas have DOMAIN_CATALOG entries
  • [ ] Field counts are accurate per schema
  • [ ] Group breakdowns sum to total
  • [ ] Phase breakdowns sum to total
  • [ ] Atmosphere count matches manifold entries
  • [ ] lastUpdated date is today
  • [ ] Changes committed with descriptive message