[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-microsoft-follow-goal":3,"mdc-2fkltk-key":31,"related-org-microsoft-follow-goal":1075,"related-repo-microsoft-follow-goal":1270},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":20,"repoUrl":21,"updatedAt":22,"license":23,"forks":24,"topics":25,"repo":26,"sourceUrl":29,"mdContent":30},"follow-goal","manage agent goals and stopping conditions","Give the agent a durable objective with a verifiable stopping condition, then keep iterating across turns until that condition is met. Use when the user says 'set a goal', 'follow a goal', '\u002Fgoal …', 'keep working until …', or asks for a long-running task with a clear end state (migrations, large refactors, retry-until-green loops, experiments).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"microsoft","Microsoft","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fmicrosoft.png",[12,16,17],{"name":13,"slug":14,"type":15},"Productivity","productivity","tag",{"name":9,"slug":8,"type":15},{"name":18,"slug":19,"type":15},"Agents","agents",25,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fvscode-team-kit","2026-07-07T06:54:04.263607",null,5,[],{"repoUrl":21,"stars":20,"forks":24,"topics":27,"description":28},[],"Plugins the VS Code team uses","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fvscode-team-kit\u002Ftree\u002FHEAD\u002Fgoal\u002Fskills\u002Ffollow-goal","---\nname: follow-goal\ndescription: \"Give the agent a durable objective with a verifiable stopping condition, then keep iterating across turns until that condition is met. Use when the user says 'set a goal', 'follow a goal', '\u002Fgoal …', 'keep working until …', or asks for a long-running task with a clear end state (migrations, large refactors, retry-until-green loops, experiments).\"\nuser-invocable: false\n---\n\u003C!-- Inspired by Codex's `\u002Fgoal` command. -->\n\n# Skill: Follow Goal\n\nRun a long, durable objective across many turns toward a verifiable stop condition — instead of stopping after one normal exchange.\n\n> **Requires session storage + artifact.**\n> 1. **Persist** — Save `goal.md` to session storage. This is the durable source of truth, readable across turns.\n> 2. **Mark as artifact** — After saving, call `setArtifacts` to mark the file as a `plan` artifact so the user can see live goal state in the UI.\n>\n> Do not write `goal.md` into the workspace. Do not rely on the artifact alone — artifacts are UI-only and cannot be read back by tools.\n\nA goal has four parts. Capture all four before starting work:\n\n1. **Objective** — what to achieve, in one sentence.\n2. **Stop condition** — an observable, verifiable signal that \"done\" has been reached (a command exits 0, a file matches a spec, tests pass, parity check passes, etc.).\n3. **Validation** — the concrete commands or artifacts that prove progress (test command, build command, lint, diff against reference, review or rubber duck skills).\n4. **Constraints** — what NOT to change, scope boundaries, files\u002Fareas off-limits.\n\nIf any of these are missing or vague, ask the user before saving the goal. A goal without a verifiable stop condition is not a goal — it's a wish.\n\n## State\n\nThe goal lives in session storage as `goal.md` — a single markdown file with this shape:\n\n```markdown\n---\nstatus: active        # active | paused | done | cleared\ncreated: 2026-05-16\ncheckpoints: 0\nmax_checkpoints: 20   # hard safety budget\n---\n\n# Objective\n\u003Cone sentence>\n\n# Stop Condition\n\u003Cverifiable end state>\n\n# Validation\n- `\u003Ccommand or check>`\n- ...\n\n# Constraints\n- \u003Cwhat not to change>\n\n# Progress Log\n\u003Cappend a one-line checkpoint after each validation pass>\n```\n\n`max_checkpoints` is a safety budget. The agent MUST stop and report when it reaches this number even if the stop condition is not met, and ask the user how to proceed.\n\n## Sub-commands\n\nThe `goal` skill dispatches to this skill. Behavior depends on the argument:\n\n| Invocation | Action |\n|---|---|\n| `\u002Fgoal \u003Cobjective>` | **Set.** Capture the four parts above (asking the user for anything missing), write `goal.md` with `status: active`, then start the loop. |\n| `\u002Fgoal` (no args) | **Status.** Read `goal.md` and report objective, stop condition, status, checkpoint count, and the last few progress log lines. Do not take any other action. |\n| `\u002Fgoal pause` | Set `status: paused`. Do not iterate. Tell the user how to resume. |\n| `\u002Fgoal resume` | Set `status: active`. Re-read the goal and continue the loop from the latest checkpoint. |\n| `\u002Fgoal clear` | Set `status: cleared` and stop. Leave the file in place so the user can inspect history; do not delete it. |\n\n## The Loop\n\nWhen `status: active`, on every turn while there is work to do:\n\n1. **Read** `goal.md` (objective, stop condition, validation, progress log).\n2. **Check stop condition.** Run the validation commands. If the stop condition is met → set `status: done`, append a final checkpoint, report success, exit the loop.\n3. **Plan one checkpoint of work** — the next small, scoped step that moves toward the stop condition. Keep checkpoints small enough that validation runs between each.\n4. **Do the work** (edits, commands).\n5. **Validate** — run the validation commands.\n6. **Append a one-line entry to the progress log** in `goal.md` with what was done and the validation result.\n7. **Increment `checkpoints`** in the frontmatter.\n8. If `checkpoints >= max_checkpoints` → pause, report, ask the user how to proceed.\n9. If status was changed externally to `paused` or `cleared` → stop. Otherwise continue the loop.\n\nThe progress log entries should be short and machine-skimmable, e.g.:\n```\n- 2026-05-16 14:02 — Migrated `auth\u002F` to new API. Tests: 184\u002F184 pass.\n- 2026-05-16 14:09 — Migrated `billing\u002F`. Tests: 184\u002F184 pass. Lint clean.\n```\n\n## Discipline\n\n- **Never** continue past a failed validation without diagnosing the failure first. A failed validation is a checkpoint event — log it, fix the cause, then re-validate.\n- **Never** silently expand scope. If the work requires touching something in `Constraints`, pause and surface it.\n- **Never** invent a stop condition. If the user can't articulate one, the goal is not ready — push back.\n- Keep the progress log truthful. Do not log \"tests pass\" without running them.\n- One active goal at a time. If the user sets a new goal while one is active, ask whether to replace, pause, or clear the existing one first.\n\n## When to use vs. when not to\n\nUse a goal when:\n- The work has a clear, verifiable end state (a test suite green, a migration complete, a build artifact matches a spec).\n- The work is too big for one turn but small enough that progress is measurable.\n- The user wants to step away while the agent iterates.\n\nDo not use a goal for:\n- A loose grab-bag of unrelated tasks. Use a todo list instead.\n- Work where \"done\" is subjective (design polish, prose). Use normal review skills instead.\n- Anything destructive without rollback (production deploys, force pushes). The loop is not for irreversible operations.\n",{"data":32,"body":34},{"name":4,"description":6,"user-invocable":33},false,{"type":35,"children":36},"root",[37,46,52,127,132,175,180,187,199,598,608,614,627,795,801,813,947,952,962,968,1017,1023,1028,1046,1051,1069],{"type":38,"tag":39,"props":40,"children":42},"element","h1",{"id":41},"skill-follow-goal",[43],{"type":44,"value":45},"text","Skill: Follow Goal",{"type":38,"tag":47,"props":48,"children":49},"p",{},[50],{"type":44,"value":51},"Run a long, durable objective across many turns toward a verifiable stop condition — instead of stopping after one normal exchange.",{"type":38,"tag":53,"props":54,"children":55},"blockquote",{},[56,65,115],{"type":38,"tag":47,"props":57,"children":58},{},[59],{"type":38,"tag":60,"props":61,"children":62},"strong",{},[63],{"type":44,"value":64},"Requires session storage + artifact.",{"type":38,"tag":66,"props":67,"children":68},"ol",{},[69,89],{"type":38,"tag":70,"props":71,"children":72},"li",{},[73,78,80,87],{"type":38,"tag":60,"props":74,"children":75},{},[76],{"type":44,"value":77},"Persist",{"type":44,"value":79}," — Save ",{"type":38,"tag":81,"props":82,"children":84},"code",{"className":83},[],[85],{"type":44,"value":86},"goal.md",{"type":44,"value":88}," to session storage. This is the durable source of truth, readable across turns.",{"type":38,"tag":70,"props":90,"children":91},{},[92,97,99,105,107,113],{"type":38,"tag":60,"props":93,"children":94},{},[95],{"type":44,"value":96},"Mark as artifact",{"type":44,"value":98}," — After saving, call ",{"type":38,"tag":81,"props":100,"children":102},{"className":101},[],[103],{"type":44,"value":104},"setArtifacts",{"type":44,"value":106}," to mark the file as a ",{"type":38,"tag":81,"props":108,"children":110},{"className":109},[],[111],{"type":44,"value":112},"plan",{"type":44,"value":114}," artifact so the user can see live goal state in the UI.",{"type":38,"tag":47,"props":116,"children":117},{},[118,120,125],{"type":44,"value":119},"Do not write ",{"type":38,"tag":81,"props":121,"children":123},{"className":122},[],[124],{"type":44,"value":86},{"type":44,"value":126}," into the workspace. Do not rely on the artifact alone — artifacts are UI-only and cannot be read back by tools.",{"type":38,"tag":47,"props":128,"children":129},{},[130],{"type":44,"value":131},"A goal has four parts. Capture all four before starting work:",{"type":38,"tag":66,"props":133,"children":134},{},[135,145,155,165],{"type":38,"tag":70,"props":136,"children":137},{},[138,143],{"type":38,"tag":60,"props":139,"children":140},{},[141],{"type":44,"value":142},"Objective",{"type":44,"value":144}," — what to achieve, in one sentence.",{"type":38,"tag":70,"props":146,"children":147},{},[148,153],{"type":38,"tag":60,"props":149,"children":150},{},[151],{"type":44,"value":152},"Stop condition",{"type":44,"value":154}," — an observable, verifiable signal that \"done\" has been reached (a command exits 0, a file matches a spec, tests pass, parity check passes, etc.).",{"type":38,"tag":70,"props":156,"children":157},{},[158,163],{"type":38,"tag":60,"props":159,"children":160},{},[161],{"type":44,"value":162},"Validation",{"type":44,"value":164}," — the concrete commands or artifacts that prove progress (test command, build command, lint, diff against reference, review or rubber duck skills).",{"type":38,"tag":70,"props":166,"children":167},{},[168,173],{"type":38,"tag":60,"props":169,"children":170},{},[171],{"type":44,"value":172},"Constraints",{"type":44,"value":174}," — what NOT to change, scope boundaries, files\u002Fareas off-limits.",{"type":38,"tag":47,"props":176,"children":177},{},[178],{"type":44,"value":179},"If any of these are missing or vague, ask the user before saving the goal. A goal without a verifiable stop condition is not a goal — it's a wish.",{"type":38,"tag":181,"props":182,"children":184},"h2",{"id":183},"state",[185],{"type":44,"value":186},"State",{"type":38,"tag":47,"props":188,"children":189},{},[190,192,197],{"type":44,"value":191},"The goal lives in session storage as ",{"type":38,"tag":81,"props":193,"children":195},{"className":194},[],[196],{"type":44,"value":86},{"type":44,"value":198}," — a single markdown file with this shape:",{"type":38,"tag":200,"props":201,"children":206},"pre",{"className":202,"code":203,"language":204,"meta":205,"style":205},"language-markdown shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","---\nstatus: active        # active | paused | done | cleared\ncreated: 2026-05-16\ncheckpoints: 0\nmax_checkpoints: 20   # hard safety budget\n---\n\n# Objective\n\u003Cone sentence>\n\n# Stop Condition\n\u003Cverifiable end state>\n\n# Validation\n- `\u003Ccommand or check>`\n- ...\n\n# Constraints\n- \u003Cwhat not to change>\n\n# Progress Log\n\u003Cappend a one-line checkpoint after each validation pass>\n","markdown","",[207],{"type":38,"tag":81,"props":208,"children":209},{"__ignoreMap":205},[210,222,249,268,287,309,317,327,342,367,375,384,411,419,428,466,475,483,492,529,537,546],{"type":38,"tag":211,"props":212,"children":215},"span",{"class":213,"line":214},"line",1,[216],{"type":38,"tag":211,"props":217,"children":219},{"style":218},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[220],{"type":44,"value":221},"---\n",{"type":38,"tag":211,"props":223,"children":225},{"class":213,"line":224},2,[226,232,237,243],{"type":38,"tag":211,"props":227,"children":229},{"style":228},"--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178",[230],{"type":44,"value":231},"status",{"type":38,"tag":211,"props":233,"children":234},{"style":218},[235],{"type":44,"value":236},":",{"type":38,"tag":211,"props":238,"children":240},{"style":239},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[241],{"type":44,"value":242}," active",{"type":38,"tag":211,"props":244,"children":246},{"style":245},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[247],{"type":44,"value":248},"        # active | paused | done | cleared\n",{"type":38,"tag":211,"props":250,"children":252},{"class":213,"line":251},3,[253,258,262],{"type":38,"tag":211,"props":254,"children":255},{"style":228},[256],{"type":44,"value":257},"created",{"type":38,"tag":211,"props":259,"children":260},{"style":218},[261],{"type":44,"value":236},{"type":38,"tag":211,"props":263,"children":265},{"style":264},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[266],{"type":44,"value":267}," 2026-05-16\n",{"type":38,"tag":211,"props":269,"children":271},{"class":213,"line":270},4,[272,277,281],{"type":38,"tag":211,"props":273,"children":274},{"style":228},[275],{"type":44,"value":276},"checkpoints",{"type":38,"tag":211,"props":278,"children":279},{"style":218},[280],{"type":44,"value":236},{"type":38,"tag":211,"props":282,"children":284},{"style":283},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[285],{"type":44,"value":286}," 0\n",{"type":38,"tag":211,"props":288,"children":289},{"class":213,"line":24},[290,295,299,304],{"type":38,"tag":211,"props":291,"children":292},{"style":228},[293],{"type":44,"value":294},"max_checkpoints",{"type":38,"tag":211,"props":296,"children":297},{"style":218},[298],{"type":44,"value":236},{"type":38,"tag":211,"props":300,"children":301},{"style":283},[302],{"type":44,"value":303}," 20",{"type":38,"tag":211,"props":305,"children":306},{"style":245},[307],{"type":44,"value":308},"   # hard safety budget\n",{"type":38,"tag":211,"props":310,"children":312},{"class":213,"line":311},6,[313],{"type":38,"tag":211,"props":314,"children":315},{"style":218},[316],{"type":44,"value":221},{"type":38,"tag":211,"props":318,"children":320},{"class":213,"line":319},7,[321],{"type":38,"tag":211,"props":322,"children":324},{"emptyLinePlaceholder":323},true,[325],{"type":44,"value":326},"\n",{"type":38,"tag":211,"props":328,"children":330},{"class":213,"line":329},8,[331,336],{"type":38,"tag":211,"props":332,"children":333},{"style":218},[334],{"type":44,"value":335},"# ",{"type":38,"tag":211,"props":337,"children":339},{"style":338},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[340],{"type":44,"value":341},"Objective\n",{"type":38,"tag":211,"props":343,"children":345},{"class":213,"line":344},9,[346,351,356,362],{"type":38,"tag":211,"props":347,"children":348},{"style":218},[349],{"type":44,"value":350},"\u003C",{"type":38,"tag":211,"props":352,"children":353},{"style":228},[354],{"type":44,"value":355},"one",{"type":38,"tag":211,"props":357,"children":359},{"style":358},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[360],{"type":44,"value":361}," sentence",{"type":38,"tag":211,"props":363,"children":364},{"style":218},[365],{"type":44,"value":366},">\n",{"type":38,"tag":211,"props":368,"children":370},{"class":213,"line":369},10,[371],{"type":38,"tag":211,"props":372,"children":373},{"emptyLinePlaceholder":323},[374],{"type":44,"value":326},{"type":38,"tag":211,"props":376,"children":378},{"class":213,"line":377},11,[379],{"type":38,"tag":211,"props":380,"children":381},{"style":264},[382],{"type":44,"value":383},"# Stop Condition\n",{"type":38,"tag":211,"props":385,"children":387},{"class":213,"line":386},12,[388,392,397,402,407],{"type":38,"tag":211,"props":389,"children":390},{"style":218},[391],{"type":44,"value":350},{"type":38,"tag":211,"props":393,"children":394},{"style":228},[395],{"type":44,"value":396},"verifiable",{"type":38,"tag":211,"props":398,"children":399},{"style":358},[400],{"type":44,"value":401}," end",{"type":38,"tag":211,"props":403,"children":404},{"style":358},[405],{"type":44,"value":406}," state",{"type":38,"tag":211,"props":408,"children":409},{"style":218},[410],{"type":44,"value":366},{"type":38,"tag":211,"props":412,"children":414},{"class":213,"line":413},13,[415],{"type":38,"tag":211,"props":416,"children":417},{"emptyLinePlaceholder":323},[418],{"type":44,"value":326},{"type":38,"tag":211,"props":420,"children":422},{"class":213,"line":421},14,[423],{"type":38,"tag":211,"props":424,"children":425},{"style":264},[426],{"type":44,"value":427},"# Validation\n",{"type":38,"tag":211,"props":429,"children":431},{"class":213,"line":430},15,[432,437,441,446,451,456,461],{"type":38,"tag":211,"props":433,"children":434},{"style":264},[435],{"type":44,"value":436},"- `",{"type":38,"tag":211,"props":438,"children":439},{"style":218},[440],{"type":44,"value":350},{"type":38,"tag":211,"props":442,"children":443},{"style":228},[444],{"type":44,"value":445},"command",{"type":38,"tag":211,"props":447,"children":448},{"style":358},[449],{"type":44,"value":450}," or",{"type":38,"tag":211,"props":452,"children":453},{"style":358},[454],{"type":44,"value":455}," check",{"type":38,"tag":211,"props":457,"children":458},{"style":218},[459],{"type":44,"value":460},">",{"type":38,"tag":211,"props":462,"children":463},{"style":264},[464],{"type":44,"value":465},"`\n",{"type":38,"tag":211,"props":467,"children":469},{"class":213,"line":468},16,[470],{"type":38,"tag":211,"props":471,"children":472},{"style":264},[473],{"type":44,"value":474},"- ...\n",{"type":38,"tag":211,"props":476,"children":478},{"class":213,"line":477},17,[479],{"type":38,"tag":211,"props":480,"children":481},{"emptyLinePlaceholder":323},[482],{"type":44,"value":326},{"type":38,"tag":211,"props":484,"children":486},{"class":213,"line":485},18,[487],{"type":38,"tag":211,"props":488,"children":489},{"style":264},[490],{"type":44,"value":491},"# Constraints\n",{"type":38,"tag":211,"props":493,"children":495},{"class":213,"line":494},19,[496,501,505,510,515,520,525],{"type":38,"tag":211,"props":497,"children":498},{"style":264},[499],{"type":44,"value":500},"- ",{"type":38,"tag":211,"props":502,"children":503},{"style":218},[504],{"type":44,"value":350},{"type":38,"tag":211,"props":506,"children":507},{"style":228},[508],{"type":44,"value":509},"what",{"type":38,"tag":211,"props":511,"children":512},{"style":358},[513],{"type":44,"value":514}," not",{"type":38,"tag":211,"props":516,"children":517},{"style":358},[518],{"type":44,"value":519}," to",{"type":38,"tag":211,"props":521,"children":522},{"style":358},[523],{"type":44,"value":524}," change",{"type":38,"tag":211,"props":526,"children":527},{"style":218},[528],{"type":44,"value":366},{"type":38,"tag":211,"props":530,"children":532},{"class":213,"line":531},20,[533],{"type":38,"tag":211,"props":534,"children":535},{"emptyLinePlaceholder":323},[536],{"type":44,"value":326},{"type":38,"tag":211,"props":538,"children":540},{"class":213,"line":539},21,[541],{"type":38,"tag":211,"props":542,"children":543},{"style":264},[544],{"type":44,"value":545},"# Progress Log\n",{"type":38,"tag":211,"props":547,"children":549},{"class":213,"line":548},22,[550,554,559,564,569,574,579,584,589,594],{"type":38,"tag":211,"props":551,"children":552},{"style":218},[553],{"type":44,"value":350},{"type":38,"tag":211,"props":555,"children":556},{"style":228},[557],{"type":44,"value":558},"append",{"type":38,"tag":211,"props":560,"children":561},{"style":358},[562],{"type":44,"value":563}," a",{"type":38,"tag":211,"props":565,"children":566},{"style":358},[567],{"type":44,"value":568}," one-line",{"type":38,"tag":211,"props":570,"children":571},{"style":358},[572],{"type":44,"value":573}," checkpoint",{"type":38,"tag":211,"props":575,"children":576},{"style":358},[577],{"type":44,"value":578}," after",{"type":38,"tag":211,"props":580,"children":581},{"style":358},[582],{"type":44,"value":583}," each",{"type":38,"tag":211,"props":585,"children":586},{"style":358},[587],{"type":44,"value":588}," validation",{"type":38,"tag":211,"props":590,"children":591},{"style":358},[592],{"type":44,"value":593}," pass",{"type":38,"tag":211,"props":595,"children":596},{"style":218},[597],{"type":44,"value":366},{"type":38,"tag":47,"props":599,"children":600},{},[601,606],{"type":38,"tag":81,"props":602,"children":604},{"className":603},[],[605],{"type":44,"value":294},{"type":44,"value":607}," is a safety budget. The agent MUST stop and report when it reaches this number even if the stop condition is not met, and ask the user how to proceed.",{"type":38,"tag":181,"props":609,"children":611},{"id":610},"sub-commands",[612],{"type":44,"value":613},"Sub-commands",{"type":38,"tag":47,"props":615,"children":616},{},[617,619,625],{"type":44,"value":618},"The ",{"type":38,"tag":81,"props":620,"children":622},{"className":621},[],[623],{"type":44,"value":624},"goal",{"type":44,"value":626}," skill dispatches to this skill. Behavior depends on the argument:",{"type":38,"tag":628,"props":629,"children":630},"table",{},[631,650],{"type":38,"tag":632,"props":633,"children":634},"thead",{},[635],{"type":38,"tag":636,"props":637,"children":638},"tr",{},[639,645],{"type":38,"tag":640,"props":641,"children":642},"th",{},[643],{"type":44,"value":644},"Invocation",{"type":38,"tag":640,"props":646,"children":647},{},[648],{"type":44,"value":649},"Action",{"type":38,"tag":651,"props":652,"children":653},"tbody",{},[654,692,723,748,771],{"type":38,"tag":636,"props":655,"children":656},{},[657,667],{"type":38,"tag":658,"props":659,"children":660},"td",{},[661],{"type":38,"tag":81,"props":662,"children":664},{"className":663},[],[665],{"type":44,"value":666},"\u002Fgoal \u003Cobjective>",{"type":38,"tag":658,"props":668,"children":669},{},[670,675,677,682,684,690],{"type":38,"tag":60,"props":671,"children":672},{},[673],{"type":44,"value":674},"Set.",{"type":44,"value":676}," Capture the four parts above (asking the user for anything missing), write ",{"type":38,"tag":81,"props":678,"children":680},{"className":679},[],[681],{"type":44,"value":86},{"type":44,"value":683}," with ",{"type":38,"tag":81,"props":685,"children":687},{"className":686},[],[688],{"type":44,"value":689},"status: active",{"type":44,"value":691},", then start the loop.",{"type":38,"tag":636,"props":693,"children":694},{},[695,706],{"type":38,"tag":658,"props":696,"children":697},{},[698,704],{"type":38,"tag":81,"props":699,"children":701},{"className":700},[],[702],{"type":44,"value":703},"\u002Fgoal",{"type":44,"value":705}," (no args)",{"type":38,"tag":658,"props":707,"children":708},{},[709,714,716,721],{"type":38,"tag":60,"props":710,"children":711},{},[712],{"type":44,"value":713},"Status.",{"type":44,"value":715}," Read ",{"type":38,"tag":81,"props":717,"children":719},{"className":718},[],[720],{"type":44,"value":86},{"type":44,"value":722}," and report objective, stop condition, status, checkpoint count, and the last few progress log lines. Do not take any other action.",{"type":38,"tag":636,"props":724,"children":725},{},[726,735],{"type":38,"tag":658,"props":727,"children":728},{},[729],{"type":38,"tag":81,"props":730,"children":732},{"className":731},[],[733],{"type":44,"value":734},"\u002Fgoal pause",{"type":38,"tag":658,"props":736,"children":737},{},[738,740,746],{"type":44,"value":739},"Set ",{"type":38,"tag":81,"props":741,"children":743},{"className":742},[],[744],{"type":44,"value":745},"status: paused",{"type":44,"value":747},". Do not iterate. Tell the user how to resume.",{"type":38,"tag":636,"props":749,"children":750},{},[751,760],{"type":38,"tag":658,"props":752,"children":753},{},[754],{"type":38,"tag":81,"props":755,"children":757},{"className":756},[],[758],{"type":44,"value":759},"\u002Fgoal resume",{"type":38,"tag":658,"props":761,"children":762},{},[763,764,769],{"type":44,"value":739},{"type":38,"tag":81,"props":765,"children":767},{"className":766},[],[768],{"type":44,"value":689},{"type":44,"value":770},". Re-read the goal and continue the loop from the latest checkpoint.",{"type":38,"tag":636,"props":772,"children":773},{},[774,783],{"type":38,"tag":658,"props":775,"children":776},{},[777],{"type":38,"tag":81,"props":778,"children":780},{"className":779},[],[781],{"type":44,"value":782},"\u002Fgoal clear",{"type":38,"tag":658,"props":784,"children":785},{},[786,787,793],{"type":44,"value":739},{"type":38,"tag":81,"props":788,"children":790},{"className":789},[],[791],{"type":44,"value":792},"status: cleared",{"type":44,"value":794}," and stop. Leave the file in place so the user can inspect history; do not delete it.",{"type":38,"tag":181,"props":796,"children":798},{"id":797},"the-loop",[799],{"type":44,"value":800},"The Loop",{"type":38,"tag":47,"props":802,"children":803},{},[804,806,811],{"type":44,"value":805},"When ",{"type":38,"tag":81,"props":807,"children":809},{"className":808},[],[810],{"type":44,"value":689},{"type":44,"value":812},", on every turn while there is work to do:",{"type":38,"tag":66,"props":814,"children":815},{},[816,833,851,861,871,881,898,913,926],{"type":38,"tag":70,"props":817,"children":818},{},[819,824,826,831],{"type":38,"tag":60,"props":820,"children":821},{},[822],{"type":44,"value":823},"Read",{"type":44,"value":825}," ",{"type":38,"tag":81,"props":827,"children":829},{"className":828},[],[830],{"type":44,"value":86},{"type":44,"value":832}," (objective, stop condition, validation, progress log).",{"type":38,"tag":70,"props":834,"children":835},{},[836,841,843,849],{"type":38,"tag":60,"props":837,"children":838},{},[839],{"type":44,"value":840},"Check stop condition.",{"type":44,"value":842}," Run the validation commands. If the stop condition is met → set ",{"type":38,"tag":81,"props":844,"children":846},{"className":845},[],[847],{"type":44,"value":848},"status: done",{"type":44,"value":850},", append a final checkpoint, report success, exit the loop.",{"type":38,"tag":70,"props":852,"children":853},{},[854,859],{"type":38,"tag":60,"props":855,"children":856},{},[857],{"type":44,"value":858},"Plan one checkpoint of work",{"type":44,"value":860}," — the next small, scoped step that moves toward the stop condition. Keep checkpoints small enough that validation runs between each.",{"type":38,"tag":70,"props":862,"children":863},{},[864,869],{"type":38,"tag":60,"props":865,"children":866},{},[867],{"type":44,"value":868},"Do the work",{"type":44,"value":870}," (edits, commands).",{"type":38,"tag":70,"props":872,"children":873},{},[874,879],{"type":38,"tag":60,"props":875,"children":876},{},[877],{"type":44,"value":878},"Validate",{"type":44,"value":880}," — run the validation commands.",{"type":38,"tag":70,"props":882,"children":883},{},[884,889,891,896],{"type":38,"tag":60,"props":885,"children":886},{},[887],{"type":44,"value":888},"Append a one-line entry to the progress log",{"type":44,"value":890}," in ",{"type":38,"tag":81,"props":892,"children":894},{"className":893},[],[895],{"type":44,"value":86},{"type":44,"value":897}," with what was done and the validation result.",{"type":38,"tag":70,"props":899,"children":900},{},[901,911],{"type":38,"tag":60,"props":902,"children":903},{},[904,906],{"type":44,"value":905},"Increment ",{"type":38,"tag":81,"props":907,"children":909},{"className":908},[],[910],{"type":44,"value":276},{"type":44,"value":912}," in the frontmatter.",{"type":38,"tag":70,"props":914,"children":915},{},[916,918,924],{"type":44,"value":917},"If ",{"type":38,"tag":81,"props":919,"children":921},{"className":920},[],[922],{"type":44,"value":923},"checkpoints >= max_checkpoints",{"type":44,"value":925}," → pause, report, ask the user how to proceed.",{"type":38,"tag":70,"props":927,"children":928},{},[929,931,937,939,945],{"type":44,"value":930},"If status was changed externally to ",{"type":38,"tag":81,"props":932,"children":934},{"className":933},[],[935],{"type":44,"value":936},"paused",{"type":44,"value":938}," or ",{"type":38,"tag":81,"props":940,"children":942},{"className":941},[],[943],{"type":44,"value":944},"cleared",{"type":44,"value":946}," → stop. Otherwise continue the loop.",{"type":38,"tag":47,"props":948,"children":949},{},[950],{"type":44,"value":951},"The progress log entries should be short and machine-skimmable, e.g.:",{"type":38,"tag":200,"props":953,"children":957},{"className":954,"code":956,"language":44},[955],"language-text","- 2026-05-16 14:02 — Migrated `auth\u002F` to new API. Tests: 184\u002F184 pass.\n- 2026-05-16 14:09 — Migrated `billing\u002F`. Tests: 184\u002F184 pass. Lint clean.\n",[958],{"type":38,"tag":81,"props":959,"children":960},{"__ignoreMap":205},[961],{"type":44,"value":956},{"type":38,"tag":181,"props":963,"children":965},{"id":964},"discipline",[966],{"type":44,"value":967},"Discipline",{"type":38,"tag":969,"props":970,"children":971},"ul",{},[972,982,998,1007,1012],{"type":38,"tag":70,"props":973,"children":974},{},[975,980],{"type":38,"tag":60,"props":976,"children":977},{},[978],{"type":44,"value":979},"Never",{"type":44,"value":981}," continue past a failed validation without diagnosing the failure first. A failed validation is a checkpoint event — log it, fix the cause, then re-validate.",{"type":38,"tag":70,"props":983,"children":984},{},[985,989,991,996],{"type":38,"tag":60,"props":986,"children":987},{},[988],{"type":44,"value":979},{"type":44,"value":990}," silently expand scope. If the work requires touching something in ",{"type":38,"tag":81,"props":992,"children":994},{"className":993},[],[995],{"type":44,"value":172},{"type":44,"value":997},", pause and surface it.",{"type":38,"tag":70,"props":999,"children":1000},{},[1001,1005],{"type":38,"tag":60,"props":1002,"children":1003},{},[1004],{"type":44,"value":979},{"type":44,"value":1006}," invent a stop condition. If the user can't articulate one, the goal is not ready — push back.",{"type":38,"tag":70,"props":1008,"children":1009},{},[1010],{"type":44,"value":1011},"Keep the progress log truthful. Do not log \"tests pass\" without running them.",{"type":38,"tag":70,"props":1013,"children":1014},{},[1015],{"type":44,"value":1016},"One active goal at a time. If the user sets a new goal while one is active, ask whether to replace, pause, or clear the existing one first.",{"type":38,"tag":181,"props":1018,"children":1020},{"id":1019},"when-to-use-vs-when-not-to",[1021],{"type":44,"value":1022},"When to use vs. when not to",{"type":38,"tag":47,"props":1024,"children":1025},{},[1026],{"type":44,"value":1027},"Use a goal when:",{"type":38,"tag":969,"props":1029,"children":1030},{},[1031,1036,1041],{"type":38,"tag":70,"props":1032,"children":1033},{},[1034],{"type":44,"value":1035},"The work has a clear, verifiable end state (a test suite green, a migration complete, a build artifact matches a spec).",{"type":38,"tag":70,"props":1037,"children":1038},{},[1039],{"type":44,"value":1040},"The work is too big for one turn but small enough that progress is measurable.",{"type":38,"tag":70,"props":1042,"children":1043},{},[1044],{"type":44,"value":1045},"The user wants to step away while the agent iterates.",{"type":38,"tag":47,"props":1047,"children":1048},{},[1049],{"type":44,"value":1050},"Do not use a goal for:",{"type":38,"tag":969,"props":1052,"children":1053},{},[1054,1059,1064],{"type":38,"tag":70,"props":1055,"children":1056},{},[1057],{"type":44,"value":1058},"A loose grab-bag of unrelated tasks. Use a todo list instead.",{"type":38,"tag":70,"props":1060,"children":1061},{},[1062],{"type":44,"value":1063},"Work where \"done\" is subjective (design polish, prose). Use normal review skills instead.",{"type":38,"tag":70,"props":1065,"children":1066},{},[1067],{"type":44,"value":1068},"Anything destructive without rollback (production deploys, force pushes). The loop is not for irreversible operations.",{"type":38,"tag":1070,"props":1071,"children":1072},"style",{},[1073],{"type":44,"value":1074},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":1076,"total":1269},[1077,1099,1118,1139,1154,1171,1182,1195,1210,1225,1244,1257],{"slug":1078,"name":1078,"fn":1079,"description":1080,"org":1081,"tags":1082,"stars":1096,"repoUrl":1097,"updatedAt":1098},"rushstack-best-practices","manage Rush monorepos with best practices","Provides best practices and guidance for working with Rush monorepos. Use when the user is working in a Rush-based repository, asks about Rush commands (install, update, build, rebuild), needs help with project selection, dependency management, build caching, subspace configuration, or troubleshooting Rush-specific issues.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1083,1086,1089,1090,1093],{"name":1084,"slug":1085,"type":15},"Engineering","engineering",{"name":1087,"slug":1088,"type":15},"Local Development","local-development",{"name":9,"slug":8,"type":15},{"name":1091,"slug":1092,"type":15},"Project Management","project-management",{"name":1094,"slug":1095,"type":15},"Rush","rush",6484,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Frushstack","2026-04-06T18:34:44.965032",{"slug":1100,"name":1100,"fn":1101,"description":1102,"org":1103,"tags":1104,"stars":1115,"repoUrl":1116,"updatedAt":1117},"azure-ai-agents-persistent-dotnet","build AI agents with Azure .NET SDK","Azure AI Agents Persistent SDK for .NET. Low-level SDK for creating and managing AI agents with threads, messages, runs, and tools. Use for agent CRUD, conversation threads, streaming responses, function calling, file search, and code interpreter. Triggers: \"PersistentAgentsClient\", \"persistent agents\", \"agent threads\", \"agent runs\", \"streaming agents\", \"function calling agents .NET\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1105,1108,1109,1112],{"name":1106,"slug":1107,"type":15},".NET","net",{"name":18,"slug":19,"type":15},{"name":1110,"slug":1111,"type":15},"Azure","azure",{"name":1113,"slug":1114,"type":15},"LLM","llm",2804,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fskills","2026-07-03T16:32:10.297433",{"slug":1119,"name":1119,"fn":1120,"description":1121,"org":1122,"tags":1123,"stars":1115,"repoUrl":1116,"updatedAt":1138},"azure-ai-anomalydetector-java","build anomaly detection applications with Java","Build anomaly detection applications with Azure AI Anomaly Detector SDK for Java. Use when implementing univariate\u002Fmultivariate anomaly detection, time-series analysis, or AI-powered monitoring.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1124,1127,1128,1131,1134,1135],{"name":1125,"slug":1126,"type":15},"Analytics","analytics",{"name":1110,"slug":1111,"type":15},{"name":1129,"slug":1130,"type":15},"Data Analysis","data-analysis",{"name":1132,"slug":1133,"type":15},"Java","java",{"name":9,"slug":8,"type":15},{"name":1136,"slug":1137,"type":15},"Monitoring","monitoring","2026-05-13T06:14:16.261754",{"slug":1140,"name":1140,"fn":1141,"description":1142,"org":1143,"tags":1144,"stars":1115,"repoUrl":1116,"updatedAt":1153},"azure-ai-contentsafety-java","build content moderation applications with Azure AI","Build content moderation applications with Azure AI Content Safety SDK for Java. Use when implementing text\u002Fimage analysis, blocklist management, or harm detection for hate, violence, sexual content, and self-harm.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1145,1148,1149,1150],{"name":1146,"slug":1147,"type":15},"AI Infrastructure","ai-infrastructure",{"name":1110,"slug":1111,"type":15},{"name":1132,"slug":1133,"type":15},{"name":1151,"slug":1152,"type":15},"Security","security","2026-07-07T06:53:31.293235",{"slug":1155,"name":1155,"fn":1156,"description":1157,"org":1158,"tags":1159,"stars":1115,"repoUrl":1116,"updatedAt":1170},"azure-ai-contentsafety-py","detect harmful content with Azure AI Content Safety","Azure AI Content Safety SDK for Python. Use for detecting harmful content in text and images with multi-severity classification.\nTriggers: \"azure-ai-contentsafety\", \"ContentSafetyClient\", \"content moderation\", \"harmful content\", \"text analysis\", \"image analysis\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1160,1161,1164,1165,1166,1169],{"name":1110,"slug":1111,"type":15},{"name":1162,"slug":1163,"type":15},"Compliance","compliance",{"name":1113,"slug":1114,"type":15},{"name":9,"slug":8,"type":15},{"name":1167,"slug":1168,"type":15},"Python","python",{"name":1151,"slug":1152,"type":15},"2026-07-18T05:14:23.017504",{"slug":1172,"name":1172,"fn":1173,"description":1174,"org":1175,"tags":1176,"stars":1115,"repoUrl":1116,"updatedAt":1181},"azure-ai-language-conversations-py","implement conversational language understanding with Python","Implement Conversational Language Understanding (CLU) using the azure-ai-language-conversations Python SDK. Use when working with ConversationAnalysisClient to analyze conversation intent and entities, building NLP features, or integrating language understanding into applications.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1177,1178,1179,1180],{"name":1125,"slug":1126,"type":15},{"name":1110,"slug":1111,"type":15},{"name":1113,"slug":1114,"type":15},{"name":1167,"slug":1168,"type":15},"2026-07-31T05:54:29.068751",{"slug":1183,"name":1183,"fn":1184,"description":1185,"org":1186,"tags":1187,"stars":1115,"repoUrl":1116,"updatedAt":1194},"azure-ai-translation-text-py","translate text using Azure AI services","Azure AI Text Translation SDK for real-time text translation, transliteration, language detection, and dictionary lookup. Use for translating text content in applications.\nTriggers: \"text translation\", \"translator\", \"translate text\", \"transliterate\", \"TextTranslationClient\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1188,1191,1192,1193],{"name":1189,"slug":1190,"type":15},"API Development","api-development",{"name":1110,"slug":1111,"type":15},{"name":9,"slug":8,"type":15},{"name":1167,"slug":1168,"type":15},"2026-07-18T05:14:16.988376",{"slug":1196,"name":1196,"fn":1197,"description":1198,"org":1199,"tags":1200,"stars":1115,"repoUrl":1116,"updatedAt":1209},"azure-ai-vision-imageanalysis-py","analyze images with Azure AI Vision","Azure AI Vision Image Analysis SDK for captions, tags, objects, OCR, people detection, and smart cropping. Use for computer vision and image understanding tasks.\nTriggers: \"image analysis\", \"computer vision\", \"OCR\", \"object detection\", \"ImageAnalysisClient\", \"image caption\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1201,1202,1205,1208],{"name":1110,"slug":1111,"type":15},{"name":1203,"slug":1204,"type":15},"Computer Vision","computer-vision",{"name":1206,"slug":1207,"type":15},"Images","images",{"name":1167,"slug":1168,"type":15},"2026-07-18T05:14:18.007737",{"slug":1211,"name":1211,"fn":1212,"description":1213,"org":1214,"tags":1215,"stars":1115,"repoUrl":1116,"updatedAt":1224},"azure-appconfiguration-java","manage configuration with Azure App Configuration","Azure App Configuration SDK for Java. Centralized application configuration management with key-value settings, feature flags, and snapshots.\nTriggers: \"ConfigurationClient java\", \"app configuration java\", \"feature flag java\", \"configuration setting java\", \"azure config java\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1216,1217,1220,1223],{"name":1110,"slug":1111,"type":15},{"name":1218,"slug":1219,"type":15},"Configuration","configuration",{"name":1221,"slug":1222,"type":15},"Feature Flags","feature-flags",{"name":1132,"slug":1133,"type":15},"2026-07-03T16:32:01.278468",{"slug":1226,"name":1226,"fn":1227,"description":1228,"org":1229,"tags":1230,"stars":1115,"repoUrl":1116,"updatedAt":1243},"azure-cosmos-rust","build applications with Azure Cosmos DB","Azure Cosmos DB library for Rust (NoSQL API). Document CRUD, containers, and globally distributed data.\nTriggers: \"cosmos db rust\", \"CosmosClient rust\", \"document crud rust\", \"NoSQL rust\", \"partition key rust\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1231,1234,1237,1240],{"name":1232,"slug":1233,"type":15},"Cosmos DB","cosmos-db",{"name":1235,"slug":1236,"type":15},"Database","database",{"name":1238,"slug":1239,"type":15},"NoSQL","nosql",{"name":1241,"slug":1242,"type":15},"Rust","rust","2026-07-31T05:54:27.021432",{"slug":1245,"name":1245,"fn":1227,"description":1246,"org":1247,"tags":1248,"stars":1115,"repoUrl":1116,"updatedAt":1256},"azure-cosmos-ts","Azure Cosmos DB JavaScript\u002FTypeScript SDK (@azure\u002Fcosmos) for data plane operations. Use for CRUD operations on documents, queries, bulk operations, and container management. Triggers: \"Cosmos DB\", \"@azure\u002Fcosmos\", \"CosmosClient\", \"document CRUD\", \"NoSQL queries\", \"bulk operations\", \"partition key\", \"container.items\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1249,1250,1251,1252,1253],{"name":1232,"slug":1233,"type":15},{"name":1235,"slug":1236,"type":15},{"name":9,"slug":8,"type":15},{"name":1238,"slug":1239,"type":15},{"name":1254,"slug":1255,"type":15},"TypeScript","typescript","2026-07-03T16:31:19.368382",{"slug":1258,"name":1258,"fn":1259,"description":1260,"org":1261,"tags":1262,"stars":1115,"repoUrl":1116,"updatedAt":1268},"azure-data-tables-java","build table storage applications with Java","Build table storage applications with Azure Tables SDK for Java. Use when working with Azure Table Storage or Cosmos DB Table API for NoSQL key-value data, schemaless storage, or structured data at scale.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1263,1264,1265,1266,1267],{"name":1110,"slug":1111,"type":15},{"name":1232,"slug":1233,"type":15},{"name":1235,"slug":1236,"type":15},{"name":1132,"slug":1133,"type":15},{"name":1238,"slug":1239,"type":15},"2026-05-13T06:14:17.582229",267,{"items":1271,"total":421},[1272,1289,1304,1310,1321,1332,1341],{"slug":1273,"name":1273,"fn":1274,"description":1275,"org":1276,"tags":1277,"stars":20,"repoUrl":21,"updatedAt":1288},"council-plan","perform multi-model council planning","Multi-model council planning for implementation and architecture decisions. Use when the user asks to 'plan with council', 'multi-model plan', 'get different perspectives on approach', 'council plan', or wants multiple models to independently propose plans for the same task. Also use when the user asks to 'debate approaches', 'compare strategies', or 'cross-plan'.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1278,1281,1282,1285],{"name":1279,"slug":1280,"type":15},"Architecture","architecture",{"name":1084,"slug":1085,"type":15},{"name":1283,"slug":1284,"type":15},"Multi-Agent","multi-agent",{"name":1286,"slug":1287,"type":15},"System Design","system-design","2026-05-13T06:14:08.529779",{"slug":1290,"name":1290,"fn":1291,"description":1292,"org":1293,"tags":1294,"stars":20,"repoUrl":21,"updatedAt":1303},"council-review","perform multi-model council code reviews","Multi-model council review for diffs, pull requests, and risky changes. It is CRITICAL to use this skill after ANY non-trivial development phase — changes are usually not 100% correct. Development CANNOT be called done until the code has been reviewed. Use whenever the user asks for a review, PR feedback, a bug hunt in recent edits, or wants multiple models to inspect the same change independently. Also use when the user asks to 'discuss findings', 'cross-review', or 'debate' review results between models.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1295,1298,1299,1300],{"name":1296,"slug":1297,"type":15},"Code Review","code-review",{"name":1084,"slug":1085,"type":15},{"name":1283,"slug":1284,"type":15},{"name":1301,"slug":1302,"type":15},"Pull Requests","pull-requests","2026-05-13T06:14:07.202801",{"slug":4,"name":4,"fn":5,"description":6,"org":1305,"tags":1306,"stars":20,"repoUrl":21,"updatedAt":22},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1307,1308,1309],{"name":18,"slug":19,"type":15},{"name":9,"slug":8,"type":15},{"name":13,"slug":14,"type":15},{"slug":1311,"name":1311,"fn":1312,"description":1313,"org":1314,"tags":1315,"stars":20,"repoUrl":21,"updatedAt":1320},"inbox-add-reaction","add reactions to GitHub issues and PRs","Add a reaction to a GitHub issue or pull request",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1316,1319],{"name":1317,"slug":1318,"type":15},"GitHub","github",{"name":1301,"slug":1302,"type":15},"2026-07-07T06:53:33.958298",{"slug":1322,"name":1322,"fn":1323,"description":1324,"org":1325,"tags":1326,"stars":20,"repoUrl":21,"updatedAt":1331},"inbox-install-gh-cli","install GitHub CLI","Install the GitHub CLI (gh) if not already installed",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1327,1330],{"name":1328,"slug":1329,"type":15},"CLI","cli",{"name":1317,"slug":1318,"type":15},"2026-05-13T06:14:05.911879",{"slug":1333,"name":1333,"fn":1334,"description":1335,"org":1336,"tags":1337,"stars":20,"repoUrl":21,"updatedAt":1340},"inbox-mark-all-read","mark GitHub notifications as read","Mark all GitHub notifications as read",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1338,1339],{"name":1317,"slug":1318,"type":15},{"name":13,"slug":14,"type":15},"2026-05-13T06:14:02.019522",{"slug":1342,"name":1342,"fn":1343,"description":1344,"org":1345,"tags":1346,"stars":20,"repoUrl":21,"updatedAt":1352},"inbox-memory","manage agent memory and rules","Read and write agent storage — memory and rules with environment-aware fallback",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1347,1348,1349],{"name":18,"slug":19,"type":15},{"name":1218,"slug":1219,"type":15},{"name":1350,"slug":1351,"type":15},"Memory","memory","2026-05-13T06:14:00.740431"]