Encode intent/decision/plan workflow for Snowflake platform delivery so engagements share a durable recipe instead of one-off LLM chats. Co-authored-by: Cursor <cursoragent@cursor.com>
74 lines
2.4 KiB
Markdown
74 lines
2.4 KiB
Markdown
# Sky Lattice
|
|
|
|
Internal toolkit for standing up and evolving **Snowflake data platforms** across customers: durable **intent** + **decisions**, a versioned **blueprint**, deterministic **plan/apply**, and an optional **Cursor skill** front door.
|
|
|
|
Terraform remains the executor. Sky Lattice is the intent/decision/policy layer on top.
|
|
|
|
## Install
|
|
|
|
```bash
|
|
cd /path/to/sky-lattice
|
|
python3 -m venv .venv
|
|
source .venv/bin/activate
|
|
pip install -e ".[dev]"
|
|
platformctl --version
|
|
platformctl doctor
|
|
```
|
|
|
|
## 5 commands to remember
|
|
|
|
| Command | Purpose |
|
|
|---|---|
|
|
| `platformctl wizard` | Guided setup / resume |
|
|
| `platformctl add domain …` | Incremental change |
|
|
| `platformctl plan` | Show what will be created |
|
|
| `platformctl apply` | Record/apply plan |
|
|
| `platformctl drift` | Compare inventory vs intent |
|
|
|
|
Also: `init`, `validate`, `discover`, `decision add|list`, `explain`, `destroy --env`, `skills install`, `doctor`.
|
|
|
|
## Quick start (greenfield demo)
|
|
|
|
```bash
|
|
platformctl init acme --mode greenfield
|
|
platformctl wizard --path customers/acme --answers examples/answers/acme.greenfield.yaml
|
|
platformctl validate --path customers/acme
|
|
platformctl plan --path customers/acme
|
|
platformctl apply --path customers/acme --yes
|
|
platformctl doctor --path customers/acme
|
|
```
|
|
|
|
Open `customers/acme` in Cursor — the `platform-ops` skill is already in `.cursor/skills/`.
|
|
|
|
## Brownfield
|
|
|
|
```bash
|
|
platformctl init globex --mode brownfield
|
|
# provide observed/inventory.yaml then:
|
|
platformctl discover --path customers/globex --inventory examples/answers/globex.inventory.yaml
|
|
platformctl wizard --path customers/globex --mode brownfield --answers examples/answers/globex.brownfield.yaml
|
|
platformctl plan --path customers/globex
|
|
```
|
|
|
|
## Layout
|
|
|
|
```text
|
|
blueprint/ # versioned IP: modules, schemas, wizard, policies, skills
|
|
src/skylattice/ # platformctl (Python)
|
|
customers/ # generated customer projects (demo)
|
|
docs/ # landing, recipes, product decisions
|
|
PLAN.md # design plan (reference)
|
|
```
|
|
|
|
## Customer environment landing
|
|
|
|
See [docs/customer-landing/README.md](docs/customer-landing/README.md). Default: customer gets git repo + CI + secrets + Snowflake automation user; blueprint stays pinned/versioned.
|
|
|
|
## LLM / skills
|
|
|
|
Skills drive `platformctl` and customer files — they do not own Snowflake. See skill at `blueprint/skills/platform-ops/`.
|
|
|
|
## License
|
|
|
|
Internal use — adapt as needed for your organization.
|