@pathmode/mcp-server 1.26.1 → 1.26.3

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/README.md CHANGED
@@ -131,8 +131,11 @@ Restart Claude Code. The skills register at session start and auto-invoke when y
131
131
 
132
132
  | Tool | Description |
133
133
  |------|-------------|
134
+ | `check_intent_readiness` | The deterministic preflight: six calibrated gates, no model call, the same spec always gets the same verdict. With no arguments it resolves the `intent.md` bound to this repository |
135
+ | `confirm_intent_dimension` | Resolve a dimension the gate READ but could not confirm (it matches a fixed English vocabulary and misses valid phrasing, including other languages), or waive one as not applicable |
134
136
  | `intent_save` | Save an intent spec to `intent.md` in the project root |
135
137
  | `intent_export` | Export as `.cursorrules`, a `CLAUDE.md` or `AGENTS.md` section, or an Outcomes rubric |
138
+ | `intent_import` | Adopt an existing OpenSpec change as the intent record; the change folder is never modified |
136
139
 
137
140
  ### Intent Compiler Prompt
138
141
 
@@ -245,8 +248,9 @@ Pass `--local` only to force local mode when an API key *is* configured:
245
248
  | `propose_spec_change` | Propose an exact, revision-bound correction for a person to accept; stores the observation as unreviewed agent evidence |
246
249
  | `list_intents` | List all intents, optionally filtered by status |
247
250
  | `search_intents` | Search intents by keyword across goals, objectives, and outcomes |
248
- | `update_intent_status` | Update intent status (draft > validated > approved > shipped > verified) |
249
- | `log_implementation_note` | Record a technical decision or implementation note |
251
+ | `create_intent` | Create an intent in the workspace without writing a file. Inside a repo prefer `intent_save` |
252
+ | `update_intent` | Update an existing intent's content; pass only the fields you want to change |
253
+ | `update_intent_status` | Move an intent through draft > validated > approved > shipped > verified. **Not for work delivered by pull request:** name the intent on the branch or in the PR body and let the merge grade the real diff and set shipped. Use it for work that never appears in a PR, and for shipped > verified once the outcome is confirmed in production |
250
254
 
251
255
  #### PM-to-Repository Change Requests
252
256
 
