docs/getting-started.md

# Getting Started with Conjure

Conjure is an Elixir library for building AI agents with Claude and specialized skills.

## Choose Your Path

| If you want to... | Start here |
|-------------------|------------|
| Get running quickly | [Hello World](tutorials/hello_world.md) |
| Build production skills | [Local Skills with Claude](tutorials/using_local_skills_via_claude_api.md) |
| Generate documents | [Anthropic Skills API](tutorials/using_claude_skill_with_elixir_host.md) |
| Use pure Elixir | [Native Elixir Skills](tutorials/using_elixir_native_skill.md) |
| Combine everything | [Unified Backend Patterns](tutorials/many_skill_backends_one_agent.md) |
| Build skill pipelines | [Fly.io with Tigris Storage](tutorials/hello_conjure_flyio.md) |

## Quick Overview

### What is Conjure?

Conjure enables Claude to use specialized skills - packaged instructions and tools that extend its capabilities. Skills can:

- Execute shell commands and scripts
- Read and write files
- Generate documents (spreadsheets, PDFs)
- Access your Elixir application directly

### Execution Backends

Conjure supports 4 execution backends with a unified Session API:

```elixir
# Local: Shell execution (development)
session = Conjure.Session.new_local(skills)

# Docker: Sandboxed execution (production)
session = Conjure.Session.new_local(skills, executor: Conjure.Executor.Docker)

# Anthropic: Hosted document generation
session = Conjure.Session.new_anthropic([{:anthropic, "xlsx", "latest"}])

# Native: Pure Elixir modules
session = Conjure.Session.new_native([MyApp.Skills.Database])

# Same API for all backends
{:ok, response, session} = Conjure.Session.chat(session, message, &api_callback/1)
```

### Storage Backends

Conjure supports pluggable storage for session working directories:

```elixir
# Local storage (default) - ephemeral temp directories
{:ok, session} = Conjure.Session.new_docker(skills)

# S3 storage - for multi-node clusters
{:ok, session} = Conjure.Session.new_docker(skills,
  storage: {Conjure.Storage.S3, bucket: "my-bucket"}
)

# Tigris storage - zero-config on Fly.io
{:ok, session} = Conjure.Session.new_docker(skills,
  storage: Conjure.Storage.Tigris
)

# File callbacks - integrate with your application
{:ok, session} = Conjure.Session.new_docker(skills,
  on_file_created: fn file_ref, session_id ->
    MyApp.Repo.insert!(%SessionFile{path: file_ref.path})
  end
)

# Cleanup when done
{:ok, _} = Conjure.Session.cleanup(session)
```

### API-Agnostic Design

Conjure makes no HTTP calls - you provide the API callback:

```elixir
api_callback = fn messages ->
  Req.post("https://api.anthropic.com/v1/messages",
    json: %{model: "claude-sonnet-4-5-20250929", messages: messages, ...},
    headers: [{"x-api-key", api_key}, ...]
  )
end
```

## Prerequisites

- **Elixir 1.14+** and **Erlang/OTP 25+**
- **Anthropic API key** from [console.anthropic.com](https://console.anthropic.com)
- **Docker 20.10+** (optional, for sandboxed execution)

## Installation

```elixir
# mix.exs
def deps do
  [{:conjure, "~> 0.1.0"}]
end
```

## Tutorials

Step-by-step guides for every use case:

1. **[Hello World](tutorials/hello_world.md)** (10 min)
   Install Conjure, create an Echo skill, run your first conversation

2. **[Local Skills with Claude](tutorials/using_local_skills_via_claude_api.md)** (30 min)
   Build a production log analyzer skill

3. **[Anthropic Skills API](tutorials/using_claude_skill_with_elixir_host.md)** (20 min)
   Generate spreadsheets and PDFs with hosted execution

4. **[Native Elixir Skills](tutorials/using_elixir_native_skill.md)** (25 min)
   Build type-safe skills as Elixir modules

5. **[Unified Backend Patterns](tutorials/many_skill_backends_one_agent.md)** (30 min)
   Combine all backends for a complete monitoring solution

6. **[Fly.io with Tigris Storage](tutorials/hello_conjure_flyio.md)** (35 min)
   Two-phase skill pipeline: Claude generates runbooks, Native executes safely

## Additional Resources

- **[README](../README.md)** - Full feature overview and API reference
- **[Technical Specification](../conjure_specification.md)** - Detailed architecture
- **[Architecture Decision Records](adr/README.md)** - Design rationale

## Getting Help

- **Issues**: [github.com/holsee/conjure/issues](https://github.com/holsee/conjure/issues)
- **API Reference**: Run `mix docs` locally