codeloop 0.1.14 → 0.1.15

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.
@@ -0,0 +1,19 @@
1
+ interface CursorRuleOptions {
2
+ raw?: boolean;
3
+ print?: boolean;
4
+ }
5
+ /**
6
+ * `codeloop cursor-rule` — re-print (or pipe) the Cursor User Rule snippet
7
+ * users paste into Cursor → Settings → Rules to make CodeLoop always-on.
8
+ *
9
+ * Modes:
10
+ * - default friendly banner + instructions + the snippet
11
+ * - --raw snippet only, suitable for `| pbcopy`
12
+ * - --print alias for --raw (back-compat naming)
13
+ *
14
+ * Always re-saves `~/.cursor/codeloop-user-rule.md` so the file stays
15
+ * up to date with the installed CodeLoop version.
16
+ */
17
+ export declare function cursorRuleCommand(options?: CursorRuleOptions): void;
18
+ export {};
19
+ //# sourceMappingURL=cursor-rule.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cursor-rule.d.ts","sourceRoot":"","sources":["../../src/commands/cursor-rule.ts"],"names":[],"mappings":"AAMA,UAAU,iBAAiB;IACzB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,GAAE,iBAAsB,GAAG,IAAI,CAqBvE"}
@@ -0,0 +1,39 @@
1
+ import { existsSync, mkdirSync, writeFileSync } from "fs";
2
+ import { dirname, join } from "path";
3
+ import { homedir } from "os";
4
+ import { GLOBAL_CURSOR_USER_RULE_SNIPPET } from "../templates/global-rules.js";
5
+ import { printCursorUserRuleBanner } from "../utils/cursor-rule-banner.js";
6
+ /**
7
+ * `codeloop cursor-rule` — re-print (or pipe) the Cursor User Rule snippet
8
+ * users paste into Cursor → Settings → Rules to make CodeLoop always-on.
9
+ *
10
+ * Modes:
11
+ * - default friendly banner + instructions + the snippet
12
+ * - --raw snippet only, suitable for `| pbcopy`
13
+ * - --print alias for --raw (back-compat naming)
14
+ *
15
+ * Always re-saves `~/.cursor/codeloop-user-rule.md` so the file stays
16
+ * up to date with the installed CodeLoop version.
17
+ */
18
+ export function cursorRuleCommand(options = {}) {
19
+ const home = homedir();
20
+ const sourcePath = join(home, ".cursor", "codeloop-user-rule.md");
21
+ try {
22
+ const dir = dirname(sourcePath);
23
+ if (!existsSync(dir))
24
+ mkdirSync(dir, { recursive: true });
25
+ writeFileSync(sourcePath, GLOBAL_CURSOR_USER_RULE_SNIPPET, "utf-8");
26
+ }
27
+ catch {
28
+ // Non-fatal: still print the snippet so the user can copy-paste.
29
+ }
30
+ if (options.raw || options.print) {
31
+ process.stdout.write(GLOBAL_CURSOR_USER_RULE_SNIPPET);
32
+ if (!GLOBAL_CURSOR_USER_RULE_SNIPPET.endsWith("\n")) {
33
+ process.stdout.write("\n");
34
+ }
35
+ return;
36
+ }
37
+ printCursorUserRuleBanner({ sourcePath });
38
+ }
39
+ //# sourceMappingURL=cursor-rule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cursor-rule.js","sourceRoot":"","sources":["../../src/commands/cursor-rule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AAC1D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,+BAA+B,EAAE,MAAM,8BAA8B,CAAC;AAC/E,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAO3E;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,iBAAiB,CAAC,UAA6B,EAAE;IAC/D,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IACvB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,uBAAuB,CAAC,CAAC;IAElE,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;QAChC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1D,aAAa,CAAC,UAAU,EAAE,+BAA+B,EAAE,OAAO,CAAC,CAAC;IACtE,CAAC;IAAC,MAAM,CAAC;QACP,iEAAiE;IACnE,CAAC;IAED,IAAI,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QACjC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACtD,IAAI,CAAC,+BAA+B,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACpD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC;QACD,OAAO;IACT,CAAC;IAED,yBAAyB,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;AAC5C,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAqBA,wBAAsB,WAAW,CAAC,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAuI5G"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAsBA,wBAAsB,WAAW,CAAC,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAuI5G"}
@@ -6,6 +6,7 @@ import chalk from "chalk";
6
6
  import { findApiKey, saveToShellProfile, promptSaveLocation } from "../utils/key-storage.js";
7
7
  import { writeFileSafe, ensureDir, mergeMcpConfig } from "../utils/file-writer.js";
8
8
  import { writeGlobalRules } from "../utils/global-rules-writer.js";
9
+ import { printCursorUserRuleBanner } from "../utils/cursor-rule-banner.js";
9
10
  import { detectProject } from "../utils/detect-project.js";
