[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-microsoft-implementing-code":3,"mdc--i5345x-key":36,"related-org-microsoft-implementing-code":2328,"related-repo-microsoft-implementing-code":2523},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":25,"repoUrl":26,"updatedAt":27,"license":28,"forks":29,"topics":30,"repo":31,"sourceUrl":34,"mdContent":35},"implementing-code","execute implementation tasks for modernization","Executes a batch of implementation tasks with TDD workflow, source-anchored rewrite for behavioral fidelity, guideline-based code transformation, and full requirement tracing. Returns a structured batch report.\nTriggers: \"implement tasks\", \"execute the batch\", \"write code for these tasks\", \"implement with source anchoring\", \"run the implementation\".\nNOT for: task generation (use breaking-down-tasks), implementation planning (use creating-implementation-plan).\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"microsoft","Microsoft","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fmicrosoft.png",[12,16,19,22],{"name":13,"slug":14,"type":15},"Modernization","modernization","tag",{"name":17,"slug":18,"type":15},"Copilot","copilot",{"name":20,"slug":21,"type":15},"Migration","migration",{"name":23,"slug":24,"type":15},"Engineering","engineering",34,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fgithub-copilot-modernization","2026-07-18T05:14:07.057305",null,8,[18,14],{"repoUrl":26,"stars":25,"forks":29,"topics":32,"description":33},[18,14],"GitHub Copilot modernization agent","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fgithub-copilot-modernization\u002Ftree\u002FHEAD\u002Fplugins\u002Fgithub-copilot-modernization\u002Fskills\u002Fimplementing-code","---\nname: implementing-code\ndescription: |\n  Executes a batch of implementation tasks with TDD workflow, source-anchored rewrite for behavioral fidelity, guideline-based code transformation, and full requirement tracing. Returns a structured batch report.\n  Triggers: \"implement tasks\", \"execute the batch\", \"write code for these tasks\", \"implement with source anchoring\", \"run the implementation\".\n  NOT for: task generation (use breaking-down-tasks), implementation planning (use creating-implementation-plan).\n---\n\n## User Input\n\nYou **MUST** consider the user input before proceeding (if not empty).\n\n\n## Output\n\nCode files are written into the project tree. The batch report is written under **the provided artifact path**.\n\n```\nbatch-report.yaml   ← structured result consumed by caller\n```\n\n## Workflow\n\n### Step 1: Verify Prerequisites (first batch only)\n\nConfirm required artifacts exist: plan.md (with task list and Requirement Mapping table), feature spec.\n\n### Step 2: Load Context\n\nRead from the provided artifact path and dependency artifacts. Scan the artifact directory to find these categories:\n\n| Category | Required | Purpose | Look for |\n|----------|----------|---------|----------|\n| Task breakdown | ✅ | Work items with T-IDs to implement | Artifact with task IDs (T001, T002...), may be in `tasks\u002F` subdirectory or main planning artifact |\n| Feature spec | ✅ | Requirements (REQ-XXX) and acceptance criteria | Artifact with REQ-XXX identifiers and user scenarios |\n| Constitution | ✅ | Project principles and constraints | Usually named `constitution.md` in artifact root |\n| Implementation plan | ✅ | Phased plan with architecture decisions | Artifact with phased sections and plan references |\n| Architecture design | ✅ | API contracts, layering, package structure | Artifact with design decisions |\n| Data model | If exists | Entity definitions, mappings, FK strategy | Artifact with schema\u002Fentity details |\n| UX\u002FUI spec | If exists | Screen layouts, user flows, components | Artifact with screen specs |\n| Knowledge graph | If exists | Module dependencies and class relationships | JSON file with nodes\u002Fedges in artifact path |\n| Checkpoints | If exists | Upstream traceability | YAML files in `checkpoints\u002F` subdirectory |\n| Guidelines | If exists | Migration rules and transformation patterns | Search `guidelines` skill |\n\n### Step 3: Checklist Gate (first batch only)\n\nIf `checklists\u002F` directory exists, scan checklist files. If any incomplete items: display table and ask before proceeding.\n\n### Step 4: Project Setup (first batch only)\n\nCreate\u002Fverify ignore files. See `references\u002Fignore-patterns.md` for patterns by language\u002Ftool.\n\n### Step 5: Match Tasks from Breakdown\n\nFrom the task breakdown artifact, find tasks that match your current assignment:\n1. Read the task breakdown (from dependency artifacts)\n2. Match tasks by role, module\u002Fdomain, or phase that align with your task description\n3. For each matched task, extract:\n   - Task ID, description, acceptance criteria\n   - Plan references and REQ-XXX traceability\n   - Source file references (rewrite mode)\n   - Dependencies and parallel markers\n\nUnmet dependency not in current batch → report as blocked.\n\n### Step 5.5: Discover Required API Endpoints (web applications only)\n\n**Before writing any implementation code**, check whether an endpoint contract test script exists in the project root:\n\n```bash\nfor script in api-test.sh api-check.sh smoke.sh health-check.sh test-api.sh; do\n  test -f \".\u002F$script\" && echo \"found: $script\" && break\ndone\n```\n\n**If a script is found:**\n1. Read its full contents to extract every endpoint it exercises: URL paths, HTTP methods, expected status codes, and expected response shape.\n2. Treat every such endpoint as a **mandatory acceptance criterion** for this batch — equivalent to an explicit REQ in the feature spec. Missing even one will cause the post-build evaluation to fail.\n3. Cross-check each endpoint against the matched task list. If any script endpoint is absent from the task breakdown, add it as an implicit sub-task in your execution plan (e.g., `T_API_dashboard: Implement GET \u002Fapi\u002Fdashboard`).\n4. Record the discovered endpoint list at the top of `batch-report.yaml` under `required_endpoints`:\n   ```yaml\n   required_endpoints:\n     - method: GET\n       path: \u002Fapi\u002Fdashboard\n       source: api-test.sh\n       status: pending   # updated to \"implemented\" when the endpoint is wired up and verified\n     - method: GET\n       path: \u002Fapi\u002Fitems\n       source: api-test.sh\n       status: pending\n   ```\n\n**If no script is found:**\n- Check `clarification.md` (if present) for any explicitly listed required API endpoints.\n- Check the feature spec for API contract sections.\n- If neither source provides an endpoint list, proceed without this step.\n\nThis discovery step ensures that evaluation scripts are treated as first-class requirements from the start of implementation — not discovered only at post-build verification when fixes are costly.\n\n### Step 6: Execute\n\n**Ordering:**\n- Sequential tasks: in order\n- Parallel `[P]` tasks: can run together\n- Same-file tasks: must run sequentially\n\n**TDD Flow:**\n1. Setup: project structure, dependencies, configuration\n2. Tests before code: contract, entity, integration tests\n3. Core: models, services, endpoints\n4. Integration: DB, middleware, logging, external services\n5. Run tests: execute module-level tests (e.g., `mvn test -pl \u003Cmodule> -am`). ALL tests must PASS. Report pass\u002Ffail\u002Fskip counts in batch report. Test failure = task NOT complete.\n\n**Constitution & Requirement Fidelity:**\n- Before each task, re-read traced `REQ-XXX` — implement requirement intent, not just task description.\n- Verify decisions align with constitution principles.\n\n**Source-Anchored Rewrite (MANDATORY in rewrite mode):**\nFor tasks with `[Source:]`, follow `references\u002Fsource-anchored-rewrite.md`.\n\n**Guideline-Based Transformation:**\nFor tasks marked `[GUIDELINE:skill-name]`:\n1. Load the guideline from `skills\u002Fguidelines\u002F`\n2. Apply transformation rules, import changes, method mappings\n3. Use before\u002Fafter examples as reference\n\n**Parallelism:** Run independent tasks (`[P]` marked) in parallel as much as possible to maximize throughput.\n\n\n\n**Error Handling:**\n- Halt on non-parallel task failure\n- For `[P]` tasks: continue successful ones, report failures\n\n### Step 6.5: JS\u002FTS Scaffolding Validation Gate (JS\u002FTS projects only)\n\n**After any scaffolding step that generates or modifies a `package.json`**, execute this gate before proceeding to the next task. This gate is MANDATORY for all JavaScript and TypeScript projects.\n\n#### 6.5.1 — Verify required npm scripts\n\nCheck that `package.json` contains BOTH a `build` script AND a `test` script:\n\n```bash\nnode -e \"\n  const pkg = require('.\u002Fpackage.json');\n  const missing = ['build','test'].filter(s => !pkg.scripts || !pkg.scripts[s]);\n  if (missing.length) { console.error('MISSING scripts:', missing.join(', ')); process.exit(1); }\n  console.log('scripts OK: build=' + pkg.scripts.build + ', test=' + pkg.scripts.test);\n\"\n```\n\n**If either script is missing**, inject it immediately — do NOT defer:\n\n| Framework | Missing `test` script | Missing `build` script |\n|-----------|----------------------|----------------------|\n| Angular (`@angular\u002Fcore` in deps) | `\"test\": \"ng test --watch=false --browsers=ChromeHeadless\"` | `\"build\": \"ng build\"` |\n| React \u002F Vite | `\"test\": \"vitest run\"` or `\"test\": \"react-scripts test --watchAll=false\"` | `\"build\": \"vite build\"` |\n| React \u002F CRA | `\"test\": \"react-scripts test --watchAll=false --ci\"` | `\"build\": \"react-scripts build\"` |\n| Vue \u002F Vite | `\"test\": \"vitest run\"` | `\"build\": \"vite build\"` |\n| Next.js | `\"test\": \"jest --ci\"` | `\"build\": \"next build\"` |\n| NestJS \u002F Node | `\"test\": \"jest --ci\"` | `\"build\": \"nest build\"` |\n| Generic TS | `\"test\": \"jest --ci\"` | `\"build\": \"tsc\"` |\n\nAfter injecting, confirm the script was written and re-verify with the check above.\n\n#### 6.5.2 — Run the test script\n\nAfter confirming both scripts exist, execute:\n\n```bash\nnpm test\n```\n\n(or `yarn test` \u002F `pnpm test` if the project uses those package managers)\n\n- **Exit code 0**: gate passes — proceed.\n- **Exit code != 0**: enter a remediation loop (max 3 iterations):\n  1. Read the failure output to identify the root cause (missing browser binary, missing test files, misconfigured jest config, etc.)\n  2. Fix the cause (install missing dev dependency, create a minimal placeholder test, fix config)\n  3. Re-run `npm test`\n  4. If still failing after 3 iterations, record the failure in `batch-report.yaml` under `warnings` with severity HIGH and continue — do NOT block the entire batch:\n     ```yaml\n     warnings:\n       - severity: HIGH\n         message: \"npm test failed after 3 remediation attempts — \u003Clast error summary>\"\n     ```\n\n> **Why this gate exists**: Eval harnesses run `npm test` unconditionally. A scaffolded project without a `test` script causes an immediate fatal error (`npm error Missing script: \"test\"`) that masks all other results. Catching this at scaffolding time costs ~5 seconds; missing it causes total batch failure.\n\n### Step 6.6: API Endpoint Verification (web-application backends only)\n\nFor any batch that produces or modifies a web-application backend (Spring Boot, Express, NestJS, FastAPI, Django, ASP.NET Core, Go HTTP servers, and similar), verify endpoints **respond correctly at runtime** before the batch is considered complete. A passing build proves only compilation, not that routes are wired up.\n\n#### 6.6.1 — Run the discovered endpoint contract (if any)\n\nIf Step 5.5 found an endpoint contract script (`api-test.sh`, `api-check.sh`, …), start the application if not already running, then execute it:\n\n```bash\nbash .\u002Fapi-test.sh   # or whichever script Step 5.5 recorded\necho \"api-test exit code: $?\"\n```\n\n- **Exit code 0** → all endpoint assertions pass → proceed.\n- **Exit code != 0** → enter the fix loop (max 3 iterations):\n  1. Read the output to identify which endpoints returned errors (missing route, wrong status code, unexpected body).\n  2. Implement or correct the backend endpoint(s): add the missing controller\u002Fhandler, fix route mapping, return the expected response shape.\n  3. Re-run the script. Repeat until exit code is 0 or 3 iterations are exhausted.\n  4. If still failing after 3 iterations, record the failure in `batch-report.yaml` under `warnings` with severity HIGH and escalate via `[notify:coordinator]` — do NOT mark the affected endpoints `implemented`.\n\n#### 6.6.2 — Manual probe (no script found)\n\nIf no endpoint contract script exists, probe every REST endpoint the batch implemented after starting the application:\n\n```bash\ncurl -sf -o \u002Fdev\u002Fnull -w \"%{http_code}\" http:\u002F\u002Flocalhost:\u003CPORT>\u003Cendpoint>\n```\n\nEvery implemented endpoint MUST return a 2xx status code. A 404 or 500 means the route is not wired correctly — fix before completing the batch. Record probe results in the batch report under `endpoint_probes`:\n\n```yaml\nendpoint_probes:\n  - method: GET\n    path: \u002Fapi\u002Fdashboard\n    status: 200\n    result: PASS\n```\n\n### Step 7: Write Checkpoint\n\nAfter ALL tasks in this batch complete, write `checkpoints\u002Ftasks-to-impl.yaml` using `templates\u002Ftasks-to-impl-checkpoint-template.yaml`. This is REQUIRED — completeness gate reads it to verify traceability.\n\n### Step 8: Report\n\nGenerate batch result report per `references\u002Fbatch-report-format.md` (YAML format).\n\n**If `required_endpoints` was populated in Step 5.5**, update each entry's `status` to `\"implemented\"` once the corresponding endpoint is wired up and verified to respond correctly. Any entry still `\"pending\"` at report time is a gap — record it under `warnings` with severity HIGH:\n```yaml\nwarnings:\n  - severity: HIGH\n    message: \"Endpoint GET \u002Fapi\u002Fdashboard was required by api-test.sh but not implemented in this batch\"\n```\n\n## Resources\n\n### References\n- `references\u002Fsource-anchored-rewrite.md` — Rewrite-mode behavioral fidelity process\n- `references\u002Fignore-patterns.md` — Ignore file patterns by language\u002Ftool\n- `references\u002Fbatch-report-format.md` — Required YAML output format\n",{"data":37,"body":38},{"name":4,"description":6},{"type":39,"children":40},"root",[41,50,64,70,82,95,101,108,113,119,124,416,422,435,441,454,460,465,509,514,520,530,679,687,913,921,947,952,958,966,992,1000,1036,1044,1065,1090,1107,1131,1148,1156,1176,1182,1198,1205,1233,1299,1309,1542,1547,1553,1558,1578,1599,1729,1765,1771,1783,1789,1810,1860,1931,1937,1942,2025,2037,2123,2129,2150,2156,2169,2216,2277,2283,2289,2322],{"type":42,"tag":43,"props":44,"children":46},"element","h2",{"id":45},"user-input",[47],{"type":48,"value":49},"text","User Input",{"type":42,"tag":51,"props":52,"children":53},"p",{},[54,56,62],{"type":48,"value":55},"You ",{"type":42,"tag":57,"props":58,"children":59},"strong",{},[60],{"type":48,"value":61},"MUST",{"type":48,"value":63}," consider the user input before proceeding (if not empty).",{"type":42,"tag":43,"props":65,"children":67},{"id":66},"output",[68],{"type":48,"value":69},"Output",{"type":42,"tag":51,"props":71,"children":72},{},[73,75,80],{"type":48,"value":74},"Code files are written into the project tree. The batch report is written under ",{"type":42,"tag":57,"props":76,"children":77},{},[78],{"type":48,"value":79},"the provided artifact path",{"type":48,"value":81},".",{"type":42,"tag":83,"props":84,"children":88},"pre",{"className":85,"code":87,"language":48},[86],"language-text","batch-report.yaml   ← structured result consumed by caller\n",[89],{"type":42,"tag":90,"props":91,"children":93},"code",{"__ignoreMap":92},"",[94],{"type":48,"value":87},{"type":42,"tag":43,"props":96,"children":98},{"id":97},"workflow",[99],{"type":48,"value":100},"Workflow",{"type":42,"tag":102,"props":103,"children":105},"h3",{"id":104},"step-1-verify-prerequisites-first-batch-only",[106],{"type":48,"value":107},"Step 1: Verify Prerequisites (first batch only)",{"type":42,"tag":51,"props":109,"children":110},{},[111],{"type":48,"value":112},"Confirm required artifacts exist: plan.md (with task list and Requirement Mapping table), feature spec.",{"type":42,"tag":102,"props":114,"children":116},{"id":115},"step-2-load-context",[117],{"type":48,"value":118},"Step 2: Load Context",{"type":42,"tag":51,"props":120,"children":121},{},[122],{"type":48,"value":123},"Read from the provided artifact path and dependency artifacts. Scan the artifact directory to find these categories:",{"type":42,"tag":125,"props":126,"children":127},"table",{},[128,157],{"type":42,"tag":129,"props":130,"children":131},"thead",{},[132],{"type":42,"tag":133,"props":134,"children":135},"tr",{},[136,142,147,152],{"type":42,"tag":137,"props":138,"children":139},"th",{},[140],{"type":48,"value":141},"Category",{"type":42,"tag":137,"props":143,"children":144},{},[145],{"type":48,"value":146},"Required",{"type":42,"tag":137,"props":148,"children":149},{},[150],{"type":48,"value":151},"Purpose",{"type":42,"tag":137,"props":153,"children":154},{},[155],{"type":48,"value":156},"Look for",{"type":42,"tag":158,"props":159,"children":160},"tbody",{},[161,193,215,245,267,289,312,334,356,386],{"type":42,"tag":133,"props":162,"children":163},{},[164,170,175,180],{"type":42,"tag":165,"props":166,"children":167},"td",{},[168],{"type":48,"value":169},"Task breakdown",{"type":42,"tag":165,"props":171,"children":172},{},[173],{"type":48,"value":174},"✅",{"type":42,"tag":165,"props":176,"children":177},{},[178],{"type":48,"value":179},"Work items with T-IDs to implement",{"type":42,"tag":165,"props":181,"children":182},{},[183,185,191],{"type":48,"value":184},"Artifact with task IDs (T001, T002...), may be in ",{"type":42,"tag":90,"props":186,"children":188},{"className":187},[],[189],{"type":48,"value":190},"tasks\u002F",{"type":48,"value":192}," subdirectory or main planning artifact",{"type":42,"tag":133,"props":194,"children":195},{},[196,201,205,210],{"type":42,"tag":165,"props":197,"children":198},{},[199],{"type":48,"value":200},"Feature spec",{"type":42,"tag":165,"props":202,"children":203},{},[204],{"type":48,"value":174},{"type":42,"tag":165,"props":206,"children":207},{},[208],{"type":48,"value":209},"Requirements (REQ-XXX) and acceptance criteria",{"type":42,"tag":165,"props":211,"children":212},{},[213],{"type":48,"value":214},"Artifact with REQ-XXX identifiers and user scenarios",{"type":42,"tag":133,"props":216,"children":217},{},[218,223,227,232],{"type":42,"tag":165,"props":219,"children":220},{},[221],{"type":48,"value":222},"Constitution",{"type":42,"tag":165,"props":224,"children":225},{},[226],{"type":48,"value":174},{"type":42,"tag":165,"props":228,"children":229},{},[230],{"type":48,"value":231},"Project principles and constraints",{"type":42,"tag":165,"props":233,"children":234},{},[235,237,243],{"type":48,"value":236},"Usually named ",{"type":42,"tag":90,"props":238,"children":240},{"className":239},[],[241],{"type":48,"value":242},"constitution.md",{"type":48,"value":244}," in artifact root",{"type":42,"tag":133,"props":246,"children":247},{},[248,253,257,262],{"type":42,"tag":165,"props":249,"children":250},{},[251],{"type":48,"value":252},"Implementation plan",{"type":42,"tag":165,"props":254,"children":255},{},[256],{"type":48,"value":174},{"type":42,"tag":165,"props":258,"children":259},{},[260],{"type":48,"value":261},"Phased plan with architecture decisions",{"type":42,"tag":165,"props":263,"children":264},{},[265],{"type":48,"value":266},"Artifact with phased sections and plan references",{"type":42,"tag":133,"props":268,"children":269},{},[270,275,279,284],{"type":42,"tag":165,"props":271,"children":272},{},[273],{"type":48,"value":274},"Architecture design",{"type":42,"tag":165,"props":276,"children":277},{},[278],{"type":48,"value":174},{"type":42,"tag":165,"props":280,"children":281},{},[282],{"type":48,"value":283},"API contracts, layering, package structure",{"type":42,"tag":165,"props":285,"children":286},{},[287],{"type":48,"value":288},"Artifact with design decisions",{"type":42,"tag":133,"props":290,"children":291},{},[292,297,302,307],{"type":42,"tag":165,"props":293,"children":294},{},[295],{"type":48,"value":296},"Data model",{"type":42,"tag":165,"props":298,"children":299},{},[300],{"type":48,"value":301},"If exists",{"type":42,"tag":165,"props":303,"children":304},{},[305],{"type":48,"value":306},"Entity definitions, mappings, FK strategy",{"type":42,"tag":165,"props":308,"children":309},{},[310],{"type":48,"value":311},"Artifact with schema\u002Fentity details",{"type":42,"tag":133,"props":313,"children":314},{},[315,320,324,329],{"type":42,"tag":165,"props":316,"children":317},{},[318],{"type":48,"value":319},"UX\u002FUI spec",{"type":42,"tag":165,"props":321,"children":322},{},[323],{"type":48,"value":301},{"type":42,"tag":165,"props":325,"children":326},{},[327],{"type":48,"value":328},"Screen layouts, user flows, components",{"type":42,"tag":165,"props":330,"children":331},{},[332],{"type":48,"value":333},"Artifact with screen specs",{"type":42,"tag":133,"props":335,"children":336},{},[337,342,346,351],{"type":42,"tag":165,"props":338,"children":339},{},[340],{"type":48,"value":341},"Knowledge graph",{"type":42,"tag":165,"props":343,"children":344},{},[345],{"type":48,"value":301},{"type":42,"tag":165,"props":347,"children":348},{},[349],{"type":48,"value":350},"Module dependencies and class relationships",{"type":42,"tag":165,"props":352,"children":353},{},[354],{"type":48,"value":355},"JSON file with nodes\u002Fedges in artifact path",{"type":42,"tag":133,"props":357,"children":358},{},[359,364,368,373],{"type":42,"tag":165,"props":360,"children":361},{},[362],{"type":48,"value":363},"Checkpoints",{"type":42,"tag":165,"props":365,"children":366},{},[367],{"type":48,"value":301},{"type":42,"tag":165,"props":369,"children":370},{},[371],{"type":48,"value":372},"Upstream traceability",{"type":42,"tag":165,"props":374,"children":375},{},[376,378,384],{"type":48,"value":377},"YAML files in ",{"type":42,"tag":90,"props":379,"children":381},{"className":380},[],[382],{"type":48,"value":383},"checkpoints\u002F",{"type":48,"value":385}," subdirectory",{"type":42,"tag":133,"props":387,"children":388},{},[389,394,398,403],{"type":42,"tag":165,"props":390,"children":391},{},[392],{"type":48,"value":393},"Guidelines",{"type":42,"tag":165,"props":395,"children":396},{},[397],{"type":48,"value":301},{"type":42,"tag":165,"props":399,"children":400},{},[401],{"type":48,"value":402},"Migration rules and transformation patterns",{"type":42,"tag":165,"props":404,"children":405},{},[406,408,414],{"type":48,"value":407},"Search ",{"type":42,"tag":90,"props":409,"children":411},{"className":410},[],[412],{"type":48,"value":413},"guidelines",{"type":48,"value":415}," skill",{"type":42,"tag":102,"props":417,"children":419},{"id":418},"step-3-checklist-gate-first-batch-only",[420],{"type":48,"value":421},"Step 3: Checklist Gate (first batch only)",{"type":42,"tag":51,"props":423,"children":424},{},[425,427,433],{"type":48,"value":426},"If ",{"type":42,"tag":90,"props":428,"children":430},{"className":429},[],[431],{"type":48,"value":432},"checklists\u002F",{"type":48,"value":434}," directory exists, scan checklist files. If any incomplete items: display table and ask before proceeding.",{"type":42,"tag":102,"props":436,"children":438},{"id":437},"step-4-project-setup-first-batch-only",[439],{"type":48,"value":440},"Step 4: Project Setup (first batch only)",{"type":42,"tag":51,"props":442,"children":443},{},[444,446,452],{"type":48,"value":445},"Create\u002Fverify ignore files. See ",{"type":42,"tag":90,"props":447,"children":449},{"className":448},[],[450],{"type":48,"value":451},"references\u002Fignore-patterns.md",{"type":48,"value":453}," for patterns by language\u002Ftool.",{"type":42,"tag":102,"props":455,"children":457},{"id":456},"step-5-match-tasks-from-breakdown",[458],{"type":48,"value":459},"Step 5: Match Tasks from Breakdown",{"type":42,"tag":51,"props":461,"children":462},{},[463],{"type":48,"value":464},"From the task breakdown artifact, find tasks that match your current assignment:",{"type":42,"tag":466,"props":467,"children":468},"ol",{},[469,475,480],{"type":42,"tag":470,"props":471,"children":472},"li",{},[473],{"type":48,"value":474},"Read the task breakdown (from dependency artifacts)",{"type":42,"tag":470,"props":476,"children":477},{},[478],{"type":48,"value":479},"Match tasks by role, module\u002Fdomain, or phase that align with your task description",{"type":42,"tag":470,"props":481,"children":482},{},[483,485],{"type":48,"value":484},"For each matched task, extract:\n",{"type":42,"tag":486,"props":487,"children":488},"ul",{},[489,494,499,504],{"type":42,"tag":470,"props":490,"children":491},{},[492],{"type":48,"value":493},"Task ID, description, acceptance criteria",{"type":42,"tag":470,"props":495,"children":496},{},[497],{"type":48,"value":498},"Plan references and REQ-XXX traceability",{"type":42,"tag":470,"props":500,"children":501},{},[502],{"type":48,"value":503},"Source file references (rewrite mode)",{"type":42,"tag":470,"props":505,"children":506},{},[507],{"type":48,"value":508},"Dependencies and parallel markers",{"type":42,"tag":51,"props":510,"children":511},{},[512],{"type":48,"value":513},"Unmet dependency not in current batch → report as blocked.",{"type":42,"tag":102,"props":515,"children":517},{"id":516},"step-55-discover-required-api-endpoints-web-applications-only",[518],{"type":48,"value":519},"Step 5.5: Discover Required API Endpoints (web applications only)",{"type":42,"tag":51,"props":521,"children":522},{},[523,528],{"type":42,"tag":57,"props":524,"children":525},{},[526],{"type":48,"value":527},"Before writing any implementation code",{"type":48,"value":529},", check whether an endpoint contract test script exists in the project root:",{"type":42,"tag":83,"props":531,"children":535},{"className":532,"code":533,"language":534,"meta":92,"style":92},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","for script in api-test.sh api-check.sh smoke.sh health-check.sh test-api.sh; do\n  test -f \".\u002F$script\" && echo \"found: $script\" && break\ndone\n","bash",[536],{"type":42,"tag":90,"props":537,"children":538},{"__ignoreMap":92},[539,599,670],{"type":42,"tag":540,"props":541,"children":544},"span",{"class":542,"line":543},"line",1,[545,551,557,562,568,573,578,583,588,594],{"type":42,"tag":540,"props":546,"children":548},{"style":547},"--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic",[549],{"type":48,"value":550},"for",{"type":42,"tag":540,"props":552,"children":554},{"style":553},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[555],{"type":48,"value":556}," script ",{"type":42,"tag":540,"props":558,"children":559},{"style":547},[560],{"type":48,"value":561},"in",{"type":42,"tag":540,"props":563,"children":565},{"style":564},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[566],{"type":48,"value":567}," api-test.sh",{"type":42,"tag":540,"props":569,"children":570},{"style":564},[571],{"type":48,"value":572}," api-check.sh",{"type":42,"tag":540,"props":574,"children":575},{"style":564},[576],{"type":48,"value":577}," smoke.sh",{"type":42,"tag":540,"props":579,"children":580},{"style":564},[581],{"type":48,"value":582}," health-check.sh",{"type":42,"tag":540,"props":584,"children":585},{"style":564},[586],{"type":48,"value":587}," test-api.sh",{"type":42,"tag":540,"props":589,"children":591},{"style":590},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[592],{"type":48,"value":593},";",{"type":42,"tag":540,"props":595,"children":596},{"style":547},[597],{"type":48,"value":598}," do\n",{"type":42,"tag":540,"props":600,"children":602},{"class":542,"line":601},2,[603,609,614,619,624,629,634,639,644,648,653,657,661,665],{"type":42,"tag":540,"props":604,"children":606},{"style":605},"--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF",[607],{"type":48,"value":608},"  test",{"type":42,"tag":540,"props":610,"children":611},{"style":564},[612],{"type":48,"value":613}," -f",{"type":42,"tag":540,"props":615,"children":616},{"style":590},[617],{"type":48,"value":618}," \"",{"type":42,"tag":540,"props":620,"children":621},{"style":564},[622],{"type":48,"value":623},".\u002F",{"type":42,"tag":540,"props":625,"children":626},{"style":553},[627],{"type":48,"value":628},"$script",{"type":42,"tag":540,"props":630,"children":631},{"style":590},[632],{"type":48,"value":633},"\"",{"type":42,"tag":540,"props":635,"children":636},{"style":590},[637],{"type":48,"value":638}," &&",{"type":42,"tag":540,"props":640,"children":641},{"style":605},[642],{"type":48,"value":643}," echo",{"type":42,"tag":540,"props":645,"children":646},{"style":590},[647],{"type":48,"value":618},{"type":42,"tag":540,"props":649,"children":650},{"style":564},[651],{"type":48,"value":652},"found: ",{"type":42,"tag":540,"props":654,"children":655},{"style":553},[656],{"type":48,"value":628},{"type":42,"tag":540,"props":658,"children":659},{"style":590},[660],{"type":48,"value":633},{"type":42,"tag":540,"props":662,"children":663},{"style":590},[664],{"type":48,"value":638},{"type":42,"tag":540,"props":666,"children":667},{"style":547},[668],{"type":48,"value":669}," break\n",{"type":42,"tag":540,"props":671,"children":673},{"class":542,"line":672},3,[674],{"type":42,"tag":540,"props":675,"children":676},{"style":547},[677],{"type":48,"value":678},"done\n",{"type":42,"tag":51,"props":680,"children":681},{},[682],{"type":42,"tag":57,"props":683,"children":684},{},[685],{"type":48,"value":686},"If a script is found:",{"type":42,"tag":466,"props":688,"children":689},{},[690,695,707,720],{"type":42,"tag":470,"props":691,"children":692},{},[693],{"type":48,"value":694},"Read its full contents to extract every endpoint it exercises: URL paths, HTTP methods, expected status codes, and expected response shape.",{"type":42,"tag":470,"props":696,"children":697},{},[698,700,705],{"type":48,"value":699},"Treat every such endpoint as a ",{"type":42,"tag":57,"props":701,"children":702},{},[703],{"type":48,"value":704},"mandatory acceptance criterion",{"type":48,"value":706}," for this batch — equivalent to an explicit REQ in the feature spec. Missing even one will cause the post-build evaluation to fail.",{"type":42,"tag":470,"props":708,"children":709},{},[710,712,718],{"type":48,"value":711},"Cross-check each endpoint against the matched task list. If any script endpoint is absent from the task breakdown, add it as an implicit sub-task in your execution plan (e.g., ",{"type":42,"tag":90,"props":713,"children":715},{"className":714},[],[716],{"type":48,"value":717},"T_API_dashboard: Implement GET \u002Fapi\u002Fdashboard",{"type":48,"value":719},").",{"type":42,"tag":470,"props":721,"children":722},{},[723,725,731,733,739,741],{"type":48,"value":724},"Record the discovered endpoint list at the top of ",{"type":42,"tag":90,"props":726,"children":728},{"className":727},[],[729],{"type":48,"value":730},"batch-report.yaml",{"type":48,"value":732}," under ",{"type":42,"tag":90,"props":734,"children":736},{"className":735},[],[737],{"type":48,"value":738},"required_endpoints",{"type":48,"value":740},":\n",{"type":42,"tag":83,"props":742,"children":746},{"className":743,"code":744,"language":745,"meta":92,"style":92},"language-yaml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","required_endpoints:\n  - method: GET\n    path: \u002Fapi\u002Fdashboard\n    source: api-test.sh\n    status: pending   # updated to \"implemented\" when the endpoint is wired up and verified\n  - method: GET\n    path: \u002Fapi\u002Fitems\n    source: api-test.sh\n    status: pending\n","yaml",[747],{"type":42,"tag":90,"props":748,"children":749},{"__ignoreMap":92},[750,762,785,802,820,844,864,881,896],{"type":42,"tag":540,"props":751,"children":752},{"class":542,"line":543},[753,758],{"type":42,"tag":540,"props":754,"children":756},{"style":755},"--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178",[757],{"type":48,"value":738},{"type":42,"tag":540,"props":759,"children":760},{"style":590},[761],{"type":48,"value":740},{"type":42,"tag":540,"props":763,"children":764},{"class":542,"line":601},[765,770,775,780],{"type":42,"tag":540,"props":766,"children":767},{"style":590},[768],{"type":48,"value":769},"  -",{"type":42,"tag":540,"props":771,"children":772},{"style":755},[773],{"type":48,"value":774}," method",{"type":42,"tag":540,"props":776,"children":777},{"style":590},[778],{"type":48,"value":779},":",{"type":42,"tag":540,"props":781,"children":782},{"style":564},[783],{"type":48,"value":784}," GET\n",{"type":42,"tag":540,"props":786,"children":787},{"class":542,"line":672},[788,793,797],{"type":42,"tag":540,"props":789,"children":790},{"style":755},[791],{"type":48,"value":792},"    path",{"type":42,"tag":540,"props":794,"children":795},{"style":590},[796],{"type":48,"value":779},{"type":42,"tag":540,"props":798,"children":799},{"style":564},[800],{"type":48,"value":801}," \u002Fapi\u002Fdashboard\n",{"type":42,"tag":540,"props":803,"children":805},{"class":542,"line":804},4,[806,811,815],{"type":42,"tag":540,"props":807,"children":808},{"style":755},[809],{"type":48,"value":810},"    source",{"type":42,"tag":540,"props":812,"children":813},{"style":590},[814],{"type":48,"value":779},{"type":42,"tag":540,"props":816,"children":817},{"style":564},[818],{"type":48,"value":819}," api-test.sh\n",{"type":42,"tag":540,"props":821,"children":823},{"class":542,"line":822},5,[824,829,833,838],{"type":42,"tag":540,"props":825,"children":826},{"style":755},[827],{"type":48,"value":828},"    status",{"type":42,"tag":540,"props":830,"children":831},{"style":590},[832],{"type":48,"value":779},{"type":42,"tag":540,"props":834,"children":835},{"style":564},[836],{"type":48,"value":837}," pending",{"type":42,"tag":540,"props":839,"children":841},{"style":840},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[842],{"type":48,"value":843},"   # updated to \"implemented\" when the endpoint is wired up and verified\n",{"type":42,"tag":540,"props":845,"children":847},{"class":542,"line":846},6,[848,852,856,860],{"type":42,"tag":540,"props":849,"children":850},{"style":590},[851],{"type":48,"value":769},{"type":42,"tag":540,"props":853,"children":854},{"style":755},[855],{"type":48,"value":774},{"type":42,"tag":540,"props":857,"children":858},{"style":590},[859],{"type":48,"value":779},{"type":42,"tag":540,"props":861,"children":862},{"style":564},[863],{"type":48,"value":784},{"type":42,"tag":540,"props":865,"children":867},{"class":542,"line":866},7,[868,872,876],{"type":42,"tag":540,"props":869,"children":870},{"style":755},[871],{"type":48,"value":792},{"type":42,"tag":540,"props":873,"children":874},{"style":590},[875],{"type":48,"value":779},{"type":42,"tag":540,"props":877,"children":878},{"style":564},[879],{"type":48,"value":880}," \u002Fapi\u002Fitems\n",{"type":42,"tag":540,"props":882,"children":883},{"class":542,"line":29},[884,888,892],{"type":42,"tag":540,"props":885,"children":886},{"style":755},[887],{"type":48,"value":810},{"type":42,"tag":540,"props":889,"children":890},{"style":590},[891],{"type":48,"value":779},{"type":42,"tag":540,"props":893,"children":894},{"style":564},[895],{"type":48,"value":819},{"type":42,"tag":540,"props":897,"children":899},{"class":542,"line":898},9,[900,904,908],{"type":42,"tag":540,"props":901,"children":902},{"style":755},[903],{"type":48,"value":828},{"type":42,"tag":540,"props":905,"children":906},{"style":590},[907],{"type":48,"value":779},{"type":42,"tag":540,"props":909,"children":910},{"style":564},[911],{"type":48,"value":912}," pending\n",{"type":42,"tag":51,"props":914,"children":915},{},[916],{"type":42,"tag":57,"props":917,"children":918},{},[919],{"type":48,"value":920},"If no script is found:",{"type":42,"tag":486,"props":922,"children":923},{},[924,937,942],{"type":42,"tag":470,"props":925,"children":926},{},[927,929,935],{"type":48,"value":928},"Check ",{"type":42,"tag":90,"props":930,"children":932},{"className":931},[],[933],{"type":48,"value":934},"clarification.md",{"type":48,"value":936}," (if present) for any explicitly listed required API endpoints.",{"type":42,"tag":470,"props":938,"children":939},{},[940],{"type":48,"value":941},"Check the feature spec for API contract sections.",{"type":42,"tag":470,"props":943,"children":944},{},[945],{"type":48,"value":946},"If neither source provides an endpoint list, proceed without this step.",{"type":42,"tag":51,"props":948,"children":949},{},[950],{"type":48,"value":951},"This discovery step ensures that evaluation scripts are treated as first-class requirements from the start of implementation — not discovered only at post-build verification when fixes are costly.",{"type":42,"tag":102,"props":953,"children":955},{"id":954},"step-6-execute",[956],{"type":48,"value":957},"Step 6: Execute",{"type":42,"tag":51,"props":959,"children":960},{},[961],{"type":42,"tag":57,"props":962,"children":963},{},[964],{"type":48,"value":965},"Ordering:",{"type":42,"tag":486,"props":967,"children":968},{},[969,974,987],{"type":42,"tag":470,"props":970,"children":971},{},[972],{"type":48,"value":973},"Sequential tasks: in order",{"type":42,"tag":470,"props":975,"children":976},{},[977,979,985],{"type":48,"value":978},"Parallel ",{"type":42,"tag":90,"props":980,"children":982},{"className":981},[],[983],{"type":48,"value":984},"[P]",{"type":48,"value":986}," tasks: can run together",{"type":42,"tag":470,"props":988,"children":989},{},[990],{"type":48,"value":991},"Same-file tasks: must run sequentially",{"type":42,"tag":51,"props":993,"children":994},{},[995],{"type":42,"tag":57,"props":996,"children":997},{},[998],{"type":48,"value":999},"TDD Flow:",{"type":42,"tag":466,"props":1001,"children":1002},{},[1003,1008,1013,1018,1023],{"type":42,"tag":470,"props":1004,"children":1005},{},[1006],{"type":48,"value":1007},"Setup: project structure, dependencies, configuration",{"type":42,"tag":470,"props":1009,"children":1010},{},[1011],{"type":48,"value":1012},"Tests before code: contract, entity, integration tests",{"type":42,"tag":470,"props":1014,"children":1015},{},[1016],{"type":48,"value":1017},"Core: models, services, endpoints",{"type":42,"tag":470,"props":1019,"children":1020},{},[1021],{"type":48,"value":1022},"Integration: DB, middleware, logging, external services",{"type":42,"tag":470,"props":1024,"children":1025},{},[1026,1028,1034],{"type":48,"value":1027},"Run tests: execute module-level tests (e.g., ",{"type":42,"tag":90,"props":1029,"children":1031},{"className":1030},[],[1032],{"type":48,"value":1033},"mvn test -pl \u003Cmodule> -am",{"type":48,"value":1035},"). ALL tests must PASS. Report pass\u002Ffail\u002Fskip counts in batch report. Test failure = task NOT complete.",{"type":42,"tag":51,"props":1037,"children":1038},{},[1039],{"type":42,"tag":57,"props":1040,"children":1041},{},[1042],{"type":48,"value":1043},"Constitution & Requirement Fidelity:",{"type":42,"tag":486,"props":1045,"children":1046},{},[1047,1060],{"type":42,"tag":470,"props":1048,"children":1049},{},[1050,1052,1058],{"type":48,"value":1051},"Before each task, re-read traced ",{"type":42,"tag":90,"props":1053,"children":1055},{"className":1054},[],[1056],{"type":48,"value":1057},"REQ-XXX",{"type":48,"value":1059}," — implement requirement intent, not just task description.",{"type":42,"tag":470,"props":1061,"children":1062},{},[1063],{"type":48,"value":1064},"Verify decisions align with constitution principles.",{"type":42,"tag":51,"props":1066,"children":1067},{},[1068,1073,1075,1081,1083,1089],{"type":42,"tag":57,"props":1069,"children":1070},{},[1071],{"type":48,"value":1072},"Source-Anchored Rewrite (MANDATORY in rewrite mode):",{"type":48,"value":1074},"\nFor tasks with ",{"type":42,"tag":90,"props":1076,"children":1078},{"className":1077},[],[1079],{"type":48,"value":1080},"[Source:]",{"type":48,"value":1082},", follow ",{"type":42,"tag":90,"props":1084,"children":1086},{"className":1085},[],[1087],{"type":48,"value":1088},"references\u002Fsource-anchored-rewrite.md",{"type":48,"value":81},{"type":42,"tag":51,"props":1091,"children":1092},{},[1093,1098,1100,1106],{"type":42,"tag":57,"props":1094,"children":1095},{},[1096],{"type":48,"value":1097},"Guideline-Based Transformation:",{"type":48,"value":1099},"\nFor tasks marked ",{"type":42,"tag":90,"props":1101,"children":1103},{"className":1102},[],[1104],{"type":48,"value":1105},"[GUIDELINE:skill-name]",{"type":48,"value":779},{"type":42,"tag":466,"props":1108,"children":1109},{},[1110,1121,1126],{"type":42,"tag":470,"props":1111,"children":1112},{},[1113,1115],{"type":48,"value":1114},"Load the guideline from ",{"type":42,"tag":90,"props":1116,"children":1118},{"className":1117},[],[1119],{"type":48,"value":1120},"skills\u002Fguidelines\u002F",{"type":42,"tag":470,"props":1122,"children":1123},{},[1124],{"type":48,"value":1125},"Apply transformation rules, import changes, method mappings",{"type":42,"tag":470,"props":1127,"children":1128},{},[1129],{"type":48,"value":1130},"Use before\u002Fafter examples as reference",{"type":42,"tag":51,"props":1132,"children":1133},{},[1134,1139,1141,1146],{"type":42,"tag":57,"props":1135,"children":1136},{},[1137],{"type":48,"value":1138},"Parallelism:",{"type":48,"value":1140}," Run independent tasks (",{"type":42,"tag":90,"props":1142,"children":1144},{"className":1143},[],[1145],{"type":48,"value":984},{"type":48,"value":1147}," marked) in parallel as much as possible to maximize throughput.",{"type":42,"tag":51,"props":1149,"children":1150},{},[1151],{"type":42,"tag":57,"props":1152,"children":1153},{},[1154],{"type":48,"value":1155},"Error Handling:",{"type":42,"tag":486,"props":1157,"children":1158},{},[1159,1164],{"type":42,"tag":470,"props":1160,"children":1161},{},[1162],{"type":48,"value":1163},"Halt on non-parallel task failure",{"type":42,"tag":470,"props":1165,"children":1166},{},[1167,1169,1174],{"type":48,"value":1168},"For ",{"type":42,"tag":90,"props":1170,"children":1172},{"className":1171},[],[1173],{"type":48,"value":984},{"type":48,"value":1175}," tasks: continue successful ones, report failures",{"type":42,"tag":102,"props":1177,"children":1179},{"id":1178},"step-65-jsts-scaffolding-validation-gate-jsts-projects-only",[1180],{"type":48,"value":1181},"Step 6.5: JS\u002FTS Scaffolding Validation Gate (JS\u002FTS projects only)",{"type":42,"tag":51,"props":1183,"children":1184},{},[1185,1196],{"type":42,"tag":57,"props":1186,"children":1187},{},[1188,1190],{"type":48,"value":1189},"After any scaffolding step that generates or modifies a ",{"type":42,"tag":90,"props":1191,"children":1193},{"className":1192},[],[1194],{"type":48,"value":1195},"package.json",{"type":48,"value":1197},", execute this gate before proceeding to the next task. This gate is MANDATORY for all JavaScript and TypeScript projects.",{"type":42,"tag":1199,"props":1200,"children":1202},"h4",{"id":1201},"_651-verify-required-npm-scripts",[1203],{"type":48,"value":1204},"6.5.1 — Verify required npm scripts",{"type":42,"tag":51,"props":1206,"children":1207},{},[1208,1210,1215,1217,1223,1225,1231],{"type":48,"value":1209},"Check that ",{"type":42,"tag":90,"props":1211,"children":1213},{"className":1212},[],[1214],{"type":48,"value":1195},{"type":48,"value":1216}," contains BOTH a ",{"type":42,"tag":90,"props":1218,"children":1220},{"className":1219},[],[1221],{"type":48,"value":1222},"build",{"type":48,"value":1224}," script AND a ",{"type":42,"tag":90,"props":1226,"children":1228},{"className":1227},[],[1229],{"type":48,"value":1230},"test",{"type":48,"value":1232}," script:",{"type":42,"tag":83,"props":1234,"children":1236},{"className":532,"code":1235,"language":534,"meta":92,"style":92},"node -e \"\n  const pkg = require('.\u002Fpackage.json');\n  const missing = ['build','test'].filter(s => !pkg.scripts || !pkg.scripts[s]);\n  if (missing.length) { console.error('MISSING scripts:', missing.join(', ')); process.exit(1); }\n  console.log('scripts OK: build=' + pkg.scripts.build + ', test=' + pkg.scripts.test);\n\"\n",[1237],{"type":42,"tag":90,"props":1238,"children":1239},{"__ignoreMap":92},[1240,1259,1267,1275,1283,1291],{"type":42,"tag":540,"props":1241,"children":1242},{"class":542,"line":543},[1243,1249,1254],{"type":42,"tag":540,"props":1244,"children":1246},{"style":1245},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[1247],{"type":48,"value":1248},"node",{"type":42,"tag":540,"props":1250,"children":1251},{"style":564},[1252],{"type":48,"value":1253}," -e",{"type":42,"tag":540,"props":1255,"children":1256},{"style":590},[1257],{"type":48,"value":1258}," \"\n",{"type":42,"tag":540,"props":1260,"children":1261},{"class":542,"line":601},[1262],{"type":42,"tag":540,"props":1263,"children":1264},{"style":564},[1265],{"type":48,"value":1266},"  const pkg = require('.\u002Fpackage.json');\n",{"type":42,"tag":540,"props":1268,"children":1269},{"class":542,"line":672},[1270],{"type":42,"tag":540,"props":1271,"children":1272},{"style":564},[1273],{"type":48,"value":1274},"  const missing = ['build','test'].filter(s => !pkg.scripts || !pkg.scripts[s]);\n",{"type":42,"tag":540,"props":1276,"children":1277},{"class":542,"line":804},[1278],{"type":42,"tag":540,"props":1279,"children":1280},{"style":564},[1281],{"type":48,"value":1282},"  if (missing.length) { console.error('MISSING scripts:', missing.join(', ')); process.exit(1); }\n",{"type":42,"tag":540,"props":1284,"children":1285},{"class":542,"line":822},[1286],{"type":42,"tag":540,"props":1287,"children":1288},{"style":564},[1289],{"type":48,"value":1290},"  console.log('scripts OK: build=' + pkg.scripts.build + ', test=' + pkg.scripts.test);\n",{"type":42,"tag":540,"props":1292,"children":1293},{"class":542,"line":846},[1294],{"type":42,"tag":540,"props":1295,"children":1296},{"style":590},[1297],{"type":48,"value":1298},"\"\n",{"type":42,"tag":51,"props":1300,"children":1301},{},[1302,1307],{"type":42,"tag":57,"props":1303,"children":1304},{},[1305],{"type":48,"value":1306},"If either script is missing",{"type":48,"value":1308},", inject it immediately — do NOT defer:",{"type":42,"tag":125,"props":1310,"children":1311},{},[1312,1345],{"type":42,"tag":129,"props":1313,"children":1314},{},[1315],{"type":42,"tag":133,"props":1316,"children":1317},{},[1318,1323,1335],{"type":42,"tag":137,"props":1319,"children":1320},{},[1321],{"type":48,"value":1322},"Framework",{"type":42,"tag":137,"props":1324,"children":1325},{},[1326,1328,1333],{"type":48,"value":1327},"Missing ",{"type":42,"tag":90,"props":1329,"children":1331},{"className":1330},[],[1332],{"type":48,"value":1230},{"type":48,"value":1334}," script",{"type":42,"tag":137,"props":1336,"children":1337},{},[1338,1339,1344],{"type":48,"value":1327},{"type":42,"tag":90,"props":1340,"children":1342},{"className":1341},[],[1343],{"type":48,"value":1222},{"type":48,"value":1334},{"type":42,"tag":158,"props":1346,"children":1347},{},[1348,1382,1416,1442,1466,1492,1517],{"type":42,"tag":133,"props":1349,"children":1350},{},[1351,1364,1373],{"type":42,"tag":165,"props":1352,"children":1353},{},[1354,1356,1362],{"type":48,"value":1355},"Angular (",{"type":42,"tag":90,"props":1357,"children":1359},{"className":1358},[],[1360],{"type":48,"value":1361},"@angular\u002Fcore",{"type":48,"value":1363}," in deps)",{"type":42,"tag":165,"props":1365,"children":1366},{},[1367],{"type":42,"tag":90,"props":1368,"children":1370},{"className":1369},[],[1371],{"type":48,"value":1372},"\"test\": \"ng test --watch=false --browsers=ChromeHeadless\"",{"type":42,"tag":165,"props":1374,"children":1375},{},[1376],{"type":42,"tag":90,"props":1377,"children":1379},{"className":1378},[],[1380],{"type":48,"value":1381},"\"build\": \"ng build\"",{"type":42,"tag":133,"props":1383,"children":1384},{},[1385,1390,1407],{"type":42,"tag":165,"props":1386,"children":1387},{},[1388],{"type":48,"value":1389},"React \u002F Vite",{"type":42,"tag":165,"props":1391,"children":1392},{},[1393,1399,1401],{"type":42,"tag":90,"props":1394,"children":1396},{"className":1395},[],[1397],{"type":48,"value":1398},"\"test\": \"vitest run\"",{"type":48,"value":1400}," or ",{"type":42,"tag":90,"props":1402,"children":1404},{"className":1403},[],[1405],{"type":48,"value":1406},"\"test\": \"react-scripts test --watchAll=false\"",{"type":42,"tag":165,"props":1408,"children":1409},{},[1410],{"type":42,"tag":90,"props":1411,"children":1413},{"className":1412},[],[1414],{"type":48,"value":1415},"\"build\": \"vite build\"",{"type":42,"tag":133,"props":1417,"children":1418},{},[1419,1424,1433],{"type":42,"tag":165,"props":1420,"children":1421},{},[1422],{"type":48,"value":1423},"React \u002F CRA",{"type":42,"tag":165,"props":1425,"children":1426},{},[1427],{"type":42,"tag":90,"props":1428,"children":1430},{"className":1429},[],[1431],{"type":48,"value":1432},"\"test\": \"react-scripts test --watchAll=false --ci\"",{"type":42,"tag":165,"props":1434,"children":1435},{},[1436],{"type":42,"tag":90,"props":1437,"children":1439},{"className":1438},[],[1440],{"type":48,"value":1441},"\"build\": \"react-scripts build\"",{"type":42,"tag":133,"props":1443,"children":1444},{},[1445,1450,1458],{"type":42,"tag":165,"props":1446,"children":1447},{},[1448],{"type":48,"value":1449},"Vue \u002F Vite",{"type":42,"tag":165,"props":1451,"children":1452},{},[1453],{"type":42,"tag":90,"props":1454,"children":1456},{"className":1455},[],[1457],{"type":48,"value":1398},{"type":42,"tag":165,"props":1459,"children":1460},{},[1461],{"type":42,"tag":90,"props":1462,"children":1464},{"className":1463},[],[1465],{"type":48,"value":1415},{"type":42,"tag":133,"props":1467,"children":1468},{},[1469,1474,1483],{"type":42,"tag":165,"props":1470,"children":1471},{},[1472],{"type":48,"value":1473},"Next.js",{"type":42,"tag":165,"props":1475,"children":1476},{},[1477],{"type":42,"tag":90,"props":1478,"children":1480},{"className":1479},[],[1481],{"type":48,"value":1482},"\"test\": \"jest --ci\"",{"type":42,"tag":165,"props":1484,"children":1485},{},[1486],{"type":42,"tag":90,"props":1487,"children":1489},{"className":1488},[],[1490],{"type":48,"value":1491},"\"build\": \"next build\"",{"type":42,"tag":133,"props":1493,"children":1494},{},[1495,1500,1508],{"type":42,"tag":165,"props":1496,"children":1497},{},[1498],{"type":48,"value":1499},"NestJS \u002F Node",{"type":42,"tag":165,"props":1501,"children":1502},{},[1503],{"type":42,"tag":90,"props":1504,"children":1506},{"className":1505},[],[1507],{"type":48,"value":1482},{"type":42,"tag":165,"props":1509,"children":1510},{},[1511],{"type":42,"tag":90,"props":1512,"children":1514},{"className":1513},[],[1515],{"type":48,"value":1516},"\"build\": \"nest build\"",{"type":42,"tag":133,"props":1518,"children":1519},{},[1520,1525,1533],{"type":42,"tag":165,"props":1521,"children":1522},{},[1523],{"type":48,"value":1524},"Generic TS",{"type":42,"tag":165,"props":1526,"children":1527},{},[1528],{"type":42,"tag":90,"props":1529,"children":1531},{"className":1530},[],[1532],{"type":48,"value":1482},{"type":42,"tag":165,"props":1534,"children":1535},{},[1536],{"type":42,"tag":90,"props":1537,"children":1539},{"className":1538},[],[1540],{"type":48,"value":1541},"\"build\": \"tsc\"",{"type":42,"tag":51,"props":1543,"children":1544},{},[1545],{"type":48,"value":1546},"After injecting, confirm the script was written and re-verify with the check above.",{"type":42,"tag":1199,"props":1548,"children":1550},{"id":1549},"_652-run-the-test-script",[1551],{"type":48,"value":1552},"6.5.2 — Run the test script",{"type":42,"tag":51,"props":1554,"children":1555},{},[1556],{"type":48,"value":1557},"After confirming both scripts exist, execute:",{"type":42,"tag":83,"props":1559,"children":1561},{"className":532,"code":1560,"language":534,"meta":92,"style":92},"npm test\n",[1562],{"type":42,"tag":90,"props":1563,"children":1564},{"__ignoreMap":92},[1565],{"type":42,"tag":540,"props":1566,"children":1567},{"class":542,"line":543},[1568,1573],{"type":42,"tag":540,"props":1569,"children":1570},{"style":1245},[1571],{"type":48,"value":1572},"npm",{"type":42,"tag":540,"props":1574,"children":1575},{"style":564},[1576],{"type":48,"value":1577}," test\n",{"type":42,"tag":51,"props":1579,"children":1580},{},[1581,1583,1589,1591,1597],{"type":48,"value":1582},"(or ",{"type":42,"tag":90,"props":1584,"children":1586},{"className":1585},[],[1587],{"type":48,"value":1588},"yarn test",{"type":48,"value":1590}," \u002F ",{"type":42,"tag":90,"props":1592,"children":1594},{"className":1593},[],[1595],{"type":48,"value":1596},"pnpm test",{"type":48,"value":1598}," if the project uses those package managers)",{"type":42,"tag":486,"props":1600,"children":1601},{},[1602,1612],{"type":42,"tag":470,"props":1603,"children":1604},{},[1605,1610],{"type":42,"tag":57,"props":1606,"children":1607},{},[1608],{"type":48,"value":1609},"Exit code 0",{"type":48,"value":1611},": gate passes — proceed.",{"type":42,"tag":470,"props":1613,"children":1614},{},[1615,1620,1622],{"type":42,"tag":57,"props":1616,"children":1617},{},[1618],{"type":48,"value":1619},"Exit code != 0",{"type":48,"value":1621},": enter a remediation loop (max 3 iterations):\n",{"type":42,"tag":466,"props":1623,"children":1624},{},[1625,1630,1635,1646],{"type":42,"tag":470,"props":1626,"children":1627},{},[1628],{"type":48,"value":1629},"Read the failure output to identify the root cause (missing browser binary, missing test files, misconfigured jest config, etc.)",{"type":42,"tag":470,"props":1631,"children":1632},{},[1633],{"type":48,"value":1634},"Fix the cause (install missing dev dependency, create a minimal placeholder test, fix config)",{"type":42,"tag":470,"props":1636,"children":1637},{},[1638,1640],{"type":48,"value":1639},"Re-run ",{"type":42,"tag":90,"props":1641,"children":1643},{"className":1642},[],[1644],{"type":48,"value":1645},"npm test",{"type":42,"tag":470,"props":1647,"children":1648},{},[1649,1651,1656,1657,1663,1665],{"type":48,"value":1650},"If still failing after 3 iterations, record the failure in ",{"type":42,"tag":90,"props":1652,"children":1654},{"className":1653},[],[1655],{"type":48,"value":730},{"type":48,"value":732},{"type":42,"tag":90,"props":1658,"children":1660},{"className":1659},[],[1661],{"type":48,"value":1662},"warnings",{"type":48,"value":1664}," with severity HIGH and continue — do NOT block the entire batch:\n",{"type":42,"tag":83,"props":1666,"children":1668},{"className":743,"code":1667,"language":745,"meta":92,"style":92},"warnings:\n  - severity: HIGH\n    message: \"npm test failed after 3 remediation attempts — \u003Clast error summary>\"\n",[1669],{"type":42,"tag":90,"props":1670,"children":1671},{"__ignoreMap":92},[1672,1683,1704],{"type":42,"tag":540,"props":1673,"children":1674},{"class":542,"line":543},[1675,1679],{"type":42,"tag":540,"props":1676,"children":1677},{"style":755},[1678],{"type":48,"value":1662},{"type":42,"tag":540,"props":1680,"children":1681},{"style":590},[1682],{"type":48,"value":740},{"type":42,"tag":540,"props":1684,"children":1685},{"class":542,"line":601},[1686,1690,1695,1699],{"type":42,"tag":540,"props":1687,"children":1688},{"style":590},[1689],{"type":48,"value":769},{"type":42,"tag":540,"props":1691,"children":1692},{"style":755},[1693],{"type":48,"value":1694}," severity",{"type":42,"tag":540,"props":1696,"children":1697},{"style":590},[1698],{"type":48,"value":779},{"type":42,"tag":540,"props":1700,"children":1701},{"style":564},[1702],{"type":48,"value":1703}," HIGH\n",{"type":42,"tag":540,"props":1705,"children":1706},{"class":542,"line":672},[1707,1712,1716,1720,1725],{"type":42,"tag":540,"props":1708,"children":1709},{"style":755},[1710],{"type":48,"value":1711},"    message",{"type":42,"tag":540,"props":1713,"children":1714},{"style":590},[1715],{"type":48,"value":779},{"type":42,"tag":540,"props":1717,"children":1718},{"style":590},[1719],{"type":48,"value":618},{"type":42,"tag":540,"props":1721,"children":1722},{"style":564},[1723],{"type":48,"value":1724},"npm test failed after 3 remediation attempts — \u003Clast error summary>",{"type":42,"tag":540,"props":1726,"children":1727},{"style":590},[1728],{"type":48,"value":1298},{"type":42,"tag":1730,"props":1731,"children":1732},"blockquote",{},[1733],{"type":42,"tag":51,"props":1734,"children":1735},{},[1736,1741,1743,1748,1750,1755,1757,1763],{"type":42,"tag":57,"props":1737,"children":1738},{},[1739],{"type":48,"value":1740},"Why this gate exists",{"type":48,"value":1742},": Eval harnesses run ",{"type":42,"tag":90,"props":1744,"children":1746},{"className":1745},[],[1747],{"type":48,"value":1645},{"type":48,"value":1749}," unconditionally. A scaffolded project without a ",{"type":42,"tag":90,"props":1751,"children":1753},{"className":1752},[],[1754],{"type":48,"value":1230},{"type":48,"value":1756}," script causes an immediate fatal error (",{"type":42,"tag":90,"props":1758,"children":1760},{"className":1759},[],[1761],{"type":48,"value":1762},"npm error Missing script: \"test\"",{"type":48,"value":1764},") that masks all other results. Catching this at scaffolding time costs ~5 seconds; missing it causes total batch failure.",{"type":42,"tag":102,"props":1766,"children":1768},{"id":1767},"step-66-api-endpoint-verification-web-application-backends-only",[1769],{"type":48,"value":1770},"Step 6.6: API Endpoint Verification (web-application backends only)",{"type":42,"tag":51,"props":1772,"children":1773},{},[1774,1776,1781],{"type":48,"value":1775},"For any batch that produces or modifies a web-application backend (Spring Boot, Express, NestJS, FastAPI, Django, ASP.NET Core, Go HTTP servers, and similar), verify endpoints ",{"type":42,"tag":57,"props":1777,"children":1778},{},[1779],{"type":48,"value":1780},"respond correctly at runtime",{"type":48,"value":1782}," before the batch is considered complete. A passing build proves only compilation, not that routes are wired up.",{"type":42,"tag":1199,"props":1784,"children":1786},{"id":1785},"_661-run-the-discovered-endpoint-contract-if-any",[1787],{"type":48,"value":1788},"6.6.1 — Run the discovered endpoint contract (if any)",{"type":42,"tag":51,"props":1790,"children":1791},{},[1792,1794,1800,1802,1808],{"type":48,"value":1793},"If Step 5.5 found an endpoint contract script (",{"type":42,"tag":90,"props":1795,"children":1797},{"className":1796},[],[1798],{"type":48,"value":1799},"api-test.sh",{"type":48,"value":1801},", ",{"type":42,"tag":90,"props":1803,"children":1805},{"className":1804},[],[1806],{"type":48,"value":1807},"api-check.sh",{"type":48,"value":1809},", …), start the application if not already running, then execute it:",{"type":42,"tag":83,"props":1811,"children":1813},{"className":532,"code":1812,"language":534,"meta":92,"style":92},"bash .\u002Fapi-test.sh   # or whichever script Step 5.5 recorded\necho \"api-test exit code: $?\"\n",[1814],{"type":42,"tag":90,"props":1815,"children":1816},{"__ignoreMap":92},[1817,1834],{"type":42,"tag":540,"props":1818,"children":1819},{"class":542,"line":543},[1820,1824,1829],{"type":42,"tag":540,"props":1821,"children":1822},{"style":1245},[1823],{"type":48,"value":534},{"type":42,"tag":540,"props":1825,"children":1826},{"style":564},[1827],{"type":48,"value":1828}," .\u002Fapi-test.sh",{"type":42,"tag":540,"props":1830,"children":1831},{"style":840},[1832],{"type":48,"value":1833},"   # or whichever script Step 5.5 recorded\n",{"type":42,"tag":540,"props":1835,"children":1836},{"class":542,"line":601},[1837,1842,1846,1851,1856],{"type":42,"tag":540,"props":1838,"children":1839},{"style":605},[1840],{"type":48,"value":1841},"echo",{"type":42,"tag":540,"props":1843,"children":1844},{"style":590},[1845],{"type":48,"value":618},{"type":42,"tag":540,"props":1847,"children":1848},{"style":564},[1849],{"type":48,"value":1850},"api-test exit code: ",{"type":42,"tag":540,"props":1852,"children":1853},{"style":553},[1854],{"type":48,"value":1855},"$?",{"type":42,"tag":540,"props":1857,"children":1858},{"style":590},[1859],{"type":48,"value":1298},{"type":42,"tag":486,"props":1861,"children":1862},{},[1863,1872],{"type":42,"tag":470,"props":1864,"children":1865},{},[1866,1870],{"type":42,"tag":57,"props":1867,"children":1868},{},[1869],{"type":48,"value":1609},{"type":48,"value":1871}," → all endpoint assertions pass → proceed.",{"type":42,"tag":470,"props":1873,"children":1874},{},[1875,1879,1881],{"type":42,"tag":57,"props":1876,"children":1877},{},[1878],{"type":48,"value":1619},{"type":48,"value":1880}," → enter the fix loop (max 3 iterations):\n",{"type":42,"tag":466,"props":1882,"children":1883},{},[1884,1889,1894,1899],{"type":42,"tag":470,"props":1885,"children":1886},{},[1887],{"type":48,"value":1888},"Read the output to identify which endpoints returned errors (missing route, wrong status code, unexpected body).",{"type":42,"tag":470,"props":1890,"children":1891},{},[1892],{"type":48,"value":1893},"Implement or correct the backend endpoint(s): add the missing controller\u002Fhandler, fix route mapping, return the expected response shape.",{"type":42,"tag":470,"props":1895,"children":1896},{},[1897],{"type":48,"value":1898},"Re-run the script. Repeat until exit code is 0 or 3 iterations are exhausted.",{"type":42,"tag":470,"props":1900,"children":1901},{},[1902,1903,1908,1909,1914,1916,1922,1924,1930],{"type":48,"value":1650},{"type":42,"tag":90,"props":1904,"children":1906},{"className":1905},[],[1907],{"type":48,"value":730},{"type":48,"value":732},{"type":42,"tag":90,"props":1910,"children":1912},{"className":1911},[],[1913],{"type":48,"value":1662},{"type":48,"value":1915}," with severity HIGH and escalate via ",{"type":42,"tag":90,"props":1917,"children":1919},{"className":1918},[],[1920],{"type":48,"value":1921},"[notify:coordinator]",{"type":48,"value":1923}," — do NOT mark the affected endpoints ",{"type":42,"tag":90,"props":1925,"children":1927},{"className":1926},[],[1928],{"type":48,"value":1929},"implemented",{"type":48,"value":81},{"type":42,"tag":1199,"props":1932,"children":1934},{"id":1933},"_662-manual-probe-no-script-found",[1935],{"type":48,"value":1936},"6.6.2 — Manual probe (no script found)",{"type":42,"tag":51,"props":1938,"children":1939},{},[1940],{"type":48,"value":1941},"If no endpoint contract script exists, probe every REST endpoint the batch implemented after starting the application:",{"type":42,"tag":83,"props":1943,"children":1945},{"className":532,"code":1944,"language":534,"meta":92,"style":92},"curl -sf -o \u002Fdev\u002Fnull -w \"%{http_code}\" http:\u002F\u002Flocalhost:\u003CPORT>\u003Cendpoint>\n",[1946],{"type":42,"tag":90,"props":1947,"children":1948},{"__ignoreMap":92},[1949],{"type":42,"tag":540,"props":1950,"children":1951},{"class":542,"line":543},[1952,1957,1962,1967,1972,1977,1981,1986,1990,1995,2000,2005,2010,2015,2020],{"type":42,"tag":540,"props":1953,"children":1954},{"style":1245},[1955],{"type":48,"value":1956},"curl",{"type":42,"tag":540,"props":1958,"children":1959},{"style":564},[1960],{"type":48,"value":1961}," -sf",{"type":42,"tag":540,"props":1963,"children":1964},{"style":564},[1965],{"type":48,"value":1966}," -o",{"type":42,"tag":540,"props":1968,"children":1969},{"style":564},[1970],{"type":48,"value":1971}," \u002Fdev\u002Fnull",{"type":42,"tag":540,"props":1973,"children":1974},{"style":564},[1975],{"type":48,"value":1976}," -w",{"type":42,"tag":540,"props":1978,"children":1979},{"style":590},[1980],{"type":48,"value":618},{"type":42,"tag":540,"props":1982,"children":1983},{"style":564},[1984],{"type":48,"value":1985},"%{http_code}",{"type":42,"tag":540,"props":1987,"children":1988},{"style":590},[1989],{"type":48,"value":633},{"type":42,"tag":540,"props":1991,"children":1992},{"style":564},[1993],{"type":48,"value":1994}," http:\u002F\u002Flocalhost:",{"type":42,"tag":540,"props":1996,"children":1997},{"style":590},[1998],{"type":48,"value":1999},"\u003C",{"type":42,"tag":540,"props":2001,"children":2002},{"style":564},[2003],{"type":48,"value":2004},"POR",{"type":42,"tag":540,"props":2006,"children":2007},{"style":553},[2008],{"type":48,"value":2009},"T>\u003C",{"type":42,"tag":540,"props":2011,"children":2012},{"style":564},[2013],{"type":48,"value":2014},"endpoin",{"type":42,"tag":540,"props":2016,"children":2017},{"style":553},[2018],{"type":48,"value":2019},"t",{"type":42,"tag":540,"props":2021,"children":2022},{"style":590},[2023],{"type":48,"value":2024},">\n",{"type":42,"tag":51,"props":2026,"children":2027},{},[2028,2030,2036],{"type":48,"value":2029},"Every implemented endpoint MUST return a 2xx status code. A 404 or 500 means the route is not wired correctly — fix before completing the batch. Record probe results in the batch report under ",{"type":42,"tag":90,"props":2031,"children":2033},{"className":2032},[],[2034],{"type":48,"value":2035},"endpoint_probes",{"type":48,"value":779},{"type":42,"tag":83,"props":2038,"children":2040},{"className":743,"code":2039,"language":745,"meta":92,"style":92},"endpoint_probes:\n  - method: GET\n    path: \u002Fapi\u002Fdashboard\n    status: 200\n    result: PASS\n",[2041],{"type":42,"tag":90,"props":2042,"children":2043},{"__ignoreMap":92},[2044,2055,2074,2089,2106],{"type":42,"tag":540,"props":2045,"children":2046},{"class":542,"line":543},[2047,2051],{"type":42,"tag":540,"props":2048,"children":2049},{"style":755},[2050],{"type":48,"value":2035},{"type":42,"tag":540,"props":2052,"children":2053},{"style":590},[2054],{"type":48,"value":740},{"type":42,"tag":540,"props":2056,"children":2057},{"class":542,"line":601},[2058,2062,2066,2070],{"type":42,"tag":540,"props":2059,"children":2060},{"style":590},[2061],{"type":48,"value":769},{"type":42,"tag":540,"props":2063,"children":2064},{"style":755},[2065],{"type":48,"value":774},{"type":42,"tag":540,"props":2067,"children":2068},{"style":590},[2069],{"type":48,"value":779},{"type":42,"tag":540,"props":2071,"children":2072},{"style":564},[2073],{"type":48,"value":784},{"type":42,"tag":540,"props":2075,"children":2076},{"class":542,"line":672},[2077,2081,2085],{"type":42,"tag":540,"props":2078,"children":2079},{"style":755},[2080],{"type":48,"value":792},{"type":42,"tag":540,"props":2082,"children":2083},{"style":590},[2084],{"type":48,"value":779},{"type":42,"tag":540,"props":2086,"children":2087},{"style":564},[2088],{"type":48,"value":801},{"type":42,"tag":540,"props":2090,"children":2091},{"class":542,"line":804},[2092,2096,2100],{"type":42,"tag":540,"props":2093,"children":2094},{"style":755},[2095],{"type":48,"value":828},{"type":42,"tag":540,"props":2097,"children":2098},{"style":590},[2099],{"type":48,"value":779},{"type":42,"tag":540,"props":2101,"children":2103},{"style":2102},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[2104],{"type":48,"value":2105}," 200\n",{"type":42,"tag":540,"props":2107,"children":2108},{"class":542,"line":822},[2109,2114,2118],{"type":42,"tag":540,"props":2110,"children":2111},{"style":755},[2112],{"type":48,"value":2113},"    result",{"type":42,"tag":540,"props":2115,"children":2116},{"style":590},[2117],{"type":48,"value":779},{"type":42,"tag":540,"props":2119,"children":2120},{"style":564},[2121],{"type":48,"value":2122}," PASS\n",{"type":42,"tag":102,"props":2124,"children":2126},{"id":2125},"step-7-write-checkpoint",[2127],{"type":48,"value":2128},"Step 7: Write Checkpoint",{"type":42,"tag":51,"props":2130,"children":2131},{},[2132,2134,2140,2142,2148],{"type":48,"value":2133},"After ALL tasks in this batch complete, write ",{"type":42,"tag":90,"props":2135,"children":2137},{"className":2136},[],[2138],{"type":48,"value":2139},"checkpoints\u002Ftasks-to-impl.yaml",{"type":48,"value":2141}," using ",{"type":42,"tag":90,"props":2143,"children":2145},{"className":2144},[],[2146],{"type":48,"value":2147},"templates\u002Ftasks-to-impl-checkpoint-template.yaml",{"type":48,"value":2149},". This is REQUIRED — completeness gate reads it to verify traceability.",{"type":42,"tag":102,"props":2151,"children":2153},{"id":2152},"step-8-report",[2154],{"type":48,"value":2155},"Step 8: Report",{"type":42,"tag":51,"props":2157,"children":2158},{},[2159,2161,2167],{"type":48,"value":2160},"Generate batch result report per ",{"type":42,"tag":90,"props":2162,"children":2164},{"className":2163},[],[2165],{"type":48,"value":2166},"references\u002Fbatch-report-format.md",{"type":48,"value":2168}," (YAML format).",{"type":42,"tag":51,"props":2170,"children":2171},{},[2172,2183,2185,2191,2193,2199,2201,2207,2209,2214],{"type":42,"tag":57,"props":2173,"children":2174},{},[2175,2176,2181],{"type":48,"value":426},{"type":42,"tag":90,"props":2177,"children":2179},{"className":2178},[],[2180],{"type":48,"value":738},{"type":48,"value":2182}," was populated in Step 5.5",{"type":48,"value":2184},", update each entry's ",{"type":42,"tag":90,"props":2186,"children":2188},{"className":2187},[],[2189],{"type":48,"value":2190},"status",{"type":48,"value":2192}," to ",{"type":42,"tag":90,"props":2194,"children":2196},{"className":2195},[],[2197],{"type":48,"value":2198},"\"implemented\"",{"type":48,"value":2200}," once the corresponding endpoint is wired up and verified to respond correctly. Any entry still ",{"type":42,"tag":90,"props":2202,"children":2204},{"className":2203},[],[2205],{"type":48,"value":2206},"\"pending\"",{"type":48,"value":2208}," at report time is a gap — record it under ",{"type":42,"tag":90,"props":2210,"children":2212},{"className":2211},[],[2213],{"type":48,"value":1662},{"type":48,"value":2215}," with severity HIGH:",{"type":42,"tag":83,"props":2217,"children":2219},{"className":743,"code":2218,"language":745,"meta":92,"style":92},"warnings:\n  - severity: HIGH\n    message: \"Endpoint GET \u002Fapi\u002Fdashboard was required by api-test.sh but not implemented in this batch\"\n",[2220],{"type":42,"tag":90,"props":2221,"children":2222},{"__ignoreMap":92},[2223,2234,2253],{"type":42,"tag":540,"props":2224,"children":2225},{"class":542,"line":543},[2226,2230],{"type":42,"tag":540,"props":2227,"children":2228},{"style":755},[2229],{"type":48,"value":1662},{"type":42,"tag":540,"props":2231,"children":2232},{"style":590},[2233],{"type":48,"value":740},{"type":42,"tag":540,"props":2235,"children":2236},{"class":542,"line":601},[2237,2241,2245,2249],{"type":42,"tag":540,"props":2238,"children":2239},{"style":590},[2240],{"type":48,"value":769},{"type":42,"tag":540,"props":2242,"children":2243},{"style":755},[2244],{"type":48,"value":1694},{"type":42,"tag":540,"props":2246,"children":2247},{"style":590},[2248],{"type":48,"value":779},{"type":42,"tag":540,"props":2250,"children":2251},{"style":564},[2252],{"type":48,"value":1703},{"type":42,"tag":540,"props":2254,"children":2255},{"class":542,"line":672},[2256,2260,2264,2268,2273],{"type":42,"tag":540,"props":2257,"children":2258},{"style":755},[2259],{"type":48,"value":1711},{"type":42,"tag":540,"props":2261,"children":2262},{"style":590},[2263],{"type":48,"value":779},{"type":42,"tag":540,"props":2265,"children":2266},{"style":590},[2267],{"type":48,"value":618},{"type":42,"tag":540,"props":2269,"children":2270},{"style":564},[2271],{"type":48,"value":2272},"Endpoint GET \u002Fapi\u002Fdashboard was required by api-test.sh but not implemented in this batch",{"type":42,"tag":540,"props":2274,"children":2275},{"style":590},[2276],{"type":48,"value":1298},{"type":42,"tag":43,"props":2278,"children":2280},{"id":2279},"resources",[2281],{"type":48,"value":2282},"Resources",{"type":42,"tag":102,"props":2284,"children":2286},{"id":2285},"references",[2287],{"type":48,"value":2288},"References",{"type":42,"tag":486,"props":2290,"children":2291},{},[2292,2302,2312],{"type":42,"tag":470,"props":2293,"children":2294},{},[2295,2300],{"type":42,"tag":90,"props":2296,"children":2298},{"className":2297},[],[2299],{"type":48,"value":1088},{"type":48,"value":2301}," — Rewrite-mode behavioral fidelity process",{"type":42,"tag":470,"props":2303,"children":2304},{},[2305,2310],{"type":42,"tag":90,"props":2306,"children":2308},{"className":2307},[],[2309],{"type":48,"value":451},{"type":48,"value":2311}," — Ignore file patterns by language\u002Ftool",{"type":42,"tag":470,"props":2313,"children":2314},{},[2315,2320],{"type":42,"tag":90,"props":2316,"children":2318},{"className":2317},[],[2319],{"type":48,"value":2166},{"type":48,"value":2321}," — Required YAML output format",{"type":42,"tag":2323,"props":2324,"children":2325},"style",{},[2326],{"type":48,"value":2327},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":2329,"total":2522},[2330,2350,2371,2392,2407,2424,2435,2448,2463,2478,2497,2510],{"slug":2331,"name":2331,"fn":2332,"description":2333,"org":2334,"tags":2335,"stars":2347,"repoUrl":2348,"updatedAt":2349},"rushstack-best-practices","manage Rush monorepos with best practices","Provides best practices and guidance for working with Rush monorepos. Use when the user is working in a Rush-based repository, asks about Rush commands (install, update, build, rebuild), needs help with project selection, dependency management, build caching, subspace configuration, or troubleshooting Rush-specific issues.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2336,2337,2340,2341,2344],{"name":23,"slug":24,"type":15},{"name":2338,"slug":2339,"type":15},"Local Development","local-development",{"name":9,"slug":8,"type":15},{"name":2342,"slug":2343,"type":15},"Project Management","project-management",{"name":2345,"slug":2346,"type":15},"Rush","rush",6484,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Frushstack","2026-04-06T18:34:44.965032",{"slug":2351,"name":2351,"fn":2352,"description":2353,"org":2354,"tags":2355,"stars":2368,"repoUrl":2369,"updatedAt":2370},"azure-ai-agents-persistent-dotnet","build AI agents with Azure .NET SDK","Azure AI Agents Persistent SDK for .NET. Low-level SDK for creating and managing AI agents with threads, messages, runs, and tools. Use for agent CRUD, conversation threads, streaming responses, function calling, file search, and code interpreter. Triggers: \"PersistentAgentsClient\", \"persistent agents\", \"agent threads\", \"agent runs\", \"streaming agents\", \"function calling agents .NET\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2356,2359,2362,2365],{"name":2357,"slug":2358,"type":15},".NET","net",{"name":2360,"slug":2361,"type":15},"Agents","agents",{"name":2363,"slug":2364,"type":15},"Azure","azure",{"name":2366,"slug":2367,"type":15},"LLM","llm",2804,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fskills","2026-07-03T16:32:10.297433",{"slug":2372,"name":2372,"fn":2373,"description":2374,"org":2375,"tags":2376,"stars":2368,"repoUrl":2369,"updatedAt":2391},"azure-ai-anomalydetector-java","build anomaly detection applications with Java","Build anomaly detection applications with Azure AI Anomaly Detector SDK for Java. Use when implementing univariate\u002Fmultivariate anomaly detection, time-series analysis, or AI-powered monitoring.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2377,2380,2381,2384,2387,2388],{"name":2378,"slug":2379,"type":15},"Analytics","analytics",{"name":2363,"slug":2364,"type":15},{"name":2382,"slug":2383,"type":15},"Data Analysis","data-analysis",{"name":2385,"slug":2386,"type":15},"Java","java",{"name":9,"slug":8,"type":15},{"name":2389,"slug":2390,"type":15},"Monitoring","monitoring","2026-05-13T06:14:16.261754",{"slug":2393,"name":2393,"fn":2394,"description":2395,"org":2396,"tags":2397,"stars":2368,"repoUrl":2369,"updatedAt":2406},"azure-ai-contentsafety-java","build content moderation applications with Azure AI","Build content moderation applications with Azure AI Content Safety SDK for Java. Use when implementing text\u002Fimage analysis, blocklist management, or harm detection for hate, violence, sexual content, and self-harm.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2398,2401,2402,2403],{"name":2399,"slug":2400,"type":15},"AI Infrastructure","ai-infrastructure",{"name":2363,"slug":2364,"type":15},{"name":2385,"slug":2386,"type":15},{"name":2404,"slug":2405,"type":15},"Security","security","2026-07-07T06:53:31.293235",{"slug":2408,"name":2408,"fn":2409,"description":2410,"org":2411,"tags":2412,"stars":2368,"repoUrl":2369,"updatedAt":2423},"azure-ai-contentsafety-py","detect harmful content with Azure AI Content Safety","Azure AI Content Safety SDK for Python. Use for detecting harmful content in text and images with multi-severity classification.\nTriggers: \"azure-ai-contentsafety\", \"ContentSafetyClient\", \"content moderation\", \"harmful content\", \"text analysis\", \"image analysis\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2413,2414,2417,2418,2419,2422],{"name":2363,"slug":2364,"type":15},{"name":2415,"slug":2416,"type":15},"Compliance","compliance",{"name":2366,"slug":2367,"type":15},{"name":9,"slug":8,"type":15},{"name":2420,"slug":2421,"type":15},"Python","python",{"name":2404,"slug":2405,"type":15},"2026-07-18T05:14:23.017504",{"slug":2425,"name":2425,"fn":2426,"description":2427,"org":2428,"tags":2429,"stars":2368,"repoUrl":2369,"updatedAt":2434},"azure-ai-language-conversations-py","implement conversational language understanding with Python","Implement Conversational Language Understanding (CLU) using the azure-ai-language-conversations Python SDK. Use when working with ConversationAnalysisClient to analyze conversation intent and entities, building NLP features, or integrating language understanding into applications.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2430,2431,2432,2433],{"name":2378,"slug":2379,"type":15},{"name":2363,"slug":2364,"type":15},{"name":2366,"slug":2367,"type":15},{"name":2420,"slug":2421,"type":15},"2026-07-31T05:54:29.068751",{"slug":2436,"name":2436,"fn":2437,"description":2438,"org":2439,"tags":2440,"stars":2368,"repoUrl":2369,"updatedAt":2447},"azure-ai-translation-text-py","translate text using Azure AI services","Azure AI Text Translation SDK for real-time text translation, transliteration, language detection, and dictionary lookup. Use for translating text content in applications.\nTriggers: \"text translation\", \"translator\", \"translate text\", \"transliterate\", \"TextTranslationClient\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2441,2444,2445,2446],{"name":2442,"slug":2443,"type":15},"API Development","api-development",{"name":2363,"slug":2364,"type":15},{"name":9,"slug":8,"type":15},{"name":2420,"slug":2421,"type":15},"2026-07-18T05:14:16.988376",{"slug":2449,"name":2449,"fn":2450,"description":2451,"org":2452,"tags":2453,"stars":2368,"repoUrl":2369,"updatedAt":2462},"azure-ai-vision-imageanalysis-py","analyze images with Azure AI Vision","Azure AI Vision Image Analysis SDK for captions, tags, objects, OCR, people detection, and smart cropping. Use for computer vision and image understanding tasks.\nTriggers: \"image analysis\", \"computer vision\", \"OCR\", \"object detection\", \"ImageAnalysisClient\", \"image caption\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2454,2455,2458,2461],{"name":2363,"slug":2364,"type":15},{"name":2456,"slug":2457,"type":15},"Computer Vision","computer-vision",{"name":2459,"slug":2460,"type":15},"Images","images",{"name":2420,"slug":2421,"type":15},"2026-07-18T05:14:18.007737",{"slug":2464,"name":2464,"fn":2465,"description":2466,"org":2467,"tags":2468,"stars":2368,"repoUrl":2369,"updatedAt":2477},"azure-appconfiguration-java","manage configuration with Azure App Configuration","Azure App Configuration SDK for Java. Centralized application configuration management with key-value settings, feature flags, and snapshots.\nTriggers: \"ConfigurationClient java\", \"app configuration java\", \"feature flag java\", \"configuration setting java\", \"azure config java\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2469,2470,2473,2476],{"name":2363,"slug":2364,"type":15},{"name":2471,"slug":2472,"type":15},"Configuration","configuration",{"name":2474,"slug":2475,"type":15},"Feature Flags","feature-flags",{"name":2385,"slug":2386,"type":15},"2026-07-03T16:32:01.278468",{"slug":2479,"name":2479,"fn":2480,"description":2481,"org":2482,"tags":2483,"stars":2368,"repoUrl":2369,"updatedAt":2496},"azure-cosmos-rust","build applications with Azure Cosmos DB","Azure Cosmos DB library for Rust (NoSQL API). Document CRUD, containers, and globally distributed data.\nTriggers: \"cosmos db rust\", \"CosmosClient rust\", \"document crud rust\", \"NoSQL rust\", \"partition key rust\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2484,2487,2490,2493],{"name":2485,"slug":2486,"type":15},"Cosmos DB","cosmos-db",{"name":2488,"slug":2489,"type":15},"Database","database",{"name":2491,"slug":2492,"type":15},"NoSQL","nosql",{"name":2494,"slug":2495,"type":15},"Rust","rust","2026-07-31T05:54:27.021432",{"slug":2498,"name":2498,"fn":2480,"description":2499,"org":2500,"tags":2501,"stars":2368,"repoUrl":2369,"updatedAt":2509},"azure-cosmos-ts","Azure Cosmos DB JavaScript\u002FTypeScript SDK (@azure\u002Fcosmos) for data plane operations. Use for CRUD operations on documents, queries, bulk operations, and container management. Triggers: \"Cosmos DB\", \"@azure\u002Fcosmos\", \"CosmosClient\", \"document CRUD\", \"NoSQL queries\", \"bulk operations\", \"partition key\", \"container.items\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2502,2503,2504,2505,2506],{"name":2485,"slug":2486,"type":15},{"name":2488,"slug":2489,"type":15},{"name":9,"slug":8,"type":15},{"name":2491,"slug":2492,"type":15},{"name":2507,"slug":2508,"type":15},"TypeScript","typescript","2026-07-03T16:31:19.368382",{"slug":2511,"name":2511,"fn":2512,"description":2513,"org":2514,"tags":2515,"stars":2368,"repoUrl":2369,"updatedAt":2521},"azure-data-tables-java","build table storage applications with Java","Build table storage applications with Azure Tables SDK for Java. Use when working with Azure Table Storage or Cosmos DB Table API for NoSQL key-value data, schemaless storage, or structured data at scale.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2516,2517,2518,2519,2520],{"name":2363,"slug":2364,"type":15},{"name":2485,"slug":2486,"type":15},{"name":2488,"slug":2489,"type":15},{"name":2385,"slug":2386,"type":15},{"name":2491,"slug":2492,"type":15},"2026-05-13T06:14:17.582229",267,{"items":2524,"total":29},[2525,2540,2550,2563,2578,2588,2595],{"slug":2526,"name":2526,"fn":2527,"description":2528,"org":2529,"tags":2530,"stars":25,"repoUrl":26,"updatedAt":2539},"assessment","assess application repositories for modernization","Run application assessment for a single repository",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2531,2534,2537,2538],{"name":2532,"slug":2533,"type":15},"Audit","audit",{"name":2535,"slug":2536,"type":15},"Code Analysis","code-analysis",{"name":9,"slug":8,"type":15},{"name":13,"slug":14,"type":15},"2026-07-07T06:52:46.921075",{"slug":2541,"name":2541,"fn":2542,"description":2543,"org":2544,"tags":2545,"stars":25,"repoUrl":26,"updatedAt":2549},"clarifying-scenarios","evaluate modernization request scenario context","Evaluates whether a user's modernization\u002Frewrite request provides enough scenario context to proceed (e.g., target component library, screenshots, design system for frontend; API contract policy, data migration strategy for backend). Produces a deterministic clarity score, asks the user for missing required fields via a structured form, and writes a canonical `clarification.md` artifact consumed by all downstream agents.\nTriggers: \"clarification gate\", \"scenario clarification\", \"elicit missing context\", \"evaluate prompt completeness\", \"ask user for screenshots \u002F target library \u002F design system\".\nNOT for: feature specification (use feature-inventory), planning (use creating-implementation-plan), implementation (use implementing-code), or resolving spec-time `[NEEDS CLARIFICATION]` markers (those remain owned by feature-inventory).\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2546,2547,2548],{"name":17,"slug":18,"type":15},{"name":23,"slug":24,"type":15},{"name":13,"slug":14,"type":15},"2026-07-03T16:31:04.911521",{"slug":2551,"name":2551,"fn":2552,"description":2553,"org":2554,"tags":2555,"stars":25,"repoUrl":26,"updatedAt":2562},"create-modernization-plan","create modernization plans for Azure migration","Create a modernization plan to migrate the project to Azure",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2556,2557,2560,2561],{"name":2363,"slug":2364,"type":15},{"name":2558,"slug":2559,"type":15},"Deployment","deployment",{"name":9,"slug":8,"type":15},{"name":13,"slug":14,"type":15},"2026-07-07T06:52:44.361557",{"slug":2564,"name":2564,"fn":2565,"description":2566,"org":2567,"tags":2568,"stars":25,"repoUrl":26,"updatedAt":2577},"dependency-map","generate project dependency map diagrams","Generate dependency map diagram from project build files",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2569,2572,2573,2576],{"name":2570,"slug":2571,"type":15},"Architecture","architecture",{"name":2535,"slug":2536,"type":15},{"name":2574,"slug":2575,"type":15},"Diagrams","diagrams",{"name":23,"slug":24,"type":15},"2026-07-18T05:14:07.976259",{"slug":413,"name":413,"fn":2579,"description":2580,"org":2581,"tags":2582,"stars":25,"repoUrl":26,"updatedAt":2587},"apply framework migration and transformation rules","Collection of framework-to-framework migration rules and transformation patterns (e.g., Struts→Spring MVC, JSP→Thymeleaf, EJB→Spring Boot).\nTriggers: \"check migration guidelines\", \"look up transformation rules\", \"find Struts-to-Spring patterns\", \"apply migration conventions\", \"conversion rules for X→Y\".\nAlso consumed automatically by breaking-down-tasks and implementing-code during migration workflows.\nNOT for: direct execution — other skills scan this directory.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2583,2584,2585,2586],{"name":2385,"slug":2386,"type":15},{"name":9,"slug":8,"type":15},{"name":20,"slug":21,"type":15},{"name":13,"slug":14,"type":15},"2026-07-03T16:31:08.783756",{"slug":4,"name":4,"fn":5,"description":6,"org":2589,"tags":2590,"stars":25,"repoUrl":26,"updatedAt":27},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2591,2592,2593,2594],{"name":17,"slug":18,"type":15},{"name":23,"slug":24,"type":15},{"name":20,"slug":21,"type":15},{"name":13,"slug":14,"type":15},{"slug":2596,"name":2596,"fn":2597,"description":2598,"org":2599,"tags":2600,"stars":25,"repoUrl":26,"updatedAt":2611},"quality-gates","run quality gate validation for workflows","Runs quality gate validation at each workflow stage. Supports 4 gate types: spec-quality, spec-to-plan, plan-to-tasks, completeness. Produces gate pass\u002Ffail reports with actionable feedback.\nTriggers: \"run quality gate\", \"validate spec quality\", \"spec quality\", \"plan coverage\", \"check plan coverage\", \"validate plan to tasks\", \"check task traceability\", \"verify task completeness\", \"run completeness review\", \"review implementation\", \"check plan traceability\", \"check coverage\", \"completeness quality gate\", \"final sign-off\", \"feature parity sign-off\", \"completeness gate\", \"feature parity\", \"sign-off report\", \"verify all requirements\".\nRequires `type` parameter to select the gate.\nNOT for: code review, implementation (use implementing-code), spec writing.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2601,2602,2605,2608],{"name":9,"slug":8,"type":15},{"name":2603,"slug":2604,"type":15},"QA","qa",{"name":2606,"slug":2607,"type":15},"Testing","testing",{"name":2609,"slug":2610,"type":15},"Workflow Automation","workflow-automation","2026-07-07T06:52:45.631984"]