@ericrisco/rsc 0.1.62 → 0.1.64

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/manifest.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.1.62",
2
+ "version": "0.1.64",
3
3
  "counts": {
4
4
  "skills": 258
5
5
  },
@@ -3592,7 +3592,7 @@
3592
3592
  },
3593
3593
  {
3594
3594
  "id": "project-ops",
3595
- "description": "Use when an operator wants to run a small or mid project from a flat file — dated milestones each with one named owner and a binary done-test, RAG status driven by rules, a RAID log, slippage detection, and a 2-minute weekly status report — instead of standing up Jira/Asana. Triggers: 'set up milestones with owners and due dates', 'write this week's status report', 'who do I chase if the launch slips', 'everything is green and I don't trust it — what should be amber', 'which milestones are trending late before they miss', 'start a RAID log', 'munta'm un seguiment de projecte amb fites i estat RAG', 'informe d'estat setmanal', 'qui és l'owner de cada fita', 'estado del proyecto en rojo/ámbar/verde'. NOT sequencing the engineering work inside one approved plan (that is tasks).",
3595
+ "description": "Use when an operator wants to run a small or mid-sized project from a flat file instead of standing up Jira or Asana — dated milestones each with one named owner and a binary done-test, rule-driven RAG status, a RAID log, slippage detection, and a two-minute weekly status report. NOT sequencing the engineering work inside one approved plan (that is `tasks`).",
3596
3596
  "tags": [
3597
3597
  "project-management",
3598
3598
  "milestones",
@@ -3626,7 +3626,7 @@
3626
3626
  },
3627
3627
  {
3628
3628
  "id": "proposals",
3629
- "description": "Use when writing the document a buyer reads to say yes — a commercial proposal or Statement of Work (SOW), turning discovery notes into a scoped priced doc, adding Good/Better/Best tiers, or fixing a proposal that won't close. Triggers: 'write a proposal for this client', 'draft a SOW / scope of work', 'turn this discovery call into a proposal', 'add pricing tiers so the middle one wins', 'why isn't this proposal closing', 'scope this so the client can't keep adding free work', 'propuesta comercial / propuesta de servicios', 'proposta comercial / abast del projecte'. NOT the binding legal agreement, MSA, liability/IP clauses (that is contracts), NOT deciding what number to charge or the margin (that is pricing), NOT the slide deck that pitches the vision to a room (that is pitch-deck).",
3629
+ "description": "Use when writing the document a buyer reads to say yes — a commercial proposal or Statement of Work, turning discovery notes into a scoped and priced document, adding tiers so the middle one wins, or diagnosing a proposal that will not close. NOT the binding legal agreement with its liability and IP clauses (that is `contracts`), NOT deciding the number or the margin (that is `pricing`), NOT the deck that pitches the vision to a room (that is `pitch-deck`).",
3630
3630
  "tags": [
3631
3631
  "proposals",
3632
3632
  "sow",
@@ -3685,7 +3685,7 @@
3685
3685
  },
3686
3686
  {
3687
3687
  "id": "rails",
3688
- "description": "Use when building or maintaining a Ruby on Rails app — generating or editing app/ models, controllers, views, config/routes.rb, db/migrate; writing ActiveRecord associations/scopes/queries; building Hotwire (Turbo + Stimulus) UI; Active Job / Solid Queue jobs; or Rails tests. Triggers: 'rails generate', 'fix this N+1', 'add a Turbo Stream', 'belongs_to / has_many', 'is this migration safe on a live table?', 'my system test went flaky after I added a Turbo Frame', 'should this be Sidekiq or Solid Queue?', 'scaffold un CRUD en Rails', 'arreglar una consulta ActiveRecord', 'aquesta migració és segura en producció?'. NOT plain Ruby scripts/gems/CLIs with no Rails loaded (that is ruby).",
3688
+ "description": "Use when building or maintaining a Ruby on Rails app — models, controllers, views, routes and migrations; ActiveRecord associations, scopes and query performance; Hotwire (Turbo and Stimulus) UI; Active Job or Solid Queue background work; and Rails tests. Covers N+1 queries, migration safety on live tables, and flaky system tests around Turbo Frames. NOT plain Ruby scripts, gems or CLIs with no Rails loaded (that is `ruby`).",
3689
3689
  "tags": [
3690
3690
  "rails",
3691
3691
  "activerecord",
@@ -3706,7 +3706,7 @@
3706
3706
  },
3707
3707
  {
3708
3708
  "id": "railway",
3709
- "description": "Use when deploying an app to Railway — pushing a repo or running railway up, provisioning a managed database, wiring env and reference variables, attaching a volume, or fixing a Railway deploy that builds but won't serve. Triggers: 'deploy this on Railway', 'railway up', 'add Postgres to Railway', 'railway.json healthcheck path', 'my Railway service binds localhost and 502s', 'reference DATABASE_URL across two services', 'two Railway services need to talk privately', 'desplegar en Railway', 'mi servicio de Railway no arranca'. NOT Render (that is render), NOT Fly machines (that is fly-io), NOT self-hosted PaaS on your own box (that is coolify).",
3709
+ "description": "Use when deploying an app to Railway — pushing a repo or running railway up, provisioning a managed database, wiring env and reference variables across services, attaching a volume, or fixing a deploy that builds but will not serve. NOT Render (that is `render`), NOT Fly machines (that is `fly-io`), NOT a self-hosted PaaS on your own box (that is `coolify`).",
3710
3710
  "tags": [
3711
3711
  "railway",
3712
3712
  "paas",
@@ -3772,7 +3772,7 @@
3772
3772
  },
3773
3773
  {
3774
3774
  "id": "redis",
3775
- "description": "Use when using Redis (or Valkey/ElastiCache/Upstash/Dragonfly/Memorystore — any Redis-protocol store) as a cache, queue, rate limiter, or distributed lock and you need it CORRECT, not just connected: stampede-proof caching, locks that don't release someone else's hold, race-free rate limits, jobs that survive a worker crash. Triggers: 'cache stampede', 'thundering herd', 'distributed lock', 'SET NX PX', 'Redlock', 'fencing token', 'rate limiter race', 'INCR then EXPIRE', 'BullMQ stalled jobs', 'XREADGROUP / XAUTOCLAIM', 'maxmemory-policy', 'KEYS * in prod', 'lock released by the wrong owner', 'limitador de peticiones', 'bloqueig distribuït', 'la cau s'invalida malament'. NOT durable SQL queues with SELECT FOR UPDATE SKIP LOCKED (that is postgresdb), NOT vector similarity search over embeddings (that is vector-db).",
3775
+ "description": "Use when using Redis or any Redis-protocol store (Valkey, ElastiCache, Upstash, Dragonfly, Memorystore) as a cache, queue, rate limiter or distributed lock and it has to be CORRECT rather than merely connected — stampede-proof caching, locks that cannot release someone else's hold, race-free rate limits, and jobs that survive a worker crash. NOT durable SQL queues with SELECT FOR UPDATE SKIP LOCKED (that is `postgresdb`), NOT vector similarity search over embeddings (that is `vector-db`).",
3776
3776
  "tags": [
3777
3777
  "redis",
3778
3778
  "valkey",
@@ -3797,7 +3797,7 @@
3797
3797
  },
3798
3798
  {
3799
3799
  "id": "remotion-video",
3800
- "description": "Use when you need to render an actual video file with Remotion — React compositions, slide/fade transitions, burned-in word-by-word captions from a transcript, automatic silence removal, b-roll overlays, and a final MP4/MOV out of `npx remotion render`. Covers project scaffold, the Composition/Sequence/TransitionSeries graph, the Whisper.cpp → toCaptions → createTikTokStyleCaptions pipeline, and headless CI renders. Triggers: 'render my script and voiceover into an MP4 with Remotion', 'burn TikTok-style word-by-word captions from a Whisper transcript', 'add slide and fade transitions between scenes programmatically', 'genera el vídeo final con subtítulos quemados', 'quita los silencios del recording automáticamente', 'renderitza la composició a MP4 amb Remotion'. NOT writing the script, hook, beats, or caption text (that is video-shorts), NOT mastering audio to LUFS or building an RSS feed (that is podcast), NOT structuring the narrative arc (that is course-storytelling).",
3800
+ "description": "Use when you need to render an actual video file with Remotion — React compositions, the Composition/Sequence/TransitionSeries graph, transitions, burned-in word-by-word captions from a transcript, automatic silence removal, b-roll overlays, headless CI renders, and a final MP4 or MOV. NOT writing the script, hook, beats or caption text (that is `video-shorts`), NOT mastering audio to LUFS or building an RSS feed (that is `podcast`), NOT structuring the narrative arc (that is `course-storytelling`).",
3801
3801
  "tags": [
3802
3802
  "remotion",
3803
3803
  "video-rendering",
@@ -3818,7 +3818,7 @@
3818
3818
  },
3819
3819
  {
3820
3820
  "id": "render",
3821
- "description": "Use when deploying or fixing an app on Render (render.com) — web services, background workers, cron jobs, private services, managed Postgres/Key-Value, and especially the render.yaml Blueprint. Use when a deploy fails with 'no open ports detected' or returns 502 on first deploy, a free service cold-starts after going idle, or a free Postgres is about to expire and take its data. Triggers: 'deploy to Render', 'write a render.yaml', 'render blueprint', 'Render background worker', 'Render cron job', 'no open ports detected', 'wire DATABASE_URL between Render services', 'why does my free Render service take 30 seconds to wake', 'desplegar en Render', 'configurar render.yaml', 'mi servicio en Render da 502'. NOT generic ship/release flow (that is deployment) and NOT another PaaS like railway or fly-io.",
3821
+ "description": "Use when deploying or fixing an app on Render — web services, background workers, cron jobs, private services, managed Postgres and Key-Value, and especially the render.yaml Blueprint. Covers deploys that fail with no open ports detected, 502s on first deploy, free-tier cold starts, and a free Postgres about to expire with its data. NOT the generic ship and release flow (that is `deployment`), NOT another PaaS such as `railway` or `fly-io`.",
3822
3822
  "tags": [
3823
3823
  "render",
3824
3824
  "paas",
@@ -3840,7 +3840,7 @@
3840
3840
  },
3841
3841
  {
3842
3842
  "id": "replicate",
3843
- "description": "Use when running, packaging, deploying or scaling a model on the Replicate platform from code — choosing blocking run vs async predictions, handling FileOutput, wiring deployments with warm/private endpoints and autoscaling, packaging with Cog, verifying webhooks, or cutting GPU spend. Triggers: 'run flux on Replicate from Python', 'my prediction takes 8 minutes and my request times out', 'keep an instance warm so users don't hit cold starts', 'cog push fails', 'verify the webhook came from Replicate', 'desplegar mi modelo en Replicate con endpoint privado', 'empaquetar mi modelo con Cog'. NOT crafting image prompts/params or picking image model families (that is replicate-images).",
3843
+ "description": "Use when running, packaging, deploying or scaling a model on the Replicate platform from code — blocking run versus async predictions, handling FileOutput, deployments with warm private endpoints and autoscaling, packaging with Cog, verifying webhook signatures, and cutting GPU spend. NOT crafting image prompts and parameters or picking image model families (that is `replicate-images`).",
3844
3844
  "tags": [
3845
3845
  "replicate",
3846
3846
  "cog",
@@ -3863,7 +3863,7 @@
3863
3863
  },
3864
3864
  {
3865
3865
  "id": "replicate-images",
3866
- "description": "Use when generating or editing images through the Replicate API, or when a modern image model keeps ignoring the prompt — running google/nano-banana-2, openai/gpt-image-1, Flux, or SeeDream from Node or Python, choosing aspect ratio, resolution, seed, and output format, doing image-to-image, multi-reference composition, or text-driven inpainting, and structuring prompts per model family. Triggers: 'replicate.run nano-banana-2', 'why does Flux ignore half my prompt', 'render readable text inside a generated product label', 'compose a product shot from two reference images', 'make the generation reproducible with a seed', 'generar y editar imágenes con la API de Replicate', 'per què Flux no segueix el prompt'. NOT general Replicate platform/auth/non-image models like LLMs or audio (that is replicate).",
3866
+ "description": "Use when generating or editing images through the Replicate API, or when a modern image model keeps ignoring the prompt — choosing aspect ratio, resolution, seed and output format, image-to-image, multi-reference composition, text-driven inpainting, readable text inside a generated image, and structuring prompts per model family. NOT general Replicate platform, auth or non-image models (that is `replicate`).",
3867
3867
  "tags": [
3868
3868
  "replicate",
3869
3869
  "image-generation",
@@ -3908,7 +3908,7 @@
3908
3908
  },
3909
3909
  {
3910
3910
  "id": "research-ops",
3911
- "description": "Use when someone hands you an open question to find out the truth about — a tech choice, a regulation, a 'what's actually true about X' — and the answer must survive scrutiny: every non-obvious claim dated and sourced, source disagreements surfaced not averaged away, and the deliverable is a cited memo you could defend in a room. Also when refreshing a stale research memo. Triggers: 'research whether A or B is better in 2026 with sources', 'give me a memo I can defend in Monday's meeting', 'settle this argument, is X actually true, cite your sources', 'what's the state of Y with citations', 'investiga a fondo X y cítame las fuentes con fecha', 'fes una recerca a fons amb fonts datades i nivell de confiança'. NOT sizing a market with TAM/SAM/SOM (that is market-research), NOT a standing cadence watch on named rivals (that is competitor-watch).",
3911
+ "description": "Use when someone hands you an open question whose answer must survive scrutiny — a tech choice, a regulation, a what-is-actually-true-about-X — with every non-obvious claim dated and sourced, source disagreements surfaced rather than averaged away, and a cited memo as the deliverable. Also for refreshing a stale research memo. NOT sizing a market with TAM/SAM/SOM (that is `market-research`), NOT a standing cadence watch on named rivals (that is `competitor-watch`).",
3912
3912
  "tags": [
3913
3913
  "research-ops",
3914
3914
  "deep-research",
@@ -3931,7 +3931,7 @@
3931
3931
  },
3932
3932
  {
3933
3933
  "id": "retention",
3934
- "description": "Use when revenue is leaking out the bottom of the funnel and you need a program to keep, score, and win back customers — building a customer health score, running NPS, catching churn signals before renewal, designing a cancellation save flow, or a win-back sequence. Triggers: 'reduce churn', 'health score', 'NPS', 'save play', 'cancellation flow', 'win-back', 'at-risk accounts', 'GRR vs NRR', non-obvious 'my annual customers are downgrading to monthly', 'renewal is slipping', 'detractors keep canceling'; Catalan/Spanish 'reduir la rotació de clients', 'recuperar clients perduts', 'puntuació de salut del client', 'evitar bajas'. NOT working a single live churn-risk ticket in the moment (that is customer-support), NOT the first-30-days welcome flow (that is client-onboarding).",
3934
+ "description": "Use when revenue is leaking out the bottom of the funnel and you need a program to keep, score and win back customers — a customer health score, NPS, catching churn signals before renewal, a cancellation save flow, or a win-back sequence, and reading GRR against NRR. NOT working a single live churn-risk ticket in the moment (that is `customer-support`), NOT the first-30-days welcome flow (that is `client-onboarding`).",
3935
3935
  "tags": [
3936
3936
  "retention",
3937
3937
  "churn",
@@ -3973,7 +3973,7 @@
3973
3973
  },
3974
3974
  {
3975
3975
  "id": "review-management",
3976
- "description": "Use when a public review just landed and needs an on-voice reply, or you need to earn more reviews legally, or your aggregate rating is slipping across Google Business Profile, Trustpilot, the App Store, or Google Play. Use when a 1-star feels unfair and you want it removed not just answered, when you must decide reply-vs-flag, or when wiring programmatic replies (GBP v4 updateReply, Trustpilot, App Store Connect, Play). Triggers: 'responder a esta reseña de Google', 'conseguir más reseñas sin saltarnos la ley', 'respon aquesta ressenya d''una estrella', 'aconseguir més ressenyes sense saltar-nos la llei', 'a 1-star landed and I want it removed not just answered', 'are we allowed to ask only happy customers for reviews', 'draft a reply to this 2-star', 'set up a review-request flow', 'build a reputation scorecard across Google and the App Store'. NOT a private 1:1 support ticket against an SLA (that is customer-support), NOT churn/NPS/save plays (that is retention).",
3976
+ "description": "Use when a public review needs an on-voice reply, when you need to earn more reviews legally, or when an aggregate rating is slipping across Google Business Profile, Trustpilot, the App Store or Google Play — including deciding reply versus flag, getting an unfair one-star removed rather than merely answered, and wiring programmatic replies. NOT a private support ticket against an SLA (that is `customer-support`), NOT churn, NPS or save plays (that is `retention`).",
3977
3977
  "tags": [
3978
3978
  "reviews",
3979
3979
  "reputation",
@@ -4032,7 +4032,7 @@
4032
4032
  },
4033
4033
  {
4034
4034
  "id": "runpod",
4035
- "description": "Use when running GPU compute on RunPod and deciding between Pods (hourly, always-on) and Serverless (per-second, autoscaling) for training, fine-tuning, or model inference. Triggers: deploying a vLLM or custom-model serverless endpoint, writing or debugging a handler(job) worker, building a worker Docker template, attaching a network volume, tuning idle/execution timeout, max/active workers, FlashBoot, or chasing a runaway RunPod bill or slow cold starts; 'mi factura de RunPod se disparó', 'pod o serverless en RunPod', 'workers que no escalan a cero', 'el cold start tarda 20s'. NOT generic Python-native serverless GPU with snapshot autoscaling (that is modal); NOT calling hosted prebuilt model APIs (that is replicate); NOT pulling weights from the Hub (that is huggingface).",
4035
+ "description": "Use when running GPU compute on RunPod and deciding between Pods (hourly, always-on) and Serverless (per-second, autoscaling) for training, fine-tuning or inference — serverless endpoints, handler workers, worker Docker templates, network volumes, timeout and worker-count tuning, cold starts, and runaway bills. NOT Python-native serverless GPU with snapshot autoscaling (that is `modal`), NOT calling hosted prebuilt model APIs (that is `replicate`), NOT pulling weights from the Hub (that is `huggingface`).",
4036
4036
  "tags": [
4037
4037
  "runpod",
4038
4038
  "gpu",
@@ -4075,7 +4075,7 @@
4075
4075
  },
4076
4076
  {
4077
4077
  "id": "sales-pipeline",
4078
- "description": "Use when an operator runs deals out of a spreadsheet, Notion, or Airtable and wants real stages, win-probabilities, deal hygiene, a weekly follow-up sweep, or a defensible roll-up forecast off the list — and when the pipeline looks full but nothing closes. Triggers: 'set up stages and a weighted forecast for my deal sheet', 'which deals are stale and what do I follow up on this week', 'my forecast keeps slipping every quarter', 'what's my pipeline coverage vs a 250k quota', 'build me a lightweight CRM without Salesforce', 'munta'm un CRM lleuger amb etapes i previsió', 'quins deals estan encallats', 'previsió de vendes del pipeline'. NOT statistical / scenario forecast modeling, time-series or cohort projections (that is forecasting), NOT sourcing new prospects (that is lead-gen), NOT writing the outbound emails (that is cold-outreach), NOT writing the proposal/quote (that is proposals), NOT the post-close kickoff (that is client-onboarding).",
4078
+ "description": "Use when an operator runs deals out of a spreadsheet or Notion and wants real stages, win probabilities, deal hygiene, a weekly follow-up sweep, and a defensible roll-up forecast — including the case where the pipeline looks full but nothing closes. NOT statistical or scenario forecast modelling (that is `forecasting`), NOT sourcing prospects (that is `lead-gen`), NOT writing the outbound emails (that is `cold-outreach`), NOT the proposal or quote (that is `proposals`), NOT the post-close kickoff (that is `client-onboarding`).",
4079
4079
  "tags": [
4080
4080
  "sales",
4081
4081
  "crm",
@@ -4096,7 +4096,7 @@
4096
4096
  },
4097
4097
  {
4098
4098
  "id": "scaling",
4099
- "description": "Use when traffic is growing or about to spike and the system bends under concurrency — deciding what to add and in what order (cache, connection pool, async queue, read replica, more instances) and proving it with a load test instead of guessing. Triggers: 'will we survive the launch spike', 'fine for me but dies under load', 'too many clients already', 'add caching or a read replica?', 'set RPS and p95 targets and load-test before go-live', the non-obvious 'DB connections are maxed out', and Catalan/Spanish 'aguantarem el pic de trànsit del llançament' / 'prepara un test de carga con objetivos de p95'. NOT making one slow request faster or profiling an N+1 (that is performance), NOT race-free Redis caches/locks/queue semantics (that is redis).",
4099
+ "description": "Use when traffic is growing or about to spike and the system bends under concurrency — deciding what to add and in what order (cache, connection pool, async queue, read replica, more instances) and proving it with a load test against explicit RPS and p95 targets rather than guessing. NOT making one slow request faster or profiling an N+1 (that is `performance`), NOT race-free Redis caches, locks and queue semantics (that is `redis`).",
4100
4100
  "tags": [
4101
4101
  "scaling",
4102
4102
  "capacity",
@@ -4193,7 +4193,7 @@
4193
4193
  },
4194
4194
  {
4195
4195
  "id": "seo-geo",
4196
- "description": "Use when you need one existing page to rank in Google AND get cited by AI answer engines (ChatGPT Search, Perplexity, Gemini/AI Overviews, Copilot) — auditing a URL for on-page SEO, structured-data/JSON-LD schema, GEO citation levers, Core Web Vitals, crawlability, and AI-bot access in robots.txt. Triggers: 'audit this page for SEO', 'why isn't this ranking', 'get us cited in ChatGPT/Perplexity', 'optimize for AI search', 'add schema markup', 'write the JSON-LD', 'should we block GPTBot', 'our Core Web Vitals are failing', 'audita el SEO de esta página', 'optimitza per a cerca amb IA', 'afegeix schema a aquest article'. NOT writing the article body (that is article-writing), NOT keyword research or content strategy (that is content-engine).",
4196
+ "description": "Use when one existing page needs to rank in Google AND get cited by AI answer engines — auditing a URL for on-page SEO, structured-data JSON-LD, GEO citation levers, Core Web Vitals, crawlability, and AI-bot access in robots.txt. NOT writing the article body (that is `article-writing`), NOT keyword research or content strategy (that is `content-engine`).",
4197
4197
  "tags": [
4198
4198
  "seo",
4199
4199
  "geo",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ericrisco/rsc",
3
- "version": "0.1.62",
3
+ "version": "0.1.64",
4
4
  "description": "Eric Risco's agent-skills catalog as a granular, self-recommending CLI installer.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: project-ops
3
- description: "Use when an operator wants to run a small or mid project from a flat file — dated milestones each with one named owner and a binary done-test, RAG status driven by rules, a RAID log, slippage detection, and a 2-minute weekly status report — instead of standing up Jira/Asana. Triggers: 'set up milestones with owners and due dates', 'write this week's status report', 'who do I chase if the launch slips', 'everything is green and I don't trust it — what should be amber', 'which milestones are trending late before they miss', 'start a RAID log', 'munta'm un seguiment de projecte amb fites i estat RAG', 'informe d'estat setmanal', 'qui és l'owner de cada fita', 'estado del proyecto en rojo/ámbar/verde'. NOT sequencing the engineering work inside one approved plan (that is tasks)."
3
+ description: "Use when an operator wants to run a small or mid-sized project from a flat file instead of standing up Jira or Asana — dated milestones each with one named owner and a binary done-test, rule-driven RAG status, a RAID log, slippage detection, and a two-minute weekly status report. NOT sequencing the engineering work inside one approved plan (that is `tasks`)."
4
4
  tags: [project-management, milestones, status-tracking]
5
5
  recommends: [tasks, decision-records, meeting-notes, sop-builder, dashboard]
6
6
  origin: risco
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: proposals
3
- description: "Use when writing the document a buyer reads to say yes — a commercial proposal or Statement of Work (SOW), turning discovery notes into a scoped priced doc, adding Good/Better/Best tiers, or fixing a proposal that won't close. Triggers: 'write a proposal for this client', 'draft a SOW / scope of work', 'turn this discovery call into a proposal', 'add pricing tiers so the middle one wins', 'why isn't this proposal closing', 'scope this so the client can't keep adding free work', 'propuesta comercial / propuesta de servicios', 'proposta comercial / abast del projecte'. NOT the binding legal agreement, MSA, liability/IP clauses (that is contracts), NOT deciding what number to charge or the margin (that is pricing), NOT the slide deck that pitches the vision to a room (that is pitch-deck)."
3
+ description: "Use when writing the document a buyer reads to say yes — a commercial proposal or Statement of Work, turning discovery notes into a scoped and priced document, adding tiers so the middle one wins, or diagnosing a proposal that will not close. NOT the binding legal agreement with its liability and IP clauses (that is `contracts`), NOT deciding the number or the margin (that is `pricing`), NOT the deck that pitches the vision to a room (that is `pitch-deck`)."
4
4
  tags: [proposals, sow, sales, scope]
5
5
  recommends: [contracts, pricing, invoicing, sales-pipeline, pitch-deck, brand-voice]
6
6
  origin: risco
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: rails
3
- description: "Use when building or maintaining a Ruby on Rails app — generating or editing app/ models, controllers, views, config/routes.rb, db/migrate; writing ActiveRecord associations/scopes/queries; building Hotwire (Turbo + Stimulus) UI; Active Job / Solid Queue jobs; or Rails tests. Triggers: 'rails generate', 'fix this N+1', 'add a Turbo Stream', 'belongs_to / has_many', 'is this migration safe on a live table?', 'my system test went flaky after I added a Turbo Frame', 'should this be Sidekiq or Solid Queue?', 'scaffold un CRUD en Rails', 'arreglar una consulta ActiveRecord', 'aquesta migració és segura en producció?'. NOT plain Ruby scripts/gems/CLIs with no Rails loaded (that is ruby)."
3
+ description: "Use when building or maintaining a Ruby on Rails app — models, controllers, views, routes and migrations; ActiveRecord associations, scopes and query performance; Hotwire (Turbo and Stimulus) UI; Active Job or Solid Queue background work; and Rails tests. Covers N+1 queries, migration safety on live tables, and flaky system tests around Turbo Frames. NOT plain Ruby scripts, gems or CLIs with no Rails loaded (that is `ruby`)."
4
4
  tags: [rails, activerecord, hotwire, turbo, stimulus, solid-queue, minitest]
5
5
  recommends: [ruby, postgresdb, testing-web, deployment, db-migrations]
6
6
  profiles: []
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: railway
3
- description: "Use when deploying an app to Railway — pushing a repo or running railway up, provisioning a managed database, wiring env and reference variables, attaching a volume, or fixing a Railway deploy that builds but won't serve. Triggers: 'deploy this on Railway', 'railway up', 'add Postgres to Railway', 'railway.json healthcheck path', 'my Railway service binds localhost and 502s', 'reference DATABASE_URL across two services', 'two Railway services need to talk privately', 'desplegar en Railway', 'mi servicio de Railway no arranca'. NOT Render (that is render), NOT Fly machines (that is fly-io), NOT self-hosted PaaS on your own box (that is coolify)."
3
+ description: "Use when deploying an app to Railway — pushing a repo or running railway up, provisioning a managed database, wiring env and reference variables across services, attaching a volume, or fixing a deploy that builds but will not serve. NOT Render (that is `render`), NOT Fly machines (that is `fly-io`), NOT a self-hosted PaaS on your own box (that is `coolify`)."
4
4
  tags: [railway, paas, deploy, services, env-vars, volumes, databases, private-networking, railway-json]
5
5
  recommends: [render, fly-io, coolify, postgresdb, db-migrations, domains-dns, deployment, docker]
6
6
  origin: risco
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: redis
3
- description: "Use when using Redis (or Valkey/ElastiCache/Upstash/Dragonfly/Memorystore — any Redis-protocol store) as a cache, queue, rate limiter, or distributed lock and you need it CORRECT, not just connected: stampede-proof caching, locks that don't release someone else's hold, race-free rate limits, jobs that survive a worker crash. Triggers: 'cache stampede', 'thundering herd', 'distributed lock', 'SET NX PX', 'Redlock', 'fencing token', 'rate limiter race', 'INCR then EXPIRE', 'BullMQ stalled jobs', 'XREADGROUP / XAUTOCLAIM', 'maxmemory-policy', 'KEYS * in prod', 'lock released by the wrong owner', 'limitador de peticiones', 'bloqueig distribuït', 'la cau s'invalida malament'. NOT durable SQL queues with SELECT FOR UPDATE SKIP LOCKED (that is postgresdb), NOT vector similarity search over embeddings (that is vector-db)."
3
+ description: "Use when using Redis or any Redis-protocol store (Valkey, ElastiCache, Upstash, Dragonfly, Memorystore) as a cache, queue, rate limiter or distributed lock and it has to be CORRECT rather than merely connected — stampede-proof caching, locks that cannot release someone else's hold, race-free rate limits, and jobs that survive a worker crash. NOT durable SQL queues with SELECT FOR UPDATE SKIP LOCKED (that is `postgresdb`), NOT vector similarity search over embeddings (that is `vector-db`)."
4
4
  tags: [redis, valkey, cache, rate-limiting, distributed-locks, queues, bullmq, streams, lua, data-infra]
5
5
  recommends: [postgresdb, vector-db, clickhouse-analytics, scaling, nodejs, fly-io]
6
6
  profiles: []
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: remotion-video
3
- description: "Use when you need to render an actual video file with Remotion — React compositions, slide/fade transitions, burned-in word-by-word captions from a transcript, automatic silence removal, b-roll overlays, and a final MP4/MOV out of `npx remotion render`. Covers project scaffold, the Composition/Sequence/TransitionSeries graph, the Whisper.cpp → toCaptions → createTikTokStyleCaptions pipeline, and headless CI renders. Triggers: 'render my script and voiceover into an MP4 with Remotion', 'burn TikTok-style word-by-word captions from a Whisper transcript', 'add slide and fade transitions between scenes programmatically', 'genera el vídeo final con subtítulos quemados', 'quita los silencios del recording automáticamente', 'renderitza la composició a MP4 amb Remotion'. NOT writing the script, hook, beats, or caption text (that is video-shorts), NOT mastering audio to LUFS or building an RSS feed (that is podcast), NOT structuring the narrative arc (that is course-storytelling)."
3
+ description: "Use when you need to render an actual video file with Remotion — React compositions, the Composition/Sequence/TransitionSeries graph, transitions, burned-in word-by-word captions from a transcript, automatic silence removal, b-roll overlays, headless CI renders, and a final MP4 or MOV. NOT writing the script, hook, beats or caption text (that is `video-shorts`), NOT mastering audio to LUFS or building an RSS feed (that is `podcast`), NOT structuring the narrative arc (that is `course-storytelling`)."
4
4
  tags: [remotion, video-rendering, react, captions, ffmpeg, whisper, youtube]
5
5
  recommends: [video-shorts, podcast, course-storytelling, youtube-packaging, nextjs]
6
6
  origin: risco
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: render
3
- description: "Use when deploying or fixing an app on Render (render.com) — web services, background workers, cron jobs, private services, managed Postgres/Key-Value, and especially the render.yaml Blueprint. Use when a deploy fails with 'no open ports detected' or returns 502 on first deploy, a free service cold-starts after going idle, or a free Postgres is about to expire and take its data. Triggers: 'deploy to Render', 'write a render.yaml', 'render blueprint', 'Render background worker', 'Render cron job', 'no open ports detected', 'wire DATABASE_URL between Render services', 'why does my free Render service take 30 seconds to wake', 'desplegar en Render', 'configurar render.yaml', 'mi servicio en Render da 502'. NOT generic ship/release flow (that is deployment) and NOT another PaaS like railway or fly-io."
3
+ description: "Use when deploying or fixing an app on Render — web services, background workers, cron jobs, private services, managed Postgres and Key-Value, and especially the render.yaml Blueprint. Covers deploys that fail with no open ports detected, 502s on first deploy, free-tier cold starts, and a free Postgres about to expire with its data. NOT the generic ship and release flow (that is `deployment`), NOT another PaaS such as `railway` or `fly-io`."
4
4
  tags: [render, paas, deployment, render-yaml, cron, background-worker, infrastructure-as-code]
5
5
  recommends: [deployment, postgresdb, docker, domains-dns, github-actions, scaling]
6
6
  origin: risco
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: replicate
3
- description: "Use when running, packaging, deploying or scaling a model on the Replicate platform from code — choosing blocking run vs async predictions, handling FileOutput, wiring deployments with warm/private endpoints and autoscaling, packaging with Cog, verifying webhooks, or cutting GPU spend. Triggers: 'run flux on Replicate from Python', 'my prediction takes 8 minutes and my request times out', 'keep an instance warm so users don't hit cold starts', 'cog push fails', 'verify the webhook came from Replicate', 'desplegar mi modelo en Replicate con endpoint privado', 'empaquetar mi modelo con Cog'. NOT crafting image prompts/params or picking image model families (that is replicate-images)."
3
+ description: "Use when running, packaging, deploying or scaling a model on the Replicate platform from code — blocking run versus async predictions, handling FileOutput, deployments with warm private endpoints and autoscaling, packaging with Cog, verifying webhook signatures, and cutting GPU spend. NOT crafting image prompts and parameters or picking image model families (that is `replicate-images`)."
4
4
  tags: [replicate, cog, deployments, webhooks, model-serving, gpu, ai-infra]
5
5
  recommends: [replicate-images, modal, runpod, huggingface, webhooks, cost-tracking, docker]
6
6
  origin: risco
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: replicate-images
3
- description: "Use when generating or editing images through the Replicate API, or when a modern image model keeps ignoring the prompt — running google/nano-banana-2, openai/gpt-image-1, Flux, or SeeDream from Node or Python, choosing aspect ratio, resolution, seed, and output format, doing image-to-image, multi-reference composition, or text-driven inpainting, and structuring prompts per model family. Triggers: 'replicate.run nano-banana-2', 'why does Flux ignore half my prompt', 'render readable text inside a generated product label', 'compose a product shot from two reference images', 'make the generation reproducible with a seed', 'generar y editar imágenes con la API de Replicate', 'per què Flux no segueix el prompt'. NOT general Replicate platform/auth/non-image models like LLMs or audio (that is replicate)."
3
+ description: "Use when generating or editing images through the Replicate API, or when a modern image model keeps ignoring the prompt — choosing aspect ratio, resolution, seed and output format, image-to-image, multi-reference composition, text-driven inpainting, readable text inside a generated image, and structuring prompts per model family. NOT general Replicate platform, auth or non-image models (that is `replicate`)."
4
4
  tags: [replicate, image-generation, image-editing, nano-banana, flux, prompting, gpt-image, seedream]
5
5
  recommends: [replicate, prompt-engineering, ai-media, fal]
6
6
  origin: risco
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: research-ops
3
- description: "Use when someone hands you an open question to find out the truth about — a tech choice, a regulation, a 'what's actually true about X' — and the answer must survive scrutiny: every non-obvious claim dated and sourced, source disagreements surfaced not averaged away, and the deliverable is a cited memo you could defend in a room. Also when refreshing a stale research memo. Triggers: 'research whether A or B is better in 2026 with sources', 'give me a memo I can defend in Monday's meeting', 'settle this argument, is X actually true, cite your sources', 'what's the state of Y with citations', 'investiga a fondo X y cítame las fuentes con fecha', 'fes una recerca a fons amb fonts datades i nivell de confiança'. NOT sizing a market with TAM/SAM/SOM (that is market-research), NOT a standing cadence watch on named rivals (that is competitor-watch)."
3
+ description: "Use when someone hands you an open question whose answer must survive scrutiny — a tech choice, a regulation, a what-is-actually-true-about-X — with every non-obvious claim dated and sourced, source disagreements surfaced rather than averaged away, and a cited memo as the deliverable. Also for refreshing a stale research memo. NOT sizing a market with TAM/SAM/SOM (that is `market-research`), NOT a standing cadence watch on named rivals (that is `competitor-watch`)."
4
4
  tags: [research-ops, deep-research, source-credibility, citations, verification, synthesis, knowledge-meta]
5
5
  recommends: [market-research, competitor-watch, data-scraper, knowledge-ops, decision-records, structured-extraction, technical-writing]
6
6
  origin: risco
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: retention
3
- description: "Use when revenue is leaking out the bottom of the funnel and you need a program to keep, score, and win back customers — building a customer health score, running NPS, catching churn signals before renewal, designing a cancellation save flow, or a win-back sequence. Triggers: 'reduce churn', 'health score', 'NPS', 'save play', 'cancellation flow', 'win-back', 'at-risk accounts', 'GRR vs NRR', non-obvious 'my annual customers are downgrading to monthly', 'renewal is slipping', 'detractors keep canceling'; Catalan/Spanish 'reduir la rotació de clients', 'recuperar clients perduts', 'puntuació de salut del client', 'evitar bajas'. NOT working a single live churn-risk ticket in the moment (that is customer-support), NOT the first-30-days welcome flow (that is client-onboarding)."
3
+ description: "Use when revenue is leaking out the bottom of the funnel and you need a program to keep, score and win back customers — a customer health score, NPS, catching churn signals before renewal, a cancellation save flow, or a win-back sequence, and reading GRR against NRR. NOT working a single live churn-risk ticket in the moment (that is `customer-support`), NOT the first-30-days welcome flow (that is `client-onboarding`)."
4
4
  tags: [retention, churn, nps, health-score, save-play, win-back, nrr, grr, customer-success]
5
5
  recommends: [customer-support, client-onboarding, unit-economics, pricing, forecasting, compliance, newsletter, review-management]
6
6
  origin: risco
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: review-management
3
- description: "Use when a public review just landed and needs an on-voice reply, or you need to earn more reviews legally, or your aggregate rating is slipping across Google Business Profile, Trustpilot, the App Store, or Google Play. Use when a 1-star feels unfair and you want it removed not just answered, when you must decide reply-vs-flag, or when wiring programmatic replies (GBP v4 updateReply, Trustpilot, App Store Connect, Play). Triggers: 'responder a esta reseña de Google', 'conseguir más reseñas sin saltarnos la ley', 'respon aquesta ressenya d''una estrella', 'aconseguir més ressenyes sense saltar-nos la llei', 'a 1-star landed and I want it removed not just answered', 'are we allowed to ask only happy customers for reviews', 'draft a reply to this 2-star', 'set up a review-request flow', 'build a reputation scorecard across Google and the App Store'. NOT a private 1:1 support ticket against an SLA (that is customer-support), NOT churn/NPS/save plays (that is retention)."
3
+ description: "Use when a public review needs an on-voice reply, when you need to earn more reviews legally, or when an aggregate rating is slipping across Google Business Profile, Trustpilot, the App Store or Google Play — including deciding reply versus flag, getting an unfair one-star removed rather than merely answered, and wiring programmatic replies. NOT a private support ticket against an SLA (that is `customer-support`), NOT churn, NPS or save plays (that is `retention`)."
4
4
  tags: [reviews, reputation, google-business-profile, trustpilot, ftc, responses, app-store]
5
5
  recommends: [customer-support, retention, seo-geo, brand-voice, social-publisher]
6
6
  origin: risco
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: runpod
3
- description: "Use when running GPU compute on RunPod and deciding between Pods (hourly, always-on) and Serverless (per-second, autoscaling) for training, fine-tuning, or model inference. Triggers: deploying a vLLM or custom-model serverless endpoint, writing or debugging a handler(job) worker, building a worker Docker template, attaching a network volume, tuning idle/execution timeout, max/active workers, FlashBoot, or chasing a runaway RunPod bill or slow cold starts; 'mi factura de RunPod se disparó', 'pod o serverless en RunPod', 'workers que no escalan a cero', 'el cold start tarda 20s'. NOT generic Python-native serverless GPU with snapshot autoscaling (that is modal); NOT calling hosted prebuilt model APIs (that is replicate); NOT pulling weights from the Hub (that is huggingface)."
3
+ description: "Use when running GPU compute on RunPod and deciding between Pods (hourly, always-on) and Serverless (per-second, autoscaling) for training, fine-tuning or inference — serverless endpoints, handler workers, worker Docker templates, network volumes, timeout and worker-count tuning, cold starts, and runaway bills. NOT Python-native serverless GPU with snapshot autoscaling (that is `modal`), NOT calling hosted prebuilt model APIs (that is `replicate`), NOT pulling weights from the Hub (that is `huggingface`)."
4
4
  tags: [runpod, gpu, serverless, inference, training, cost-control, vllm, ai-infra]
5
5
  recommends: [modal, replicate, huggingface, docker, llm-pipeline, cost-tracking, ollama]
6
6
  origin: risco
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: sales-pipeline
3
- description: "Use when an operator runs deals out of a spreadsheet, Notion, or Airtable and wants real stages, win-probabilities, deal hygiene, a weekly follow-up sweep, or a defensible roll-up forecast off the list — and when the pipeline looks full but nothing closes. Triggers: 'set up stages and a weighted forecast for my deal sheet', 'which deals are stale and what do I follow up on this week', 'my forecast keeps slipping every quarter', 'what's my pipeline coverage vs a 250k quota', 'build me a lightweight CRM without Salesforce', 'munta'm un CRM lleuger amb etapes i previsió', 'quins deals estan encallats', 'previsió de vendes del pipeline'. NOT statistical / scenario forecast modeling, time-series or cohort projections (that is forecasting), NOT sourcing new prospects (that is lead-gen), NOT writing the outbound emails (that is cold-outreach), NOT writing the proposal/quote (that is proposals), NOT the post-close kickoff (that is client-onboarding)."
3
+ description: "Use when an operator runs deals out of a spreadsheet or Notion and wants real stages, win probabilities, deal hygiene, a weekly follow-up sweep, and a defensible roll-up forecast — including the case where the pipeline looks full but nothing closes. NOT statistical or scenario forecast modelling (that is `forecasting`), NOT sourcing prospects (that is `lead-gen`), NOT writing the outbound emails (that is `cold-outreach`), NOT the proposal or quote (that is `proposals`), NOT the post-close kickoff (that is `client-onboarding`)."
4
4
  tags: [sales, crm, pipeline, forecasting, deal-hygiene, business-ops]
5
5
  recommends: [forecasting, lead-gen, cold-outreach, proposals, client-onboarding, spreadsheet-ops]
6
6
  origin: risco
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: scaling
3
- description: "Use when traffic is growing or about to spike and the system bends under concurrency — deciding what to add and in what order (cache, connection pool, async queue, read replica, more instances) and proving it with a load test instead of guessing. Triggers: 'will we survive the launch spike', 'fine for me but dies under load', 'too many clients already', 'add caching or a read replica?', 'set RPS and p95 targets and load-test before go-live', the non-obvious 'DB connections are maxed out', and Catalan/Spanish 'aguantarem el pic de trànsit del llançament' / 'prepara un test de carga con objetivos de p95'. NOT making one slow request faster or profiling an N+1 (that is performance), NOT race-free Redis caches/locks/queue semantics (that is redis)."
3
+ description: "Use when traffic is growing or about to spike and the system bends under concurrency — deciding what to add and in what order (cache, connection pool, async queue, read replica, more instances) and proving it with a load test against explicit RPS and p95 targets rather than guessing. NOT making one slow request faster or profiling an N+1 (that is `performance`), NOT race-free Redis caches, locks and queue semantics (that is `redis`)."
4
4
  tags: [scaling, capacity, load-testing, caching, read-replicas, pgbouncer, k6, devops]
5
5
  recommends: [performance, redis, postgresdb, monitoring, deployment, backups, fly-io]
6
6
  profiles: []
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: seo-geo
3
- description: "Use when you need one existing page to rank in Google AND get cited by AI answer engines (ChatGPT Search, Perplexity, Gemini/AI Overviews, Copilot) — auditing a URL for on-page SEO, structured-data/JSON-LD schema, GEO citation levers, Core Web Vitals, crawlability, and AI-bot access in robots.txt. Triggers: 'audit this page for SEO', 'why isn't this ranking', 'get us cited in ChatGPT/Perplexity', 'optimize for AI search', 'add schema markup', 'write the JSON-LD', 'should we block GPTBot', 'our Core Web Vitals are failing', 'audita el SEO de esta página', 'optimitza per a cerca amb IA', 'afegeix schema a aquest article'. NOT writing the article body (that is article-writing), NOT keyword research or content strategy (that is content-engine)."
3
+ description: "Use when one existing page needs to rank in Google AND get cited by AI answer engines — auditing a URL for on-page SEO, structured-data JSON-LD, GEO citation levers, Core Web Vitals, crawlability, and AI-bot access in robots.txt. NOT writing the article body (that is `article-writing`), NOT keyword research or content strategy (that is `content-engine`)."
4
4
  tags: [seo, geo, structured-data, schema-org, core-web-vitals, ai-search, technical-seo]
5
5
  recommends: [content-engine, article-writing, landing-copy, performance, nextjs, accessibility, analytics]
6
6
  origin: risco