omniconductor 0.3.0

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.
Files changed (118) hide show
  1. package/CHANGELOG.md +64 -0
  2. package/LICENSE +219 -0
  3. package/NOTICE +11 -0
  4. package/README.md +526 -0
  5. package/THIRD_PARTY_NOTICES.md +31 -0
  6. package/TRADEMARKS.md +26 -0
  7. package/VISION.md +106 -0
  8. package/adapters/README.md +121 -0
  9. package/adapters/claude/README.md +102 -0
  10. package/adapters/claude/SUPPORTED-FEATURES.md +66 -0
  11. package/adapters/claude/hookify-templates/.recipe-scoped +9 -0
  12. package/adapters/claude/hookify-templates/README.md +93 -0
  13. package/adapters/claude/hookify-templates/block-completion-claim-without-push.local.md.template +56 -0
  14. package/adapters/claude/hookify-templates/block-direct-push-protected-branch.local.md.template +18 -0
  15. package/adapters/claude/hookify-templates/block-force-push-protected-branch.local.md.template +42 -0
  16. package/adapters/claude/hookify-templates/block-server-secret-in-client.local.md.template +36 -0
  17. package/adapters/claude/hookify-templates/warn-any-type-added.local.md.template +44 -0
  18. package/adapters/claude/hookify-templates/warn-commit-without-pre-commit-review.local.md.template +52 -0
  19. package/adapters/claude/hookify-templates/warn-console-direct.local.md.template +55 -0
  20. package/adapters/claude/hookify-templates/warn-create-table-without-access-control.local.md.template +35 -0
  21. package/adapters/claude/hookify-templates/warn-current-work-without-remaining-tasks.local.md.template +36 -0
  22. package/adapters/claude/hookify-templates/warn-gh-pr-create-without-pre-merge-review.local.md.template +38 -0
  23. package/adapters/claude/hookify-templates/warn-hardcoded-text-without-i18n-key.local.md.template +21 -0
  24. package/adapters/claude/hookify-templates/warn-on-gh-pr-merge.local.md.template +33 -0
  25. package/adapters/claude/hookify-templates/warn-plan-spec-without-remaining-tasks.local.md.template +44 -0
  26. package/adapters/claude/hookify-templates/warn-raw-hex-instead-of-token.local.md.template +21 -0
  27. package/adapters/claude/hookify-templates/warn-security-definer-without-search-path.local.md.template +30 -0
  28. package/adapters/claude/hookify-templates/warn-stop-commit-without-current-work.local.md.template +47 -0
  29. package/adapters/claude/hookify-templates/warn-user-manual-completion.local.md.template +40 -0
  30. package/adapters/claude/transform-spec.md +140 -0
  31. package/adapters/claude/transform.sh +1169 -0
  32. package/adapters/codex/README.md +87 -0
  33. package/adapters/codex/SUPPORTED-FEATURES.md +66 -0
  34. package/adapters/codex/transform-spec.md +90 -0
  35. package/adapters/codex/transform.sh +748 -0
  36. package/adapters/copilot/README.md +88 -0
  37. package/adapters/copilot/SUPPORTED-FEATURES.md +73 -0
  38. package/adapters/copilot/transform-spec.md +111 -0
  39. package/adapters/copilot/transform.sh +757 -0
  40. package/adapters/cursor/README.md +87 -0
  41. package/adapters/cursor/SUPPORTED-FEATURES.md +90 -0
  42. package/adapters/cursor/transform-spec.md +124 -0
  43. package/adapters/cursor/transform.sh +731 -0
  44. package/adapters/gemini/README.md +93 -0
  45. package/adapters/gemini/SUPPORTED-FEATURES.md +80 -0
  46. package/adapters/gemini/transform-spec.md +102 -0
  47. package/adapters/gemini/transform.sh +844 -0
  48. package/adapters/windsurf/README.md +93 -0
  49. package/adapters/windsurf/SUPPORTED-FEATURES.md +67 -0
  50. package/adapters/windsurf/transform-spec.md +99 -0
  51. package/adapters/windsurf/transform.sh +727 -0
  52. package/bin/omniconductor.js +130 -0
  53. package/core/README.md +64 -0
  54. package/core/anti-patterns/README.md +142 -0
  55. package/core/anti-patterns/dynamic-system-prompt.md +113 -0
  56. package/core/anti-patterns/frequent-rule-file-edit.md +83 -0
  57. package/core/anti-patterns/large-file-read-no-range.md +90 -0
  58. package/core/anti-patterns/no-sub-agent-dispatch.md +89 -0
  59. package/core/anti-patterns/single-monolithic-rule-file.md +99 -0
  60. package/core/anti-patterns/skill-eager-load.md +83 -0
  61. package/core/anti-patterns/tool-call-spam.md +93 -0
  62. package/core/docs-templates/CURRENT_WORK.md +64 -0
  63. package/core/docs-templates/INDEX.md +57 -0
  64. package/core/docs-templates/PLANS.md +44 -0
  65. package/core/docs-templates/README.md +40 -0
  66. package/core/docs-templates/REMAINING_TASKS.md +43 -0
  67. package/core/docs-templates/TASKS.md +51 -0
  68. package/core/docs-templates/specs/_example.md +121 -0
  69. package/core/hooks/README.md +62 -0
  70. package/core/hooks/pretool-agent-routing.sh.template +97 -0
  71. package/core/hooks/pretool-commit-current-work-check.sh.template +103 -0
  72. package/core/hooks/pretool-commit-test-coverage-check.sh.template +116 -0
  73. package/core/hooks/pretool-large-file-read-guard.sh.template +117 -0
  74. package/core/hooks/stop-cache-hit-baseline-check.sh.template +133 -0
  75. package/core/hooks/stop-r6-review-check.sh.template +80 -0
  76. package/core/hooks/stop-session-log-check.sh.template +101 -0
  77. package/core/hooks/stop-trajectory-log.sh.template +96 -0
  78. package/core/memory-pattern/EXAMPLES.md +114 -0
  79. package/core/memory-pattern/README.md +133 -0
  80. package/core/recipes/README.md +46 -0
  81. package/core/recipes/auto-mock-data.md +82 -0
  82. package/core/recipes/branch-strategy.md +100 -0
  83. package/core/recipes/coding-conventions.md +123 -0
  84. package/core/recipes/database-discipline.md +65 -0
  85. package/core/recipes/debugging.md +143 -0
  86. package/core/recipes/design-system.md +30 -0
  87. package/core/recipes/i18n.md +118 -0
  88. package/core/recipes/monorepo.md +101 -0
  89. package/core/recipes/self-improvement.md +61 -0
  90. package/core/recipes/tdd.md +128 -0
  91. package/core/recipes/web-mobile-parity.md +87 -0
  92. package/core/reflector/SCHEDULING.md +83 -0
  93. package/core/reflector/prune-lessons.sh +105 -0
  94. package/core/reflector/reflect-brief.md +11 -0
  95. package/core/reflector/reflect.command.md +13 -0
  96. package/core/reflector/run-weekly.sh +54 -0
  97. package/core/reflector/trajectory-log.sh +55 -0
  98. package/core/roles/README.md +61 -0
  99. package/core/roles/builder.md +75 -0
  100. package/core/roles/designer.md +93 -0
  101. package/core/roles/helper.md +70 -0
  102. package/core/roles/planner.md +123 -0
  103. package/core/roles/reflector.md +72 -0
  104. package/core/roles/reviewer.md +104 -0
  105. package/core/roles/scribe.md +89 -0
  106. package/core/universal-rules/README.md +71 -0
  107. package/core/universal-rules/meta-discipline.md +292 -0
  108. package/core/universal-rules/operations.md +162 -0
  109. package/core/universal-rules/quality-gates.md +191 -0
  110. package/core/universal-rules/spec-as-you-go.md +123 -0
  111. package/core/universal-rules/workflow.md +153 -0
  112. package/core/workflow/PHASES.md +134 -0
  113. package/core/workflow/README.md +56 -0
  114. package/docs/MANUAL-INSTALL.md +456 -0
  115. package/package.json +52 -0
  116. package/tools/check-framework-purity.sh +91 -0
  117. package/tools/measure-tokens.sh +169 -0
  118. package/tools/validate-adapter-output.sh +611 -0
