STRATUM COLLECTIVE
INTERNAL
← Back to Dashboards

Overview

Claude Code is the primary interface for Stratum's operational intelligence. Skills live in plugins, plugins live in marketplaces, and marketplaces are configured per-user in ~/.claude/settings.json. Stratum uses two namespaces:

SC-* — shared
Stratum Collective team plugins. Shared across all teammates via the claude-team-config repo. Edit-once, pull-everywhere.
marketplace: stratum-team
source: claude-team-config/plugins/SC-*/
cache: cache/stratum-team/SC-*/unknown/
PL-* — personal
Patrick's local plugins (venture studio, design scans). Not shared with teammates. Source lives outside the team repo.
marketplace: patrick-local
source: ~/.claude/plugins/PL-*/
cache: cache/patrick-local/PL-*/unknown/

The shared claude-team-config repo holds: SC-* plugin sources, the workspace CLAUDE.md, shared agents, slash-command templates, and a setup.sh bootstrapper.

First-time setup

Run these once when joining the team. After this, day-to-day updates are just git pull in the team-config repo.

  1. Create the workspace and clone the team repo
    mkdir -p ~/REPOS/Stratum\ Collective
    cd ~/REPOS/Stratum\ Collective
    git clone https://github.com/stratum-collective/claude-team-config.git
  2. Run the setup script
    bash claude-team-config/setup.sh

    The script handles workspace symlinks, the workspace CLAUDE.md, plugin cache installation, slash-command symlinks, and shared agents. It prints the exact JSON to merge into your settings file in step 3.

  3. Merge the marketplace block into ~/.claude/settings.json

    Open ~/.claude/settings.json (create it if missing) and merge in both blocks — do not replace the whole file if it already has content.

    # Shape of what to add (use the script output for real paths):
    {
      "extraKnownMarketplaces": {
        "stratum-team": {
          "source": {
            "source": "directory",
            "path": "/Users/YOUR-USERNAME/REPOS/Stratum Collective/claude-team-config/plugins"
          }
        }
      },
      "enabledPlugins": {
        "SC-operations@stratum-team": true,
        "SC-messaging-quality@stratum-team": true,
        "SC-notion-ops@stratum-team": true
      }
    }
  4. Restart Claude Code

    Skills and slash commands are now available. Test with /SC-operations:daily-standup or ask Claude to "run ops-triage".

What the script does automatically

StepWhatType
Workspace symlinks settings.local.json, launch.json → team config AUTO
CLAUDE.md Workspace CLAUDE.mdstratum-claude.md in team config AUTO
Plugin cache Copies SC-* plugin files to ~/.claude/plugins/cache/stratum-team/ and registers in installed_plugins.json AUTO
Slash commands Symlinks SC-* commands to ~/REPOS/Stratum Collective/.claude/commands/ AUTO
Shared agents Symlinks team agents into each Stratum repo's .claude/agents/ AUTO
settings.json Marketplace + enabledPlugins entries MANUAL

Keeping up to date

When skills are updated (new checks, changed logic, new skills added):

cd ~/REPOS/Stratum\ Collective/claude-team-config
git pull
bash setup.sh    # refreshes cache copies with latest skill files
After a Claude Code update Claude Code may clear the plugin cache on major updates. If skills stop working, rerun bash setup.sh — it will repopulate the cache and re-register everything automatically.

Plugin lifecycle

Plugin source lives in one place; each user's Claude Code reads from a per-user cache copy. Any source edit must sync to cache or the change won't show up in the running session.

Health check

Run before any rename, install, or major refactor, and after any edit to plugin source:

bash ~/.claude/plugin-health.sh

Checks seven things:

  1. Every registry installPath directory exists
  2. PL source → cache is current (no newer source files)
  3. SC source → cache is current (no newer source files)
  4. No legacy @local registry entries
  5. Every SKILL.md name: field matches {plugin-dir}:{skill-slug}
  6. Every backtick-quoted skill reference in scheduled tasks resolves to a known plugin
  7. No orphaned cache dirs in either marketplace
Exit 0 = clean or warnings only  ·  Exit 1 = failures present

Adding a new plugin

SC plugin (shared):

# 1. Create source dir in team config
mkdir -p ~/REPOS/Stratum\ Collective/claude-team-config/plugins/SC-{name}/skills/{skill-slug}

# 2. Write SKILL.md โ€” name field must be SC-{name}:{skill-slug}

# 3. Sync to cache
mkdir -p ~/.claude/plugins/cache/stratum-team/SC-{name}/unknown
rsync -a ~/REPOS/Stratum\ Collective/claude-team-config/plugins/SC-{name}/ \
  ~/.claude/plugins/cache/stratum-team/SC-{name}/unknown/

# 4. Register in installed_plugins.json
# Add: "SC-{name}@stratum-team" โ†’ installPath: cache/stratum-team/SC-{name}/unknown

# 5. Commit so teammates get the new plugin
cd ~/REPOS/Stratum\ Collective/claude-team-config
git add plugins/SC-{name} && git commit

