[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CB9DA6AN86HDFC3D367WF6":3,"skill-same:01M6CB9DA6AN86HDFC3D367WF6":59},{"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":28,"linkOnly":29,"markdownContent":30,"markdownBody":31,"frontMatter":32,"refName":37,"commitSha":38,"skillDirectory":39,"forksCount":40,"repositoryHtmlUrl":41,"repositoryHomepageUrl":42,"ownerHtmlUrl":43,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":44,"install":45,"resources":58},"01M6CB9DA6AN86HDFC3D367WF6","brutal-critic",null,"Grade and critique a content draft against a rubric, with line-cited fixes and expected outcomes","shahboura\u002Fagents-opencode","shahboura","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F210767?v=4","01M6C6WKTBT0NH92BEPQRHQSYM","Shehab El Hadidy","01M6C6WKYXG8AE68MCGBNE5ZFR",2,"MIT","https:\u002F\u002Fgithub.com\u002Fshahboura\u002Fagents-opencode\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fbrutal-critic\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27],"critic","brutal critic","review","content draft","content","critique","rubric","outcomes","opencode","2026-11-10 10:12:30",false,"---\nname: brutal-critic\ndescription: Grade and critique a content draft against a rubric, with line-cited fixes and expected outcomes\nlicense: MIT\ncompatibility: opencode\nmetadata:\n  author: shahboura\n  version: \"2.1.0\"\n  audience: content-creators\n  workflow: content-review\n---\n\n## What I do\n- Score a draft on four dimensions and justify each score\n- Cite the line for every finding, then give the fix and the expected outcome\n- Grade against the channel defaults in the writer skill, without inventing a second format spec\n\n## When to use me\nUse this when reviewing a draft before publication, or when calibrating the writing\neval grader. Fresh context every time: do not carry bias from earlier drafts.\n\n## Rubric\n\n| Dimension | What it measures | 9-10 | 7-8 | 5-6 | 3-4 | 1-2 |\n|---|---|---|---|---|---|---|\n| Content quality | accuracy, specificity, evidence | original and sourced | solid, minor gaps | generic in places | thin or unverified | wrong or empty |\n| Structure | order, transitions, scannability | reads effortlessly | clear with a rough seam | findable but slow | disorganised | unreadable |\n| Engagement | hook, pacing, concreteness | holds attention | mostly holds | sags mid-piece | loses the reader | none |\n| Overall | would the target reader act on it | publish as is | publish with fixes | needs a rewrite pass | wrong piece | start over |\n\nScores without a cited line are opinions. Every score below 9 needs at least one\nquoted line.\n\n## Criticism pattern\n\nFor every finding: **problem → why it matters → exact fix → expected outcome.**\nNever point out a problem without proposing the fix.\n\n## Prose slop checks\n\nFlag violations of the writer skill's Voice, Claims, and Anti-slop rules by name: quote\nthe line, name the rule, and state the fix. Do not restate those rules here; the writer\nskill is the single source of truth.\n\nTwo checks are review-only:\n\n- **Generic advice** that would fit any company or any person.\n- **Unsupported claim** with no source or date.\n\n## What I do not do\n\n- I do not prescribe channel format. The writer skill owns\n  `.opencode\u002Fskills\u002Fblogger\u002Freferences\u002Fformats.md`; grade against it, do not restate it.\n- I do not rewrite the piece. I point at lines and describe the fix.\n- I do not praise to be polite. Praise only when the standard is genuinely met.\n\n## Output\n\n1. Scores table with one line of justification per dimension.\n2. Findings, ordered by severity, each with `file:line` or the quoted sentence.\n3. The single change that would most improve the piece.\n\n## Calibration\n\nWhen used as an eval grader, grade the same sample three times. If a dimension moves by\nmore than 2 points between runs, its anchor is unclear and should be tightened before the\nscore is trusted.\n","## What I do\n- Score a draft on four dimensions and justify each score\n- Cite the line for every finding, then give the fix and the expected outcome\n- Grade against the channel defaults in the writer skill, without inventing a second format spec\n\n## When to use me\nUse this when reviewing a draft before publication, or when calibrating the writing\neval grader. Fresh context every time: do not carry bias from earlier drafts.\n\n## Rubric\n\n| Dimension | What it measures | 9-10 | 7-8 | 5-6 | 3-4 | 1-2 |\n|---|---|---|---|---|---|---|\n| Content quality | accuracy, specificity, evidence | original and sourced | solid, minor gaps | generic in places | thin or unverified | wrong or empty |\n| Structure | order, transitions, scannability | reads effortlessly | clear with a rough seam | findable but slow | disorganised | unreadable |\n| Engagement | hook, pacing, concreteness | holds attention | mostly holds | sags mid-piece | loses the reader | none |\n| Overall | would the target reader act on it | publish as is | publish with fixes | needs a rewrite pass | wrong piece | start over |\n\nScores without a cited line are opinions. Every score below 9 needs at least one\nquoted line.\n\n## Criticism pattern\n\nFor every finding: **problem → why it matters → exact fix → expected outcome.**\nNever point out a problem without proposing the fix.\n\n## Prose slop checks\n\nFlag violations of the writer skill's Voice, Claims, and Anti-slop rules by name: quote\nthe line, name the rule, and state the fix. Do not restate those rules here; the writer\nskill is the single source of truth.\n\nTwo checks are review-only:\n\n- **Generic advice** that would fit any company or any person.\n- **Unsupported claim** with no source or date.\n\n## What I do not do\n\n- I do not prescribe channel format. The writer skill owns\n  `.opencode\u002Fskills\u002Fblogger\u002Freferences\u002Fformats.md`; grade against it, do not restate it.\n- I do not rewrite the piece. I point at lines and describe the fix.\n- I do not praise to be polite. Praise only when the standard is genuinely met.\n\n## Output\n\n1. Scores table with one line of justification per dimension.\n2. Findings, ordered by severity, each with `file:line` or the quoted sentence.\n3. The single change that would most improve the piece.\n\n## Calibration\n\nWhen used as an eval grader, grade the same sample three times. If a dimension moves by\nmore than 2 points between runs, its anchor is unclear and should be tightened before the\nscore is trusted.\n",{"name":5,"license":15,"metadata":33,"description":7,"compatibility":27},{"author":9,"version":34,"audience":35,"workflow":36},"2.1.0","content-creators","content-review","main","9b951b5b2e5d07d427baff330db5deb2a8c67511",".opencode\u002Fskills\u002Fbrutal-critic",0,"https:\u002F\u002Fgithub.com\u002Fshahboura\u002Fagents-opencode","https:\u002F\u002Fagnts.elkodr.com\u002F","https:\u002F\u002Fgithub.com\u002Fshahboura","2026-11-05 13:30:42",{"source":8,"skillName":5,"commands":46,"prompt":56,"zipAvailable":57},[47,50,53],{"tool":48,"command":49},"npx","npx skills add shahboura\u002Fagents-opencode --skill brutal-critic",{"tool":51,"command":52},"bunx","bunx skills add shahboura\u002Fagents-opencode --skill brutal-critic",{"tool":54,"command":55},"pnpm","pnpm dlx skills add shahboura\u002Fagents-opencode --skill brutal-critic","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fshahboura\u002Fagents-opencode\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fbrutal-critic\u002FSKILL.md",true,[],[60,66,75,80,85,90],{"skillNo":61,"name":62,"nameZh":6,"description":6,"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":28},"01M6CBBX1C6NV7VY8XK21DV5FW","python","https:\u002F\u002Fgithub.com\u002Fshahboura\u002Fagents-opencode\u002Fblob\u002Fmain\u002Fscripts\u002Ffixtures\u002Fvalidate-agents\u002Fvalid\u002F.opencode\u002Fskills\u002Fpython\u002FSKILL.md",[],[62],{"skillNo":67,"name":68,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":69,"categories":70,"keywords":71,"publishedAt":28},"01M6CBBVB7W6ABJH8XP3Z8PPMK","docs-validation","https:\u002F\u002Fgithub.com\u002Fshahboura\u002Fagents-opencode\u002Fblob\u002Fmain\u002Fscripts\u002Ffixtures\u002Fvalidate-agents\u002Fvalid\u002F.opencode\u002Fskills\u002Fdocs-validation\u002FSKILL.md",[],[72,73,74],"docs","validation","docs validation",{"skillNo":76,"name":62,"nameZh":6,"description":6,"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":28},"01M6CBBT2WC781609MH5RN7KM7","https:\u002F\u002Fgithub.com\u002Fshahboura\u002Fagents-opencode\u002Fblob\u002Fmain\u002Fscripts\u002Ffixtures\u002Fvalidate-agents\u002Funknown-skill\u002F.opencode\u002Fskills\u002Fpython\u002FSKILL.md",[],[62],{"skillNo":81,"name":68,"nameZh":6,"description":6,"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":28},"01M6CBBRNY6TDRZ5627GC8436D","https:\u002F\u002Fgithub.com\u002Fshahboura\u002Fagents-opencode\u002Fblob\u002Fmain\u002Fscripts\u002Ffixtures\u002Fvalidate-agents\u002Funknown-skill\u002F.opencode\u002Fskills\u002Fdocs-validation\u002FSKILL.md",[],[72,73,74],{"skillNo":86,"name":62,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":87,"categories":88,"keywords":89,"publishedAt":28},"01M6CBBQDS170GBYA1CVW3DC5D","https:\u002F\u002Fgithub.com\u002Fshahboura\u002Fagents-opencode\u002Fblob\u002Fmain\u002Fscripts\u002Ffixtures\u002Fvalidate-agents\u002Finline-skill\u002F.opencode\u002Fskills\u002Fpython\u002FSKILL.md",[],[62],{"skillNo":91,"name":68,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":92,"categories":93,"keywords":94,"publishedAt":28},"01M6CBBP222WAW802YHY37F48A","https:\u002F\u002Fgithub.com\u002Fshahboura\u002Fagents-opencode\u002Fblob\u002Fmain\u002Fscripts\u002Ffixtures\u002Fvalidate-agents\u002Finline-skill\u002F.opencode\u002Fskills\u002Fdocs-validation\u002FSKILL.md",[],[72,73,74]]