Skill Cleanup & Marketplace — PoC Audit

Date: 2026-04-27 Author: Davis Dunham (with assistance from Cursor agent) Project: Davis Onboarding — Priority 4: Skill Cleanup & Marketplace Stage: PoC (“Audit existing skills, identify duplicates and gaps”) Scope: .cursor/skills/ in brainforge-ai/brainforge-platform and plugins/brainforge-platform/skills/ in brainforge-ai/brainforge-plugin-marketplace


TL;DR

The PoC found three concrete, ship-now cleanups and one structural finding worth a follow-up ticket:

  1. 🔴 Delete 15 stale impeccable-* prefixed copies (✅ executed 2026-04-27). They duplicated the canonical impeccable submodule (already symlinked into the same skills directory) but with older, drifted content — the single largest source of duplication in the tree. 5 prefix-only copies (arrange, extract, normalize, onboard, teach-impeccable) are retained pending platform review because they have no canonical replacement.
  2. 🔴 Removed the impeccable-frontend-design~origin_main cruft symlink (✅ executed 2026-04-27) — a tilde-suffixed worktree leftover.
  3. 🟡 35 skills missing allowed-tools frontmatter (per bugbot-derived-patterns.mdc); 15 of those were just removed via cleanup #1, 5 remain in the retained prefix-only copies (will be addressed when platform decides their fate), leaving 15 real first-party offenders to fix.
  4. 🟢 Structural finding: the proposal doc’s framing — “audit .cursor/skills/, .opencode/skills/, .agents/skills/ — is outdated. The latter two are symlinks to .cursor/skills/. Recommend updating the proposal copy.

A full set of duplicate-removal commands is at the bottom (§9).


1. Source of truth

PathTypeEntries
.cursor/skills/Real directory219 entries
.opencode/skills/Symlink → ../.cursor/skills(mirror)
.agents/skills/Symlink → ../.cursor/skills(mirror)

There is one skill tree, not three. All audit work targets .cursor/skills/.

The 219 entries decompose as:

  • 6 git submodules (third-party vendored): anthropic-skills, impeccable, last30days, omni-agent-skills, ui-ux-pro-max-skill, visual-explainer.
  • 47 symlinks that surface skills out of those submodules at top level (e.g. polishimpeccable/.cursor/skills/polish, pdfanthropic-skills/skills/pdf).
  • ~162 first-party SKILL.md directories, of which 20 are the impeccable-* prefixed duplicates described below.

Submodules were initialized via git submodule update --init --recursive for this audit. All six pinned commits checked out cleanly.


2. The impeccable-* duplicate set 🔴

The single biggest cleanup target.

What’s there

Two parallel naming conventions for impeccable skills coexist in the same directory:

Canonical (symlink, current)Stale duplicate (standalone copy)
adaptimpeccable/.cursor/skills/adaptimpeccable-adapt/
animateimpeccable/.cursor/skills/animateimpeccable-animate/
auditimpeccable/.cursor/skills/auditimpeccable-audit/
bolderimpeccable/.cursor/skills/bolderimpeccable-bolder/
clarifyimpeccable/.cursor/skills/clarifyimpeccable-clarify/
colorizeimpeccable/.cursor/skills/colorizeimpeccable-colorize/
critiqueimpeccable/.cursor/skills/critiqueimpeccable-critique/
delightimpeccable/.cursor/skills/delightimpeccable-delight/
distillimpeccable/.cursor/skills/distillimpeccable-distill/
hardenimpeccable/.cursor/skills/hardenimpeccable-harden/
optimizeimpeccable/.cursor/skills/optimizeimpeccable-optimize/
overdriveimpeccable/.cursor/skills/overdriveimpeccable-overdrive/
polishimpeccable/.cursor/skills/polishimpeccable-polish/
quieterimpeccable/.cursor/skills/quieterimpeccable-quieter/
typesetimpeccable/.cursor/skills/typesetimpeccable-typeset/
no canonical pairimpeccable-arrange/
no canonical pairimpeccable-extract/
no canonical pairimpeccable-normalize/
no canonical pairimpeccable-onboard/
no canonical pairimpeccable-teach-impeccable/

Evidence the duplicates are stale

Diff of impeccable-polish/SKILL.md vs canonical polish/SKILL.md:

< name: impeccable-polish               > name: polish
                                        > version: 2.1.1