# 6. Health check, then restart Claude Code
bash ~/.claude/plugin-health.sh

PL plugin (personal):

# 1. Create source dir
mkdir -p ~/.claude/plugins/PL-{name}/skills/{skill-slug}

# 2. Write SKILL.md โ€” name field must be PL-{name}:{skill-slug}

# 3. Sync to cache
mkdir -p ~/.claude/plugins/cache/patrick-local/PL-{name}/unknown
rsync -a ~/.claude/plugins/PL-{name}/ ~/.claude/plugins/cache/patrick-local/PL-{name}/unknown/

# 4. Register in installed_plugins.json
# Add: "PL-{name}@patrick-local" โ†’ installPath: cache/patrick-local/PL-{name}/unknown

# 5. Health check, then restart Claude Code
bash ~/.claude/plugin-health.sh

Renaming a plugin

Follow exactly — skipping steps causes the cache/registry split that broke the WS-venture-studio rename in 2026-04-24.

# PL example (substitute SC paths and stratum-team marketplace as needed)

# 1. Rename source dir
mv ~/.claude/plugins/OLD-name ~/.claude/plugins/NEW-name

# 2. Create new cache dir and sync
mkdir -p ~/.claude/plugins/cache/patrick-local/NEW-name/unknown
rsync -a ~/.claude/plugins/NEW-name/ ~/.claude/plugins/cache/patrick-local/NEW-name/unknown/

# 3. Delete old cache
rm -rf ~/.claude/plugins/cache/patrick-local/OLD-name

# 4. Update installed_plugins.json key + installPath

# 5. Update SKILL.md name: fields
find ~/.claude/plugins/NEW-name -name SKILL.md -exec \
  sed -i '' 's/OLD-name:/NEW-name:/g' {} \;

# 6. Update internal references in plugin files
find ~/.claude/plugins/NEW-name -type f \( -name "*.md" -o -name "*.json" -o -name "*.sh" \) -exec \
  sed -i '' 's/OLD-name/NEW-name/g' {} \;

# 7. Grep for stale references in scheduled tasks + config
grep -r "OLD-name" ~/.claude/scheduled-tasks/ ~/.claude/CLAUDE.md 2>/dev/null

# 8. Health check must pass before restarting
bash ~/.claude/plugin-health.sh

# 9. Restart Claude Code

Editing a plugin skill

Any source edit creates cache drift. Always sync after editing:

# SC
rsync -a ~/REPOS/Stratum\ Collective/claude-team-config/plugins/SC-{name}/ \
  ~/.claude/plugins/cache/stratum-team/SC-{name}/unknown/

# PL
rsync -a ~/.claude/plugins/PL-{name}/ ~/.claude/plugins/cache/patrick-local/PL-{name}/unknown/

The health check detects drift automatically — run it after edits to see which plugins need syncing.

Deleting a plugin

# 1. Remove source dir
rm -rf ~/.claude/plugins/PL-{name}                                                # PL
rm -rf ~/REPOS/Stratum\ Collective/claude-team-config/plugins/SC-{name}           # SC

# 2. Remove cache
rm -rf ~/.claude/plugins/cache/patrick-local/PL-{name}                            # PL
rm -rf ~/.claude/plugins/cache/stratum-team/SC-{name}                             # SC

# 3. Remove registry entry from installed_plugins.json

# 4. Check for stale references
grep -r "{name}" ~/.claude/scheduled-tasks/

# 5. Health check
bash ~/.claude/plugin-health.sh

Teammate sync (SC plugins)

Teammates pull claude-team-config and run:

cd ~/REPOS/Stratum\ Collective/claude-team-config
git pull
bash setup.sh

setup.sh syncs SC-* sources into the teammate's local cache and registers them in their installed_plugins.json. Any rename committed to team-config requires teammates to re-run setup.sh. PL-* plugins are not synced — they remain personal to Patrick's machine.

What the health check does not cover

  • claude-plugins-official — managed by Anthropic, treat as read-only
  • Browser/service worker cache — stale HTML after a deploy; force-refresh or unregister the SW manually
  • Scheduled task prompt correctness — validates plugin sources exist, not that skill logic is current
  • Remote (CCR) triggers — managed at claude.ai/code/scheduled/; health check has no visibility into remote trigger state

Active plugin index

As of April 2026. Three shared SC plugins (20 skills total) plus two personal PL plugins.

SC-operations SHARED

Operational intelligence — standup, triage, milestone gates, reporting, hygiene sweeps. Fifteen skills:

