| name | setup-project |
| description | One-shot interactive onboarding for a newly forked Glite ARF template. Shows the safety acknowledgement, installs dependencies, runs doctor.py, then chains into create-project-description and the four meta/ sub-skills. Use once per fork, right after cloning. |
Setup Project
Version: 1
Goal
Take a freshly forked Glite ARF repository from clone to ready-to-run-first-task through a single
interactive dialogue: capture the safety acknowledgement, install dependencies, validate the
environment, guide project description and budget creation, and populate meta/ with the project's
categories, metrics, task types, and any extra asset types.
Inputs
$ARGUMENTS — ignored. The skill always runs the same workflow.
Context
Read before starting:
arf/docs/explanation/safety.md — autonomy and safety document quoted verbatim in Phase 1.
README.md "Bootstrap a new project" section — the manual flow this skill replaces.
arf/specifications/project_description_specification.md — required for Phase 3 verification.
arf/specifications/project_budget_specification.md — required for Phase 3 verification.
arf/skills/create-project-description/SKILL.md — the skill chained in Phase 3.
arf/skills/add-category/SKILL.md, arf/skills/add-metric/SKILL.md,
arf/skills/add-task-type/SKILL.md, arf/skills/add-asset-type/SKILL.md — chained in Phase 4.
arf/styleguide/agent_instructions_styleguide.md — governs how this skill is written.
doctor.py — the environment validator run in Phase 2.
Steps
Phase 1: Safety acknowledgement
- Read
arf/docs/explanation/safety.md and print a summary to the user with exactly these five
bullet points, each in one sentence:
- Shell and filesystem access in task worktrees
- Git commits and pushes on the user's behalf
- Paid LLM API usage that can cost tens to hundreds of dollars
- Remote GPU provisioning on vast.ai that costs real money per minute
- Prompt injection from downloaded papers and web content
- Immediately after the summary, print the full text of
arf/docs/explanation/safety.md inline so
the user can read the complete document without leaving the session.
- Ask exactly: "Type
I understand and accept these risks to proceed, or anything else to cancel."
Wait for the user's input.
- If the user's reply is not the exact string
I understand and accept these risks (case and
punctuation included), print Setup cancelled. Re-run /setup-project when ready. and exit
without touching any files.
Phase 2: Environment preparation
-
Confirm the repository looks like a fresh fork: project/ does not exist or is empty,
meta/categories/ has no subdirectories, meta/metrics/ has no subdirectories. If any of those
checks fail, print what was found and ask: "This repo has existing project configuration. Type
continue anyway to overwrite it or anything else to cancel." Only proceed on the exact string
continue anyway.
-
Ensure uv is installed:
- Run
uv --version. If it exits 0, move on.
- If
uv is missing, propose the official Astral installer:
- macOS or Linux →
curl -LsSf https://astral.sh/uv/install.sh | sh
- Windows (PowerShell) →
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
- Show the exact command and ask: "Install uv with
<command>? Type yes to run it or anything
else to cancel." Run the command only on the exact string yes. On anything else, print the
manual install instructions from https://docs.astral.sh/uv/ and exit so the user can install
it themselves, then re-run /setup-project.
- After install, confirm
uv --version now exits 0. If not, exit with
uv install did not register on PATH. Open a new shell and re-run /setup-project.
-
Install Python dependencies:
uv sync
-
Install pre-commit hooks:
uv run pre-commit install
-
Ensure git LFS is installed and configured:
- Run
git lfs version. If it exits 0, run git lfs install and move on.
- If
git lfs is missing, detect the platform with uname -s:
Darwin → propose brew install git-lfs
Linux (check /etc/os-release for ID=ubuntu or ID=debian) → propose
sudo apt-get install -y git-lfs
- Any other platform → print the manual instructions from https://git-lfs.com/ and exit
with
Install git-lfs manually, then re-run /setup-project.
- Show the user the exact command and ask: "Install git-lfs with
<command>? Type yes to
run it or anything else to cancel." Run the command only on the exact string yes.
- After install, run
git lfs install to register hooks.
-
Run python3 doctor.py and surface its output verbatim to the user. If doctor.py reports any
blocker (non-zero exit), print Fix the blockers above and re-run /setup-project. and exit.
Do not proceed to Phase 3.
Phase 3: Project description and budget
-
Invoke the create-project-description skill by printing a short notice such as "Next, I will
run /create-project-description to create project/description.md and project/budget.json.
Press enter to continue." and waiting for the user. Then delegate the entire dialogue to that
skill — do not ask its questions here.
-
After create-project-description returns, confirm both files exist:
uv run python -u -m arf.scripts.verificators.verify_project_description
uv run python -u -m arf.scripts.verificators.verify_project_budget
If either verificator reports errors, stop and tell the user to re-run
/create-project-description to fix them before continuing.
Phase 4: Customize meta/
-
Read project/description.md into context so subsequent sub-skills inherit it.
-
For each of the four sub-skills below, in this order:
- Print
Running /<skill-name> to populate meta/<area>/.
- Invoke the sub-skill with
project/description.md as its argument.
- When the sub-skill returns, print the count of entries that were added.
Sub-skills to invoke, in order:
/add-category project/description.md
/add-metric project/description.md
/add-task-type project/description.md
/add-asset-type project/description.md
Phase 5: Wrap-up
- Print a summary to the user with:
- The number of entries added in each of
meta/categories/, meta/metrics/,
meta/task_types/, meta/asset_types/.
- The list of files now present under
project/.
- The exact next command:
Run /create-task to create your first task. See arf/docs/tutorial/ for the full walkthrough.
Done When
- The user typed the exact acknowledgement phrase in Phase 1.
uv sync, uv run pre-commit install, and python3 doctor.py all completed successfully, or the
skill exited cleanly after telling the user which blocker to fix.
- Either
git lfs install ran successfully, or the user declined the install prompt and the skill
exited with manual install instructions.
project/description.md exists and passes verify_project_description.
project/budget.json exists and passes verify_project_budget.
- Each of
/add-category, /add-metric, /add-task-type, /add-asset-type was invoked and the
user saw its result.
- The wrap-up summary was printed with the
/create-task pointer.
Forbidden
- NEVER proceed past Phase 1 without the exact acknowledgement string. Any other reply ends the
skill.
- NEVER skip
python3 doctor.py. Blockers must be surfaced to the user.
- NEVER write anything to
meta/ directly from this skill. Delegate to the sub-skills.
- NEVER run a system package manager (
brew, apt-get, etc.) without showing the exact command and
getting the explicit yes confirmation in the same turn.
- NEVER create a
tasks/tXXXX_* folder as part of setup. See CLAUDE.md rule 0.