[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6K45W3AWHA1GMZV2PRDYJBS":3,"skill-same:01M6K45W3AWHA1GMZV2PRDYJBS":61},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":22,"publishedAt":33,"linkOnly":34,"markdownContent":35,"markdownBody":36,"frontMatter":37,"refName":40,"commitSha":41,"skillDirectory":42,"forksCount":43,"repositoryHtmlUrl":44,"repositoryHomepageUrl":6,"ownerHtmlUrl":45,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":46,"install":47,"resources":60},"01M6K45W3AWHA1GMZV2PRDYJBS","public-comment-summarizer",null,"Synthesize hearing or meeting comments into themes, misconceptions, unanswered questions, and response options.","BrianPillmore\u002FMayorGPT","BrianPillmore","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F89977304?v=4","01M6K3S5PAA7GX17DJCHR5QFZ2","01M6K3S5TAA6HKGD1BY6VTV0QB",1,"MIT","https:\u002F\u002Fgithub.com\u002FBrianPillmore\u002FMayorGPT\u002Fblob\u002Fmaster\u002Fskills\u002Fpublic-engagement\u002Fpublic-comment-summarizer\u002FSKILL.md",[17],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000034","行政与办公人员","PROFESSION","适用职业",[23,24,25,26,27,28,29,30,31,32],"public","summarizer","public comment","public comment summarizer","options","synthesize","themes","questions","comments","meeting","2026-11-10 10:12:30",false,"---\nname: public-comment-summarizer\ndescription: Synthesize hearing or meeting comments into themes, misconceptions, unanswered questions, and response options.\nargument-hint: [meeting-topic]\n---\n\n# Public Comment Summarizer\n\n**Purpose:** Convert raw comments into an honest, usable summary for decision makers, while preserving the official record. A summary never replaces the underlying comments, which must stay in the record.\n\n## Required inputs\n- All comment sources: oral testimony (recordings\u002Fminutes), emails, web forms, letters, petitions, survey responses, social comments if included\n- The question the body is deciding and the adopted criteria (if quasi-judicial)\n- Comment period dates; identifying fields (address, ward, role) if collected\n\n## Workflow\n1. **Inventory and de-duplicate.** Count unique commenters, form letters, and petitions separately. Record the timing of each comment against the deadline.\n2. **Code each comment** by position (support \u002F oppose \u002F mixed \u002F question) and by theme (traffic, cost, safety, equity, environment, process, property values, design, and others emerging). Allow multi-coding.\n3. **Report counts with caution.** Public comment is self-selected and not a poll. State this, avoid percentages implying representativeness, and show who is and is not heard (renters, non-English speakers, young people); compare commenter geography to affected area where possible.\n4. **Extract substance**: specific facts, data, alternatives, and conditions proposed. For quasi-judicial matters, separate comments relevant to the adopted criteria from comments about general preference; tell the decision maker which are record evidence.\n5. **Flag misconceptions** with the correct, sourced fact and a suggested neutral response (feeds `faq-builder`).\n6. **List unanswered questions** and owner\u002Fanswer-by date.\n7. **Present representative quotes** (short, accurate, attributed per policy; avoid exposing private details).\n8. **Offer response options**: modify the proposal, add a condition, extend the comment period, hold a second session, publish a response memo, or no change with reasons.\n9. **Document** how comments were considered; keep the raw set and the summary together under records retention.\n\n## Output structure\n- Method and counts, with caveats\n- Top themes ranked by frequency and by consequence\n- Position map by area\u002Fgroup\n- Misconceptions and answers\n- Unanswered questions\n- Recommended responses\n\n## Example\n> Theme: \"Traffic safety on Elm\" (41 of 128 comments; 9 offered specific data). Misconception: \"The plan removes all parking\" - the plan removes 12 of 140 spaces (staff report p.6).\n\n## Red flags \u002F escalate to the city attorney\n- Comments containing threats, personal data, or claims against the city\n- Late comments in a closed-record quasi-judicial hearing\n- Potential evidence of bias or ex parte communication by a decision maker\n\n## Common mistakes\n- Treating volume as consensus\n- Omitting minority views\n- Dropping comments that criticize staff or officials (viewpoint neutrality)\n\n*Not legal advice.*\n","# Public Comment Summarizer\n\n**Purpose:** Convert raw comments into an honest, usable summary for decision makers, while preserving the official record. A summary never replaces the underlying comments, which must stay in the record.\n\n## Required inputs\n- All comment sources: oral testimony (recordings\u002Fminutes), emails, web forms, letters, petitions, survey responses, social comments if included\n- The question the body is deciding and the adopted criteria (if quasi-judicial)\n- Comment period dates; identifying fields (address, ward, role) if collected\n\n## Workflow\n1. **Inventory and de-duplicate.** Count unique commenters, form letters, and petitions separately. Record the timing of each comment against the deadline.\n2. **Code each comment** by position (support \u002F oppose \u002F mixed \u002F question) and by theme (traffic, cost, safety, equity, environment, process, property values, design, and others emerging). Allow multi-coding.\n3. **Report counts with caution.** Public comment is self-selected and not a poll. State this, avoid percentages implying representativeness, and show who is and is not heard (renters, non-English speakers, young people); compare commenter geography to affected area where possible.\n4. **Extract substance**: specific facts, data, alternatives, and conditions proposed. For quasi-judicial matters, separate comments relevant to the adopted criteria from comments about general preference; tell the decision maker which are record evidence.\n5. **Flag misconceptions** with the correct, sourced fact and a suggested neutral response (feeds `faq-builder`).\n6. **List unanswered questions** and owner\u002Fanswer-by date.\n7. **Present representative quotes** (short, accurate, attributed per policy; avoid exposing private details).\n8. **Offer response options**: modify the proposal, add a condition, extend the comment period, hold a second session, publish a response memo, or no change with reasons.\n9. **Document** how comments were considered; keep the raw set and the summary together under records retention.\n\n## Output structure\n- Method and counts, with caveats\n- Top themes ranked by frequency and by consequence\n- Position map by area\u002Fgroup\n- Misconceptions and answers\n- Unanswered questions\n- Recommended responses\n\n## Example\n> Theme: \"Traffic safety on Elm\" (41 of 128 comments; 9 offered specific data). Misconception: \"The plan removes all parking\" - the plan removes 12 of 140 spaces (staff report p.6).\n\n## Red flags \u002F escalate to the city attorney\n- Comments containing threats, personal data, or claims against the city\n- Late comments in a closed-record quasi-judicial hearing\n- Potential evidence of bias or ex parte communication by a decision maker\n\n## Common mistakes\n- Treating volume as consensus\n- Omitting minority views\n- Dropping comments that criticize staff or officials (viewpoint neutrality)\n\n*Not legal advice.*\n",{"name":5,"description":7,"argument-hint":38},[39],"meeting-topic","master","edf1fceb08dc8ba63f1ad9159df28c1e0ef449fb","skills\u002Fpublic-engagement\u002Fpublic-comment-summarizer",0,"https:\u002F\u002Fgithub.com\u002FBrianPillmore\u002FMayorGPT","https:\u002F\u002Fgithub.com\u002FBrianPillmore","2026-11-02 04:58:40",{"source":8,"skillName":5,"commands":48,"prompt":58,"zipAvailable":59},[49,52,55],{"tool":50,"command":51},"npx","npx skills add BrianPillmore\u002FMayorGPT --skill public-comment-summarizer",{"tool":53,"command":54},"bunx","bunx skills add BrianPillmore\u002FMayorGPT --skill public-comment-summarizer",{"tool":56,"command":57},"pnpm","pnpm dlx skills add BrianPillmore\u002FMayorGPT --skill public-comment-summarizer","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FBrianPillmore\u002FMayorGPT\u002Fblob\u002Fmaster\u002Fskills\u002Fpublic-engagement\u002Fpublic-comment-summarizer\u002FSKILL.md",true,[],[62,80,94,124,138,152],{"skillNo":63,"name":64,"nameZh":6,"description":65,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":66,"categories":67,"keywords":68,"publishedAt":33},"01M6K466QB0Q2EVZRJ5X1XY21C","town-hall-kit","Prepare a town hall kit with agenda, ground rules, likely questions, follow-up method, and message priorities.","https:\u002F\u002Fgithub.com\u002FBrianPillmore\u002FMayorGPT\u002Fblob\u002Fmaster\u002Fskills\u002Fpublic-engagement\u002Ftown-hall-kit\u002FSKILL.md",[],[69,70,71,72,73,74,75,76,77,78,30,79],"town hall kit","kit","prepare","Rules","up","message","priorities","agenda","event","with","follow-up",{"skillNo":81,"name":82,"nameZh":6,"description":83,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":84,"categories":85,"keywords":86,"publishedAt":33},"01M6K462B8XJ2FFYH8BAXR0ZM5","speechwriter","Draft remarks for the mayor, council, manager, or department head in a strong but grounded municipal voice.","https:\u002F\u002Fgithub.com\u002FBrianPillmore\u002FMayorGPT\u002Fblob\u002Fmaster\u002Fskills\u002Fpublic-engagement\u002Fspeechwriter\u002FSKILL.md",[],[82,87,88,89,90,91,92,77,93],"for","council","voice","but","draft","head","manager",{"skillNo":95,"name":96,"nameZh":6,"description":97,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":98,"categories":99,"keywords":108,"publishedAt":33},"01M6K45Z8MYT7FVMV48WE0MACS","social-post-series","Generate a multi-post city social media series with tone control, accessibility, and channel fit.","https:\u002F\u002Fgithub.com\u002FBrianPillmore\u002FMayorGPT\u002Fblob\u002Fmaster\u002Fskills\u002Fpublic-engagement\u002Fsocial-post-series\u002FSKILL.md",[100,105],{"categoryNo":101,"categoryName":102,"taxonomyType":103,"taxonomyTypeDesc":104},"01JBSEEDCAT000000000000019","营销推广","SCENARIO","使用场景",{"categoryNo":106,"categoryName":107,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000035","市场营销",[109,110,111,112,113,114,115,78,116,117,118,119,120,121,122,123],"social post series","post","social post","series","social","fit","multi","control","accessibility","generate","Media","social media","channel","campaign","tone",{"skillNo":125,"name":126,"nameZh":6,"description":127,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":128,"categories":129,"keywords":130,"publishedAt":33},"01M6K45QWBXSDMGQTA1E9NC43M","press-release-writer","Write a city press release that is accurate, readable, and aligned with legal and operational review needs.","https:\u002F\u002Fgithub.com\u002FBrianPillmore\u002FMayorGPT\u002Fblob\u002Fmaster\u002Fskills\u002Fpublic-engagement\u002Fpress-release-writer\u002FSKILL.md",[],[131,132,133,134,135,136,137,78],"press release writer","press release","writer","release","review","write","legal",{"skillNo":139,"name":140,"nameZh":6,"description":141,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":142,"categories":143,"keywords":145,"publishedAt":33},"01M6K45JXZRSW4XXH78FTRBB2A","meeting-notice-drafter","Draft a legally sufficient public notice for any city council, board, commission, or committee meeting — covering required content, posting deadlines, and special-meeting or emergency-meeting rules.","https:\u002F\u002Fgithub.com\u002FBrianPillmore\u002FMayorGPT\u002Fblob\u002Fmaster\u002Fskills\u002Fpublic-engagement\u002Fmeeting-notice-drafter\u002FSKILL.md",[144],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[146,32,147,23,148,91,149,150,151,88,87,72],"meeting notice drafter","notice","board","posting","type","content",{"skillNo":153,"name":154,"nameZh":6,"description":155,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":156,"categories":157,"keywords":158,"publishedAt":33},"01M6K45DQ2DZEQFE01X1YG38Y0","language-access-plan","Build a practical language-access and accessibility plan for a notice, hearing, program, or outreach campaign serving limited-English-proficient and disabled residents.","https:\u002F\u002Fgithub.com\u002FBrianPillmore\u002FMayorGPT\u002Fblob\u002Fmaster\u002Fskills\u002Fpublic-engagement\u002Flanguage-access-plan\u002FSKILL.md",[],[159,160,161,162,163,122,117,77,164,87,165,147,166,167],"plan","language","access","language access plan","build","serving","practical","english","outreach"]