[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M75622F1ZGG5AX6DQZP9D2AW":3,"skill-same:01M75622F1ZGG5AX6DQZP9D2AW":58},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":19,"linkOnly":20,"markdownContent":21,"markdownBody":22,"frontMatter":23,"refName":35,"commitSha":36,"skillDirectory":37,"forksCount":38,"repositoryHtmlUrl":39,"repositoryHomepageUrl":6,"ownerHtmlUrl":40,"ownerBlogUrl":41,"ownerDescription":42,"updatedAt":43,"install":44,"resources":57},"01M75622F1ZGG5AX6DQZP9D2AW","quarkus-resource",null,"Generate a Quarkus RESTEasy Reactive @Path resource with DTOs, @RegisterForReflection, ExceptionMapper, and @QuarkusTest unit tests.","review-bench\u002Federcnj_ia-dev-environment","review-bench","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F286778065?v=4","01M7517F9NTEPDZDAXJBR30FWT","ReviewBench","01M7517FAC9F4P7TGWCNJ8VYVW",0,"MIT","https:\u002F\u002Fgithub.com\u002Freview-bench\u002Federcnj_ia-dev-environment\u002Fblob\u002Fmain\u002Fsrc\u002Ftest\u002Fresources\u002Fgolden\u002Fjava-spring\u002F.claude\u002Fskills\u002Fquarkus-resource\u002FSKILL.md",[],[],"2026-11-12 13:55:43",false,"---\nname: quarkus-resource\ndescription: \"Generate a Quarkus RESTEasy Reactive @Path resource with DTOs, @RegisterForReflection, ExceptionMapper, and @QuarkusTest unit tests.\"\nvisibility: public\nmodel: sonnet\nrequires-capabilities: [web.quarkus.framework]\nallowed-tools: [Read, Write, Edit, Bash, Skill]\ncontext-budget: light\n---\n\n# Skill: Quarkus Resource Generator\n\n## Purpose\n\nGenerates a complete Quarkus inbound adapter (resource) layer following the hexagonal architecture pattern. Produces:\n\n1. JAX-RS `@Path` resource class (RESTEasy Reactive)\n2. Request\u002FResponse DTOs (`record` types with `@RegisterForReflection`)\n3. Static mapper class\n4. `ExceptionMapper\u003CRuntimeException>` (or extends existing)\n5. `@QuarkusTest` unit tests\n\n## Triggers\n\n- `\u002Fquarkus-resource \u003CResourceName> [--operations GET,POST,DELETE]` — generate full resource for a resource\n- `\u002Fquarkus-resource \u003CResourceName> --crud` — generate standard CRUD\n- `\u002Fquarkus-resource \u003CResourceName> --read-only` — generate GET endpoints only\n\n## Parameters\n\n| Parameter | Required | Description |\n|-----------|----------|-------------|\n| `ResourceName` | Yes | PascalCase resource name (e.g., `Merchant`, `Transaction`) |\n| `--operations` | No | Comma-separated HTTP methods (default: all) |\n| `--crud` | No | GET list, GET by id, POST, PUT, DELETE |\n| `--read-only` | No | GET list and GET by id only |\n| `--path` | No | Override API path (default: `\u002Fapi\u002Fv1\u002F{resource-name-plural}`) |\n| `--port` | No | Port interface name (default: `{ResourceName}ManagementPort`) |\n\n## Workflow\n\n### Step 1 — Read Project Context\n\nRead existing conventions:\n- `knowledge\u002Fstack-patterns\u002Fquarkus\u002Findex.md` — Quarkus patterns\n- `knowledge\u002Flayer-templates.md` — Layer template patterns\n- `knowledge\u002Farchitecture-hexagonal.md` — Hexagonal architecture conventions\n- Existing resources in `src\u002Fmain\u002Fjava\u002F**\u002Fadapter\u002Finbound\u002F` for naming conventions\n\n### Step 2 — Generate DTOs\n\n```java\n\u002F\u002F src\u002Fmain\u002Fjava\u002F{package}\u002Fadapter\u002Finbound\u002Frest\u002F{ResourceName}Request.java\n@RegisterForReflection\npublic record {ResourceName}Request(\n    @NotBlank @Size(max = N) String field1,\n    @NotNull Type field2\n) {}\n\n\u002F\u002F src\u002Fmain\u002Fjava\u002F{package}\u002Fadapter\u002Finbound\u002Frest\u002F{ResourceName}Response.java\n@RegisterForReflection\npublic record {ResourceName}Response(Long id, String field1, Type field2) {}\n```\n\n### Step 3 — Generate Mapper\n\n```java\n\u002F\u002F src\u002Fmain\u002Fjava\u002F{package}\u002Fadapter\u002Finbound\u002Frest\u002F{ResourceName}DtoMapper.java\npublic final class {ResourceName}DtoMapper {\n    private {ResourceName}DtoMapper() {}\n\n    public static {DomainType} toDomain({ResourceName}Request request) { ... }\n    public static {ResourceName}Response toResponse({DomainType} domain) { ... }\n}\n```\n\n### Step 4 — Generate Resource\n\nFollow `knowledge\u002Fstack-patterns\u002Fquarkus\u002Findex.md` §4 RESTEasy Reactive pattern:\n\n```java\n\u002F\u002F src\u002Fmain\u002Fjava\u002F{package}\u002Fadapter\u002Finbound\u002Frest\u002F{ResourceName}Resource.java\n@Path(\"{path}\")\n@Produces(MediaType.APPLICATION_JSON)\n@Consumes(MediaType.APPLICATION_JSON)\npublic class {ResourceName}Resource {\n    \u002F\u002F @Inject constructor injection of port\n    \u002F\u002F Endpoints per --operations with @Transactional on writes\n}\n```\n\n### Step 5 — Generate\u002FUpdate ExceptionMapper\n\nCheck if `SimulatorExceptionMapper` (or similar) exists in `adapter\u002Finbound\u002Frest\u002F`:\n- If exists: add missing switch cases for domain exceptions\n- If not exists: generate new `@Provider ExceptionMapper\u003CRuntimeException>` following §4 pattern\n\n### Step 6 — Generate Tests\n\n```java\n\u002F\u002F src\u002Ftest\u002Fjava\u002F{package}\u002Fadapter\u002Finbound\u002Frest\u002F{ResourceName}ResourceTest.java\n@QuarkusTest\nclass {ResourceName}ResourceTest {\n    @InjectMock {ResourceName}ManagementPort port;\n\n    \u002F\u002F RestAssured-based tests per endpoint per scenario\n}\n```\n\n## Output Checklist\n\n- [ ] DTOs are records with `@RegisterForReflection`\n- [ ] Validation annotations on request fields (`@NotBlank`, `@NotNull`, `@Size`)\n- [ ] `@Transactional` on POST\u002FPUT\u002FDELETE endpoints\n- [ ] Constructor injection with `@Inject` (not field injection)\n- [ ] HTTP status codes correct: 200 GET, 201 POST with `Response.status(201)`, 204 DELETE\n- [ ] Switch expression in ExceptionMapper covers all domain exceptions + default\n- [ ] Tests use `@QuarkusTest` + RestAssured (not `@SpringBootTest`)\n- [ ] Tests cover: success path, not found (404), conflict (409), validation failure (400)\n\n## Knowledge Pack References\n\n- `knowledge\u002Fstack-patterns\u002Fquarkus\u002Findex.md` — Quarkus patterns (§4 RESTEasy, exception mapper)\n- `knowledge\u002Flayer-templates.md` — Layer template patterns\n- `knowledge\u002Farchitecture-hexagonal.md` — Hexagonal architecture\n","# Skill: Quarkus Resource Generator\n\n## Purpose\n\nGenerates a complete Quarkus inbound adapter (resource) layer following the hexagonal architecture pattern. Produces:\n\n1. JAX-RS `@Path` resource class (RESTEasy Reactive)\n2. Request\u002FResponse DTOs (`record` types with `@RegisterForReflection`)\n3. Static mapper class\n4. `ExceptionMapper\u003CRuntimeException>` (or extends existing)\n5. `@QuarkusTest` unit tests\n\n## Triggers\n\n- `\u002Fquarkus-resource \u003CResourceName> [--operations GET,POST,DELETE]` — generate full resource for a resource\n- `\u002Fquarkus-resource \u003CResourceName> --crud` — generate standard CRUD\n- `\u002Fquarkus-resource \u003CResourceName> --read-only` — generate GET endpoints only\n\n## Parameters\n\n| Parameter | Required | Description |\n|-----------|----------|-------------|\n| `ResourceName` | Yes | PascalCase resource name (e.g., `Merchant`, `Transaction`) |\n| `--operations` | No | Comma-separated HTTP methods (default: all) |\n| `--crud` | No | GET list, GET by id, POST, PUT, DELETE |\n| `--read-only` | No | GET list and GET by id only |\n| `--path` | No | Override API path (default: `\u002Fapi\u002Fv1\u002F{resource-name-plural}`) |\n| `--port` | No | Port interface name (default: `{ResourceName}ManagementPort`) |\n\n## Workflow\n\n### Step 1 — Read Project Context\n\nRead existing conventions:\n- `knowledge\u002Fstack-patterns\u002Fquarkus\u002Findex.md` — Quarkus patterns\n- `knowledge\u002Flayer-templates.md` — Layer template patterns\n- `knowledge\u002Farchitecture-hexagonal.md` — Hexagonal architecture conventions\n- Existing resources in `src\u002Fmain\u002Fjava\u002F**\u002Fadapter\u002Finbound\u002F` for naming conventions\n\n### Step 2 — Generate DTOs\n\n```java\n\u002F\u002F src\u002Fmain\u002Fjava\u002F{package}\u002Fadapter\u002Finbound\u002Frest\u002F{ResourceName}Request.java\n@RegisterForReflection\npublic record {ResourceName}Request(\n    @NotBlank @Size(max = N) String field1,\n    @NotNull Type field2\n) {}\n\n\u002F\u002F src\u002Fmain\u002Fjava\u002F{package}\u002Fadapter\u002Finbound\u002Frest\u002F{ResourceName}Response.java\n@RegisterForReflection\npublic record {ResourceName}Response(Long id, String field1, Type field2) {}\n```\n\n### Step 3 — Generate Mapper\n\n```java\n\u002F\u002F src\u002Fmain\u002Fjava\u002F{package}\u002Fadapter\u002Finbound\u002Frest\u002F{ResourceName}DtoMapper.java\npublic final class {ResourceName}DtoMapper {\n    private {ResourceName}DtoMapper() {}\n\n    public static {DomainType} toDomain({ResourceName}Request request) { ... }\n    public static {ResourceName}Response toResponse({DomainType} domain) { ... }\n}\n```\n\n### Step 4 — Generate Resource\n\nFollow `knowledge\u002Fstack-patterns\u002Fquarkus\u002Findex.md` §4 RESTEasy Reactive pattern:\n\n```java\n\u002F\u002F src\u002Fmain\u002Fjava\u002F{package}\u002Fadapter\u002Finbound\u002Frest\u002F{ResourceName}Resource.java\n@Path(\"{path}\")\n@Produces(MediaType.APPLICATION_JSON)\n@Consumes(MediaType.APPLICATION_JSON)\npublic class {ResourceName}Resource {\n    \u002F\u002F @Inject constructor injection of port\n    \u002F\u002F Endpoints per --operations with @Transactional on writes\n}\n```\n\n### Step 5 — Generate\u002FUpdate ExceptionMapper\n\nCheck if `SimulatorExceptionMapper` (or similar) exists in `adapter\u002Finbound\u002Frest\u002F`:\n- If exists: add missing switch cases for domain exceptions\n- If not exists: generate new `@Provider ExceptionMapper\u003CRuntimeException>` following §4 pattern\n\n### Step 6 — Generate Tests\n\n```java\n\u002F\u002F src\u002Ftest\u002Fjava\u002F{package}\u002Fadapter\u002Finbound\u002Frest\u002F{ResourceName}ResourceTest.java\n@QuarkusTest\nclass {ResourceName}ResourceTest {\n    @InjectMock {ResourceName}ManagementPort port;\n\n    \u002F\u002F RestAssured-based tests per endpoint per scenario\n}\n```\n\n## Output Checklist\n\n- [ ] DTOs are records with `@RegisterForReflection`\n- [ ] Validation annotations on request fields (`@NotBlank`, `@NotNull`, `@Size`)\n- [ ] `@Transactional` on POST\u002FPUT\u002FDELETE endpoints\n- [ ] Constructor injection with `@Inject` (not field injection)\n- [ ] HTTP status codes correct: 200 GET, 201 POST with `Response.status(201)`, 204 DELETE\n- [ ] Switch expression in ExceptionMapper covers all domain exceptions + default\n- [ ] Tests use `@QuarkusTest` + RestAssured (not `@SpringBootTest`)\n- [ ] Tests cover: success path, not found (404), conflict (409), validation failure (400)\n\n## Knowledge Pack References\n\n- `knowledge\u002Fstack-patterns\u002Fquarkus\u002Findex.md` — Quarkus patterns (§4 RESTEasy, exception mapper)\n- `knowledge\u002Flayer-templates.md` — Layer template patterns\n- `knowledge\u002Farchitecture-hexagonal.md` — Hexagonal architecture\n",{"name":5,"model":24,"visibility":25,"description":7,"allowed-tools":26,"context-budget":32,"requires-capabilities":33},"sonnet","public",[27,28,29,30,31],"Read","Write","Edit","Bash","Skill","light",[34],"web.quarkus.framework","main","952a630c6f38d193a349d86fa18db1de8843e837","src\u002Ftest\u002Fresources\u002Fgolden\u002Fjava-spring\u002F.claude\u002Fskills\u002Fquarkus-resource",1,"https:\u002F\u002Fgithub.com\u002Freview-bench\u002Federcnj_ia-dev-environment","https:\u002F\u002Fgithub.com\u002Freview-bench","https:\u002F\u002Freview-bench.ai","An open benchmark for AI code review.","2026-10-27 06:56:37",{"source":8,"skillName":5,"commands":45,"prompt":55,"zipAvailable":56},[46,49,52],{"tool":47,"command":48},"npx","npx skills add review-bench\u002Federcnj_ia-dev-environment --skill quarkus-resource",{"tool":50,"command":51},"bunx","bunx skills add review-bench\u002Federcnj_ia-dev-environment --skill quarkus-resource",{"tool":53,"command":54},"pnpm","pnpm dlx skills add review-bench\u002Federcnj_ia-dev-environment --skill quarkus-resource","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Freview-bench\u002Federcnj_ia-dev-environment\u002Fblob\u002Fmain\u002Fsrc\u002Ftest\u002Fresources\u002Fgolden\u002Fjava-spring\u002F.claude\u002Fskills\u002Fquarkus-resource\u002FSKILL.md",true,[],[59,66,73,80,87,94],{"skillNo":60,"name":61,"nameZh":6,"description":62,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":63,"categories":64,"keywords":65,"publishedAt":19},"01M757M8J48TQ1Y3X25GSJBXAS","x-parallel-eval","Detects and classifies file-collision risks between work units (tasks, stories, or epic phases) before parallel execution. Reads ## File Footprint blocks produced by x-task-plan \u002F x-story-plan, applies the parallelism-heuristics knowledge pack (hard \u002F regen \u002F soft categories + hotspot overrides), and emits a collision matrix + serialization recommendation in Markdown (default) or JSON.","https:\u002F\u002Fgithub.com\u002Freview-bench\u002Federcnj_ia-dev-environment\u002Fblob\u002Fmain\u002Fsrc\u002Ftest\u002Fresources\u002Fgolden\u002Fx-parallel-eval\u002FSKILL.md",[],[],{"skillNo":67,"name":68,"nameZh":6,"description":69,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":70,"categories":71,"keywords":72,"publishedAt":19},"01M757M57XMR9546S69466HDWT","parallelism-heuristics","Canonical catalog of file-collision heuristics for parallel task, story, and epic execution. Defines the File Footprint block format, the three Conflict Categories (hard \u002F regen \u002F soft), a hotspot list of high-contention paths, and the degrade-with-warning policy. Consumed by x-task-plan, x-story-plan, x-epic-map, x-parallel-eval, and x-dev-*-implement.","https:\u002F\u002Fgithub.com\u002Freview-bench\u002Federcnj_ia-dev-environment\u002Fblob\u002Fmain\u002Fsrc\u002Ftest\u002Fresources\u002Fgolden\u002Fparallelism-heuristics\u002FSKILL.md",[],[],{"skillNo":74,"name":75,"nameZh":6,"description":76,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":77,"categories":78,"keywords":79,"publishedAt":19},"01M757M11SZ8P1VCQABT08QVYA","x-watch-pr-ci","Polls a PR's CI checks and Copilot review status, blocking until checks complete or timeout. Returns one of 8 stable exit codes (SUCCESS=0, CI_PENDING_PROCEED=10, CI_FAILED=20, TIMEOUT=30, PR_ALREADY_MERGED=40, NO_CI_CONFIGURED=50, PR_CLOSED=60, PR_NOT_FOUND=70). Writes a versioned state-file for session resume.","https:\u002F\u002Fgithub.com\u002Freview-bench\u002Federcnj_ia-dev-environment\u002Fblob\u002Fmain\u002Fsrc\u002Ftest\u002Fresources\u002Fgolden\u002Fjava-spring\u002Fplatform-claude-code\u002F.claude\u002Fskills\u002Fx-watch-pr-ci\u002FSKILL.md",[],[],{"skillNo":81,"name":82,"nameZh":6,"description":83,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":84,"categories":85,"keywords":86,"publishedAt":19},"01M757KW53K8KFPGADFB4PH949","x-validate-docs","Documentation freshness gate: validates 6 dimensions (readme, api-specs, grpc-proto, adr, skill-docs, system-architecture) against code changes in a PR. Stack-aware — only validates targets declared\u002Fauto-detected from ProjectConfig.documentation.targets. Returns exit non-zero on staleness; produces structured report.","https:\u002F\u002Fgithub.com\u002Freview-bench\u002Federcnj_ia-dev-environment\u002Fblob\u002Fmain\u002Fsrc\u002Ftest\u002Fresources\u002Fgolden\u002Fjava-spring\u002Fplatform-claude-code\u002F.claude\u002Fskills\u002Fx-validate-docs\u002FSKILL.md",[],[],{"skillNo":88,"name":89,"nameZh":6,"description":90,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":91,"categories":92,"keywords":93,"publishedAt":19},"01M757KQZHSA10MKC0CR571D60","x-update-system-architecture","Incrementally updates docs\u002Farchitecture\u002Fsystem.md after an epic completes. Appends new entries to the Decision Log (§11) using x-internal-write-report --append (dedup by ## ID: marker) and surgically inserts component\u002Fintegration changes into sections 1-10 via Edit. Idempotent: re-running with the same epic produces a byte-identical system.md.","https:\u002F\u002Fgithub.com\u002Freview-bench\u002Federcnj_ia-dev-environment\u002Fblob\u002Fmain\u002Fsrc\u002Ftest\u002Fresources\u002Fgolden\u002Fjava-spring\u002Fplatform-claude-code\u002F.claude\u002Fskills\u002Fx-update-system-architecture\u002FSKILL.md",[],[],{"skillNo":95,"name":96,"nameZh":6,"description":97,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":98,"categories":99,"keywords":100,"publishedAt":19},"01M757KKBT5Q1SVF8DMJBVF46M","x-update-architecture","Incrementally updates the service architecture document with changes from architecture plans. Adds new components, integrations, flows, and ADR references without rewriting existing content. Use after implementation to keep architecture documentation current.","https:\u002F\u002Fgithub.com\u002Freview-bench\u002Federcnj_ia-dev-environment\u002Fblob\u002Fmain\u002Fsrc\u002Ftest\u002Fresources\u002Fgolden\u002Fjava-spring\u002Fplatform-claude-code\u002F.claude\u002Fskills\u002Fx-update-architecture\u002FSKILL.md",[],[]]