[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6N8SXECCB8D2JGHVR70CBXE":3,"skill-same:01M6N8SXECCB8D2JGHVR70CBXE":62},{"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":36,"linkOnly":37,"markdownContent":38,"markdownBody":39,"frontMatter":40,"refName":41,"commitSha":42,"skillDirectory":43,"forksCount":44,"repositoryHtmlUrl":45,"repositoryHomepageUrl":6,"ownerHtmlUrl":46,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":47,"install":48,"resources":61},"01M6N8SXECCB8D2JGHVR70CBXE","bubbles-artifact-ownership-routing",null,"Respect Bubbles artifact ownership boundaries and route foreign-artifact changes through the owning agent. Use when about to modify any spec\u002Fscope\u002Fstate\u002Ftest\u002Fsource\u002Fdocs artifact, when discovering a problem in someone else's artifact, or when handling a stale spec\u002Fdesign\u002Fscope. Covers ownership tables, freshness\u002Fsupersession, and route-required packets.","pkirsanov\u002Fsmackerel","pkirsanov","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F138962?v=4","01M6N8NAPD2KXMVC17X6GJ0WZ5","01M6N8NATQ9SAZ00H9D61R0TPV",1,"MIT","https:\u002F\u002Fgithub.com\u002Fpkirsanov\u002Fsmackerel\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fbubbles-artifact-ownership-routing\u002FSKILL.md",[],[18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35],"artifact","bubbles artifact ownership routing","ownership","routing","test","state","use","stale","route","design","scope","problem","docs","about","tables","source","changes","spec","2026-11-10 10:12:30",false,"---\nname: bubbles-artifact-ownership-routing\ndescription: Respect Bubbles artifact ownership boundaries and route foreign-artifact changes through the owning agent. Use when about to modify any spec\u002Fscope\u002Fstate\u002Ftest\u002Fsource\u002Fdocs artifact, when discovering a problem in someone else's artifact, or when handling a stale spec\u002Fdesign\u002Fscope. Covers ownership tables, freshness\u002Fsupersession, and route-required packets.\n---\n\n# Bubbles Artifact Ownership & Routing\n\n## Goal\nEdit only the artifacts your agent owns. When you find a defect in a foreign-owned artifact, route it instead of patching it inline. Keep ownership boundaries clean so the framework's routing guarantees hold.\n\n## When to use\n- About to edit any file under `specs\u002F`, `tests\u002F`, `src\u002F`, `docs\u002F`, or framework-managed paths\n- About to modify `state.json`, `scopes.md`, `report.md`, `uservalidation.md`, `design.md`, `spec.md`\n- Discovered a bug or staleness in someone else's owned artifact\n- Inheriting work from another specialist via a handoff packet\n\n## Ownership at a glance (consult agent-ownership.yaml for the authoritative table)\n| Artifact | Owner |\n|----------|-------|\n| `specs\u002F\u003CNNN>\u002Fspec.md` | `bubbles.analyst` (creation), `bubbles.clarify` (revision after questions) |\n| `specs\u002F\u003CNNN>\u002Fdesign.md` | `bubbles.design` |\n| `specs\u002F\u003CNNN>\u002Fscopes.md`, `scopes\u002F*\u002Fscope.md` | `bubbles.plan` |\n| `specs\u002F\u003CNNN>\u002Freport.md` | the agent that produced the evidence (commonly `bubbles.implement`, `bubbles.test`) |\n| `specs\u002F\u003CNNN>\u002Fuservalidation.md` | human owner (agents create the checklist; only humans uncheck items) |\n| `specs\u002F\u003CNNN>\u002Fstate.json` execution.* | `bubbles.implement` (claims), `bubbles.test`, `bubbles.audit` |\n| `specs\u002F\u003CNNN>\u002Fstate.json` certification.* | `bubbles.validate` only |\n| Source code, tests, configs | `bubbles.implement`, `bubbles.test`, `bubbles.devops` per scope |\n| Framework-managed `.github\u002Fbubbles\u002F**` | upstream Bubbles only (downstream consumers MUST NOT edit) |\n\n## Cross-artifact mutation rule (NON-NEGOTIABLE)\nIf your scope's owned artifact is, say, `report.md`, you may NOT edit `spec.md` to make a test pass. The flow is:\n1. Detect the gap in the foreign artifact.\n2. Emit a `route_required` finding with `nextRequiredOwner: bubbles.\u003Cowner>`.\n3. Stop. Wait for the orchestrator to dispatch the owner.\n\n## Freshness and supersession\nWhen `spec.md` or `design.md` drift after implementation has already shipped:\n- Do NOT silently rewrite them. That breaks traceability.\n- Open the spec-review handoff: `bubbles.spec-review` decides `STILL_TRUE`, `MINOR_DRIFT`, `MAJOR_DRIFT`, or `OBSOLETE`.\n- For `MAJOR_DRIFT` or `OBSOLETE` on a `done` spec, `bubbles.workflow` auto-dispatches `improve-existing` mode and the spec re-enters in-progress.\n\n## Framework-managed boundary (downstream repos)\nConsumer repos must not edit:\n- `.github\u002Fbubbles\u002F**` (scripts, workflows.yaml, capabilities, ledger)\n- `.github\u002Fagents\u002Fbubbles*` (framework agents)\n- `.github\u002Fprompts\u002Fbubbles*`\n- `.github\u002Fskills\u002Fbubbles-*` (framework-shipped skills)\n- `.github\u002Finstructions\u002Fbubbles-*.instructions.md`\n\nIf a downstream repo needs a framework change, file a project-owned proposal at `.github\u002Fbubbles-project\u002Fproposals\u002F\u003Cslug>.md` or run `bubbles framework-proposal \u003Cslug>`. The actual change lands upstream in the Bubbles source repo.\n\n## Mechanical enforcement\n- `downstream-framework-write-guard.sh` blocks pushes that touch framework-managed paths from a downstream\n- `agent-ownership-lint.sh` catches agents that claim ownership outside their declared surface\n- `artifact-freshness-guard.sh` rejects stale artifacts that are being used as current authority\n\n## Authoritative modules\n- `agents\u002Fbubbles_shared\u002Fartifact-ownership.md` — ownership tables + delegation contract\n- `agents\u002Fbubbles_shared\u002Fartifact-freshness.md` — supersession + spec-review routing\n- `agents\u002Fbubbles_shared\u002Fartifact-lifecycle.md` — feature\u002Fbug artifact lifecycle\n- `agents\u002Fbubbles_shared\u002Fconsumer-trace.md` — renames + removals\n- `bubbles\u002Fagent-ownership.yaml` — machine-readable ownership index\n- `bubbles\u002Fscripts\u002Fdownstream-framework-write-guard.sh` — mechanical guard\n","# Bubbles Artifact Ownership & Routing\n\n## Goal\nEdit only the artifacts your agent owns. When you find a defect in a foreign-owned artifact, route it instead of patching it inline. Keep ownership boundaries clean so the framework's routing guarantees hold.\n\n## When to use\n- About to edit any file under `specs\u002F`, `tests\u002F`, `src\u002F`, `docs\u002F`, or framework-managed paths\n- About to modify `state.json`, `scopes.md`, `report.md`, `uservalidation.md`, `design.md`, `spec.md`\n- Discovered a bug or staleness in someone else's owned artifact\n- Inheriting work from another specialist via a handoff packet\n\n## Ownership at a glance (consult agent-ownership.yaml for the authoritative table)\n| Artifact | Owner |\n|----------|-------|\n| `specs\u002F\u003CNNN>\u002Fspec.md` | `bubbles.analyst` (creation), `bubbles.clarify` (revision after questions) |\n| `specs\u002F\u003CNNN>\u002Fdesign.md` | `bubbles.design` |\n| `specs\u002F\u003CNNN>\u002Fscopes.md`, `scopes\u002F*\u002Fscope.md` | `bubbles.plan` |\n| `specs\u002F\u003CNNN>\u002Freport.md` | the agent that produced the evidence (commonly `bubbles.implement`, `bubbles.test`) |\n| `specs\u002F\u003CNNN>\u002Fuservalidation.md` | human owner (agents create the checklist; only humans uncheck items) |\n| `specs\u002F\u003CNNN>\u002Fstate.json` execution.* | `bubbles.implement` (claims), `bubbles.test`, `bubbles.audit` |\n| `specs\u002F\u003CNNN>\u002Fstate.json` certification.* | `bubbles.validate` only |\n| Source code, tests, configs | `bubbles.implement`, `bubbles.test`, `bubbles.devops` per scope |\n| Framework-managed `.github\u002Fbubbles\u002F**` | upstream Bubbles only (downstream consumers MUST NOT edit) |\n\n## Cross-artifact mutation rule (NON-NEGOTIABLE)\nIf your scope's owned artifact is, say, `report.md`, you may NOT edit `spec.md` to make a test pass. The flow is:\n1. Detect the gap in the foreign artifact.\n2. Emit a `route_required` finding with `nextRequiredOwner: bubbles.\u003Cowner>`.\n3. Stop. Wait for the orchestrator to dispatch the owner.\n\n## Freshness and supersession\nWhen `spec.md` or `design.md` drift after implementation has already shipped:\n- Do NOT silently rewrite them. That breaks traceability.\n- Open the spec-review handoff: `bubbles.spec-review` decides `STILL_TRUE`, `MINOR_DRIFT`, `MAJOR_DRIFT`, or `OBSOLETE`.\n- For `MAJOR_DRIFT` or `OBSOLETE` on a `done` spec, `bubbles.workflow` auto-dispatches `improve-existing` mode and the spec re-enters in-progress.\n\n## Framework-managed boundary (downstream repos)\nConsumer repos must not edit:\n- `.github\u002Fbubbles\u002F**` (scripts, workflows.yaml, capabilities, ledger)\n- `.github\u002Fagents\u002Fbubbles*` (framework agents)\n- `.github\u002Fprompts\u002Fbubbles*`\n- `.github\u002Fskills\u002Fbubbles-*` (framework-shipped skills)\n- `.github\u002Finstructions\u002Fbubbles-*.instructions.md`\n\nIf a downstream repo needs a framework change, file a project-owned proposal at `.github\u002Fbubbles-project\u002Fproposals\u002F\u003Cslug>.md` or run `bubbles framework-proposal \u003Cslug>`. The actual change lands upstream in the Bubbles source repo.\n\n## Mechanical enforcement\n- `downstream-framework-write-guard.sh` blocks pushes that touch framework-managed paths from a downstream\n- `agent-ownership-lint.sh` catches agents that claim ownership outside their declared surface\n- `artifact-freshness-guard.sh` rejects stale artifacts that are being used as current authority\n\n## Authoritative modules\n- `agents\u002Fbubbles_shared\u002Fartifact-ownership.md` — ownership tables + delegation contract\n- `agents\u002Fbubbles_shared\u002Fartifact-freshness.md` — supersession + spec-review routing\n- `agents\u002Fbubbles_shared\u002Fartifact-lifecycle.md` — feature\u002Fbug artifact lifecycle\n- `agents\u002Fbubbles_shared\u002Fconsumer-trace.md` — renames + removals\n- `bubbles\u002Fagent-ownership.yaml` — machine-readable ownership index\n- `bubbles\u002Fscripts\u002Fdownstream-framework-write-guard.sh` — mechanical guard\n",{"name":5,"description":7},"main","ed893cc338281a0bb9bb9ecf3415716cb242bb3f",".claude\u002Fskills\u002Fbubbles-artifact-ownership-routing",0,"https:\u002F\u002Fgithub.com\u002Fpkirsanov\u002Fsmackerel","https:\u002F\u002Fgithub.com\u002Fpkirsanov","2026-11-07 02:54:37",{"source":8,"skillName":5,"commands":49,"prompt":59,"zipAvailable":60},[50,53,56],{"tool":51,"command":52},"npx","npx skills add pkirsanov\u002Fsmackerel --skill bubbles-artifact-ownership-routing",{"tool":54,"command":55},"bunx","bunx skills add pkirsanov\u002Fsmackerel --skill bubbles-artifact-ownership-routing",{"tool":57,"command":58},"pnpm","pnpm dlx skills add pkirsanov\u002Fsmackerel --skill bubbles-artifact-ownership-routing","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fpkirsanov\u002Fsmackerel\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fbubbles-artifact-ownership-routing\u002FSKILL.md",true,[],[63,94,122,149,170,197],{"skillNo":64,"name":65,"nameZh":6,"description":66,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":67,"categories":68,"keywords":74,"publishedAt":36},"01M6N9V5TBHQT20V5SCCJ1VRBC","smackerel-trace-capture","Wire Smackerel's concrete validate-plane stack into the framework trace-driven defect-discovery method. Use when running live-category tests (integration\u002Fe2e\u002Fe2e-ui\u002Fstress) against the ephemeral test stack; capturing SLO or trace evidence; hunting latency\u002Ferror\u002Fperf bugs from spans; querying the test-stack Jaeger or Prometheus; or touching `.specify\u002Fruntime\u002Fobservability`. Concrete smackerel endpoints + the exact `capture-slo.sh` command; do NOT duplicate `bubbles-observability-adapter` — this only adds the wiring.","https:\u002F\u002Fgithub.com\u002Fpkirsanov\u002Fsmackerel\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fsmackerel-trace-capture\u002FSKILL.md",[69],{"categoryNo":70,"categoryName":71,"taxonomyType":72,"taxonomyTypeDesc":73},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",[75,76,77,78,79,80,81,82,83,24,84,85,86,87,88,89,90,91,92,93],"trace","capture","smackerel trace capture","perf","observability","prometheus","specify","e2e","discovery","slo","only","evidence","do","latency","runtime","tests","adapter","error","bugs",{"skillNo":95,"name":96,"nameZh":6,"description":97,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":98,"categories":99,"keywords":103,"publishedAt":36},"01M6N9TZDEV26RZ7W34HEFPQE9","smackerel-no-defaults","Enforce Smackerel's NO-DEFAULTS \u002F fail-loud SST policy. Use when editing config, Docker Compose, deploy adapters, docs, instructions, skills, env handling, host bind addresses, or any runtime value that could be hidden by fallback syntax.","https:\u002F\u002Fgithub.com\u002Fpkirsanov\u002Fsmackerel\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fsmackerel-no-defaults\u002FSKILL.md",[100],{"categoryNo":101,"categoryName":102,"taxonomyType":72,"taxonomyTypeDesc":73},"01JBSEEDCAT000000000000011","运维与部署",[104,105,106,107,108,109,110,111,112,24,113,114,89,115,116,117,118,119,120,121],"smackerel no defaults","docker","policy","config","deploy","docker compose","syntax","editing","instructions","compose","enforce","bind","env","host","Adapters","sst","addresses","value",{"skillNo":123,"name":124,"nameZh":6,"description":125,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":126,"categories":127,"keywords":131,"publishedAt":36},"01M6N9TJRS5PF83JH2W4614D4W","bubbles-workflow-mode-resolution","Resolve a Bubbles workflow mode against `bubbles\u002Fworkflows.yaml`, including template inheritance, status ceilings, gate wiring, and decision policy. Use when picking a mode for a request, when a guard reports a mode-related failure, or when extending workflows.yaml with a new mode or template. Covers natural-language intent routing and the workflow registry consistency rules.","https:\u002F\u002Fgithub.com\u002Fpkirsanov\u002Fsmackerel\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fbubbles-workflow-mode-resolution\u002FSKILL.md",[128],{"categoryNo":129,"categoryName":130,"taxonomyType":72,"taxonomyTypeDesc":73},"01JBSEEDCAT000000000000023","Skill与智能体开发",[132,133,134,135,106,136,21,137,138,139,140,24,141,142,143,144,145,146,147,148],"workflow","resolution","mode","bubbles workflow mode resolution","workflows","guard","template","decision","Rules","reports","intent","inheritance","with","consistency","natural-language","for","wiring",{"skillNo":150,"name":151,"nameZh":6,"description":152,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":153,"categories":154,"keywords":156,"publishedAt":36},"01M6N9TC98D6DJR0D64SSN0SN3","bubbles-workflow-execution-loops","Run per-round synchronous workflow execution loops correctly. Use when orchestrating a multi-round workflow, dispatching specialist subagents, handling round-based remediation, or interpreting a workflow mode's execution policy. Covers authorized direct execution, dispatch-and-wait, batch-then-summarize prohibition, and mapped-mode execution.","https:\u002F\u002Fgithub.com\u002Fpkirsanov\u002Fsmackerel\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fbubbles-workflow-execution-loops\u002FSKILL.md",[155],{"categoryNo":129,"categoryName":130,"taxonomyType":72,"taxonomyTypeDesc":73},[132,157,158,159,160,106,161,162,163,164,165,24,166,167,168,169,134],"execution","loops","bubbles workflow execution loops","summarize","run","batch","remediation","direct","subagents","dispatch","wait","multi","multi-round",{"skillNo":171,"name":172,"nameZh":6,"description":173,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":174,"categories":175,"keywords":180,"publishedAt":36},"01M6N9SYXQNJDQ1T1YT81JH2BG","bubbles-vscode-agent-constraints","Design agents that fit the VS Code Copilot Chat runtime instead of fighting it. Use when authoring or editing any `*.agent.md`; when adding `tools:`, `agents:`, `handoffs:`, `model:`, `user-invocable:`, or `disable-model-invocation:` frontmatter; when designing an orchestrator that dispatches specialists; when a design implies agent-calls-agent-calls-agent chaining; when a subagent dispatch silently no-ops or an agent cannot be selected in the dropdown; or when writing a governance rule about delegation that the runtime cannot actually enforce. Prevents multi-level-subagent designs, prose-only dispatch laws, and frontmatter\u002Fbody contradictions.","https:\u002F\u002Fgithub.com\u002Fpkirsanov\u002Fsmackerel\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fbubbles-vscode-agent-constraints\u002FSKILL.md",[176,179],{"categoryNo":177,"categoryName":178,"taxonomyType":72,"taxonomyTypeDesc":73},"01JBSEEDCAT000000000000015","视觉设计",{"categoryNo":129,"categoryName":130,"taxonomyType":72,"taxonomyTypeDesc":73},[181,182,183,27,184,185,186,187,188,189,190,191,111,192,85,89,193,194,195,196],"vscode","constraints","bubbles vscode agent constraints","writing","copilot","code","delegation","Tools","subagent","model","chaining","orchestrator","authoring","fit","subagent dispatch","frontmatter",{"skillNo":198,"name":199,"nameZh":6,"description":200,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":201,"categories":202,"keywords":203,"publishedAt":36},"01M6N9SD78SK12PRT9KBRZ6TB3","bubbles-upkeep-cadence","How to schedule, dispatch, and record recurring operational upkeep tasks (backup, restore-drill, BCDR-drill, patch-cycle, secret-rotation, flag-cleanup, compliance-sweep). Use when authoring or modifying `config\u002Fupkeep-calendar.yaml`, when investigating a missed task, when reading the upkeep ledger, or when adding a new task type.","https:\u002F\u002Fgithub.com\u002Fpkirsanov\u002Fsmackerel\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fbubbles-upkeep-cadence\u002FSKILL.md",[],[204,205,206,207,208,209,210,211,24,212,213,214,215,216,217,218,219,220,221,222],"cadence","bubbles upkeep cadence","tasks","cleanup","backup","sweep","schedule","recurring","patch","restore","task","cycle","record","missed","type","drill","how to","new task","rotation"]