@@ -0,0 +1,87 @@
1
+ # Adapter — Cursor (T1, partial support)
2
+
3
+ Cursor is a strong CONDUCTOR target because:
4
+
5
+ - It supports per-pattern rule scoping via `.cursor/rules/*.mdc` `globs:` front-matter — close to Claude's lazy rule loading.
6
+ - It supports an always-loaded baseline via `.cursorrules`.
7
+ - Its `.cursor/commands/*.md` provide a partial slash-command analog.
8
+ - Its rule UI surfaces which rules loaded for the current file, useful for debugging.
9
+
10
+ It is **partial T1** because:
11
+
12
+ - ❌ No sub-agent dispatch — single chat session per task.
13
+ - ❌ No hooks — cannot ABSOLUTE-enforce spec-as-you-go or two-stage code review.
14
+ - ❌ No per-call model routing — model is per-session.
15
+ - ❌ No built-in memory directory — DIY at `.memory/`.
16
+
17
+ **Tier**: T1 — Full support for what Cursor itself supports; partial vs Claude's reference implementation due to missing sub-agents/hooks.
18
+
19
+ ## Installation path
20
+
21
+ ```bash
22
+ # Install (the cursor adapter is implemented):
23
+ bash /path/to/conductor/adapters/cursor/transform.sh /path/to/target [--dry-run]
24
+
25
+ # (planned / roadmap — not yet available):
26
+ # npx omniconductor init --target=cursor [target-dir]
27
+ ```
28
+
29
+ ## What gets installed
30
+
31
+ ```
32
+ <target>/
33
+ ├── .cursorrules # Always-loaded baseline
34
+ ├── .cursor/
35
+ │ └── rules/
36
+ │ ├── operations.mdc # globs: **
37
+ │ ├── coding-conventions.mdc # globs: **/*.{ts,tsx,...}
38
+ │ ├── token-economy.mdc # globs: **
39
+ │ ├── spec-as-you-go.mdc # globs: docs/specs/**, **/*.md
40
+ │ └── model-routing.mdc # globs: ** (informational)
41
+ └── docs/
42
+ ├── CURRENT_WORK.md # (universal templates, identical to other adapters)
43
+ ├── REMAINING_TASKS.md
44
+ ├── PLANS.md
45
+ ├── TASKS.md
46
+ ├── INDEX.md
47
+ └── specs/_example.md
48
+ ```
49
+
50
+ ## Native features supported
51
+
52
+ - ✅ Always-loaded baseline (`.cursorrules`).
53
+ - ✅ Per-pattern rule scoping (`globs:` on `.mdc`).
54
+ - ✅ All universal rule TEXT.
55
+ - ✅ All doc templates.
56
+ - ⚠️ Project commands (partial slash-command analog).
57
+
58
+ ## Features NOT supported (Cursor limitations)
59
+
60
+ | Feature | Workaround |
61
+ |---|---|
62
+ | Sub-agent dispatch | Human plays orchestrator role manually. The orchestrator manual section in `.cursorrules` serves as the prompt template when starting a complex task. |
63
+ | Hooks (Stop / PreToolUse) | Not available. Pair with a project-level pre-commit git hook for enforcement. |
64
+ | Per-call model routing | Cursor uses one model per session. Switch sessions to switch model. Pick the right model in Cursor UI before starting a complex task. |
65
+ | Built-in memory directory | DIY at `<target>/.memory/`. Add to `.gitignore`. |
66
+ | Specialized review agents (Stage A / Stage B) | Run review prompts manually in Cursor chat. |
67
+
68
+ ## After install — first steps
69
+
70
+ 1. Open the target project in Cursor.
71
+ 2. Open the rule indicator (Cursor UI shows which rules loaded for the current file). Verify the universal rules appear.
72
+ 3. Customize `.cursorrules` — replace `{{PROJECT_NAME}}` placeholder.
73
+ 4. Rename `docs/specs/_example.md` → `docs/specs/<your-area>.md` and start a real spec.
74
+ 5. Add `.memory/` to `.gitignore`. Create your first memory entry.
75
+ 6. Add your first entry to `docs/CURRENT_WORK.md`.
76
+
77
+ ## Quirks / known issues (P2 will fill)
78
+
79
+ To be filled in `notes.md` after P2 real-install verification on Cursor.
80
+
81
+ ## Status (P0 foundation)
82
+
83
+ - ✅ `README.md`
84
+ - ✅ `SUPPORTED-FEATURES.md`
85
+ - ✅ `transform-spec.md`
86
+ - ✅ `transform.sh` (implemented)
87
+ - ⏳ `notes.md` (P2)
@@ -0,0 +1,90 @@
1
+ # Cursor — supported features
2
+
3
+ Detailed matrix of which CONDUCTOR features Cursor supports natively.
4
+
5
+ ## Feature support
6
+
7
+ | Feature | Cursor support | Mechanism | Notes |
8
+ |---|---|---|---|
9
+ | **Always-loaded baseline** | ✅ Native | `.cursorrules` at project root | Auto-loaded in every chat session in the project. |
10
+ | **Per-pattern rule scoping** | ✅ Native | `.cursor/rules/*.mdc` with `globs:` front-matter | Closest analog to Claude's `paths:` lazy-loading. |
11
+ | **Custom slash commands (project)** | ⚠️ Partial | `.cursor/commands/*.md` (where Cursor version supports) | Not as flexible as Claude slash commands; usable but limited. |
12
+ | **MCP servers** | ✅ Native | Cursor settings | Not used by CONDUCTOR; project may add own. |
13
+ | **In-IDE chat / completion** | ✅ Native | Cursor's primary feature set | Inline completion + chat — Cursor's strength. |
14
+ | **Sub-agent dispatch** | ✅ Native (2026) | Custom named agents in `.cursor/agents/*.md` | See `docs/COMPATIBILITY-MATRIX.md` / ADR-031. |
15
+ | **Hooks (stop)** | ✅ Native (2026) | `.cursor/hooks.json` | ADR-031. CONDUCTOR currently emits only the Reflector hook (ADR-032); broader hook-set emission is Phase 2. |
16
+ | **Per-task model routing** | ✅ Native (2026) | Per-agent `model` config in agent definitions | ADR-031. |
17
+ | **Custom agent personas** | ✅ Native (2026) | `.cursor/agents/*.md` named agents | Previously a `.cursorrules` paste-in workaround; now first-class. |
18
+ | **Built-in memory directory** | ❌ | — | DIY at `.memory/` (gitignored). |
19
+ | **In-repo doc templates** | ✅ Native | Plain markdown; Cursor reads on demand | Universal across all adapters. |
20
+ | **Spec-as-you-go ABSOLUTE enforcement** | ❌ rule reminder only | Rule text in `.cursorrules` + `.cursor/rules/spec-as-you-go.mdc` | Self-policed. Pair with pre-commit git hook for mechanical enforcement. |
21
+ | **Two-stage code review enforcement** | ❌ rule reminder only | Rule text reminds; user runs review prompts manually in Cursor chat | |
22
+
23
+ ## Cursor-specific extensions
24
+
25
+ CONDUCTOR's Cursor adapter MAY install:
26
+
27
+ - `.cursor/commands/*.md` — project commands for common workflows (e.g., `/plan`, `/review`, `/sync-spec`). These are partial analogs of Claude slash commands.
28
+
29
+ ## Universal-rule → Cursor `.mdc` translation
30
+
31
+ For each `core/universal-rules/<rule>.md`:
32
+
33
+ | `core/` front-matter | Cursor `.mdc` front-matter |
34
+ |---|---|
35
+ | `applies_to: ["**/*.ts"]` | `globs:\n - "**/*.ts"` |
36
+ | `always_loaded: true` | (merge into `.cursorrules` instead of separate `.mdc`) |
37
+ | `priority: 1` | (informational — no Cursor equivalent) |
38
+
39
+ Cursor `.mdc` accepts:
40
+ ```
41
+ ---
42
+ description: brief description
43
+ globs:
44
+ - "<glob1>"
45
+ - "<glob2>"
46
+ alwaysApply: false
47
+ ---
48
+
49
+ # Rule body
50
+ ```
51
+
52
+ `alwaysApply: true` overrides `globs:` and forces always-on. CONDUCTOR uses this for `spec-as-you-go.mdc` and `token-economy.mdc` (always-on is the safer behavior even though their `applies_to:` in `core/` is `**`).
53
+
54
+ ## Model tier mapping
55
+
56
+ CONDUCTOR's universal `model-routing.md` rubric describes Opus / Sonnet / Haiku tiers. Cursor users:
57
+
58
+ - Pick the heaviest model for Plan / Architecture / Large Refactor sessions.
59
+ - Pick the standard model for routine implementation.
60
+ - Pick the cheap model for trivial reads / variable renames.
61
+
62
+ Cursor's UI exposes the model picker. CONDUCTOR's rule text serves as the rubric for the human's selection.
63
+
64
+ ## What Cursor DOES NOT support (and CONDUCTOR doesn't fake)
65
+
66
+ > **2026 reconciliation (first-party verified):** the limitations previously listed here are stale. Cursor now natively supports hooks (`.cursor/hooks.json`), sub-agent dispatch with custom named agents (`.cursor/agents/*.md`), per-task model routing (per-agent `model` config), and project commands/skills — see `docs/COMPATIBILITY-MATRIX.md` / ADR-031.
67
+
68
+ What remains true on the CONDUCTOR side:
69
+
70
+ - CONDUCTOR does not yet emit a Claude-parity hook set for Cursor. It currently emits only the self-improvement Reflector hook (ADR-032, opt-in — see below). Broader hook-set emission (commit-blocking, spec enforcement) is Phase 2.
71
+ - Until then, commit-blocking enforcement still relies on project-level pre-commit git hooks, and orchestration discipline remains partly a human practice.
72
+
73
+ ## Self-improvement (Reflector) — opt-in
74
+
75
+ With `--recipes=self-improvement`, the Cursor adapter emits the Reflector loop (ADR-032):
76
+
77
+ - **Hook**: `.cursor/hooks.json` — registers `.conductor/reflect/trajectory-log.sh` on the `stop` event. Written only if no hook config exists; if one is already present, the adapter emits a manual-merge log entry instead of overwriting.
78
+ - **Command**: `.cursor/skills/reflect/SKILL.md` — the `/reflect` command that distills the trajectory log into lesson candidates.
79
+ - **Agent**: `.cursor/agents/reflector.md` — named reflector agent for the distillation pass.
80
+ - **Scripts**: `.conductor/reflect/trajectory-log.sh` (session trajectory capture) and `.conductor/reflect/prune-lessons.sh` (lesson-file size pruning).
81
+
82
+ The loop is propose-only — lessons are proposed for human review, never auto-applied to rules. The hook no-ops unless `.conductor/reflect/` exists, so installs without the recipe are unaffected (opt-in gate).
83
+
84
+ ## Verification (deferred to P2)
85
+
86
+ | Feature claim | Verified-by-real-install | Verification command / observation |
87
+ |---|---|---|
88
+ | `.cursorrules` loads on session start | ⏳ P2 | Open project; new chat; verify rule indicator shows `.cursorrules`. |
89
+ | `.mdc` rules load on file-pattern match | ⏳ P2 | Touch a file matching `globs:`; verify rule indicator. |
90
+ | Project commands work | ⏳ P2 | Type `/<command>` in chat; verify expansion. |
@@ -0,0 +1,124 @@
1
+ # Cursor adapter — transform.sh specification
2
+
3
+ What `adapters/cursor/transform.sh` MUST do when implemented in P2.
4
+
5
+ ## Invocation
6
+
7
+ ```bash
8
+ ./transform.sh <target-dir> [--dry-run]
9
+ ```
10
+
11
+ ## Inputs
12
+
13
+ Reads from (relative to conductor repo root):
14
+
15
+ ```
16
+ core/universal-rules/meta-discipline.md
17
+ core/universal-rules/operations.md
18
+ core/universal-rules/quality-gates.md
19
+ core/universal-rules/spec-as-you-go.md
20
+ core/universal-rules/workflow.md
21
+ core/docs-templates/*.md
22
+ core/docs-templates/specs/_example.md
23
+ core/memory-pattern/README.md
24
+ adapters/cursor/_native/cursorrules.tpl # Cursor-specific orchestrator manual template
25
+ adapters/cursor/_native/commands/*.md # (optional) project commands
26
+ ```
27
+
28
+ ## Outputs
29
+
30
+ ```
31
+ <target-dir>/
32
+ ├── .cursorrules # From _native/cursorrules.tpl + always-loaded rules merged
33
+ ├── .cursor/
34
+ │ ├── rules/
35
+ │ │ ├── meta-discipline.mdc # Translated (alwaysApply: true)
36
+ │ │ ├── operations.mdc # Translated (alwaysApply: true)
37
+ │ │ ├── quality-gates.mdc # Translated (alwaysApply: true)
38
+ │ │ ├── spec-as-you-go.mdc # Translated (alwaysApply: true)
39
+ │ │ └── workflow.mdc # Translated (alwaysApply: true)
40
+ │ └── commands/ # (optional) project commands
41
+ └── docs/
42
+ ├── CURRENT_WORK.md # Verbatim copy
43
+ ├── REMAINING_TASKS.md
44
+ ├── PLANS.md
45
+ ├── TASKS.md
46
+ ├── INDEX.md
47
+ └── specs/_example.md
48
+ ```
49
+
50
+ ## Universal-rules → Cursor `.mdc` translation
51
+
52
+ For each `core/universal-rules/<rule>.md`:
53
+
54
+ 1. Parse YAML front-matter. Extract `applies_to:`, `always_loaded:`.
55
+ 2. If `always_loaded: true`:
56
+ - APPEND content (sans front-matter, with section heading) to `.cursorrules` "Universal Rules" section.
57
+ - ALSO emit a `.mdc` with `alwaysApply: true` (Cursor reads both — having both ensures the rule loads even if the user customized `.cursorrules`).
58
+ 3. Else:
59
+ - Emit `.cursor/rules/<rule>.mdc` with translated front-matter:
60
+ ```yaml
61
+ ---
62
+ description: <derived from rule's first paragraph or title>
63
+ globs:
64
+ - "<glob1>"
65
+ - "<glob2>"
66
+ ---
67
+ ```
68
+ - Body content preserved verbatim, except:
69
+ - `> **Cursor-only mechanism**` callouts: keep as-is.
70
+ - `> **Claude-only mechanism**` callouts: REPLACE with a degraded callout: `> **Note (Cursor)**: this rule is enforced by hook on Claude Code; on Cursor, follow self-policed.`
71
+ - Other tool-specific callouts: STRIP.
72
+
73
+ ## Cursor-specific orchestrator manual
74
+
75
+ `.cursorrules` body:
76
+
77
+ 1. Header — bilingual (한/영) "you are the orchestrator" intro.
78
+ 2. The 6 role personas (planner/builder/reviewer/helper/designer/scribe) reformatted as "manual orchestrator personas" — when starting a complex task, paste the relevant persona from this file as your prompt.
79
+ 3. ABSOLUTE rules (R1-R8 from CONDUCTOR universal, with R-prefix renumbered for Cursor reality — drop sub-agent-specific rules, keep spec-as-you-go / two-stage review / token economy / model routing).
80
+ 4. Universal rule TEXT (from `core/` always-loaded rules).
81
+ 5. Pointer to `docs/CURRENT_WORK.md` as session-start read.
82
+
83
+ ## Edge cases
84
+
85
+ | Case | Adapter behavior |
86
+ |---|---|
87
+ | Target dir doesn't exist | Error to stderr, exit 1. |
88
+ | Target dir is the conductor repo itself | Error to stderr, exit 1. |
89
+ | Existing `.cursorrules` at target | Skip; report "SKIP (exists)". |
90
+ | Existing `.cursor/rules/operations.mdc` | Skip individually. |
91
+ | Cursor version doesn't support `.cursor/commands/` | Skip the commands directory; warn. |
92
+ | Cursor version uses `.cursor/rules.json` instead of `.mdc` | TBD — verify in P2 against the user's Cursor version. |
93
+
94
+ ## Idempotency check
95
+
96
+ Same as Claude adapter — re-run reports "SKIP (exists)" for everything.
97
+
98
+ ## Verification commands (P2 will fill)
99
+
100
+ ```bash
101
+ test -f "<target>/.cursorrules" || echo "MISSING .cursorrules"
102
+ test -d "<target>/.cursor/rules" || echo "MISSING .cursor/rules dir"
103
+ test -f "<target>/.cursor/rules/spec-as-you-go.mdc" || echo "MISSING spec-as-you-go.mdc"
104
+
105
+ # Open project in Cursor.
106
+ # Touch a docs/specs/*.md file.
107
+ # Verify Cursor rule indicator shows spec-as-you-go.mdc loaded.
108
+ ```
109
+
110
+ ## P2 Cursor-version compatibility check
111
+
112
+ Cursor's rule format has evolved. P2 must verify:
113
+
114
+ - `.cursor/rules/*.mdc` is the current canonical location (true as of late 2025).
115
+ - `globs:` front-matter is the supported scoping mechanism (true as of late 2025).
116
+ - `alwaysApply: true` is honored.
117
+
118
+ If any of these have changed by P2 implementation time, document in `adapters/cursor/notes.md` and adjust the spec.
119
+
120
+ ## Out of scope
121
+
122
+ - Auto-installing Cursor itself.
123
+ - Auto-configuring Cursor settings (privacy mode, model preferences).
124
+ - Per-stack auto-detection.