@ericrisco/rsc 0.1.60 → 0.1.62

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.60",
2
+ "version": "0.1.62",
3
3
  "counts": {
4
4
  "skills": 258
5
5
  },
@@ -2866,7 +2866,7 @@
2866
2866
  },
2867
2867
  {
2868
2868
  "id": "medium-writing",
2869
- "description": "Use when crafting or rewriting ONE Medium story so it earns reads, claps, and Boost curation — writing the title/subtitle/kicker as a hook system, fixing a story that gets views but a low read ratio (title over-promises, intro buries the payoff, wall-of-text body), making a draft scannable and curation-eligible, or reshaping a blog post/newsletter into Medium-native form. Triggers: 'write a Medium article that gets read', 'my Medium post gets views but nobody finishes it', 'fix my read ratio', 'give me a title subtitle and kicker', 'make this Boost-eligible', 'curation-worthy Medium draft', 'escribe un artículo de Medium que enganche desde el primer párrafo', 'fes que aquest esborrany de Medium sigui llegible'. NOT scheduling/publishing/tags/submitting to a publication (that is medium-publishing), and NOT deciding what topics or cadence to write (that is medium-strategy).",
2869
+ "description": "Use when crafting or rewriting ONE Medium story so it earns reads, claps and Boost curation — the title, subtitle and kicker as a hook system, fixing a story with views but a low read ratio, making a draft scannable and curation-eligible, or reshaping a blog post or newsletter into Medium-native form. NOT scheduling, tags or submitting to a publication (that is `medium-publishing`), NOT deciding topics or cadence (that is `medium-strategy`).",
2870
2870
  "tags": [
2871
2871
  "medium",
2872
2872
  "writing",
@@ -2935,7 +2935,7 @@
2935
2935
  },
2936
2936
  {
2937
2937
  "id": "mongodb",
2938
- "description": "Use when modeling MongoDB documents (embed vs reference, the 16MB cap, bucket/subset/extended-reference patterns), choosing or fixing indexes (compound order via the ESR rule, partial/TTL/multikey, reading explain), writing aggregation pipelines that stay index-eligible ($match-first, $lookup cost, $group memory + allowDiskUse), running multi-document transactions with retry, or operating/securing a deployment (replica set, read/write concern, Atlas M0/Flex/dedicated tiers, Vector Search, Queryable Encryption). Triggers: 'slow Mongo query', 'add an index', 'COLLSCAN', 'embed or reference', 'aggregation pipeline', '$lookup', 'transaction keeps retrying', 'modela esta colección', 'mi consulta hace un full scan'. MongoDB 8.2, driver-agnostic (mongosh syntax). NOT relational schema/SQL/EXPLAIN ANALYZE (that is postgresdb).",
2938
+ "description": "Use when modeling MongoDB documents (embed versus reference, the 16MB cap, bucket and subset patterns), choosing or fixing indexes (compound order by the ESR rule, partial, TTL, multikey, reading explain), writing aggregation pipelines that stay index-eligible, running multi-document transactions with retry, or operating and securing a deployment (replica set, read/write concern, Atlas tiers, Vector Search, Queryable Encryption). MongoDB 8.2, driver-agnostic. NOT relational schema, SQL or EXPLAIN ANALYZE (that is `postgresdb`).",
2939
2939
  "tags": [
2940
2940
  "mongodb",
2941
2941
  "nosql",
@@ -2951,7 +2951,7 @@
2951
2951
  },
2952
2952
  {
2953
2953
  "id": "monitoring",
2954
- "description": "Use when setting up uptime/health monitoring, alerts, or on-call basics for a service already in production and you need to know it's down before customers do. Triggers: 'set up uptime monitoring', 'alert me if the site goes down', 'add /healthz and /readyz and probe them', 'we get paged at 3am for CPU spikes that self-resolve — fix alert fatigue', 'alert on our SLO error-budget burn rate not raw error count', 'an untested alert isn't an alert', 'create an on-call rotation with escalation and a status page', 'monta monitorització d'uptime i avísa'm si l'API torna 5xx', 'avísame si la web se cae'. NOT instrumenting logs/metrics/traces or wiring OpenTelemetry (that is observability).",
2954
+ "description": "Use when setting up uptime and health monitoring, alerts, or on-call basics for a service already in production, so you learn it is down before customers do — health and readiness probes, alerting on SLO error-budget burn rather than raw counts, curing alert fatigue, on-call rotation with escalation, and a status page. NOT instrumenting logs, metrics or traces, or wiring OpenTelemetry (that is `observability`).",
2955
2955
  "tags": [
2956
2956
  "monitoring",
2957
2957
  "uptime",
@@ -2970,7 +2970,7 @@
2970
2970
  },
2971
2971
  {
2972
2972
  "id": "mysql",
2973
- "description": "Use when designing, querying, indexing, or operating a MySQL or MariaDB database and engine-specific behaviour matters: schema and type choices, index design, reading EXPLAIN, online schema change, replication, locking, deadlocks, and server config. Triggers: 'slow MySQL query', 'why isn't my index used', 'EXPLAIN says Using filesort', 'add a column to a huge table without downtime', 'set up GTID replication', 'replica lag', 'InnoDB deadlock', 'utf8mb4 vs utf8', 'caching_sha2_password cannot be loaded', 'pt-online-schema-change', 'gh-ost', 'emoji stored as ????', 'optimizar consulta MySQL', 'por qué no usa el índice', 'optimitzar consulta MySQL', 'MariaDB 11.8 vector'. NOT portable SELECT/JOIN/window-function craft (that is sql); NOT PostgreSQL engine behaviour like VACUUM or JSONB (that is postgresdb); NOT the PlanetScale/Vitess branch-and-deploy workflow (that is planetscale).",
2973
+ "description": "Use when designing, querying, indexing or operating a MySQL or MariaDB database and engine-specific behaviour matters — schema and type choices, index design, reading EXPLAIN, online schema change, replication and replica lag, locking and InnoDB deadlocks, charset traps, and server config. NOT portable SELECT/JOIN/window-function craft (that is `sql`), NOT PostgreSQL engine behaviour like VACUUM or JSONB (that is `postgresdb`), NOT the PlanetScale/Vitess branch-and-deploy workflow (that is `planetscale`).",
2974
2974
  "tags": [
2975
2975
  "mysql",
2976
2976
  "mariadb",
@@ -3014,7 +3014,7 @@
3014
3014
  },
3015
3015
  {
3016
3016
  "id": "neon",
3017
- "description": "Use when you picked Neon (serverless Postgres) and need to connect it correctly from a serverless/edge runtime, wire database branching into dev/preview/CI, or stop getting burned by scale-to-zero cold starts and pooler limits — code imports @neondatabase/serverless, DATABASE_URL points at *.neon.tech, or you must choose HTTP neon() vs WebSocket Pool. Triggers: 'connect to Neon from a Cloudflare Worker / Vercel edge', 'too many connections from my serverless function', 'first request after idle is slow' (scale-to-zero cold start), 'which connection string for migrations vs app queries', 'a database branch per pull request', 'pooled vs direct -pooler endpoint', 'conexión serverless a Postgres en Neon', 'branca de base de dades per cada PR'. NOT generic Postgres schema/index/EXPLAIN/RLS/migration engine work (that is postgresdb).",
3017
+ "description": "Use when you have picked Neon (serverless Postgres) and need to connect correctly from a serverless or edge runtime, wire database branching into dev, preview and CI, or stop being burned by scale-to-zero cold starts and pooler limits — including choosing HTTP versus WebSocket connections and pooled versus direct endpoints for migrations. NOT generic Postgres schema, index, EXPLAIN, RLS or migration-engine work (that is `postgresdb`).",
3018
3018
  "tags": [
3019
3019
  "neon",
3020
3020
  "postgres",
@@ -3055,7 +3055,7 @@
3055
3055
  },
3056
3056
  {
3057
3057
  "id": "netlify",
3058
- "description": "Use when deploying or operating a site on Netlify — writing or fixing netlify.toml, authoring Functions or Edge Functions, redirects/rewrites/headers, env vars per deploy context, or shipping via the Netlify CLI. Triggers: 'deploy to Netlify', 'netlify.toml build command', 'Netlify function returns 404 after deploy', 'page not found on SPA refresh on Netlify', 'build works locally but fails on Netlify', 'add a Netlify edge function', 'env var only in deploy preview', 'desplega-ho a Netlify', 'configura el netlify.toml'. NOT deploying to Vercel (that is vercel).",
3058
+ "description": "Use when deploying or operating a site on Netlify — writing or fixing netlify.toml, authoring Functions or Edge Functions, redirects, rewrites and headers, env vars per deploy context, and shipping via the Netlify CLI. NOT deploying to Vercel (that is `vercel`).",
3059
3059
  "tags": [
3060
3060
  "netlify",
3061
3061
  "deployment",
@@ -3112,7 +3112,7 @@
3112
3112
  },
3113
3113
  {
3114
3114
  "id": "nlp",
3115
- "description": "Use when choosing how to tokenize text or which transformer type fits an NLP task, when a tokenizer over-fragments non-English text or inflates token cost, when picking a language metric, or when classification / NER / summarization output looks wrong and you can't tell whether the tokenizer, the architecture, or the metric is at fault. Covers BPE / WordPiece / SentencePiece-Unigram / byte-level BPE, special tokens, encoder (BERT) vs decoder (GPT) vs encoder-decoder (T5) choice, classification, NER, seq2seq, sentence embeddings, and metrics (F1, entity-F1, BLEU / ROUGE / chrF, perplexity, LLM-as-judge). Triggers: 'BPE or WordPiece', 'BERT vs GPT vs T5 for this task', 'tokenizer splits Catalan into too many tokens', 'is BLEU good for summaries', 'entity F1 for NER', 'quin model faig servir per classificar text'. NOT retrieval / vector search (that is embeddings-search), NOT the RAG loop (that is rag), NOT prompt wording (that is prompt-engineering), NOT training the net (that is finetuning / deep-learning).",
3115
+ "description": "Use when choosing how to tokenize text or which transformer type fits an NLP task, when a tokenizer over-fragments non-English text or inflates token cost, when picking a language metric, or when classification, NER or summarization output looks wrong and it is unclear whether the tokenizer, the architecture or the metric is at fault. Covers subword tokenizers, encoder versus decoder versus encoder-decoder choice, sentence embeddings, and the metric families. NOT retrieval or vector search (that is `embeddings-search`), NOT the RAG loop (that is `rag`), NOT prompt wording (that is `prompt-engineering`), NOT training the network (that is `finetuning`).",
3116
3116
  "tags": [
3117
3117
  "nlp",
3118
3118
  "tokenization",
@@ -3215,7 +3215,7 @@
3215
3215
  },
3216
3216
  {
3217
3217
  "id": "ollama",
3218
- "description": "Use when running open-weight LLMs locally with Ollama — pulling/tagging models, calling the local API, picking a quant/GGUF, writing Modelfiles, or sizing VRAM/RAM for the box you're on. Triggers: 'run Llama/Qwen/gpt-oss/Gemma locally', 'self-host an LLM, no API keys, offline', 'model requires more memory than is available', 'why does my 70B OOM at long context', 'point the OpenAI SDK at localhost:11434', 'ollama ps / pull / create', 'ejecutar un LLM en local sin API key', 'quin model i quina quantització caben a la meva GPU de 12GB'. NOT remote/managed GPU serving or autoscaling (that is runpod), NOT downloading raw weights/datasets (that is huggingface), NOT retrieval pipeline design (that is rag).",
3218
+ "description": "Use when running open-weight LLMs locally with Ollama — pulling and tagging models, calling the local API, picking a quantization or GGUF, writing Modelfiles, and sizing VRAM and RAM for the machine at hand. NOT remote or managed GPU serving and autoscaling (that is `runpod`), NOT downloading raw weights or datasets (that is `huggingface`), NOT retrieval pipeline design (that is `rag`).",
3219
3219
  "tags": [
3220
3220
  "ollama",
3221
3221
  "local-llm",
@@ -3234,7 +3234,7 @@
3234
3234
  },
3235
3235
  {
3236
3236
  "id": "open-weights",
3237
- "description": "Use when choosing an open-weight LLM and clearing it for use — which family and size fit a task, hardware and budget, and above all whether the license lets you ship (Llama, Qwen, Mistral/Mixtral, Gemma, DeepSeek, Phi, gpt-oss, and others). Owns the license-CLASS map (OSI-open Apache/MIT vs custom-community like Llama/Gemma vs non-commercial/restricted like the original Codestral) and the always-verify-the-model-card rule, plus size-to-VRAM budgeting and quant formats (GGUF/AWQ/GPTQ, what Q4_K_M means). Triggers: 'which open model should I use', 'can I use Llama/Gemma commercially', 'is Qwen Apache-2.0', 'what open LLM fits a 24GB GPU', 'is this license safe to ship in a product', 'quin model obert puc fer servir legalment'. NOT how to download or host on HF (that is huggingface), NOT running it locally (that is ollama), NOT serving at throughput (that is vllm), NOT fine-tuning it (that is finetuning) — this layer only tells you WHICH model and whether the license permits it, then hands off.",
3237
+ "description": "Use when choosing an open-weight LLM and clearing it for use — which family and size fit the task, the hardware and the budget, and above all whether the license permits shipping. Owns the license-class map (OSI-open versus custom-community versus non-commercial), the always-verify-the-model-card rule, size-to-VRAM budgeting and the quant formats. This layer decides WHICH model and whether the license allows it, then hands off. NOT downloading or hosting on the Hub (that is `huggingface`), NOT running it locally (that is `ollama`), NOT serving at throughput (that is `vllm`), NOT fine-tuning it (that is `finetuning`).",
3238
3238
  "tags": [
3239
3239
  "open-weights",
3240
3240
  "open-source-llm",
@@ -3284,7 +3284,7 @@
3284
3284
  },
3285
3285
  {
3286
3286
  "id": "people-ops",
3287
- "description": "Use when the offer is signed and you now run the person — building an onboarding plan (preboarding → Day 1 → 30/60/90 ramp), drafting or auditing an internal policy or employee-handbook section (PTO, remote/hybrid, conduct, leave, expenses), standing up the recurring people rhythm (weekly 1:1s, review/goal cycle, headcount), or offboarding a leaver. Triggers: 'build an onboarding plan with a 30/60/90', 'draft a remote-work policy', 'the offer's signed, now what do I need ready before day one?', 'this handbook reads like a contract', 'set up our 1:1 and review cadence', 'someone's leaving — offboarding checklist', 'what HR do we even need?', 'plan de onboarding para el nuevo fichaje', 'redacta la política de teletreball'. NOT sourcing/interviewing/the offer itself (that is hiring).",
3287
+ "description": "Use when the offer is signed and you now have to run the person — an onboarding plan from preboarding through the 30/60/90 ramp, drafting or auditing an internal policy or handbook section, standing up the recurring people rhythm (1:1s, review and goal cycles, headcount), or offboarding a leaver. NOT sourcing, interviewing or the offer itself (that is `hiring`).",
3288
3288
  "tags": [
3289
3289
  "people-ops",
3290
3290
  "hr",
@@ -3332,7 +3332,7 @@
3332
3332
  },
3333
3333
  {
3334
3334
  "id": "phoenix",
3335
- "description": "Use when building an Elixir web app with Phoenix — contexts, Ecto schemas/changesets/migrations, LiveView, channels, generators and Phoenix-flavored tests — or wiring up the boundary between domain logic and the web layer. Triggers: 'mix phx.new', 'phx.gen.live', 'phx.gen.auth', 'build a LiveView CRUD', 'Ecto changeset', 'Phoenix channel / PubSub', 'how do I structure a context', non-obvious 'my LiveView re-renders the whole list every time one row is added', 'every post fires a separate query for its author' (N+1), Catalan 'crea un context Comandes i un LiveView per gestionar-les amb acces per usuari', Spanish 'autenticacion sin contrasena con phx.gen.auth / como separo el contexto del controlador'. NOT pure OTP — GenServers, supervision trees, releases with no web/Ecto layer (that is elixir).",
3335
+ "description": "Use when building an Elixir web app with Phoenix — contexts, Ecto schemas, changesets and migrations, LiveView, channels and PubSub, the generators, and the boundary between domain logic and the web layer. Covers the classic LiveView over-rendering and Ecto N+1 traps. NOT pure OTP work with no web or Ecto layer — GenServers, supervision trees, releases (that is `elixir`).",
3336
3336
  "tags": [
3337
3337
  "phoenix",
3338
3338
  "elixir",
@@ -3352,7 +3352,7 @@
3352
3352
  },
3353
3353
  {
3354
3354
  "id": "php",
3355
- "description": "Use when writing, reviewing, or modernizing PHP (8.3/8.4/8.5) beyond Laravel - strict types, union/intersection types, readonly classes, backed enums, PHP 8.4 property hooks and asymmetric visibility, PHP 8.5 pipe operator and clone-with, Composer + PSR-4 autoloading, PER-CS style, PSR-3/7/11/15 interop, and the quality toolchain (PHPStan max, Pint/PHP-CS-Fixer, Rector, PHPUnit 12 / Pest 4). Triggers: \\\"write a PHP value object\\\", \\\"set up composer.json with PSR-4\\\", \\\"convert getters to property hooks\\\", \\\"is this idiomatic modern PHP or 2015 code\\\", \\\"configura PHPStan a nivel max\\\", editing .php / composer.json / phpstan.neon. NOT Eloquent/Blade/Artisan (that is laravel).",
3355
+ "description": "Use when writing, reviewing or modernizing PHP (8.3-8.5) outside Laravel — strict types, union and intersection types, readonly classes, backed enums, property hooks and asymmetric visibility, the pipe operator and clone-with, Composer with PSR-4, PER-CS style, PSR interop, and the quality toolchain (PHPStan, Pint, Rector, PHPUnit/Pest). NOT Eloquent, Blade or Artisan (that is `laravel`).",
3356
3356
  "tags": [
3357
3357
  "php",
3358
3358
  "php8",
@@ -3371,7 +3371,7 @@
3371
3371
  },
3372
3372
  {
3373
3373
  "id": "pitch-deck",
3374
- "description": "Use when building or fixing an investor fundraising deck — the narrative arc, the slide-by-slide story, and the small set of numbers that actually move an investment decision, for a pre-seed, seed, or Series A raise (and the close cousin, a YC/accelerator application deck). Decides WHAT goes on each slide, in what order, and with which metric; sequences the story the way a VC evaluates risk (problem → solution → why-now → market → traction → team → ask). Triggers: 'build our seed pitch deck', 'what slides do I need to raise pre-seed', 'write the traction slide and the ask slide', 'investors lose interest after slide 3', 'tighten the fundraising story before demo day', 'monta el pitch deck para inversores', 'prepara la ronda seed', 'el deck per a la presentació a inversors'. NOT rendering/exporting/theming the slides into a designed PDF or PPTX (that is presentations), NOT the projection spreadsheet behind the numbers (that is financial-model).",
3374
+ "description": "Use when building or fixing an investor fundraising deck — the narrative arc, the slide-by-slide story, and the few numbers that actually move an investment decision, for a pre-seed, seed or Series A raise (or an accelerator application deck). Decides what goes on each slide, in what order, with which metric, sequenced the way an investor evaluates risk. NOT rendering, theming or exporting the slides into a designed PDF or PPTX (that is `presentations`), NOT the projection spreadsheet behind the numbers (that is `financial-model`).",
3375
3375
  "tags": [
3376
3376
  "pitch-deck",
3377
3377
  "fundraising",
@@ -3426,7 +3426,7 @@
3426
3426
  },
3427
3427
  {
3428
3428
  "id": "podcast",
3429
- "description": "Use when planning, recording, editing, or publishing one podcast episode end to end — the run-of-show and guest brief, recording settings (double-ender, 48 kHz WAV multitrack), the loudness master, the Podcasting 2.0 sidecars (chapters.json, transcript.vtt), the RSS <item>, and timestamped SEO show notes. Use when audio sounds quiet on Spotify but loud on Apple, a feed is rejected for bad artwork, or chapters and transcripts will not show in the app. Triggers: 'plan the run-of-show for a 40-minute interview', 'what LUFS for Apple and Spotify', 'master once to -16 LUFS', 'wire the transcript tag', 'valid RSS item with chapters and transcript for episode 14', 'generate a chapters.json from the double-ender locals', 'write timestamped SEO show notes', 'masteritzar l'àudio del podcast', 'escribe las show notes con timestamps'. NOT clipping the episode into social posts (that is social-publisher) and NOT cutting the vertical short (that is video-shorts).",
3429
+ "description": "Use when planning, recording, editing or publishing one podcast episode end to end — the run-of-show and guest brief, recording settings, the loudness master, the Podcasting 2.0 sidecars for chapters and transcripts, the RSS item, and timestamped SEO show notes. Covers audio that is quiet on one platform and loud on another, feeds rejected for bad artwork, and chapters that will not appear in the app. NOT clipping the episode into social posts (that is `social-publisher`), NOT cutting the vertical short (that is `video-shorts`).",
3430
3430
  "tags": [
3431
3431
  "podcast",
3432
3432
  "audio",
@@ -3497,7 +3497,7 @@
3497
3497
  },
3498
3498
  {
3499
3499
  "id": "press-kit",
3500
- "description": "Use when writing a press release or assembling a media kit a journalist can lift — launches, funding rounds, exec hires, partnerships, milestones, awards, or building an online newsroom; symptoms include 'reads like an ad', no pickup, a buried lede, no quotable line, or a missing dateline/boilerplate/asset. Triggers: 'write a press release', 'put together a press kit / media kit', 'write our boilerplate', 'draft a fact sheet', 'set an embargo on this announcement', the non-obvious 'our release got no coverage / journalists ignored it' and 'make this announcement quotable', and 'redacta una nota de prensa' / 'munta un dossier de premsa per als periodistes'. NOT finding the reporter list to send to (that is lead-gen), NOT the multi-touch pitch cadence (that is cold-outreach), NOT the brand tone-of-voice spec (that is brand-voice), and NOT the owned launch campaign (that is marketing).",
3500
+ "description": "Use when writing a press release or assembling a media kit a journalist can lift from — launches, funding, exec hires, partnerships, milestones, awards, or an online newsroom. Symptoms include a release that reads like an ad, a buried lede, no quotable line, or a missing dateline, boilerplate or asset. NOT finding the reporter list (that is `lead-gen`), NOT the multi-touch pitch cadence (that is `cold-outreach`), NOT the brand tone-of-voice spec (that is `brand-voice`), NOT the owned launch campaign (that is `marketing`).",
3501
3501
  "tags": [
3502
3502
  "press-release",
3503
3503
  "media-kit",
@@ -3523,7 +3523,7 @@
3523
3523
  },
3524
3524
  {
3525
3525
  "id": "pricing",
3526
- "description": "Use when setting or resetting what a product or service charges and how it is packaged — choosing list price, margin floor, tiers, value metric, pricing model (flat/seat/usage/outcome/hybrid) and discount rules. Triggers: 'what should I charge', 'cómo pongo precio a esto', 'quin preu poso', 'design my pricing tiers', 'good better best packaging', 'we keep discounting away our margin', 'reprice because our AI compute costs jumped', 'localize price for other countries (PPP)', 'per-seat pricing is killing us', 'set a discount floor'. NOT issuing the actual bill (that is invoicing) and NOT implementing prices in a billing system (that is stripe).",
3526
+ "description": "Use when setting or resetting what a product or service charges and how it is packaged — list price, margin floor, tiers, the value metric, the pricing model (flat, seat, usage, outcome or hybrid), discount rules and purchasing-power localisation. NOT issuing the actual bill (that is `invoicing`), NOT implementing prices in a billing system (that is `stripe`).",
3527
3527
  "tags": [
3528
3528
  "pricing",
3529
3529
  "packaging",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ericrisco/rsc",
3
- "version": "0.1.60",
3
+ "version": "0.1.62",
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: medium-writing
3
- description: "Use when crafting or rewriting ONE Medium story so it earns reads, claps, and Boost curation — writing the title/subtitle/kicker as a hook system, fixing a story that gets views but a low read ratio (title over-promises, intro buries the payoff, wall-of-text body), making a draft scannable and curation-eligible, or reshaping a blog post/newsletter into Medium-native form. Triggers: 'write a Medium article that gets read', 'my Medium post gets views but nobody finishes it', 'fix my read ratio', 'give me a title subtitle and kicker', 'make this Boost-eligible', 'curation-worthy Medium draft', 'escribe un artículo de Medium que enganche desde el primer párrafo', 'fes que aquest esborrany de Medium sigui llegible'. NOT scheduling/publishing/tags/submitting to a publication (that is medium-publishing), and NOT deciding what topics or cadence to write (that is medium-strategy)."
3
+ description: "Use when crafting or rewriting ONE Medium story so it earns reads, claps and Boost curation — the title, subtitle and kicker as a hook system, fixing a story with views but a low read ratio, making a draft scannable and curation-eligible, or reshaping a blog post or newsletter into Medium-native form. NOT scheduling, tags or submitting to a publication (that is `medium-publishing`), NOT deciding topics or cadence (that is `medium-strategy`)."
4
4
  tags: [medium, writing, headlines, hooks, read-ratio, curation, boost, formatting]
5
5
  recommends: [medium-publishing, medium-strategy, brand-voice, article-writing, content-engine]
6
6
  origin: risco
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: mongodb
3
- description: "Use when modeling MongoDB documents (embed vs reference, the 16MB cap, bucket/subset/extended-reference patterns), choosing or fixing indexes (compound order via the ESR rule, partial/TTL/multikey, reading explain), writing aggregation pipelines that stay index-eligible ($match-first, $lookup cost, $group memory + allowDiskUse), running multi-document transactions with retry, or operating/securing a deployment (replica set, read/write concern, Atlas M0/Flex/dedicated tiers, Vector Search, Queryable Encryption). Triggers: 'slow Mongo query', 'add an index', 'COLLSCAN', 'embed or reference', 'aggregation pipeline', '$lookup', 'transaction keeps retrying', 'modela esta colección', 'mi consulta hace un full scan'. MongoDB 8.2, driver-agnostic (mongosh syntax). NOT relational schema/SQL/EXPLAIN ANALYZE (that is postgresdb)."
3
+ description: "Use when modeling MongoDB documents (embed versus reference, the 16MB cap, bucket and subset patterns), choosing or fixing indexes (compound order by the ESR rule, partial, TTL, multikey, reading explain), writing aggregation pipelines that stay index-eligible, running multi-document transactions with retry, or operating and securing a deployment (replica set, read/write concern, Atlas tiers, Vector Search, Queryable Encryption). MongoDB 8.2, driver-agnostic. NOT relational schema, SQL or EXPLAIN ANALYZE (that is `postgresdb`)."
4
4
  tags: [mongodb, nosql, database, aggregation, indexing]
5
5
  recommends: [secure-coding, harness]
6
6
  profiles: []
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: monitoring
3
- description: "Use when setting up uptime/health monitoring, alerts, or on-call basics for a service already in production and you need to know it's down before customers do. Triggers: 'set up uptime monitoring', 'alert me if the site goes down', 'add /healthz and /readyz and probe them', 'we get paged at 3am for CPU spikes that self-resolve — fix alert fatigue', 'alert on our SLO error-budget burn rate not raw error count', 'an untested alert isn't an alert', 'create an on-call rotation with escalation and a status page', 'monta monitorització d'uptime i avísa'm si l'API torna 5xx', 'avísame si la web se cae'. NOT instrumenting logs/metrics/traces or wiring OpenTelemetry (that is observability)."
3
+ description: "Use when setting up uptime and health monitoring, alerts, or on-call basics for a service already in production, so you learn it is down before customers do — health and readiness probes, alerting on SLO error-budget burn rather than raw counts, curing alert fatigue, on-call rotation with escalation, and a status page. NOT instrumenting logs, metrics or traces, or wiring OpenTelemetry (that is `observability`)."
4
4
  tags: [monitoring, uptime, alerting, on-call, sre]
5
5
  recommends: [observability, deployment, error-handling, domains-dns, scaling]
6
6
  origin: risco
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: mysql
3
- description: "Use when designing, querying, indexing, or operating a MySQL or MariaDB database and engine-specific behaviour matters: schema and type choices, index design, reading EXPLAIN, online schema change, replication, locking, deadlocks, and server config. Triggers: 'slow MySQL query', 'why isn't my index used', 'EXPLAIN says Using filesort', 'add a column to a huge table without downtime', 'set up GTID replication', 'replica lag', 'InnoDB deadlock', 'utf8mb4 vs utf8', 'caching_sha2_password cannot be loaded', 'pt-online-schema-change', 'gh-ost', 'emoji stored as ????', 'optimizar consulta MySQL', 'por qué no usa el índice', 'optimitzar consulta MySQL', 'MariaDB 11.8 vector'. NOT portable SELECT/JOIN/window-function craft (that is sql); NOT PostgreSQL engine behaviour like VACUUM or JSONB (that is postgresdb); NOT the PlanetScale/Vitess branch-and-deploy workflow (that is planetscale)."
3
+ description: "Use when designing, querying, indexing or operating a MySQL or MariaDB database and engine-specific behaviour matters — schema and type choices, index design, reading EXPLAIN, online schema change, replication and replica lag, locking and InnoDB deadlocks, charset traps, and server config. NOT portable SELECT/JOIN/window-function craft (that is `sql`), NOT PostgreSQL engine behaviour like VACUUM or JSONB (that is `postgresdb`), NOT the PlanetScale/Vitess branch-and-deploy workflow (that is `planetscale`)."
4
4
  tags: [mysql, mariadb, innodb, explain, replication, indexing, online-ddl, database]
5
5
  recommends: [sql, postgresdb, planetscale, db-migrations, backups]
6
6
  origin: risco
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: neon
3
- description: "Use when you picked Neon (serverless Postgres) and need to connect it correctly from a serverless/edge runtime, wire database branching into dev/preview/CI, or stop getting burned by scale-to-zero cold starts and pooler limits — code imports @neondatabase/serverless, DATABASE_URL points at *.neon.tech, or you must choose HTTP neon() vs WebSocket Pool. Triggers: 'connect to Neon from a Cloudflare Worker / Vercel edge', 'too many connections from my serverless function', 'first request after idle is slow' (scale-to-zero cold start), 'which connection string for migrations vs app queries', 'a database branch per pull request', 'pooled vs direct -pooler endpoint', 'conexión serverless a Postgres en Neon', 'branca de base de dades per cada PR'. NOT generic Postgres schema/index/EXPLAIN/RLS/migration engine work (that is postgresdb)."
3
+ description: "Use when you have picked Neon (serverless Postgres) and need to connect correctly from a serverless or edge runtime, wire database branching into dev, preview and CI, or stop being burned by scale-to-zero cold starts and pooler limits — including choosing HTTP versus WebSocket connections and pooled versus direct endpoints for migrations. NOT generic Postgres schema, index, EXPLAIN, RLS or migration-engine work (that is `postgresdb`)."
4
4
  tags: [neon, postgres, serverless, database, branching, edge]
5
5
  recommends: [postgresdb, drizzle-orm, prisma-orm, vercel]
6
6
  origin: risco
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: netlify
3
- description: "Use when deploying or operating a site on Netlify — writing or fixing netlify.toml, authoring Functions or Edge Functions, redirects/rewrites/headers, env vars per deploy context, or shipping via the Netlify CLI. Triggers: 'deploy to Netlify', 'netlify.toml build command', 'Netlify function returns 404 after deploy', 'page not found on SPA refresh on Netlify', 'build works locally but fails on Netlify', 'add a Netlify edge function', 'env var only in deploy preview', 'desplega-ho a Netlify', 'configura el netlify.toml'. NOT deploying to Vercel (that is vercel)."
3
+ description: "Use when deploying or operating a site on Netlify — writing or fixing netlify.toml, authoring Functions or Edge Functions, redirects, rewrites and headers, env vars per deploy context, and shipping via the Netlify CLI. NOT deploying to Vercel (that is `vercel`)."
4
4
  tags: [netlify, deployment, serverless-functions, edge-functions, netlify-toml, redirects]
5
5
  recommends: [vercel, cloudflare, nextjs, domains-dns, github-actions]
6
6
  origin: risco
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: nlp
3
- description: "Use when choosing how to tokenize text or which transformer type fits an NLP task, when a tokenizer over-fragments non-English text or inflates token cost, when picking a language metric, or when classification / NER / summarization output looks wrong and you can't tell whether the tokenizer, the architecture, or the metric is at fault. Covers BPE / WordPiece / SentencePiece-Unigram / byte-level BPE, special tokens, encoder (BERT) vs decoder (GPT) vs encoder-decoder (T5) choice, classification, NER, seq2seq, sentence embeddings, and metrics (F1, entity-F1, BLEU / ROUGE / chrF, perplexity, LLM-as-judge). Triggers: 'BPE or WordPiece', 'BERT vs GPT vs T5 for this task', 'tokenizer splits Catalan into too many tokens', 'is BLEU good for summaries', 'entity F1 for NER', 'quin model faig servir per classificar text'. NOT retrieval / vector search (that is embeddings-search), NOT the RAG loop (that is rag), NOT prompt wording (that is prompt-engineering), NOT training the net (that is finetuning / deep-learning)."
3
+ description: "Use when choosing how to tokenize text or which transformer type fits an NLP task, when a tokenizer over-fragments non-English text or inflates token cost, when picking a language metric, or when classification, NER or summarization output looks wrong and it is unclear whether the tokenizer, the architecture or the metric is at fault. Covers subword tokenizers, encoder versus decoder versus encoder-decoder choice, sentence embeddings, and the metric families. NOT retrieval or vector search (that is `embeddings-search`), NOT the RAG loop (that is `rag`), NOT prompt wording (that is `prompt-engineering`), NOT training the network (that is `finetuning`)."
4
4
  tags: [nlp, tokenization, bpe, wordpiece, ner, text-classification, bleu, rouge, perplexity, transformers]
5
5
  recommends: [deep-learning, embeddings-search, rag, training-data]
6
6
  origin: risco
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: ollama
3
- description: "Use when running open-weight LLMs locally with Ollama — pulling/tagging models, calling the local API, picking a quant/GGUF, writing Modelfiles, or sizing VRAM/RAM for the box you're on. Triggers: 'run Llama/Qwen/gpt-oss/Gemma locally', 'self-host an LLM, no API keys, offline', 'model requires more memory than is available', 'why does my 70B OOM at long context', 'point the OpenAI SDK at localhost:11434', 'ollama ps / pull / create', 'ejecutar un LLM en local sin API key', 'quin model i quina quantització caben a la meva GPU de 12GB'. NOT remote/managed GPU serving or autoscaling (that is runpod), NOT downloading raw weights/datasets (that is huggingface), NOT retrieval pipeline design (that is rag)."
3
+ description: "Use when running open-weight LLMs locally with Ollama — pulling and tagging models, calling the local API, picking a quantization or GGUF, writing Modelfiles, and sizing VRAM and RAM for the machine at hand. NOT remote or managed GPU serving and autoscaling (that is `runpod`), NOT downloading raw weights or datasets (that is `huggingface`), NOT retrieval pipeline design (that is `rag`)."
4
4
  tags: [ollama, local-llm, gguf, quantization, self-hosted-inference]
5
5
  recommends: [huggingface, runpod, modal, llm-pipeline, rag]
6
6
  origin: risco
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: open-weights
3
- description: "Use when choosing an open-weight LLM and clearing it for use — which family and size fit a task, hardware and budget, and above all whether the license lets you ship (Llama, Qwen, Mistral/Mixtral, Gemma, DeepSeek, Phi, gpt-oss, and others). Owns the license-CLASS map (OSI-open Apache/MIT vs custom-community like Llama/Gemma vs non-commercial/restricted like the original Codestral) and the always-verify-the-model-card rule, plus size-to-VRAM budgeting and quant formats (GGUF/AWQ/GPTQ, what Q4_K_M means). Triggers: 'which open model should I use', 'can I use Llama/Gemma commercially', 'is Qwen Apache-2.0', 'what open LLM fits a 24GB GPU', 'is this license safe to ship in a product', 'quin model obert puc fer servir legalment'. NOT how to download or host on HF (that is huggingface), NOT running it locally (that is ollama), NOT serving at throughput (that is vllm), NOT fine-tuning it (that is finetuning) — this layer only tells you WHICH model and whether the license permits it, then hands off."
3
+ description: "Use when choosing an open-weight LLM and clearing it for use — which family and size fit the task, the hardware and the budget, and above all whether the license permits shipping. Owns the license-class map (OSI-open versus custom-community versus non-commercial), the always-verify-the-model-card rule, size-to-VRAM budgeting and the quant formats. This layer decides WHICH model and whether the license allows it, then hands off. NOT downloading or hosting on the Hub (that is `huggingface`), NOT running it locally (that is `ollama`), NOT serving at throughput (that is `vllm`), NOT fine-tuning it (that is `finetuning`)."
4
4
  tags: [open-weights, open-source-llm, model-selection, model-licenses, llama-qwen-mistral-gemma]
5
5
  recommends: [huggingface, ollama, finetuning, vllm]
6
6
  origin: risco
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: people-ops
3
- description: "Use when the offer is signed and you now run the person — building an onboarding plan (preboarding → Day 1 → 30/60/90 ramp), drafting or auditing an internal policy or employee-handbook section (PTO, remote/hybrid, conduct, leave, expenses), standing up the recurring people rhythm (weekly 1:1s, review/goal cycle, headcount), or offboarding a leaver. Triggers: 'build an onboarding plan with a 30/60/90', 'draft a remote-work policy', 'the offer's signed, now what do I need ready before day one?', 'this handbook reads like a contract', 'set up our 1:1 and review cadence', 'someone's leaving — offboarding checklist', 'what HR do we even need?', 'plan de onboarding para el nuevo fichaje', 'redacta la política de teletreball'. NOT sourcing/interviewing/the offer itself (that is hiring)."
3
+ description: "Use when the offer is signed and you now have to run the person — an onboarding plan from preboarding through the 30/60/90 ramp, drafting or auditing an internal policy or handbook section, standing up the recurring people rhythm (1:1s, review and goal cycles, headcount), or offboarding a leaver. NOT sourcing, interviewing or the offer itself (that is `hiring`)."
4
4
  tags: [people-ops, hr, onboarding, employee-handbook, policy, offboarding, one-on-ones, retention]
5
5
  recommends: [hiring, contracts, gdpr-privacy, sop-builder, project-ops, e-signature]
6
6
  origin: risco
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: phoenix
3
- description: "Use when building an Elixir web app with Phoenix — contexts, Ecto schemas/changesets/migrations, LiveView, channels, generators and Phoenix-flavored tests — or wiring up the boundary between domain logic and the web layer. Triggers: 'mix phx.new', 'phx.gen.live', 'phx.gen.auth', 'build a LiveView CRUD', 'Ecto changeset', 'Phoenix channel / PubSub', 'how do I structure a context', non-obvious 'my LiveView re-renders the whole list every time one row is added', 'every post fires a separate query for its author' (N+1), Catalan 'crea un context Comandes i un LiveView per gestionar-les amb acces per usuari', Spanish 'autenticacion sin contrasena con phx.gen.auth / como separo el contexto del controlador'. NOT pure OTP — GenServers, supervision trees, releases with no web/Ecto layer (that is elixir)."
3
+ description: "Use when building an Elixir web app with Phoenix — contexts, Ecto schemas, changesets and migrations, LiveView, channels and PubSub, the generators, and the boundary between domain logic and the web layer. Covers the classic LiveView over-rendering and Ecto N+1 traps. NOT pure OTP work with no web or Ecto layer — GenServers, supervision trees, releases (that is `elixir`)."
4
4
  tags: [phoenix, elixir, liveview, ecto, channels, contexts, web, beam]
5
5
  recommends: [elixir, postgresdb, docker]
6
6
  origin: risco
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: php
3
- description: "Use when writing, reviewing, or modernizing PHP (8.3/8.4/8.5) beyond Laravel - strict types, union/intersection types, readonly classes, backed enums, PHP 8.4 property hooks and asymmetric visibility, PHP 8.5 pipe operator and clone-with, Composer + PSR-4 autoloading, PER-CS style, PSR-3/7/11/15 interop, and the quality toolchain (PHPStan max, Pint/PHP-CS-Fixer, Rector, PHPUnit 12 / Pest 4). Triggers: \"write a PHP value object\", \"set up composer.json with PSR-4\", \"convert getters to property hooks\", \"is this idiomatic modern PHP or 2015 code\", \"configura PHPStan a nivel max\", editing .php / composer.json / phpstan.neon. NOT Eloquent/Blade/Artisan (that is laravel)."
3
+ description: "Use when writing, reviewing or modernizing PHP (8.3-8.5) outside Laravel — strict types, union and intersection types, readonly classes, backed enums, property hooks and asymmetric visibility, the pipe operator and clone-with, Composer with PSR-4, PER-CS style, PSR interop, and the quality toolchain (PHPStan, Pint, Rector, PHPUnit/Pest). NOT Eloquent, Blade or Artisan (that is `laravel`)."
4
4
  tags: [php, php8, composer, psr, enums, types, static-analysis]
5
5
  recommends: [laravel, secure-coding, mysql]
6
6
  origin: risco
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: pitch-deck
3
- description: "Use when building or fixing an investor fundraising deck — the narrative arc, the slide-by-slide story, and the small set of numbers that actually move an investment decision, for a pre-seed, seed, or Series A raise (and the close cousin, a YC/accelerator application deck). Decides WHAT goes on each slide, in what order, and with which metric; sequences the story the way a VC evaluates risk (problem → solution → why-now → market → traction → team → ask). Triggers: 'build our seed pitch deck', 'what slides do I need to raise pre-seed', 'write the traction slide and the ask slide', 'investors lose interest after slide 3', 'tighten the fundraising story before demo day', 'monta el pitch deck para inversores', 'prepara la ronda seed', 'el deck per a la presentació a inversors'. NOT rendering/exporting/theming the slides into a designed PDF or PPTX (that is presentations), NOT the projection spreadsheet behind the numbers (that is financial-model)."
3
+ description: "Use when building or fixing an investor fundraising deck — the narrative arc, the slide-by-slide story, and the few numbers that actually move an investment decision, for a pre-seed, seed or Series A raise (or an accelerator application deck). Decides what goes on each slide, in what order, with which metric, sequenced the way an investor evaluates risk. NOT rendering, theming or exporting the slides into a designed PDF or PPTX (that is `presentations`), NOT the projection spreadsheet behind the numbers (that is `financial-model`)."
4
4
  tags: [pitch-deck, fundraising, investor-deck, startup]
5
5
  recommends: [presentations, financial-model, investor-materials, unit-economics, fundraising, marketing]
6
6
  origin: risco
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: podcast
3
- description: "Use when planning, recording, editing, or publishing one podcast episode end to end — the run-of-show and guest brief, recording settings (double-ender, 48 kHz WAV multitrack), the loudness master, the Podcasting 2.0 sidecars (chapters.json, transcript.vtt), the RSS <item>, and timestamped SEO show notes. Use when audio sounds quiet on Spotify but loud on Apple, a feed is rejected for bad artwork, or chapters and transcripts will not show in the app. Triggers: 'plan the run-of-show for a 40-minute interview', 'what LUFS for Apple and Spotify', 'master once to -16 LUFS', 'wire the transcript tag', 'valid RSS item with chapters and transcript for episode 14', 'generate a chapters.json from the double-ender locals', 'write timestamped SEO show notes', 'masteritzar l'àudio del podcast', 'escribe las show notes con timestamps'. NOT clipping the episode into social posts (that is social-publisher) and NOT cutting the vertical short (that is video-shorts)."
3
+ description: "Use when planning, recording, editing or publishing one podcast episode end to end — the run-of-show and guest brief, recording settings, the loudness master, the Podcasting 2.0 sidecars for chapters and transcripts, the RSS item, and timestamped SEO show notes. Covers audio that is quiet on one platform and loud on another, feeds rejected for bad artwork, and chapters that will not appear in the app. NOT clipping the episode into social posts (that is `social-publisher`), NOT cutting the vertical short (that is `video-shorts`)."
4
4
  tags: [podcast, audio, rss, show-notes, podcasting-2.0]
5
5
  recommends: [social-publisher, video-shorts, newsletter, brand-voice, content-engine]
6
6
  origin: risco
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: press-kit
3
- description: "Use when writing a press release or assembling a media kit a journalist can lift — launches, funding rounds, exec hires, partnerships, milestones, awards, or building an online newsroom; symptoms include 'reads like an ad', no pickup, a buried lede, no quotable line, or a missing dateline/boilerplate/asset. Triggers: 'write a press release', 'put together a press kit / media kit', 'write our boilerplate', 'draft a fact sheet', 'set an embargo on this announcement', the non-obvious 'our release got no coverage / journalists ignored it' and 'make this announcement quotable', and 'redacta una nota de prensa' / 'munta un dossier de premsa per als periodistes'. NOT finding the reporter list to send to (that is lead-gen), NOT the multi-touch pitch cadence (that is cold-outreach), NOT the brand tone-of-voice spec (that is brand-voice), and NOT the owned launch campaign (that is marketing)."
3
+ description: "Use when writing a press release or assembling a media kit a journalist can lift from — launches, funding, exec hires, partnerships, milestones, awards, or an online newsroom. Symptoms include a release that reads like an ad, a buried lede, no quotable line, or a missing dateline, boilerplate or asset. NOT finding the reporter list (that is `lead-gen`), NOT the multi-touch pitch cadence (that is `cold-outreach`), NOT the brand tone-of-voice spec (that is `brand-voice`), NOT the owned launch campaign (that is `marketing`)."
4
4
  tags: [press-release, media-kit, pr, public-relations, boilerplate, embargo, newsroom, journalist-outreach]
5
5
  recommends: [cold-outreach, lead-gen, brand-voice, brand-identity, case-studies, article-writing, marketing, social-publisher, email-connector]
6
6
  origin: risco
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: pricing
3
- description: "Use when setting or resetting what a product or service charges and how it is packaged — choosing list price, margin floor, tiers, value metric, pricing model (flat/seat/usage/outcome/hybrid) and discount rules. Triggers: 'what should I charge', 'cómo pongo precio a esto', 'quin preu poso', 'design my pricing tiers', 'good better best packaging', 'we keep discounting away our margin', 'reprice because our AI compute costs jumped', 'localize price for other countries (PPP)', 'per-seat pricing is killing us', 'set a discount floor'. NOT issuing the actual bill (that is invoicing) and NOT implementing prices in a billing system (that is stripe)."
3
+ description: "Use when setting or resetting what a product or service charges and how it is packaged — list price, margin floor, tiers, the value metric, the pricing model (flat, seat, usage, outcome or hybrid), discount rules and purchasing-power localisation. NOT issuing the actual bill (that is `invoicing`), NOT implementing prices in a billing system (that is `stripe`)."
4
4
  tags: [pricing, packaging, margin, tiers, discounting, value-metric, willingness-to-pay, ppp]
5
5
  recommends: [invoicing, stripe, unit-economics, proposals, forecasting, sales-pipeline]
6
6
  origin: risco