diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 6d0b2fc7b..49c99c89d 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1,5 +1,5 @@ # Default reviewers for every change in this repository. # GitHub assigns these reviewers automatically when a pull request is opened. -# Only Habilité AIDD maintainers can approve and merge - see GOVERNANCE.md. +# Only AIDD Maintainers can approve and merge - see GOVERNANCE.md. # See https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners -* @ai-driven-dev/habilitated +* @ai-driven-dev/trusted-partners diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index fc964fff5..1f5531ee2 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -6,9 +6,3 @@ contact_links: - name: Discord community url: https://discord.gg/EWySJSpjWs about: Ask questions, get help, or chat with the AI-Driven Dev community in real time. - - name: Website - url: https://www.ai-driven-dev.fr/ - about: Read the AI-Driven Dev methodology, guides, and announcements. - - name: Report a security vulnerability - url: https://github.com/ai-driven-dev/framework/security/advisories/new - about: Disclose a vulnerability privately via GitHub Security Advisories. Do not open a public issue. diff --git a/.github/ISSUE_TEMPLATE/roadmap.yml b/.github/ISSUE_TEMPLATE/detailed_contribution.yml similarity index 80% rename from .github/ISSUE_TEMPLATE/roadmap.yml rename to .github/ISSUE_TEMPLATE/detailed_contribution.yml index e4fde1f25..290f042d6 100644 --- a/.github/ISSUE_TEMPLATE/roadmap.yml +++ b/.github/ISSUE_TEMPLATE/detailed_contribution.yml @@ -1,13 +1,13 @@ -name: 🗺️ Roadmap item -description: "Maintainer-authored work: a skill, a refactor, a rule to enforce" +name: 📋 Detailed Contribution +description: "Propose a scoped change: a skill, a refactor, a rule to enforce" title: "(): " type: Task body: - type: markdown attributes: value: | - For maintainers planning framework work. Reporting a bug or asking for a feature as a user? - Use the **Bug Report** or **Feature Request** form instead. + Issue-first: a maintainer validates this before any PR is opened (see [CONTRIBUTING.md](https://github.com/ai-driven-dev/framework/blob/main/CONTRIBUTING.md)). + Reporting a bug? Use the **Bug Report** form instead. The title carries its own scope, matching `commitlint.config.cjs`: `feat(aidd-pm):`, `fix(framework):`, `refactor(aidd-context):`. - type: textarea diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/quick_contribution.yml similarity index 77% rename from .github/ISSUE_TEMPLATE/feature_request.yml rename to .github/ISSUE_TEMPLATE/quick_contribution.yml index 032f07747..6ec0dc20a 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.yml +++ b/.github/ISSUE_TEMPLATE/quick_contribution.yml @@ -1,14 +1,13 @@ -name: ✨ Feature Request -description: Propose new content or an improvement to the framework +name: 🌱 Quick Contribution +description: Propose a change or new content for the framework, minimal form title: "feat(): " type: Feature body: - type: markdown attributes: value: | - Have an idea? You can also post and upvote it in - [Discussions](https://github.com/ai-driven-dev/framework/discussions) - - popular ideas get promoted to a roadmap vote (see [ROADMAP.md](https://github.com/ai-driven-dev/framework/blob/main/ROADMAP.md)). + Issue-first: a maintainer validates this before any PR is opened (see [CONTRIBUTING.md](https://github.com/ai-driven-dev/framework/blob/main/CONTRIBUTING.md)). + Want to discuss an idea first? Post it in [Discussions](https://github.com/ai-driven-dev/framework/discussions). - type: textarea id: problem attributes: diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index b28d4c1d7..ef455db66 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,61 +1,62 @@ # Contributing to the AIDD Framework -Source of truth for AIDD skills, agents, rules, and templates — authored in Claude Code syntax; the CLI adapts an archive per tool at release. This file covers contributing to **this repository**; the wider community, roles, and training programme live at [ai-driven-dev.fr](https://www.ai-driven-dev.fr/). +## 👥 How to contribute + +One path, open to everyone ([roles](./GOVERNANCE.md#-roles)). ```mermaid flowchart LR - Issue["💡 Issue / idea"] --> Branch["🌿 Branch off next"] --> PR["🔀 Open PR"] --> Review["🛡️ Habilité review"] --> Merge["✅ Squash-merge → next"] --> Release["🚀 Weekly promote → release-please ships"] + Start(["Something to share?"]) -->|"just a question"| Discussion["💬 Discussions"] + Start --> Bug["🐛 Bug"] + Start --> Quick["🌱 Quick
problem + solution"] + Start --> Detailed["📋 Detailed
scope + acceptance criteria"] + Bug --> Validate["✅ Get validated"] + Quick --> Validate + Detailed --> Validate + Validate --> Setup["🔧 Set up"] --> Changes["✏️ Changes"] --> PR["🔀 Open PR"] --> Review["🛡️ Review"] --> Merge["✅ Merged"] ``` -## 👥 Who can contribute +1. Just a question? → [Discussions](https://github.com/ai-driven-dev/framework/discussions). +2. **Open an issue** — [🐛 Bug Report](https://github.com/ai-driven-dev/framework/issues/new?template=bug_report.yml), [🌱 Quick Contribution](https://github.com/ai-driven-dev/framework/issues/new?template=quick_contribution.yml), or [📋 Detailed Contribution](https://github.com/ai-driven-dev/framework/issues/new?template=detailed_contribution.yml). +3. **Get it validated** — a Certified Member or Maintainer moves it to `Todo`. Green light. +4. **Want to build it yourself?** → [Set up](#-set-up). Anyone can pick up a validated issue, not just the person who opened it. +5. **Open your PR** → [Open a pull request](#-open-a-pull-request). -Roles and their rights are defined in [`GOVERNANCE.md`](./GOVERNANCE.md#-roles). Where each starts: +## 📜 Principles -| Role | Start here | -| --- | --- | -| 👤 **Public** | [Open an issue](https://github.com/ai-driven-dev/framework/issues) or [discussion](https://github.com/ai-driven-dev/framework/discussions) | -| 🗳️ **Core Team** | Vote on roadmap priority | -| 🌱 **Certifié** | Open a pull request → [Set up](#-1-set-up) | -| 🛡️ **Habilité** | Review and merge | +What holds for every contribution, whatever you're building: -The rest of this guide is the *how* for those opening PRs. +- **No slop** — read every line before proposing it. +- **Spend tokens like they cost something.** +- **Claude Code syntax only** — skills, agents, and rules are authored in Claude Code syntax (the [CLI](./cli/) adapts a per-tool archive at release). +- **Follow the skill structure** → [`ARCHITECTURE.md`](docs/ARCHITECTURE.md), use the `/aidd-context:04-skill-generate`. +- **Evolve the memory** → [`aidd_docs/memory/`](aidd_docs/memory/). -## 🔧 1. Set up +## 🔧 Set up -Requires **Node 22.12+**, **pnpm**, **jq**, **python3**, and **pipx** (`gh` and the Claude/Codex CLI optional). +Requires **Node 22.12+**, **pnpm**, **jq**, **python3**, **pipx**. ```bash -make setup # deps + git hooks, registers a local marketplace, installs plugins into Claude + Codex +make setup # deps, git hooks, registers the marketplace, installs plugins into Claude + Codex ``` -`make` lists every target; `make doctor` and `make check` verify the environment and run the pre-commit checks (including the Markdown link checker). - -## ✏️ 2. Make your change - -- **Test locally** — neither tool hot-reloads the checkout (both serve a cached copy). After editing, run `make reload` (or `PLUGIN="aidd-refine aidd-pm"` for a subset), then restart the session — `/reload-plugins` covers a Claude-only edit to an existing skill. -- **Commit** — `(): description`, one scope per commit (split cross-plugin changes). The types, scopes, and rules live in [`aidd_docs/memory/vcs.md`](aidd_docs/memory/vcs.md#commit-convention) (mirrors `commitlint.config.cjs`); the **type** drives the release → [`RELEASE.md`](./RELEASE.md). - -## 🔀 3. Open a pull request - -- **Branch off `next`, target `next`** — only `hotfix/*` branches off `main` for urgent production fixes. The branch prefix alone decides the target → [routing table](aidd_docs/memory/vcs.md#types). -- **Fill the PR template** — explain *what* changed and *how* you solved it; skip re-asserting the conventional title and hooks (CI already enforces them). -- **Label** follows your branch kind (the PR skill applies it automatically); add `security` when relevant. -- **A Habilité review gates every merge** ([`CODEOWNERS`](./.github/CODEOWNERS)) — Certifié contributors cannot self-merge. PRs squash-merge on the conventional title. Decision rules → [`GOVERNANCE.md`](./GOVERNANCE.md#-code-decisions-merging). +`make` lists every target; `make doctor` checks your environment, `make check` runs the pre-commit checks. -## 🚀 Releases +## ✏️ Make your change -The `main`/`next` model, weekly cadence, and hotfix flow → [`RELEASE.md`](./RELEASE.md). A release ships **8 independently-versioned packages** (root `aidd-framework` + the 7 plugins; `aidd-ui` is alpha) plus per-tool archives; full breakdown → [`MAINTAINERS.md`](docs/MAINTAINERS.md#-releases). +- **Follow the [Principles](#-principles).** +- **Test locally** — run `make reload`, restart your session(s). Test in Claude *and* one other tool (e.g. Codex). +- **Commit** — `(): description`, one scope per commit → [convention](aidd_docs/memory/vcs.md#commit-convention). -## 🐛 Reporting issues +## 🔀 Open a pull request -[Open an issue](https://github.com/ai-driven-dev/framework/issues/new/choose) (🐛 Bug or ✨ Feature) — auto-added to the [Roadmap board](https://github.com/orgs/ai-driven-dev/projects/8). For usage questions use [Discussions](https://github.com/ai-driven-dev/framework/discussions), not issues (see [`SUPPORT.md`](./.github/SUPPORT.md)). +- **Branch off `next`, target `next`** → [routing table](aidd_docs/memory/vcs.md#types). +- **Fill the [PR template](.github/PULL_REQUEST_TEMPLATE.md)** — what changed, how you solved it. +- **A Maintainer review gates every merge** → [`GOVERNANCE.md`](./GOVERNANCE.md#-code-decisions). ## 📚 Reference -- **Build a plugin** → [`docs/CREATE_PLUGIN.md`](docs/CREATE_PLUGIN.md) -- **Architecture & terms** → [`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md) · [`docs/GLOSSARY.md`](docs/GLOSSARY.md) -- **Patterns to follow** → a minimal plugin [`aidd-refine`](plugins/aidd-refine/), a router skill [`00-onboard`](plugins/aidd-context/skills/00-onboard/), agents [`aidd-dev/agents`](plugins/aidd-dev/agents/) -- **Per-tool builds** → source files use Claude Code syntax; the `aidd-cli` maps each surface to its per-tool equivalent at release. `name` / `description` / `argument-hint` are universal; other frontmatter keys (`model`, `color`, `paths`, …) are tool-specific and ignored where unsupported. +[`ARCHITECTURE.md`](docs/ARCHITECTURE.md) · [`CREATE_PLUGIN.md`](docs/CREATE_PLUGIN.md) · [`GLOSSARY.md`](docs/GLOSSARY.md) --- diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md deleted file mode 100644 index b65551f5d..000000000 --- a/CONTRIBUTORS.md +++ /dev/null @@ -1,28 +0,0 @@ -# Contributors - -Roles are defined in [`GOVERNANCE.md`](./GOVERNANCE.md). - -## Everyone who contributes - -Open a PR, get it merged, and your avatar appears below automatically - no manual -list to maintain. The mosaic is generated from the GitHub -[contributors graph](https://github.com/ai-driven-dev/framework/graphs/contributors). - -[![Contributors](https://contrib.rocks/image?repo=ai-driven-dev/framework)](https://github.com/ai-driven-dev/framework/graphs/contributors) - -> The avatar mosaic renders only once the repository is **public** (the -> contrib.rocks image API needs public access). Until then, see the graph link -> above. - -## Maintainers (Habilité AIDD) - -Live source of truth: the -[`@ai-driven-dev/habilitated`](https://github.com/orgs/ai-driven-dev/teams/habilitated) -team. - -- [@blafourcade](https://github.com/blafourcade) (lead) -- [@alexsoyes](https://github.com/alexsoyes) -- [@Conrardy](https://github.com/Conrardy) -- [@jdm-web](https://github.com/jdm-web) -- [@GregoireAMATO](https://github.com/GregoireAMATO) -- [@victor-langlois](https://github.com/victor-langlois) diff --git a/GOVERNANCE.md b/GOVERNANCE.md index 6f96c4ba7..037653211 100644 --- a/GOVERNANCE.md +++ b/GOVERNANCE.md @@ -1,81 +1,37 @@ # Governance -How decisions get made in the AI-Driven Dev Framework. Four roles form a -**ladder** - each rung keeps every right of the rungs below and adds its own. +How decisions get made in the AI-Driven Dev Framework. -```mermaid ---- -title: AIDD roles ladder ---- -flowchart LR - Public["Public - free"] - CoreTeam["Core Team - AIDD member"] - Certifie["Certifie AIDD - certified"] - Habilite["Habilite AIDD - maintainer"] - - Public -- join programme --> CoreTeam - CoreTeam -- pass certification --> Certifie - Certifie -- promoted --> Habilite -``` +Four roles form a **ladder**, each rung keeps every right of the rungs below and adds its own. ## 👥 Roles | Tier | How you get there | Adds (on top of the rung below) | Team | | ---- | ----------------- | ------------------------------- | ---- | -| **Public** | Free, any GitHub account | Open issues, comment, react / upvote ideas (signal only) | - | +| **Public** | Free, any GitHub account | Open issues, comment, react / upvote ideas (signal only), **open a pull request** once its issue is validated | - | | **Core Team** | Active [AIDD programme](https://www.ai-driven-dev.fr/) member (training, community, coaching) | A **counted roadmap vote** + voice on direction | [`core-team`](https://github.com/orgs/ai-driven-dev/teams/core-team) | -| **Certifié AIDD** | Pass the [AIDD certification](https://www.ai-driven-dev.fr/) | Open **pull requests** (framework + courses) | [`certified`](https://github.com/orgs/ai-driven-dev/teams/certified) | -| **Habilité AIDD** | Promoted by a majority of Habilité | **Approve & merge** PRs, **quality veto**, appoint/promote, guard the standard | [`habilitated`](https://github.com/orgs/ai-driven-dev/teams/habilitated) | - -**Plugin owners** are Habilité scoped to one plugin (`aidd-context`, `aidd-dev`, -…): they merge and triage for that plugin only. +| **Certified Members** | Pass the [AIDD certification](https://www.ai-driven-dev.fr/) | **Validate contribution issues** (triage: move `Ideation` → `Todo` on the [Roadmap board](https://github.com/orgs/ai-driven-dev/projects/8)) | [`certified-members`](https://github.com/orgs/ai-driven-dev/teams/certified-members) | +| **Maintainer** | Certified member promoted to give AIDD Trainings (**Trusted Partner**), or **AIDD Staff** | **Approve & merge** PRs, **quality veto**, appoint/promote, guard the standard | [`trusted-partners`](https://github.com/orgs/ai-driven-dev/teams/trusted-partners) | ## 📊 Roadmap voting - **Public** reacts (👍 / upvote). This is a **signal**, not a counted vote; it promotes an item to a formal vote. -- **Core Team, Certifié, Habilité** each cast **one equal vote**. The vote is a +- **Core Team, Certified, Maintainer** each cast **one equal vote**. The vote is a benefit of AIDD membership (the programme is a paid training / community / - coaching offering) - that is what turns a signal into a counted vote. -- **Habilité** holds the tiebreak and a **quality veto** as the top rung. + coaching offering), that is what turns a signal into a counted vote. +- **Maintainer** holds the tiebreak and a **quality veto** as the top rung. - A poll runs **≥ 7 days**. Accepted items land on the [AIDD Roadmap board](https://github.com/orgs/ai-driven-dev/projects/8). +- This vote decides **roadmap priority**, not whether a contribution issue can + move to a PR, that validation is immediate, see [`CONTRIBUTING.md`](CONTRIBUTING.md). -## ✅ Code decisions (merging) - -- Merge authority is **Habilité only**. -- **Lazy consensus** (default): a Habilité may merge if no other Habilité objects within 72h, there is ≥1 Habilité approval, and CI passes. -- **Quality veto**: any Habilité can block with a `request-changes` review until resolved. -- **Explicit consensus** — for cross-plugin changes, contract changes (skill frontmatter, `marketplace.json`), or licensing/governance changes: ≥2 Habilité approve, none object. - -## 📈 Promotion and inactivity - -- **→ Certifié**: pass the AIDD certification → added to `certified`. -- **→ Habilité**: a Habilité nominates a Certifié with a track record of merged, - standard-consistent work; a majority of Habilité approves → added to - `habilitated` and `CODEOWNERS`. -- A Core Team / Habilité member inactive **6 months** may be moved to **emeritus** - by a Habilité majority (keeps recognition, loses vote/merge until they return). - -## 🧩 Plugins, breaking changes, conflicts - -- **New plugin**: lands via PR following [`docs/CREATE_PLUGIN.md`](docs/CREATE_PLUGIN.md) - (description on every skill, registered in - `marketplace.json` + `release-please-config.json`, a Habilité owner). Starts - `experimental` → `release candidate` (one external success) → `stable` (Habilité - review). -- **Deprecate/remove**: any Habilité, with a rationale + migration path; stays - installable 90 days. -- **Breaking changes**: Conventional Commits `!` suffix; document the migration - path. Prompt-only behaviour changes also count - flag in the PR and announce on - Discord. -- **Conflict of interest**: a Habilité with a stake in a PR discloses it and is - not the sole approver (a second Habilité approval becomes mandatory). - -## 🔒 Branch protection on `main` and `next` +## ✅ Code decisions -- **`main`** (production): no direct push, force-push, or deletion. Every change is a PR with ≥1 Habilité (CODEOWNERS) approval, passing checks (`lefthook (framework-local checks)`, `Commitlint`), and resolved threads. Rules: [`.github/rulesets/main.json`](.github/rulesets/main.json) (enforced once the repo is public / on a paid plan). -- **`next`** (integration): PRs with ≥1 review and passing checks, no direct push or deletion. The release bot bypasses to push the automated back-merge; the `admin` team may merge without a second review. Rules: [`.github/rulesets/next.json`](.github/rulesets/next.json). Release flow: [`RELEASE.md`](RELEASE.md). +- Merge authority is **Maintainer only**. +- **Lazy consensus** (default): a Maintainer may merge if no other Maintainer objects within 72h, there is ≥1 Maintainer approval, and CI passes. +- **Quality veto**: any Maintainer can block with a `request-changes` review until resolved. +- **Explicit consensus** : for cross-plugin changes, contract changes, or licensing/governance changes: ≥2 Maintainer approve. ## 📜 Code of Conduct & amendments diff --git a/README.md b/README.md index eba3b8ff7..1539cad72 100644 --- a/README.md +++ b/README.md @@ -315,6 +315,8 @@ Free and open-source (MIT). If it saves you time, [a ⭐](https://github.com/ai- - **Idea or bug?** [Open an issue](https://github.com/ai-driven-dev/framework/issues) or [start a discussion](https://github.com/ai-driven-dev/framework/discussions). - **Contribute code** → [`CONTRIBUTING.md`](CONTRIBUTING.md). +[![Contributors](https://contrib.rocks/image?repo=ai-driven-dev/framework)](https://github.com/ai-driven-dev/framework/graphs/contributors) + ---
diff --git a/ROADMAP.md b/ROADMAP.md index c979ef24f..ac20410fd 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -1,13 +1,15 @@ # Roadmap -The live roadmap is the [AIDD Roadmap board](https://github.com/orgs/ai-driven-dev/projects/8): a milestone is a theme, due on a Friday, and everything without one is the backlog, ordered by priority. That board is the single source of truth; this file deliberately does not duplicate it. Shipped reality lives in [`CHANGELOG.md`](./CHANGELOG.md). +The live roadmap is the [AIDD Roadmap board](https://github.com/orgs/ai-driven-dev/projects/8): a milestone is a theme, due on a Thursday, and everything without one is the backlog, ordered by priority. That board is the single source of truth. + +Shipped reality lives in [`CHANGELOG.md`](./CHANGELOG.md). ## How to influence -Priority is set by a community vote - full mechanism (who votes, weighting, polls) in [`GOVERNANCE.md`](./GOVERNANCE.md#-roadmap-voting). To influence it: +Priority is set by a community vote — mechanism (who votes, weighting, polls) in [`GOVERNANCE.md`](./GOVERNANCE.md#-roadmap-voting). -- Open a `feat:` issue or an idea in [GitHub Discussions](https://github.com/ai-driven-dev/framework/discussions), and 👍 / upvote what you want - the signal that promotes an item to a vote. -- Discuss on [Discord](https://discord.gg/EWySJSpjWs). -- Sponsored work: see [`.github/FUNDING.yml`](./.github/FUNDING.yml). +To influence it: -Accepted items land on the [AIDD Roadmap board](https://github.com/orgs/ai-driven-dev/projects/8). +- Open an issue or an idea in [GitHub Discussions](https://github.com/ai-driven-dev/framework/discussions) and 👍 / upvote what you want. +- Weekly sync: Thursdays 10:30 on the [Framework channel on Discord](https://discord.com/channels/1173363373115723796/1512081578858119238) decides what the next milestone contains. +- Sponsored work: see [`.github/FUNDING.yml`](./.github/FUNDING.yml). diff --git a/aidd_docs/tasks/2026_07/2026_07_29_simplifier-contribution/brainstorm.md b/aidd_docs/tasks/2026_07/2026_07_29_simplifier-contribution/brainstorm.md new file mode 100644 index 000000000..83e1b2dff --- /dev/null +++ b/aidd_docs/tasks/2026_07/2026_07_29_simplifier-contribution/brainstorm.md @@ -0,0 +1,26 @@ +# Simplifier la contribution — un seul chemin, issue-first + +Aujourd'hui le guide de contribution différencie l'entrée par rôle (Public/Core Team/Certifié/Habilité) et réserve l'ouverture de PR au Certifié. Objectif : un seul chemin pour tout le monde, sans distinction de rôle. Seule règle dure : une issue avant toute PR, pour cadrer le sujet en amont et éviter du dev hors-sujet ou contraire aux principes. + +## Ce qui est clair + +- Un seul flux, ouvert à tous, plus de tableau d'entrée par rôle. +- Issue obligatoire avant PR — deux templates au choix du contributeur : minimal, full. Formulaires structurés GitHub (comme `bug_report.yml`/`feature_request.yml`), pas de texte libre. +- Feu vert = un mainteneur bascule le Status de l'issue `Ideation → Todo` sur le Roadmap board existant (`ai-driven-dev` project #8). Pas de nouveau label, pas de nouveau mécanisme. +- Pas de vote roadmap (≥7 jours) pour ces issues — supprimé. +- N'importe qui peut ensuite ouvrir la PR — le gate "Certifié requis" (`GOVERNANCE.md`) est supprimé. Vérifié : ça ne touche que ce droit-là (Certifié garde son vote roadmap et son chemin de promotion vers Habilité, intacts). +- Nouvelle section **Principes** dans `CONTRIBUTING.md` (pas un fichier à part, pas dans `CLAUDE.md` qui est IA-facing) : anti AI-slop, éviter le gaspillage de token, suivre la structure des skills, faire évoluer la memory. La relecture ligne-à-ligne existe déjà (case à cocher PR template) — pas à réécrire. +- Format final attendu : ultra concis, bullet points, un flow mermaid si ça aide à visualiser le chemin (issue → validation → PR). Le contributeur doit pouvoir suivre en cliquant, ou coller la section telle quelle à une IA qui exécute pour lui. + +## Encore ouvert + +- Champs exacts des deux templates (minimal vs full) — détail d'implémentation, tranché à l'écriture. +- Formulation exacte de la section Principes — les exemples sont posés, la prose reste à écrire. + +## Suivi séparé (pas dans ce brief) + +- Challenger l'ensemble des docs root + `docs/` (12 + 7 fichiers à la main) — sujet distinct, à ouvrir comme sa propre idée si besoin. + +## Next move + +Écrire les changements : `CONTRIBUTING.md` (flux + section Principes), `GOVERNANCE.md` (retrait du gate Certifié sur l'ouverture de PR), les 2 templates d'issue. diff --git a/aidd_docs/tasks/2026_07/2026_07_29_simplifier-contribution/phase-1.md b/aidd_docs/tasks/2026_07/2026_07_29_simplifier-contribution/phase-1.md new file mode 100644 index 000000000..f8df7c50f --- /dev/null +++ b/aidd_docs/tasks/2026_07/2026_07_29_simplifier-contribution/phase-1.md @@ -0,0 +1,77 @@ +--- +status: done +--- + + + +# Instruction: Flux, gouvernance et templates + +## Architecture projection + +> Tree of the final files. ✅ create · ✏️ modify · ❌ delete + +```txt +. +├── CONTRIBUTING.md ✏️ +├── GOVERNANCE.md ✏️ +└── .github/ + └── ISSUE_TEMPLATE/ + ├── feature_request.yml ✏️ (→ template minimal) + └── roadmap.yml ✏️ (→ template full) +``` + +## User Journey + +```mermaid +flowchart LR + A["Contributeur ouvre une issue"] -->|"minimal ou full"| B{"Mainteneur valide ?"} + B -->|"Status: Ideation → Todo"| C["N'importe qui ouvre la PR"] + B -->|"reste en Ideation"| D["Ajustement / discussion"] + C --> E["Review Habilité"] --> F["Merge"] +``` + +## Tasks to do + +### `1)` Réécrire CONTRIBUTING.md + +> Remplacer le tableau d'entrée par rôle par le flux unique issue-first, ajouter la section Principes. + +1. Remplacer la section "👥 Who can contribute" par le flux unique : issue (minimal ou full) → mainteneur valide (bascule Status `Ideation → Todo` sur le Roadmap board) → n'importe qui ouvre la PR. +2. Insérer le mermaid flow ci-dessus (ou équivalent), pensé pour être suivi en cliquant ou collé tel quel à une IA. +3. Ajouter une section "📜 Principes" : anti AI-slop, éviter le gaspillage de token, suivre la structure des skills, faire évoluer la memory. Ne pas réécrire la relecture ligne-à-ligne (déjà couverte par la case à cocher du `PULL_REQUEST_TEMPLATE.md`). +4. Retirer toute mention du vote roadmap (≥7 jours) pour ces issues. + +### `2)` Réécrire GOVERNANCE.md + +> Aligner les droits Certifié/Habilité sur le nouveau flux. + +1. Dans la table des rôles, remplacer "Open pull requests (framework + courses)" par "Valider les issues de contribution (triage)" sur la ligne Certifié. +2. Laisser la ligne Habilité inchangée (merge, veto qualité, nomination). +3. Vérifier que § Roadmap voting ne laisse pas croire qu'un vote est requis pour valider une issue de contribution. + +### `3)` Repurposer feature_request.yml en template minimal + +> Un template court, ouvert à tout contributeur, plus lié au vote supprimé. + +1. Retirer le texte d'intro qui annonce "popular ideas get promoted to a roadmap vote". +2. Recadrer l'intro pour tout contributeur (pas seulement une proposition de contenu). +3. Garder les champs `problem`/`solution` existants tels quels. + +### `4)` Repurposer roadmap.yml en template full + +> Le même formulaire détaillé, ouvert à tous au lieu de réservé aux mainteneurs. + +1. Retirer "For maintainers planning framework work" et toute formulation réservant le template. +2. Garder les champs `problem`/`scope`/`acceptance`/`prior-art`/`out-of-scope` tels quels. +3. Nom et description du template : libres, à choisir à l'écriture. + +## Test acceptance criteria + + + +| Task | Acceptance criteria | +| ---- | -------------------------------- | +| 1 | `CONTRIBUTING.md` n'a plus de tableau d'entrée par rôle ; le flux issue-first et la section Principes sont visibles | +| 2 | La ligne Certifié de `GOVERNANCE.md` ne mentionne plus l'ouverture de PR, mentionne la validation d'issue | +| 3 | `feature_request.yml` ne référence plus de vote roadmap, reste utilisable par n'importe quel contributeur | +| 4 | `roadmap.yml` ne se présente plus comme réservé aux mainteneurs, ses champs sont intacts | diff --git a/aidd_docs/tasks/2026_07/2026_07_29_simplifier-contribution/plan.md b/aidd_docs/tasks/2026_07/2026_07_29_simplifier-contribution/plan.md new file mode 100644 index 000000000..3ddc2c5f0 --- /dev/null +++ b/aidd_docs/tasks/2026_07/2026_07_29_simplifier-contribution/plan.md @@ -0,0 +1,40 @@ +--- +objective: "Tout contributeur suit un seul chemin issue-first, validé par un Certifié ou un Habilité, avant d'ouvrir sa PR." +status: implemented +--- + + + +# Plan: Simplifier la contribution — un seul chemin, issue-first + +## Overview + +| Field | Value | +| ---------- | ----------------------- | +| **Goal** | Remplacer le flux de contribution par rôle par un flux unique, ouvert à tous, gardé par une issue validée avant PR | +| **Source** | [`aidd_docs/tasks/2026_07/2026_07_29_simplifier-contribution/brainstorm.md`](./brainstorm.md) | + +## Phases + +| # | Phase | File | +| --- | ------------ | ----------------------------- | +| 1 | Flux, gouvernance et templates | [`phase-1.md`](./phase-1.md) | + +## Resources + +| Source | Verified | +| ------ | ----------------- | +| GitHub GraphQL API — `ai-driven-dev` `projectV2(number: 8)` | Le champ Status existe déjà : `Ideation → Todo → In Progress → In review → Done` | +| GitHub REST API — `repos/ai-driven-dev/framework/teams` | `certified-members` a déjà `triage: true` sur le repo (push+triage+pull), hérité par `trusted-partners` (Habilité) | +| `.github/rulesets/next.json` (in-repo) | L'ouverture de PR n'est jamais techniquement gatée par équipe — seule la review/merge l'est | + +## Decisions + + + +| Decision | Why | +| ---------- | ----- | +| Supprimer le gate "Certifié requis" pour ouvrir une PR (`GOVERNANCE.md`) | Décision produit confirmée par l'utilisateur, malgré l'impact sur le programme de certification payant | +| Réutiliser le champ Status existant du Roadmap board (`Ideation → Todo`) comme signal de validation | Évite d'inventer un nouveau label/mécanisme parallèle | +| Repurposer `feature_request.yml` et `roadmap.yml` en templates minimal/full plutôt que créer 2 nouveaux fichiers | Les champs existants couvrent déjà le besoin — pas de doublon | +| Le droit Certifié devient "valider les issues de contribution (triage)" à la place de "ouvrir une PR" | Permission déjà réelle (`triage: true` sur l'équipe), garde la ligne Certifié distincte de Core Team sans toucher la pipeline de nomination Habilité | diff --git a/docs/MAINTAINERS.md b/docs/MAINTAINERS.md index ffbde9642..dc1692190 100644 --- a/docs/MAINTAINERS.md +++ b/docs/MAINTAINERS.md @@ -1,6 +1,6 @@ # Maintainers guide -How to operate this repository day to day. This file is the **Habilité** (maintainer) playbook — it does not restate the others: +How to operate this repository day to day. This file is the **Maintainer** playbook — it does not restate the others: - **Who** may do what + decision rules → [`GOVERNANCE.md`](../GOVERNANCE.md). - **How contributors work** → [`CONTRIBUTING.md`](../CONTRIBUTING.md). @@ -11,7 +11,7 @@ How to operate this repository day to day. This file is the **Habilité** (maint | ----- | ----- | ---- | | Published plugins | `.claude-plugin/marketplace.json` + `plugins/` | the only thing shipped in a release | | Live backlog & roadmap | [Project board #8](https://github.com/orgs/ai-driven-dev/projects/8) | single source of truth | -| Roles → access | GitHub teams `habilitated` / `certified` / `core-team` | mapped to the role ladder | +| Roles → access | GitHub teams `trusted-partners` / `certified-members` / `core-team` | mapped to the role ladder | | Branch protection | ruleset "main protection" + `.github/rulesets/main.json` | `main` is PR-only | | Releases | release-please (`ci.yml`) + `release-please-config.json` | 8 packages (root + 7 plugins), auto | | Pre-commit checks | `lefthook.yml` + `scripts/` | json/yaml/schema/frontmatter/catalogs/counts | @@ -119,8 +119,8 @@ Keep the file and the live ruleset in sync. Roles, promotion, and inactivity rules → [`GOVERNANCE.md`](../GOVERNANCE.md#-roles). Team mechanics only: -- Habilité ↔ `habilitated` team + `CODEOWNERS`. -- Core Team / Certifié ↔ `core-team` / `certified` teams. +- Maintainer ↔ `trusted-partners` team + `CODEOWNERS`. +- Core Team / Certified Member ↔ `core-team` / `certified-members` teams. ## 🛡️ Security @@ -132,7 +132,7 @@ Roles, promotion, and inactivity rules → [`GOVERNANCE.md`](../GOVERNANCE.md#-r - **README counts** — the hero `N plugins · N skills · N agents` block (between the `counts:start`/`counts:end` markers) and each per-plugin `N skills` span — auto-generated by `scripts/sync-readme-counts.mjs` via lefthook. - **Per-plugin `CATALOG.md`** — auto-generated by `scripts/summarize-markdown.js` via lefthook. -- **`CONTRIBUTORS.md` mosaic** — the contrib.rocks image updates itself. +- **README contributors mosaic** — the contrib.rocks image updates itself. ## 🛠️ Multi-tool