원클릭으로
add-service
Guided checklist for safely adding a new platform service to AIXCL, preserving all invariants
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Guided checklist for safely adding a new platform service to AIXCL, preserving all invariants
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Audit all versioned platform components and manage the update process following issue-first workflow
Comprehensive repository health check covering hygiene, security, and code quality
Guided workflow for cutting an AIXCL release, fronting the aixcl release command
Validates Issue-First workflow compliance before execution
| name | add-service |
| description | Guided checklist for safely adding a new platform service to AIXCL, preserving all invariants |
| compatibility | OpenCode, Claude Code |
| metadata | {"category":"platform","version":"1.1"} |
Add a new operational service to the AIXCL platform stack, walking through every required change in the correct order and flagging invariant risks.
When a new operational service (monitoring, logging, automation, UI) is being added to the stack.
Before starting, confirm:
docker compose -f services/docker-compose.yml config > /dev/null passes currentlyAdd a service entry to services/docker-compose.yml.
Required fields:
<service-name>:
image: <registry>/<image>:<pinned-version> # Always pin the version
container_name: <service-name>
network_mode: host # INVARIANT -- do not change
restart: unless-stopped # or on-failure for one-shot
volumes:
- <named-volume>:/data # use named volumes, not bind mounts
Rules:
network_mode: host is present (invariant)latest tags)scripts/runtime/Validate:
docker compose -f services/docker-compose.yml config > /dev/null
yamllint -c .yamllint.yml services/docker-compose.yml
Add the named volume to the volumes: section at the bottom of docker-compose.yml:
volumes:
<service-volume-name>:
Naming convention: aixcl-<service-name>-<purpose> (e.g., aixcl-grafana-data)
Edit config/profiles/<profile>.env to add the service name to the active
service list for each profile that should include it.
Profile decision guide:
bld.env: observability, server-side tools, no end-user UI
sys.env: everything in bld plus end-user UI (WebUI, admin tools)
Both: required infrastructure (secrets, databases)
Service added to the appropriate profile env file(s)
If adding to bld, also add to sys (sys is a superset of bld)
Edit docs/architecture/governance/02_profiles.md to list the new service
under the correct profile's "Includes" section.
For services that other services depend on, add a service contract:
docs/architecture/governance/service_contracts/runtime/<service>.mddocs/architecture/governance/service_contracts/bld/<service>.mdContract template:
# Service Contract: <service-name>
## Provides
- <what other services can depend on>
## Requires
- <what this service depends on>
## Invariants
- <things that must always be true about this service>
If the service needs custom startup logic:
scripts/runtime/<service>-entrypoint.shset -euo pipefail at the topvolumes:
- ../scripts/runtime/<service>-entrypoint.sh:/<service>-entrypoint.sh:ro
entrypoint: ["/<service>-entrypoint.sh"]
shellcheck --severity=warning --exclude=SC1091 scripts/runtime/<service>-entrypoint.sh passesbash -n scripts/runtime/<service>-entrypoint.sh passesdocker compose -f services/docker-compose.yml config > /dev/null
yamllint -c .yamllint.yml services/docker-compose.yml
bash scripts/checks/check-paths.sh
./scripts/checks/check-ai-elisions.sh --staged
git add services/docker-compose.yml config/profiles/ docs/ scripts/runtime/
git commit -m "feat: add <service-name> service
- Add compose service definition with host networking
- Register in <profile> profile
- Add entrypoint script
- Update profile documentation
Fixes #<issue-number>"
PR checklist:
Add <service-name> service (#<N>) (no colons)Feature + component:infrastructure (+ profile label if applicable)You MUST NOT:
latest image tagsnetwork_mode: bridge or custom Docker networks