< Read and follow the **impeccable-     > Invoke /impeccable — it contains
  frontend-design** skill — …             design principles, …
< …MUST run the **impeccable-teach-     > …MUST run /impeccable teach first.
  impeccable** skill first…
  • The duplicates use the prefixed-name skill referencing convention; the canonical upstream uses the /impeccable slash-command convention (newer).
  • The duplicates have no version field; canonical is at 2.1.1.
  • All 15 prefixed/canonical pairs differ at the content level (verified via diff).

Five duplicates with no canonical pair — kept for now

impeccable-arrange, impeccable-extract, impeccable-normalize, impeccable-onboard, impeccable-teach-impeccable exist only as prefixed copies — they have no equivalent in the current upstream impeccable submodule (verified against impeccable/.cursor/skills/). Two interpretations:

  1. Removed upstream — verbs that the impeccable maintainer dropped between vendored versions; safe to delete locally too.
  2. First-party extensions — Brainforge-specific impeccable verbs that were authored under the prefixed convention. If anyone uses them, they should be moved out from under the impeccable- prefix and given proper frontmatter.

Decision (2026-04-27): these five are retained pending review because deletion would remove verbs that have no canonical replacement, unlike the other 15 prefixed copies which were drift-only duplicates of upstream skills. Open question for platform: are any of these actively invoked? If so, plan a rename out from under the impeccable- prefix; otherwise schedule for deletion in the MVP-stage cleanup.

Why this matters

  • Doubles the discoverability surface (two different names that mostly do the same thing).
  • Causes Bugbot/audit noise — the duplicates lack allowed-tools, lack version, and reference deprecated skill names.
  • The marketplace’s plugins/impeccable/ plugin already ships only the canonical 18 — so the monorepo is the only place the cruft lives.

3. impeccable-frontend-design~origin_main 🔴

A tilde-suffixed symlink:

.cursor/skills/impeccable-frontend-design~origin_main → impeccable/.cursor/skills/frontend-design

Almost certainly an artifact of a worktree merge or branch-name-keyed temp file that got committed. The non-suffixed impeccable-frontend-design symlink already exists. Safe to delete.


4. allowed-tools compliance 🟡

Per .cursor/rules/bugbot-derived-patterns.mdc, every SKILL.md must declare allowed-tools in its YAML frontmatter.

  • Total first-party SKILL.md files: 161
  • Missing allowed-tools: 35 (22%)

Breakdown

20 of the 35 are the impeccable-* duplicates above — fixed automatically once §2 is executed.

15 real first-party offenders (need real fixes):

SkillNotes
contribute-chat-historyFirst-party
daily-partnership-refreshPartnership-area gap (see §6)
execute-and-askLikely uses Bash + ask flows — needs Bash, question
executive-performance-reviewProbably needs Read, Write, call_mcp_tool
partner-call-recap-outboundPartnership-area gap
partner-channel-kickoffPartnership-area gap
partner-comarketing-cadencePartnership-area gap
partner-event-ops-updatePartnership-area gap
partner-poc-transitionPartnership-area gap
partner-reply-bundled-asksPartnership-area gap
partnership-activity-signalsPartnership-area gap
partnership-hubspot-eod-payloadPartnership-area gap; HubSpot MCP tool
partnership-orchestrator-marketing-hubPartnership-area gap
quarterly-planningFirst-party
repo-knowledge-hygieneFirst-party

The partnership-area cluster (10 of 15 real offenders) is suspicious — it suggests a skill author who didn’t follow the rule consistently. Worth a single batch-fix PR.


5. Marketplace gap analysis 🟢

The marketplace plugin plugins/brainforge-platform/skills/ has 136 entries; the monorepo first-party set has 162. The gap is 33 skills.

Skills in monorepo but missing from marketplace

After excluding the 20 impeccable-* duplicates (which should be deleted, not published):

SkillDisposition
analytics-ai-usecase-prioritizationStrategy/consulting — review for portability
clockify-mcp-setupInternal tooling — likely should be vendored
clockify-update-hoursInternal tooling — likely should be vendored
coe-design-crossfunctionalCoe framework — likely should be vendored
coe-framework-orchestratorCoe framework — likely should be vendored
data-operating-model-designStrategy — review for portability
governance-decision-rightsStrategy — review for portability
hubspot-deal-standardsHubSpot — should be vendored
omni-zero-to-one-linear-setupInternal setup — review
onboard-to-azureInternal setup — review
partner-outbound-commsPartnership — should be vendored
transcribe-audioGeneric utility — review
transformation-roadmap-balancingStrategy — review

