Skip to main content

NapkinStack

Framework de travail pour faire travailler plusieurs équipes et leurs agents sur un même dépôt : modules, contrats, garde-fous en CI. Sur le modèle de Django ou Rails, une commande crée le projet, qui reçoit ensuite les nouvelles versions à sa demande ; aucune stack applicative n'est imposée. Positionnement et vocabulaire : PRODUCT.md §1.

État : en construction (v0.1.0). Toutes les commandes fonctionnent depuis ce dépôt ; la première version publiée sur PyPI arrive au chantier M5, avant un premier projet pilote. Suivi : feuille de route, docs/governance/chantiers.md.

Le parcours d'un projet

flowchart LR
    I["Installer<br/>uv tool install"]:::cmd --> N["nstack init"]:::cmd
    N --> G["Publier sur GitHub<br/>appliquer la checklist"]:::humain
    G --> D["nstack doctor<br/>lecture seule"]:::cmd
    D --> M["nstack new-module"]:::cmd
    M --> W["Travail en PR<br/>l'équipe et son agent"]:::humain
    W --> U["nstack update<br/>branche fusionnée"]:::cmd
    U --> P["PR relue<br/>validée par la CI"]:::humain
    P -->|"version suivante"| U

    classDef cmd fill:#1f2937,color:#fff
    classDef humain fill:#065f46,color:#fff

Légende — gris : commande NapkinStack · vert : action de l'équipe. Décision : PDR-0001.

Le projet possède son squelette et l'adapte librement. Chaque nouvelle version lui arrive à sa demande, fusionnée avec ses adaptations ; les conflits restent à l'équipe.

flowchart LR
    V1["Squelette v0.1<br/>base commune"]:::ref --> F{"Fusion<br/>à 3 voies"}
    V2["Squelette v0.2<br/>correctifs NapkinStack"]:::ns --> F
    PR["Projet<br/>adaptations de l'équipe"]:::equipe --> F
    F -->|"lignes différentes"| B["Branche de mise à jour<br/>correctifs + adaptations"]:::ok
    F -->|"même ligne modifiée"| X["Conflit marqué<br/>commit refusé"]:::ko

    classDef ref fill:#374151,color:#fff
    classDef ns fill:#1e3a8a,color:#fff
    classDef equipe fill:#065f46,color:#fff
    classDef ok fill:#065f46,color:#fff
    classDef ko fill:#7c2d12,color:#fff

Légende — gris : version dont le projet est issu · bleu : nouvelle version · vert : travail de l'équipe et résultat accepté · rouge : conflit laissé à l'équipe.

Installer

uv tool install napkinstack --with-executables-from pre-commit   # prérequis : uv et git
nstack init mon-projet

Disponible dès la publication de la v0.1.0 sur PyPI ; chaque projet épingle ensuite sa version et la change par nstack update.

Les commandes

Commande Rôle
nstack init <dossier> Crée le projet : squelette, dépôt git, commit initial, checklist GitHub
nstack doctor Vérifie le poste et les réglages GitHub, en lecture seule
nstack new-module <nom> <organisation>/<équipe> <criticité> Crée un module, sans stack imposée
nstack check, test, bootstrap [module] ; nstack run <module> Exécutent les commandes déclarées dans le manifest du module
nstack fitness Manifests, frontières entre modules, skills
nstack pr-scope Une PR = un module, budget de revue
nstack skills Expose les playbooks en skills pour l'agent
nstack update Pose la nouvelle version sur une branche à relire

Prérequis : uv et git. Les garde-fous bloquent vraiment sur un dépôt GitHub public, ou privé sous l'offre Team ou Pro ; sur un dépôt privé de l'offre Free, la CI informe sans bloquer (précision de PDR-0001).

IA : NapkinStack n'en embarque aucune. L'agent de l'équipe (Claude Code, Codex, Copilot…) lit le kernel et les playbooks, lance les commandes, et la CI accepte ou refuse ses propositions comme celles de n'importe quel contributeur.

Ce dépôt

flowchart LR
    S["skeleton/<br/>squelette de projet"]:::livre -->|"copier.yml"| P["Projet d'une équipe"]:::projet
    E["src/napkinstack/<br/>moteur nstack"]:::livre -.->|"version épinglée"| P
    A["PRODUCT.md · docs/governance/<br/>platform/ · CI du dépôt"]:::interne

    classDef livre fill:#1e3a8a,color:#fff
    classDef projet fill:#065f46,color:#fff
    classDef interne fill:#374151,color:#fff

Légende — bleu : livré aux projets · vert : projet généré, qui possède son squelette · gris : développement de NapkinStack, jamais copié (PDR-0001 R6). Trait plein : génération ; pointillé : dépendance versionnée.

Chemin Rôle
skeleton/ Ce que reçoit chaque projet : kernel, playbooks, manuel, CI, hooks
copier.yml Questions posées à la création (gabarit Copier, ADR-0001)
src/napkinstack/ Le moteur, commande nstack
platform/ Enveloppe du module moteur : manifest, runbook, tests
PRODUCT.md, docs/governance/ Contexte de travail sur NapkinStack
docs/adr/, docs/pdr/ Décisions de NapkinStack

Développer NapkinStack

uv sync                               # prérequis : uv
uv run pre-commit install
uv run nstack fitness                 # garde-fous du dépôt
uv run bash platform/tests/run.sh     # oracle : chaque garde-fou prouve qu'il sait échouer
uv run nstack init /tmp/essai --source . --ref HEAD   # projet d'essai depuis l'arbre de travail
uv run nstack doctor --root /tmp/essai                # poste et réglages GitHub, en lecture seule

Contribuer : CONTRIBUTING.md, après PRODUCT.md.

Licence : MIT.

Release files for napkinstack 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for napkinstack 0.1.0
File Size Uploaded
napkinstack-0.1.0.tar.gz 25.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for napkinstack 0.1.0
File Interpreter ABI Platform
napkinstack-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 59.4 kB

Release files / napkinstack-0.1.0.tar.gz

Download URL napkinstack-0.1.0.tar.gz
Size 25.5 kB
Tags Source
SHA-256 checksum
How to use checksums
72f1d116f6f30d19004711d339bd3138c86566654c0e29d56e25667b544e9053
BLAKE2b-256 checksum
How to use checksums
55dc2eb94f8e14908f4c3281c5af44f082ac7f351275c43c1af4bc072b880a03
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 15, 2026.

Transparency log

Release files / napkinstack-0.1.0-py3-none-any.whl

Download URL napkinstack-0.1.0-py3-none-any.whl
Size 34.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
59aa39bcf827d36fb4fcaa6154265b1574a56e6f32d10b6c613e4c9bb65e34d4
BLAKE2b-256 checksum
How to use checksums
0153e36eaee3aa6d76cc90ce9191afe41cd96bc79d696e4f07c759c9594555bd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 15, 2026.

Transparency log

Release history Release notifications | RSS feed

0.6.0

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.0

2 release files

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page