[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71HDQTAS69BRAHV1YAJKY2C":3,"skill-same:01M71HDQTAS69BRAHV1YAJKY2C":73},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":38,"linkOnly":39,"markdownContent":40,"markdownBody":41,"frontMatter":42,"refName":46,"commitSha":47,"skillDirectory":48,"forksCount":49,"repositoryHtmlUrl":50,"repositoryHomepageUrl":6,"ownerHtmlUrl":51,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":52,"install":53,"resources":66},"01M71HDQTAS69BRAHV1YAJKY2C","using-runes",null,"Use the runes memory tools (`rune_*`) to persist and recall durable knowledge about this project across sessions. Triggers: any time the user references past work, the agent makes a decision, the user corrects the agent, the agent learns a convention, or a new project rule is established. Use on-demand — do not auto-inject every turn. Use `rune_context` to recall, `rune_save` to record, `rune_search` to find by keyword. Do not save secrets, in-progress debug noise, or file content (read the file instead).","runecraftai\u002Farcanum","runecraftai","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F279098826?v=4","01M71HBGS1RCAJ490RAYST7M00","01M71HBGT1CB94MNS6T6SGAZKW",1,"CC-BY-4.0","https:\u002F\u002Fgithub.com\u002Frunecraftai\u002Farcanum\u002Fblob\u002Fmain\u002Fpackages\u002Frunes\u002Fskills\u002Fusing-runes\u002FSKILL.md",[],[18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37],"using runes","knowledge","work","references","record","across","file","debug","use","auto","new","memory tools","triggers","sessions","decision","search","time","project","memory","do","2026-11-10 10:12:30",false,"---\nname: using-runes\ndescription: >\n  Use the runes memory tools (`rune_*`) to persist and recall durable knowledge about this project\n  across sessions. Triggers: any time the user references past work, the agent makes a decision,\n  the user corrects the agent, the agent learns a convention, or a new project rule is established.\n  Use on-demand — do not auto-inject every turn. Use `rune_context` to recall, `rune_save` to record,\n  `rune_search` to find by keyword. Do not save secrets, in-progress debug noise, or file content\n  (read the file instead).\nlicense: CC-BY-4.0\nmetadata:\n  version: 1.0.0\n---\n\n# using-runes\n\nAlways-on. The agent should consult and update the project's memory at well-defined moments. Memory is per-repo, scoped by `git remote.origin.url` (or path fallback), and persists across sessions.\n\n## Session start — read context\n\nWhen a new task begins in a known project, call `rune_context` (no query) to load:\n\n- The 10 most recent memories (so the agent knows what has been decided\u002Flearned lately).\n- The active session (if any) — link new memories to it via `session_id`.\n\nIf the user references past work, the prior session's outcome, or a specific decision, call `rune_context` with a focused `query` (e.g., the keyword) to surface the relevant memories. Prefer `rune_context(query=...)` over `rune_search` for recall — it already orders by importance and excludes soft-deleted rows.\n\n## Subagents — don't duplicate memory\n\nIf you are an isolated subagent spawned for a single task (Rogue, Cleric, Paladin, Ranger, etc. under Guild fan-out), do **not** call `rune_save` unless the orchestrating agent explicitly asked you to. You cannot see what the parent agent or sibling subagents already saved this session — writing independently would create duplicate memories.\n\n## When to save\n\nSave a memory with `rune_save` whenever one of the following happens and the knowledge would otherwise need to be re-explained next session:\n\n- **decision** — the user and the agent agree on a course of action (\"let's use DDD\", \"we'll deploy via Kamal\").\n- **correction** — the user corrects the agent's behavior (\"no, we don't use `any` here\", \"this is a monorepo, don't `cd` into subdirs\").\n- **convention** — a project convention becomes clear (\"tests live next to the code\", \"use bun, not npm\").\n- **config value** — a non-obvious config the agent should remember (\"`PORT` defaults to 4096\", \"`RUNES_DATA_DIR` overrides the default\").\n- **naming** — naming rules (\"components are PascalCase, hooks are `useFoo`\", \"db tables are snake_case\").\n- **architecture** — an architectural note that isn't obvious from the file tree (\"the API gateway terminates mTLS, internal calls are plaintext\").\n- **constraint** — a hard constraint (\"Postgres is read-replica-only in this env\", \"no network calls in tests\").\n- **learning** — a non-obvious lesson learned the hard way (\"the `apply.sh` script must run from the repo root or it silently no-ops\").\n\nEach save needs a `title` (one line, ≤200 chars) and a `what` (the durable knowledge, ≤4000 chars). Use `why` for rationale, `where_ref` for the relevant file\u002Fdir, `learned` for corrections and lessons.\n\n## When NOT to save\n\n- **Secrets** — never save tokens, API keys, passwords, PII, or anything marked confidential. The skill is a soft guard; the README is the explicit warning.\n- **One-off trivia** — anything that won't matter next session.\n- **In-progress debug noise** — stack traces, scratch values, half-formed hypotheses. Save a `learning` only after the issue is resolved and the rule is clear.\n- **File content** — read the file with the host's tools. The memory is for *meta* about the project, not its source.\n- **Easily re-derivable facts** — package names, current versions of deps, public API shapes. Read the file.\n\n## Curation\n\n`rune_save` automatically enforces a per-category cap (`category_cap`, default 10). When a category exceeds the cap, the response includes a `compaction` field with the overflow candidates. Two-step response:\n\n1. **If the candidates are related** — write one summary memory (`rune_save`) covering their combined knowledge, using a higher importance score, then `rune_delete` the originals.\n2. **If the candidates are not related or not worth keeping** — `rune_delete` them individually.\n\nIf you don't act in time, a hard cap (`category_cap * 2`) triggers automatic pruning — `compaction.pruned_count > 0` means data was dropped uncurated. Recoverable via `runes doctor --purge` is the only path to hard-delete.\n\n- **Importance 1–10.** Default 5. Use 8–10 for hard rules, 3–4 for soft preferences, 1–2 for trivial facts.\n- **Soft delete > hard delete.** Always use `rune_delete` (soft). `runes doctor --purge` is the only path to hard-delete.\n\n## Categories — when to use which\n\n| Category        | One-line meaning                                                       |\n| --------------- | ---------------------------------------------------------------------- |\n| `decisions`     | \"We chose X because Y\" — architectural or process decisions.          |\n| `corrections`   | \"Don't do X; do Y instead\" — corrections of the agent's behavior.       |\n| `project_rules` | Standing rules of the project that apply broadly.                      |\n| `architecture`  | Structural \u002F layering notes that aren't obvious from the file tree.    |\n| `constraints`   | Hard constraints the agent must respect (env, policy, perf budgets).   |\n| `config_values` | Non-obvious config values and their effects.                           |\n| `naming`        | Naming conventions and how to apply them.                              |\n| `learnings`     | Lessons learned the hard way — apply to avoid repeating the mistake.   |\n\nIf unsure, prefer `learnings` over `decisions` — corrections are higher signal than choices.\n\n## Quick reference\n\n```text\nrune_context({ query?: \"auth\" })            \u002F\u002F recent + relevant, ordered by importance\nrune_search({ query: \"auth\", category? })   \u002F\u002F raw FTS5 search, ranked\nrune_save({ category, title, what, ... })   \u002F\u002F persist a new memory\nrune_get({ id })                            \u002F\u002F fetch one\nrune_update({ id, ...fields })              \u002F\u002F patch fields\nrune_delete({ id })                         \u002F\u002F soft delete\nrune_session_start({ agent: \"opencode\" })   \u002F\u002F begin a session (idempotent)\nrune_session_end({ session_id, summary? })  \u002F\u002F finish a session\nrune_timeline({ limit? })                   \u002F\u002F list recent sessions\nrune_stats()                                \u002F\u002F per-category counts\n```\n","# using-runes\n\nAlways-on. The agent should consult and update the project's memory at well-defined moments. Memory is per-repo, scoped by `git remote.origin.url` (or path fallback), and persists across sessions.\n\n## Session start — read context\n\nWhen a new task begins in a known project, call `rune_context` (no query) to load:\n\n- The 10 most recent memories (so the agent knows what has been decided\u002Flearned lately).\n- The active session (if any) — link new memories to it via `session_id`.\n\nIf the user references past work, the prior session's outcome, or a specific decision, call `rune_context` with a focused `query` (e.g., the keyword) to surface the relevant memories. Prefer `rune_context(query=...)` over `rune_search` for recall — it already orders by importance and excludes soft-deleted rows.\n\n## Subagents — don't duplicate memory\n\nIf you are an isolated subagent spawned for a single task (Rogue, Cleric, Paladin, Ranger, etc. under Guild fan-out), do **not** call `rune_save` unless the orchestrating agent explicitly asked you to. You cannot see what the parent agent or sibling subagents already saved this session — writing independently would create duplicate memories.\n\n## When to save\n\nSave a memory with `rune_save` whenever one of the following happens and the knowledge would otherwise need to be re-explained next session:\n\n- **decision** — the user and the agent agree on a course of action (\"let's use DDD\", \"we'll deploy via Kamal\").\n- **correction** — the user corrects the agent's behavior (\"no, we don't use `any` here\", \"this is a monorepo, don't `cd` into subdirs\").\n- **convention** — a project convention becomes clear (\"tests live next to the code\", \"use bun, not npm\").\n- **config value** — a non-obvious config the agent should remember (\"`PORT` defaults to 4096\", \"`RUNES_DATA_DIR` overrides the default\").\n- **naming** — naming rules (\"components are PascalCase, hooks are `useFoo`\", \"db tables are snake_case\").\n- **architecture** — an architectural note that isn't obvious from the file tree (\"the API gateway terminates mTLS, internal calls are plaintext\").\n- **constraint** — a hard constraint (\"Postgres is read-replica-only in this env\", \"no network calls in tests\").\n- **learning** — a non-obvious lesson learned the hard way (\"the `apply.sh` script must run from the repo root or it silently no-ops\").\n\nEach save needs a `title` (one line, ≤200 chars) and a `what` (the durable knowledge, ≤4000 chars). Use `why` for rationale, `where_ref` for the relevant file\u002Fdir, `learned` for corrections and lessons.\n\n## When NOT to save\n\n- **Secrets** — never save tokens, API keys, passwords, PII, or anything marked confidential. The skill is a soft guard; the README is the explicit warning.\n- **One-off trivia** — anything that won't matter next session.\n- **In-progress debug noise** — stack traces, scratch values, half-formed hypotheses. Save a `learning` only after the issue is resolved and the rule is clear.\n- **File content** — read the file with the host's tools. The memory is for *meta* about the project, not its source.\n- **Easily re-derivable facts** — package names, current versions of deps, public API shapes. Read the file.\n\n## Curation\n\n`rune_save` automatically enforces a per-category cap (`category_cap`, default 10). When a category exceeds the cap, the response includes a `compaction` field with the overflow candidates. Two-step response:\n\n1. **If the candidates are related** — write one summary memory (`rune_save`) covering their combined knowledge, using a higher importance score, then `rune_delete` the originals.\n2. **If the candidates are not related or not worth keeping** — `rune_delete` them individually.\n\nIf you don't act in time, a hard cap (`category_cap * 2`) triggers automatic pruning — `compaction.pruned_count > 0` means data was dropped uncurated. Recoverable via `runes doctor --purge` is the only path to hard-delete.\n\n- **Importance 1–10.** Default 5. Use 8–10 for hard rules, 3–4 for soft preferences, 1–2 for trivial facts.\n- **Soft delete > hard delete.** Always use `rune_delete` (soft). `runes doctor --purge` is the only path to hard-delete.\n\n## Categories — when to use which\n\n| Category        | One-line meaning                                                       |\n| --------------- | ---------------------------------------------------------------------- |\n| `decisions`     | \"We chose X because Y\" — architectural or process decisions.          |\n| `corrections`   | \"Don't do X; do Y instead\" — corrections of the agent's behavior.       |\n| `project_rules` | Standing rules of the project that apply broadly.                      |\n| `architecture`  | Structural \u002F layering notes that aren't obvious from the file tree.    |\n| `constraints`   | Hard constraints the agent must respect (env, policy, perf budgets).   |\n| `config_values` | Non-obvious config values and their effects.                           |\n| `naming`        | Naming conventions and how to apply them.                              |\n| `learnings`     | Lessons learned the hard way — apply to avoid repeating the mistake.   |\n\nIf unsure, prefer `learnings` over `decisions` — corrections are higher signal than choices.\n\n## Quick reference\n\n```text\nrune_context({ query?: \"auth\" })            \u002F\u002F recent + relevant, ordered by importance\nrune_search({ query: \"auth\", category? })   \u002F\u002F raw FTS5 search, ranked\nrune_save({ category, title, what, ... })   \u002F\u002F persist a new memory\nrune_get({ id })                            \u002F\u002F fetch one\nrune_update({ id, ...fields })              \u002F\u002F patch fields\nrune_delete({ id })                         \u002F\u002F soft delete\nrune_session_start({ agent: \"opencode\" })   \u002F\u002F begin a session (idempotent)\nrune_session_end({ session_id, summary? })  \u002F\u002F finish a session\nrune_timeline({ limit? })                   \u002F\u002F list recent sessions\nrune_stats()                                \u002F\u002F per-category counts\n```\n",{"name":5,"license":14,"metadata":43,"description":45},{"version":44},"1.0.0","Use the runes memory tools (`rune_*`) to persist and recall durable knowledge about this project across sessions. Triggers: any time the user references past work, the agent makes a decision, the user corrects the agent, the agent learns a convention, or a new project rule is established. Use on-demand — do not auto-inject every turn. Use `rune_context` to recall, `rune_save` to record, `rune_search` to find by keyword. Do not save secrets, in-progress debug noise, or file content (read the file instead).\n","main","33b040feb49e126600394272a8e321a3cd279e8b","packages\u002Frunes\u002Fskills\u002Fusing-runes",0,"https:\u002F\u002Fgithub.com\u002Frunecraftai\u002Farcanum","https:\u002F\u002Fgithub.com\u002Frunecraftai","2026-07-29 22:08:52",{"source":8,"skillName":5,"commands":54,"prompt":64,"zipAvailable":65},[55,58,61],{"tool":56,"command":57},"npx","npx skills add runecraftai\u002Farcanum --skill using-runes",{"tool":59,"command":60},"bunx","bunx skills add runecraftai\u002Farcanum --skill using-runes",{"tool":62,"command":63},"pnpm","pnpm dlx skills add runecraftai\u002Farcanum --skill using-runes","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Frunecraftai\u002Farcanum\u002Fblob\u002Fmain\u002Fpackages\u002Frunes\u002Fskills\u002Fusing-runes\u002FSKILL.md",true,[67],{"path":68,"resourceType":69,"resourceTypeDesc":70,"sizeBytes":71,"sourceHtmlUrl":72},".skill-meta.json","REFERENCE","参考文档",417,"https:\u002F\u002Fgithub.com\u002Frunecraftai\u002Farcanum\u002Fblob\u002Fmain\u002Fpackages\u002Frunes\u002Fskills\u002Fusing-runes\u002F.skill-meta.json",[74,105,126,152,171,195],{"skillNo":75,"name":76,"nameZh":6,"description":77,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":78,"categories":79,"keywords":85,"publishedAt":38},"01M71HGTN9FRQ3WEZMVVX7C3VZ","using-agent-skills","Discovers and invokes the right @runecraft\u002Fspells skill for the current task. Use when starting a session, when a request is ambiguous about which workflow to apply, or when you need to pick among the 13-skill Arcanum catalog. EN triggers: \u002Fskill, which skill, pick a skill, what skill should I use, skill discovery, meta skill. PT triggers: qual skill, qual habilidade, descobrir skill, qual fluxo usar. Do NOT use for: actual implementation work (route to the specific skill instead), unrelated standalone tasks outside the Arcanum catalog, or runtime-specific configuration (e.g., opencode.json \u002F Claude Code plugin paths).","https:\u002F\u002Fgithub.com\u002Frunecraftai\u002Farcanum\u002Fblob\u002Fmain\u002Fpackages\u002Fspells\u002Fskills\u002Fusing-agent-skills\u002FSKILL.md",[80],{"categoryNo":81,"categoryName":82,"taxonomyType":83,"taxonomyTypeDesc":84},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[86,87,88,89,90,91,92,93,94,95,96,97,98,20,99,100,101,102,103,104],"using agent skills","standalone","which","pt","pick","Meta","when","workflow","you","code","tasks","skill discovery","route","unrelated","opencode","request","paths","a skill","ambiguous",{"skillNo":106,"name":107,"nameZh":6,"description":108,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":109,"categories":110,"keywords":111,"publishedAt":38},"01M71HGPD6N9JH2G8EVBXJR77X","typescript-patterns","TypeScript best practices and patterns for type-safe, maintainable code. Covers discriminated unions, generics, const assertions, type narrowing, and common anti-patterns. Extends (does not override) project tsconfig. EN triggers: \u002Ftypescript, TypeScript patterns, TS best practices, type safety, discriminated unions, generics, type narrowing. PT triggers: \u002Ftypescript, padrões TypeScript, boas práticas TS, segurança de tipos, unions discriminadas, genéricos. Do NOT use for: JavaScript-only projects, runtime performance, or replacing project tsconfig rules.","https:\u002F\u002Fgithub.com\u002Frunecraftai\u002Farcanum\u002Fblob\u002Fmain\u002Fpackages\u002Fspells\u002Fskills\u002Ftypescript-patterns\u002FSKILL.md",[],[112,113,114,37,115,116,89,117,35,118,119,120,30,121,26,122,123,124,95,125],"typescript","patterns","typescript patterns","projects","for","runtime","performance","en","maintainable code","only","assertions","Rules","best practices","common",{"skillNo":127,"name":128,"nameZh":6,"description":129,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":130,"categories":131,"keywords":138,"publishedAt":38},"01M71HGJAKX4TFN0PECYPJ9S38","test-driven-development","Drives development with tests — fail first, then make them pass, then refactor. Use when implementing any logic, fixing any bug, or changing any behavior. EN triggers: \u002Ftest, write tests first, TDD, prove it, 80\u002F15\u002F5 pyramid, Beyonce Rule. PT triggers: \u002Fteste, testes primeiro, provar com teste, pirâmide 80\u002F15\u002F5. Do NOT use for: production incident triage (use \u002Fdebug), or cosmetic-only changes with no behavioral surface.","https:\u002F\u002Fgithub.com\u002Frunecraftai\u002Farcanum\u002Fblob\u002Fmain\u002Fpackages\u002Fspells\u002Fskills\u002Ftest-driven-development\u002FSKILL.md",[132,135],{"categoryNo":133,"categoryName":134,"taxonomyType":83,"taxonomyTypeDesc":84},"01JBSEEDCAT000000000000007","代码审查",{"categoryNo":136,"categoryName":137,"taxonomyType":83,"taxonomyTypeDesc":84},"01JBSEEDCAT000000000000008","测试与质量",[139,140,141,142,89,143,144,145,121,92,146,147,148,149,150,37,116,119,30,151],"test driven development","development","test","driven","incident","implementing","write tests","write","bug","refactor","behavioral","make","tests",{"skillNo":153,"name":154,"nameZh":6,"description":155,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":156,"categories":157,"keywords":158,"publishedAt":38},"01M71HGC1H4JQFJWH613XTJC59","spec-driven","Feature planning and implementation with 4 adaptive phases — Specify, Design, Tasks, Execute. Auto-sizes depth by complexity. Creates atomic tasks with verification criteria, atomic git commits, and requirement traceability. Features an independent Verifier (author != verifier, evidence-or-zero), persistent decision log (STATE.md), and test-coverage-matrix-driven tests, plus a self-improving lessons layer that turns verification failures into reusable project-local guidance. Stack-agnostic. Use when planning features (requirements, design, task breakdown), implementing with verification and atomic commits, or validating\u002Fverifying an implementation against a spec. Triggers (PT\u002FEN): \"specify feature\", \"vamos especificar\", \"discutir feature\", \"discutir este caso\", \"design\", \"design da feature\", \"tarefas\", \"quebrar em tarefas\", \"implementar\", \"build\", \"validar\", \"verify work\", \"UAT\", \"validar implementação\", \"record decision\", \"pause work\", \"pausar trabalho\", \"resume work\", \"retomar trabalho\". Do NOT use for architecture decomposition analysis (use architecture skills) or technical design docs (treat as Complex scope: discuss gray areas + architecture-focused design).","https:\u002F\u002Fgithub.com\u002Frunecraftai\u002Farcanum\u002Fblob\u002Fmain\u002Fpackages\u002Fspells\u002Fskills\u002Fspec-driven\u002FSKILL.md",[],[159,160,142,161,162,163,164,89,35,32,144,165,166,167,27,168,92,169,96,170],"spec driven","spec","coverage","complexity","task breakdown","scope","local","design","self-improving","atomic commits","analysis","architecture",{"skillNo":172,"name":173,"nameZh":6,"description":174,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":175,"categories":176,"keywords":181,"publishedAt":38},"01M71HG5CSP04F29HRAG7XVYKG","skill-forge","Designs, authors, validates, and optimizes new Agent Skills from scratch. Use when creating a new skill, packaging a workflow as a skill, improving a skill's triggering accuracy, or evaluating whether a skill improves output quality. Covers the full lifecycle: DISCOVER, DESIGN, AUTHOR, VALIDATE, OPTIMIZE, DELIVER. Produces skills that follow the open SKILL.md format (YAML frontmatter + Markdown body, progressive disclosure, validation loops). EN triggers: \u002Fforge, create a skill, write a skill, build a skill, new skill, author a skill, package this as a skill, validate a skill, improve skill triggering, optimize skill description, evaluate skill quality. PT triggers: \u002Fforge, criar uma skill, escrever uma skill, construir uma skill, nova skill, empacotar como skill, validar skill, melhorar disparo, otimizar descrição de skill. Do NOT use for: discovering which existing skill to apply (use a dispatch\u002Fmeta skill), planning feature implementation, or designing software architecture.","https:\u002F\u002Fgithub.com\u002Frunecraftai\u002Farcanum\u002Fblob\u002Fmain\u002Fpackages\u002Fspells\u002Fskills\u002Fskill-forge\u002FSKILL.md",[177,180],{"categoryNo":178,"categoryName":179,"taxonomyType":83,"taxonomyTypeDesc":84},"01JBSEEDCAT000000000000015","视觉设计",{"categoryNo":81,"categoryName":82,"taxonomyType":83,"taxonomyTypeDesc":84},[182,183,184,88,185,186,89,187,91,188,189,166,170,190,191,146,192,103,193,194],"forge","skill forge","deliver","new agent","feature implementation","packaging","improve","open","create","de","software","new skill","full",{"skillNo":196,"name":197,"nameZh":6,"description":198,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":199,"categories":200,"keywords":201,"publishedAt":38},"01M71HG1RAQY3GXX0Q5TMW0XD6","shipping-and-launch","Prepares production launches with a pre-launch checklist, staged rollout, monitoring, and a rollback strategy — plus feature flag lifecycle (off → internal → beta → GA). Use when deploying a feature to production for the first time, releasing a significant change, or planning a rollout. EN triggers: \u002Fship, pre-launch checklist, staged rollout, feature flag, rollback plan, monitoring. PT triggers: \u002Fshippar, checklist pré-lançamento, rollout gradual, feature flag, plano de rollback. Do NOT use for: pre-production development work, or one-off internal tools with no user exposure.","https:\u002F\u002Fgithub.com\u002Frunecraftai\u002Farcanum\u002Fblob\u002Fmain\u002Fpackages\u002Fspells\u002Fskills\u002Fshipping-and-launch\u002FSKILL.md",[],[202,203,204,89,34,205,92,206,207,208,209,20,210,211,212,213,191,214,215,216],"shipping and launch","shipping","launch","beta","rollout","rollback plan","monitoring","rollback strategy","plan","change","exposure","plano","ship","Tools","pre-launch"]