recoup-platform-build-os
This skill scaffolds a self-managing music-company OS inside a label's git repo, including folder structure, a self-maintaining CLAUDE.md, a plugin directory, a never-stale janitor, and self-improvement loops. It pulls the real roster via the Recoup API and generates standardized folders, turning the repo into the label's brain and eliminating manual setup overhead.
npx skills add https://github.com/recoupable/skills --skill recoup-platform-build-osBefore / After Comparison
1 组Without this skill, users manually create the label repo folder structure, write CLAUDE.md, configure janitor and agent rules, and manually copy the artist roster from the Recoup platform to create folders one by one. The process is time-consuming and error-prone, especially with many artists.
With this skill, it automatically fetches the live Recoup roster, generates standardized artists/releases folders with RECOUP.md, creates a self-maintaining CLAUDE.md, and a plugin directory—building the complete label OS in a single command.
Recoup — Build Label OS
The point is not the folders — it's to scaffold a system that both manages itself and improves itself. It keeps its own state current (never-stale) and gets better at its own job over time: compounding knowledge, promoting repeated work into new skills, and improving its own machinery. Hold that as the goal of every phase below; the structure only exists to serve it.
Concretely, turn a kickoff input into a living operating system: a folder + file structure, a
self-managing CLAUDE.md (mirrored to AGENTS.md), a plugin/ directory (an in-place installable
plugin with skills inside), a never-stale janitor backed by a read-only doctor, a compound-learning
loop, and a self-improvement loop. The plugin is named {DOMAIN_SLUG}-os by default and includes
manifests/adapters for Claude, Cursor, and Codex.
This builder skill is for the agent running it. Follow the phases in order. Don't stop halfway — drive to a working OS, then report. Read the references as you reach each phase.
Recoup specialization — this is a music-company OS [read before Phase 0]
This skill is workspace-os (by Sidney Swift) locked to one domain — a music company /
independent label — and wired into Recoup. The phases below are unchanged; apply them with
these Recoup rules layered on top.
- The domain is fixed — don't re-infer it. Core unit: the artist (and their
releases). Entities folder: top-level
artists/. The release lifecycle (demo -> A&R -> signed -> production -> release -> promo -> catalog) is tracked per release underartists/{slug}/releases/(stage inRELEASE.md) — there is no separate top-levelpipeline/; unsigned candidates live inprospects/. Spend Phase 0's effort understanding this specific label (roster, genres, deal posture, content motion, team), not which archetype it is. - The repo is one org/label. This runs inside a single org's git repo, so artists live at
top-level
artists/{artist-slug}/— noorgs/nesting (the repo already is the org). - Seed Recoup's conventions exactly — other recoup skills depend on them:
artists/{artist-slug}/RECOUP.md— identity file, frontmatterartistName/artistSlug/artistId(artistId = the Recoupaccount_id). Same shaperecoup-roster-list-artists,recoup-roster-add-artistread/write.releases/{release-slug}/RELEASE.mdandreleases/top-tracks.mdper artist.slugify= lowercase-kebab; never append IDs to folder names.
- Secrets stay out of the shared repo. Always seed
.env.example(documentingRECOUP_API_KEYorRECOUP_ACCESS_TOKEN,RECOUP_ORG_ID, optionalRECOUP_API_URL) and a.gitignorethat ignores.env. Real credentials live outside the repo (env vars /~/.claude/recoup.env); never commit them — the repo is shared across the label's team. - The Recoup API is the system of record; the repo is the brain. Get the real roster from
the live account — never invent one:
- Connect the machine first by chaining
recoup-platform-connect-account(mints/loads the credential:RECOUP_API_KEYorRECOUP_ACCESS_TOKEN, optionalRECOUP_ORG_ID). - If the roster is empty (0 artists), hand off to
recoup-roster-onboardto bootstrap it (it fansrecoup-roster-add-artistout across parallel subagents); otherwise materialize the existing roster intoartists/yourself:GET /api/organizations(or useRECOUP_ORG_ID) ->GET /api/artists?org_id=…->mkdir -p artists/{slugify(name)}and writeRECOUP.mdper artist (artistName/artistSlug/artistIdfromaccount_id); skip existing. Userecoup-roster-list-artiststo inventory first andrecoup-platform-api-accessfor the call shapes. - Write
operations/sync.mdwith the contract: DB owns structured entities (roster, socials, metrics, releases-as-records, billing); the repo owns the unstructured brain (knowledge, research, plans, drafts). Entity creation is API-first — onboard a new artist withrecoup-roster-add-artist(the 8-call create -> enrich chain), then its folder appears; never create an artist bymkdiralone. Userecoup-platform-api-accessfor raw REST / connector calls. Empty orgs+artists usually means a throwaway key, not a blank label — surface it, don't fabricate a roster.
- Connect the machine first by chaining
- Reuse the platform; don't reinvent it. In Phase 4, do not author
plugin/skills/that duplicate Recoup capabilities — wire to the installedrecoup-*skills: roster (recoup-roster-*), research (recoup-research-*), content (recoup-content-*), release (recoup-release-*), song (recoup-song-*), catalog (recoup-catalog-*). The OS's ownplugin/skills/should be label-specific glue (this label's routines/orchestration) plus the standard maintenance organs (doctor/janitor/learn/reflect/skillify/intake). Default the plugin name to{label-slug}-os. - Still scaffold everything else a music company needs. Beyond the core (
artists/,knowledge/,library/,work/,artifacts/,plugin/,operations/), add optional folders only with real material:content/(the flywheel),deals/(catalog acquisitions),contacts/(industry network),proof/(press/milestones),business/(splits/royalties/contracts),prospects/(A&R funnel),reference/(label bible). Mark inferred items "draft — confirm". Seereferences/blueprint.mdfor the full tree. - Filling the generic templates (doctor/dashboard/janitor). When you generate them from
assets/, the entity isartists/and there is no pipeline folder — leave{PIPELINE}empty, or set it toprospects/only if the label does A&R. The doctor reads release status from eachartists/{slug}/releases/(stage inRELEASE.md), not a top-level funnel.
Operating beliefs (apply to every OS you build)
Every belief below serves one goal: a system that manages itself (stays current) and improves itself (compounds its knowledge, its capabilities, and its own machinery).
- Separate what compounds from what flows. Compounding = reusable assets that improve every time (templates, knowledge base, skills, proof). Flowing = instances moving through stages (deals, tickets, releases, experiments). Wire feedback so every flowing instance deposits back into a compounding asset.
- Never stale. It is the agent's job to manage state. Any time new input arrives OR the user works in the OS, every file/folder that should change gets touched in the same turn. A janitor skill + scheduled task is the safety net.
- Compound learning. Every session makes the system smarter — capture decisions, recurring answers, and patterns into the knowledge base. Never solve the same thing twice.
- Skillify proven repeatable work. After finishing work, ask whether it will be done again or
maintained. If yes, promote the proven process into a staged, verified skill before it lands in
plugin/skills/. One-off work stays inwork/(dated) — it never becomes its own top-level folder. - Self-describing. Every folder explains its own purpose;
CLAUDE.mdencodes where new things go and how to keep the system current. - Evidence over confidence. "Done", "consistent", and "reachable" are decided by a checkable
surface — a
{domain}-doctorrun, a skill's verification, a reachable trigger — not the agent's feeling. And the OS improves itself over time ({domain}-reflect), not just its contents.
Phase 0 — Understand the project deeply (always first)
Read references/domain-inference.md.
- Ingest ALL kickoff input (files, transcripts, prompt). If files exist, read them fully.
- Determine the domain archetype and the core unit of work (e.g. consulting -> deals/clients, product -> features/releases, record label -> artists/releases, research -> questions/experiments).
- If input is rich, derive structure from the material. If input is sparse (just a prompt), use best judgment: infer the domain, predict the entities, stages, assets, routines, and metrics the project will need, and anticipate them rather than waiting — but express that preparation as stubs and subfolders inside a lean root (see Phase 1), not as extra top-level directories.
- Produce a short Understanding Brief: domain, core unit, lifecycle stages, key entities, compounding assets, recurring tasks (skill candidates), metrics, and likely external tools.
- Confirm the brief with the user only if something material is ambiguous; otherwise proceed.
Phase 1 — Design the taxonomy
Read references/blueprint.md.
- Start from the small core the loops maintain: the flowing stores (a staged pipeline folder +
an entity folder like
clients//artists//features/), the compounding storesknowledge/andlibrary/,work/(non-recurring output, by project),artifacts/(finalized recurring outputs like the dashboard),plugin/(the in-place plugin), andoperations/(routines, sync, health, improvements). - Add an optional top-level folder only when the domain has real material for it now —
reference/(canon/source),proof/(outcomes),content/(a real content motion),business/(legal/finance/metrics). When unsure, leave it out; adding later is onemkdir. - Keep every top-level folder name to one lowercase word (
operations, notoperating-system;knowledge, notknowledge-base). Rename to the domain's language but keep it a single word. (Skill folders insideplugin/skills/stay kebab-case — a different convention.) - Don't reproduce the whole anatomy by reflex, and don't promote one-off work to a top-level
folder — ad-hoc tasks live in
work/; only work that repeats or needs upkeep becomes a skill inplugin/. Push over-preparation into subfolders and stubs, not a row of empty top-level dirs.
Phase 2 — Scaffold structure + the brain
- Create only the folders the taxonomy calls for (lean root). Give every non-obvious folder a short
README.mdstub stating what belongs there. - Write
artifacts/dashboard.htmlfromassets/dashboard.html.tmpl(HTML, not md). Seedoperations/health.md(empty — the{domain}-doctorfills it) andoperations/improvements.md(a header for the{domain}-reflectledger). - Write the self-managing
CLAUDE.mdfromassets/CLAUDE.md.tmpl, customized to the domain (filing decision tree, the auto-manage loop, never-stale contract, repetition-to-skill rule). Readreferences/self-management.mdfor what the contract must contain. - Create
AGENTS.mdas a symlink toCLAUDE.md(ln -s CLAUDE.md AGENTS.md) so agent runners that look for either file get the same brain. If symlinks aren't supported, write anAGENTS.mdthat says "See CLAUDE.md" — but prefer the symlink.
Phase 3 — Seed compounding assets
- Populate
library/(blank instruments you reuse — templates, scripts, checklists) andknowledge/(settled answers you read back — faqs, insights, decisions, sops). Rule of thumb: if you'd use it to make something it'slibrary/; if you'd consult it to decide something it'sknowledge/. - Extract this material from the input. With sparse input, seed sensible starter templates for the domain and mark them "draft — confirm".
Phase 4 — Author skills (the in-place plugin/)
Read references/skill-authoring.md and references/skillifying-work.md (promotion workflow).
- Derive the plugin name from the domain as
{DOMAIN_SLUG}-os(kebab-case) unless the user explicitly gave a name. Use that same name in every manifest. - Scaffold
plugin/as a real plugin in place:plugin/.claude-plugin/plugin.jsonfromassets/claude-plugin.json.tmpl,plugin/.codex-plugin/plugin.jsonfromassets/codex-plugin.json.tmpl, and aplugin/skills/directory. The Codex manifest must include"skills": "./skills/"; seereferences/packaging.md. - Create
.agents/skillsas a symlink to../plugin/skillsso Cursor and Codex can discover the same project skills. If symlinks aren't supported, copyplugin/skills/there and note that it is a compatibility mirror. - For each recurring task in the brief, author
plugin/skills/{name}/SKILL.md(frontmattername+ description with real trigger phrases, then imperative steps referencing the workspace paths). - Always include the maintenance skills (the OS's feedback organs), generated from the templates:
- a doctor (
assets/doctor-SKILL.md.tmpl) — the read-only verification surface (health score + punch list tooperations/health.md); the janitor and the build report are gated on it. Also generateoperations/doctor.pyfromassets/doctor.py.tmpl(fill thePIPELINE/ENTITY/slug) as its deterministic fast path — so the mechanical checks ship with the build instead of being reinvented later. - a janitor (
assets/janitor-SKILL.md.tmpl) — run the doctor, then reconcile and fix what's safe. - a compound-learn skill (
assets/compound-learn-SKILL.md.tmpl) — capture decisions/answers/patterns intoknowledge/after each work session. - a reflect skill (
assets/reflect-SKILL.md.tmpl) — improve the OS itself (skills, routing, checks, templates) intooperations/improvements.md; the 50/50 budget. - a skillify skill (
assets/skillify-SKILL.md.tmpl) — promote proven repeatable work into staged, verified skills.
- a doctor (
- Also include an orchestrator skill (the auto-manage loop as one trigger) named
{domain}-intake. - Routing stays lean: rely on each skill's
descriptionfor routing while the pack is small; add aplugin/skills/RESOLVER.md(trigger -> skill table) only once skills grow enough that descriptions overlap or the doctor's reachability check flags ambiguity. - Author a skill only for work that repeats or needs upkeep — one-off builds belong in
work/, not a throwaway skill. For skills created from completed work, follow the skillify loop: prove provenance, extract the repeatable process, stage inwork/, verify with the strongest domain-appropriate check, ask before moving intoplugin/skills/, then repackage.
Phase 5 — Package the plugin
Read references/packaging.md.
- Run
{domain}-doctorfirst — packaging is gated on a clean (or explained) report. - The workspace
plugin/directory is already the installable plugin — no copying. Validate it: everyplugin/skills/*/has aSKILL.md; both plugin manifests are valid JSON and share the{DOMAIN_SLUG}-osname; the Codex manifest points at./skills/; no angle brackets in any description; no stray non-skill folders inplugin/skills/;.agents/skillspoints to or mirrorsplugin/skills/. Fix before packaging. zipthe contents ofplugin/to/tmpfirst, then copy the.pluginto the outputs
...
User Reviews (0)
Write a Review
No reviews yet
Statistics
User Rating
Rate this Skill