npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@mostajs/kind-catalog

v0.4.0

Published

Catalogue de KINDS — fiches d'exigence réutilisables, projetables en plan mostajs-devtest/1 lisible par qatrax. N'exécute rien, ne stocke rien.

Readme

@mostajs/kind-catalog

Auteur : Dr Hamid MADANI [email protected] · AGPL-3.0-or-later · couche N1

Un catalogue de fiches d'exigence réutilisables, qui se projette dans le plan de test du projet. Chaque fiche porte la question d'un métier, ses critères de succès, ses erreurs connues avec leur conséquence, et ses épreuves.

Le module n'exécute rien et ne stocke rien. Il décrit, valide et projette.

npm i @mostajs/kind-catalog

Pourquoi

Un défaut coûte deux fois : la première pour le trouver, la seconde pour le retrouver dans le projet suivant. La sécurité applicative a réglé cela il y a vingt ans avec CWE — un catalogue d'erreurs connues, chacune portant sa conséquence, nourri par des faits, et branché aux outils. L'ingénierie des exigences n'avait pas son équivalent : le meilleur catalogue de patrons d'exigences existant n'est branché à rien, et il est resté un livre.

Une fiche qui ne descend pas dans le plan de test du projet ne sera pas appliquée, quelle que soit sa qualité.

En trente lignes

import { defineKind, loadCatalogue, toDevtest, instantiate, statsCatalogue } from '@mostajs/kind-catalog';

// 1 · écrire une fiche
export default defineKind({
  ref: 'KIND-PERIMETRE-01',
  domaine: 'acces',
  enonce: 'Une permission ouvre une CAPACITÉ, jamais un PÉRIMÈTRE.',
  succes: ['le porteur agit sur les instances qui lui reviennent'],          // REQUIS
  erreurs: [{                                                                // REQUIS
    titre: 'la capacité est prise pour le périmètre',
    consequence: 'un parent lit le dossier d’un autre enfant — mêmes droits, rien d’anormal à l’écran',
  }],
  test: [{ action: 'agir sur l’instance d’un autre', attendu: 'refus, sans nommer l’instance' }],
  verdict: 'eprouve',
  origine: [{ type: 'incident', source: 'ATC — presence.mjs, portail.mjs', date: '2026-09-01' }],  // REQUIS
});

// 2 · la projeter vers l'outil de suivi — AUCUN format nouveau
const kinds = await loadCatalogue('./node_modules/@mostajs/kind-catalog/kinds');
const plan  = toDevtest(kinds, { project: { key: 'atc', name: 'ATC' }, prefix: 'ATC' });
// → { plan: 'mostajs-devtest/1', specs[], realisations[], tests[] }   lu par @mostajs/qa-engine

// 3 · la reprendre, telle quelle ou AFFINÉE — l'écart est tracé
instantiate(kinds[0], { app: 'ATC', affine: {
  succes: { valeur: [...], motif: 'le centre est soumis à un contrôle annuel' },   // MOTIF REQUIS
}});

Ce qu'il garantit

| | | |---|---| | succes et erreurs sont requis | ce sont les champs qu'on omet, et ceux qui servent | | chaque erreur porte sa conséquence | « ne pas oublier X » ne se retient pas ; « sans X, tout parent lit le dossier de tous » se retient | | on ne se décerne pas l'expérience | eprouve exige une origine incident ou terrain. Une reference suffit pour entrer en propose — la contrainte porte sur le galon, jamais sur l'entrée | | un affinage sans motif est refusé | sans lui, « réutiliser » se dégrade en « recopier » | | une fiche écartée reste | avec son motif : celle qui disparaît sera réinventée | | aucun format nouveau | la projection est validée par le parseur officiel de @mostajs/qa-engine | | il n'écrit rien | vérifié contre un dépôt piégé (T-KC-12) |

Le corpus livré

21 fiches · 15 éprouvées (71 %) · 84 erreurs cataloguées · 35 incidents · 11 domaines.

Transverses — acces · donnees · apprentissage · decision · integration — toutes issues de défauts constatés en production, avec leur date et leur fichier.

Métier — btp · alimentaire · elevage · apiculture · agronomie · electronique — adossées aux corpus établis de chaque profession (HACCP, itinéraires techniques, problème du régime de Stigler 1945, CPM/PERT), en propose.

Nous affichons les deux colonnes. Un catalogue qui annoncerait 100 % d'éprouvé mentirait ; celui qui annoncerait 0 % ne vaudrait rien.

Où il s'arrête

| besoin | module | |---|---| | résoudre | @mostajs/ro-pla — 23 dialectes, 12 familles | | valider le plan projeté | @mostajs/qa-engine | | mémoriser l'efficacité et le retour d'usage | @mostajs/skill-library | | activer une question sous condition de données | @mostajs/assistant-pilote | | persister les fiches | personne — ce sont des fichiers versionnés |

Pourquoi pas une base ? Une fiche est un document éditorial : elle se lit, se discute, se relit six mois plus tard. Son historique est celui d'un fichier. Ce qui va en base, c'est ce que produit son usage — et la fiche se relit quand le journal, lui, s'entasse.

Documentation

docs/ porte les 17 livrables DEVRULES : état de l'art, audit, plan de développement, plan de test, revue de sécurité, DPIA, matrice de sourcing, documents et présentations.

⚠️ Charger un corpus, c'est exécuter du code : une fiche est un module JavaScript. Une fiche se revoit comme du code, jamais comme un document — voir docs/15-REVUE-SECURITE-KIND-CATALOG.md.