← back to Agent Cabinet
cabinet.yaml
765 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:
- subagent: knowledge-systems-steward
owns: [persistent read-first knowledge layers, Claude/Codex environment checkups, context-bloat cleanup plans, and tab-to-ticket session capture; consolidates knowledge-layer, checkup, and tab-ticket]
- subagent: account-browser-operator
owns: [headed real-Chrome account maintenance with resumable handoffs and human-in-the-loop verification; currently owns delivery-address-fix for UberEats, DoorDash, and Instacart; never orders or deletes without explicit approval]
- 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: terminal-wait-supervisor
owns: [canonical terminal-status sweeps; identify green dots labeled idle/done/waiting/awaiting Steve; report stale semantics and draft reversible corrections; never auto-repaint or clear tickets]
- subagent: pm2-crash-watcher
- subagent: devops-engineer
- subagent: onboard-domain-agent
- subagent: secrets-manager
- subagent: analytics-agent # GA4 fleet, also relevant to vp-research-content
- subagent: kamatera-server-agent
owns: [Kamatera prod server (45.61.58.125) health/ops — disk reclaim, pm2/nginx health + reload, deploys, prod pg_dump backups, cron, drift]
- subagent: masterdot
owns: [iTerm2 terminal-fleet dot-state monitor — cheap launchd heartbeat + on-demand fan to 6 per-colour subagents; tickets stalls, drafts nudges; watch+surface only, never loosens a gate]
- 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]
- subagent: approval-agent
owns: [clears the pending-approval queue + ticket backlog — auto-executes reversible/no-externality/bounded items (ledgered), files resolved ones, surfaces truly Steve-gated ones as a batched APPROVE/REVISE/BLOCK list; never loosens a gate]
- subagent: abramstasks-agent
owns: [plan → parallel-Claudes orchestrator — fans a multi-step plan out to N iTerm2 tabs, one dedicated claude session per step]
- subagent: dfm
owns: ["Do For Me" — autonomous no-questions executor for a bounded delegated task; honors all standing gates]
- 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]
- subagent: showroom-line-steward
owns: [enforces the SHOWROOM-ONLY vendor rule "addressable but not discoverable" (codified 2026-09-03) — keys off ~/Projects/fix-live-board/config/showroom-vendors.json (currently ["Phillip Jeffries"]); keeps every showroom line HIDDEN from all push/browse surfaces fleet-wide (new arrivals/trending rotator, dw-promo-banner, rotating heroes, collection/vendor/all-products grids, all-dw aggregator) on the main Shopify store + ~209 microsites AND out of the Google Merchant/Shopping feed, while keeping the product active + reachable via direct /products/<handle> URL and on-site search (social/email may feature them ONLY to drive to the showroom); mechanism = feed/rotator/grid queries gain a vendor NOT IN (showroom_vendors) filter, never unpublish; runs read-only baseline audits + a standing leak canary → ~/Projects/agent-cabinet/showroom-audit/runs/, emits PASS/WARN/FAIL to fleet-health-rollup at ~/.claude/skills/showroom-line-steward/data/latest.json; HARD RAIL — never auto-fires a customer-facing edit, every enforcement change drafts to ~/.claude/yolo-queue/pending-approval/ for vp-dw-commerce + Steve]
- 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]
- subagent: all-dw-agent
owns: [all.designerwallcoverings.com fleet aggregator — searchable grid over the whole dw_unified catalog + live directory of every *.designerwallcoverings.com microsite (pm2 :9958, basic-auth); crawl/merge only, never publishes cost/net to the public surface]
- subagent: google-merchant-agent
owns: [keeps all DW products live on Google Merchant Center (merchant 146735262) — read-only coverage + $4.25-leak + disapproval overseer, drafts feed/channel remediation to pending-approval; never fires a live feed/Shopify-channel write]
- subagent: fineartamerica-agent
owns: [FAA price-sync loss-guard — keeps every FAA-fulfilled Shopify product priced above its live FAA cost (cost/0.65/0.85); the live --apply price write drafts to pending-approval]
- subagent: greenland-scraper-manager
owns: [Greenland cork line pipeline — PRIVATE LABEL sold as "Phillipe Romano" ("Greenland" never customer-facing); feed→dw_unified→FileMaker→Shopify→cork microsite; publish/FileMaker mass-writes gated]
# 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-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)]
- subagent: adsense-manager
owns: [gets/keeps AdSense approved on the dw-domain-fleet monetize sites (pub-5278231299883833) — audits readiness + polls console status; read-only + local content fixes, never sends artificial traffic]
- subagent: linkedin-agent
owns: [SOLE LinkedIn agent — cross-business outreach + content (DW + Abrams + directories: lawyers.agentabrams.com, ventura pipeline); absorbed dw-linkedin 2026-09-20 (MANUAL+TOOLING, no TOS automation)]
- 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
- app store | play store | submission readiness | is X ready to submit | review-readiness | testflight | will apple/google reject
directors:
- subagent: backend-architect
- subagent: frontend-developer
- subagent: fullstack-developer
- subagent: database-architect
- subagent: api-documenter
- subagent: code-reviewer
- subagent: architect-reviewer
- subagent: security-auditor
- subagent: performance-engineer
- subagent: test-engineer
- subagent: debugger
- subagent: typescript-pro
- subagent: python-pro
- subagent: ios-developer
- subagent: mobile-developer
- subagent: app-store-agent # general platform-agnostic App Store / Play submission-readiness gate
owns: [5-gate submission-readiness (metadata/legal/build/reviewer/rollout) + declared-vs-reality cross-check; runs as a graph (5 parallel gate-checkers → contrarian → merge) and returns ONE verdict; delegates iOS specifics to the chargeandexplore-release skill + nineoh-guide runbook + eas-ios-device-add; NEVER submits/publishes itself — drafts the runbook to pending-approval]
- subagent: ai-engineer # LLM apps, RAG, prompt pipelines, 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
- subagent: cta
owns: [Click-Through Agent — drives a web app and clicks every component across real Chrome + Safari/WebKit + Browserbase, screenshots + records each, reports per-component/per-browser render breakage (3-engine breadth)]
- subagent: screenrecord
owns: [single-engine deep record — screen-records a page while clicking every element 5× with unique click-orders to shake out order-dependent bugs; persistent JSONL debug trail (complements cta)]
- subagent: context-manager
owns: [multi-agent context preservation across long-running / multi-session work]
- 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: ai-practice-scout
owns: [verified recent AI/Claude workflow intelligence and engagement-ranked last-N-day research; consolidates axel-bitblaze-scout, bcherny-scout, gurisingh-scout, tiktok-architect, and last30]
- subagent: prediction-market-lab
owns: [live read-only Polymarket opportunity research plus safe paper-first strategy compilation and bot scaffolding; consolidates polymtrx and zero-code-trading-bot; no live trading]
- 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: web-researcher
- subagent: technical-researcher
- 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]
- subagent: wpb-uploader-steward
owns: [WPB marketplace-uploader overseer — Fernwick/Spoonflower daily pipeline + per-platform uploader framework; <=4/day human-cadence, never arms a new platform or flips FOR-SALE without Steve]
- subagent: bounce-intake
owns: [Bounce lead-triage — front door of the sixskills.agentabrams.com funnel; triages "send a link, get a site" requests, scaffolds an engagement, drafts a gated reply; never sends/deploys/spends]
- subagent: bounce-build
owns: [Bounce build orchestrator — turns a triaged lead into an executed premium-site build via the webdev-accelerator pipeline; local build+verify autonomous, deploy/DNS/publish/spend gated]
- 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: consulting-agent
domain: >-
Consulting business (single-steward — the vp-consulting officer layer was
flattened into this agent 2026-09-22, TK-12015; one owner holds both the
business and the build). 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 | /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:
- 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-09-03T00:00:00-07:00
consolidation_log:
- date: 2026-09-22
action: folded
target: consulting-agent (now the single owner of the Consulting business)
replaced: [vp-consulting]
reason: |
DECISION (Steve, 2026-09-22, TK-12015): FLATTEN vp-consulting into consulting-agent —
supersedes 2026-09-20 DECISION 2 (KEEP three layers). New fact: single-steward officer
layer adds no routing value. vp-abramsego KEPT (money-product office).
Reference-safety: repointed every live caller BEFORE archiving the officer (Cody's
requirement) — cabinet.yaml officer block re-rooted at consulting-agent (dropped the
redundant `- subagent: consulting-agent` director), consulting/SKILL.md ownership lines,
consulting-agent.md (absorbed the officer's triggers + APPROVE/REVISE/BLOCK posture +
HARD RAILS), ticketmaster/SKILL.md VP routing list, and the a2a-lab agent card. server.js
+ pyramid.html are data-driven from this YAML (no hardcoded ref); officers/SKILL.md never
listed vp-consulting. Zero dangling vp-consulting node across all surfaces.
Archived ~/.claude/agents/vp-consulting.md → _archived/ (reversible via
~/skills-agents-snapshot-20260922.tar.gz).
- date: 2026-09-11
action: added
target: terminal-wait-supervisor (under vp-operations)
replaced: []
reason: |
Steve requested a supervisor for green terminal dots that are actually
idle, done, parked, waiting, or awaiting Steve. Existing process-hawk and
fleet-lifecycle-steward own PM2 crash recovery and service lifecycle, but
neither audits semantic terminal-status labels against ticket state. Added
one read-first, trigger-driven director that consumes the canonical
~/Projects/terminal-status/terminal_status.py scan, reports candidates,
and drafts reversible repaint commands behind Steve's approval. It does
not add another keep-busy loop, mutate live dots automatically, clear
tickets, or touch production. The cabinet viewer renders cabinet.yaml live
at :9766, so this source edit regenerates the mindmap on refresh.
- date: 2026-09-03
action: added
target: showroom-line-steward (under vp-dw-commerce)
replaced: []
reason: |
Steve codified 2026-09-03 the SHOWROOM-ONLY vendor rule: showroom lines (currently just
Phillip Jeffries; canonical editable list ~/Projects/fix-live-board/config/showroom-vendors.json)
are "addressable but not discoverable" — HIDDEN from every push/browse surface fleet-wide (new
arrivals/trending rotator, dw-promo-banner, rotating heroes, homepage rotations, collection/
vendor/all-products grids, the all.designerwallcoverings aggregator) on the main Shopify store +
~209 *.designerwallcoverings.com microsites, AND out of the Google Merchant/Shopping feed — while
staying ACTIVE and reachable via a direct /products/<handle> URL and on-site search (social+email
may feature them ONLY to drive to the physical showroom). Mechanism: product stays active + URL/
search intact; only feed/rotator/grid QUERIES gain a `vendor NOT IN (showroom_vendors)` filter.
No existing director owned "cross-surface discovery suppression keyed off a vendor allowlist" —
google-merchant-agent covers only the Google feed, front-page-steward only rendered structure,
new-arrivals-rotator/dw-promo-banner only their own surface. This steward is the single owner that
spans all of them, keying everything off showroom-vendors.json (never a hardcoded vendor) so adding
a vendor to that file brings it under the rule automatically. Runs read-only baseline audits + a
standing leak canary (reversible, $0 local), emits PASS/WARN/FAIL to fleet-health-rollup, and HARD-
RAILS every enforcement change (feed filter, rotator query, GMC exclusion, microsite grid filter,
Shopify/dw_unified write, microsite deploy, DNS) to ~/.claude/yolo-queue/pending-approval/ for
vp-dw-commerce + Steve — it never auto-fires a customer-facing edit. Net cabinet: +1 subagent under
vp-dw-commerce; broad triggers, no overlap folded (new distinct cross-surface role). Viewer
(cabinet-mindmap pm2, :9766) re-renders cabinet.yaml per request — no static mindmap file to rebuild.
- date: 2026-08-28
action: added
target: aichat Codex agent + registry trigger repair
replaced: []
reason: |
Added the missing callable aichat agent already owned by vp-dw-commerce for Big Red
(~/Projects/big-red, pm2 aichat). Its prompt preserves customer-facing and production
gates, treats retail redaction as a security boundary, requires a2a-contract for every
delegation, and requires e2e-proof before completion. Replaced nine unusable pipe-only
agent descriptions with concise, discriminating trigger descriptions derived from their
existing bodies. No new narrow skills were created; this makes existing broad agents
routable and closes the cabinet's final missing-agent reference.
- date: 2026-08-28
action: folded
target: web-researcher + architect-reviewer routing repair
replaced: [exa-agent, architect-review]
reason: |
Registry audit found two cabinet routes that could not resolve correctly. The research VP
still selected exa-agent even though web-researcher declares itself the free standing
replacement and marks Exa retired; the engineering VP referenced architect-review, while
the installed Codex agent is architect-reviewer. Repointed both routes to installed,
runnable agents. No new skill or agent was created: this removes one paid/retired path and
one phantom name while preserving the existing capabilities.
- date: 2026-08-28
action: folded
target: four callable Codex subagents from eleven Claude-only skills
replaced: [axel-bitblaze-scout, bcherny-scout, checkup, delivery-address-fix, gurisingh-scout, knowledge-layer, last30, polymtrx, tab-ticket, tiktok-architect, zero-code-trading-bot]
reason: |
Reduced eleven narrow catalog entries to four broad trigger-driven agents without copying
the skills into Codex's model-visible skill catalog. ai-practice-scout owns the four source
scouts plus last30; knowledge-systems-steward owns knowledge-layer, checkup, and tab-ticket;
prediction-market-lab owns polymtrx plus the paper-first bot builder; account-browser-operator
owns delivery-address-fix. Each agent reads the canonical full SKILL.md at runtime and preserves
its gates. tab-ticket's canonical SKILL.md was absent from this machine during consolidation,
so its trigger is retained as a compatibility route and the steward must report that missing
source rather than invent instructions. Net catalog representation: 11 skills -> 4 agents.
- 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
- date: 2026-08-05
action: added
target: app-store-agent (Director under vp-engineering)
replaced: []
rationale: |
Steve directive — a general, PLATFORM-AGNOSTIC App Store / Play submission-readiness
agent that refuses to pass until five gates are green (metadata & listing, legal &
policy, build integrity, reviewer access, rollout mechanics) and whose signature move
is CROSS-CHECKING every declared claim against reality (Data Safety form vs actual
network calls, declared permissions vs manifest/Info.plist, "demo creds work" vs a
real login). Runs as a GRAPH per Steve's standing rule — five parallel fresh-context
gate-checkers → the contrarian subagent red-teams the merged verdict → merge to ONE
committed verdict → the ACTUAL submit stays behind Steve (terminal human gate; drafts
to pending-approval). CONSOLIDATION not bloat: it is the generic ORCHESTRATOR that
delegates app-specific mechanics to the existing chargeandexplore-release skill,
the nineoh-guide turnkey EAS runbook, and eas-ios-device-add — it wraps them, does
not fork them. Homed under vp-engineering alongside ios-developer + mobile-developer.
Has tools:* (all skills + subagents). HARD RAIL: never submits/publishes/uploads a
binary or flips a rollout % itself.
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.
- date: 2026-09-20
action: consolidated
target: chief-of-staff (vp-cncp) roster pass — 5 dev-pack merges, junk sweep, name-fix, 17 orphans wired
replaced: [javascript-pro, database-optimizer, deployment-engineer, error-detective, data-analyst, search-specialist]
rationale: |
Steve directive — "review all agents with chief of staff: eliminate duplicates, consolidate, or
[retire] where it was a 1-time job." vp-cncp (the standing chief-of-staff) ran the pass over 96
agent files (Steve's bespoke cabinet + an imported generic dev-pack of ~31 untouched since Nov 2025).
(1) MERGED 5 thin-split dev-pack sibling pairs — survivor's description broadened to cover both
scopes, loser archived to ~/.claude/agents/_archived/, cabinet ref removed: javascript-pro→
typescript-pro, database-optimizer→database-architect, deployment-engineer→devops-engineer,
error-detective→debugger, data-analyst→data-scientist (data-scientist ALSO gained WebSearch/
WebFetch to truly absorb data-analyst's web-research tool profile — the flagged closest-watch item).
(2) ARCHIVED search-specialist (subsumed by web-researcher, the $0 exa replacement); kept
web-researcher + technical-researcher.
(3) Fixed the architect-review.md → architect-reviewer.md filename/name mismatch.
(4) Swept 7 dead non-agent files (dw-hub-watch.*, dw-sample-digest.*, masterdot.md.bak, a
.trim-backup dir) out of ~/.claude/agents/ into _trash-2026-09-20/.
(5) WIRED 17 orphan agents (on disk, no officer) to their owning officer: kamatera-server-agent +
masterdot (vp-operations); approval-agent + abramstasks-agent + dfm (vp-cncp); all-dw-agent +
google-merchant-agent + fineartamerica-agent + greenland-scraper-manager (vp-dw-commerce);
adsense-manager + linkedin-agent (vp-dw-marketing); cta + screenrecord + context-manager
(vp-engineering); wpb-uploader-steward + bounce-intake + bounce-build (vp-special-projects).
NOT retired (checked, still active — projects committed within 3–6 days): lawyer-build-agent +
doctor-agent. GATED to Steve (drafted to pending-approval, NOT executed): the linkedin-agent vs
dw-linkedin overlap + the consulting-agent triple-overlap. Intentional agent+skill pairs
(contrarian, cta, masterdot, screenrecord, secrets-manager, analytics-agent, …) kept BY DESIGN
(agent = delegatable owner, skill = procedure). Net: 96 → 90 agent files, every remaining agent
owned by an officer. All reversible actions ledgered to
~/.claude/yolo-queue/executed-reversible/ledger.jsonl. Viewer (:9766) re-renders this YAML live.
- date: 2026-09-20
action: consolidated
target: LinkedIn agents merged (Steve ungated both gated decisions)
replaced: [dw-linkedin]
rationale: |
Steve ungated both cross-officer decisions from the 2026-09-20 roster pass.
DECISION 1 (executed): archived dw-linkedin, kept linkedin-agent as the SOLE LinkedIn agent —
it is the superset (DW + Abrams + directories lawyers.agentabrams.com/ventura), so DW LinkedIn
stays covered while the directory-outreach LinkedIn work keeps a home. linkedin-agent stays
under vp-dw-marketing. Net −1 agent (89 → 88 live).
DECISION 2 (no change): KEEP all three consulting layers (consulting-agent + consulting skill +
vp-consulting) — the standard VP-owns / agent-executes / skill-is-engine pattern; recorded as a
decision, not drift. Gated memo filed to pending-approval/_done/.