Skip to main content

Apply reusable local recipes across plain directories.

Project description

untaped-recipe

untaped-recipe is a standalone CLI for applying trusted local recipes across plain directories. It is built on the untaped SDK and deliberately does not clone repos, create branches, commit, push, or open PRs. Recipes plan every change in memory, preview it, and only write after confirmation — see docs/ for the full documentation.

Install

uv tool install untaped-recipe

Configure

Settings live in the shared untaped config under the recipe section:

untaped-recipe config set library_root ~/.untaped/untaped-recipes

The recipe-specific keys are library_root, hook_timeout_seconds, hook_startup_timeout_seconds, preview_max_rows, backup_keep, and backup_max_age_days — see docs/reference.md for the settings table. For the config file format, profiles, and environment-variable overrides, see the core configuration docs.

Quickstart

# Install a recipe pack, preview what it ships, confirm
untaped-recipe add ./ansible

# Apply a recipe to targets (plans, previews, confirms, backs up, writes)
untaped-recipe apply ansible/playbook-migration ./service-a ./service-b

# Drive targets from another untaped tool
untaped-workspace list --format pipe | untaped-recipe apply add-config --stdin --yes

# Drift check for CI: writes nothing, exits non-zero on pending changes
untaped-recipe apply add-config ./service-a --check

# Scaffold a new pack with a recipe and a hook
untaped-recipe new pack mypack
untaped-recipe new recipe mypack/add-config
untaped-recipe new hook mypack/set_owner

# Undo the last apply
untaped-recipe backup restore latest

Documentation

Concept pages under docs/:

  • recipes — recipe YAML schema, step types, design rationale
  • inputs — the input contract: types, scope, from derivation, precedence
  • templating — the {{ name }} token language and path-field rendering
  • hooks — hook contract, execution model, helpers, hook run, yaml_edit
  • packs — pack manifest, library, references, scaffolding, trust
  • apply — running recipes: preview, confirmation, check mode, transactional writes
  • safety — path confinement, backups and restore, integrity mechanisms
  • testingcheck preflight and the golden-fixture test harness
  • pipes — stdin target ingestion and structured output
  • reference — settings, command index, exit codes, skills
  • release — maintainer release runbook

Development

uv sync
uv run pre-commit run --all-files
uv run ruff check --fix
uv run ruff format
uv run mypy
uv run pytest
uv build

See AGENTS.md for architecture rules, product invariants, and the documentation contract.

Security

Please report suspected vulnerabilities privately. See SECURITY.md.

Contributing

See CONTRIBUTING.md for the local workflow and docs/release.md for the release workflow.

License

MIT. See LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

untaped_recipe-0.15.1.tar.gz (182.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

untaped_recipe-0.15.1-py3-none-any.whl (101.9 kB view details)

Uploaded Python 3

File details

Details for the file untaped_recipe-0.15.1.tar.gz.

File metadata

  • Download URL: untaped_recipe-0.15.1.tar.gz
  • Upload date:
  • Size: 182.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.19 {"installer":{"name":"uv","version":"0.11.19","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for untaped_recipe-0.15.1.tar.gz
Algorithm Hash digest
SHA256 a3a01c0b93ecc9957f9205fd7606f3d0626b5119b9f709da7fa28f43120eb158
MD5 af3320d6dd925de0c3805c3052a95155
BLAKE2b-256 133a287563f2d470250299003ccc0ff034961beabd5194709e1ffa0dca035d17

See more details on using hashes here.

File details

Details for the file untaped_recipe-0.15.1-py3-none-any.whl.

File metadata

  • Download URL: untaped_recipe-0.15.1-py3-none-any.whl
  • Upload date:
  • Size: 101.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.19 {"installer":{"name":"uv","version":"0.11.19","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for untaped_recipe-0.15.1-py3-none-any.whl
Algorithm Hash digest
SHA256 5ac57fd8f5e2915bf44f673144637d13172fad6440e11c68f70583ab6fd7e860
MD5 e3ce6c1eecc6b301417bb3ad42784153
BLAKE2b-256 a1d0e1812d625de28cc7dc390b0b892d96977c075893efbef9607021ac53c808

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page