Conversation
Cipher was deprecated in v4.0 in favor of mem0 MCP. This commit completes the removal by eliminating all remaining references. Changes: - Remove cipher from MCP server configs, mappings, and selections - Remove cipher from all 7 agent templates (replaced with mem0 where needed) - Remove cipher from command templates (map-debug, map-fast, map-release) - Remove cipher from source code (__init__.py MCP server logic) - Delete docs/cipher-setup-guide/ directory and QUICKSTART-CIPHER.md - Delete cipher-integration.md from skills resources - Remove cipher from presentations (EN + RU) - Remove cipher from plugin configs and marketplace - Clean cipher from CHANGELOG, tests, lint scripts, .gitignore - Sync all templates to src/mapify_cli/templates/ - Update test assertions for cipher-free fallback generators All 697 tests pass.
📝 WalkthroughWalkthroughThis PR performs a comprehensive migration from Cipher MCP to mem0 MCP across the MAP framework. It removes all Cipher server configurations and references, deletes Cipher-specific documentation, updates agent and command templates to reference mem0, removes Cipher from CLI initialization options, and adjusts all supporting documentation to reflect the new memory system. Changes
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 3✅ Passed checks (3 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing touches
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Pull request overview
This PR removes the deprecated Cipher MCP integration across the MAP Framework, updating templates, docs, CLI init behavior, and tests to eliminate cipher references and align around mem0-centric knowledge workflows.
Changes:
- Removed Cipher from MCP server configs, templates, and documentation (including legacy setup guides).
- Updated agent/command templates and presentations to remove cipher references and adjust wording around knowledge sync.
- Updated CLI init/test expectations for the reduced MCP server set.
Reviewed changes
Copilot reviewed 66 out of 67 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| tests/test_mapify_cli.py | Updates init + agent creation tests to remove cipher expectations |
| src/mapify_cli/templates/skills/map-workflows-guide/resources/playbook-system.md | Removes cipher references from playbook system skill doc |
| src/mapify_cli/templates/skills/map-workflows-guide/resources/map-feature-deep-dive.md | Removes cipher sync mention + rewords duplicate checking |
| src/mapify_cli/templates/skills/map-workflows-guide/resources/map-fast-deep-dive.md | Rewords “cipher sync” to generic pattern sync |
| src/mapify_cli/templates/skills/map-workflows-guide/resources/map-efficient-deep-dive.md | Replaces “searched cipher” with “searched mem0” |
| src/mapify_cli/templates/skills/map-workflows-guide/resources/cipher-integration.md | Deletes legacy/renamed integration doc (cipher-integration) |
| src/mapify_cli/templates/skills/map-workflows-guide/resources/agent-architecture.md | Removes link to removed cipher integration doc |
| src/mapify_cli/templates/skills/map-workflows-guide/SKILL.md | Removes references/links to cipher-integration resource |
| src/mapify_cli/templates/skills/README.md | Removes cipher-integration from skill resource listings |
| src/mapify_cli/templates/commands/map-release.md | Removes “Also search Cipher” section |
| src/mapify_cli/templates/commands/map-fast.md | Removes cipher mention from “learning disabled” note |
| src/mapify_cli/templates/commands/map-debug.md | Removes cipher-search steps and rewords “past issues” source |
| src/mapify_cli/templates/agents/task-decomposer.md | Removes cipher reasoning-pattern tool references |
| src/mapify_cli/templates/agents/reflector.md | Updates wording from cipher → mem0 for novelty checks |
| src/mapify_cli/templates/agents/predictor.md | Updates scoring language and examples from cipher → mem0 |
| src/mapify_cli/templates/agents/monitor.md | Updates security/checklist prompts from cipher → mem0 |
| src/mapify_cli/templates/agents/documentation-reviewer.md | Updates fallback/log wording from cipher → mem0 |
| src/mapify_cli/templates/agents/curator.md | Updates guidance to check mem0 instead of cipher |
| src/mapify_cli/templates/agents/actor.md | Updates example wording from cipher → mem0 |
| src/mapify_cli/init.py | Removes cipher from init options/config generation and template fallbacks |
| scripts/lint-agent-templates.py | Removes cipher tool keyword linting entry |
| presentation/ru/03-workflow.md | Removes cipher workflow steps; updates MCP tool counts and memory model |
| presentation/en/04-getting-started.md | Removes cipher from MCP server overview and setup steps |
| presentation/en/03-workflow.md | Removes cipher workflow steps; updates MCP tool counts and memory model |
| presentation/en/02-architecture.md | Removes cipher tool references and updates “critical protocol” wording |
| presentation/en/01-introduction.md | Removes cipher from MCP integration list/count |
| docs/cipher-setup-guide/README.md | Removes legacy cipher setup documentation |
| docs/cipher-setup-guide/06-troubleshooting.md | Removes legacy cipher troubleshooting documentation |
| docs/cipher-setup-guide/05-verification.md | Removes legacy cipher verification documentation |
| docs/cipher-setup-guide/04-claude-code-setup.md | Removes legacy cipher Claude Code setup documentation |
| docs/cipher-setup-guide/03-cipher-configuration.md | Removes legacy cipher configuration documentation |
| docs/cipher-setup-guide/02-cipher-installation.md | Removes legacy cipher installation documentation |
| docs/cipher-setup-guide/01-infrastructure-setup.md | Removes legacy cipher infrastructure setup documentation |
| docs/USAGE.md | Removes cipher integration references; rewords knowledge integration statements |
| docs/QUICKSTART-CIPHER.md | Removes legacy cipher quickstart documentation |
| docs/INSTALL.md | Removes cipher from init examples and removes legacy cipher install section |
| docs/CLI_REFERENCE.json | Removes cipher/hybrid playbook query modes and cipher integration docs |
| docs/CLI_COMMAND_REFERENCE.md | Updates init example to remove cipher server |
| docs/ARCHITECTURE.md | Removes cipher mentions and updates migration wording |
| CHANGELOG.md | Removes cipher references from historical changelog entries |
| .mcp.json.example | Removes cipher MCP server example block |
| .gitignore | Removes cipher-rules ignore entries |
| .claude/skills/map-workflows-guide/resources/playbook-system.md | Mirrors template skill doc cipher removals in shipped .claude copy |
| .claude/skills/map-workflows-guide/resources/map-feature-deep-dive.md | Mirrors template doc updates |
| .claude/skills/map-workflows-guide/resources/map-fast-deep-dive.md | Mirrors template doc updates |
| .claude/skills/map-workflows-guide/resources/map-efficient-deep-dive.md | Mirrors template doc updates |
| .claude/skills/map-workflows-guide/resources/cipher-integration.md | Deletes shipped cipher-integration resource |
| .claude/skills/map-workflows-guide/resources/agent-architecture.md | Mirrors template link removal |
| .claude/skills/map-workflows-guide/SKILL.md | Mirrors template skill index updates |
| .claude/skills/README.md | Mirrors template skills README updates |
| .claude/playbook_delta_operations.json | Removes cipher-specific reasoning/fields from example delta ops |
| .claude/commands/map-release.md | Mirrors template command update |
| .claude/commands/map-fast.md | Mirrors template command update |
| .claude/commands/map-debug.md | Mirrors template command update |
| .claude/agents/task-decomposer.md | Mirrors template agent update |
| .claude/agents/reflector.md | Mirrors template agent update |
| .claude/agents/predictor.md | Mirrors template agent update |
| .claude/agents/monitor.md | Mirrors template agent update |
| .claude/agents/documentation-reviewer.md | Mirrors template agent update |
| .claude/agents/curator.md | Mirrors template agent update |
| .claude/agents/actor.md | Mirrors template agent update |
| .claude-plugin/plugin.json | Removes cipher from plugin required MCP servers list |
| .claude-plugin/marketplace.json | Removes cipher from marketplace required MCP servers list |
| .claude-plugin/PLUGIN.md | Removes cipher references from plugin documentation |
Comments suppressed due to low confidence (7)
presentation/en/01-introduction.md:40
- The MCP server count is inconsistent with the list below: this section says MAP uses/needs 5 MCP servers but only enumerates 4 (claude-reviewer, sequential-thinking, context7, deepwiki). Either add mem0 to the list (if it’s considered an MCP server) or update the count to match what’s actually required.
presentation/en/04-getting-started.md:199 - This section states MAP requires 5 MCP servers, but only 4 servers are listed. Please reconcile the count vs the actual required servers (e.g., include mem0 explicitly if it’s required, or change the headline number).
.mcp.json.example:54 - This example MCP configuration doesn’t mention mem0 at all, but the framework’s workflows/templates rely on mcp__mem0__* tools. Consider adding a mem0 server entry (or at least a prominent note/placeholder) so users copying this example don’t end up without the required knowledge MCP integration.
"mcpServers": {
"claude-reviewer": {
"_comment": "Code review MCP server - provides professional code review with security analysis",
"_note": "This example uses a community server. You may need to adjust the command for your setup.",
"_alternatives": [
"Custom fork: /path/to/your/mcp-claude-reviewer/mcp-wrapper.sh",
"Community server: npx -y @vibesnipe/code-review-mcp"
],
"_required_for": "Professional code review integration, MAP /map-review command",
"type": "stdio",
"command": "npx",
"args": ["-y", "@vibesnipe/code-review-mcp"],
"env": {
"OPENAI_API_KEY": "${OPENAI_API_KEY}"
}
},
"sequential-thinking": {
"_comment": "Anthropic's Sequential Thinking - Provides structured chain-of-thought reasoning",
"_install": "Automatically installed via npx",
"_required_for": "Complex problem solving, multi-step reasoning in MAP agents",
"_docs": "https://github.com/modelcontextprotocol/servers/tree/main/src/sequentialthinking",
"type": "stdio",
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-sequential-thinking"]
},
"context7": {
"_comment": "Context7 by Upstash - Up-to-date, version-specific library documentation",
"_install": "Automatically installed via npx",
"_required_for": "Library documentation lookup (optional but recommended)",
"_docs": "https://github.com/upstash/context7",
"_usage": "Add 'use context7' to your prompts",
"type": "stdio",
"command": "npx",
"args": ["-y", "@upstash/context7-mcp"]
},
"deepwiki": {
"_comment": "DeepWiki - Official remote MCP server for GitHub repository analysis",
"_install": "No installation needed - remote SSE server",
"_required_for": "GitHub repository documentation and analysis (optional)",
"_docs": "https://docs.devin.ai/work-with-devin/deepwiki-mcp",
"_note": "Free, no authentication required",
"type": "sse",
"url": "https://mcp.deepwiki.com/sse"
}
},
src/mapify_cli/init.py:1419
- The init-time MCP configuration generated here no longer includes any knowledge server entry, but the framework templates/docs rely on mem0 tools (mcp__mem0__*). Consider adding a "mem0" server to INDIVIDUAL_MCP_SERVERS / server_configs and mapping it to the appropriate agents (or documenting that mem0 is always required and configured elsewhere). As-is, a freshly initialized project’s .claude/mcp_config.json won’t reflect the mem0 dependency documented in docs/ARCHITECTURE.md.
.claude-plugin/plugin.json:34 - The declared required MCP servers omit mem0, but the plugin features include an ACE learning system backed by mem0 MCP. Either add mem0 to the required list, or adjust the feature/requirements text to avoid implying the plugin works without the knowledge server.
"requirements": {
"claude_code_version": ">=1.0.0",
"mcp_servers": [
"claude-reviewer",
"sequential-thinking"
],
"recommended_mcp_servers": [
"context7",
"deepwiki"
]
.claude-plugin/marketplace.json:48
- This marketplace metadata lists only claude-reviewer and sequential-thinking as required MCP servers, but the framework relies on mem0 MCP for pattern storage/search. Please include mem0 in requirements (or clarify that it’s not required) to keep the metadata accurate for installers.
"requirements": {
"claude_code": ">=1.0.0",
"mcp_servers": [
"claude-reviewer",
"sequential-thinking"
]
},
.claude-plugin/PLUGIN.md:96
- The Requirements section lists “essential” MCP servers but omits mem0, even though earlier in this document the ACE learning system is described as using mem0 MCP. Please add mem0 here (or clarify why it’s not required) so setup guidance matches the described architecture.
## Requirements
- **Claude Code CLI** — installed and configured
- **MCP Servers** (essential):
- `claude-reviewer` — professional code review
- `sequential-thinking` — chain-of-thought reasoning
**Recommended MCP Servers:**
- `context7` — library documentation
- `deepwiki` — GitHub repository analysis
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| def lint_mcp_tool_descriptions(self, file_path: Path, content: str): | ||
| """Check MCP tool descriptions for consistency""" | ||
| # Common MCP tools that should be consistently described | ||
| mcp_tools = { | ||
| "cipher_memory_search": ["search", "pattern", "knowledge"], | ||
| "context7": ["library", "documentation", "resolve-library-id"], | ||
| "deepwiki": ["wiki", "repository", "production"], | ||
| } |
There was a problem hiding this comment.
The template linter no longer checks the primary knowledge MCP tool family used throughout the templates (mem0). After removing cipher_memory_search, consider adding mem0-related keys/keywords (e.g., map_tiered_search/map_add_pattern) so the consistency check still covers the core MCP integration.
| # Verify MCP integration for agents that use MCP tools | ||
| if any( | ||
| name in agent_file | ||
| for name in ["task-decomposer", "actor", "monitor", "predictor"] | ||
| ): | ||
| assert "mcp" in content.lower() or "tool" in content.lower(), ( | ||
| f"Agent {agent_file} missing MCP integration section" | ||
| ) |
There was a problem hiding this comment.
This fallback-agent test assertion is too weak and can pass even when no MCP integration section exists (e.g., matching the generic word “tools”). Consider asserting for a specific MCP marker like an "MCP Integration" header or an actual tool prefix ("mcp__"), and only for agents that should include MCP guidance given the selected servers.
| MCP_SERVER_CHOICES = { | ||
| "all": "All available MCP servers", | ||
| "essential": "Essential (cipher, claude-reviewer, sequential-thinking)", | ||
| "essential": "Essential (claude-reviewer, sequential-thinking)", | ||
| "docs": "Documentation (context7, deepwiki)", |
There was a problem hiding this comment.
The “essential” MCP server description omits mem0, but the rest of the project treats mem0 as the primary knowledge store (mcp__mem0__* calls in templates/docs). Please clarify whether mem0 is implicitly required/always-on; if not, include it in the essential set to avoid users ending up with a configuration that can’t run the workflows as documented.
There was a problem hiding this comment.
Actionable comments posted: 6
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (6)
.claude/playbook_delta_operations.json (1)
1-147:⚠️ Potential issue | 🔴 CriticalSync
.claude/playbook_delta_operations.jsontosrc/mapify_cli/templates/The modified file has not been mirrored to the templates directory. While other configuration files (settings.json, settings.hooks.json, workflow-rules.json, skill-rules.json, ralph-loop-config.json) are synced, playbook_delta_operations.json is missing from
src/mapify_cli/templates/.Run
make sync-templatesor manually copy the file tosrc/mapify_cli/templates/playbook_delta_operations.jsonbefore finishing..claude/skills/map-workflows-guide/resources/map-fast-deep-dive.md (1)
21-46:⚠️ Potential issue | 🟠 MajorSync the updated
.claude/skillsresource intosrc/mapify_cli/templates/skills.This change is under
.claude/, so the matching file insrc/mapify_cli/templates/skills/map-workflows-guide/resources/map-fast-deep-dive.mdmust be updated to stay in sync. Please confirm the sync (e.g.,make sync-templates) and that the template copy is committed.
As per coding guidelines: Keep.claude/configuration in sync withsrc/mapify_cli/templates/by syncing common paths.presentation/en/04-getting-started.md (1)
189-200:⚠️ Potential issue | 🟡 MinorFix MCP server count (statement vs list mismatch).
Line 189 says “5 MCP servers,” but only 4 are listed (1 required + 3 optional). Update the count or the list so they match.
✅ Suggested fix
-MAP requires **5 MCP servers** for full functionality: +MAP requires **4 MCP servers** for full functionality:presentation/en/01-introduction.md (1)
34-40:⚠️ Potential issue | 🟡 MinorFix MCP server count vs list mismatch.
Line 34 claims 5 servers, but only 4 are listed below. Either add the missing server or change the count to 4 to keep the slide accurate.
presentation/ru/01-введение.md (1)
34-40:⚠️ Potential issue | 🟡 MinorИсправьте несоответствие количества MCP серверов.
В строке 34 указано 5 серверов, но в списке ниже — 4. Добавьте недостающий сервер или исправьте число.
presentation/ru/04-начало-работы.md (1)
189-199:⚠️ Potential issue | 🟡 MinorИсправьте количество MCP серверов в разделе.
Указано 5 серверов, но перечислено 4. Нужна синхронизация числа и списка.
🤖 Fix all issues with AI agents
In @.claude/agents/predictor.md:
- Around line 1812-1825: Add explicit language identifiers to the fenced code
blocks in the predictor document to satisfy markdownlint MD040: replace the
three backtick fences that currently lack a language with fenced blocks labeled
e.g. ```text for the two score lists shown under "Category A: Historical Data"
and "Category B: Tool Agreement". Edit the block delimiters surrounding the
lines beginning "+0.20: mem0 returned..." and "+0.15: mem0 + grep results
match..." so each opening fence includes a language token (e.g., text) and close
with the matching triple backticks; this will resolve the missing fence language
warnings.
- Around line 1924-1935: The unlabeled code fence under the "If mem0 and grep
results conflict:" section should include a language tag to satisfy markdownlint
MD040; update the fenced block (the triple-backtick block immediately after that
heading) to use a language token such as text (e.g., replace ``` with ```text)
so the block becomes a labeled code fence and re-run linting to confirm the
MD040 warning is resolved.
- Around line 1710-1715: In .claude/agents/predictor.md update the two fenced
code blocks that currently use bare backticks so they include appropriate
language identifiers: change the example JSON/output block (containing keys like
"score", "tier_base", "adjustments") to use ```json and change the example
markdown/configuration block (the second fenced block shown in the file) to a
suitable identifier such as ```markdown or ```bash as appropriate; then save and
run pytest tests/test_template_sync.py -v to verify the template sync check
passes.
In @.claude/playbook_delta_operations.json:
- Around line 125-126: The JSON's operations_proposed and operations_approved
values (both 10) don't match the actual number of entries in the operations
array (9); update the counts to reflect the real length or restore the missing
operation. Either decrement both operations_proposed and operations_approved
from 10 to 9, or re-add the omitted operation (likely one related to tool-0008
or the removed sync_to_cipher entry) so the operations array contains 10
entries; locate the keys operations_proposed, operations_approved, and the
"operations" array in the file to make the change.
In `@presentation/ru/03-workflow.md`:
- Line 57: The sentence describing the Reflector template should use a
conjunction for verb-parallelism: update the fragment “не вызывается →
дублируется” to either “не вызывается → и дублируется” or “не вызывается, из-за
чего дублируется” so the verbs are consistent; locate the occurrence near the
mention of mcp__mem0__map_tiered_search and replace the text accordingly to
preserve meaning and punctuation.
In `@tests/test_mapify_cli.py`:
- Around line 630-637: The current assertion in tests/test_mapify_cli.py that
checks "mcp" or "tool" in content is too weak because YAML frontmatter always
contains "tools" and makes the test pass; update the assertion in the block that
inspects agent files (the code that checks agent_file names like
"task-decomposer", "actor", "monitor", "predictor") to look for the specific MCP
section header used by generators (e.g., assert "mcp integration" in
content.lower() or assert "mcp integration" in content or both "MCP Integration"
and "MCP INTEGRATION" variants), or alternatively modify the test setup to
include servers that actually cause MCP sections to be generated (e.g., include
"context7") so that create_monitor_content / the task-decomposer/actor/predictor
generators produce MCP content.
| "score": 0.85, | ||
| "tier_base": 0.50, | ||
| "adjustments": [ | ||
| {"category": "A", "factor": "Cipher comprehensive data", "adjustment": 0.20}, | ||
| {"category": "B", "factor": "Codex+grep match", "adjustment": 0.15} | ||
| {"category": "A", "factor": "mem0 comprehensive data", "adjustment": 0.20}, | ||
| {"category": "B", "factor": "mem0+grep match", "adjustment": 0.15} | ||
| ], |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
# Check if the predictor.md files exist and their line counts
echo "=== Checking predictor.md files ==="
if [ -f .claude/agents/predictor.md ]; then
echo ".claude/agents/predictor.md exists"
wc -l .claude/agents/predictor.md
else
echo ".claude/agents/predictor.md NOT FOUND"
fi
if [ -f src/mapify_cli/templates/agents/predictor.md ]; then
echo "src/mapify_cli/templates/agents/predictor.md exists"
wc -l src/mapify_cli/templates/agents/predictor.md
else
echo "src/mapify_cli/templates/agents/predictor.md NOT FOUND"
fi
echo ""
echo "=== Checking test_template_sync.py ==="
if [ -f tests/test_template_sync.py ]; then
echo "tests/test_template_sync.py exists"
else
echo "tests/test_template_sync.py NOT FOUND"
fiRepository: azalio/map-framework
Length of output: 344
🏁 Script executed:
#!/bin/bash
# Check lines 1710-1715 in .claude/agents/predictor.md
echo "=== Lines 1710-1715 in .claude/agents/predictor.md ==="
sed -n '1710,1715p' .claude/agents/predictor.md || echo "File or lines not found"
echo ""
# Check lines around 1821 for MD040 issues
echo "=== Lines 1812-1830 in .claude/agents/predictor.md ==="
sed -n '1812,1830p' .claude/agents/predictor.md || echo "File or lines not found"
echo ""
# Check lines around 1925 for MD040 issues
echo "=== Lines 1916-1935 in .claude/agents/predictor.md ==="
sed -n '1916,1935p' .claude/agents/predictor.md || echo "File or lines not found"Repository: azalio/map-framework
Length of output: 1819
🏁 Script executed:
#!/bin/bash
# Check sync status between .claude/agents/predictor.md and templates
echo "=== Checking sync status ==="
if [ -f .claude/agents/predictor.md ] && [ -f src/mapify_cli/templates/agents/predictor.md ]; then
if diff -q .claude/agents/predictor.md src/mapify_cli/templates/agents/predictor.md > /dev/null 2>&1; then
echo "Files are IN SYNC"
else
echo "Files are OUT OF SYNC"
echo "First difference:"
diff .claude/agents/predictor.md src/mapify_cli/templates/agents/predictor.md | head -20
fi
else
echo "Cannot compare - one or both files not found"
fiRepository: azalio/map-framework
Length of output: 110
Add language identifiers to fenced code blocks to fix MD040 violations.
The .claude ↔ templates sync is verified and in good state. However, fenced code blocks at lines ~1821 and ~1925 are missing language identifiers (e.g., should bebash, ```json, etc.). Update these to comply with markdown linting standards:
- Lines 1812-1830: Add appropriate language identifier to the code fence (appears to be example JSON/output format)
- Lines 1916-1935: Add appropriate language identifier to the code fence (appears to be example markdown/configuration)
Run pytest tests/test_template_sync.py -v to confirm template sync verification passes, as required by project guidelines.
🤖 Prompt for AI Agents
In @.claude/agents/predictor.md around lines 1710 - 1715, In
.claude/agents/predictor.md update the two fenced code blocks that currently use
bare backticks so they include appropriate language identifiers: change the
example JSON/output block (containing keys like "score", "tier_base",
"adjustments") to use ```json and change the example markdown/configuration
block (the second fenced block shown in the file) to a suitable identifier such
as ```markdown or ```bash as appropriate; then save and run pytest
tests/test_template_sync.py -v to verify the template sync check passes.
| **Category A: Historical Data** (pick highest applicable) | ||
| ``` | ||
| +0.20: Cipher returned comprehensive patterns for this change type | ||
| +0.10: Cipher returned partial/similar patterns | ||
| +0.20: mem0 returned comprehensive patterns for this change type | ||
| +0.10: mem0 returned partial/similar patterns | ||
| +0.00: No query made (default for Tier 1) | ||
| -0.15: Cipher queried but no relevant data found | ||
| -0.15: mem0 queried but no relevant data found | ||
| ``` | ||
|
|
||
| **Category B: Tool Agreement** (pick one) | ||
| ``` | ||
| +0.15: Codex + grep results match (same usages found) | ||
| +0.15: mem0 + grep results match (same usages found) | ||
| +0.05: Only one tool used, results clear | ||
| -0.10: Codex and grep conflict (investigate before proceeding) | ||
| -0.10: mem0 and grep conflict (investigate before proceeding) | ||
| ``` |
There was a problem hiding this comment.
Add language identifiers to fenced blocks (MD040).
markdownlint reports missing fence languages here.
🛠️ Suggested fix
-```
+```text
+0.20: mem0 returned comprehensive patterns for this change type
+0.10: mem0 returned partial/similar patterns
+0.00: No query made (default for Tier 1)
-0.15: mem0 queried but no relevant data foundCategory B: Tool Agreement (pick one)
- +text
+0.15: mem0 + grep results match (same usages found)
+0.05: Only one tool used, results clear
-0.10: mem0 and grep conflict (investigate before proceeding)
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| **Category A: Historical Data** (pick highest applicable) | |
| ``` | |
| +0.20: Cipher returned comprehensive patterns for this change type | |
| +0.10: Cipher returned partial/similar patterns | |
| +0.20: mem0 returned comprehensive patterns for this change type | |
| +0.10: mem0 returned partial/similar patterns | |
| +0.00: No query made (default for Tier 1) | |
| -0.15: Cipher queried but no relevant data found | |
| -0.15: mem0 queried but no relevant data found | |
| ``` | |
| **Category B: Tool Agreement** (pick one) | |
| ``` | |
| +0.15: Codex + grep results match (same usages found) | |
| +0.15: mem0 + grep results match (same usages found) | |
| +0.05: Only one tool used, results clear | |
| -0.10: Codex and grep conflict (investigate before proceeding) | |
| -0.10: mem0 and grep conflict (investigate before proceeding) | |
| ``` | |
| **Category A: Historical Data** (pick highest applicable) |
🧰 Tools
🪛 markdownlint-cli2 (0.20.0)
[warning] 1813-1813: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
[warning] 1821-1821: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
🤖 Prompt for AI Agents
In @.claude/agents/predictor.md around lines 1812 - 1825, Add explicit language
identifiers to the fenced code blocks in the predictor document to satisfy
markdownlint MD040: replace the three backtick fences that currently lack a
language with fenced blocks labeled e.g. ```text for the two score lists shown
under "Category A: Historical Data" and "Category B: Tool Agreement". Edit the
block delimiters surrounding the lines beginning "+0.20: mem0 returned..." and
"+0.15: mem0 + grep results match..." so each opening fence includes a language
token (e.g., text) and close with the matching triple backticks; this will
resolve the missing fence language warnings.
| ### If mem0 and grep results conflict: | ||
| ``` | ||
| Example: cipher graph finds 10 usages, grep finds 15 | ||
| Example: mem0 finds 10 usages, grep finds 15 | ||
|
|
||
| 1. Trust manual verification (grep) over semantic tools | ||
| 2. Investigate discrepancy: | ||
| - Check for dynamic imports | ||
| - Check for generated code | ||
| - Check for string-based references | ||
| 3. Report BOTH numbers in output: | ||
| "affected_components": ["15 files (cipher: 10, grep: 15 - discrepancy noted)"] | ||
| "affected_components": ["15 files (mem0: 10, grep: 15 - discrepancy noted)"] | ||
| 4. Set confidence to max 0.60 (moderate uncertainty) |
There was a problem hiding this comment.
Add fence language to satisfy MD040.
markdownlint flags the unlabeled code fence in this block.
🛠️ Suggested fix
-```
+```text
Example: mem0 finds 10 usages, grep finds 15
1. Trust manual verification (grep) over semantic tools
2. Investigate discrepancy:
- Check for dynamic imports
- Check for generated code
- Check for string-based references
3. Report BOTH numbers in output:
"affected_components": ["15 files (mem0: 10, grep: 15 - discrepancy noted)"]
4. Set confidence to max 0.60 (moderate uncertainty)</details>
<details>
<summary>🧰 Tools</summary>
<details>
<summary>🪛 markdownlint-cli2 (0.20.0)</summary>
[warning] 1925-1925: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
</details>
</details>
<details>
<summary>🤖 Prompt for AI Agents</summary>
In @.claude/agents/predictor.md around lines 1924 - 1935, The unlabeled code
fence under the "If mem0 and grep results conflict:" section should include a
language tag to satisfy markdownlint MD040; update the fenced block (the
triple-backtick block immediately after that heading) to use a language token
such as text (e.g., replace withtext) so the block becomes a labeled
code fence and re-run linting to confirm the MD040 warning is resolved.
</details>
<!-- fingerprinting:phantom:poseidon:eagle -->
<!-- This is an auto-generated comment by CodeRabbit -->
| "operations_proposed": 10, | ||
| "operations_approved": 10, |
There was a problem hiding this comment.
operations_proposed / operations_approved count is 10, but the operations array contains only 9 entries.
There are 7 ADDs (impl-0050, cli-0010, test-0017, arch-0021, test-0018, err-0002, arch-0022) and 2 UPDATEs (test-0016, arch-0001), totaling 9. It appears the count was decremented from 11 to 10 when the tool-0008 DELETE was removed, but another operation (likely the removed sync_to_cipher-related entry or a second delete) was also dropped without adjusting the count.
Proposed fix
- "operations_proposed": 10,
- "operations_approved": 10,
+ "operations_proposed": 9,
+ "operations_approved": 9,📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| "operations_proposed": 10, | |
| "operations_approved": 10, | |
| "operations_proposed": 9, | |
| "operations_approved": 9, |
🤖 Prompt for AI Agents
In @.claude/playbook_delta_operations.json around lines 125 - 126, The JSON's
operations_proposed and operations_approved values (both 10) don't match the
actual number of entries in the operations array (9); update the counts to
reflect the real length or restore the missing operation. Either decrement both
operations_proposed and operations_approved from 10 to 9, or re-add the omitted
operation (likely one related to tool-0008 or the removed sync_to_cipher entry)
so the operations array contains 10 entries; locate the keys
operations_proposed, operations_approved, and the "operations" array in the file
to make the change.
| - ✅ Позволить Reflector извлечь паттерны из agent outputs | ||
|
|
||
| **Почему:** Шаблон Reflector содержит инструкции по поиску в cipher. При ручной работе `mcp__mem0__map_tiered_search` не вызывается → дублируется knowledge. | ||
| **Почему:** Шаблон Reflector содержит инструкции по поиску существующих паттернов. При ручной работе `mcp__mem0__map_tiered_search` не вызывается → дублируется knowledge. |
There was a problem hiding this comment.
Исправьте грамматику для однородности глаголов.
Сейчас: “не вызывается → дублируется”. Предпочтительнее: “не вызывается → и дублируется” или “не вызывается, из-за чего дублируется”.
🧰 Tools
🪛 LanguageTool
[uncategorized] ~57-~57: Глаголы – однородные члены предложения: «вызывается →, дублируется» или «вызывается → и дублируется».
Context: ...аботе mcp__mem0__map_tiered_search не вызывается → дублируется knowledge. ### Правило 2: Обязательный...
(Verb_comma_Verb)
🤖 Prompt for AI Agents
In `@presentation/ru/03-workflow.md` at line 57, The sentence describing the
Reflector template should use a conjunction for verb-parallelism: update the
fragment “не вызывается → дублируется” to either “не вызывается → и дублируется”
or “не вызывается, из-за чего дублируется” so the verbs are consistent; locate
the occurrence near the mention of mcp__mem0__map_tiered_search and replace the
text accordingly to preserve meaning and punctuation.
| # Verify MCP integration for agents that use MCP tools | ||
| if any( | ||
| name in agent_file | ||
| for name in ["task-decomposer", "actor", "monitor", "predictor"] | ||
| ): | ||
| assert "mcp" in content.lower() or "tool" in content.lower(), ( | ||
| f"Agent {agent_file} missing MCP integration section" | ||
| ) |
There was a problem hiding this comment.
Weakened assertion — always passes regardless of MCP server selection.
The check "mcp" in content.lower() or "tool" in content.lower() will always be true because every fallback agent template includes tools: Read, ... in its YAML frontmatter. This means the assertion no longer validates that MCP integration sections are actually generated.
With ["claude-reviewer"] as the only server, only monitor gets an MCP section (via create_monitor_content). The other three agents listed here (task-decomposer, actor, predictor) won't have any MCP integration content — yet the test still passes due to the frontmatter match.
Consider asserting on a more specific marker like "MCP Integration" or "MCP INTEGRATION" (the section headers used in fallback generators), or pass servers that actually trigger MCP sections in those agents (e.g., ["context7"]).
🤖 Prompt for AI Agents
In `@tests/test_mapify_cli.py` around lines 630 - 637, The current assertion in
tests/test_mapify_cli.py that checks "mcp" or "tool" in content is too weak
because YAML frontmatter always contains "tools" and makes the test pass; update
the assertion in the block that inspects agent files (the code that checks
agent_file names like "task-decomposer", "actor", "monitor", "predictor") to
look for the specific MCP section header used by generators (e.g., assert "mcp
integration" in content.lower() or assert "mcp integration" in content or both
"MCP Integration" and "MCP INTEGRATION" variants), or alternatively modify the
test setup to include servers that actually cause MCP sections to be generated
(e.g., include "context7") so that create_monitor_content / the
task-decomposer/actor/predictor generators produce MCP content.
Summary
docs/cipher-setup-guide/(7 files),docs/QUICKSTART-CIPHER.md, andcipher-integration.mdfrom skillsChanges by category
Config:
.claude/mcp_config.json,.mcp.json.example,settings.local.json— removed cipher server, mappings, auto-approval rulesAgent templates (7 files): Replaced cipher references with mem0 in reflector, curator, monitor, predictor, task-decomposer, actor, documentation-reviewer
Command templates (3 files): Cleaned map-debug, map-fast, map-release
Source code:
src/mapify_cli/__init__.py— removed cipher from MCP_SERVER_CHOICES, server configs, agent content generators, CLI examplesDocs: Cleaned INSTALL.md, USAGE.md, ARCHITECTURE.md, CLI_REFERENCE.json, CLI_COMMAND_REFERENCE.md
Presentations: Cleaned all 8 files (EN + RU)
Plugin configs: Cleaned plugin.json, marketplace.json, PLUGIN.md
Tests: Updated assertions, all 697 tests pass
Test plan
pytest tests/ -v— 697 passed, 0 failedgrep -ri cipheracross repo — 0 matchesmake sync-templatesSummary by CodeRabbit
Release Notes
Breaking Changes
Improvements
Documentation