# Get started

> One line to your agent. No key to store. The first comment on your next pull request.

**One line to your agent.**

```text
Set up Assure. Follow https://github.com/Symbolia-Assurance/assure-action/blob/v0/skills/assure/SKILL.md
```

One command. The agent fetches the declaration, a requirements.md tagged by tier, and the workflow, and opens the first pull request itself.

That pull request already shows the check working. Free rows read holds. Higher-tier rows read not established: Premium checks this.

- [Read the docs](/docs)
- [Pricing](/pricing)

## For the detail

The agent reads [the skill](/skills/assure) and finds your stack. Setup comes from the API in one command: the declaration, a requirements.md tagged by tier, and the workflow; the agent commits them and opens the first pull request itself, so no repository setting for Actions to open pull requests is needed. For a Flask, FastAPI or Django app it picks the free `python-auth-declared-model` profile and writes `.github/workflows/assure.yml`. The Action signs in with the workflow's GitHub identity; your account is your GitHub owner, on the free plan. Until the declaration is merged the result is bounded by the draft, and the summary says so. Each later run on the pull request updates the same comment. The written report, when you ask for it, says the same in plain words.

### The smallest workflow, by hand

```yaml
name: Assure

on:
  pull_request:
  push:
    branches:
      - main

permissions:
  contents: write
  id-token: write
  pull-requests: write

jobs:
  check:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@<full commit sha of the release you trust>

      - name: Set up Python 3.14
        uses: actions/setup-python@<full commit sha of the release you trust>
        with:
          python-version: "3.14"

      - name: Assure check
        id: assure
        uses: Symbolia-Assurance/assure-action@v0
        with:
          profile: python-auth-declared-model

      - name: Keep the verdict
        if: always()
        uses: actions/upload-artifact@<full commit sha of the release you trust>
        with:
          name: assure-verdict
          path: ${{ steps.assure.outputs.verdict-path }}
```

From [the skill's Python route](/skills/assure/python). PostgreSQL, MySQL and HTTP routes are in [the Action quick start](/docs/quickstart-action).
