Skip to content

chore: extract che-axiom-systems to standalone public repo#96

Open
kiki830621 wants to merge 357 commits into
mainfrom
chore/extract-che-axiom-systems
Open

chore: extract che-axiom-systems to standalone public repo#96
kiki830621 wants to merge 357 commits into
mainfrom
chore/extract-che-axiom-systems

Conversation

@kiki830621

Copy link
Copy Markdown
Member

Summary

Moves plugins/che-axiom-systems/ out of this marketplace into a standalone public repo at https://github.com/PsychQuant/che-axiom-systems for independent versioning and external collaboration.

Why

  • The plugin is content-heavy (axiomatization knowledge base) more than tooling — has its own lifecycle separate from marketplace plugin churn.
  • External collaborators don't need to clone the whole marketplace to contribute axioms.
  • Some domains/apa7-style/06_reference/ content was third-party copyrighted (APA 7 manual OCR, Apple Logic Pro guides, SAS PROC manuals) and needed careful pre-publish cleanup that's easier to manage in a dedicated repo.

What changed

  • Deleted plugins/che-axiom-systems/ (458 files, ~119k lines)
  • Removed the corresponding entry from .claude-plugin/marketplace.json
  • No other references to che-axiom-systems anywhere in this repo (verified with grep)

New repo

  • URL: https://github.com/PsychQuant/che-axiom-systems
  • Visibility: public
  • License: MIT (LPPL 1.3c sublicense preserved for embedded biblatex-apa)
  • Security baseline: secret scanning + push protection + Dependabot alerts + Dependabot security updates all enabled
  • Excluded from initial commit: ~155M PDFs (APA / Apple / SAS) + ~21M OCR/image derivatives. Reproduction scripts (download_apastyle.py, split_manual.py) preserved for local-only rebuild.

Migration for existing installs

Users who installed via this marketplace will see the plugin disappear on next claude plugin marketplace update. If they want it back as a plugin, the new repo would need to register as its own marketplace — not done in this PR.

Test plan

  • python3 -c "import json; json.load(open('.claude-plugin/marketplace.json'))" passes
  • grep -rn che-axiom-systems returns no matches outside plugins/
  • New repo accessible at https://github.com/PsychQuant/che-axiom-systems and renders correctly
  • No copyrighted PDFs / OCR present in new repo's initial commit (verified find -name "*.pdf" returns empty)

New capability: archive-mail-filter-expansion (3 requirements)
Modified capability: archive-mail-attachments (adds audit requirements)

Closes #24 (filter expansion) + #25 (coverage audit)
Completes PsychQuant/macdoc#75 Layer 3
…m v2.3.0)

Bumps plugin version to 2.5.0 reflecting:
- Upstream v2.3.0 binary adds 'format' parameter (plain/markdown/html) to
  compose_email, create_draft, reply_email, forward_email (closes #14 #15
  in PsychQuant/che-apple-mail-mcp)
- Plus retained v2.4.0 archive-mail filter expansion + coverage audit

Syncs marketplace.json from stale 2.2.0 baseline to match plugin.json 2.5.0.
….11.0)

Extend plugin-tools ↔ mcp-tools / cli-tools integration:

