AGENT SKILL

smackerel-no-defaults

Enforce Smackerel's NO-DEFAULTS / fail-loud SST policy. Use when editing config, Docker Compose, deploy adapters, docs, instructions, skills, env handling, host bind addresses, or any runtime value that could be hidden by fallback syntax.

使用场景运维与部署
License 许可
MIT
最近更新
2026-11-07
Stars
★ 1
Forks
0

01 前言 Front Matter

name
smackerel-no-defaults
description
Enforce Smackerel's NO-DEFAULTS / fail-loud SST policy. Use when editing config, Docker Compose, deploy adapters, docs, instructions, skills, env handling, host bind addresses, or any runtime value that could be hidden by fallback syntax.

03 SKILL.md 正文

Smackerel NO-DEFAULTS Guard

Goal

Prevent silent runtime fallback config. Smackerel must fail loudly when required config is missing so agents and operators cannot accidentally ship hidden defaults.

This skill covers Smackerel's generic repo-owned configuration and deployment contracts. Final host configuration for a concrete self-hosted, cloud VM, or other deployment target belongs in an operator-private deploy-adapter overlay, not in this repo.

Use This Skill When

  • Editing config/smackerel.yaml, scripts/commands/config.sh, docker-compose.yml, deploy/compose.deploy.yml, or deploy adapter logic.
  • Changing docs, instructions, or skills that describe config, env vars, ports, host bind addresses, or deployment.
  • Reviewing any use of shell/Compose interpolation, os.getenv, process.env, or config helper defaults.
  • Touching HOST_BIND_ADDRESS, port mappings, env files, or Build-Once Deploy-Many config bundles.

Blocking Rules

  • No ${VAR:-default} or ${VAR-default} for SST-managed runtime values.
  • No language-level fallback for required config (os.getenv("KEY", "default"), process.env.KEY || "default", unwrap_or(...)).
  • No docs language that implies an implicit fallback (safe-by-default, loopback default, preserves loopback).
  • No generated config edits by hand.
  • No deploy adapter may rely on Compose to invent missing values.

Required Patterns

Surface Required Pattern
Compose / shell required value ${VAR:?clear error message}
Go required env os.Getenv("KEY") plus explicit empty-value error
Python required env os.environ["KEY"] or explicit empty-value error
TypeScript required env process.env.KEY plus explicit missing-value throw
Loopback bind Explicit HOST_BIND_ADDRESS=127.0.0.1 in generated/apply-time env, never a Compose fallback

HOST_BIND_ADDRESS Contract

The live deploy bind-address contract is:

ports:
  - "${HOST_BIND_ADDRESS:?HOST_BIND_ADDRESS must be set by deploy adapter}:${CORE_HOST_PORT}:${CORE_CONTAINER_PORT}"

The deploy adapter must write HOST_BIND_ADDRESS explicitly into app.env before Compose starts. If it cannot determine the bind address, it must fail before docker compose up. 127.0.0.1 is valid only as an explicit configured value.

Review Checklist

[ ] Touched files contain no hidden fallback for required runtime config.
[ ] Any mention of `${VAR:-default}` labels it as forbidden, not recommended.
[ ] `HOST_BIND_ADDRESS` docs say adapter-set explicit value + fail-loud Compose.
[ ] `deploy/compose.deploy.yml` and `internal/deploy/compose_contract_test.go` match.
[ ] Validation evidence uses repo-standard commands from `.github/copilot-instructions.md`.

Anti-Patterns

Anti-Pattern Why It Blocks Fix
${HOST_BIND_ADDRESS:-127.0.0.1} in live Compose Missing adapter config silently becomes loopback ${HOST_BIND_ADDRESS:?HOST_BIND_ADDRESS must be set by deploy adapter}
"loopback default" in docs Teaches agents to rely on fallback behavior "explicit loopback value"
os.getenv("SMACKEREL_AUTH_TOKEN", "") for required config Auth misconfig becomes empty string Required env read plus explicit empty check
Adapter omits HOST_BIND_ADDRESS because Compose has a fallback Adapter contract is incomplete Adapter writes the value or fails before Compose

04 同仓库更多 Skills

pkirsanov
pkirsanov/smackerel

smackerel-trace-capture

Wire Smackerel's concrete validate-plane stack into the framework trace-driven defect-discovery method. Use when running live-category tests (integration/e2e/e2e-ui/stress) against the ephemeral test stack; capturing SLO or trace evidence; hunting latency/error/perf bugs from spans; querying the test-stack Jaeger or Prometheus; or touching `.specify/runtime/observability`. Concrete smackerel endpoints + the exact `capture-slo.sh` command; do NOT duplicate `bubbles-observability-adapter` — this only adds the wiring.

测试与质量
★ 1
pkirsanov
pkirsanov/smackerel

bubbles-workflow-mode-resolution

Resolve a Bubbles workflow mode against `bubbles/workflows.yaml`, including template inheritance, status ceilings, gate wiring, and decision policy. Use when picking a mode for a request, when a guard reports a mode-related failure, or when extending workflows.yaml with a new mode or template. Covers natural-language intent routing and the workflow registry consistency rules.

Skill与智能体开发
★ 1
pkirsanov
pkirsanov/smackerel

bubbles-workflow-execution-loops

Run per-round synchronous workflow execution loops correctly. Use when orchestrating a multi-round workflow, dispatching specialist subagents, handling round-based remediation, or interpreting a workflow mode's execution policy. Covers authorized direct execution, dispatch-and-wait, batch-then-summarize prohibition, and mapped-mode execution.

Skill与智能体开发
★ 1
pkirsanov
pkirsanov/smackerel

bubbles-vscode-agent-constraints

Design agents that fit the VS Code Copilot Chat runtime instead of fighting it. Use when authoring or editing any `*.agent.md`; when adding `tools:`, `agents:`, `handoffs:`, `model:`, `user-invocable:`, or `disable-model-invocation:` frontmatter; when designing an orchestrator that dispatches specialists; when a design implies agent-calls-agent-calls-agent chaining; when a subagent dispatch silently no-ops or an agent cannot be selected in the dropdown; or when writing a governance rule about delegation that the runtime cannot actually enforce. Prevents multi-level-subagent designs, prose-only dispatch laws, and frontmatter/body contradictions.

视觉设计Skill与智能体开发
★ 1
pkirsanov
pkirsanov/smackerel

bubbles-upkeep-cadence

How to schedule, dispatch, and record recurring operational upkeep tasks (backup, restore-drill, BCDR-drill, patch-cycle, secret-rotation, flag-cleanup, compliance-sweep). Use when authoring or modifying `config/upkeep-calendar.yaml`, when investigating a missed task, when reading the upkeep ledger, or when adding a new task type.

★ 1
pkirsanov
pkirsanov/smackerel

bubbles-test-integrity

Enforce real, specification-driven test quality during any test work. Use when writing tests, implementing scope test plans, reviewing test coverage, or validating DoD test items. Triggers include writing tests, adding test coverage, implementing scope tests, reviewing test plans, marking test DoD items, and verifying Gherkin scenario coverage.

内容创作者测试与质量写作与文案
★ 1