mapify-cli 3.1.0__tar.gz → 3.2.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.1.0 → mapify_cli-3.2.0}/.claude/skills/README.md +4 -4
- mapify_cli-3.2.0/PKG-INFO +134 -0
- mapify_cli-3.2.0/README.md +102 -0
- {mapify_cli-3.1.0 → mapify_cli-3.2.0}/pyproject.toml +1 -1
- {mapify_cli-3.1.0 → mapify_cli-3.2.0}/src/mapify_cli/__init__.py +51 -47
- {mapify_cli-3.1.0 → mapify_cli-3.2.0}/src/mapify_cli/entity_extractor.py +7 -2
- {mapify_cli-3.1.0 → mapify_cli-3.2.0}/src/mapify_cli/schemas.py +2 -2
- {mapify_cli-3.1.0 → mapify_cli-3.2.0}/src/mapify_cli/templates/agents/actor.md +34 -11
- {mapify_cli-3.1.0 → mapify_cli-3.2.0}/src/mapify_cli/templates/agents/debate-arbiter.md +1 -1
- {mapify_cli-3.1.0 → mapify_cli-3.2.0}/src/mapify_cli/templates/agents/documentation-reviewer.md +1 -1
- {mapify_cli-3.1.0 → mapify_cli-3.2.0}/src/mapify_cli/templates/agents/final-verifier.md +8 -8
- {mapify_cli-3.1.0 → mapify_cli-3.2.0}/src/mapify_cli/templates/agents/monitor.md +27 -2
- {mapify_cli-3.1.0 → mapify_cli-3.2.0}/src/mapify_cli/templates/agents/predictor.md +28 -6
- {mapify_cli-3.1.0 → mapify_cli-3.2.0}/src/mapify_cli/templates/agents/reflector.md +3 -1
- {mapify_cli-3.1.0 → mapify_cli-3.2.0}/src/mapify_cli/templates/agents/research-agent.md +1 -1
- {mapify_cli-3.1.0 → mapify_cli-3.2.0}/src/mapify_cli/templates/agents/task-decomposer.md +5 -1
- {mapify_cli-3.1.0 → mapify_cli-3.2.0}/src/mapify_cli/templates/commands/map-check.md +8 -8
- {mapify_cli-3.1.0 → mapify_cli-3.2.0}/src/mapify_cli/templates/commands/map-debate.md +15 -17
- {mapify_cli-3.1.0 → mapify_cli-3.2.0}/src/mapify_cli/templates/commands/map-debug.md +1 -1
- {mapify_cli-3.1.0 → mapify_cli-3.2.0}/src/mapify_cli/templates/commands/map-efficient.md +82 -38
- {mapify_cli-3.1.0 → mapify_cli-3.2.0}/src/mapify_cli/templates/commands/map-fast.md +2 -3
- {mapify_cli-3.1.0 → mapify_cli-3.2.0}/src/mapify_cli/templates/commands/map-learn.md +2 -2
- {mapify_cli-3.1.0 → mapify_cli-3.2.0}/src/mapify_cli/templates/commands/map-plan.md +23 -18
- {mapify_cli-3.1.0 → mapify_cli-3.2.0}/src/mapify_cli/templates/commands/map-release.md +9 -17
- mapify_cli-3.2.0/src/mapify_cli/templates/commands/map-resume.md +454 -0
- {mapify_cli-3.1.0 → mapify_cli-3.2.0}/src/mapify_cli/templates/commands/map-review.md +19 -17
- {mapify_cli-3.1.0 → mapify_cli-3.2.0}/src/mapify_cli/templates/hooks/post-edit-reminder.py +13 -2
- {mapify_cli-3.1.0 → mapify_cli-3.2.0}/src/mapify_cli/templates/hooks/ralph-context-pruner.py +1 -0
- {mapify_cli-3.1.0 → mapify_cli-3.2.0}/src/mapify_cli/templates/hooks/ralph-iteration-logger.py +1 -0
- {mapify_cli-3.1.0 → mapify_cli-3.2.0}/src/mapify_cli/templates/hooks/workflow-context-injector.py +12 -2
- {mapify_cli-3.1.0 → mapify_cli-3.2.0}/src/mapify_cli/templates/hooks/workflow-gate.py +12 -3
- {mapify_cli-3.1.0 → mapify_cli-3.2.0}/src/mapify_cli/templates/map/scripts/diagnostics.py +7 -1
- {mapify_cli-3.1.0 → mapify_cli-3.2.0}/src/mapify_cli/templates/map/scripts/map_orchestrator.py +327 -15
- {mapify_cli-3.1.0 → mapify_cli-3.2.0}/src/mapify_cli/templates/map/scripts/map_step_runner.py +5 -5
- {mapify_cli-3.1.0 → mapify_cli-3.2.0}/src/mapify_cli/templates/references/step-state-schema.md +6 -7
- {mapify_cli-3.1.0 → mapify_cli-3.2.0}/src/mapify_cli/templates/references/workflow-state-schema.md +1 -1
- {mapify_cli-3.1.0 → mapify_cli-3.2.0}/src/mapify_cli/templates/settings.hooks.json +2 -2
- mapify_cli-3.2.0/src/mapify_cli/templates/settings.json +38 -0
- {mapify_cli-3.1.0 → mapify_cli-3.2.0}/src/mapify_cli/templates/skills/README.md +4 -4
- {mapify_cli-3.1.0 → mapify_cli-3.2.0}/src/mapify_cli/templates/skills/map-cli-reference/SKILL.md +61 -1
- mapify_cli-3.2.0/src/mapify_cli/templates/skills/map-cli-reference/scripts/check-command.sh +126 -0
- {mapify_cli-3.1.0 → mapify_cli-3.2.0}/src/mapify_cli/templates/skills/map-planning/SKILL.md +72 -9
- mapify_cli-3.2.0/src/mapify_cli/templates/skills/map-planning/scripts/get-plan-path.sh +40 -0
- {mapify_cli-3.1.0 → mapify_cli-3.2.0}/src/mapify_cli/templates/skills/map-planning/scripts/init-session.sh +14 -9
- {mapify_cli-3.1.0 → mapify_cli-3.2.0}/src/mapify_cli/templates/skills/map-workflows-guide/SKILL.md +141 -151
- {mapify_cli-3.1.0 → mapify_cli-3.2.0}/src/mapify_cli/templates/skills/map-workflows-guide/resources/agent-architecture.md +52 -19
- {mapify_cli-3.1.0 → mapify_cli-3.2.0}/src/mapify_cli/templates/skills/map-workflows-guide/resources/map-efficient-deep-dive.md +39 -36
- {mapify_cli-3.1.0 → mapify_cli-3.2.0}/src/mapify_cli/templates/skills/map-workflows-guide/resources/map-fast-deep-dive.md +14 -9
- {mapify_cli-3.1.0 → mapify_cli-3.2.0}/src/mapify_cli/templates/skills/map-workflows-guide/resources/map-feature-deep-dive.md +4 -0
- {mapify_cli-3.1.0 → mapify_cli-3.2.0}/src/mapify_cli/templates/skills/map-workflows-guide/resources/map-refactor-deep-dive.md +4 -0
- mapify_cli-3.2.0/src/mapify_cli/templates/skills/map-workflows-guide/scripts/validate-workflow-choice.py +159 -0
- mapify_cli-3.2.0/src/mapify_cli/templates/skills/skill-rules.json +76 -0
- {mapify_cli-3.1.0 → mapify_cli-3.2.0}/src/mapify_cli/templates/workflow-rules.json +27 -28
- {mapify_cli-3.1.0 → mapify_cli-3.2.0}/src/mapify_cli/verification_recorder.py +11 -8
- mapify_cli-3.1.0/PKG-INFO +0 -33
- mapify_cli-3.1.0/README.md +0 -1
- mapify_cli-3.1.0/src/mapify_cli/templates/commands/map-resume.md +0 -423
- mapify_cli-3.1.0/src/mapify_cli/templates/settings.json +0 -38
- mapify_cli-3.1.0/src/mapify_cli/templates/skills/map-planning/scripts/get-plan-path.sh +0 -35
- mapify_cli-3.1.0/src/mapify_cli/templates/skills/skill-rules.json +0 -29
- {mapify_cli-3.1.0 → mapify_cli-3.2.0}/.gitignore +0 -0
- {mapify_cli-3.1.0 → mapify_cli-3.2.0}/src/mapify_cli/contradiction_detector.py +0 -0
- {mapify_cli-3.1.0 → mapify_cli-3.2.0}/src/mapify_cli/dependency_graph.py +0 -0
- {mapify_cli-3.1.0 → mapify_cli-3.2.0}/src/mapify_cli/graph_query.py +0 -0
- {mapify_cli-3.1.0 → mapify_cli-3.2.0}/src/mapify_cli/intent_detector.py +0 -0
- {mapify_cli-3.1.0 → mapify_cli-3.2.0}/src/mapify_cli/ralph_state.py +0 -0
- {mapify_cli-3.1.0 → mapify_cli-3.2.0}/src/mapify_cli/relationship_detector.py +0 -0
- {mapify_cli-3.1.0 → mapify_cli-3.2.0}/src/mapify_cli/repo_insight.py +0 -0
- {mapify_cli-3.1.0 → mapify_cli-3.2.0}/src/mapify_cli/templates/CLAUDE.md +0 -0
- {mapify_cli-3.1.0 → mapify_cli-3.2.0}/src/mapify_cli/templates/agents/curator.md +0 -0
- {mapify_cli-3.1.0 → mapify_cli-3.2.0}/src/mapify_cli/templates/agents/evaluator.md +0 -0
- {mapify_cli-3.1.0 → mapify_cli-3.2.0}/src/mapify_cli/templates/agents/synthesizer.md +0 -0
- {mapify_cli-3.1.0 → mapify_cli-3.2.0}/src/mapify_cli/templates/hooks/block-dangerous.sh +0 -0
- {mapify_cli-3.1.0 → mapify_cli-3.2.0}/src/mapify_cli/templates/hooks/block-secrets.py +0 -0
- {mapify_cli-3.1.0 → mapify_cli-3.2.0}/src/mapify_cli/templates/hooks/end-of-turn.sh +0 -0
- {mapify_cli-3.1.0 → mapify_cli-3.2.0}/src/mapify_cli/templates/hooks/improve-prompt.py +0 -0
- {mapify_cli-3.1.0 → mapify_cli-3.2.0}/src/mapify_cli/templates/hooks/safety-guardrails.py +0 -0
- {mapify_cli-3.1.0 → mapify_cli-3.2.0}/src/mapify_cli/templates/map/static-analysis/analyze.sh +0 -0
- {mapify_cli-3.1.0 → mapify_cli-3.2.0}/src/mapify_cli/templates/map/static-analysis/handlers/common.sh +0 -0
- {mapify_cli-3.1.0 → mapify_cli-3.2.0}/src/mapify_cli/templates/map/static-analysis/handlers/go.sh +0 -0
- {mapify_cli-3.1.0 → mapify_cli-3.2.0}/src/mapify_cli/templates/map/static-analysis/handlers/python.sh +0 -0
- {mapify_cli-3.1.0 → mapify_cli-3.2.0}/src/mapify_cli/templates/map/static-analysis/handlers/rust.sh +0 -0
- {mapify_cli-3.1.0 → mapify_cli-3.2.0}/src/mapify_cli/templates/map/static-analysis/handlers/typescript.sh +0 -0
- {mapify_cli-3.1.0 → mapify_cli-3.2.0}/src/mapify_cli/templates/ralph-loop-config.json +0 -0
- {mapify_cli-3.1.0 → mapify_cli-3.2.0}/src/mapify_cli/templates/references/bash-guidelines.md +0 -0
- {mapify_cli-3.1.0 → mapify_cli-3.2.0}/src/mapify_cli/templates/references/decomposition-examples.md +0 -0
- {mapify_cli-3.1.0 → mapify_cli-3.2.0}/src/mapify_cli/templates/references/escalation-matrix.md +0 -0
- {mapify_cli-3.1.0 → mapify_cli-3.2.0}/src/mapify_cli/templates/references/mcp-usage-examples.md +0 -0
- {mapify_cli-3.1.0 → mapify_cli-3.2.0}/src/mapify_cli/templates/skills/map-planning/scripts/check-complete.sh +0 -0
- {mapify_cli-3.1.0 → mapify_cli-3.2.0}/src/mapify_cli/templates/skills/map-planning/scripts/show-focus.sh +0 -0
- {mapify_cli-3.1.0 → mapify_cli-3.2.0}/src/mapify_cli/templates/skills/map-planning/templates/findings.md +0 -0
- {mapify_cli-3.1.0 → mapify_cli-3.2.0}/src/mapify_cli/templates/skills/map-planning/templates/iteration_history.md +0 -0
- {mapify_cli-3.1.0 → mapify_cli-3.2.0}/src/mapify_cli/templates/skills/map-planning/templates/progress.md +0 -0
- {mapify_cli-3.1.0 → mapify_cli-3.2.0}/src/mapify_cli/templates/skills/map-planning/templates/task_plan.md +0 -0
- {mapify_cli-3.1.0 → mapify_cli-3.2.0}/src/mapify_cli/templates/skills/map-workflows-guide/resources/map-debug-deep-dive.md +0 -0
- {mapify_cli-3.1.0 → mapify_cli-3.2.0}/src/mapify_cli/templates/skills/map-workflows-guide/resources/playbook-system.md +0 -0
- {mapify_cli-3.1.0 → mapify_cli-3.2.0}/src/mapify_cli/tools/__init__.py +0 -0
- {mapify_cli-3.1.0 → mapify_cli-3.2.0}/src/mapify_cli/tools/validate_dependencies.py +0 -0
- {mapify_cli-3.1.0 → mapify_cli-3.2.0}/src/mapify_cli/workflow_finalizer.py +0 -0
- {mapify_cli-3.1.0 → mapify_cli-3.2.0}/src/mapify_cli/workflow_logger.py +0 -0
- {mapify_cli-3.1.0 → mapify_cli-3.2.0}/src/mapify_cli/workflow_state.py +0 -0
|
@@ -34,7 +34,7 @@ Skills provide specialized guidance without executing code. They help users unde
|
|
|
34
34
|
|
|
35
35
|
**Content:**
|
|
36
36
|
- Quick decision tree (5 questions)
|
|
37
|
-
- Workflow comparison matrix (
|
|
37
|
+
- Workflow comparison matrix (4 implemented + 2 planned)
|
|
38
38
|
- Detailed workflow descriptions
|
|
39
39
|
- Agent architecture overview
|
|
40
40
|
- 8 deep-dive resource files
|
|
@@ -50,10 +50,10 @@ MAP: [Shows decision tree and comparison matrix]
|
|
|
50
50
|
**Resources available:**
|
|
51
51
|
- `map-fast-deep-dive.md` - When (not) to use /map-fast
|
|
52
52
|
- `map-efficient-deep-dive.md` - Optimization strategies
|
|
53
|
-
- `map-feature-deep-dive.md` - Full validation workflow
|
|
54
53
|
- `map-debug-deep-dive.md` - Debugging techniques
|
|
55
|
-
- `map-
|
|
56
|
-
- `
|
|
54
|
+
- `map-feature-deep-dive.md` - Full validation workflow (PLANNED)
|
|
55
|
+
- `map-refactor-deep-dive.md` - Dependency analysis (PLANNED)
|
|
56
|
+
- `agent-architecture.md` - How 12 agents orchestrate
|
|
57
57
|
- `playbook-system.md` - Knowledge storage and search
|
|
58
58
|
|
|
59
59
|
---
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: mapify-cli
|
|
3
|
+
Version: 3.2.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: platformdirs>=4.0.0
|
|
12
|
+
Requires-Dist: questionary>=2.0.0
|
|
13
|
+
Requires-Dist: readchar>=4.0.0
|
|
14
|
+
Requires-Dist: rich>=13.0.0
|
|
15
|
+
Requires-Dist: typer>=0.9.0
|
|
16
|
+
Provides-Extra: dev
|
|
17
|
+
Requires-Dist: black>=23.0.0; extra == 'dev'
|
|
18
|
+
Requires-Dist: mypy>=1.0.0; extra == 'dev'
|
|
19
|
+
Requires-Dist: pytest-cov>=4.0.0; extra == 'dev'
|
|
20
|
+
Requires-Dist: pytest-mock>=3.10.0; extra == 'dev'
|
|
21
|
+
Requires-Dist: pytest>=7.0.0; extra == 'dev'
|
|
22
|
+
Requires-Dist: pyyaml>=6.0.0; extra == 'dev'
|
|
23
|
+
Requires-Dist: ruff>=0.1.0; extra == 'dev'
|
|
24
|
+
Provides-Extra: ssl
|
|
25
|
+
Requires-Dist: truststore>=0.9.0; extra == 'ssl'
|
|
26
|
+
Provides-Extra: test
|
|
27
|
+
Requires-Dist: pytest-cov>=4.0.0; extra == 'test'
|
|
28
|
+
Requires-Dist: pytest-mock>=3.10.0; extra == 'test'
|
|
29
|
+
Requires-Dist: pytest>=7.0.0; extra == 'test'
|
|
30
|
+
Requires-Dist: pyyaml>=6.0.0; extra == 'test'
|
|
31
|
+
Description-Content-Type: text/markdown
|
|
32
|
+
|
|
33
|
+
# MAP Framework for Claude Code
|
|
34
|
+
|
|
35
|
+
[](https://pypi.org/project/mapify-cli/)
|
|
36
|
+
[](https://www.python.org/downloads/)
|
|
37
|
+
|
|
38
|
+
> Structured AI development workflows that replace ad-hoc prompting with **plan → execute → validate** loops.
|
|
39
|
+
|
|
40
|
+
Based on [MAP cognitive architecture](https://github.com/Shanka123/MAP) (Nature Communications, 2025) — 74% improvement in planning tasks.
|
|
41
|
+
|
|
42
|
+
## Why MAP?
|
|
43
|
+
|
|
44
|
+
- **Structured workflows** — 12 specialized agents instead of single-prompt chaos
|
|
45
|
+
- **Quality gates** — automatic validation catches errors before they compound
|
|
46
|
+
- **40-60% cost savings** — prevents circular reasoning and scope creep
|
|
47
|
+
- **Learning system** — captures patterns for reuse across projects
|
|
48
|
+
|
|
49
|
+
## Quick Start
|
|
50
|
+
|
|
51
|
+
**1. Install**
|
|
52
|
+
```bash
|
|
53
|
+
uv tool install mapify-cli
|
|
54
|
+
|
|
55
|
+
# or with pip
|
|
56
|
+
pip install mapify-cli
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
**2. Initialize** (in your project)
|
|
60
|
+
```bash
|
|
61
|
+
cd your-project
|
|
62
|
+
mapify init
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
**3. Start Claude Code and run your first workflow**
|
|
66
|
+
```bash
|
|
67
|
+
claude
|
|
68
|
+
```
|
|
69
|
+
```
|
|
70
|
+
/map-efficient implement user authentication with JWT tokens
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
**You'll know it's working when:** Claude spawns specialized agents (TaskDecomposer → Actor → Monitor) with structured output instead of freeform responses.
|
|
74
|
+
|
|
75
|
+
## Core Commands
|
|
76
|
+
|
|
77
|
+
| Command | Use For |
|
|
78
|
+
|---------|---------|
|
|
79
|
+
| `/map-efficient` | Production features, refactoring, complex tasks (recommended) |
|
|
80
|
+
| `/map-debug` | Bug fixes and debugging |
|
|
81
|
+
| `/map-fast` | Small, low-risk changes |
|
|
82
|
+
| `/map-debate` | Complex decisions with multi-variant synthesis |
|
|
83
|
+
| `/map-review` | Pre-commit code review |
|
|
84
|
+
| `/map-check` | Quality gates and verification |
|
|
85
|
+
| `/map-plan` | Task decomposition without implementation |
|
|
86
|
+
| `/map-release` | Package release workflow |
|
|
87
|
+
| `/map-resume` | Resume interrupted workflows |
|
|
88
|
+
| `/map-learn` | Extract lessons after workflow completion |
|
|
89
|
+
|
|
90
|
+
[Detailed usage and options →](docs/USAGE.md)
|
|
91
|
+
|
|
92
|
+
## How It Works
|
|
93
|
+
|
|
94
|
+
MAP orchestrates specialized agents through slash commands:
|
|
95
|
+
|
|
96
|
+
```
|
|
97
|
+
TaskDecomposer → breaks goal into subtasks
|
|
98
|
+
↓
|
|
99
|
+
Actor → generates code
|
|
100
|
+
↓
|
|
101
|
+
Monitor → validates quality (loop if needed)
|
|
102
|
+
↓
|
|
103
|
+
Predictor → analyzes impact (for risky changes)
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
The orchestration lives in `.claude/commands/map-*.md` prompts created by `mapify init`.
|
|
107
|
+
|
|
108
|
+
[Architecture deep-dive →](docs/ARCHITECTURE.md)
|
|
109
|
+
|
|
110
|
+
## Documentation
|
|
111
|
+
|
|
112
|
+
| Guide | Description |
|
|
113
|
+
|-------|-------------|
|
|
114
|
+
| [Installation](docs/INSTALL.md) | All install methods, PATH setup, troubleshooting |
|
|
115
|
+
| [Usage Guide](docs/USAGE.md) | Workflows, examples, cost optimization, playbook |
|
|
116
|
+
| [Architecture](docs/ARCHITECTURE.md) | Agents, MCP integration, customization |
|
|
117
|
+
|
|
118
|
+
## Trouble?
|
|
119
|
+
|
|
120
|
+
- **Command not found** → Run `mapify init` in your project first
|
|
121
|
+
- **Agent errors** → Check `.claude/agents/` has all 12 `.md` files
|
|
122
|
+
- [More help →](docs/INSTALL.md#troubleshooting)
|
|
123
|
+
|
|
124
|
+
## Contributing
|
|
125
|
+
|
|
126
|
+
Improvements welcome: prompts for specific languages, new agents, CI/CD integrations.
|
|
127
|
+
|
|
128
|
+
## License
|
|
129
|
+
|
|
130
|
+
MIT
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
**MAP brings structure to AI-assisted development.** Start with `/map-efficient` and see the difference.
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
# MAP Framework for Claude Code
|
|
2
|
+
|
|
3
|
+
[](https://pypi.org/project/mapify-cli/)
|
|
4
|
+
[](https://www.python.org/downloads/)
|
|
5
|
+
|
|
6
|
+
> Structured AI development workflows that replace ad-hoc prompting with **plan → execute → validate** loops.
|
|
7
|
+
|
|
8
|
+
Based on [MAP cognitive architecture](https://github.com/Shanka123/MAP) (Nature Communications, 2025) — 74% improvement in planning tasks.
|
|
9
|
+
|
|
10
|
+
## Why MAP?
|
|
11
|
+
|
|
12
|
+
- **Structured workflows** — 12 specialized agents instead of single-prompt chaos
|
|
13
|
+
- **Quality gates** — automatic validation catches errors before they compound
|
|
14
|
+
- **40-60% cost savings** — prevents circular reasoning and scope creep
|
|
15
|
+
- **Learning system** — captures patterns for reuse across projects
|
|
16
|
+
|
|
17
|
+
## Quick Start
|
|
18
|
+
|
|
19
|
+
**1. Install**
|
|
20
|
+
```bash
|
|
21
|
+
uv tool install mapify-cli
|
|
22
|
+
|
|
23
|
+
# or with pip
|
|
24
|
+
pip install mapify-cli
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
**2. Initialize** (in your project)
|
|
28
|
+
```bash
|
|
29
|
+
cd your-project
|
|
30
|
+
mapify init
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
**3. Start Claude Code and run your first workflow**
|
|
34
|
+
```bash
|
|
35
|
+
claude
|
|
36
|
+
```
|
|
37
|
+
```
|
|
38
|
+
/map-efficient implement user authentication with JWT tokens
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
**You'll know it's working when:** Claude spawns specialized agents (TaskDecomposer → Actor → Monitor) with structured output instead of freeform responses.
|
|
42
|
+
|
|
43
|
+
## Core Commands
|
|
44
|
+
|
|
45
|
+
| Command | Use For |
|
|
46
|
+
|---------|---------|
|
|
47
|
+
| `/map-efficient` | Production features, refactoring, complex tasks (recommended) |
|
|
48
|
+
| `/map-debug` | Bug fixes and debugging |
|
|
49
|
+
| `/map-fast` | Small, low-risk changes |
|
|
50
|
+
| `/map-debate` | Complex decisions with multi-variant synthesis |
|
|
51
|
+
| `/map-review` | Pre-commit code review |
|
|
52
|
+
| `/map-check` | Quality gates and verification |
|
|
53
|
+
| `/map-plan` | Task decomposition without implementation |
|
|
54
|
+
| `/map-release` | Package release workflow |
|
|
55
|
+
| `/map-resume` | Resume interrupted workflows |
|
|
56
|
+
| `/map-learn` | Extract lessons after workflow completion |
|
|
57
|
+
|
|
58
|
+
[Detailed usage and options →](docs/USAGE.md)
|
|
59
|
+
|
|
60
|
+
## How It Works
|
|
61
|
+
|
|
62
|
+
MAP orchestrates specialized agents through slash commands:
|
|
63
|
+
|
|
64
|
+
```
|
|
65
|
+
TaskDecomposer → breaks goal into subtasks
|
|
66
|
+
↓
|
|
67
|
+
Actor → generates code
|
|
68
|
+
↓
|
|
69
|
+
Monitor → validates quality (loop if needed)
|
|
70
|
+
↓
|
|
71
|
+
Predictor → analyzes impact (for risky changes)
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
The orchestration lives in `.claude/commands/map-*.md` prompts created by `mapify init`.
|
|
75
|
+
|
|
76
|
+
[Architecture deep-dive →](docs/ARCHITECTURE.md)
|
|
77
|
+
|
|
78
|
+
## Documentation
|
|
79
|
+
|
|
80
|
+
| Guide | Description |
|
|
81
|
+
|-------|-------------|
|
|
82
|
+
| [Installation](docs/INSTALL.md) | All install methods, PATH setup, troubleshooting |
|
|
83
|
+
| [Usage Guide](docs/USAGE.md) | Workflows, examples, cost optimization, playbook |
|
|
84
|
+
| [Architecture](docs/ARCHITECTURE.md) | Agents, MCP integration, customization |
|
|
85
|
+
|
|
86
|
+
## Trouble?
|
|
87
|
+
|
|
88
|
+
- **Command not found** → Run `mapify init` in your project first
|
|
89
|
+
- **Agent errors** → Check `.claude/agents/` has all 12 `.md` files
|
|
90
|
+
- [More help →](docs/INSTALL.md#troubleshooting)
|
|
91
|
+
|
|
92
|
+
## Contributing
|
|
93
|
+
|
|
94
|
+
Improvements welcome: prompts for specific languages, new agents, CI/CD integrations.
|
|
95
|
+
|
|
96
|
+
## License
|
|
97
|
+
|
|
98
|
+
MIT
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
**MAP brings structure to AI-assisted development.** Start with `/map-efficient` and see the difference.
|
|
@@ -23,7 +23,7 @@ Or install globally:
|
|
|
23
23
|
mapify check
|
|
24
24
|
"""
|
|
25
25
|
|
|
26
|
-
__version__ = "3.
|
|
26
|
+
__version__ = "3.2.0"
|
|
27
27
|
|
|
28
28
|
import copy
|
|
29
29
|
import os
|
|
@@ -1195,38 +1195,39 @@ def configure_global_permissions() -> None:
|
|
|
1195
1195
|
# Default permissions for read-only commands
|
|
1196
1196
|
default_permissions = {
|
|
1197
1197
|
"allow": [
|
|
1198
|
-
"Bash(git status
|
|
1199
|
-
"Bash(git log
|
|
1200
|
-
"Bash(git diff
|
|
1201
|
-
"Bash(git show
|
|
1202
|
-
"Bash(git check-ignore
|
|
1203
|
-
"Bash(git branch --show-current
|
|
1204
|
-
"Bash(git branch -a
|
|
1205
|
-
"Bash(git
|
|
1206
|
-
"Bash(ls
|
|
1207
|
-
"Bash(
|
|
1208
|
-
"Bash(
|
|
1209
|
-
"Bash(
|
|
1210
|
-
"Bash(
|
|
1211
|
-
"Bash(
|
|
1212
|
-
"Bash(
|
|
1213
|
-
"Bash(
|
|
1214
|
-
"Bash(
|
|
1215
|
-
"Bash(
|
|
1216
|
-
"Bash(
|
|
1217
|
-
"Bash(
|
|
1218
|
-
"Bash(
|
|
1219
|
-
"Bash(
|
|
1220
|
-
"Bash(
|
|
1221
|
-
"Bash(
|
|
1222
|
-
"Bash(
|
|
1223
|
-
"Bash(gofmt -
|
|
1224
|
-
"Bash(
|
|
1225
|
-
"Bash(go
|
|
1226
|
-
"Bash(go
|
|
1227
|
-
"Bash(go
|
|
1228
|
-
"Bash(go mod
|
|
1229
|
-
"Bash(
|
|
1198
|
+
"Bash(git status *)",
|
|
1199
|
+
"Bash(git log *)",
|
|
1200
|
+
"Bash(git diff *)",
|
|
1201
|
+
"Bash(git show *)",
|
|
1202
|
+
"Bash(git check-ignore *)",
|
|
1203
|
+
"Bash(git branch --show-current *)",
|
|
1204
|
+
"Bash(git branch -a *)",
|
|
1205
|
+
"Bash(git rev-parse *)",
|
|
1206
|
+
"Bash(git ls-files *)",
|
|
1207
|
+
"Bash(ls *)",
|
|
1208
|
+
"Bash(cat *)",
|
|
1209
|
+
"Bash(head *)",
|
|
1210
|
+
"Bash(tail *)",
|
|
1211
|
+
"Bash(wc *)",
|
|
1212
|
+
"Bash(grep *)",
|
|
1213
|
+
"Bash(find *)",
|
|
1214
|
+
"Bash(sort *)",
|
|
1215
|
+
"Bash(uniq *)",
|
|
1216
|
+
"Bash(jq *)",
|
|
1217
|
+
"Bash(which *)",
|
|
1218
|
+
"Bash(echo *)",
|
|
1219
|
+
"Bash(pwd *)",
|
|
1220
|
+
"Bash(whoami *)",
|
|
1221
|
+
"Bash(ruby -c *)",
|
|
1222
|
+
"Bash(go fmt /tmp/ *)",
|
|
1223
|
+
"Bash(gofmt -l *)",
|
|
1224
|
+
"Bash(gofmt -d *)",
|
|
1225
|
+
"Bash(go vet *)",
|
|
1226
|
+
"Bash(go build *)",
|
|
1227
|
+
"Bash(go test -c *)",
|
|
1228
|
+
"Bash(go mod download *)",
|
|
1229
|
+
"Bash(go mod tidy *)",
|
|
1230
|
+
"Bash(chmod +x *)",
|
|
1230
1231
|
"Read(//Users/**)",
|
|
1231
1232
|
"Read(//private/tmp/**)",
|
|
1232
1233
|
"Glob(**)",
|
|
@@ -1292,19 +1293,19 @@ def create_or_merge_project_settings_local(project_path: Path) -> None:
|
|
|
1292
1293
|
# SourceCraft MCP helpers (project-scoped)
|
|
1293
1294
|
"mcp__sourcecraft__list_pull_request_comments",
|
|
1294
1295
|
# Common safe Go workflows (project-scoped)
|
|
1295
|
-
"Bash(go test
|
|
1296
|
-
"Bash(go test -c
|
|
1297
|
-
"Bash(go vet
|
|
1298
|
-
"Bash(go build
|
|
1299
|
-
"Bash(go mod download
|
|
1300
|
-
"Bash(go mod tidy
|
|
1301
|
-
"Bash(gofmt -l
|
|
1302
|
-
"Bash(gofmt -d
|
|
1296
|
+
"Bash(go test *)",
|
|
1297
|
+
"Bash(go test -c *)",
|
|
1298
|
+
"Bash(go vet *)",
|
|
1299
|
+
"Bash(go build *)",
|
|
1300
|
+
"Bash(go mod download *)",
|
|
1301
|
+
"Bash(go mod tidy *)",
|
|
1302
|
+
"Bash(gofmt -l *)",
|
|
1303
|
+
"Bash(gofmt -d *)",
|
|
1303
1304
|
# Common safe Make targets
|
|
1304
1305
|
"Bash(make generate manifests)",
|
|
1305
1306
|
"Bash(make manifests)",
|
|
1306
1307
|
# Common git workflows
|
|
1307
|
-
"Bash(git worktree add
|
|
1308
|
+
"Bash(git worktree add *)",
|
|
1308
1309
|
# Used by some test/dev scripts to produce temporary dev certs
|
|
1309
1310
|
'Bash(openssl req -x509 -newkey rsa:512 -keyout /dev/null -out /dev/stdout -days 365 -nodes -subj "/CN=test" 2>/dev/null)',
|
|
1310
1311
|
],
|
|
@@ -1369,10 +1370,13 @@ def create_mcp_config(project_path: Path, mcp_servers: List[str]) -> None:
|
|
|
1369
1370
|
"monitor": [],
|
|
1370
1371
|
"predictor": [],
|
|
1371
1372
|
"evaluator": [],
|
|
1372
|
-
"orchestrator": [],
|
|
1373
1373
|
"reflector": [],
|
|
1374
1374
|
"curator": [],
|
|
1375
1375
|
"documentation-reviewer": [],
|
|
1376
|
+
"debate-arbiter": [],
|
|
1377
|
+
"synthesizer": [],
|
|
1378
|
+
"research-agent": [],
|
|
1379
|
+
"final-verifier": [],
|
|
1376
1380
|
},
|
|
1377
1381
|
"workflow_settings": {
|
|
1378
1382
|
"always_retrieve_knowledge": True,
|
|
@@ -1426,14 +1430,14 @@ def create_mcp_config(project_path: Path, mcp_servers: List[str]) -> None:
|
|
|
1426
1430
|
"task-decomposer",
|
|
1427
1431
|
"monitor",
|
|
1428
1432
|
"evaluator",
|
|
1429
|
-
"orchestrator",
|
|
1430
1433
|
"reflector",
|
|
1434
|
+
"debate-arbiter",
|
|
1431
1435
|
]:
|
|
1432
1436
|
if agent in config["agent_mcp_mappings"]:
|
|
1433
1437
|
config["agent_mcp_mappings"][agent].append("sequential-thinking")
|
|
1434
1438
|
|
|
1435
1439
|
if "claude-reviewer" in mcp_servers:
|
|
1436
|
-
for agent in ["monitor", "evaluator", "
|
|
1440
|
+
for agent in ["monitor", "evaluator", "final-verifier"]:
|
|
1437
1441
|
if agent in config["agent_mcp_mappings"]:
|
|
1438
1442
|
config["agent_mcp_mappings"][agent].append("claude-reviewer")
|
|
1439
1443
|
|
|
@@ -2089,12 +2093,12 @@ def init(
|
|
|
2089
2093
|
tracker.add("create-agents", "Create MAP agents")
|
|
2090
2094
|
tracker.start("create-agents")
|
|
2091
2095
|
create_agent_files(project_path, selected_mcp_servers)
|
|
2092
|
-
tracker.complete("create-agents", "
|
|
2096
|
+
tracker.complete("create-agents", "12 agents")
|
|
2093
2097
|
|
|
2094
2098
|
tracker.add("create-commands", "Create slash commands")
|
|
2095
2099
|
tracker.start("create-commands")
|
|
2096
2100
|
create_command_files(project_path)
|
|
2097
|
-
tracker.complete("create-commands", "
|
|
2101
|
+
tracker.complete("create-commands", "10 commands")
|
|
2098
2102
|
|
|
2099
2103
|
tracker.add("create-skills", "Create skills")
|
|
2100
2104
|
tracker.start("create-skills")
|
|
@@ -283,9 +283,14 @@ class EntityExtractor:
|
|
|
283
283
|
"trunk-based": "trunk-based-development",
|
|
284
284
|
"code-review": "code-review-process",
|
|
285
285
|
"pair-programming": "pair-programming",
|
|
286
|
-
"map-
|
|
286
|
+
"map-efficient": "map-efficient-workflow",
|
|
287
|
+
"map-fast": "map-fast-workflow",
|
|
287
288
|
"map-debug": "map-debug-workflow",
|
|
288
|
-
"map-
|
|
289
|
+
"map-debate": "map-debate-workflow",
|
|
290
|
+
"map-review": "map-review-workflow",
|
|
291
|
+
"map-plan": "map-plan-workflow",
|
|
292
|
+
"map-check": "map-check-workflow",
|
|
293
|
+
"map-release": "map-release-workflow",
|
|
289
294
|
"agile": "agile-methodology",
|
|
290
295
|
"scrum": "scrum-framework",
|
|
291
296
|
"kanban": "kanban-method",
|
|
@@ -217,8 +217,8 @@ STATE_ARTIFACT_SCHEMA = {
|
|
|
217
217
|
"properties": {
|
|
218
218
|
"workflow": {
|
|
219
219
|
"type": "string",
|
|
220
|
-
"description": "Type of MAP workflow (e.g., 'map-efficient', 'map-debug', 'map-
|
|
221
|
-
"examples": ["map-efficient", "map-debug", "map-
|
|
220
|
+
"description": "Type of MAP workflow (e.g., 'map-efficient', 'map-debug', 'map-fast')",
|
|
221
|
+
"examples": ["map-efficient", "map-debug", "map-fast"],
|
|
222
222
|
},
|
|
223
223
|
"terminal_status": {
|
|
224
224
|
"type": "string",
|
|
@@ -271,15 +271,15 @@ Task(
|
|
|
271
271
|
|
|
272
272
|
# Required Output Structure
|
|
273
273
|
|
|
274
|
-
**
|
|
274
|
+
**Actor applies code directly using Edit/Write tools.**
|
|
275
275
|
|
|
276
|
-
You are a
|
|
276
|
+
You are a code implementer. Read affected files, then apply changes with Edit/Write tools.
|
|
277
|
+
Monitor will validate the written code afterward.
|
|
277
278
|
|
|
278
|
-
-
|
|
279
|
-
-
|
|
280
|
-
-
|
|
281
|
-
-
|
|
282
|
-
- 🔄 FLOW: You output → Monitor reviews → Orchestrator applies with Edit/Write
|
|
279
|
+
- Use Edit tool for modifying existing files
|
|
280
|
+
- Use Write tool for creating new files
|
|
281
|
+
- Read files before editing to understand current state
|
|
282
|
+
- Apply changes incrementally — one logical change per Edit call
|
|
283
283
|
|
|
284
284
|
---
|
|
285
285
|
|
|
@@ -422,7 +422,7 @@ Only include if changes affect:
|
|
|
422
422
|
## Pre-Submission Checklist
|
|
423
423
|
|
|
424
424
|
### Code Quality (Mandatory)
|
|
425
|
-
- [ ] Follows {{
|
|
425
|
+
- [ ] Follows {{standards_doc}} style guide
|
|
426
426
|
- [ ] Complete implementations (no placeholders, no `...`)
|
|
427
427
|
- [ ] Self-documenting names (clear variables/functions)
|
|
428
428
|
- [ ] Comments for complex logic only
|
|
@@ -502,6 +502,29 @@ When assessing performance impact, use these as default baselines unless project
|
|
|
502
502
|
|
|
503
503
|
**Protocol**: Document rationale → Add TODO if needed → Proceed
|
|
504
504
|
|
|
505
|
+
### Evidence File (Artifact-Gated Validation)
|
|
506
|
+
|
|
507
|
+
After applying all code changes, write an evidence file so the orchestrator can verify this step ran. Use Bash (not Write tool) to create the file:
|
|
508
|
+
|
|
509
|
+
```bash
|
|
510
|
+
cat > .map/<branch>/evidence/actor_<subtask_id>.json << 'EVIDENCE'
|
|
511
|
+
{
|
|
512
|
+
"phase": "ACTOR",
|
|
513
|
+
"subtask_id": "<subtask_id>",
|
|
514
|
+
"timestamp": "<ISO 8601 UTC>",
|
|
515
|
+
"summary": "<one-line description of what was implemented>",
|
|
516
|
+
"aag_contract": "<the AAG contract line>",
|
|
517
|
+
"files_changed": ["<list of modified file paths>"],
|
|
518
|
+
"status": "applied"
|
|
519
|
+
}
|
|
520
|
+
EVIDENCE
|
|
521
|
+
```
|
|
522
|
+
|
|
523
|
+
**Required fields** (orchestrator validates these): `phase`, `subtask_id`, `timestamp`.
|
|
524
|
+
Other fields are informational but recommended for audit trail.
|
|
525
|
+
|
|
526
|
+
**CRITICAL**: Without this file, `validate_step("2.3")` will reject the step.
|
|
527
|
+
|
|
505
528
|
</Actor_Quality_v3_1>
|
|
506
529
|
|
|
507
530
|
---
|
|
@@ -670,8 +693,8 @@ output:
|
|
|
670
693
|
- **Project**: {{project_name}}
|
|
671
694
|
- **Language**: {{language}}
|
|
672
695
|
- **Framework**: {{framework}}
|
|
673
|
-
- **Standards**: {{
|
|
674
|
-
- **Branch**: {{
|
|
696
|
+
- **Standards**: {{standards_doc}}
|
|
697
|
+
- **Branch**: {{branch_name}}
|
|
675
698
|
- **Allowed Scope**: {{allowed_scope}}
|
|
676
699
|
- **Related Files**: {{related_files}}
|
|
677
700
|
|
|
@@ -733,7 +756,7 @@ output:
|
|
|
733
756
|
|
|
734
757
|
Follow this protocol exactly — do not infer "how seniors write" or add stylistic flourishes.
|
|
735
758
|
|
|
736
|
-
1. **Style standard**: Use {{
|
|
759
|
+
1. **Style standard**: Use {{standards_doc}}. If unavailable: Python→PEP8, JS/TS→Google Style, Go→gofmt, Rust→rustfmt.
|
|
737
760
|
2. **Architecture**: Dependency injection where applicable. No global mutable state.
|
|
738
761
|
3. **Naming**: Self-documenting (`user_count` not `n`, `is_valid` not `flag`). No abbreviations except industry-standard ones (URL, HTTP, ID).
|
|
739
762
|
4. **Intent comments**: Add a one-line `# Intent: <why>` comment above any non-obvious logic block. Do NOT comment obvious code.
|
|
@@ -18,36 +18,36 @@ You catch premature completion and hallucinated success.
|
|
|
18
18
|
|
|
19
19
|
| Data | Source | How to Read |
|
|
20
20
|
|------|--------|-------------|
|
|
21
|
-
| Original Goal | `.map
|
|
22
|
-
| Acceptance Criteria | `.map
|
|
23
|
-
| Completed Subtasks | `.map
|
|
21
|
+
| Original Goal | `.map/<branch>/task_plan_<branch>.md` | Section "## Goal" or first paragraph |
|
|
22
|
+
| Acceptance Criteria | `.map/<branch>/task_plan_<branch>.md` | Section "## Acceptance Criteria" (table) |
|
|
23
|
+
| Completed Subtasks | `.map/<branch>/progress_<branch>.md` | Checkboxes marked `[x]` |
|
|
24
24
|
| Global Validation | Task argument `$VALIDATION_CRITERIA` | Passed from map-efficient.md |
|
|
25
25
|
|
|
26
26
|
### OUTPUT Destinations (where to store results)
|
|
27
27
|
|
|
28
28
|
| Data | Destination | Format | Written By |
|
|
29
29
|
|------|-------------|--------|------------|
|
|
30
|
-
| Verification Result | `.map
|
|
30
|
+
| Verification Result | `.map/<branch>/progress_<branch>.md` | Append "## Final Verification" section | **final-verifier agent** |
|
|
31
31
|
| Structured Result | `.map/<branch>/final_verification.json` | JSON (for programmatic access) | **final-verifier agent** |
|
|
32
32
|
| Root Cause (if failed) | `.map/<branch>/final_verification.json` | In `root_cause` field | **final-verifier agent** |
|
|
33
33
|
|
|
34
34
|
**WHO WRITES FILES:**
|
|
35
35
|
- **final-verifier agent** writes verification results to BOTH markdown and JSON
|
|
36
36
|
- **Orchestrator (map-efficient.md)** reads results and decides next action (COMPLETE/RE_DECOMPOSE/ESCALATE)
|
|
37
|
-
- **Orchestrator (map-efficient.md)** ensures Acceptance Criteria section exists in
|
|
37
|
+
- **Orchestrator (map-efficient.md)** ensures Acceptance Criteria section exists in `.map/<branch>/task_plan_<branch>.md` (derived from decomposition output)
|
|
38
38
|
|
|
39
39
|
**IMPORTANT:** Always use sanitized branch name (e.g., `feature-foo` not `feature/foo`).
|
|
40
40
|
|
|
41
41
|
**SOURCE OF TRUTH CONTRACT:**
|
|
42
42
|
- `.map/<branch>/final_verification.json` is the **ONLY** source of truth for orchestrator decisions
|
|
43
|
-
- `.map
|
|
43
|
+
- `.map/<branch>/progress_<branch>.md` "## Final Verification" section is for **human readability only**
|
|
44
44
|
- **Orchestrator (map-efficient.md) MUST read JSON**, not parse markdown
|
|
45
45
|
- Both must be written, but only JSON is used programmatically
|
|
46
46
|
|
|
47
47
|
## Verification Protocol
|
|
48
48
|
|
|
49
49
|
### Step 1: Goal Extraction
|
|
50
|
-
Read `.map
|
|
50
|
+
Read `.map/<branch>/task_plan_<branch>.md` to extract:
|
|
51
51
|
- Original goal from "## Goal" section
|
|
52
52
|
- Acceptance criteria from "## Acceptance Criteria" table (if present)
|
|
53
53
|
|
|
@@ -101,7 +101,7 @@ Score confidence (0.0-1.0):
|
|
|
101
101
|
|
|
102
102
|
**CRITICAL:** `root_cause` is REQUIRED if `passed=false`
|
|
103
103
|
|
|
104
|
-
### 2. Append to `.map
|
|
104
|
+
### 2. Append to `.map/<branch>/progress_<branch>.md`
|
|
105
105
|
|
|
106
106
|
```markdown
|
|
107
107
|
## Final Verification
|
|
@@ -94,8 +94,8 @@ If implementation deviates from the AAG contract — `valid: false` — regardle
|
|
|
94
94
|
|-------------|------|-------------|---------|
|
|
95
95
|
| `{{project_name}}` | string | Project identifier | `"auth-service"` |
|
|
96
96
|
| `{{language}}` | enum | Primary language | `"python"`, `"typescript"`, `"go"` |
|
|
97
|
-
| `{{solution}}` | string | Code/docs to review | Full code block or diff |
|
|
98
|
-
| `{{requirements}}` | string | Subtask requirements | "Implement JWT validation" |
|
|
97
|
+
| `{{solution}}` | string | Code/docs to review (in MAP workflow: provided via `<MAP_Written>` tag) | Full code block or diff |
|
|
98
|
+
| `{{requirements}}` | string | Subtask requirements (in MAP workflow: provided via `<MAP_Contract>` tag) | "Implement JWT validation" |
|
|
99
99
|
| `{{review_mode}}` | enum | Review scope mode | `"full"` or `"diff"` |
|
|
100
100
|
|
|
101
101
|
### Optional Placeholders
|
|
@@ -105,6 +105,7 @@ If implementation deviates from the AAG contract — `valid: false` — regardle
|
|
|
105
105
|
| `{{framework}}` | string | `""` | Framework/runtime (Express, FastAPI, etc.) |
|
|
106
106
|
| `{{standards_doc}}` | string | `""` | URL/path to style guide |
|
|
107
107
|
| `{{security_policy}}` | string | `""` | URL/path to security policy |
|
|
108
|
+
| `{{changed_files}}` | array | `[]` | List of modified file paths (for static analysis) |
|
|
108
109
|
| `{{subtask_description}}` | string | `""` | Additional context |
|
|
109
110
|
| `{{existing_patterns}}` | array | `[]` | Learned patterns from previous reviews |
|
|
110
111
|
| `{{feedback}}` | array | `[]` | Previous review findings to verify |
|
|
@@ -2494,3 +2495,27 @@ def check_rate_limit(user_id, action, limit=100, window=3600):
|
|
|
2494
2495
|
- Only MEDIUM/LOW issues → valid=true (with feedback)
|
|
2495
2496
|
|
|
2496
2497
|
</Monitor_Critical_Reminders>
|
|
2498
|
+
|
|
2499
|
+
### Evidence File (Artifact-Gated Validation)
|
|
2500
|
+
|
|
2501
|
+
**Exception to read-only rule**: Monitor writes evidence files to `.map/` artifacts directory via Bash (not Write tool). This does NOT violate the read-only-for-project-code rule — `.map/` is a workflow artifact directory, not project code.
|
|
2502
|
+
|
|
2503
|
+
After completing validation, write an evidence file:
|
|
2504
|
+
|
|
2505
|
+
```bash
|
|
2506
|
+
cat > .map/<branch>/evidence/monitor_<subtask_id>.json << 'EVIDENCE'
|
|
2507
|
+
{
|
|
2508
|
+
"phase": "MONITOR",
|
|
2509
|
+
"subtask_id": "<subtask_id>",
|
|
2510
|
+
"timestamp": "<ISO 8601 UTC>",
|
|
2511
|
+
"valid": true,
|
|
2512
|
+
"issues_found": <number of issues>,
|
|
2513
|
+
"recommendation": "approve|reject|revise"
|
|
2514
|
+
}
|
|
2515
|
+
EVIDENCE
|
|
2516
|
+
```
|
|
2517
|
+
|
|
2518
|
+
**Required fields** (orchestrator validates these): `phase`, `subtask_id`, `timestamp`.
|
|
2519
|
+
Other fields are informational but recommended for audit trail.
|
|
2520
|
+
|
|
2521
|
+
**CRITICAL**: Without this file, `validate_step("2.4")` will reject the step.
|