mapify-cli 3.9.0__tar.gz → 3.11.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- mapify_cli-3.11.0/.claude/hooks/README.md +118 -0
- mapify_cli-3.11.0/.claude/skills/README.md +82 -0
- {mapify_cli-3.9.0 → mapify_cli-3.11.0}/.gitignore +23 -0
- mapify_cli-3.11.0/PKG-INFO +290 -0
- mapify_cli-3.11.0/README.md +247 -0
- mapify_cli-3.11.0/pyproject.toml +124 -0
- {mapify_cli-3.9.0 → mapify_cli-3.11.0}/src/mapify_cli/__init__.py +480 -22
- mapify_cli-3.11.0/src/mapify_cli/_locking.py +303 -0
- mapify_cli-3.11.0/src/mapify_cli/config/project_config.py +455 -0
- {mapify_cli-3.9.0 → mapify_cli-3.11.0}/src/mapify_cli/delivery/codex_copier.py +100 -26
- mapify_cli-3.11.0/src/mapify_cli/delivery/file_copier.py +655 -0
- mapify_cli-3.11.0/src/mapify_cli/delivery/managed_file_copier.py +1086 -0
- {mapify_cli-3.9.0 → mapify_cli-3.11.0}/src/mapify_cli/delivery/providers.py +1 -1
- mapify_cli-3.11.0/src/mapify_cli/delivery/template_renderer.py +776 -0
- mapify_cli-3.11.0/src/mapify_cli/memory/__init__.py +6 -0
- mapify_cli-3.11.0/src/mapify_cli/memory/capture.py +534 -0
- mapify_cli-3.11.0/src/mapify_cli/memory/digest_schema.py +179 -0
- mapify_cli-3.11.0/src/mapify_cli/memory/finalize.py +620 -0
- mapify_cli-3.11.0/src/mapify_cli/memory/recall.py +367 -0
- {mapify_cli-3.9.0 → mapify_cli-3.11.0}/src/mapify_cli/repo_insight.py +2 -2
- mapify_cli-3.11.0/src/mapify_cli/schemas.py +1339 -0
- mapify_cli-3.11.0/src/mapify_cli/skill_ir.py +416 -0
- mapify_cli-3.11.0/src/mapify_cli/skills_eval/__init__.py +57 -0
- mapify_cli-3.11.0/src/mapify_cli/skills_eval/aggregator.py +300 -0
- mapify_cli-3.11.0/src/mapify_cli/skills_eval/apply_patcher.py +226 -0
- mapify_cli-3.11.0/src/mapify_cli/skills_eval/assertions.py +284 -0
- mapify_cli-3.11.0/src/mapify_cli/skills_eval/description_optimizer.py +486 -0
- mapify_cli-3.11.0/src/mapify_cli/skills_eval/dispatcher.py +751 -0
- mapify_cli-3.11.0/src/mapify_cli/skills_eval/eval_schema.py +313 -0
- mapify_cli-3.11.0/src/mapify_cli/skills_eval/proposer.py +153 -0
- mapify_cli-3.11.0/src/mapify_cli/skills_eval/runner.py +425 -0
- mapify_cli-3.11.0/src/mapify_cli/skills_eval/viewer.py +224 -0
- mapify_cli-3.11.0/src/mapify_cli/templates/.gitignore +5 -0
- {mapify_cli-3.9.0 → mapify_cli-3.11.0}/src/mapify_cli/templates/CLAUDE.md +13 -13
- {mapify_cli-3.9.0 → mapify_cli-3.11.0}/src/mapify_cli/templates/agents/actor.md +43 -249
- {mapify_cli-3.9.0 → mapify_cli-3.11.0}/src/mapify_cli/templates/agents/documentation-reviewer.md +2 -0
- {mapify_cli-3.9.0 → mapify_cli-3.11.0}/src/mapify_cli/templates/agents/evaluator.md +9 -2
- {mapify_cli-3.9.0 → mapify_cli-3.11.0}/src/mapify_cli/templates/agents/final-verifier.md +31 -3
- {mapify_cli-3.9.0 → mapify_cli-3.11.0}/src/mapify_cli/templates/agents/monitor.md +92 -22
- {mapify_cli-3.9.0 → mapify_cli-3.11.0}/src/mapify_cli/templates/agents/predictor.md +5 -419
- {mapify_cli-3.9.0 → mapify_cli-3.11.0}/src/mapify_cli/templates/agents/reflector.md +55 -139
- {mapify_cli-3.9.0 → mapify_cli-3.11.0}/src/mapify_cli/templates/agents/research-agent.md +6 -3
- {mapify_cli-3.9.0 → mapify_cli-3.11.0}/src/mapify_cli/templates/agents/synthesizer.md +0 -95
- mapify_cli-3.11.0/src/mapify_cli/templates/agents/task-decomposer.md +931 -0
- {mapify_cli-3.9.0 → mapify_cli-3.11.0}/src/mapify_cli/templates/codex/AGENTS.md +14 -3
- {mapify_cli-3.9.0 → mapify_cli-3.11.0}/src/mapify_cli/templates/codex/agents/decomposer.toml +65 -20
- {mapify_cli-3.9.0 → mapify_cli-3.11.0}/src/mapify_cli/templates/codex/agents/monitor.toml +16 -7
- {mapify_cli-3.9.0 → mapify_cli-3.11.0}/src/mapify_cli/templates/codex/config.toml +1 -1
- mapify_cli-3.11.0/src/mapify_cli/templates/codex/hooks/workflow-gate.py +569 -0
- mapify_cli-3.11.0/src/mapify_cli/templates/codex/skills/map-efficient/SKILL.md +258 -0
- mapify_cli-3.11.0/src/mapify_cli/templates/codex/skills/map-efficient/efficient-reference.md +117 -0
- mapify_cli-3.11.0/src/mapify_cli/templates/codex/skills/map-explain/SKILL.md +166 -0
- {mapify_cli-3.9.0 → mapify_cli-3.11.0}/src/mapify_cli/templates/codex/skills/map-fast/SKILL.md +7 -0
- {mapify_cli-3.9.0 → mapify_cli-3.11.0}/src/mapify_cli/templates/codex/skills/map-plan/SKILL.md +101 -66
- mapify_cli-3.11.0/src/mapify_cli/templates/hooks/README.md +118 -0
- mapify_cli-3.11.0/src/mapify_cli/templates/hooks/context-meter.py +156 -0
- mapify_cli-3.11.0/src/mapify_cli/templates/hooks/detect-clarification-triggers.py +188 -0
- {mapify_cli-3.9.0 → mapify_cli-3.11.0}/src/mapify_cli/templates/hooks/end-of-turn.sh +11 -2
- mapify_cli-3.11.0/src/mapify_cli/templates/hooks/map-memory-capture.py +39 -0
- mapify_cli-3.11.0/src/mapify_cli/templates/hooks/map-memory-endmark.py +39 -0
- mapify_cli-3.11.0/src/mapify_cli/templates/hooks/map-memory-finalize.py +49 -0
- mapify_cli-3.11.0/src/mapify_cli/templates/hooks/map-memory-recall.py +47 -0
- mapify_cli-3.11.0/src/mapify_cli/templates/hooks/map-token-meter.py +131 -0
- mapify_cli-3.11.0/src/mapify_cli/templates/hooks/post-compact-context.py +266 -0
- {mapify_cli-3.9.0 → mapify_cli-3.11.0}/src/mapify_cli/templates/hooks/pre-compact-save-transcript.py +17 -1
- {mapify_cli-3.9.0 → mapify_cli-3.11.0}/src/mapify_cli/templates/hooks/ralph-context-pruner.py +2 -0
- {mapify_cli-3.9.0 → mapify_cli-3.11.0}/src/mapify_cli/templates/hooks/ralph-iteration-logger.py +2 -0
- {mapify_cli-3.9.0 → mapify_cli-3.11.0}/src/mapify_cli/templates/hooks/safety-guardrails.py +6 -1
- mapify_cli-3.11.0/src/mapify_cli/templates/hooks/workflow-context-injector.py +844 -0
- mapify_cli-3.11.0/src/mapify_cli/templates/hooks/workflow-gate.py +569 -0
- {mapify_cli-3.9.0 → mapify_cli-3.11.0}/src/mapify_cli/templates/map/scripts/diagnostics.py +3 -3
- mapify_cli-3.11.0/src/mapify_cli/templates/map/scripts/map_orchestrator.py +3803 -0
- mapify_cli-3.11.0/src/mapify_cli/templates/map/scripts/map_step_runner.py +9972 -0
- mapify_cli-3.11.0/src/mapify_cli/templates/map/scripts/map_utils.py +43 -0
- mapify_cli-3.11.0/src/mapify_cli/templates/map/scripts/sofa_client.py +627 -0
- mapify_cli-3.11.0/src/mapify_cli/templates/map/scripts/validate_spec_citations.py +250 -0
- {mapify_cli-3.9.0 → mapify_cli-3.11.0}/src/mapify_cli/templates/references/decomposition-examples.md +33 -19
- mapify_cli-3.11.0/src/mapify_cli/templates/references/hook-patterns.md +161 -0
- mapify_cli-3.11.0/src/mapify_cli/templates/references/host-paths.md +66 -0
- mapify_cli-3.11.0/src/mapify_cli/templates/references/map-json-output-contracts.md +82 -0
- mapify_cli-3.11.0/src/mapify_cli/templates/references/map-output-examples.md +74 -0
- mapify_cli-3.11.0/src/mapify_cli/templates/references/map-xml-prompt-envelopes.md +64 -0
- {mapify_cli-3.9.0 → mapify_cli-3.11.0}/src/mapify_cli/templates/settings.json +105 -0
- mapify_cli-3.11.0/src/mapify_cli/templates/skills/README.md +82 -0
- mapify_cli-3.11.0/src/mapify_cli/templates/skills/map-check/SKILL.md +311 -0
- mapify_cli-3.11.0/src/mapify_cli/templates/skills/map-check/check-reference.md +70 -0
- mapify_cli-3.11.0/src/mapify_cli/templates/skills/map-debug/SKILL.md +361 -0
- mapify_cli-3.11.0/src/mapify_cli/templates/skills/map-efficient/SKILL.md +501 -0
- mapify_cli-3.11.0/src/mapify_cli/templates/skills/map-efficient/efficient-reference.md +259 -0
- mapify_cli-3.11.0/src/mapify_cli/templates/skills/map-explain/SKILL.md +147 -0
- mapify_cli-3.11.0/src/mapify_cli/templates/skills/map-fast/SKILL.md +186 -0
- {mapify_cli-3.9.0 → mapify_cli-3.11.0}/src/mapify_cli/templates/skills/map-learn/SKILL.md +50 -0
- mapify_cli-3.11.0/src/mapify_cli/templates/skills/map-memory-now/SKILL.md +130 -0
- mapify_cli-3.11.0/src/mapify_cli/templates/skills/map-plan/SKILL.md +367 -0
- mapify_cli-3.11.0/src/mapify_cli/templates/skills/map-plan/plan-reference.md +104 -0
- mapify_cli-3.9.0/src/mapify_cli/templates/commands/map-release.md → mapify_cli-3.11.0/src/mapify_cli/templates/skills/map-release/SKILL.md +28 -2
- mapify_cli-3.9.0/src/mapify_cli/templates/commands/map-resume.md → mapify_cli-3.11.0/src/mapify_cli/templates/skills/map-resume/SKILL.md +31 -207
- mapify_cli-3.11.0/src/mapify_cli/templates/skills/map-resume/resume-reference.md +218 -0
- mapify_cli-3.11.0/src/mapify_cli/templates/skills/map-review/SKILL.md +466 -0
- mapify_cli-3.11.0/src/mapify_cli/templates/skills/map-review/review-reference.md +43 -0
- mapify_cli-3.11.0/src/mapify_cli/templates/skills/map-skill-eval/SKILL.md +168 -0
- mapify_cli-3.11.0/src/mapify_cli/templates/skills/map-so-search/SKILL.md +126 -0
- mapify_cli-3.11.0/src/mapify_cli/templates/skills/map-so-search/scripts/sofa_search.py +540 -0
- {mapify_cli-3.9.0/src/mapify_cli/templates/skills/map-planning → mapify_cli-3.11.0/src/mapify_cli/templates/skills/map-state}/SKILL.md +1 -1
- {mapify_cli-3.9.0/src/mapify_cli/templates/skills/map-planning → mapify_cli-3.11.0/src/mapify_cli/templates/skills/map-state}/scripts/get-plan-path.sh +4 -4
- mapify_cli-3.9.0/src/mapify_cli/templates/commands/map-task.md → mapify_cli-3.11.0/src/mapify_cli/templates/skills/map-task/SKILL.md +90 -15
- mapify_cli-3.9.0/src/mapify_cli/templates/commands/map-tdd.md → mapify_cli-3.11.0/src/mapify_cli/templates/skills/map-tdd/SKILL.md +31 -5
- mapify_cli-3.11.0/src/mapify_cli/templates/skills/map-tokenreport/SKILL.md +116 -0
- mapify_cli-3.11.0/src/mapify_cli/templates/skills/skill-rules.json +364 -0
- {mapify_cli-3.9.0 → mapify_cli-3.11.0}/src/mapify_cli/templates/workflow-rules.json +13 -1
- mapify_cli-3.11.0/src/mapify_cli/templates_src/.gitignore.jinja +5 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/CLAUDE.md.jinja +79 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/agents/actor.md.jinja +846 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/agents/debate-arbiter.md.jinja +953 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/agents/documentation-reviewer.md.jinja +704 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/agents/evaluator.md.jinja +1476 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/agents/final-verifier.md.jinja +221 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/agents/monitor.md.jinja +2615 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/agents/predictor.md.jinja +1586 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/agents/reflector.md.jinja +703 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/agents/research-agent.md.jinja +281 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/agents/synthesizer.md.jinja +1066 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/agents/task-decomposer.md.jinja +931 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/codex/AGENTS.md.jinja +49 -0
- mapify_cli-3.9.0/src/mapify_cli/templates/agents/task-decomposer.md → mapify_cli-3.11.0/src/mapify_cli/templates_src/codex/agents/decomposer.toml.jinja +127 -143
- mapify_cli-3.11.0/src/mapify_cli/templates_src/codex/agents/monitor.toml.jinja +1144 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/codex/agents/researcher.toml.jinja +74 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/codex/config.toml.jinja +17 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/codex/hooks/workflow-gate.py.jinja +569 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/codex/hooks.json.jinja +16 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/codex/skills/map-check/SKILL.md.jinja +21 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/codex/skills/map-efficient/SKILL.md.jinja +258 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/codex/skills/map-efficient/efficient-reference.md.jinja +117 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/codex/skills/map-explain/SKILL.md.jinja +166 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/codex/skills/map-fast/SKILL.md.jinja +29 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/codex/skills/map-plan/SKILL.md.jinja +659 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/hooks/README.md.jinja +118 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/hooks/context-meter.py.jinja +156 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/hooks/detect-clarification-triggers.py.jinja +188 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/hooks/end-of-turn.sh.jinja +196 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/hooks/map-memory-capture.py.jinja +39 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/hooks/map-memory-endmark.py.jinja +39 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/hooks/map-memory-finalize.py.jinja +49 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/hooks/map-memory-recall.py.jinja +47 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/hooks/map-token-meter.py.jinja +131 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/hooks/post-compact-context.py.jinja +266 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/hooks/pre-compact-save-transcript.py.jinja +198 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/hooks/ralph-context-pruner.py.jinja +265 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/hooks/ralph-iteration-logger.py.jinja +402 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/hooks/safety-guardrails.py.jinja +191 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/hooks/workflow-context-injector.py.jinja +844 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/hooks/workflow-gate.py.jinja +569 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/map/scripts/diagnostics.py.jinja +346 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/map/scripts/map_orchestrator.py.jinja +3803 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/map/scripts/map_step_runner.py.jinja +9972 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/map/scripts/map_utils.py.jinja +43 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/map/scripts/sofa_client.py.jinja +627 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/map/scripts/validate_spec_citations.py.jinja +250 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/map/static-analysis/analyze.sh.jinja +81 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/map/static-analysis/handlers/common.sh.jinja +109 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/map/static-analysis/handlers/go.sh.jinja +91 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/map/static-analysis/handlers/python.sh.jinja +79 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/map/static-analysis/handlers/rust.sh.jinja +44 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/map/static-analysis/handlers/typescript.sh.jinja +87 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/ralph-loop-config.json.jinja +33 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/references/bash-guidelines.md.jinja +260 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/references/decomposition-examples.md.jinja +295 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/references/escalation-matrix.md.jinja +55 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/references/hook-patterns.md.jinja +161 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/references/host-paths.md.jinja +66 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/references/map-json-output-contracts.md.jinja +82 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/references/map-output-examples.md.jinja +74 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/references/map-xml-prompt-envelopes.md.jinja +64 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/references/mcp-usage-examples.md.jinja +113 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/references/step-state-schema.md.jinja +66 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/references/workflow-state-schema.md.jinja +5 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/rules/learned/README.md.jinja +18 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/settings.json.jinja +255 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/skills/README.md.jinja +82 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/skills/map-check/SKILL.md.jinja +311 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/skills/map-check/check-reference.md.jinja +70 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/skills/map-debug/SKILL.md.jinja +361 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/skills/map-efficient/SKILL.md.jinja +501 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/skills/map-efficient/efficient-reference.md.jinja +259 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/skills/map-explain/SKILL.md.jinja +147 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/skills/map-fast/SKILL.md.jinja +186 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/skills/map-learn/SKILL.md.jinja +403 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/skills/map-learn/templates/example-rules.md.jinja +19 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/skills/map-learn/templates/rules-unconditional.md.jinja +5 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/skills/map-learn/templates/rules-with-paths.md.jinja +10 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/skills/map-memory-now/SKILL.md.jinja +130 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/skills/map-plan/SKILL.md.jinja +367 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/skills/map-plan/plan-reference.md.jinja +104 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/skills/map-release/SKILL.md.jinja +1275 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/skills/map-resume/SKILL.md.jinja +307 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/skills/map-resume/resume-reference.md.jinja +218 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/skills/map-review/SKILL.md.jinja +466 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/skills/map-review/review-reference.md.jinja +43 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/skills/map-skill-eval/SKILL.md.jinja +168 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/skills/map-so-search/SKILL.md.jinja +126 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/skills/map-so-search/scripts/sofa_search.py.jinja +540 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/skills/map-state/SKILL.md.jinja +228 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/skills/map-state/scripts/check-complete.sh.jinja +68 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/skills/map-state/scripts/get-plan-path.sh.jinja +40 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/skills/map-state/scripts/init-session.sh.jinja +77 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/skills/map-state/scripts/show-focus.sh.jinja +62 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/skills/map-state/templates/findings.md.jinja +62 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/skills/map-state/templates/iteration_history.md.jinja +93 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/skills/map-state/templates/progress.md.jinja +75 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/skills/map-state/templates/task_plan.md.jinja +70 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/skills/map-task/SKILL.md.jinja +302 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/skills/map-tdd/SKILL.md.jinja +386 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/skills/map-tokenreport/SKILL.md.jinja +116 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/skills/skill-rules.json.jinja +364 -0
- mapify_cli-3.11.0/src/mapify_cli/templates_src/workflow-rules.json.jinja +105 -0
- mapify_cli-3.11.0/src/mapify_cli/token_budget.py +236 -0
- {mapify_cli-3.9.0 → mapify_cli-3.11.0}/src/mapify_cli/verification_recorder.py +8 -5
- mapify_cli-3.11.0/tests/__init__.py +1 -0
- mapify_cli-3.11.0/tests/conftest.py +51 -0
- mapify_cli-3.11.0/tests/fixtures/claude/escalation-matrix.md +55 -0
- mapify_cli-3.11.0/tests/fixtures/codex/config.toml +17 -0
- mapify_cli-3.11.0/tests/hooks/test_detect_clarification_triggers.py +211 -0
- mapify_cli-3.11.0/tests/hooks/test_end_of_turn.py +331 -0
- mapify_cli-3.11.0/tests/hooks/test_hook_inventory_smoke.py +458 -0
- mapify_cli-3.11.0/tests/hooks/test_safety_guardrails.py +415 -0
- mapify_cli-3.11.0/tests/integration/__init__.py +1 -0
- mapify_cli-3.11.0/tests/integration/fixtures/blueprint.json +63 -0
- mapify_cli-3.11.0/tests/integration/fixtures/code_review.md +30 -0
- mapify_cli-3.11.0/tests/integration/fixtures/plan_handoff.json +24 -0
- mapify_cli-3.11.0/tests/integration/fixtures/spec.md +23 -0
- mapify_cli-3.11.0/tests/integration/fixtures/step_state_initialized.json +27 -0
- mapify_cli-3.11.0/tests/integration/fixtures/step_state_plan_complete.json +32 -0
- mapify_cli-3.11.0/tests/integration/fixtures/task_plan.md +42 -0
- mapify_cli-3.11.0/tests/integration/fixtures/verification_summary.md +18 -0
- mapify_cli-3.11.0/tests/integration/test_e2e_artifact_contracts.py +814 -0
- mapify_cli-3.11.0/tests/integration/test_e2e_claude_sdk.py +1118 -0
- mapify_cli-3.11.0/tests/skills_eval/fixtures/README.md +66 -0
- mapify_cli-3.11.0/tests/skills_eval/fixtures/map_check_optimize_eval_set.json +13 -0
- mapify_cli-3.11.0/tests/skills_eval/fixtures/map_debug_eval_set.json +23 -0
- mapify_cli-3.11.0/tests/skills_eval/fixtures/map_debug_optimize_eval_set.json +65 -0
- mapify_cli-3.11.0/tests/skills_eval/fixtures/map_efficient_optimize_eval_set.json +55 -0
- mapify_cli-3.11.0/tests/skills_eval/fixtures/map_explain_optimize_eval_set.json +13 -0
- mapify_cli-3.11.0/tests/skills_eval/fixtures/map_fast_optimize_eval_set.json +13 -0
- mapify_cli-3.11.0/tests/skills_eval/fixtures/map_learn_optimize_eval_set.json +13 -0
- mapify_cli-3.11.0/tests/skills_eval/fixtures/map_memory_now_optimize_eval_set.json +13 -0
- mapify_cli-3.11.0/tests/skills_eval/fixtures/map_plan_optimize_eval_set.json +55 -0
- mapify_cli-3.11.0/tests/skills_eval/fixtures/map_release_optimize_eval_set.json +13 -0
- mapify_cli-3.11.0/tests/skills_eval/fixtures/map_resume_optimize_eval_set.json +13 -0
- mapify_cli-3.11.0/tests/skills_eval/fixtures/map_review_optimize_eval_set.json +13 -0
- mapify_cli-3.11.0/tests/skills_eval/fixtures/map_skill_eval_optimize_eval_set.json +13 -0
- mapify_cli-3.11.0/tests/skills_eval/fixtures/map_state_optimize_eval_set.json +13 -0
- mapify_cli-3.11.0/tests/skills_eval/fixtures/map_task_optimize_eval_set.json +13 -0
- mapify_cli-3.11.0/tests/skills_eval/fixtures/map_tdd_optimize_eval_set.json +13 -0
- mapify_cli-3.11.0/tests/skills_eval/fixtures/map_tokenreport_optimize_eval_set.json +13 -0
- mapify_cli-3.11.0/tests/skills_eval/fixtures/whole_skill/map_task_blocker/manifest.json +18 -0
- mapify_cli-3.11.0/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/.map/main/blueprint.json +18 -0
- mapify_cli-3.11.0/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/.map/main/task_plan_main.md +16 -0
- mapify_cli-3.11.0/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/src/__init__.py +0 -0
- mapify_cli-3.11.0/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/src/utils.py +15 -0
- mapify_cli-3.11.0/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/tests/test_compute.py +13 -0
- mapify_cli-3.11.0/tests/skills_eval/fixtures/whole_skill/map_task_calc/hidden/test_calc_full.py +64 -0
- mapify_cli-3.11.0/tests/skills_eval/fixtures/whole_skill/map_task_calc/manifest.json +15 -0
- mapify_cli-3.11.0/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/.map/main/blueprint.json +17 -0
- mapify_cli-3.11.0/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/.map/main/task_plan_main.md +14 -0
- mapify_cli-3.11.0/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/src/__init__.py +0 -0
- mapify_cli-3.11.0/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/src/calc.py +14 -0
- mapify_cli-3.11.0/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/tests/test_calc_basic.py +20 -0
- mapify_cli-3.11.0/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/hidden/test_calc_full.py +59 -0
- mapify_cli-3.11.0/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/manifest.json +15 -0
- mapify_cli-3.11.0/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/.map/main/blueprint.json +17 -0
- mapify_cli-3.11.0/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/.map/main/task_plan_main.md +11 -0
- mapify_cli-3.11.0/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/src/__init__.py +0 -0
- mapify_cli-3.11.0/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/src/calc.py +14 -0
- mapify_cli-3.11.0/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/tests/test_calc_basic.py +20 -0
- mapify_cli-3.11.0/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/manifest.json +17 -0
- mapify_cli-3.11.0/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/.map/main/blueprint.json +18 -0
- mapify_cli-3.11.0/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/.map/main/task_plan_main.md +16 -0
- mapify_cli-3.11.0/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/src/__init__.py +0 -0
- mapify_cli-3.11.0/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/src/config.py +8 -0
- mapify_cli-3.11.0/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/src/utils.py +10 -0
- mapify_cli-3.11.0/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/tests/test_price.py +14 -0
- mapify_cli-3.11.0/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/manifest.json +16 -0
- mapify_cli-3.11.0/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/.map/main/blueprint.json +19 -0
- mapify_cli-3.11.0/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/.map/main/task_plan_main.md +17 -0
- mapify_cli-3.11.0/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/src/__init__.py +0 -0
- mapify_cli-3.11.0/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/src/config.py +8 -0
- mapify_cli-3.11.0/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/src/utils.py +13 -0
- mapify_cli-3.11.0/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/tests/test_utils.py +19 -0
- mapify_cli-3.11.0/tests/skills_eval/fixtures/whole_skill/map_task_semver/manifest.json +16 -0
- mapify_cli-3.11.0/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/.map/main/blueprint.json +22 -0
- mapify_cli-3.11.0/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/.map/main/task_plan_main.md +12 -0
- mapify_cli-3.11.0/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/src/__init__.py +0 -0
- mapify_cli-3.11.0/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/src/semver.py +16 -0
- mapify_cli-3.11.0/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/tests/test_semver.py +85 -0
- mapify_cli-3.11.0/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/hidden/test_semver_full.py +55 -0
- mapify_cli-3.11.0/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/manifest.json +15 -0
- mapify_cli-3.11.0/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/.map/main/blueprint.json +17 -0
- mapify_cli-3.11.0/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/.map/main/task_plan_main.md +11 -0
- mapify_cli-3.11.0/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/src/__init__.py +0 -0
- mapify_cli-3.11.0/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/src/semver.py +13 -0
- mapify_cli-3.11.0/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/tests/test_semver_basic.py +21 -0
- mapify_cli-3.11.0/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/hidden/test_semver_full.py +55 -0
- mapify_cli-3.11.0/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/manifest.json +15 -0
- mapify_cli-3.11.0/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/.map/main/blueprint.json +19 -0
- mapify_cli-3.11.0/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/.map/main/task_plan_main.md +14 -0
- mapify_cli-3.11.0/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/src/__init__.py +0 -0
- mapify_cli-3.11.0/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/src/semver.py +13 -0
- mapify_cli-3.11.0/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/tests/test_semver_basic.py +21 -0
- mapify_cli-3.11.0/tests/skills_eval/whole_skill/spike_runner.py +624 -0
- mapify_cli-3.11.0/tests/test_agent_cli_correctness.py +92 -0
- mapify_cli-3.11.0/tests/test_agent_frontmatter.py +212 -0
- mapify_cli-3.11.0/tests/test_artifact_schemas.py +499 -0
- mapify_cli-3.11.0/tests/test_decomposition.py +960 -0
- mapify_cli-3.11.0/tests/test_dependency_graph.py +355 -0
- mapify_cli-3.11.0/tests/test_diagnostics.py +124 -0
- mapify_cli-3.11.0/tests/test_digest_schema.py +332 -0
- mapify_cli-3.11.0/tests/test_file_copier.py +436 -0
- mapify_cli-3.11.0/tests/test_hook_patterns.py +233 -0
- mapify_cli-3.11.0/tests/test_init_import_graph.py +255 -0
- mapify_cli-3.11.0/tests/test_intent_detector.py +254 -0
- mapify_cli-3.11.0/tests/test_inv1_no_anthropic_optimize.py +107 -0
- mapify_cli-3.11.0/tests/test_jinja2_dep.py +8 -0
- mapify_cli-3.11.0/tests/test_locking.py +507 -0
- mapify_cli-3.11.0/tests/test_managed_file_copier.py +938 -0
- mapify_cli-3.11.0/tests/test_map_orchestrator.py +3659 -0
- mapify_cli-3.11.0/tests/test_map_step_runner.py +8349 -0
- mapify_cli-3.11.0/tests/test_map_token_meter.py +206 -0
- mapify_cli-3.11.0/tests/test_map_utils_sanitize.py +91 -0
- mapify_cli-3.11.0/tests/test_mapify_cli.py +1855 -0
- mapify_cli-3.11.0/tests/test_memory_capture.py +534 -0
- mapify_cli-3.11.0/tests/test_memory_finalize.py +675 -0
- mapify_cli-3.11.0/tests/test_memory_integration.py +233 -0
- mapify_cli-3.11.0/tests/test_memory_recall.py +557 -0
- mapify_cli-3.11.0/tests/test_memory_review_fixes.py +353 -0
- mapify_cli-3.11.0/tests/test_post_compact_context.py +93 -0
- mapify_cli-3.11.0/tests/test_ralph_hooks.py +342 -0
- mapify_cli-3.11.0/tests/test_ralph_state.py +644 -0
- mapify_cli-3.11.0/tests/test_repo_insight.py +427 -0
- mapify_cli-3.11.0/tests/test_schemas.py +313 -0
- mapify_cli-3.11.0/tests/test_skill_ir.py +210 -0
- mapify_cli-3.11.0/tests/test_skills.py +2337 -0
- mapify_cli-3.11.0/tests/test_skills_consistency.py +793 -0
- mapify_cli-3.11.0/tests/test_skills_eval_aggregator.py +326 -0
- mapify_cli-3.11.0/tests/test_skills_eval_apply.py +428 -0
- mapify_cli-3.11.0/tests/test_skills_eval_cli_optimize.py +633 -0
- mapify_cli-3.11.0/tests/test_skills_eval_dispatcher_env.py +64 -0
- mapify_cli-3.11.0/tests/test_skills_eval_dispatcher_timeout.py +339 -0
- mapify_cli-3.11.0/tests/test_skills_eval_fixtures.py +94 -0
- mapify_cli-3.11.0/tests/test_skills_eval_optimizer.py +604 -0
- mapify_cli-3.11.0/tests/test_skills_eval_optimizer_isolation.py +408 -0
- mapify_cli-3.11.0/tests/test_skills_eval_proposer.py +367 -0
- mapify_cli-3.11.0/tests/test_skills_eval_runner.py +711 -0
- mapify_cli-3.11.0/tests/test_skills_eval_schema.py +210 -0
- mapify_cli-3.11.0/tests/test_skills_eval_viewer.py +397 -0
- mapify_cli-3.11.0/tests/test_sofa_client.py +557 -0
- mapify_cli-3.11.0/tests/test_sofa_search.py +884 -0
- mapify_cli-3.11.0/tests/test_template_render.py +1189 -0
- mapify_cli-3.11.0/tests/test_token_budget.py +285 -0
- mapify_cli-3.11.0/tests/test_validate_dependencies.py +805 -0
- mapify_cli-3.11.0/tests/test_validate_spec_citations.py +189 -0
- mapify_cli-3.11.0/tests/test_verification_recorder.py +611 -0
- mapify_cli-3.11.0/tests/test_workflow_context_injector.py +1130 -0
- mapify_cli-3.11.0/tests/test_workflow_finalizer.py +433 -0
- mapify_cli-3.11.0/tests/test_workflow_gate.py +983 -0
- mapify_cli-3.11.0/tests/test_workflow_logger.py +433 -0
- mapify_cli-3.11.0/tests/test_workflow_state.py +690 -0
- mapify_cli-3.9.0/.claude/skills/README.md +0 -199
- mapify_cli-3.9.0/PKG-INFO +0 -153
- mapify_cli-3.9.0/README.md +0 -121
- mapify_cli-3.9.0/pyproject.toml +0 -65
- mapify_cli-3.9.0/src/mapify_cli/config/project_config.py +0 -275
- mapify_cli-3.9.0/src/mapify_cli/delivery/file_copier.py +0 -435
- mapify_cli-3.9.0/src/mapify_cli/delivery/managed_file_copier.py +0 -349
- mapify_cli-3.9.0/src/mapify_cli/schemas.py +0 -622
- mapify_cli-3.9.0/src/mapify_cli/templates/codex/hooks/workflow-gate.py +0 -291
- mapify_cli-3.9.0/src/mapify_cli/templates/commands/map-check.md +0 -576
- mapify_cli-3.9.0/src/mapify_cli/templates/commands/map-debug.md +0 -269
- mapify_cli-3.9.0/src/mapify_cli/templates/commands/map-efficient.md +0 -839
- mapify_cli-3.9.0/src/mapify_cli/templates/commands/map-fast.md +0 -133
- mapify_cli-3.9.0/src/mapify_cli/templates/commands/map-plan.md +0 -766
- mapify_cli-3.9.0/src/mapify_cli/templates/commands/map-review.md +0 -392
- mapify_cli-3.9.0/src/mapify_cli/templates/hooks/post-compact-context.py +0 -110
- mapify_cli-3.9.0/src/mapify_cli/templates/hooks/workflow-context-injector.py +0 -349
- mapify_cli-3.9.0/src/mapify_cli/templates/hooks/workflow-gate.py +0 -291
- mapify_cli-3.9.0/src/mapify_cli/templates/map/scripts/map_orchestrator.py +0 -2000
- mapify_cli-3.9.0/src/mapify_cli/templates/map/scripts/map_step_runner.py +0 -2663
- mapify_cli-3.9.0/src/mapify_cli/templates/map/scripts/map_utils.py +0 -30
- mapify_cli-3.9.0/src/mapify_cli/templates/skills/README.md +0 -199
- mapify_cli-3.9.0/src/mapify_cli/templates/skills/skill-rules.json +0 -51
- {mapify_cli-3.9.0 → mapify_cli-3.11.0}/src/mapify_cli/cli_ui.py +0 -0
- {mapify_cli-3.9.0 → mapify_cli-3.11.0}/src/mapify_cli/config/__init__.py +0 -0
- {mapify_cli-3.9.0 → mapify_cli-3.11.0}/src/mapify_cli/config/mcp.py +0 -0
- {mapify_cli-3.9.0 → mapify_cli-3.11.0}/src/mapify_cli/config/settings.py +0 -0
- {mapify_cli-3.9.0 → mapify_cli-3.11.0}/src/mapify_cli/delivery/__init__.py +0 -0
- {mapify_cli-3.9.0 → mapify_cli-3.11.0}/src/mapify_cli/delivery/agent_generator.py +0 -0
- {mapify_cli-3.9.0 → mapify_cli-3.11.0}/src/mapify_cli/dependency_graph.py +0 -0
- {mapify_cli-3.9.0 → mapify_cli-3.11.0}/src/mapify_cli/intent_detector.py +0 -0
- {mapify_cli-3.9.0 → mapify_cli-3.11.0}/src/mapify_cli/ralph_state.py +0 -0
- {mapify_cli-3.9.0 → mapify_cli-3.11.0}/src/mapify_cli/templates/agents/debate-arbiter.md +0 -0
- {mapify_cli-3.9.0 → mapify_cli-3.11.0}/src/mapify_cli/templates/codex/agents/researcher.toml +0 -0
- {mapify_cli-3.9.0 → mapify_cli-3.11.0}/src/mapify_cli/templates/codex/hooks.json +0 -0
- {mapify_cli-3.9.0 → mapify_cli-3.11.0}/src/mapify_cli/templates/codex/skills/map-check/SKILL.md +0 -0
- {mapify_cli-3.9.0 → mapify_cli-3.11.0}/src/mapify_cli/templates/map/static-analysis/analyze.sh +0 -0
- {mapify_cli-3.9.0 → mapify_cli-3.11.0}/src/mapify_cli/templates/map/static-analysis/handlers/common.sh +0 -0
- {mapify_cli-3.9.0 → mapify_cli-3.11.0}/src/mapify_cli/templates/map/static-analysis/handlers/go.sh +0 -0
- {mapify_cli-3.9.0 → mapify_cli-3.11.0}/src/mapify_cli/templates/map/static-analysis/handlers/python.sh +0 -0
- {mapify_cli-3.9.0 → mapify_cli-3.11.0}/src/mapify_cli/templates/map/static-analysis/handlers/rust.sh +0 -0
- {mapify_cli-3.9.0 → mapify_cli-3.11.0}/src/mapify_cli/templates/map/static-analysis/handlers/typescript.sh +0 -0
- {mapify_cli-3.9.0 → mapify_cli-3.11.0}/src/mapify_cli/templates/ralph-loop-config.json +0 -0
- {mapify_cli-3.9.0 → mapify_cli-3.11.0}/src/mapify_cli/templates/references/bash-guidelines.md +0 -0
- {mapify_cli-3.9.0 → mapify_cli-3.11.0}/src/mapify_cli/templates/references/escalation-matrix.md +0 -0
- {mapify_cli-3.9.0 → mapify_cli-3.11.0}/src/mapify_cli/templates/references/mcp-usage-examples.md +0 -0
- {mapify_cli-3.9.0 → mapify_cli-3.11.0}/src/mapify_cli/templates/references/step-state-schema.md +0 -0
- {mapify_cli-3.9.0 → mapify_cli-3.11.0}/src/mapify_cli/templates/references/workflow-state-schema.md +0 -0
- {mapify_cli-3.9.0 → mapify_cli-3.11.0}/src/mapify_cli/templates/rules/learned/README.md +0 -0
- {mapify_cli-3.9.0 → mapify_cli-3.11.0}/src/mapify_cli/templates/skills/map-learn/templates/example-rules.md +0 -0
- {mapify_cli-3.9.0 → mapify_cli-3.11.0}/src/mapify_cli/templates/skills/map-learn/templates/rules-unconditional.md +0 -0
- {mapify_cli-3.9.0 → mapify_cli-3.11.0}/src/mapify_cli/templates/skills/map-learn/templates/rules-with-paths.md +0 -0
- {mapify_cli-3.9.0/src/mapify_cli/templates/skills/map-planning → mapify_cli-3.11.0/src/mapify_cli/templates/skills/map-state}/scripts/check-complete.sh +0 -0
- {mapify_cli-3.9.0/src/mapify_cli/templates/skills/map-planning → mapify_cli-3.11.0/src/mapify_cli/templates/skills/map-state}/scripts/init-session.sh +0 -0
- {mapify_cli-3.9.0/src/mapify_cli/templates/skills/map-planning → mapify_cli-3.11.0/src/mapify_cli/templates/skills/map-state}/scripts/show-focus.sh +0 -0
- {mapify_cli-3.9.0/src/mapify_cli/templates/skills/map-planning → mapify_cli-3.11.0/src/mapify_cli/templates/skills/map-state}/templates/findings.md +0 -0
- {mapify_cli-3.9.0/src/mapify_cli/templates/skills/map-planning → mapify_cli-3.11.0/src/mapify_cli/templates/skills/map-state}/templates/iteration_history.md +0 -0
- {mapify_cli-3.9.0/src/mapify_cli/templates/skills/map-planning → mapify_cli-3.11.0/src/mapify_cli/templates/skills/map-state}/templates/progress.md +0 -0
- {mapify_cli-3.9.0/src/mapify_cli/templates/skills/map-planning → mapify_cli-3.11.0/src/mapify_cli/templates/skills/map-state}/templates/task_plan.md +0 -0
- {mapify_cli-3.9.0 → mapify_cli-3.11.0}/src/mapify_cli/tools/__init__.py +0 -0
- {mapify_cli-3.9.0 → mapify_cli-3.11.0}/src/mapify_cli/tools/validate_dependencies.py +0 -0
- {mapify_cli-3.9.0 → mapify_cli-3.11.0}/src/mapify_cli/workflow_finalizer.py +0 -0
- {mapify_cli-3.9.0 → mapify_cli-3.11.0}/src/mapify_cli/workflow_logger.py +0 -0
- {mapify_cli-3.9.0 → mapify_cli-3.11.0}/src/mapify_cli/workflow_state.py +0 -0
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
# MAP Hooks — Rules of the Road
|
|
2
|
+
|
|
3
|
+
This directory contains Claude Code hook scripts wired in via
|
|
4
|
+
`.claude/settings.json`. The conventions below are non-negotiable for any
|
|
5
|
+
new or modified hook.
|
|
6
|
+
|
|
7
|
+
## Exit codes
|
|
8
|
+
|
|
9
|
+
Per the official Claude Code hook docs, **only exit code 2 blocks the
|
|
10
|
+
action** for most hook events. Any other non-zero exit (including `1`) is
|
|
11
|
+
treated as a **non-blocking error** — Claude logs a warning and proceeds.
|
|
12
|
+
|
|
13
|
+
This means:
|
|
14
|
+
|
|
15
|
+
- **Never use `sys.exit(1)` to block.** It silently fails closed (the
|
|
16
|
+
blocked tool runs anyway).
|
|
17
|
+
- To block: emit a JSON `permissionDecision: "deny"` via stdout AND/OR
|
|
18
|
+
use `sys.exit(2)`. The current MAP hooks (`safety-guardrails.py`,
|
|
19
|
+
`workflow-gate.py`) use the JSON approach exclusively — follow that
|
|
20
|
+
pattern.
|
|
21
|
+
- For informational hooks (the majority — `workflow-context-injector.py`,
|
|
22
|
+
`detect-clarification-triggers.py`, etc.): **always exit 0** and emit
|
|
23
|
+
context via `hookSpecificOutput.additionalContext`.
|
|
24
|
+
|
|
25
|
+
Audited 2026-04-28: every existing hook in this directory exits 0 and
|
|
26
|
+
delegates blocking decisions to stdout JSON. No `sys.exit(1)` blocks
|
|
27
|
+
anywhere. Keep it that way.
|
|
28
|
+
|
|
29
|
+
## Special case: `WorktreeCreate`
|
|
30
|
+
|
|
31
|
+
Per the docs, `WorktreeCreate` blocks on **any** non-zero exit. None of
|
|
32
|
+
the current MAP hooks target this event, but if a future hook does:
|
|
33
|
+
explicit `sys.exit(0)` is mandatory unless intent is to block.
|
|
34
|
+
|
|
35
|
+
## JSON output schema (PreToolUse)
|
|
36
|
+
|
|
37
|
+
```json
|
|
38
|
+
{
|
|
39
|
+
"hookSpecificOutput": {
|
|
40
|
+
"hookEventName": "PreToolUse",
|
|
41
|
+
"permissionDecision": "deny", // or "allow", "ask", "defer"
|
|
42
|
+
"permissionDecisionReason": "<why>"
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
For non-PreToolUse events (e.g., `UserPromptSubmit`, `SessionStart`):
|
|
48
|
+
|
|
49
|
+
```json
|
|
50
|
+
{
|
|
51
|
+
"hookSpecificOutput": {
|
|
52
|
+
"hookEventName": "<event-name>",
|
|
53
|
+
"additionalContext": "<text injected into Claude's context>"
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
Output is capped at 10,000 characters by Claude Code — keep messages
|
|
59
|
+
terse.
|
|
60
|
+
|
|
61
|
+
## Multi-hook precedence
|
|
62
|
+
|
|
63
|
+
When multiple hooks fire on the same event, decisions resolve as:
|
|
64
|
+
|
|
65
|
+
```
|
|
66
|
+
deny > defer > ask > allow
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
Practical implication: a single `deny` from any hook in the chain wins,
|
|
70
|
+
even if other hooks in the chain return `allow`. This is why MAP layers
|
|
71
|
+
`safety-guardrails.py` (always-on file/command blocklist) before
|
|
72
|
+
`workflow-gate.py` (workflow-state gate) — neither can override the
|
|
73
|
+
other's deny.
|
|
74
|
+
|
|
75
|
+
## Inputs
|
|
76
|
+
|
|
77
|
+
All hooks receive a JSON payload via stdin. Common fields:
|
|
78
|
+
|
|
79
|
+
- `session_id`, `transcript_path`, `cwd`, `permission_mode`,
|
|
80
|
+
`hook_event_name`
|
|
81
|
+
- `agent_id`, `agent_type` — present only when the hook fires inside a
|
|
82
|
+
subagent context
|
|
83
|
+
|
|
84
|
+
Event-specific fields (e.g., `tool_name`, `tool_input`, `prompt`) are
|
|
85
|
+
documented per event in the official Claude Code docs.
|
|
86
|
+
|
|
87
|
+
## Hook inventory
|
|
88
|
+
|
|
89
|
+
All 15 hooks (14 `.py` + `end-of-turn.sh`) are classified against the
|
|
90
|
+
`MAP_INVOKED_BY` recursion-guard contract. **REQUIRE_GUARD** hooks early-exit
|
|
91
|
+
when MAP spawns a nested subprocess; **FORBID_GUARD** hooks must always fire
|
|
92
|
+
and may not carry the guard. Full contract and per-hook rationale:
|
|
93
|
+
[`../references/hook-patterns.md`](../references/hook-patterns.md). The
|
|
94
|
+
classification is enforced by `scripts/lint-hooks.py` (in `make lint` /
|
|
95
|
+
`make check`).
|
|
96
|
+
|
|
97
|
+
| Hook | Event | Blocking? | Class | Purpose |
|
|
98
|
+
|------|-------|-----------|-------|---------|
|
|
99
|
+
| `safety-guardrails.py` | `PreToolUse` (Edit/Write/Read/MultiEdit/Bash) | Yes (JSON deny) | FORBID_GUARD | Block sensitive files, dangerous commands |
|
|
100
|
+
| `workflow-gate.py` | `PreToolUse` (Edit/Write/MultiEdit) | Yes (JSON deny) | FORBID_GUARD | Enforce Actor+Monitor workflow before edits |
|
|
101
|
+
| `post-compact-context.py` | `SessionStart` (compact) | No | FORBID_GUARD | Inject restore-point context (re-prime after compaction) |
|
|
102
|
+
| `context-meter.py` | `UserPromptSubmit` | No | REQUIRE_GUARD | Nudge `/compact <focus>` when the token threshold is crossed |
|
|
103
|
+
| `map-token-meter.py` | `SubagentStop` + `Stop` | No | REQUIRE_GUARD | Attribute per-turn token usage to the active MAP subtask |
|
|
104
|
+
| `workflow-context-injector.py` | `PreToolUse` (Edit/Write/Bash) | No | REQUIRE_GUARD | Inject MAP workflow reminder |
|
|
105
|
+
| `ralph-iteration-logger.py` | `PostToolUse` | No | REQUIRE_GUARD | Log iterations, detect file thrashing |
|
|
106
|
+
| `ralph-context-pruner.py` | `PreCompact` | No | REQUIRE_GUARD | Save restore point, prune logs |
|
|
107
|
+
| `pre-compact-save-transcript.py` | `PreCompact` | No | REQUIRE_GUARD | Save full conversation transcript |
|
|
108
|
+
| `detect-clarification-triggers.py` | `UserPromptSubmit` | No | REQUIRE_GUARD | Detect "ask if unclear" + async/durability language |
|
|
109
|
+
| `end-of-turn.sh` | `Stop` | No | REQUIRE_GUARD | Auto-fix lint/format silently |
|
|
110
|
+
| `map-memory-capture.py` | `Stop` | No | REQUIRE_GUARD | Append per-turn scratch WAL record (cross-session memory) |
|
|
111
|
+
| `map-memory-endmark.py` | `SessionEnd` | No | REQUIRE_GUARD | Best-effort 'ended' marker for the session WAL |
|
|
112
|
+
| `map-memory-finalize.py` | `SessionStart` | No | REQUIRE_GUARD | Finalize prior dirty session scratches into digests (claude -p) |
|
|
113
|
+
| `map-memory-recall.py` | `SessionStart` + `UserPromptSubmit` | No | REQUIRE_GUARD | Inject ranked recalled session memory (additionalContext) |
|
|
114
|
+
|
|
115
|
+
> The Codex twin `.codex/hooks/workflow-gate.py` is FORBID_GUARD like its
|
|
116
|
+
> Claude counterpart; this inventory covers `.claude/hooks/` only.
|
|
117
|
+
|
|
118
|
+
Last reviewed: 2026-05-29.
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
# MAP Skills System
|
|
2
|
+
|
|
3
|
+
MAP ships Claude Code skills as the runtime slash surface for MAP workflows and as supporting reference material. Skills are not agents, but they are not all passive documentation either: some skills define task procedures that call agents, run scripts, or write workflow artifacts.
|
|
4
|
+
|
|
5
|
+
## Skill Classes
|
|
6
|
+
|
|
7
|
+
MAP uses `skillClass` in `skill-rules.json` to make the runtime role explicit.
|
|
8
|
+
|
|
9
|
+
| Class | Use For | Runtime Boundary |
|
|
10
|
+
|-------|---------|------------------|
|
|
11
|
+
| `reference` | Conventions, heuristics, explanations, and decision support | Loads knowledge into the current session; should not own a deterministic workflow |
|
|
12
|
+
| `task` | Manual slash workflows such as `/map-efficient`, `/map-review`, and `/map-learn` | May orchestrate agents, run validation, and write artifacts when invoked |
|
|
13
|
+
| `hybrid` | Operational guidance with supporting hooks/scripts, currently `map-state` | Provides reference guidance and declares explicit `runtimeEffects` for hook or artifact side effects |
|
|
14
|
+
|
|
15
|
+
`type` and `enforcement` still describe activation behavior. `skillClass` describes what the skill is allowed to do after it is invoked.
|
|
16
|
+
|
|
17
|
+
## Current Classification
|
|
18
|
+
|
|
19
|
+
| Skill | Class | Notes |
|
|
20
|
+
|-------|-------|-------|
|
|
21
|
+
| `map-state` | `hybrid` | Explains branch-scoped planning and ships hooks/scripts that surface focus and completion checks |
|
|
22
|
+
| `map-learn` | `task` | Manual slash workflow with `disable-model-invocation: true`; writes learned rules from a completed workflow handoff |
|
|
23
|
+
| `map-plan`, `map-efficient`, `map-fast`, `map-debug`, `map-tdd`, `map-task`, `map-check`, `map-review`, `map-resume`, `map-release`, `map-explain` | `task` | Skill-backed slash workflows invoked directly by the user |
|
|
24
|
+
|
|
25
|
+
## Skills vs Agents
|
|
26
|
+
|
|
27
|
+
| Skills | Agents |
|
|
28
|
+
|--------|--------|
|
|
29
|
+
| Loaded through the Skill surface or invoked as slash workflows | Launched through the Task tool by a workflow |
|
|
30
|
+
| Define instructions, policies, hooks, scripts, and supporting files | Perform specialized analysis, implementation, review, or learning work |
|
|
31
|
+
| Own provider-facing runtime contracts under `.claude/skills/` | Own role-specific prompts under `.claude/agents/` |
|
|
32
|
+
| May call agents when the skill is a task workflow | Do not define slash surfaces themselves |
|
|
33
|
+
|
|
34
|
+
## File Structure
|
|
35
|
+
|
|
36
|
+
```text
|
|
37
|
+
.claude/skills/
|
|
38
|
+
├── skill-rules.json # Activation and skillClass metadata
|
|
39
|
+
├── README.md # This file
|
|
40
|
+
├── map-state/
|
|
41
|
+
│ ├── SKILL.md
|
|
42
|
+
│ └── scripts/
|
|
43
|
+
├── map-learn/
|
|
44
|
+
│ ├── SKILL.md
|
|
45
|
+
│ └── templates/
|
|
46
|
+
└── map-*/SKILL.md # Skill-backed MAP slash workflows
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## Authoring Guidance
|
|
50
|
+
|
|
51
|
+
Use a `reference` skill when the content is mostly durable knowledge: conventions, decision trees, examples, troubleshooting, or domain guidance. Reference skills should be safe to load opportunistically and should avoid owning multi-step mutation procedures.
|
|
52
|
+
|
|
53
|
+
Use a `task` skill when the skill behaves like a workflow: it has required steps, validation gates, agent calls, file writes, commits, releases, or other deterministic procedures. Manual slash task skills should normally use `disable-model-invocation: true` and an `argument-hint` so users see a clear invocation shape.
|
|
54
|
+
|
|
55
|
+
Use `hybrid` only when both are true: the skill is useful as reference material, and it also ships runtime helpers such as hooks or scripts. Hybrid skills must list `runtimeEffects` in `skill-rules.json` so users can tell which behavior comes from reading instructions and which behavior comes from installed hooks or scripts.
|
|
56
|
+
|
|
57
|
+
Keep `SKILL.md` focused on invocation policy, decision rules, and navigation to supporting files. Move long examples, troubleshooting matrices, and templates into supporting files so invoked skill content stays compact.
|
|
58
|
+
|
|
59
|
+
## Template Sync
|
|
60
|
+
|
|
61
|
+
The development copy under `.claude/skills/` must stay byte-for-byte synced with `src/mapify_cli/templates/skills/`, because `mapify init` installs the template copy into user projects.
|
|
62
|
+
|
|
63
|
+
Use:
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
make render-templates
|
|
67
|
+
pytest tests/test_skills.py tests/test_template_render.py -v
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
## Troubleshooting
|
|
71
|
+
|
|
72
|
+
### Skill metadata drift
|
|
73
|
+
|
|
74
|
+
Run `pytest tests/test_skills.py -v`. The suite checks frontmatter, direct invocation metadata, skillClass values, hybrid runtime effects, trigger rules, supporting-file links, hook script paths, and template sync.
|
|
75
|
+
|
|
76
|
+
### Generated project does not match this branch
|
|
77
|
+
|
|
78
|
+
Run `uv run mapify init <new-temp-path> --no-git --mcp none` from this repo. Do not use a globally installed `mapify` binary for branch validation because it can lag behind local templates.
|
|
79
|
+
|
|
80
|
+
### New task skill is not invocable
|
|
81
|
+
|
|
82
|
+
Check that the skill has `argument-hint`, the direct `map-*` name appears in `skill-rules.json` keywords and intent patterns, and `skillClass` is `task`.
|
|
@@ -49,6 +49,15 @@ coverage.json
|
|
|
49
49
|
!.map/static-analysis/
|
|
50
50
|
!.map/scripts/
|
|
51
51
|
.map/scripts/.map/
|
|
52
|
+
.map/personal/
|
|
53
|
+
# ^ Personal/local learned-rules layer — user-local, never committed or shipped
|
|
54
|
+
# (redundant over .map/* above; kept explicit for intent + defense in depth)
|
|
55
|
+
|
|
56
|
+
# Phase E cross-session memory: scratch WAL is transient (never commit)
|
|
57
|
+
.map/*/sessions/scratch/
|
|
58
|
+
# Digests (.map/*/sessions/*.md) are committed by default. To keep them
|
|
59
|
+
# local, set MAP_MEMORY_COMMIT_DIGESTS=0 and uncomment the next line:
|
|
60
|
+
# .map/*/sessions/
|
|
52
61
|
|
|
53
62
|
# Temporary verification files
|
|
54
63
|
mapify_cli_verification_*.json
|
|
@@ -71,4 +80,18 @@ docs/claude-code-prompt-improver
|
|
|
71
80
|
.mcp.json
|
|
72
81
|
.chunkhound/
|
|
73
82
|
docs/planning-with-files.txt
|
|
83
|
+
docs/map_framework_tech_directors.pptx
|
|
84
|
+
docs/map-demo-real-case-plan.md
|
|
85
|
+
uv.lock
|
|
74
86
|
docs/research/
|
|
87
|
+
docs/superpowers/
|
|
88
|
+
|
|
89
|
+
# Hypothesis test cache
|
|
90
|
+
.hypothesis/
|
|
91
|
+
|
|
92
|
+
# Presentation materials (AIADOPTION-765 demo + tech-directors deck) — local only, never committed
|
|
93
|
+
ai-yc-presetation/
|
|
94
|
+
docs/map-framework-tech-directors-stackland1144-draft.md
|
|
95
|
+
docs/map_framework_tech_directors_stackland1144_map_plan_draft.pptx
|
|
96
|
+
# map:sofa — SOFA credential dir (opt-in); never commit. See docs/USAGE.md
|
|
97
|
+
.sofa/
|
|
@@ -0,0 +1,290 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: mapify-cli
|
|
3
|
+
Version: 3.11.0
|
|
4
|
+
Summary: MAP Framework installer - Modular Agentic Planner for Claude Code
|
|
5
|
+
Project-URL: Homepage, https://github.com/azalio/map-framework
|
|
6
|
+
Project-URL: Repository, https://github.com/azalio/map-framework.git
|
|
7
|
+
Project-URL: Issues, https://github.com/azalio/map-framework/issues
|
|
8
|
+
Author: MAP Framework Contributors
|
|
9
|
+
Requires-Python: >=3.11
|
|
10
|
+
Requires-Dist: httpx>=0.25.0
|
|
11
|
+
Requires-Dist: jinja2<4,>=3.1
|
|
12
|
+
Requires-Dist: platformdirs>=4.0.0
|
|
13
|
+
Requires-Dist: questionary>=2.0.0
|
|
14
|
+
Requires-Dist: readchar>=4.0.0
|
|
15
|
+
Requires-Dist: rich>=13.0.0
|
|
16
|
+
Requires-Dist: typer>=0.9.0
|
|
17
|
+
Provides-Extra: dev
|
|
18
|
+
Requires-Dist: black>=23.0.0; extra == 'dev'
|
|
19
|
+
Requires-Dist: hypothesis>=6.0.0; extra == 'dev'
|
|
20
|
+
Requires-Dist: jsonschema>=4.0.0; extra == 'dev'
|
|
21
|
+
Requires-Dist: mypy>=1.0.0; extra == 'dev'
|
|
22
|
+
Requires-Dist: pyright>=1.1.400; extra == 'dev'
|
|
23
|
+
Requires-Dist: pytest-asyncio>=0.26.0; extra == 'dev'
|
|
24
|
+
Requires-Dist: pytest-cov>=4.0.0; extra == 'dev'
|
|
25
|
+
Requires-Dist: pytest-mock>=3.10.0; extra == 'dev'
|
|
26
|
+
Requires-Dist: pytest-timeout>=2.1.0; extra == 'dev'
|
|
27
|
+
Requires-Dist: pytest>=7.0.0; extra == 'dev'
|
|
28
|
+
Requires-Dist: pyyaml>=6.0.0; extra == 'dev'
|
|
29
|
+
Requires-Dist: ruff>=0.1.0; extra == 'dev'
|
|
30
|
+
Requires-Dist: truststore>=0.9.0; extra == 'dev'
|
|
31
|
+
Provides-Extra: ssl
|
|
32
|
+
Requires-Dist: truststore>=0.9.0; extra == 'ssl'
|
|
33
|
+
Provides-Extra: test
|
|
34
|
+
Requires-Dist: hypothesis>=6.0.0; extra == 'test'
|
|
35
|
+
Requires-Dist: jsonschema>=4.0.0; extra == 'test'
|
|
36
|
+
Requires-Dist: pytest-asyncio>=0.26.0; extra == 'test'
|
|
37
|
+
Requires-Dist: pytest-cov>=4.0.0; extra == 'test'
|
|
38
|
+
Requires-Dist: pytest-mock>=3.10.0; extra == 'test'
|
|
39
|
+
Requires-Dist: pytest-timeout>=2.1.0; extra == 'test'
|
|
40
|
+
Requires-Dist: pytest>=7.0.0; extra == 'test'
|
|
41
|
+
Requires-Dist: pyyaml>=6.0.0; extra == 'test'
|
|
42
|
+
Description-Content-Type: text/markdown
|
|
43
|
+
|
|
44
|
+
# MAP Framework
|
|
45
|
+
|
|
46
|
+
[](https://pypi.org/project/mapify-cli/)
|
|
47
|
+
[](https://www.python.org/downloads/)
|
|
48
|
+
|
|
49
|
+
> A structured AI development workflow for engineers who need control, not just generated code.
|
|
50
|
+
|
|
51
|
+
MAP turns Claude Code and Codex CLI from ad-hoc coding assistants into a repeatable engineering loop with explicit artifacts, review points, and project memory.
|
|
52
|
+
|
|
53
|
+
Without MAP:
|
|
54
|
+
|
|
55
|
+
```text
|
|
56
|
+
idea -> prompt -> code -> hope
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
With MAP:
|
|
60
|
+
|
|
61
|
+
```text
|
|
62
|
+
SPEC -> PLAN -> TEST -> CODE -> REVIEW -> LEARN
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
AI already writes code quickly. MAP helps you keep the architecture, scope, tests, and review process under control while it does.
|
|
66
|
+
|
|
67
|
+
## Why MAP Exists
|
|
68
|
+
|
|
69
|
+
Ad-hoc prompting feels fast on simple tasks. On complex systems, it often creates a different problem: code appears quickly, but the engineering process disappears.
|
|
70
|
+
|
|
71
|
+
Common failure modes:
|
|
72
|
+
|
|
73
|
+
- AI silently makes architecture decisions you did not approve.
|
|
74
|
+
- One prompt produces a large diff that is hard to review.
|
|
75
|
+
- Tests are written around the generated implementation, including its mistakes.
|
|
76
|
+
- The output compiles, but you cannot explain why the design is correct.
|
|
77
|
+
- The next session forgets the gotchas you already paid to discover.
|
|
78
|
+
|
|
79
|
+
MAP is a lightweight workflow for moving engineering judgment earlier: write down the behavior, split the work into small contracts, verify each stage, review against the spec, and save lessons for the next run.
|
|
80
|
+
|
|
81
|
+
## When To Use MAP
|
|
82
|
+
|
|
83
|
+
| Good fits | Poor fits |
|
|
84
|
+
|-----------|-----------|
|
|
85
|
+
| Complex backend features | Typos and tiny edits |
|
|
86
|
+
| Kubernetes controllers and operators | Small one-off scripts |
|
|
87
|
+
| Internal platform tooling | Product ideas where the desired behavior is still unknown |
|
|
88
|
+
| API, CRD, or domain-model changes with invariants | Broad rewrites without clear boundaries |
|
|
89
|
+
| Refactoring with a meaningful test harness | Tasks cheaper to do directly than to plan |
|
|
90
|
+
|
|
91
|
+
## Quick Start
|
|
92
|
+
|
|
93
|
+
**1. Install**
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
uv tool install mapify-cli
|
|
97
|
+
|
|
98
|
+
# or with pip
|
|
99
|
+
pip install mapify-cli
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
**2. Initialize your project**
|
|
103
|
+
|
|
104
|
+
Claude Code is the default provider:
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
cd your-project
|
|
108
|
+
mapify init
|
|
109
|
+
claude
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
Codex CLI is also supported:
|
|
113
|
+
|
|
114
|
+
```bash
|
|
115
|
+
cd your-project
|
|
116
|
+
mapify init . --provider codex
|
|
117
|
+
codex
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
Then enable the Codex hook manually: run `/hooks`, select `PreToolUse`, press `t` to toggle it on, then press `Esc`.
|
|
121
|
+
|
|
122
|
+
If your Codex version does not support the `hooks` feature key yet, either start it with `codex --enable codex_hooks` or upgrade Codex first. Upgrading is recommended.
|
|
123
|
+
|
|
124
|
+
Pick a context-compression policy if you want the `/compact` nudge
|
|
125
|
+
(default is `never` — the nudge is opt-in; see
|
|
126
|
+
[docs/USAGE.md#context-budget-policy](docs/USAGE.md)):
|
|
127
|
+
|
|
128
|
+
```bash
|
|
129
|
+
mapify init . --compression never # default — no nudge
|
|
130
|
+
mapify init . --compression auto # nudge at threshold
|
|
131
|
+
mapify init . --compression aggressive # nudge at 0.4 x threshold
|
|
132
|
+
mapify init . --compression-threshold 250000 # Opus 1M / 50+ subtask plans
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
Context-block / review-prompt truncation was removed: Actor and reviewer
|
|
136
|
+
prompts always carry the full bundled context. If the conversation grows
|
|
137
|
+
beyond your model's window, opt into `/compact` via `--compression auto` or
|
|
138
|
+
trigger it manually.
|
|
139
|
+
|
|
140
|
+
Optionally opt into **Stack Overflow for Agents (SOFA)** read-only prior-art
|
|
141
|
+
search — **off by default**, no network or credentials unless you enable it:
|
|
142
|
+
|
|
143
|
+
```bash
|
|
144
|
+
mapify init . --sofa # opt-in: enable the map-so-search skill
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
This writes `sofa.enabled: true` to `.map/config.yaml` and adds `.sofa/` to your
|
|
148
|
+
`.gitignore`. Without the flag, no SOFA code path runs. See the
|
|
149
|
+
[SOFA usage guide](docs/USAGE.md#stack-overflow-for-agents-sofa) for onboarding
|
|
150
|
+
and the untrusted-content boundary.
|
|
151
|
+
|
|
152
|
+
**3. Use the golden path for serious work**
|
|
153
|
+
|
|
154
|
+
When a task has unclear behavior, multiple files, or real review risk, run the full loop:
|
|
155
|
+
|
|
156
|
+
```text
|
|
157
|
+
/map-plan define the behavior and split the task
|
|
158
|
+
/map-efficient implement the approved plan
|
|
159
|
+
/map-check
|
|
160
|
+
/map-review
|
|
161
|
+
/map-learn
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
Direct `/map-efficient` is for already-scoped tasks. If you are unsure, start with `/map-plan`.
|
|
165
|
+
|
|
166
|
+
Codex users should invoke MAP skills with `$`: type `$map-plan`, `$map-fast`, or `$map-check` instead of `/map-plan`, `/map-fast`, or `/map-check`. See the [Usage Guide](docs/USAGE.md#codex-cli-provider) for provider details.
|
|
167
|
+
|
|
168
|
+
## What Success Looks Like
|
|
169
|
+
|
|
170
|
+
After a good first workflow, you should see:
|
|
171
|
+
|
|
172
|
+
- a written plan or spec before implementation starts;
|
|
173
|
+
- small implementation contracts instead of one giant AI diff;
|
|
174
|
+
- verification and review artifacts under `.map/<branch>/`;
|
|
175
|
+
- review comments focused on correctness and semantics, not formatting noise;
|
|
176
|
+
- `/map-learn` preserving project rules, gotchas, and handoffs for future sessions.
|
|
177
|
+
|
|
178
|
+
MAP review is useful, but it is not a replacement for engineering judgment. Serious changes still need human review. The goal is to make that review smaller, earlier, and better grounded.
|
|
179
|
+
|
|
180
|
+
## Why Engineers Stick With It
|
|
181
|
+
|
|
182
|
+
- **Daily-driver speed** - optimized for repeated use, not occasional demo workflows.
|
|
183
|
+
- **Low overhead** - structured enough to prevent chaos, lightweight enough to keep token and time cost under control.
|
|
184
|
+
- **Compact high-traffic playbooks** - `/map-plan`, `/map-efficient`, `/map-check`, and `/map-review` keep their active `SKILL.md` bodies focused on the next workflow action, with detailed examples and troubleshooting in bundled supporting files that load only when needed.
|
|
185
|
+
- **Calibrated workflow effort** - each shipped slash skill declares a `thinking_policy` and `parallel_tool_policy`, so lightweight commands stay direct while planning, review, and release workflows reserve deeper reasoning and parallel fan-out for the stages that benefit from it. Non-release prompts use targeted guardrails instead of blanket all-caps prohibition blocks, reducing over-triggered agents and tool calls while keeping true hard stops explicit.
|
|
186
|
+
- **Mutation boundary constraints** - write-capable Claude and Codex provider surfaces tell agents not to edit unrelated files, add or upgrade dependencies, or refactor neighboring code unless the current task/subtask explicitly requires it. If broader scope is necessary, agents should report it as a blocker or tradeoff instead of silently expanding the diff.
|
|
187
|
+
- **Context-first prompt envelopes** - high-context `/map-plan`, `/map-efficient`, `/map-debug`, and `/map-review` agent prompts wrap branch artifacts in XML-style `<documents>`, then state the `<task>` and `<expected_output>`, so specs, review bundles, diffs, logs, and schemas stay visually and machine-semantically separated.
|
|
188
|
+
- **Skill IR audit** - release checks can lower shipped Claude and Codex `SKILL.md` files into a typed `SkillIR`, verify content hashes, catch unsupported frontmatter, reject missing supporting-file links, and block injection-like instructions before `mapify init` copies provider surfaces into user repos.
|
|
189
|
+
- **Reviewable diffs** - planning and task contracts keep changes small enough to inspect.
|
|
190
|
+
- **Contract-sized subtasks** - `/map-plan` and `/map-efficient` require per-subtask `expected_diff_size`, `concern_type`, `one_logical_step`, `hard_constraints`, `soft_constraints`, and `coverage_map` metadata, then validate `blueprint.json` before implementation so oversized, mixed-concern, untraceable, or hard-constraint-dropping plans fail early instead of surprising reviewers later. Soft constraints can be consciously traded off only with explicit rationale.
|
|
191
|
+
- **Useful quality gates** - `/map-check` and `/map-review` validate against the plan instead of just asking whether code "looks fine".
|
|
192
|
+
- **Review bundle** - `/map-review` auto-generates `.map/<branch>/review-bundle.json` and `.map/<branch>/review-bundle.md` before launching reviewer agents, bundling spec, plan, tests, verification, latest code review, `coverage_map` acceptance-tag evidence, and prior-stage consumption status into a single durable input contract. Reviewers read the bundle first; raw diff is secondary and is clipped first when `build_review_prompts` has to keep each reviewer prompt under `MAP_REVIEW_PROMPT_BUDGET_TOKENS`. Use `/map-review --detached` to open an isolated read-only git worktree at `.map/<branch>/detached-review/` for clean-room inspection without touching the source branch. Bundle generation records the `review` stage in `.map/<branch>/artifact_manifest.json`; `python3 .map/scripts/map_step_runner.py validate_prior_stage_consumption review` can fail missing spec/blueprint/test/diff inputs before review. Section-order flags reduce anchoring bias: `--reverse-sections` (invert order), `--shuffle-sections [--seed N]` (seeded random order), `--compare-orderings` (run default + reverse, aggregate via strict-wins, surface drift).
|
|
193
|
+
- **Token budget report** - Actor context and review fan-out prompt builders append active-path budget decisions to `.map/<branch>/token_budget.json`, including before/after estimated tokens, clipped sections, source artifact references, and the budget environment variable. This is the operator breadcrumb for diagnosing missing context: inspect the report, then either raise `MAP_CONTEXT_BLOCK_BUDGET_TOKENS` / `MAP_REVIEW_PROMPT_BUDGET_TOKENS` or split the workflow before rerunning.
|
|
194
|
+
- **Clean retry quarantine** - after repeated Monitor rejection, write-capable workflows switch the next Actor attempt into clean-retry mode and use `.map/<branch>/retry_quarantine.json` instead of raw failed-session context. The artifact preserves constraints, required evidence, and do-not-repeat feedback so retries can change approach without dropping the contract.
|
|
195
|
+
- **Run health report** - `/map-efficient`, `/map-debug`, `/map-check`, and `/map-review` write `.map/<branch>/run_health_report.json` during closeout via `.map/scripts/map_step_runner.py write_run_health_report`. The report is a machine-readable snapshot of terminal status, step progress, retry counters, artifact presence, and latest hook-injection status, including explicit skipped reasons for malformed hook input or insignificant Bash commands when branch state can be safely updated. CI or operators can fail inconsistent closeouts with `python3 .map/scripts/map_step_runner.py validate_run_health_report`.
|
|
196
|
+
- **Compact recovery surface** - `/map-resume` keeps the active recovery flow in a short `SKILL.md` and moves low-frequency examples, state-file notes, token-budget notes, and troubleshooting into `resume-reference.md`, so users recovering after `/clear` or context exhaustion get the next checkpoint action without loading the whole reference appendix.
|
|
197
|
+
- **Project memory** - `/map-learn` turns hard-won fixes and gotchas into reusable context for the next session.
|
|
198
|
+
|
|
199
|
+
## Core Commands
|
|
200
|
+
|
|
201
|
+
| Command | Use For |
|
|
202
|
+
|---------|---------|
|
|
203
|
+
| `/map-plan` | Start here for non-trivial work; clarify behavior and decompose tasks |
|
|
204
|
+
| `/map-efficient` | Implement an approved plan or already-scoped task |
|
|
205
|
+
| `/map-fast` | Small, low-risk changes where full planning would be overhead |
|
|
206
|
+
| `/map-check` | Quality gates, verification, and artifact checks |
|
|
207
|
+
| `/map-review` | Pre-commit semantic review against the plan, tests, and diff |
|
|
208
|
+
| `/map-learn` | Capture project memory and reusable lessons |
|
|
209
|
+
| `/map-debug` | Bug fixes and debugging |
|
|
210
|
+
| `/map-task` | Execute a single subtask from an existing plan |
|
|
211
|
+
| `/map-tdd` | Test-first implementation workflow |
|
|
212
|
+
| `/map-release` | Package release workflow |
|
|
213
|
+
| `/map-resume` | Resume interrupted workflows |
|
|
214
|
+
|
|
215
|
+
[Detailed usage and options ->](docs/USAGE.md)
|
|
216
|
+
|
|
217
|
+
Canonical MAP flows:
|
|
218
|
+
|
|
219
|
+
- Standard: `/map-plan` -> `/map-efficient` -> `/map-check` -> `/map-review` -> `/map-learn`
|
|
220
|
+
- Full TDD: `/map-plan` -> `/map-tdd` -> `/map-check` -> `/map-review` -> `/map-learn`
|
|
221
|
+
- Targeted subtask TDD: `/map-plan` -> `/map-tdd ST-001` -> `/map-task ST-001` -> ... -> `/map-check` -> `/map-review` -> `/map-learn`
|
|
222
|
+
|
|
223
|
+
`/map-plan` records a workflow-fit decision first, so trivial work can exit early with a direct edit or `/map-fast` recommendation instead of forcing full MAP planning.
|
|
224
|
+
|
|
225
|
+
These workflows maintain branch-scoped artifacts like `blueprint.json` with subtask size/concern contracts, `code-review-001.md`, `qa-001.md`, `verification-summary.md` with acceptance coverage and prior-stage consumption, `pr-draft.md`, `artifact_manifest.json`, `run_health_report.json` diagnostics, and run dossiers under `.map/<branch>/`. Targeted TDD flows also persist `test_contract_ST-00N.md` and `test_handoff_ST-00N.json` so `/map-task` can resume implementation from a clean red-phase handoff.
|
|
226
|
+
|
|
227
|
+
`LEARN` is the memory step of the MAP cycle. After implementation, checks, or review, MAP writes a learning handoff under `.map/<branch>/` so `/map-learn` can run later without reconstructing context. Pass `/map-learn [workflow-summary]` when you want to provide an explicit summary.
|
|
228
|
+
|
|
229
|
+
## Case Study
|
|
230
|
+
|
|
231
|
+
The DevOpsConf 2026 case study applies this process to a production Kubernetes Project Operator, not a toy CRUD app:
|
|
232
|
+
|
|
233
|
+
- human estimate: 90 days;
|
|
234
|
+
- MAP-style delivery: 7 days;
|
|
235
|
+
- workflow: `SPEC -> PLAN -> TEST -> CODE -> REVIEW -> LEARN`;
|
|
236
|
+
- small reviewable PRs instead of one giant generated diff;
|
|
237
|
+
- tests before implementation for critical pieces;
|
|
238
|
+
- semantic bugs caught in review before merge.
|
|
239
|
+
|
|
240
|
+
[DevOpsConf 2026 case study ->](https://github.com/azalio/devopsconf-ai-develop)
|
|
241
|
+
|
|
242
|
+
## How It Works
|
|
243
|
+
|
|
244
|
+
MAP orchestrates specialized roles through slash commands and skills:
|
|
245
|
+
|
|
246
|
+
```text
|
|
247
|
+
TaskDecomposer -> breaks goals into subtasks
|
|
248
|
+
Actor -> implements scoped tasks
|
|
249
|
+
Monitor -> validates quality and blocks invalid output
|
|
250
|
+
Predictor -> analyzes impact for risky changes
|
|
251
|
+
Learner -> captures reusable project memory
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
For Claude Code, MAP slash surfaces live in `.claude/skills/map-*/SKILL.md` files created by `mapify init`. The `.claude/commands/` directory is reserved for user-custom commands and a README that points back to the skill-backed MAP surfaces. The shipped skill catalog classifies skills with `skillClass`: MAP slash workflows are `task` skills, while `map-state` is a `hybrid` skill because it combines planning guidance with hooks/scripts that manage `.map/<branch>/` focus artifacts.
|
|
255
|
+
|
|
256
|
+
For Codex CLI, `mapify init . --provider codex` creates `.agents/skills/` for repository skills, `.codex/agents/`, `.codex/config.toml`, hooks, and shared `.map/scripts/`.
|
|
257
|
+
|
|
258
|
+
Maintainers can audit both provider skill trees with `python -m mapify_cli.skill_ir src/mapify_cli/templates/skills src/mapify_cli/templates/codex/skills`. The command exits non-zero if a shipped skill has unsupported frontmatter, unresolved bundled references, or hidden prompt-injection-like text.
|
|
259
|
+
|
|
260
|
+
MAP is inspired by [MAP cognitive architecture](https://github.com/Shanka123/MAP) (Nature Communications, 2025), which reported a 74% improvement in planning tasks. The CLI turns that idea into a practical software development workflow.
|
|
261
|
+
|
|
262
|
+
[Architecture deep-dive ->](docs/ARCHITECTURE.md)
|
|
263
|
+
|
|
264
|
+
## Documentation
|
|
265
|
+
|
|
266
|
+
| Guide | Description |
|
|
267
|
+
|-------|-------------|
|
|
268
|
+
| [Installation](docs/INSTALL.md) | All install methods, PATH setup, troubleshooting |
|
|
269
|
+
| [Usage Guide](docs/USAGE.md) | Workflows, examples, cost optimization, playbook |
|
|
270
|
+
| [Architecture](docs/ARCHITECTURE.md) | Agents, MCP integration, customization |
|
|
271
|
+
| [Platform Spec](docs/MAP_PLATFORM_SPEC.md) | Platform refactor roadmap, codebase analysis |
|
|
272
|
+
|
|
273
|
+
## Trouble?
|
|
274
|
+
|
|
275
|
+
- **Command not found** -> Run `mapify init` in your project first.
|
|
276
|
+
- **Agent errors** -> Check `.claude/agents/` has all shipped agent `.md` files, or run `mapify doctor`.
|
|
277
|
+
- **Poor output on a complex task** -> Start with `/map-plan` and feed `/map-efficient` the approved plan instead of asking it to infer the architecture.
|
|
278
|
+
- [More help ->](docs/INSTALL.md#troubleshooting)
|
|
279
|
+
|
|
280
|
+
## Contributing
|
|
281
|
+
|
|
282
|
+
Improvements welcome: prompts for specific languages, new agents, provider integrations, and CI/CD workflow support.
|
|
283
|
+
|
|
284
|
+
## License
|
|
285
|
+
|
|
286
|
+
MIT
|
|
287
|
+
|
|
288
|
+
---
|
|
289
|
+
|
|
290
|
+
Start with `/map-plan`. Keep the model inside your engineering process, not the other way around.
|