← back to Agent Cabinet

cabinet.yaml

570 lines

# THE CABINET — Steve's executive agent hierarchy.
# Source of truth for the org chart. agent-architect reads/writes this file
# and regenerates VP subagents + the mindmap viewer when it changes.
#
# Convention:
#   Steve (President) → VP (subagent) → Director (subagent OR named skill bundle) → Skills (leaves).
#
# Goal: as patterns emerge, Directors get absorbed into VPs and skills get retired.
# Fewer agents, broader triggers, cleaner routing.

president:
  name: Steve
  role: Chief Executive
  email: steve@designerwallcoverings.com
  reports_to: null

cabinet:
  - vp: vp-operations
    domain: Infrastructure, monitoring, secrets, domains, DNS, watchdogs
    triggers:
      - infra | infrastructure | devops | server | uptime | crashed
      - watchdog | pm2 | launchd | cron | scheduler
      - secret | token | api key | rotate
      - domain | dns | ssl | mx | spf | dkim | dmarc | cloudflare | godaddy
    directors:
      - skill: dw-yolo-loop
        owns: [autonomous hourly DW catalog-health hunt — DTD decides each cycle, officer signs off, reversible fixes apply / hard-gated queue for Steve, self-reschedules; consolidates the uptime watch]
      - skill: secrets
        owns: [add token, rotate token, audit secrets, fan out env]
      - skill: domain-setup
        owns: [register, configure DNS, SSL, email auth]
      - subagent: domain-name-agent
        owns: [domain inventory, NS swap, WHOIS]  # was misclassified as skill
      - skill: cloudflare-manager
        owns: [zone DNS, proxy toggle]
      - skill: open-firewalls
        owns: [Mac2 + Kamatera firewall]
      - skill: process-hawk
        owns: [auto-restart stuck pm2 processes]
      - subagent: fleet-lifecycle-steward
        owns: [single owner of "no DW agent sleeps silently, stale ones retire only with Steve's sign-off"; reconciles the LIVE fleet (pm2 Mac2+Kamatera, launchd, cabinet roster, skills) against the centralized service-registry contract (expected_up, health_url, machine, owner, lifecycle_status — DTD verdict A 2026-06-24); Job 1 KEEP-ALIVE = resurrect/surface anything expected_up but down (consumes process-hawk + pm2-crash-watcher + fleet-reconstruct + keepawake), autonomous/reversible; Job 2 RETIREMENT = AUTO-FLAG old/irrelevant (≥14d dead, superseded, dead health_url) → draft memo to ~/.claude/yolo-queue/pending-approval/, NEVER retires itself (Steve approves). CONSUMES the registry at ~/Projects/_shared/fleet-registry/manifest.json (overlay.json = decommission ledger) — does not fork it. Enforces the schema's DARK ALERT (expected_up & !online) + ZOMBIE ALERT (retired & online) invariants. NB: ~/Projects/dw-fleet-registry (June 1) is an unrelated site-content namesake, NOT this registry.]
      - subagent: pm2-crash-watcher
      - subagent: deployment-engineer
      - subagent: devops-engineer
      - subagent: onboard-domain-agent
      - subagent: secrets-manager
      - subagent: analytics-agent  # GA4 fleet, also relevant to vp-research-content

  - vp: vp-cncp
    domain: >-
      CROSS-CUTTING flow officer (chief-of-staff). Standing operations owner whose
      one job is to keep the WHOLE operation moving so nothing stalls — drives the CNCP
      command center (http://localhost:3333, repo ~/cncp-starter, cncp-*.json) and
      ORCHESTRATES every other cabinet officer. Clears the approvals queue, advances
      stalled tasks + the 1700+ parking-lot items, un-sticks quiet projects, and logs
      wins as work lands. PROPOSE + ORCHESTRATE ONLY — routes reversible work to the
      owning officer, surfaces only truly Steve-gated actions with APPROVE/REVISE/BLOCK.
      Reads THIS file as the officer source of truth; never invents officer/agent names.
    triggers:
      - cncp officer | drive cncp | run the operation | status of everything
      - keep projects moving | keep everything flowing | nothing should stall
      - clear the approvals | clear the queue | clear tasks | advance the tasks
      - unstick the pipeline | who's stalled | what's blocked | who's idle
      - keep the fleet busy | work the parking lot
    directors:
      # This officer WRAPS the existing coordination skills — it is their standing
      # CNCP-driven owner, not a fourth loop. It also spawns any vp-* officer (above)
      # via the Agent tool to advance reversible work in that officer's domain.
      - skill: coordinating-agents
        owns: [officer morning standup — who-helps-whom cross-help round; propose-only]
      - skill: officers-overnight
        owns: [end-of-shift officer synthesis + overnight project queue; propose-only]
      - skill: officer-idea-council
        owns: [7-officer idea brainstorm → Top-5; the daily idea generator this officer composes with]
      - orchestrates_all_officers: [vp-operations, vp-dw-commerce, vp-dw-marketing, vp-engineering,
          vp-research-content, vp-directories, vp-compliance-policy, vp-security,
          vp-special-projects, vp-abramsego]

  - vp: vp-dw-commerce
    domain: Designer Wallcoverings catalog, vendor scrapers, Shopify, storefronts, marketing
    triggers:
      - shopify | dw_unified | metafield | sku | variant | catalog
      - vendor | scrape | crawl | enrich
      - storefront | dw site | philipperomano | flockedwallpaper | grasscloth
      - marketing | seo | mailer | drops | instagram | tiktok
      - aichat | big red | customer chat | ai chat | concierge
    directors:
      - skill: pairs-well-with
        owns: [cross-officer — approved via pyramid (primary: vp-dw-marketing)]
      - skill: new-arrivals-rotator
        owns: [cross-officer — approved via pyramid (primary: vp-dw-marketing)]
      - skill: collection-creator
        owns: [cross-officer — approved via pyramid (primary: vp-dw-marketing)]
      - subagent: aichat
        owns: [Big Red — customer-facing AI chat on every DW microsite; lower-left woman avatar; retail/wholesale/admin personas; vendor-redacted in retail; pm2 process "aichat" :9935 in ~/Projects/big-red; embed widget at chat.designerwallcoverings.com/widget.js]
      - subagent: front-page-steward
        owns: [single owner of customer-facing front-page correctness across 53 DW sister sites + standalone front-faces (novasuede, philipperomano, architecturalwallcoverings, wallco.ai, thesetdecorator, ventura-corridor, butlr, starsofdesign); enforces standing structural rules (logo UL, hamburger UR Gucci, hero CTA centered-bottom Enter, rotating-or-4-square hero except TSD, sort+density on every grid, ns-modal CSS present, corner-nav.js loaded, APCA Lc≥60); detects local-vs-live drift; owns fanout scripts at ~/Projects/_shared/scripts/; gates deploys; daily kanban at http://127.0.0.1:9772; absorbed retired dw-websites-agent's AAB-override duties]
      - skill: dw-site-build
        owns: [universal DW storefront playbook]
      - skill: internal-line-viewer
        owns: [standing spec for INTERNAL basic-auth line viewers — left-panel collapsed field tables, card-field toggles to image-only, density-scaled type; reference astek-landing :9944; private-label /curate rail]
      - skill: dw-shopify-theme-optimizer
        owns: [Liquid perf, image opts, Core Web Vitals]
      - skill: dw-marketing-copy
        owns: [titles, body, SEO, descriptions]
      - skill: dw-seo-optimizer
        owns: [meta + structured data]
      - skill: dw-purchasing-vendor
        owns: [vendor emails, POs, supplier pricing]
      - skill: dw-sku-analyst
        owns: [SKU normalization, dedup audits — like NCW + PR]
      - skill: dw-legal-compliance
        owns: [vendor contracts, settlement compliance]
      - skill: commercial-quote
        owns: [B2B quote requests for design professionals on premium lines (Koroseal); role-gated button + modal form + email handler]
      - skill: room-setting-generator
        owns: [photorealistic room renders]
      - skill: commercial-room-setting-generator
        owns: [contract / hospitality renders]
      - skill: shopify-vendor-bulk-updater
        owns: [bulk title/SKU/spec rewrites with progress UI]
      - skill: weekend-csv-products
        owns: [Sat–Mon ordered-SKU CSV export]
      - skill: tiktok
        owns: [TikTok Shop sync + posting]
      - skill: instagram-post-template
        owns: [IG post template]
      - skill: instagram-account-manager
        owns: [Norma single-account control]
      - skill: instagram-post-scheduler
        owns: [trigger post via Norma]
      # dw-site-build is a skill (not a subagent) — see entry above
      - vendor_scrapers:
        - alphabetical_skill_set: ["1838-scraper-manager", arteriors-scraper-manager, atomic50-scraper-manager,
            bnwalls-scraper-manager, bespoke-scraper-manager, brewster-scraper-manager,
            colefax-fowler-colorway-scraper, colouranddesign-scraper-manager, command54-scraper-manager,
            contrado-scraper-manager, cowtan-colorway-scraper, dedar-scraper-manager,
            denovowall-scraper-manager, designtex-scraper-manager, fabricut-scraper-manager,
            folia-scraper-manager, franquemont-scraper-manager, hygge-scraper-manager,
            jim-dultz-scraper-manager, justin-david-scraper, justindavid-scraper-manager,
            knoll-scraper-manager, maya-romanoff-scraper-manager, mindthegap-scraper-manager,
            muralsource-scraper-manager, naturale54-scraper-manager, novasuede-updater,
            osborne-scraper-manager, reid-witlin-scraper-manager, romo-scraper-manager,
            scalamandre-catalog-scraper, schumacher-dwsw-updater, stout-scraper-manager,
            timorous-scraper-manager, wallquest-scraper-manager, york-scraper-manager,
            york-wallcoverings-scraper-manager, arc-com-colorway-scraper, arte-international-colorway-scraper]

  - vp: vp-dw-marketing
    domain: DW Marketing Command Center (Designer Wallcoverings BRAND ONLY) — copy, SEO, social (all platforms), video, creative, advertising intel, GA4 analytics, merchandising, landings, GTM. NOT Wallpaper's Back (→ wallpapersback-marketing under vp-special-projects) or any non-DW brand. Social triggers below apply to DW's own accounts; a request naming a WPB handle routes to wallpapersback-marketing.
    triggers:
      - marketing | campaign | brand | awareness | demand gen | command center
      - social | instagram | tiktok | linkedin | facebook | meta | pinterest | youtube | twitter | x.com
      - post | reel | story | thread | pin | short | schedule social
      - video | demo | walkthrough | reel | what landed
      - seo | meta description | structured data | mailer | drops | newsletter
      - analytics | ga4 | gtag | traffic | pull report
      - advertising | who is advertising | ad signals | competitor ads
      - collection | new arrivals | merchandising | pairs well | vendor landing
    directors:
      # Per-platform social agents (Steve 2026-06-12: an agent for every platform)
      - subagent: dw-instagram
        owns: [DW Instagram — feed/reels/stories via Norma instagram-agent :9810 (Meta Graph)]
      - subagent: dw-tiktok
        owns: [DW TikTok — short-form video + TikTok Shop sync]
      - subagent: dw-linkedin
        owns: [DW + Abrams LinkedIn — B2B/trade posts + outreach drafts (MANUAL+TOOLING, no TOS automation)]
      - subagent: dw-facebook
        owns: [DW Facebook/Meta Page + Shop + Meta ads planning (shares Meta Graph w/ IG)]
      - subagent: dw-pinterest
        owns: [DW Pinterest — boards/rich-pins/idea-pins (top interiors discovery channel; API not yet wired)]
      - subagent: dw-youtube
        owns: [DW YouTube — Shorts + room walkthroughs + how-to + video SEO (API not yet wired)]
      - subagent: dw-x-twitter
        owns: [DW on X/Twitter — posts/threads/launches (API not yet wired)]
      # Copy & SEO
      - skill: dw-marketing-copy
        owns: [campaign copy, product descriptions, SEO titles, mailer/ad body]
      - skill: dw-seo-optimizer
        owns: [meta + structured data]
      - subagent: seo-analyzer
        owns: [technical SEO audits]
      # Video & content production
      - skill: reels-producer
        owns: [social reels/GIFs from product images]
      - skill: reviewed-demo-video
      - skill: app-demo-video
      - skill: what-landed-video
      - skill: session-debrief
      - skill: video-gallery
        owns: [browse produced videos :9763]
      # Creative / visual
      - skill: room-setting-generator
        owns: [residential room renders for posts/pins]
      - skill: commercial-room-setting-generator
        owns: [contract/hospitality renders]
      - skill: canvas-design
        owns: [posters, print, social graphics]
      - skill: four-horsemen
        owns: [Figma/Magic/Paper/Canva design orchestration]
      - skill: four-horsemen-ui-orchestrator
      - skill: stampede
        owns: [3 wild elevated-graphic variants]
      - skill: logo-agent
        owns: [tournament logo/brand-mark picker]
      # Advertising intelligence
      - skill: ad-social-tracker
        owns: [paid-ad detection across a directory]
      - skill: advertising-signals
        owns: [single-domain "where does X advertise" scan]
      # Analytics
      - subagent: analytics-agent
        owns: [GA4 — properties, events, gtag injection, traffic reports (shared w/ vp-operations)]
      # Merchandising
      - skill: collection-creator
        owns: [AI curated-collection idea generator]
      - skill: new-arrivals-rotator
        owns: [auto-rotating New Arrivals / Trending Shopify collections]
      - skill: pairs-well-with
        owns: [per-SKU "pairs well with" recommendations]
      # Landing pages
      - skill: dw-vendor-landing
        owns: [<vendor>.designerwallcoverings.com editorial lookbook]
      - subagent: dw-promo-banner
        owns: [text-first new-products promo banner across the DW sister-site/microsite network (reads each site data/products.json, no DB plumbing); LIVE deploy Steve-gated]
      # Strategy
      - subagent: product-strategist
        owns: [positioning, GTM, roadmap (shared w/ vp-research-content)]

  - vp: vp-directories
    domain: Vertical directory businesses (lawyer, doctor, NPH, animals, lacountyeats, ventura)
    triggers:
      - lawyer | calbar | bar directory
      - doctor | physician | professional-directory
      - animals | pets | dogs | bowie | madison | humphrey
      - paper hanger | wallcovering installer | NPH
      - lacountyeats | restaurant permit
      - ventura corridor | venturablvd
    directors:
      - subagent: lawyer-build-agent
      - subagent: doctor-agent
      - skill: ad-social-tracker
        owns: [paid-ad detection across directories]
      - skill: advertising-signals
        owns: [single-domain ad scan]
      - subagent: la-research-agent
        owns: [LA public records — doubles as research and lawyer enrichment]

  - vp: vp-engineering
    domain: Backend, frontend, databases, code review, security, performance, testing
    triggers:
      - backend | api | rest | graphql | microservice
      - frontend | react | typescript | tailwind
      - database | sql | postgres | schema | migration | n+1
      - code review | refactor | pattern | architecture
      - security | owasp | jwt | oauth | csrf
      - performance | profile | cache | bottleneck
      - test | jest | playwright | coverage
    directors:
      - subagent: backend-architect
      - subagent: frontend-developer
      - subagent: fullstack-developer
      - subagent: database-architect
      - subagent: database-optimizer
      - subagent: api-documenter
      - subagent: code-reviewer
      - subagent: architect-review  # was "architect-reviewer" — actual file name is architect-review.md
      - subagent: security-auditor
      - subagent: performance-engineer
      - subagent: test-engineer
      - subagent: error-detective
      - subagent: debugger
      - subagent: javascript-pro
      - subagent: typescript-pro
      - subagent: python-pro
      - subagent: ios-developer
      - subagent: mobile-developer
      - subagent: ai-engineer  # LLM apps, RAG, prompt pipelines
      - subagent: prompt-engineer  # prompt optimization
      - subagent: mcp-expert  # MCP server integration
      - skill: dw-agent-builder
        owns: [scaffold new DW-domain subagents + skills from a spec — generate the .md with name/description/triggers and register it in the cabinet]
      - skill: prompt-cache-optimization
      # — Restored after recheck: these ARE available via plugin/MCP (not on-disk SKILL.md)
      - skill: claude-api    # Anthropic SDK migrations + prompt caching
        owns: [Anthropic Claude API helper — SDK migrations, current model IDs, tool-use, streaming, and prompt-caching best practices]
      - skill: simplify      # Code reuse/quality review
        owns: [refactor for simplicity + reuse — collapse needless abstraction, remove dead code, cut complexity without changing behavior]
      - skill: review        # Code review
        owns: [standard code-review pass — flags quality, security, and maintainability issues on changed files before commit]
      - skill: refactor-agent
      - skill: mcp-builder

  - vp: vp-research-content
    domain: Web research, LA records, video production, mockups, design, voice
    triggers:
      - research | exa | search the web | competitor analysis
      - mockup | concept | variant | front page
      - peer survey | competitors | site audit | website analysis
      - video | demo | walkthrough | reel | session debrief | avatar
      - voice | tts | narration | clone voice
      - logo | poster | canvas | prism
    directors:
      - subagent: analytics-agent
        owns: [cross-officer — approved via pyramid (primary: vp-operations)]
      - subagent: la-research-agent
        owns: [cross-officer — approved via pyramid (primary: vp-directories)]
      - subagent: exa-agent
      - subagent: search-specialist
      - subagent: technical-researcher
      - subagent: data-analyst
      - subagent: data-scientist
      - subagent: website-analysis
      - subagent: seo-analyzer  # technical SEO audits
      - subagent: ui-ux-designer  # design systems, wireframes, a11y
      - subagent: graphic-designer  # Stage-2 advisory typography/wordmark/layout review
      - subagent: product-strategist  # roadmap, positioning, GTM
      - subagent: debate-team-fast  # 4-LLM consensus engine
      - subagent: task-decomposition-expert  # complex goal breakdown
      - skill: site-audit
      - skill: peer-survey
      - skill: competitors
      - skill: mockups
      - skill: tools-pack
      - skill: info-hub
      - skill: extension
      - skill: reviewed-demo-video
      - skill: app-demo-video
      - skill: session-debrief
      - skill: video-gallery
      - skill: clone-voice
      - skill: use-voice
      - skill: reels-producer
      - skill: four-horsemen
      - skill: four-horsemen-ui-orchestrator
      - skill: stampede
      - skill: canvas-design
      - skill: artifacts-builder
      - skill: prism  # Show Prism router status, available models, endpoint map (plugin)
        owns: [show Prism LLM-router status — available models, endpoint map, and routing health (plugin/MCP-loaded, no on-disk SKILL.md)]
      - skill: gamify  # Sound effects on Claude Code events
      - skill: claude-control-center  # NEW :9767 — gamify + cross-terminal session viewer

  - vp: vp-compliance-policy
    domain: Outbound comms compliance, best-practices pre-flight, legal posture
    triggers:
      - is this CAN-SPAM | tcpa | ccpa | dnc
      - audit my mailer | compliance check
      - best practices | pre-flight | violation
      - california bar | §6155 | rule 7
    directors:
      - subagent: security-auditor
        owns: [cross-officer — approved via pyramid (primary: vp-engineering)]
      - skill: dw-legal-compliance
        owns: [cross-officer — approved via pyramid (primary: vp-dw-commerce)]
      - subagent: comms-compliance
      - subagent: best-practices-reviewer
      - skill: best-practices  # /best-practices alias

  - vp: vp-security
    domain: Incident response, secret/API-key rotation, breach triage, firewall hardening, CVE audits, security-monitoring fleet
    triggers:
      - are we secure | did we get hacked | breach | intrusion | backdoor
      - rotate keys | leaked secret | scan for secrets | credential exposure
      - firewall | open port | harden | cve | dependency audit
      - security dashboard | monitor drift | security-monitor
    directors:
      - subagent: security-auditor
        owns: [cross-officer — approved via pyramid (primary: vp-engineering)]
      - subagent: secrets-manager
        owns: [cross-officer — approved via pyramid (primary: vp-operations)]
      - subagent: security-dashboard
        owns: [security-monitoring fleet — :9889 + Kamatera security-monitor.sh]
      - skill: secrets
        owns: [cross-officer — token registry / rotation / fan-out]
      - skill: open-firewalls
        owns: [cross-officer — Mac2 + Kamatera firewall audit]

  - vp: vp-special-projects
    domain: Non-DW side / product-builder projects — wallco.ai catalog (now wallpapersback.com retail), apartmentwallpaper.com, site-factory, small-business-builder, Abrams portfolio
    triggers:
      - wallpapersback agent | wallco agent (legacy alias) | wallpapersback | apartment wallpaper | peel and stick
      - wallpapersback marketing | WPB social | @wallpapersback | @wallpaperisback | @WallpaperBack
      - site-factory | small business builder | sdcc | side projects
      - agentabrams | 4square
    directors:
      - subagent: wallpapersback-agent
        owns: [Wallpaper's Back (wallpapersback.com) catalog end-to-end — gen, settlement gate, curators, rooms, deploy. Renamed from wallco-agent 2026-06-23 (wallco.ai retired).]
      - subagent: wallpapersback-marketing
        owns: [Wallpaper's Back (wallpapersback.com) marketing ONLY — social (@wallpapersback / @wallpaperisback / @WallpaperBack), captions/copy, reels, brand kit, :9847 viewer. NOT the catalog (wallpapersback-agent), NOT Designer Wallcoverings (vp-dw-marketing). Split out of the dw-* social agents 2026-06-23 so DW Marketing is DW-only.]
      - subagent: apartment-wallpaper-agent
        owns: [apartmentwallpaper.com — peel-and-stick storefront]
      - subagent: seam-debug-agent
        owns: [wallpapersback.com seam/joint scan + heal]

  - vp: vp-abramsego
    domain: The AbramsEgo command-center product (~/Projects/AbramsEgo, pm2 :9773) — build, operations, the autonomous build-loop, and MONETIZATION (sell/SaaS, affiliate, billable reports, ads). Everything money-facing is draft-to-approval only.
    triggers:
      - abramsego | abrams ego | the command center | ego dashboard | :9773
      - sell abramsego | abramsego revenue | self-funding | revenue engines
      - abramsego loop | ego build queue | ego build
      - abramsego go-live | abramsego stripe | abramsego waitlist
    directors:
      - subagent: abramsego-agent
        owns: [AbramsEgo build/operate steward — server.js, panels, snapshot collectors, build-queue loop, revenue plumbing, landing page. Local-only; deploy/publish gated.]
      # "Ultron" orchestration folded INTO vp-abramsego's body (dtd 3/3, 2026-07-02) —
      # the officer runs the standing revenue-productivity pass itself; no separate agent.
      - skill: web-extract
        owns: [cross-officer — Hermes search-then-extract agent research over Exa + free local summarizer]
      - skill: ollama-model-eval
        owns: [cross-officer — benchmark a candidate local model (e.g. ornith:9b) on real tasks before it earns a fleet slot]
      - skill: design-trend-scout
        owns: [standing market-research strategist — scouts top-sellers on Spoonflower/Etsy/Society6/Redbubble/Creative Market/Patternbank, gap-checks our WPB catalog, briefs ORIGINAL settlement-safe designs to run in the selling lanes → feeds the Pattern Vault licensing engine. Research read-only/metered; generation+listing gated.]
      - skill: abramsego-design-research
        owns: [design north-star research — @androoagi TikTok/X, dropped links (Nous Hermes, 0xRaduan/DeepWiki), Norma panel-tour videos on :9891; maintains references/design-notes.md]
      - skill: abramsego-golive
        owns: [revenue-engine ops — Stripe TEST flows, waitlist digest, engine gated→live flip checklist, go-live approval memos]

  - vp: vp-consulting
    domain: >-
      Officer Consulting — the Consulting business: a productized "client-growth
      consultancy in a box" that turns an intake questionnaire into a per-client
      portal (a NEW website shown as several concept versions + a deeply
      integrated-social growth command center), even for clients with no website.
      Fuses two proven builds — fantasea-consulting (deliverable/concept-version
      generator) + prestige-car-wash (social/growth command center). Owns the
      `consulting` skill and every ~/Projects/consulting-<slug>/ engagement (97xx).
      HARD RAIL: social posting is DRAFT-ONLY; live deploy, DNS, spend, and
      send-to-list draft to pending-approval with APPROVE/REVISE/BLOCK — Steve
      turns those on. The sign-in page carries the client info + credentials.
    triggers:
      - consulting | officer consulting | consulting client | client portal
      - onboard a consulting client | build a website and social for | intake questionnaire
      - new consulting client | spin up a client portal | concept versions | growth command center
    directors:
      - subagent: consulting-agent
        owns: [Consulting build/operate steward — runs the intake → scaffold.mjs → concept generation → verify → commit loop for each ~/Projects/consulting-<slug>/ portal; wires the integrated-social buckets via existing fleet skills. Local-only; deploy/DNS/social-post gated.]
      - skill: consulting
        owns: [the engine — intake schema, scaffold.mjs (portal generator), templates, build.mjs concept skinner, the fused fantasea + prestige patterns]
      - skill: advertising-signals
        owns: [cross-officer — competitor ad-platform + social-profile intel to fill the command center's competitors/ads buckets]
      - skill: reels-producer
        owns: [cross-officer — client social reels → the portal's media bucket (DRAFT)]
      - skill: analytics
        owns: [cross-officer — GA4 setup + traffic reporting for a client site]
      - skill: domain-setup
        owns: [cross-officer — Kamatera + Cloudflare + SSL go-live for a client portal (Steve-gated)]

architecture_principles:
  - "Triggers should be broad enough that Steve never needs to remember which sub-agent owns a task."
  - "When a Director is invoked twice for the same VP, consider folding the Director's logic into the VP's system prompt."
  - "Skills are leaves — they should never be full-replaced by an agent unless that agent adds delegation logic."
  - "Each new agent must declare what it consolidates: which skill calls or which Director it makes redundant."
  - "Reversible steps only — agents may not push DNS, send mail, or run destructive ops without explicit Steve sign-off (echoes YOLO rules)."

mindmap_path: /Users/macstudio3/Projects/agent-cabinet/mindmap.html
viewer_port: 9766
last_synced_at: 2026-07-07T00:00:00-07:00

consolidation_log:
  - date: 2026-05-06
    action: scaffolded
    target: The Cabinet
    rationale: Initial 6-VP hierarchy (operations, dw-commerce, directories, engineering, research-content, compliance-policy)
  - date: 2026-05-06
    action: drift_fix
    target: cabinet.yaml
    rationale: Reclassified domain-name-agent + la-research-agent as subagents (not skills); fixed architect-reviewer→architect-review; added 7 orphaned subagents (ai-engineer, analytics-agent, prompt-engineer, mcp-expert, seo-analyzer, ui-ux-designer, product-strategist, debate-team-fast, task-decomposition-expert); removed 4 phantom skill refs (claude-api, simplify, review, comms-compliance, prism)
  - date: 2026-05-06T19:00
    action: drift_revert
    target: cabinet.yaml
    rationale: Restored claude-api, simplify, review, prism, gamify — these are plugin/MCP-loaded (no on-disk SKILL.md). Added new claude-control-center skill (port 9767, cross-terminal session viewer + gamify settings). Drift detection logic should not assume all skills live in ~/.claude/skills/.
  - date: 2026-05-14
    action: added
    target: front-page-steward (under vp-dw-commerce)
    replaced: [dw-websites-agent]
    rationale: |
      Today's regression — linenwallpaper.com (and 9 other DW sites) shipped .ns-modal HTML without .ns-modal CSS to prod because local files were correct but deploy was stale → modal leaked inline at top of page, "horrible" per Steve. Audit found 51/53 sites missing corner-nav.js script tag too. This is a recurring CLASS of bug, not a one-off — the existing dw-websites-agent only covered AAB aesthetic overrides + auth widget; nobody owned structural-rule compliance (logo UL, hamburger UR Gucci, hero CTA, ns-modal CSS, sort+density slider, APCA contrast, drift detection, fanout discipline).
      Folded dw-websites-agent's AAB-override duties INTO front-page-steward (now archived at ~/.claude/agents/_archived/dw-websites-agent.md) so there's a single owner. New agent enforces 12 structural rules from MEMORY.md, runs operation-1 audit across the fleet, surfaces local-vs-live drift, owns the fanout scripts at ~/Projects/_shared/scripts/, wedges deploys, and ships a kanban viewer at http://127.0.0.1:9772 mirroring the pipeline-watcher pattern. Wired into vp-dw-commerce alongside dw-site-build, dw-shopify-theme-optimizer, dw-marketing-copy, dw-seo-optimizer.
      Net cabinet size: vp-dw-commerce directors went 14 → 14 (added front-page-steward, archived dw-websites-agent) — no bloat, broader trigger coverage.
  - date: 2026-06-12
    action: added
    target: vp-dw-marketing (DW Marketing Officer) + 7 per-platform social agents
    rationale: |
      Steve directive — stand up a dedicated DW Marketing Officer as the "marketing command center,"
      with a dedicated agent for every social platform. Created vp-dw-marketing (7th VP) owning the
      full marketing stack: copy/SEO (dw-marketing-copy, dw-seo-optimizer, seo-analyzer), all social
      (new per-platform subagents dw-instagram, dw-tiktok, dw-linkedin, dw-facebook, dw-pinterest,
      dw-youtube, dw-x-twitter), video/reels (reels-producer, reviewed/app-demo-video, what-landed,
      session-debrief, video-gallery), creative (room-setting-generator, commercial-room-setting,
      canvas-design, four-horsemen(+ui), stampede, logo-agent), advertising intel (ad-social-tracker,
      advertising-signals), GA4 (analytics-agent), merchandising (collection-creator,
      new-arrivals-rotator, pairs-well-with), landings (dw-vendor-landing), and GTM (product-strategist).
      Consolidates marketing routing that was split across vp-dw-commerce (copy/SEO/social/renders),
      vp-research-content (video/creative), vp-directories (ad-signals), and vp-operations (GA4) into
      one entry point. Those VPs retain the skills for inline use; vp-dw-marketing is primary owner.
      Net cabinet: 6 → 7 VPs; +7 platform subagents (IG/TikTok live via Norma+tiktok skill; LinkedIn
      manual-tooling; FB shares Meta Graph; Pinterest/YouTube/X API not yet wired — flagged as build gaps).
  - date: 2026-06-19
    action: added
    target: dw-promo-banner (director under vp-dw-marketing)
    rationale: |
      New cabinet director owning the text-first "new products" promo banner across the DW
      sister-site / microsite network. Scaffolding only — no customer-facing change. The agent
      reads each site's existing data/products.json for the newest-product signal (NO new DB
      plumbing) and assembles a slim, text-first strip above the grid. Routing: banner COPY →
      dw-marketing-copy, newest-product signal → new-arrivals-rotator, contrast/readability QA →
      hero-readability-auditor, structural/fleet-drift QA → front-page-steward, ship → /deploy.
      Hard rules baked into the agent body: "Wallcovering" never "Wallpaper"; text-first
      simplicity; reads products.json only; LIVE deploy is Steve-gated. Mindmap is rendered live
      from cabinet.yaml by server.js on each request (port 9766) — this YAML edit IS the
      regeneration; no static mindmap file to rebuild.
  - date: 2026-07-01
    action: added
    target: vp-abramsego (new officer) + abramsego-agent (steward) + skills abramsego-design-research, abramsego-golive
    rationale: |
      AbramsEgo (~/Projects/AbramsEgo, pm2 :9773 — the agent-fleet command center + self-funding
      P&L) had NO cabinet owner; grep confirmed zero officers/agents claimed it. Steve directed a
      full monetization build-out ("build it all out, ask me to approve the last steps to turn it
      on") run via officer-yolo with /dtd as decider on the project's autonomous build-queue loop
      (Fable 5). New office consolidates: build/operate stewardship (abramsego-agent, patterned on
      wallpapersback-agent), design north-star research (@androoagi / dropped links / Norma
      panel-tour videos → abramsego-design-research), and revenue-engine ops (Stripe TEST-mode
      wiring, waitlist, gated go-live memos → abramsego-golive). Hard rails inherited: live Stripe
      keys, public exposure, deploy/DNS, real charges = draft-to-pending-approval ONLY, officer
      APPROVE/REVISE/BLOCK, Steve final. Not folded into vp-special-projects because AbramsEgo is
      a money-facing PRODUCT with its own loop + revenue rails, and Steve explicitly asked for
      "an office in charge of AbramsEgo only."
  - date: 2026-07-02
    action: retired
    target: abramsego-orchestrator (subagent) → folded into vp-abramsego + officer-yolo
    rationale: |
      DTD 3/3 (Claude+Codex+Qwen, unanimous). The Contrarian flagged that the 2026-07-02
      session created abramsego-orchestrator as a 4th "keep-agents-busy" loop alongside
      officer-yolo, yolo-plus, and dw-yolo-loop — violating the cabinet's own governing
      principle "fewer agents, broader triggers." Its mandate (read fleet heartbeats,
      re-route stalled work toward the self-funding P&L, escalate only gated items) is a
      standing operational pass the EXISTING vp-abramsego officer runs itself; it needed no
      separate subagent (dw-yolo-loop already proves the standing-loop pattern). Retired the
      agent file; folded the orchestration pass into vp-abramsego.md body ("Ultron mode").
      Net: -1 agent, same capability, principle restored. The dungeon's Ultron center node
      stays as a VISUAL of vp-abramsego's orchestration role, not a separate agent.
  - date: 2026-07-07
    action: added
    target: vp-cncp (the CNCP Officer — cross-cutting flow officer / chief-of-staff)
    replaced: []
    rationale: |
      Steve directive — stand up a single standing OPERATIONS-FLOW officer whose one
      job is "keep every project moving at all times; nothing stalls." It drives the
      CNCP command center (http://localhost:3333, ~/cncp-starter, cncp-*.json) and
      ORCHESTRATES all 10 existing cabinet officers (vp-operations, vp-dw-commerce,
      vp-dw-marketing, vp-engineering, vp-research-content, vp-directories,
      vp-compliance-policy, vp-security, vp-special-projects, vp-abramsego) via the
      Agent tool, plus skills via the Skill tool. Four fronts each pass: (1) clear the
      approvals queue — split each of the 428 pending-approval memos into reversible
      legs (route to owner) vs Steve-gated action (leave drafted w/ APPROVE/REVISE/
      BLOCK); (2) advance stalled tasks + the 1700+ parking-lot items, log wins as work
      lands; (3) un-stick quiet projects / open loops; (4) report status to CNCP.
      CONSOLIDATION not bloat: it becomes the single cabinet OWNER of three previously
      orphaned coordination skills (coordinating-agents, officers-overnight,
      officer-idea-council) — it WRAPS them, is explicitly NOT a fourth keep-busy loop
      (the same principle that retired abramsego-orchestrator on 2026-07-02 — this
      officer reuses existing mechanics rather than forking them). HARD RAIL inherited:
      PROPOSE + ORCHESTRATE only; never auto-executes a gated action (customer-facing,
      destructive, spend, DNS, publish/send-to-list, remote push, scheduled-job install,
      Kamatera-canonical dw_unified writes) — Steve is the only one who turns those on.
      Placed as a cross-cutting VP (chief-of-staff) directly after vp-operations. Net
      cabinet: 10 → 11 VPs, but three loose skills gain a single owning officer and the
      approvals/tasks/projects flow gets one accountable coordinator. Mindmap is rendered
      live from this YAML by server.js (:9766) on each request — this edit IS the regen.