open-index/open-npm huggingface dataset:
npm package: @m-software-engineering/m-spec
Description: Lightweight spec-driven development framework for brownfield AI agent workflows.
Latest version: 0.1.1

# m-spec

m-spec is a TypeScript CLI that scaffolds and maintains a spec-driven workflow for brownfield repositories that use AI coding agents.

## What it does

- Initializes an `m-spec/` workspace with specs, workflows, and project policy files.
- Generates agent-specific wrappers and instruction files for Codex, Claude, or Copilot.
- Updates managed files from saved configuration.
- Validates generated assets and local setup.
- Reconciles change-specific deltas back into source-of-truth specs.

## Why this is aligned with Spec-Driven Development

- **Spec-first workflow**: generated plan/spec/implement/optimize wrappers keep work anchored in `m-spec/changes/...` artifacts.
- **Strict TDD helpers**: generated scripts now include `run-red.sh` (expects failing tests) and `run-green.sh` (expects passing tests).
- **Lightweight optimization loop**: autoresearch templates include benchmark + checks + ratchet scripts so experiments can be kept/discarded consistently.
- **Agent-agnostic scaffolding**: Codex skills, Claude agents, and Copilot agents/hooks are generated from the same workflow definitions.

## Requirements

- Node.js 22+
- npm

## Install globally from npm

```bash
npm i -g @m-software-engineering/m-spec
```

## Install dependencies

```bash
npm install
```

## Run locally

Use the development entrypoint:

```bash
npm run dev -- <command> [options]
```

Running without a command now opens an interactive command picker:

```bash
npm run dev
```

Common commands:

```bash
npm run dev -- init .
npm run dev -- update .
npm run dev -- doctor .
npm run dev -- reconcile <change-slug> .
```

Build the distributable CLI:

```bash
npm run build
```

After building, run the bundled binary:

```bash
node dist/cli.js <command>
```

## Test and quality checks

Run tests:

```bash
npm test
```

Run type checks:

```bash
npm run typecheck
```

Clean generated artifacts:

```bash
npm run clean
```

## Contributing best practices

- Keep changes small and focused on one behavior.
- Add or update tests for every behavior change.
- Run `npm test` and `npm run typecheck` before committing.
- Preserve generated file determinism and avoid hidden side effects.
- Update docs when command behavior or generated outputs change.

## Releases

- Add a Changeset for any publishable change with `npm run changeset`.
- Merges to `main` run CI and the release job in GitHub Actions.
- If unreleased Changesets exist, the workflow opens or updates a release PR.
- Merging that release PR publishes the package to npm using the `NPM_TOKEN` GitHub secret.
npm package: @m-thalmann/eslint-config-angular
Description: A package for Angular ESLint code style rules
Author: Matthias Thalmann
Latest version: 0.4.0

# @m-thalmann/eslint-config-angular

