faffter-noon-env-compose

Provisions health-checked docker-compose environments and emits env-handle contracts for build evaluation.

3|Updated Apr 16, 2026
One-click install
npx skills add https://github.com/shftwst/faff --skill faffter-noon-env-compose-shftwst
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: faffter-noon-env-compose
Source: https://github.com/shftwst/faff/tree/main/plugin/skills/faffter-noon-env-compose
Command: npx skills add https://github.com/shftwst/faff --skill faffter-noon-env-compose-shftwst

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Standing up a representative, seeded local environment for evaluating a build is repetitive and error-prone. This Skill automates provisioning a docker-compose stand-in from an architecture proposal and infra profile, then hands the evaluator a single contract block describing how to reach and tear down the environment. ## Core Features & Use Cases - Deterministic provisioning: Generates a compose plan via faff env compose-gen, reconciles against any repo-shipped compose file, brings services up with health-wait, and seeds a synthetic dataset before declaring readiness. - Contract-based handoff: Emits exactly one faff-contract:env-handle block with endpoints, health checks, teardown command, and credentials that the downstream evaluator consumes without knowing how the env was built. - Fail-loud gating: Never emits a ready handle over a failed seed, an unprovisionable datastore, or a half-up environment; failed runs always tear down and report violations. - Use Case: During an L4 unattended delivery run, the pipeline needs a Postgres-backed API stood up for holdout evaluation. This Skill reads the infra profile, composes the services, seeds fixtures, and emits the ready handle the evaluator points at. ## Quick Start Provision a seeded local environment from the current architecture proposal and infra profile, then emit the env-handle contract block for the evaluator.

Frequently Asked Questions about faffter-noon-env-compose

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I provision a local test environment with docker-compose automatically?▼

Run the provisioning flow which calls `faff env compose-gen` with your infra profile to generate a compose plan, then `faff env up` to start services with health-wait, and `faff env seed` to load a deterministic dataset. The result is emitted as a single env-handle contract block.

What is a faff-contract env-handle block?▼

An env-handle is a JSON contract describing a provisioned environment: status, endpoints, health checks, teardown reference and command, credentials, and provisioning metadata. The evaluator parses and validates it with `faff contract env-handle`, which exits 0 only on a conformant `status: ready` handle.

Does this work without an infra profile or architecture proposal?▼

Yes, with degraded posture. With no proposal it derives services from the infra profile; with no profile (`faff profile show` exit 3) it reconciles against the repo's own compose file. If all sources are absent it emits a non-ready handle rather than guessing an environment.

What happens when a datastore cannot be provisioned?▼

If the plan's `unprovisionable[]` list is non-empty, the Skill emits a `status: failed` handle with a violations entry naming the missing datastore kinds and stops. It never emits a ready handle over an environment missing a required store; a human must extend the CLI's DATASTORE_TABLE.

Why does provisioning fail with a Docker engine error?▼

The `faff env` verbs inherit `DOCKER_HOST` untouched, so an unreachable or misconfigured engine fails loudly naming the effective context. Point the environment at a working engine (such as rootless dind or podman) beforehand; the Skill never retargets the socket itself.

Can I swap docker-compose for a cloud preview environment?▼

Yes. The env-handle is a contract, not an implementation, so any producer conforms by emitting the same block shape. A cloud-preview or persistent-staging provisioner can replace the compose strategy as long as it emits a conformant handle with endpoints, health checks, and teardown.