@@ -260,6 +264,27 @@ Apply a request by editing `intent.md`, then call `intent_save` with both `chang
260
264
  `baseRepoBodyRevision`. Pathmode compares immutable snapshots and closes the request itself; an
261
265
  agent cannot submit a success flag or diff.
262
266
 
267
+ #### Delivery & Verification
268
+
269
+ | Tool | Description |
270
+ |------|-------------|
271
+ | `verify_implementation` | Grade an implementation against the spec by reading the pull request. Pass `prUrl` and Pathmode fetches the diff itself, grading each outcome, constraint, constitution rule, edge case and verification check against what the code actually shows, with citations. Describing your own work instead is weaker evidence and the result says so |
272
+ | `record_implementation_finding` | The spec was wrong: record what it assumed and what building revealed. Targeting a verification check flips that check to failing. Open findings ride into future agent prompts until a human reconciles them |
273
+ | `record_implementation_context` | Hand back what the repo actually looks like where this intent lands: files and modules involved, how it behaves today, what a change would risk, how to verify it |
274
+ | `record_outcome_measurement` | What actually happened to an outcome after it shipped. The spec said what should change; this says whether it did |
275
+ | `log_implementation_note` | The handoff to the next session. The newest notes render into the next agent's execution prompt, so write each one self-contained |
276
+
277
+ An agent never settles its own delivery. The merge owns the shipped transition for PR-delivered work,
278
+ and a proposed correction (`propose_spec_change`) waits for a signed-in person to accept it.
279
+
280
+ #### Evidence
281
+
282
+ | Tool | Description |
283
+ |------|-------------|
284
+ | `query_evidence` | Search evidence items by product, type, severity, or text; returns IDs that can be linked to intents |
285
+ | `create_evidence` | Create an evidence item: a discovered bug, a user quote, a behavioral observation, a feature request |
286
+ | `link_evidence` | Link or unlink evidence to an intent, establishing traceability between user problems and planned solutions |
287
+
263
288
  #### Strategic Analysis
264
289
 
265
290
  | Tool | Description |
@@ -275,6 +300,7 @@ agent cannot submit a success flag or diff.
275
300
  | `get_agent_prompt` | Get a structured execution prompt for an intent |
276
301
  | `get_workspace` | Get workspace details including strategy, active products, and constitution |
277
302
  | `get_constitution` | Get mandatory constraint rules for the workspace |
303
+ | `sync_context` | Write this workspace's canonical context into the repo's `CLAUDE.md` or `AGENTS.md`, idempotently, replacing the PATHMODE-marked section in place |
278
304
 
279
305
  #### Team Prompts
280
306
 
package/dist/index.js CHANGED
@@ -72903,7 +72903,7 @@ module.exports = /*#__PURE__*/JSON.parse('{"$schema":"http://json-schema.org/dra
72903
72903
  /***/ ((module) => {
72904
72904
 
72905
72905
  "use strict";
72906
- module.exports = /*#__PURE__*/JSON.parse('{"name":"@pathmode/mcp-server","version":"1.26.1","publishConfig":{"access":"public"},"mcpName":"io.github.pathmodeio/mcp-server","description":"Deterministic intent preflight before your agent builds: six calibrated gates, keyless, no model call. Draft and sharpen specs in conversation, or connect a Pathmode workspace to sync intent and evidence across a team.","main":"dist/index.js","bin":{"pathmode-mcp":"dist/index.js"},"files":["dist/","manifest.json","icon.svg","README.md","skills/"],"scripts":{"build":"rm -rf dist && ncc build src/index.ts -o dist","dev":"ts-node src/index.ts","prepublishOnly":"npm run build"},"keywords":["pathmode","mcp","model-context-protocol","claude-code","claude-code-skills","agent-skills","cursor","windsurf","intent-engineering","intent-compiler","ai-agents","product-development","dependency-graph","strategic-planning"],"author":"Pathmode","license":"MIT","type":"commonjs","engines":{"node":">=18.0.0"},"homepage":"https://pathmode.io","dependencies":{"@modelcontextprotocol/sdk":"^1.12.1","gray-matter":"^4.0.3","zod":"^3.24.0"},"overrides":{"@hono/node-server":"^1.19.17","body-parser":"^2.3.0","fast-uri":"^3.1.6","hono":"^4.13.5","ip-address":"^10.7.0","js-yaml":"^3.15.2"},"devDependencies":{"@types/node":"^25.1.0","@vercel/ncc":"^0.38.4","ts-node":"^10.9.2","typescript":"^5.9.3"}}');
72906
+ module.exports = /*#__PURE__*/JSON.parse('{"name":"@pathmode/mcp-server","version":"1.26.3","publishConfig":{"access":"public"},"mcpName":"io.github.pathmodeio/mcp-server","description":"Deterministic intent preflight before your agent builds: six calibrated gates, keyless, no model call. Draft and sharpen specs in conversation, or connect a Pathmode workspace to sync intent and evidence across a team.","main":"dist/index.js","bin":{"pathmode-mcp":"dist/index.js"},"files":["dist/","manifest.json","icon.svg","README.md","skills/"],"scripts":{"build":"rm -rf dist && ncc build src/index.ts -o dist","dev":"ts-node src/index.ts","prepublishOnly":"npm run build"},"keywords":["pathmode","mcp","model-context-protocol","claude-code","claude-code-skills","agent-skills","cursor","windsurf","intent-engineering","intent-compiler","ai-agents","product-development","dependency-graph","strategic-planning"],"author":"Pathmode","license":"MIT","type":"commonjs","engines":{"node":">=18.0.0"},"homepage":"https://pathmode.io","dependencies":{"@modelcontextprotocol/sdk":"^1.12.1","gray-matter":"^4.0.3","zod":"^3.24.0"},"overrides":{"@hono/node-server":"^1.19.17","body-parser":"^2.3.0","fast-uri":"^3.1.6","hono":"^4.13.5","ip-address":"^10.7.0","js-yaml":"^3.15.2"},"devDependencies":{"@types/node":"^25.1.0","@vercel/ncc":"^0.38.4","ts-node":"^10.9.2","typescript":"^5.9.3"}}');
72907
72907
 
72908
72908
  /***/ })
72909
72909
 
@@ -74075,7 +74075,7 @@ function startMcpServer() {
74075
74075
  liftEstimate: zod_1.z.enum(['low', 'medium', 'high']).optional().describe('Rough size of the change.'),
74076
74076
  risks: zod_1.z.array(zod_1.z.string()).optional().describe('What a change here could break. Reaches the implementing agent as prose; it does NOT become a grading criterion until a human promotes it, because you would otherwise be writing the rubric you are graded against.'),
74077
74077
  verificationSuggestions: zod_1.z.array(zod_1.z.string()).optional().describe('Checks worth running. Same promotion rule as risks.'),
74078
- expectedSpecVersion: zod_1.z.string().optional().describe('The spec content hash you gathered this against, from a previous read. If the spec has moved since, the write is refused rather than attaching a description of a spec that no longer exists.'),
74078
+ expectedSpecVersion: zod_1.z.string().optional().describe('The specVersion from the get_intent (or intent_save) read you gathered this against. Carry it back verbatim, never compute it. If the spec has moved since, the write is refused with 409 rather than attaching a description of a spec that no longer exists.'),
74079
74079
  },
74080
74080
  }, async ({ intentId, ...input }) => {
74081
74081
  if (isLocalMode) {
package/manifest.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "manifest_version": "0.3",
3
3
  "name": "pathmode",
4
4
  "display_name": "Pathmode",
5
- "version": "1.26.1",
5
+ "version": "1.26.3",
6
6
  "description": "Deterministic preflight for the intent you hand to a coding agent: six calibrated gates, the exact blockers named, no model call, no key needed.",
7
7
  "long_description": "Pathmode MCP Server runs a deterministic preflight before your coding agent builds: check_intent_readiness scores an intent spec against six calibrated gates (title, objective, outcomes, constraints, edge cases, verification) and names the exact blockers, with no model call and no account. Keyless local mode works out of the box; specs live in intent.md in your repo, plain markdown you own, and skills for drafting, pressure-testing, and handing off intent ride along. Connect a Pathmode workspace with an API key to sync intent and evidence across a team, analyze dependency graphs, and verify pull requests against the outcomes you agreed to.",
8
8
  "author": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pathmode/mcp-server",
3
- "version": "1.26.1",
3
+ "version": "1.26.3",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
package/skills/README.md CHANGED
@@ -50,7 +50,7 @@ You don't need to remember `/compile-intent` — just talk in plain English.
50
50
 
51
51
  ## Skills + MCP
52
52
 
53
- Each skill orchestrates calls to the @pathmode/mcp-server. The MCP server is the engine — 15+ tools, evidence handling, Socratic preamble, dependency graphs. The skills are the auto-trigger surface on top.
53
+ Each skill orchestrates calls to the @pathmode/mcp-server. The MCP server is the engine — 9 tools keyless and 32 with a workspace connected, evidence handling, Socratic preamble, dependency graphs. The skills are the auto-trigger surface on top.
54
54
 
55
55
  You can also invoke the underlying MCP prompts directly via slash commands:
56
56
 
@@ -51,6 +51,10 @@ status: "draft"
51
51
 
52
52
  If `PATHMODE_API_KEY` is set, the spec also syncs to the user's Pathmode workspace and becomes visible to other team members and other agents.
53
53
 
54
+ ## Evidence in a file that lives in git
55
+
56
+ `intent.md` is committed, so everyone who clones the repo can read it forever and deleting a line later does not remove it from history. Under the IntentSpec repo-safe profile the file must not carry raw customer quotes, names or contact details of individuals, support transcripts, confidential internal metrics, or credentials. Cite evidence as a summary or a reference instead: a ticket id, a dashboard name, a one-line paraphrase. Full evidence with quotes and attribution belongs in the private system of record (a connected Pathmode workspace), and the repo file points back at it. A claim with no evidence yet is labelled an assumption, not dressed as a fact.
57
+
54
58
  ## Downstream skills
55
59
 
56
60
  After compiling, these skills consume the spec:
@@ -19,12 +19,14 @@ Stop when all five dimensions below pass, or the user explicitly accepts a known
19
19
 
20
20
  ## The five dimensions
21
21
 
22
- 1. **Objective** — Does it name who is harmed? Is it specific enough to disqualify other interpretations?
22
+ 1. **Objective** — Does it name who is harmed? Is it specific enough to disqualify other interpretations? Is it a problem, or a solution in disguise? ("Add a dropdown" is a solution; "members cannot switch products without leaving their work" is a problem.)
23
23
  2. **Outcomes** — Are they observable state changes, not activities? Could someone verify this in 5 minutes without asking the spec author?
24
24
  3. **Edge cases** — Are they real edge cases, or restatements of the outcome failing?
25
25
  4. **Constraints** — What must NEVER happen? An intent with zero constraints has no teeth.
26
26
  5. **Contradictions** — Do any two fields imply opposite things?
27
27
 
28
+ Alongside the five, check scope. More than about seven outcomes usually means several intents; split before building. One outcome and no edge cases is usually a task, not an intent.
29
+
28
30
  ## Stop conditions
29
31
 
30
32
  - All five dimensions pass — the spec is agent-ready