# iASSET — cadrer les agents avant le premier diff

> Whitepaper JST6 — blueprint `iasset`  
> Source : [gitlab.com/zot-lab/iasset](https://gitlab.com/zot-lab/iasset) · Pages : [zot-lab.gitlab.io/iasset](https://zot-lab.gitlab.io/iasset/)

CLI **MIT** (`zot-iasset` / commande `iasset`) pour cadrer l’usage des agents (Cursor, Claude Code, OpenCode, CI) via un dossier partageable et auditable **`iasset/`**.

**A**rchitecture · **S**pecification · **S**ecurity · **E**valuation · **T**ests

## Introduction

Les agents accélèrent la livraison. Sans cadre, ils improvisent. iASSET impose un contrat versionné dans le repo — lisible par humains, IDE et CI — avant le premier diff.

## 1. Pourquoi iASSET

Sans cadre : prompt → code direct → dette (frontières cassées).  
Avec iASSET : même intention → `iasset/` (spec · arch · sécu) → implémentation bornée + gates.

Le cadre invariant vit dans `iasset/` ; `.cursor/`, `CLAUDE.md`, `AGENTS.md` sont des exports dérivés.

## 2. Bundle A / S / S / E / T

| Lettre | Contenu |
|--------|---------|
| **A** Architecture | Presets (hexa, 3-layer, MVC, clean…), `boundaries.yaml`, may / must_not |
| **S** Specification | Behaviors YAML / Gherkin, clés Linear / Jira |
| **S** Security | Niveau baseline→critical, OWASP Top 10 / ASVS / ISO 27001 |
| **E** Evaluation | Modes pre-merge / release, templates commit & PR |
| **T** Tests | Fineness / coverage, generate unit & scenario depuis une spec |

## 3. Boucle de changement

Skill `iasset-change` :

1. Spec (behavior)  
2. Architecture (frontières)  
3. Security (requirements)  
4. Tests (unit / scenario)  
5. Impl. (`AGENT_MAY` only)  
6. Eval (commit / PR + gates)

## 4. CLI

```bash
npm i -g zot-iasset
iasset init --name demo --architecture hexagonal
iasset spec add --id auth.login.form --linear ENG-142
iasset tests generate --from-spec auth.login.form --kind unit
iasset sync --target all
iasset validate --gate all
iasset agent run security-auditor
iasset eval commit-message --behavior auth.login.form
```

## 5. Sync IDE & CI

`iasset sync` → Cursor (`.cursor/skills`), Claude Code (`CLAUDE.md`), OpenCode (`AGENTS.md`) + CI (`validate` + agents déterministes).

## Conclusion

iASSET = pipeline capitalisable, pas vibe coding. Chez JST6 : méthode derrière l’AEP — *Still master, not be mastered.*
