v2.7.0: Multi-Runtime Portability#24
Merged
RichardHightower merged 62 commits intomainfrom Mar 22, 2026
Merged
Conversation
Audits both plugin directories, extracts all frontmatter fields from 21 files, identifies the CANON-01 reinterpretation (keep dirs separate), and documents the plugin.json/marketplace.json gap for Phase 46. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add plugins/installer-sources.json listing both canonical plugin source dirs - Verified: 6 commands, 13 skills, 2 agents across both plugin directories - Provides discovery anchor for Phase 46 installer parser Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- CANON-01: reworded to reflect two-dir approach (no merge) - CANON-02: marked as deferred to Phase 49 - Traceability table: CANON-02 phase updated from 45 to 49 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- SUMMARY.md with execution results - STATE.md updated: Phase 45 complete, Phase 46 next - ROADMAP.md progress updated - REQUIREMENTS.md: CANON-01/02/03 marked complete Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Documents standard stack, architecture patterns, type designs, CLI structure, tool maps, managed-section marker format, dry-run pattern, and validation test map for the memory-installer crate scaffold. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…and converter stubs - Add memory-installer to workspace with gray_matter and walkdir dependencies - Define Runtime, InstallScope, InstallConfig, PluginBundle, ConvertedFile types - CLI with install subcommand accepting --agent, --project, --global, --dir, --dry-run - RuntimeConverter trait with 7 methods for plugin conversion - 6 converter stubs (Claude, OpenCode, Gemini, Codex, Copilot, Skills) implementing trait - select_converter dispatch table in converters/mod.rs - Managed-section marker constants as compatibility contracts - No tokio dependency -- pure synchronous binary
- Verify select_converter returns correct name for each Runtime variant - Test stub converters return empty results (contract for future implementations) - Verify target_dir produces runtime-specific paths for project scope
- SUMMARY.md with 2 tasks, 13 files, 8 tests - STATE.md updated with position and decisions - ROADMAP.md updated with phase 46 progress (1/3 plans) - REQUIREMENTS.md: INST-01 and INST-03 marked complete
- 7 tests for parse_md_file and parse_sources - Tests verify frontmatter extraction, graceful no-frontmatter handling - Tests assert 6 commands, 2 agents, 13 skills from real plugin dirs - Tests check skill additional_files and command frontmatter fields Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- parse_md_file uses gray_matter to extract YAML frontmatter as serde_json::Value - parse_sources reads installer-sources.json, walks marketplace.json, returns PluginBundle - Handles missing frontmatter gracefully with warning and empty Value::Object - Skill directories walked with walkdir for additional_files (references/, scripts/) - All 7 parser tests pass, clippy clean Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- SUMMARY.md with parser implementation details - STATE.md updated with position and decisions - ROADMAP.md updated with plan progress - REQUIREMENTS.md: INST-02 marked complete Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…table - Static match-based map_tool() function covering Claude, OpenCode, Gemini, Codex, Copilot, Skills - Gemini Task tool correctly returns None (auto-discovered, excluded) - Unknown tool names return None for all runtimes - KNOWN_TOOLS constant for exhaustive iteration - 18 unit tests with individual and exhaustive coverage Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- write_files() with dry-run support (CREATE/OVERWRITE reporting) - merge_managed_section() handling 3 cases: new file, existing with markers, existing without - remove_managed_section() for future --uninstall support - WriteReport struct with Display impl for summary output - Re-export MANAGED_BEGIN/MANAGED_END constants from writer module - Wire main.rs: parse_sources -> select_converter -> convert_* -> write_files - Auto-discover plugins/ directory with fallback to --source flag - 14 writer unit tests, all passing - End-to-end dry-run verified: memory-installer install --agent claude --project --dry-run Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- 46-03-SUMMARY.md with tool maps, writer, pipeline wiring results - STATE.md updated: Phase 46 complete, ready for Phase 47 - ROADMAP.md updated with Phase 46 progress (3/3 plans) - REQUIREMENTS.md: INST-04, INST-05, INST-06, INST-07 marked complete Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add helpers.rs with value_to_yaml, reconstruct_md, rewrite_paths functions - Implement ClaudeConverter: convert_command, convert_agent, convert_skill - Path rewriting: ~/.claude/ -> ~/.config/agent-memory/ in all body content - convert_hook returns None (deferred to Phase 49) - generate_guidance returns empty Vec (no config needed for Claude) - Update stub test to exclude Claude from empty-result assertions - 22 new tests for helpers and Claude converter (69 total passing) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- convert_command produces .github/skills/<name>/SKILL.md with YAML frontmatter - convert_agent produces .github/agents/<name>.agent.md with tools array and infer:true - convert_skill handles additional files with path rewriting - generate_guidance produces hooks JSON and embedded capture script - target_dir uses .github/ for project scope (not .github/copilot/) - All 12 unit tests passing Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Remove Copilot from unimplemented_converters_return_empty_results - Fix clippy single-element-loop warning by unwinding loop - Only Skills remains as a stub converter Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- SUMMARY.md with task commits and decisions - STATE.md updated to phase 49 plan 1 - ROADMAP.md and REQUIREMENTS.md updated Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…agent, convert_skill - Commands produce skills/<name>/SKILL.md with YAML frontmatter and path-rewritten body - Agents produce orchestration skills with canonical Claude tool names (no remapping) - Skills handled with SKILL.md + additional files, all path-rewritten - convert_hook returns None, generate_guidance returns empty Vec - 7 unit tests covering all converter methods and edge cases Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Replace unimplemented_converters_return_empty_results with implemented_converters_produce_nonempty_command_output - Verify 5 implemented converters (Claude, Gemini, Codex, Copilot, Skills) produce non-empty output - OpenCode excluded (still a stub from Phase 47 scope) - Apply cargo fmt formatting fixes across converter files - All 104 memory-installer tests pass, clippy clean Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- SUMMARY.md with SkillsConverter implementation details - STATE.md updated to Phase 49 Plan 2 complete (100%) - ROADMAP.md and REQUIREMENTS.md updated Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Three-phase milestone spec for v3.0: Retrieval Orchestrator (memory-orchestrator crate with RRF fusion + LLM rerank), Simple CLI API (new `memory` binary with JSON envelope output), and Benchmark Suite (custom harness + LOCOMO adapter). Closes gaps vs MemMachine (retrieval pipeline) and Mem0 (developer API) with measurable benchmark proof. Reviewer-approved with all 9 spec issues resolved. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Three GSD-ready implementation plans for v3.0 Competitive Parity milestone: - Phase A: memory-orchestrator crate (RRF fusion, query expansion, rerank trait) - Phase B: memory-cli crate with `memory` binary (6 commands, JSON envelope) - Phase C: memory-bench crate (custom harness + LOCOMO adapter) Plans feed into /gsd:new-milestone after v2.7 ships. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- canonical bundle exercises command/agent/skill/hook through full pipeline - file structure and content assertions for Claude, Codex, Gemini, Copilot, Skills - OpenCode stub confirms empty output without file creation - MIG-04 verified via workspace member check Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- rustfmt adjustments for closure filter chains Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- SUMMARY.md with E2E test results for all 6 converters - STATE.md advanced to plan 2 of 2 - ROADMAP.md updated with plan progress - Requirements MIG-01, MIG-02, MIG-04 marked complete Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Replace copilot, gemini, opencode adapter contents with archive READMEs - Delete obsolete skills, agents, commands, hooks config, .gitignore files - Preserve memory-capture.sh (include_str! compile dependency) - Active plugins (query, setup) and installer-sources.json untouched Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- SUMMARY.md documents archival of 3 adapter directories - STATE.md updated to phase 50 COMPLETE - ROADMAP.md updated with plan progress - MIG-03 requirement marked complete Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Archive milestone artifacts, evolve PROJECT.md with v2.7 validated requirements and key decisions, reorganize ROADMAP.md with collapsed milestone entry, update MILESTONES.md with accomplishments and stats. Known gaps: OC-01-06 (OpenCode converter stub) deferred to v3.0. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
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
RuntimeConvertertrait and 6 runtime converters (Claude, Gemini, Codex, Copilot, Skills, OpenCode stub)Phases
Known Gaps
Test plan
cargo fmt --all -- --checkpassescargo clippy --workspace --all-targets --all-features -- -D warningspassescargo test --workspace --all-featurespasses (111 tests)🤖 Generated with Claude Code