blocker-sweep
Weekly sweep of blocked tasks; finds systemic patterns and chain blocks.
compliance-gate
Milestone readiness rollup across Legal, DMP, Security Posture, contracts.
daily-standup
Morning prep: in-progress, blockers, overnight completions, recent movement.
initiative-review
Top-down review of an initiative; hierarchy, orphans, critical path, rollup.
kb-apply
Apply approved KB refresh proposals back to questions.json.
kb-refresh
Detect drift between knowledge builder and canonical Notion source pages.
milestone-review
Surface Pending/Blocked milestones, task work, time since last movement.
nightly-ops-sweep
Runs daily-ops-sweep.sh to scan git + Claude sessions → Tracker items.
ops-hygiene-sweeps
Database hygiene, data quality, milestone/goal tracking conventions.
ops-sweep
Nightly session sweep: today's commits + modified files → Tracker items.
ops-triage
Triage protocol for blocked/complex/multi-stakeholder work; pulls Notion state.
progress-report
Day N report from Tracker + git + pipeline (grade, snapshot, metrics).
protocol-audit
Governance doc staleness, fragmentation, drift-from-reality scan.
sprint-close
Close a 2-week sprint; review completion, slippage, carry-over discipline.
stale-citation-alert
Evidence Registry hygiene sweep for stale citations and missing dates.

SC-messaging-quality SHARED

Phrase registry and copy-quality tooling. Three skills:

audit
Light-pass cross-project phrase registry audit; field gaps, missing registries.
evidence-hygiene
Evidence Registry hygiene: completeness, persona fit, dedup, authority alignment.
hygiene
Full phrase registry hygiene: re-rate, strip channel labels, deprecation review.

SC-notion-ops SHARED

Notion workspace quality and formatting. Two skills:

format
Notion page formatting standards and scaffolding.
wq-check
Audit a page against Workspace Quality standards and fix issues.

PL-venture-studio PERSONAL

Wherewithal venture incubation. Skills: build, craft. Listed for completeness — not shared with Stratum teammates.

overnight-design-scan PERSONAL

Portfolio design quality monitoring across the Wherewithal ventures. Personal, not shared.

stratum-cli reference

The stratum-cli repo (separate from claude-team-config) is the Node.js CLI that handles operational data flow — Notion read/write, lead pipeline, outreach, dashboard data generation. Skills call it; you can also call it directly.

cd ~/REPOS/Stratum\ Collective/stratum-cli
node bin/stratum.js --<command>
DomainCommands
Lead pipeline --lead-import · --lead-triage · --lead-enrich · --facility-enrich
Outreach --poi-batch · --compose-outreach · --sequence-advance
Engagement --engagement-sync · --pipeline-status
Daily ops --daily-run · --ops-tracker-hygiene · --ops-dashboard-data · --pipeline-dashboard-data

--daily-run chains the full pipeline (lead-triage → ... → UIS scan → ops-dashboard-data → pipeline-dashboard-data → push-dashboard-data) and auto-commits the regenerated data.json files to this repo. See Automation Schedule for when each command runs in production.

Conventions & gotchas

Notion API

  • content_search_mode: "workspace_search" is required on every notion-search call. The default ai_search floods results with Google Calendar events instead of Notion pages.
  • notion-update-page Assignee requires the user://UUID prefix — bare UUIDs fail silently. Patrick: user://2dad872b-594c-817a-9a10-000221456611. Gennovva: user://2d9d872b-594c-8191-bf28-0002c2a3039e.
  • Never bulk move/archive Notion pages without explicit page-by-page confirmation. The 2026-03-20 incident trashed the entire workspace during a targeted cleanup.

Page naming

  • WF: prefix = workflow procedure (step-by-step execution an agent or human follows).
  • OPS: prefix = operational/procedural (execution plans, deployment plans, dated reports).
  • No prefix = reference/guide (canonical definitions, system docs, indexes, registries).
  • Decision test: "execute steps" → WF:/OPS:. "How the system works" → no prefix.

Page icons

  • Every new Notion page must have a page icon (emoji or custom).
  • No emojis in page titles. Title is text-only; the icon carries the visual.

Branch & commit

  • Imperative tense, concise, descriptive (e.g. "Add denial pattern classifier").
  • Commit freely — tell Patrick what changed and why in the next message.
  • Never skip hooks (--no-verify) unless explicitly requested.

Troubleshooting

SymptomLikely causeFix
Skill not found / wrong skill fires Plugin cache wiped or not installed Rerun bash setup.sh, restart Claude Code
CLAUDE.md broken symlink Stale symlink from a previous path Rerun bash setup.sh — script recreates it
Slash command not in autocomplete Workspace commands not symlinked Rerun bash setup.sh, restart Claude Code
Plugins show in marketplace but no skills Cache present but installed_plugins.json missing entry Rerun bash setup.sh
Cache drift after editing skill Source updated but cache not synced rsync source → cache (see Lifecycle » Editing)
git push fails with 403 HTTPS auth not linked to gh CLI Run gh auth setup-git
Notion search returns calendar events Default ai_search mode Add content_search_mode: "workspace_search"

Retired · archive only

20-agent Notion fleet

Retired 2026-03-21. The previous T1/T2 instruction architecture and all operational intelligence have been migrated to Claude Code plugins under claude-team-config/plugins/SC-*/skills/. The Agent Index page in Notion is retained as a historical reference only — do not treat it as live operational state.

T1/T2 instruction architecture

Retired with the agent fleet (2026-03-21). Skill files in SC-*/skills/*/SKILL.md are now the canonical instruction surface for operational behavior.