Skip to main content
This page explains why the generated layout looks the way it does. Read it after the quickstart to understand how to extend your project safely.

How generation works

Act Operator renders the template located in act_operator/scaffold/. The inputs used to render the template are defined in cookiecutter.json:
  • act_name, act_slug, act_snake
  • cast_name, cast_slug, cast_snake, cast_pascal
  • language
Template files use {{ cookiecutter.* }} placeholders to inject those values into file names and content.

Template root (Act project)

The generated Act project includes:
  • casts/ for Cast packages (each Cast is an independent graph)
  • tests/ with Cast and node tests
  • .claude/skills/ with built-in Skills for AI collaboration
  • .github/workflows/ with CI workflows
  • pyproject.toml for project configuration
  • langgraph.json for graph configuration
  • .env.example for environment variables
  • README.md for project-specific instructions

Cast package layout

Each Cast is generated under casts/<cast>/ and includes:
casts/
  <cast>/
    graph.py
    pyproject.toml
    README.md
    modules/
      agents.py
      conditions.py
      middlewares.py
      models.py
      nodes.py
      prompts.py
      state.py
      tools.py
      utils.py

Skills in the template

Built-in Skills are scaffolded under .claude/skills/:
  • architecting-act
  • developing-cast
  • engineering-act
  • testing-cast
Each Skill includes a SKILL.md file that AI tools can discover and follow.

Tests

The template includes two test areas:
  • tests/cast_tests/ for Cast-level tests
  • tests/node_tests/ for node-level tests

Next steps

Overview

Review concepts and vocabulary

QuickStart

Go from zero to a working cast.