Skills in marketplace but missing from monorepo

These are vendored single-skill products the marketplace explicitly bundles via plugin description (line 14 of plugin.json):

  • last30days, ui-ux-pro-max, visual-explainer — already submodules in the monorepo, surfaced at different paths.

The other entries (README.md, VENDORED_THIRD_PARTY.md, GTM_PARTNER_AUTOMATION_CATALOG.md, IMPECCABLE-SKILLS.md) are docs files in the marketplace, not skills — false positives.

Conclusion

  • 0 skills are unaccounted for between marketplace and monorepo once you exclude duplicates and docs.
  • 13 monorepo skills are publishable candidates. Default disposition: vendor any that are portable; mark the strategy/consulting ones (Coe, governance, data operating model, transformation roadmap) as “first-party only” and leave them out of marketplace. This is an MVP-stage decision, not a PoC blocker.

6. Pre-flight / escalation gaps 🟢

The weekly-skill-audit skill recommends client-facing skills carry a Step 1.5 escalation safety check (modeled on client-touchpoint-drafter).

  • Client-facing skills (mention “client”, “partner”, or “customer”): 115
  • Of those, with explicit escalation/pre-flight check: 20
  • Missing pre-flight: 95

This is a much larger universe than the PoC should try to fix. Recommendation: scope it to a tighter “communicates externally” subset (drafts emails, sends Slack messages, schedules calendar events) and revisit at MVP stage as part of the consolidation work.

A representative slice of priority candidates (skills that draft outbound communication):

  • client-touchpoint-drafter ✅ already has it (the reference pattern)
  • email-client-context
  • email-client-follow-up
  • dev-ship-slack-note
  • partner-call-recap-outbound
  • partner-comarketing-cadence
  • team-slack-announcement

7. Orphaned skills 🟢

