Skip to content

refactor: collapse marketplace into one flat plugin; namespace internal skills#55

Merged
sidneyswift merged 5 commits into
mainfrom
refactor/collapse-to-flat-plugin
Jun 23, 2026
Merged

refactor: collapse marketplace into one flat plugin; namespace internal skills#55
sidneyswift merged 5 commits into
mainfrom
refactor/collapse-to-flat-plugin

Conversation

@sidneyswift

@sidneyswift sidneyswift commented Jun 23, 2026

Copy link
Copy Markdown
Contributor

What this does

Collapses the marketplace-of-3-plugins into a single flat plugin rooted at the repo root (Option A), and gives the internal skills a self-gating namespace.

Before: root plugin recoup-skills (15 portable skills) + nested plugins/recoup-records (25) + nested plugins/recoup-internal (6), all listed in the marketplaces.
After: one plugin at the repo root. skills/ holds the de-duplicated union; the marketplaces list exactly one plugin (source: ".").

Final skill set — 31 skills (all recoup-*)

  • 25 recoup-records skills — moved into skills/, unchanged.
  • 6 internal skills — renamed to the 5-token recoup-internal-* convention and gated by a literal recoup-internal trigger keyword prepended to each description.
  • 0 orphans kept (see tradeoffs).

25 + 6 + 0 = 31.

Internal rename map

Old New
recoup-account-health-report recoup-internal-account-health-report
recoup-dev-issue-tracker recoup-internal-dev-issue-tracker
recoup-dev-ship-issue recoup-internal-dev-ship-issue
recoup-eval-skill-benchmark recoup-internal-eval-skill-benchmark
recoup-funnel-valuation-pipeline recoup-internal-funnel-valuation-pipeline
recoup-social-ship-posts recoup-internal-social-ship-posts