plugin-update Phase 1.5 (warn, don't block):
- Detects MCP plugins (.mcp.json + bin/*-wrapper.sh) → warn if binary
  missing from GitHub Release, suggest /mcp-tools:mcp-deploy
- Detects CLI-dependent plugins (session-start.sh curl GitHub API or
  ~/bin/$BINARY references) → compare local vs latest release,
  suggest /cli-tools:cli-upgrade

mcp-binary-distribution.md rule expanded:
- New section: 擴展 — CLI-dependent plugins follow same dependency
  graph (e.g. gifthub → ~/bin/gfh)
- Three-way integration diagram (MCP source ↔ plugin marketplace ↔
  CLI binary repo)
- Contrast plugin-deploy (BLOCK) vs plugin-update (WARN) strictness
…(v1.11.1)

Plugin-update is now a dependency-aware orchestrator rather than just a
passive reporter.

When Phase 1.5 detects binary out of sync:
- Previous behavior: WARN and continue, leaving user to manually run
  the corresponding skill
- New behavior: AskUserQuestion with 3 options
  - 順便更新 → auto-invoke /mcp-tools:mcp-deploy or /cli-tools:cli-upgrade
  - 只更新 plugin shell → skip binary, proceed to Phase 2
  - 中止 → stop entirely

Rationale: daily dev loop usually wants the full chain updated together.
Passive warnings push work back to user; active prompting handles the
common case while preserving opt-out.

plugin-deploy Step 2.5 still BLOCKS (release-time strictness unchanged).

Rule doc updated to reflect 'dependency-aware orchestrator' framing.
….12.0)

Adopt the idd-* pattern where every skill starts with a mandatory
Step 0 Bootstrap Stage Task List (TaskCreate for each phase). This
makes silent skipping impossible — every phase has a visible
task that must be updated to completed.

Added to:
- plugin-create: 11 tasks (parse/gather/locate/create/sync/etc)
- plugin-update: 7 tasks (Phase 0-5 + Phase 1.5 dependency sync)
- plugin-deploy: 10 tasks (9 steps + Step 2.5 MCP check)
- plugin-upgrade: 13 tasks (parse + 12 execution steps)
- plugin-health: 8 tasks (5 checks + version sync + summary)
- plugin-debug: 6 tasks (identify/version/hooks/trace/root-cause/fix)

Rationale: plugin-tools skills each have 5-12 phases with
cross-dependencies. Without task tracking, it's easy to miss
critical steps like MCP binary check (plugin-deploy) or
marketplace.json sync (plugin-update), causing silent failures
that only surface when end users install the plugin.
….14.0)

Apply the idd-* pattern — every skill now starts with a mandatory
Step 0 Bootstrap Stage Task List (TaskCreate for each phase) so
silent skipping is impossible.

Added to:
- mcp-deploy (798 lines): 7 tasks for Phase 0-5 + 3.5 consistency
- mcp-new-app (650 lines): 4 tasks for project scaffolding
- mcp-publish (664 lines): 5 tasks for Registry publishing flow
- mcp-upgrade (491 lines): 6 tasks for multi-phase analysis
- mcp-to-plugin (472 lines): 7 tasks for MCP→Plugin conversion
- mcp-debug (342 lines): 4 tasks for deep diagnosis
- mcp-sync (337 lines): 5 tasks for binary consistency sync
- mcp-clone (316 lines): 4 tasks for reference cloning
- mcp-test (279 lines): 4 tasks for tool testing
- mcp-clone-references (262 lines): 6 tasks for competitor research
- mcp-install (199 lines): 4 tasks for binary install
- mcp-diagnose (128 lines): 5 tasks for connection check
- mcp-issue (97 lines): 4 tasks for quick GitHub issue

Rationale: mcp-tools skills like mcp-deploy have ~30 sub-steps across
5+ phases. Without task tracking, it's easy to skip critical checks
(binary consistency, codesign, xattr cleanup, manifest validation)
that only surface as silent failures when users install the binary.
PsychQuant/safari-browser@v2.5.0: resolver convergence + human-emulation
principle + 6 issue #28 reliability gap fixes. Binary available at
https://github.com/PsychQuant/safari-browser/releases/tag/v2.5.0
Sync plugin shell with upstream repo ownership:
- bin/che-ical-mcp-wrapper.sh: REPO var
- hooks/check-mcp.sh: GITHUB_REPO var (auto-install check)
- README.md: install instructions

Old URLs still 301-redirect so current users aren't broken, but fixing
the canonical references future-proofs against redirect loss.

Binary (CheICalMCP) stays at v1.7.0 — no binary change required, just
plugin shell.
18 MCP tools for macOS Apple Notes.app via dual-track architecture:
- SQLite fast read (<10ms) when Full Disk Access granted
- AppleScript write (CloudKit-safe) for all mutations
- Auto-fallback to AppleScript for reads if FDA missing

Binary source: https://github.com/PsychQuant/che-apple-notes-mcp
Wrapper auto-downloads from GitHub Releases on first use.

Ships with:
- 3 slash commands (/new-note, /search-notes, /list-folders)
- notes-management skill
- SessionStart hook for binary freshness check
- skills/CONTRIBUTING-PLAYBOOKS.md: contributor quick reference
- skills/safari-plaud-upload/: seed playbook (login-required, native upload)
- skills/safari-github-star/: seed playbook (login-branch logic)
- skills/safari-browser/SKILL.md: add ## Playbooks section with
  convention, seed list, and user-local override path

Convention: safari-<site>-<action>/SKILL.md, six-section body.
User-local override via ~/.claude/skills/ native Claude Code mechanism,
no custom precedence added.

Implements safari-browser openspec/changes/playbook-skills-convention/
(Wave 1 of safari-browser#32).
…nsemble

- idd-verify: 2 codex exec sites (primary Agent-Team engine + standalone codex engine) get -c service_tier="fast" alongside existing xhigh/low reasoning
- parallel-ai-agents: ensemble-code-review + ensemble-academic-review Codex sites get the same fast-mode flag
- Rationale: verify / ensemble are user-in-the-loop scenarios — speed > credit cost
- Bumps issue-driven-dev 2.20.0 → 2.20.1, parallel-ai-agents 2.1.0 → 2.1.1
BREAKING: n/a (wrapper behavior change, user-invisible if already on latest).

Bug fix (2.0.1):
- Wrapper now reads plugin.json version and compares against
  ~/bin/.CheWordMCP.version sidecar. Re-downloads when plugin has
  been updated but binary is stale. Previously wrapper exec'd any
  existing binary in ~/bin/ regardless of version (1.17.0 binary
  kept being used after plugin updated to 2.0.0).
- REPO fixed from kiki830621/che-word-mcp (obsolete fork) to
  PsychQuant/che-word-mcp. New-install users were hitting the fork
  and potentially getting very stale binaries.
- Atomic download (tmp + mv), fallback from pinned tag to latest,
  preserve existing binary on download failure.
Sync plugin shell with MCP binary v0.2.0 release on
PsychQuant/che-apple-notes-mcp. Adds 6 tools for Apple Notes sharing
(metadata + workflow helpers) plus 4 follow-up findings from 2 rounds
of 6-AI verification. Unit tests grew 86 → 112.

Full changelog: https://github.com/PsychQuant/che-apple-notes-mcp/blob/main/CHANGELOG.md
Mirrors the fix landed in che-word-mcp 2.0.1. Each wrapper now reads
plugin.json version and compares against ~/bin/.{Binary}.version sidecar,
re-downloading when stale. Fixes the failure mode where `claude plugin
update` upgrades the plugin shell but the wrapper keeps exec'ing a cached
old binary.

Also migrates che-things-mcp, che-xcode-mcp, che-zotero-mcp from obsolete
kiki830621/* fork to PsychQuant/* (all three forks verified present on GH).

Plugins touched (all patch bumps):
- che-apple-mail-mcp   2.5.0 -> 2.5.1
- che-apple-notes-mcp  0.2.0 -> 0.2.1
- che-duckdb-mcp       2.2.0 -> 2.2.1
- che-ical-mcp         1.7.1 -> 1.7.2
- che-pixel-mcp        0.1.0 -> 0.1.1
- che-svg-mcp          0.1.0 -> 0.1.1
- che-things-mcp       1.6.1 -> 1.6.2
- che-xcode-mcp        1.0.0 -> 1.0.1
- che-zotero-mcp       1.0.1 -> 1.0.2
- Bump tool count 18 → 24
- Add Sharing (3) section: get_share_metadata, prepare_share_note, prepare_share_folder
- Document shared: Bool on all reads + shared filter on list/search
- Note explicit NOT-implemented list (create_share_link et al.)
- Update Known Limits + Version History
…eploy (v1.13.0)

plugin-update:
- Phase 2.5 README Sync Check (ASK style, like binary dep check)
- Detects stale via: missing new version string, README mtime < code mtime,
  CHANGELOG latest not in README
- Step 0 bootstrap TaskCreate now includes check_readme_freshness to prevent
  silent skip
- 'Why' intro lists README drift as 6th common pitfall

plugin-deploy:
- Step 2 checklist adds 'README.md 與新版本同步' row
- New Step 2.6 README Freshness Gate: BLOCK on minor/major bump if stale,
  warn-only on patch
- Step 0 bootstrap TaskCreate includes readme_freshness_gate
- Step 4 Fix Issues now covers stale README (draft from CHANGELOG + recent
  commits, user reviews before commit)

README (self-application):
- Documents new v1.13.0 behavior
- Adds plugin-upgrade to the skill table (was missing)
archive-mail changes:
- Every md file now has YAML frontmatter (message_id, thread_key, in_reply_to, date, sender, direction)
- Maintains .threads.json (thread relationship index) in parallel with .email_index.json
- Both indexes are append-only; .threads.json can be regenerated from md frontmatter

New skills:
- /archive-mail-view <thread-key>: generate consolidated thread view (derived, regenerable)
- /archive-mail-rebuild-threads: rebuild .threads.json from md frontmatter scan

Design principle: per-email md is canonical storage; .threads.json and thread
views are derived indexes/views that can be rebuilt at any time. Keeps the
archive append-safe (new emails never mutate existing files) while allowing
thread-style reading.
When no .claude/issue-driven-dev.local.md exists, idd-issue now detects
whether origin is a fork (gh repo view --json isFork,parent) and forces
the user to pick target repo via AskUserQuestion:

  1. Upstream — contributor fork, bug reports, design discussions
  2. Own fork — customization fork, personal TODOs, divergent project
  3. Both — upstream main issue + origin tracking issue, cross-linked

Decision is persisted to config so subsequent runs stay silent. Not-a-fork
repos continue to default to origin without asking. Existing configs are
respected unchanged (fully backward-compatible).

Rationale: hardcoding "fork → upstream" is wrong half the time
(customization/divergent forks want issues on own fork). The only correct
default is "force opt-in once, then remember."
…22.0)

The config file `.claude/issue-driven-dev.local.md` (YAML frontmatter) was
a neither-fish-nor-fowl choice — mostly machine-read fields with a place
for prose explanations that nobody actually reads. Switched to pure JSON:
config is config, rationale belongs in commits / PR descriptions.

Changed across all 8 idd-* skills:
  - idd-issue: Configuration block + Step 0.5 write-back example updated
  - idd-report: YAML example block swapped for JSON
  - idd-comment / idd-edit / idd-list / idd-update / idd-verify /
    idd-implement: prose references updated, "frontmatter" language removed

No migration logic embedded in the skill (would bloat the skill for a
one-time transition). Users with existing .local.md:
  - delete .local.md → fork-aware detection re-prompts, writes .local.json
  - OR manually rename + convert YAML → JSON (trivial)

Breaking change in the sense that pre-2.22.0 configs won't be found, but
zero production impact expected: the config is trivially re-derivable and
re-writable via first-run prompt.
…p-tools/cli-tools/plugin-tools

Add shared rule tool-readme-sync.md to all three tools plugins with plugin-specific triggers:
- mcp-tools: MCP tools/list surface changes
- cli-tools: subcommand / flag / output format changes
- plugin-tools: skills/agents/commands/hooks changes

Enhance *-deploy skills with BLOCKING README-staleness check:
- mcp-deploy Step 4.6: verify tool count in README matches actual Server source
- cli-deploy Step 3.5: verify subcommand set in README matches --help output
- plugin-deploy Step 2.6.2b: component inventory check (skills/agents/commands vs README mentions)

Motivation: che-word-mcp v2.0.0→v3.1.0 accumulated 8 versions without README update
(146 tools stale claim vs 165 actual); this codifies the discipline so future deploys
cannot ship with stale README.

Version bumps:
- mcp-tools 1.14.0 → 1.15.0
- cli-tools 1.0.1 → 1.1.0 (also fixes marketplace drift 1.0.0 → 1.1.0)
- plugin-tools 1.13.0 → 1.14.0
kiki830621 added 23 commits May 18, 2026 11:17
…x / binary v2.9.0

Fills the v2.17.0 → v2.19.7 gap. Adds binary v2.8.5 + v2.9.0 fix clusters
(#16/#17/#22/#26/#28/#89/#71/#61-64/#73/#76/#99/#101/#104/#106).
No /archive-mail behavior change; this is documentation catch-up only.
… + #84) (#85)

* chore(che-apple-mail-mcp): add spectra change add-archive-mail-corpus-refinement (#76, #84)

8 design decisions captured in proposal / design / spec / tasks:
- merge #76 (subject) + #84 (sender/recipient) into one 3-axis change
- six fields: sender/recipient/subject × includes/excludes
- two-layer model: filters=Layer 1 search-time, *_includes/*_excludes=Layer 2 post-fetch
- A1 noun-first naming (matches existing schema's dominant pattern)
- B1 substring case-insensitive matching (matches existing filters semantics)
- excludes-precedence on same axis (blacklist wins)
- per-thread coherence (any message matches → whole thread keep/drop)
- new spec archive-mail-corpus-refinement (separated from existing filter-expansion)

spectra validate ✓ valid; spectra analyze ✓ Clean (Coverage / Consistency / Ambiguity / Gaps all 0 findings).

Refs #76, #84

* feat(che-apple-mail-mcp): v2.20.0 — Layer 2 post-fetch corpus refinement (#76, #84)

Six opt-in config fields for /archive-mail implementing thread-coherent
post-fetch refinement applied after Step 3 fetch and before Step 4 dedup:

  sender_includes / sender_excludes
  recipient_includes / recipient_excludes
  subject_includes / subject_excludes

Semantics (full contract in openspec/specs/archive-mail-corpus-refinement/spec.md):
- case-insensitive substring matching with bare-value normalization
  (display name stripped for sender/recipient; Re:/RE:/Fwd:/FW:/转发:/轉寄:
  prefixes stripped for subject)
- per-thread coherence — any message matching includes keeps whole thread;
  any matching excludes drops whole thread (avoids partial threads in archive)
- excludes-precedence on same axis (blacklist wins when both lists match same email)
- unset or empty list = no refinement on that axis (100% backward compat)
- malformed value (non-sequence scalar or non-[] inline list) aborts at Step 1
  parse time with explicit error and non-zero exit
- empty-string entries within sequence ("") silently dropped at parse

Step 1 config parsing adds six awk parsers (mirror exclude_mailboxes shape)
plus validation block and _strip_empty_refinement_entries helper.
Step 4 inserts Step 4.0 Pre-dedup refinement sub-step with apply_refinement
pseudocode (group by thread → per-axis includes whitelist + excludes blacklist).
Step 4.5 Phase 2 preview gains Corpus refinement statistics block (omitted
entirely when all six unset; zero-count categories omitted from breakdown).
Top config field table and search-extension examples section both extended
with the 6 new fields plus three concrete two-layer-model examples.

plugin.json version 2.19.7 → 2.20.0; CHANGELOG [Unreleased] block populated.

Refs #76, #84
Applied 7 ADDED Requirements to the authoritative
openspec/specs/archive-mail-corpus-refinement/spec.md;
moved the change to openspec/changes/archive/
2026-05-18-add-archive-mail-corpus-refinement/ with snapshot
for unarchive support.

Refs #76, #84
Mirror plugin.json version (2.19.7 → 2.20.0) and description (Layer 2
corpus refinement narrative) into the marketplace entry so users running
`claude plugin update che-apple-mail-mcp@psychquant-claude-plugins`
pick up the new commands/archive-mail.md shell.

Shell-only release — binary_version stays at 2.9.0, wrapper auto-download
still pulls the existing CheAppleMailMCP 2.9.0 binary.
…add Revise mode (#86)

- Phase 0 TaskList + Phase 1 Sources: 讀互動歷史從 soft checklist 升為 enforced
- 新增 Mode: Compose vs. Revise 段 — Revise mode 不跳 Phase 1-3
- Phase 2: 加 verbatim 核對硬規則(鬆綁 tentative OK、抹事實資訊不 OK)
- Phase 6b: 加 cross-ref,每次 user edit 都回 Mode 段
…l + reply-no-draft case (#86)

6-AI verify in-scope fixes:
- finding 1: 「Phase 1-3」→「Phase 1-2」for the prior-correspondence reading
  claim (Phase 3 is Simulate, reads nothing); 「understanding phases」label
  kept for the 1-3 block
- finding 2: Revise definition broadened (file / inline / in-chat draft) +
  mode-independent rule covering reply-with-no-draft
…1.5 binary-repo-drift signal (#66)

Two improvements to plugin-update SKILL.md surfaced during the
che-apple-mail-mcp marathon (closed all 11 open issues):

1. NEW Phase 0.3 Sync Intent Gate (between Phase 0 and Phase 0.5):
   - For binary-backed plugins, detect 3 sync candidates:
     * marketplace.json drift vs plugin.json shell version
     * 30-day shell file commit window
     * binary repo `main` vs last release commit count
   - If nothing-to-sync (all 3 quiet), short-circuit abort with
     explicit reason — saves the 'ran plugin-update, accomplished
     nothing' pure-no-op trap when invoked from binary repo before
     a fresh release.
   - 4-case AskUserQuestion: nothing-to-sync / binary-unreleased-only
     / sync-intent-confirmed / idd-all-unattended-auto-decide.

2. Phase 1.5 Step 2 — Signal 2 (binary-repo drift):
   - Existing Signal 1 (release missing binary asset) preserved.
   - NEW: `git -C <binary-repo> log v$BINARY_VERSION..main` —
     detects [Unreleased] commit backlog, prints recent 5 + recipe
     to run binary release.sh and bump binary_version.
   - Best-effort: silent skip if binary_version absent, local clone
     not found, or local tag missing (suggests git fetch --tags).

Bumps plugin-tools 1.16.0 → 1.17.0 + marketplace.json description.

Trade-off discussion:
- Tier C cross-plugin scope guard (skill follow-up #65) stays
  deferred — today's che-apple-mail-mcp run hit Tier A warn-only
  on 2 unrelated perspective-writer commits and that was sufficient.
- Phase 0.3 does NOT call git mutate operations — read-only by
  contract, like Phase 0.5 Step 1.

Refs #66 (skill self-improvement from che-apple-mail-mcp marathon).
Tracks https://github.com/PsychQuant/che-apple-mail-mcp/releases/tag/v2.10.0

11-issue marathon closes #126, #128, #129, #130, #131, #133, #134, #135,
#137, #138, #139:
- #131 new feature: from_address for compose_email/create_draft
- #133 redirect_email boundary recipient validation (#41 consistency)
- #134 + #139 actor wiring regression-lock (closes #104 verify DA gaps)
- #135 RedirectEmailScriptBuilder escape + byte-identity golden
- #137 resolveMailboxRef compose resolveAccountRef (#110 sibling DRY)
- #115/#122/#124/#125/#126 RFC 2047/2231 hardening sweep
- #129 cross-account move/copy README limitation
- #128/#130 positional UUID/verb-anchor assertion hardening
- #138 deferred (Codex layer migration, not recurrent)

Test suite 475 → 482+; full 6-AI ensemble verify every PR.
…(refs #86)

Bundles three improvements into one release:

1. Mode: Compose vs. Revise + Phase 1-2 enforcement (#86)
   commits ca9b7c7 + bab2737 already on main; this release ships them.
   Revise mode does not skip the understanding phases — when prior
   correspondence exists, reading it is mandatory regardless of mode.

2. Phase 5 anti-pattern: English sincerity-intensifier adverbs
   "deeply / sincerely / truly / genuinely / wholeheartedly / really
   / very much" modifying gratitude / hope / appreciation verbs.
   Native English correspondence carries sincerity in verb structure,
   not in adverbs; stacked intensifiers read as ESL or AI. Fix is
   almost always deletion.

3. Span-label correction: "Phase 1-2" for the prior-correspondence
   reading claim; "Phase 1-3" kept for the understanding block.

Version bumped to 2.8.0 (minor — Revise mode is a capability addition).
Wraps PsychQuant/che-transport-mcp v0.2.0 binary (notarized release at
https://github.com/PsychQuant/che-transport-mcp/releases/tag/v0.2.0).

Plugin shell
- .claude-plugin/plugin.json + .mcp.json + marketplace.json entry
- bin/che-transport-mcp-wrapper.sh — version-aware auto-download from
  GitHub Release (sidecar sha tracking, atomic .tmp+mv swap, fallback
  to latest if pinned tag missing). Mirrors che-ical-mcp pattern.
- hooks/session-start.sh — single-line banner: binary version + TDX
  credential presence (security find-generic-password under service
  "che-transport-tdx"); no secret printed
- hooks/hooks.json — SessionStart registration only

Skills (3, namespaced under /che-transport-mcp:)
- setup-tdx — first-time credential setup walkthrough (Terminal-only
  read commands to keep secrets off the transcript)
- today-rail — NSQL-disciplined O/D rail timetable helper
  (search_stations → confirm → find_trains → optional status_train)
- nearby-bike — landmark→coordinates→bike_stations_nearby with
  borrow/return intent filter and confirmed radius expansion

Marketplace
- inserted after che-xcode-mcp in plugins[] array
- category: productivity (data-fetching, no execution)

Unrelated codex-batch deletions in the same working tree are NOT in
this commit — staged separately if at all.
Replace the 2-row Update flow table with a 3-section breakdown:
- shell-only fast path (existing /plugin-tools:plugin-update)
- full chain triggered by binary release (source repo → marketplace
  repo → automatic end-user wrapper re-download)
- explicit note on the v0.2.0 footgun: must upload the raw
  CheTransportMCP binary as a release asset, not just the .mcpb,
  because the wrapper greps browser_download_url for /CheTransportMCP"

Single source of truth for "how do I cut v0.3.0" — without this doc
the workflow lived only in conversation history.
Binary v0.2.1 moves TDX credential setup into the signed binary as
`CheTransportMCP --setup` (getpass-hidden prompt, shared keychain code
with --check-auth, unit-tested). Plugin shell follows:

- bin/setup-tdx.sh shrunk from a ~90-line bash script to a 2-line
  launcher shim — it only exists so the skill can `open -a Terminal`
  a single file; it forwards to `wrapper --setup`. No setup logic in
  bash anymore.
- skills/setup-tdx rewritten: describes the Swift --setup flow;
  fallback path is `~/bin/CheTransportMCP --setup` directly
- wrapper reads decoupled `binaryVersion` field (falls back to
  `version` for older plugin.json) — a shell-only `version` bump no
  longer makes the wrapper chase a non-existent binary release tag
- plugin.json: version 0.2.1, binaryVersion 0.2.1 (binary changed,
  so both move in lockstep this time)
- marketplace.json + README + CLAUDE.md synced

Why Swift over bash: one signed artifact, getpass beats `read -s`
portability, keychain read+write share one module (no drift),
Setup.validate is unit-testable.
The old skill assumed the user already had a TDX client_id/secret and
jumped straight to launching --setup. A first-time plugin user has no
TDX account at all — they'd hit the `client_id:` prompt with nothing
to type.

Adds the missing half:
- Step 2: AskUserQuestion branch — "do you already have a TDX API key?"
  Routes users-with-creds straight to launch; routes everyone else
  through registration first. Never assume creds exist (the missing-
  credentials banner only means an empty keychain, not a key in hand).
- Step 3: accurate TDX registration + key retrieval walkthrough —
  register page, then 會員中心 → 資料服務 → API 金鑰 → green 編輯
  button to reveal Client Id + Client Secret. The old skill said
  "會員中心 → API 金鑰", missing the 資料服務 level and the 編輯
  reveal step — exactly where new users get stuck.

Steps renumbered (locate/launch/confirm/restart now 4-7). Binary
--setup mechanics unchanged — this is purely the conversational
onboarding layer the skill is best placed to own.
Shell-only release — carries the setup-tdx fresh-user onboarding
branch (e6e8ca8). version 0.2.1 → 0.2.2; binaryVersion stays 0.2.1
(no binary change). First real exercise of the decoupled-version
design: the wrapper reads binaryVersion, so this version bump does
NOT make it chase a non-existent v0.2.2 binary release.
Bumps:
- version 0.2.2 → 0.2.3 (skill change)
- binaryVersion 0.2.1 → 0.2.2 (CheTransportMCP v0.2.2 released — --setup
  now auto-delegates to che-keychain when installed)

Skill rewrite — Step 4 splits into:
- (A) Preferred: `che-keychain set-pair --service che-transport-tdx ...`
  invoked directly from the Bash tool. Native NSAlert pops, user types
  into a one-shot dialog (id visible + secret masked in one window),
  zero Terminal involvement. Same trust isolation: the typed values
  never enter this Claude Code session (the dialog runs inside the
  signed che-keychain binary).
- (B) Fallback: existing `open -a Terminal bin/setup-tdx.sh` flow when
  che-keychain isn't installed. The CheTransportMCP binary at the end
  of that chain ALSO auto-detects che-keychain (v0.2.2+), so the
  fallback gets the dialog upgrade automatically once che-keychain
  shows up later.

Step 6 error guide adds the che-keychain exit-code 2 (user cancelled)
case.
Moved plugins/che-axiom-systems/ to its own repo at
https://github.com/PsychQuant/che-axiom-systems for independent
versioning and external collaboration.

Marketplace.json entry removed — the standalone repo is not (yet)
registered as a separate marketplace; users who installed via this
marketplace should reinstall from the new source if they want it back
as a plugin.

Removed third-party copyrighted material (APA 7 manual derivatives,
Apple Logic Pro user guides, SAS PROC manuals) prior to public release
of the new repo. See new repo README + .gitignore for details.
…s R duckdb 1.5.2)

Wrapper is version-aware: bumping plugin.json/marketplace.json to 2.3.0
makes consumers auto-download the new notarized binary from the
PsychQuant/che-duckdb-mcp v2.3.0 release. Fixes PsychQuant/che-duckdb-mcp#2.
…point fixes, maritime removed (21 tools)

binaryVersion 0.2.2 → 0.3.0 (wrapper auto-downloads the v0.3.0 release binary).
Docs synced from source plugin/ (tool count 23 → 21, maritime removed).
Refs PsychQuant/rush#4.
…lit 警告

skill 原本只示範 inline --url flag,沒教「把 lock flag 存成變數重用」的
安全寫法。補一個 LOCK=(--url x) + "${LOCK[@]}" 範例,並警告
LOCK="--url x"+unquoted $LOCK 在 zsh 下會壞(Claude Code 的 Bash 跑 zsh,
不對 unquoted 變數做 word-split)。讓 skill 成為此知識的 source of truth。
@kiki830621
kiki830621 force-pushed the chore/extract-che-axiom-systems branch from af293b2 to ecd5609 Compare June 19, 2026 13:01
kiki830621 added a commit that referenced this pull request Jul 5, 2026
…spectra-IDD bridge

Two new rules + 6 SKILL.md updates closing real-world workflow gaps observed
in PsychQuant/contact-book#96.

NEW rules/tagging-collaborators.md
  Mandatory 5-step protocol when any IDD skill posts @-mention to GitHub:
  detect intent → fetch collaborators via gh api → fuzzy match against
  login + name → AskUserQuestion fallback for 0/2+ matches → grep + verify
  pre-post. Forbids handles from training memory / chat history / git log.
  Flag --mention <login>[,<login>...] on idd-issue + idd-comment;
  prose-detection on idd-diagnose / idd-implement / idd-verify / idd-close.

NEW rules/spectra-bridge.md
  Bridge contract for IDD skills called mid-spectra-discuss. Detection
  signals (--resume-spectra flag, --source contains spectra-discuss,
  spectra list shows in-flight, .claude/state/idd-bridge.json exists).
  Bookmark schema with verbatim spectra_topic + open_questions[] +
  next_step_hint. Resume prompt block at end so user can paste back into
  spectra-discuss without losing context. Hard rule: never auto-invoke
  /spectra-discuss; user controls pacing.

skills/idd-comment/SKILL.md (full implementation)
  Step 0 task list: + detect_spectra_context / resolve_mentions /
  verify_mentions / spectra_bridge_resume.
  + Step 0.7 Detect Spectra Context
  + Step 2.5 Resolve Mentions
  + Step 3.5 Verify mentions (grep + cross-check pre-post; abort on
    unverified token)
  + Step 7 Spectra Bridge Resume Prompt (bookmark file + delimited
    resume block)
  + Two flags: --mention, --resume-spectra
  + Two examples: Note with mention / Spectra-bridge resume
  + Two 鐵律 entries

skills/idd-issue/SKILL.md
  Step 0 task list: + resolve_mentions
  Step 2: Stakeholders bullet (point 5) referencing the rule
  + Step 2.6 Resolve Mentions

skills/{idd-diagnose,idd-implement,idd-verify,idd-close}/SKILL.md
  Step 0 footnote: tagging in this skill's GitHub comment must follow
  rules/tagging-collaborators.md.

CLAUDE.md
  Two new sections after PR-vs-Direct-commit: Tagging Collaborators
  (v2.32.0+) summarising the protocol, Spectra ↔ IDD Bridge (v2.32.0+)
  summarising detection / bookmark / resume.

CHANGELOG.md
  Detailed v2.32.0 entry with Why-now context referencing #96.

plugin.json: 2.31.1 → 2.32.0

No breaking changes. Existing skills work as before; new flags are opt-in.
Skills without --mention still scan body for @xxx and route through the
protocol — but only when tokens are present, so empty-mention flows are
unaffected.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant