Standards for authoring SDD plugin agents — frontmatter, self-containment, skill references, and no-user-interaction rules.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Scaffolds Node.js/TypeScript backend components with CMDO architecture, driven by component settings.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
설치 방법 보기설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.
Creates a Node.js/TypeScript backend component following the CMDO (Config, Model, DAL, Operator) architecture. Scaffolding is driven by component settings defined in sdd/sdd-settings.yaml. Delegate to the techpack-settings skill for the authoritative server settings schema — it accepts a component type (server) and returns the typed settings object including server_type, databases, provides_contracts, and framework defaults.
Use when creating server components. Supports multiple named instances (e.g., main-server, background-worker).
Server components are scaffolded based on their settings in sdd/sdd-settings.yaml. Delegate to the techpack-settings skill for the complete server settings schema and defaults — it returns server_type (express/fastify/nestjs), databases (array of referenced database component names), provides_contracts (array of contract component names), and framework-specific configuration.
// Pseudocode for settings-driven scaffolding
const scaffoldServer = async (component: ServerComponent): Promise<void> => {
// Always scaffold: core structure, operator lifecycle, model layer
await scaffoldCore(component);
// Conditional: HTTP routes (only if server provides contracts)
if (component.settings.provides_contracts.length > 0) {
await scaffoldRoutes(component, component.settings.provides_contracts);
}
// Conditional: API clients (only if server consumes contracts)
if (component.settings.consumes_contracts.length > 0) {
await scaffoldApiClients(component, component.settings.consumes_contracts);
}
// Conditional: DAL layer per database
for (const db of component.settings.databases) {
await scaffoldDAL(component, db);
}
};
components/servers/<name>/
├── package.json
├── tsconfig.json
├── .gitignore
└── src/
├── index.ts # Entry point
├── config/
│ ├── index.ts
│ └── load_config.ts # Config loading
├── operator/
│ ├── index.ts
│ ├── create_operator.ts # Operator factory
│ ├── lifecycle_probes.ts # Health/ready endpoints (port 9090)
│ ├── logger.ts # Structured logging
│ ├── metrics.ts # Metrics collection
│ └── state_machine.ts # Lifecycle state machine
├── controller/
│ ├── index.ts
│ └── create_controller.ts # Controller factory
└── model/
├── index.ts
├── dependencies.ts # Dependency injection interface
├── definitions/
│ └── index.ts # Empty barrel
└── use-cases/
└── index.ts # Empty barrel
server_type includes api)└── src/
└── operator/
└── create_http_server.ts # HTTP server setup (port 3000)
provides_contracts is non-empty)└── src/
└── controller/
└── http_handlers/
└── index.ts # Route handlers for contracts
databases is non-empty)For each database in databases, creates:
└── src/
└── dal/
└── <database-name>/
└── index.ts # DAL functions for this database
└── operator/
└── create_database_<name>.ts # Database connection setup
consumes_contracts is non-empty)For each contract in consumes_contracts, generates API client from contract spec.
| Layer | Purpose | Location |
|---|---|---|
| Config | Configuration loading and validation | src/config/ |
| Model | Business logic, definitions, use cases | src/model/ |
| DAL | Data Access Layer, database operations | src/dal/ |
| Operator | Application lifecycle, servers, telemetry | src/operator/ |
Plus Controller for HTTP request handling.
Servers live at components/servers/<name>/:
| Component Name | Directory |
|---|---|
main-server | components/servers/main-server/ |
background-worker | components/servers/background-worker/ |
| Variable | Description |
|---|---|
{{PROJECT_NAME}} | Project name |
{{PROJECT_DESCRIPTION}} | Project description |
{{PRIMARY_DOMAIN}} | Primary business domain |
{{SERVER_NAME}} | Server component name |
All templates are colocated in this skill's templates/ directory:
skills/components/backend/backend-scaffolding/templates/
├── package.json
├── tsconfig.json
├── .gitignore
└── src/
├── index.ts
├── config/
├── operator/
├── controller/
├── model/
└── dal/
When scaffolding a server component, the config section is generated based on settings.
Settings:
- name: main-server
type: server
settings:
server_type: api
databases: [primary-db]
provides_contracts: [public-api]
Generated config (components/config/envs/default/config.yaml):
main-server:
port: 3000
probesPort: 9090
logLevel: info
databases:
primary-db:
host: localhost
port: 5432
name: myapp
ssl: false
Settings:
- name: background-worker
type: server
settings:
server_type: worker
databases: []
provides_contracts: []
consumes_contracts: [public-api]
Generated config:
background-worker:
probesPort: 9090
logLevel: info
queue:
url: amqp://localhost:5672
apis:
public-api:
base_url: http://main-server:3000
To scaffold a backend component, build a spec with context flags derived from settings and invoke the engine:
<plugin-root>/fullstack-typescript/system/system-run.sh scaffolding apply --spec spec.json
| Variable | Source |
|---|---|
PROJECT_NAME | From sdd-settings.yaml project name |
SERVER_NAME | Component name |
CONTRACT_PACKAGE | @<project-name>/<contract-name> (from depends_on) |
| Flag | Derived From |
|---|---|
has_databases | settings.databases.length > 0 |
has_provides_contracts | settings.provides_contracts.length > 0 |
has_consumes_contracts | settings.consumes_contracts.length > 0 |
{
"target_dir": "<project-root>",
"base_dir": "<plugin-root>/skills",
"variables": {
"PROJECT_NAME": "<project-name>",
"SERVER_NAME": "<server-name>",
"CONTRACT_PACKAGE": "@<project-name>/<contract-name>"
},
"context": {
"has_databases": true,
"has_provides_contracts": true,
"has_consumes_contracts": false
},
"operations": [
{
"type": "template_dir",
"source": "components/backend/backend-scaffolding/templates",
"dest": "components/servers/<server-name>"
},
{
"type": "mkdir",
"path": "components/servers/<server-name>/src/dal",
"when": { "key": "has_databases", "equals": true }
},
{
"type": "mkdir",
"path": "components/servers/<server-name>/src/controller/http_handlers",
"when": { "key": "has_provides_contracts", "equals": true }
},
{
"type": "package_json_scripts",
"scripts": {
"<server-name>:dev": "npm run dev -w @<project-name>/<server-name>",
"<server-name>:build": "npm run build -w @<project-name>/<server-name>",
"<server-name>:start": "npm run start -w @<project-name>/<server-name>",
"<server-name>:test": "npm run test -w @<project-name>/<server-name>"
}
}
]
}
Schema: schemas/input.schema.json
Accepts component name, server type, and optional settings for databases, contracts, and Helm chart generation.
Schema: schemas/output.schema.json
Returns the scaffolding engine result: created files, directories, and scripts; skipped paths; errors; and a human-readable summary.
techpack-settings — Authoritative source for server component settings schema, defaults, and validation rules.backend-standards — Generated server code must follow these standards. Defines CMDO architecture with handler → orchestrator → repository layering, strict layer separation, and dependency injection.typescript-standards — Generated TypeScript files must follow these coding conventions. Defines strict typing, readonly patterns, branded types, and import standards.unit-testing — Generated test files must follow these patterns. Defines Vitest setup, mocking strategies, and isolation conventions for backend services.아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.
로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.
아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.
Standards for authoring SDD plugin agents — frontmatter, self-containment, skill references, and no-user-interaction rules.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
CMDO architecture standards for Node.js/TypeScript backends with strict layer separation.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Intent-to-command mappings for fullstack-typescript tech pack features.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Create change specification and implementation plan with dynamic phase generation. Supports feature, bugfix, refactor, and epic types.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Orchestrates the full change lifecycle — routes actions to phase-specific sub-files.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Scaffolds CI/CD pipeline definitions using GitHub Actions for build, test, lint, and deploy workflows.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.