[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6BVSDCTPR4VR3CCTN2326C6":3,"skill-same:01M6BVSDCTPR4VR3CCTN2326C6":219},{"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":23,"publishedAt":44,"linkOnly":45,"markdownContent":46,"markdownBody":47,"frontMatter":48,"refName":49,"commitSha":50,"skillDirectory":51,"forksCount":52,"repositoryHtmlUrl":53,"repositoryHomepageUrl":6,"ownerHtmlUrl":54,"ownerBlogUrl":55,"ownerDescription":56,"updatedAt":57,"install":58,"resources":71},"01M6BVSDCTPR4VR3CCTN2326C6","voice",null,"Write or rewrite messages in Sebastian Otaegui's voice, including Slack, email, GitHub comments, and internal posts. Use for \"write in my voice\", \"rewrite this in my style\", or drafting personal messages for Sebastian. Not for answering him as the assistant, sending messages, formal reports\u002Fcontracts, or code\u002Fcomments.","feniix\u002Fdotfiles","feniix","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F91633?v=4","01M6BVMJ0Q5E6HZ4JTEWYBBKV9","Sebastian B Otaegui","01M6BVMJ53ZV8DFKXTRBPESTF3",8,"MIT","https:\u002F\u002Fgithub.com\u002Ffeniix\u002Fdotfiles\u002Fblob\u002Fmain\u002Fagents\u002Fskills\u002Fvoice\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000005","邮件与沟通","SCENARIO","使用场景",[5,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43],"use","drafting","for","my","write in my voice","posts","comments","rewrite","style","as","reports","assistant","write","my style","messages","email","code","github","slack","personal","2026-11-10 10:12:30",false,"---\nname: voice\ndescription: Write or rewrite messages in Sebastian Otaegui's voice, including Slack, email, GitHub comments, and internal posts. Use for \"write in my voice\", \"rewrite this in my style\", or drafting personal messages for Sebastian. Not for answering him as the assistant, sending messages, formal reports\u002Fcontracts, or code\u002Fcomments.\n---\n\n# Sebastian's writing voice\n\nWrite like a technically fluent colleague: direct, conversational, concrete, and comfortable assuming shared context. Concise does not mean cold. Instructions to an agent are only one register, not the template for everything Sebastian says to people.\n\n## First choose the situation\n\nUse the supplied draft, recipient, thread, and purpose to choose the register. If those are clear, draft directly. Ask only when the missing context would materially change the message. Return the draft without a preamble or style explanation unless requested.\n\nThe content is his; only the wording is yours. Say what he asked to say and nothing more. The common failure is not a wrong fact but a helpful extra: prep questions for the recipient, an \"anyone have context?\" call for input, his reasoning or opinion spelled out when he only said he was unsure, a flexibility offer such as \"or another time if that is easier\", or a promise like \"I will send the invite\". Each of these speaks for him. If an addition seems genuinely useful, suggest it to the user after the draft instead of putting it in.\n\nWhen the request is already worded like the message (\"tell Priya no, the deploy is not blocked...\"), it is his draft: change as little as possible. Drop the instruction wrapper (\"tell X\", \"reply to Y:\") and the third-person references it implies (\"she can go ahead\" becomes \"go ahead\"), but keep his words, his contractions or full forms, and his grammar. Do not add words he did not write: \"tell Ji-woo the PR looks good\" becomes \"looks good\", not \"the PR looks good\".\n\n- **Rewriting a supplied draft:** move it into his voice, do not just touch it up. Keep every fact, commitment, and the emotional weight, but rework the casing, phrasing, and rhythm so it reads the way he would have typed it. Changing only the greeting is not a rewrite. Keep his own words for people and sensitive subjects (\"father\" stays \"father\"); rework the wrapping around them, not the substance.\n- **Quick reply \u002F ongoing DM:** fragments and short acknowledgments are natural. Answer the actual question; do not recap the whole thread. A greeting usually adds nothing mid-conversation.\n- **Human request \u002F coordination:** direct questions such as \"can you\", \"can we\", \"do you want to\", or \"got a minute?\" are normal. Brief context, the ask, and any real timing constraint. Do not turn a collaborative request into an order.\n- **Technical discussion \u002F debugging:** observation first, relevant evidence or constraint, then the hypothesis or question. Distinguish what he tried from what he suspects. Include his reasoning when he supplied it; do not construct reasoning for him.\n- **Status \u002F findings \u002F handoff:** lead with what changed or where things stand; include the remaining gap and next action or specific question. A few short paragraphs often suffice. Longer findings are fine when the facts need them; there is no 200–400-word target.\n- **Social \u002F personal \u002F supportive:** warmth, enthusiasm, jokes, greetings, thanks, and apologies are part of the voice. Match the relationship and moment. Do not flatten these into technical imperatives or invent personal details.\n- **Agent instructions:** terse verbs and explicit boundaries fit here: \"check the diff, do not commit yet\". Keep this register separate from messages to coworkers.\n\n## Stable tendencies\n\n### Rhythm and phrasing\n\n- Lowercase-leaning openings, short clauses, conversational connectors: \"so\", \"also\", \"but\", \"I mean\", \"actually\", \"btw\", \"for context\". Use them when they carry the thought, not as a checklist.\n- He often develops a thought through short follow-ups. In one draft, use short paragraphs to keep that rhythm; do not pretend to send a burst of separate messages. Start a new line where a separate thought starts (a hypothesis, the remaining gap), not for a short closing clause such as \"go ahead\".\n- Casual commas and fragments fit. Periods and complete sentences also fit. Never manufacture run-ons, dropped articles, typos, or an accent, and do not correct the ones in his own wording either.\n- He mixes contractions and full forms freely, with any recipient: \"I'm\", \"Im\", and \"I am\"; \"don't\", \"dont\", and \"do not\". The one consistent pattern is emphasis: he drops the contraction when he wants a claim to land harder (\"I do not want this merged yet\", \"that is not the issue\"). So use contractions for ordinary flow and full forms where the point is emphatic. Spelling out every contraction makes a draft sound stiff; contracting everything loses his emphasis. This applies to wording you write; when he already chose \"don't\" or \"do not\", keep his choice.\n- Both apostrophized and bare spellings (\"don't\", \"dont\", \"lets\") occur. Keep whichever the supplied draft uses; do not mechanically add or strip apostrophes.\n- Skip stock politeness that pads without saying anything: \"I have not had a chance to\", \"just wanted to\", \"I hope this finds you well\", \"please do not hesitate to\". Say the thing: \"I have not checked yet\".\n- Always capitalize people's names, in every channel, even when the user typed them in lowercase. Product names often stay lowercase in casual Slack prose; in email, capitalize them. Acronym casing varies in actual chat; prefer readable conventional casing (API, MCP, EKS) without altering identifiers, commands, paths, URLs, or quoted text.\n\n### Stance and relationships\n\n- Be direct about an observed failure, but keep genuine uncertainty: \"I think\", \"maybe\", \"probably\", \"it looks like\", \"I am not sure\", \"I have not tried it\". These are meaningful, including at the start of a sentence, not filler to delete.\n- Ask concrete questions instead of adding generic calls for feedback. A constraint followed by \"what if...\" or \"would that work?\" is a natural way to propose something.\n- Correct course without ceremony: \"actually\", \"I meant\", or a brief \"no\" plus the correction. \"nono\" fits an emphatic casual correction but is not a mandatory signature.\n- Allow brief enthusiasm and acknowledgment: \"cool\", \"sounds good\", \"awesome\", \"lol\", \"haha\". Occasional emoji or emphasis can fit social exchanges; do not decorate every draft or inject jokes into serious messages.\n- In Slack, start without a greeting by default: under 2% of his messages open with \"hey\", \"hi\", or \"good morning\", even when asking for something. Open with the ask, the news, or the person's name. Save \"hey\" for a first message after a long gap or a light social opener, and avoid it before bad news or condolences, where it reads breezy. \"thanks\" and \"sorry\" are available when meant. Skip canned pleasantries and formal sign-offs in chat, not human warmth. Email is different; see below.\n- Blunt criticism and profanity can occur with familiar people. Do not introduce profanity, hostility, or extra certainty merely to make a draft sound less polished.\n\n## Format and destination\n\n**Slack \u002F Discord:** prose and paragraph breaks by default. Short replies may be a single line. Links can follow the relevant claim or stand alone. Use code blocks for exact technical evidence when supplied. Lists and headings are exceptions for genuinely structured material or an explicit request, not forbidden syntax. Avoid boilerplate \"TL;DR\", \"Summary\", and \"Conclusion\" wrappers.\n\n**Email:** preserve directness, but do not apply chat typography or agent-command brevity mechanically. Sent-email examples show both terse replies and fuller external correspondence:\n\n- **Ongoing thread:** answer or clarify the immediate point. A one-line acknowledgment, timing question, or status update can be enough; do not restart every reply with a greeting and signature.\n- **New external conversation \u002F substantive follow-up:** conventional capitalization, a named greeting, brief thanks or acknowledgment, and a closing such as \"Best,\" or \"Best regards,\" can fit. Lead into the concrete ask, update, or relevant context. Do not add ceremonial praise just to sound professional.\n- **Coordination \u002F handoff:** make the requested action and supplied timing explicit. Two simple options read naturally in one sentence (\"Tuesday or Wednesday afternoon, US Eastern\"); save bullets for three or more options or options that each carry detail. Preserve time zones and constraints. Mention an attachment only when the user says it is attached, and preserve a supplied signature without inventing contact details.\n- **Support \u002F troubleshooting:** a concise observation and question can still be natural with an external recipient. Do not inflate a simple reply into a formal letter or repeat the quoted thread.\n\nIn email, capitalize names of people, companies, and products (\"Dana\", \"Northwind\", \"Evie\") even when the user typed them in lowercase. Match the supplied email and relationship before choosing spelling, greeting, or closing. The email sample is limited and may include assisted composition; polished wording is not a new universal style.\n\n**GitHub comments:** keep prose direct; use bullets for action items and file lists, headings for substantial reviews, and exact identifiers. Formatting should make the work reviewable. GitHub-specific conventions are destination guidance, not conclusions from a GitHub corpus.\n\n## Before returning\n\n- Does this fit the audience and purpose, rather than treating every recipient as an agent?\n- Are the facts, uncertainty, ownership, timing, and commitments unchanged? Read each sentence and ask whether he supplied it. Remove invented asks, offers, promises, rationale, opinions, and calls for input, however helpful they seem.\n- If this was a rewrite, would he recognize it as his own phrasing rather than the original lightly edited?\n- In Slack, does it open with a greeting he would not have used?\n- Is it as short as the content allows without making the recipient reconstruct missing context?\n- Does it sound conversational without forced mistakes, missing punctuation, or a pile of signature phrases?\n- Did useful warmth or a real question survive the rewrite?\n\nFor situation-specific calibration, read [examples.md](references\u002Fexamples.md). Examples are synthetic; never pull private conversation details into a draft merely to imitate the voice. This skill drafts text; it does not authorize sending it.\n\n## Evidence limits\n\nThis profile draws on a broad sample of Slack DMs and public-channel messages, plus a smaller sample of sent work emails. Private-channel and internal-email coverage were sparse; GitHub guidance remains an adaptation. Messages may include pasted or AI-assisted text, so treat the patterns as tendencies, not rules. Prefer the user’s corrections and recent, audience-matched examples.\n","# Sebastian's writing voice\n\nWrite like a technically fluent colleague: direct, conversational, concrete, and comfortable assuming shared context. Concise does not mean cold. Instructions to an agent are only one register, not the template for everything Sebastian says to people.\n\n## First choose the situation\n\nUse the supplied draft, recipient, thread, and purpose to choose the register. If those are clear, draft directly. Ask only when the missing context would materially change the message. Return the draft without a preamble or style explanation unless requested.\n\nThe content is his; only the wording is yours. Say what he asked to say and nothing more. The common failure is not a wrong fact but a helpful extra: prep questions for the recipient, an \"anyone have context?\" call for input, his reasoning or opinion spelled out when he only said he was unsure, a flexibility offer such as \"or another time if that is easier\", or a promise like \"I will send the invite\". Each of these speaks for him. If an addition seems genuinely useful, suggest it to the user after the draft instead of putting it in.\n\nWhen the request is already worded like the message (\"tell Priya no, the deploy is not blocked...\"), it is his draft: change as little as possible. Drop the instruction wrapper (\"tell X\", \"reply to Y:\") and the third-person references it implies (\"she can go ahead\" becomes \"go ahead\"), but keep his words, his contractions or full forms, and his grammar. Do not add words he did not write: \"tell Ji-woo the PR looks good\" becomes \"looks good\", not \"the PR looks good\".\n\n- **Rewriting a supplied draft:** move it into his voice, do not just touch it up. Keep every fact, commitment, and the emotional weight, but rework the casing, phrasing, and rhythm so it reads the way he would have typed it. Changing only the greeting is not a rewrite. Keep his own words for people and sensitive subjects (\"father\" stays \"father\"); rework the wrapping around them, not the substance.\n- **Quick reply \u002F ongoing DM:** fragments and short acknowledgments are natural. Answer the actual question; do not recap the whole thread. A greeting usually adds nothing mid-conversation.\n- **Human request \u002F coordination:** direct questions such as \"can you\", \"can we\", \"do you want to\", or \"got a minute?\" are normal. Brief context, the ask, and any real timing constraint. Do not turn a collaborative request into an order.\n- **Technical discussion \u002F debugging:** observation first, relevant evidence or constraint, then the hypothesis or question. Distinguish what he tried from what he suspects. Include his reasoning when he supplied it; do not construct reasoning for him.\n- **Status \u002F findings \u002F handoff:** lead with what changed or where things stand; include the remaining gap and next action or specific question. A few short paragraphs often suffice. Longer findings are fine when the facts need them; there is no 200–400-word target.\n- **Social \u002F personal \u002F supportive:** warmth, enthusiasm, jokes, greetings, thanks, and apologies are part of the voice. Match the relationship and moment. Do not flatten these into technical imperatives or invent personal details.\n- **Agent instructions:** terse verbs and explicit boundaries fit here: \"check the diff, do not commit yet\". Keep this register separate from messages to coworkers.\n\n## Stable tendencies\n\n### Rhythm and phrasing\n\n- Lowercase-leaning openings, short clauses, conversational connectors: \"so\", \"also\", \"but\", \"I mean\", \"actually\", \"btw\", \"for context\". Use them when they carry the thought, not as a checklist.\n- He often develops a thought through short follow-ups. In one draft, use short paragraphs to keep that rhythm; do not pretend to send a burst of separate messages. Start a new line where a separate thought starts (a hypothesis, the remaining gap), not for a short closing clause such as \"go ahead\".\n- Casual commas and fragments fit. Periods and complete sentences also fit. Never manufacture run-ons, dropped articles, typos, or an accent, and do not correct the ones in his own wording either.\n- He mixes contractions and full forms freely, with any recipient: \"I'm\", \"Im\", and \"I am\"; \"don't\", \"dont\", and \"do not\". The one consistent pattern is emphasis: he drops the contraction when he wants a claim to land harder (\"I do not want this merged yet\", \"that is not the issue\"). So use contractions for ordinary flow and full forms where the point is emphatic. Spelling out every contraction makes a draft sound stiff; contracting everything loses his emphasis. This applies to wording you write; when he already chose \"don't\" or \"do not\", keep his choice.\n- Both apostrophized and bare spellings (\"don't\", \"dont\", \"lets\") occur. Keep whichever the supplied draft uses; do not mechanically add or strip apostrophes.\n- Skip stock politeness that pads without saying anything: \"I have not had a chance to\", \"just wanted to\", \"I hope this finds you well\", \"please do not hesitate to\". Say the thing: \"I have not checked yet\".\n- Always capitalize people's names, in every channel, even when the user typed them in lowercase. Product names often stay lowercase in casual Slack prose; in email, capitalize them. Acronym casing varies in actual chat; prefer readable conventional casing (API, MCP, EKS) without altering identifiers, commands, paths, URLs, or quoted text.\n\n### Stance and relationships\n\n- Be direct about an observed failure, but keep genuine uncertainty: \"I think\", \"maybe\", \"probably\", \"it looks like\", \"I am not sure\", \"I have not tried it\". These are meaningful, including at the start of a sentence, not filler to delete.\n- Ask concrete questions instead of adding generic calls for feedback. A constraint followed by \"what if...\" or \"would that work?\" is a natural way to propose something.\n- Correct course without ceremony: \"actually\", \"I meant\", or a brief \"no\" plus the correction. \"nono\" fits an emphatic casual correction but is not a mandatory signature.\n- Allow brief enthusiasm and acknowledgment: \"cool\", \"sounds good\", \"awesome\", \"lol\", \"haha\". Occasional emoji or emphasis can fit social exchanges; do not decorate every draft or inject jokes into serious messages.\n- In Slack, start without a greeting by default: under 2% of his messages open with \"hey\", \"hi\", or \"good morning\", even when asking for something. Open with the ask, the news, or the person's name. Save \"hey\" for a first message after a long gap or a light social opener, and avoid it before bad news or condolences, where it reads breezy. \"thanks\" and \"sorry\" are available when meant. Skip canned pleasantries and formal sign-offs in chat, not human warmth. Email is different; see below.\n- Blunt criticism and profanity can occur with familiar people. Do not introduce profanity, hostility, or extra certainty merely to make a draft sound less polished.\n\n## Format and destination\n\n**Slack \u002F Discord:** prose and paragraph breaks by default. Short replies may be a single line. Links can follow the relevant claim or stand alone. Use code blocks for exact technical evidence when supplied. Lists and headings are exceptions for genuinely structured material or an explicit request, not forbidden syntax. Avoid boilerplate \"TL;DR\", \"Summary\", and \"Conclusion\" wrappers.\n\n**Email:** preserve directness, but do not apply chat typography or agent-command brevity mechanically. Sent-email examples show both terse replies and fuller external correspondence:\n\n- **Ongoing thread:** answer or clarify the immediate point. A one-line acknowledgment, timing question, or status update can be enough; do not restart every reply with a greeting and signature.\n- **New external conversation \u002F substantive follow-up:** conventional capitalization, a named greeting, brief thanks or acknowledgment, and a closing such as \"Best,\" or \"Best regards,\" can fit. Lead into the concrete ask, update, or relevant context. Do not add ceremonial praise just to sound professional.\n- **Coordination \u002F handoff:** make the requested action and supplied timing explicit. Two simple options read naturally in one sentence (\"Tuesday or Wednesday afternoon, US Eastern\"); save bullets for three or more options or options that each carry detail. Preserve time zones and constraints. Mention an attachment only when the user says it is attached, and preserve a supplied signature without inventing contact details.\n- **Support \u002F troubleshooting:** a concise observation and question can still be natural with an external recipient. Do not inflate a simple reply into a formal letter or repeat the quoted thread.\n\nIn email, capitalize names of people, companies, and products (\"Dana\", \"Northwind\", \"Evie\") even when the user typed them in lowercase. Match the supplied email and relationship before choosing spelling, greeting, or closing. The email sample is limited and may include assisted composition; polished wording is not a new universal style.\n\n**GitHub comments:** keep prose direct; use bullets for action items and file lists, headings for substantial reviews, and exact identifiers. Formatting should make the work reviewable. GitHub-specific conventions are destination guidance, not conclusions from a GitHub corpus.\n\n## Before returning\n\n- Does this fit the audience and purpose, rather than treating every recipient as an agent?\n- Are the facts, uncertainty, ownership, timing, and commitments unchanged? Read each sentence and ask whether he supplied it. Remove invented asks, offers, promises, rationale, opinions, and calls for input, however helpful they seem.\n- If this was a rewrite, would he recognize it as his own phrasing rather than the original lightly edited?\n- In Slack, does it open with a greeting he would not have used?\n- Is it as short as the content allows without making the recipient reconstruct missing context?\n- Does it sound conversational without forced mistakes, missing punctuation, or a pile of signature phrases?\n- Did useful warmth or a real question survive the rewrite?\n\nFor situation-specific calibration, read [examples.md](references\u002Fexamples.md). Examples are synthetic; never pull private conversation details into a draft merely to imitate the voice. This skill drafts text; it does not authorize sending it.\n\n## Evidence limits\n\nThis profile draws on a broad sample of Slack DMs and public-channel messages, plus a smaller sample of sent work emails. Private-channel and internal-email coverage were sparse; GitHub guidance remains an adaptation. Messages may include pasted or AI-assisted text, so treat the patterns as tendencies, not rules. Prefer the user’s corrections and recent, audience-matched examples.\n",{"name":5,"description":7},"main","23e30a8887155f1bfa8c727b3c81128c3f918088","agents\u002Fskills\u002Fvoice",0,"https:\u002F\u002Fgithub.com\u002Ffeniix\u002Fdotfiles","https:\u002F\u002Fgithub.com\u002Ffeniix","https:\u002F\u002Ffeniix-hq.net\u002F","Systems and platform engineer. Kubernetes, Terraform, CI\u002FCD, observability; MCP and agent tooling. asdf plugins, Prometheus Operator.","2026-11-09 04:16:06",{"source":8,"skillName":5,"commands":59,"prompt":69,"zipAvailable":70},[60,63,66],{"tool":61,"command":62},"npx","npx skills add feniix\u002Fdotfiles --skill voice",{"tool":64,"command":65},"bunx","bunx skills add feniix\u002Fdotfiles --skill voice",{"tool":67,"command":68},"pnpm","pnpm dlx skills add feniix\u002Fdotfiles --skill voice","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Ffeniix\u002Fdotfiles\u002Fblob\u002Fmain\u002Fagents\u002Fskills\u002Fvoice\u002FSKILL.md",true,[72,78,82,86,90,94,98,102,106,110,114,118,122,126,130,134,138,142,146,150,153,157,161,165,168,172,176,180,184,188,192,196,199,203,207,211,215],{"path":73,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":76,"sourceHtmlUrl":77},"evals\u002Femail-new-external-contact\u002Fcase.yaml","REFERENCE","参考文档",399,"https:\u002F\u002Fgithub.com\u002Ffeniix\u002Fdotfiles\u002Fblob\u002Fmain\u002Fagents\u002Fskills\u002Fvoice\u002Fevals\u002Femail-new-external-contact\u002Fcase.yaml",{"path":79,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":80,"sourceHtmlUrl":81},"evals\u002Femail-new-external-contact\u002Fgraders\u002F01-the-email-addresses-dana-by.md",75,"https:\u002F\u002Fgithub.com\u002Ffeniix\u002Fdotfiles\u002Fblob\u002Fmain\u002Fagents\u002Fskills\u002Fvoice\u002Fevals\u002Femail-new-external-contact\u002Fgraders\u002F01-the-email-addresses-dana-by.md",{"path":83,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":84,"sourceHtmlUrl":85},"evals\u002Femail-new-external-contact\u002Fgraders\u002F02-the-email-mentions-the-introduction.md",85,"https:\u002F\u002Fgithub.com\u002Ffeniix\u002Fdotfiles\u002Fblob\u002Fmain\u002Fagents\u002Fskills\u002Fvoice\u002Fevals\u002Femail-new-external-contact\u002Fgraders\u002F02-the-email-mentions-the-introduction.md",{"path":87,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":88,"sourceHtmlUrl":89},"evals\u002Femail-new-external-contact\u002Fgraders\u002F03-the-email-identifies-seb-as.md",104,"https:\u002F\u002Fgithub.com\u002Ffeniix\u002Fdotfiles\u002Fblob\u002Fmain\u002Fagents\u002Fskills\u002Fvoice\u002Fevals\u002Femail-new-external-contact\u002Fgraders\u002F03-the-email-identifies-seb-as.md",{"path":91,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":92,"sourceHtmlUrl":93},"evals\u002Femail-new-external-contact\u002Fgraders\u002F04-the-email-asks-for-a.md",101,"https:\u002F\u002Fgithub.com\u002Ffeniix\u002Fdotfiles\u002Fblob\u002Fmain\u002Fagents\u002Fskills\u002Fvoice\u002Fevals\u002Femail-new-external-contact\u002Fgraders\u002F04-the-email-asks-for-a.md",{"path":95,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":96,"sourceHtmlUrl":97},"evals\u002Femail-new-external-contact\u002Fgraders\u002F05-the-email-offers-both-tuesday.md",156,"https:\u002F\u002Fgithub.com\u002Ffeniix\u002Fdotfiles\u002Fblob\u002Fmain\u002Fagents\u002Fskills\u002Fvoice\u002Fevals\u002Femail-new-external-contact\u002Fgraders\u002F05-the-email-offers-both-tuesday.md",{"path":99,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":100,"sourceHtmlUrl":101},"evals\u002Femail-new-external-contact\u002Fgraders\u002F06-the-email-is-signed-seb.md",66,"https:\u002F\u002Fgithub.com\u002Ffeniix\u002Fdotfiles\u002Fblob\u002Fmain\u002Fagents\u002Fskills\u002Fvoice\u002Fevals\u002Femail-new-external-contact\u002Fgraders\u002F06-the-email-is-signed-seb.md",{"path":103,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":104,"sourceHtmlUrl":105},"evals\u002Femail-new-external-contact\u002Fprompt.md",409,"https:\u002F\u002Fgithub.com\u002Ffeniix\u002Fdotfiles\u002Fblob\u002Fmain\u002Fagents\u002Fskills\u002Fvoice\u002Fevals\u002Femail-new-external-contact\u002Fprompt.md",{"path":107,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":108,"sourceHtmlUrl":109},"evals\u002Femail-thread-short-reply\u002Fcase.yaml",272,"https:\u002F\u002Fgithub.com\u002Ffeniix\u002Fdotfiles\u002Fblob\u002Fmain\u002Fagents\u002Fskills\u002Fvoice\u002Fevals\u002Femail-thread-short-reply\u002Fcase.yaml",{"path":111,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":112,"sourceHtmlUrl":113},"evals\u002Femail-thread-short-reply\u002Fgraders\u002F01-the-reply-says-seb-has.md",81,"https:\u002F\u002Fgithub.com\u002Ffeniix\u002Fdotfiles\u002Fblob\u002Fmain\u002Fagents\u002Fskills\u002Fvoice\u002Fevals\u002Femail-thread-short-reply\u002Fgraders\u002F01-the-reply-says-seb-has.md",{"path":115,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":116,"sourceHtmlUrl":117},"evals\u002Femail-thread-short-reply\u002Fgraders\u002F02-the-reply-says-seb-will.md",89,"https:\u002F\u002Fgithub.com\u002Ffeniix\u002Fdotfiles\u002Fblob\u002Fmain\u002Fagents\u002Fskills\u002Fvoice\u002Fevals\u002Femail-thread-short-reply\u002Fgraders\u002F02-the-reply-says-seb-will.md",{"path":119,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":120,"sourceHtmlUrl":121},"evals\u002Femail-thread-short-reply\u002Fgraders\u002F03-the-reply-does-not-claim.md",114,"https:\u002F\u002Fgithub.com\u002Ffeniix\u002Fdotfiles\u002Fblob\u002Fmain\u002Fagents\u002Fskills\u002Fvoice\u002Fevals\u002Femail-thread-short-reply\u002Fgraders\u002F03-the-reply-does-not-claim.md",{"path":123,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":124,"sourceHtmlUrl":125},"evals\u002Femail-thread-short-reply\u002Fgraders\u002F04-the-reply-is-under-60.md",100,"https:\u002F\u002Fgithub.com\u002Ffeniix\u002Fdotfiles\u002Fblob\u002Fmain\u002Fagents\u002Fskills\u002Fvoice\u002Fevals\u002Femail-thread-short-reply\u002Fgraders\u002F04-the-reply-is-under-60.md",{"path":127,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":128,"sourceHtmlUrl":129},"evals\u002Femail-thread-short-reply\u002Fprompt.md",452,"https:\u002F\u002Fgithub.com\u002Ffeniix\u002Fdotfiles\u002Fblob\u002Fmain\u002Fagents\u002Fskills\u002Fvoice\u002Fevals\u002Femail-thread-short-reply\u002Fprompt.md",{"path":131,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":132,"sourceHtmlUrl":133},"evals\u002Frewrite-supportive-dm\u002Fcase.yaml",307,"https:\u002F\u002Fgithub.com\u002Ffeniix\u002Fdotfiles\u002Fblob\u002Fmain\u002Fagents\u002Fskills\u002Fvoice\u002Fevals\u002Frewrite-supportive-dm\u002Fcase.yaml",{"path":135,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":136,"sourceHtmlUrl":137},"evals\u002Frewrite-supportive-dm\u002Fgraders\u002F01-the-dm-expresses-condolence-about.md",91,"https:\u002F\u002Fgithub.com\u002Ffeniix\u002Fdotfiles\u002Fblob\u002Fmain\u002Fagents\u002Fskills\u002Fvoice\u002Fevals\u002Frewrite-supportive-dm\u002Fgraders\u002F01-the-dm-expresses-condolence-about.md",{"path":139,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":140,"sourceHtmlUrl":141},"evals\u002Frewrite-supportive-dm\u002Fgraders\u002F02-the-dm-says-seb-will.md",102,"https:\u002F\u002Fgithub.com\u002Ffeniix\u002Fdotfiles\u002Fblob\u002Fmain\u002Fagents\u002Fskills\u002Fvoice\u002Fevals\u002Frewrite-supportive-dm\u002Fgraders\u002F02-the-dm-says-seb-will.md",{"path":143,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":144,"sourceHtmlUrl":145},"evals\u002Frewrite-supportive-dm\u002Fgraders\u002F03-the-dm-says-the-team.md",90,"https:\u002F\u002Fgithub.com\u002Ffeniix\u002Fdotfiles\u002Fblob\u002Fmain\u002Fagents\u002Fskills\u002Fvoice\u002Fevals\u002Frewrite-supportive-dm\u002Fgraders\u002F03-the-dm-says-the-team.md",{"path":147,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":148,"sourceHtmlUrl":149},"evals\u002Frewrite-supportive-dm\u002Fgraders\u002F04-the-dm-tells-marco-there.md",87,"https:\u002F\u002Fgithub.com\u002Ffeniix\u002Fdotfiles\u002Fblob\u002Fmain\u002Fagents\u002Fskills\u002Fvoice\u002Fevals\u002Frewrite-supportive-dm\u002Fgraders\u002F04-the-dm-tells-marco-there.md",{"path":151,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":92,"sourceHtmlUrl":152},"evals\u002Frewrite-supportive-dm\u002Fgraders\u002F05-the-dm-keeps-a-warm.md","https:\u002F\u002Fgithub.com\u002Ffeniix\u002Fdotfiles\u002Fblob\u002Fmain\u002Fagents\u002Fskills\u002Fvoice\u002Fevals\u002Frewrite-supportive-dm\u002Fgraders\u002F05-the-dm-keeps-a-warm.md",{"path":154,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":155,"sourceHtmlUrl":156},"evals\u002Frewrite-supportive-dm\u002Fprompt.md",374,"https:\u002F\u002Fgithub.com\u002Ffeniix\u002Fdotfiles\u002Fblob\u002Fmain\u002Fagents\u002Fskills\u002Fvoice\u002Fevals\u002Frewrite-supportive-dm\u002Fprompt.md",{"path":158,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":159,"sourceHtmlUrl":160},"evals\u002Fslack-findings-post\u002Fcase.yaml",319,"https:\u002F\u002Fgithub.com\u002Ffeniix\u002Fdotfiles\u002Fblob\u002Fmain\u002Fagents\u002Fskills\u002Fvoice\u002Fevals\u002Fslack-findings-post\u002Fcase.yaml",{"path":162,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":163,"sourceHtmlUrl":164},"evals\u002Fslack-findings-post\u002Fgraders\u002F01-the-post-states-the-move.md",96,"https:\u002F\u002Fgithub.com\u002Ffeniix\u002Fdotfiles\u002Fblob\u002Fmain\u002Fagents\u002Fskills\u002Fvoice\u002Fevals\u002Fslack-findings-post\u002Fgraders\u002F01-the-post-states-the-move.md",{"path":166,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":163,"sourceHtmlUrl":167},"evals\u002Fslack-findings-post\u002Fgraders\u002F02-the-post-states-median-build.md","https:\u002F\u002Fgithub.com\u002Ffeniix\u002Fdotfiles\u002Fblob\u002Fmain\u002Fagents\u002Fskills\u002Fvoice\u002Fevals\u002Fslack-findings-post\u002Fgraders\u002F02-the-post-states-median-build.md",{"path":169,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":170,"sourceHtmlUrl":171},"evals\u002Fslack-findings-post\u002Fgraders\u002F03-the-post-says-cost-is.md",133,"https:\u002F\u002Fgithub.com\u002Ffeniix\u002Fdotfiles\u002Fblob\u002Fmain\u002Fagents\u002Fskills\u002Fvoice\u002Fevals\u002Fslack-findings-post\u002Fgraders\u002F03-the-post-says-cost-is.md",{"path":173,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":174,"sourceHtmlUrl":175},"evals\u002Fslack-findings-post\u002Fgraders\u002F04-the-post-names-both-slower.md",139,"https:\u002F\u002Fgithub.com\u002Ffeniix\u002Fdotfiles\u002Fblob\u002Fmain\u002Fagents\u002Fskills\u002Fvoice\u002Fevals\u002Fslack-findings-post\u002Fgraders\u002F04-the-post-names-both-slower.md",{"path":177,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":178,"sourceHtmlUrl":179},"evals\u002Fslack-findings-post\u002Fgraders\u002F05-the-post-lists-both-next.md",144,"https:\u002F\u002Fgithub.com\u002Ffeniix\u002Fdotfiles\u002Fblob\u002Fmain\u002Fagents\u002Fskills\u002Fvoice\u002Fevals\u002Fslack-findings-post\u002Fgraders\u002F05-the-post-lists-both-next.md",{"path":181,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":182,"sourceHtmlUrl":183},"evals\u002Fslack-findings-post\u002Fgraders\u002F06-the-post-has-no-tl.md",95,"https:\u002F\u002Fgithub.com\u002Ffeniix\u002Fdotfiles\u002Fblob\u002Fmain\u002Fagents\u002Fskills\u002Fvoice\u002Fevals\u002Fslack-findings-post\u002Fgraders\u002F06-the-post-has-no-tl.md",{"path":185,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":186,"sourceHtmlUrl":187},"evals\u002Fslack-findings-post\u002Fprompt.md",522,"https:\u002F\u002Fgithub.com\u002Ffeniix\u002Fdotfiles\u002Fblob\u002Fmain\u002Fagents\u002Fskills\u002Fvoice\u002Fevals\u002Fslack-findings-post\u002Fprompt.md",{"path":189,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":190,"sourceHtmlUrl":191},"evals\u002Fslack-review-request\u002Fcase.yaml",288,"https:\u002F\u002Fgithub.com\u002Ffeniix\u002Fdotfiles\u002Fblob\u002Fmain\u002Fagents\u002Fskills\u002Fvoice\u002Fevals\u002Fslack-review-request\u002Fcase.yaml",{"path":193,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":194,"sourceHtmlUrl":195},"evals\u002Fslack-review-request\u002Fgraders\u002F01-the-draft-asks-priya-whether.md",138,"https:\u002F\u002Fgithub.com\u002Ffeniix\u002Fdotfiles\u002Fblob\u002Fmain\u002Fagents\u002Fskills\u002Fvoice\u002Fevals\u002Fslack-review-request\u002Fgraders\u002F01-the-draft-asks-priya-whether.md",{"path":197,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":112,"sourceHtmlUrl":198},"evals\u002Fslack-review-request\u002Fgraders\u002F02-the-draft-mentions-the-thursday.md","https:\u002F\u002Fgithub.com\u002Ffeniix\u002Fdotfiles\u002Fblob\u002Fmain\u002Fagents\u002Fskills\u002Fvoice\u002Fevals\u002Fslack-review-request\u002Fgraders\u002F02-the-draft-mentions-the-thursday.md",{"path":200,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":201,"sourceHtmlUrl":202},"evals\u002Fslack-review-request\u002Fgraders\u002F03-the-draft-mentions-max-unavailable.md",112,"https:\u002F\u002Fgithub.com\u002Ffeniix\u002Fdotfiles\u002Fblob\u002Fmain\u002Fagents\u002Fskills\u002Fvoice\u002Fevals\u002Fslack-review-request\u002Fgraders\u002F03-the-draft-mentions-max-unavailable.md",{"path":204,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":205,"sourceHtmlUrl":206},"evals\u002Fslack-review-request\u002Fgraders\u002F04-the-draft-keeps-the-uncertainty.md",123,"https:\u002F\u002Fgithub.com\u002Ffeniix\u002Fdotfiles\u002Fblob\u002Fmain\u002Fagents\u002Fskills\u002Fvoice\u002Fevals\u002Fslack-review-request\u002Fgraders\u002F04-the-draft-keeps-the-uncertainty.md",{"path":208,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":209,"sourceHtmlUrl":210},"evals\u002Fslack-review-request\u002Fgraders\u002F05-the-draft-does-not-invent.md",119,"https:\u002F\u002Fgithub.com\u002Ffeniix\u002Fdotfiles\u002Fblob\u002Fmain\u002Fagents\u002Fskills\u002Fvoice\u002Fevals\u002Fslack-review-request\u002Fgraders\u002F05-the-draft-does-not-invent.md",{"path":212,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":213,"sourceHtmlUrl":214},"evals\u002Fslack-review-request\u002Fprompt.md",349,"https:\u002F\u002Fgithub.com\u002Ffeniix\u002Fdotfiles\u002Fblob\u002Fmain\u002Fagents\u002Fskills\u002Fvoice\u002Fevals\u002Fslack-review-request\u002Fprompt.md",{"path":216,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":217,"sourceHtmlUrl":218},"references\u002Fexamples.md",5899,"https:\u002F\u002Fgithub.com\u002Ffeniix\u002Fdotfiles\u002Fblob\u002Fmain\u002Fagents\u002Fskills\u002Fvoice\u002Freferences\u002Fexamples.md",[220,245,262,293,307,319],{"skillNo":221,"name":222,"nameZh":6,"description":223,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":224,"categories":225,"keywords":226,"publishedAt":44},"01M70M28HFDKQPGSWESHGB0HV4","security-audit","Security guidance and vulnerability review for codebases, APIs, services, CLI tools, libraries, and daemons. Use for security questions, focused reviews, vulnerability research, security audits, or pen tests. Run the complete workflow only for explicit codebase audit or pen-test requests, full\u002Fcomprehensive\u002Fend-to-end reviews, or requested report artifacts.","https:\u002F\u002Fgithub.com\u002Ffeniix\u002Fdotfiles\u002Fblob\u002Fmain\u002Fagents\u002Fskills\u002Fsecurity-audit\u002FSKILL.md",[],[227,228,229,230,231,232,233,234,235,236,237,24,238,239,240,241,242,243,244,26],"security","audit","security audit","review","cli","workflow","libraries","run","Tools","vulnerability","security guidance","only","codebase audit","full","tests","end","complete","reviews",{"skillNo":246,"name":247,"nameZh":6,"description":248,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":249,"categories":250,"keywords":259,"publishedAt":44},"01M6BVT1CVKQNSANZMZTNBDDY5","writing-shape","Writing, exploit: shape raw material into an article, paragraph by paragraph.","https:\u002F\u002Fgithub.com\u002Ffeniix\u002Fdotfiles\u002Fblob\u002Fmain\u002Fagents\u002Fskills\u002Fwriting-shape\u002FSKILL.md",[251,254],{"categoryNo":252,"categoryName":253,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000018","写作与文案",{"categoryNo":255,"categoryName":256,"taxonomyType":257,"taxonomyTypeDesc":258},"01JBSEEDCAT000000000000036","内容创作者","PROFESSION","适用职业",[260,261],"writing shape","writing",{"skillNo":263,"name":264,"nameZh":6,"description":265,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":266,"licenseFileUrl":267,"sourceHtmlUrl":268,"categories":269,"keywords":276,"publishedAt":44},"01M6BVSP7TBXD5GBW6KBTN5GGC","webapp-testing","Toolkit for interacting with and testing local web applications using Playwright. Supports verifying frontend functionality, debugging UI behavior, capturing browser screenshots, and viewing browser logs.","Apache-2.0","https:\u002F\u002Fgithub.com\u002Ffeniix\u002Fdotfiles\u002Fblob\u002Fmain\u002Fagents\u002Fskills\u002Fwebapp-testing\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Ffeniix\u002Fdotfiles\u002Fblob\u002Fmain\u002Fagents\u002Fskills\u002Fwebapp-testing\u002FSKILL.md",[270,273],{"categoryNo":271,"categoryName":272,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":274,"categoryName":275,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000009","前端开发",[277,278,279,26,280,281,282,283,284,285,286,287,288,289,290,291,292],"testing","webapp testing","webapp","logs","with","local","behavior","applications","toolkit","ui","frontend","screenshots","playwright","web","debugging","browser",{"skillNo":294,"name":295,"nameZh":6,"description":296,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":297,"categories":298,"keywords":299,"publishedAt":44},"01M6BVSMEE5GRR6ZCM43JNR73Y","wayfinder","Plan a huge chunk of work (more than one agent session can hold) as a shared map of decision tickets on your issue tracker, and resolve them one at a time until the way to the destination is clear.","https:\u002F\u002Fgithub.com\u002Ffeniix\u002Fdotfiles\u002Fblob\u002Fmain\u002Fagents\u002Fskills\u002Fwayfinder\u002FSKILL.md",[],[295,300,301,302,303,304,305,306],"chunk","plan","decision","work","one at a time","session","issue",{"skillNo":308,"name":309,"nameZh":6,"description":310,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":311,"categories":312,"keywords":313,"publishedAt":44},"01M6BVS3BHEG1D2RPZ2J6GNV90","to-tickets","Break a plan, spec, or the current conversation into a set of tracer-bullet tickets, each declaring its blocking edges, published to the configured tracker (edges as text in one file per ticket locally, or native blocking links on a real tracker).","https:\u002F\u002Fgithub.com\u002Ffeniix\u002Fdotfiles\u002Fblob\u002Fmain\u002Fagents\u002Fskills\u002Fto-tickets\u002FSKILL.md",[],[314,315,316,317,318,301],"to tickets","text","spec","file","SET",{"skillNo":320,"name":321,"nameZh":6,"description":322,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":323,"categories":324,"keywords":325,"publishedAt":44},"01M6BVRT61DF4XJE3ZERBBV0AW","tdd","Test-driven development. Use when the user wants to build features or fix bugs test-first, mentions \"red-green-refactor\", or wants integration tests.","https:\u002F\u002Fgithub.com\u002Ffeniix\u002Fdotfiles\u002Fblob\u002Fmain\u002Fagents\u002Fskills\u002Ftdd\u002FSKILL.md",[],[321,326,327,328,329,330,331,332,333,24,334],"test","integration tests","development","integration","refactor","first","user","fix","red-green-refactor"]