chore: extract che-axiom-systems to standalone public repo#96
Open
kiki830621 wants to merge 357 commits into
Open
chore: extract che-axiom-systems to standalone public repo#96kiki830621 wants to merge 357 commits into
kiki830621 wants to merge 357 commits into
Conversation
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.
…earch_text_batch) Refs #18
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
… + #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
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.
…binaryVersion 0.3.0→0.4.0)
…routing (binaryVersion 0.4.0→0.5.0)
…ent routing (binaryVersion 0.5.0→0.6.0)
…ay overflow guard)
kiki830621
force-pushed
the
chore/extract-che-axiom-systems
branch
from
June 6, 2026 01:53
3fe168a to
53b1f35
Compare
…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
force-pushed
the
chore/extract-che-axiom-systems
branch
from
June 19, 2026 13:01
af293b2 to
ecd5609
Compare
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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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
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
plugins/che-axiom-systems/(458 files, ~119k lines).claude-plugin/marketplace.jsonche-axiom-systemsanywhere in this repo (verified with grep)New repo
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'))"passesgrep -rn che-axiom-systemsreturns no matches outsideplugins/find -name "*.pdf"returns empty)