From 25c8d78103c18b646861830aa91a57d8a5d3c94e Mon Sep 17 00:00:00 2001 From: pc-gemini Date: Tue, 18 Aug 2026 15:55:24 +0900 Subject: [PATCH] fix(skill): clarify plain doctor diagnostics --- skills/xmemo/CHANGELOG.md | 8 ++++++++ skills/xmemo/SKILL.md | 4 +++- skills/xmemo/scripts/xmemo-skill.mjs | 10 ++++++++-- test/xmemo-standalone-skill.test.js | 4 +++- 4 files changed, 22 insertions(+), 4 deletions(-) diff --git a/skills/xmemo/CHANGELOG.md b/skills/xmemo/CHANGELOG.md index 41c483b..6a368ed 100644 --- a/skills/xmemo/CHANGELOG.md +++ b/skills/xmemo/CHANGELOG.md @@ -1,5 +1,13 @@ # XMemo Skill Change Log +## 1.1.10 + +- Clarify plain-text `doctor` output: an explicit `--anonymous` health check + now says authentication was not checked, while a normal no-credential check + prints the formal-login next command. +- Preserve the existing read-only health request, JSON diagnostics, credential + lookup, authentication, scope, and degraded-discovery behavior. + ## 1.1.9 - Expand the bounded, read-only `doctor --json` discovery summary with the diff --git a/skills/xmemo/SKILL.md b/skills/xmemo/SKILL.md index 0a7a585..c751dee 100644 --- a/skills/xmemo/SKILL.md +++ b/skills/xmemo/SKILL.md @@ -171,7 +171,9 @@ but it is intentionally not repeated in this reference. `doctor --anonymous` performs the same service-health check without sending an Authorization header. Both forms use only an unauthenticated, read-only discovery request for their JSON capability summary; discovery failure does not -block an otherwise successful health check. +block an otherwise successful health check. In terminal output, an explicit +anonymous check says authentication was not checked; a normal no-credential +check instead prints the formal-login next command. For detailed examples, read `references/operations.md`. For auth, network, and service diagnosis, read `references/troubleshooting.md`. diff --git a/skills/xmemo/scripts/xmemo-skill.mjs b/skills/xmemo/scripts/xmemo-skill.mjs index 092e36d..38802e5 100644 --- a/skills/xmemo/scripts/xmemo-skill.mjs +++ b/skills/xmemo/scripts/xmemo-skill.mjs @@ -13,7 +13,7 @@ import os from 'node:os'; import readline from 'node:readline'; import { randomUUID } from 'node:crypto'; -const SKILL_VERSION = '1.1.9'; +const SKILL_VERSION = '1.1.10'; const credentialsPath = path.join(os.homedir(), '.xmemo', 'skill-credentials.json'); const registrationPath = path.join(os.homedir(), '.xmemo', 'skill-registration.json'); const SCRIPT_COMMAND = 'node scripts/xmemo-skill.mjs'; @@ -1207,7 +1207,13 @@ async function main() { anonymous: options.anonymous, })))); } else { - console.log(`XMemo Service Status: OK\nAuthentication: Missing/Unauthenticated`); + const authentication = options.anonymous + ? 'Not checked (anonymous mode)' + : 'Missing/Unauthenticated'; + const nextStep = options.anonymous + ? '' + : `\nNext: ${SCRIPT_COMMAND} login --allow-plaintext`; + console.log(`XMemo Service Status: OK\nAuthentication: ${authentication}${nextStep}`); } process.exit(0); } catch (e) { diff --git a/test/xmemo-standalone-skill.test.js b/test/xmemo-standalone-skill.test.js index 6c4eff5..7ebf505 100644 --- a/test/xmemo-standalone-skill.test.js +++ b/test/xmemo-standalone-skill.test.js @@ -215,6 +215,7 @@ test('skill script anonymous doctor command succeeds when no credentials are pre assert.equal(res.code, 0); assert.match(res.stdout, /XMemo Service Status: OK/); assert.match(res.stdout, /Authentication: Missing\/Unauthenticated/); + assert.match(res.stdout, /Next: node scripts\/xmemo-skill\.mjs login --allow-plaintext/); await testServer.stop(); }); @@ -256,7 +257,8 @@ test('skill script doctor --anonymous does not transmit an available credential' }); assert.equal(res.code, 0); - assert.match(res.stdout, /Authentication: Missing\/Unauthenticated/); + assert.match(res.stdout, /Authentication: Not checked \(anonymous mode\)/); + assert.doesNotMatch(res.stdout, /Next:/); assert.equal(testServer.requests.length, 1); assert.equal(testServer.requests[0].headers.authorization, undefined);