ワンクリックで
config-scaffolding
Scaffolds the config component for centralized configuration management, driven by component settings.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Scaffolds the config component for centralized configuration management, driven by component settings.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
Orchestrates SDD project initialization — version detection, environment verification, scaffolding, and git setup.
Manage project settings in sdd/sdd-settings.yaml including component settings that drive scaffolding.
Single gateway for all core↔tech-pack interactions. Reads manifests, resolves paths, loads skills/agents, routes commands.
Manage tasks and plans using the .tasks/ directory.
Standards for authoring SDD plugin agents — frontmatter, self-containment, skill references, and no-user-interaction rules.
Standards for authoring SDD plugin commands — frontmatter, user interaction, skill/agent invocation, CLI integration, and output formatting.
| name | config-scaffolding |
| description | Scaffolds the config component for centralized configuration management, driven by component settings. |
| user-invocable | false |
Scaffolds the mandatory config component for centralized configuration management. Config sections are generated based on component settings from sdd/sdd-settings.yaml. Delegate to the techpack-settings skill for the authoritative config schema — it accepts a component type (config) and returns the settings object including referenced components and environment variable mappings.
Use during project initialization to create the config component. The config component is mandatory — every SDD project has exactly one.
components/config/
├── package.json # Minimal package for workspace imports
├── tsconfig.json # TypeScript config for type exports
├── envs/
│ ├── default/
│ │ └── config.yaml # Base config (sections per component)
│ └── local/
│ └── config.yaml # Local overrides (empty)
├── schemas/
│ └── config.schema.json # Main schema (minimal)
└── types/
└── index.ts # Re-exports config types
Config sections are generated based on component settings in sdd/sdd-settings.yaml:
API Server with database:
# Settings:
- name: main-server
type: server
settings:
server_type: api
databases: [primary-db]
provides_contracts: [public-api]
# Generated config:
main-server:
port: 3000 # Business API port (has provides_contracts)
probesPort: 9090 # Health/metrics port (always)
logLevel: info # Logging level (always)
databases:
primary-db: # Section per database
host: localhost
port: 5432
name: myapp
ssl: false
Worker without database:
# Settings:
- name: background-worker
type: server
settings:
server_type: worker
databases: []
consumes_contracts: [public-api]
# Generated config:
background-worker:
probesPort: 9090 # Health/metrics port (always)
logLevel: info # Logging level (always)
queue: # Queue config for worker
url: amqp://localhost:5672
apis:
public-api: # Section per consumed contract
base_url: http://main-server:3000
Hybrid server (api + worker):
# Settings:
- name: main-server
type: server
settings:
server_type: hybrid
modes: [api, worker]
databases: [primary-db]
provides_contracts: [public-api]
# Generated config:
main-server:
port: 3000 # Business API port (has provides_contracts)
probesPort: 9090 # Health/metrics port (always)
logLevel: info # Logging level (always)
databases:
primary-db:
host: localhost
port: 5432
name: myapp
ssl: false
queue: # Queue config (has worker mode)
url: amqp://localhost:5672
# Settings:
- name: admin-dashboard
type: webapp
settings:
contracts: [public-api]
# Generated config:
admin-dashboard:
apis:
public-api: # Section per consumed contract
base_url: http://localhost:3000
| Setting | Config Impact |
|---|---|
server_type: api | Adds port: 3000 (business API) |
server_type: worker | Adds queue: { url: ... } |
server_type: cron | Adds schedule: {} placeholder |
provides_contracts: [...] | Adds port: 3000 (business API) |
consumes_contracts: [...] | Adds apis: { <name>: { base_url: ... } } per contract |
databases: [...] | Adds databases: { <name>: { host, port, name, ssl } } per database |
contracts: [...] (webapp) | Adds apis: { <name>: { base_url: ... } } per contract |
probesPort: 9090 - Health check and metrics endpointlogLevel: info - Logging levelThe config component is a minimal TypeScript project with no runtime code. It exists so:
@{project}/config/types/sdd I want to generate config) generates merged configs for each environmentEach environment has its own directory under envs/:
| Directory | Purpose |
|---|---|
envs/default/ | Base configuration - all environments inherit from this |
envs/local/ | Local development overrides (always present) |
envs/{env}/ | Other environments added as needed (staging, production, etc.) |
Merge order: envs/default/ → envs/{env}/
| Variable | Description |
|---|---|
{{PROJECT_NAME}} | Project name (lowercase, hyphens) |
All templates are colocated in this skill's templates/ directory:
skills/components/config/config-scaffolding/templates/
├── package.json
├── tsconfig.json
├── envs/
│ ├── default/
│ │ └── config.yaml
│ └── local/
│ └── config.yaml
├── schemas/
│ └── config.schema.json
└── types/
└── index.ts
When settings change (via /sdd with natural language about settings), the config component is automatically synced:
The config component uses the engine for base template structure, but config section generation is dynamic (computed from component settings by the skill).
<plugin-root>/fullstack-typescript/system/system-run.sh scaffolding apply --spec spec.json
{
"target_dir": "<project-root>",
"base_dir": "<plugin-root>/skills",
"variables": { "PROJECT_NAME": "<project-name>" },
"operations": [
{
"type": "template_dir",
"source": "components/config/config-scaffolding/templates",
"dest": "components/config"
}
]
}
For each component, the skill computes the YAML config section content and writes it via write_file with if_exists: "skip" (additive only — never clobber existing sections). The skill builds the YAML content itself, then passes it to the engine.
{
"type": "write_file",
"path": "components/config/envs/default/config.yaml",
"content": "<computed-yaml-content>",
"if_exists": "overwrite"
}
Split: Use the engine for the component directory structure. Compute config sections yourself (from component settings) and write them via write_file.
Schema: schemas/input.schema.json
Accepts the full list of project components whose settings drive dynamic config section generation.
Schema: schemas/output.schema.json
Returns the scaffolding engine result: created files, directories, and scripts; skipped paths; errors; and a human-readable summary.
config-standards — Generated config files must follow these standards. Defines naming conventions, validation patterns, environment-specific overrides, and TypeScript type generation rules.