[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CYG4NYCGC1G72QME2PA1VE":3,"skill-same:01M6CYG4NYCGC1G72QME2PA1VE":72},{"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":39,"linkOnly":40,"markdownContent":41,"markdownBody":42,"frontMatter":43,"refName":45,"commitSha":46,"skillDirectory":47,"forksCount":48,"repositoryHtmlUrl":49,"repositoryHomepageUrl":6,"ownerHtmlUrl":50,"ownerBlogUrl":51,"ownerDescription":6,"updatedAt":52,"install":53,"resources":65},"01M6CYG4NYCGC1G72QME2PA1VE","validate-plugin-consistency",null,"Use after modifying any file under plugins\u002Fsdlc-utilities\u002F (skills\u002F*\u002FSKILL.md, scripts\u002F*.js). Runs the consistency validation script to catch structural issues before they reach users: wrong script resolution order, skills missing prepare-script execution, missing mktemp or exit-code handling, missing frontmatter fields, missing user-invocable flags, missing docs\u002Fskills\u002F documentation, missing skills-meta.ts entries, missing README table rows, temp file cleanup gaps.","rnagrodzki\u002Fsdlc-marketplace","rnagrodzki","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F303481?v=4","01M6CYFWQK3A8WR9W324Z5Q5DR","Rafal Nagrodzki","01M6CYFWVKS23ECZCP9R7DTQVN",0,"MIT","https:\u002F\u002Fgithub.com\u002Frnagrodzki\u002Fsdlc-marketplace\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fvalidate-plugin-consistency\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],"validate plugin consistency","plugin","validate plugin","validate","execution","structural","resolution","entries","exit","use","sdlc","README","Meta","file","plugins","issues","validation","code","cleanup","documentation","2026-11-10 10:12:30",false,"---\nname: validate-plugin-consistency\ndescription: \"Use after modifying any file under plugins\u002Fsdlc-utilities\u002F (skills\u002F*\u002FSKILL.md, scripts\u002F*.js). Runs the consistency validation script to catch structural issues before they reach users: wrong script resolution order, skills missing prepare-script execution, missing mktemp or exit-code handling, missing frontmatter fields, missing user-invocable flags, missing docs\u002Fskills\u002F documentation, missing skills-meta.ts entries, missing README table rows, temp file cleanup gaps.\"\nuser-invocable: true\n---\n\n# Validate Plugin Consistency\n\nAfter modifying the `sdlc-utilities` plugin, run this validation to catch structural\nissues that would cause failures in users' repositories.\n\n## When to Use\n\nInvoke this skill when you have modified any of:\n\n- `plugins\u002Fsdlc-utilities\u002Fskills\u002F*\u002FSKILL.md`\n- `plugins\u002Fsdlc-utilities\u002Fscripts\u002F*.js`\n\n## Step 1 — Run the Validation Script\n\n```bash\nnode .claude\u002Fskills\u002Fvalidate-plugin-consistency\u002Fcheck-consistency.js\n```\n\nIf the script exits 0: all checks pass — proceed.\n\nIf the script exits 1: fix each issue before finishing the task (see Step 2).\n\nIf the script exits 2: run from the repository root or pass `--project-root \u003Cpath>`.\n\n## Step 2 — Fix Issues Found\n\nFor each finding, apply the appropriate fix:\n\n### `script-resolution-order` (error)\n\nThe `find` pattern searches CWD (`.`) before `~\u002F.claude\u002Fplugins`. Reverse the order:\n\n```bash\n# Correct (plugins-first)\nSCRIPT=$(find ~\u002F.claude\u002Fplugins -name \"\u003Cscript>.js\" 2>\u002Fdev\u002Fnull | sort -V | tail -1)\n[ -z \"$SCRIPT\" ] && [ -f \"plugins\u002Fsdlc-utilities\u002Fscripts\u002F\u003Cscript>.js\" ] && SCRIPT=\"plugins\u002Fsdlc-utilities\u002Fscripts\u002F\u003Cscript>.js\"\n[ -z \"$SCRIPT\" ] && { echo \"ERROR: Could not locate \u003Cscript>.js. Is the sdlc plugin installed?\" >&2; exit 2; }\n```\n\n### `script-resolution-version` (error)\n\nThe `find ~\u002F.claude\u002Fplugins ... | head -1` pipeline picks an arbitrary cached version\nwhen multiple plugin versions are present in `~\u002F.claude\u002Fplugins\u002Fcache\u002Fsdlc-marketplace\u002Fsdlc\u002F`\n(filesystem-traversal order, not version order). Replace `| head -1` with\n`| sort -V | tail -1` to deterministically select the newest semver. See #258.\n\n```bash\n# Correct\nSCRIPT=$(find ~\u002F.claude\u002Fplugins -name \"\u003Cscript>.js\" -path \"*\u002Fsdlc*\u002Fscripts\u002F\u003Cscript>.js\" 2>\u002Fdev\u002Fnull | sort -V | tail -1)\n```\n\n### `skill-runs-script` (error)\n\nA skill is paired with a prepare script but does not contain the find+node resolution\npattern. Skills must run their own prepare scripts. Add the find+mktemp+node block to\nthe skill following the pattern in `review-sdlc\u002FSKILL.md`:\n\n1. Skill: find script → `$(node \"$SCRIPT\" --output-file $ARGUMENTS --json)` → read and parse JSON\n\n### `skill-uses-output-file` (error)\n\nA skill runs a prepare script but pipes output directly instead of using `--output-file` capture.\nReplace with:\n\n```bash\nMANIFEST_FILE=$(node \"$SCRIPT\" --output-file $ARGUMENTS --json)\nEXIT_CODE=$?\n```\n\n### `skill-checks-exit-code` (error)\n\nA skill runs a script but doesn't capture `EXIT_CODE`. Add after the node call:\n\n```bash\nEXIT_CODE=$?\n# Exit code 1: show the stderr message to the user and stop.\n# Exit code 2: show \"Script error — see output above\" and stop.\n```\n\n### `skill-passes-arguments` (warning)\n\nA skill runs a prepare script but doesn't use `$ARGUMENTS`. Change the node\ninvocation to: `node \"$SCRIPT\" $ARGUMENTS --json > \"$MANIFEST_FILE\"`\n\n### `frontmatter-field-names` (error)\n\nA skill uses the deprecated `user-invokable` field. Replace with `user-invocable`.\n\n### `user-invocable-flag` (error)\n\nA user-facing skill is missing `user-invocable: true` in its frontmatter. Add it:\n\n```yaml\n---\nname: \u003Cskill-name>\ndescription: \"...\"\nuser-invocable: true\n---\n```\n\nThe 10 user-facing skills that must have this flag are: `plan-sdlc`, `execute-plan-sdlc`,\n`pr-sdlc`, `review-sdlc`, `received-review-sdlc`,\n`commit-sdlc`, `version-sdlc`, `jira-sdlc`, `ship-sdlc`, `setup-sdlc`.\n\n### `docs-skill-existence` (error)\n\nA skill directory exists under `plugins\u002Fsdlc-utilities\u002Fskills\u002F\u003Cname>\u002F` but has no matching\ndocumentation file at `docs\u002Fskills\u002F\u003Cname>.md`. Create the doc file using `docs\u002Fskill-doc-template.md`\nas the starting point.\n\n### `skills-meta-existence` (error)\n\nA user-invocable skill has no matching `slug` entry in `site\u002Fsrc\u002Fdata\u002Fskills-meta.ts`. Add an\nentry to the `skillsMeta` array with the correct slug, command, category, tagline, pipeline,\nand connections. See existing entries for the format.\n\n### `readme-skills-table` (warning)\n\nA user-invocable skill is not listed in the README.md skills table. Add a row following the\nformat: `| [\\`\u002F\u003Cname>\\`](docs\u002Fskills\u002F\u003Cname>.md) | description |`\n\n### `temp-file-cleanup` (warning)\n\nA skill uses `mktemp` to create a temp file but has no cleanup reference (`rm -f`, `rm -rf`,\nor \"clean\" in narrative). Add cleanup instructions to the skill, ensuring temp files are removed\non all exit paths (success, error, cancellation).\n\n## Step 3 — Re-run Validation\n\nAfter fixing all issues:\n\n```bash\nnode .claude\u002Fskills\u002Fvalidate-plugin-consistency\u002Fcheck-consistency.js\n```\n\nConfirm exit 0 before marking work complete.\n\n## Reference: The Correct Skill Pattern (for paired skills)\n\nEvery skill that has a matching `*-prepare.js` script must follow this exact pattern:\n\n```bash\n# Step 0: Resolve and run the prepare script\nSCRIPT=$(find ~\u002F.claude\u002Fplugins -name \"\u003Cname>-prepare.js\" 2>\u002Fdev\u002Fnull | sort -V | tail -1)\n[ -z \"$SCRIPT\" ] && [ -f \"plugins\u002Fsdlc-utilities\u002Fscripts\u002F\u003Cname>-prepare.js\" ] && SCRIPT=\"plugins\u002Fsdlc-utilities\u002Fscripts\u002F\u003Cname>-prepare.js\"\n[ -z \"$SCRIPT\" ] && { echo \"ERROR: Could not locate \u003Cname>-prepare.js. Is the sdlc plugin installed?\" >&2; exit 2; }\n\nCONTEXT_FILE=$(node \"$SCRIPT\" --output-file $ARGUMENTS --json)\nEXIT_CODE=$?\n# Cleanup: rm -f \"$CONTEXT_FILE\" after use\n\n# On non-zero EXIT_CODE:\n# Exit code 1: show stderr message to the user and stop.\n# Exit code 2: show \"Script error — see output above\" and stop.\n\n# Step 1: Read and parse CONTEXT_FILE as CONTEXT_JSON, then proceed with skill logic.\n```\n","# Validate Plugin Consistency\n\nAfter modifying the `sdlc-utilities` plugin, run this validation to catch structural\nissues that would cause failures in users' repositories.\n\n## When to Use\n\nInvoke this skill when you have modified any of:\n\n- `plugins\u002Fsdlc-utilities\u002Fskills\u002F*\u002FSKILL.md`\n- `plugins\u002Fsdlc-utilities\u002Fscripts\u002F*.js`\n\n## Step 1 — Run the Validation Script\n\n```bash\nnode .claude\u002Fskills\u002Fvalidate-plugin-consistency\u002Fcheck-consistency.js\n```\n\nIf the script exits 0: all checks pass — proceed.\n\nIf the script exits 1: fix each issue before finishing the task (see Step 2).\n\nIf the script exits 2: run from the repository root or pass `--project-root \u003Cpath>`.\n\n## Step 2 — Fix Issues Found\n\nFor each finding, apply the appropriate fix:\n\n### `script-resolution-order` (error)\n\nThe `find` pattern searches CWD (`.`) before `~\u002F.claude\u002Fplugins`. Reverse the order:\n\n```bash\n# Correct (plugins-first)\nSCRIPT=$(find ~\u002F.claude\u002Fplugins -name \"\u003Cscript>.js\" 2>\u002Fdev\u002Fnull | sort -V | tail -1)\n[ -z \"$SCRIPT\" ] && [ -f \"plugins\u002Fsdlc-utilities\u002Fscripts\u002F\u003Cscript>.js\" ] && SCRIPT=\"plugins\u002Fsdlc-utilities\u002Fscripts\u002F\u003Cscript>.js\"\n[ -z \"$SCRIPT\" ] && { echo \"ERROR: Could not locate \u003Cscript>.js. Is the sdlc plugin installed?\" >&2; exit 2; }\n```\n\n### `script-resolution-version` (error)\n\nThe `find ~\u002F.claude\u002Fplugins ... | head -1` pipeline picks an arbitrary cached version\nwhen multiple plugin versions are present in `~\u002F.claude\u002Fplugins\u002Fcache\u002Fsdlc-marketplace\u002Fsdlc\u002F`\n(filesystem-traversal order, not version order). Replace `| head -1` with\n`| sort -V | tail -1` to deterministically select the newest semver. See #258.\n\n```bash\n# Correct\nSCRIPT=$(find ~\u002F.claude\u002Fplugins -name \"\u003Cscript>.js\" -path \"*\u002Fsdlc*\u002Fscripts\u002F\u003Cscript>.js\" 2>\u002Fdev\u002Fnull | sort -V | tail -1)\n```\n\n### `skill-runs-script` (error)\n\nA skill is paired with a prepare script but does not contain the find+node resolution\npattern. Skills must run their own prepare scripts. Add the find+mktemp+node block to\nthe skill following the pattern in `review-sdlc\u002FSKILL.md`:\n\n1. Skill: find script → `$(node \"$SCRIPT\" --output-file $ARGUMENTS --json)` → read and parse JSON\n\n### `skill-uses-output-file` (error)\n\nA skill runs a prepare script but pipes output directly instead of using `--output-file` capture.\nReplace with:\n\n```bash\nMANIFEST_FILE=$(node \"$SCRIPT\" --output-file $ARGUMENTS --json)\nEXIT_CODE=$?\n```\n\n### `skill-checks-exit-code` (error)\n\nA skill runs a script but doesn't capture `EXIT_CODE`. Add after the node call:\n\n```bash\nEXIT_CODE=$?\n# Exit code 1: show the stderr message to the user and stop.\n# Exit code 2: show \"Script error — see output above\" and stop.\n```\n\n### `skill-passes-arguments` (warning)\n\nA skill runs a prepare script but doesn't use `$ARGUMENTS`. Change the node\ninvocation to: `node \"$SCRIPT\" $ARGUMENTS --json > \"$MANIFEST_FILE\"`\n\n### `frontmatter-field-names` (error)\n\nA skill uses the deprecated `user-invokable` field. Replace with `user-invocable`.\n\n### `user-invocable-flag` (error)\n\nA user-facing skill is missing `user-invocable: true` in its frontmatter. Add it:\n\n```yaml\n---\nname: \u003Cskill-name>\ndescription: \"...\"\nuser-invocable: true\n---\n```\n\nThe 10 user-facing skills that must have this flag are: `plan-sdlc`, `execute-plan-sdlc`,\n`pr-sdlc`, `review-sdlc`, `received-review-sdlc`,\n`commit-sdlc`, `version-sdlc`, `jira-sdlc`, `ship-sdlc`, `setup-sdlc`.\n\n### `docs-skill-existence` (error)\n\nA skill directory exists under `plugins\u002Fsdlc-utilities\u002Fskills\u002F\u003Cname>\u002F` but has no matching\ndocumentation file at `docs\u002Fskills\u002F\u003Cname>.md`. Create the doc file using `docs\u002Fskill-doc-template.md`\nas the starting point.\n\n### `skills-meta-existence` (error)\n\nA user-invocable skill has no matching `slug` entry in `site\u002Fsrc\u002Fdata\u002Fskills-meta.ts`. Add an\nentry to the `skillsMeta` array with the correct slug, command, category, tagline, pipeline,\nand connections. See existing entries for the format.\n\n### `readme-skills-table` (warning)\n\nA user-invocable skill is not listed in the README.md skills table. Add a row following the\nformat: `| [\\`\u002F\u003Cname>\\`](docs\u002Fskills\u002F\u003Cname>.md) | description |`\n\n### `temp-file-cleanup` (warning)\n\nA skill uses `mktemp` to create a temp file but has no cleanup reference (`rm -f`, `rm -rf`,\nor \"clean\" in narrative). Add cleanup instructions to the skill, ensuring temp files are removed\non all exit paths (success, error, cancellation).\n\n## Step 3 — Re-run Validation\n\nAfter fixing all issues:\n\n```bash\nnode .claude\u002Fskills\u002Fvalidate-plugin-consistency\u002Fcheck-consistency.js\n```\n\nConfirm exit 0 before marking work complete.\n\n## Reference: The Correct Skill Pattern (for paired skills)\n\nEvery skill that has a matching `*-prepare.js` script must follow this exact pattern:\n\n```bash\n# Step 0: Resolve and run the prepare script\nSCRIPT=$(find ~\u002F.claude\u002Fplugins -name \"\u003Cname>-prepare.js\" 2>\u002Fdev\u002Fnull | sort -V | tail -1)\n[ -z \"$SCRIPT\" ] && [ -f \"plugins\u002Fsdlc-utilities\u002Fscripts\u002F\u003Cname>-prepare.js\" ] && SCRIPT=\"plugins\u002Fsdlc-utilities\u002Fscripts\u002F\u003Cname>-prepare.js\"\n[ -z \"$SCRIPT\" ] && { echo \"ERROR: Could not locate \u003Cname>-prepare.js. Is the sdlc plugin installed?\" >&2; exit 2; }\n\nCONTEXT_FILE=$(node \"$SCRIPT\" --output-file $ARGUMENTS --json)\nEXIT_CODE=$?\n# Cleanup: rm -f \"$CONTEXT_FILE\" after use\n\n# On non-zero EXIT_CODE:\n# Exit code 1: show stderr message to the user and stop.\n# Exit code 2: show \"Script error — see output above\" and stop.\n\n# Step 1: Read and parse CONTEXT_FILE as CONTEXT_JSON, then proceed with skill logic.\n```\n",{"name":5,"description":7,"user-invocable":44},true,"main","3480d74fa3b8cb64fff5c365fbeb6e00d2708e53",".claude\u002Fskills\u002Fvalidate-plugin-consistency",6,"https:\u002F\u002Fgithub.com\u002Frnagrodzki\u002Fsdlc-marketplace","https:\u002F\u002Fgithub.com\u002Frnagrodzki","http:\u002F\u002Fnagrodzki.net","2026-09-05 21:47:31",{"source":8,"skillName":5,"commands":54,"prompt":64,"zipAvailable":44},[55,58,61],{"tool":56,"command":57},"npx","npx skills add rnagrodzki\u002Fsdlc-marketplace --skill validate-plugin-consistency",{"tool":59,"command":60},"bunx","bunx skills add rnagrodzki\u002Fsdlc-marketplace --skill validate-plugin-consistency",{"tool":62,"command":63},"pnpm","pnpm dlx skills add rnagrodzki\u002Fsdlc-marketplace --skill validate-plugin-consistency","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Frnagrodzki\u002Fsdlc-marketplace\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fvalidate-plugin-consistency\u002FSKILL.md",[66],{"path":67,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":70,"sourceHtmlUrl":71},"check-consistency.js","SCRIPT","脚本",33040,"https:\u002F\u002Fgithub.com\u002Frnagrodzki\u002Fsdlc-marketplace\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fvalidate-plugin-consistency\u002Fcheck-consistency.js",[73,90,97,107,116,130],{"skillNo":74,"name":75,"nameZh":6,"description":76,"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":84,"publishedAt":39},"01M6CYJDSW8MAAJAM62G7ZPRVB","example-skill","Test fixture — passing case for script-resolution-version rule.","https:\u002F\u002Fgithub.com\u002Frnagrodzki\u002Fsdlc-marketplace\u002Fblob\u002Fmain\u002Ftests\u002Fpromptfoo\u002Ffixtures-fs\u002Fresolution-validator-cases\u002Fgood-project\u002Fplugins\u002Fsdlc-utilities\u002Fskills\u002Fexample-skill\u002FSKILL.md",[79],{"categoryNo":80,"categoryName":81,"taxonomyType":82,"taxonomyTypeDesc":83},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[85,86,87,88,89,25],"example skill","example","fixture","test","version",{"skillNo":91,"name":75,"nameZh":6,"description":92,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":93,"categories":94,"keywords":96,"publishedAt":39},"01M6CYJCBDNB7S40VZ1B0TEFE1","Test fixture — failing case for script-resolution-version rule.","https:\u002F\u002Fgithub.com\u002Frnagrodzki\u002Fsdlc-marketplace\u002Fblob\u002Fmain\u002Ftests\u002Fpromptfoo\u002Ffixtures-fs\u002Fresolution-validator-cases\u002Fbad-project\u002Fplugins\u002Fsdlc-utilities\u002Fskills\u002Fexample-skill\u002FSKILL.md",[95],{"categoryNo":80,"categoryName":81,"taxonomyType":82,"taxonomyTypeDesc":83},[86,85,88,89,87,25],{"skillNo":98,"name":75,"nameZh":6,"description":99,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":100,"categories":101,"keywords":103,"publishedAt":39},"01M6CYJARTK87CH0T6EJ7ZQCZV","Test fixture — passing case for the orchestrator-await-barrier rule (#487). Marks a fan-out dispatch as await-barrier-required and states the guard.","https:\u002F\u002Fgithub.com\u002Frnagrodzki\u002Fsdlc-marketplace\u002Fblob\u002Fmain\u002Ftests\u002Fpromptfoo\u002Ffixtures-fs\u002Forchestrator-await-barrier-cases\u002Fgood-project\u002Fplugins\u002Fsdlc-utilities\u002Fskills\u002Fexample-skill\u002FSKILL.md",[102],{"categoryNo":80,"categoryName":81,"taxonomyType":82,"taxonomyTypeDesc":83},[85,86,104,105,106,87,88],"guard","orchestrator","dispatch",{"skillNo":108,"name":75,"nameZh":6,"description":109,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":110,"categories":111,"keywords":113,"publishedAt":39},"01M6CYJ8T4G8CQDWGZKGW1THNZ","Test fixture — failing case for the orchestrator-await-barrier rule (#487). Marks a fan-out dispatch as await-barrier-required but never states the guard.","https:\u002F\u002Fgithub.com\u002Frnagrodzki\u002Fsdlc-marketplace\u002Fblob\u002Fmain\u002Ftests\u002Fpromptfoo\u002Ffixtures-fs\u002Forchestrator-await-barrier-cases\u002Fbad-project\u002Fplugins\u002Fsdlc-utilities\u002Fskills\u002Fexample-skill\u002FSKILL.md",[112],{"categoryNo":80,"categoryName":81,"taxonomyType":82,"taxonomyTypeDesc":83},[86,85,88,104,105,114,106,115,87],"never","but",{"skillNo":117,"name":118,"nameZh":6,"description":119,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":120,"categories":121,"keywords":122,"publishedAt":39},"01M6CYJ78NG35A6BGVDG3DTDV8","pr-sdlc","Creates or updates GitHub pull requests with auto-generated 8-section descriptions.","https:\u002F\u002Fgithub.com\u002Frnagrodzki\u002Fsdlc-marketplace\u002Fblob\u002Fmain\u002Ftests\u002Fpromptfoo\u002Ffixtures-fs\u002Fhealthy-marketplace\u002Fplugins\u002Fsdlc-utilities\u002Fskills\u002Fpr-sdlc\u002FSKILL.md",[],[123,29,124,125,126,127,128,129],"pr sdlc","pr","auto","github","pull requests","pull","generated",{"skillNo":131,"name":75,"nameZh":6,"description":132,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":133,"categories":134,"keywords":136,"publishedAt":39},"01M6CYJ5W0AYJTBNDN0W4K6AJZ","Fixture skill for validate-cost-tiers drift tests.","https:\u002F\u002Fgithub.com\u002Frnagrodzki\u002Fsdlc-marketplace\u002Fblob\u002Fmain\u002Ftests\u002Fpromptfoo\u002Ffixtures-fs\u002Fcost-tiers-drift\u002Fskills\u002Fexample-skill\u002FSKILL.md",[135],{"categoryNo":80,"categoryName":81,"taxonomyType":82,"taxonomyTypeDesc":83},[85,86,22,137,138,139,87],"cost","fixture skill","drift"]