refactor: collapse marketplace into one flat plugin; namespace internal skills#55
Conversation
…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>
|
Important Review skippedToo many files! This PR contains 245 files, which is 95 over the limit of 150. To get a review, narrow the scope: Upgrade to a paid plan to raise the limit. ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: ⛔ Files ignored due to path filters (55)
📒 Files selected for processing (245)
You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
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. Comment |
There was a problem hiding this comment.
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
…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>
|
Addressed the cubic findings in 0a10e58:
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>
There was a problem hiding this comment.
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
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>
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) + nestedplugins/recoup-records(25) + nestedplugins/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-*)recoup-recordsskills — moved intoskills/, unchanged.recoup-internal-*convention and gated by a literalrecoup-internaltrigger keyword prepended to eachdescription.25 + 6 + 0 = 31.Internal rename map
recoup-account-health-reportrecoup-internal-account-health-reportrecoup-dev-issue-trackerrecoup-internal-dev-issue-trackerrecoup-dev-ship-issuerecoup-internal-dev-ship-issuerecoup-eval-skill-benchmarkrecoup-internal-eval-skill-benchmarkrecoup-funnel-valuation-pipelinerecoup-internal-funnel-valuation-pipelinerecoup-social-ship-postsrecoup-internal-social-ship-postsStructural changes
recoup-records' non-skill components to the repo root:agents/,hooks/,references/,templates/,fixtures/,RESOLVER.md,resolver-eval.jsonl. (${CLAUDE_PLUGIN_ROOT}/hooks/*.shnow resolves at the root, unchanged.)plugins/directory. DuplicateLICENSE/assets/recoup-icon.pngverified byte-identical before discarding.recoup-skills,source "."), rebranded all-in-one, bumped 1.0.1 → 2.0.0 across all four runtime manifests.recoup-internal-*routing fixture per internal skill.check_resolvable.py/run_resolver_eval.pynow target the repo root;scripts/vendored.jsonemptied (no cross-plugin copies remain).README.md,AGENTS.md/CLAUDE.md(symlink), and the CI comment rewritten for the flat structure. Generic build-time references underdocs/left intact (they describe the general skill/plugin pattern, not this repo's inventory).Acceptance — all five gates exit 0
Manual checks:
skills/is the flat union (31, allrecoup-*, noplugins/); everySKILL.mdname== folder; eachrecoup-internal-*description contains the literalrecoup-internal; grep for the 6 old internal names and both oldplugins/recoup-*prefixes returns nothing in the working tree;hooks/present at root with both*.shtargets.Tradeoffs & callouts
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.npx skills add recoupable/skills. The rename +recoup-internaltrigger keyword stop them from auto-firing on customer requests, but the files are public and installable.docs/research(git submodule) intentionally untouched.🤖 Generated with Claude Code
Summary by cubic
Collapsed
recoup-skills,recoup-records, andrecoup-internalinto a single flat plugin at the repo root, and gated internal skills behind therecoup-internalkeyword. Rebranded to “Recoup”, bumped manifests to2.0.0, added vendoring guards (with clarified canonical rules), and hardened resolver routing/eval.Refactors
source "."; removedplugins/. Internal skills renamed torecoup-internal-*and gated; Tier 3 routes + fixtures added. Removed 15 legacy skills (11 duplicates + 4 orphans).support@recoupable.com; descriptions/keywords refreshed.README.md,AGENTS.md, and resolver docs updated;hooks/check-env.shdirective and router prompt now say “Recoup Skills”.agents/,hooks/,references/,templates/,fixtures/, andRESOLVER.mdto the repo root; CI/scripts target root. Resolver eval adds adversarial negatives to enforce internal-skill gating. All validators pass.scripts/vendored.jsonto 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_vendoredverifies these copies.Migration
/plugin marketplace add recoupable/skillsthen/plugin install recoup-skills@recoup, ornpx skills add recoupable/skills.recoup-recordsorrecoup-internal, switch torecoup-skillsand update calls torecoup-internal-*. Point local tooling at the repo root.Written for commit 9439f67. Summary will update on new commits.