@mlmcps/ml-specs 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +15 -0
- package/LICENSE +21 -0
- package/README.md +106 -0
- package/ml-specs/.claude-plugin/plugin.json +11 -0
- package/ml-specs/.mcp.json +17 -0
- package/ml-specs/CHANGELOG.md +860 -0
- package/ml-specs/LICENSE +21 -0
- package/ml-specs/README.md +347 -0
- package/ml-specs/agents/coder.md +76 -0
- package/ml-specs/agents/developer.md +78 -0
- package/ml-specs/agents/pr-author.md +36 -0
- package/ml-specs/agents/reviewer.md +65 -0
- package/ml-specs/agents/scanner.md +66 -0
- package/ml-specs/agents/spec-author.md +91 -0
- package/ml-specs/agents/spec-reviewer.md +59 -0
- package/ml-specs/commands/code.md +29 -0
- package/ml-specs/commands/fix.md +67 -0
- package/ml-specs/commands/nfr.md +114 -0
- package/ml-specs/commands/pr.md +32 -0
- package/ml-specs/commands/repo-adopt.md +86 -0
- package/ml-specs/commands/repo-doctor.md +57 -0
- package/ml-specs/commands/repo-estate.md +79 -0
- package/ml-specs/commands/repo-impact.md +77 -0
- package/ml-specs/commands/repo-init.md +155 -0
- package/ml-specs/commands/repo-refresh.md +58 -0
- package/ml-specs/commands/repo-rollout.md +84 -0
- package/ml-specs/commands/repo-status.md +59 -0
- package/ml-specs/commands/spec-advance.md +81 -0
- package/ml-specs/commands/spec-build.md +66 -0
- package/ml-specs/commands/spec-fanout.md +64 -0
- package/ml-specs/commands/spec-review.md +24 -0
- package/ml-specs/commands/spec-verify.md +55 -0
- package/ml-specs/commands/spec.md +73 -0
- package/ml-specs/hooks/hooks.json +23 -0
- package/ml-specs/hooks/knowledge-drift.sh +43 -0
- package/ml-specs/hooks/secret-scan.sh +56 -0
- package/ml-specs/mcp/README.md +173 -0
- package/ml-specs/mcp/ml-specs-server.mjs +708 -0
- package/ml-specs/mcp/ml-specs-server.test.mjs +225 -0
- package/ml-specs/package.json +44 -0
- package/ml-specs/scripts/branch-policy.mjs +71 -0
- package/ml-specs/scripts/fix-specs.mjs +289 -0
- package/ml-specs/scripts/lib/cli.mjs +43 -0
- package/ml-specs/scripts/lib/estate.mjs +108 -0
- package/ml-specs/scripts/lib/http.mjs +73 -0
- package/ml-specs/scripts/lib/knowledge.mjs +91 -0
- package/ml-specs/scripts/lib/knowledge.test.mjs +70 -0
- package/ml-specs/scripts/lib/nfr.mjs +119 -0
- package/ml-specs/scripts/lib/nfr.test.mjs +89 -0
- package/ml-specs/scripts/lib/policy.mjs +114 -0
- package/ml-specs/scripts/lib/policy.test.mjs +139 -0
- package/ml-specs/scripts/lib/scm.mjs +189 -0
- package/ml-specs/scripts/lib/scm.test.mjs +155 -0
- package/ml-specs/scripts/lib/specs.mjs +192 -0
- package/ml-specs/scripts/lib/specs.test.mjs +69 -0
- package/ml-specs/scripts/lib/trace.mjs +90 -0
- package/ml-specs/scripts/lib/trace.test.mjs +110 -0
- package/ml-specs/scripts/lib/tracker.mjs +257 -0
- package/ml-specs/scripts/lib/tracker.test.mjs +177 -0
- package/ml-specs/scripts/nfr-compile.mjs +120 -0
- package/ml-specs/scripts/scripts.test.mjs +182 -0
- package/ml-specs/scripts/spec-brief.mjs +127 -0
- package/ml-specs/scripts/spec-dashboard.mjs +331 -0
- package/ml-specs/scripts/spec-fanout.mjs +120 -0
- package/ml-specs/scripts/spec-gate.mjs +329 -0
- package/ml-specs/scripts/spec-trace.mjs +91 -0
- package/ml-specs/scripts/survey-estate.mjs +230 -0
- package/ml-specs/scripts/tracker-sync.mjs +91 -0
- package/ml-specs/skills/knowledge-retrieval/SKILL.md +75 -0
- package/ml-specs/templates/CLAUDE.fragment.md +87 -0
- package/ml-specs/templates/ci/azure-pipelines-spec-gate.yml +64 -0
- package/ml-specs/templates/ci/knowledge-check.mjs +176 -0
- package/ml-specs/templates/ci/knowledge-layer.yml +35 -0
- package/ml-specs/templates/ci/spec-gate.yml +69 -0
- package/ml-specs/templates/docs/ARCHITECTURE.template.md +110 -0
- package/ml-specs/templates/docs/ESTATE.template.md +55 -0
- package/ml-specs/templates/docs/PATTERNS.template.md +80 -0
- package/ml-specs/templates/gitattributes +18 -0
- package/ml-specs/templates/hooks/settings.hooks.example.json +32 -0
- package/ml-specs/templates/mcp/.mcp.json +34 -0
- package/ml-specs/templates/settings.json +18 -0
- package/ml-specs/templates/specs/AGENTS.md +57 -0
- package/ml-specs/templates/specs/README.md +104 -0
- package/ml-specs/templates/specs/TEMPLATE.md +114 -0
- package/ml-specs/templates/standards/.mlskills.json +24 -0
- package/package.json +36 -0
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "ml-tools",
|
|
3
|
+
"owner": {
|
|
4
|
+
"name": "Motivity Labs",
|
|
5
|
+
"url": "https://github.com/MLMCPS"
|
|
6
|
+
},
|
|
7
|
+
"plugins": [
|
|
8
|
+
{
|
|
9
|
+
"name": "ml-specs",
|
|
10
|
+
"description": "Spec-driven development for any stack (Java/Spring, React, Node/Express, NestJS; MySQL/PostgreSQL/MongoDB): a stack-aware coding agent + spec author/developer/reviewer/pr-author agents, and the evidence-gated loop /spec, /spec-review, /spec-build, /spec-verify, /spec-advance, /spec-fanout, /pr, plus /code, /fix, /nfr and the knowledge layer /repo-init, /repo-rollout, /repo-adopt, /repo-estate, /repo-impact, /repo-refresh, /repo-doctor, /repo-status.",
|
|
11
|
+
"version": "1.0.0",
|
|
12
|
+
"source": "./ml-specs"
|
|
13
|
+
}
|
|
14
|
+
]
|
|
15
|
+
}
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 ACE Online platform team
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
# ml-claude-plugins
|
|
2
|
+
|
|
3
|
+
Development repo for a Claude Code **plugin marketplace**. Ships stack-aware tooling (Java/Spring,
|
|
4
|
+
React, Node/Express, NestJS; MySQL/PostgreSQL/MongoDB) — originally for a large
|
|
5
|
+
microservice estate.
|
|
6
|
+
|
|
7
|
+
**This repo is private; what it publishes is public.** Development, tooling, examples and history
|
|
8
|
+
stay here. Each release pushes the plugin itself to a public mirror and to npm, so anyone can
|
|
9
|
+
install it without access to this repository.
|
|
10
|
+
|
|
11
|
+
## Plugins
|
|
12
|
+
|
|
13
|
+
| Plugin | What it gives the team |
|
|
14
|
+
|--------|------------------------|
|
|
15
|
+
| [`ml-specs`](ml-specs/) | Spec-driven development for any project: a stack-aware coding agent + spec author/developer/reviewer/pr-author/scanner agents; the gated loop `/spec` → `/spec-review` → `/spec-build` → `/spec-verify` → `/spec-advance` → `/pr`, plus `/code`, `/fix`, `/nfr` (routes NFRs into constraints + blocking gates), `/spec-fanout` (one spec, N repos, one key), `/repo-init` (learns the repo), `/repo-rollout`, `/repo-adopt`, `/repo-estate`, `/repo-impact` (who breaks if this ships), `/repo-refresh`, `/repo-doctor`, `/repo-status`; a knowledge-layer CI gate, hooks that ship active, and an [MCP server](ml-specs/mcp/) exposing the read-only tools *and the commands as prompts* to any client. |
|
|
16
|
+
|
|
17
|
+
## Install
|
|
18
|
+
|
|
19
|
+
```
|
|
20
|
+
/plugin marketplace add MLMCPS/ml-specs
|
|
21
|
+
/plugin install ml-specs@ml-tools
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
That points at the **public release mirror** — no repo access, no org membership, no token. Add
|
|
25
|
+
`--scope user` (the default) for every project on your machine, or commit the equivalent
|
|
26
|
+
`.claude/settings.json` so a teammate gets it on clone.
|
|
27
|
+
|
|
28
|
+
Working *on* the plugin? Point at this repo instead, which updates on merge rather than on tag:
|
|
29
|
+
|
|
30
|
+
```
|
|
31
|
+
/plugin marketplace add MLMCPS/ml-claude-plugins
|
|
32
|
+
/plugin install ml-specs@ml-tools
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
**Rolling it out to a team? → [TEAM-SETUP.md](TEAM-SETUP.md)** — the per-repo auto-enable that
|
|
36
|
+
scales across an estate, and the source types that do and don't work in a committed settings file.
|
|
37
|
+
|
|
38
|
+
## Where it ships
|
|
39
|
+
|
|
40
|
+
Three channels, all published from one `git tag ml-specs-vX.Y.Z` by
|
|
41
|
+
[`.github/workflows/release.yml`](.github/workflows/release.yml), so they cannot drift:
|
|
42
|
+
|
|
43
|
+
| Channel | Audience | How |
|
|
44
|
+
|---|---|---|
|
|
45
|
+
| **[`MLMCPS/ml-specs`](https://github.com/MLMCPS/ml-specs)** (public mirror) | Claude Code | `/plugin marketplace add` — the only source type that works from a **committed** `.claude/settings.json` |
|
|
46
|
+
| **`@mlmcps/ml-specs-mcp`** (npm, MIT) | Cursor, VS Code, CI, custom agents | `npx -y @mlmcps/ml-specs-mcp --root .` in an MCP config |
|
|
47
|
+
| **`@mlmcps/ml-specs`** (npm, MIT) | Vendored / air-gapped installs | `npm install`, then `marketplace add <path>` |
|
|
48
|
+
|
|
49
|
+
The mirror carries `.claude-plugin/` and `ml-specs/` and nothing else — byte-for-byte what the
|
|
50
|
+
npm plugin package ships. `scripts/`, `examples/`, `CONTRIBUTING.md`, `PUBLISHING.md`,
|
|
51
|
+
`TEAM-SETUP.md`, `.github/` and this repo's history never leave it.
|
|
52
|
+
|
|
53
|
+
> **There is no `npm` marketplace source.** Claude Code 2.1.121 accepts a marketplace as a URL,
|
|
54
|
+
> path, or GitHub repo only; a settings file declaring `{"source": "npm", …}` is silently ignored,
|
|
55
|
+
> with no error. The npm plugin package is published and ready for whenever the client supports it.
|
|
56
|
+
|
|
57
|
+
## Layout
|
|
58
|
+
|
|
59
|
+
```
|
|
60
|
+
ml-claude-plugins/
|
|
61
|
+
├── .claude/commands/release.md # /release — cuts a plugin release (this repo only; not shipped)
|
|
62
|
+
├── .claude-plugin/
|
|
63
|
+
│ └── marketplace.json # catalog of plugins (marketplace name: "ml-tools")
|
|
64
|
+
├── .github/
|
|
65
|
+
│ ├── workflows/ # CI: validate manifests + wiring; release: npm publish + mirror push
|
|
66
|
+
│ └── mirror-README.md # seed file for the public mirror repo (ships nowhere)
|
|
67
|
+
├── scripts/
|
|
68
|
+
│ ├── validate-plugin.mjs # no-dependency validator (run locally + in CI)
|
|
69
|
+
│ └── changelog-section.mjs # extracts a version's CHANGELOG section; gates the release
|
|
70
|
+
├── examples/ # worked example of what /repo-init produces
|
|
71
|
+
├── CONTRIBUTING.md # agent/command/skill/hook authoring conventions
|
|
72
|
+
├── LICENSE # MIT — applies from 0.19.0 onward
|
|
73
|
+
└── ml-specs/ # one plugin
|
|
74
|
+
├── .claude-plugin/plugin.json
|
|
75
|
+
├── agents/ # coder, spec-author, spec-reviewer, developer,
|
|
76
|
+
│ # reviewer, pr-author, scanner
|
|
77
|
+
├── commands/ # code, fix, spec, spec-review, spec-build, spec-verify, spec-advance, pr,
|
|
78
|
+
│ # repo-init/-rollout/-adopt/-estate/-impact/-refresh/-doctor/-status
|
|
79
|
+
├── skills/ # knowledge-retrieval (loads on demand)
|
|
80
|
+
├── hooks/ # active on install: drift warning + secret scan
|
|
81
|
+
├── mcp/ # read-only MCP server for any client (no dependencies)
|
|
82
|
+
├── scripts/ # spec-gate, fix-specs, spec-dashboard, survey-estate (pure Node)
|
|
83
|
+
├── templates/ # seeded into repos by /repo-init (specs, docs, ci/, mcp/, hooks)
|
|
84
|
+
└── README.md
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
## Releasing
|
|
88
|
+
|
|
89
|
+
Use `/release` — it does all of the below and refuses to leave the versions out of step.
|
|
90
|
+
|
|
91
|
+
- **Five** files carry the version and nothing keeps them in sync but the validator: `plugin.json`,
|
|
92
|
+
`ml-specs/package.json`, the root `package.json`, the `ml-specs` entry in
|
|
93
|
+
`marketplace.json`, and the `VERSION` constant in `mcp/ml-specs-server.mjs`.
|
|
94
|
+
- Every release needs a `## [x.y.z]` section in `ml-specs/CHANGELOG.md` —
|
|
95
|
+
`changelog-section.mjs` fails the workflow without one, so a version cannot ship undocumented.
|
|
96
|
+
- `node scripts/validate-plugin.mjs` must pass. It also fails the build if the plugin package's
|
|
97
|
+
`files[]` widens: that list is a **disclosure boundary** now that the packages are public and
|
|
98
|
+
this repo is not.
|
|
99
|
+
- Tagging publishes. `npm publish` cannot be undone after 72 hours, so every gate runs before it,
|
|
100
|
+
and the mirror push runs last — if it fails, the packages are already out and only that step
|
|
101
|
+
needs re-running.
|
|
102
|
+
|
|
103
|
+
Two repo secrets are required: `NPM_TOKEN` (an npm **automation** token — a classic *publish*
|
|
104
|
+
token is rejected under 2FA) and `MIRROR_TOKEN` (a fine-grained PAT with `Contents: write` on the
|
|
105
|
+
mirror repo only). The release skips the mirror with a message rather than failing if the second
|
|
106
|
+
is absent.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "ml-specs",
|
|
3
|
+
"description": "Spec-driven development for any stack (Java/Spring, React, Node/Express, NestJS; MySQL/PostgreSQL/MongoDB): a stack-aware coding agent + spec author/developer/reviewer/pr-author agents, and the evidence-gated loop /spec, /spec-review, /spec-build, /spec-verify, /spec-advance, /spec-fanout, /pr, plus /code, /fix, /nfr and the knowledge layer /repo-init, /repo-rollout, /repo-adopt, /repo-estate, /repo-impact, /repo-refresh, /repo-doctor, /repo-status.",
|
|
4
|
+
"version": "1.0.0",
|
|
5
|
+
"author": {
|
|
6
|
+
"name": "Motivity Labs"
|
|
7
|
+
},
|
|
8
|
+
"homepage": "https://github.com/MLMCPS/ml-claude-plugins",
|
|
9
|
+
"repository": "https://github.com/MLMCPS/ml-claude-plugins",
|
|
10
|
+
"license": "MIT"
|
|
11
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"//": "MCP server bundled WITH the plugin. Because the path is ${CLAUDE_PLUGIN_ROOT}-relative,",
|
|
3
|
+
"//1": "it resolves wherever the plugin was installed from — a git marketplace, a local directory,",
|
|
4
|
+
"//2": "any machine. No absolute paths, so nothing here is specific to one developer's laptop.",
|
|
5
|
+
"//3": "",
|
|
6
|
+
"//4": "--root . means the server reads whichever repo the session is in. It is READ-ONLY and",
|
|
7
|
+
"//5": "makes no network calls: it answers questions about local files and returns nothing on its own.",
|
|
8
|
+
"//6": "",
|
|
9
|
+
"//7": "If a client does not pick this up automatically, fall back to copying",
|
|
10
|
+
"//8": "templates/mcp/.mcp.json into the target repo and filling in an absolute path.",
|
|
11
|
+
"mcpServers": {
|
|
12
|
+
"ml-specs": {
|
|
13
|
+
"command": "node",
|
|
14
|
+
"args": ["${CLAUDE_PLUGIN_ROOT}/mcp/ml-specs-server.mjs", "--root", "."]
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}
|