Write a node
A node is a Python package with an agentnode.yaml manifest, capabilities and tests. Start through Claude Code, or scaffold it yourself.
Scaffold
With your team selected and the project already created:
atfg new hello-world --project pilot --description "A deterministic greeting"
cd hello-world
The CLI writes the package, manifest, pinned requirements, tests, smoke input and local node state. Choose another label if it is already registered. Do not scaffold inside an existing node.
Write a skill
The core of a greeting node is a deterministic Python function:
from atfgraph import Agent
app = Agent(node_id="hello-world", version="0.1.0")
@app.skill()
async def greet(name: str) -> dict:
name = name.strip()
if not name:
raise ValueError("name must not be blank")
return {"greeting": f"Hello {name}!"}
Keep the scaffold's entrypoint aligned with this module and agent object. Align deploy.smoke, tests and tests/smoke.json with greet; do not leave the old sample capability in the deployment smoke input. The node manifest & configuration reference documents every hosted manifest setting and the related configuration files.
Test behavior
Test normal names, whitespace and blank input, then run atfg build. Continue with Test, build & deploy for the local checks and hosted smoke verification.
Add capabilities as needed
- Use a skill for deterministic code.
- Use a traversal for model-backed work and graph orchestration.
- Call other capabilities through the SDK to record child execution in the run path.
- Add timeouts and bounded retries or fan-out where needed.
Continue with build and deploy, or explore the framework reference.