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.16.0.tar.gz (243.3 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.16.0-py3-none-any.whl (106.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: untaped_recipe-0.16.0.tar.gz
  • Upload date:
  • Size: 243.3 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.16.0.tar.gz
Algorithm Hash digest
SHA256 a088c7e2c4543018d32a5e148e26b888f0e173985fd91cf55edc67160725eae1
MD5 a3c06b240151b8292529e55b870a3fd2
BLAKE2b-256 523a38911787c033828c7299bf47cfce27efc54ab3aef0c368f33d5d6ea5cc4f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: untaped_recipe-0.16.0-py3-none-any.whl
  • Upload date:
  • Size: 106.2 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.16.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1b914db5cf5573b775aa6793f7fa2c2ccaabe3c396ffcf212decb4655721ac5a
MD5 2a1dda9f18392e1b5a244c68eb0c1cc4
BLAKE2b-256 413804d48cfbeae314acf3722487e95ab0d8676c6f4a1fbb979129769513878d

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