agents-standards
Standards for authoring SDD plugin agents — frontmatter, self-containment, skill references, and no-user-interaction rules.
Scaffolds Helm charts for SDD components, driven by component settings.
Claude Code
$ npx -y skills add LiorCohen/sdd --skill helm-scaffolding --agent claude-code
Codex
$ npx skills add LiorCohen/sdd --skill helm-scaffolding -a codex -y
Cursor
$ npx skills add LiorCohen/sdd --skill helm-scaffolding -a cursor -y
Gemini CLI
$ npx skills add LiorCohen/sdd --skill helm-scaffolding -a gemini-cli -y
GitHub Copilot
$ npx skills add LiorCohen/sdd --skill helm-scaffolding -a github-copilot -y
OpenCode
$ npx skills add LiorCohen/sdd --skill helm-scaffolding -a opencode -y
Windsurf
$ npx skills add LiorCohen/sdd --skill helm-scaffolding -a windsurf -y
name: helm-scaffolding description: Scaffolds Helm charts for SDD components, driven by component settings. user-invocable: false
Scaffolds Helm charts for deploying SDD components to Kubernetes. Charts are generated based on component settings from `sdd/sdd-settings.yaml`.
Use the following skills for reference:
Use when creating Helm chart components. Creates Helm charts that integrate with the SDD config system.
Helm charts are scaffolded based on their settings in `sdd/sdd-settings.yaml`. Delegate to the `techpack-settings` skill for the complete helm settings schema and defaults — it returns `deploys` (server reference), `deploy_type`, `deploy_modes` (array of mode strings), `ingress` (boolean), and `assets` (static file configuration).
// Pseudocode for settings-driven template selection
const scaffoldHelmChart = async (helmComponent: HelmComponent): Promise<void> => {
const { settings } = helmComponent;
// Always include base templates
await copyTemplate('_helpers.tpl');
await copyTemplate('configmap.yaml');
if (settings.deploy_type === 'server') {
// Server-specific templates
await copyTemplate('servicemonitor.yaml'); // All servers get metrics
const deployModes = settings.deploy_modes ?? [serverSettings.server_type];
if (deployModes.length > 1) {
// Multiple modes = separate deployments per mode
if (deployModes.includes('api')) await copyTemplate('deployment-api.yaml');
if (deployModes.includes('worker')) await copyTemplate('deployment-worker.yaml');
if (deployModes.includes('cron')) await copyTemplate('cronjob.yaml');
} else if (deployModes[0] === 'cron') {
await copyTemplate('cronjob.yaml');
} else {
await copyTemplate('deployment.yaml');
}
// Service only if deploying api mode and server provides contracts
if (deployModes.includes('api') && serverSettings.provides_contracts.length > 0) {
await copyTemplate('service.yaml');
}
} else {
// Webapp templates
await copyTemplate('deployment.yaml');
await copyTemplate('service.yaml');
}
// Ingress from helm settings
if (settings.ingress) {
await copyTemplate('ingress.yaml');
}
};Helm charts live at `components/helm_charts/<name>/`:
| Component Name | Directory | |----------------|-----------| | `main-server-api` | `components/helm_charts/main-server-api/` | | `admin-dashboard` | `components/helm_charts/admin-dashboard/` | | `umbrella` | `components/helm_charts/umbrella/` |
components/helm_charts/<name>/
├── Chart.yaml # Chart metadata
├── values.yaml # Default values
└── templates/
├── _helpers.tpl # Template helpers (always)
├── configmap.yaml # Config mount (always)
├── servicemonitor.yaml # Metrics integration (always)
├── deployment.yaml # Single-mode deployment
├── deployment-api.yaml # Hybrid: API mode deployment
├── deployment-worker.yaml # Hybrid: Worker mode deployment
├── cronjob.yaml # Cron mode
├── service.yaml # When provides_contracts (conditional)
└── ingress.yaml # When ingress: true (conditional)components/helm_charts/<name>/
├── Chart.yaml
├── values.yaml
└── templates/
├── _helpers.tpl
├── deployment.yaml # nginx with config injection
├── service.yaml
├── configmap.yaml # App config + nginx config
└── ingress.yaml # When ingress: true (conditional)components/helm_charts/umbrella/ ├── Chart.yaml # Lists all charts as dependencies └── values.yaml # Enable/disable individual charts
| Variable | Description | |----------|-------------| | `{{CHART_NAME}}` | Helm chart name | | `{{CHART_DESCRIPTION}}` | Helm chart description | | `{{DEPLOYS_COMPONENT}}` | Name of component this chart deploys | | `{{APP_VERSION}}` | Application version | | `{{PROJECT_NAME}}` | Project name | | `{{IS_HYBRID}}` | True if deploying multiple modes | | `{{DEPLOY_MODES}}` | List of modes being deployed | | `{{HAS_SERVICE}}` | True if server provides contracts | | `{{HAS_INGRESS}}` | True if ingress enabled |
Templates are organized by deployment target:
skills/components/helm/helm-scaffolding/
├── templates/ # Legacy (single deployment)
├── templates-server/ # Server charts
│ ├── Chart.yaml
│ ├── values.yaml
│ └── templates/
│ ├── _helpers.tpl
│ ├── deployment.yaml
│ ├── deployment-api.yaml
│ ├── deployment-worker.yaml
│ ├── cronjob.yaml
│ ├── service.yaml
│ ├── ingress.yaml
│ ├── servicemonitor.yaml
│ └── configmap.yaml
├── templates-webapp/ # Webapp charts
│ ├── Chart.yaml
│ ├── values.yaml
│ └── templates/
│ ├── _helpers.tpl
│ ├── deployment.yaml
│ ├── service.yaml
│ ├── ingress.yaml
│ └── configmap.yaml
└── templates-umbrella/ # Umbrella chart
├── Chart.yaml
└── values.yamlConfig is mounted as a file at `/app/config/config.yaml`. The application reads config using the `SDD_CONFIG_PATH` environment variable:
# templates/configmap.yaml
data:
config.yaml: |
{{- toYaml .Values.config | nindent 4 }}The ConfigMap is mounted in deployments and `SDD_CONFIG_PATH` is set automatically.
Deployment workflow:
# Generate merged config <plugin-root>/fullstack-typescript/system/system-run.sh config generate --env produc
Structure for AI-assisted development AI coding assistants are powerful but chaotic. You prompt, you get code, but then what?
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…
Create a commit following repository guidelines with proper versioning and changelog updates.
Two-step self-review at every task lifecycle phase. Step 1 (this skill) runs in-context to gather session signals — files read vs…
D2 diagramming language reference for architecture diagrams, sequence diagrams, grid layouts, SQL tables, and class diagrams.…
Writes and maintains user-facing documentation for the SDD plugin. Proactively detects when docs are out of sync with plugin…
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.