Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 7 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"name": "codecartographer-pi",
"version": "0.12.11",
"mcpName": "io.github.HuginnIndustries/codecartographer",
"description": "Evidence-backed reverse engineering and human-gated software planning for Pi and MCP coding agents.",
"description": "Turn an unfamiliar codebase into a validated reimplementation spec, then synthesize confirmed specs and a product vision into a traceable plan.",
"type": "module",
"keywords": [
"pi-package",
Expand All @@ -13,7 +13,12 @@
"mcp",
"software-planning",
"code-analysis",
"synthesis"
"synthesis",
"codebase",
"ai-agent",
"context-engineering",
"code-understanding",
"spec-driven"
],
"license": "MIT",
"author": "James Sesler",
Expand Down
18 changes: 16 additions & 2 deletions tests/release-metadata.test.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,15 @@ test("MCP Registry metadata identifies the published stdio package", () => {
});

test("npm metadata describes both product directions and preserves discovery terms", () => {
assert.match(pkg.description, /evidence-backed reverse engineering/i);
assert.match(pkg.description, /software planning/i);
// Assert on the two product directions, not on exact marketing phrasing —
// pinning the literal sentence means every copy change is a test edit, and
// the description then rots because updating it looks like breaking a test.
assert.match(
pkg.description,
/codebase|reverse[- ]engineer/i,
"description must cover the analysis direction",
);
assert.match(pkg.description, /plan/i, "description must cover the planning/synthesis direction");

const requiredKeywords = [
"codecartographer",
Expand All @@ -57,6 +64,13 @@ test("npm metadata describes both product directions and preserves discovery ter
"software-planning",
"code-analysis",
"synthesis",
// Mirror the GitHub repo topics set in #77 so the two discovery
// surfaces stay aligned.
"codebase",
"ai-agent",
"context-engineering",
"code-understanding",
"spec-driven",
];
for (const keyword of requiredKeywords) {
assert.ok(pkg.keywords?.includes(keyword), `package.json keywords must include ${keyword}`);
Expand Down