[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CHXB5XG415PP88E0GACHP8":3,"skill-same:01M6CHXB5XG415PP88E0GACHP8":113},{"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":30,"publishedAt":50,"linkOnly":51,"markdownContent":52,"markdownBody":53,"frontMatter":54,"refName":67,"commitSha":68,"skillDirectory":69,"forksCount":70,"repositoryHtmlUrl":71,"repositoryHomepageUrl":72,"ownerHtmlUrl":73,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":74,"install":75,"resources":88},"01M6CHXB5XG415PP88E0GACHP8","verify",null,"[ADD v0.11.0] Run quality gates — lint, types, tests, coverage, spec compliance","MountainUnicorn\u002Fadd","MountainUnicorn","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F199411549?v=4","01M6CHRAWFWD275ANP1S2A0HXC","01M6CHRB0QE1678D913B438SAR",11,"MIT","https:\u002F\u002Fgithub.com\u002FMountainUnicorn\u002Fadd\u002Fblob\u002Fmain\u002Fplugins\u002Fadd\u002Fskills\u002Fverify\u002FSKILL.md",[17,22,25],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000011","运维与部署","SCENARIO","使用场景",{"categoryNo":23,"categoryName":24,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":26,"categoryName":27,"taxonomyType":28,"taxonomyTypeDesc":29},"01JBSEEDCAT000000000000037","律师与法务","PROFESSION","适用职业",[5,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49],"learning","gate","smoke","v0","fix","coverage","read","grep","Rules","quality","spec","Bash","secrets","compliance","ci","lint","run","quality gates","telemetry","2026-11-10 10:12:30",false,"---\ndescription: \"[ADD v0.11.0] Run quality gates — lint, types, tests, coverage, spec compliance\"\nargument-hint: \"[--level local|ci|deploy|smoke] [--fix]\"\nallowed-tools: [Read, Glob, Grep, Bash, TodoWrite]\nreferences: [\"learning-reference.md\", \"quality-checks-matrix.md\", \"secrets-gate.md\", \"skill-epilogue.md\", \"rules\u002Ftelemetry.md\"]\n---\n\n# ADD Verify Skill v0.11.0\n\nExecute quality gates to verify code meets production standards. This skill runs automated checks and produces a structured pass\u002Ffail report.\n\n\u003C!-- cache-discipline: non-dispatching skill — no STABLE\u002FVOLATILE markers required per rules\u002Fcache-discipline.md. Invoked AS a sub-agent by \u002Fadd:tdd-cycle, which owns the cache-aware prompt layout. -->\n\n## Overview\n\nThe Verify skill is the final checkpoint before deployment. It runs a sequence of quality gates determined by context and provides clear go\u002Fno-go status for each gate. Output is a structured report with pass\u002Ffail status and next steps.\n\nThe five-gate system ensures code quality at every stage:\n1. **Gate 1 (Local)**: Lint & code formatting\n2. **Gate 2 (Local)**: Type checking (if applicable)\n3. **Gate 3 (CI)**: Unit tests & coverage\n4. **Gate 4 (Deploy)**: Spec compliance & integration tests\n5. **Gate 5 (Smoke)**: Post-deploy health checks\n\nAll gate results are reported using the shared formats in `${CLAUDE_PLUGIN_ROOT}\u002Ftemplates\u002Fverify-report.md` — one per-gate format, the maturity-scaled sections, and the overall report.\n\n## Pre-Flight Checks\n\n1. **Read .add\u002Fconfig.json**\n   - Load gate definitions: which commands to run, thresholds\n   - Load ci.gates array (ordered list of gates)\n   - Load test.minCoverage threshold (default 80%)\n   - Load code.lint configuration\n   - Load code.types configuration\n   - Load environment tier settings\n   - A configuration example lives in `${CLAUDE_PLUGIN_ROOT}\u002Ftemplates\u002Fverify-report.md`\n\n2. **Count active rules for maturity level**\n   - Read maturity level from `.add\u002Fconfig.json` (default: alpha)\n   - Scan all files in `rules\u002F` directory\n   - For each rule file, read the YAML frontmatter `maturity:` field\n   - Count rules where the maturity field is at or below the current level\n     - Maturity hierarchy: poc \u003C alpha \u003C beta \u003C ga\n     - A rule with `maturity: poc` is active at all levels\n     - A rule with `maturity: beta` is active at beta and ga only\n   - Include in report header: \"{N} rules active at {maturity} level\"\n\n3. **Determine execution level**\n   - Use --level flag or infer from environment\n   - If not specified, default to 'local'\n   - Levels control which gates run:\n     - **local**: Gates 1-2 (lint, types) for development\n     - **ci**: Gates 1-3 (+ unit tests) for continuous integration\n     - **deploy**: Gates 1-4 (+ spec compliance) for production deploy\n     - **smoke**: Gate 5 only (post-deploy health check)\n\n4. **Verify required files exist**\n   - Test files exist (unless smoke level)\n   - Implementation files exist\n   - Config files exist (package.json, tsconfig.json, etc.)\n   - CI\u002Fdeployment scripts available\n\n5. **Check environment**\n   - Verify tools are installed (eslint, tsc, jest, pytest, etc.)\n   - Check Node\u002FPython version if applicable\n   - Verify dependencies are installed\n\n6. **Check for session handoff** — per the Session-Handoff Preflight in `${CLAUDE_PLUGIN_ROOT}\u002Freferences\u002Fskill-epilogue.md`\n\n## Execution Steps\n\n### Gate 1: Lint & Code Formatting\n\n**Purpose**: Ensure code follows style conventions and has no obvious issues.\n\n**Steps**:\n1. **Detect linter(s)** from config or package.json\n   - JavaScript\u002FTypeScript: eslint, prettier, biome\n   - Python: black, flake8, pylint\n   - Go: gofmt, golangci-lint\n   - etc.\n\n2. **Run linter(s)**\n   ```bash\n   # JavaScript\n   npx eslint --max-warnings 0 src\u002F tests\u002F\n\n   # Python\n   python -m flake8 src\u002F tests\u002F --max-line-length 100\n\n   # Go\n   gofmt -w .\u002F...\n   golangci-lint run .\u002F...\n   ```\n\n3. **Capture output** — count errors and warnings, list problematic files\n\n4. **Handle --fix flag**\n   - If --fix provided, auto-fix formatting issues\n   - Re-run linter to verify fixes\n   - Report what was fixed\n\n5. **Pass\u002FFail**\n   - PASS: 0 errors, 0 warnings (or configured threshold)\n   - FAIL: Any errors or warnings\n   - WARN: Warnings only (configurable as pass\u002Ffail)\n\n### Gate 2: Type Checking\n\n**Purpose**: Catch type errors and ensure type safety.\n\n**Steps**:\n1. **Detect type checker(s)** — TypeScript (`tsc --noEmit`), Flow, MyPy, etc.\n\n2. **Run type checker**\n   ```bash\n   # TypeScript\n   npx tsc --noEmit --strict\n\n   # Python with MyPy\n   python -m mypy src\u002F --strict\n   ```\n\n3. **Capture output** — count type errors, list files with issues\n\n4. **Pass\u002FFail**\n   - PASS: 0 type errors\n   - FAIL: Any type errors\n   - SKIP: Not applicable for untyped languages\n\n### Gate 3: Unit Tests & Coverage\n\n**Purpose**: Verify all tests pass and code coverage meets threshold.\n\n**Steps**:\n1. **Run test suite**\n   ```bash\n   # JavaScript\n   npm test -- --coverage --silent\n\n   # Python\n   python -m pytest --cov=src --cov-report=term-summary tests\u002F\n   ```\n\n2. **Parse test output** — tests run\u002Fpassed\u002Ffailed, timing\n\n3. **Parse coverage output** — line, branch, and function coverage % vs. the minCoverage threshold\n\n4. **Identify coverage gaps** (if below threshold) — which files, lines, and branches are uncovered\n\n5. **Pass\u002FFail criteria**\n   - PASS: All tests pass AND coverage >= threshold\n   - FAIL: Any test fails OR coverage \u003C threshold\n   - WARN: Tests pass but coverage marginally below (90% of threshold)\n\n### Gate 3.5: Test Surface Integrity (Test-Deletion Guardrail)\n\n**Purpose**: Enforce the TDD anti-deletion invariant — tests added during RED must exist\n(passing) at end of GREEN. Without this gate, Gate 3 passes even if the implementer\nsilently deleted failing tests to reach green.\n\n**When it runs**: After Gate 3 (tests pass), before Gate 4 (spec compliance). Only\napplicable when running within a TDD cycle context (i.e. `.add\u002Fcycles\u002Fcycle-{N}\u002F`\nsnapshots exist). For standalone `\u002Fadd:verify` runs, the gate is SKIPPED with an\nadvisory note.\n\n**Steps**:\n\n1. **Locate snapshots**\n   - Determine the current cycle id (from `\u002Fadd:cycle` context or the most recent\n     `.add\u002Fcycles\u002Fcycle-*\u002F` directory)\n   - Determine the spec slug (from the cycle's spec argument)\n   - Expected paths:\n     - `.add\u002Fcycles\u002Fcycle-{N}\u002Ftdd-{slug}-red.json`\n     - `.add\u002Fcycles\u002Fcycle-{N}\u002Ftdd-{slug}-green.json`\n\n2. **Run the gate script**\n   ```bash\n   python3 ${CLAUDE_PLUGIN_ROOT}\u002F..\u002F..\u002Fscripts\u002Fcheck-test-count.py gate \\\n     --red .add\u002Fcycles\u002Fcycle-{N}\u002Ftdd-{slug}-red.json \\\n     --green .add\u002Fcycles\u002Fcycle-{N}\u002Ftdd-{slug}-green.json \\\n     --project-root .\n   ```\n\n   For standalone runs (no RED\u002FGREEN snapshot), use the baseline form instead:\n   ```bash\n   python3 scripts\u002Fcheck-test-count.py --baseline origin\u002Fmain\n   ```\n\n3. **Interpret exit code**\n   - `0`: PASS. A structured JSON summary is emitted — capture it for the report.\n   - `1`: FAIL. The script prints the removed tests, the override status, and a\n     directive. Propagate the message verbatim.\n   - `2`: Invocation error (bad args). Treat as gate failure.\n\n4. **Capture the structured summary** (AC-017):\n   ```\n   tests_added: N, tests_removed: 0, tests_renamed: M, tests_replaced: 0, override: none\n   ```\n\n**Pass\u002FFail criteria**:\n- PASS: `tests_removed == 0` AND `tests_replaced == 0` (or all removals\u002Freplacements\n  are covered by an `overrides.json` record or a `[ADD-TEST-DELETE: ...]` commit trailer)\n- FAIL: Any uncovered removal or replacement\n- SKIP: No `.add\u002Fcycles\u002Fcycle-*\u002F` dir (standalone verify outside a cycle)\n\n**Error mode** (AC-015): if the GREEN snapshot is missing, FAIL with \"GREEN snapshot\nnot found — cycle is incomplete or test-writer\u002Fimplementer skipped snapshotting\" and\nremediation \"Rerun `\u002Fadd:tdd-cycle` from RED to regenerate snapshots.\"\n\nSee `core\u002Frules\u002Ftdd-enforcement.md` \"Test-Deletion Invariant\" for the justification\nmarker formats and the full rationale.\n\n### Gate 4: Spec Compliance & Integration Tests\n\n**Purpose**: Verify implementation meets spec and integration points work.\n\n**Steps**:\n1. **Read spec file** (specs\u002F{feature}.md)\n   - Extract all acceptance criteria\n   - Load test mapping (tests\u002F{feature}-mapping.md)\n\n2. **Verify test coverage**\n   - Every AC has at least one test\n   - Every AC test is in the \"passing\" list\n   - Every UT is covered by tests\n\n3. **Run integration tests** (if separate suite)\n   ```bash\n   npm test -- --testMatch=\"**\u002F*.integration.test.ts\"\n   # or\n   python -m pytest tests\u002Fintegration\u002F -v\n   ```\n\n4. **Spec compliance check**\n   - Parse test mapping\n   - Verify mapping completeness\n   - Cross-check with spec requirements\n\n5. **Pass\u002FFail**\n   - PASS: All ACs tested and passing, all integration tests pass\n   - FAIL: AC missing test, test failing, or integration test failing\n   - WARN: AC has only happy-path test (no edge cases)\n\n### Gate 4.5: AGENTS.md Drift (Opt-In)\n\n**Purpose**: Detect drift between the project's canonical ADD state and its published `AGENTS.md`.\n\n**Opt-In**: This gate runs only when `.add\u002Fconfig.json` contains `\"agentsMd\": {\"gateOnVerify\": true}`. Default is `false` — AGENTS.md is advisory for projects that have not opted in.\n\n**When enabled**:\n\n1. Check that `AGENTS.md` exists at project root. If absent, warn and skip (not a fail — the project may not publish one).\n2. Run `python3 scripts\u002Fgenerate-agents-md.py --check` from the project root.\n   - Exit 0 → in sync, gate PASSES.\n   - Exit 1 → drift detected, gate FAILS (advisory — does not block Gate 5).\n3. Print the unified diff on failure for fast human review. Suggest `\u002Fadd:agents-md --write` to remediate.\n\n### Gate 4.6: Staged-Secret Scan\n\n**Purpose**: Block commits that contain secrets before they reach the remote\ngit history. Closes F-014 (the v0.9.0 secrets gate was prose-only).\n\n**When it runs**: At `--level deploy` (and any superset). Skipped at `--level\nlocal|ci|smoke` because no commit is being prepared at those levels.\n\n**How it runs**: Follow `${CLAUDE_PLUGIN_ROOT}\u002Freferences\u002Fsecrets-gate.md` —\nscanner invocation, exit-code interpretation, redaction rules, and report\nformat all live there. NEVER paste a matched secret value into the report.\n\n**Pass\u002FFail criteria**:\n- PASS: Scanner exit code 0\n- FAIL: Scanner exit code != 0 (findings, invocation error, or missing catalog — never silently disable enforcement)\n- SKIP: `--level` is `local`, `ci`, or `smoke` (no staged commit context)\n\n### Gate 5: Smoke Tests (Post-Deploy)\n\n**Purpose**: Quick health check after deployment to catch obvious breakage.\n\n**Steps**:\n1. **Identify smoke test script**\n   - From config: ci.smokeTestScript\n   - Typical: `npm run test:smoke` or `.\u002Fscripts\u002Fsmoke-tests.sh`\n\n2. **Run smoke tests against deployed environment**\n   ```bash\n   ENVIRONMENT=staging npm run test:smoke\n   # or\n   .\u002Fscripts\u002Fsmoke-tests.sh production\n   ```\n\n3. **Capture output** — tests run and result, errors or timeouts, performance baseline check\n\n4. **Pass\u002FFail**\n   - PASS: All smoke tests pass within timeout\n   - FAIL: Any test fails or timeout exceeded\n   - SKIP: Not running (smoke level only)\n\n### Maturity-Scaled Checks (All Gates)\n\nAfter each gate's core checks, run maturity-scaled checks from the quality-gates rule. These checks progressively tighten with project maturity.\n\n**Execution Pattern** (repeat for each gate):\n\n1. **Read maturity level** from `.add\u002Fconfig.json` (default: alpha)\n2. **Load maturity-scaled checklist** from `${CLAUDE_PLUGIN_ROOT}\u002Freferences\u002Fquality-checks-matrix.md` → Maturity-Scaled Checks section\n3. **Filter checks for this gate** using the Gate Distribution mapping:\n   - **Gate 1:** Code quality (complexity, duplication, file\u002Ffunction length), secrets scan, readability (naming, nesting), branch naming\n   - **Gate 2:** Dependency audit, OWASP review, docstrings on exports, N+1\u002Fblocking async detection, CHANGELOG\u002FLICENSE\n   - **Gate 3:** Bundle size, PR template, README completeness, dependency freshness\n   - **Gate 4:** Auth pattern review, PII\u002Fdata handling, response time baselines, stale branch cleanup\n   - **Gate 5:** Response times vs baselines, secure headers verification\n4. **Execute checks** using agent tools:\n   - Use Grep to scan for patterns (secrets, magic numbers, N+1 queries, blocking async calls)\n   - Use Read to inspect files (function length, nesting depth, docstrings, README content)\n   - Use Bash to run tools (dependency audit, bundle size, lint with complexity rules)\n   - Use Glob to find files (LICENSE, CHANGELOG, PR template, .gitignore, stale branches)\n5. **Classify findings** as blocking or advisory per maturity level\n   - Load override thresholds from `.add\u002Fconfig.json` `qualityChecks` if present\n   - Apply enforcement level: blocking findings fail the gate, advisory findings are warnings\n6. **Include in gate report** — append maturity-scaled results to the gate's report section, and add the Maturity-Scaled Checks Summary to the overall report (formats in `${CLAUDE_PLUGIN_ROOT}\u002Ftemplates\u002Fverify-report.md`)\n\n## Execution by Level\n\n### Level: local (development)\nRuns Gates 1-2:\n1. Lint & formatting\n2. Type checking\n\nTypical use: Before committing code locally\n\n### Level: ci (continuous integration)\nRuns Gates 1-3 (Gate 3.5 runs if cycle snapshots present):\n1. Lint & formatting\n2. Type checking\n3. Unit tests & coverage\n3.5 Test Surface Integrity (only if `.add\u002Fcycles\u002Fcycle-*\u002F` snapshots exist)\n\nTypical use: CI\u002FCD pipeline on every push\n\n### Level: deploy (production deploy)\nRuns Gates 1-4 (plus 3.5, 4.5 opt-in, 4.6):\n1. Lint & formatting\n2. Type checking\n3. Unit tests & coverage\n3.5 Test Surface Integrity (test-deletion guardrail)\n4. Spec compliance & integration tests\n4.5 AGENTS.md drift (opt-in via config)\n4.6 Staged-secret scan (always)\n\nTypical use: Before deploying to production\n\n### Level: smoke (post-deploy)\nRuns Gate 5 only:\n1. Smoke tests\n\nTypical use: After deployment to verify health\n\n## Report Generation\n\nGenerate the comprehensive verification report using the formats in\n`${CLAUDE_PLUGIN_ROOT}\u002Ftemplates\u002Fverify-report.md`:\n\n- One per-gate section per gate that ran (per-gate format)\n- The summary table with overall status\n- The Maturity-Scaled Checks Summary\n- Recommendations with explicit next steps: `\u002Fadd:deploy` if all gates pass,\n  fix and re-run `\u002Fadd:verify` if any fail\n- The Configuration Used footer\n\n## Progress Tracking\n\n**Tasks to create** (mechanics per `${CLAUDE_PLUGIN_ROOT}\u002Freferences\u002Fskill-epilogue.md`):\n\n| Phase | Subject | activeForm |\n|-------|---------|------------|\n| Pre-flight | Running pre-flight checks | Running pre-flight checks... |\n| Gate 1 | Lint and formatting | Checking lint and formatting... |\n| Gate 2 | Type checking | Running type checks... |\n| Gate 3 | Tests and coverage | Running tests and checking coverage... |\n| Gate 3.5 | Test surface integrity | Checking test-deletion guardrail... |\n| Gate 4 | Spec compliance | Verifying spec compliance... |\n| Gate 4.6 | Staged-secret scan | Scanning staged content for secrets... |\n| Gate 5 | Smoke tests | Running smoke tests... |\n| Maturity | Maturity-scaled checks | Running maturity-scaled checks... |\n| Report | Generating verification report | Generating verification report... |\n\n## Error Handling\n\n**Gate fails**\n- Report which gate failed and why\n- List specific errors or failures\n- Provide remediation guidance\n- Exit with non-zero code\n\n**Tools not installed**\n- Report missing tool (eslint, tsc, jest, etc.)\n- Provide installation command\n- Suggest: `npm install` or `pip install`\n\n**Coverage below threshold**\n- Report current vs. target\n- Identify which files are below threshold\n- Suggest: add tests or check coverage report\n\n**Tests timeout**\n- Report which test timed out\n- Suggest running individual test\n- Suggest: `npm test -- --testNamePattern=\"test_name\"`\n\n**Environment issues**\n- Smoke tests fail due to unavailable environment\n- Report connectivity issues\n- Suggest checking deployment status\n\n## --fix Flag Behavior\n\nWhen --fix is provided:\n1. **Gate 1 (Lint)**: Auto-fix formatting issues — run eslint --fix or prettier, re-run linter to verify, report what was fixed\n2. **Gate 2 (Types)**: Cannot auto-fix type errors — report errors, suggest manual review\n3. **Gate 3 (Tests)**: Cannot auto-fix test failures — report failures, suggest checking coverage or adding tests\n4. **Gate 4 (Spec)**: Cannot auto-fix spec mismatches — report issues, suggest updating tests or implementation\n5. **Gate 5 (Smoke)**: Cannot auto-fix smoke test failures — report failures, suggest checking deployment\n\n## Integration with Other Skills\n\n- Used by \u002Fadd:tdd-cycle during VERIFY phase\n- Can be run standalone to check code quality\n- Output informs \u002Fadd:deploy decision\n- Feeds back to \u002Fadd:implementer or \u002Fadd:reviewer if gates fail\n\nEnd-of-skill epilogue: follow `${CLAUDE_PLUGIN_ROOT}\u002Freferences\u002Fskill-epilogue.md` (observation + learning checkpoint + progress tracking). Learning checkpoint trigger: \"After Verification\".\n","# ADD Verify Skill v0.11.0\n\nExecute quality gates to verify code meets production standards. This skill runs automated checks and produces a structured pass\u002Ffail report.\n\n\u003C!-- cache-discipline: non-dispatching skill — no STABLE\u002FVOLATILE markers required per rules\u002Fcache-discipline.md. Invoked AS a sub-agent by \u002Fadd:tdd-cycle, which owns the cache-aware prompt layout. -->\n\n## Overview\n\nThe Verify skill is the final checkpoint before deployment. It runs a sequence of quality gates determined by context and provides clear go\u002Fno-go status for each gate. Output is a structured report with pass\u002Ffail status and next steps.\n\nThe five-gate system ensures code quality at every stage:\n1. **Gate 1 (Local)**: Lint & code formatting\n2. **Gate 2 (Local)**: Type checking (if applicable)\n3. **Gate 3 (CI)**: Unit tests & coverage\n4. **Gate 4 (Deploy)**: Spec compliance & integration tests\n5. **Gate 5 (Smoke)**: Post-deploy health checks\n\nAll gate results are reported using the shared formats in `${CLAUDE_PLUGIN_ROOT}\u002Ftemplates\u002Fverify-report.md` — one per-gate format, the maturity-scaled sections, and the overall report.\n\n## Pre-Flight Checks\n\n1. **Read .add\u002Fconfig.json**\n   - Load gate definitions: which commands to run, thresholds\n   - Load ci.gates array (ordered list of gates)\n   - Load test.minCoverage threshold (default 80%)\n   - Load code.lint configuration\n   - Load code.types configuration\n   - Load environment tier settings\n   - A configuration example lives in `${CLAUDE_PLUGIN_ROOT}\u002Ftemplates\u002Fverify-report.md`\n\n2. **Count active rules for maturity level**\n   - Read maturity level from `.add\u002Fconfig.json` (default: alpha)\n   - Scan all files in `rules\u002F` directory\n   - For each rule file, read the YAML frontmatter `maturity:` field\n   - Count rules where the maturity field is at or below the current level\n     - Maturity hierarchy: poc \u003C alpha \u003C beta \u003C ga\n     - A rule with `maturity: poc` is active at all levels\n     - A rule with `maturity: beta` is active at beta and ga only\n   - Include in report header: \"{N} rules active at {maturity} level\"\n\n3. **Determine execution level**\n   - Use --level flag or infer from environment\n   - If not specified, default to 'local'\n   - Levels control which gates run:\n     - **local**: Gates 1-2 (lint, types) for development\n     - **ci**: Gates 1-3 (+ unit tests) for continuous integration\n     - **deploy**: Gates 1-4 (+ spec compliance) for production deploy\n     - **smoke**: Gate 5 only (post-deploy health check)\n\n4. **Verify required files exist**\n   - Test files exist (unless smoke level)\n   - Implementation files exist\n   - Config files exist (package.json, tsconfig.json, etc.)\n   - CI\u002Fdeployment scripts available\n\n5. **Check environment**\n   - Verify tools are installed (eslint, tsc, jest, pytest, etc.)\n   - Check Node\u002FPython version if applicable\n   - Verify dependencies are installed\n\n6. **Check for session handoff** — per the Session-Handoff Preflight in `${CLAUDE_PLUGIN_ROOT}\u002Freferences\u002Fskill-epilogue.md`\n\n## Execution Steps\n\n### Gate 1: Lint & Code Formatting\n\n**Purpose**: Ensure code follows style conventions and has no obvious issues.\n\n**Steps**:\n1. **Detect linter(s)** from config or package.json\n   - JavaScript\u002FTypeScript: eslint, prettier, biome\n   - Python: black, flake8, pylint\n   - Go: gofmt, golangci-lint\n   - etc.\n\n2. **Run linter(s)**\n   ```bash\n   # JavaScript\n   npx eslint --max-warnings 0 src\u002F tests\u002F\n\n   # Python\n   python -m flake8 src\u002F tests\u002F --max-line-length 100\n\n   # Go\n   gofmt -w .\u002F...\n   golangci-lint run .\u002F...\n   ```\n\n3. **Capture output** — count errors and warnings, list problematic files\n\n4. **Handle --fix flag**\n   - If --fix provided, auto-fix formatting issues\n   - Re-run linter to verify fixes\n   - Report what was fixed\n\n5. **Pass\u002FFail**\n   - PASS: 0 errors, 0 warnings (or configured threshold)\n   - FAIL: Any errors or warnings\n   - WARN: Warnings only (configurable as pass\u002Ffail)\n\n### Gate 2: Type Checking\n\n**Purpose**: Catch type errors and ensure type safety.\n\n**Steps**:\n1. **Detect type checker(s)** — TypeScript (`tsc --noEmit`), Flow, MyPy, etc.\n\n2. **Run type checker**\n   ```bash\n   # TypeScript\n   npx tsc --noEmit --strict\n\n   # Python with MyPy\n   python -m mypy src\u002F --strict\n   ```\n\n3. **Capture output** — count type errors, list files with issues\n\n4. **Pass\u002FFail**\n   - PASS: 0 type errors\n   - FAIL: Any type errors\n   - SKIP: Not applicable for untyped languages\n\n### Gate 3: Unit Tests & Coverage\n\n**Purpose**: Verify all tests pass and code coverage meets threshold.\n\n**Steps**:\n1. **Run test suite**\n   ```bash\n   # JavaScript\n   npm test -- --coverage --silent\n\n   # Python\n   python -m pytest --cov=src --cov-report=term-summary tests\u002F\n   ```\n\n2. **Parse test output** — tests run\u002Fpassed\u002Ffailed, timing\n\n3. **Parse coverage output** — line, branch, and function coverage % vs. the minCoverage threshold\n\n4. **Identify coverage gaps** (if below threshold) — which files, lines, and branches are uncovered\n\n5. **Pass\u002FFail criteria**\n   - PASS: All tests pass AND coverage >= threshold\n   - FAIL: Any test fails OR coverage \u003C threshold\n   - WARN: Tests pass but coverage marginally below (90% of threshold)\n\n### Gate 3.5: Test Surface Integrity (Test-Deletion Guardrail)\n\n**Purpose**: Enforce the TDD anti-deletion invariant — tests added during RED must exist\n(passing) at end of GREEN. Without this gate, Gate 3 passes even if the implementer\nsilently deleted failing tests to reach green.\n\n**When it runs**: After Gate 3 (tests pass), before Gate 4 (spec compliance). Only\napplicable when running within a TDD cycle context (i.e. `.add\u002Fcycles\u002Fcycle-{N}\u002F`\nsnapshots exist). For standalone `\u002Fadd:verify` runs, the gate is SKIPPED with an\nadvisory note.\n\n**Steps**:\n\n1. **Locate snapshots**\n   - Determine the current cycle id (from `\u002Fadd:cycle` context or the most recent\n     `.add\u002Fcycles\u002Fcycle-*\u002F` directory)\n   - Determine the spec slug (from the cycle's spec argument)\n   - Expected paths:\n     - `.add\u002Fcycles\u002Fcycle-{N}\u002Ftdd-{slug}-red.json`\n     - `.add\u002Fcycles\u002Fcycle-{N}\u002Ftdd-{slug}-green.json`\n\n2. **Run the gate script**\n   ```bash\n   python3 ${CLAUDE_PLUGIN_ROOT}\u002F..\u002F..\u002Fscripts\u002Fcheck-test-count.py gate \\\n     --red .add\u002Fcycles\u002Fcycle-{N}\u002Ftdd-{slug}-red.json \\\n     --green .add\u002Fcycles\u002Fcycle-{N}\u002Ftdd-{slug}-green.json \\\n     --project-root .\n   ```\n\n   For standalone runs (no RED\u002FGREEN snapshot), use the baseline form instead:\n   ```bash\n   python3 scripts\u002Fcheck-test-count.py --baseline origin\u002Fmain\n   ```\n\n3. **Interpret exit code**\n   - `0`: PASS. A structured JSON summary is emitted — capture it for the report.\n   - `1`: FAIL. The script prints the removed tests, the override status, and a\n     directive. Propagate the message verbatim.\n   - `2`: Invocation error (bad args). Treat as gate failure.\n\n4. **Capture the structured summary** (AC-017):\n   ```\n   tests_added: N, tests_removed: 0, tests_renamed: M, tests_replaced: 0, override: none\n   ```\n\n**Pass\u002FFail criteria**:\n- PASS: `tests_removed == 0` AND `tests_replaced == 0` (or all removals\u002Freplacements\n  are covered by an `overrides.json` record or a `[ADD-TEST-DELETE: ...]` commit trailer)\n- FAIL: Any uncovered removal or replacement\n- SKIP: No `.add\u002Fcycles\u002Fcycle-*\u002F` dir (standalone verify outside a cycle)\n\n**Error mode** (AC-015): if the GREEN snapshot is missing, FAIL with \"GREEN snapshot\nnot found — cycle is incomplete or test-writer\u002Fimplementer skipped snapshotting\" and\nremediation \"Rerun `\u002Fadd:tdd-cycle` from RED to regenerate snapshots.\"\n\nSee `core\u002Frules\u002Ftdd-enforcement.md` \"Test-Deletion Invariant\" for the justification\nmarker formats and the full rationale.\n\n### Gate 4: Spec Compliance & Integration Tests\n\n**Purpose**: Verify implementation meets spec and integration points work.\n\n**Steps**:\n1. **Read spec file** (specs\u002F{feature}.md)\n   - Extract all acceptance criteria\n   - Load test mapping (tests\u002F{feature}-mapping.md)\n\n2. **Verify test coverage**\n   - Every AC has at least one test\n   - Every AC test is in the \"passing\" list\n   - Every UT is covered by tests\n\n3. **Run integration tests** (if separate suite)\n   ```bash\n   npm test -- --testMatch=\"**\u002F*.integration.test.ts\"\n   # or\n   python -m pytest tests\u002Fintegration\u002F -v\n   ```\n\n4. **Spec compliance check**\n   - Parse test mapping\n   - Verify mapping completeness\n   - Cross-check with spec requirements\n\n5. **Pass\u002FFail**\n   - PASS: All ACs tested and passing, all integration tests pass\n   - FAIL: AC missing test, test failing, or integration test failing\n   - WARN: AC has only happy-path test (no edge cases)\n\n### Gate 4.5: AGENTS.md Drift (Opt-In)\n\n**Purpose**: Detect drift between the project's canonical ADD state and its published `AGENTS.md`.\n\n**Opt-In**: This gate runs only when `.add\u002Fconfig.json` contains `\"agentsMd\": {\"gateOnVerify\": true}`. Default is `false` — AGENTS.md is advisory for projects that have not opted in.\n\n**When enabled**:\n\n1. Check that `AGENTS.md` exists at project root. If absent, warn and skip (not a fail — the project may not publish one).\n2. Run `python3 scripts\u002Fgenerate-agents-md.py --check` from the project root.\n   - Exit 0 → in sync, gate PASSES.\n   - Exit 1 → drift detected, gate FAILS (advisory — does not block Gate 5).\n3. Print the unified diff on failure for fast human review. Suggest `\u002Fadd:agents-md --write` to remediate.\n\n### Gate 4.6: Staged-Secret Scan\n\n**Purpose**: Block commits that contain secrets before they reach the remote\ngit history. Closes F-014 (the v0.9.0 secrets gate was prose-only).\n\n**When it runs**: At `--level deploy` (and any superset). Skipped at `--level\nlocal|ci|smoke` because no commit is being prepared at those levels.\n\n**How it runs**: Follow `${CLAUDE_PLUGIN_ROOT}\u002Freferences\u002Fsecrets-gate.md` —\nscanner invocation, exit-code interpretation, redaction rules, and report\nformat all live there. NEVER paste a matched secret value into the report.\n\n**Pass\u002FFail criteria**:\n- PASS: Scanner exit code 0\n- FAIL: Scanner exit code != 0 (findings, invocation error, or missing catalog — never silently disable enforcement)\n- SKIP: `--level` is `local`, `ci`, or `smoke` (no staged commit context)\n\n### Gate 5: Smoke Tests (Post-Deploy)\n\n**Purpose**: Quick health check after deployment to catch obvious breakage.\n\n**Steps**:\n1. **Identify smoke test script**\n   - From config: ci.smokeTestScript\n   - Typical: `npm run test:smoke` or `.\u002Fscripts\u002Fsmoke-tests.sh`\n\n2. **Run smoke tests against deployed environment**\n   ```bash\n   ENVIRONMENT=staging npm run test:smoke\n   # or\n   .\u002Fscripts\u002Fsmoke-tests.sh production\n   ```\n\n3. **Capture output** — tests run and result, errors or timeouts, performance baseline check\n\n4. **Pass\u002FFail**\n   - PASS: All smoke tests pass within timeout\n   - FAIL: Any test fails or timeout exceeded\n   - SKIP: Not running (smoke level only)\n\n### Maturity-Scaled Checks (All Gates)\n\nAfter each gate's core checks, run maturity-scaled checks from the quality-gates rule. These checks progressively tighten with project maturity.\n\n**Execution Pattern** (repeat for each gate):\n\n1. **Read maturity level** from `.add\u002Fconfig.json` (default: alpha)\n2. **Load maturity-scaled checklist** from `${CLAUDE_PLUGIN_ROOT}\u002Freferences\u002Fquality-checks-matrix.md` → Maturity-Scaled Checks section\n3. **Filter checks for this gate** using the Gate Distribution mapping:\n   - **Gate 1:** Code quality (complexity, duplication, file\u002Ffunction length), secrets scan, readability (naming, nesting), branch naming\n   - **Gate 2:** Dependency audit, OWASP review, docstrings on exports, N+1\u002Fblocking async detection, CHANGELOG\u002FLICENSE\n   - **Gate 3:** Bundle size, PR template, README completeness, dependency freshness\n   - **Gate 4:** Auth pattern review, PII\u002Fdata handling, response time baselines, stale branch cleanup\n   - **Gate 5:** Response times vs baselines, secure headers verification\n4. **Execute checks** using agent tools:\n   - Use Grep to scan for patterns (secrets, magic numbers, N+1 queries, blocking async calls)\n   - Use Read to inspect files (function length, nesting depth, docstrings, README content)\n   - Use Bash to run tools (dependency audit, bundle size, lint with complexity rules)\n   - Use Glob to find files (LICENSE, CHANGELOG, PR template, .gitignore, stale branches)\n5. **Classify findings** as blocking or advisory per maturity level\n   - Load override thresholds from `.add\u002Fconfig.json` `qualityChecks` if present\n   - Apply enforcement level: blocking findings fail the gate, advisory findings are warnings\n6. **Include in gate report** — append maturity-scaled results to the gate's report section, and add the Maturity-Scaled Checks Summary to the overall report (formats in `${CLAUDE_PLUGIN_ROOT}\u002Ftemplates\u002Fverify-report.md`)\n\n## Execution by Level\n\n### Level: local (development)\nRuns Gates 1-2:\n1. Lint & formatting\n2. Type checking\n\nTypical use: Before committing code locally\n\n### Level: ci (continuous integration)\nRuns Gates 1-3 (Gate 3.5 runs if cycle snapshots present):\n1. Lint & formatting\n2. Type checking\n3. Unit tests & coverage\n3.5 Test Surface Integrity (only if `.add\u002Fcycles\u002Fcycle-*\u002F` snapshots exist)\n\nTypical use: CI\u002FCD pipeline on every push\n\n### Level: deploy (production deploy)\nRuns Gates 1-4 (plus 3.5, 4.5 opt-in, 4.6):\n1. Lint & formatting\n2. Type checking\n3. Unit tests & coverage\n3.5 Test Surface Integrity (test-deletion guardrail)\n4. Spec compliance & integration tests\n4.5 AGENTS.md drift (opt-in via config)\n4.6 Staged-secret scan (always)\n\nTypical use: Before deploying to production\n\n### Level: smoke (post-deploy)\nRuns Gate 5 only:\n1. Smoke tests\n\nTypical use: After deployment to verify health\n\n## Report Generation\n\nGenerate the comprehensive verification report using the formats in\n`${CLAUDE_PLUGIN_ROOT}\u002Ftemplates\u002Fverify-report.md`:\n\n- One per-gate section per gate that ran (per-gate format)\n- The summary table with overall status\n- The Maturity-Scaled Checks Summary\n- Recommendations with explicit next steps: `\u002Fadd:deploy` if all gates pass,\n  fix and re-run `\u002Fadd:verify` if any fail\n- The Configuration Used footer\n\n## Progress Tracking\n\n**Tasks to create** (mechanics per `${CLAUDE_PLUGIN_ROOT}\u002Freferences\u002Fskill-epilogue.md`):\n\n| Phase | Subject | activeForm |\n|-------|---------|------------|\n| Pre-flight | Running pre-flight checks | Running pre-flight checks... |\n| Gate 1 | Lint and formatting | Checking lint and formatting... |\n| Gate 2 | Type checking | Running type checks... |\n| Gate 3 | Tests and coverage | Running tests and checking coverage... |\n| Gate 3.5 | Test surface integrity | Checking test-deletion guardrail... |\n| Gate 4 | Spec compliance | Verifying spec compliance... |\n| Gate 4.6 | Staged-secret scan | Scanning staged content for secrets... |\n| Gate 5 | Smoke tests | Running smoke tests... |\n| Maturity | Maturity-scaled checks | Running maturity-scaled checks... |\n| Report | Generating verification report | Generating verification report... |\n\n## Error Handling\n\n**Gate fails**\n- Report which gate failed and why\n- List specific errors or failures\n- Provide remediation guidance\n- Exit with non-zero code\n\n**Tools not installed**\n- Report missing tool (eslint, tsc, jest, etc.)\n- Provide installation command\n- Suggest: `npm install` or `pip install`\n\n**Coverage below threshold**\n- Report current vs. target\n- Identify which files are below threshold\n- Suggest: add tests or check coverage report\n\n**Tests timeout**\n- Report which test timed out\n- Suggest running individual test\n- Suggest: `npm test -- --testNamePattern=\"test_name\"`\n\n**Environment issues**\n- Smoke tests fail due to unavailable environment\n- Report connectivity issues\n- Suggest checking deployment status\n\n## --fix Flag Behavior\n\nWhen --fix is provided:\n1. **Gate 1 (Lint)**: Auto-fix formatting issues — run eslint --fix or prettier, re-run linter to verify, report what was fixed\n2. **Gate 2 (Types)**: Cannot auto-fix type errors — report errors, suggest manual review\n3. **Gate 3 (Tests)**: Cannot auto-fix test failures — report failures, suggest checking coverage or adding tests\n4. **Gate 4 (Spec)**: Cannot auto-fix spec mismatches — report issues, suggest updating tests or implementation\n5. **Gate 5 (Smoke)**: Cannot auto-fix smoke test failures — report failures, suggest checking deployment\n\n## Integration with Other Skills\n\n- Used by \u002Fadd:tdd-cycle during VERIFY phase\n- Can be run standalone to check code quality\n- Output informs \u002Fadd:deploy decision\n- Feeds back to \u002Fadd:implementer or \u002Fadd:reviewer if gates fail\n\nEnd-of-skill epilogue: follow `${CLAUDE_PLUGIN_ROOT}\u002Freferences\u002Fskill-epilogue.md` (observation + learning checkpoint + progress tracking). Learning checkpoint trigger: \"After Verification\".\n",{"references":55,"description":7,"allowed-tools":61,"argument-hint":66},[56,57,58,59,60],"learning-reference.md","quality-checks-matrix.md","secrets-gate.md","skill-epilogue.md","rules\u002Ftelemetry.md",[62,63,64,42,65],"Read","Glob","Grep","TodoWrite","[--level local|ci|deploy|smoke] [--fix]","main","e335248c85d50f73919320bc138766eb413c5ee3","plugins\u002Fadd\u002Fskills\u002Fverify",6,"https:\u002F\u002Fgithub.com\u002FMountainUnicorn\u002Fadd","https:\u002F\u002Fgetadd.dev","https:\u002F\u002Fgithub.com\u002FMountainUnicorn","2026-10-31 22:03:50",{"source":8,"skillName":5,"commands":76,"prompt":86,"zipAvailable":87},[77,80,83],{"tool":78,"command":79},"npx","npx skills add MountainUnicorn\u002Fadd --skill verify",{"tool":81,"command":82},"bunx","bunx skills add MountainUnicorn\u002Fadd --skill verify",{"tool":84,"command":85},"pnpm","pnpm dlx skills add MountainUnicorn\u002Fadd --skill verify","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FMountainUnicorn\u002Fadd\u002Fblob\u002Fmain\u002Fplugins\u002Fadd\u002Fskills\u002Fverify\u002FSKILL.md",true,[89,95,99,103,107],{"path":90,"resourceType":91,"resourceTypeDesc":92,"sizeBytes":93,"sourceHtmlUrl":94},"examples\u002F3p-updates.md","REFERENCE","参考文档",3274,"https:\u002F\u002Fgithub.com\u002FSESELOVSKYDarian\u002FVase\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Finternal-comms\u002Fexamples\u002F3p-updates.md",{"path":96,"resourceType":91,"resourceTypeDesc":92,"sizeBytes":97,"sourceHtmlUrl":98},"examples\u002Fcompany-newsletter.md",3295,"https:\u002F\u002Fgithub.com\u002FSESELOVSKYDarian\u002FVase\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Finternal-comms\u002Fexamples\u002Fcompany-newsletter.md",{"path":100,"resourceType":91,"resourceTypeDesc":92,"sizeBytes":101,"sourceHtmlUrl":102},"examples\u002Ffaq-answers.md",2366,"https:\u002F\u002Fgithub.com\u002FSESELOVSKYDarian\u002FVase\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Finternal-comms\u002Fexamples\u002Ffaq-answers.md",{"path":104,"resourceType":91,"resourceTypeDesc":92,"sizeBytes":105,"sourceHtmlUrl":106},"examples\u002Fgeneral-comms.md",602,"https:\u002F\u002Fgithub.com\u002FSESELOVSKYDarian\u002FVase\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Finternal-comms\u002Fexamples\u002Fgeneral-comms.md",{"path":108,"resourceType":109,"resourceTypeDesc":110,"sizeBytes":111,"sourceHtmlUrl":112},"LICENSE.txt","LICENSE","许可证",11357,"https:\u002F\u002Fgithub.com\u002FSESELOVSKYDarian\u002FVase\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Finternal-comms\u002FLICENSE.txt",[114,121,126,131,141,166],{"skillNo":115,"name":116,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":117,"categories":118,"keywords":119,"publishedAt":50},"01M6CHXN68ZCGNXE9Q0K2T2RKX","add-verify","https:\u002F\u002Fgithub.com\u002FMountainUnicorn\u002Fadd\u002Fblob\u002Fmain\u002Ftests\u002Fhooks\u002Ffixtures\u002Fdoctor\u002Fmanifest-modified\u002Fskills\u002Fadd-verify\u002FSKILL.md",[],[120,5],"add verify",{"skillNo":122,"name":116,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":123,"categories":124,"keywords":125,"publishedAt":50},"01M6CHXJY4ZXKTNP0235A9KTNH","https:\u002F\u002Fgithub.com\u002FMountainUnicorn\u002Fadd\u002Fblob\u002Fmain\u002Ftests\u002Fhooks\u002Ffixtures\u002Fdoctor\u002Fmanifest-missing\u002Fskills\u002Fadd-verify\u002FSKILL.md",[],[5,120],{"skillNo":127,"name":116,"nameZh":6,"description":6,"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":50},"01M6CHXG6NV1DBMWT2N6XE5555","https:\u002F\u002Fgithub.com\u002FMountainUnicorn\u002Fadd\u002Fblob\u002Fmain\u002Ftests\u002Fhooks\u002Ffixtures\u002Fdoctor\u002Fhealthy\u002Fskills\u002Fadd-verify\u002FSKILL.md",[],[5,120],{"skillNo":132,"name":133,"nameZh":6,"description":134,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":135,"categories":136,"keywords":137,"publishedAt":50},"01M6CHXDZFPEFBZ79GHP48S1BB","version","[ADD v0.11.0] Show installed version, project version, and upgrade status","https:\u002F\u002Fgithub.com\u002FMountainUnicorn\u002Fadd\u002Fblob\u002Fmain\u002Fplugins\u002Fadd\u002Fskills\u002Fversion\u002FSKILL.md",[],[133,138,49,42,39,38,139,37,34,140],"status","check","show",{"skillNo":142,"name":143,"nameZh":6,"description":144,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":145,"categories":146,"keywords":154,"publishedAt":50},"01M6CHX8JF3M3J8BKTBW604D37","ux","[ADD v0.11.0] Iterate on UI\u002FUX design before implementation — wireframes, flow validation, and design sign-off","https:\u002F\u002Fgithub.com\u002FMountainUnicorn\u002Fadd\u002Fblob\u002Fmain\u002Fplugins\u002Fadd\u002Fskills\u002Fux\u002FSKILL.md",[147,150,151],{"categoryNo":148,"categoryName":149,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000015","视觉设计",{"categoryNo":23,"categoryName":24,"taxonomyType":20,"taxonomyTypeDesc":21},{"categoryNo":152,"categoryName":153,"taxonomyType":28,"taxonomyTypeDesc":29},"01JBSEEDCAT000000000000032","设计师",[143,39,155,156,34,157,158,37,159,38,41,49,160,161,162,163,164,42,165],"write","edit","design-system","implementation","design","validation","figma","file","ui","flow","system",{"skillNo":167,"name":168,"nameZh":6,"description":169,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":170,"categories":171,"keywords":176,"publishedAt":50},"01M6CHX5QE9RHMN4RE84QBXDV3","test-writer","[ADD v0.11.0] Write failing tests from spec (TDD RED phase)","https:\u002F\u002Fgithub.com\u002FMountainUnicorn\u002Fadd\u002Fblob\u002Fmain\u002Fplugins\u002Fadd\u002Fskills\u002Ftest-writer\u002FSKILL.md",[172,175],{"categoryNo":173,"categoryName":174,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":23,"categoryName":24,"taxonomyType":20,"taxonomyTypeDesc":21},[177,178,179,49,180,181,42,39,38,37,155,34,41],"test writer","test","tdd","integration","e2e"]