[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6N9QPE6S644HTE7H3S26T2P":3,"skill-same:01M6N9QPE6S644HTE7H3S26T2P":69},{"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":22,"publishedAt":43,"linkOnly":44,"markdownContent":45,"markdownBody":46,"frontMatter":47,"refName":48,"commitSha":49,"skillDirectory":50,"forksCount":51,"repositoryHtmlUrl":52,"repositoryHomepageUrl":6,"ownerHtmlUrl":53,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":54,"install":55,"resources":68},"01M6N9QPE6S644HTE7H3S26T2P","bubbles-skills-first-discovery",null,"Discover which Bubbles policy skill applies to the current task. Use as the first step when an agent is uncertain which governance module to load, when a user asks about Bubbles policy without naming a specific module, or when onboarding a new agent that should lean on skills instead of bulk-loading agent-common.md. Maps common situations to the right skill.","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.github\u002Fskills\u002Fbubbles-skills-first-discovery\u002FSKILL.md",[17],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42],"bubbles skills first discovery","first","discovery","discover","load","which","naming","about","loading","bulk","as","module","policy","new agent","task","maps","use","lean","common","governance","2026-11-10 10:12:30",false,"---\nname: bubbles-skills-first-discovery\ndescription: Discover which Bubbles policy skill applies to the current task. Use as the first step when an agent is uncertain which governance module to load, when a user asks about Bubbles policy without naming a specific module, or when onboarding a new agent that should lean on skills instead of bulk-loading agent-common.md. Maps common situations to the right skill.\n---\n\n# Bubbles Skills-First Discovery\n\n## Goal\nReplace eager-loading of `agents\u002Fbubbles_shared\u002F*.md` with on-demand skill loading driven by what the agent is actually about to do. This is the entry point that maps a situation to the right skill.\n\n## When to use\n- An agent is starting a task and needs to know which Bubbles policy applies\n- A user asked a Bubbles policy question with no module name\n- Reviewing whether agent prompts can shed bulk by relying on skill auto-loading\n\n## Situation → Skill map\n| If you are about to... | Load this skill |\n|------------------------|-----------------|\n| Mark a DoD item `[x]` or claim a test\u002Fbuild passed | `bubbles-anti-fabrication` |\n| Assert what a file, API, config key, gate, or spec contains | `bubbles-claim-grounding` |\n| Cite a path, script, gate ID, skill, or spec directory | `bubbles-claim-grounding` |\n| Proceed on a premise you could not verify | `bubbles-claim-grounding` |\n| Write a `report.md` evidence section or capture terminal output | `bubbles-evidence-capture` |\n| Transition a scope to `Done` or a spec to `done` | `bubbles-dod-validation` |\n| Change `state.json` status or run pre-push status checks | `bubbles-status-transition` |\n| Return control to the orchestrator at end of an agent run | `bubbles-result-envelope` |\n| Edit any artifact — confirm you own it, or route if not | `bubbles-artifact-ownership-routing` |\n| A guard rejected work with a `G0XX` label | `bubbles-quality-gates-catalog` |\n| Author or revise `scopes.md` \u002F `scopes\u002F*\u002Fscope.md` | `bubbles-scope-workflow-runtime` |\n| Creating or refreshing a feature folder | `bubbles-feature-template` |\n| Filing or working a bug under `specs\u002F\u003Cfeature>\u002Fbugs\u002FBUG-*` | `bubbles-bug-template` |\n| Orchestrating a workflow round (dispatch-and-wait) | `bubbles-workflow-execution-loops` |\n| Translating natural-language intent to a workflow mode | `bubbles-workflow-mode-resolution` |\n| Running a fix-cycle round; finding-set closure | `bubbles-fix-cycle-protocol` |\n| Write or extend a Bubbles skill | `bubbles-skill-authoring` |\n| Design a reusable capability (adapter\u002Fprovider\u002Fstrategy) | `bubbles-capability-foundation-design` |\n| Write tests of any kind | `bubbles-test-integrity` |\n| Touch test compose files, test DB setup, or test data | `bubbles-test-environment-isolation` |\n| Decide whether two products may share a PRODUCTION database, cache, or message bus | `bubbles-datastore-isolation` |\n| Add or review a Python \u002F ML \u002F LLM sidecar that needs to reach data | `bubbles-isolated-ml-sidecar` |\n| Write a shell script, guard, selftest, or hook that must run on macOS + Linux | `bubbles-cross-platform-shell` |\n| Add or change config values, ports, or services | `bubbles-config-sst`, `bubbles-docker-port-standards`, `bubbles-docker-lifecycle-governance` |\n| Author a deploy target adapter | `bubbles-deployment-target-adapter` |\n| Write a spec.md from scratch with BDD | `bubbles-spec-template-bdd` |\n| Surface product principles from existing repo evidence | `bubbles-product-principle-discovery` |\n| Audit downstream repo readiness | `bubbles-repo-readiness` |\n| Apply a premium \u002F cinematic design language to a UI feature (opt-in per repo) | `bubbles-cinematic-design` |\n\n## Why skills-first\nSkills are auto-loaded by description match (semantic search) by Copilot, Claude, Cursor, and similar tools. They are lazy: a skill only enters context when the description matches the work. The Bubbles framework keeps the authoritative governance in `agents\u002Fbubbles_shared\u002F*.md` modules — skills are discovery shims that route to those modules.\n\nThis avoids:\n- Eager-loading 14k+ lines of policy at the top of every agent prompt\n- Duplicating policy text across 38 agents\n- Drift between agent prompts and the shared module set\n\n## Authoritative governance still lives in modules\nSkills are entry points. The non-negotiable rules and the mechanical guards still live in:\n- `agents\u002Fbubbles_shared\u002F*.md` — full policy text\n- `bubbles\u002Fscripts\u002F*.sh` — enforcement scripts\n- `bubbles\u002Fworkflows.yaml` — workflow modes + gate wiring\n- `bubbles\u002Fcapability-ledger.yaml` — shipped capabilities\n\nWhen a skill points to a module, open the module for the full enforceable text. Do not rewrite policy inside agent prompts.\n\n## Grandfather clause reminder (PRESERVED across the skills-first refactor)\nHistorical `done` specs do not get re-evaluated under new skill-derived policy unless their `state.json` is touched in the same commit. `done-spec-audit.sh --profile advisory` (the default) keeps the grandfather intact. Skills do not change this.\n","# Bubbles Skills-First Discovery\n\n## Goal\nReplace eager-loading of `agents\u002Fbubbles_shared\u002F*.md` with on-demand skill loading driven by what the agent is actually about to do. This is the entry point that maps a situation to the right skill.\n\n## When to use\n- An agent is starting a task and needs to know which Bubbles policy applies\n- A user asked a Bubbles policy question with no module name\n- Reviewing whether agent prompts can shed bulk by relying on skill auto-loading\n\n## Situation → Skill map\n| If you are about to... | Load this skill |\n|------------------------|-----------------|\n| Mark a DoD item `[x]` or claim a test\u002Fbuild passed | `bubbles-anti-fabrication` |\n| Assert what a file, API, config key, gate, or spec contains | `bubbles-claim-grounding` |\n| Cite a path, script, gate ID, skill, or spec directory | `bubbles-claim-grounding` |\n| Proceed on a premise you could not verify | `bubbles-claim-grounding` |\n| Write a `report.md` evidence section or capture terminal output | `bubbles-evidence-capture` |\n| Transition a scope to `Done` or a spec to `done` | `bubbles-dod-validation` |\n| Change `state.json` status or run pre-push status checks | `bubbles-status-transition` |\n| Return control to the orchestrator at end of an agent run | `bubbles-result-envelope` |\n| Edit any artifact — confirm you own it, or route if not | `bubbles-artifact-ownership-routing` |\n| A guard rejected work with a `G0XX` label | `bubbles-quality-gates-catalog` |\n| Author or revise `scopes.md` \u002F `scopes\u002F*\u002Fscope.md` | `bubbles-scope-workflow-runtime` |\n| Creating or refreshing a feature folder | `bubbles-feature-template` |\n| Filing or working a bug under `specs\u002F\u003Cfeature>\u002Fbugs\u002FBUG-*` | `bubbles-bug-template` |\n| Orchestrating a workflow round (dispatch-and-wait) | `bubbles-workflow-execution-loops` |\n| Translating natural-language intent to a workflow mode | `bubbles-workflow-mode-resolution` |\n| Running a fix-cycle round; finding-set closure | `bubbles-fix-cycle-protocol` |\n| Write or extend a Bubbles skill | `bubbles-skill-authoring` |\n| Design a reusable capability (adapter\u002Fprovider\u002Fstrategy) | `bubbles-capability-foundation-design` |\n| Write tests of any kind | `bubbles-test-integrity` |\n| Touch test compose files, test DB setup, or test data | `bubbles-test-environment-isolation` |\n| Decide whether two products may share a PRODUCTION database, cache, or message bus | `bubbles-datastore-isolation` |\n| Add or review a Python \u002F ML \u002F LLM sidecar that needs to reach data | `bubbles-isolated-ml-sidecar` |\n| Write a shell script, guard, selftest, or hook that must run on macOS + Linux | `bubbles-cross-platform-shell` |\n| Add or change config values, ports, or services | `bubbles-config-sst`, `bubbles-docker-port-standards`, `bubbles-docker-lifecycle-governance` |\n| Author a deploy target adapter | `bubbles-deployment-target-adapter` |\n| Write a spec.md from scratch with BDD | `bubbles-spec-template-bdd` |\n| Surface product principles from existing repo evidence | `bubbles-product-principle-discovery` |\n| Audit downstream repo readiness | `bubbles-repo-readiness` |\n| Apply a premium \u002F cinematic design language to a UI feature (opt-in per repo) | `bubbles-cinematic-design` |\n\n## Why skills-first\nSkills are auto-loaded by description match (semantic search) by Copilot, Claude, Cursor, and similar tools. They are lazy: a skill only enters context when the description matches the work. The Bubbles framework keeps the authoritative governance in `agents\u002Fbubbles_shared\u002F*.md` modules — skills are discovery shims that route to those modules.\n\nThis avoids:\n- Eager-loading 14k+ lines of policy at the top of every agent prompt\n- Duplicating policy text across 38 agents\n- Drift between agent prompts and the shared module set\n\n## Authoritative governance still lives in modules\nSkills are entry points. The non-negotiable rules and the mechanical guards still live in:\n- `agents\u002Fbubbles_shared\u002F*.md` — full policy text\n- `bubbles\u002Fscripts\u002F*.sh` — enforcement scripts\n- `bubbles\u002Fworkflows.yaml` — workflow modes + gate wiring\n- `bubbles\u002Fcapability-ledger.yaml` — shipped capabilities\n\nWhen a skill points to a module, open the module for the full enforceable text. Do not rewrite policy inside agent prompts.\n\n## Grandfather clause reminder (PRESERVED across the skills-first refactor)\nHistorical `done` specs do not get re-evaluated under new skill-derived policy unless their `state.json` is touched in the same commit. `done-spec-audit.sh --profile advisory` (the default) keeps the grandfather intact. Skills do not change this.\n",{"name":5,"description":7},"main","ed893cc338281a0bb9bb9ecf3415716cb242bb3f",".github\u002Fskills\u002Fbubbles-skills-first-discovery",0,"https:\u002F\u002Fgithub.com\u002Fpkirsanov\u002Fsmackerel","https:\u002F\u002Fgithub.com\u002Fpkirsanov","2026-11-07 02:54:37",{"source":8,"skillName":5,"commands":56,"prompt":66,"zipAvailable":67},[57,60,63],{"tool":58,"command":59},"npx","npx skills add pkirsanov\u002Fsmackerel --skill bubbles-skills-first-discovery",{"tool":61,"command":62},"bunx","bunx skills add pkirsanov\u002Fsmackerel --skill bubbles-skills-first-discovery",{"tool":64,"command":65},"pnpm","pnpm dlx skills add pkirsanov\u002Fsmackerel --skill bubbles-skills-first-discovery","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fpkirsanov\u002Fsmackerel\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fbubbles-skills-first-discovery\u002FSKILL.md",true,[],[70,98,125,151,172,200],{"skillNo":71,"name":72,"nameZh":6,"description":73,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":74,"categories":75,"keywords":79,"publishedAt":43},"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",[76],{"categoryNo":77,"categoryName":78,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000008","测试与质量",[80,81,82,83,84,85,86,87,25,39,88,89,90,91,92,93,94,95,96,97],"trace","capture","smackerel trace capture","perf","observability","prometheus","specify","e2e","slo","only","evidence","do","latency","runtime","tests","adapter","error","bugs",{"skillNo":99,"name":100,"nameZh":6,"description":101,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":102,"categories":103,"keywords":107,"publishedAt":43},"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",[104],{"categoryNo":105,"categoryName":106,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000011","运维与部署",[108,109,35,110,111,112,113,114,115,39,116,117,93,118,119,120,121,122,123,124],"smackerel no defaults","docker","config","deploy","docker compose","syntax","editing","instructions","compose","enforce","bind","env","host","Adapters","sst","addresses","value",{"skillNo":126,"name":127,"nameZh":6,"description":128,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":129,"categories":130,"keywords":132,"publishedAt":43},"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",[131],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[133,134,135,136,35,137,138,139,140,141,142,39,143,144,145,146,147,148,149,150],"workflow","resolution","mode","bubbles workflow mode resolution","workflows","routing","guard","template","decision","Rules","reports","intent","inheritance","with","consistency","natural-language","for","wiring",{"skillNo":152,"name":153,"nameZh":6,"description":154,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":155,"categories":156,"keywords":158,"publishedAt":43},"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",[157],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[133,159,160,161,162,35,163,164,165,166,167,39,168,169,170,171,135],"execution","loops","bubbles workflow execution loops","summarize","run","batch","remediation","direct","subagents","dispatch","wait","multi","multi-round",{"skillNo":173,"name":174,"nameZh":6,"description":175,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":176,"categories":177,"keywords":182,"publishedAt":43},"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",[178,181],{"categoryNo":179,"categoryName":180,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000015","视觉设计",{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[183,184,185,186,187,188,189,190,191,192,193,194,114,195,89,93,196,197,198,199],"vscode","constraints","bubbles vscode agent constraints","design","writing","copilot","code","delegation","Tools","subagent","model","chaining","orchestrator","authoring","fit","subagent dispatch","frontmatter",{"skillNo":201,"name":202,"nameZh":6,"description":203,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":204,"categories":205,"keywords":206,"publishedAt":43},"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",[],[207,208,209,210,211,212,213,214,39,215,216,37,217,218,219,220,221,222,223,224],"cadence","bubbles upkeep cadence","tasks","cleanup","backup","sweep","schedule","recurring","patch","restore","cycle","record","missed","type","drill","how to","new task","rotation"]