[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6BV11YZ1DB9TGXNP82W0SEE":3,"skill-same:01M6BV11YZ1DB9TGXNP82W0SEE":60},{"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":32,"linkOnly":33,"markdownContent":34,"markdownBody":35,"frontMatter":36,"refName":37,"commitSha":38,"skillDirectory":39,"forksCount":40,"repositoryHtmlUrl":41,"repositoryHomepageUrl":6,"ownerHtmlUrl":42,"ownerBlogUrl":43,"ownerDescription":44,"updatedAt":45,"install":46,"resources":59},"01M6BV11YZ1DB9TGXNP82W0SEE","guard",null,"Pre-commit safety check for secrets, security antipatterns, and test breakage. Use for pre-commit checks, secret scanning, or verifying test safety.","drn\u002Fdots","drn","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F885841?v=4","01M6BTZJR7B1RVQRJKP0S70DQS","Darren Cheng","01M6BTZJWXCK41P3Z50BV8KWD9",23,"MIT","https:\u002F\u002Fgithub.com\u002Fdrn\u002Fdots\u002Fblob\u002Fmaster\u002Fagents\u002Fskills\u002Fguard\u002FSKILL.md",[],[5,19,20,21,22,23,24,25,26,27,28,29,30,31],"security","test","commit","secret scanning","Safety","pre-commit","secrets","check","use","scanning","safety check","antipatterns","for","2026-11-10 10:12:30",false,"---\nname: guard\ndescription: Pre-commit safety check for secrets, security antipatterns, and test breakage. Use for pre-commit checks, secret scanning, or verifying test safety.\n---\n\n# Pre-commit Guard\n\nFast safety check before committing. Scans for secrets, security antipatterns, test breakage, and lint issues. Binary pass\u002Ffail output.\n\n## Arguments\n\n- `$ARGUMENTS` - Optional: `--strict` for zero-tolerance mode (warnings also fail)\n\n## Context\n\n- Staged files: !`git diff --cached --name-only`\n- Unstaged changes: !`git diff --name-only`\n- Project type: !`find . -maxdepth 1 \\( -name go.mod -o -name Gemfile -o -name package.json -o -name Cargo.toml -o -name pyproject.toml \\) 2>\u002Fdev\u002Fnull | head -3`\n\n## Instructions\n\nRun these checks against all staged files (or all changed files if nothing is staged). Be fast -- this is a pre-commit gate, not a full review.\n\n### Check 0: Gitignore Violations\n\nScan staged\u002Fchanged files for common files that should not be committed:\n\n- `.env`, `.env.*` files (environment\u002Fsecrets)\n- `node_modules\u002F` contents\n- Build artifacts (`dist\u002F`, `build\u002F`, `*.o`, `*.pyc`, `__pycache__\u002F`)\n- IDE files (`.idea\u002F`, `.vscode\u002Fsettings.json`)\n- OS files (`.DS_Store`, `Thumbs.db`)\n- Log files (`*.log`)\n- Credential files (`credentials.json`, `*.pem`, `*.key`)\n\n**Report:** WARNING if any found (FAIL in --strict mode).\n\n### Check 1: Secrets Detection\n\nScan staged\u002Fchanged files for:\n\n- API keys, tokens, passwords (patterns: `password\\s*=`, `api_key`, `secret`, `token\\s*=`, `Bearer `)\n- AWS credentials (`AKIA`, `aws_secret_access_key`)\n- Private keys (`-----BEGIN.*PRIVATE KEY-----`)\n- Connection strings with embedded credentials\n- `.env` files being committed\n- Hardcoded URLs with credentials (`https:\u002F\u002Fuser:pass@`)\n\n**Report:** FAIL if any found, with file and line number.\n\n### Check 2: Security Antipatterns\n\nScan for common dangerous patterns:\n\n- `eval()` or `exec()` with variable input\n- SQL string concatenation (instead of parameterized queries)\n- `dangerouslySetInnerHTML` or equivalent\n- Disabled SSL verification (`verify: false`, `VERIFY_NONE`)\n- Overly permissive CORS (`Access-Control-Allow-Origin: *`)\n- `chmod 777` or world-readable permissions\n- `--no-verify` or security bypass flags in code\n\n**Report:** FAIL if any found.\n\n### Check 3: Test Breakage\n\nRun a quick test check:\n\n```\nIF project has test framework:\n  Run tests targeting changed files only (same mapping as \u002Ftest)\n  Report: PASS or FAIL with failure details\nELSE:\n  Report: SKIP (no test framework detected)\n```\n\nKeep this fast -- targeted tests only, not the full suite.\n\n### Check 4: Lint Check\n\n```\nIF go.mod exists: run `revive -set_exit_status .\u002F...` or `go vet .\u002F...`\nIF package.json exists: run `npx eslint {changed files}` if eslint is configured\nIF Gemfile exists: run `bundle exec rubocop {changed files} --force-exclusion` if rubocop is configured\nIF pyproject.toml exists: run `ruff check {changed files}` if ruff is configured\nIF Cargo.toml exists: run `cargo clippy -- -D warnings`\nELSE: SKIP\n```\n\n**Report:** FAIL if lint errors found.\n\n### Output\n\n```\nIF --strict mode:\n  FAIL if ANY check has warnings or failures\nELSE:\n  FAIL if ANY check has failures (warnings are noted but pass)\n```\n\nFormat:\n\n```markdown\n## Guard Check\n\n| Check | Status | Details |\n|-------|--------|---------|\n| Gitignore | PASS\u002FWARN | {brief or \"Clean\"} |\n| Secrets | PASS\u002FFAIL | {brief or \"Clean\"} |\n| Security | PASS\u002FFAIL | {brief or \"Clean\"} |\n| Tests | PASS\u002FFAIL\u002FSKIP | {brief or \"All passing\"} |\n| Lint | PASS\u002FFAIL\u002FSKIP | {brief or \"Clean\"} |\n\n**Result: PASS \u002F FAIL**\n\n{If FAIL: list each issue with file and line number}\n{If PASS: \"Safe to commit.\"}\n```\n\nKeep the output concise. This should feel like a quick gate check, not a verbose report.\n","# Pre-commit Guard\n\nFast safety check before committing. Scans for secrets, security antipatterns, test breakage, and lint issues. Binary pass\u002Ffail output.\n\n## Arguments\n\n- `$ARGUMENTS` - Optional: `--strict` for zero-tolerance mode (warnings also fail)\n\n## Context\n\n- Staged files: !`git diff --cached --name-only`\n- Unstaged changes: !`git diff --name-only`\n- Project type: !`find . -maxdepth 1 \\( -name go.mod -o -name Gemfile -o -name package.json -o -name Cargo.toml -o -name pyproject.toml \\) 2>\u002Fdev\u002Fnull | head -3`\n\n## Instructions\n\nRun these checks against all staged files (or all changed files if nothing is staged). Be fast -- this is a pre-commit gate, not a full review.\n\n### Check 0: Gitignore Violations\n\nScan staged\u002Fchanged files for common files that should not be committed:\n\n- `.env`, `.env.*` files (environment\u002Fsecrets)\n- `node_modules\u002F` contents\n- Build artifacts (`dist\u002F`, `build\u002F`, `*.o`, `*.pyc`, `__pycache__\u002F`)\n- IDE files (`.idea\u002F`, `.vscode\u002Fsettings.json`)\n- OS files (`.DS_Store`, `Thumbs.db`)\n- Log files (`*.log`)\n- Credential files (`credentials.json`, `*.pem`, `*.key`)\n\n**Report:** WARNING if any found (FAIL in --strict mode).\n\n### Check 1: Secrets Detection\n\nScan staged\u002Fchanged files for:\n\n- API keys, tokens, passwords (patterns: `password\\s*=`, `api_key`, `secret`, `token\\s*=`, `Bearer `)\n- AWS credentials (`AKIA`, `aws_secret_access_key`)\n- Private keys (`-----BEGIN.*PRIVATE KEY-----`)\n- Connection strings with embedded credentials\n- `.env` files being committed\n- Hardcoded URLs with credentials (`https:\u002F\u002Fuser:pass@`)\n\n**Report:** FAIL if any found, with file and line number.\n\n### Check 2: Security Antipatterns\n\nScan for common dangerous patterns:\n\n- `eval()` or `exec()` with variable input\n- SQL string concatenation (instead of parameterized queries)\n- `dangerouslySetInnerHTML` or equivalent\n- Disabled SSL verification (`verify: false`, `VERIFY_NONE`)\n- Overly permissive CORS (`Access-Control-Allow-Origin: *`)\n- `chmod 777` or world-readable permissions\n- `--no-verify` or security bypass flags in code\n\n**Report:** FAIL if any found.\n\n### Check 3: Test Breakage\n\nRun a quick test check:\n\n```\nIF project has test framework:\n  Run tests targeting changed files only (same mapping as \u002Ftest)\n  Report: PASS or FAIL with failure details\nELSE:\n  Report: SKIP (no test framework detected)\n```\n\nKeep this fast -- targeted tests only, not the full suite.\n\n### Check 4: Lint Check\n\n```\nIF go.mod exists: run `revive -set_exit_status .\u002F...` or `go vet .\u002F...`\nIF package.json exists: run `npx eslint {changed files}` if eslint is configured\nIF Gemfile exists: run `bundle exec rubocop {changed files} --force-exclusion` if rubocop is configured\nIF pyproject.toml exists: run `ruff check {changed files}` if ruff is configured\nIF Cargo.toml exists: run `cargo clippy -- -D warnings`\nELSE: SKIP\n```\n\n**Report:** FAIL if lint errors found.\n\n### Output\n\n```\nIF --strict mode:\n  FAIL if ANY check has warnings or failures\nELSE:\n  FAIL if ANY check has failures (warnings are noted but pass)\n```\n\nFormat:\n\n```markdown\n## Guard Check\n\n| Check | Status | Details |\n|-------|--------|---------|\n| Gitignore | PASS\u002FWARN | {brief or \"Clean\"} |\n| Secrets | PASS\u002FFAIL | {brief or \"Clean\"} |\n| Security | PASS\u002FFAIL | {brief or \"Clean\"} |\n| Tests | PASS\u002FFAIL\u002FSKIP | {brief or \"All passing\"} |\n| Lint | PASS\u002FFAIL\u002FSKIP | {brief or \"Clean\"} |\n\n**Result: PASS \u002F FAIL**\n\n{If FAIL: list each issue with file and line number}\n{If PASS: \"Safe to commit.\"}\n```\n\nKeep the output concise. This should feel like a quick gate check, not a verbose report.\n",{"name":5,"description":7},"master","427f62a9fc82624977516767979411f885161ac5","agents\u002Fskills\u002Fguard",4,"https:\u002F\u002Fgithub.com\u002Fdrn\u002Fdots","https:\u002F\u002Fgithub.com\u002Fdrn","https:\u002F\u002Fdrn.dev","CTO & Co-Founder @thanx","2026-11-12 16:13:13",{"source":8,"skillName":5,"commands":47,"prompt":57,"zipAvailable":58},[48,51,54],{"tool":49,"command":50},"npx","npx skills add drn\u002Fdots --skill guard",{"tool":52,"command":53},"bunx","bunx skills add drn\u002Fdots --skill guard",{"tool":55,"command":56},"pnpm","pnpm dlx skills add drn\u002Fdots --skill guard","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fdrn\u002Fdots\u002Fblob\u002Fmaster\u002Fagents\u002Fskills\u002Fguard\u002FSKILL.md",true,[],[61,93,113,125,148,166],{"skillNo":62,"name":63,"nameZh":6,"description":64,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":65,"categories":66,"keywords":72,"publishedAt":32},"01M70KJSG2P5Y3N95MGSGKJ8VA","batch-pr-review","Review a batch of pull requests together, describe every change in plain language, and build a private Claude artifact that eases human review, with a severity-tagged and verified findings list. Use when asked to review several PRs, a stack of PRs, PRs listed in a Slack thread or message, or to summarize a batch of PRs for a reviewer.","https:\u002F\u002Fgithub.com\u002Fdrn\u002Fdots\u002Fblob\u002Fmaster\u002Fagents\u002Fskills\u002Fbatch-pr-review\u002FSKILL.md",[67],{"categoryNo":68,"categoryName":69,"taxonomyType":70,"taxonomyTypeDesc":71},"01JBSEEDCAT000000000000005","邮件与沟通","SCENARIO","使用场景",[73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92],"batch pr review","batch","pr","pr review","review","reviewer","when","parse","scripts","human","artifact","message","write","read","stack","gh pr","Bash","change","pull requests","slack",{"skillNo":94,"name":95,"nameZh":6,"description":96,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":97,"categories":98,"keywords":102,"publishedAt":32},"01M6BV2G3ZAS76C40S3YBY6R61","plannotator-setup-goal","Create reviewed Codex goal setup packages for long-running \u002Fgoal work. Use when the user wants to turn an idea, backlog, project mission, or vague objective into durable goal files under a project goals slug folder, with Plannotator review gates for brief, narrative plan with acceptance criteria, verification, blockers, and the final \u002Fgoal prompt.","https:\u002F\u002Fgithub.com\u002Fdrn\u002Fdots\u002Fblob\u002Fmaster\u002Fagents\u002Fskills\u002Fplannotator-setup-goal\u002FSKILL.md",[99],{"categoryNo":100,"categoryName":101,"taxonomyType":70,"taxonomyTypeDesc":71},"01JBSEEDCAT000000000000023","Skill与智能体开发",[103,104,105,106,107,108,109,110,111,112,77],"plannotator setup goal","setup","verification","plan","plannotator review","brief","acceptance","create","packages","codex",{"skillNo":114,"name":115,"nameZh":6,"description":116,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":117,"categories":118,"keywords":119,"publishedAt":32},"01M6BV26Y6GTDMQZYXFRWKEC08","plannotator-annotate","Open Plannotator's annotation UI for a markdown file, converted HTML file, URL, or folder and then respond to the returned annotations.","https:\u002F\u002Fgithub.com\u002Fdrn\u002Fdots\u002Fblob\u002Fmaster\u002Fagents\u002Fskills\u002Fplannotator-annotate\u002FSKILL.md",[],[120,121,122,123,124],"plannotator annotate","markdown","open","ui","file",{"skillNo":126,"name":127,"nameZh":6,"description":128,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":129,"categories":130,"keywords":132,"publishedAt":32},"01M6BV44RGGTRRFGWMYCR3BQ1P","write-skill","Create or improve a Claude Code skill\u002Fslash command with best practices for structure, dynamic context, and safety. Use for creating new skills, improving existing ones, or learning skill authoring.","https:\u002F\u002Fgithub.com\u002Fdrn\u002Fdots\u002Fblob\u002Fmaster\u002Fagents\u002Fskills\u002Fwrite-skill\u002FSKILL.md",[131],{"categoryNo":100,"categoryName":101,"taxonomyType":70,"taxonomyTypeDesc":71},[85,133,134,135,136,137,31,138,139,27,140,141,142,143,23,144,145,146,147,110],"write skill","with","authoring","code skill","code","structure","claude code skill","context","command","improve","learning","best practices","Existing","new","skill authoring",{"skillNo":149,"name":150,"nameZh":6,"description":151,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":152,"categories":153,"keywords":154,"publishedAt":32},"01M6BV4390BFK30F1T51SAJPAV","wrapup","End-of-session checklist that detects loose ends — uncommitted changes, unmerged branches, learnings to capture, handoffs needed — and routes to the right skills. Use for session closeout, wrapping up, end of day, or \"anything else to capture\".","https:\u002F\u002Fgithub.com\u002Fdrn\u002Fdots\u002Fblob\u002Fmaster\u002Fagents\u002Fskills\u002Fwrapup\u002FSKILL.md",[],[150,155,156,157,31,158,159,160,161,162,27,163,164,165],"session closeout","up","changes","end of day","end","branches","learnings","checklist","session","closeout","capture",{"skillNo":167,"name":168,"nameZh":6,"description":169,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":170,"categories":171,"keywords":172,"publishedAt":32},"01M6BV41ZZ051JX2B3CB5WARZM","tts","Read text aloud using text-to-speech. Use when the user says \"speak to me\", \"read to me\", \"read this aloud\", \"say this\", \"speak the summary\", or asks to hear something spoken.","https:\u002F\u002Fgithub.com\u002Fdrn\u002Fdots\u002Fblob\u002Fmaster\u002Fagents\u002Fskills\u002Ftts\u002FSKILL.md",[],[168,27,173,86,174,175,176,177,79,178,179,180],"user","speak","text","speech","say","text-to-speech","me","summary"]