10
11
  import { signup, login, createKey, ApiError } from "../utils/api-client.js";
11
12
  import { printBox, printSuccess, printWarning, printInfo, printApiKey, printError } from "../utils/ui.js";
@@ -196,20 +197,34 @@ async function initGlobal(options) {
196
197
  skipClaude: ide === "cursor",
197
198
  });
198
199
  if (rules.cursorRulePath) {
199
- printSuccess("~/.cursor/rules/codeloop.mdc (always-on rule for every workspace)");
200
+ printSuccess("~/.cursor/rules/codeloop.mdc (forward-compat Cursor user-rule files)");
201
+ }
202
+ if (rules.cursorUserRuleSourcePath) {
203
+ printSuccess("~/.cursor/codeloop-user-rule.md (paste into Cursor → Settings → Rules)");
200
204
  }
201
205
  if (rules.claudeMemoryPath) {
202
- printSuccess("~/.claude/CLAUDE.md (global memory for every Claude Code workspace)");
206
+ printSuccess("~/.claude/CLAUDE.md (global memory Claude Code applies it everywhere)");
203
207
  }
204
208
  console.log("\n" + chalk.bold(" CodeLoop installed globally!\n"));
205
209
  if (apiKey) {
206
210
  printSuccess("API key configured");
207
211
  printSuccess("MCP server registered for all workspaces");
208
- printSuccess("Always-on rules installed — agents will auto-bootstrap CodeLoop in every new project");
212
+ if (ide === "claude") {
213
+ printSuccess("Claude Code: always-on global memory installed — auto-triggers CodeLoop everywhere");
214
+ }
215
+ else if (ide === "cursor") {
216
+ printSuccess("Cursor: MCP server is global — finish always-on by pasting the snippet below");
217
+ }
218
+ else {
219
+ printSuccess("Claude Code is fully always-on; Cursor needs the one-time paste below");
220
+ }
209
221
  }
210
222
  else {
211
223
  printWarning("No API key set — run: npx codeloop auth to authenticate");
212
224
  }
225
+ if (ide === "cursor" || ide === "both") {
226
+ printCursorUserRuleBanner({ sourcePath: rules.cursorUserRuleSourcePath });
227
+ }
213
228
  printInfo("Reload your IDE window if MCP tools don't appear immediately.\n");
214
229
  }
