[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M7352Y31YM4STJ5MDR48ZQBW":3,"skill-same:01M7352Y31YM4STJ5MDR48ZQBW":51},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":19,"linkOnly":20,"markdownContent":21,"markdownBody":22,"frontMatter":23,"refName":30,"commitSha":31,"skillDirectory":32,"forksCount":33,"repositoryHtmlUrl":34,"repositoryHomepageUrl":35,"ownerHtmlUrl":36,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":37,"install":38,"resources":50},"01M7352Y31YM4STJ5MDR48ZQBW","empty-promise",null,"Investigate and correct empty promises.","Morrison-Lab\u002Fai-config","Morrison-Lab","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F104235520?v=4","01M734G0451S2G35MN4HFQK7XP","Morrison Lab","01M734G059BYFDFQA8YTPDGPMH",4,"MIT","https:\u002F\u002Fgithub.com\u002FMorrison-Lab\u002Fai-config\u002Fblob\u002Fmain\u002Fskills\u002Fempty-promise\u002FSKILL.md",[],[],"2026-11-11 15:11:14",false,"---\nname: empty-promise\ndescription: \"Investigate and correct empty promises.\"\nuser-invocable: true\nallowed-tools:\n  - Bash\n  - Read\n  - Edit\n  - Write\n---\n\n# empty-promise — audit conversation context and discharge empty promises immediately\n\nAudit recent conversation history and assistant turns for forward-looking\ncommitments, debt declarations, and unmonitored automation claims\nmade without an immediate enforcement mechanism shipped in the same turn.\nIdentify what mechanism is owed\nand implement or file it immediately to clear the debt.\n\nThe operational counterpart to [`shared\u002Fworkflow\u002Fno-empty-promises.md`](..\u002F..\u002Fshared\u002Fworkflow\u002Fno-empty-promises.md)\nand the \"No empty promises\" bullet of `AGENTS.md`'s \"Leave every pause honest and resumable\".\n\n## When this fires\n\n- \"empty-promise\", \"ep\", \"\u002Fep\", \"check for empty promises\", \"investigate empty\n  promises\", \"discharge promise debts\", \"did we make an empty promise?\", \"audit\n  promises\", \"correct empty promises\".\n- **When a Stop hook or guard (`hooks\u002Fno-empty-promise.py`) blocks or warns on an\n  undischarged commitment or debt phrasing.**\n- **At reflective checkpoints** — during `ums`, `wrap-up`, `post-merge`, or\n  immediately after a mistake or correction was acknowledged.\n- **Proactive self-check** — whenever reviewing recent turns where future behavior\n  was discussed or committed to.\n\n## Two kinds of promises, two kinds of mechanisms\n\nA promise about future behavior is not work:\nit is a claim that work will happen later,\nmade in a conversation that will not outlive it.\nEvery commitment must ship an **implemented accountability mechanism in the same turn** ---\nor not be made at all.\n\n### 1. Rule promises (standing policy \u002F future behavior)\n\nCommits to a class of future occasions — *\"going forward I will X\"*, *\"from now\non I won't Y\"*, *\"I'll always Z\"*, *\"I won't do that again\"*, *\"in future sessions\nI will...\"*.\n\n- **Owed mechanism**: A **durable, inspectable artifact** written in the same\n  turn:\n  - A memory or rule entry (`memories\u002F`, `CLAUDE.md`, `AGENTS.md`, `shared\u002F`\n    fragment, or repo agent docs).\n  - An enforcement hook (`hooks\u002F` + `hooks\u002Ftest-*.py` + `hooks\u002Fhooks.json` +\n    README table row) when the condition is decidable.\n  - A filed issue when the mechanism is real work someone has to schedule.\n- **Crucial boundary**: A timer or wakeup does **NOT** clear a rule promise — a\n  timer fires once and dies, so it cannot keep a standing rule.\n- **Honest alternative**: If no mechanism is worth building, **drop the promise\n  and state the plain fact** (*\"I was wrong about X, and here is the corrected\n  state Y\"*).\n\n### 2. Debt promises (owed actions)\n\nCommits to one specific outstanding action — *\"the UMS pass is owed by me\"*,\n*\"I owe #1937 the ARDI loop\"*, *\"I still owe that follow-up\"*, *\"owed by me\"*.\n\n- **Owed mechanism**: An **active firing trigger or immediate execution**:\n  - Perform the owed action immediately in the current turn (run UMS, run the\n    ARDI loop, run verification).\n  - Arm an active wake mechanism (`ScheduleWakeup`, timer, scheduled cron\u002Ftask,\n    or PR watcher \u002F detached poller) carrying the concrete next step, and report\n    the firing time in local Pacific Time.\n  - File a tracking issue when the debt belongs to somebody else to schedule.\n- **Crucial boundary**: A written memory entry alone is the wrong instinct\n  when the debt is yours and has an actionable next step;\n  documenting an ARDI loop is not running one.\n  Arm or run it!\n\n### 3. Future automation claims\n\nClaims that external systems will complete work later — *\"GitHub Actions will run\nCI\"*, *\"the review bot will post a review\"*, *\"GitLab will run the pipeline\"*.\n\n- **Owed mechanism**: Inspect live status immediately, or arm an explicit\n  monitor for the result and report its schedule.\n\n## Procedure\n\n### 1. Scan recent context and transcripts\n\nInspect recent assistant turns in the conversation context or review transcript\nlogs:\n\n```bash\n# Check recent Claude transcript entries if accessible\ngrep -E \"going forward|from now on|I'll always|I will always|won't do that again|owed by me|I owe|still owe|an owed\" \\\n  ~\u002F.claude\u002Fprojects\u002F*\u002F*.jsonl 2>\u002Fdev\u002Fnull | tail -n 20 || true\n```\n\nScan for signal phrases:\n- **Rule modals**: `going forward`, `from now on`, `I will always`, `I'll always`,\n  `I won't`, `won't do that again`, `in future sessions`, `next time I'll`.\n- **Debt language**: `owed by me`, `I owe`, `I still owe`, `an owed pass`,\n  `debt is owed`.\n- **Unverified automation**: `CI will finish`, `bot will review`, `pipeline will run`.\n\n### 2. Audit same-turn mechanism delivery\n\nFor every identified candidate commitment, check what tools executed in that same\nturn:\n- Did the turn write to a durable rule surface (`memories\u002F`, `AGENTS.md`, `CLAUDE.md`,\n  `shared\u002F`, `skills\u002F`, `hooks\u002F`)?\n- Did the turn arm an active timer, scheduled task, or detached poller?\n- Did the turn file an issue on GitHub \u002F GitLab?\n- Did the turn execute the owed action directly?\n\nIf no matching mechanism was shipped, the commitment is an **undischarged empty\npromise**.\n\n### 3. Classify and select the corrective mechanism\n\nFor each undischarged empty promise, select the appropriate mechanism:\n\n| Promise Type | Example Phrasing | Required Corrective Mechanism |\n|---|---|---|\n| **Standing Rule** | *\"Going forward I'll check X before Y\"* | Update `memories\u002F\u003Ctopic>.md`, `AGENTS.md`, or implement a hook in `hooks\u002F`. Or retract the promise and state the fact. |\n| **Owed Action** | *\"The UMS pass is owed by me\"* | Run the UMS pass immediately in the current turn. |\n| **Owed Loop \u002F Watch** | *\"I owe PR #123 the ARDI loop\"* | Arm a wakeup \u002F timer \u002F PR watcher carrying the next step; report clock time in Pacific Time. |\n| **External Debt** | *\"We still owe a refactor of module Z\"* | File a tracked GitHub\u002FGitLab issue immediately and link it. |\n| **Automation Claim** | *\"CI will run and verify the build\"* | Query live check-runs immediately; arm a poller if pending. |\n\n### 4. Implement and deliver the mechanism\n\nExecute the selected remedy immediately:\n- **Write memory\u002Frule**: Edit the target memory file or shared fragment in an\n  isolated worktree, ensuring grep deduplication and line-cap rules are respected.\n- **Scaffold hook**: Implement `hooks\u002F\u003Cname>.py`, test suite `hooks\u002Ftest-\u003Cname>.py`,\n  and manifest entry in `hooks\u002Fhooks.json`.\n- **Execute owed action**: Run the skipped procedure (e.g. UMS pass, test suite,\n  adversarial review).\n- **Arm timer \u002F watcher**: Schedule the wakeup or PR poller and record the exact\n  local firing time.\n- **File issue**: Create the tracking issue using `gh issue create` or `glab issue\n  create`.\n\n### 5. Report discharged debts\n\nPresent a structured summary table in the response:\n\n| Identified Promise \u002F Debt | Category | Delivered Mechanism | Status |\n|---|---|---|---|\n| *\"Going forward I will check X\"* | Rule Promise | Updated `memories\u002Fpreferences.md` | Discharged |\n| *\"UMS pass is owed by me\"* | Owed Action | Executed UMS pass in PR #... | Discharged |\n| *\"I owe #123 the ARDI loop\"* | Owed Action | Armed wakeup for 12:45 PDT | Discharged |\n\nInclude a Pacific-time timestamp (`TZ=America\u002FLos_Angeles date \"+%Y-%m-%d %H:%M %Z\"`)\nand confirm that all empty promises in the audited context are cleared.\n\n## Relationship to other skills\n\n- **`ums`** — updates memories and skills when lessons are learned; `empty-promise`\n  specifically audits conversation turns for unbacked promises and enforces\n  immediate mechanism delivery.\n- **`defer-issue`** — files tracking issues when intentionally deferring work;\n  `empty-promise` clears behavioral debts and promises made in conversation.\n- **`recover-followups`** — audits closed PRs\u002Fissues for dropped follow-ups;\n  `empty-promise` audits live session context for undischarged agent promises.\n- **`wrap-up` \u002F `post-merge`** — session and PR closing checkpoints where an\n  `empty-promise` audit ensures no unbacked commitments linger.\n- **`workaround-watcher`** — monitors open PRs\u002Fissues; can serve as the active\n  firing mechanism for debt promises on external review state.\n\n## Anti-patterns\n\n- ❌ Promising a future fix or hook (\"*I'll add a hook for this*\") instead of\n  shipping it in the current turn.\n- ❌ Treating an apology, an explanation, or a restatement of the rule as a\n  mechanism.\n- ❌ Writing a memory entry for an owed action instead of running or arming it\n  (documenting an ARDI loop is not running one).\n- ❌ Arming a one-off timer to keep a standing rule (timers fire once and die;\n  they cannot enforce standing policy).\n- ❌ Asserting automation will finish without checking live state or arming a\n  monitor.\n- ❌ Manufacturing promises when the audit is clean.\n","# empty-promise — audit conversation context and discharge empty promises immediately\n\nAudit recent conversation history and assistant turns for forward-looking\ncommitments, debt declarations, and unmonitored automation claims\nmade without an immediate enforcement mechanism shipped in the same turn.\nIdentify what mechanism is owed\nand implement or file it immediately to clear the debt.\n\nThe operational counterpart to [`shared\u002Fworkflow\u002Fno-empty-promises.md`](..\u002F..\u002Fshared\u002Fworkflow\u002Fno-empty-promises.md)\nand the \"No empty promises\" bullet of `AGENTS.md`'s \"Leave every pause honest and resumable\".\n\n## When this fires\n\n- \"empty-promise\", \"ep\", \"\u002Fep\", \"check for empty promises\", \"investigate empty\n  promises\", \"discharge promise debts\", \"did we make an empty promise?\", \"audit\n  promises\", \"correct empty promises\".\n- **When a Stop hook or guard (`hooks\u002Fno-empty-promise.py`) blocks or warns on an\n  undischarged commitment or debt phrasing.**\n- **At reflective checkpoints** — during `ums`, `wrap-up`, `post-merge`, or\n  immediately after a mistake or correction was acknowledged.\n- **Proactive self-check** — whenever reviewing recent turns where future behavior\n  was discussed or committed to.\n\n## Two kinds of promises, two kinds of mechanisms\n\nA promise about future behavior is not work:\nit is a claim that work will happen later,\nmade in a conversation that will not outlive it.\nEvery commitment must ship an **implemented accountability mechanism in the same turn** ---\nor not be made at all.\n\n### 1. Rule promises (standing policy \u002F future behavior)\n\nCommits to a class of future occasions — *\"going forward I will X\"*, *\"from now\non I won't Y\"*, *\"I'll always Z\"*, *\"I won't do that again\"*, *\"in future sessions\nI will...\"*.\n\n- **Owed mechanism**: A **durable, inspectable artifact** written in the same\n  turn:\n  - A memory or rule entry (`memories\u002F`, `CLAUDE.md`, `AGENTS.md`, `shared\u002F`\n    fragment, or repo agent docs).\n  - An enforcement hook (`hooks\u002F` + `hooks\u002Ftest-*.py` + `hooks\u002Fhooks.json` +\n    README table row) when the condition is decidable.\n  - A filed issue when the mechanism is real work someone has to schedule.\n- **Crucial boundary**: A timer or wakeup does **NOT** clear a rule promise — a\n  timer fires once and dies, so it cannot keep a standing rule.\n- **Honest alternative**: If no mechanism is worth building, **drop the promise\n  and state the plain fact** (*\"I was wrong about X, and here is the corrected\n  state Y\"*).\n\n### 2. Debt promises (owed actions)\n\nCommits to one specific outstanding action — *\"the UMS pass is owed by me\"*,\n*\"I owe #1937 the ARDI loop\"*, *\"I still owe that follow-up\"*, *\"owed by me\"*.\n\n- **Owed mechanism**: An **active firing trigger or immediate execution**:\n  - Perform the owed action immediately in the current turn (run UMS, run the\n    ARDI loop, run verification).\n  - Arm an active wake mechanism (`ScheduleWakeup`, timer, scheduled cron\u002Ftask,\n    or PR watcher \u002F detached poller) carrying the concrete next step, and report\n    the firing time in local Pacific Time.\n  - File a tracking issue when the debt belongs to somebody else to schedule.\n- **Crucial boundary**: A written memory entry alone is the wrong instinct\n  when the debt is yours and has an actionable next step;\n  documenting an ARDI loop is not running one.\n  Arm or run it!\n\n### 3. Future automation claims\n\nClaims that external systems will complete work later — *\"GitHub Actions will run\nCI\"*, *\"the review bot will post a review\"*, *\"GitLab will run the pipeline\"*.\n\n- **Owed mechanism**: Inspect live status immediately, or arm an explicit\n  monitor for the result and report its schedule.\n\n## Procedure\n\n### 1. Scan recent context and transcripts\n\nInspect recent assistant turns in the conversation context or review transcript\nlogs:\n\n```bash\n# Check recent Claude transcript entries if accessible\ngrep -E \"going forward|from now on|I'll always|I will always|won't do that again|owed by me|I owe|still owe|an owed\" \\\n  ~\u002F.claude\u002Fprojects\u002F*\u002F*.jsonl 2>\u002Fdev\u002Fnull | tail -n 20 || true\n```\n\nScan for signal phrases:\n- **Rule modals**: `going forward`, `from now on`, `I will always`, `I'll always`,\n  `I won't`, `won't do that again`, `in future sessions`, `next time I'll`.\n- **Debt language**: `owed by me`, `I owe`, `I still owe`, `an owed pass`,\n  `debt is owed`.\n- **Unverified automation**: `CI will finish`, `bot will review`, `pipeline will run`.\n\n### 2. Audit same-turn mechanism delivery\n\nFor every identified candidate commitment, check what tools executed in that same\nturn:\n- Did the turn write to a durable rule surface (`memories\u002F`, `AGENTS.md`, `CLAUDE.md`,\n  `shared\u002F`, `skills\u002F`, `hooks\u002F`)?\n- Did the turn arm an active timer, scheduled task, or detached poller?\n- Did the turn file an issue on GitHub \u002F GitLab?\n- Did the turn execute the owed action directly?\n\nIf no matching mechanism was shipped, the commitment is an **undischarged empty\npromise**.\n\n### 3. Classify and select the corrective mechanism\n\nFor each undischarged empty promise, select the appropriate mechanism:\n\n| Promise Type | Example Phrasing | Required Corrective Mechanism |\n|---|---|---|\n| **Standing Rule** | *\"Going forward I'll check X before Y\"* | Update `memories\u002F\u003Ctopic>.md`, `AGENTS.md`, or implement a hook in `hooks\u002F`. Or retract the promise and state the fact. |\n| **Owed Action** | *\"The UMS pass is owed by me\"* | Run the UMS pass immediately in the current turn. |\n| **Owed Loop \u002F Watch** | *\"I owe PR #123 the ARDI loop\"* | Arm a wakeup \u002F timer \u002F PR watcher carrying the next step; report clock time in Pacific Time. |\n| **External Debt** | *\"We still owe a refactor of module Z\"* | File a tracked GitHub\u002FGitLab issue immediately and link it. |\n| **Automation Claim** | *\"CI will run and verify the build\"* | Query live check-runs immediately; arm a poller if pending. |\n\n### 4. Implement and deliver the mechanism\n\nExecute the selected remedy immediately:\n- **Write memory\u002Frule**: Edit the target memory file or shared fragment in an\n  isolated worktree, ensuring grep deduplication and line-cap rules are respected.\n- **Scaffold hook**: Implement `hooks\u002F\u003Cname>.py`, test suite `hooks\u002Ftest-\u003Cname>.py`,\n  and manifest entry in `hooks\u002Fhooks.json`.\n- **Execute owed action**: Run the skipped procedure (e.g. UMS pass, test suite,\n  adversarial review).\n- **Arm timer \u002F watcher**: Schedule the wakeup or PR poller and record the exact\n  local firing time.\n- **File issue**: Create the tracking issue using `gh issue create` or `glab issue\n  create`.\n\n### 5. Report discharged debts\n\nPresent a structured summary table in the response:\n\n| Identified Promise \u002F Debt | Category | Delivered Mechanism | Status |\n|---|---|---|---|\n| *\"Going forward I will check X\"* | Rule Promise | Updated `memories\u002Fpreferences.md` | Discharged |\n| *\"UMS pass is owed by me\"* | Owed Action | Executed UMS pass in PR #... | Discharged |\n| *\"I owe #123 the ARDI loop\"* | Owed Action | Armed wakeup for 12:45 PDT | Discharged |\n\nInclude a Pacific-time timestamp (`TZ=America\u002FLos_Angeles date \"+%Y-%m-%d %H:%M %Z\"`)\nand confirm that all empty promises in the audited context are cleared.\n\n## Relationship to other skills\n\n- **`ums`** — updates memories and skills when lessons are learned; `empty-promise`\n  specifically audits conversation turns for unbacked promises and enforces\n  immediate mechanism delivery.\n- **`defer-issue`** — files tracking issues when intentionally deferring work;\n  `empty-promise` clears behavioral debts and promises made in conversation.\n- **`recover-followups`** — audits closed PRs\u002Fissues for dropped follow-ups;\n  `empty-promise` audits live session context for undischarged agent promises.\n- **`wrap-up` \u002F `post-merge`** — session and PR closing checkpoints where an\n  `empty-promise` audit ensures no unbacked commitments linger.\n- **`workaround-watcher`** — monitors open PRs\u002Fissues; can serve as the active\n  firing mechanism for debt promises on external review state.\n\n## Anti-patterns\n\n- ❌ Promising a future fix or hook (\"*I'll add a hook for this*\") instead of\n  shipping it in the current turn.\n- ❌ Treating an apology, an explanation, or a restatement of the rule as a\n  mechanism.\n- ❌ Writing a memory entry for an owed action instead of running or arming it\n  (documenting an ARDI loop is not running one).\n- ❌ Arming a one-off timer to keep a standing rule (timers fire once and die;\n  they cannot enforce standing policy).\n- ❌ Asserting automation will finish without checking live state or arming a\n  monitor.\n- ❌ Manufacturing promises when the audit is clean.\n",{"name":5,"description":7,"allowed-tools":24,"user-invocable":29},[25,26,27,28],"Bash","Read","Edit","Write",true,"main","aed9be7a6beca85e267d19d9d354f50da6c37417","skills\u002Fempty-promise",1,"https:\u002F\u002Fgithub.com\u002FMorrison-Lab\u002Fai-config","https:\u002F\u002Fmorrison-lab.github.io\u002Fai-config\u002F","https:\u002F\u002Fgithub.com\u002FMorrison-Lab","2026-11-13 04:48:19",{"source":8,"skillName":5,"commands":39,"prompt":49,"zipAvailable":29},[40,43,46],{"tool":41,"command":42},"npx","npx skills add Morrison-Lab\u002Fai-config --skill empty-promise",{"tool":44,"command":45},"bunx","bunx skills add Morrison-Lab\u002Fai-config --skill empty-promise",{"tool":47,"command":48},"pnpm","pnpm dlx skills add Morrison-Lab\u002Fai-config --skill empty-promise","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FMorrison-Lab\u002Fai-config\u002Fblob\u002Fmain\u002Fskills\u002Fempty-promise\u002FSKILL.md",[],[52,59,66,73,80,87],{"skillNo":53,"name":54,"nameZh":6,"description":55,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":56,"categories":57,"keywords":58,"publishedAt":19},"01M73593BZ33TKTNBDX8JNKYN8","resolve-conflicts","Resolve merge conflicts.","https:\u002F\u002Fgithub.com\u002FMorrison-Lab\u002Fai-config\u002Fblob\u002Fmain\u002Fskills\u002Fresolve-conflicts\u002FSKILL.md",[],[],{"skillNo":60,"name":61,"nameZh":6,"description":62,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":63,"categories":64,"keywords":65,"publishedAt":19},"01M73584TVDWNA1HMAQ8XXGSZV","rec","Provide recommendations for choices.","https:\u002F\u002Fgithub.com\u002FMorrison-Lab\u002Fai-config\u002Fblob\u002Fmain\u002Fskills\u002Frec\u002FSKILL.md",[],[],{"skillNo":67,"name":68,"nameZh":6,"description":69,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":70,"categories":71,"keywords":72,"publishedAt":19},"01M7357KC2MZNHTDDSY4DT9CGJ","push","Pre-push check for active sessions.","https:\u002F\u002Fgithub.com\u002FMorrison-Lab\u002Fai-config\u002Fblob\u002Fmain\u002Fskills\u002Fpush\u002FSKILL.md",[],[],{"skillNo":74,"name":75,"nameZh":6,"description":76,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":77,"categories":78,"keywords":79,"publishedAt":19},"01M7354D93G0P37BRHR2T3HD82","handoff","Snapshot state to forge\u002Fmemory.","https:\u002F\u002Fgithub.com\u002FMorrison-Lab\u002Fai-config\u002Fblob\u002Fmain\u002Fskills\u002Fhandoff\u002FSKILL.md",[],[],{"skillNo":81,"name":82,"nameZh":6,"description":83,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":84,"categories":85,"keywords":86,"publishedAt":19},"01M7352P8K341JQ8M8X264CMRV","draft-in-ezras-voice","Draft communications for Ezra in his own voice: announcements, emails, and comments sent under his name.","https:\u002F\u002Fgithub.com\u002FMorrison-Lab\u002Fai-config\u002Fblob\u002Fmain\u002Fskills\u002Fdraft-in-ezras-voice\u002FSKILL.md",[],[],{"skillNo":88,"name":89,"nameZh":6,"description":90,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":91,"categories":92,"keywords":93,"publishedAt":19},"01M7352K24A80Q7V05YC2K16SD","do-it-for-me","Do the step yourself; retry blocks, then lift auto mode.","https:\u002F\u002Fgithub.com\u002FMorrison-Lab\u002Fai-config\u002Fblob\u002Fmain\u002Fskills\u002Fdo-it-for-me\u002FSKILL.md",[],[]]