Skills with no inbound references from .cursor/rules/*.mdc or .cursor/skills/README.md: 52.

Of those, 20 are the impeccable- duplicates* (auto-resolved by §2).

The remaining ~32 are real orphans. Spot-check shows they fall into three groups:

  1. Strategy / governance one-offs (low usage by design): analytics-ai-usecase-prioritization, coe-design-crossfunctional, coe-framework-orchestrator, data-operating-model-design, governance-decision-rights, transformation-roadmap-balancing. Probably keep, but document.
  2. Internal setup utilities (run once per onboarding): brainforge-setup, onboard-to-azure, omni-zero-to-one-linear-setup. Probably keep.
  3. Partnership skills (cluster of 6+ partner-* skills with no inbound refs): may indicate the partnership orchestrator (partnership-orchestrator-marketing-hub) is itself orphaned, breaking the chain. Worth a closer look as part of MVP work.

The README itself only references 8 skills by name — it is largely a docs/setup file, not a skills inventory. Recommendation: add a generated catalog (or link to GTM_PARTNER_AUTOMATION_CATALOG.md pattern) so the README earns its keep in the orphan check.


8. Security & hygiene checks 🟢

Skills handling potentially-unsafe patterns

Skills mentioning HTML generation, SQL ILIKE, or redirects (per the weekly-skill-audit security pattern list):

  • algorithmic-art, anthropic-frontend-design, audit, bolder, brainforge-deck-review, clarify, client-standup-visual-deck, critique, docx, expert-network-design, frontend-design, github-repo-discovery, harden, impeccable-audit, impeccable-bolder, …

A spot-check did not surface obvious un-escaped HTML or unsanitized SQL. No critical findings, but a deeper review at MVP stage is warranted on any skill that emits HTML pages from user input.

Repo hygiene

  • No personal .cursor/plans/* files committed in the recent skill PRs.
  • No PR-DESCRIPTION-*.md or IMPLEMENTATION_SUMMARY.md scratch files in skill directories.

Ordered by safety and value.

🔴 Critical (executed 2026-04-27)

cd /home/davin/brainforge/brainforge-platform
 
# 1. Deleted the 15 stale impeccable-* prefixed duplicates that have canonical pairs in the impeccable submodule
git rm -r .cursor/skills/impeccable-{adapt,animate,audit,bolder,clarify,colorize,critique,delight,distill,harden,optimize,overdrive,polish,quieter,typeset}
 
# 2. Removed the tilde-suffix cruft symlink
git rm .cursor/skills/impeccable-frontend-design~origin_main

Held back for platform review (no canonical replacement): impeccable-arrange, impeccable-extract, impeccable-normalize, impeccable-onboard, impeccable-teach-impeccable.

Validation:

  • grep -rl "impeccable-polish\|impeccable-audit\|impeccable-clarify" .cursor/ — returns only this audit doc ✅
  • Canonical bare-name symlinks (/polish, /audit, /clarify, etc.) still resolve to the impeccable submodule.

Realized impact:

  • Skills tree dropped from 219 → 203 entries.
  • allowed-tools-missing count dropped from 35 → 20 (the remaining 5 prefix-only retained copies still lack it pending the rename/delete decision).
  • Orphaned-skills count dropped from 52 → ~37.

🟡 Warnings (next 2 weeks)

  1. Add allowed-tools to the 15 real offenders — single batch PR. Each gets a frontmatter block listing the tools it actually uses (most are some combination of Read, Write, StrReplace, Grep, Bash, call_mcp_tool, question). (✅ executed 2026-04-28)
  2. Decide fate of the 5 prefix-only impeccable verbs (arrange, extract, normalize, onboard, teach-impeccable) — ask in platform; default to delete if no one claims them.
  3. Update the proposal doc (davis-onboarding-project-proposals.md Priority 4) to reflect that .opencode/skills and .agents/skills are symlinks, not separate trees. (✅ executed 2026-04-28)

🟢 Suggestions (MVP stage)

  1. Marketplace publication review — for the 13 publishable candidates in §5, decide which to vendor and which to mark first-party-only. Recommend a plugin.json tags: ["first-party-only"] flag for skills that should never be vendored.
  2. Partnership orchestration audit — the partnership cluster has missing allowed-tools AND missing inbound refs across ~10 skills. May need the orchestrator pattern from delivery-orchestrator.
  3. Pre-flight check rollout — scope to outbound-communication skills only (~10 candidates), apply the client-touchpoint-drafter Step 1.5 pattern.
  4. README inventory generation — auto-generate a skills catalog from frontmatter to make orphan detection meaningful.

10. Stats summary

MetricValue
Total entries in .cursor/skills/219
Symlinks to submodules47
Submodule directories6
First-party SKILL.md directories~162
→ of which impeccable-* duplicates20
Skills missing allowed-tools35 (22%)
→ real first-party offenders (post-cleanup)15
Potentially orphaned skills52
→ real orphans (post-cleanup)~32
Marketplace publication candidates13
Client-facing skills115
→ with pre-flight escalation check20 (17%)

11. PoC acceptance criteria check

From davis-onboarding-project-proposals.md Priority 4:

PoC | Audit existing skills, identify duplicates and gaps

  • Audited existing skills across all three referenced paths (collapsed to one source of truth).
  • Identified duplicates: 20 impeccable-* prefixed copies + 1 tilde-suffix cruft.
  • Identified gaps: 13 publishable-candidate skills, 15 real allowed-tools violations, 52 orphan candidates.
  • Produced a prioritized cleanup list with concrete commands.

PoC: complete. Next stage (MVP) requires sign-off from Uttam on §9 actions 6–9 before proceeding.


12. Skill taxonomy (2026-04-28)

Every first-party SKILL.md now carries two frontmatter fields — department (top level) and workflow (sub-level). Both support single strings or YAML lists for cross-cutting skills.

Departments and workflows

DepartmentWorkflows
engineeringcode-review, frontend, ai-agents, infra, research, security, documentation
dataplatform-docs, data-modeling, analytics, governance, infra
deliveryclient-ops, project-tracking, planning, reporting, orchestration, knowledge-ops
salesgtm, crm, prospecting, sow
partnershipspartner-ops, partner-comms, partner-crm, co-marketing
legalcontracts, compliance
peopleperformance, onboarding, learning
executivestrategy, planning, resource-allocation
operationsproductivity, communications, time-tracking, setup, knowledge
platformskill-management, content-editing, agent-infra

Coverage

  • 146 first-party skills tagged (100% of first-party SKILL.md files).
  • 8 cross-cutting skills use YAML list format for both fields: data-operating-model-design, governance-decision-rights, sl-allocation-audit, sl-allocation-scenarios, sl-allocation-updater, composable-product-research-on-primitives, quarterly-planning, grill-me.
  • 45 submodule-surfaced skills (canonical symlinks from impeccable, anthropic-skills, omni-agent-skills, etc.) are intentionally not tagged — they come from third-party repos.

13. Mode-driven consolidation (2026-04-28) — MVP stage

Following the PoC, the audit moved into an aggressive consolidation phase to support hooks/auto-execution work. 63 narrow first-party skills were merged into 11 mode-driven orchestrators.

What got built

Each orchestrator follows the canonical data-platform-doc pattern: frontmatter (name, multi-mode description, union of allowed-tools, preserved department / workflow, version: 1.0.0) → identity → When to useMode resolution (3 steps: explicit --mode, infer, stop and ask if ambiguous) → per-mode sections (faithful copy of source skill bodies) → Universal rulesReferences.

OrchestratorModesSources merged
partner-orchestrator14 modes15 partner-* skills (incl. existing partner-outbound-comms router)
partnership-daily-loop3 modes3 partnership-* daily skills
linear-orchestrator8 modes (with sub-flags)9 linear-* skills
legal-orchestrator14 modes13 legal-* skills + ai-legal-assistant router (also legal-risks, legal-terms)
client-orchestrator6 modes6 client-/email-client-* skills
gtm-orchestrator6 modes6 gtm-* skills
executive-brief-orchestrator6 modes6 daily/exec briefing skills
data-semantic-orchestrator3 modes3 data-* semantic-view skills
allocation-orchestrator3 modes3 sl-allocation-* skills
audit-orchestrator4 modes4 audit/triage skills
feedback-orchestrator4 modes4 feedback/review skills (document-council persona matrix moved to references/personas.md)

Plus 1 onboarding consolidation: onboard-team-member (modes: new-hire, azure) replaces onboard-new-hire + onboard-to-azure. The onboard alias to upstream impeccable harden was deleted.

Mode-resolution convention

Every orchestrator includes a ## Mode resolution section with three steps:

  1. If user passed --mode <name> or named a mode explicitly, use it.
  2. Otherwise, infer mode from phrasing using a short keyword/intent table.
  3. If inference is ambiguous, STOP and ASK the user — never silently guess. Mutating workflows (Linear, HubSpot, Slack writes) MUST not run on inferred mode without explicit user confirmation.

Two-phase approval gates from source skills (e.g. partner broadcast Phase 1/2, HubSpot dry-run-first, Robert YES gate) are preserved intact and called out as Universal Rules so scheduled hook invocations still respect them.

Playbook conversions

Two reference-heavy skills were trimmed to thin triggers, with their guide content moved to knowledge/standards/04-prompts/:

  • mcp-builder (236 → 40 lines) — guide moved to knowledge/standards/04-prompts/development/mcp-builder-guide.md
  • transcript-grounded-ask (81 → 49 lines) — rules moved to knowledge/standards/04-prompts/vault/transcript-grounding.md

Both keep their frontmatter intact for discoverability; their bodies now read the playbook doc on invocation.

Outright deletions

  • 5 retained impeccable-* prefix-only verbs (arrange, extract, normalize, onboard, teach-impeccable) — no canonical upstream replacement; users call upstream verbs directly
  • 3 data-platform-doc-* alias dirs (kickoff, update, backfill) — modes already exist on the parent
  • slack-assistant-e2e-test — was a test suite, not a skill (move to CI)
  • linear-tickets-to-projects was already folded into linear-orchestrator --mode structure-hygiene --scope I1

Slash commands

Existing slash commands in .cursor/commands/ were preserved as thin wrappers passing --mode <name> to the new orchestrators. /legal-*, /grill-me, /deck-review, /council, /client-email-context, /draft-client-follow-up-email, /prepare-standup-deck, /client-standup-visual-deck, /create-pr all still work.

Hook-execution readiness

The mode-driven structure was designed for the in-flight hooks/auto-execution work. Each orchestrator can be invoked as <name> --mode <mode> from a hook with no human in the loop, with approval gates preserved for any mutating modes.

Daily-cron candidates: executive-brief-orchestrator --mode daily|partnership-daily|hod-morning, partnership-daily-loop --mode activity-signals|eod-payload, audit-orchestrator --mode escalation-triage, client-orchestrator --mode health-scorecard.

Weekly-cron candidates: partnership-daily-loop --mode marketing-hub, gtm-orchestrator --mode wbr-actuals, linear-orchestrator --mode label-audit|structure-hygiene|status-sync, audit-orchestrator --mode ops-triage, weekly-skill-audit.

Monthly-cron candidates: audit-orchestrator --mode sow-vs-delivered, legal-orchestrator --mode compliance-audit.

Aggregate impact

MetricBeforeAfterΔ
.cursor/skills/ entries204133-71 (-35%)
First-party skills~152~89-63
Mode-driven orchestrators1 (data-platform-doc)12+11
Skills with explicit “STOP AND ASK on ambiguous mode” rule112+11

Deferred

  • pr-workflow + codebase-audit split (create-pr, fix-pr, opencode-fix-prs-24hpr-workflow; pr-health-analyzer, github-repo-discovery, npm-vulnerability-fixer, research-codebase-opportunitiescodebase-audit) — skipped per user direction; PR/code skills remain standalone for now.
  • Slash-command collapse (/legal-* → single /legal --mode <name>) — kept individually for muscle memory; revisit if it becomes maintenance burden.

MVP acceptance check

  • Identified consolidation clusters across all first-party skills.
  • Built unified mode-driven orchestrators preserving operational content faithfully.
  • Established the “ask when ambiguous mode” convention (saved to memory + per-skill).
  • Preserved approval gates and two-phase rules so hooks can fire safely.
  • Updated README and command files; left no dangling references in primary command surfaces.
  • Removed alias/test cruft.

MVP: complete. Next: hooks wiring (separate work) + pr-workflow / codebase-audit split if and when desired.

Restoration of old skill names as thin routing shims (2026-04-30)

After the consolidation landed, teammates flagged that referencing skills by their old names (in playbooks, in muscle memory, by typing the name to a Cursor/OpenCode agent) returned nothing. Workflow continuity was at risk for anyone still writing client-engagement-kickoff or partner-channel-kickoff. To preserve discoverability without reverting the orchestrator work, every consolidated narrow skill was re-added as a thin routing shim:

  • Shape: .cursor/skills/<old-name>/SKILL.md with frontmatter (name, original description, allowed-tools copied from the target, department/workflow, alias_of, alias_mode, is_thin_alias: true) plus a 4-line body instructing the agent to “treat the user’s request as <orchestrator> --mode <mode> and execute that section directly.”
  • Source of truth: scripts/skill-shims.manifest.json lists every (shim_name, alias_of, alias_mode, kind) tuple. scripts/generate-skill-shims.mjs rebuilds shim files from the manifest, recovering original descriptions via git show main:<path>.
  • Coverage (85 shims): 14 legal, 6 client, 6 gtm, 15 partner, 3 partnership-daily-loop, 9 linear, 6 executive-brief, 3 data-semantic, 3 allocation, 4 audit, 4 feedback, 3 data-platform-doc aliases, 3 onboard aliases, 5 impeccable prefix-only verbs, 1 router exception (partner-outbound-comms).
  • Index visibility: scripts/generate-skill-index.mjs skips entries with is_thin_alias: true, so SKILL_INDEX.md continues to surface only canonical orchestrators. Shims are reachable by direct name lookup but never crowd the index.
  • Routing safety: Fixed-mode shims hand the orchestrator an explicit --mode, satisfying the “Mode resolution” rule’s Step 1 (use explicit). The lone router exception (partner-outbound-comms) intentionally has alias_mode: null and lets partner-orchestrator’s mode resolution run normally. The five impeccable shims are two-hop (point at bare-name compatibility aliases that themselves redirect to upstream Impeccable verbs).
  • Tests: scripts/skill-shims.test.mjs (npm run test:skill-shims) asserts manifest/disk/index parity, frontmatter completeness, mode validity against each orchestrator’s ## Mode: headings, body shape, and allowed-tools subset compliance. Wired into .github/workflows/skill-index.yml.
  • Slash commands & routing: Existing .cursor/commands/*.md wrappers and .opencode/skill-routing.md were unchanged — they already point at orchestrators. Shims do not appear in the routing table to avoid double-routing.

Open questions (flagged for platform): impeccable-onboard routes to onboard-team-member --mode new-hire as a best-fit guess (no canonical replacement existed). Confirm or replace.