215
230
  function setupCursorIntegration(cwd, apiKey, projectType, autoAuthorize) {
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -7,6 +7,7 @@ import { initCommand } from "./commands/init.js";
7
7
  import { statusCommand } from "./commands/status.js";
8
8
  import { configureCommand } from "./commands/configure.js";
9
9
  import { designFetchCommand, designCompareCommand } from "./commands/design.js";
10
+ import { cursorRuleCommand } from "./commands/cursor-rule.js";
10
11
  const program = new Command();
11
12
  program
12
13
  .name("codeloop")
@@ -61,5 +62,11 @@ design
61
62
  .option("-d, --designs <dir>", "Designs directory (default: designs/)")
62
63
  .option("-t, --threshold <num>", "Match threshold override (e.g. 0.9)")
63
64
  .action((options) => designCompareCommand(options));
65
+ program
66
+ .command("cursor-rule")
67
+ .description("Print the Cursor User Rule snippet to make CodeLoop always-on in Cursor")
68
+ .option("--raw", "Print only the snippet (suitable for piping to pbcopy / xclip)")
69
+ .option("--print", "Alias for --raw")
70
+ .action((options) => cursorRuleCommand(options));
64
71
  program.parse();
65
72
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -7,12 +7,27 @@
7
7
  * 2. Bootstraps the project on first use via `codeloop_init_project`.
8
8
  * 3. Runs the verify → diagnose → gate_check loop after every code change.
9
9
  *
10
- * Cursor reads `~/.cursor/rules/*.mdc` as user-level rules that apply to
11
- * every workspace. Claude Code reads `~/.claude/CLAUDE.md` as global memory
12
- * that loads alongside the per-project `CLAUDE.md`.
10
+ * Distribution channel per agent:
11
+ * - Claude Code: `~/.claude/CLAUDE.md` (User Memory) is auto-loaded in every
12
+ * workspace by Claude Code, alongside any per-project `CLAUDE.md`.
13
+ * - Cursor: User Rules in Cursor live in the Settings UI (Cursor → Settings
14
+ * → Rules), NOT in `~/.cursor/rules/`. So we do two things:
15
+ * (a) write `~/.cursor/rules/codeloop.mdc` defensively in case Cursor
16
+ * ever supports user-level rule files;
17
+ * (b) save the same content to `~/.cursor/codeloop-user-rule.md` and
18
+ * print it during `init --global` for the user to paste into
19
+ * Cursor → Settings → Rules → User Rules. The MCP server is still
20
+ * globally available regardless, and its tool descriptions self-
21
+ * bootstrap any uninitialized workspace.
13
22
  */
14
23
  export declare const GLOBAL_CURSOR_RULE = "---\ndescription: CodeLoop \u2014 always-on verification across every Cursor workspace\nglobs: [\"**/*\"]\nalwaysApply: true\n---\n\n# CodeLoop is installed on this machine \u2014 use it in every workspace\n\nThe CodeLoop MCP server is registered globally in `~/.cursor/mcp.json`.\nIts tools are available in every workspace you open. You MUST use them\nwhenever you write or modify code.\n\n## On the first CodeLoop tool call in a workspace\n\nIf `.codeloop/config.json` does not yet exist in the workspace root:\n\n1. Call `codeloop_init_project` FIRST (before `codeloop_verify` or any other tool).\n It auto-creates `.codeloop/config.json`, agent rules, `.gitignore` entries,\n and an `artifacts/` directory tailored to the detected project type.\n2. Then proceed with the normal verification loop below.\n\nThe MCP server prepends a \"[CodeLoop] This project has not been initialized\"\nhint to every tool response in an uninitialized workspace. Treat that hint\nas an instruction, not a suggestion.\n\n## After every code change (every workspace, every project type)\n\n1. `codeloop_verify` \u2014 runs build, tests, and static analysis.\n2. If failures: `codeloop_diagnose` \u2192 fix the listed repair tasks \u2192 re-verify.\n Loop automatically; do NOT ask the user between iterations.\n3. For UI projects: `codeloop_capture_screenshot` for every page, then\n `codeloop_visual_review`. Then `codeloop_start_recording` \u2192\n `codeloop_interact` with every element \u2192 `codeloop_stop_recording` \u2192\n `codeloop_interaction_replay`.\n4. If `designs/` or `.codeloop/figma.json` exists, `codeloop_design_compare`\n with `mode: \"all\"` is MANDATORY before `gate_check`.\n5. `codeloop_gate_check` \u2014 must return `ready_for_review` with confidence\n >= 94 % and zero blocker gates. If it returns `continue_fixing`, loop\n back to step 1 immediately; do NOT ask the user.\n6. `codeloop_generate_dev_report` \u2014 writes `docs/DEVELOPMENT_LOG.md`.\n\n## Never\n\n- Never declare a coding task complete without evidence from `codeloop_gate_check`.\n- Never skip `codeloop_init_project` in a fresh workspace just because the\n project \"looks small\" \u2014 the bootstrap is fast and required.\n- Never skip the auto-fix loop after `continue_fixing`.\n- Never disable this rule per-project; project rules add to it, they do not\n replace it.\n";
15
24
  export declare const GLOBAL_CLAUDE_MEMORY = "# CodeLoop \u2014 always-on verification across every Claude Code workspace\n\nThe CodeLoop MCP server is registered globally in `~/.claude.json`.\nIts tools are available in every workspace you open. You MUST use them\nwhenever you write or modify code.\n\n## On the first CodeLoop tool call in a workspace\n\nIf `.codeloop/config.json` does not yet exist in the workspace root:\n\n1. Call `codeloop_init_project` FIRST (before `codeloop_verify` or any other\n CodeLoop tool). It auto-creates `.codeloop/config.json`, agent rules,\n `.gitignore` entries, and an `artifacts/` directory tailored to the\n detected project type.\n2. Then proceed with the normal verification loop below.\n\nThe MCP server prepends a \"[CodeLoop] This project has not been initialized\"\nhint to every tool response in an uninitialized workspace. Treat that hint\nas an instruction, not a suggestion.\n\n## After every code change (every workspace, every project type)\n\n1. `codeloop_verify` \u2014 runs build, tests, and static analysis.\n2. If failures: `codeloop_diagnose` \u2192 fix the listed repair tasks \u2192 re-verify.\n Loop automatically; do NOT ask the user between iterations.\n3. For UI projects: `codeloop_capture_screenshot` for every page, then\n `codeloop_visual_review`. Then `codeloop_start_recording` \u2192\n `codeloop_interact` with every element \u2192 `codeloop_stop_recording` \u2192\n `codeloop_interaction_replay`.\n4. If `designs/` or `.codeloop/figma.json` exists, `codeloop_design_compare`\n with `mode: \"all\"` is MANDATORY before `gate_check`.\n5. `codeloop_gate_check` \u2014 must return `ready_for_review` with confidence\n >= 94 % and zero blocker gates. If it returns `continue_fixing`, loop\n back to step 1 immediately; do NOT ask the user.\n6. `codeloop_generate_dev_report` \u2014 writes `docs/DEVELOPMENT_LOG.md`.\n\n## Never\n\n- Never declare a coding task complete without evidence from `codeloop_gate_check`.\n- Never skip `codeloop_init_project` in a fresh workspace just because the\n project \"looks small\" \u2014 the bootstrap is fast and required.\n- Never skip the auto-fix loop after `continue_fixing`.\n- Never disable this guidance per-project; per-project `CLAUDE.md` adds to\n it, it does not replace it.\n";
25
+ /**
26
+ * Plain-text snippet a user pastes into Cursor → Settings → Rules → User Rules.
27
+ * Same intent as \`GLOBAL_CURSOR_RULE\` but without the \`.mdc\` frontmatter
28
+ * (Cursor's User Rules input box is a plain textarea).
29
+ */
30
+ export declare const GLOBAL_CURSOR_USER_RULE_SNIPPET = "CodeLoop is installed on this machine. The CodeLoop MCP server is registered globally in ~/.cursor/mcp.json, so its tools are available in EVERY workspace. You MUST use them whenever you write or modify code.\n\nON THE FIRST CODELOOP TOOL CALL IN A WORKSPACE\nIf `.codeloop/config.json` does not yet exist in the workspace root:\n1. Call `codeloop_init_project` FIRST (before `codeloop_verify` or any other tool).\n It auto-creates `.codeloop/config.json`, agent rules, `.gitignore` entries,\n and an `artifacts/` directory tailored to the detected project type.\n2. Then proceed with the verification loop below.\nThe MCP server prepends a \"[CodeLoop] This project has not been initialized\" hint\nto every tool response in an uninitialized workspace. Treat that hint as an\ninstruction, not a suggestion.\n\nAFTER EVERY CODE CHANGE (every workspace, every project type)\n1. `codeloop_verify` \u2014 runs build, tests, and static analysis.\n2. If failures: `codeloop_diagnose` \u2192 fix the listed repair tasks \u2192 re-verify.\n Loop automatically; do NOT ask the user between iterations.\n3. For UI projects: `codeloop_capture_screenshot` for every page, then\n `codeloop_visual_review`. Then `codeloop_start_recording` \u2192\n `codeloop_interact` with every element \u2192 `codeloop_stop_recording` \u2192\n `codeloop_interaction_replay`.\n4. If `designs/` or `.codeloop/figma.json` exists, `codeloop_design_compare`\n with `mode: \"all\"` is MANDATORY before `gate_check`.\n5. `codeloop_gate_check` \u2014 must return `ready_for_review` with confidence\n >= 94% and zero blocker gates. If it returns `continue_fixing`, loop back\n to step 1 immediately; do NOT ask the user.\n6. `codeloop_generate_dev_report` \u2014 writes `docs/DEVELOPMENT_LOG.md`.\n\nNEVER\n- Never declare a coding task complete without evidence from `codeloop_gate_check`.\n- Never skip `codeloop_init_project` in a fresh workspace just because the\n project \"looks small\" \u2014 the bootstrap is fast and required.\n- Never skip the auto-fix loop after `continue_fixing`.\n- Never disable this rule per-project; project rules add to it, they do not\n replace it.\n";
16
31
  /**
17
32
  * Marker block used by \`mergeGlobalClaudeMemory\` to find and update the
18
33
  * CodeLoop section inside an existing \`~/.claude/CLAUDE.md\` without
@@ -1 +1 @@
1
- {"version":3,"file":"global-rules.d.ts","sourceRoot":"","sources":["../../src/templates/global-rules.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,eAAO,MAAM,kBAAkB,40EAiD9B,CAAC;AAEF,eAAO,MAAM,oBAAoB,kuEA4ChC,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,0CAA0C,CAAC;AAClF,eAAO,MAAM,wBAAwB,wCAAwC,CAAC"}
1
+ {"version":3,"file":"global-rules.d.ts","sourceRoot":"","sources":["../../src/templates/global-rules.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,eAAO,MAAM,kBAAkB,40EAiD9B,CAAC;AAEF,eAAO,MAAM,oBAAoB,kuEA4ChC,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,+BAA+B,6nEAkC3C,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,0CAA0C,CAAC;AAClF,eAAO,MAAM,wBAAwB,wCAAwC,CAAC"}
@@ -7,9 +7,18 @@
7
7
  * 2. Bootstraps the project on first use via `codeloop_init_project`.
8
8
  * 3. Runs the verify → diagnose → gate_check loop after every code change.
9
9
  *
10
- * Cursor reads `~/.cursor/rules/*.mdc` as user-level rules that apply to
11
- * every workspace. Claude Code reads `~/.claude/CLAUDE.md` as global memory
12
- * that loads alongside the per-project `CLAUDE.md`.
10
+ * Distribution channel per agent:
11
+ * - Claude Code: `~/.claude/CLAUDE.md` (User Memory) is auto-loaded in every
12
+ * workspace by Claude Code, alongside any per-project `CLAUDE.md`.
13
+ * - Cursor: User Rules in Cursor live in the Settings UI (Cursor → Settings
14
+ * → Rules), NOT in `~/.cursor/rules/`. So we do two things:
15
+ * (a) write `~/.cursor/rules/codeloop.mdc` defensively in case Cursor
16
+ * ever supports user-level rule files;
17
+ * (b) save the same content to `~/.cursor/codeloop-user-rule.md` and
18
+ * print it during `init --global` for the user to paste into
19
+ * Cursor → Settings → Rules → User Rules. The MCP server is still
20
+ * globally available regardless, and its tool descriptions self-
21
+ * bootstrap any uninitialized workspace.
13
22
  */
14
23
  export const GLOBAL_CURSOR_RULE = `---
15
24
  description: CodeLoop — always-on verification across every Cursor workspace
@@ -106,6 +115,46 @@ as an instruction, not a suggestion.
106
115
  - Never disable this guidance per-project; per-project \`CLAUDE.md\` adds to
107
116
  it, it does not replace it.
108
117
  `;
118
+ /**
119
+ * Plain-text snippet a user pastes into Cursor → Settings → Rules → User Rules.
120
+ * Same intent as \`GLOBAL_CURSOR_RULE\` but without the \`.mdc\` frontmatter
121
+ * (Cursor's User Rules input box is a plain textarea).
122
+ */
123
+ export const GLOBAL_CURSOR_USER_RULE_SNIPPET = `CodeLoop is installed on this machine. The CodeLoop MCP server is registered globally in ~/.cursor/mcp.json, so its tools are available in EVERY workspace. You MUST use them whenever you write or modify code.
124
+
125
+ ON THE FIRST CODELOOP TOOL CALL IN A WORKSPACE
126
+ If \`.codeloop/config.json\` does not yet exist in the workspace root:
127
+ 1. Call \`codeloop_init_project\` FIRST (before \`codeloop_verify\` or any other tool).
128
+ It auto-creates \`.codeloop/config.json\`, agent rules, \`.gitignore\` entries,
129
+ and an \`artifacts/\` directory tailored to the detected project type.
130
+ 2. Then proceed with the verification loop below.
131
+ The MCP server prepends a "[CodeLoop] This project has not been initialized" hint
132
+ to every tool response in an uninitialized workspace. Treat that hint as an
133
+ instruction, not a suggestion.
134
+
135
+ AFTER EVERY CODE CHANGE (every workspace, every project type)
136
+ 1. \`codeloop_verify\` — runs build, tests, and static analysis.
137
+ 2. If failures: \`codeloop_diagnose\` → fix the listed repair tasks → re-verify.
138
+ Loop automatically; do NOT ask the user between iterations.
139
+ 3. For UI projects: \`codeloop_capture_screenshot\` for every page, then
140
+ \`codeloop_visual_review\`. Then \`codeloop_start_recording\` →
141
+ \`codeloop_interact\` with every element → \`codeloop_stop_recording\` →
142
+ \`codeloop_interaction_replay\`.
143
+ 4. If \`designs/\` or \`.codeloop/figma.json\` exists, \`codeloop_design_compare\`
144
+ with \`mode: "all"\` is MANDATORY before \`gate_check\`.
145
+ 5. \`codeloop_gate_check\` — must return \`ready_for_review\` with confidence
146
+ >= 94% and zero blocker gates. If it returns \`continue_fixing\`, loop back
147
+ to step 1 immediately; do NOT ask the user.
148
+ 6. \`codeloop_generate_dev_report\` — writes \`docs/DEVELOPMENT_LOG.md\`.
149
+
150
+ NEVER
151
+ - Never declare a coding task complete without evidence from \`codeloop_gate_check\`.
152
+ - Never skip \`codeloop_init_project\` in a fresh workspace just because the
153
+ project "looks small" — the bootstrap is fast and required.
154
+ - Never skip the auto-fix loop after \`continue_fixing\`.
155
+ - Never disable this rule per-project; project rules add to it, they do not
156
+ replace it.
157
+ `;
109
158
  /**
110
159
  * Marker block used by \`mergeGlobalClaudeMemory\` to find and update the
111
160
  * CodeLoop section inside an existing \`~/.claude/CLAUDE.md\` without
@@ -1 +1 @@
1
- {"version":3,"file":"global-rules.js","sourceRoot":"","sources":["../../src/templates/global-rules.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,MAAM,CAAC,MAAM,kBAAkB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiDjC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4CnC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,uCAAuC,CAAC;AAClF,MAAM,CAAC,MAAM,wBAAwB,GAAG,qCAAqC,CAAC"}
1
+ {"version":3,"file":"global-rules.js","sourceRoot":"","sources":["../../src/templates/global-rules.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,MAAM,CAAC,MAAM,kBAAkB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiDjC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4CnC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkC9C,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,uCAAuC,CAAC;AAClF,MAAM,CAAC,MAAM,wBAAwB,GAAG,qCAAqC,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Print a copy-paste-ready Cursor User Rule snippet so the user can finish
3
+ * the always-on Cursor setup in two clicks.
4
+ *
5
+ * Why this is a manual step: Cursor's User Rules live in the Settings UI
6
+ * (Cursor → Settings → Rules → User Rules) and are stored in Cursor's
7
+ * internal settings, not on disk. There is no documented file path that
8
+ * Cursor reads as a global user rule, so we surface the snippet here for
9
+ * the user to paste once. After that, Cursor enforces it on every workspace.
10
+ */
11
+ export declare function printCursorUserRuleBanner(opts?: {
12
+ sourcePath?: string | null;
13
+ }): void;
14
+ //# sourceMappingURL=cursor-rule-banner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cursor-rule-banner.d.ts","sourceRoot":"","sources":["../../src/utils/cursor-rule-banner.ts"],"names":[],"mappings":"AAGA;;;;;;;;;GASG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAAG,IAAI,CAiDrF"}
@@ -0,0 +1,47 @@
1
+ import chalk from "chalk";
2
+ import { GLOBAL_CURSOR_USER_RULE_SNIPPET } from "../templates/global-rules.js";
3
+ /**
4
+ * Print a copy-paste-ready Cursor User Rule snippet so the user can finish
5
+ * the always-on Cursor setup in two clicks.
6
+ *
7
+ * Why this is a manual step: Cursor's User Rules live in the Settings UI
8
+ * (Cursor → Settings → Rules → User Rules) and are stored in Cursor's
9
+ * internal settings, not on disk. There is no documented file path that
10
+ * Cursor reads as a global user rule, so we surface the snippet here for
11
+ * the user to paste once. After that, Cursor enforces it on every workspace.
12
+ */
13
+ export function printCursorUserRuleBanner(opts) {
14
+ const sep = chalk.cyan("─".repeat(72));
15
+ console.log("");
16
+ console.log(sep);
17
+ console.log(` ${chalk.bold.cyan("ONE MORE STEP — make CodeLoop always-on in Cursor")}`);
18
+ console.log(sep);
19
+ console.log("");
20
+ console.log(` Cursor's ${chalk.bold("User Rules")} live in the Settings UI, not on disk, so the`);
21
+ console.log(` rule below has to be pasted ${chalk.bold("once")}. After that, Cursor applies it to`);
22
+ console.log(` every workspace automatically.`);
23
+ console.log("");
24
+ console.log(` ${chalk.bold("How:")}`);
25
+ console.log(` 1. Open Cursor → ${chalk.bold("Settings")} → ${chalk.bold("Rules")}`);
26
+ console.log(` 2. Click ${chalk.bold("+ Add Rule")} under ${chalk.bold("User Rules")}`);
27
+ console.log(` 3. Paste the snippet below and save`);
28
+ if (opts?.sourcePath) {
29
+ console.log("");
30
+ console.log(` ${chalk.dim("(Also saved to")} ${chalk.cyan(opts.sourcePath)} ${chalk.dim("for easy copy-paste.)")}`);
31
+ console.log(` ${chalk.dim("Re-print anytime with:")} ${chalk.cyan("npx codeloop cursor-rule")}`);
32
+ }
33
+ console.log("");
34
+ console.log(chalk.dim(" ── snippet (copy everything between the lines) ──"));
35
+ console.log("");
36
+ for (const line of GLOBAL_CURSOR_USER_RULE_SNIPPET.split("\n")) {
37
+ console.log(line.length ? ` ${line}` : "");
38
+ }
39
+ console.log(chalk.dim(" ── end of snippet ──"));
40
+ console.log("");
41
+ console.log(` ${chalk.dim("Skipping this step is OK")} — the MCP server is still globally available`);
42
+ console.log(` and its tool descriptions self-bootstrap. The User Rule just guarantees`);
43
+ console.log(` Cursor proactively triggers CodeLoop on every code change.`);
44
+ console.log(sep);
45
+ console.log("");
46
+ }
47
+ //# sourceMappingURL=cursor-rule-banner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cursor-rule-banner.js","sourceRoot":"","sources":["../../src/utils/cursor-rule-banner.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,7 @@ export interface GlobalRulesWriteOptions {
8
8
  }
