agentleFS
TheDecipheristTheDecipherist/claude-code-mastery-project-starter-kit/.claude/skills/api-conventions/SKILL.md

api-conventions

Skill337 starsChanged 5 months agoMITView on GitHub

Service structure conventions for this codebase: routing, layering, and where code lives. Use whenever writing or modifying a service's server entry, route definitions, handlers, or adapters. Loads inline so it shapes structure as code is written.

11 other projects use a version of this.

Adopted by

Most recently taken up by

The file

We split this skill into the rules it gives an agent

3 rules. 0 are common, 0 are distinctive, and 3 are very specific to this project.

  • 0

    Common

    Most of the 7 edited versions we read keep these.

  • 0

    Distinctive

    This author's own choices. Worth a look.

  • 3

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Every service is three layers, one direction: server.ts → handlers/ → adapters/.

    line 8
  2. Very specific:

    All routes live under /api/v1/.

    line 12
  3. Very specific:

    No business logic in server.ts or in a route definition.

    line 17

“Common” is measured: kept by at least 6 in 10 of the 7 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Service Architecture Conventions

Every service is three layers, one direction: server.ts → handlers/ → adapters/. Apply while writing, not after.

Versioning

  • All routes live under /api/v1/. New endpoints are versioned from the first line. No unversioned routes "for now."

server.ts is thin

  • server.ts defines routes and delegates. Nothing else.
  • No business logic in server.ts or in a route definition. A route wires the request to a handler and returns its result.

handlers/ hold the logic

  • Business logic lives in handlers/, one file per domain.
  • A handler owns its domain's rules and orchestration. It calls adapters for anything external. It does not reach outside the process itself.

adapters/ wrap everything external

  • Database, external APIs, queues, anything outside the process goes through an adapter in adapters/. Handlers never touch them directly.
  • The database adapter uses StrictDB when it's installed, otherwise the native driver. Never Mongoose. A handler that imports a driver or calls an external API inline is wrong, that belongs in an adapter. The data adapter is the one place driver code lives, which is also where the mongodb-rules apply.

Service (package) separation

  • A service owns its domain and is reached through its interface. A package does not reach into another package's internals or its data. Call the owning service.
  • Code two services both need is hoisted to a shared layer, never imported sideways from a sibling.

The test: routes in server.ts read request-in, handler-call, response-out. Logic sits in handlers/. Anything that leaves the process goes through adapters/, and the data adapter uses StrictDB if installed, the native driver otherwise.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.