[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M719SGV9R1N88QWAB7Y925HD":3,"skill-same:01M719SGV9R1N88QWAB7Y925HD":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":17,"publishedAt":34,"linkOnly":35,"markdownContent":36,"markdownBody":37,"frontMatter":38,"refName":39,"commitSha":40,"skillDirectory":41,"forksCount":42,"repositoryHtmlUrl":43,"repositoryHomepageUrl":44,"ownerHtmlUrl":45,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":46,"install":47,"resources":60},"01M719SGV9R1N88QWAB7Y925HD","verification-loops",null,"Use when about to claim work is complete, fixed, or passing, before committing or creating PRs. Requires running verification commands and confirming output before making any success claims. Evidence before assertions always.","dahaliztupe-sketch\u002FKalmeron-Two","dahaliztupe-sketch","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F271085317?v=4","01M719765Q83P08JCQ1SWNQR0N","01M719766HQBGF44W90MPJKTD2",1,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Fdahaliztupe-sketch\u002FKalmeron-Two\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fverification-loops\u002FSKILL.md",[],[18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33],"verification","loops","verification loops","running","evidence","complete","prs","claim","use","assertions","when","output","claims","work","about","commands","2026-11-10 10:12:30",false,"---\nname: verification-loops\ndescription: Use when about to claim work is complete, fixed, or passing, before committing or creating PRs. Requires running verification commands and confirming output before making any success claims. Evidence before assertions always.\n---\n\n# Verification Loops Skill\n\nNever claim success without running the commands to verify it.\n\n## The Core Rule\n\n**Evidence before assertions.** Run the verification, read the output, confirm it, then report.\n\n```\n❌ \"TypeScript should be fine now\" (no verification)\n✅ Run: npx tsc --noEmit → read output → \"Exit code 0, 0 errors\" → report\n```\n\n## Standard Verification Checklist\n\nBefore marking any task complete, run all applicable checks:\n\n### 1. TypeScript Gate\n```bash\nnpx tsc --noEmit 2>&1 | head -20\necho \"TSC_EXIT:$?\"\n```\nAccept only: `TSC_EXIT:0` and 0 error lines.\n\n### 2. Lint Gate\n```bash\nnpm run lint 2>&1 | tail -20\necho \"LINT_EXIT:$?\"\n```\nAccept only: 0 errors, 0 warnings (Kalmeron uses `--max-warnings=0`).\n\n### 3. i18n Completeness\nWhen adding new translation keys:\n```bash\n# Verify key exists in both files\ngrep '\"NewKey\"' messages\u002Far.json messages\u002Fen.json\n```\nBoth files must contain the key.\n\n### 4. Route Uniqueness\nWhen adding a new page:\n```bash\nfind app -name \"page.tsx\" | grep \"your-route\"\n```\nShould return exactly 1 result.\n\n### 5. Firestore Auth Coverage\nWhen adding a new API route:\n```bash\ngrep -n \"getServerSession\\|verifyIdToken\\|verifySessionCookie\" app\u002Fapi\u002Fyour-route\u002Froute.ts\n```\nMust return at least 1 match (or be a documented public endpoint).\n\n### 6. File Existence Verification\nAfter creating a file:\n```bash\nls -la path\u002Fto\u002Fcreated\u002Ffile.ext\n```\nNever assume a write succeeded — verify the file exists and has non-zero size.\n\n## Verification by Task Type\n\n### Feature additions:\n1. `npx tsc --noEmit` → 0 errors\n2. `npm run lint` → 0 warnings\n3. Visual check: screenshot or log of the feature working\n\n### Bug fixes:\n1. Reproduce the bug in the original state (if possible)\n2. Apply the fix\n3. Confirm the original reproduction no longer triggers\n4. `npx tsc --noEmit` → 0 errors\n\n### i18n additions:\n1. Both `ar.json` and `en.json` updated\n2. `grep \"NewNamespace.NewKey\"` finds the key in both files\n3. Component uses `t(\"NewNamespace.NewKey\")` not hardcoded text\n\n### API route additions:\n1. Route file exists at `app\u002Fapi\u002Froute-name\u002Froute.ts`\n2. Auth check is present (or public endpoint is documented)\n3. `npx tsc --noEmit` → 0 errors\n\n### SAST\u002FSecurity changes:\n1. SAST workflow logic inverts correctly (grep -rL for missing auth = files WITHOUT auth)\n2. No false positives in the allowlist\n3. Gate thresholds are documented and justified\n\n## Common Verification Failures in Kalmeron\n\n| Failure | Symptom | Verify With |\n|---|---|---|\n| TypeScript error | Framer Motion types | `npx tsc --noEmit` |\n| Missing translation | Component renders key string | `grep \"key\" messages\u002F*.json` |\n| ESLint setState | `setState in useEffect` warning | `npm run lint` |\n| Route conflict | 404 or wrong page loads | `find app -name page.tsx \\| grep route` |\n| Missing auth | Security gate fails | `grep -rL \"getServerSession\" app\u002Fapi\u002F` |\n| Wrong Firestore query | Missing userId filter | `grep -n \"userId\" app\u002Fapi\u002Froute.ts` |\n\n## Reporting Results\n\nAfter running verification, always include the actual output:\n\n```\n✅ TypeScript: `npx tsc --noEmit` → exit 0, 0 errors\n✅ Lint: `npm run lint` → 0 errors, 0 warnings  \n✅ i18n: keys found in both ar.json and en.json\n✅ Route: exactly 1 page.tsx at app\u002F(dashboard)\u002Fnew-feature\u002F\n```\n\nNot:\n```\n❌ \"Everything should work now\"\n❌ \"TypeScript is probably fine\"\n❌ \"The lint should pass\"\n```\n","# Verification Loops Skill\n\nNever claim success without running the commands to verify it.\n\n## The Core Rule\n\n**Evidence before assertions.** Run the verification, read the output, confirm it, then report.\n\n```\n❌ \"TypeScript should be fine now\" (no verification)\n✅ Run: npx tsc --noEmit → read output → \"Exit code 0, 0 errors\" → report\n```\n\n## Standard Verification Checklist\n\nBefore marking any task complete, run all applicable checks:\n\n### 1. TypeScript Gate\n```bash\nnpx tsc --noEmit 2>&1 | head -20\necho \"TSC_EXIT:$?\"\n```\nAccept only: `TSC_EXIT:0` and 0 error lines.\n\n### 2. Lint Gate\n```bash\nnpm run lint 2>&1 | tail -20\necho \"LINT_EXIT:$?\"\n```\nAccept only: 0 errors, 0 warnings (Kalmeron uses `--max-warnings=0`).\n\n### 3. i18n Completeness\nWhen adding new translation keys:\n```bash\n# Verify key exists in both files\ngrep '\"NewKey\"' messages\u002Far.json messages\u002Fen.json\n```\nBoth files must contain the key.\n\n### 4. Route Uniqueness\nWhen adding a new page:\n```bash\nfind app -name \"page.tsx\" | grep \"your-route\"\n```\nShould return exactly 1 result.\n\n### 5. Firestore Auth Coverage\nWhen adding a new API route:\n```bash\ngrep -n \"getServerSession\\|verifyIdToken\\|verifySessionCookie\" app\u002Fapi\u002Fyour-route\u002Froute.ts\n```\nMust return at least 1 match (or be a documented public endpoint).\n\n### 6. File Existence Verification\nAfter creating a file:\n```bash\nls -la path\u002Fto\u002Fcreated\u002Ffile.ext\n```\nNever assume a write succeeded — verify the file exists and has non-zero size.\n\n## Verification by Task Type\n\n### Feature additions:\n1. `npx tsc --noEmit` → 0 errors\n2. `npm run lint` → 0 warnings\n3. Visual check: screenshot or log of the feature working\n\n### Bug fixes:\n1. Reproduce the bug in the original state (if possible)\n2. Apply the fix\n3. Confirm the original reproduction no longer triggers\n4. `npx tsc --noEmit` → 0 errors\n\n### i18n additions:\n1. Both `ar.json` and `en.json` updated\n2. `grep \"NewNamespace.NewKey\"` finds the key in both files\n3. Component uses `t(\"NewNamespace.NewKey\")` not hardcoded text\n\n### API route additions:\n1. Route file exists at `app\u002Fapi\u002Froute-name\u002Froute.ts`\n2. Auth check is present (or public endpoint is documented)\n3. `npx tsc --noEmit` → 0 errors\n\n### SAST\u002FSecurity changes:\n1. SAST workflow logic inverts correctly (grep -rL for missing auth = files WITHOUT auth)\n2. No false positives in the allowlist\n3. Gate thresholds are documented and justified\n\n## Common Verification Failures in Kalmeron\n\n| Failure | Symptom | Verify With |\n|---|---|---|\n| TypeScript error | Framer Motion types | `npx tsc --noEmit` |\n| Missing translation | Component renders key string | `grep \"key\" messages\u002F*.json` |\n| ESLint setState | `setState in useEffect` warning | `npm run lint` |\n| Route conflict | 404 or wrong page loads | `find app -name page.tsx \\| grep route` |\n| Missing auth | Security gate fails | `grep -rL \"getServerSession\" app\u002Fapi\u002F` |\n| Wrong Firestore query | Missing userId filter | `grep -n \"userId\" app\u002Fapi\u002Froute.ts` |\n\n## Reporting Results\n\nAfter running verification, always include the actual output:\n\n```\n✅ TypeScript: `npx tsc --noEmit` → exit 0, 0 errors\n✅ Lint: `npm run lint` → 0 errors, 0 warnings  \n✅ i18n: keys found in both ar.json and en.json\n✅ Route: exactly 1 page.tsx at app\u002F(dashboard)\u002Fnew-feature\u002F\n```\n\nNot:\n```\n❌ \"Everything should work now\"\n❌ \"TypeScript is probably fine\"\n❌ \"The lint should pass\"\n```\n",{"name":5,"description":7},"main","13d9afadbb6a87d6209fe4bd6ca2bbe4553119ac",".agents\u002Fskills\u002Fverification-loops",0,"https:\u002F\u002Fgithub.com\u002Fdahaliztupe-sketch\u002FKalmeron-Two","https:\u002F\u002Fkalmeron-two.vercel.app","https:\u002F\u002Fgithub.com\u002Fdahaliztupe-sketch","2026-10-05 12:24:53",{"source":8,"skillName":5,"commands":48,"prompt":58,"zipAvailable":59},[49,52,55],{"tool":50,"command":51},"npx","npx skills add dahaliztupe-sketch\u002FKalmeron-Two --skill verification-loops",{"tool":53,"command":54},"bunx","bunx skills add dahaliztupe-sketch\u002FKalmeron-Two --skill verification-loops",{"tool":56,"command":57},"pnpm","pnpm dlx skills add dahaliztupe-sketch\u002FKalmeron-Two --skill verification-loops","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fdahaliztupe-sketch\u002FKalmeron-Two\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fverification-loops\u002FSKILL.md",true,[],[62,79,102,121,150,181],{"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":66,"sourceHtmlUrl":67,"categories":68,"keywords":74,"publishedAt":34},"01M719SWYD9RGS97HJ69PXWY62","add-new-agent","خطوات تفصيليّة لإضافة وكيل ذكاء اصطناعي جديد إلى منصّة Kalmeron من الفكرة إلى الإنتاج","https:\u002F\u002Fgithub.com\u002Fdahaliztupe-sketch\u002FKalmeron-Two\u002Fblob\u002Fmain\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fdahaliztupe-sketch\u002FKalmeron-Two\u002Fblob\u002Fmain\u002FSKILL.md",[69],{"categoryNo":70,"categoryName":71,"taxonomyType":72,"taxonomyTypeDesc":73},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[75,76,77,78],"add","add new agent","new","new agent",{"skillNo":80,"name":81,"nameZh":6,"description":82,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":83,"categories":84,"keywords":96,"publishedAt":34},"01M719SSKNBA7T5NS7V6DP0PX4","writing-skills","Use when creating new skills, editing existing skills, or verifying skills work before deployment","https:\u002F\u002Fgithub.com\u002Fdahaliztupe-sketch\u002FKalmeron-Two\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fwriting-skills\u002FSKILL.md",[85,88,91],{"categoryNo":86,"categoryName":87,"taxonomyType":72,"taxonomyTypeDesc":73},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":89,"categoryName":90,"taxonomyType":72,"taxonomyTypeDesc":73},"01JBSEEDCAT000000000000018","写作与文案",{"categoryNo":92,"categoryName":93,"taxonomyType":94,"taxonomyTypeDesc":95},"01JBSEEDCAT000000000000036","内容创作者","PROFESSION","适用职业",[97,98,77,28,31,99,100,26,101],"writing skills","writing","editing","deployment","Existing",{"skillNo":103,"name":104,"nameZh":6,"description":105,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":106,"categories":107,"keywords":110,"publishedAt":34},"01M719SRFDNKA3044QD3FYZ05R","writing-plans","Use when you have a spec or requirements for a multi-step task, before touching code","https:\u002F\u002Fgithub.com\u002Fdahaliztupe-sketch\u002FKalmeron-Two\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fwriting-plans\u002FSKILL.md",[108,109],{"categoryNo":89,"categoryName":90,"taxonomyType":72,"taxonomyTypeDesc":73},{"categoryNo":92,"categoryName":93,"taxonomyType":94,"taxonomyTypeDesc":95},[111,98,112,113,114,26,28,115,116,117,118,119,120],"writing plans","plans","code","for","you","requirements","task","multi","spec","multi-step task",{"skillNo":122,"name":123,"nameZh":6,"description":124,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":125,"categories":126,"keywords":133,"publishedAt":34},"01M719SPN5FM1JYJSR9DGJQPZ0","web-design-guidelines","Review UI code for Web Interface Guidelines compliance. Use when asked to \"review my UI\", \"check accessibility\", \"audit design\", \"review UX\", or \"check my site against best practices\".","https:\u002F\u002Fgithub.com\u002Fdahaliztupe-sketch\u002FKalmeron-Two\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fweb-design-guidelines\u002FSKILL.md",[127,130],{"categoryNo":128,"categoryName":129,"taxonomyType":72,"taxonomyTypeDesc":73},"01JBSEEDCAT000000000000015","视觉设计",{"categoryNo":131,"categoryName":132,"taxonomyType":94,"taxonomyTypeDesc":95},"01JBSEEDCAT000000000000032","设计师",[134,135,136,137,138,113,139,140,141,142,143,144,145,114,146,147,148,26,28,149],"web design","web design guidelines","web","design","guidelines","review","check","compliance","audit","ux","accessibility","file","vercel","interface","web interface guidelines","best practices",{"skillNo":151,"name":152,"nameZh":6,"description":153,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":154,"licenseFileUrl":6,"sourceHtmlUrl":155,"categories":156,"keywords":161,"publishedAt":34},"01M719SK11T05QYVPTWWYMYY5B","vitest","Set up Vitest testing in any project — detects project type (Cloudflare Workers, React, Node), generates vitest.config.ts, test setup, utilities, and sample tests. Also covers mocking patterns, coverage config, workspace setup, and Jest migration. Trigger with 'set up vitest', 'add tests', 'configure vitest', 'migrate from jest', 'vitest config', 'add unit tests', or 'testing setup'.","MIT","https:\u002F\u002Fgithub.com\u002Fdahaliztupe-sketch\u002FKalmeron-Two\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fvitest\u002FSKILL.md",[157,158],{"categoryNo":86,"categoryName":87,"taxonomyType":72,"taxonomyTypeDesc":73},{"categoryNo":159,"categoryName":160,"taxonomyType":72,"taxonomyTypeDesc":73},"01JBSEEDCAT000000000000009","前端开发",[152,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180],"cloudflare workers","coverage","SET","unit","project","workspace setup","testing","up","cloudflare","configure","migrate","jest","react","sample","node","config","Utilities","test setup","patterns",{"skillNo":182,"name":183,"nameZh":6,"description":184,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":185,"categories":186,"keywords":187,"publishedAt":34},"01M719SF6NEB0KV6FGM5TPQAYS","verification-before-completion","Use when about to claim work is complete, fixed, or passing, before committing or creating PRs - requires running verification commands and confirming output before making any success claims; evidence before assertions always","https:\u002F\u002Fgithub.com\u002Fdahaliztupe-sketch\u002FKalmeron-Two\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fverification-before-completion\u002FSKILL.md",[],[188,18,28,27,26,21,25,24,23,22,33,32,31,30,29],"verification before completion"]