9
9
  export interface GlobalRulesWriteResult {
10
10
  cursorRulePath: string | null;
11
+ cursorUserRuleSourcePath: string | null;
11
12
  claudeMemoryPath: string | null;
12
13
  cursorRuleWritten: boolean;
13
14
  claudeMemoryUpdated: boolean;
@@ -15,10 +16,16 @@ export interface GlobalRulesWriteResult {
15
16
  /**
16
17
  * Write CodeLoop's global agent rules so every workspace the user opens
17
18
  * automatically picks them up:
18
- * - ~/.cursor/rules/codeloop.mdc (Cursor user-level rule)
19
- * - ~/.claude/CLAUDE.md (Claude Code global memory)
19
+ * - ~/.cursor/rules/codeloop.mdc (Cursor defensive; not loaded
20
+ * by current Cursor versions, but
21
+ * written for forward-compat)
22
+ * - ~/.cursor/codeloop-user-rule.md (Cursor — copy-paste source for
23
+ * Cursor → Settings → Rules)
24
+ * - ~/.claude/CLAUDE.md (Claude Code — auto-loaded as
25
+ * global User Memory in every
26
+ * workspace)
20
27
  *
21
- * The Cursor rule is fully owned by CodeLoop and overwritten on every call so
28
+ * Cursor files are fully owned by CodeLoop and overwritten on every call so
22
29
  * upgrades pick up new instructions. The Claude memory file is shared with
23
30
  * the user; we only manage the section between the BEGIN/END markers and
24
31
  * preserve everything else they wrote.
@@ -1 +1 @@
1
- {"version":3,"file":"global-rules-writer.d.ts","sourceRoot":"","sources":["../../src/utils/global-rules-writer.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,uBAAuB;IACtC,uCAAuC;IACvC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,yCAAyC;IACzC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,6CAA6C;IAC7C,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,sBAAsB;IACrC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,iBAAiB,EAAE,OAAO,CAAC;IAC3B,mBAAmB,EAAE,OAAO,CAAC;CAC9B;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,GAAE,uBAA4B,GACjC,sBAAsB,CA6BxB;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAwB1D"}
1
+ {"version":3,"file":"global-rules-writer.d.ts","sourceRoot":"","sources":["../../src/utils/global-rules-writer.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,uBAAuB;IACtC,uCAAuC;IACvC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,yCAAyC;IACzC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,6CAA6C;IAC7C,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,sBAAsB;IACrC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,wBAAwB,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,iBAAiB,EAAE,OAAO,CAAC;IAC3B,mBAAmB,EAAE,OAAO,CAAC;CAC9B;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,GAAE,uBAA4B,GACjC,sBAAsB,CAsCxB;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAwB1D"}
@@ -1,14 +1,20 @@
1
1
  import { existsSync, mkdirSync, readFileSync, writeFileSync } from "fs";
2
2
  import { dirname, join } from "path";
3
3
  import { homedir } from "os";
4
- import { GLOBAL_CURSOR_RULE, GLOBAL_CLAUDE_MEMORY, GLOBAL_CLAUDE_MEMORY_BEGIN, GLOBAL_CLAUDE_MEMORY_END, } from "../templates/global-rules.js";
4
+ import { GLOBAL_CURSOR_RULE, GLOBAL_CURSOR_USER_RULE_SNIPPET, GLOBAL_CLAUDE_MEMORY, GLOBAL_CLAUDE_MEMORY_BEGIN, GLOBAL_CLAUDE_MEMORY_END, } from "../templates/global-rules.js";
5
5
  /**
6
6
  * Write CodeLoop's global agent rules so every workspace the user opens
7
7
  * automatically picks them up:
8
- * - ~/.cursor/rules/codeloop.mdc (Cursor user-level rule)
9
- * - ~/.claude/CLAUDE.md (Claude Code global memory)
8
+ * - ~/.cursor/rules/codeloop.mdc (Cursor defensive; not loaded
9
+ * by current Cursor versions, but
10
+ * written for forward-compat)
11
+ * - ~/.cursor/codeloop-user-rule.md (Cursor — copy-paste source for
12
+ * Cursor → Settings → Rules)
13
+ * - ~/.claude/CLAUDE.md (Claude Code — auto-loaded as
14
+ * global User Memory in every
15
+ * workspace)
10
16
  *
11
- * The Cursor rule is fully owned by CodeLoop and overwritten on every call so
17
+ * Cursor files are fully owned by CodeLoop and overwritten on every call so
12
18
  * upgrades pick up new instructions. The Claude memory file is shared with
13
19
  * the user; we only manage the section between the BEGIN/END markers and
14
20
  * preserve everything else they wrote.
@@ -17,6 +23,7 @@ export function writeGlobalRules(opts = {}) {
17
23
  const home = opts.home || homedir();
18
24
  const result = {
19
25
  cursorRulePath: null,
26
+ cursorUserRuleSourcePath: null,
20
27
  claudeMemoryPath: null,
21
28
  cursorRuleWritten: false,
22
29
  claudeMemoryUpdated: false,
@@ -27,6 +34,13 @@ export function writeGlobalRules(opts = {}) {
27
34
  writeFileSync(cursorRulePath, GLOBAL_CURSOR_RULE, "utf-8");
28
35
  result.cursorRulePath = cursorRulePath;
29
36
  result.cursorRuleWritten = true;
37
+ // Cursor's User Rules live in the Settings UI, not in ~/.cursor/rules/.
38
+ // Save a copy-paste-ready file outside the rules directory so users can
39
+ // open it, copy the contents, and paste into Cursor → Settings → Rules.
40
+ const cursorUserRuleSourcePath = join(home, ".cursor", "codeloop-user-rule.md");
41
+ ensureDir(dirname(cursorUserRuleSourcePath));
42
+ writeFileSync(cursorUserRuleSourcePath, GLOBAL_CURSOR_USER_RULE_SNIPPET, "utf-8");
43
+ result.cursorUserRuleSourcePath = cursorUserRuleSourcePath;
30
44
  }
31
45
  if (!opts.skipClaude) {
32
46
  const claudeMemoryPath = join(home, ".claude", "CLAUDE.md");
@@ -1 +1 @@
1
- {"version":3,"file":"global-rules-writer.js","sourceRoot":"","sources":["../../src/utils/global-rules-writer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"global-rules-writer.js","sourceRoot":"","sources":["../../src/utils/global-rules-writer.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"global-setup.d.ts","sourceRoot":"","sources":["../../src/utils/global-setup.ts"],"names":[],"mappings":"AAOA,wBAAsB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAmBxE"}
1
+ {"version":3,"file":"global-setup.d.ts","sourceRoot":"","sources":["../../src/utils/global-setup.ts"],"names":[],"mappings":"AAQA,wBAAsB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAwBxE"}
@@ -3,6 +3,7 @@ import { homedir } from "os";
3
3
  import { mergeMcpConfig } from "./file-writer.js";
4
4
  import { getMcpConfig } from "../templates/mcp-config.js";
5
5
  import { writeGlobalRules } from "./global-rules-writer.js";
6
+ import { printCursorUserRuleBanner } from "./cursor-rule-banner.js";
6
7
  import { printSuccess } from "./ui.js";
7
8
  export async function applyGlobalMcpConfig(apiKey) {
8
9
  const home = homedir();
@@ -15,10 +16,14 @@ export async function applyGlobalMcpConfig(apiKey) {
15
16
  printSuccess("~/.claude.json (global — all Claude Code workspaces)");
16
17
  const rules = writeGlobalRules({ home });
17
18
  if (rules.cursorRulePath) {
18
- printSuccess("~/.cursor/rules/codeloop.mdc (always-on rule for every workspace)");
19
+ printSuccess("~/.cursor/rules/codeloop.mdc (forward-compat Cursor user-rule files)");
20
+ }
21
+ if (rules.cursorUserRuleSourcePath) {
22
+ printSuccess("~/.cursor/codeloop-user-rule.md (paste into Cursor → Settings → Rules)");
19
23
  }
20
24
  if (rules.claudeMemoryPath) {
21
- printSuccess("~/.claude/CLAUDE.md (global memory for every Claude Code workspace)");
25
+ printSuccess("~/.claude/CLAUDE.md (global memory Claude Code applies it everywhere)");
22
26
  }
27
+ printCursorUserRuleBanner({ sourcePath: rules.cursorUserRuleSourcePath });
23
28
  }
24
29
  //# sourceMappingURL=global-setup.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"global-setup.js","sourceRoot":"","sources":["../../src/utils/global-setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,MAAc;IACvD,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IACvB,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IAEpC,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;IAC3D,cAAc,CAAC,gBAAgB,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;IACpD,YAAY,CAAC,qDAAqD,CAAC,CAAC;IAEpE,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;IACpD,cAAc,CAAC,gBAAgB,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;IACpD,YAAY,CAAC,sDAAsD,CAAC,CAAC;IAErE,MAAM,KAAK,GAAG,gBAAgB,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;QACzB,YAAY,CAAC,mEAAmE,CAAC,CAAC;IACpF,CAAC;IACD,IAAI,KAAK,CAAC,gBAAgB,EAAE,CAAC;QAC3B,YAAY,CAAC,qEAAqE,CAAC,CAAC;IACtF,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"global-setup.js","sourceRoot":"","sources":["../../src/utils/global-setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,MAAc;IACvD,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IACvB,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IAEpC,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;IAC3D,cAAc,CAAC,gBAAgB,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;IACpD,YAAY,CAAC,qDAAqD,CAAC,CAAC;IAEpE,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;IACpD,cAAc,CAAC,gBAAgB,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;IACpD,YAAY,CAAC,sDAAsD,CAAC,CAAC;IAErE,MAAM,KAAK,GAAG,gBAAgB,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;QACzB,YAAY,CAAC,wEAAwE,CAAC,CAAC;IACzF,CAAC;IACD,IAAI,KAAK,CAAC,wBAAwB,EAAE,CAAC;QACnC,YAAY,CAAC,wEAAwE,CAAC,CAAC;IACzF,CAAC;IACD,IAAI,KAAK,CAAC,gBAAgB,EAAE,CAAC;QAC3B,YAAY,CAAC,yEAAyE,CAAC,CAAC;IAC1F,CAAC;IAED,yBAAyB,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,wBAAwB,EAAE,CAAC,CAAC;AAC5E,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codeloop",
3
- "version": "0.1.14",
3
+ "version": "0.1.15",
4
4
  "description": "CLI tool for CodeLoop — automated verification for AI coding agents",
5
5
  "type": "module",
6
6
  "bin": {