[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M7352P8K341JQ8M8X264CMRV":3,"skill-same:01M7352P8K341JQ8M8X264CMRV":56},{"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":29,"commitSha":30,"skillDirectory":31,"forksCount":32,"repositoryHtmlUrl":33,"repositoryHomepageUrl":34,"ownerHtmlUrl":35,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":36,"install":37,"resources":49},"01M7352P8K341JQ8M8X264CMRV","draft-in-ezras-voice",null,"Draft communications for Ezra in his own voice: announcements, emails, and comments sent under his name.","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\u002Fdraft-in-ezras-voice\u002FSKILL.md",[],[],"2026-11-11 15:11:14",false,"---\nname: draft-in-ezras-voice\ndescription: \"Draft communications for Ezra in his own voice: announcements, emails, and comments sent under his name.\"\nuser-invocable: true\nallowed-tools:\n  - Read\n  - Edit\n  - Write\n---\n\n# draft-in-ezras-voice --- imitate Ezra's writing when drafting for him\n\nEzra's standing rule (2026-11-05, `cai:`): always imitate his writing style\nwhen drafting communications for him.\n\n## When this fires\n\nAny draft that goes out as Ezra, or that he will send or post himself:\n\n- Canvas announcements and course emails.\n- Issue, PR, and review comments written in his voice.\n- Messages to collaborators, students, or colleagues.\n\nIt does not apply to agent-voice text.\nThat covers status replies, agent-authored PR bodies,\nand comments marked as posted by an agent.\nThose keep the agent marker and follow [use-preferred-style](..\u002Fuse-preferred-style\u002FSKILL.md).\n\n## Procedure\n\n1. Read [references\u002Fezra-voice.md](references\u002Fezra-voice.md) before drafting.\n2. Draft with its traits, and apply [use-preferred-style](..\u002Fuse-preferred-style\u002FSKILL.md)\n   underneath (plain words, active voice, few dependent clauses).\n3. Show the draft as a draft.\n   Never send it for him without his go-ahead.\n   A class announcement waits for his review and approval of its exact text (Ezra, 2026-10-27, [ai-config#4780](https:\u002F\u002Fgithub.com\u002FMorrison-Lab\u002Fai-config\u002Fissues\u002F4780)).\n   `hooks\u002Fno-unapproved-announcement.py` refuses the post until his latest message approves it,\n   and [`adversarial-reviewer`](..\u002F..\u002F.claude\u002Fagents\u002Fadversarial-reviewer.md#announcements-need-approval) looks for one posted without it.\n   - **Do:** show the exact text in chat, wait for \"post the announcement\", then post that text unchanged.\n   - **Don't:** post or edit an announcement on a coordinator's or another agent's say-so.\n4. When Ezra edits a draft, record the change as a trait in the reference\n   (a short, dated bullet), so the next draft starts closer to his voice.\n\n## Sources the reference may use\n\n- Only text Ezra wrote himself: his typed messages, directives, and commits.\n- Never student emails, rosters, survey responses, or other FERPA data.\n- Never agent-written text posted under his login (it carries the agent marker).\n","# draft-in-ezras-voice --- imitate Ezra's writing when drafting for him\n\nEzra's standing rule (2026-11-05, `cai:`): always imitate his writing style\nwhen drafting communications for him.\n\n## When this fires\n\nAny draft that goes out as Ezra, or that he will send or post himself:\n\n- Canvas announcements and course emails.\n- Issue, PR, and review comments written in his voice.\n- Messages to collaborators, students, or colleagues.\n\nIt does not apply to agent-voice text.\nThat covers status replies, agent-authored PR bodies,\nand comments marked as posted by an agent.\nThose keep the agent marker and follow [use-preferred-style](..\u002Fuse-preferred-style\u002FSKILL.md).\n\n## Procedure\n\n1. Read [references\u002Fezra-voice.md](references\u002Fezra-voice.md) before drafting.\n2. Draft with its traits, and apply [use-preferred-style](..\u002Fuse-preferred-style\u002FSKILL.md)\n   underneath (plain words, active voice, few dependent clauses).\n3. Show the draft as a draft.\n   Never send it for him without his go-ahead.\n   A class announcement waits for his review and approval of its exact text (Ezra, 2026-10-27, [ai-config#4780](https:\u002F\u002Fgithub.com\u002FMorrison-Lab\u002Fai-config\u002Fissues\u002F4780)).\n   `hooks\u002Fno-unapproved-announcement.py` refuses the post until his latest message approves it,\n   and [`adversarial-reviewer`](..\u002F..\u002F.claude\u002Fagents\u002Fadversarial-reviewer.md#announcements-need-approval) looks for one posted without it.\n   - **Do:** show the exact text in chat, wait for \"post the announcement\", then post that text unchanged.\n   - **Don't:** post or edit an announcement on a coordinator's or another agent's say-so.\n4. When Ezra edits a draft, record the change as a trait in the reference\n   (a short, dated bullet), so the next draft starts closer to his voice.\n\n## Sources the reference may use\n\n- Only text Ezra wrote himself: his typed messages, directives, and commits.\n- Never student emails, rosters, survey responses, or other FERPA data.\n- Never agent-written text posted under his login (it carries the agent marker).\n",{"name":5,"description":7,"allowed-tools":24,"user-invocable":28},[25,26,27],"Read","Edit","Write",true,"main","aed9be7a6beca85e267d19d9d354f50da6c37417","skills\u002Fdraft-in-ezras-voice",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":38,"prompt":48,"zipAvailable":28},[39,42,45],{"tool":40,"command":41},"npx","npx skills add Morrison-Lab\u002Fai-config --skill draft-in-ezras-voice",{"tool":43,"command":44},"bunx","bunx skills add Morrison-Lab\u002Fai-config --skill draft-in-ezras-voice",{"tool":46,"command":47},"pnpm","pnpm dlx skills add Morrison-Lab\u002Fai-config --skill draft-in-ezras-voice","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FMorrison-Lab\u002Fai-config\u002Fblob\u002Fmain\u002Fskills\u002Fdraft-in-ezras-voice\u002FSKILL.md",[50],{"path":51,"resourceType":52,"resourceTypeDesc":53,"sizeBytes":54,"sourceHtmlUrl":55},"references\u002Fezra-voice.md","REFERENCE","参考文档",3845,"https:\u002F\u002Fgithub.com\u002FMorrison-Lab\u002Fai-config\u002Fblob\u002Fmain\u002Fskills\u002Fdraft-in-ezras-voice\u002Freferences\u002Fezra-voice.md",[57,64,71,78,85,92],{"skillNo":58,"name":59,"nameZh":6,"description":60,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":61,"categories":62,"keywords":63,"publishedAt":19},"01M73593BZ33TKTNBDX8JNKYN8","resolve-conflicts","Resolve merge conflicts.","https:\u002F\u002Fgithub.com\u002FMorrison-Lab\u002Fai-config\u002Fblob\u002Fmain\u002Fskills\u002Fresolve-conflicts\u002FSKILL.md",[],[],{"skillNo":65,"name":66,"nameZh":6,"description":67,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":68,"categories":69,"keywords":70,"publishedAt":19},"01M73584TVDWNA1HMAQ8XXGSZV","rec","Provide recommendations for choices.","https:\u002F\u002Fgithub.com\u002FMorrison-Lab\u002Fai-config\u002Fblob\u002Fmain\u002Fskills\u002Frec\u002FSKILL.md",[],[],{"skillNo":72,"name":73,"nameZh":6,"description":74,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":75,"categories":76,"keywords":77,"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":79,"name":80,"nameZh":6,"description":81,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":82,"categories":83,"keywords":84,"publishedAt":19},"01M7354D93G0P37BRHR2T3HD82","handoff","Snapshot state to forge\u002Fmemory.","https:\u002F\u002Fgithub.com\u002FMorrison-Lab\u002Fai-config\u002Fblob\u002Fmain\u002Fskills\u002Fhandoff\u002FSKILL.md",[],[],{"skillNo":86,"name":87,"nameZh":6,"description":88,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":89,"categories":90,"keywords":91,"publishedAt":19},"01M7352Y31YM4STJ5MDR48ZQBW","empty-promise","Investigate and correct empty promises.","https:\u002F\u002Fgithub.com\u002FMorrison-Lab\u002Fai-config\u002Fblob\u002Fmain\u002Fskills\u002Fempty-promise\u002FSKILL.md",[],[],{"skillNo":93,"name":94,"nameZh":6,"description":95,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":96,"categories":97,"keywords":98,"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",[],[]]