Structural changes

  • Rehomed recoup-records' non-skill components to the repo root: agents/, hooks/, references/, templates/, fixtures/, RESOLVER.md, resolver-eval.jsonl. (${CLAUDE_PLUGIN_ROOT}/hooks/*.sh now resolves at the root, unchanged.)
  • Deleted the two nested plugin manifest trees and the entire plugins/ directory. Duplicate LICENSE/assets/recoup-icon.png verified byte-identical before discarding.
  • Removed 15 legacy public skills: 11 functional twins of bundle skills (the 6 internal twins had identical file trees to the renamed internal skills — pure stale duplicates) and 4 orphans.
  • Manifests reduced to one entry (recoup-skills, source "."), rebranded all-in-one, bumped 1.0.1 → 2.0.0 across all four runtime manifests.
  • RESOLVER.md gains a Tier 3 "internal" section; resolver-eval.jsonl gains one recoup-internal-* routing fixture per internal skill.
  • Validators repointed: check_resolvable.py / run_resolver_eval.py now target the repo root; scripts/vendored.json emptied (no cross-plugin copies remain).
  • Docs: README.md, AGENTS.md/CLAUDE.md (symlink), and the CI comment rewritten for the flat structure. Generic build-time references under docs/ left intact (they describe the general skill/plugin pattern, not this repo's inventory).

Acceptance — all five gates exit 0

[0] portability_lint     — 31 skills cross-harness portable
[0] check_vendored       — 0 copies across 0 groups (vendored.json emptied)
[0] validate_manifests   — 4 manifests valid; dual-manifest parity OK
[0] check_resolvable     — all 31 skills reachable; every route resolves
[0] run_resolver_eval    — 37 positives + 7 negatives cover all 31 skills

Manual checks: skills/ is the flat union (31, all recoup-*, no plugins/); every SKILL.md name == folder; each recoup-internal-* description contains the literal recoup-internal; grep for the 6 old internal names and both old plugins/recoup-* prefixes returns nothing in the working tree; hooks/ present at root with both *.sh targets.

Tradeoffs & callouts

  • Lost capabilities (orphans deleted by decision): chart-metric (Chartmetric API — distinct from the bundle's Songstats research), song-writing (lyrics, no audio), streaming-growth, trend-to-song. Chosen over the keep-and-rename option for a pure bundle-only set.
  • Internal skills now ship publicly via npx skills add recoupable/skills. The rename + recoup-internal trigger keyword stop them from auto-firing on customer requests, but the files are public and installable.
  • No more subset installs — consumers can no longer install "just records" or "just internal." Accepted Option A tradeoff; noted in the README.
  • docs/research (git submodule) intentionally untouched.

🤖 Generated with Claude Code


Summary by cubic

Collapsed recoup-skills, recoup-records, and recoup-internal into a single flat plugin at the repo root, and gated internal skills behind the recoup-internal keyword. Rebranded to “Recoup”, bumped manifests to 2.0.0, added vendoring guards (with clarified canonical rules), and hardened resolver routing/eval.

  • Refactors

    • One root plugin; marketplaces now source "."; removed plugins/. Internal skills renamed to recoup-internal-* and gated; Tier 3 routes + fixtures added. Removed 15 legacy skills (11 duplicates + 4 orphans).
    • Author/owner now “Recoup”; emails → support@recoupable.com; descriptions/keywords refreshed. README.md, AGENTS.md, and resolver docs updated; hooks/check-env.sh directive and router prompt now say “Recoup Skills”.
    • Moved agents/, hooks/, references/, templates/, fixtures/, and RESOLVER.md to the repo root; CI/scripts target root. Resolver eval adds adversarial negatives to enforce internal-skill gating. All validators pass.
    • Vendoring: populated scripts/vendored.json to track shared references/templates/fixtures (24 groups, 62 copies); documented canonical locations (root copy when present, else one skill copy for sibling-only files). check_vendored verifies these copies.
  • Migration

    • Install the single plugin: /plugin marketplace add recoupable/skills then /plugin install recoup-skills@recoup, or npx skills add recoupable/skills.
    • Subset installs are removed. If you used recoup-records or recoup-internal, switch to recoup-skills and update calls to recoup-internal-*. Point local tooling at the repo root.

Written for commit 9439f67. Summary will update on new commits.

Review in cubic

…al skills

Collapse the marketplace-of-3-plugins (recoup-skills + recoup-records +
recoup-internal) into a single flat plugin rooted at the repo root (Option A).

- skills/ is now the flat, de-duplicated union: 25 recoup-records skills + 6
  internal skills, renamed to the 5-token recoup-internal-* convention and gated
  by a literal "recoup-internal" trigger keyword in each description.
- Removed 15 legacy public skills: 11 functional twins of bundle skills (their
  capability lives on in recoup-* / recoup-internal-*) and 4 orphans with no
  bundle twin (chart-metric, song-writing, streaming-growth, trend-to-song),
  per the agreed bundle-only set.
- Rehomed recoup-records' non-skill components to the repo root: agents/, hooks/,
  references/, templates/, fixtures/, RESOLVER.md, resolver-eval.jsonl.
- Deleted the two nested plugin manifest trees and the whole plugins/ directory.
- Manifests reduced to a single entry (recoup-skills, source "."), rebranded as
  the all-in-one and bumped to 2.0.0, across all four runtime manifests.
- RESOLVER.md gains a Tier 3 "internal" section; resolver-eval.jsonl gains a
  recoup-internal-* routing fixture per internal skill.
- Repointed check_resolvable.py / run_resolver_eval.py at the repo root and
  emptied scripts/vendored.json (no cross-plugin copies remain).
- Updated README, AGENTS.md/CLAUDE.md, and the CI comment for the flat structure.

Tradeoff (accepted): no more subset installs ("just records" / "just internal"),
and the 6 internal skills now ship publicly via `npx skills add recoupable/skills`
(gated, but installable). All five validation gates pass; final set = 31 skills.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Jun 23, 2026

Copy link
Copy Markdown

Important

Review skipped

Too many files!

This PR contains 245 files, which is 95 over the limit of 150.

To get a review, narrow the scope:
• coderabbit review --type committed # exclude uncommitted changes
• coderabbit review --dir # limit to a subdirectory
• coderabbit review --base # compare against a closer base

Upgrade to a paid plan to raise the limit.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 7b0babb5-94d4-43b6-8cbe-eca862f0690c

📥 Commits

Reviewing files that changed from the base of the PR and between 2aab2fe and 9439f67.

⛔ Files ignored due to path filters (55)
  • fixtures/demo-data-room/source/01_track_list/track-list.csv is excluded by !**/*.csv
  • fixtures/demo-data-room/source/02_compositions/composition-list.csv is excluded by !**/*.csv
  • fixtures/demo-data-room/source/03_royalty_statements/ascap/ascap-statements-2024.csv is excluded by !**/*.csv
  • fixtures/demo-data-room/source/03_royalty_statements/distributor/distributor-2024.csv is excluded by !**/*.csv
  • fixtures/demo-data-room/source/03_royalty_statements/mlc/mlc-2024.csv is excluded by !**/*.csv
  • fixtures/demo-data-room/source/03_royalty_statements/soundexchange/soundexchange-2024.csv is excluded by !**/*.csv
  • fixtures/demo-data-room/source/03_royalty_statements/youtube/youtube-cid-2024.csv is excluded by !**/*.csv
  • fixtures/golden/apra-pdf/apra-2024.pdf is excluded by !**/*.pdf
  • fixtures/golden/apra-pdf/expected-royalty-ledger.csv is excluded by !**/*.csv
  • fixtures/golden/ascap-pdf/ascap-2024Q1.pdf is excluded by !**/*.pdf
  • fixtures/golden/ascap-pdf/expected-royalty-ledger.csv is excluded by !**/*.csv
  • fixtures/golden/ascap-performance/expected-royalty-ledger.csv is excluded by !**/*.csv
  • fixtures/golden/ascap-performance/input.csv is excluded by !**/*.csv
  • fixtures/golden/bmi-performance/expected-royalty-ledger.csv is excluded by !**/*.csv
  • fixtures/golden/bmi-performance/input.csv is excluded by !**/*.csv
  • fixtures/golden/bmi-real-headers/expected-royalty-ledger.csv is excluded by !**/*.csv
  • fixtures/golden/bmi-real-headers/input.csv is excluded by !**/*.csv
  • fixtures/golden/curve-income/expected-royalty-ledger.csv is excluded by !**/*.csv
  • fixtures/golden/curve-income/input.csv is excluded by !**/*.csv
  • fixtures/golden/direct-sync/expected-royalty-ledger.csv is excluded by !**/*.csv
  • fixtures/golden/direct-sync/input.csv is excluded by !**/*.csv
  • fixtures/golden/distributor-master/expected-royalty-ledger.csv is excluded by !**/*.csv
  • fixtures/golden/distributor-master/input.csv is excluded by !**/*.csv
  • fixtures/golden/hfa-pdf/expected-royalty-ledger.csv is excluded by !**/*.csv
  • fixtures/golden/hfa-pdf/hfa-statement.pdf is excluded by !**/*.pdf
  • fixtures/golden/jasrac-pdf/expected-royalty-ledger.csv is excluded by !**/*.csv
  • fixtures/golden/jasrac-pdf/jasrac-2024.pdf is excluded by !**/*.pdf
  • fixtures/golden/mlc-mechanical/expected-royalty-ledger.csv is excluded by !**/*.csv
  • fixtures/golden/mlc-mechanical/input.csv is excluded by !**/*.csv
  • fixtures/golden/prs-pdf/expected-royalty-ledger.csv is excluded by !**/*.csv
  • fixtures/golden/prs-pdf/prs-2024.pdf is excluded by !**/*.pdf
  • fixtures/golden/publisher-admin/expected-royalty-ledger.csv is excluded by !**/*.csv
  • fixtures/golden/publisher-admin/input.csv is excluded by !**/*.csv
  • fixtures/golden/sacem-pdf/expected-royalty-ledger.csv is excluded by !**/*.csv
  • fixtures/golden/sacem-pdf/sacem-2024Q2.pdf is excluded by !**/*.pdf
  • fixtures/golden/sadaic-pdf/expected-royalty-ledger.csv is excluded by !**/*.csv
  • fixtures/golden/sadaic-pdf/sadaic-2024.pdf is excluded by !**/*.pdf
  • fixtures/golden/socan-pdf/expected-royalty-ledger.csv is excluded by !**/*.csv
  • fixtures/golden/socan-pdf/socan-2024.pdf is excluded by !**/*.pdf
  • fixtures/golden/soundexchange-pdf/expected-royalty-ledger.csv is excluded by !**/*.csv
  • fixtures/golden/soundexchange-pdf/soundexchange-2024.pdf is excluded by !**/*.pdf
  • fixtures/golden/soundexchange/expected-royalty-ledger.csv is excluded by !**/*.csv
  • fixtures/golden/soundexchange/input.csv is excluded by !**/*.csv
  • fixtures/golden/youtube-content-id/expected-royalty-ledger.csv is excluded by !**/*.csv
  • fixtures/golden/youtube-content-id/input.csv is excluded by !**/*.csv
  • plugins/recoup-internal/assets/recoup-icon.png is excluded by !**/*.png
  • plugins/recoup-records/assets/recoup-icon.png is excluded by !**/*.png
  • skills/recoup-catalog-review-deal/fixtures/demo-data-room/source/01_track_list/track-list.csv is excluded by !**/*.csv
  • skills/recoup-catalog-review-deal/fixtures/demo-data-room/source/02_compositions/composition-list.csv is excluded by !**/*.csv
  • skills/recoup-catalog-review-deal/fixtures/demo-data-room/source/03_royalty_statements/ascap/ascap-statements-2024.csv is excluded by !**/*.csv
  • skills/recoup-catalog-review-deal/fixtures/demo-data-room/source/03_royalty_statements/distributor/distributor-2024.csv is excluded by !**/*.csv
  • skills/recoup-catalog-review-deal/fixtures/demo-data-room/source/03_royalty_statements/mlc/mlc-2024.csv is excluded by !**/*.csv
  • skills/recoup-catalog-review-deal/fixtures/demo-data-room/source/03_royalty_statements/soundexchange/soundexchange-2024.csv is excluded by !**/*.csv
  • skills/recoup-catalog-review-deal/fixtures/demo-data-room/source/03_royalty_statements/youtube/youtube-cid-2024.csv is excluded by !**/*.csv
  • skills/recoup-internal-funnel-valuation-pipeline/fixtures/Neon-Tide-valuation.pdf is excluded by !**/*.pdf
📒 Files selected for processing (245)
  • .agents/plugins/marketplace.json
  • .claude-plugin/marketplace.json
  • .claude-plugin/plugin.json
  • .codex-plugin/plugin.json
  • .github/workflows/validate.yml
  • AGENTS.md
  • README.md
  • RESOLVER.md
  • agents/deal-qc-reviewer.md
  • agents/market-scout.md
  • agents/metadata-reconciler.md
  • agents/release-readiness-reviewer.md
  • agents/research-analyst.md
  • agents/rights-chain-reviewer.md
  • agents/royalty-audit-analyst.md
  • agents/valuation-sensitivity-analyst.md
  • docs/TEMPLATE.md
  • fixtures/demo-data-room/source/00_overview/README.md
  • fixtures/demo-data-room/source/04_rights_documents/agreements/publishing-admin-agreement-2019.txt
  • fixtures/demo-data-room/source/04_rights_documents/agreements/recording-agreement-2018.txt
  • fixtures/demo-data-room/source/04_rights_documents/split_sheets/bright-lights-split.txt
  • fixtures/demo-release/assumptions.yaml
  • fixtures/external-sources.md
  • fixtures/golden/bmi-real-headers/expected-status.json
  • fixtures/golden/generate-pdf-fixtures.py
  • hooks/check-env.sh
  • hooks/hooks.json
  • hooks/protect-source-files.sh
  • plugins/recoup-internal/.claude-plugin/plugin.json
  • plugins/recoup-internal/.codex-plugin/plugin.json
  • plugins/recoup-internal/.cursor-plugin/plugin.json
  • plugins/recoup-internal/LICENSE
  • plugins/recoup-internal/README.md
  • plugins/recoup-internal/skills/recoup-eval-skill-benchmark/references/frontier-benchmark.md
  • plugins/recoup-records/.claude-plugin/plugin.json
  • plugins/recoup-records/.codex-plugin/plugin.json
  • plugins/recoup-records/.cursor-plugin/plugin.json
  • plugins/recoup-records/LICENSE
  • plugins/recoup-records/README.md
  • references/account-resolver.md
  • references/analyze-gate.md
  • references/content-api.md
  • references/deal-workflow.md
  • references/deal-workspace.md
  • references/endpoints.md
  • references/flamingo-api.md
  • references/normalization.md
  • references/red-flags.md
  • references/research-context.md
  • references/response-shapes.md
  • references/song-sourcing.md
  • references/tooling-landscape.md
  • references/workflows.md
  • references/workspace-context.md
  • resolver-eval.jsonl
  • scripts/check_resolvable.py
  • scripts/run_resolver_eval.py
  • scripts/vendored.json
  • skills/catalog-value-estimator/SKILL.md
  • skills/catalog-value-estimator/references/methodology.md
  • skills/catalog-value-estimator/references/recoup-api.md
  • skills/catalog-value-estimator/scripts/build_report.py
  • skills/catalog-value-estimator/scripts/estimate.py
  • skills/catalog-value-estimator/scripts/fetch_album_tracks.py
  • skills/chart-metric/README.md
  • skills/chart-metric/SKILL.md
  • skills/chart-metric/references/advanced-workflows.md
  • skills/chart-metric/references/api_data.json
  • skills/chart-metric/references/curl-fallback.md
  • skills/chart-metric/references/endpoints.md
  • skills/chart-metric/references/parameter-guide.md
  • skills/chart-metric/scripts/discover_artists.py
  • skills/chart-metric/scripts/get_artist.py
  • skills/chart-metric/scripts/get_artist_albums.py
  • skills/chart-metric/scripts/get_artist_audience.py
  • skills/chart-metric/scripts/get_artist_by_spotify.py
  • skills/chart-metric/scripts/get_artist_career.py
  • skills/chart-metric/scripts/get_artist_cities.py
  • skills/chart-metric/scripts/get_artist_insights.py
  • skills/chart-metric/scripts/get_artist_instagram_posts.py
  • skills/chart-metric/scripts/get_artist_metrics.py
  • skills/chart-metric/scripts/get_artist_playlists.py
  • skills/chart-metric/scripts/get_artist_tracks.py
  • skills/chart-metric/scripts/get_artist_urls.py
  • skills/chart-metric/scripts/get_curator.py
  • skills/chart-metric/scripts/get_playlist.py
  • skills/chart-metric/scripts/get_similar_artists.py
  • skills/chart-metric/scripts/get_token.py
  • skills/chart-metric/scripts/get_track.py
  • skills/chart-metric/scripts/get_track_by_spotify.py
  • skills/chart-metric/scripts/list_festivals.py
  • skills/chart-metric/scripts/list_genres.py
  • skills/chart-metric/scripts/search_artist.py
  • skills/content-creation/SKILL.md
  • skills/issue-implementation/SKILL.md
  • skills/issue-management/SKILL.md
  • skills/music-industry-research/SKILL.md
  • skills/music-industry-research/references/endpoints.md
  • skills/music-industry-research/references/response-shapes.md
  • skills/music-industry-research/references/workflows.md
  • skills/recoup-account-status/SKILL.md
  • skills/recoup-account-status/scripts/generate_account_status.py
  • skills/recoup-catalog-estimate-value/SKILL.md
  • skills/recoup-catalog-estimate-value/references/methodology.md
  • skills/recoup-catalog-estimate-value/references/recoup-api.md
  • skills/recoup-catalog-estimate-value/scripts/build_report.py
  • skills/recoup-catalog-estimate-value/scripts/estimate.py
  • skills/recoup-catalog-estimate-value/scripts/fetch_album_tracks.py
  • skills/recoup-catalog-review-deal/SKILL.md
  • skills/recoup-catalog-review-deal/fixtures/demo-data-room/source/00_overview/README.md
  • skills/recoup-catalog-review-deal/fixtures/demo-data-room/source/04_rights_documents/agreements/publishing-admin-agreement-2019.txt
  • skills/recoup-catalog-review-deal/fixtures/demo-data-room/source/04_rights_documents/agreements/recording-agreement-2018.txt
  • skills/recoup-catalog-review-deal/fixtures/demo-data-room/source/04_rights_documents/split_sheets/bright-lights-split.txt
  • skills/recoup-catalog-review-deal/references/canonical-schema.md
  • skills/recoup-catalog-review-deal/references/cleaning-rules.md
  • skills/recoup-catalog-review-deal/references/data-room-checklist.md
  • skills/recoup-catalog-review-deal/references/deal-workflow.md
  • skills/recoup-catalog-review-deal/references/deal-workspace.md
  • skills/recoup-catalog-review-deal/references/financing-underwrite.md
  • skills/recoup-catalog-review-deal/references/methodology.md
  • skills/recoup-catalog-review-deal/references/normalization.md
  • skills/recoup-catalog-review-deal/references/output-templates.md
  • skills/recoup-catalog-review-deal/references/post-close-admin.md
  • skills/recoup-catalog-review-deal/references/pro-performance-income.md
  • skills/recoup-catalog-review-deal/references/recoup-api.md
  • skills/recoup-catalog-review-deal/references/red-flags.md
  • skills/recoup-catalog-review-deal/references/rights-review.md
  • skills/recoup-catalog-review-deal/references/royalty-audit.md
  • skills/recoup-catalog-review-deal/references/seller-prep.md
  • skills/recoup-catalog-review-deal/references/valuation-framework.md
  • skills/recoup-catalog-review-deal/scripts/_helpers.py
  • skills/recoup-catalog-review-deal/scripts/auto-column-map.py
  • skills/recoup-catalog-review-deal/scripts/build-deal-readiness.py
  • skills/recoup-catalog-review-deal/scripts/build-file-manifest.py
  • skills/recoup-catalog-review-deal/scripts/build-manual-review-queue.py
  • skills/recoup-catalog-review-deal/scripts/calculate-concentration.py
  • skills/recoup-catalog-review-deal/scripts/calculate-nps-nls-bridge.py
  • skills/recoup-catalog-review-deal/scripts/dataroom-hygiene-scan.py
  • skills/recoup-catalog-review-deal/scripts/extract-pdf-statement.py
  • skills/recoup-catalog-review-deal/scripts/normalize-royalty-statement.py
  • skills/recoup-catalog-review-deal/scripts/run-deal-checks.py
  • skills/recoup-catalog-review-deal/scripts/validate-dashboard.py
  • skills/recoup-catalog-review-deal/scripts/validate-deal-workspace.py
  • skills/recoup-catalog-review-deal/scripts/validate-evidence-ledger.py
  • skills/recoup-catalog-review-deal/scripts/validate-findings-evidence.py
  • skills/recoup-catalog-review-deal/scripts/validate-normalized-ledger.py
  • skills/recoup-catalog-review-deal/scripts/validate-workspace-consistency.py
  • skills/recoup-catalog-review-deal/templates/assumptions.yaml
  • skills/recoup-catalog-review-deal/templates/deal-workspace/assumptions.yaml
  • skills/recoup-catalog-review-deal/templates/deal-workspace/evidence-ledger.json
  • skills/recoup-catalog-review-deal/templates/deal-workspace/findings.json
  • skills/recoup-catalog-review-deal/templates/deal-workspace/memos/financing-pack.md
  • skills/recoup-catalog-review-deal/templates/deal-workspace/memos/ic-memo.md
  • skills/recoup-catalog-review-deal/templates/deal-workspace/memos/seller-cleanup-report.md
  • skills/recoup-catalog-review-deal/templates/deal-workspace/missing-files.md
  • skills/recoup-catalog-review-deal/templates/evidence-ledger.json
  • skills/recoup-catalog-review-deal/templates/findings.json
  • skills/recoup-catalog-review-deal/templates/memos/financing-pack.md
  • skills/recoup-catalog-review-deal/templates/memos/ic-memo.md
  • skills/recoup-catalog-review-deal/templates/memos/seller-cleanup-report.md
  • skills/recoup-catalog-review-deal/templates/missing-files.md
  • skills/recoup-content-asset-pack/SKILL.md
  • skills/recoup-content-asset-pack/references/account-resolver.md
  • skills/recoup-content-asset-pack/references/analyze-gate.md
  • skills/recoup-content-asset-pack/references/content-api.md
  • skills/recoup-content-asset-pack/references/research-context.md
  • skills/recoup-content-asset-pack/references/song-sourcing.md
  • skills/recoup-content-asset-pack/references/workspace-context.md
  • skills/recoup-content-make-graphics/SKILL.md
  • skills/recoup-content-make-graphics/references/account-resolver.md
  • skills/recoup-content-make-graphics/references/analyze-gate.md
  • skills/recoup-content-make-graphics/references/content-api.md
  • skills/recoup-content-make-graphics/references/research-context.md
  • skills/recoup-content-make-graphics/references/song-sourcing.md
  • skills/recoup-content-make-graphics/references/workspace-context.md
  • skills/recoup-content-make-video/SKILL.md
  • skills/recoup-content-make-video/references/account-resolver.md
  • skills/recoup-content-make-video/references/analyze-gate.md
  • skills/recoup-content-make-video/references/content-api.md
  • skills/recoup-content-make-video/references/research-context.md
  • skills/recoup-content-make-video/references/song-sourcing.md
  • skills/recoup-content-make-video/references/workspace-context.md
  • skills/recoup-content-reactive-post/SKILL.md
  • skills/recoup-content-reactive-post/references/account-resolver.md
  • skills/recoup-content-reactive-post/references/analyze-gate.md
  • skills/recoup-content-reactive-post/references/content-api.md
  • skills/recoup-content-reactive-post/references/research-context.md
  • skills/recoup-content-reactive-post/references/song-sourcing.md
  • skills/recoup-content-reactive-post/references/workspace-context.md
  • skills/recoup-content-write-caption/SKILL.md
  • skills/recoup-content-write-caption/references/account-resolver.md
  • skills/recoup-content-write-caption/references/analyze-gate.md
  • skills/recoup-content-write-caption/references/content-api.md
  • skills/recoup-content-write-caption/references/research-context.md
  • skills/recoup-content-write-caption/references/song-sourcing.md
  • skills/recoup-content-write-caption/references/workspace-context.md
  • skills/recoup-internal-account-health-report/SKILL.md
  • skills/recoup-internal-account-health-report/scripts/generate_account_status.py
  • skills/recoup-internal-dev-issue-tracker/SKILL.md
  • skills/recoup-internal-dev-ship-issue/SKILL.md
  • skills/recoup-internal-eval-skill-benchmark/SKILL.md
  • skills/recoup-internal-eval-skill-benchmark/references/frontier-benchmark.md
  • skills/recoup-internal-eval-skill-benchmark/references/scorecard.md
  • skills/recoup-internal-eval-skill-benchmark/scripts/measure.py
  • skills/recoup-internal-funnel-valuation-pipeline/SKILL.md
  • skills/recoup-internal-funnel-valuation-pipeline/fixtures/example-lead.json
  • skills/recoup-internal-funnel-valuation-pipeline/fixtures/example-pipeline-brief.md
  • skills/recoup-internal-funnel-valuation-pipeline/references/attio-funnel.md
  • skills/recoup-internal-funnel-valuation-pipeline/references/qualification-rubric.md
  • skills/recoup-internal-funnel-valuation-pipeline/references/recoup-valuation-api.md
  • skills/recoup-internal-funnel-valuation-pipeline/scripts/fetch_catalog.py
  • skills/recoup-internal-funnel-valuation-pipeline/scripts/render_valuation_pdf.py
  • skills/recoup-internal-funnel-valuation-pipeline/templates/outreach-email.md
  • skills/recoup-internal-social-ship-posts/SKILL.md
  • skills/recoup-platform-api-access/SKILL.md
  • skills/recoup-platform-build-workspace/SKILL.md
  • skills/recoup-platform-capture-lesson/SKILL.md
  • skills/recoup-platform-connect-account/SKILL.md
  • skills/recoup-release-plan-rollout/SKILL.md
  • skills/recoup-release-plan-rollout/references/deliverables.md
  • skills/recoup-release-plan-rollout/references/endpoints.md
  • skills/recoup-release-plan-rollout/references/release-template.md
  • skills/recoup-release-plan-rollout/references/release-workspace.md
  • skills/recoup-release-plan-rollout/references/response-shapes.md
  • skills/recoup-release-plan-rollout/references/section-guide.md
  • skills/recoup-release-plan-rollout/scripts/build_campaign_timeline.py
  • skills/recoup-release-plan-rollout/scripts/validate_release.py
  • skills/recoup-release-plan-rollout/templates/release-workspace/RELEASE.md
  • skills/recoup-release-plan-rollout/templates/release-workspace/assumptions.yaml
  • skills/recoup-release-plan-rollout/templates/release-workspace/brief/.gitkeep
  • skills/recoup-release-plan-rollout/templates/release-workspace/campaign/.gitkeep
  • skills/recoup-release-plan-rollout/templates/release-workspace/reports/.gitkeep
  • skills/recoup-release-plan-rollout/templates/release-workspace/targeting/.gitkeep
  • skills/recoup-release-plan-rollout/templates/release-workspace/tracking/.gitkeep
  • skills/recoup-release-track-drop/SKILL.md
  • skills/recoup-release-track-drop/references/response-shapes.md
  • skills/recoup-research-artist-overview/SKILL.md
  • skills/recoup-research-artist-overview/references/endpoints.md
  • skills/recoup-research-artist-overview/references/response-shapes.md
  • skills/recoup-research-artist-overview/references/workflows.md
  • skills/recoup-research-find-contacts/SKILL.md
  • skills/recoup-research-find-contacts/references/workflows.md
  • skills/recoup-research-find-talent/SKILL.md
  • skills/recoup-research-find-talent/references/workflows.md
  • skills/recoup-research-playlist-targets/SKILL.md

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch refactor/collapse-to-flat-plugin

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

3 issues found across 349 files

Note: This PR contains a large number of files. cubic only reviews up to 100 files per PR, so some files may not have been reviewed. cubic prioritizes the most important files to review.
On a pro plan you can use ultrareview for larger PRs.

Re-trigger cubic

Comment thread scripts/run_resolver_eval.py
Comment thread resolver-eval.jsonl
Comment thread README.md
sidneyswift and others added 2 commits June 23, 2026 02:37
…iptions

- Author/owner/developer name "Recoupable" → "Recoup" across all four manifests
  and prose (README, AGENTS.md, internal skill bodies). Domain (recoupable.com)
  and GitHub slug (recoupable/skills) intentionally unchanged.
- All author/owner emails agent@recoupable.com → support@recoupable.com (manifests
  + README support line + the AGENTS.md / docs convention notes).
- Rewrote the plugin + interface descriptions as compelling, customer-facing copy;
  dropped non-customer detail (internal-tooling mention, npx/portability mechanics).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- scripts/run_resolver_eval.py: LLM-tier router system prompt referenced the old
  "recoup-records plugin" → "Recoup Skills plugin" (cubic #1).
- resolver-eval.jsonl: add adversarial gating negatives so the eval defends the
  invariant that internal skills must NOT fire without the recoup-internal keyword
  (de-gated valuation/caption/overview requests route to the customer skill, not
  the internal one). The dev/eval internal skills have no customer-request surface,
  noted inline (cubic #2).
- README.md: reword the Manual install so it matches the flat-plugin architecture
  (the repo root is the plugin) instead of "point your agent at skills/" (cubic #3).
- hooks/check-env.sh: same stale-"recoup-records" class as cubic #1 — updated the
  SessionStart directive to "Recoup Skills".

All five validators still exit 0 (eval: 40 positives + 10 adversarial negatives).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@sidneyswift

Copy link
Copy Markdown
Contributor Author

Addressed the cubic findings in 0a10e58:

  • scripts/run_resolver_eval.py (refactor: make CLAUDE.md a symlink to AGENTS.md #1) — the LLM-tier router system prompt still said "recoup-records plugin"; updated to "Recoup Skills plugin". Also swept the repo and fixed the same stale recoup-records reference in hooks/check-env.sh's SessionStart directive (cubic only reviewed up to 100 files, so it didn't see that one).
  • resolver-eval.jsonl (feat: add setup-artist skill, unify RECOUP.md, standardize placeholders #2) — added a gating-invariant block of adversarial negatives: de-gated requests (valuation / caption / artist-overview, no keyword) now assert they route to the customer skill and not the internal one. The three dev/eval internal skills have no customer-request surface to be confused with, noted inline. Eval is now 40 positives + 10 negatives, full coverage.
  • README.md (agent: @U0AJM7X8FBR @U0AJM7X8FBR become an expert at this repo https://github.c #3) — reworded the Manual install from "point your agent at skills/" to "the repo root is the plugin, with every skill under skills/", matching the flat-plugin architecture.

All five validators still exit 0.

After the flatten, check_vendored was a no-op (0 groups) — but the repo still
vendors heavily: per the Portable Skill Contract each skill is self-contained, so
references/templates/fixtures shared by multiple skills are copied into each skill.
Those copies (workflows.md ×6, the content references ×5 each, flamingo-api.md ×3,
the deal templates, the demo data room, …) were unregistered and could silently drift.

- scripts/vendored.json: register all cross-skill / skill↔root duplicates — 24 groups
  (1 dir: fixtures/demo-data-room; 23 file), 62 copies. Canonical = the repo-root
  references/ , templates/ , fixtures/ copy (or one skill copy where no root copy exists).
- AGENTS.md: drop the now-stale "vendored.json is currently empty" note from the glossary.

check_vendored now verifies 62 copies across 24 groups; all five gates exit 0.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

1 issue found across 2 files (changes from recent commits).

Tip: Review your code locally with the cubic CLI to iterate faster.

Re-trigger cubic

Comment thread scripts/vendored.json
cubic flagged that the _comment claimed all canonicals live at the repo root, but
3 of 24 groups have skill-internal canonicals — files shared only between sibling
skills with no root copy (methodology.md, recoup-api.md, and the release variant of
response-shapes.md, which can't sit at references/response-shapes.md since that name
already holds the different research variant). Hoisting isn't possible/desirable, so
align the docs with reality instead:

- scripts/vendored.json: _comment now says canonical is the root copy where the file
  exists at root, else one skill copy for sibling-only shared files.
- AGENTS.md: same softening of the "root is always canonical" line.

No group data changed; check_vendored still passes (62 copies / 24 groups).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@sidneyswift sidneyswift merged commit bcd19e3 into main Jun 23, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant