paralleldrive/aidd/aidd-service

Claude Code and agent skill by paralleldrive/aidd

Trust tier 2
  • community
Source check pending

Checking that the SKILL.md file is still in the repository.

Enforces asynchronous data service authoring best practices. Use when creating front-end or back-end services, service interfaces, Observe patterns, AsyncDataService, or when the user asks about service layer, data flow, unidirectional UI, or action/observable design.

Install

npx vskill@latest install paralleldrive/aidd/aidd-service

SKILL.md

Service authoring

Asynchronous data services. Live in the services/ layer per structure. Adhere to namespace for type and function organization.

Data = readonly JSON values or Blobs.


Front-end vs back-end services

sudolang
FrontEndService {
allowed: ["Observe<Data>", "other services (sub-Services)", "void-returning action functions"]
notAllowed: ["Promise or AsyncGenerator return"]
}
BackEndService {
typicallyReturns: "Promise<Data> | AsyncGenerator<Data>"
notCalledFrom: "UI"
calledBy: "front-end services"
}
Constraints {
UI components: unidirectional path — data down via void actions, data up via Observe
}

Back-end services — usually stateless. Functions typically return Promise<Data> or AsyncGenerator<Data>. Not called directly from UI; front-end services call them.


Front-end service constraints

sudolang
ServiceInterfaceForUI {
mayContain: [
"Observe<Data> — observable properties or factories",
"Sub-Services — nested service interfaces",
"Action functions — zero or more Data arguments, return void only",
"Factory functions — create observables or sub-Services"
]
observablesMayObserve: ["Data", "Service interfaces only"]
compileTimeCheck: "Assert<AsyncDataService.IsValid<ServiceInterface>>"
}

Benefits

  • Unidirectional flow — data down via actions, data up via Observe
  • Async isolation — view and service decoupled
  • Inspectability — action/observable data serializable
  • Portability — implementation swappable across process boundaries
  • Lazy Loading - can use AsyncDataService.createLazy to wrap with lazy load on first actual usage.

Folder structure

sudolang
ServicePaths {
"services/<name>-service/<name>-service.ts" = "Service interface only"
"services/<name>-service/<function-name>.ts" = "One file per function; re-export from public"
"services/<name>-service/<implementation>-<name>-service.ts" = "Implementation factory"
"services/<name>-service/<implementation>-<name>-service/" = "Implementation folder if multi-file"
}
Constraints {
Each function lives in its own file — not a single -service-functions.ts
Interface file: types and optionally JSON schemas only; no implementation-specific code
Implementation: factory function or static plain object only; no classes
Namespace: export * as ServiceName from public.js or from functions/index.js
}

Per namespace, each function lives in its own file — not a single -service-functions.ts.

Interface file — types and optionally JSON schemas only. No implementation-specific code. Follow namespace for type re-exporting (single import surface for consumers).

Implementation — factory function or static plain object. Export only that. No classes — brittle this bindings, violate pure functional design, block recomposing higher-order services from functions.

Namespace — export * as ServiceName from './public.js'; public.ts re-exports create and helpers. Or export * as ServiceName from './functions/index.js' when using a functions module. Per namespace.


Execute

sudolang
fn whenCreatingOrModifyingService() {
Constraints {
Place in services/<name>-service/ per structure
Interface in <name>-service.ts — types only, extend Service, add Assert<AsyncDataService.IsValid<>>
Export namespace from public.js or functions/index.js
In public.ts re-export create and all public helpers
Implementation in <implementation>-<name>-service.ts or folder — factory or static instance only
Front-end (UI-called): actions return void only; observables observe Data or Service only
Back-end: functions return Promise<Data> or AsyncGenerator<Data>
}
}

Additional resources

  • observe — Observe pattern and helper functions

Security

  • Security scanPassed, 100 of 100Pattern checks on the skill's files.
  • Model reviewPassed

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

Popularity

Repository stars
383
Repository forks
33
Repository npm downloads, 7 days
945
7-day trend score
46

Stars and forks are for the whole GitHub repository, not this skill alone. Downloads are for the repository's npm package. Refreshed 28 Apr 2026, 6 months ago.

Works with

Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.

  • Claude Code
  • Cursor
  • GitHub Copilot
  • Windsurf
  • Codex
  • Gemini CLI
  • Cline
  • Amp
  • Roo Code
  • Goose
  • Continue
  • Kilo Code
  • Junie
  • Trae
  • OpenHands
  • Qwen Code
  • AI Agent
  • Tabnine Chat
  • Sourcegraph Cody
  • Amazon Q
  • Firebase Genkit
  • Sweep
  • Devin
  • Phind
  • Mentat
  • Claude Desktop
  • Aider
  • GPT Pilot
  • Plandex
  • bolt.new
  • v0
  • Replit Agent
  • Anse
  • TypingMind
  • BetterChatGPT
  • LibreChat
  • Warp AI
  • Pieces
  • Fig AI
Embed badge
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/paralleldrive/aidd/aidd-service/badge)](https://verified-skill.com/skills/paralleldrive/aidd/aidd-service)

Something wrong with this skill or its page? Tell us.