Set up, understand, and change a Tessl factory on a repository: pick automations that fit how you work, such as shipping tickets as pull requests, answering reviews and fixing checks on those pull requests, code review, and scheduled jobs; prepare the repository for agents; write issues for the factory to build; then see what the factory has done, find out why a run failed or never started, and change or extend it.
92%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
Low
Low-risk findings worth noting
.tessl/cloud-launch-setup.sh runs from the clone root before every cloud
run.
set -eo pipefail. Installers are often pipelines
(curl ... | bash), and set -e alone passes when the download fails. Leave
out -u; nvm.sh is not safe under it.sudo, Docker with Compose, build-essential, Node 24, Python
3 with uv, Go 1.27.2 (with GOTOOLCHAIN=auto, a newer go.mod fetches its
own toolchain) and Bun 1.4.3. Install only what the repository needs beyond
that, and only what a cloud run needs to build and test: leave out CI-only
steps such as browser downloads unless the tests need them. Use
sudo apt-get install -y for a missing system package.~/.local/bin. The hook runs in a child process, so
export PATH=..., nvm use, fnm use, or sourcing a profile does not reach
the agent. Put anything you install in ~/.local/bin, or link it there.Accept a compatible range, never the exact version CI pins.
engines,
.nvmrc, .node-version, .tool-versions, packageManager,
rust-toolchain.toml, go.mod, .python-version. Treat the version in a
CI setup action as a hint for the major version, not a requirement for the
patch.engines: ">=20 <22" or ^20 excludes
Node 22 as surely as Node 18. A bare major version, such as 24 in
.nvmrc, or a CI version with no declaration behind it, is a floor: accept
that major or newer. An exact version in a version file, such as 24.18.1
in .nvmrc or 3.12.4 in .python-version, is a hint like CI's: accept
the same major (the same minor for Python).packageManager is set, export COREPACK_ENABLE_DOWNLOAD_PROMPT=0, then
run corepack enable --install-directory ~/.local/bin. Node 25 and later
don't bundle Corepack, so if corepack is missing, install it first with
npm install -g --prefix ~/.local corepack.