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/inbrainforge-ai/brainforge-platformandplugins/brainforge-platform/skills/inbrainforge-ai/brainforge-plugin-marketplace
TL;DR
The PoC found three concrete, ship-now cleanups and one structural finding worth a follow-up ticket:
- 🔴 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. - 🔴 Removed the
impeccable-frontend-design~origin_maincruft symlink (✅ executed 2026-04-27) — a tilde-suffixed worktree leftover. - 🟡 35 skills missing
allowed-toolsfrontmatter (perbugbot-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. - 🟢 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
| Path | Type | Entries |
|---|---|---|
.cursor/skills/ | Real directory | 219 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.
polish→impeccable/.cursor/skills/polish,pdf→anthropic-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 --recursivefor 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) |
|---|---|
adapt → impeccable/.cursor/skills/adapt | impeccable-adapt/ |
animate → impeccable/.cursor/skills/animate | impeccable-animate/ |
audit → impeccable/.cursor/skills/audit | impeccable-audit/ |
bolder → impeccable/.cursor/skills/bolder | impeccable-bolder/ |
clarify → impeccable/.cursor/skills/clarify | impeccable-clarify/ |
colorize → impeccable/.cursor/skills/colorize | impeccable-colorize/ |
critique → impeccable/.cursor/skills/critique | impeccable-critique/ |
delight → impeccable/.cursor/skills/delight | impeccable-delight/ |
distill → impeccable/.cursor/skills/distill | impeccable-distill/ |
harden → impeccable/.cursor/skills/harden | impeccable-harden/ |
optimize → impeccable/.cursor/skills/optimize | impeccable-optimize/ |
overdrive → impeccable/.cursor/skills/overdrive | impeccable-overdrive/ |
polish → impeccable/.cursor/skills/polish | impeccable-polish/ |
quieter → impeccable/.cursor/skills/quieter | impeccable-quieter/ |
typeset → impeccable/.cursor/skills/typeset | impeccable-typeset/ |
| no canonical pair | impeccable-arrange/ |
| no canonical pair | impeccable-extract/ |
| no canonical pair | impeccable-normalize/ |
| no canonical pair | impeccable-onboard/ |
| no canonical pair | impeccable-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
/impeccableslash-command convention (newer). - The duplicates have no
versionfield; canonical is at2.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:
- Removed upstream — verbs that the impeccable maintainer dropped between vendored versions; safe to delete locally too.
- 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, lackversion, 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):
| Skill | Notes |
|---|---|
contribute-chat-history | First-party |
daily-partnership-refresh | Partnership-area gap (see §6) |
execute-and-ask | Likely uses Bash + ask flows — needs Bash, question |
executive-performance-review | Probably needs Read, Write, call_mcp_tool |
partner-call-recap-outbound | Partnership-area gap |
partner-channel-kickoff | Partnership-area gap |
partner-comarketing-cadence | Partnership-area gap |
partner-event-ops-update | Partnership-area gap |
partner-poc-transition | Partnership-area gap |
partner-reply-bundled-asks | Partnership-area gap |
partnership-activity-signals | Partnership-area gap |
partnership-hubspot-eod-payload | Partnership-area gap; HubSpot MCP tool |
partnership-orchestrator-marketing-hub | Partnership-area gap |
quarterly-planning | First-party |
repo-knowledge-hygiene | First-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):
| Skill | Disposition |
|---|---|
analytics-ai-usecase-prioritization | Strategy/consulting — review for portability |
clockify-mcp-setup | Internal tooling — likely should be vendored |
clockify-update-hours | Internal tooling — likely should be vendored |
coe-design-crossfunctional | Coe framework — likely should be vendored |
coe-framework-orchestrator | Coe framework — likely should be vendored |
data-operating-model-design | Strategy — review for portability |
governance-decision-rights | Strategy — review for portability |
hubspot-deal-standards | HubSpot — should be vendored |
omni-zero-to-one-linear-setup | Internal setup — review |
onboard-to-azure | Internal setup — review |
partner-outbound-comms | Partnership — should be vendored |
transcribe-audio | Generic utility — review |
transformation-roadmap-balancing | Strategy — 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-contextemail-client-follow-updev-ship-slack-notepartner-call-recap-outboundpartner-comarketing-cadenceteam-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:
- 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. - Internal setup utilities (run once per onboarding):
brainforge-setup,onboard-to-azure,omni-zero-to-one-linear-setup. Probably keep. - 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-*.mdorIMPLEMENTATION_SUMMARY.mdscratch files in skill directories.
9. Recommended cleanup actions
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_mainHeld 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)
- Add
allowed-toolsto the 15 real offenders — single batch PR. Each gets a frontmatter block listing the tools it actually uses (most are some combination ofRead,Write,StrReplace,Grep,Bash,call_mcp_tool,question). (✅ executed 2026-04-28) - 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. - Update the proposal doc (
davis-onboarding-project-proposals.mdPriority 4) to reflect that.opencode/skillsand.agents/skillsare symlinks, not separate trees. (✅ executed 2026-04-28)
🟢 Suggestions (MVP stage)
- Marketplace publication review — for the 13 publishable candidates in §5, decide which to vendor and which to mark first-party-only. Recommend a
plugin.jsontags: ["first-party-only"]flag for skills that should never be vendored. - Partnership orchestration audit — the partnership cluster has missing
allowed-toolsAND missing inbound refs across ~10 skills. May need the orchestrator pattern fromdelivery-orchestrator. - Pre-flight check rollout — scope to outbound-communication skills only (~10 candidates), apply the
client-touchpoint-drafterStep 1.5 pattern. - README inventory generation — auto-generate a skills catalog from frontmatter to make orphan detection meaningful.
10. Stats summary
| Metric | Value |
|---|---|
Total entries in .cursor/skills/ | 219 |
| Symlinks to submodules | 47 |
| Submodule directories | 6 |
| First-party SKILL.md directories | ~162 |
→ of which impeccable-* duplicates | 20 |
Skills missing allowed-tools | 35 (22%) |
| → real first-party offenders (post-cleanup) | 15 |
| Potentially orphaned skills | 52 |
| → real orphans (post-cleanup) | ~32 |
| Marketplace publication candidates | 13 |
| Client-facing skills | 115 |
| → with pre-flight escalation check | 20 (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-toolsviolations, 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
| Department | Workflows |
|---|---|
engineering | code-review, frontend, ai-agents, infra, research, security, documentation |
data | platform-docs, data-modeling, analytics, governance, infra |
delivery | client-ops, project-tracking, planning, reporting, orchestration, knowledge-ops |
sales | gtm, crm, prospecting, sow |
partnerships | partner-ops, partner-comms, partner-crm, co-marketing |
legal | contracts, compliance |
people | performance, onboarding, learning |
executive | strategy, planning, resource-allocation |
operations | productivity, communications, time-tracking, setup, knowledge |
platform | skill-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 use → Mode resolution (3 steps: explicit --mode, infer, stop and ask if ambiguous) → per-mode sections (faithful copy of source skill bodies) → Universal rules → References.
| Orchestrator | Modes | Sources merged |
|---|---|---|
partner-orchestrator | 14 modes | 15 partner-* skills (incl. existing partner-outbound-comms router) |
partnership-daily-loop | 3 modes | 3 partnership-* daily skills |
linear-orchestrator | 8 modes (with sub-flags) | 9 linear-* skills |
legal-orchestrator | 14 modes | 13 legal-* skills + ai-legal-assistant router (also legal-risks, legal-terms) |
client-orchestrator | 6 modes | 6 client-/email-client-* skills |
gtm-orchestrator | 6 modes | 6 gtm-* skills |
executive-brief-orchestrator | 6 modes | 6 daily/exec briefing skills |
data-semantic-orchestrator | 3 modes | 3 data-* semantic-view skills |
allocation-orchestrator | 3 modes | 3 sl-allocation-* skills |
audit-orchestrator | 4 modes | 4 audit/triage skills |
feedback-orchestrator | 4 modes | 4 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:
- If user passed
--mode <name>or named a mode explicitly, use it. - Otherwise, infer mode from phrasing using a short keyword/intent table.
- 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 toknowledge/standards/04-prompts/development/mcp-builder-guide.mdtranscript-grounded-ask(81 → 49 lines) — rules moved toknowledge/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-projectswas already folded intolinear-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
| Metric | Before | After | Δ |
|---|---|---|---|
.cursor/skills/ entries | 204 | 133 | -71 (-35%) |
| First-party skills | ~152 | ~89 | -63 |
| Mode-driven orchestrators | 1 (data-platform-doc) | 12 | +11 |
| Skills with explicit “STOP AND ASK on ambiguous mode” rule | 1 | 12 | +11 |
Deferred
pr-workflow+codebase-auditsplit (create-pr,fix-pr,opencode-fix-prs-24h→pr-workflow;pr-health-analyzer,github-repo-discovery,npm-vulnerability-fixer,research-codebase-opportunities→codebase-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.mdwith frontmatter (name, originaldescription,allowed-toolscopied 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.jsonlists every (shim_name, alias_of, alias_mode, kind) tuple.scripts/generate-skill-shims.mjsrebuilds shim files from the manifest, recovering original descriptions viagit 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.mjsskips entries withis_thin_alias: true, soSKILL_INDEX.mdcontinues 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 hasalias_mode: nulland letspartner-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, andallowed-toolssubset compliance. Wired into.github/workflows/skill-index.yml. - Slash commands & routing: Existing
.cursor/commands/*.mdwrappers and.opencode/skill-routing.mdwere 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.