[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6DARXY7PZKXBTPXMC6RK8TD":3,"skill-same:01M6DARXY7PZKXBTPXMC6RK8TD":99},{"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":55,"commitSha":56,"skillDirectory":57,"forksCount":13,"repositoryHtmlUrl":58,"repositoryHomepageUrl":6,"ownerHtmlUrl":59,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":60,"install":61,"resources":74},"01M6DARXY7PZKXBTPXMC6RK8TD","beads-looper",null,"Use when a persistent session should own a bounded Beads outcome end to end, implementing cohesive packages, testing, diagnosing failures, correcting review findings and landing or explicitly handing off. Also use for an independent review session serving those owners, including self-paced Claude \u002Floop or Codex continuation without a central coordinator.","tzeusy-org\u002Fai-bootstrap","tzeusy-org","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F141543652?v=4","01M6DAM1AP09H27BYGFY9QCNPB","01M6DAM1F4R187EK11XDN9JZKH",0,"MIT","https:\u002F\u002Fgithub.com\u002Ftzeusy-org\u002Fai-bootstrap\u002Fblob\u002Fmain\u002Fskills\u002Fpersonal\u002Fbeads-orchestration\u002Fsubskills\u002Fbeads-looper\u002FSKILL.md",[17],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",[23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42],"beads","beads looper","coordinator","implementing","testing","landing","end","review findings","for","cohesive","continuation","loop","use","uv","gh","claim","session","verifier","python3","as","2026-11-10 10:12:30",false,"---\nname: beads-looper\ndescription: Use when a persistent session should own a bounded Beads outcome end to end, implementing cohesive packages, testing, diagnosing failures, correcting review findings and landing or explicitly handing off. Also use for an independent review session serving those owners, including self-paced Claude \u002Floop or Codex continuation without a central coordinator.\nmetadata:\n  owner: tze\n  authors:\n    - tze\n    - Claude Opus 5.5\n  status: active\n  last_reviewed: \"2026-11-06\"\ncompatibility: Requires a Beads-backed repository with `bd` v1.3+ (`--claim`, `--if-assignee`), `uv`, `git` with worktree support, an authenticated `gh`, `jq`, and `python3`, plus a native subagent mechanism for the verifier and a self-paced repeat primitive such as Claude Code's `\u002Floop`.\n---\n\n# Beads Looper\n\nPersistent outcome ownership using the existing actor registry, claims, ranker and\nworker\u002Freviewer mechanisms. Default implementation path for a bounded outcome;\nseveral disjoint owners can share a tracker. A small coordinator is optional for\nallocation\u002Frecovery and dispatched-worker lifecycle writes.\n\n## Use when\n\n“Own this epic until its accepted outcome is complete”, “run this pane as a\nBeads lane”, “\u002Floop through this prerequisite chain”, or “be the independent\nreviewer for these outcome owners”. A supplied dispatched package uses\n[beads-worker](..\u002Fbeads-worker\u002FSKILL.md); backlog authoring uses\n[beads-writer](..\u002Fbeads-writer\u002FSKILL.md).\n\n## Modes and contract\n\nRead [shared delivery model](..\u002F..\u002Freferences\u002Fdelivery-model.md) first. Tracking\nbeads differ from packages and outcomes; keep per-member acceptance. Normal work\nlands bounded packages frequently to main. An integration branch is optional,\npolicy-dependent, and does not change who owns the session or independent review.\n\n| Mode | Responsibility | Read next |\n|---|---|---|\n| implement (default) | Retain one outcome through packages, implementation, tests, diagnosis, corrections and landing\u002Fhandoff | [implement cycle](references\u002Fimplement-cycle.md) |\n| review | Independently review one package in its own worktree; send findings directly to the existing owner and reuse the same record through rechecks | [review cycle](references\u002Freview-cycle.md) |\n\nThe independent reviewer can be another pane or a native subagent. A permanently\nseparate review looper is optional, not a prerequisite for delivery. Never review\ncontent you authored. [Verifier guidance](references\u002Fadversarial-verifier.md)\nexplains early review without another mandatory review cycle.\n\n## Launch and continuation\n\nResolve `REPO_ROOT` from the shared Git common directory; do not use a nested\nsubmodule or arbitrary worker's `--show-toplevel` as the tracker root. Read target\nAGENTS\u002FCLAUDE and preserve dirt before changing state. Mint `LOOPER_ID` through\n[coordinator_registry.py](..\u002Fbeads-coordinator\u002Fscripts\u002Fcoordinator_registry.py)\n`new-id`; register `--startup` once, renew on work\u002Fwake and deregister on stop.\nPass `--actor \"$LOOPER_ID\"` on lifecycle writes; do not share an actor with another\nlive session. Use existing `beads.max_lanes`, never change it without owner instruction.\n\nClaude `\u002Floop` and native Codex thread continuation use the same contract:\n\n```text\nUse beads-orchestration → beads-looper, implement mode, outcome \u003Cexisting-id>.\nRetain ownership through corrections; finish accepted scope or publish explicit handoff.\n```\n\nResume the existing session where available. A new launch validates ownership,\ncurrent packet, published\u002Flocal branch and journal before edits. Compaction state\nincludes actor, outcome, anchor\u002Fmembers, session locator, current PR\u002Fhead, review\nfindings\u002Fevidence and waits. Do not treat session launch as continuation by name alone.\n\n## Invariants\n\n- Mutate only held claims; adopt dead peers only under\n  [runtime safety](..\u002Fbeads-coordinator\u002Freferences\u002Fruntime-and-safety.md).\n- Claim a package, not an entire backlog. Independent outcomes retain distinct\n  owners and rollback paths. One shared prerequisite has one owner.\n- Implementation claims and worktree remain with the owner during review\u002FCI.\n  Reviewer owns its review bead and `review\u002F\u003Creview-id>` snapshot, never the\n  implementation branch. Corrections return directly to the current owner.\n- No fleet restarts, deployment or policy changes are implied by execution.\n  [Decision autonomy](..\u002F..\u002Freferences\u002Fdecision-autonomy.md) preserves actual\n  authority gates; continue work that does not depend on a held decision.\n- Preserve published useful work and quarantine unpublished work on failure.\n  Worktree deletion is completion\u002Frecovery cleanup, not a PR-open handoff step.\n- Close only individually verified and actually landed acceptance; keep the\n  original outcome visibly partial until all required behavior\u002Fproof is met.\n\n## Wait and report\n\nUse event-driven continuation for CI\u002Freview\u002Fdependency\u002Fowner events, with the\nbounded fallback\u002Fstop rule in runtime safety. Use the same review-first admission queue in either mode; mode filters capability,\nnot global priority. Retained claims do not consume parked execution slots. Only\nadmit disjoint spillover after runnable higher-class work is admitted and execution\nand WIP capacity permit it; keep resume events and returning-correction priority. P0 can preempt at a safe published checkpoint, with\nexplicit claim disposition and resume owner. On drift, publish recovery and retire.\n\nEvery state-change report names `LOOPER_ID`, `REPO_ROOT`, outcome, package\u002Fmembers,\naccepted vs remaining behavior, PR, review\u002Fwait event, next action and recovery.\nFinal report also names released\u002Fretained claims and registry disposition. Reuse\n[coordinator hold procedure](..\u002Fbeads-coordinator\u002Freferences\u002Fcoordinator-loop.md#owner-merge-hold)\nand held-PR inventory when considering landing. Search\n[known errors](..\u002F..\u002Freferences\u002Fknown-errors.md) before re-deriving recovery.\n","# Beads Looper\n\nPersistent outcome ownership using the existing actor registry, claims, ranker and\nworker\u002Freviewer mechanisms. Default implementation path for a bounded outcome;\nseveral disjoint owners can share a tracker. A small coordinator is optional for\nallocation\u002Frecovery and dispatched-worker lifecycle writes.\n\n## Use when\n\n“Own this epic until its accepted outcome is complete”, “run this pane as a\nBeads lane”, “\u002Floop through this prerequisite chain”, or “be the independent\nreviewer for these outcome owners”. A supplied dispatched package uses\n[beads-worker](..\u002Fbeads-worker\u002FSKILL.md); backlog authoring uses\n[beads-writer](..\u002Fbeads-writer\u002FSKILL.md).\n\n## Modes and contract\n\nRead [shared delivery model](..\u002F..\u002Freferences\u002Fdelivery-model.md) first. Tracking\nbeads differ from packages and outcomes; keep per-member acceptance. Normal work\nlands bounded packages frequently to main. An integration branch is optional,\npolicy-dependent, and does not change who owns the session or independent review.\n\n| Mode | Responsibility | Read next |\n|---|---|---|\n| implement (default) | Retain one outcome through packages, implementation, tests, diagnosis, corrections and landing\u002Fhandoff | [implement cycle](references\u002Fimplement-cycle.md) |\n| review | Independently review one package in its own worktree; send findings directly to the existing owner and reuse the same record through rechecks | [review cycle](references\u002Freview-cycle.md) |\n\nThe independent reviewer can be another pane or a native subagent. A permanently\nseparate review looper is optional, not a prerequisite for delivery. Never review\ncontent you authored. [Verifier guidance](references\u002Fadversarial-verifier.md)\nexplains early review without another mandatory review cycle.\n\n## Launch and continuation\n\nResolve `REPO_ROOT` from the shared Git common directory; do not use a nested\nsubmodule or arbitrary worker's `--show-toplevel` as the tracker root. Read target\nAGENTS\u002FCLAUDE and preserve dirt before changing state. Mint `LOOPER_ID` through\n[coordinator_registry.py](..\u002Fbeads-coordinator\u002Fscripts\u002Fcoordinator_registry.py)\n`new-id`; register `--startup` once, renew on work\u002Fwake and deregister on stop.\nPass `--actor \"$LOOPER_ID\"` on lifecycle writes; do not share an actor with another\nlive session. Use existing `beads.max_lanes`, never change it without owner instruction.\n\nClaude `\u002Floop` and native Codex thread continuation use the same contract:\n\n```text\nUse beads-orchestration → beads-looper, implement mode, outcome \u003Cexisting-id>.\nRetain ownership through corrections; finish accepted scope or publish explicit handoff.\n```\n\nResume the existing session where available. A new launch validates ownership,\ncurrent packet, published\u002Flocal branch and journal before edits. Compaction state\nincludes actor, outcome, anchor\u002Fmembers, session locator, current PR\u002Fhead, review\nfindings\u002Fevidence and waits. Do not treat session launch as continuation by name alone.\n\n## Invariants\n\n- Mutate only held claims; adopt dead peers only under\n  [runtime safety](..\u002Fbeads-coordinator\u002Freferences\u002Fruntime-and-safety.md).\n- Claim a package, not an entire backlog. Independent outcomes retain distinct\n  owners and rollback paths. One shared prerequisite has one owner.\n- Implementation claims and worktree remain with the owner during review\u002FCI.\n  Reviewer owns its review bead and `review\u002F\u003Creview-id>` snapshot, never the\n  implementation branch. Corrections return directly to the current owner.\n- No fleet restarts, deployment or policy changes are implied by execution.\n  [Decision autonomy](..\u002F..\u002Freferences\u002Fdecision-autonomy.md) preserves actual\n  authority gates; continue work that does not depend on a held decision.\n- Preserve published useful work and quarantine unpublished work on failure.\n  Worktree deletion is completion\u002Frecovery cleanup, not a PR-open handoff step.\n- Close only individually verified and actually landed acceptance; keep the\n  original outcome visibly partial until all required behavior\u002Fproof is met.\n\n## Wait and report\n\nUse event-driven continuation for CI\u002Freview\u002Fdependency\u002Fowner events, with the\nbounded fallback\u002Fstop rule in runtime safety. Use the same review-first admission queue in either mode; mode filters capability,\nnot global priority. Retained claims do not consume parked execution slots. Only\nadmit disjoint spillover after runnable higher-class work is admitted and execution\nand WIP capacity permit it; keep resume events and returning-correction priority. P0 can preempt at a safe published checkpoint, with\nexplicit claim disposition and resume owner. On drift, publish recovery and retire.\n\nEvery state-change report names `LOOPER_ID`, `REPO_ROOT`, outcome, package\u002Fmembers,\naccepted vs remaining behavior, PR, review\u002Fwait event, next action and recovery.\nFinal report also names released\u002Fretained claims and registry disposition. Reuse\n[coordinator hold procedure](..\u002Fbeads-coordinator\u002Freferences\u002Fcoordinator-loop.md#owner-merge-hold)\nand held-PR inventory when considering landing. Search\n[known errors](..\u002F..\u002Freferences\u002Fknown-errors.md) before re-deriving recovery.\n",{"name":5,"metadata":48,"description":7,"compatibility":54},{"owner":49,"status":50,"authors":51,"last_reviewed":53},"tze","active",[49,52],"Claude Opus 5.5","2026-11-06","Requires a Beads-backed repository with `bd` v1.3+ (`--claim`, `--if-assignee`), `uv`, `git` with worktree support, an authenticated `gh`, `jq`, and `python3`, plus a native subagent mechanism for the verifier and a self-paced repeat primitive such as Claude Code's `\u002Floop`.","main","255e91995b1a1c1178f024d1e29fbe8f93b618c9","skills\u002Fpersonal\u002Fbeads-orchestration\u002Fsubskills\u002Fbeads-looper","https:\u002F\u002Fgithub.com\u002Ftzeusy-org\u002Fai-bootstrap","https:\u002F\u002Fgithub.com\u002Ftzeusy-org","2026-11-10 23:17:25",{"source":8,"skillName":5,"commands":62,"prompt":72,"zipAvailable":73},[63,66,69],{"tool":64,"command":65},"npx","npx skills add tzeusy-org\u002Fai-bootstrap --skill beads-looper",{"tool":67,"command":68},"bunx","bunx skills add tzeusy-org\u002Fai-bootstrap --skill beads-looper",{"tool":70,"command":71},"pnpm","pnpm dlx skills add tzeusy-org\u002Fai-bootstrap --skill beads-looper","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Ftzeusy-org\u002Fai-bootstrap\u002Fblob\u002Fmain\u002Fskills\u002Fpersonal\u002Fbeads-orchestration\u002Fsubskills\u002Fbeads-looper\u002FSKILL.md",true,[75,81,85,89,93],{"path":76,"resourceType":77,"resourceTypeDesc":78,"sizeBytes":79,"sourceHtmlUrl":80},"agents\u002Fopenai.yaml","REFERENCE","参考文档",352,"https:\u002F\u002Fgithub.com\u002Ftzeusy-org\u002Fai-bootstrap\u002Fblob\u002Fmain\u002Fskills\u002Fpersonal\u002Fbeads-orchestration\u002Fsubskills\u002Fbeads-looper\u002Fagents\u002Fopenai.yaml",{"path":82,"resourceType":77,"resourceTypeDesc":78,"sizeBytes":83,"sourceHtmlUrl":84},"references\u002Fadversarial-verifier.md",1688,"https:\u002F\u002Fgithub.com\u002Ftzeusy-org\u002Fai-bootstrap\u002Fblob\u002Fmain\u002Fskills\u002Fpersonal\u002Fbeads-orchestration\u002Fsubskills\u002Fbeads-looper\u002Freferences\u002Fadversarial-verifier.md",{"path":86,"resourceType":77,"resourceTypeDesc":78,"sizeBytes":87,"sourceHtmlUrl":88},"references\u002Fimplement-cycle.md",5578,"https:\u002F\u002Fgithub.com\u002Ftzeusy-org\u002Fai-bootstrap\u002Fblob\u002Fmain\u002Fskills\u002Fpersonal\u002Fbeads-orchestration\u002Fsubskills\u002Fbeads-looper\u002Freferences\u002Fimplement-cycle.md",{"path":90,"resourceType":77,"resourceTypeDesc":78,"sizeBytes":91,"sourceHtmlUrl":92},"references\u002Freview-cycle.md",5155,"https:\u002F\u002Fgithub.com\u002Ftzeusy-org\u002Fai-bootstrap\u002Fblob\u002Fmain\u002Fskills\u002Fpersonal\u002Fbeads-orchestration\u002Fsubskills\u002Fbeads-looper\u002Freferences\u002Freview-cycle.md",{"path":94,"resourceType":95,"resourceTypeDesc":96,"sizeBytes":97,"sourceHtmlUrl":98},"tests\u002Ftest_skill_package.py","SCRIPT","脚本",2189,"https:\u002F\u002Fgithub.com\u002Ftzeusy-org\u002Fai-bootstrap\u002Fblob\u002Fmain\u002Fskills\u002Fpersonal\u002Fbeads-orchestration\u002Fsubskills\u002Fbeads-looper\u002Ftests\u002Ftest_skill_package.py",[100,123,148,163,182,193],{"skillNo":101,"name":102,"nameZh":6,"description":103,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":104,"categories":105,"keywords":106,"publishedAt":43},"01M6DAZD21TWH2ET70V9FF75CQ","user-run","Use when a step needs privileges this session lacks (docker, sudo, another user's checkout or secrets, host access) and the owner must run it as tze. Writes a reviewable \u002Fhome\u002Forca\u002F.tmp\u002F\u003Cslug>\u002Frun.sh that impersonates tze (USER_TO_IMPERSONATE overrides), tees timestamped logs plus latest.log and collects artifacts there; Claude presents it with a risk and time brief, then continues from the logs. Triggers: \"I'll run it for you\", \"permission denied on docker.sock\", \"needs sudo\", \"sudo: a password is required\", \"run as tze\", \"\u002Fuser-run\".","https:\u002F\u002Fgithub.com\u002Ftzeusy-org\u002Fai-bootstrap\u002Fblob\u002Fmain\u002Fskills\u002Fpersonal\u002Fuser-run\u002FSKILL.md",[],[107,108,109,110,111,35,112,42,113,114,50,115,116,117,39,118,119,120,121,122],"user run","user","run","docker","logs","host","triggers","permission","time","log","artifacts","password","access","secrets","risk","brief",{"skillNo":124,"name":125,"nameZh":6,"description":126,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":127,"categories":128,"keywords":137,"publishedAt":43},"01M6DAZAHTCBAD2WF0GAHWPST8","requesting-code-review","Use when completing tasks, implementing major features, or before merging to verify work meets requirements","https:\u002F\u002Fgithub.com\u002Ftzeusy-org\u002Fai-bootstrap\u002Fblob\u002Fmain\u002Fskills\u002Fpersonal\u002Fth-workflow\u002Fsubskills\u002Frequesting-code-review\u002FSKILL.md",[129,132],{"categoryNo":130,"categoryName":131,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000007","代码审查",{"categoryNo":133,"categoryName":134,"taxonomyType":135,"taxonomyTypeDesc":136},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[138,139,140,141,142,143,50,144,145,35,146,147],"requesting code review","code","review","code review","work","requirements","upstream","superpowers","verify","tasks",{"skillNo":149,"name":150,"nameZh":6,"description":151,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":152,"categories":153,"keywords":156,"publishedAt":43},"01M6DAZ7CJ82D81XZB2YHVVY48","receiving-code-review","Use when receiving code review feedback, before implementing suggestions, especially if feedback seems unclear or technically questionable - requires technical rigor and verification, not performative agreement or blind implementation","https:\u002F\u002Fgithub.com\u002Ftzeusy-org\u002Fai-bootstrap\u002Fblob\u002Fmain\u002Fskills\u002Fpersonal\u002Fth-workflow\u002Fsubskills\u002Freceiving-code-review\u002FSKILL.md",[154,155],{"categoryNo":130,"categoryName":131,"taxonomyType":20,"taxonomyTypeDesc":21},{"categoryNo":133,"categoryName":134,"taxonomyType":135,"taxonomyTypeDesc":136},[157,139,140,141,50,144,158,145,35,159,160,161,162],"receiving code review","implementation","code review feedback","technical","feedback","verification",{"skillNo":164,"name":165,"nameZh":6,"description":166,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":167,"categories":168,"keywords":169,"publishedAt":43},"01M6DAZ4ER76ADXJ9KRFP7V3Q9","finishing-a-development-branch","Use when implementation is complete, all tests pass, and you need to decide how to integrate the work - guides completion of development work by presenting structured options for merge, PR, or cleanup","https:\u002F\u002Fgithub.com\u002Ftzeusy-org\u002Fai-bootstrap\u002Fblob\u002Fmain\u002Fskills\u002Fpersonal\u002Fth-workflow\u002Fsubskills\u002Ffinishing-a-development-branch\u002FSKILL.md",[],[170,171,172,173,35,174,142,175,176,177,145,178,179,180,50,144,181,158],"branch","development","finishing a development branch","integrate","decide","how","cleanup","pr","merge","tests","structured","options",{"skillNo":183,"name":184,"nameZh":6,"description":185,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":186,"categories":187,"keywords":188,"publishedAt":43},"01M6DAYZFWWW2YPKP89QNQR96H","executing-plans","Use when you have a written implementation plan to execute in a separate session with review checkpoints","https:\u002F\u002Fgithub.com\u002Ftzeusy-org\u002Fai-bootstrap\u002Fblob\u002Fmain\u002Fskills\u002Fpersonal\u002Fth-workflow\u002Fsubskills\u002Fexecuting-plans\u002FSKILL.md",[],[189,190,191,140,192,50,144,158,145,35,39],"plans","executing plans","plan","execute",{"skillNo":194,"name":195,"nameZh":6,"description":196,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":197,"categories":198,"keywords":199,"publishedAt":43},"01M6DAYWM2YQHYCK7C35K1D29J","dispatching-parallel-agents","Use when facing 2+ independent tasks that can be worked on without shared state or sequential dependencies","https:\u002F\u002Fgithub.com\u002Ftzeusy-org\u002Fai-bootstrap\u002Fblob\u002Fmain\u002Fskills\u002Fpersonal\u002Fth-workflow\u002Fsubskills\u002Fdispatching-parallel-agents\u002FSKILL.md",[],[200,201,202,35,145,144,203,50,204,147,205],"parallel agents","parallel","dispatching parallel agents","state","dependencies","shared"]