agentsclimarketplace

Coapi developer

Skill Ahoo-Wang/skills/sources/CoApi/skills/coapi-developer

A central aggregation repository for Agent Skills from Ahoo-Wang's open source projects.

Install
npx -y skills add Ahoo-Wang/skills --skill coapi-developer

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 3 stars3 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Help developers use and maintain CoApi, a Spring HTTP Interface client auto-configuration library for typed @HttpExchange proxies backed by reactive WebClient or synchronous RestClient. Use this skill when the user mentions CoApi, @CoApi, @EnableCoApi, @LoadBalanced, @HttpExchange, Spring HTTP Interface clients, Spring Boot auto-configuration for HTTP clients, reactive vs sync client mode, Spring Cloud LoadBalancer integration, or repository classes such as CoApiDefinition, CoApiFactoryBean, AutoCoApiRegistrar, EnableCoApiRegistrar, ClientMode, WebClientFactoryBean, RestClientFactoryBean, ReactiveHttpExchangeAdapterFactory, SyncHttpExchangeAdapterFactory, or properties such as coapi.mode, coapi.base-packages, and coapi.clients.

SKILL.md

3.7 KB, as published. Nobody here has run it

CoApi Developer Skill

Use this skill to help with CoApi (me.ahoo.coapi), which turns Spring @HttpExchange interfaces into Spring beans with minimal setup. CoApi is Kotlin-first, supports Spring Boot 4.x / Spring Framework 7.x in the current codebase, and can create either reactive WebClient or synchronous RestClient proxies.

How To Work

  1. Identify the request type, then load only the needed reference file:
  2. Prefer concise, working Kotlin snippets unless the user asks for Java.
  3. Recommend the simplest CoApi-supported approach first, then name the tradeoff when another approach is valid.
  4. If the request is outside CoApi's purpose, say so directly and route the user to the Spring tool that owns it.

Essential Facts

  • Dependency: implementation("me.ahoo.coapi:coapi-spring-boot-starter").
  • Main annotations:
    • @CoApi(baseUrl = "...", serviceId = "...", name = "...") marks an interface as a CoApi client.
    • @LoadBalanced explicitly enables load-balanced client wiring.
    • @EnableCoApi(clients = [...]) explicitly registers client interfaces.
  • Client mode: coapi.mode supports AUTO, REACTIVE, and SYNC.
  • Base URL resolution has two layers: @CoApi(baseUrl) wins over serviceId; serviceId/lb:// targets are normalized to http://... with loadBalanced=true; coapi.clients.<name>.base-url can override the parsed definition at HTTP client factory time.
  • Load balancing requires spring-cloud-starter-loadbalancer plus the matching reactive filter or sync interceptor when explicitly configured.
  • Prefer me.ahoo.test.asserts.assert for value assertions. For ApplicationContextRunner bean assertions, mirror existing tests with AssertionsForInterfaceTypes.assertThat(context).

CoApi Boundaries

CoApi is for declarative request-response HTTP clients built from typed Spring interfaces. It does not own WebSocket or SSE clients, resilience policies, arbitrary one-off HTTP calls, or non-Spring runtime wiring. For those concerns, use Spring WebClient, RestClient, WebSocketClient, filters, interceptors, or a resilience library such as Resilience4j.

Minimal Client Pattern

@CoApi(baseUrl = "\${github.url}")
interface GitHubApiClient {
    @GetExchange("repos/{owner}/{repo}/issues")
    fun getIssue(@PathVariable owner: String, @PathVariable repo: String): Flux<Issue>
}
github:
  url: https://api.github.com
coapi:
  mode: AUTO

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.