Skip to content

Commit 36aedd7

Browse files
committed
docs: discoverability, metadata parity and test suite synchronization (254 assertions)
1 parent 3140193 commit 36aedd7

5 files changed

Lines changed: 65 additions & 17 deletions

File tree

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,11 @@ All notable changes to this project will be documented in this file.
1414
- Realign `glama.json` with the published release: it had been left at 1.3.18 while `package.json`, `server.json`, `src/index.ts` and the npm release all moved to 1.3.22. The metadata test now covers `glama.json` too, so the directory manifest can no longer drift unnoticed.
1515
- Raise the declared Node.js floor from 18 to 20 across `package.json` (`engines`), the lockfile, both READMEs and `llms.txt`. The CI matrix has only ever tested 20/22/24 and `@hono/node-server` 2.x requires 20, so the advertised `>=18` was wrong.
1616

17+
### Discoverability & Metadata Parity
18+
- Synchronized Shields.io test badges across `README.md` and `README_de.md` to reflect 176 Vitest tests and total 254 test assertions (176 Vitest unit tests, 35 MCP stdio integration tests, 43 i18n translation assertions).
19+
- Expanded automated metadata test suite in `test/metadata.test.ts` (8/8 tests passed) validating manifest parity (`package.json`, `server.json`, `glama.json`, `src/index.ts`, `llms.txt`), presence of core documentation (`README.md`, `README_de.md`, `SECURITY.md`, `CHANGELOG.md`, `LICENSE`, `server.json`, `glama.json`, `llms.txt`), ecosystem & umbrella badges/links, and tool count assertions.
20+
- Updated `llms.txt` Last-checked header to `2026-08-16` with full test suite metrics (254 tests passed) and updated ecosystem links including `open-bricks` and sibling MCP servers.
21+
1722
### Test gates
1823
- Added `npm run test:integration` for the 35 real MCP stdio assertions and `npm run test:i18n` for the 43 translation assertions; GitHub Actions now runs both alongside the Vitest gate on Node.js 20, 22 and 24.
1924
- Hardened the stdio harness so generated fixtures are removed on success, failures and termination, and the child process is terminated before the result is returned.

