feat(plugins): add 4 BSI-native plugins — gameday-ops, site-ops, editorial-desk, champion-enigma-engine#2
feat(plugins): add 4 BSI-native plugins — gameday-ops, site-ops, editorial-desk, champion-enigma-engine#2ahump20 wants to merge 2 commits into
Conversation
…igma-engine Four BSI-native plugins wired from Austin's existing Claude Code workspace: - gameday-ops: live game coverage desk with the production bsi-gameday-ops skill (6 reference workflows, 4 output templates), wired to the Blaze Sports Intel MCP for real-time data. Supersedes the ghost live-scores/ scaffold. - site-ops: Heritage v2.1 visual compliance and skill-package curation. Bundles the visual-audit skill and two BSI-native agents (build-verify, skill-package-curator). Auto-starts chrome-devtools MCP via stdio. - editorial-desk: editorial voice + anti-fabrication discipline. Three new skills (bsi-voice-guide, anti-fabrication-protocol, research-workflow) codify the BSI journalism standard so deadline pressure doesn't produce fabricated quotes or invented stats. Supersedes sports-storytelling slot. - champion-enigma-engine: biometric-visual AI framework for quantifying athlete intangibles. Four skills covering the VCA / PD / PP / NQE components with 2025 research-grounded feasibility ratings (Feasible / Emerging / Speculative), plus a cee-evaluator agent and /cee-evaluate + /cee-compare commands. Consent-first, no overstated claims, paired with huggingface-skills for downstream ML pipelines. All four plugins ship both .claude-plugin/ and .codex-plugin/ manifests. Each .codex-plugin/plugin.json includes the rich interface block with brandColor #BF5700. marketplace.json updated: +4 available plugins, sports-storytelling coming-soon entry removed (superseded by editorial-desk). Ghost plugin dirs (college-baseball-sabermetrics, fantasy-sports, live-scores, sports-analytics) left untouched for triage in PR review — none are registered in the marketplace so installs are unaffected. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 40062f6f4a
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
|
||
| **Anti-Fabrication**: If the skill file doesn't exist, say so explicitly. If fields are missing, list them — do not infer or invent. If you cannot read the manifest format, ask for clarification. | ||
|
|
||
| **Path Handling**: The user sometimes pastes escaped paths (e.g., `com\~apple\~CloudDocs`). Normalize to the absolute iCloud path before reading. If the path appears malformed (e.g., leading `/U/Users/...`), flag it and propose the corrected path: `/Users/AustinHumphrey/Library/Mobile Documents/com~apple~CloudDocs/BSI-repo/skill-packages/universal-skills-marketplace.skill`. |
There was a problem hiding this comment.
Remove hardcoded iCloud path normalization
This agent hardcodes a single machine-specific path as the “correct” location for skill manifests, so on any installation that is not Austin’s iCloud repo it will misclassify valid user inputs and steer execution to a nonexistent path. That makes skill-package-curator fail for the majority of users even when they provide a valid package path. The path handling should stay generic (normalize escaping only) and preserve the user-provided absolute/relative location.
Useful? React with 👍 / 👎.
|
|
||
| # Persistent Agent Memory | ||
|
|
||
| You have a persistent, file-based memory system at `/Users/AustinHumphrey/.claude/agent-memory/skill-package-curator/`. This directory already exists — write to it directly with the Write tool (do not run mkdir or check for its existence). |
There was a problem hiding this comment.
Drop machine-specific memory directory requirement
The agent requires writes to /Users/AustinHumphrey/.claude/agent-memory/skill-package-curator/ and assumes that directory already exists, which is false for other users and environments. In practice this causes memory operations to fail (or attempt writes outside the working project), breaking the agent’s documented workflow whenever the command is used outside that one host setup.
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
Pull request overview
Adds four new first-party plugins to the Sports-Plugins marketplace, expanding the available plugin catalog and documenting how to install and use each plugin’s skills/agents/commands.
Changes:
- Added new plugins:
gameday-ops,site-ops,editorial-desk, andchampion-enigma-engine(skills/agents/commands + manifests + READMEs). - Updated marketplace registration (
.claude-plugin/marketplace.json) and rootREADME.mdto reflect the expanded set of available plugins. - Added MCP configuration for
gameday-ops(HTTP MCP) andsite-ops(Chrome DevTools MCP vianpx).
Reviewed changes
Copilot reviewed 46 out of 46 changed files in this pull request and generated 7 comments.
Show a summary per file
| File | Description |
|---|---|
| plugins/site-ops/skills/visual-audit/SKILL.md | Adds the visual-audit skill playbook and reporting format. |
| plugins/site-ops/commands/heritage-audit.md | Adds /heritage-audit command documentation and expected checks. |
| plugins/site-ops/commands/deploy-gate.md | Adds /deploy-gate pre-deploy checklist and escalation routing. |
| plugins/site-ops/agents/skill-package-curator.md | Adds skill-package-curator agent definition and operating protocol. |
| plugins/site-ops/agents/build-verify.md | Adds build-verify agent definition using Chrome DevTools MCP tools. |
| plugins/site-ops/README.md | Documents site-ops install and included skill/agents/MCP. |
| plugins/site-ops/.mcp.json | Defines bundled chrome-devtools MCP server (stdio via npx). |
| plugins/site-ops/.codex-plugin/plugin.json | Codex manifest for site-ops including interface metadata. |
| plugins/site-ops/.claude-plugin/plugin.json | Claude manifest for site-ops. |
| plugins/gameday-ops/skills/bsi-gameday-ops/references/tool-priority.md | Documents tool-tiering and fallback hierarchy for live coverage. |
| plugins/gameday-ops/skills/bsi-gameday-ops/references/single-game-focus.md | Defines single-game tracking workflow. |
| plugins/gameday-ops/skills/bsi-gameday-ops/references/post-game-recap.md | Defines post-game rapid recap workflow. |
| plugins/gameday-ops/skills/bsi-gameday-ops/references/live-monitoring.md | Defines national slate monitoring workflow and cadence. |
| plugins/gameday-ops/skills/bsi-gameday-ops/references/leverage-situations.md | Defines high-leverage detection workflow and constraints. |
| plugins/gameday-ops/skills/bsi-gameday-ops/references/handoff-protocol.md | Defines routing rules back to deeper “intelligence” skills. |
| plugins/gameday-ops/skills/bsi-gameday-ops/assets/scoreboard-template.md | Adds standardized scoreboard output template. |
| plugins/gameday-ops/skills/bsi-gameday-ops/assets/recap-template.md | Adds standardized post-game recap output template. |
| plugins/gameday-ops/skills/bsi-gameday-ops/assets/leverage-template.md | Adds standardized leverage-moment output template. |
| plugins/gameday-ops/skills/bsi-gameday-ops/assets/game-focus-template.md | Adds standardized single-game focus output template. |
| plugins/gameday-ops/skills/bsi-gameday-ops/SKILL.md | Adds the bsi-gameday-ops dispatcher skill tying references/templates together. |
| plugins/gameday-ops/commands/gameday-watch.md | Adds /gameday-watch command documentation. |
| plugins/gameday-ops/commands/gameday-recap.md | Adds /gameday-recap command documentation. |
| plugins/gameday-ops/README.md | Documents gameday-ops install, routing, and non-negotiables. |
| plugins/gameday-ops/.mcp.json | Configures the Blaze Sports Intel MCP HTTP endpoint for the plugin. |
| plugins/gameday-ops/.codex-plugin/plugin.json | Codex manifest for gameday-ops including interface metadata. |
| plugins/gameday-ops/.claude-plugin/plugin.json | Claude manifest for gameday-ops. |
| plugins/editorial-desk/skills/research-workflow/SKILL.md | Adds the research workflow skill (source hierarchy + reproducibility). |
| plugins/editorial-desk/skills/bsi-voice-guide/SKILL.md | Adds the BSI voice/tone guide skill. |
| plugins/editorial-desk/skills/anti-fabrication-protocol/SKILL.md | Adds anti-fabrication checklist and enforcement patterns. |
| plugins/editorial-desk/commands/recap-draft.md | Adds /recap-draft long-form recap command documentation. |
| plugins/editorial-desk/commands/editorial-brief.md | Adds /editorial-brief pre-draft brief command documentation. |
| plugins/editorial-desk/README.md | Documents editorial-desk install and plugin boundaries vs. other plugins. |
| plugins/editorial-desk/.codex-plugin/plugin.json | Codex manifest for editorial-desk including interface metadata. |
| plugins/editorial-desk/.claude-plugin/plugin.json | Claude manifest for editorial-desk. |
| plugins/champion-enigma-engine/skills/visual-cortex-analyzer/SKILL.md | Adds VCA component skill (vision/gaze/posture) with feasibility tags. |
| plugins/champion-enigma-engine/skills/psychological-profiler/SKILL.md | Adds PP component skill (psychometrics/cognitive/pressure) with ethics guidance. |
| plugins/champion-enigma-engine/skills/physiological-decoder/SKILL.md | Adds PD component skill (HRV/EEG/GSR) with anti-overclaim rules. |
| plugins/champion-enigma-engine/skills/cee-framework/SKILL.md | Adds CEE framework skill defining the feasibility governance model. |
| plugins/champion-enigma-engine/commands/cee-evaluate.md | Adds /cee-evaluate command documentation and modes. |
| plugins/champion-enigma-engine/commands/cee-compare.md | Adds /cee-compare command documentation and comparison rules. |
| plugins/champion-enigma-engine/agents/cee-evaluator.md | Adds cee-evaluator agent template and reporting format. |
| plugins/champion-enigma-engine/README.md | Documents CEE components, scope limits, and recommended downstream dependencies. |
| plugins/champion-enigma-engine/.codex-plugin/plugin.json | Codex manifest for champion-enigma-engine including interface metadata. |
| plugins/champion-enigma-engine/.claude-plugin/plugin.json | Claude manifest for champion-enigma-engine. |
| README.md | Updates the root catalog to list the four new available plugins and coming-soon roadmap. |
| .claude-plugin/marketplace.json | Registers the four new plugins as available in the marketplace manifest. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| "command": "npx", | ||
| "args": ["-y", "chrome-devtools-mcp@latest"], | ||
| "description": "Chrome DevTools MCP — navigate, screenshot, evaluate JS, inspect console and network. Used by the build-verify agent for in-session visual compliance checks." |
There was a problem hiding this comment.
Using chrome-devtools-mcp@latest makes plugin behavior non-reproducible and can break installs when upstream releases a breaking change. Consider pinning to a known-good version (and updating intentionally) to improve reliability.
| ## Existing Patterns to Reuse | ||
|
|
||
| - **Overflow evaluator:** `tests/smoke/mobile-overflow.spec.ts` — `createOverflowEvaluator()` | ||
| - **Banned placeholders:** `tests/e2e/production-audit.spec.ts` — `BANNED_PLACEHOLDERS` | ||
| - **Truthful state:** `tests/e2e/production-audit.spec.ts` — `assertTruthfulState()` | ||
| - **Heritage tokens:** `docs/design-system/heritage-tokens-reference.css` |
There was a problem hiding this comment.
This skill references repo paths that don’t exist in this repository (e.g., tests/smoke/mobile-overflow.spec.ts, tests/e2e/production-audit.spec.ts). Either add those referenced files, or change this section to point at resources that actually exist here (or explicitly label them as paths in the separate BSI app repo).
| - **Truthful state:** `tests/e2e/production-audit.spec.ts` — `assertTruthfulState()` | ||
| - **Heritage tokens:** `docs/design-system/heritage-tokens-reference.css` | ||
| - **Heritage spec:** `docs/design-system/heritage-v2.1-spec.md` |
There was a problem hiding this comment.
This list also references docs/design-system/* files that are not present in this repo (no docs/design-system/ directory). If these are meant to live in a separate BSI product repo, please clarify that in the text; otherwise add the referenced design-system docs so the links aren’t dead.
| Verify after edits to: | ||
| - `app/**/*.tsx` — page components | ||
| - `components/**/*.tsx` — shared components | ||
| - `app/styles/**` or `app/globals.css` — global styles | ||
| - `tailwind.config.*` — Tailwind tokens | ||
| - Heritage token files in `docs/design-system/` |
There was a problem hiding this comment.
The agent instructions reference project paths (app/**, components/**, docs/design-system/) that don’t exist in this repository. If this agent is intended to be used inside a separate BSI app repo, please say so explicitly (or make the paths configurable) so users don’t try to follow steps against this plugin repo and hit dead ends.
| --- | ||
| name: "skill-package-curator" | ||
| description: "Use this agent when the user references a skill package path (e.g., paths under `skill-packages/`), asks to install, validate, publish, or audit a skill package, or requests work involving the universal-skills-marketplace.skill manifest. This includes parsing skill manifests, verifying skill package structure, wiring skills into the BSI platform, and managing the skills marketplace lifecycle.\\n\\n<example>\\nContext: User wants to validate a skill package in the BSI repo.\\nuser: \"/Users/AustinHumphrey/Library/Mobile Documents/com~apple~CloudDocs/BSI-repo/skill-packages/universal-skills-marketplace.skill\"\\nassistant: \"I'm going to use the Agent tool to launch the skill-package-curator agent to inspect and validate this skill package manifest.\"\\n<commentary>\\nThe user referenced a skill package path directly. Use the skill-package-curator to read the manifest, verify structure, and report findings.\\n</commentary>\\n</example>\\n\\n<example>\\nContext: User wants to publish a new skill to the marketplace.\\nuser: \"Add the college-baseball-analytics skill to the universal marketplace\"\\nassistant: \"Let me use the Agent tool to launch the skill-package-curator agent to wire this skill into the marketplace manifest.\"\\n<commentary>\\nSkill marketplace operations require manifest-aware handling. Delegate to skill-package-curator.\\n</commentary>\\n</example>" | ||
| model: sonnet | ||
| memory: user | ||
| --- |
There was a problem hiding this comment.
This agent hardcodes a local absolute path under /Users/AustinHumphrey/... in the frontmatter description examples. That makes the plugin non-portable and leaks a user-specific path into a public plugin. Prefer using a placeholder (e.g., /Users/<you>/...) or a relative path explanation, and avoid assuming iCloud directory structure.
| # Persistent Agent Memory | ||
|
|
||
| You have a persistent, file-based memory system at `/Users/AustinHumphrey/.claude/agent-memory/skill-package-curator/`. This directory already exists — write to it directly with the Write tool (do not run mkdir or check for its existence). | ||
|
|
||
| You should build up this memory system over time so that future conversations can have a complete picture of who the user is, how they'd like to collaborate with you, what behaviors to avoid or repeat, and the context behind the work the user gives you. | ||
|
|
There was a problem hiding this comment.
The “Persistent Agent Memory” section instructs writing to /Users/AustinHumphrey/.claude/agent-memory/... with a “Write tool”. This is very environment-specific and may not exist (or may be inaccessible) for most users/runtimes. Consider removing the hardcoded path and instead instruct the agent to use the platform’s provided memory mechanism (or to ask the user where to store notes).
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 46 out of 46 changed files in this pull request and generated 4 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| ## Non-negotiable rules enforced | ||
|
|
||
| - **No mock data.** Pre-commit hook and the build-verify agent both block `Math.random()` in data contexts, `mockGames`, `sampleData`, `faker.`, hardcoded team/score objects. | ||
| - **No freshness fabrication.** No hardcoded "live", "updated just now", "current" strings. Freshness comes from `meta.fetched_at`. | ||
| - **Verification before completion.** "Build passed" is not verification. Must `curl` the affected URLs and confirm real data appears. |
There was a problem hiding this comment.
The README claims a "Pre-commit hook" blocks mock-data patterns, but this repository only appears to enforce those patterns via CI (see .github/workflows/validate.yml), and the plugin itself doesn’t install a git hook. Consider rewording to avoid implying local pre-commit enforcement unless you actually ship hook setup instructions/code.
| 1. Calls `bsi_get_scoreboard` (or sport-specific equivalent) via the Blaze Sports Intel MCP. | ||
| 2. Filters for games currently in progress. | ||
| 3. For each live game, reads leverage state using the `leverage-situations.md` reference. | ||
| 4. Returns a formatted board: score, inning/quarter, win probability, leverage flag. |
There was a problem hiding this comment.
/gameday-watch output promises "win probability" for each live game, but the preceding steps only call bsi_get_scoreboard and a reference doc. If win probability requires extra tool calls (e.g., predict_game_outcome) it should be described as optional/conditional, or the output should omit it to avoid overpromising (and avoid an expensive per-game call pattern).
| 4. Returns a formatted board: score, inning/quarter, win probability, leverage flag. | |
| 4. Returns a formatted board: score, inning/quarter, leverage flag. |
|
|
||
| Uses `assets/scoreboard-template.md` from the bsi-gameday-ops skill. Close games (score diff ≤ 3 in baseball, ≤ 7 in football, ≤ 5 in basketball) and high-leverage late-inning situations are marked with text status prefixes/flags consistent with that template (no emoji). | ||
|
|
There was a problem hiding this comment.
This command says close/high-leverage games are marked with 🔥/⚡ emojis, but the referenced assets/scoreboard-template.md explicitly states "No emoji — text status prefixes only". Pick one convention and make both the command and template consistent (prefer text-only if that’s the global rule).
| # Leverage Situation Output Template | ||
|
|
||
| ``` | ||
| ⚡ HIGH LEVERAGE — [Game], [Inning] |
There was a problem hiding this comment.
The leverage output template starts with an emoji (⚡), which conflicts with the scoreboard template’s stated "No emoji" rule and the /gameday-watch command’s desire to use the scoreboard template conventions. Consider switching to a text-only prefix (e.g., "HIGH LEVERAGE") if the no-emoji rule is intended to be consistent across outputs.
| ⚡ HIGH LEVERAGE — [Game], [Inning] | |
| HIGH LEVERAGE — [Game], [Inning] |
Summary
Adds four BSI-native plugins ported from Austin's existing Claude Code workspace, promoting the marketplace from 2 → 6 available plugins.
bsi-gameday-opsskill (6 reference workflows, 4 output templates). Wired to the Blaze Sports Intel MCP.visual-auditskill plusbuild-verifyandskill-package-curatoragents. Auto-starts chrome-devtools MCP.huggingface-skillsfor downstream ML.All four follow the existing dual-platform convention (both
.claude-plugin/and.codex-plugin/manifests; Codex interface block with brandColor#BF5700). All JSON validated. marketplace.json catalog and root README updated.Ghost plugin dirs flagged for triage
Four skeletal plugin dirs exist in the tree but are NOT registered in marketplace.json — leftover from earlier Copilot iterations:
Left untouched in this PR for separate decision. Recommend a follow-up PR to `git rm` the superseded dirs.
Test plan
Discovery and rationale
Plan lives at `~/.claude/plans/gleaming-foraging-dream.md` — the inventory of every Skill / Agent / MCP connector worthy of sports-plugins, with feasibility ratings and touch-up notes. This PR implements the four plugin slots not already covered by Copilot's initial scaffolding.
🤖 Generated with Claude Code