> [!NOTE]  
> This package only supports the new [flat config format](https://eslint.org/docs/latest/use/configure/configuration-files-new)

This package provides a base configuration for the [Angular ESLint Plugin](https://github.com/angular-eslint/angular-eslint/)

## Installation

> [!NOTE]
> You should also install the `@m-thalmann/eslint-config-base` package and set it up like described in it's README

```bash
npm install --save-dev @m-thalmann/eslint-config-angular
```

> [!IMPORTANT]  
> This configuration already ships with the `@m-thalmann/eslint-config-typescript` and `@m-thalmann/eslint-config-rxjs`, so no need to install them manually

## Usage

Add the config to your `eslint.config.js` file:

```javascript
// ...

const angularConfig = require('@m-thalmann/eslint-config-angular');

module.exports = [
  // ... other configurations

  // setup typescript usage!

  ...angularConfig,

  // if you are using Prettier put it's config here

  // ... override any project-specific settings
];
```

> [!Important]
> You need to setup the TypeScript usage for the `@m-thalmann/eslint-config-typescript` package as described in it's README (you don't need to install it, it's a peer dependency of this package)

If you want to customize the used prefixes for the components and directives, you have to overwrite the rules:

```javascript
module.exports = [
  // ... after applying the angular config
  {
    files: ['*.ts'],
    rules: {
      '@angular-eslint/directive-selector': [
        'error',
        {
          type: 'attribute',
          prefix: 'myApp',
          style: 'camelCase',
        },
      ],
      '@angular-eslint/component-selector': [
        'error',
        {
          type: 'element',
          prefix: 'my-app',
          style: 'kebab-case',
        },
      ],
    },
  },
];
```

> [!Tip]
> When using flat config files with VSCode for the first time you need to make sure to enable the `eslint.experimental.useFlatConfig` setting

## License

This package is released under the [MIT License](LICENSE).
npm package: @m-thalmann/eslint-config-base
Description: A package for basic ESLint code style rules
Author: Matthias Thalmann
Latest version: 0.3.0

# @m-thalmann/eslint-config-base

> [!NOTE]  
> This package only supports the new [flat config format](https://eslint.org/docs/latest/use/configure/configuration-files-new)

This package provides a base configuration for the [ESLint](https://eslint.org) code linter.

## Installation

```bash
npm install --save-dev @m-thalmann/eslint-config-base
```

You also need the following dependencies:

```bash
npm install --save-dev globals

# only if you use the prettier formatter
npm install --save-dev eslint-config-prettier
```

## Usage

Create a `eslint.config.js` file with the following contents:

```javascript
const globals = require('globals');

const baseConfig = require('@m-thalmann/eslint-config-base');
// ... any other configurations

// only if you use the prettier formatter
const prettierConfig = require('eslint-config-prettier');

module.exports = [
  {
    // add ignored paths
    ignores: ['**/dist'],
  },

  {
    languageOptions: {
      ecmaVersion: 'latest',
      globals: {
        ...globals.node,
        ...globals.browser,
      },
    },
    linterOptions: {
      reportUnusedDisableDirectives: 'error',
    },
  },

  ...baseConfig,
  // ... add additional configurations

  // put this last (only required if you use prettier)
  prettierConfig,

  // ... override any project-specific settings
];
```

> [!Tip]
> When using flat config files with VSCode for the first time you need to make sure to enable the `eslint.experimental.useFlatConfig` setting

## License

This package is released under the [MIT License](LICENSE).
npm package: @m-thalmann/eslint-config-rxjs
Description: A package for RxJS ESLint code style rules
Author: Matthias Thalmann
Latest version: 0.4.0

# @m-thalmann/eslint-config-rxjs

> [!NOTE]
> This package only supports the new [flat config format](https://eslint.org/docs/latest/use/configure/configuration-files-new)

This package provides a base configuration for the [RxJS ESLint Plugin](https://github.com/DaveMBush/eslint-plugin-rxjs).

**Note:** We switched over from https://github.com/cartant/eslint-plugin-rxjs since it seems to be abandoned and not compatible with eslint v9+.

## Installation

> [!NOTE]
> You should also install the `@m-thalmann/eslint-config-base` package and set it up like described in it's README

```bash
npm install --save-dev @m-thalmann/eslint-config-rxjs
```

## Usage

Add the config to your `eslint.config.js` file:

```javascript
// ...

const rxjsConfig = require('@m-thalmann/eslint-config-rxjs');

module.exports = [
  // ... other configurations

  // setup typescript usage!

  ...rxjsConfig,

  // if you are using Prettier put it's config here

  // ... override any project-specific settings
];
```

> [!Important]
> You need to setup the TypeScript usage for the `@m-thalmann/eslint-config-typescript` package as described in it's README (you don't need to install it, it's a peer dependency of this package)

> [!Tip]
> When using flat config files with VSCode for the first time you need to make sure to enable the `eslint.experimental.useFlatConfig` setting

## License

This package is released under the [MIT License](LICENSE).
npm package: @m-thalmann/eslint-config-typescript
Description: A package for TypeScript ESLint code style rules
Author: Matthias Thalmann
Latest version: 0.3.0

# @m-thalmann/eslint-config-typescript

> [!NOTE]  
> This package only supports the new [flat config format](https://eslint.org/docs/latest/use/configure/configuration-files-new)

This package provides a base configuration for the [TypeScript ESLint Plugin](https://typescript-eslint.io/)

## Installation

> [!NOTE]  
> You should also install the `@m-thalmann/eslint-config-base` package and set it up like described in it's README

```bash
npm install --save-dev @m-thalmann/eslint-config-typescript
```

## Usage

Add the config to your `eslint.config.js` file:

```javascript
// ...

const typeScriptConfig = require('@m-thalmann/eslint-config-typescript');

module.exports = [
  // ... other configurations

  // setup typescript usage!

  ...typeScriptConfig,

  // if you are using Prettier put it's config here

  // ... override any project-specific settings
];
```

> [!Tip]
> When using flat config files with VSCode for the first time you need to make sure to enable the `eslint.experimental.useFlatConfig` setting

### Configure TypeScript usage

You have to include additional metadata in your root eslint-config for this package:

```js
module.exports = [
  // ...
  {
    files: ['**/*.ts'], // add all file-types you want to lint with TypeScript (ts, tsx, mts, cts)
    languageOptions: {
      parserOptions: {
        project: [
          './tsconfig.base.json', // path to your root tsconfig

          // for monorepos: define additional tsconfig files for different projects
          // see https://typescript-eslint.io/linting/typed-linting/monorepos/#one-tsconfigjson-per-package-and-an-optional-one-in-the-root
          './apps/*/tsconfig.json',
        ],
        tsconfigRootDir: __dirname,
      },
    },
  },
  // ...
];
```

Also you have to at least enable `strictNullChecks` in your `tsconfig`.
<br>
It is **recommended** to use `strict` though, to enable all strict TypeScript checks:

```json
{
  // ...
  "compilerOptions": {
    // ...

    "strict": true,
    // or
    "strictNullChecks": true
  }
}
```

## License

This package is released under the [MIT License](LICENSE).
npm package: @m-thalmann/prettier-config
Description: A package for Prettier config settings
Author: Matthias Thalmann
Latest version: 1.0.1

# @m-thalmann/prettier-config

This package provides a shareable config for the [Prettier](https://prettier.io) code formatter.

## Installation

```bash
npm install --save-dev @m-thalmann/prettier-config
```

## Usage

Create a `.prettierrc.cjs` file with the following content:

```javascript
const prettierConfig = require('@m-thalmann/prettier-config');

module.exports = prettierConfig.default;
```

If you want to overwrite some settings or have additional configs to use, you can do so by using the `merge()` function:

```javascript
const prettierConfig = require('@m-thalmann/prettier-config');

const projectConfig = {
  // override any project-specific settings
};

module.exports = prettierConfig.merge(prettierConfig.default, projectConfig);
```

The `prettierConfig.merge()` function receives at least one configuration to merge with. The configurations are merged from left to right, so the last configuration will override the previous ones.

### Additional configs

#### PHP

For PHP projects, you can also include the `php` config:

```javascript
const prettierConfig = require('@m-thalmann/prettier-config');

const projectConfig = {
  // override any project-specific settings
};

module.exports = prettierConfig.merge(
  prettierConfig.default,
  prettierConfig.php('8.1'), // set your project's PHP version (optional)
  projectConfig,
);
```

Make sure to also install the `@prettier/plugin-php` package:

```bash
npm install --save-dev @prettier/plugin-php
```

The configuration for the PHP config is applied within the `overrides` array (only applying to `*.php` files).

> [!NOTE]  
> When using VS Code you have to take care of some additional settings to make the PHP plugin work correctly. See the [Prettier PHP Plugin](https://github.com/prettier/plugin-php?tab=readme-ov-file#visual-studio-code) documentation for more information.

## License

This package is released under the [MIT License](LICENSE).
npm package: @m-tools/mt-template-admin
Description: A template for admin
Author: Milk
Latest version: 1.0.60-alpha.0

# Admin

指在快速搭建一个前端的中后台项目，并且包含了部分必要的技术栈依赖

中后台开发的关注点：

- 开发效率提升
- 技术管理选型
- 项目可维护性

初始化的项目包含哪些东西：

- 包含基础布局，其中包含：左侧导航，头部；
- 包含基础的功能接口，其中包含：登录、登出、修改密码、设置菜单，缓存用户数据；
- 包含 nodejs 作为静态资源服务器，并且能够进行请求转发的配置，方便启动生产服务；
- 使用 typescript 语法，为中后台复杂的数据类型和逻辑提供基础；
- 使用 eslint 去规范代码，使代码风格统一，并且远离不安全的写法；
- 使用 mobx，更方便的管理复杂的应用状态，而不需要编写套版语法，开发效率更高；
- 兼容 qiankun，可以直接作为微前端的子应用；

## 技术栈

| 技术栈 | 版本 | 浏览器兼容性 |
| :-: | :-: | :-: |
| [react](https://zh-hans.reactjs.org/docs/getting-started.html) | 17 | [现代浏览器 IE >= 9](https://zh-hans.reactjs.org/docs/react-dom.html#browser-support) |
| [mobx](https://zh.mobx.js.org/README.html) | 6 | [现代浏览器，可回退兼容 ES5](https://zh.mobx.js.org/installation.html#%E5%9C%A8%E8%BE%83%E6%97%A7%E7%9A%84javascript%E7%8E%AF%E5%A2%83%E4%B8%AD%E4%BD%BF%E7%94%A8mobx) |
| [mobx-react](https://github.com/mobxjs/mobx-react) | 7 |  |
| [react-router](https://reactrouter.com/web/guides/quick-start) | 5 |  |
| [ant-design](https://ant.design/components/overview-cn/) | 5 |  |
| [qiankun](https://qiankun.umijs.org/zh/guide) | 2.4.X |  |
| typescript |  |  |

## 目录简介

```javascript
|- api // 接口存放目录
  |- index.ts // 接口统一导出
|- public // 页面模板，favicon
|- server // node 静态资源服务器，包括代理转发
|- src // 开发目录
  |- errorPages // 包含403、404、500的错误页面
  |- layout // 头部和左侧菜单
  |- pages // 页面部分
  |- routers // 路由配置，所有页面路由建议统一配置，方便管理
  |- stores // 全局状态配置，只包含全局状态，页面状态建议分布在相应的页面中
  |- App.tsx // 根组件
  |- index.ts // 项目入口文件
|- babel.config.js // babel 相关配置
|- jaraxxus.config.js // webpack 构建工具相关配置
|- package-lock.json
|- service.config.js // node 服务端相关配置
|- package.json
|- tsconfig.json // tsconfig 配置
```

## eslint 规则

- [eslint-config-airbnb](https://github.com/airbnb/javascript)