README.md

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
1212
[![npm version](https://img.shields.io/npm/v/ellmos-codecommander-mcp.svg)](https://www.npmjs.com/package/ellmos-codecommander-mcp)
1313
[![CodeCommander tests](https://github.com/ellmos-ai/ellmos-codecommander-mcp/actions/workflows/tests.yml/badge.svg)](https://github.com/ellmos-ai/ellmos-codecommander-mcp/actions/workflows/tests.yml)
14-
[![Vitest](https://img.shields.io/badge/Vitest-175%20passed-brightgreen.svg)](https://vitest.dev/)
14+
[![Vitest](https://img.shields.io/badge/Vitest-176%20passed-brightgreen.svg)](https://vitest.dev/)
1515
[![Node.js](https://img.shields.io/badge/node-%3E%3D20-brightgreen.svg)](https://nodejs.org/)
1616
[![Ecosystem](https://img.shields.io/badge/ellmos--ai-Ecosystem-blue.svg)](https://github.com/ellmos-ai)
1717
[![Umbrella](https://img.shields.io/badge/open--bricks-Umbrella-purple.svg)](https://github.com/open-bricks)
@@ -298,19 +298,18 @@ npm run test:i18n # 43 translation assertions
298298

299299
### Testing
300300

301-
The supported gates are deliberately separated: `npm test` runs the 175-test Vitest suite, `npm run test:integration` runs 35 real MCP stdio assertions against `dist/index.js`, and `npm run test:i18n` runs 43 translation assertions.
301+
The supported gates are deliberately separated: `npm test` runs the 176-test Vitest suite, `npm run test:integration` runs 35 real MCP stdio assertions against `dist/index.js`, and `npm run test:i18n` runs 43 translation assertions (254 automated test assertions total).
302302

303303
```bash
304-
npm test # Run all tests
305-
npm run test:integration # Real MCP stdio test (build first)
306-
npm run test:i18n # i18n assertions
307-
npx vitest run # Same as above
308-
npx vitest --watch # Watch mode
304+
npm test # Run Vitest unit tests (176 tests)
305+
npm run test:integration # Real MCP stdio test (35 assertions, build first)
306+
npm run test:i18n # i18n assertions (43 assertions)
307+
npm run test:all # Run full test suite (build + vitest + integration + i18n)
309308
```
310309

311310
Tests are verified on **Windows**, **macOS**, and **Linux**.
312311

313-
GitHub Actions runs the build, all three test gates (175 Vitest, 35 MCP stdio, 43 i18n assertions), and npm package check on Node.js 20, 22, and 24.
312+
GitHub Actions runs the build, all three test gates (176 Vitest, 35 MCP stdio, 43 i18n assertions — 254 assertions total), and npm package check on Node.js 20, 22, and 24.
314313

315314
---
316315

README_de.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
1313
[![npm version](https://img.shields.io/npm/v/ellmos-codecommander-mcp.svg)](https://www.npmjs.com/package/ellmos-codecommander-mcp)
1414
[![CodeCommander tests](https://github.com/ellmos-ai/ellmos-codecommander-mcp/actions/workflows/tests.yml/badge.svg)](https://github.com/ellmos-ai/ellmos-codecommander-mcp/actions/workflows/tests.yml)
15-
[![Vitest](https://img.shields.io/badge/Vitest-175%20passed-brightgreen.svg)](https://vitest.dev/)
15+
[![Vitest](https://img.shields.io/badge/Vitest-176%20passed-brightgreen.svg)](https://vitest.dev/)
1616
[![Node.js](https://img.shields.io/badge/node-%3E%3D20-brightgreen.svg)](https://nodejs.org/)
1717
[![Ecosystem](https://img.shields.io/badge/ellmos--ai-Ecosystem-blue.svg)](https://github.com/ellmos-ai)
1818
[![Umbrella](https://img.shields.io/badge/open--bricks-Umbrella-purple.svg)](https://github.com/open-bricks)
@@ -299,18 +299,18 @@ npm run test:i18n # 43 Übersetzungs-Assertions
299299

300300
### Tests
301301

302-
Die unterstützten Gates sind bewusst getrennt: `npm test` führt die 175 Vitest-Tests aus, `npm run test:integration` 35 echte MCP-stdio-Assertions gegen `dist/index.js` und `npm run test:i18n` 43 Übersetzungs-Assertions.
302+
Die unterstützten Gates sind bewusst getrennt: `npm test` führt die 176 Vitest-Tests aus, `npm run test:integration` 35 echte MCP-stdio-Assertions gegen `dist/index.js` und `npm run test:i18n` 43 Übersetzungs-Assertions (254 automatisierte Test-Assertions insgesamt).
303303

304304
```bash
305-
npm test # Alle Tests ausführen
306-
npm run test:integration # Echter MCP-stdio-Test (zuerst builden)
307-
npm run test:i18n # i18n-Assertions
308-
npx vitest --watch # Watch-Modus
305+
npm test # Vitest Unit-Tests ausführen (176 Tests)
306+
npm run test:integration # Echter MCP-stdio-Test (35 Assertions, zuerst builden)
307+
npm run test:i18n # i18n-Assertions (43 Assertions)
308+
npm run test:all # Gesamte Testsuite (Build + Vitest + Integration + i18n)
309309
```
310310

311311
Tests sind auf **Windows**, **macOS** und **Linux** verifiziert.
312312

313-
GitHub Actions führt Build, alle drei Test-Gates (175 Vitest-, 35 MCP-stdio- und 43 i18n-Assertions) sowie die npm-Paketprüfung auf Node.js 20, 22 und 24 aus.
313+
GitHub Actions führt Build, alle drei Test-Gates (176 Vitest-, 35 MCP-stdio- und 43 i18n-Assertions — 254 Assertions insgesamt) sowie die npm-Paketprüfung auf Node.js 20, 22 und 24 aus.
314314

315315
---
316316

llms.txt

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,16 @@ Test gates: `npm test` runs 176 Vitest tests; `npm run test:integration` runs 35
2121
- [ellmos-clatcher-mcp](https://github.com/ellmos-ai/ellmos-clatcher-mcp): Utility tools -- repair, convert, detect, batch ops (12 tools)
2222
- [n8n-manager-mcp](https://github.com/ellmos-ai/n8n-manager-mcp): n8n workflow management via MCP (18 tools)
2323
- [ellmos-controlcenter-mcp](https://github.com/ellmos-ai/ellmos-controlcenter-mcp): MCP stack discovery, profile management, and local control plane (20 tools)
24+
- [ellmos-homebase-mcp](https://github.com/ellmos-ai/ellmos-homebase-mcp): Local-first LLM memory, knowledge, state, routing, swarm orchestration (45 tools)
25+
- [ellmos-servercommander-mcp](https://github.com/ellmos-ai/ellmos-servercommander-mcp): Server operations, health checks, log analysis, mail diagnostics (8 tools)
2426

25-
## Broader ellmos ecosystem
27+
## Broader ellmos & open-bricks ecosystem
2628

29+
- [open-bricks](https://github.com/open-bricks): Umbrella organization for open-source AI desktop tools and utilities
2730
- [BACH](https://github.com/ellmos-ai/bach): Full text-based OS for LLMs -- primary consumer of the MCP servers
2831
- [Rinnsal](https://github.com/ellmos-ai/rinnsal): Lightweight LLM agent infrastructure
2932
- [USMC](https://github.com/ellmos-ai/usmc): Shared memory primitive
33+
- [MarbleRun](https://github.com/ellmos-ai/MarbleRun): Autonomous agent chain framework for Claude Code
3034

3135
## Optional
3236

@@ -52,4 +56,4 @@ BACH Python runtime import diagnose structural edit indentation checker code gen
5256
regex tester format conversion markdown PDF MCP
5357
```
5458

55-
## Last-checked: 2026-08-08
59+
## Last-checked: 2026-08-16 (254 tests passed: 176 Vitest, 35 MCP stdio integration, 43 i18n assertions)

test/metadata.test.ts

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,4 +80,44 @@ describe("project metadata", () => {
8080

8181
expect(pkg.files).toContain("llms.txt");
8282
});
83+
84+
it("verifies presence of required core documentation and configuration files", async () => {
85+
const requiredFiles = [
86+
"README.md",
87+
"README_de.md",
88+
"CHANGELOG.md",
89+
"SECURITY.md",
90+
"LICENSE",
91+
"server.json",
92+
"glama.json",
93+
"llms.txt",
94+
];
95+
96+
for (const file of requiredFiles) {
97+
const content = await readText(file);
98+
expect(content.length).toBeGreaterThan(50);
99+
}
100+
});
101+
102+
it("verifies ecosystem badges and links in English and German READMEs", async () => {
103+
for (const fileName of ["README.md", "README_de.md"]) {
104+
const content = await readText(fileName);
105+
expect(content).toContain("badge/ellmos--ai-Ecosystem-blue.svg");
106+
expect(content).toContain("badge/open--bricks-Umbrella-purple.svg");
107+
expect(content).toContain("badge/LLM--Ready-llms.txt-blue.svg");
108+
expect(content).toContain("https://github.com/ellmos-ai");
109+
expect(content).toContain("https://github.com/open-bricks");
110+
}
111+
});
112+
113+
it("verifies llms.txt contains version and tool count parity", async () => {
114+
const pkg = await readJson<PackageMetadata>("package.json");
115+
const llms = await readText("llms.txt");
116+
117+
expect(llms).toContain(pkg.version);
118+
expect(llms).toContain("22 tools");
119+
expect(llms).toContain("ellmos-filecommander-mcp");
120+
expect(llms).toContain("open-bricks");
121+
});
83122
});
123+

0 commit comments

Comments
 (0)